Visualization of European FIRs (those starting w/ 'E', 'L' or 'UK', 'UG', 'UD', 'BK', 'GC'.
Click on FIR to zoom in/out.
Geometries from the Network Manager and available in this repo.
Built with blockbuilder.org
Visualization of European FIRs (those starting w/ 'E', 'L' or 'UK', 'UG', 'UD', 'BK', 'GC'.
Click on FIR to zoom in/out.
Geometries from the Network Manager and available in this repo.
Built with blockbuilder.org
{"type":"Topology","objects":{"firs":{"type":"GeometryCollection","bbox":[-40,17,51.5,82],"geometries":[{"type":"Polygon","properties":{"id":"LJLAFIR","icao":"LJ","name":"LJUBLJANA FIR","minfl":0,"maxfl":999,"fab":"FABCE"},"id":"LJLAFIR","arcs":[[0,1,2,3]]},{"type":"Polygon","properties":{"id":"LZBBFIR","icao":"LZ","name":"BRATISLAVA FIR","minfl":0,"maxfl":999,"fab":"FABCE"},"id":"LZBBFIR","arcs":[[4,5,6,7,8]]},{"type":"Polygon","properties":{"id":"LHCCFIR","icao":"LH","name":"BUDAPEST FIR","minfl":0,"maxfl":999,"fab":"FABCE"},"id":"LHCCFIR","arcs":[[9,10,11,12,-3,13,-6]]},{"type":"Polygon","properties":{"id":"EGPXFIR","icao":"EG","name":"SCOTTISH FIR","minfl":0,"maxfl":245,"fab":"UKIRELANDFAB"},"id":"EGPXFIR","arcs":[[14,15,16,17,18,19,20]]},{"type":"Polygon","properties":{"id":"LTBBFIR","icao":"LT","name":"ISTANBUL FIR","minfl":0,"maxfl":999},"id":"LTBBFIR","arcs":[[21,22,23,24]]},{"type":"Polygon","properties":{"id":"EETTFIR","icao":"EE","name":"TALLINN FIR","minfl":0,"maxfl":999,"fab":"NEFAB"},"id":"EETTFIR","arcs":[[25,26,27,28]]},{"type":"Polygon","properties":{"id":"ENORFIR","icao":"EN","name":null,"minfl":0,"maxfl":999,"fab":"NEFAB"},"id":"ENORFIR","arcs":[[29,30,31,32,33,-17,34,35]]},{"type":"Polygon","properties":{"id":"EPWWFIR","icao":"EP","name":"WARSZAWA FIR","minfl":0,"maxfl":999,"fab":"BALTICFAB"},"id":"EPWWFIR","arcs":[[36,37,38,39,40,-9,41,42,43]]},{"type":"Polygon","properties":{"id":"LPPOFIR","icao":"LP","name":"SANTA MARIA FIR","minfl":0,"maxfl":999},"id":"LPPOFIR","arcs":[[44,45,46,47,48]]},{"type":"Polygon","properties":{"id":"UDDDFIR","icao":"UD","name":"YEREVAN FIR","minfl":0,"maxfl":999},"id":"UDDDFIR","arcs":[[49,50,51,52,53,54]]},{"type":"Polygon","properties":{"id":"EDWWFIR","icao":"ED","name":"BREMEN FIR","minfl":0,"maxfl":245,"fab":"FABEC"},"id":"EDWWFIR","arcs":[[55,56,-44,57,58,59]]},{"type":"Polygon","properties":{"id":"EHAAFIR","icao":"EH","name":"AMSTERDAM FIR","minfl":0,"maxfl":999,"fab":"FABEC"},"id":"EHAAFIR","arcs":[[60,61,-60,62,63]]},{"type":"Polygon","properties":{"id":"LMMMFIR","icao":"LM","name":"MALTA FIR","minfl":0,"maxfl":195,"fab":"BLUMEDFAB"},"id":"LMMMFIR","arcs":[[64,65,66]]},{"type":"Polygon","properties":{"id":"EKDKFIR","icao":"EK","name":"COPENHAGEN FIR","minfl":0,"maxfl":999,"fab":"DKSEFAB"},"id":"EKDKFIR","arcs":[[-62,-18,-34,67,-56]]},{"type":"Polygon","properties":{"id":"UKLVFIR","icao":"UK","name":"LVOV FIR","minfl":0,"maxfl":275},"id":"UKLVFIR","arcs":[[68,69,70,71,-10,-5,-41]]},{"type":"Polygon","properties":{"id":"EDMMFIR","icao":"ED","name":"MUNCHEN FIR","minfl":0,"maxfl":245,"fab":"FABEC"},"id":"EDMMFIR","arcs":[[72,73,74,-58,-43,75]]},{"type":"Polygon","properties":{"id":"LOVVFIR","icao":"LO","name":"WIEN FIR","minfl":0,"maxfl":999,"fab":"FABCE"},"id":"LOVVFIR","arcs":[[76,-7,-14,-2,77,78,-73]]},{"type":"Polygon","properties":{"id":"LFEEFIR","icao":"LF","name":"REIMS FIR","minfl":0,"maxfl":195,"fab":"FABEC"},"id":"LFEEFIR","arcs":[[79,80,81,82,83]]},{"type":"Polygon","properties":{"id":"LUUUFIR","icao":"LU","name":"CHISINAU FIR","minfl":0,"maxfl":999},"id":"LUUUFIR","arcs":[[-71,84,85,86]]},{"type":"Polygon","properties":{"id":"LDZOFIR","icao":"LD","name":"ZAGREB FIR","minfl":0,"maxfl":999,"fab":"FABCE"},"id":"LDZOFIR","arcs":[[87,-4,-13,88,89,90,91]]},{"type":"Polygon","properties":{"id":"LFBBFIR","icao":"LF","name":"BORDEAUX FIR","minfl":0,"maxfl":195,"fab":"FABEC"},"id":"LFBBFIR","arcs":[[92,93,94,95,96]]},{"type":"Polygon","properties":{"id":"EBBUFIR","icao":"EB","name":"BRUSSELS FIR","minfl":0,"maxfl":195,"fab":"FABEC"},"id":"EBBUFIR","arcs":[[-64,97,-82,98,99]]},{"type":"Polygon","properties":{"id":"LAAAFIR","icao":"LA","name":"TIRANA FIR","minfl":0,"maxfl":999},"id":"LAAAFIR","arcs":[[100,101,102,103]]},{"type":"Polygon","properties":{"id":"GMMMFIR","icao":"GM","name":"CASABLANCA FIR","minfl":0,"maxfl":195},"id":"GMMMFIR","arcs":[[104,105,106,107]]},{"type":"Polygon","properties":{"id":"LCCCFIR","icao":"LC","name":"NICOSIA FIR","minfl":0,"maxfl":245,"fab":"BLUMEDFAB"},"id":"LCCCFIR","arcs":[[108,109,110]]},{"type":"Polygon","properties":{"id":"UKFVFIR","icao":"UK","name":"SIMFEROPOL FIR","minfl":0,"maxfl":275},"id":"UKFVFIR","arcs":[[111,-23,112,113,114,115,116]]},{"type":"Polygon","properties":{"id":"EISNFIR","icao":"EI","name":"SHANNON FIR","minfl":0,"maxfl":245,"fab":"UKIRELANDFAB"},"id":"EISNFIR","arcs":[[117,118,119,120,-20]]},{"type":"Polygon","properties":{"id":"EFINFIR","icao":"EF","name":"FINLAND FIR","minfl":0,"maxfl":285,"fab":"NEFAB"},"id":"EFINFIR","arcs":[[-32,121,-27,122]]},{"type":"Polygon","properties":{"id":"LYBAFIR","icao":"LY","name":"BEOGRAD FIR","minfl":0,"maxfl":285},"id":"LYBAFIR","arcs":[[-89,-12,123,124,125,-102,126,-91,127]]},{"type":"Polygon","properties":{"id":"ESAAFIR","icao":"ES","name":"SWEDEN FIR","minfl":0,"maxfl":999,"fab":"DKSEFAB"},"id":"ESAAFIR","arcs":[[-123,-26,128,129,130,-37,-57,-68,-33]]},{"type":"Polygon","properties":{"id":"EGGXFIR","icao":"EG","name":"SHANWICK FIR","minfl":0,"maxfl":999},"id":"EGGXFIR","arcs":[[-15,-21,-121,-120,-119,131,132,133,134,-49,135]]},{"type":"MultiPolygon","properties":{"id":"UBBAFIR","icao":"UB","name":"BAKU FIR","minfl":0,"maxfl":999},"id":"UBBAFIR","arcs":[[[136,137,-53]],[[138,-55]]]},{"type":"MultiPolygon","properties":{"id":"EGGX","icao":"EG","name":"REROUTING EXTENSION","minfl":0,"maxfl":999},"id":"EGGX","arcs":[[[-119,131,132,133,139]],[[-21,-121,140]]]},{"type":"Polygon","properties":{"id":"ENOBFIR","icao":"EN","name":"BODO OCEANIC FIR","minfl":0,"maxfl":999,"fab":"NEFAB"},"id":"ENOBFIR","arcs":[[141,-36,142]]},{"type":"Polygon","properties":{"id":"UGGGFIR","icao":"UG","name":"TIBILISI FIR","minfl":0,"maxfl":195},"id":"UGGGFIR","arcs":[[-52,143,144,-137]]},{"type":"Polygon","properties":{"id":"LFRRFIR","icao":"LF","name":"BREST FIR","minfl":0,"maxfl":195,"fab":"FABEC"},"id":"LFRRFIR","arcs":[[145,146,-93,147,-133]]},{"type":"Polygon","properties":{"id":"LECMFIR","icao":"LE","name":"MADRID FIR","minfl":0,"maxfl":245,"fab":"SWFAB"},"id":"LECMFIR","arcs":[[-45,-135,-134,-148,-97,148,-108,149]]},{"type":"Polygon","properties":{"id":"LSASFIR","icao":"LS","name":"SWITZERLAND FIR","minfl":0,"maxfl":195,"fab":"FABEC"},"id":"LSASFIR","arcs":[[150,-74,-79,151,152,-84]]},{"type":"Polygon","properties":{"id":"LECBFIR","icao":"LE","name":"BARCELONA FIR","minfl":0,"maxfl":245,"fab":"SWFAB"},"id":"LECBFIR","arcs":[[-149,-96,153,154]]},{"type":"Polygon","properties":{"id":"BODO","icao":"EN","name":"BODO INTERNATIONAL AIRSPACE","minfl":0,"maxfl":999},"id":"BODO","arcs":[[-30,-142,155]]},{"type":"Polygon","properties":{"id":"EYVLFIR","icao":"EY","name":"VILNIUS FIR","minfl":0,"maxfl":195,"fab":"BALTICFAB"},"id":"EYVLFIR","arcs":[[156,-39,157,-130,158]]},{"type":"Polygon","properties":{"id":"LGGGFIR","icao":"LG","name":"ATHINAI FIR","minfl":0,"maxfl":245,"fab":"BLUMEDFAB"},"id":"LGGGFIR","arcs":[[159,-104,160,161,-25,-110,162,-66,163]]},{"type":"Polygon","properties":{"id":"LTAAFIR","icao":"LT","name":"ANKARA FIR","minfl":0,"maxfl":999},"id":"LTAAFIR","arcs":[[-111,-24,-112,164,-144,-51,165]]},{"type":"Polygon","properties":{"id":"LPPCFIR","icao":"LP","name":"LISBOA FIR","minfl":0,"maxfl":999,"fab":"SWFAB"},"id":"LPPCFIR","arcs":[[-107,166,-46,-150]]},{"type":"Polygon","properties":{"id":"LBSRFIR","icao":"LB","name":"SOFIA FIR","minfl":0,"maxfl":999,"fab":"DANUBEFAB"},"id":"LBSRFIR","arcs":[[167,-113,-22,-162,168,-125]]},{"type":"Polygon","properties":{"id":"LIRRFIR","icao":"LI","name":"ROMA FIR","minfl":0,"maxfl":195,"fab":"BLUMEDFAB"},"id":"LIRRFIR","arcs":[[-164,-65,169,170,171,172]]},{"type":"Polygon","properties":{"id":"LWSSFIR","icao":"LW","name":"SKOPJE FIR","minfl":0,"maxfl":999},"id":"LWSSFIR","arcs":[[-169,-161,-103,-126]]},{"type":"Polygon","properties":{"id":"EDGGFIR","icao":"ED","name":"LANGEN FIR","minfl":0,"maxfl":245,"fab":"FABEC"},"id":"EDGGFIR","arcs":[[-98,-63,-59,-75,-151,-83]]},{"type":"Polygon","properties":{"id":"LKAAFIR","icao":"LK","name":"PRAHA FIR","minfl":0,"maxfl":999,"fab":"FABCE"},"id":"LKAAFIR","arcs":[[-77,-76,-42,-8]]},{"type":"Polygon","properties":{"id":"LIBBFIR","icao":"LI","name":"BRINDISI FIR","minfl":0,"maxfl":195,"fab":"BLUMEDFAB"},"id":"LIBBFIR","arcs":[[173,-92,-127,-101,-160,-173]]},{"type":"Polygon","properties":{"id":"LRBBFIR","icao":"LR","name":"BUCAREST FIR","minfl":0,"maxfl":999,"fab":"DANUBEFAB"},"id":"LRBBFIR","arcs":[[-124,-11,-72,-87,174,-114,-168]]},{"type":"Polygon","properties":{"id":"UKDVFIR","icao":"UK","name":"DNIPROPETROVSK FIR","minfl":0,"maxfl":275},"id":"UKDVFIR","arcs":[[-116,175,176,177]]},{"type":"Polygon","properties":{"id":"GCCCFIR","icao":"LE","name":"CANARIAS FIR","minfl":0,"maxfl":245,"fab":"SWFAB"},"id":"GCCCFIR","arcs":[[178,-47,-167,-106]]},{"type":"Polygon","properties":{"id":"EVRRFIR","icao":"EV","name":"RIGA FIR","minfl":0,"maxfl":999,"fab":"NEFAB"},"id":"EVRRFIR","arcs":[[-129,-29,179,-159]]},{"type":"Polygon","properties":{"id":"LFMMFIR","icao":"LF","name":"MARSEILLE FIR","minfl":0,"maxfl":195,"fab":"FABEC"},"id":"LFMMFIR","arcs":[[180,-80,-153,181,-171,182,-154,-95]]},{"type":"Polygon","properties":{"id":"EGTTFIR","icao":"EG","name":"LONDON FIR","minfl":0,"maxfl":245,"fab":"UKIRELANDFAB"},"id":"EGTTFIR","arcs":[[-61,-100,183,-146,-132,-118,-19]]},{"type":"Polygon","properties":{"id":"UKBVFIR","icao":"UK","name":"KIEV FIR","minfl":0,"maxfl":275},"id":"UKBVFIR","arcs":[[-85,-70,184,-177,185]]},{"type":"Polygon","properties":{"id":"LFFFFIR","icao":"LF","name":"PARIS FIR","minfl":0,"maxfl":195,"fab":"FABEC"},"id":"LFFFFIR","arcs":[[-147,-184,-99,-81,-181,-94]]},{"type":"Polygon","properties":{"id":"LQSBFIR","icao":"LQ","name":"SARAJEVO FIR","minfl":0,"maxfl":245},"id":"LQSBFIR","arcs":[[-128,-90]]},{"type":"Polygon","properties":{"id":"LIMMFIR","icao":"LI","name":"MILANO FIR","minfl":0,"maxfl":195,"fab":"BLUMEDFAB"},"id":"LIMMFIR","arcs":[[-78,-1,-88,-174,-172,-182,-152]]},{"type":"Polygon","properties":{"id":"UKOVFIR","icao":"UK","name":"ODESSA FIR","minfl":0,"maxfl":275},"id":"UKOVFIR","arcs":[[-186,-176,-115,-175,-86]]}]}},"arcs":[[[583475,439367],[1224,1144],[2550,-255],[1129,-615],[899,854],[-1336,1889],[-2262,1479],[823,2188],[-1748,25],[2112,2924],[-2465,511],[-725,1399],[1375,1645],[1825,765],[163,879]],[[587039,454199],[2168,-33],[2890,-1350],[2550,209],[1700,-1107],[292,957],[1712,944],[1275,1633],[1937,727],[4129,98],[977,-641],[1554,1423],[2329,201],[1900,-966],[-549,2616],[1363,615]],[[613266,459525],[2763,-295],[546,-3231],[1245,-2153]],[[617820,453846],[-1773,1077],[-1412,-1027],[383,-1923],[-2232,437],[-1026,-1492],[-2131,-1307],[-1943,-432],[1090,-3444],[-525,-2039],[-3297,-1034],[-43,-2111],[-561,-940],[334,-1877],[-3513,650],[-1527,-449],[-3105,2684],[-1206,-1649],[-1484,-821],[-2222,-64],[-1306,735],[-2635,-890],[-2061,159],[-2150,1278]],[[683788,493675],[-1290,-2134],[-1072,-2748],[-2082,-3564],[72,-1640]],[[679416,483589],[-4213,-1444],[-1224,919],[-604,1695],[-1791,1138],[-3734,-1410],[-3959,1218],[-2577,-855],[-1515,-2933],[-3440,-2306],[-1763,-244],[-2502,1402],[-2930,-2560],[-6165,-547],[-665,-1638],[288,-1819],[-998,-633],[-4138,-696],[-2374,307],[-3783,-107],[-1138,572],[-4691,3581],[-795,-208]],[[624705,477021],[-865,290],[-2702,5500],[1166,3581]],[[622304,486392],[2559,3736],[2094,-667],[3747,773],[2632,2454],[1272,158],[1287,3867],[2037,620],[534,1085],[1375,564],[210,1120],[3127,158]],[[643178,500260],[1214,-90],[213,-1860],[2389,360],[653,1791],[2292,1256],[1936,-2410],[1585,-1210],[656,-2768],[2714,363],[1697,1996],[4885,1042],[2522,-1931],[4375,2409],[13479,-5533]],[[679416,483589],[729,-384],[3947,-4231],[971,-565],[1639,307],[365,-2563]],[[687067,476153],[-4639,-2401],[-3652,-3389],[-944,-2748],[-3534,-5176],[-892,-2953],[-1099,-2372],[-2180,-1474],[-547,-2863],[-2003,-2777],[-2511,524],[-1591,-1858],[-3351,-86],[-1500,-482]],[[658624,448098],[-3558,765],[-1879,-659],[-765,787],[-1743,-474],[-2774,-2364],[-3874,-1052],[-1227,-999]],[[642804,444102],[-4408,-1855],[-5992,381],[-3261,2500],[-2951,893],[-1627,2765],[-2022,1064],[-3600,3560],[-1123,436]],[[613266,459525],[6448,10406],[4147,2491],[844,4599]],[[327869,615384],[0,61538]],[[327869,676922],[21129,0],[22586,0],[21858,0],[23497,0],[20219,0]],[[437158,676922],[0,-15384],[18033,-14103],[10382,-8718],[4372,-3333],[1758,-1897],[4651,-3928],[15449,-14175]],[[491803,615384],[0,-30769]],[[491803,584615],[-10493,0],[-11547,0],[-41176,21],[-7871,-21],[-13172,0],[-14102,0],[-16393,0],[0,-16667]],[[377049,567948],[-29144,7692],[13661,14103],[-4555,1282],[-10017,-1282],[-7650,-8368],[-6618,-2153],[-4857,-1274]],[[327869,577948],[0,37436]],[[724589,380512],[2933,2129],[528,1718],[1637,-188],[4010,1725],[1639,-255],[3127,-2535],[3081,1458],[5085,-205],[4912,1520],[2557,531],[13819,7598],[5305,2915]],[[773222,396923],[2734,0]],[[775956,396923],[0,-50769],[-5101,-3848],[365,-1281],[3697,-7871],[-9854,-5919],[-43,-3919],[0,-29744]],[[765020,293572],[-3181,17],[-2277,1359],[-2004,180],[-728,-1539],[-4736,2051],[-2915,2564],[-728,2565],[-3005,-256],[-2329,-594],[-859,2645],[-547,512],[-3644,-2051],[-1905,718],[-1372,1590],[1821,2307],[-3278,4103],[182,4615],[-1559,3334],[1194,769],[-910,3846],[-5198,496],[-2459,1923],[-1448,2124],[355,1594],[1099,2068],[183,1795],[1275,3590],[2185,769],[1275,1795],[-2434,4064],[-1026,2345],[-729,257],[-2368,-1025],[-2914,1282],[-2884,6991],[-668,3009],[3916,4358],[-364,1796],[182,2564],[3819,3316],[735,1042],[-274,1796],[274,2821],[3096,1282],[-547,4615],[-2732,1538]],[[662762,637128],[3904,9025]],[[666666,646153],[42076,13590],[5259,385],[5853,-385]],[[719854,659743],[19344,-4180],[5057,-2384],[1063,-1086],[-7967,-8350],[-558,-2205],[1072,-5701],[1151,-4479],[2149,-2128],[-2808,-1077],[-1928,-3538]],[[736429,624615],[-6226,-257],[-2320,-927],[-2328,799],[-5161,4291],[-10191,2410],[-7478,-1701],[-7632,-13],[520,-1790],[-726,-1740],[-1925,-1166],[-2462,-116],[-1985,1782],[-3188,3671],[-1354,-205],[-5237,-2359],[-2058,-380],[-2180,573],[-1129,1666],[-1421,3410],[-9186,4565]],[[765027,830768],[18761,-9743],[-6375,-5641]],[[777413,815384],[-3440,-3158],[161,-4022],[-2914,129],[-4736,2007],[-1155,-3849],[-5403,-1364],[-5282,-4871]],[[754644,800256],[-2368,1282],[0,1794],[5465,4103],[-2186,3333],[-6585,1496],[-3980,1838],[-1815,2906],[-4606,-458],[-6014,-2440],[-2632,569],[-3949,-698],[-5574,-3725],[-3461,-10257],[-7832,-6795],[-11293,4231],[-5811,-2611],[-10401,1077],[-6235,6752],[-5058,2218],[-2732,-4103],[-5844,154]],[[661733,800922],[-2301,-2004],[-298,-2474],[-3670,-3202],[3099,-1103],[-3269,-2127],[-9408,2261],[-5173,136],[-2280,1180],[-3185,-692],[-276,-1949],[659,-3175],[-2830,-3641],[-6760,2311],[-5878,-3162],[-4095,-5790],[-2863,-1218],[2423,-3013],[947,-3004],[-5911,-4335],[-2183,-2289],[-2835,-2094],[911,-3590],[-5076,-1739],[-5489,-312],[729,-5129],[-2004,-8205],[-1275,-2565],[-6922,-7692],[738,-683],[4150,-1431],[577,-4039],[-2550,-3077],[-6090,1227],[-4111,-201],[-9107,-7180],[911,-2051],[-2733,-2820],[2733,-4359],[-1822,-1282],[-364,-3847],[2854,-6153],[-1033,-4103],[0,-4987],[4008,-1680],[2732,-3077],[-1245,-3312],[-5252,-2329],[1712,-4094],[2308,-3401],[-255,-2056],[-941,-1218],[409,-1880],[-1557,-2539],[-2453,-1760],[-2744,-231],[0,-2821],[-2329,-2008],[1278,-3876],[-1682,-6423],[-2185,-257],[-1281,3470],[-1160,-256],[-3012,-2085],[-2723,-770],[-1208,-1551],[-1181,-4705]],[[551912,638461],[-32787,-23077],[-16393,0],[-10929,0]],[[437158,676922],[0,31026]],[[437158,707948],[364,-256],[13601,0],[19544,0],[10207,0],[32787,42307],[87431,65385],[14162,3307],[18625,3872],[5956,1389],[48057,8606],[6096,625],[16394,2714],[14675,0],[18112,0],[21858,-5129]],[[594070,583333],[1704,-1295],[2768,-530],[1940,385],[2146,1440],[7936,0],[9259,7419],[4739,3410],[4399,3530]],[[628961,597692],[9162,-8432],[9891,-9645],[3943,-3496],[2341,-81],[6904,-1167],[10564,-513],[7742,0],[6742,462],[2921,-859]],[[689171,573961],[3800,-1739],[3659,-4017]],[[696630,568205],[-2062,-1594],[838,-3646],[2890,-6380],[975,-2739],[-547,-3334],[-8379,-8333],[2599,-825],[2845,-2641],[-811,-3837],[-519,-676],[804,-3431]],[[695263,530769],[319,-3034],[4964,-7223],[-544,-2543],[161,-2535],[-2617,-1524],[-3719,-2816],[-3791,-3928],[-5289,-6124],[914,-5572],[1041,-1795],[-728,-1368],[-2186,1368]],[[643178,500260],[-486,2286],[-1940,842],[-692,2466],[-4417,1569],[-1709,1089],[-1530,-1188],[-2978,2825],[1700,701],[-31,1474],[-3236,-709],[-2735,1846],[-3218,1123],[838,-3238],[-1385,-517],[-1779,-1625],[-1360,970],[-1545,2522],[-2483,1692],[2647,2342],[-1178,1170],[-1609,-590],[-5595,1984],[-3278,825],[-1464,2927],[-2340,517],[-261,-2488],[-1956,6]],[[599158,521081],[1142,1859],[908,3260],[-535,3137],[419,1432],[-2862,1277],[-259,1778]],[[597971,533824],[-1068,1560],[1518,3974],[-862,1235],[-1506,4022],[1102,2132],[-4396,4240],[-883,1414],[1930,4009],[911,2564],[-993,2684],[-391,3538],[-680,1774],[1417,16363]],[[295082,430768],[0,-30769]],[[295082,399999],[-10929,-7692],[-10929,-7692],[0,-84615],[-13491,-15070],[-20052,-24547],[-3616,-14486],[2948,-10035],[4519,-7657],[2840,-2313]],[[246372,225892],[-27793,-25893],[-10929,0],[-10929,0],[-10929,0],[-10929,0],[-10929,0],[0,-92307]],[[163934,107692],[-136613,-107692],[-27321,81538],[0,349359],[21858,-129],[83789,0],[3642,0]],[[109289,430768],[16394,0],[10929,0],[10929,0],[16393,0],[10929,0],[10929,0],[10929,0],[16394,0],[10928,0],[16394,0],[16393,0],[10929,0],[10723,0],[16600,0]],[[926413,349470],[-2006,1299]],[[924407,350769],[-911,3076],[-2550,743],[-3306,-464],[-3272,1500],[-165,6922],[1036,2193],[-759,3508],[-1220,936],[-1057,2098]],[[912203,371281],[1072,240],[1976,-568],[978,729],[3524,514],[219,795],[2852,-885],[1887,736],[2767,-355],[-346,1060],[1835,158]],[[928967,373705],[212,-1476],[1148,258],[892,-983],[-1712,-1248],[2696,-1333],[1037,692],[2269,-2479],[-2514,-3458],[823,-1862],[2162,-1953],[3497,-2043],[291,-726],[-1519,-3249],[-2367,437],[-182,-694],[1989,-717],[385,-1568],[1889,-996],[1949,-2795],[1894,820],[856,-973],[1493,-248],[-485,-1475],[-1403,-841],[2453,-2821],[-954,-919],[-1068,303],[1203,-2076],[-365,-1487],[328,-1398]],[[945864,336397],[-2615,474],[-1788,-953]],[[941461,335918],[147,795],[-1840,4919],[97,1269],[-2225,1265],[531,1735],[-531,1261],[-1308,261],[-2323,-1261],[-2999,1893],[0,837],[-1257,1731],[-1212,-894],[-2128,-259]],[[508196,584615],[16394,0],[4902,1098],[2384,-2380],[3855,-257],[3279,-1457],[2155,688],[2429,-410],[1688,273],[1751,-1171],[4879,-1641],[5464,-213],[5465,-2222],[3643,-834],[1821,64],[9290,7180]],[[577595,583333],[16475,0]],[[597971,533824],[-10540,-2927],[-7104,0],[-5024,1795],[-4794,3867],[-2204,466],[-8652,-1008],[-5555,-4223],[-3415,-3581]],[[550683,528213],[-17714,-8],[2550,5128],[0,7256],[-10929,-333],[0,2564],[-10262,-684]],[[514328,542136],[-30,6432],[273,2201],[1275,3077],[-92,4615],[-2934,744],[288,777],[-1454,1492],[-1894,671],[-1564,1957],[0,20513]],[[459016,530769],[32787,53846]],[[491803,584615],[16393,0]],[[514328,542136],[-2383,-1325],[-863,-1987],[293,-1384],[-4409,-1453],[-2595,936],[-2186,-1026],[947,-2470],[1801,-2248],[191,-2539],[-1518,-1777],[537,-915],[-1776,-2231],[1218,-2777],[-601,-1590]],[[502984,519350],[-3531,136],[-619,1129],[1166,1691],[452,1727],[-237,1855],[-1891,509],[-1057,1167],[-2413,-428],[-1609,1124],[-806,2380],[-2458,-1153],[-334,1410],[-1305,-1282],[-3279,384],[-3995,-3260],[-3937,-30],[-1066,880],[-1041,-816],[-1070,2009],[-14938,1987]],[[562841,300000],[18655,0],[8364,0],[11232,0],[15862,0],[10650,0],[17204,0]],[[644808,300000],[50091,-33335]],[[694899,266665],[-23139,0],[-10756,0],[-15792,0],[-9906,0],[-19247,0],[-13148,0],[-15692,0],[-11943,0],[-12435,0],[0,33335]],[[551912,638461],[20416,-35158],[3112,-2449],[516,-3419],[2185,-2906],[-3157,-3248],[2611,-7948]],[[695263,530769],[11710,6175],[3045,-278],[4417,701],[5634,-141],[2567,-410],[7400,-1949],[9847,-4410],[660,-128]],[[740543,530329],[-107,-1355],[-7717,-18483],[8810,-6466],[-130,-20709]],[[741399,483316],[-1272,564],[-4564,-526],[-5370,-51],[-2067,-2526]],[[728126,480777],[-1682,-461],[-5590,-4137],[-8651,-1308],[-1302,-2017],[-1794,-35],[-3279,3462],[-4083,-760],[-9469,1812],[-2659,-154],[-2550,-1026]],[[587829,489691],[249,-3439],[-972,-1479],[-2349,1145],[-823,-2901],[-7210,-4130],[907,-6024],[-1190,-449],[-10503,-1833],[-1931,-99],[-2921,-3525],[-2547,0],[-2856,2295],[-4317,1260],[-183,-3077],[-989,-1115],[-1834,-615],[455,1730],[-1457,1009],[31,885],[-2945,658],[-2875,-299]],[[541569,469688],[-1117,888]],[[540452,470576],[1078,3782],[0,10683],[2474,4352],[7680,4624],[5328,5085],[-3342,8585],[-4065,3496],[2544,4201],[1979,2422],[-2295,10399],[-1150,8]],[[599158,521081],[-251,-543],[-1822,1256],[-729,1334],[-3242,230],[692,-2076],[-6184,-2295],[-1515,-287],[-12993,-6000],[-1108,-2077],[-1424,-1368],[3179,-1986],[-416,-2487],[-662,-877],[1967,-1811],[304,-1608],[7146,-6607],[5729,-4188]],[[587829,489691],[2993,-2397],[79,-1102],[3069,-646],[1205,1270],[2696,-940],[198,1427],[1214,1645],[1345,-337],[507,3696],[1779,-843],[2158,564],[2751,-1443],[2395,-205],[2896,-1962],[3145,-183],[875,1111],[2273,-599],[88,-615],[2393,-179],[416,-1561]],[[587039,454199],[-3469,783],[-5262,518],[-4787,1050],[-2143,1950],[57,1051],[-1399,547],[-334,1440],[668,1337],[-3622,-1090],[-3619,35],[-2984,-667],[-2595,-3149],[-3161,427],[-646,1191],[-2195,-136]],[[551548,459486],[243,1266],[-1087,799],[-2611,-2928],[-3613,3244],[-2607,482],[537,1193],[-1026,2137],[1487,1909],[-1302,2100]],[[503724,454554],[-8096,-708],[-5647,0]],[[489981,453846],[-5464,14102],[9107,11539],[6193,1282],[-10200,10768],[13115,7779]],[[502732,499316],[2459,812],[1912,-641]],[[507103,499487],[1579,-171],[2037,-3581],[16260,-3826],[-2754,-3961],[-2548,-4333],[-821,-3360],[-884,-2050],[434,-1471],[-1281,-5461],[874,-444]],[[519999,470829],[-2173,-2923],[-1952,179],[-660,1145],[-1669,-61],[-986,-1769],[1785,-568],[-3781,-4473],[-3104,-1966],[97,-2548],[-1649,-927],[-2183,-2364]],[[741399,483316],[14252,-6500],[1495,-2903]],[[757146,473913],[-611,-1178],[-373,-3971],[1566,-397],[620,-1859],[2149,748],[166,-1286],[-746,-2698],[987,-572],[-483,-1919],[1646,-441],[358,-943],[1381,265],[1221,-688],[-1093,-4441],[2571,-1961],[-2729,-812],[-1427,1418],[-689,-1435],[-6591,2414],[-410,-5256],[-1047,-1209],[-2420,-4278],[-2486,-2312],[437,-1149],[-404,-1488],[-2146,680],[-1184,-1094]],[[745409,438051],[-1258,2051],[785,462],[-714,4692],[185,4487],[1002,1257],[510,2025],[-33,2765],[-1442,4466],[-2824,2885],[-1080,2380],[-1949,1063],[33,1209],[-1255,1334],[-2215,3565],[-675,2896],[-2860,4335],[-3493,854]],[[595628,407692],[-12751,15897],[-3643,9616],[0,2179],[4241,3983]],[[642804,444102],[1276,-769],[306,-2231],[-2310,-1359],[4189,-1155],[-1457,-2435],[4007,-1794],[-1323,-1198],[-1837,-443],[197,-1885],[-680,-2372]],[[645172,428461],[-2185,0],[-1822,3589],[-7286,770],[-1512,-1363],[-2173,1107],[-1594,-205],[-720,841],[-2960,-179],[-2550,1426],[-1754,-755],[-2848,530],[-2413,-3504],[-4062,3384],[-2159,-406],[364,-6449],[2189,-1418],[1901,-3547],[1433,-4321],[2277,-2124],[6089,-7243],[2232,-1141],[361,-2043],[4202,-4770],[418,-1410],[-1712,-688],[1825,-1000],[1345,406],[4544,-4065],[2068,-960],[455,-1381]],[[639125,391542],[811,-611],[501,-3239],[-799,-2859],[1494,-1338],[-805,-948],[-1202,286],[-1536,-5987],[-1287,-808]],[[636302,376038],[-1011,927],[-19402,12992],[-1976,-248],[-854,748],[313,1355],[-816,615],[-16928,15265]],[[417668,408974],[182,7436],[969,22991],[124,6466],[364,7979],[15119,0],[0,10255]],[[434426,464101],[11744,0],[12846,0],[9107,-6409],[853,-5752]],[[468976,451940],[1136,-15043],[364,-8038],[-167,-3988],[-3461,-13846],[-106,-7756],[-1472,704],[-3249,-3974],[5192,-6410],[898,-2030]],[[468111,391559],[-3266,-790],[-3464,512],[-544,-769],[-1730,-252],[-3063,2116],[-545,1739],[-2127,-21],[-1187,1205],[-2853,1242],[-1275,-8],[-2884,1159],[-1913,-2415],[-4451,602],[-2380,-495]],[[436429,395384],[-2495,2128],[-1803,-334],[-7083,2963],[-3746,756],[-173,3525],[-1090,-516],[-1691,923],[-680,1067],[0,3078]],[[502984,519350],[2011,-1863],[287,-2103],[1087,-91],[734,-2473],[-2368,-1795],[-713,-2129],[1348,-2845],[3191,-1949],[-1640,-2564],[182,-2051]],[[502732,499316],[-2010,1444],[-4138,-470],[-185,1264],[-1724,1416],[-3003,1645],[-1417,0],[91,2820],[-4191,-512],[-3687,470],[352,3755],[-967,1386],[-4531,423],[-455,2017],[-1330,819],[-1476,-486],[-2477,4436],[-2642,-1410],[-2822,1794],[-1093,4231],[-6011,513]],[[459016,524871],[0,5898]],[[644808,360256],[0,5128],[-1457,5897]],[[643351,371281],[2550,5001],[492,1414],[2550,4872],[55,4098],[-529,1462],[2939,4705],[1597,2038],[1275,-3077],[3039,753],[3883,-3573],[1023,-6252]],[[662225,382722],[-696,-3184],[-385,-5188],[3883,-6658],[1639,-513]],[[666666,367179],[-455,-513],[1001,-3291],[-1029,-2132],[-1794,-602],[-911,-2616],[-455,-2641],[-2914,-683],[-94,-1134],[-1181,21],[910,-2508],[-728,-56],[-984,-2657],[-2295,606],[-273,2309],[-2459,1795],[-3279,768],[-4918,6411]],[[414207,289743],[-1639,-12821],[4475,-2328],[2334,-14757],[4003,-13684],[1938,-8974],[-910,-6410],[-19491,1281],[365,-5127],[-8009,-5911],[-21897,-16133],[-21542,-16346],[-11394,-9046],[0,-15385]],[[342440,164102],[-20218,0],[-7833,0],[-14884,0],[-6245,0],[1822,8975],[5464,26922],[-35519,23078]],[[265027,223077],[10370,7692],[2016,3845],[5392,11539],[23206,45642],[13843,0],[19490,0],[17122,0]],[[356466,291795],[0,-2052],[18761,0],[14162,0],[9518,0],[15300,0]],[[826957,291025],[-1457,-5642],[2004,-5486],[364,-9384],[-5064,-693],[-2587,-846],[-1918,-1795],[-1396,-1872],[-1370,-3282],[-415,-3072],[309,-2825],[3516,-7410],[-729,-1026],[-2881,-142],[-647,-4755],[-3816,-4506],[-1524,-2366],[-686,-2548],[-100,-5170],[-9654,5897],[-11111,6411],[-12386,7179],[-10382,6153]],[[765027,253845],[-7,39727]],[[765020,293572],[7748,-367],[1275,-257],[7923,-256],[21852,-1684],[23139,17]],[[833511,395879],[-13840,274],[-19879,753],[-13478,0],[-10358,17]],[[773222,396923],[-2367,13588]],[[770855,410511],[-1457,8718],[-1457,3848],[-2040,6354]],[[765901,429431],[3041,-585],[18998,13359],[8872,5871],[-259,9359],[1807,15384]],[[798360,472819],[9541,-2136],[17781,-7513],[4973,-2095],[7596,-5947],[7304,-154]],[[845555,454974],[-7487,-17282],[0,-1103],[-1639,-2666],[838,-4129],[619,-6462],[-4375,-27453]],[[377049,567948],[0,-24359],[-27323,-20513]],[[349726,523076],[-5464,0],[-38251,0],[-21858,0],[-10929,0]],[[273224,523076],[0,46154]],[[273224,569230],[16393,2821],[38252,5897]],[[754644,800256],[-6922,-1539],[4226,-641],[-3770,-5719],[9563,-6204],[7286,-6154],[-10019,-11282],[5829,-4103],[2735,-8204],[3276,-7693],[-3837,-1278],[-2074,-8111],[-100,-1894],[5100,-3589],[4554,-7179],[-5282,-7692],[12653,-7573],[4104,-4479],[-4827,-8128],[-11202,-9564],[-6921,-5641],[-3677,-2769],[-8473,-6077],[-1876,-1667],[-5653,-6231],[-1906,-1717],[-2775,-607],[-7335,-932],[-7467,-3846]],[[666666,646153],[-11114,8658],[-9797,9676],[1643,7794],[871,5637],[2004,9261],[3515,11235],[128,1072],[3643,10770],[5464,4615],[9107,2308],[14451,15363],[1579,1303],[12823,12769],[-12,3633],[-680,2684],[-4612,5802],[2596,6423],[1029,1048],[-2945,3559],[-1126,2769],[1870,3211],[-3166,4110],[1466,4262],[-5722,4440],[-21127,8876],[-6821,3491]],[[658624,448098],[3925,-4163],[7487,-9474],[1108,-3872],[258,-2128],[1093,-1205],[12076,-2744],[-907,-4329],[1217,-1722]],[[684881,418461],[-547,-1795],[-2003,-1282],[-753,-3098],[583,-1735],[898,-808],[249,-2085],[2684,-1902],[2532,-3192],[-182,-829],[-2031,-2154],[-510,-1248],[-1728,38],[-1621,-1444],[40,-3107],[1159,-1927],[-45,-868],[-2074,-1624]],[[681532,389401],[-6305,-427],[-5100,-2308],[-4554,-513],[-3348,-3431]],[[643351,371281],[-7049,4757]],[[639125,391542],[765,2047],[-565,6341],[1840,582],[1032,3996],[1700,620],[1458,-1282],[303,893],[1518,389],[-3130,2867],[2341,184],[3886,795],[382,1667],[-1931,2735],[-637,2008],[1821,-513],[1640,1218],[-5334,4205],[-258,4264],[2119,1399],[713,3055],[-3616,-551]],[[662762,637128],[-8846,-21744],[-14503,-10073]],[[639413,605311],[-5330,-3846]],[[634083,601465],[-5122,-3773]],[[349726,523076],[0,-33333]],[[349726,489743],[0,-58975]],[[349726,430768],[-8196,0]],[[341530,430768],[-19126,0],[-16393,0],[-10929,0]],[[109289,430768],[0,246154],[16394,0],[10929,0],[21858,0],[16393,0],[10929,0],[21858,0],[16393,0],[21858,0],[10929,0],[21858,0],[10929,0],[16394,0],[21858,0]],[[928967,373705],[3193,2662],[13109,-6462],[1712,278],[1105,3610],[-4924,4467],[31,3056],[1551,1577]],[[944744,382893],[12486,-10305],[3297,-2460],[6139,9513],[5155,5409],[6903,5488],[4882,4333],[5133,-3542],[10840,-6458],[420,-19871],[0,-43463],[-5282,1539],[-13825,4129],[-9581,2538],[-8835,7693],[1640,3333],[-1731,8204],[-12660,-7948],[-3861,-4628]],[[941461,335918],[-7294,2265],[-4930,6321],[-2824,4966]],[[341530,430768],[0,54975],[-2733,385],[-65573,6179],[0,30769]],[[273224,569230],[0,46154],[12881,0],[19906,0],[21858,0]],[[765027,999999],[0,-169231]],[[437158,707948],[0,292051],[54645,0],[54645,0],[54644,0],[54645,0],[54645,0],[54645,0]],[[912203,371281],[-316,710],[-2623,1039],[-3910,4662],[-2805,768],[-759,-2435],[-5616,1411],[-1806,-1459],[-6042,2483],[-10368,4617]],[[877958,383077],[-4553,19743],[1093,3076],[1275,2565],[28233,-5897],[1919,196],[4281,-4018],[9887,-4413],[7411,1782],[10200,-4147],[-1521,-4598],[8561,-4473]],[[349726,489743],[65574,17948],[19126,0]],[[434426,507691],[0,-43590]],[[417668,408974],[-24089,11470],[-43853,10324]],[[436429,395384],[-2460,-9231],[-3550,-15129],[-1701,-6346],[-2489,-10833],[-443,-1358],[-2784,-13946],[-1765,-11276],[-4115,-21882],[-605,-2409],[-2310,-13231]],[[356466,291795],[0,17880],[-495,1799],[-52,2627],[-728,2565],[2003,3718],[2356,3022],[1105,952],[0,1026],[-3279,5389],[875,3556],[2892,4477],[-597,1249],[-1530,885],[-1667,2598],[-699,3059],[-1468,2065],[5473,56],[1381,3226],[-8,1816],[-1285,2017],[2280,3666],[-182,2352],[844,1632],[-1208,3239],[613,4560],[4205,3851],[1229,1585],[327,1543],[-2725,2867],[-735,2517],[-6008,52],[-1643,-1291],[-2252,-342],[-3313,1201],[-3335,-1440],[-1609,4996],[-3661,-1103],[-3063,-3085],[-12638,2038],[-21858,10444],[-5465,2376],[-5464,2564]],[[519999,470829],[1348,-1030],[1625,798],[1001,-657],[2802,1141],[2799,-710],[729,1099],[-1190,495],[920,1351],[1457,43],[2851,-1710],[1551,402],[4560,-1475]],[[551548,459486],[136,-4683],[-1515,-278],[-1354,1372],[-746,-257],[-1148,-2128],[-5376,-2636],[-2065,3119],[-953,-427],[197,-4205],[-2820,-2834],[401,-2355],[-1126,-303],[-1306,2153],[-4265,4030],[-273,3270],[-3868,-3162],[580,-1188],[-1822,-2821],[-1300,-1153],[-3305,692],[-1032,-685],[-3865,-739],[-522,351]],[[514201,444619],[-698,1599],[-1946,2119],[-307,3064],[-3300,666],[-2012,-982],[-820,-1778],[-2335,-948],[-355,743],[1652,2171],[-608,1303],[252,1978]],[[468111,391559],[1649,445],[2380,-757],[3268,-1505],[3593,-1123],[9159,-4004],[0,-37145],[200,-9009]],[[488360,338461],[-10218,-10256],[-15532,-8150],[-13169,-8138],[-12541,-6208],[-16081,-9522],[-6612,-6444]],[[765027,999999],[21857,0],[0,-15385],[32787,0],[0,-106999],[-31876,-693],[0,-58974],[-1093,-513],[-9289,-2051]],[[728202,595085],[-868,-3406],[-841,-4962],[-7535,-4269],[-525,-2581],[269,-1769],[-1596,-1616],[-680,-2252],[2751,-1325],[-258,-1119],[-2557,-128],[-258,2089],[-2788,-295],[-794,-944],[-4617,-1466],[396,-1034],[-1380,-1034],[-10291,-769]],[[689171,573961],[-3325,5295],[-221,4457],[-1539,1731],[-9588,1337],[-3045,1453],[-5333,740],[-32037,12491]],[[639413,605311],[23610,-4286],[4666,111],[2389,2034],[3233,1829],[6054,1500],[4927,-611],[8892,-303],[3597,128],[3385,-1427],[4812,-30],[1363,1419],[2893,1222],[2881,-4201],[4511,-560],[8079,-5209],[3497,-1842]],[[644808,336666],[0,23590]],[[666666,367179],[3913,137],[768,735],[3880,154],[2368,3076],[2277,641],[2480,-923],[890,219],[2641,1815],[361,1265],[2098,317]],[[688342,374615],[5161,811],[1943,-555],[4435,1329],[901,1435],[1640,522],[455,-875],[1612,157],[1521,-1286],[5689,-1538],[1312,-1488],[1013,-149],[2606,1214],[1627,-402],[1250,829],[607,-619],[2675,862],[343,779],[-1093,4871],[2550,0]],[[765027,253845],[-13663,3291],[-5281,1325],[-7034,1906],[-3166,428],[-1822,743],[-18216,0],[-14571,0],[-6375,5127]],[[644808,300000],[0,36666]],[[833511,395879],[15802,-768],[25003,-10496],[3642,-1538]],[[924407,350769],[-1457,-6410],[-3971,-923],[1329,-6365],[3233,-9037],[-2233,-4206],[-696,-2333],[4269,-2906],[436,-9230],[-4371,-2564],[-1093,5598],[-5749,-1244],[-5708,2334],[-5121,-1962],[-3458,-2547],[-911,2820],[-8197,-4102],[-2947,1111],[-346,-598],[-3992,0],[-16394,-5641],[-3333,645],[-3042,-645],[-4191,3590],[-10748,-3864],[-3489,17],[-4341,2821],[-865,-5128],[1230,-4103],[-3643,-1025],[-2004,-4616],[-5647,769]],[[265027,223077],[-3090,-1211],[-5729,-221],[-4192,1171],[-5204,2568],[-440,508]],[[684881,418461],[3916,-1538],[-1912,-3591],[1457,-1025],[2914,513],[6011,-770],[4800,-1452],[3215,1195],[1945,-798],[4612,-296],[3115,-1063],[1402,167],[2951,1735],[1491,1748],[2881,1842],[3916,1128],[2750,392],[2080,898],[2911,-367],[1457,-1538],[2636,508],[1007,-1535],[2004,770],[729,-2564],[2535,-1128],[2383,-410],[1967,128],[4044,-1154],[364,1026],[16393,-771]],[[688342,374615],[-547,1795],[1093,3846],[-728,768],[-911,3078],[-3033,2004],[-2684,3295]],[[562841,300000],[-36,15406],[-38215,23055]],[[524590,338461],[0,30769],[3643,5129],[15482,0],[0,28205]],[[543715,402564],[6011,6487],[9472,1974],[3764,-343],[16728,-2393],[3187,-341]],[[582877,407948],[-455,-2307],[-2277,-6924],[14208,-22564],[8014,-3847],[12386,-30255],[1849,-2437],[9281,-6402],[2711,1449],[16214,2005]],[[582877,407948],[12751,-256]],[[745409,438051],[1403,-2154],[4259,-1663],[4237,2341],[4254,604],[1821,-3077],[3279,-1026],[1239,-3645]],[[798360,472819],[-2368,514]],[[795992,473333],[601,5410],[-2605,4076],[-531,2172],[1536,2520],[6828,4026],[2732,5591],[2936,13837],[6171,15701]],[[813660,526666],[9618,-2488],[3461,-10768],[564,-257],[8598,-641],[3752,52],[6976,1794],[1904,-2038],[1302,-3214],[3091,-2820],[1484,637],[525,1923],[13917,-5129],[6773,-2069],[-2803,-16751],[875,-4974],[-1477,-3770],[-1456,-1795],[-4992,359],[-3296,-616],[-6593,-4026],[-984,-6820],[1201,-1973],[-9106,-3078],[-1439,-3230]],[[342440,164102],[0,-25641],[-27632,0],[-8797,0],[0,-39230],[-6740,-513],[-4189,-3846],[-1822,-6668],[1822,-21538],[-10565,0],[-11293,0],[-11476,0],[-9654,0],[-1111,-6445],[19,-2273],[-7834,-9230],[-2731,-3847],[-10929,-14102],[-8033,8974],[-2896,3847],[-7650,8178],[-13916,15155],[-17778,24103],[-15301,16666]],[[736429,624615],[3461,-769],[-155,-2612],[2359,-9671],[2477,-3794],[783,-2231],[-546,-2974],[-3591,-1966],[-2788,-3911],[-6429,432],[-3798,-2034]],[[468976,451940],[3883,1906],[17122,0]],[[514201,444619],[-1998,-2270],[2405,-5375],[-1403,-3256],[-3433,-1198],[1454,-1619],[1333,-2572],[1238,-637],[319,-2180],[-1366,-3218],[987,-3217],[3045,-1506],[3712,52],[957,-1299],[-1415,-2478],[-547,-1923],[1974,-629],[22252,-8730]],[[524590,338461],[-14027,0],[-14665,0],[-7538,0]],[[459016,524871],[-5829,-1795],[0,-5129],[-18761,-10256]],[[740543,530329],[10054,1435],[-12,-1859],[1157,-380],[36,1192],[1353,1445],[1313,38],[564,1133],[2733,-1539],[586,-2564],[2182,1022],[3730,-124],[3647,277],[1287,-2397],[1943,-897],[541,867],[-541,5030],[5003,6735],[4375,876],[4023,-107],[1836,-799],[3264,286],[910,3077],[3716,-384],[6957,1154],[6431,-436],[2386,-4949],[4190,-4615],[-4554,-770],[4007,-6410]],[[795992,473333],[-32228,6534],[-6618,-5954]]],"transform":{"scale":[0.00009150009150009151,0.000065000065000065],"translate":[-40,17]}} |
.background { | |
fill: none; | |
pointer-events: all; | |
} | |
.fab { | |
fill: #ddd; | |
opacity: 0.5; | |
} | |
.fir { | |
fill: #ddc; | |
opacity: 0.5; | |
cursor: pointer; | |
} | |
.fir-boundary { | |
fill: none; | |
stroke: #888; | |
/*stroke-dasharray: 2,2;*/ | |
stroke-linejoin: round; | |
stroke-linecap: round; | |
/*stroke-width: .5px;*/ | |
} | |
.fir-boundary.ECTRL { | |
stroke: #8BF63D; | |
/*stroke-width: .5px;*/ | |
} | |
.graticule { | |
fill: none; | |
stroke: #333; | |
/*stroke-width: .5px;*/ | |
stroke-opacity: .5; | |
} | |
.land { | |
fill: none; | |
/*stroke-width: .5px;*/ | |
stroke-opacity: .5; | |
} | |
.boundary { | |
fill: none; | |
stroke: #fff; | |
/*stroke-width: .5px;*/ | |
} | |
.country { | |
fill: #ccc; | |
} | |
#tooltip { | |
position: absolute; | |
width: auto; | |
height: auto; | |
padding: 2px 2px; | |
-webkit-border-radius: 3px; | |
-moz-border-radius: 3px; | |
border-radius: 3px; | |
-webkit-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.4); | |
-moz-box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.4); | |
box-shadow: 2px 2px 5px rgba(0, 0, 0, 0.4); | |
pointer-events: none; | |
background-color: #bbb; | |
} | |
#tooltip.hidden { | |
display: none; | |
} | |
#tooltip p { | |
margin: 0 0 0 0; | |
padding: 2px 2px; | |
font-family: sans-serif; | |
font-size: 11px; | |
} | |
.hidden{ | |
display: none; | |
} | |
svg { | |
background: #eee; | |
} |
/*jslint browser: true, devel: true */ | |
var d3, queue, vis, params, topojson; | |
(function () { | |
"use strict"; | |
vis = {}; | |
var width, height, | |
chart, svg, g, active, background, | |
path, | |
defs, style, | |
slider, step, maxStep, running, sv, timer, | |
button; | |
// general design from | |
// http://www.jeromecukier.net/blog/2013/11/20/getting-beyond-hello-world-with-d3/ | |
vis.init = function (params) { | |
console.log("in init, params: " + JSON.stringify(params)); | |
vis.params = params || {}; | |
chart = d3.select(vis.params.chart || "#chart"); // placeholder div for svg | |
width = vis.params.width || 960; | |
height = vis.params.height || 500; | |
active = d3.select(null); | |
svg = chart.selectAll("svg") | |
.data([{width: width, height: height}]).enter() | |
.append("svg"); | |
svg.attr({ | |
width: function (d) { return d.width; }, | |
height: function (d) { return d.height; } | |
}); | |
background = svg.selectAll("rect.background") | |
.data([{}]).enter() | |
.append("rect") | |
.classed("background", true); | |
g = svg.selectAll("g.all") | |
.data([{}]).enter() | |
.append("g") | |
.classed("all", true); | |
// vis.init can be re-ran to pass different height/width values | |
// to the svg. this doesn't create new svg elements. | |
style = svg.selectAll("style") | |
.data([{}]).enter() | |
.append("style") | |
.attr("type", "text/css"); | |
// this is where we can insert style that will affect the svg directly. | |
defs = svg.selectAll("defs").data([{}]).enter() | |
.append("defs"); | |
// this is used if it's necessary to define gradients, patterns etc. | |
// the following will implement interaction around a slider and a | |
// button. repeat/remove as needed. | |
// note that this code won't cause errors if the corresponding elements | |
// do not exist in the HTML. | |
slider = d3.select(vis.params.slider || ".slider"); | |
if (slider[0][0]) { | |
maxStep = slider.property("max"); | |
step = slider.property("value"); | |
slider.on("change", function () { | |
vis.stop(); | |
step = this.value; | |
vis.draw(vis.params); | |
}); | |
running = vis.params.running || 0; // autorunning off or manually set on | |
} else { | |
running = -1; // never attempt auto-running | |
} | |
button = d3.select(vis.params.button || ".button"); | |
if (button[0][0] && running > -1) { | |
button.on("click", function () { | |
if (running) { | |
vis.stop(); | |
} else { | |
vis.start(); | |
} | |
}); | |
} | |
vis.loaddata(vis.params); | |
}; | |
function ready(error, firs, world, wnames) { | |
if (error) { | |
console.error(error); | |
} | |
vis.firs = firs; | |
vis.world = world; | |
vis.wnames = wnames; | |
if (running > 0) { | |
vis.start(); | |
} else { | |
vis.draw(vis.params); | |
} | |
} | |
vis.loaddata = function (params) { | |
console.log("in loaddata, params: " + JSON.stringify(params)); | |
if (!params) { params = {}; } | |
// if `params.refresh` is set/true forces the browser to reload the file | |
// and not use the cached version due to URL being different (but the filename is the same) | |
var topo = (params.topo || "ectrl-firs.json") + (params.refresh ? ("#" + Math.random()) : ""); | |
var world = (params.world || "world-50m.json") + (params.refresh ? ("#" + Math.random()) : ""); | |
var names = (params.worldnames || "world-country-names.tsv") + (params.refresh ? ("#" + Math.random()) : ""); | |
queue() | |
.defer(d3.json, topo) | |
.defer(d3.json, world) | |
.defer(d3.tsv, names) | |
.await(ready); | |
}; | |
vis.play = function () { | |
if (i === maxStep && !running) { | |
step = -1; | |
vis.stop(); | |
} | |
if (i < maxStep) { | |
step = step + 1; | |
running = 1; | |
d3.select(".stop").html("Pause").on("click", vis.stop(params)); | |
slider.property("value", sv); | |
vis.draw(params); | |
} else { | |
vis.stop(); | |
} | |
}; | |
vis.start = function (params) { | |
timer = setInterval(function () { vis.play(params); }, 50); | |
}; | |
vis.stop = function (params) { | |
clearInterval(timer); | |
running = 0; | |
d3.select(".stop").html("Play").on("click", vis.start(params)); | |
}; | |
var zoom = d3.behavior.zoom() | |
.scaleExtent([1, 8000]) | |
.on("zoom", zoomed); | |
function zoomed() { | |
g.style("stroke-width", 1.5 / d3.event.scale + "px"); | |
g.attr("transform", "translate(" + d3.event.translate + ")scale(" + d3.event.scale + ")"); | |
} | |
// If the drag behavior prevents the default click, | |
// also stop propagation so we don’t click-to-zoom. | |
function stopped() { | |
if (d3.event.defaultPrevented) d3.event.stopPropagation(); | |
} | |
function reset() { | |
active.classed("active", false); | |
active = d3.select(null); | |
svg.transition() | |
.duration(750) | |
.call(zoom.translate([0, 0]).scale(1).event); | |
} | |
function clicked(d) { | |
if (active.node() === this) { | |
return reset(); | |
} | |
active.classed("active", false); | |
active = d3.select(this).classed("active", true); | |
var bounds = path.bounds(d), | |
dx = bounds[1][0] - bounds[0][0], | |
dy = bounds[1][1] - bounds[0][1], | |
x = (bounds[0][0] + bounds[1][0]) / 2, | |
y = (bounds[0][1] + bounds[1][1]) / 2, | |
scale = .9 / Math.max(dx / width, dy / height), | |
translate = [width / 2 - scale * x, height / 2 - scale * y]; | |
svg.transition() | |
.duration(750) | |
.call(zoom.translate(translate).scale(scale).event); | |
} | |
vis.draw = function (params) { | |
// make stuff here! | |
console.log("in draw, params: " + JSON.stringify(params)); | |
var pars = params || {}, | |
scale = pars.scale || 600, | |
cLon = pars.centerLon || 0, | |
cLat = pars.centerLan || 55.4, | |
projection = d3.geo.albers() | |
.center([cLon, cLat]) | |
.rotate([4.4, 0]) | |
.parallels([50, 60]) | |
.scale(scale) | |
.translate([width / 2, height / 2]), | |
fff = vis.firs.objects.firs, | |
firs = topojson.feature(vis.firs, fff), | |
tooltip = d3.select("#tooltip").classed("hidden", true), | |
countryname = d3.select("#countryname"), | |
graticule = d3.geo.graticule(), | |
land = topojson.feature(vis.world, vis.world.objects.land), | |
countries = topojson.feature(vis.world, vis.world.objects.countries).features, | |
borders = topojson.mesh(vis.world, vis.world.objects.countries, function (a, b) { return a.id !== b.id; }), | |
country, | |
fir, | |
uir; | |
path = d3.geo.path() | |
.projection(projection); | |
countries.forEach(function (d) { | |
vis.wnames.some(function (n) { | |
if (+d.id === +n.id) { | |
d.name = n.name; | |
return d.name; | |
} | |
}); | |
}); | |
svg.on("click", stopped, true); | |
background.on("click", reset); | |
g.style("stroke-width", "0.5px"); | |
svg | |
.call(zoom) // delete this line to disable free zooming | |
.call(zoom.event); | |
svg.on("mousemove", function () { | |
// update tooltip position | |
tooltip.style("top", (event.pageY + 16) + "px").style("left", (event.pageX + 10) + "px"); | |
return true; | |
}); | |
svg.selectAll(".path.graticule") | |
.data([graticule]).enter() | |
.append("path") | |
.classed("graticule", true) | |
.attr("d", path); | |
country = g.selectAll(".country") | |
.data(countries) | |
.enter().insert("path", ".graticule") | |
.attr("class", function (d) {return "country country" + d.id; }) | |
.attr("d", path) | |
.text(function (d) { return d.id; }) | |
.on("mouseover", function (d, i) { | |
d3.select(this).style({'stroke-opacity': 1, 'stroke': '#F00'}); | |
// http://stackoverflow.com/questions/17917072/#answer-17917341 | |
// d3.select(this.parentNode.appendChild(this)).style({'stroke-opacity':1,'stroke':'#F00'}); | |
if (d.id) { | |
tooltip.classed("hidden", false); | |
countryname.text(d.name); | |
} | |
}) | |
.on("mouseout", function () { | |
this.style.stroke = "none"; | |
tooltip.classed("hidden", true); | |
}) | |
.on("mousedown.log", function (d) { | |
console.log("id=" + d.id + "; name=" + d.name + "; centroid=[" + path.centroid(d) + "] px."); | |
}); | |
// FIRs | |
fir = g.selectAll(".fir") | |
.data(firs.features) | |
.enter().insert("path", ".graticule") | |
.attr("class", function (d) { return "fir " + d.id; }) | |
.attr("d", path) | |
.on("click", clicked) | |
.on("mouseover", function (d) { | |
d3.select(this).style("fill", "red"); | |
tooltip.classed("hidden", false); | |
countryname.html("<h4>" + (d.properties.name || "- no name -") + "</h4>" + | |
"<b>ID</b>: " +d.properties.id + "<br>" + | |
"<b>FL</b>: [" + d.properties.minfl + ", " + d.properties.maxfl + "]<br>" + | |
"<b>Fab</b>: " + (d.properties.fab || "-" ) + "</p>"); | |
}) | |
.on("mouseleave", function () { | |
d3.select(this).style("fill", "#ddc"); | |
tooltip.classed("hidden", true); | |
}); | |
// intra FIR borders | |
g.selectAll(".fir-boundary") | |
.data([topojson.mesh(vis.firs, fff, function (a, b) { | |
return a !== b; | |
})]) | |
.enter().insert("path", ".graticule") | |
.attr("d", path) | |
.attr("class", "fir-boundary"); | |
// external borders | |
g.selectAll("fir-boundary ECTRL") | |
.data([topojson.mesh(vis.firs, fff, function (a, b) { | |
return a === b; | |
})]) | |
.enter().insert("path", ".graticule") | |
.attr("d", path) | |
.attr("class", "fir-boundary ECTRL"); | |
}; | |
}()); |
<!DOCTYPE html> | |
<meta charset="utf-8"> | |
<body> | |
<script src="http://d3js.org/d3.v3.min.js"></script> | |
<script src="http://d3js.org/topojson.v1.min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/queue-async/1.0.7/queue.min.js"></script> | |
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/3.10.1/lodash.js" type="text/javascript"></script> | |
<link href="fir.css" rel="stylesheet"> | |
<script src="firs.js"></script> | |
<div id="tooltip" class="hidden"> | |
<p id="countryname"></p> | |
</div><div id="chart"></div> | |
<script type="text/javascript"> | |
(function () { | |
// general design from | |
// http://www.jeromecukier.net/blog/2013/11/20/getting-beyond-hello-world-with-d3/ | |
var params = { | |
refresh: false, // REMOVE, i.e. `false`, for production | |
width: 960, | |
height:500, | |
scale: 470, | |
centerLat:65.4, | |
centerLon: 0, | |
topo: "euctrl-firs.json", | |
world: "world-110m.json", | |
worldnames: "world-country-names.tsv" | |
}; | |
var query = window.location.search.substring(1); | |
var vars = query.split("&"); | |
vars.forEach(function(v) { | |
var p = v.split("="); | |
params[p[0]] = p[1]; | |
}) | |
console.log("params: " + JSON.stringify(params)); | |
vis.init(params); | |
}()); | |
</script> |
id | name | |
---|---|---|
-1 | Northern Cyprus | |
-2 | Kosovo | |
-3 | Somaliland | |
4 | Afghanistan | |
8 | Albania | |
10 | Antarctica | |
12 | Algeria | |
16 | American Samoa | |
20 | Andorra | |
24 | Angola | |
28 | Antigua and Barbuda | |
31 | Azerbaijan | |
32 | Argentina | |
36 | Australia | |
40 | Austria | |
44 | Bahamas | |
48 | Bahrain | |
50 | Bangladesh | |
51 | Armenia | |
52 | Barbados | |
56 | Belgium | |
60 | Bermuda | |
64 | Bhutan | |
68 | Bolivia, Plurinational State of | |
70 | Bosnia and Herzegovina | |
72 | Botswana | |
74 | Bouvet Island | |
76 | Brazil | |
84 | Belize | |
86 | British Indian Ocean Territory | |
90 | Solomon Islands | |
92 | Virgin Islands, British | |
96 | Brunei Darussalam | |
100 | Bulgaria | |
104 | Myanmar | |
108 | Burundi | |
112 | Belarus | |
116 | Cambodia | |
120 | Cameroon | |
124 | Canada | |
132 | Cape Verde | |
136 | Cayman Islands | |
140 | Central African Republic | |
144 | Sri Lanka | |
148 | Chad | |
152 | Chile | |
156 | China | |
158 | Taiwan, Province of China | |
162 | Christmas Island | |
166 | Cocos (Keeling) Islands | |
170 | Colombia | |
174 | Comoros | |
175 | Mayotte | |
178 | Congo | |
180 | Congo, the Democratic Republic of the | |
184 | Cook Islands | |
188 | Costa Rica | |
191 | Croatia | |
192 | Cuba | |
196 | Cyprus | |
203 | Czech Republic | |
204 | Benin | |
208 | Denmark | |
212 | Dominica | |
214 | Dominican Republic | |
218 | Ecuador | |
222 | El Salvador | |
226 | Equatorial Guinea | |
231 | Ethiopia | |
232 | Eritrea | |
233 | Estonia | |
234 | Faroe Islands | |
238 | Falkland Islands (Malvinas) | |
239 | South Georgia and the South Sandwich Islands | |
242 | Fiji | |
246 | Finland | |
248 | Åland Islands | |
250 | France | |
254 | French Guiana | |
258 | French Polynesia | |
260 | French Southern Territories | |
262 | Djibouti | |
266 | Gabon | |
268 | Georgia | |
270 | Gambia | |
275 | Palestinian Territory, Occupied | |
276 | Germany | |
288 | Ghana | |
292 | Gibraltar | |
296 | Kiribati | |
300 | Greece | |
304 | Greenland | |
308 | Grenada | |
312 | Guadeloupe | |
316 | Guam | |
320 | Guatemala | |
324 | Guinea | |
328 | Guyana | |
332 | Haiti | |
334 | Heard Island and McDonald Islands | |
336 | Holy See (Vatican City State) | |
340 | Honduras | |
344 | Hong Kong | |
348 | Hungary | |
352 | Iceland | |
356 | India | |
360 | Indonesia | |
364 | Iran, Islamic Republic of | |
368 | Iraq | |
372 | Ireland | |
376 | Israel | |
380 | Italy | |
384 | Côte d'Ivoire | |
388 | Jamaica | |
392 | Japan | |
398 | Kazakhstan | |
400 | Jordan | |
404 | Kenya | |
408 | Korea, Democratic People's Republic of | |
410 | Korea, Republic of | |
414 | Kuwait | |
417 | Kyrgyzstan | |
418 | Lao People's Democratic Republic | |
422 | Lebanon | |
426 | Lesotho | |
428 | Latvia | |
430 | Liberia | |
434 | Libya | |
438 | Liechtenstein | |
440 | Lithuania | |
442 | Luxembourg | |
446 | Macao | |
450 | Madagascar | |
454 | Malawi | |
458 | Malaysia | |
462 | Maldives | |
466 | Mali | |
470 | Malta | |
474 | Martinique | |
478 | Mauritania | |
480 | Mauritius | |
484 | Mexico | |
492 | Monaco | |
496 | Mongolia | |
498 | Moldova, Republic of | |
499 | Montenegro | |
500 | Montserrat | |
504 | Morocco | |
508 | Mozambique | |
512 | Oman | |
516 | Namibia | |
520 | Nauru | |
524 | Nepal | |
528 | Netherlands | |
531 | Curaçao | |
533 | Aruba | |
534 | Sint Maarten (Dutch part) | |
535 | Bonaire, Sint Eustatius and Saba | |
540 | New Caledonia | |
548 | Vanuatu | |
554 | New Zealand | |
558 | Nicaragua | |
562 | Niger | |
566 | Nigeria | |
570 | Niue | |
574 | Norfolk Island | |
578 | Norway | |
580 | Northern Mariana Islands | |
581 | United States Minor Outlying Islands | |
583 | Micronesia, Federated States of | |
584 | Marshall Islands | |
585 | Palau | |
586 | Pakistan | |
591 | Panama | |
598 | Papua New Guinea | |
600 | Paraguay | |
604 | Peru | |
608 | Philippines | |
612 | Pitcairn | |
616 | Poland | |
620 | Portugal | |
624 | Guinea-Bissau | |
626 | Timor-Leste | |
630 | Puerto Rico | |
634 | Qatar | |
638 | Réunion | |
642 | Romania | |
643 | Russian Federation | |
646 | Rwanda | |
652 | Saint Barthélemy | |
654 | Saint Helena, Ascension and Tristan da Cunha | |
659 | Saint Kitts and Nevis | |
660 | Anguilla | |
662 | Saint Lucia | |
663 | Saint Martin (French part) | |
666 | Saint Pierre and Miquelon | |
670 | Saint Vincent and the Grenadines | |
674 | San Marino | |
678 | Sao Tome and Principe | |
682 | Saudi Arabia | |
686 | Senegal | |
688 | Serbia | |
690 | Seychelles | |
694 | Sierra Leone | |
702 | Singapore | |
703 | Slovakia | |
704 | Viet Nam | |
705 | Slovenia | |
706 | Somalia | |
710 | South Africa | |
716 | Zimbabwe | |
724 | Spain | |
728 | South Sudan | |
729 | Sudan | |
732 | Western Sahara | |
740 | Suriname | |
744 | Svalbard and Jan Mayen | |
748 | Swaziland | |
752 | Sweden | |
756 | Switzerland | |
760 | Syrian Arab Republic | |
762 | Tajikistan | |
764 | Thailand | |
768 | Togo | |
772 | Tokelau | |
776 | Tonga | |
780 | Trinidad and Tobago | |
784 | United Arab Emirates | |
788 | Tunisia | |
792 | Turkey | |
795 | Turkmenistan | |
796 | Turks and Caicos Islands | |
798 | Tuvalu | |
800 | Uganda | |
804 | Ukraine | |
807 | Macedonia, the former Yugoslav Republic of | |
818 | Egypt | |
826 | United Kingdom | |
831 | Guernsey | |
832 | Jersey | |
833 | Isle of Man | |
834 | Tanzania, United Republic of | |
840 | United States | |
850 | Virgin Islands, U.S. | |
854 | Burkina Faso | |
858 | Uruguay | |
860 | Uzbekistan | |
862 | Venezuela, Bolivarian Republic of | |
876 | Wallis and Futuna | |
882 | Samoa | |
887 | Yemen | |
894 | Zambia |