UNPKG

bot18

Version:

A high-frequency cryptocurrency trading bot by Zenbot creator @carlos8f

2,561 lines (2,516 loc) 1.11 MB
/* based on: http://geeksretreat.wordpress.com/2012/04/26/html5s-canvas-lets-draw-the-world/ */ /*jslint plusplus: true, sloppy: true, indent: 4 */ ( function() {"use strict"; // this function is strict... }()); Map.prototype.drawBackground = function() { // Black background this.ctx.fillStyle = "rgb(0,0,0)"; // Draw rectangle for the background this.ctx.fillRect(this.iCANVAS_START_X_POS, this.iCANVAS_START_Y_POS, (this.iCANVAS_START_X_POS + this.iCANVAS_WIDTH), this.iCANVAS_START_Y_POS + this.iCANVAS_HEIGHT); this.ctx.stroke(); } Map.prototype.drawMapBackground = function() { // Ocean blue colour! this.ctx.fillStyle = "rgb(10, 133, 255)"; // Draw rectangle for the map this.ctx.fillRect(this.iMAP_START_X_POS, this.iMAP_START_Y_POS, this.iMAP_WIDTH, this.iMAP_HEIGHT); } Map.prototype.degreesOfLatitudeToScreenY = function(iDegreesOfLatitude) { var minLat = this.options.startLat || 0 , maxLat = this.options.endLat || 180 // Make the value positive, so we can calculate the percentage var iAdjustedDegreesOfLatitude = (iDegreesOfLatitude * 1) + 90, iDegreesOfLatitudeToScreenY = 0; if (iAdjustedDegreesOfLatitude < minLat || iAdjustedDegreesOfLatitude > maxLat) { return } // Are we at the South pole? if (iAdjustedDegreesOfLatitude === minLat) { // Screen Y is the botton of the map (avoid divide by zero) iDegreesOfLatitudeToScreenY = this.iMAP_HEIGHT + this.iMAP_START_Y_POS; } else if (iAdjustedDegreesOfLatitude === maxLat) { // Are we at the North pole (or beyond)? // Screen Y is the top of the map iDegreesOfLatitudeToScreenY = this.iMAP_START_Y_POS; } else { // Convert the latitude value to screen X iDegreesOfLatitudeToScreenY = (this.iMAP_HEIGHT - ( (iAdjustedDegreesOfLatitude-minLat) * (this.iMAP_HEIGHT / (maxLat-minLat) )) + this.iMAP_START_Y_POS); } return iDegreesOfLatitudeToScreenY; } Map.prototype.drawLongitudeLines = function(iDEGREES_BETWEEN_GRID_LINES) { var iNORTH_LATITUDE = 90, iSOUTH_LATITUDE = -90, iDegreesScreenY = 0, iLineOfLatitude; // Iterate around the latitude axis at the given interval for (iLineOfLatitude = iNORTH_LATITUDE; iLineOfLatitude >= iSOUTH_LATITUDE; iLineOfLatitude -= iDEGREES_BETWEEN_GRID_LINES) { // Convert the latitude value and move the pen to the start of the line iDegreesScreenY = this.degreesOfLatitudeToScreenY(iLineOfLatitude, this.options); this.ctx.moveTo(this.iMAP_START_X_POS, iDegreesScreenY); // Plot the line this.ctx.lineTo(this.iMAP_START_X_POS + this.iMAP_WIDTH, iDegreesScreenY); // Put the label on the line this.ctx.fillText(iLineOfLatitude, this.iCANVAS_START_X_POS + 5, iDegreesScreenY - 5); this.ctx.stroke(); } } Map.prototype.degreesOfLongitudeToScreenX = function(iDegreesOfLongitude) { var minLon = this.options.startLon || 0 , maxLon = this.options.endLon || 360 // Make the value positive, so we can calculate the percentage var iAdjustedDegreesOfLongitude = (iDegreesOfLongitude * 1) + 180, iDegreesOfLongitudeToScreenX = 0; if (iAdjustedDegreesOfLongitude < minLon || iAdjustedDegreesOfLongitude > maxLon) { return } // Are we at the West -180 point? if (iAdjustedDegreesOfLongitude === minLon) { // Screen X is the left of the map (avoid divide by zero) iDegreesOfLongitudeToScreenX = this.iMAP_START_X_POS; } else if (iAdjustedDegreesOfLongitude === maxLon) { // If the longitude crosses the 180 line fix it (doesn't translat to screen well) iDegreesOfLongitudeToScreenX = this.iMAP_START_X_POS + this.iMAP_WIDTH; } else { // Convert the longitude value to screen X iDegreesOfLongitudeToScreenX = (this.iMAP_START_X_POS + ( (iAdjustedDegreesOfLongitude-minLon) * (this.iMAP_WIDTH / (maxLon-minLon)))); } return iDegreesOfLongitudeToScreenX; } Map.prototype.degToRad = function(angle) { // Degrees to radians return ((angle * Math.PI) / 180); } Map.prototype.radToDeg = function(angle) { // Radians to degree return ((angle * 180) / Math.PI); } Map.prototype.drawLatitudeLines = function(iDEGREES_BETWEEN_GRID_LINES) { var iMIN_LONGITUDE = -180, iMAX_LONGITUDE = 180, iDegreesScreenY = 0, iLineOfLongitude, iDegreesScreenX, iCentralMeridian = this.degToRad(0), iRadius = this.iMAP_HEIGHT / 2; // Iterate around the longitude axis at the given interval for (iLineOfLongitude = iMIN_LONGITUDE; iLineOfLongitude <= iMAX_LONGITUDE; iLineOfLongitude += iDEGREES_BETWEEN_GRID_LINES) { // Convert the longitude value and move the pen to the start of the line iDegreesScreenX = this.degreesOfLongitudeToScreenX(iLineOfLongitude); //iDegreesScreenX = iRadius * (degToRad(iLineOfLongitude) - (degToRad(iLineOfLongitude) * iCentralMeridian)); this.ctx.moveTo(iDegreesScreenX, this.iMAP_START_Y_POS); // Plot the line this.ctx.lineTo(iDegreesScreenX, this.iMAP_START_Y_POS + this.iMAP_HEIGHT); // Put the label on the line this.ctx.fillText(iLineOfLongitude, iDegreesScreenX - 10, this.iCANVAS_START_Y_POS + 10); this.ctx.stroke(); } } Map.prototype.drawGraticule = function() { // Set distance between lines var iDEGREES_BETWEEN_LAT_GRID_LINES = 10, iDEGREES_BETWEEN_LON_GRID_LINES = 10; // Style this.ctx.lineWidth = 0.2; this.ctx.strokeStyle = 'rgba(0, 0, 0, 0.1)'; this.ctx.fillStyle = 'rgb(255,255,255)'; // Font styling this.ctx.font = 'italic 10px sans-serif'; this.ctx.textBaseline = 'top'; this.drawLatitudeLines(iDEGREES_BETWEEN_LAT_GRID_LINES); this.drawLongitudeLines(iDEGREES_BETWEEN_LON_GRID_LINES, this.options); } Map.prototype.getMapData = function(region) { if (!region) return this.getMapData_world() return this["getMapData_" + region]() } Map.prototype.getMapData_us = function() { var res = { "shapes": [ [ { "lon": "-122.400749", "lat": "48.225395" }, { "lon": "-122.461586", "lat": "48.228542" }, { "lon": "-122.453156", "lat": "48.128674" }, { "lon": "-122.360077", "lat": "48.060280" }, { "lon": "-122.513245", "lat": "48.134155" }, { "lon": "-122.540802", "lat": "48.210640" }, { "lon": "-122.507858", "lat": "48.253971" }, { "lon": "-122.403137", "lat": "48.246773" }, { "lon": "-122.377052", "lat": "48.289898" }, { "lon": "-122.563087", "lat": "48.414421" }, { "lon": "-122.665749", "lat": "48.413071" }, { "lon": "-122.698128", "lat": "48.494503" }, { "lon": "-122.606895", "lat": "48.518997" }, { "lon": "-122.521950", "lat": "48.458576" }, { "lon": "-122.472557", "lat": "48.462368" }, { "lon": "-122.504021", "lat": "48.559616" }, { "lon": "-122.428268", "lat": "48.599567" }, { "lon": "-122.486519", "lat": "48.638741" }, { "lon": "-122.525276", "lat": "48.711895" }, { "lon": "-122.515572", "lat": "48.758091" }, { "lon": "-122.696114", "lat": "48.803185" }, { "lon": "-122.752953", "lat": "48.910156" }, { "lon": "-122.821129", "lat": "48.950893" }, { "lon": "-122.742653", "lat": "48.955975" }, { "lon": "-122.763832", "lat": "48.999912" }, { "lon": "-120.855827", "lat": "48.999973" }, { "lon": "-118.842453", "lat": "49.000000" }, { "lon": "-118.199234", "lat": "49.000004" }, { "lon": "-117.437500", "lat": "48.999996" }, { "lon": "-117.030975", "lat": "49.000000" }, { "lon": "-117.028046", "lat": "48.838150" }, { "lon": "-117.037834", "lat": "48.046284" }, { "lon": "-117.036438", "lat": "47.971191" }, { "lon": "-117.040779", "lat": "47.361542" }, { "lon": "-117.041382", "lat": "47.258602" }, { "lon": "-117.039963", "lat": "47.119423" }, { "lon": "-117.040932", "lat": "46.536716" }, { "lon": "-117.037567", "lat": "46.428097" }, { "lon": "-117.043480", "lat": "46.388691" }, { "lon": "-117.063194", "lat": "46.348816" }, { "lon": "-117.026985", "lat": "46.335545" }, { "lon": "-117.000656", "lat": "46.302567" }, { "lon": "-116.971741", "lat": "46.249428" }, { "lon": "-116.966507", "lat": "46.197674" }, { "lon": "-116.928444", "lat": "46.165604" }, { "lon": "-116.960655", "lat": "46.097397" }, { "lon": "-116.986229", "lat": "46.078632" }, { "lon": "-116.956741", "lat": "46.065811" }, { "lon": "-116.918152", "lat": "45.995300" }, { "lon": "-117.480652", "lat": "45.999966" }, { "lon": "-117.601807", "lat": "46.000401" }, { "lon": "-117.981628", "lat": "46.000019" }, { "lon": "-117.991478", "lat": "46.001778" }, { "lon": "-118.981018", "lat": "45.999203" }, { "lon": "-119.031105", "lat": "45.966419" }, { "lon": "-119.139130", "lat": "45.925854" }, { "lon": "-119.177620", "lat": "45.922497" }, { "lon": "-119.301636", "lat": "45.932808" }, { "lon": "-119.378311", "lat": "45.917755" }, { "lon": "-119.437729", "lat": "45.914413" }, { "lon": "-119.511086", "lat": "45.899345" }, { "lon": "-119.588158", "lat": "45.913460" }, { "lon": "-119.620979", "lat": "45.899555" }, { "lon": "-119.677307", "lat": "45.852684" }, { "lon": "-119.832413", "lat": "45.841755" }, { "lon": "-119.868591", "lat": "45.831844" }, { "lon": "-119.993172", "lat": "45.811287" }, { "lon": "-120.067497", "lat": "45.780350" }, { "lon": "-120.154755", "lat": "45.761410" }, { "lon": "-120.206291", "lat": "45.719933" }, { "lon": "-120.282478", "lat": "45.716732" }, { "lon": "-120.442223", "lat": "45.689430" }, { "lon": "-120.497993", "lat": "45.695782" }, { "lon": "-120.568916", "lat": "45.741070" }, { "lon": "-120.622589", "lat": "45.743763" }, { "lon": "-120.657234", "lat": "45.732765" }, { "lon": "-120.695824", "lat": "45.710663" }, { "lon": "-120.860245", "lat": "45.665340" }, { "lon": "-120.906761", "lat": "45.635632" }, { "lon": "-120.947395", "lat": "45.650471" }, { "lon": "-120.967300", "lat": "45.645309" }, { "lon": "-121.032303", "lat": "45.653000" }, { "lon": "-121.072350", "lat": "45.646767" }, { "lon": "-121.124023", "lat": "45.607216" }, { "lon": "-121.173134", "lat": "45.600674" }, { "lon": "-121.190872", "lat": "45.613400" }, { "lon": "-121.202126", "lat": "45.657444" }, { "lon": "-121.213089", "lat": "45.665802" }, { "lon": "-121.275208", "lat": "45.678497" }, { "lon": "-121.318794", "lat": "45.696800" }, { "lon": "-121.366631", "lat": "45.699844" }, { "lon": "-121.420845", "lat": "45.690762" }, { "lon": "-121.441368", "lat": "45.695126" }, { "lon": "-121.527870", "lat": "45.719727" }, { "lon": "-121.705231", "lat": "45.688953" }, { "lon": "-121.757507", "lat": "45.689877" }, { "lon": "-121.809853", "lat": "45.700844" }, { "lon": "-121.887093", "lat": "45.677017" }, { "lon": "-121.925629", "lat": "45.642189" }, { "lon": "-121.971466", "lat": "45.635937" }, { "lon": "-121.998817", "lat": "45.617985" }, { "lon": "-122.080841", "lat": "45.590664" }, { "lon": "-122.243721", "lat": "45.548271" }, { "lon": "-122.301949", "lat": "45.543251" }, { "lon": "-122.355255", "lat": "45.566330" }, { "lon": "-122.435951", "lat": "45.564938" }, { "lon": "-122.564224", "lat": "45.594978" }, { "lon": "-122.650002", "lat": "45.606991" }, { "lon": "-122.695114", "lat": "45.631207" }, { "lon": "-122.759331", "lat": "45.649559" }, { "lon": "-122.771339", "lat": "45.727848" }, { "lon": "-122.763077", "lat": "45.760731" }, { "lon": "-122.786797", "lat": "45.800507" }, { "lon": "-122.783302", "lat": "45.850613" }, { "lon": "-122.782860", "lat": "45.868050" }, { "lon": "-122.805008", "lat": "45.904236" }, { "lon": "-122.806526", "lat": "45.944054" }, { "lon": "-122.874199", "lat": "46.027348" }, { "lon": "-122.898537", "lat": "46.079494" }, { "lon": "-122.972946", "lat": "46.110649" }, { "lon": "-123.049370", "lat": "46.155903" }, { "lon": "-123.117325", "lat": "46.179478" }, { "lon": "-123.174965", "lat": "46.183754" }, { "lon": "-123.211205", "lat": "46.170174" }, { "lon": "-123.247566", "lat": "46.144188" }, { "lon": "-123.303482", "lat": "46.144905" }, { "lon": "-123.469528", "lat": "46.275192" }, { "lon": "-123.618828", "lat": "46.258835" }, { "lon": "-123.724205", "lat": "46.285595" }, { "lon": "-123.884514", "lat": "46.240612" }, { "lon": "-123.992065", "lat": "46.310452" }, { "lon": "-124.077843", "lat": "46.267437" }, { "lon": "-124.064232", "lat": "46.639927" }, { "lon": "-124.021767", "lat": "46.583721" }, { "lon": "-124.011734", "lat": "46.383858" }, { "lon": "-123.840187", "lat": "46.404518" }, { "lon": "-123.939423", "lat": "46.481293" }, { "lon": "-123.892296", "lat": "46.511257" }, { "lon": "-123.956436", "lat": "46.617405" }, { "lon": "-123.925194", "lat": "46.673241" }, { "lon": "-123.839691", "lat": "46.718468" }, { "lon": "-123.894264", "lat": "46.745167" }, { "lon": "-124.041878", "lat": "46.716038" }, { "lon": "-124.089767", "lat": "46.729206" }, { "lon": "-124.100784", "lat": "46.789654" }, { "lon": "-124.137543", "lat": "46.900173" }, { "lon": "-124.104477", "lat": "46.908337" }, { "lon": "-124.103455", "lat": "46.874332" }, { "lon": "-124.027527", "lat": "46.823952" }, { "lon": "-124.045647", "lat": "46.887440" }, { "lon": "-123.811378", "lat": "46.964149" }, { "lon": "-123.994583", "lat": "46.976574" }, { "lon": "-124.033112", "lat": "47.031223" }, { "lon": "-124.111076", "lat": "47.042866" }, { "lon": "-124.160751", "lat": "46.929802" }, { "lon": "-124.191444", "lat": "47.167175" }, { "lon": "-124.230133", "lat": "47.275265" }, { "lon": "-124.318130", "lat": "47.349434" }, { "lon": "-124.347778", "lat": "47.527107" }, { "lon": "-124.372299", "lat": "47.638962" }, { "lon": "-124.482719", "lat": "47.808456" }, { "lon": "-124.605362", "lat": "47.873940" }, { "lon": "-124.731422", "lat": "48.150204" }, { "lon": "-124.703857", "lat": "48.232212" }, { "lon": "-124.715820", "lat": "48.377773" }, { "lon": "-124.562202", "lat": "48.357487" }, { "lon": "-123.989899", "lat": "48.159355" }, { "lon": "-123.395561", "lat": "48.111217" }, { "lon": "-123.121933", "lat": "48.148918" }, { "lon": "-122.920311", "lat": "48.094364" }, { "lon": "-122.923561", "lat": "48.066982" }, { "lon": "-122.839828", "lat": "48.133320" }, { "lon": "-122.767601", "lat": "48.144176" }, { "lon": "-122.801651", "lat": "48.085506" }, { "lon": "-122.660294", "lat": "47.917343" }, { "lon": "-122.652321", "lat": "47.864616" }, { "lon": "-122.744598", "lat": "47.809174" }, { "lon": "-122.788528", "lat": "47.802734" }, { "lon": "-122.808243", "lat": "47.857262" }, { "lon": "-122.857529", "lat": "47.827515" }, { "lon": "-122.898094", "lat": "47.672703" }, { "lon": "-122.981476", "lat": "47.605659" }, { "lon": "-123.112648", "lat": "47.456459" }, { "lon": "-123.152794", "lat": "47.348732" }, { "lon": "-123.009209", "lat": "47.353210" }, { "lon": "-122.831993", "lat": "47.438648" }, { "lon": "-123.034943", "lat": "47.356236" }, { "lon": "-123.111420", "lat": "47.371754" }, { "lon": "-123.025070", "lat": "47.516121" }, { "lon": "-122.915703", "lat": "47.614792" }, { "lon": "-122.751678", "lat": "47.660873" }, { "lon": "-122.721794", "lat": "47.757084" }, { "lon": "-122.609901", "lat": "47.850193" }, { "lon": "-122.611954", "lat": "47.936375" }, { "lon": "-122.530632", "lat": "47.909645" }, { "lon": "-122.472343", "lat": "47.755161" }, { "lon": "-122.620255", "lat": "47.697151" }, { "lon": "-122.585213", "lat": "47.571373" }, { "lon": "-122.554016", "lat": "47.583687" }, { "lon": "-122.541458", "lat": "47.522915" }, { "lon": "-122.503220", "lat": "47.507397" }, { "lon": "-122.557205", "lat": "47.398544" }, { "lon": "-122.542885", "lat": "47.374107" }, { "lon": "-122.587013", "lat": "47.334110" }, { "lon": "-122.551918", "lat": "47.283512" }, { "lon": "-122.579292", "lat": "47.251568" }, { "lon": "-122.610306", "lat": "47.293579" }, { "lon": "-122.605675", "lat": "47.270752" }, { "lon": "-122.698502", "lat": "47.292267" }, { "lon": "-122.627510", "lat": "47.398735" }, { "lon": "-122.636192", "lat": "47.398762" }, { "lon": "-122.740303", "lat": "47.341633" }, { "lon": "-122.768463", "lat": "47.266338" }, { "lon": "-122.718559", "lat": "47.223312" }, { "lon": "-122.759995", "lat": "47.162678" }, { "lon": "-122.823860", "lat": "47.235008" }, { "lon": "-122.772087", "lat": "47.337543" }, { "lon": "-122.800934", "lat": "47.360924" }, { "lon": "-122.879120", "lat": "47.299416" }, { "lon": "-123.114174", "lat": "47.208164" }, { "lon": "-123.079941", "lat": "47.090240" }, { "lon": "-123.030090", "lat": "47.100956" }, { "lon": "-122.921898", "lat": "47.048145" }, { "lon": "-122.788803", "lat": "47.126041" }, { "lon": "-122.726944", "lat": "47.082623" }, { "lon": "-122.698837", "lat": "47.098507" }, { "lon": "-122.590569", "lat": "47.180241" }, { "lon": "-122.529526", "lat": "47.287636" }, { "lon": "-122.545349", "lat": "47.316456" }, { "lon": "-122.422859", "lat": "47.259651" }, { "lon": "-122.391609", "lat": "47.277901" }, { "lon": "-122.440369", "lat": "47.301304" }, { "lon": "-122.419601", "lat": "47.319023" }, { "lon": "-122.324142", "lat": "47.344501" }, { "lon": "-122.318504", "lat": "47.390293" }, { "lon": "-122.391396", "lat": "47.510422" }, { "lon": "-122.380981", "lat": "47.595589" }, { "lon": "-122.413574", "lat": "47.664360" }, { "lon": "-122.393250", "lat": "47.774357" }, { "lon": "-122.301674", "lat": "47.950397" }, { "lon": "-122.228874", "lat": "47.969296" }, { "lon": "-122.215744", "lat": "48.007622" }, { "lon": "-122.367073", "lat": "48.128323" }, { "lon": "-122.400749", "lat": "48.225395" } ], [ { "lon": "-122.966690", "lat": "48.443974" }, { "lon": "-123.093941", "lat": "48.479603" }, { "lon": "-123.158424", "lat": "48.522022" }, { "lon": "-123.168602", "lat": "48.562744" }, { "lon": "-123.139755", "lat": "48.623825" }, { "lon": "-123.102425", "lat": "48.608555" }, { "lon": "-123.010803", "lat": "48.557655" }, { "lon": "-123.007408", "lat": "48.533897" }, { "lon": "-122.966690", "lat": "48.527111" }, { "lon": "-123.020981", "lat": "48.513538" }, { "lon": "-123.017593", "lat": "48.489784" }, { "lon": "-122.966690", "lat": "48.443974" } ], [ { "lon": "-122.731903", "lat": "48.276825" }, { "lon": "-122.664330", "lat": "48.396954" }, { "lon": "-122.603104", "lat": "48.404964" }, { "lon": "-122.524475", "lat": "48.321220" }, { "lon": "-122.527374", "lat": "48.283688" }, { "lon": "-122.622231", "lat": "48.296528" }, { "lon": "-122.730751", "lat": "48.225594" }, { "lon": "-122.609650", "lat": "48.206501" }, { "lon": "-122.544937", "lat": "48.077042" }, { "lon": "-122.494949", "lat": "48.094254" }, { "lon": "-122.378738", "lat": "48.032330" }, { "lon": "-122.354149", "lat": "47.964069" }, { "lon": "-122.385712", "lat": "47.904732" }, { "lon": "-122.441536", "lat": "47.918240" }, { "lon": "-122.470360", "lat": "47.987694" }, { "lon": "-122.543701", "lat": "47.967716" }, { "lon": "-122.607361", "lat": "48.031616" }, { "lon": "-122.694275", "lat": "48.181366" }, { "lon": "-122.767494", "lat": "48.218998" }, { "lon": "-122.731903", "lat": "48.276825" } ], [ { "lon": "-111.474632", "lat": "44.702240" }, { "lon": "-111.480011", "lat": "44.691494" }, { "lon": "-111.459900", "lat": "44.670101" }, { "lon": "-111.457474", "lat": "44.652634" }, { "lon": "-111.469376", "lat": "44.640789" }, { "lon": "-111.506897", "lat": "44.637768" }, { "lon": "-111.500954", "lat": "44.616051" }, { "lon": "-111.513733", "lat": "44.593277" }, { "lon": "-111.492111", "lat": "44.551270" }, { "lon": "-111.462036", "lat": "44.550022" }, { "lon": "-111.458534", "lat": "44.538002" }, { "lon": "-111.481781", "lat": "44.536224" }, { "lon": "-111.489449", "lat": "44.528778" }, { "lon": "-111.566437", "lat": "44.552948" }, { "lon": "-111.604454", "lat": "44.543072" }, { "lon": "-111.684067", "lat": "44.550835" }, { "lon": "-111.716202", "lat": "44.533844" }, { "lon": "-111.766121", "lat": "44.518909" }, { "lon": "-111.791809", "lat": "44.518547" }, { "lon": "-111.807037", "lat": "44.504066" }, { "lon": "-111.871696", "lat": "44.556351" }, { "lon": "-111.939575", "lat": "44.549812" }, { "lon": "-111.977005", "lat": "44.529762" }, { "lon": "-112.022797", "lat": "44.535130" }, { "lon": "-112.026260", "lat": "44.522930" }, { "lon": "-112.058548", "lat": "44.528698" }, { "lon": "-112.099075", "lat": "44.518318" }, { "lon": "-112.123367", "lat": "44.528339" }, { "lon": "-112.198830", "lat": "44.531536" }, { "lon": "-112.216934", "lat": "44.538582" }, { "lon": "-112.229568", "lat": "44.559578" }, { "lon": "-112.255844", "lat": "44.560059" }, { "lon": "-112.281509", "lat": "44.541790" }, { "lon": "-112.341675", "lat": "44.525188" }, { "lon": "-112.339745", "lat": "44.497269" }, { "lon": "-112.366753", "lat": "44.449360" }, { "lon": "-112.419922", "lat": "44.449375" }, { "lon": "-112.457687", "lat": "44.468925" }, { "lon": "-112.501007", "lat": "44.463089" }, { "lon": "-112.538490", "lat": "44.477589" }, { "lon": "-112.652351", "lat": "44.480892" }, { "lon": "-112.713486", "lat": "44.497025" }, { "lon": "-112.732872", "lat": "44.484409" }, { "lon": "-112.779022", "lat": "44.474010" }, { "lon": "-112.795387", "lat": "44.458099" }, { "lon": "-112.825851", "lat": "44.421173" }, { "lon": "-112.817871", "lat": "44.394909" }, { "lon": "-112.816559", "lat": "44.364292" }, { "lon": "-112.843437", "lat": "44.353729" }, { "lon": "-112.869942", "lat": "44.370068" }, { "lon": "-112.886467", "lat": "44.392941" }, { "lon": "-112.937439", "lat": "44.407280" }, { "lon": "-112.984406", "lat": "44.435627" }, { "lon": "-113.011169", "lat": "44.437801" }, { "lon": "-113.005814", "lat": "44.452702" }, { "lon": "-113.019463", "lat": "44.481861" }, { "lon": "-113.006866", "lat": "44.510696" }, { "lon": "-113.036972", "lat": "44.533043" }, { "lon": "-113.038811", "lat": "44.556377" }, { "lon": "-113.082184", "lat": "44.582764" }, { "lon": "-113.053436", "lat": "44.624371" }, { "lon": "-113.072289", "lat": "44.675606" }, { "lon": "-113.098099", "lat": "44.695995" }, { "lon": "-113.100845", "lat": "44.715252" }, { "lon": "-113.126572", "lat": "44.737457" }, { "lon": "-113.137413", "lat": "44.761517" }, { "lon": "-113.239471", "lat": "44.811916" }, { "lon": "-113.256287", "lat": "44.810562" }, { "lon": "-113.317810", "lat": "44.780304" }, { "lon": "-113.339760", "lat": "44.779076" }, { "lon": "-113.349152", "lat": "44.807644" }, { "lon": "-113.420502", "lat": "44.833775" }, { "lon": "-113.444695", "lat": "44.851315" }, { "lon": "-113.495308", "lat": "44.930744" }, { "lon": "-113.486465", "lat": "44.939648" }, { "lon": "-113.462532", "lat": "44.940849" }, { "lon": "-113.447884", "lat": "44.949596" }, { "lon": "-113.440147", "lat": "44.998268" }, { "lon": "-113.457970", "lat": "45.027523" }, { "lon": "-113.454552", "lat": "45.043423" }, { "lon": "-113.485420", "lat": "45.058395" }, { "lon": "-113.489273", "lat": "45.071293" }, { "lon": "-113.519722", "lat": "45.082138" }, { "lon": "-113.509338", "lat": "45.107910" }, { "lon": "-113.551384", "lat": "45.107624" }, { "lon": "-113.573486", "lat": "45.117786" }, { "lon": "-113.570694", "lat": "45.134621" }, { "lon": "-113.593208", "lat": "45.149818" }, { "lon": "-113.600037", "lat": "45.181068" }, { "lon": "-113.644699", "lat": "45.206867" }, { "lon": "-113.689224", "lat": "45.262360" }, { "lon": "-113.687813", "lat": "45.277866" }, { "lon": "-113.738182", "lat": "45.321609" }, { "lon": "-113.740410", "lat": "45.382465" }, { "lon": "-113.774124", "lat": "45.410252" }, { "lon": "-113.784760", "lat": "45.445713" }, { "lon": "-113.768265", "lat": "45.477787" }, { "lon": "-113.771400", "lat": "45.507133" }, { "lon": "-113.780029", "lat": "45.516945" }, { "lon": "-113.832809", "lat": "45.514988" }, { "lon": "-113.802849", "lat": "45.583809" }, { "lon": "-113.821579", "lat": "45.600716" }, { "lon": "-113.851120", "lat": "45.609642" }, { "lon": "-113.902397", "lat": "45.613571" }, { "lon": "-113.901291", "lat": "45.637333" }, { "lon": "-113.922623", "lat": "45.655205" }, { "lon": "-113.925789", "lat": "45.671291" }, { "lon": "-113.963234", "lat": "45.679459" }, { "lon": "-113.970238", "lat": "45.697456" }, { "lon": "-114.008560", "lat": "45.686413" }, { "lon": "-114.018967", "lat": "45.672459" }, { "lon": "-114.010078", "lat": "45.652592" }, { "lon": "-114.017120", "lat": "45.640854" }, { "lon": "-114.055603", "lat": "45.625225" }, { "lon": "-114.082054", "lat": "45.586460" }, { "lon": "-114.117226", "lat": "45.571209" }, { "lon": "-114.131134", "lat": "45.550465" }, { "lon": "-114.171753", "lat": "45.544006" }, { "lon": "-114.193893", "lat": "45.528000" }, { "lon": "-114.241081", "lat": "45.535374" }, { "lon": "-114.246964", "lat": "45.503029" }, { "lon": "-114.261322", "lat": "45.485943" }, { "lon": "-114.325516", "lat": "45.457508" }, { "lon": "-114.349327", "lat": "45.463467" }, { "lon": "-114.370537", "lat": "45.485825" }, { "lon": "-114.418129", "lat": "45.499092" }, { "lon": "-114.432632", "lat": "45.527718" }, { "lon": "-114.461784", "lat": "45.547932" }, { "lon": "-114.495667", "lat": "45.546734" }, { "lon": "-114.526466", "lat": "45.558277" }, { "lon": "-114.559998", "lat": "45.548824" }, { "lon": "-114.540031", "lat": "45.596481" }, { "lon": "-114.563751", "lat": "45.624355" }, { "lon": "-114.500816", "lat": "45.652477" }, { "lon": "-114.509781", "lat": "45.674141" }, { "lon": "-114.496635", "lat": "45.694485" }, { "lon": "-114.534050", "lat": "45.723080" }, { "lon": "-114.541031", "lat": "45.746082" }, { "lon": "-114.562614", "lat": "45.762482" }, { "lon": "-114.516449", "lat": "45.810150" }, { "lon": "-114.498238", "lat": "45.842766" }, { "lon": "-114.472878", "lat": "45.839550" }, { "lon": "-114.442307", "lat": "45.852703" }, { "lon": "-114.406601", "lat": "45.846535" }, { "lon": "-114.391914", "lat": "45.870968" }, { "lon": "-114.412605", "lat": "45.910732" }, { "lon": "-114.428535", "lat": "45.921558" }, { "lon": "-114.404366", "lat": "45.954060" }, { "lon": "-114.411522", "lat": "45.972054" }, { "lon": "-114.483528", "lat": "45.989887" }, { "lon": "-114.473602", "lat": "46.009846" }, { "lon": "-114.493393", "lat": "46.023491" }, { "lon": "-114.464828", "lat": "46.050896" }, { "lon": "-114.455101", "lat": "46.082310" }, { "lon": "-114.476440", "lat": "46.107437" }, { "lon": "-114.505638", "lat": "46.116222" }, { "lon": "-114.518013", "lat": "46.136143" }, { "lon": "-114.508682", "lat": "46.157497" }, { "lon": "-114.466087", "lat": "46.155342" }, { "lon": "-114.439949", "lat": "46.169048" }, { "lon": "-114.438622", "lat": "46.220333" }, { "lon": "-114.471901", "lat": "46.243862" }, { "lon": "-114.472862", "lat": "46.253040" }, { "lon": "-114.430862", "lat": "46.284790" }, { "lon": "-114.408859", "lat": "46.392990" }, { "lon": "-114.396080", "lat": "46.399624" }, { "lon": "-114.383087", "lat": "46.428257" }, { "lon": "-114.409775", "lat": "46.487450" }, { "lon": "-114.359528", "lat": "46.506203" }, { "lon": "-114.349174", "lat": "46.517467" }, { "lon": "-114.342377", "lat": "46.587959" }, { "lon": "-114.323769", "lat": "46.622917" }, { "lon": "-114.333740", "lat": "46.654305" }, { "lon": "-114.383072", "lat": "46.661674" }, { "lon": "-114.440590", "lat": "46.645794" }, { "lon": "-114.483772", "lat": "46.623653" }, { "lon": "-114.539444", "lat": "46.637970" }, { "lon": "-114.609879", "lat": "46.629128" }, { "lon": "-114.643791", "lat": "46.660904" }, { "lon": "-114.644089", "lat": "46.671001" }, { "lon": "-114.624977", "lat": "46.687187" }, { "lon": "-114.672935", "lat": "46.734802" }, { "lon": "-114.697479", "lat": "46.733841" }, { "lon": "-114.747154", "lat": "46.695213" }, { "lon": "-114.781967", "lat": "46.703121" }, { "lon": "-114.776878", "lat": "46.755798" }, { "lon": "-114.793076", "lat": "46.766613" }, { "lon": "-114.839836", "lat": "46.775620" }, { "lon": "-114.865646", "lat": "46.797127" }, { "lon": "-114.901367", "lat": "46.799515" }, { "lon": "-114.947449", "lat": "46.852528" }, { "lon": "-114.939606", "lat": "46.890968" }, { "lon": "-114.923164", "lat": "46.907246" }, { "lon": "-114.963768", "lat": "46.925293" }, { "lon": "-115.000610", "lat": "46.958889" }, { "lon": "-115.036369", "lat": "46.963081" }, { "lon": "-115.054672", "lat": "46.973438" }, { "lon": "-115.080368", "lat": "47.026604" }, { "lon": "-115.134537", "lat": "47.063629" }, { "lon": "-115.147713", "lat": "47.091820" }, { "lon": "-115.171524", "lat": "47.097649" }, { "lon": "-115.192101", "lat": "47.124104" }, { "lon": "-115.295258", "lat": "47.179626" }, { "lon": "-115.324249", "lat": "47.245224" }, { "lon": "-115.342682", "lat": "47.255096" }, { "lon": "-115.407227", "lat": "47.263668" }, { "lon": "-115.425659", "lat": "47.274448" }, { "lon": "-115.500946", "lat": "47.281719" }, { "lon": "-115.522079", "lat": "47.292057" }, { "lon": "-115.554535", "lat": "47.334686" }, { "lon": "-115.598549", "lat": "47.370075" }, { "lon": "-115.637794", "lat": "47.380116" }, { "lon": "-115.665489", "lat": "47.399239" }, { "lon": "-115.749336", "lat": "47.422546" }, { "lon": "-115.749115", "lat": "47.434036" }, { "lon": "-115.731491", "lat": "47.445374" }, { "lon": "-115.655098", "lat": "47.449249" }, { "lon": "-115.642197", "lat": "47.457863" }, { "lon": "-115.639153", "lat": "47.475304" }, { "lon": "-115.691780", "lat": "47.489609" }, { "lon": "-115.700531", "lat": "47.520962" }, { "lon": "-115.741837", "lat": "47.533760" }, { "lon": "-115.691093", "lat": "47.590790" }, { "lon": "-115.697289", "lat": "47.616150" }, { "lon": "-115.733070", "lat": "47.639950" }, { "lon": "-115.732666", "lat": "47.695625" }, { "lon": "-115.774727", "lat": "47.709805" }, { "lon": "-115.789536", "lat": "47.744911" }, { "lon": "-115.835739", "lat": "47.756355" }, { "lon": "-115.848320", "lat": "47.805256" }, { "lon": "-115.868805", "lat": "47.827526" }, { "lon": "-115.902916", "lat": "47.841148" }, { "lon": "-115.936836", "lat": "47.867199" }, { "lon": "-115.997925", "lat": "47.925217" }, { "lon": "-116.024307", "lat": "47.965015" }, { "lon": "-116.052483", "lat": "47.976269" }, { "lon": "-116.054497", "lat": "48.208549" }, { "lon": "-116.055679", "lat": "48.498726" }, { "lon": "-116.062500", "lat": "48.999996" }, { "lon": "-114.728333", "lat": "49.000000" }, { "lon": "-114.062500", "lat": "49.000000" }, { "lon": "-112.187500", "lat": "48.999996" }, { "lon": "-111.281876", "lat": "49.000000" }, { "lon": "-110.750000", "lat": "49.000000" }, { "lon": "-109.500000", "lat": "48.999996" }, { "lon": "-108.250000", "lat": "48.999996" }, { "lon": "-107.187500", "lat": "48.999996" }, { "lon": "-106.125000", "lat": "48.999996" }, { "lon": "-105.062500", "lat": "48.999996" }, { "lon": "-104.062500", "lat": "49.000000" }, { "lon": "-104.051826", "lat": "48.645798" }, { "lon": "-104.051620", "lat": "48.390995" }, { "lon": "-104.047935", "lat": "48.000061" }, { "lon": "-104.046822", "lat": "47.400002" }, { "lon": "-104.045441", "lat": "47.333817" }, { "lon": "-104.046951", "lat": "46.642937" }, { "lon": "-104.046219", "lat": "46.542530" }, { "lon": "-104.047348", "lat": "46.280876" }, { "lon": "-104.048416", "lat": "45.942993" }, { "lon": "-104.049026", "lat": "45.883053" }, { "lon": "-104.043358", "lat": "45.212887" }, { "lon": "-104.042580", "lat": "44.997818" }, { "lon": "-104.059349", "lat": "44.997349" }, { "lon": "-105.041260", "lat": "45.001091" }, { "lon": "-105.084465", "lat": "44.999832" }, { "lon": "-106.020576", "lat": "44.997227" }, { "lon": "-106.258644", "lat": "44.996174" }, { "lon": "-107.893715", "lat": "44.999813" }, { "lon": "-108.258568", "lat": "45.000160" }, { "lon": "-108.624573", "lat": "44.997643" }, { "lon": "-109.798653", "lat": "44.999580" }, { "lon": "-109.994789", "lat": "45.002853" }, { "lon": "-110.392006", "lat": "44.998688" }, { "lon": "-110.428894", "lat": "44.992348" }, { "lon": "-111.052650", "lat": "44.995766" }, { "lon": "-111.050842", "lat": "44.664562" }, { "lon": "-111.050789", "lat": "44.473396" }, { "lon": "-111.093857", "lat": "44.486198" }, { "lon": "-111.128143", "lat": "44.500832" }, { "lon": "-111.133583", "lat": "44.527977" }, { "lon": "-111.169464", "lat": "44.545261" }, { "lon": "-111.177986", "lat": "44.564926" }, { "lon": "-111.218727", "lat": "44.573246" }, { "lon": "-111.233452", "lat": "44.602638" }, { "lon": "-111.219017", "lat": "44.618057" }, { "lon": "-111.223190", "lat": "44.626984" }, { "lon": "-111.269882", "lat": "44.642288" }, { "lon": "-111.269424", "lat": "44.673878" }, { "lon": "-111.294884", "lat": "44.683014" }, { "lon": "-111.314690", "lat": "44.705269" }, { "lon": "-111.318436", "lat": "44.727940" }, { "lon": "-111.349190", "lat": "44.726254" }, { "lon": "-111.371521", "lat": "44.745163" }, { "lon": "-111.384171", "lat": "44.737770" }, { "lon": "-111.394295", "lat": "44.708946" }, { "lon": "-111.442841", "lat": "44.713257" }, { "lon": "-111.474632", "lat": "44.702240" } ], [ { "lon": "-69.777786", "lat": "44.074074" }, { "lon": "-69.860435", "lat": "43.999924" }, { "lon": "-69.792038", "lat": "43.756001" }, { "lon": "-69.830902", "lat": "43.727901" }, { "lon": "-69.852295", "lat": "43.744244" }, { "lon": "-69.846664", "lat": "43.842262" }, { "lon": "-69.887299", "lat": "43.876633" }, { "lon": "-69.903641", "lat": "43.790649" }, { "lon": "-69.973412", "lat": "43.768764" }, { "lon": "-70.000008", "lat": "43.786125" }, { "lon": "-69.987877", "lat": "43.845657" }, { "lon": "-70.026909", "lat": "43.845520" }, { "lon": "-70.157135", "lat": "43.789730" }, { "lon": "-70.236305", "lat": "43.685715" }, { "lon": "-70.222748", "lat": "43.577156" }, { "lon": "-70.342117", "lat": "43.534824" }, { "lon": "-70.366432", "lat": "43.430218" }, { "lon": "-70.457481", "lat": "43.349384" }, { "lon": "-70.539444", "lat": "43.335632" }, { "lon": "-70.666176", "lat": "43.090961" }, { "lon": "-70.819168",