Skip to content

Instantly share code, notes, and snippets.

@tmayer
Last active August 29, 2015 13:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tmayer/9225521 to your computer and use it in GitHub Desktop.
Save tmayer/9225521 to your computer and use it in GitHub Desktop.
Bulgarian dialect data

Implemented by Thomas Mayer. Data and MDS results by Jelena Prokić.

var hessen = [ [ 22.919561808000054, 43.834224752000068 ], [ 23.052551215000108, 43.842819856000062 ], [ 23.13184859200004, 43.847944845000086 ], [ 23.161924275000104, 43.857324117000132 ], [ 23.196960896000121, 43.862750143000113 ], [ 23.23447798700002, 43.877297059000057 ], [ 23.325150732000054, 43.886592281000077 ], [ 23.484695272000096, 43.880604350000056 ], [ 23.592699016000068, 43.837428691000127 ], [ 23.620853516000068, 43.834009930000036 ], [ 23.636107219000053, 43.832157695000092 ], [ 23.720753215000059, 43.845826111000093 ], [ 23.742870727000053, 43.842699687000049 ], [ 23.799921509000058, 43.818463440000073 ], [ 24.149605832000134, 43.754719949000105 ], [ 24.159382772000129, 43.752937724000077 ], [ 24.336705387000052, 43.759250925000089 ], [ 24.35823368400014, 43.760017395000091 ], [ 24.375493612000042, 43.763867290000036 ], [ 24.431200806000078, 43.79417551700007 ], [ 24.46634077900012, 43.802417908000109 ], [ 24.500137166000115, 43.799498190000122 ], [ 24.661763224000083, 43.755656716000061 ], [ 24.705602661000057, 43.743765158000087 ], [ 24.752628215000101, 43.738804220000134 ], [ 24.963674764000075, 43.749604594000061 ], [ 25.08160038200009, 43.71893463100011 ], [ 25.211308227000131, 43.711880799000113 ], [ 25.252339315000086, 43.70464609800004 ], [ 25.285404775000075, 43.690391315000113 ], [ 25.288719523000083, 43.688962301000089 ], [ 25.323032674000103, 43.669712830000066 ], [ 25.359619588000044, 43.654287415000056 ], [ 25.403131144000071, 43.650049948000117 ], [ 25.426075480000094, 43.654390767000081 ], [ 25.467416626000045, 43.667749125000114 ], [ 25.482450035000113, 43.669714753000051 ], [ 25.488758993000118, 43.670539653000077 ], [ 25.533820841000079, 43.668679301000083 ], [ 25.556558472000063, 43.670358785000133 ], [ 25.575058634000072, 43.677386780000035 ], [ 25.593868856000086, 43.680668234000024 ], [ 25.616503134000141, 43.687747904000048 ], [ 25.637897176000138, 43.697282207000057 ], [ 25.653503458000102, 43.708134257000097 ], [ 25.671383504000062, 43.717358500000103 ], [ 25.73294793700012, 43.718781011000033 ], [ 25.739596395000092, 43.71893463100011 ], [ 25.781144246000082, 43.732008769000089 ], [ 25.804398641000091, 43.759914042000077 ], [ 25.806258993000085, 43.763660584000093 ], [ 25.839331909000094, 43.788439433000121 ], [ 25.869304240000133, 43.8008934530001 ], [ 25.916433146000116, 43.844379171000099 ], [ 25.924494670000115, 43.858616028000085 ], [ 25.93400313300009, 43.870320740000068 ], [ 26.054305868000085, 43.934322001000055 ], [ 26.061643921000098, 43.949773254000064 ], [ 26.079317260000096, 43.969048564000076 ], [ 26.116214233000107, 43.998865865000084 ], [ 26.150734091000089, 44.012405090000073 ], [ 26.231452678000039, 44.027494609000058 ], [ 26.310517619000109, 44.052609355000101 ], [ 26.332335498000106, 44.054926298000026 ], [ 26.41579067300006, 44.063788794000033 ], [ 26.614168335000102, 44.084855448000042 ], [ 26.647758016000125, 44.093382060000067 ], [ 26.667808471000086, 44.095087382000116 ], [ 26.677316935000079, 44.097051087000068 ], [ 26.697212361000084, 44.106094463000034 ], [ 26.708684530000085, 44.108109843000079 ], [ 26.753694702000104, 44.108109843000079 ], [ 26.789454793000033, 44.115964661000106 ], [ 26.884126017000142, 44.156530660000044 ], [ 27.001534871000075, 44.165108949000057 ], [ 27.027476441000118, 44.177046204000106 ], [ 27.100236857000084, 44.144490052000066 ], [ 27.20555342600008, 44.129245504000011 ], [ 27.226740763000066, 44.120718893000088 ], [ 27.251132039000083, 44.122372539000139 ], [ 27.252662458000145, 44.121518866000116 ], [ 27.269012085000043, 44.112398987000034 ], [ 27.264309530000048, 44.089764710000082 ], [ 27.285341838000079, 44.072453105000079 ], [ 27.341669149000069, 44.053074443000099 ], [ 27.353554728000091, 44.045271302000089 ], [ 27.372881714000073, 44.020724996000126 ], [ 27.383837117000041, 44.015092265000106 ], [ 27.57452315200004, 44.016280823000017 ], [ 27.633434285000135, 44.029768372000092 ], [ 27.656275268000059, 44.023877259000074 ], [ 27.676119019000055, 43.99354319300005 ], [ 27.682514976000078, 43.987256010000038 ], [ 27.72169763100004, 43.948739726000071 ], [ 27.787326701000069, 43.960418600000139 ], [ 27.856469767000135, 43.988633932000113 ], [ 27.912073608000071, 43.993336487000079 ], [ 27.912073608000071, 43.993233134000064 ], [ 27.935844767000106, 43.964397685000023 ], [ 27.981009969000098, 43.849340109000053 ], [ 28.014806355000076, 43.830038961000099 ], [ 28.221253703000059, 43.761981100000128 ], [ 28.434574015000123, 43.735212707000045 ], [ 28.578379754000082, 43.741278387000108 ], [ 28.576182488000086, 43.727525132000011 ], [ 28.573090040000125, 43.606146552000098 ], [ 28.575531446000042, 43.593329169000043 ], [ 28.58570397200009, 43.575832424000112 ], [ 28.595876498000052, 43.563706773 ], [ 28.602712436000076, 43.552720445000062 ], [ 28.603526238000086, 43.538153387000108 ], [ 28.594574415000039, 43.512518622000044 ], [ 28.578461134000065, 43.480780341000099 ], [ 28.560313347000061, 43.453843492000033 ], [ 28.545176629000082, 43.442531643000052 ], [ 28.53500410200013, 43.438625393000052 ], [ 28.488617384000065, 43.406439520000106 ], [ 28.479258660000113, 43.396795966000042 ], [ 28.473887566000087, 43.384263414000117 ], [ 28.473155144000145, 43.366848049000055 ], [ 28.459483269000117, 43.380682684000078 ], [ 28.414561394000089, 43.398871161000045 ], [ 28.404958530000044, 43.40468984600011 ], [ 28.393809441000116, 43.414292710000097 ], [ 28.368662957000112, 43.421779690000051 ], [ 28.321625196000099, 43.428290106000048 ], [ 28.299164259000094, 43.425034898 ], [ 28.261566602000102, 43.410956122000073 ], [ 28.243174675000063, 43.4077822940001 ], [ 28.177989129000139, 43.409979559000078 ], [ 28.157237175000063, 43.4077822940001 ], [ 28.11882571700005, 43.391546942000048 ], [ 28.091563347000147, 43.363959052000041 ], [ 28.087006056000092, 43.355251369000058 ], [ 28.031097852000045, 43.248968817000048 ], [ 28.017588738000086, 43.232733466000099 ], [ 28.000173373000109, 43.223211981000105 ], [ 27.931976759000094, 43.209784247000101 ], [ 27.920583530000016, 43.204046942000048 ], [ 27.91382897200009, 43.202337958000044 ], [ 27.903981967000078, 43.202337958000044 ], [ 27.903981967000078, 43.195502020000021 ], [ 27.938731316000116, 43.176499742000033 ], [ 27.945567254000139, 43.168850002000084 ], [ 27.944346550000034, 43.157131252000084 ], [ 27.92514082100007, 43.11359284100007 ], [ 27.911387566000144, 43.06517161700009 ], [ 27.904307488000086, 43.055853583000044 ], [ 27.895518425000034, 43.049261786000073 ], [ 27.887705925000034, 43.042141018000024 ], [ 27.883555535000085, 43.030991929000095 ], [ 27.885427280000073, 43.008612372000073 ], [ 27.900401238000086, 42.962876695000062 ], [ 27.903981967000078, 42.942287502000028 ], [ 27.898448113000143, 42.874660549000083 ], [ 27.903981967000078, 42.859686591000042 ], [ 27.883962436000104, 42.848374742000061 ], [ 27.883555535000085, 42.831935940000051 ], [ 27.891612175000034, 42.81037018400005 ], [ 27.897146030000044, 42.784002997000044 ], [ 27.897146030000044, 42.736232815000108 ], [ 27.894704623000109, 42.717474677000041 ], [ 27.892263217000078, 42.710516669000071 ], [ 27.841075066000116, 42.708319403000075 ], [ 27.787364129000139, 42.71515534100007 ], [ 27.743174675000091, 42.716050523000064 ], [ 27.73267662900011, 42.714504299000026 ], [ 27.725596550000063, 42.708482164000117 ], [ 27.719004754000082, 42.694566148000064 ], [ 27.715830925, 42.683742580000057 ], [ 27.716970248000052, 42.674505927000098 ], [ 27.724131707000083, 42.666978257000039 ], [ 27.739512566000116, 42.661078192000105 ], [ 27.71273847700013, 42.657660223000079 ], [ 27.669200066000087, 42.643703518000024 ], [ 27.646739129000082, 42.640570380000042 ], [ 27.62842858200014, 42.628973700000131 ], [ 27.630381707000083, 42.602728583000015 ], [ 27.641449415000125, 42.574774481000077 ], [ 27.65015709700009, 42.55805084800005 ], [ 27.634043816000116, 42.563706773000035 ], [ 27.540863477000102, 42.565497137000108 ], [ 27.51148522200009, 42.553045966000099 ], [ 27.498545769000089, 42.532456773000064 ], [ 27.491465691000116, 42.507757880000071 ], [ 27.48015384200005, 42.482896226000037 ], [ 27.462250196000099, 42.489569403000075 ], [ 27.452891472000147, 42.480129299000083 ], [ 27.453379754000139, 42.465236721000025 ], [ 27.465668165000096, 42.455633856000048 ], [ 27.462087436000047, 42.448716539000145 ], [ 27.461110873000052, 42.443548895000049 ], [ 27.465668165000096, 42.428290106000077 ], [ 27.46843509200005, 42.435777085000041 ], [ 27.469899936000019, 42.437079169000043 ], [ 27.469411655000044, 42.437201239000018 ], [ 27.465668165000096, 42.441351630000042 ], [ 27.472666863000086, 42.461859442000105 ], [ 27.503916863000143, 42.437323309000078 ], [ 27.514170769000089, 42.4351260440001 ], [ 27.526377800000063, 42.443670966000099 ], [ 27.534434441000087, 42.455267645000021 ], [ 27.544444207000083, 42.460028387000108 ], [ 27.562022332000112, 42.448187567000076 ], [ 27.571055535000113, 42.458482164000088 ], [ 27.57960045700014, 42.457220770000077 ], [ 27.587738477000045, 42.451483466000099 ], [ 27.59555097700013, 42.448187567000076 ], [ 27.609629754000082, 42.451157945000091 ], [ 27.619476759000094, 42.455877997000073 ], [ 27.629405144000117, 42.458644924000055 ], [ 27.643321160000085, 42.455633856000048 ], [ 27.64283287900011, 42.450506903000132 ], [ 27.641774936000047, 42.44953034100007 ], [ 27.639821811000104, 42.449774481000105 ], [ 27.636485222000061, 42.448187567000076 ], [ 27.642425977000102, 42.430894273000064 ], [ 27.65219160200013, 42.418524481000134 ], [ 27.667735222000118, 42.416083075000103 ], [ 27.69166100400011, 42.428290106000077 ], [ 27.693532748000081, 42.418890692000048 ], [ 27.699066602000073, 42.413885809000107 ], [ 27.707855665000068, 42.41274648600006 ], [ 27.719004754000082, 42.414699611000117 ], [ 27.719004754000082, 42.407212632000039 ], [ 27.713226759000094, 42.405951239000046 ], [ 27.698008660000113, 42.400376695000034 ], [ 27.705414259000122, 42.39061107 ], [ 27.709646030000044, 42.388128973000079 ], [ 27.719004754000082, 42.38670482 ], [ 27.709483269000089, 42.376776434000078 ], [ 27.708343946000127, 42.36310455900005 ], [ 27.71436608200014, 42.349188544000071 ], [ 27.725840691000087, 42.338934637000051 ], [ 27.740407748000109, 42.334295966000127 ], [ 27.752126498000109, 42.335394598000079 ], [ 27.764496290000039, 42.338324286000102 ], [ 27.780446811000047, 42.338934637000051 ], [ 27.780446811000047, 42.332709052000098 ], [ 27.774587436000104, 42.327215887000051 ], [ 27.774424675000063, 42.32172272300005 ], [ 27.779144727000045, 42.316310940000079 ], [ 27.787852410000141, 42.310980536000017 ], [ 27.762950066000087, 42.29559967700007 ], [ 27.751149936000047, 42.277044989000075 ], [ 27.755869988000143, 42.25849030200007 ], [ 27.780446811000047, 42.243353583000072 ], [ 27.776052280000073, 42.240668036000102 ], [ 27.775645379000053, 42.23965078300003 ], [ 27.77369225400011, 42.2359072940001 ], [ 27.809743686000076, 42.218410549000055 ], [ 27.815277540000096, 42.211981512000136 ], [ 27.819997592000107, 42.204657294000128 ], [ 27.83139082100007, 42.195013739000046 ], [ 27.844899936000047, 42.186102606000105 ], [ 27.856211785000113, 42.181301174000026 ], [ 27.854177280000101, 42.177923895000021 ], [ 27.85141035200013, 42.170111395000021 ], [ 27.84937584700009, 42.167059637000108 ], [ 27.879079623000024, 42.154242255000099 ], [ 27.886729363000143, 42.147365627000084 ], [ 27.903981967000078, 42.11981842700007 ], [ 27.957774285000113, 42.094305731000077 ], [ 27.964366082000083, 42.084621486000088 ], [ 27.972666863000057, 42.075384833000044 ], [ 27.986582879000139, 42.072088934000107 ], [ 27.982432488000114, 42.061102606000048 ], [ 27.987315300000091, 42.051743882000011 ], [ 27.996918165000068, 42.044012762000108 ], [ 28.007009311000019, 42.037909247000101 ], [ 28.00757897200009, 42.032904364000075 ], [ 28.00611412900011, 42.03156159100007 ], [ 28.00342858200014, 42.031480210000012 ], [ 28.000173373000109, 42.030462958000044 ], [ 28.011566602000073, 42.021389065000051 ], [ 28.01905358200014, 42.008449611000032 ], [ 28.020355665000125, 41.994574286000045 ], [ 28.013845248000052, 41.982652085000012 ], [ 28.016774936000076, 41.972560940000051 ], [ 28.016783431046946, 41.972531457013588 ], [ 27.981009969000098, 41.978524069000059 ], [ 27.965920451000102, 41.982141419000129 ], [ 27.91703454600011, 41.977903951000087 ], [ 27.903391968000108, 41.981056213000045 ], [ 27.876933634000096, 41.990719707000068 ], [ 27.852232300000111, 41.995448100000061 ], [ 27.843033895000104, 41.995758159000047 ], [ 27.824016968000137, 41.99348439500011 ], [ 27.819934529000108, 41.994698792000037 ], [ 27.815955445000043, 41.995138042000065 ], [ 27.81192468200004, 41.994698792000037 ], [ 27.807997274000087, 41.99348439500011 ], [ 27.804948364000069, 41.983433329000093 ], [ 27.804896687000053, 41.969894104000105 ], [ 27.802726278000137, 41.960049744000031 ], [ 27.818280884000075, 41.952866720000088 ], [ 27.815335327000071, 41.94679473900004 ], [ 27.802829631000066, 41.943074036000013 ], [ 27.789807170000131, 41.942686463000115 ], [ 27.776164592000043, 41.946122945000042 ], [ 27.723971395000063, 41.967594503000072 ], [ 27.687074422000109, 41.968602193000066 ], [ 27.609301392000106, 41.953486837000042 ], [ 27.606872599000042, 41.943513285000051 ], [ 27.603358602000071, 41.938629863000102 ], [ 27.598087606000064, 41.938604025000103 ], [ 27.590542847000108, 41.942893169000058 ], [ 27.582377970000067, 41.934883322000076 ], [ 27.572197713, 41.929844869000107 ], [ 27.55075199400008, 41.924212138000087 ], [ 27.55209558100006, 41.921835022000039 ], [ 27.554886108000119, 41.920336405000029 ], [ 27.557935018000137, 41.919070334000082 ], [ 27.560673869000084, 41.917675070000115 ], [ 27.55746993000011, 41.915504659000106 ], [ 27.55126875800002, 41.913101705000059 ], [ 27.548891642000086, 41.91087961900007 ], [ 27.56274092600006, 41.906435445000056 ], [ 27.546411173000109, 41.901164449000134 ], [ 27.533182007000107, 41.908063253000108 ], [ 27.509462524000071, 41.933177999000122 ], [ 27.494321330000048, 41.942841492000042 ], [ 27.420837443000096, 41.973718160000033 ], [ 27.396859578000061, 41.989324443000072 ], [ 27.374845418000092, 42.008703105000052 ], [ 27.332470744000091, 42.057433981000088 ], [ 27.305288940000082, 42.077587789000063 ], [ 27.273352906000099, 42.091747132000108 ], [ 27.238212931000078, 42.097922465000096 ], [ 27.216405477000137, 42.095622864000063 ], [ 27.203796427000015, 42.088129781000134 ], [ 27.181575561000074, 42.06588307700008 ], [ 27.178991740000072, 42.061878154000084 ], [ 27.178164917000061, 42.058364156000039 ], [ 27.173824097000079, 42.057072246000075 ], [ 27.149587849000085, 42.061826478000086 ], [ 27.127211954000103, 42.062575786000082 ], [ 27.116049845000077, 42.061826478000086 ], [ 27.100650268000095, 42.071102397000089 ], [ 27.083700398000076, 42.078414612000074 ], [ 27.065510294000035, 42.082703756000058 ], [ 27.047903041000097, 42.082919649000075 ], [ 27.046545044000084, 42.082936300000114 ], [ 27.022618856000094, 42.073892924000063 ], [ 27.000397990000067, 42.042809550000101 ], [ 26.981071004000086, 42.032861837000013 ], [ 26.967170044000113, 42.028495179000117 ], [ 26.958230021000105, 42.018237406000139 ], [ 26.950065144000064, 42.006170960000048 ], [ 26.938903035000038, 41.996223247000046 ], [ 26.930221395000075, 41.994517924000093 ], [ 26.911462850000078, 41.996791687000012 ], [ 26.901075887000076, 41.99348439500011 ], [ 26.890327189000061, 41.985422873000118 ], [ 26.881128784000055, 41.985526225000058 ], [ 26.871723674000094, 41.988135885000048 ], [ 26.860768269000118, 41.987903341000106 ], [ 26.850019572000093, 41.982864889000041 ], [ 26.837899181000097, 41.975219503000091 ], [ 26.827695353000109, 41.968783061000096 ], [ 26.819427124000072, 41.965656636000062 ], [ 26.808420044000087, 41.967878724000059 ], [ 26.78991988100006, 41.979945170000036 ], [ 26.780566447000126, 41.983433329000093 ], [ 26.768577515000061, 41.980771994000065 ], [ 26.746976766000103, 41.964493917000141 ], [ 26.736744833000103, 41.958964539000135 ], [ 26.717572876000105, 41.957310893000084 ], [ 26.62357344600008, 41.969041444000084 ], [ 26.605693400000092, 41.967413636000032 ], [ 26.589467, 41.958757834000068 ], [ 26.560631552000075, 41.935684306000013 ], [ 26.553293497000084, 41.931576030000087 ], [ 26.547092326000097, 41.926899312000018 ], [ 26.542958211000069, 41.920362244000046 ], [ 26.544715210000049, 41.916434835000075 ], [ 26.556807495000044, 41.910750427000039 ], [ 26.559804728000131, 41.907339783000111 ], [ 26.55897790500012, 41.90173289000009 ], [ 26.554740438000067, 41.892947897000084 ], [ 26.553603557000145, 41.887702739000076 ], [ 26.552894853000026, 41.881643325000084 ], [ 26.552053263000118, 41.874447734000057 ], [ 26.547815796000094, 41.856283468000129 ], [ 26.539547567000028, 41.837990011000073 ], [ 26.526111694000093, 41.824244080000113 ], [ 26.478362671000099, 41.813288676000042 ], [ 26.37552657100008, 41.816621806000057 ], [ 26.334185425000044, 41.789543355 ], [ 26.320026082000084, 41.765462138000146 ], [ 26.316305379000084, 41.74375803600006 ], [ 26.323230021000143, 41.7236817430001 ], [ 26.333358602000118, 41.71303639700011 ], [ 26.294911336000069, 41.710323385000066 ], [ 26.273930705000055, 41.714896749000019 ], [ 26.261011597000049, 41.723061626000032 ], [ 26.234449910000137, 41.745825094000026 ], [ 26.226181681000099, 41.749674988000066 ], [ 26.2118156330001, 41.750475973000079 ], [ 26.189904826000117, 41.734688823000084 ], [ 26.13512780800005, 41.733396912000046 ], [ 26.108359415000081, 41.72789337200004 ], [ 26.081487671000076, 41.71151194300009 ], [ 26.07404626500005, 41.709134827000042 ], [ 26.067224975000101, 41.708850606000084 ], [ 26.06050704000009, 41.707300314000065 ], [ 26.053685750000113, 41.701512553000072 ], [ 26.048104695000092, 41.689084371 ], [ 26.047484578000137, 41.674614970000079 ], [ 26.0502751060001, 41.660455627000033 ], [ 26.055029337000093, 41.64875091600004 ], [ 26.05948958500008, 41.643776770000073 ], [ 26.066914917000105, 41.635495911000135 ], [ 26.08117761200009, 41.63045745900007 ], [ 26.095233602000121, 41.628390401000019 ], [ 26.106705770000133, 41.624282125000093 ], [ 26.115284057000054, 41.616634013000123 ], [ 26.121071818000132, 41.60821075500013 ], [ 26.130270223000139, 41.582682597000087 ], [ 26.130993693000022, 41.575137838000046 ], [ 26.129443400000099, 41.559376527000069 ], [ 26.13120039800009, 41.552658590000135 ], [ 26.136781453000111, 41.549196269000106 ], [ 26.15249108900008, 41.547025859000115 ], [ 26.158072144000073, 41.542323303000046 ], [ 26.163136434000052, 41.529145813000042 ], [ 26.164480021000116, 41.517725322000047 ], [ 26.162929728000108, 41.506459860000092 ], [ 26.159312378000038, 41.493799134000142 ], [ 26.147633504000055, 41.484755758000091 ], [ 26.145876506000064, 41.478037822000061 ], [ 26.156211792000079, 41.460416158000072 ], [ 26.160449260000121, 41.455868632000033 ], [ 26.174298543000106, 41.445998434000046 ], [ 26.177399129000037, 41.439952291000111 ], [ 26.175642130000142, 41.431890767000112 ], [ 26.170577840000078, 41.429565328000081 ], [ 26.164273316000077, 41.427860006000031 ], [ 26.159002319000138, 41.421813863000096 ], [ 26.147840210000112, 41.396905823000111 ], [ 26.132440633000016, 41.371532695000042 ], [ 26.120865112000075, 41.357786764000082 ], [ 26.114663941000089, 41.355202942000091 ], [ 26.107325887000087, 41.356598206000058 ], [ 26.02185306800007, 41.341663717000102 ], [ 26.008933960000064, 41.336806132000078 ], [ 25.982268921000127, 41.323266907000118 ], [ 25.959634643000072, 41.314998678000052 ], [ 25.948575887000061, 41.313965150000087 ], [ 25.935140015000115, 41.31592885400002 ], [ 25.921187378000127, 41.316032206000045 ], [ 25.896279338000056, 41.306265361000101 ], [ 25.882016642000082, 41.304043274000094 ], [ 25.862689657000118, 41.310089417000114 ], [ 25.833337443000062, 41.334635722000087 ], [ 25.811013224000078, 41.341043600000035 ], [ 25.800781290000117, 41.338046366000128 ], [ 25.763470906000066, 41.319029440000065 ], [ 25.72874434400012, 41.317065735000114 ], [ 25.71747888200008, 41.314120178000024 ], [ 25.705179891000029, 41.307298889000066 ], [ 25.698048543000084, 41.301924540000101 ], [ 25.691227255000058, 41.298410543000045 ], [ 25.679961792000086, 41.297170309000109 ], [ 25.670453328000093, 41.299185689000069 ], [ 25.649576050000121, 41.30848744700009 ], [ 25.639757528000047, 41.311071269000081 ], [ 25.551494182000084, 41.315670471000146 ], [ 25.537954956000107, 41.312208150000089 ], [ 25.530203491000094, 41.30275136400013 ], [ 25.523692261000122, 41.29169260700013 ], [ 25.514907267000126, 41.28347605400009 ], [ 25.50508874500008, 41.280582174000102 ], [ 25.497337280000067, 41.281202291000085 ], [ 25.489482462000126, 41.283062643000079 ], [ 25.479095500000113, 41.283786112000087 ], [ 25.453463989000056, 41.280427144000072 ], [ 25.285722290000052, 41.239396057000107 ], [ 25.262261190000089, 41.238104147000058 ], [ 25.239110148000094, 41.240894674000032 ], [ 25.219679810000116, 41.249731344000026 ], [ 25.177098430000058, 41.293863017000035 ], [ 25.157874797000119, 41.30611033200006 ], [ 25.153847445000054, 41.307535008000059 ], [ 25.116533650000093, 41.320734762000114 ], [ 25.112606242000112, 41.324145406000042 ], [ 25.104854777000128, 41.334067282000035 ], [ 25.101857544000097, 41.336651103000037 ], [ 25.096793254000119, 41.336702779000063 ], [ 25.080360148000068, 41.334067282000035 ], [ 24.916959269000074, 41.386363831000068 ], [ 24.88636682200007, 41.400626526000025 ], [ 24.872930949000107, 41.401866761000065 ], [ 24.863009074000104, 41.400316468000142 ], [ 24.842131795000029, 41.394735413000035 ], [ 24.803271118000083, 41.392668355000069 ], [ 24.800170532000038, 41.379335836000052 ], [ 24.802857706000054, 41.361920878 ], [ 24.794279419000134, 41.34739980100008 ], [ 24.774435669000127, 41.34807159500005 ], [ 24.752628215000101, 41.362747701000046 ], [ 24.718728475000091, 41.395717265000087 ], [ 24.69919478300011, 41.408946432000079 ], [ 24.680901326000111, 41.415509338000078 ], [ 24.661264282000104, 41.417679749000058 ], [ 24.638216594000113, 41.417679749000058 ], [ 24.644314413000075, 41.42765330000006 ], [ 24.609484497000039, 41.427239888000059 ], [ 24.595841919000122, 41.429772034000052 ], [ 24.58044234200014, 41.440520732000067 ], [ 24.579718872000029, 41.444189759000068 ], [ 24.58219934100012, 41.455248515000079 ], [ 24.581062459000094, 41.460209453000118 ], [ 24.577238403000052, 41.463568421000048 ], [ 24.567729939000088, 41.468115947000058 ], [ 24.564112589000104, 41.471061504000062 ], [ 24.558738241000128, 41.476849264000037 ], [ 24.553570598000135, 41.480776673 ], [ 24.549436483000108, 41.485427552000061 ], [ 24.54654260300012, 41.493644104000111 ], [ 24.543338664000146, 41.521342672000031 ], [ 24.53093632000008, 41.54754262300014 ], [ 24.510162395000123, 41.561650289000085 ], [ 24.481326945000092, 41.553227031000091 ], [ 24.45920943200008, 41.549506328000092 ], [ 24.438848917000144, 41.527698873000048 ], [ 24.423966105000119, 41.525218405000089 ], [ 24.40288212100009, 41.527853902000089 ], [ 24.387482544000108, 41.526665345000083 ], [ 24.353892863000084, 41.519120586000042 ], [ 24.345004517000064, 41.518397115000113 ], [ 24.318236124000094, 41.520774231000075 ], [ 24.309554484000046, 41.519792379000108 ], [ 24.303043254000073, 41.516950175000034 ], [ 24.296118612000072, 41.51524485300007 ], [ 24.286816854000051, 41.517621969000118 ], [ 24.285059855000071, 41.523151347000123 ], [ 24.287333618000105, 41.531626282000019 ], [ 24.286403442000051, 41.540359599000084 ], [ 24.26686975100003, 41.549764710000062 ], [ 24.250746704000051, 41.563458964000063 ], [ 24.23328007, 41.56180531800004 ], [ 24.214366496000082, 41.555759176000066 ], [ 24.197697918000074, 41.547710635000101 ], [ 24.196279744000066, 41.547025859000115 ], [ 24.18160363800007, 41.537362366000082 ], [ 24.177469523000127, 41.531006165000065 ], [ 24.173128703000145, 41.515296529000096 ], [ 24.170234823000072, 41.511575826000069 ], [ 24.162793416000056, 41.512040914000096 ], [ 24.158452596000075, 41.516330058000079 ], [ 24.154008423000079, 41.52211781800014 ], [ 24.146256958000066, 41.526768697000108 ], [ 24.116491333000084, 41.533383280000095 ], [ 24.076597127000127, 41.536018779000102 ], [ 24.047348267000075, 41.525735169000114 ], [ 24.049828736000052, 41.493644104000111 ], [ 24.052515910000096, 41.471474915000073 ], [ 24.051999146000043, 41.462999980000063 ], [ 24.045901327000081, 41.455455221000108 ], [ 24.034739217000066, 41.451321106000108 ], [ 24.022853637000139, 41.453078105000088 ], [ 24.000736125000117, 41.464136861000071 ], [ 23.997118774000057, 41.457005514000059 ], [ 23.992364542000132, 41.454628398000096 ], [ 23.986886841000057, 41.453698222000043 ], [ 23.981305786000036, 41.450856019000071 ], [ 23.964665975000116, 41.438350322000076 ], [ 23.949886515000117, 41.437575175000063 ], [ 23.902860962000119, 41.463516745000021 ], [ 23.894799438000035, 41.464343567000043 ], [ 23.867720988000087, 41.445481669000117 ], [ 23.851597941000108, 41.439590556000013 ], [ 23.83092736800009, 41.43561147000014 ], [ 23.809740031000047, 41.433802795000133 ], [ 23.792066691000116, 41.434474589000018 ], [ 23.777080526000049, 41.429048564000141 ], [ 23.754446248000107, 41.400678202000051 ], [ 23.738219848000085, 41.397474264000067 ], [ 23.705353638000076, 41.403158671000114 ], [ 23.672177368000064, 41.402951965000057 ], [ 23.6528503830001, 41.397629293000108 ], [ 23.627735637000086, 41.378509014000116 ], [ 23.624846740000066, 41.377093845000076 ], [ 23.612439412000128, 41.371015931000073 ], [ 23.578953084000119, 41.37199778300004 ], [ 23.513013957000112, 41.397732646000037 ], [ 23.414518677000046, 41.399903056000113 ], [ 23.395501750000079, 41.39525217700006 ], [ 23.36511600700004, 41.378560690000114 ], [ 23.34723596200007, 41.371222636000141 ], [ 23.326048625000112, 41.369310608000035 ], [ 23.315609985000066, 41.376855367000076 ], [ 23.306204875000105, 41.388379212000103 ], [ 23.287704712000078, 41.398197734000064 ], [ 23.269928019000048, 41.397267558000124 ], [ 23.246570272000099, 41.389722799000054 ], [ 23.224246053000059, 41.379025778000056 ], [ 23.209776652000102, 41.368587138000123 ], [ 23.206366007000099, 41.36093902600004 ], [ 23.204815714000063, 41.342697245000096 ], [ 23.19954471900013, 41.332982076000064 ], [ 23.190656372000035, 41.326057435000081 ], [ 23.179700968000134, 41.321354879000097 ], [ 23.157170043000121, 41.316342265000031 ], [ 23.115208781000035, 41.312673238000031 ], [ 22.916977986000063, 41.335772604000113 ], [ 22.94085249800014, 41.349828593000041 ], [ 22.944469849000114, 41.368432109000082 ], [ 22.939405558000146, 41.389412740000068 ], [ 22.937338501000085, 41.410755107000085 ], [ 22.940542440000058, 41.416904602000045 ], [ 22.952117960000095, 41.427704976000086 ], [ 22.954598429000072, 41.43240753200007 ], [ 22.953358195000135, 41.438195293000035 ], [ 22.947570435000074, 41.448375549000104 ], [ 22.946226848000094, 41.453233135000119 ], [ 22.943599338000126, 41.523201176000072 ], [ 22.943022909000035, 41.538550924000106 ], [ 22.947880493000071, 41.555139059000112 ], [ 22.948707316000082, 41.560978495000086 ], [ 22.946433553000077, 41.567748108000046 ], [ 22.936925090000074, 41.578910218000061 ], [ 22.9337211510001, 41.584594625000108 ], [ 22.932067505000049, 41.597952983000141 ], [ 22.932997681000103, 41.612344869000054 ], [ 22.936098266000045, 41.626168315000115 ], [ 22.94085249800014, 41.637640483000041 ], [ 22.945813436000094, 41.641076966000071 ], [ 22.961523071000073, 41.644487611000073 ], [ 22.967000773000052, 41.647045594000076 ], [ 22.970101359000097, 41.65203236900004 ], [ 22.976612590000059, 41.66655344600008 ], [ 22.985434528000098, 41.677197757000073 ], [ 22.998626750000142, 41.693115133000106 ], [ 23.00958215300011, 41.716369528000115 ], [ 23.008858683000113, 41.739933980000018 ], [ 22.991185344000115, 41.760992127000037 ], [ 22.98053999800004, 41.764738668000064 ], [ 22.956872192000105, 41.765668844000118 ], [ 22.945916788000119, 41.769337870000101 ], [ 22.939715617000047, 41.776701762000101 ], [ 22.918321573000128, 41.814348043000052 ], [ 22.907676229000117, 41.848583679000058 ], [ 22.901371704000013, 41.860417582000053 ], [ 22.896720825000045, 41.864448344000067 ], [ 22.88504195200008, 41.869150899000033 ], [ 22.88208830500011, 41.871618275000088 ], [ 22.880804484000123, 41.872690735000077 ], [ 22.878220662000047, 41.88026133300005 ], [ 22.878634073000057, 41.895014954000146 ], [ 22.877083781000124, 41.902042949000077 ], [ 22.866335083000109, 41.924883932000085 ], [ 22.858893677000083, 41.947879944000107 ], [ 22.857136678000103, 41.971883647000141 ], [ 22.85475956200014, 41.98263234500007 ], [ 22.846904744000113, 41.99348439500011 ], [ 22.846594686000032, 41.993639425000055 ], [ 22.845767863000106, 42.006868592000046 ], [ 22.845621159000132, 42.007407729000079 ], [ 22.843700806000044, 42.014465027000114 ], [ 22.838223104000065, 42.019477641000066 ], [ 22.82695764200011, 42.025084534000086 ], [ 22.821273234000046, 42.025368754000084 ], [ 22.805977010000106, 42.021389669000087 ], [ 22.79894901500009, 42.021234640000046 ], [ 22.791094198000053, 42.025808004000083 ], [ 22.787683553000136, 42.03257761600014 ], [ 22.785306437000088, 42.0391405230001 ], [ 22.780862264000064, 42.043171286000103 ], [ 22.770630330000103, 42.043998108000039 ], [ 22.725051717000099, 42.04247365400002 ], [ 22.718437134000112, 42.044463196000066 ], [ 22.713992961000116, 42.048623149000093 ], [ 22.710272258000089, 42.052989808000092 ], [ 22.705724731000146, 42.055935364000078 ], [ 22.675855753000036, 42.060612081000045 ], [ 22.627176665000036, 42.079126592000108 ], [ 22.617771443000066, 42.082703756000058 ], [ 22.531058390000112, 42.129109193000062 ], [ 22.510181112000026, 42.144792990000042 ], [ 22.506938534000142, 42.148927276000052 ], [ 22.494678182000115, 42.16455922500009 ], [ 22.481449015000123, 42.193317160000106 ], [ 22.443621867000047, 42.214426982000134 ], [ 22.345023234000053, 42.31343902600014 ], [ 22.364143514000148, 42.320983785000095 ], [ 22.405794718000067, 42.321552226000051 ], [ 22.423984822000108, 42.325893047000136 ], [ 22.438454223000036, 42.340052388000089 ], [ 22.454370565000147, 42.376768494000146 ], [ 22.46977014100014, 42.391702983000101 ], [ 22.485066365000108, 42.397154846000092 ], [ 22.497572062000103, 42.399196065000041 ], [ 22.508837525000075, 42.40493215 ], [ 22.519482870000047, 42.420926005000041 ], [ 22.533125448000078, 42.45759043400011 ], [ 22.536536092000091, 42.478390198000056 ], [ 22.532505330000106, 42.493402202000141 ], [ 22.532505330000106, 42.493557231000096 ], [ 22.524857218000108, 42.507664897000012 ], [ 22.512144816000074, 42.51918874200004 ], [ 22.481449015000123, 42.535621846000112 ], [ 22.429669230000059, 42.571407776000029 ], [ 22.425328410000077, 42.572854716000023 ], [ 22.428842407000047, 42.592775981000045 ], [ 22.441318219000038, 42.632891463000107 ], [ 22.444552042000083, 42.64328969400006 ], [ 22.449202921000051, 42.667965190000075 ], [ 22.442071573000106, 42.681685282000103 ], [ 22.468116496000107, 42.718323873000145 ], [ 22.481449015000123, 42.727677307000107 ], [ 22.482585897000035, 42.730674541000013 ], [ 22.482895955000117, 42.733775126000069 ], [ 22.482585897000035, 42.736824036000087 ], [ 22.481449015000123, 42.739821269000089 ], [ 22.46656620300007, 42.748528748000069 ], [ 22.453130331000125, 42.763592428000067 ], [ 22.429359172000062, 42.806122131000109 ], [ 22.425845174000102, 42.80984283500004 ], [ 22.427395467000053, 42.813615214000038 ], [ 22.430446174000025, 42.81707659300011 ], [ 22.436800578000089, 42.82428639800014 ], [ 22.445482218000052, 42.830177511000045 ], [ 22.470907023000052, 42.840125224000047 ], [ 22.481449015000123, 42.846739807000063 ], [ 22.497055298000078, 42.86441314700005 ], [ 22.506046997000112, 42.870123393000085 ], [ 22.519792928000129, 42.870355937000056 ], [ 22.537569621000074, 42.868340556000106 ], [ 22.544494262000057, 42.871389466000039 ], [ 22.544785162000068, 42.871706438000075 ], [ 22.549971965000054, 42.877358093000055 ], [ 22.563614542000039, 42.884282735000056 ], [ 22.590899699000147, 42.886892395000046 ], [ 22.666243937000047, 42.871932068000092 ], [ 22.696629680000086, 42.877409770000071 ], [ 22.727015422000136, 42.886892395000046 ], [ 22.738797648000059, 42.897382711 ], [ 22.73957861800011, 42.898857543000105 ], [ 22.74551558400006, 42.910069275000069 ], [ 22.763188924000076, 42.958645121000046 ], [ 22.769390096000052, 42.971280009000083 ], [ 22.776418091000068, 42.979729106000093 ], [ 22.788096964000147, 42.984896749000086 ], [ 22.815795532000067, 42.989702657000095 ], [ 22.828817993000115, 42.993449198000093 ], [ 22.828921346000129, 42.993449198000093 ], [ 22.829024699000058, 42.993500875000024 ], [ 22.829024699000058, 42.993655905000054 ], [ 22.842253865000146, 43.007505188000039 ], [ 22.884215128000051, 43.036650696000038 ], [ 22.889486124000086, 43.044376323000051 ], [ 22.896720825000045, 43.062721457000123 ], [ 22.901681763000113, 43.069749451000035 ], [ 22.910156698000094, 43.075278829000041 ], [ 22.927106568000113, 43.081144105000135 ], [ 22.935271443000119, 43.085562439000029 ], [ 22.955631958000055, 43.108274232000014 ], [ 22.974028768000068, 43.141192118000049 ], [ 22.984570760000111, 43.174626771000135 ], [ 22.982901935000143, 43.187317919000094 ], [ 22.981366822000069, 43.19899220800005 ], [ 22.964727010000047, 43.20441823400003 ], [ 22.915531046000069, 43.212247213000069 ], [ 22.897754353000039, 43.220334574000049 ], [ 22.88380171700004, 43.23059234700014 ], [ 22.857343384000046, 43.256947327 ], [ 22.833158814000086, 43.274646505000106 ], [ 22.82695764200011, 43.28139027900005 ], [ 22.823857056000065, 43.289296773000103 ], [ 22.820756469000116, 43.307538554000047 ], [ 22.817139119000046, 43.315496724000099 ], [ 22.804530070000112, 43.328984274000078 ], [ 22.733009888000083, 43.381513367000139 ], [ 22.724343132000087, 43.386060131000107 ], [ 22.719367309000063, 43.388670553000082 ], [ 22.702934204000087, 43.394044902000047 ], [ 22.693219035000055, 43.394871725000087 ], [ 22.674202108000088, 43.39414825500009 ], [ 22.664693644000096, 43.396732077000081 ], [ 22.658926066000106, 43.401295034000071 ], [ 22.656528768000101, 43.403191631000141 ], [ 22.645366658000057, 43.420296529000098 ], [ 22.63782190000012, 43.426368511000135 ], [ 22.628520141000081, 43.428254700000139 ], [ 22.606919393000112, 43.42740203800011 ], [ 22.596274048000112, 43.42915903800008 ], [ 22.586765584000119, 43.434430033000126 ], [ 22.572709595000106, 43.448150127000048 ], [ 22.565784953000048, 43.453343608000068 ], [ 22.53260868400011, 43.464841614000079 ], [ 22.518862752000075, 43.474246725000057 ], [ 22.509354288000111, 43.49334116600005 ], [ 22.49064742000013, 43.540883485000052 ], [ 22.478451783000111, 43.559228617000116 ], [ 22.477624959000082, 43.564163717000071 ], [ 22.478658488000065, 43.569176331000051 ], [ 22.481449015000123, 43.574111430000073 ], [ 22.48268925000005, 43.576695252000093 ], [ 22.483102661000061, 43.579279073000095 ], [ 22.48268925000005, 43.581733704000044 ], [ 22.481449015000123, 43.584136658 ], [ 22.478141723000107, 43.587573141000036 ], [ 22.477108194000039, 43.591293844000063 ], [ 22.478141723000107, 43.594911194000133 ], [ 22.481449015000123, 43.598528545000107 ], [ 22.481759074000109, 43.598941956000033 ], [ 22.481965780000053, 43.599458720000058 ], [ 22.481759074000109, 43.599975485000101 ], [ 22.481449015000123, 43.600647278000082 ], [ 22.47380090300004, 43.612997946000036 ], [ 22.472870728000089, 43.635942282000087 ], [ 22.466256144000084, 43.649119772000063 ], [ 22.455920858000098, 43.656406149000134 ], [ 22.426465291000085, 43.668214213000056 ], [ 22.41395959500008, 43.676663310000038 ], [ 22.404864543000116, 43.68717946400011 ], [ 22.396906372000046, 43.699400940000118 ], [ 22.390498495000116, 43.712449240000069 ], [ 22.386054321000103, 43.725497538000099 ], [ 22.385847616000063, 43.733817444000067 ], [ 22.389568319000148, 43.750508932000116 ], [ 22.38853479000008, 43.758286235000128 ], [ 22.362593221000026, 43.780842998000139 ], [ 22.349467407000077, 43.807921448000116 ], [ 22.354738403000084, 43.829703065000018 ], [ 22.367554159000065, 43.852750753000095 ], [ 22.377062622000068, 43.883524068000042 ], [ 22.379026326000087, 43.913496399000081 ], [ 22.382023560000107, 43.918560690000078 ], [ 22.39194543500011, 43.931867371000095 ], [ 22.394529256000112, 43.936337382 ], [ 22.396803019000117, 43.951943665000044 ], [ 22.397319783000057, 43.980934144000116 ], [ 22.399593546000091, 43.993336487000079 ], [ 22.411789184000099, 44.006927389000083 ], [ 22.434320109000112, 44.013955384000099 ], [ 22.465885257000139, 44.017624140000066 ], [ 22.481449015000123, 44.019433085000088 ], [ 22.503669882000054, 44.019898173000087 ], [ 22.514935343000019, 44.030285136000117 ], [ 22.522583455000103, 44.044702861000133 ], [ 22.534158976000128, 44.057156881000111 ], [ 22.554622844000107, 44.062427877000061 ], [ 22.575190064000083, 44.061394348000078 ], [ 22.592966757000113, 44.063926494000071 ], [ 22.604748982000018, 44.079377747000052 ], [ 22.604645630000107, 44.088162740000143 ], [ 22.598134399000116, 44.109298401000103 ], [ 22.597100871000038, 44.119065247000037 ], [ 22.599064575000085, 44.130330709000106 ], [ 22.609399861000099, 44.159941305000046 ], [ 22.607952921000106, 44.159992981000073 ], [ 22.605989217000058, 44.163145244000106 ], [ 22.604852335000146, 44.168467916000083 ], [ 22.606195923000115, 44.174565735000044 ], [ 22.608573039000078, 44.175857646000082 ], [ 22.624799438000082, 44.189396872000145 ], [ 22.63999231000011, 44.207328593000028 ], [ 22.648777303000088, 44.213994853000145 ], [ 22.691640373000098, 44.228434539 ], [ 22.906435995000095, 44.122889303000079 ], [ 22.942609497000035, 44.111468811000094 ], [ 22.988084757000081, 44.10702463800007 ], [ 23.008306709000095, 44.100446413000071 ], [ 23.03097619600004, 44.093072002000071 ], [ 23.040071248000089, 44.062324524000132 ], [ 23.023018025000084, 44.031628723000097 ], [ 22.988084757000081, 44.017676087000098 ], [ 22.96627730300014, 44.015557353000105 ], [ 22.926486450000141, 44.006152243000059 ], [ 22.905815877000123, 44.003981832000079 ], [ 22.885868774000102, 43.994525045000103 ], [ 22.874706665000076, 43.972045797000106 ], [ 22.850522095000088, 43.896985779 ], [ 22.851038859000141, 43.874351502000053 ], [ 22.863441203, 43.855412089000112 ], [ 22.888762655000079, 43.839521587000092 ], [ 22.919561808000054, 43.834224752000068 ] ]
;
lon lat name dim1 dim2 dim3
22.9811111 42.8497222 aldomirovci, slivnica 0.0470588 0.764706 0.239216
23.217 43.7 asparuhovo, lom 0.372549 0.843137 0.686275
27.8833333 43.1666667 asparuhovo, prov 0.960784 0.886275 0.647059
23.6833333 41.95 babjak, razl 0.568627 0.694118 0.976471
24.867 41.95 bachkovo, asgr 0.627451 0.411765 0.505882
22.76083 42.28028 bagrenci, kjust 0.188235 0.752941 0.643137
27.733 42.1 balgari, carev 0.615686 0.580392 0.670588
22.7286 42.7222 banishte, brezn 0.054902 0.784314 0.278431
23.5 41.8394444 bansko, razl 0.580392 0.709804 0.976471
24.4833333 43.25 beglezh, luk 0.737255 0.870588 0.780392
25.1166667 43.65 belene, svisht 0.87451 0.952941 0.607843
23.2333333 41.65 belica, razl 0.568627 0.745098 0.952941
23.08333 41.98333 bistrica, blgr 0.309804 0.760784 0.807843
22.9622222 42.6166667 bogdanov dol, pern 0.282353 0.8 0.611765
26.733 42.3 borisovo, elh 0.886275 1 0.784314
23.3780556 43.0325 bov, svog 0.27451 0.737255 0.698039
27.4333333 42.05 brashljan, mtarn 0.65098 0.52549 0.643137
23.13333 42.9666 buchin prohod, god 0.258824 0.792157 0.592157
23.1 41.63334 caparevo, sand 0.388235 0.831373 0.929412
22.53028 42.34833 cerovica, kjust 0.258824 0.780392 0.721569
24.683 41.733 chepelare, asgr 0.592157 0.196078 0.490196
24.4 42.267 chernogorovo, paz 0.607843 0.85098 0.764706
27.65 42.45 chernomorec, bs 0.894118 0.811765 0.74902
23.03333 42.41667 chukovec, radom 0.180392 0.756863 0.643137
24.28333 43.15 dermanci, luk 0.529412 0.807843 0.792157
24.1666667 43.3166667 devenci, luk 0.588235 0.811765 0.768627
25.71667 41.35 devesilica, krgr 0.568627 0.301961 0.482353
25.483 43.217 dichin, vtarn 0.952941 0.921569 0.572549
25.7 41.8833333 dinevo, hask 0.784314 0.494118 0.658824
22.9136111 43.2847222 diva slatina, mont 0.14902 0.784314 0.313725
26.9333333 43.2333333 divdjadovo, shum 0.968627 0.866667 0.658824
23.4833333 41.9666667 dobarsko, razl 0.596078 0.717647 1
26.31667 42.15 dobroselec, topgr 0.886275 0.968627 0.721569
23.2833333 42.8166667 dobroslavci, sof 0.247059 0.772549 0.6
23.683 41.583 dobrotino, gd 0.776471 0.615686 0.952941
23.8833333 43.1833333 dolna beshovica, vrach 0.407843 0.811765 0.666667
23.117 42.433 dolna dikanja, radom 0.215686 0.772549 0.686275
22.5255556 42.6705556 dolna melna, tran 0.121569 0.807843 0.223529
23.017 43.55 dolna riksa, mont 0.376471 0.854902 0.709804
25.7 43.5166667 dolna srudena, bel 0.921569 0.901961 0.6
23.5 42.7 dolni bogrov, sof 0.337255 0.737255 0.729412
24.2833 42.3667 dolno levski, pan 0.552941 0.901961 0.694118
24.13333 42.03333 dorkovo, velgr 0.580392 0.439216 0.490196
26.1583333 41.5022222 drabishna, ivgr 0.792157 0.427451 0.65098
25.733 43.067 dragizhevo, vtarn 0.901961 0.890196 0.627451
26.5666667 42.6166667 dragodanovo, sliv 0.890196 0.901961 0.756863
26.867 43.117 dragoevo, presl 0.992157 0.894118 0.682353
22.5 42.61666 dragojchinci, kjust 0.0784314 0.764706 0.27451
22.745 42.623 elov dol, pk 0.164706 0.792157 0.482353
25.4 42.6666667 enina, kaz 0.909804 0.870588 0.654902
24.7166667 41.6333333 ezerovo, parvom 0.658824 0.65098 0.639216
23.6 43.517 furen, vrach 0.380392 0.8 0.662745
23.9166667 43.3166667 gabare, bslat 0.462745 0.686275 0.596078
23.633 42.583 gabra, elpel 0.298039 0.772549 0.74902
24.283 43.01 galata, tetev 0.627451 0.819608 0.74902
25.5166667 42.9833333 ganchovec, drjan 0.878431 0.886275 0.698039
23.81667 41.6 garmen, gd 0.686275 0.533333 0.666667
26.91 44.117 garvan, sil 0.952941 0.898039 0.647059
23 41.45 gega, petr 0.431373 0.823529 0.921569
23.81667 43.7 glozhene, orjah 0.45098 0.8 0.658824
23.8 42.61666 golema rakovica, elpel 0.364706 0.756863 0.701961
23 42.9333333 golemo malovo, sliven 0.137255 0.772549 0.270588
27.55 42.9166667 golica, varn 0.901961 0.811765 0.690196
24.4666667 42.9666667 goljama zheljazna, tet 0.721569 0.843137 0.713725
26.0333 42.6833 goljamo shivachevo, sl 0.952941 0.92549 0.74902
25.13333 42.95 gorna rosica, sevl 0.913725 0.890196 0.65098
25.433 42.933 gorni varpishta, drjan 0.858824 0.960784 0.752941
23.4833333 42.25 govedarci, sam 0.298039 0.772549 0.741176
22.7519444 44.0288889 gradec, vd 0.305882 0.819608 0.592157
25.8 41.8833333 huhla, ivgr 0.752941 0.419608 0.662745
24.68333 41.86666 hvojna, asgr 0.635294 0.435294 0.419608
27.4167 42.2167 indzhe vojvoda, mtarn 0.647059 0.443137 0.635294
27.017 43.133 ivanski, shum 0.960784 0.878431 0.658824
25.3166667 42.3 izvorovo, harm 0.85098 0.72549 0.737255
25.283 41.75 javorovo, asgr 0.607843 0.423529 0.494118
27.2333333 44.083333 kalipetrovo, sil 0.929412 0.882353 0.619608
24.7333 42.35 kalojanovo, plov 0.843137 0.976471 0.647059
25.35 43.383 karaisen, pavl 0.952941 0.933333 0.619608
27.2 42.65 karanovo, ajt 0.886275 0.858824 0.733333
27.183 43.3 kaspichan, np 0.960784 0.854902 0.654902
25.1667 42.3833 kolju marinovo, chirp 0.811765 0.811765 0.682353
22.844 42.733 konska, brezn 0 0.780392 0.278431
22.9136111 43.3311111 kopilovci, mont 0.145098 0.784314 0.254902
24.35 42.63334 koprivshtica, pird 0.517647 0.862745 0.788235
26 42.55 korten, nzag 0.882353 0.901961 0.65098
23.81667 42.26667 kostenec, iht 0.341176 0.788235 0.827451
23.33333 42.45 kovachevci, sam 0.239216 0.764706 0.611765
27.5666667 42.8333333 kozichino, pom 0.894118 0.807843 0.690196
25.083 43.133 kramolin, sevl 0.937255 0.92549 0.545098
25.017 42.85 kravenik, sevl 0.878431 1 0.741176
23.7 43.1166667 kreta, vrach 0.521569 0.733333 0.8
26.3333333 43.65 krivnja, razgr 0.952941 0.909804 0.639216
23.3 41.483 levunovo, sand 0.384314 0.827451 0.945098
23.517 43.333 liljache, vr 0.4 0.843137 0.807843
23.75 43.03333 lipnica, botgr 0.32549 0.756863 0.682353
25.9666667 42.35 ljubenova mahala, nzag 0.894118 0.882353 0.662745
22.817 42.5 lobosh, rad 0.254902 0.784314 0.607843
23.483 42.6 lozen, sof 0.384314 0.807843 0.717647
26.633 42.133 malomirovo, elh 0.843137 0.929412 0.807843
23.1833 42.6 marchaevo, sof 0.239216 0.756863 0.603922
23.35 41.433 marikostinovo, petr 0.482353 0.811765 0.968627
27.233 43.2 markovo, shum 0.921569 0.870588 0.670588
25.783 43.05 merdanja, vtarn 0.913725 0.913725 0.619608
25.5 42.1333333 merichleri, chirp 0.878431 0.67451 0.741176
25.35 43.2 mihalci, pavl 0.929412 0.898039 0.588235
22.686 43.888 milchina laka, kul 0.368627 0.827451 0.607843
24.7833333 41.6666667 momchilovci, smol 0.572549 0.0509804 0.462745
24.7 42.5 momina banja, pl 0.772549 0.8 0.74902
23.967 42.217 momina klisura, pz 0.521569 0.713725 0.835294
26.15 41.85 momkovo, svgr 0.772549 0.74902 0.705882
24.5 41.617 mugla, dev 0.454902 0.168627 0.435294
26.1 43.85 nikolovo\lipnik\, rus 0.945098 0.937255 0.607843
25.417 41.833 nikolovo, hask 0.745098 0.556863 0.647059
22.87111 42.67944 noevci, brezn 0.129412 0.827451 0.411765
23.717 41.417 nova lovcha, gd 0.686275 0.509804 0.666667
25.7166667 42.0166667 nova nadezhda, hs 0.921569 0.560784 0.662745
25.367 43.067 novoselo, trojan 0.886275 0.882353 0.67451
26.817 42.7 ognen, karn 0.909804 0.866667 0.768627
26.133 42.45 omarchevo, nzag 0.894118 0.894118 0.662745
25.7 42.2166667 opan, stzag 0.901961 0.815686 0.717647
26.3833333 43.55 osenec, razgr 1 0.960784 0.627451
24.183 42.5 panagjurishte, gd 0.611765 0.807843 0.67451
25.48333 43.25 paskalevec, pavl 0.921569 0.894118 0.623529
24.7 41.8666667 pavelsko, asgr 0.639216 0.396078 0.439216
22.774 42.177 pelatikovo, kjust 0.243137 0.737255 0.686275
24.4833333 43.3166667 petarnica, plev 0.611765 0.729412 0.701961
26.6833333 43.2166667 pevec, targ 0.992157 0.894118 0.686275
25.683 42.967 plakovo, vt 0.870588 0.858824 0.619608
26.85 42.833 podvis, karn 0.878431 0.831373 0.72549
26.717 44.05 pozharevo, tutr 0.960784 0.901961 0.678431
22.6 43.717 rabisha, belgr 0.176471 0.8 0.352941
23.967 43.167 radovene, vr 0.478431 0.792157 0.788235
23.45 43.417 rakevo, vr 0.352941 0.807843 0.694118
22.47639 43.76611 rakovica, kul 0.337255 0.827451 0.596078
22.487 42.822 rani lug, tryn 0.0431373 0.792157 0.243137
22.957 43.014 razboishte, god 0.172549 0.807843 0.286275
22.5547222 42.3944444 ruzhinci, belgr 0.317647 0.811765 0.588235
26.3 43.483 sadina, pop 0.929412 0.886275 0.615686
23.3 42.3 saparevo, dup 0.266667 0.764706 0.752941
24.95 42.2666667 sekirovo, plov 0.878431 0.952941 0.533333
23.2333333 41.8166667 senokos, blgr 0.360784 0.807843 0.886275
23.1833 41.5167 sestrino, petr 0.407843 0.811765 0.929412
25.3333333 42.7166667 shipka, kaz 0.854902 0.854902 0.627451
24.583 41.683 shiroka laka, dev 0.72549 0.12549 0.482353
23.5166667 42.4 shiroki dol, sam 0.25098 0.752941 0.709804
27.5333333 43.3833333 shtipsko, prov 0.921569 0.85098 0.654902
26.317 42.483 skobelevo, sliv 0.941176 0.968627 0.643137
24.867 41.633 slaveino, smol 0.619608 0 0.458824
24.867 43.467 slavjanovo, plev 0.8 0.862745 0.694118
23.1 42.15 smochevo, dupn 0.384314 0.65098 0.686275
23.95 42.633 smolsko, pird 0.45098 0.811765 0.705882
24.583 41.65 solishta, dev 0.698039 0.14902 0.45098
25.66667 42.25 sredec, zlgr 0.666667 0.372549 0.52549
22.5669444 43.5461111 stakevci, blgr. 0.168627 0.811765 0
25.65 41.7666667 stambolovo, hask 0.862745 0.498039 0.619608
25.6833333 43.4833333 starmen, bel 0.894118 0.890196 0.623529
27.5166667 42.0333333 stoilovo, mt 0.631373 0.545098 0.639216
26.6833333 42.6 straldzha, jamb 0.929412 0.905882 0.74902
24.683 42.233 stroevo, plov 0.8 0.807843 0.72549
25.181 43.192 suhindol, vtarn 0.913725 0.894118 0.592157
23.08333 41.83333 sushica, blgr 0.341176 0.803922 0.878431
26.1833 42.15 svetlina, topgr 0.909804 0.886275 0.709804
25.9333333 42.0333333 svirkovo, harm 0.8 0.592157 0.690196
25.5 41.3 tihomir, krgr 0.533333 0.0705882 0.419608
25.8666667 42.2666667 tihomirovo, stzag 0.894118 0.890196 0.639216
26.433 42.65 topolchane, sliv 0.894118 0.882353 0.772549
25 43.4833333 trancovica, nik 0.862745 0.984314 0.658824
24.4666667 43.5166667 trastenik, plev 0.521569 0.913725 0.709804
24.7833333 41.5666667 ustovo, sm 0.54902 0.180392 0.431373
24.9 43.65 vabel, nik 0.913725 0.909804 0.65098
24.067 41.6 vaklinovo, gd 0.619608 0.509804 0.639216
26.017 41.7 valche pole, svgr 0.666667 0.580392 0.627451
26.633339 43 varbica, presl 0.968627 0.894118 0.694118
22.646 43.543 varbovo, blgr 0.188235 0.835294 0.141176
26.533 42.81667 vardun, targ 0.929412 0.882353 0.686275
24.13333 42.15 varvara, paz 0.447059 0.752941 0.733333
24.38333 42.88334 vasiljovo, tetev 0.505882 0.843137 0.67451
22.94278 42.66611 velkovci, pk 0.215686 0.8 0.52549
22.8161111 44.0958333 vinarovo, vid 0.329412 0.835294 0.592157
23.07 43.483 vinishte, mont 0.321569 0.811765 0.6
24.8 43.283 vladinja, lov 0.866667 0.894118 0.635294
26.9 42.083 voden, elh 0.568627 0.768627 0.921569
24.75 42.567 vojnjagovo, karl 0.854902 0.937255 0.745098
23.75 42.883 vrachesh, botgr 0.337255 0.756863 0.678431
25.2166667 42.9166667 vranilovci, gabr 0.878431 0.894118 0.67451
27.2 42.817 vresovo, ajt 0.878431 0.843137 0.729412
24.6 41.783 zabardo, asgr 0.603922 0.2 0.454902
27.5666667 42.1 zabernovo, mt 0.654902 0.560784 0.705882
23.2425 43.2961111 zamfirovo, berk 0.317647 0.85098 0.658824
23.2630556 43.1761111 zanozhene, berk 0.286275 0.764706 0.698039
25.2333333 42.95 zdravkovec, gabr 0.878431 0.894118 0.678431
22.5619444 42.8375 zelenigrad, tran 0.101961 0.784314 0.184314
25.05 41.53333 zhaltusha, ard 0.513725 0.235294 0.47451
22.8 43.88028 zheglica, vid 0.34902 0.807843 0.576471
23.38333 42.98333 zhelen, svog 0.337255 0.784314 0.713725
27.0167 42.15 zheljazkovo, sred 0.631373 0.768627 0.921569
26.46667 42.83333 zheravna, kot 0.937255 0.882353 0.768627
lon lat name dim1 dim2 dim3
22.9811111 42.8497222 aldomirovci, slivnica -4.3294039e-05 -5.9686358e-06 2.5815158e-05
23.217 43.7 asparuhovo, lom -2.9635825e-05 -7.0867664e-06 -1.1993185e-06
27.8833333 43.1666667 asparuhovo, prov 3.3464997e-05 -7.1113452e-06 5.4664908e-06
23.6833333 41.95 babjak, razl -1.6763038e-05 1.7408748e-05 -1.5513971e-05
24.867 41.95 bachkovo, asgr 8.3222322e-06 2.7446663e-05 3.0804845e-06
22.76083 42.28028 bagrenci, kjust -3.8276673e-05 -3.0496879e-06 -5.6505592e-06
27.733 42.1 balgari, carev 3.6268877e-06 1.8992032e-05 2.6163886e-07
22.7286 42.7222 banishte, brezn -4.5191322e-05 -8.7568968e-06 2.636648e-05
23.5 41.8394444 bansko, razl -1.7421096e-05 1.6902738e-05 -1.5029946e-05
24.4833333 43.25 beglezh, luk 8.4988867e-06 -1.1881415e-05 -7.4241943e-06
25.1166667 43.65 belene, svisht 1.9995854e-05 -1.8049455e-05 5.9871268e-06
23.2333333 41.65 belica, razl -1.7458699e-05 1.1242891e-05 -1.5224907e-05
23.08333 41.98333 bistrica, blgr -3.0647403e-05 2.5546247e-06 -1.4518225e-05
22.9622222 42.6166667 bogdanov dol, pern -3.2951861e-05 -5.7791768e-06 -5.5781628e-07
26.733 42.3 borisovo, elh 2.2101192e-05 -2.079556e-05 -5.7974009e-06
23.3780556 43.0325 bov, svog -3.2408437e-05 -2.7971127e-06 -7.8957295e-06
27.4333333 42.05 brashljan, mtarn 9.2292314e-06 2.1343818e-05 1.3797873e-06
23.13333 42.9666 buchin prohod, god -3.4757661e-05 -5.6031692e-06 1.919842e-06
23.1 41.63334 caparevo, sand -2.8504096e-05 1.5874673e-06 -2.3159599e-05
22.53028 42.34833 cerovica, kjust -3.5011272e-05 -4.4203224e-06 -7.9313668e-06
24.683 41.733 chepelare, asgr 4.2881438e-06 3.7596948e-05 8.5233663e-06
24.4 42.267 chernogorovo, paz -5.5492064e-06 -8.9076512e-06 -9.8113402e-06
27.65 42.45 chernomorec, bs 2.9267727e-05 9.5068115e-07 -4.1341474e-06
23.03333 42.41667 chukovec, radom -3.8153633e-05 -3.3782187e-06 -4.0120265e-06
24.28333 43.15 dermanci, luk -1.2351594e-05 -5.496079e-06 -1.2102826e-05
24.1666667 43.3166667 devenci, luk -9.2046249e-06 -6.4145368e-06 -7.1089137e-06
25.71667 41.35 devesilica, krgr 6.3245011e-06 3.3747947e-05 2.3799513e-06
25.483 43.217 dichin, vtarn 3.5492884e-05 -1.3864467e-05 6.0082692e-06
25.7 41.8833333 dinevo, hask 2.1990573e-05 2.6502634e-05 3.6643764e-06
22.9136111 43.2847222 diva slatina, mont -4.1445887e-05 -5.5523043e-06 2.330807e-05
26.9333333 43.2333333 divdjadovo, shum 3.3736067e-05 -6.0798756e-06 5.1241712e-06
23.4833333 41.9666667 dobarsko, razl -1.5903659e-05 1.6337146e-05 -1.8009336e-05
26.31667 42.15 dobroselec, topgr 2.4232745e-05 -1.3915179e-05 -7.9610627e-08
23.2833333 42.8166667 dobroslavci, sof -3.5076101e-05 -3.5254322e-06 1.2391595e-06
23.683 41.583 dobrotino, gd 7.5628898e-06 2.5529296e-05 -1.4650292e-05
23.8833333 43.1833333 dolna beshovica, vrach -2.2366143e-05 -4.6652451e-06 -6.1937338e-06
23.117 42.433 dolna dikanja, radom -3.6488796e-05 -3.7013524e-06 -5.6802662e-06
22.5255556 42.6705556 dolna melna, tran -4.3473105e-05 -9.0413085e-06 2.4362945e-05
23.017 43.55 dolna riksa, mont -2.8093569e-05 -6.8652671e-06 -4.031082e-07
25.7 43.5166667 dolna srudena, bel 2.8893775e-05 -1.2768777e-05 6.2188211e-06
23.5 42.7 dolni bogrov, sof -2.7742866e-05 8.3553735e-07 -1.1484544e-05
24.2833 42.3667 dolno levski, pan -1.0333199e-05 -1.4746663e-05 -6.5420705e-06
24.13333 42.03333 dorkovo, velgr 6.4952097e-06 2.0531031e-05 -8.1171155e-07
26.1583333 41.5022222 drabishna, ivgr 2.0573017e-05 3.037314e-05 3.8348679e-06
25.733 43.067 dragizhevo, vtarn 2.8919381e-05 -1.299675e-05 1.5541859e-06
26.5666667 42.6166667 dragodanovo, sliv 2.8412759e-05 -1.3622215e-05 -2.2520806e-06
26.867 43.117 dragoevo, presl 3.4663856e-05 -6.4353772e-06 2.8077217e-06
22.5 42.61666 dragojchinci, kjust -4.3909502e-05 -5.6182237e-06 2.2359578e-05
22.745 42.623 elov dol, pk -4.0129884e-05 -6.9482966e-06 1.0687553e-05
25.4 42.6666667 enina, kaz 2.9000988e-05 -9.6334454e-06 4.6429002e-06
24.7166667 41.6333333 ezerovo, parvom 1.3869064e-05 1.3540037e-05 -6.4241684e-07
23.6 43.517 furen, vrach -2.4747932e-05 -4.6880043e-06 -4.7205516e-06
23.9166667 43.3166667 gabare, bslat -1.5501585e-05 -3.8941911e-07 -2.9430475e-06
23.633 42.583 gabra, elpel -3.1030067e-05 -2.8609568e-06 -1.3779467e-05
24.283 43.01 galata, tetev -2.9594292e-06 -7.9688386e-06 -8.7368144e-06
25.5166667 42.9833333 ganchovec, drjan 2.6624667e-05 -1.1821136e-05 -4.2777911e-07
23.81667 41.6 garmen, gd 1.4625183e-05 2.5479009e-05 -2.8532468e-07
26.91 44.117 garvan, sil 3.3132409e-05 -8.3298833e-06 9.7627981e-07
23 41.45 gega, petr -2.4564031e-05 3.466903e-06 -2.1844216e-05
23.81667 43.7 glozhene, orjah -1.865095e-05 -6.5069062e-06 -6.8505924e-06
23.8 42.61666 golema rakovica, elpel -2.391936e-05 -2.1363199e-06 -8.355141e-06
23 42.9333333 golemo malovo, sliven -4.26239e-05 -4.8616152e-06 2.3709059e-05
27.55 42.9166667 golica, varn 2.8341597e-05 -3.6450012e-06 -2.550027e-06
24.4666667 42.9666667 goljama zheljazna, tet 8.8594055e-06 -9.4655728e-06 -5.2048688e-06
26.0333 42.6833 goljamo shivachevo, sl 3.3035712e-05 -1.3629292e-05 -1.9982091e-06
25.13333 42.95 gorna rosica, sevl 2.9690204e-05 -1.0961682e-05 1.8588763e-06
25.433 42.933 gorni varpishta, drjan 1.7513555e-05 -1.6621202e-05 -3.9810946e-06
23.4833333 42.25 govedarci, sam -3.2647071e-05 -1.859107e-06 -8.9780454e-06
22.7519444 44.0288889 gradec, vd -3.2631339e-05 -6.8674335e-06 3.7096913e-06
25.8 41.8833333 huhla, ivgr 1.8302358e-05 2.8558411e-05 4.6901547e-06
24.68333 41.86666 hvojna, asgr 8.8774744e-06 2.4597998e-05 1.2066717e-05
27.4167 42.2167 indzhe vojvoda, mtarn 8.4434487e-06 2.6293803e-05 2.03669e-07
27.017 43.133 ivanski, shum 3.3122882e-05 -6.5076204e-06 5.1179599e-06
25.3166667 42.3 izvorovo, harm 2.5963373e-05 1.0459594e-05 -4.3556861e-06
25.283 41.75 javorovo, asgr 6.4088507e-06 2.3864104e-05 8.4061086e-06
27.2333333 44.083333 kalipetrovo, sil 3.1924196e-05 -7.9297725e-06 4.7122143e-06
24.7333 42.35 kalojanovo, plov 1.4807936e-05 -1.8018866e-05 5.0995022e-06
25.35 43.383 karaisen, pavl 3.301021e-05 -1.3796468e-05 4.0961586e-06
27.2 42.65 karanovo, ajt 3.0267786e-05 -7.3289632e-06 -1.7978374e-06
27.183 43.3 kaspichan, np 3.313479e-05 -4.06286e-06 5.3412777e-06
25.1667 42.3833 kolju marinovo, chirp 2.1402388e-05 -6.603568e-06 -1.1193605e-06
22.844 42.733 konska, brezn -4.5216653e-05 -8.4503687e-06 2.4876942e-05
22.9136111 43.3311111 kopilovci, mont -4.2185285e-05 -6.3047278e-06 2.670255e-05
24.35 42.63334 koprivshtica, pird -1.4295672e-05 -9.0197526e-06 -9.7443473e-06
26 42.55 korten, nzag 2.7577741e-05 -1.3207756e-05 -6.9313106e-08
23.81667 42.26667 kostenec, iht -2.9852773e-05 1.5761757e-07 -1.5763247e-05
23.33333 42.45 kovachevci, sam -3.5968526e-05 -2.2806622e-06 1.1632577e-06
27.5666667 42.8333333 kozichino, pom 2.801762e-05 -3.3732505e-06 -2.2197799e-06
25.083 43.133 kramolin, sevl 3.1342975e-05 -1.4769835e-05 7.1485932e-06
25.017 42.85 kravenik, sevl 1.8192346e-05 -2.125166e-05 -3.0897978e-06
23.7 43.1166667 kreta, vrach -1.6351076e-05 1.6907751e-06 -1.1815046e-05
26.3333333 43.65 krivnja, razgr 3.2763103e-05 -9.6990114e-06 3.065356e-06
23.3 41.483 levunovo, sand -2.7992427e-05 5.2629614e-06 -2.0296287e-05
23.517 43.333 liljache, vr -2.4529403e-05 -6.8350621e-06 -1.1387254e-05
23.75 43.03333 lipnica, botgr -2.7057003e-05 -2.3312706e-06 -9.8598871e-06
25.9666667 42.35 ljubenova mahala, nzag 3.2812509e-05 -1.0650043e-05 1.2180453e-07
22.817 42.5 lobosh, rad -3.5685429e-05 -5.9587717e-06 -8.498253e-07
23.483 42.6 lozen, sof -2.772222e-05 -5.20976e-06 -4.6739965e-06
26.633 42.133 malomirovo, elh 2.0021208e-05 -1.3439551e-05 -8.6546308e-06
23.1833 42.6 marchaevo, sof -3.6517036e-05 -2.2846178e-06 -2.2530126e-08
23.35 41.433 marikostinovo, petr -2.0662521e-05 7.2326471e-06 -2.1182887e-05
27.233 43.2 markovo, shum 3.0383448e-05 -8.180664e-06 3.4052729e-06
25.783 43.05 merdanja, vtarn 3.0661522e-05 -1.4851691e-05 2.0579714e-06
25.5 42.1333333 merichleri, chirp 2.9070892e-05 1.3810144e-05 -9.5478103e-07
25.35 43.2 mihalci, pavl 3.2940269e-05 -1.0639078e-05 5.1377233e-06
22.686 43.888 milchina laka, kul -2.9148867e-05 -8.2216813e-06 1.6657001e-06
24.7833333 41.6666667 momchilovci, smol 5.9816219e-06 3.9460944e-05 8.5162428e-06
24.7 42.5 momina banja, pl 1.4474749e-05 -4.4804047e-06 -5.5275712e-06
23.967 42.217 momina klisura, pz -1.6383258e-05 7.9598083e-06 -1.468731e-05
26.15 41.85 momkovo, svgr 1.9184158e-05 3.2875116e-06 -3.6175574e-06
24.5 41.617 mugla, dev -1.5772717e-06 3.7855282e-05 4.4338562e-06
26.1 43.85 nikolovo\lipnik\, rus 3.3057862e-05 -1.55211e-05 2.449246e-06
25.417 41.833 nikolovo, hask 2.0910443e-05 2.5551976e-05 2.2708035e-06
22.87111 42.67944 noevci, brezn -4.1843797e-05 -1.0379472e-05 1.9964523e-05
23.717 41.417 nova lovcha, gd 1.2762475e-05 2.5140449e-05 -1.1076166e-06
25.7166667 42.0166667 nova nadezhda, hs 3.0286661e-05 2.6326666e-05 5.6887711e-06
25.367 43.067 novoselo, trojan 2.5423545e-05 -1.3211814e-05 -3.0781825e-07
26.817 42.7 ognen, karn 3.0870517e-05 -6.5690904e-06 -2.9705143e-06
26.133 42.45 omarchevo, nzag 3.0149833e-05 -1.2033831e-05 1.4803161e-06
25.7 42.2166667 opan, stzag 3.0586433e-05 2.2809225e-06 -3.7338719e-07
26.3833333 43.55 osenec, razgr 3.3745916e-05 -1.0891296e-05 6.3491737e-06
24.183 42.5 panagjurishte, gd -2.6603504e-06 -6.6080306e-06 -2.8281979e-06
25.48333 43.25 paskalevec, pavl 3.0976678e-05 -1.1381075e-05 2.8492828e-06
24.7 41.8666667 pavelsko, asgr 1.0433848e-05 2.7466091e-05 1.2567123e-05
22.774 42.177 pelatikovo, kjust -3.47982e-05 -1.3455106e-06 -1.0551052e-05
24.4833333 43.3166667 petarnica, plev -1.3498778e-06 -1.5702781e-06 -9.0241089e-06
26.6833333 43.2166667 pevec, targ 3.365181e-05 -4.7200638e-06 2.7613747e-06
25.683 42.967 plakovo, vt 2.5676722e-05 -1.0109107e-05 1.6047366e-06
26.85 42.833 podvis, karn 2.7232305e-05 -4.2477122e-06 -2.6202659e-07
26.717 44.05 pozharevo, tutr 3.3845814e-05 -7.7379386e-06 -2.8567921e-07
22.6 43.717 rabisha, belgr -4.0073001e-05 -7.6917275e-06 2.0110348e-05
23.967 43.167 radovene, vr -1.7176588e-05 -2.4969787e-06 -1.3360907e-05
23.45 43.417 rakevo, vr -2.7508386e-05 -4.4753432e-06 -8.433793e-06
22.47639 43.76611 rakovica, kul -3.0931957e-05 -7.0071581e-06 2.5436514e-06
22.487 42.822 rani lug, tryn -4.4275039e-05 -6.3524387e-06 2.410394e-05
22.957 43.014 razboishte, god -4.1501164e-05 -5.8513907e-06 2.5721274e-05
22.5547222 42.3944444 ruzhinci, belgr -3.1002449e-05 -5.8114216e-06 3.5564595e-06
26.3 43.483 sadina, pop 3.2157589e-05 -9.2981898e-06 4.3422532e-06
23.3 42.3 saparevo, dup -3.504219e-05 -1.4954035e-06 -1.021168e-05
24.95 42.2666667 sekirovo, plov 2.1728316e-05 -1.8705066e-05 1.2711473e-05
23.2333333 41.8166667 senokos, blgr -2.8194471e-05 5.9499837e-07 -1.7701912e-05
23.1833 41.5167 sestrino, petr -2.5346766e-05 4.9349351e-06 -2.1985458e-05
25.3333333 42.7166667 shipka, kaz 2.6330685e-05 -9.7525674e-06 2.1054896e-06
24.583 41.683 shiroka laka, dev 1.3378707e-05 3.9394782e-05 1.0116393e-05
23.5166667 42.4 shiroki dol, sam -3.683653e-05 -8.8922139e-07 -4.2899001e-06
27.5333333 43.3833333 shtipsko, prov 2.8958358e-05 -3.9073263e-06 -1.2681318e-06
26.317 42.483 skobelevo, sliv 3.1810765e-05 -1.7274933e-05 4.4126036e-06
24.867 41.633 slaveino, smol 8.6764293e-06 3.8577557e-05 1.1806195e-05
24.867 43.467 slavjanovo, plev 1.4189467e-05 -1.2742859e-05 -3.6214104e-06
23.1 42.15 smochevo, dupn -2.5776167e-05 5.2211527e-06 -1.0751102e-05
23.95 42.633 smolsko, pird -1.78338e-05 -8.1165068e-06 -1.0662827e-05
24.583 41.65 solishta, dev 1.2797267e-05 3.8718026e-05 1.1413626e-05
25.66667 42.25 sredec, zlgr 1.1617805e-05 2.9954406e-05 7.4846787e-06
22.5669444 43.5461111 stakevci, blgr. -4.2511176e-05 -9.4641503e-06 2.9763447e-05
25.65 41.7666667 stambolovo, hask 2.8901418e-05 2.7746969e-05 5.6122823e-06
25.6833333 43.4833333 starmen, bel 2.6934606e-05 -1.2798967e-05 4.3595972e-06
27.5166667 42.0333333 stoilovo, mt 7.7001575e-06 1.9114032e-05 1.0988863e-06
26.6833333 42.6 straldzha, jamb 3.3019291e-05 -1.1519578e-05 -2.2493803e-06
24.683 42.233 stroevo, plov 1.9137708e-05 -6.8930897e-06 -3.6207468e-06
25.181 43.192 suhindol, vtarn 2.9563028e-05 -1.2044874e-05 3.93494e-06
23.08333 41.83333 sushica, blgr -3.0537973e-05 1.1138813e-06 -1.7474378e-05
26.1833 42.15 svetlina, topgr 3.1319856e-05 -8.0449119e-06 -6.7997679e-07
25.9333333 42.0333333 svirkovo, harm 2.2004739e-05 2.1238303e-05 1.4833139e-06
25.5 41.3 tihomir, krgr 2.2784493e-06 4.179079e-05 7.7853959e-06
25.8666667 42.2666667 tihomirovo, stzag 3.0533724e-05 -1.0945369e-05 -4.8810981e-07
26.433 42.65 topolchane, sliv 2.8253195e-05 -1.1121309e-05 -3.5311905e-06
25 43.4833333 trancovica, nik 2.1129323e-05 -2.036158e-05 3.9436333e-06
24.4666667 43.5166667 trastenik, plev -1.4759758e-05 -1.5087389e-05 -6.1820634e-06
24.7833333 41.5666667 ustovo, sm 5.2630177e-06 3.7713072e-05 1.0169553e-05
24.9 43.65 vabel, nik 2.818125e-05 -1.5594336e-05 6.4295263e-07
24.067 41.6 vaklinovo, gd 9.5931776e-06 2.4768756e-05 -2.3505629e-06
26.017 41.7 valche pole, svgr 1.1501335e-05 1.433596e-05 -2.4717486e-06
26.633339 43 varbica, presl 3.208225e-05 -6.3855228e-06 8.8633601e-07
22.646 43.543 varbovo, blgr -4.2073704e-05 -1.0591675e-05 2.8027113e-05
26.533 42.81667 vardun, targ 3.2424623e-05 -6.2067825e-06 -1.0975212e-06
24.13333 42.15 varvara, paz -2.113783e-05 1.2572241e-06 -1.0678677e-05
24.38333 42.88334 vasiljovo, tetev -1.16641e-05 -8.4509156e-06 -7.4872989e-06
22.94278 42.66611 velkovci, pk -3.9495203e-05 -6.6708512e-06 7.0406055e-06
22.8161111 44.0958333 vinarovo, vid -3.0405091e-05 -6.1512718e-06 3.6490036e-06
23.07 43.483 vinishte, mont -3.1259536e-05 -6.4438706e-06 2.1321277e-06
24.8 43.283 vladinja, lov 2.4591489e-05 -1.4399703e-05 2.2580188e-06
26.9 42.083 voden, elh -1.3768302e-05 1.0644424e-05 -1.8505601e-05
24.75 42.567 vojnjagovo, karl 1.9107946e-05 -1.3689093e-05 -1.5140773e-06
23.75 42.883 vrachesh, botgr -2.6991222e-05 -1.4062868e-06 -9.5981139e-06
25.2166667 42.9166667 vranilovci, gabr 2.5550322e-05 -1.2038891e-05 1.7027982e-06
27.2 42.817 vresovo, ajt 2.9357739e-05 -6.1937515e-06 -1.5203594e-06
24.6 41.783 zabardo, asgr 5.7858122e-06 3.7638967e-05 1.1376614e-05
27.5666667 42.1 zabernovo, mt 6.6855341e-06 2.1446772e-05 -4.184955e-07
23.2425 43.2961111 zamfirovo, berk -3.1902139e-05 -9.8984971e-06 -1.125414e-06
23.2630556 43.1761111 zanozhene, berk -3.0319272e-05 -1.2230417e-06 -9.8192058e-06
25.2333333 42.95 zdravkovec, gabr 2.5980516e-05 -1.1386649e-05 1.4334922e-06
22.5619444 42.8375 zelenigrad, tran -4.5327649e-05 -7.0334648e-06 2.6599843e-05
25.05 41.53333 zhaltusha, ard 3.8484486e-06 3.5322568e-05 1.3295119e-06
22.8 43.88028 zheglica, vid -3.0448675e-05 -5.7737714e-06 4.2648697e-06
23.38333 42.98333 zhelen, svog -2.7844198e-05 -4.1911205e-06 -9.1751886e-06
27.0167 42.15 zheljazkovo, sred -7.5498609e-06 9.1318379e-06 -1.4769748e-05
26.46667 42.83333 zheravna, kot 3.1250045e-05 -6.3045313e-06 -2.2630051e-06
d3 = function() {
var π = Math.PI, ε = 1e-6, d3 = {
version: "3.0.8"
}, d3_radians = π / 180, d3_degrees = 180 / π, d3_document = document, d3_window = window;
function d3_target(d) {
return d.target;
}
function d3_source(d) {
return d.source;
}
var d3_format_decimalPoint = ".", d3_format_thousandsSeparator = ",", d3_format_grouping = [ 3, 3 ];
if (!Date.now) Date.now = function() {
return +new Date();
};
try {
d3_document.createElement("div").style.setProperty("opacity", 0, "");
} catch (error) {
var d3_style_prototype = d3_window.CSSStyleDeclaration.prototype, d3_style_setProperty = d3_style_prototype.setProperty;
d3_style_prototype.setProperty = function(name, value, priority) {
d3_style_setProperty.call(this, name, value + "", priority);
};
}
function d3_class(ctor, properties) {
try {
for (var key in properties) {
Object.defineProperty(ctor.prototype, key, {
value: properties[key],
enumerable: false
});
}
} catch (e) {
ctor.prototype = properties;
}
}
var d3_array = d3_arraySlice;
function d3_arrayCopy(pseudoarray) {
var i = -1, n = pseudoarray.length, array = [];
while (++i < n) array.push(pseudoarray[i]);
return array;
}
function d3_arraySlice(pseudoarray) {
return Array.prototype.slice.call(pseudoarray);
}
try {
d3_array(d3_document.documentElement.childNodes)[0].nodeType;
} catch (e) {
d3_array = d3_arrayCopy;
}
var d3_arraySubclass = [].__proto__ ? function(array, prototype) {
array.__proto__ = prototype;
} : function(array, prototype) {
for (var property in prototype) array[property] = prototype[property];
};
d3.map = function(object) {
var map = new d3_Map();
for (var key in object) map.set(key, object[key]);
return map;
};
function d3_Map() {}
d3_class(d3_Map, {
has: function(key) {
return d3_map_prefix + key in this;
},
get: function(key) {
return this[d3_map_prefix + key];
},
set: function(key, value) {
return this[d3_map_prefix + key] = value;
},
remove: function(key) {
key = d3_map_prefix + key;
return key in this && delete this[key];
},
keys: function() {
var keys = [];
this.forEach(function(key) {
keys.push(key);
});
return keys;
},
values: function() {
var values = [];
this.forEach(function(key, value) {
values.push(value);
});
return values;
},
entries: function() {
var entries = [];
this.forEach(function(key, value) {
entries.push({
key: key,
value: value
});
});
return entries;
},
forEach: function(f) {
for (var key in this) {
if (key.charCodeAt(0) === d3_map_prefixCode) {
f.call(this, key.substring(1), this[key]);
}
}
}
});
var d3_map_prefix = "\0", d3_map_prefixCode = d3_map_prefix.charCodeAt(0);
function d3_identity(d) {
return d;
}
function d3_true() {
return true;
}
function d3_functor(v) {
return typeof v === "function" ? v : function() {
return v;
};
}
d3.functor = d3_functor;
d3.rebind = function(target, source) {
var i = 1, n = arguments.length, method;
while (++i < n) target[method = arguments[i]] = d3_rebind(target, source, source[method]);
return target;
};
function d3_rebind(target, source, method) {
return function() {
var value = method.apply(source, arguments);
return value === source ? target : value;
};
}
d3.ascending = function(a, b) {
return a < b ? -1 : a > b ? 1 : a >= b ? 0 : NaN;
};
d3.descending = function(a, b) {
return b < a ? -1 : b > a ? 1 : b >= a ? 0 : NaN;
};
d3.mean = function(array, f) {
var n = array.length, a, m = 0, i = -1, j = 0;
if (arguments.length === 1) {
while (++i < n) if (d3_number(a = array[i])) m += (a - m) / ++j;
} else {
while (++i < n) if (d3_number(a = f.call(array, array[i], i))) m += (a - m) / ++j;
}
return j ? m : undefined;
};
d3.median = function(array, f) {
if (arguments.length > 1) array = array.map(f);
array = array.filter(d3_number);
return array.length ? d3.quantile(array.sort(d3.ascending), .5) : undefined;
};
d3.min = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
while (++i < n) if ((b = array[i]) != null && a > b) a = b;
} else {
while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null && a > b) a = b;
}
return a;
};
d3.max = function(array, f) {
var i = -1, n = array.length, a, b;
if (arguments.length === 1) {
while (++i < n && ((a = array[i]) == null || a != a)) a = undefined;
while (++i < n) if ((b = array[i]) != null && b > a) a = b;
} else {
while (++i < n && ((a = f.call(array, array[i], i)) == null || a != a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null && b > a) a = b;
}
return a;
};
d3.extent = function(array, f) {
var i = -1, n = array.length, a, b, c;
if (arguments.length === 1) {
while (++i < n && ((a = c = array[i]) == null || a != a)) a = c = undefined;
while (++i < n) if ((b = array[i]) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
} else {
while (++i < n && ((a = c = f.call(array, array[i], i)) == null || a != a)) a = undefined;
while (++i < n) if ((b = f.call(array, array[i], i)) != null) {
if (a > b) a = b;
if (c < b) c = b;
}
}
return [ a, c ];
};
d3.random = {
normal: function(µ, σ) {
var n = arguments.length;
if (n < 2) σ = 1;
if (n < 1) µ = 0;
return function() {
var x, y, r;
do {
x = Math.random() * 2 - 1;
y = Math.random() * 2 - 1;
r = x * x + y * y;
} while (!r || r > 1);
return µ + σ * x * Math.sqrt(-2 * Math.log(r) / r);
};
},
logNormal: function() {
var random = d3.random.normal.apply(d3, arguments);
return function() {
return Math.exp(random());
};
},
irwinHall: function(m) {
return function() {
for (var s = 0, j = 0; j < m; j++) s += Math.random();
return s / m;
};
}
};
function d3_number(x) {
return x != null && !isNaN(x);
}
d3.sum = function(array, f) {
var s = 0, n = array.length, a, i = -1;
if (arguments.length === 1) {
while (++i < n) if (!isNaN(a = +array[i])) s += a;
} else {
while (++i < n) if (!isNaN(a = +f.call(array, array[i], i))) s += a;
}
return s;
};
d3.quantile = function(values, p) {
var H = (values.length - 1) * p + 1, h = Math.floor(H), v = +values[h - 1], e = H - h;
return e ? v + e * (values[h] - v) : v;
};
d3.shuffle = function(array) {
var m = array.length, t, i;
while (m) {
i = Math.random() * m-- | 0;
t = array[m], array[m] = array[i], array[i] = t;
}
return array;
};
d3.transpose = function(matrix) {
return d3.zip.apply(d3, matrix);
};
d3.zip = function() {
if (!(n = arguments.length)) return [];
for (var i = -1, m = d3.min(arguments, d3_zipLength), zips = new Array(m); ++i < m; ) {
for (var j = -1, n, zip = zips[i] = new Array(n); ++j < n; ) {
zip[j] = arguments[j][i];
}
}
return zips;
};
function d3_zipLength(d) {
return d.length;
}
d3.bisector = function(f) {
return {
left: function(a, x, lo, hi) {
if (arguments.length < 3) lo = 0;
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (f.call(a, a[mid], mid) < x) lo = mid + 1; else hi = mid;
}
return lo;
},
right: function(a, x, lo, hi) {
if (arguments.length < 3) lo = 0;
if (arguments.length < 4) hi = a.length;
while (lo < hi) {
var mid = lo + hi >>> 1;
if (x < f.call(a, a[mid], mid)) hi = mid; else lo = mid + 1;
}
return lo;
}
};
};
var d3_bisector = d3.bisector(function(d) {
return d;
});
d3.bisectLeft = d3_bisector.left;
d3.bisect = d3.bisectRight = d3_bisector.right;
d3.nest = function() {
var nest = {}, keys = [], sortKeys = [], sortValues, rollup;
function map(array, depth) {
if (depth >= keys.length) return rollup ? rollup.call(nest, array) : sortValues ? array.sort(sortValues) : array;
var i = -1, n = array.length, key = keys[depth++], keyValue, object, valuesByKey = new d3_Map(), values, o = {};
while (++i < n) {
if (values = valuesByKey.get(keyValue = key(object = array[i]))) {
values.push(object);
} else {
valuesByKey.set(keyValue, [ object ]);
}
}
valuesByKey.forEach(function(keyValue, values) {
o[keyValue] = map(values, depth);
});
return o;
}
function entries(map, depth) {
if (depth >= keys.length) return map;
var a = [], sortKey = sortKeys[depth++], key;
for (key in map) {
a.push({
key: key,
values: entries(map[key], depth)
});
}
if (sortKey) a.sort(function(a, b) {
return sortKey(a.key, b.key);
});
return a;
}
nest.map = function(array) {
return map(array, 0);
};
nest.entries = function(array) {
return entries(map(array, 0), 0);
};
nest.key = function(d) {
keys.push(d);
return nest;
};
nest.sortKeys = function(order) {
sortKeys[keys.length - 1] = order;
return nest;
};
nest.sortValues = function(order) {
sortValues = order;
return nest;
};
nest.rollup = function(f) {
rollup = f;
return nest;
};
return nest;
};
d3.keys = function(map) {
var keys = [];
for (var key in map) keys.push(key);
return keys;
};
d3.values = function(map) {
var values = [];
for (var key in map) values.push(map[key]);
return values;
};
d3.entries = function(map) {
var entries = [];
for (var key in map) entries.push({
key: key,
value: map[key]
});
return entries;
};
d3.permute = function(array, indexes) {
var permutes = [], i = -1, n = indexes.length;
while (++i < n) permutes[i] = array[indexes[i]];
return permutes;
};
d3.merge = function(arrays) {
return Array.prototype.concat.apply([], arrays);
};
function d3_collapse(s) {
return s.trim().replace(/\s+/g, " ");
}
d3.range = function(start, stop, step) {
if (arguments.length < 3) {
step = 1;
if (arguments.length < 2) {
stop = start;
start = 0;
}
}
if ((stop - start) / step === Infinity) throw new Error("infinite range");
var range = [], k = d3_range_integerScale(Math.abs(step)), i = -1, j;
start *= k, stop *= k, step *= k;
if (step < 0) while ((j = start + step * ++i) > stop) range.push(j / k); else while ((j = start + step * ++i) < stop) range.push(j / k);
return range;
};
function d3_range_integerScale(x) {
var k = 1;
while (x * k % 1) k *= 10;
return k;
}
d3.requote = function(s) {
return s.replace(d3_requote_re, "\\$&");
};
var d3_requote_re = /[\\\^\$\*\+\?\|\[\]\(\)\.\{\}]/g;
d3.round = function(x, n) {
return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x);
};
d3.xhr = function(url, mimeType, callback) {
var xhr = {}, dispatch = d3.dispatch("progress", "load", "error"), headers = {}, response = d3_identity, request = new (d3_window.XDomainRequest && /^(http(s)?:)?\/\//.test(url) ? XDomainRequest : XMLHttpRequest)();
"onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() {
request.readyState > 3 && respond();
};
function respond() {
var s = request.status;
!s && request.responseText || s >= 200 && s < 300 || s === 304 ? dispatch.load.call(xhr, response.call(xhr, request)) : dispatch.error.call(xhr, request);
}
request.onprogress = function(event) {
var o = d3.event;
d3.event = event;
try {
dispatch.progress.call(xhr, request);
} finally {
d3.event = o;
}
};
xhr.header = function(name, value) {
name = (name + "").toLowerCase();
if (arguments.length < 2) return headers[name];
if (value == null) delete headers[name]; else headers[name] = value + "";
return xhr;
};
xhr.mimeType = function(value) {
if (!arguments.length) return mimeType;
mimeType = value == null ? null : value + "";
return xhr;
};
xhr.response = function(value) {
response = value;
return xhr;
};
[ "get", "post" ].forEach(function(method) {
xhr[method] = function() {
return xhr.send.apply(xhr, [ method ].concat(d3_array(arguments)));
};
});
xhr.send = function(method, data, callback) {
if (arguments.length === 2 && typeof data === "function") callback = data, data = null;
request.open(method, url, true);
if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*";
if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]);
if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType);
if (callback != null) xhr.on("error", callback).on("load", function(request) {
callback(null, request);
});
request.send(data == null ? null : data);
return xhr;
};
xhr.abort = function() {
request.abort();
return xhr;
};
d3.rebind(xhr, dispatch, "on");
if (arguments.length === 2 && typeof mimeType === "function") callback = mimeType,
mimeType = null;
return callback == null ? xhr : xhr.get(d3_xhr_fixCallback(callback));
};
function d3_xhr_fixCallback(callback) {
return callback.length === 1 ? function(error, request) {
callback(error == null ? request : null);
} : callback;
}
d3.text = function() {
return d3.xhr.apply(d3, arguments).response(d3_text);
};
function d3_text(request) {
return request.responseText;
}
d3.json = function(url, callback) {
return d3.xhr(url, "application/json", callback).response(d3_json);
};
function d3_json(request) {
return JSON.parse(request.responseText);
}
d3.html = function(url, callback) {
return d3.xhr(url, "text/html", callback).response(d3_html);
};
function d3_html(request) {
var range = d3_document.createRange();
range.selectNode(d3_document.body);
return range.createContextualFragment(request.responseText);
}
d3.xml = function() {
return d3.xhr.apply(d3, arguments).response(d3_xml);
};
function d3_xml(request) {
return request.responseXML;
}
var d3_nsPrefix = {
svg: "http://www.w3.org/2000/svg",
xhtml: "http://www.w3.org/1999/xhtml",
xlink: "http://www.w3.org/1999/xlink",
xml: "http://www.w3.org/XML/1998/namespace",
xmlns: "http://www.w3.org/2000/xmlns/"
};
d3.ns = {
prefix: d3_nsPrefix,
qualify: function(name) {
var i = name.indexOf(":"), prefix = name;
if (i >= 0) {
prefix = name.substring(0, i);
name = name.substring(i + 1);
}
return d3_nsPrefix.hasOwnProperty(prefix) ? {
space: d3_nsPrefix[prefix],
local: name
} : name;
}
};
d3.dispatch = function() {
var dispatch = new d3_dispatch(), i = -1, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
return dispatch;
};
function d3_dispatch() {}
d3_dispatch.prototype.on = function(type, listener) {
var i = type.indexOf("."), name = "";
if (i > 0) {
name = type.substring(i + 1);
type = type.substring(0, i);
}
return arguments.length < 2 ? this[type].on(name) : this[type].on(name, listener);
};
function d3_dispatch_event(dispatch) {
var listeners = [], listenerByName = new d3_Map();
function event() {
var z = listeners, i = -1, n = z.length, l;
while (++i < n) if (l = z[i].on) l.apply(this, arguments);
return dispatch;
}
event.on = function(name, listener) {
var l = listenerByName.get(name), i;
if (arguments.length < 2) return l && l.on;
if (l) {
l.on = null;
listeners = listeners.slice(0, i = listeners.indexOf(l)).concat(listeners.slice(i + 1));
listenerByName.remove(name);
}
if (listener) listeners.push(listenerByName.set(name, {
on: listener
}));
return dispatch;
};
return event;
}
d3.format = function(specifier) {
var match = d3_format_re.exec(specifier), fill = match[1] || " ", align = match[2] || ">", sign = match[3] || "", basePrefix = match[4] || "", zfill = match[5], width = +match[6], comma = match[7], precision = match[8], type = match[9], scale = 1, suffix = "", integer = false;
if (precision) precision = +precision.substring(1);
if (zfill || fill === "0" && align === "=") {
zfill = fill = "0";
align = "=";
if (comma) width -= Math.floor((width - 1) / 4);
}
switch (type) {
case "n":
comma = true;
type = "g";
break;
case "%":
scale = 100;
suffix = "%";
type = "f";
break;
case "p":
scale = 100;
suffix = "%";
type = "r";
break;
case "b":
case "o":
case "x":
case "X":
if (basePrefix) basePrefix = "0" + type.toLowerCase();
case "c":
case "d":
integer = true;
precision = 0;
break;
case "s":
scale = -1;
type = "r";
break;
}
if (basePrefix === "#") basePrefix = "";
if (type == "r" && !precision) type = "g";
type = d3_format_types.get(type) || d3_format_typeDefault;
var zcomma = zfill && comma;
return function(value) {
if (integer && value % 1) return "";
var negative = value < 0 || value === 0 && 1 / value < 0 ? (value = -value, "-") : sign;
if (scale < 0) {
var prefix = d3.formatPrefix(value, precision);
value = prefix.scale(value);
suffix = prefix.symbol;
} else {
value *= scale;
}
value = type(value, precision);
if (!zfill && comma) value = d3_format_group(value);
var length = basePrefix.length + value.length + (zcomma ? 0 : negative.length), padding = length < width ? new Array(length = width - length + 1).join(fill) : "";
if (zcomma) value = d3_format_group(padding + value);
if (d3_format_decimalPoint) value.replace(".", d3_format_decimalPoint);
negative += basePrefix;
return (align === "<" ? negative + value + padding : align === ">" ? padding + negative + value : align === "^" ? padding.substring(0, length >>= 1) + negative + value + padding.substring(length) : negative + (zcomma ? value : padding + value)) + suffix;
};
};
var d3_format_re = /(?:([^{])?([<>=^]))?([+\- ])?(#)?(0)?([0-9]+)?(,)?(\.[0-9]+)?([a-zA-Z%])?/;
var d3_format_types = d3.map({
b: function(x) {
return x.toString(2);
},
c: function(x) {
return String.fromCharCode(x);
},
o: function(x) {
return x.toString(8);
},
x: function(x) {
return x.toString(16);
},
X: function(x) {
return x.toString(16).toUpperCase();
},
g: function(x, p) {
return x.toPrecision(p);
},
e: function(x, p) {
return x.toExponential(p);
},
f: function(x, p) {
return x.toFixed(p);
},
r: function(x, p) {
return (x = d3.round(x, d3_format_precision(x, p))).toFixed(Math.max(0, Math.min(20, d3_format_precision(x * (1 + 1e-15), p))));
}
});
function d3_format_precision(x, p) {
return p - (x ? Math.ceil(Math.log(x) / Math.LN10) : 1);
}
function d3_format_typeDefault(x) {
return x + "";
}
var d3_format_group = d3_identity;
if (d3_format_grouping) {
var d3_format_groupingLength = d3_format_grouping.length;
d3_format_group = function(value) {
var i = value.lastIndexOf("."), f = i >= 0 ? "." + value.substring(i + 1) : (i = value.length,
""), t = [], j = 0, g = d3_format_grouping[0];
while (i > 0 && g > 0) {
t.push(value.substring(i -= g, i + g));
g = d3_format_grouping[j = (j + 1) % d3_format_groupingLength];
}
return t.reverse().join(d3_format_thousandsSeparator || "") + f;
};
}
var d3_formatPrefixes = [ "y", "z", "a", "f", "p", "n", "µ", "m", "", "k", "M", "G", "T", "P", "E", "Z", "Y" ].map(d3_formatPrefix);
d3.formatPrefix = function(value, precision) {
var i = 0;
if (value) {
if (value < 0) value *= -1;
if (precision) value = d3.round(value, d3_format_precision(value, precision));
i = 1 + Math.floor(1e-12 + Math.log(value) / Math.LN10);
i = Math.max(-24, Math.min(24, Math.floor((i <= 0 ? i + 1 : i - 1) / 3) * 3));
}
return d3_formatPrefixes[8 + i / 3];
};
function d3_formatPrefix(d, i) {
var k = Math.pow(10, Math.abs(8 - i) * 3);
return {
scale: i > 8 ? function(d) {
return d / k;
} : function(d) {
return d * k;
},
symbol: d
};
}
var d3_ease_default = function() {
return d3_identity;
};
var d3_ease = d3.map({
linear: d3_ease_default,
poly: d3_ease_poly,
quad: function() {
return d3_ease_quad;
},
cubic: function() {
return d3_ease_cubic;
},
sin: function() {
return d3_ease_sin;
},
exp: function() {
return d3_ease_exp;
},
circle: function() {
return d3_ease_circle;
},
elastic: d3_ease_elastic,
back: d3_ease_back,
bounce: function() {
return d3_ease_bounce;
}
});
var d3_ease_mode = d3.map({
"in": d3_identity,
out: d3_ease_reverse,
"in-out": d3_ease_reflect,
"out-in": function(f) {
return d3_ease_reflect(d3_ease_reverse(f));
}
});
d3.ease = function(name) {
var i = name.indexOf("-"), t = i >= 0 ? name.substring(0, i) : name, m = i >= 0 ? name.substring(i + 1) : "in";
t = d3_ease.get(t) || d3_ease_default;
m = d3_ease_mode.get(m) || d3_identity;
return d3_ease_clamp(m(t.apply(null, Array.prototype.slice.call(arguments, 1))));
};
function d3_ease_clamp(f) {
return function(t) {
return t <= 0 ? 0 : t >= 1 ? 1 : f(t);
};
}
function d3_ease_reverse(f) {
return function(t) {
return 1 - f(1 - t);
};
}
function d3_ease_reflect(f) {
return function(t) {
return .5 * (t < .5 ? f(2 * t) : 2 - f(2 - 2 * t));
};
}
function d3_ease_quad(t) {
return t * t;
}
function d3_ease_cubic(t) {
return t * t * t;
}
function d3_ease_cubicInOut(t) {
if (t <= 0) return 0;
if (t >= 1) return 1;
var t2 = t * t, t3 = t2 * t;
return 4 * (t < .5 ? t3 : 3 * (t - t2) + t3 - .75);
}
function d3_ease_poly(e) {
return function(t) {
return Math.pow(t, e);
};
}
function d3_ease_sin(t) {
return 1 - Math.cos(t * π / 2);
}
function d3_ease_exp(t) {
return Math.pow(2, 10 * (t - 1));
}
function d3_ease_circle(t) {
return 1 - Math.sqrt(1 - t * t);
}
function d3_ease_elastic(a, p) {
var s;
if (arguments.length < 2) p = .45;
if (arguments.length) s = p / (2 * π) * Math.asin(1 / a); else a = 1, s = p / 4;
return function(t) {
return 1 + a * Math.pow(2, 10 * -t) * Math.sin((t - s) * 2 * π / p);
};
}
function d3_ease_back(s) {
if (!s) s = 1.70158;
return function(t) {
return t * t * ((s + 1) * t - s);
};
}
function d3_ease_bounce(t) {
return t < 1 / 2.75 ? 7.5625 * t * t : t < 2 / 2.75 ? 7.5625 * (t -= 1.5 / 2.75) * t + .75 : t < 2.5 / 2.75 ? 7.5625 * (t -= 2.25 / 2.75) * t + .9375 : 7.5625 * (t -= 2.625 / 2.75) * t + .984375;
}
d3.event = null;
function d3_eventCancel() {
d3.event.stopPropagation();
d3.event.preventDefault();
}
function d3_eventSource() {
var e = d3.event, s;
while (s = e.sourceEvent) e = s;
return e;
}
function d3_eventDispatch(target) {
var dispatch = new d3_dispatch(), i = 0, n = arguments.length;
while (++i < n) dispatch[arguments[i]] = d3_dispatch_event(dispatch);
dispatch.of = function(thiz, argumentz) {
return function(e1) {
try {
var e0 = e1.sourceEvent = d3.event;
e1.target = target;
d3.event = e1;
dispatch[e1.type].apply(thiz, argumentz);
} finally {
d3.event = e0;
}
};
};
return dispatch;
}
d3.transform = function(string) {
var g = d3_document.createElementNS(d3.ns.prefix.svg, "g");
return (d3.transform = function(string) {
g.setAttribute("transform", string);
var t = g.transform.baseVal.consolidate();
return new d3_transform(t ? t.matrix : d3_transformIdentity);
})(string);
};
function d3_transform(m) {
var r0 = [ m.a, m.b ], r1 = [ m.c, m.d ], kx = d3_transformNormalize(r0), kz = d3_transformDot(r0, r1), ky = d3_transformNormalize(d3_transformCombine(r1, r0, -kz)) || 0;
if (r0[0] * r1[1] < r1[0] * r0[1]) {
r0[0] *= -1;
r0[1] *= -1;
kx *= -1;
kz *= -1;
}
this.rotate = (kx ? Math.atan2(r0[1], r0[0]) : Math.atan2(-r1[0], r1[1])) * d3_degrees;
this.translate = [ m.e, m.f ];
this.scale = [ kx, ky ];
this.skew = ky ? Math.atan2(kz, ky) * d3_degrees : 0;
}
d3_transform.prototype.toString = function() {
return "translate(" + this.translate + ")rotate(" + this.rotate + ")skewX(" + this.skew + ")scale(" + this.scale + ")";
};
function d3_transformDot(a, b) {
return a[0] * b[0] + a[1] * b[1];
}
function d3_transformNormalize(a) {
var k = Math.sqrt(d3_transformDot(a, a));
if (k) {
a[0] /= k;
a[1] /= k;
}
return k;
}
function d3_transformCombine(a, b, k) {
a[0] += k * b[0];
a[1] += k * b[1];
return a;
}
var d3_transformIdentity = {
a: 1,
b: 0,
c: 0,
d: 1,
e: 0,
f: 0
};
d3.interpolate = function(a, b) {
var i = d3.interpolators.length, f;
while (--i >= 0 && !(f = d3.interpolators[i](a, b))) ;
return f;
};
d3.interpolateNumber = function(a, b) {
b -= a;
return function(t) {
return a + b * t;
};
};
d3.interpolateRound = function(a, b) {
b -= a;
return function(t) {
return Math.round(a + b * t);
};
};
d3.interpolateString = function(a, b) {
var m, i, j, s0 = 0, s1 = 0, s = [], q = [], n, o;
d3_interpolate_number.lastIndex = 0;
for (i = 0; m = d3_interpolate_number.exec(b); ++i) {
if (m.index) s.push(b.substring(s0, s1 = m.index));
q.push({
i: s.length,
x: m[0]
});
s.push(null);
s0 = d3_interpolate_number.lastIndex;
}
if (s0 < b.length) s.push(b.substring(s0));
for (i = 0, n = q.length; (m = d3_interpolate_number.exec(a)) && i < n; ++i) {
o = q[i];
if (o.x == m[0]) {
if (o.i) {
if (s[o.i + 1] == null) {
s[o.i - 1] += o.x;
s.splice(o.i, 1);
for (j = i + 1; j < n; ++j) q[j].i--;
} else {
s[o.i - 1] += o.x + s[o.i + 1];
s.splice(o.i, 2);
for (j = i + 1; j < n; ++j) q[j].i -= 2;
}
} else {
if (s[o.i + 1] == null) {
s[o.i] = o.x;
} else {
s[o.i] = o.x + s[o.i + 1];
s.splice(o.i + 1, 1);
for (j = i + 1; j < n; ++j) q[j].i--;
}
}
q.splice(i, 1);
n--;
i--;
} else {
o.x = d3.interpolateNumber(parseFloat(m[0]), parseFloat(o.x));
}
}
while (i < n) {
o = q.pop();
if (s[o.i + 1] == null) {
s[o.i] = o.x;
} else {
s[o.i] = o.x + s[o.i + 1];
s.splice(o.i + 1, 1);
}
n--;
}
if (s.length === 1) {
return s[0] == null ? q[0].x : function() {
return b;
};
}
return function(t) {
for (i = 0; i < n; ++i) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
};
d3.interpolateTransform = function(a, b) {
var s = [], q = [], n, A = d3.transform(a), B = d3.transform(b), ta = A.translate, tb = B.translate, ra = A.rotate, rb = B.rotate, wa = A.skew, wb = B.skew, ka = A.scale, kb = B.scale;
if (ta[0] != tb[0] || ta[1] != tb[1]) {
s.push("translate(", null, ",", null, ")");
q.push({
i: 1,
x: d3.interpolateNumber(ta[0], tb[0])
}, {
i: 3,
x: d3.interpolateNumber(ta[1], tb[1])
});
} else if (tb[0] || tb[1]) {
s.push("translate(" + tb + ")");
} else {
s.push("");
}
if (ra != rb) {
if (ra - rb > 180) rb += 360; else if (rb - ra > 180) ra += 360;
q.push({
i: s.push(s.pop() + "rotate(", null, ")") - 2,
x: d3.interpolateNumber(ra, rb)
});
} else if (rb) {
s.push(s.pop() + "rotate(" + rb + ")");
}
if (wa != wb) {
q.push({
i: s.push(s.pop() + "skewX(", null, ")") - 2,
x: d3.interpolateNumber(wa, wb)
});
} else if (wb) {
s.push(s.pop() + "skewX(" + wb + ")");
}
if (ka[0] != kb[0] || ka[1] != kb[1]) {
n = s.push(s.pop() + "scale(", null, ",", null, ")");
q.push({
i: n - 4,
x: d3.interpolateNumber(ka[0], kb[0])
}, {
i: n - 2,
x: d3.interpolateNumber(ka[1], kb[1])
});
} else if (kb[0] != 1 || kb[1] != 1) {
s.push(s.pop() + "scale(" + kb + ")");
}
n = q.length;
return function(t) {
var i = -1, o;
while (++i < n) s[(o = q[i]).i] = o.x(t);
return s.join("");
};
};
d3.interpolateRgb = function(a, b) {
a = d3.rgb(a);
b = d3.rgb(b);
var ar = a.r, ag = a.g, ab = a.b, br = b.r - ar, bg = b.g - ag, bb = b.b - ab;
return function(t) {
return "#" + d3_rgb_hex(Math.round(ar + br * t)) + d3_rgb_hex(Math.round(ag + bg * t)) + d3_rgb_hex(Math.round(ab + bb * t));
};
};
d3.interpolateHsl = function(a, b) {
a = d3.hsl(a);
b = d3.hsl(b);
var h0 = a.h, s0 = a.s, l0 = a.l, h1 = b.h - h0, s1 = b.s - s0, l1 = b.l - l0;
if (h1 > 180) h1 -= 360; else if (h1 < -180) h1 += 360;
return function(t) {
return d3_hsl_rgb(h0 + h1 * t, s0 + s1 * t, l0 + l1 * t) + "";
};
};
d3.interpolateLab = function(a, b) {
a = d3.lab(a);
b = d3.lab(b);
var al = a.l, aa = a.a, ab = a.b, bl = b.l - al, ba = b.a - aa, bb = b.b - ab;
return function(t) {
return d3_lab_rgb(al + bl * t, aa + ba * t, ab + bb * t) + "";
};
};
d3.interpolateHcl = function(a, b) {
a = d3.hcl(a);
b = d3.hcl(b);
var ah = a.h, ac = a.c, al = a.l, bh = b.h - ah, bc = b.c - ac, bl = b.l - al;
if (bh > 180) bh -= 360; else if (bh < -180) bh += 360;
return function(t) {
return d3_hcl_lab(ah + bh * t, ac + bc * t, al + bl * t) + "";
};
};
d3.interpolateArray = function(a, b) {
var x = [], c = [], na = a.length, nb = b.length, n0 = Math.min(a.length, b.length), i;
for (i = 0; i < n0; ++i) x.push(d3.interpolate(a[i], b[i]));
for (;i < na; ++i) c[i] = a[i];
for (;i < nb; ++i) c[i] = b[i];
return function(t) {
for (i = 0; i < n0; ++i) c[i] = x[i](t);
return c;
};
};
d3.interpolateObject = function(a, b) {
var i = {}, c = {}, k;
for (k in a) {
if (k in b) {
i[k] = d3_interpolateByName(k)(a[k], b[k]);
} else {
c[k] = a[k];
}
}
for (k in b) {
if (!(k in a)) {
c[k] = b[k];
}
}
return function(t) {
for (k in i) c[k] = i[k](t);
return c;
};
};
var d3_interpolate_number = /[-+]?(?:\d+\.?\d*|\.?\d+)(?:[eE][-+]?\d+)?/g;
function d3_interpolateByName(name) {
return name == "transform" ? d3.interpolateTransform : d3.interpolate;
}
d3.interpolators = [ d3.interpolateObject, function(a, b) {
return b instanceof Array && d3.interpolateArray(a, b);
}, function(a, b) {
return (typeof a === "string" || typeof b === "string") && d3.interpolateString(a + "", b + "");
}, function(a, b) {
return (typeof b === "string" ? d3_rgb_names.has(b) || /^(#|rgb\(|hsl\()/.test(b) : b instanceof d3_Color) && d3.interpolateRgb(a, b);
}, function(a, b) {
return !isNaN(a = +a) && !isNaN(b = +b) && d3.interpolateNumber(a, b);
} ];
function d3_uninterpolateNumber(a, b) {
b = b - (a = +a) ? 1 / (b - a) : 0;
return function(x) {
return (x - a) * b;
};
}
function d3_uninterpolateClamp(a, b) {
b = b - (a = +a) ? 1 / (b - a) : 0;
return function(x) {
return Math.max(0, Math.min(1, (x - a) * b));
};
}
function d3_Color() {}
d3_Color.prototype.toString = function() {
return this.rgb() + "";
};
d3.rgb = function(r, g, b) {
return arguments.length === 1 ? r instanceof d3_Rgb ? d3_rgb(r.r, r.g, r.b) : d3_rgb_parse("" + r, d3_rgb, d3_hsl_rgb) : d3_rgb(~~r, ~~g, ~~b);
};
function d3_rgb(r, g, b) {
return new d3_Rgb(r, g, b);
}
function d3_Rgb(r, g, b) {
this.r = r;
this.g = g;
this.b = b;
}
var d3_rgbPrototype = d3_Rgb.prototype = new d3_Color();
d3_rgbPrototype.brighter = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
var r = this.r, g = this.g, b = this.b, i = 30;
if (!r && !g && !b) return d3_rgb(i, i, i);
if (r && r < i) r = i;
if (g && g < i) g = i;
if (b && b < i) b = i;
return d3_rgb(Math.min(255, Math.floor(r / k)), Math.min(255, Math.floor(g / k)), Math.min(255, Math.floor(b / k)));
};
d3_rgbPrototype.darker = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_rgb(Math.floor(k * this.r), Math.floor(k * this.g), Math.floor(k * this.b));
};
d3_rgbPrototype.hsl = function() {
return d3_rgb_hsl(this.r, this.g, this.b);
};
d3_rgbPrototype.toString = function() {
return "#" + d3_rgb_hex(this.r) + d3_rgb_hex(this.g) + d3_rgb_hex(this.b);
};
function d3_rgb_hex(v) {
return v < 16 ? "0" + Math.max(0, v).toString(16) : Math.min(255, v).toString(16);
}
function d3_rgb_parse(format, rgb, hsl) {
var r = 0, g = 0, b = 0, m1, m2, name;
m1 = /([a-z]+)\((.*)\)/i.exec(format);
if (m1) {
m2 = m1[2].split(",");
switch (m1[1]) {
case "hsl":
{
return hsl(parseFloat(m2[0]), parseFloat(m2[1]) / 100, parseFloat(m2[2]) / 100);
}
case "rgb":
{
return rgb(d3_rgb_parseNumber(m2[0]), d3_rgb_parseNumber(m2[1]), d3_rgb_parseNumber(m2[2]));
}
}
}
if (name = d3_rgb_names.get(format)) return rgb(name.r, name.g, name.b);
if (format != null && format.charAt(0) === "#") {
if (format.length === 4) {
r = format.charAt(1);
r += r;
g = format.charAt(2);
g += g;
b = format.charAt(3);
b += b;
} else if (format.length === 7) {
r = format.substring(1, 3);
g = format.substring(3, 5);
b = format.substring(5, 7);
}
r = parseInt(r, 16);
g = parseInt(g, 16);
b = parseInt(b, 16);
}
return rgb(r, g, b);
}
function d3_rgb_hsl(r, g, b) {
var min = Math.min(r /= 255, g /= 255, b /= 255), max = Math.max(r, g, b), d = max - min, h, s, l = (max + min) / 2;
if (d) {
s = l < .5 ? d / (max + min) : d / (2 - max - min);
if (r == max) h = (g - b) / d + (g < b ? 6 : 0); else if (g == max) h = (b - r) / d + 2; else h = (r - g) / d + 4;
h *= 60;
} else {
s = h = 0;
}
return d3_hsl(h, s, l);
}
function d3_rgb_lab(r, g, b) {
r = d3_rgb_xyz(r);
g = d3_rgb_xyz(g);
b = d3_rgb_xyz(b);
var x = d3_xyz_lab((.4124564 * r + .3575761 * g + .1804375 * b) / d3_lab_X), y = d3_xyz_lab((.2126729 * r + .7151522 * g + .072175 * b) / d3_lab_Y), z = d3_xyz_lab((.0193339 * r + .119192 * g + .9503041 * b) / d3_lab_Z);
return d3_lab(116 * y - 16, 500 * (x - y), 200 * (y - z));
}
function d3_rgb_xyz(r) {
return (r /= 255) <= .04045 ? r / 12.92 : Math.pow((r + .055) / 1.055, 2.4);
}
function d3_rgb_parseNumber(c) {
var f = parseFloat(c);
return c.charAt(c.length - 1) === "%" ? Math.round(f * 2.55) : f;
}
var d3_rgb_names = d3.map({
aliceblue: "#f0f8ff",
antiquewhite: "#faebd7",
aqua: "#00ffff",
aquamarine: "#7fffd4",
azure: "#f0ffff",
beige: "#f5f5dc",
bisque: "#ffe4c4",
black: "#000000",
blanchedalmond: "#ffebcd",
blue: "#0000ff",
blueviolet: "#8a2be2",
brown: "#a52a2a",
burlywood: "#deb887",
cadetblue: "#5f9ea0",
chartreuse: "#7fff00",
chocolate: "#d2691e",
coral: "#ff7f50",
cornflowerblue: "#6495ed",
cornsilk: "#fff8dc",
crimson: "#dc143c",
cyan: "#00ffff",
darkblue: "#00008b",
darkcyan: "#008b8b",
darkgoldenrod: "#b8860b",
darkgray: "#a9a9a9",
darkgreen: "#006400",
darkgrey: "#a9a9a9",
darkkhaki: "#bdb76b",
darkmagenta: "#8b008b",
darkolivegreen: "#556b2f",
darkorange: "#ff8c00",
darkorchid: "#9932cc",
darkred: "#8b0000",
darksalmon: "#e9967a",
darkseagreen: "#8fbc8f",
darkslateblue: "#483d8b",
darkslategray: "#2f4f4f",
darkslategrey: "#2f4f4f",
darkturquoise: "#00ced1",
darkviolet: "#9400d3",
deeppink: "#ff1493",
deepskyblue: "#00bfff",
dimgray: "#696969",
dimgrey: "#696969",
dodgerblue: "#1e90ff",
firebrick: "#b22222",
floralwhite: "#fffaf0",
forestgreen: "#228b22",
fuchsia: "#ff00ff",
gainsboro: "#dcdcdc",
ghostwhite: "#f8f8ff",
gold: "#ffd700",
goldenrod: "#daa520",
gray: "#808080",
green: "#008000",
greenyellow: "#adff2f",
grey: "#808080",
honeydew: "#f0fff0",
hotpink: "#ff69b4",
indianred: "#cd5c5c",
indigo: "#4b0082",
ivory: "#fffff0",
khaki: "#f0e68c",
lavender: "#e6e6fa",
lavenderblush: "#fff0f5",
lawngreen: "#7cfc00",
lemonchiffon: "#fffacd",
lightblue: "#add8e6",
lightcoral: "#f08080",
lightcyan: "#e0ffff",
lightgoldenrodyellow: "#fafad2",
lightgray: "#d3d3d3",
lightgreen: "#90ee90",
lightgrey: "#d3d3d3",
lightpink: "#ffb6c1",
lightsalmon: "#ffa07a",
lightseagreen: "#20b2aa",
lightskyblue: "#87cefa",
lightslategray: "#778899",
lightslategrey: "#778899",
lightsteelblue: "#b0c4de",
lightyellow: "#ffffe0",
lime: "#00ff00",
limegreen: "#32cd32",
linen: "#faf0e6",
magenta: "#ff00ff",
maroon: "#800000",
mediumaquamarine: "#66cdaa",
mediumblue: "#0000cd",
mediumorchid: "#ba55d3",
mediumpurple: "#9370db",
mediumseagreen: "#3cb371",
mediumslateblue: "#7b68ee",
mediumspringgreen: "#00fa9a",
mediumturquoise: "#48d1cc",
mediumvioletred: "#c71585",
midnightblue: "#191970",
mintcream: "#f5fffa",
mistyrose: "#ffe4e1",
moccasin: "#ffe4b5",
navajowhite: "#ffdead",
navy: "#000080",
oldlace: "#fdf5e6",
olive: "#808000",
olivedrab: "#6b8e23",
orange: "#ffa500",
orangered: "#ff4500",
orchid: "#da70d6",
palegoldenrod: "#eee8aa",
palegreen: "#98fb98",
paleturquoise: "#afeeee",
palevioletred: "#db7093",
papayawhip: "#ffefd5",
peachpuff: "#ffdab9",
peru: "#cd853f",
pink: "#ffc0cb",
plum: "#dda0dd",
powderblue: "#b0e0e6",
purple: "#800080",
red: "#ff0000",
rosybrown: "#bc8f8f",
royalblue: "#4169e1",
saddlebrown: "#8b4513",
salmon: "#fa8072",
sandybrown: "#f4a460",
seagreen: "#2e8b57",
seashell: "#fff5ee",
sienna: "#a0522d",
silver: "#c0c0c0",
skyblue: "#87ceeb",
slateblue: "#6a5acd",
slategray: "#708090",
slategrey: "#708090",
snow: "#fffafa",
springgreen: "#00ff7f",
steelblue: "#4682b4",
tan: "#d2b48c",
teal: "#008080",
thistle: "#d8bfd8",
tomato: "#ff6347",
turquoise: "#40e0d0",
violet: "#ee82ee",
wheat: "#f5deb3",
white: "#ffffff",
whitesmoke: "#f5f5f5",
yellow: "#ffff00",
yellowgreen: "#9acd32"
});
d3_rgb_names.forEach(function(key, value) {
d3_rgb_names.set(key, d3_rgb_parse(value, d3_rgb, d3_hsl_rgb));
});
d3.hsl = function(h, s, l) {
return arguments.length === 1 ? h instanceof d3_Hsl ? d3_hsl(h.h, h.s, h.l) : d3_rgb_parse("" + h, d3_rgb_hsl, d3_hsl) : d3_hsl(+h, +s, +l);
};
function d3_hsl(h, s, l) {
return new d3_Hsl(h, s, l);
}
function d3_Hsl(h, s, l) {
this.h = h;
this.s = s;
this.l = l;
}
var d3_hslPrototype = d3_Hsl.prototype = new d3_Color();
d3_hslPrototype.brighter = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_hsl(this.h, this.s, this.l / k);
};
d3_hslPrototype.darker = function(k) {
k = Math.pow(.7, arguments.length ? k : 1);
return d3_hsl(this.h, this.s, k * this.l);
};
d3_hslPrototype.rgb = function() {
return d3_hsl_rgb(this.h, this.s, this.l);
};
function d3_hsl_rgb(h, s, l) {
var m1, m2;
h = h % 360;
if (h < 0) h += 360;
s = s < 0 ? 0 : s > 1 ? 1 : s;
l = l < 0 ? 0 : l > 1 ? 1 : l;
m2 = l <= .5 ? l * (1 + s) : l + s - l * s;
m1 = 2 * l - m2;
function v(h) {
if (h > 360) h -= 360; else if (h < 0) h += 360;
if (h < 60) return m1 + (m2 - m1) * h / 60;
if (h < 180) return m2;
if (h < 240) return m1 + (m2 - m1) * (240 - h) / 60;
return m1;
}
function vv(h) {
return Math.round(v(h) * 255);
}
return d3_rgb(vv(h + 120), vv(h), vv(h - 120));
}
d3.hcl = function(h, c, l) {
return arguments.length === 1 ? h instanceof d3_Hcl ? d3_hcl(h.h, h.c, h.l) : h instanceof d3_Lab ? d3_lab_hcl(h.l, h.a, h.b) : d3_lab_hcl((h = d3_rgb_lab((h = d3.rgb(h)).r, h.g, h.b)).l, h.a, h.b) : d3_hcl(+h, +c, +l);
};
function d3_hcl(h, c, l) {
return new d3_Hcl(h, c, l);
}
function d3_Hcl(h, c, l) {
this.h = h;
this.c = c;
this.l = l;
}
var d3_hclPrototype = d3_Hcl.prototype = new d3_Color();
d3_hclPrototype.brighter = function(k) {
return d3_hcl(this.h, this.c, Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.darker = function(k) {
return d3_hcl(this.h, this.c, Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)));
};
d3_hclPrototype.rgb = function() {
return d3_hcl_lab(this.h, this.c, this.l).rgb();
};
function d3_hcl_lab(h, c, l) {
return d3_lab(l, Math.cos(h *= d3_radians) * c, Math.sin(h) * c);
}
d3.lab = function(l, a, b) {
return arguments.length === 1 ? l instanceof d3_Lab ? d3_lab(l.l, l.a, l.b) : l instanceof d3_Hcl ? d3_hcl_lab(l.l, l.c, l.h) : d3_rgb_lab((l = d3.rgb(l)).r, l.g, l.b) : d3_lab(+l, +a, +b);
};
function d3_lab(l, a, b) {
return new d3_Lab(l, a, b);
}
function d3_Lab(l, a, b) {
this.l = l;
this.a = a;
this.b = b;
}
var d3_lab_K = 18;
var d3_lab_X = .95047, d3_lab_Y = 1, d3_lab_Z = 1.08883;
var d3_labPrototype = d3_Lab.prototype = new d3_Color();
d3_labPrototype.brighter = function(k) {
return d3_lab(Math.min(100, this.l + d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.darker = function(k) {
return d3_lab(Math.max(0, this.l - d3_lab_K * (arguments.length ? k : 1)), this.a, this.b);
};
d3_labPrototype.rgb = function() {
return d3_lab_rgb(this.l, this.a, this.b);
};
function d3_lab_rgb(l, a, b) {
var y = (l + 16) / 116, x = y + a / 500, z = y - b / 200;
x = d3_lab_xyz(x) * d3_lab_X;
y = d3_lab_xyz(y) * d3_lab_Y;
z = d3_lab_xyz(z) * d3_lab_Z;
return d3_rgb(d3_xyz_rgb(3.2404542 * x - 1.5371385 * y - .4985314 * z), d3_xyz_rgb(-.969266 * x + 1.8760108 * y + .041556 * z), d3_xyz_rgb(.0556434 * x - .2040259 * y + 1.0572252 * z));
}
function d3_lab_hcl(l, a, b) {
return d3_hcl(Math.atan2(b, a) / π * 180, Math.sqrt(a * a + b * b), l);
}
function d3_lab_xyz(x) {
return x > .206893034 ? x * x * x : (x - 4 / 29) / 7.787037;
}
function d3_xyz_lab(x) {
return x > .008856 ? Math.pow(x, 1 / 3) : 7.787037 * x + 4 / 29;
}
function d3_xyz_rgb(r) {
return Math.round(255 * (r <= .00304 ? 12.92 * r : 1.055 * Math.pow(r, 1 / 2.4) - .055));
}
function d3_selection(groups) {
d3_arraySubclass(groups, d3_selectionPrototype);
return groups;
}
var d3_select = function(s, n) {
return n.querySelector(s);
}, d3_selectAll = function(s, n) {
return n.querySelectorAll(s);
}, d3_selectRoot = d3_document.documentElement, d3_selectMatcher = d3_selectRoot.matchesSelector || d3_selectRoot.webkitMatchesSelector || d3_selectRoot.mozMatchesSelector || d3_selectRoot.msMatchesSelector || d3_selectRoot.oMatchesSelector, d3_selectMatches = function(n, s) {
return d3_selectMatcher.call(n, s);
};
if (typeof Sizzle === "function") {
d3_select = function(s, n) {
return Sizzle(s, n)[0] || null;
};
d3_selectAll = function(s, n) {
return Sizzle.uniqueSort(Sizzle(s, n));
};
d3_selectMatches = Sizzle.matchesSelector;
}
var d3_selectionPrototype = [];
d3.selection = function() {
return d3_selectionRoot;
};
d3.selection.prototype = d3_selectionPrototype;
d3_selectionPrototype.select = function(selector) {
var subgroups = [], subgroup, subnode, group, node;
if (typeof selector !== "function") selector = d3_selection_selector(selector);
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
subgroup.parentNode = (group = this[j]).parentNode;
for (var i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroup.push(subnode = selector.call(node, node.__data__, i));
if (subnode && "__data__" in node) subnode.__data__ = node.__data__;
} else {
subgroup.push(null);
}
}
}
return d3_selection(subgroups);
};
function d3_selection_selector(selector) {
return function() {
return d3_select(selector, this);
};
}
d3_selectionPrototype.selectAll = function(selector) {
var subgroups = [], subgroup, node;
if (typeof selector !== "function") selector = d3_selection_selectorAll(selector);
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroups.push(subgroup = d3_array(selector.call(node, node.__data__, i)));
subgroup.parentNode = node;
}
}
}
return d3_selection(subgroups);
};
function d3_selection_selectorAll(selector) {
return function() {
return d3_selectAll(selector, this);
};
}
d3_selectionPrototype.attr = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") {
var node = this.node();
name = d3.ns.qualify(name);
return name.local ? node.getAttributeNS(name.space, name.local) : node.getAttribute(name);
}
for (value in name) this.each(d3_selection_attr(value, name[value]));
return this;
}
return this.each(d3_selection_attr(name, value));
};
function d3_selection_attr(name, value) {
name = d3.ns.qualify(name);
function attrNull() {
this.removeAttribute(name);
}
function attrNullNS() {
this.removeAttributeNS(name.space, name.local);
}
function attrConstant() {
this.setAttribute(name, value);
}
function attrConstantNS() {
this.setAttributeNS(name.space, name.local, value);
}
function attrFunction() {
var x = value.apply(this, arguments);
if (x == null) this.removeAttribute(name); else this.setAttribute(name, x);
}
function attrFunctionNS() {
var x = value.apply(this, arguments);
if (x == null) this.removeAttributeNS(name.space, name.local); else this.setAttributeNS(name.space, name.local, x);
}
return value == null ? name.local ? attrNullNS : attrNull : typeof value === "function" ? name.local ? attrFunctionNS : attrFunction : name.local ? attrConstantNS : attrConstant;
}
d3_selectionPrototype.classed = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") {
var node = this.node(), n = (name = name.trim().split(/^|\s+/g)).length, i = -1;
if (value = node.classList) {
while (++i < n) if (!value.contains(name[i])) return false;
} else {
value = node.className;
if (value.baseVal != null) value = value.baseVal;
while (++i < n) if (!d3_selection_classedRe(name[i]).test(value)) return false;
}
return true;
}
for (value in name) this.each(d3_selection_classed(value, name[value]));
return this;
}
return this.each(d3_selection_classed(name, value));
};
function d3_selection_classedRe(name) {
return new RegExp("(?:^|\\s+)" + d3.requote(name) + "(?:\\s+|$)", "g");
}
function d3_selection_classed(name, value) {
name = name.trim().split(/\s+/).map(d3_selection_classedName);
var n = name.length;
function classedConstant() {
var i = -1;
while (++i < n) name[i](this, value);
}
function classedFunction() {
var i = -1, x = value.apply(this, arguments);
while (++i < n) name[i](this, x);
}
return typeof value === "function" ? classedFunction : classedConstant;
}
function d3_selection_classedName(name) {
var re = d3_selection_classedRe(name);
return function(node, value) {
if (c = node.classList) return value ? c.add(name) : c.remove(name);
var c = node.className, cb = c.baseVal != null, cv = cb ? c.baseVal : c;
if (value) {
re.lastIndex = 0;
if (!re.test(cv)) {
cv = d3_collapse(cv + " " + name);
if (cb) c.baseVal = cv; else node.className = cv;
}
} else if (cv) {
cv = d3_collapse(cv.replace(re, " "));
if (cb) c.baseVal = cv; else node.className = cv;
}
};
}
d3_selectionPrototype.style = function(name, value, priority) {
var n = arguments.length;
if (n < 3) {
if (typeof name !== "string") {
if (n < 2) value = "";
for (priority in name) this.each(d3_selection_style(priority, name[priority], value));
return this;
}
if (n < 2) return d3_window.getComputedStyle(this.node(), null).getPropertyValue(name);
priority = "";
}
return this.each(d3_selection_style(name, value, priority));
};
function d3_selection_style(name, value, priority) {
function styleNull() {
this.style.removeProperty(name);
}
function styleConstant() {
this.style.setProperty(name, value, priority);
}
function styleFunction() {
var x = value.apply(this, arguments);
if (x == null) this.style.removeProperty(name); else this.style.setProperty(name, x, priority);
}
return value == null ? styleNull : typeof value === "function" ? styleFunction : styleConstant;
}
d3_selectionPrototype.property = function(name, value) {
if (arguments.length < 2) {
if (typeof name === "string") return this.node()[name];
for (value in name) this.each(d3_selection_property(value, name[value]));
return this;
}
return this.each(d3_selection_property(name, value));
};
function d3_selection_property(name, value) {
function propertyNull() {
delete this[name];
}
function propertyConstant() {
this[name] = value;
}
function propertyFunction() {
var x = value.apply(this, arguments);
if (x == null) delete this[name]; else this[name] = x;
}
return value == null ? propertyNull : typeof value === "function" ? propertyFunction : propertyConstant;
}
d3_selectionPrototype.text = function(value) {
return arguments.length ? this.each(typeof value === "function" ? function() {
var v = value.apply(this, arguments);
this.textContent = v == null ? "" : v;
} : value == null ? function() {
this.textContent = "";
} : function() {
this.textContent = value;
}) : this.node().textContent;
};
d3_selectionPrototype.html = function(value) {
return arguments.length ? this.each(typeof value === "function" ? function() {
var v = value.apply(this, arguments);
this.innerHTML = v == null ? "" : v;
} : value == null ? function() {
this.innerHTML = "";
} : function() {
this.innerHTML = value;
}) : this.node().innerHTML;
};
d3_selectionPrototype.append = function(name) {
name = d3.ns.qualify(name);
function append() {
return this.appendChild(d3_document.createElementNS(this.namespaceURI, name));
}
function appendNS() {
return this.appendChild(d3_document.createElementNS(name.space, name.local));
}
return this.select(name.local ? appendNS : append);
};
d3_selectionPrototype.insert = function(name, before) {
name = d3.ns.qualify(name);
function insert() {
return this.insertBefore(d3_document.createElementNS(this.namespaceURI, name), d3_select(before, this));
}
function insertNS() {
return this.insertBefore(d3_document.createElementNS(name.space, name.local), d3_select(before, this));
}
return this.select(name.local ? insertNS : insert);
};
d3_selectionPrototype.remove = function() {
return this.each(function() {
var parent = this.parentNode;
if (parent) parent.removeChild(this);
});
};
d3_selectionPrototype.data = function(value, key) {
var i = -1, n = this.length, group, node;
if (!arguments.length) {
value = new Array(n = (group = this[0]).length);
while (++i < n) {
if (node = group[i]) {
value[i] = node.__data__;
}
}
return value;
}
function bind(group, groupData) {
var i, n = group.length, m = groupData.length, n0 = Math.min(n, m), updateNodes = new Array(m), enterNodes = new Array(m), exitNodes = new Array(n), node, nodeData;
if (key) {
var nodeByKeyValue = new d3_Map(), dataByKeyValue = new d3_Map(), keyValues = [], keyValue;
for (i = -1; ++i < n; ) {
keyValue = key.call(node = group[i], node.__data__, i);
if (nodeByKeyValue.has(keyValue)) {
exitNodes[i] = node;
} else {
nodeByKeyValue.set(keyValue, node);
}
keyValues.push(keyValue);
}
for (i = -1; ++i < m; ) {
keyValue = key.call(groupData, nodeData = groupData[i], i);
if (node = nodeByKeyValue.get(keyValue)) {
updateNodes[i] = node;
node.__data__ = nodeData;
} else if (!dataByKeyValue.has(keyValue)) {
enterNodes[i] = d3_selection_dataNode(nodeData);
}
dataByKeyValue.set(keyValue, nodeData);
nodeByKeyValue.remove(keyValue);
}
for (i = -1; ++i < n; ) {
if (nodeByKeyValue.has(keyValues[i])) {
exitNodes[i] = group[i];
}
}
} else {
for (i = -1; ++i < n0; ) {
node = group[i];
nodeData = groupData[i];
if (node) {
node.__data__ = nodeData;
updateNodes[i] = node;
} else {
enterNodes[i] = d3_selection_dataNode(nodeData);
}
}
for (;i < m; ++i) {
enterNodes[i] = d3_selection_dataNode(groupData[i]);
}
for (;i < n; ++i) {
exitNodes[i] = group[i];
}
}
enterNodes.update = updateNodes;
enterNodes.parentNode = updateNodes.parentNode = exitNodes.parentNode = group.parentNode;
enter.push(enterNodes);
update.push(updateNodes);
exit.push(exitNodes);
}
var enter = d3_selection_enter([]), update = d3_selection([]), exit = d3_selection([]);
if (typeof value === "function") {
while (++i < n) {
bind(group = this[i], value.call(group, group.parentNode.__data__, i));
}
} else {
while (++i < n) {
bind(group = this[i], value);
}
}
update.enter = function() {
return enter;
};
update.exit = function() {
return exit;
};
return update;
};
function d3_selection_dataNode(data) {
return {
__data__: data
};
}
d3_selectionPrototype.datum = function(value) {
return arguments.length ? this.property("__data__", value) : this.property("__data__");
};
d3_selectionPrototype.filter = function(filter) {
var subgroups = [], subgroup, group, node;
if (typeof filter !== "function") filter = d3_selection_filter(filter);
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
subgroup.parentNode = (group = this[j]).parentNode;
for (var i = 0, n = group.length; i < n; i++) {
if ((node = group[i]) && filter.call(node, node.__data__, i)) {
subgroup.push(node);
}
}
}
return d3_selection(subgroups);
};
function d3_selection_filter(selector) {
return function() {
return d3_selectMatches(this, selector);
};
}
d3_selectionPrototype.order = function() {
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = group.length - 1, next = group[i], node; --i >= 0; ) {
if (node = group[i]) {
if (next && next !== node.nextSibling) next.parentNode.insertBefore(node, next);
next = node;
}
}
}
return this;
};
d3_selectionPrototype.sort = function(comparator) {
comparator = d3_selection_sortComparator.apply(this, arguments);
for (var j = -1, m = this.length; ++j < m; ) this[j].sort(comparator);
return this.order();
};
function d3_selection_sortComparator(comparator) {
if (!arguments.length) comparator = d3.ascending;
return function(a, b) {
return !a - !b || comparator(a.__data__, b.__data__);
};
}
d3_selectionPrototype.on = function(type, listener, capture) {
var n = arguments.length;
if (n < 3) {
if (typeof type !== "string") {
if (n < 2) listener = false;
for (capture in type) this.each(d3_selection_on(capture, type[capture], listener));
return this;
}
if (n < 2) return (n = this.node()["__on" + type]) && n._;
capture = false;
}
return this.each(d3_selection_on(type, listener, capture));
};
function d3_selection_on(type, listener, capture) {
var name = "__on" + type, i = type.indexOf(".");
if (i > 0) type = type.substring(0, i);
function onRemove() {
var wrapper = this[name];
if (wrapper) {
this.removeEventListener(type, wrapper, wrapper.$);
delete this[name];
}
}
function onAdd() {
var node = this, args = d3_array(arguments);
onRemove.call(this);
this.addEventListener(type, this[name] = wrapper, wrapper.$ = capture);
wrapper._ = listener;
function wrapper(e) {
var o = d3.event;
d3.event = e;
args[0] = node.__data__;
try {
listener.apply(node, args);
} finally {
d3.event = o;
}
}
}
return listener ? onAdd : onRemove;
}
d3_selectionPrototype.each = function(callback) {
return d3_selection_each(this, function(node, i, j) {
callback.call(node, node.__data__, i, j);
});
};
function d3_selection_each(groups, callback) {
for (var j = 0, m = groups.length; j < m; j++) {
for (var group = groups[j], i = 0, n = group.length, node; i < n; i++) {
if (node = group[i]) callback(node, i, j);
}
}
return groups;
}
d3_selectionPrototype.call = function(callback) {
var args = d3_array(arguments);
callback.apply(args[0] = this, args);
return this;
};
d3_selectionPrototype.empty = function() {
return !this.node();
};
d3_selectionPrototype.node = function() {
for (var j = 0, m = this.length; j < m; j++) {
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
var node = group[i];
if (node) return node;
}
}
return null;
};
d3_selectionPrototype.transition = function() {
var id = d3_transitionInheritId || ++d3_transitionId, subgroups = [], subgroup, node, transition = Object.create(d3_transitionInherit);
transition.time = Date.now();
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) d3_transitionNode(node, i, id, transition);
subgroup.push(node);
}
}
return d3_transition(subgroups, id);
};
var d3_selectionRoot = d3_selection([ [ d3_document ] ]);
d3_selectionRoot[0].parentNode = d3_selectRoot;
d3.select = function(selector) {
return typeof selector === "string" ? d3_selectionRoot.select(selector) : d3_selection([ [ selector ] ]);
};
d3.selectAll = function(selector) {
return typeof selector === "string" ? d3_selectionRoot.selectAll(selector) : d3_selection([ d3_array(selector) ]);
};
function d3_selection_enter(selection) {
d3_arraySubclass(selection, d3_selection_enterPrototype);
return selection;
}
var d3_selection_enterPrototype = [];
d3.selection.enter = d3_selection_enter;
d3.selection.enter.prototype = d3_selection_enterPrototype;
d3_selection_enterPrototype.append = d3_selectionPrototype.append;
d3_selection_enterPrototype.insert = d3_selectionPrototype.insert;
d3_selection_enterPrototype.empty = d3_selectionPrototype.empty;
d3_selection_enterPrototype.node = d3_selectionPrototype.node;
d3_selection_enterPrototype.select = function(selector) {
var subgroups = [], subgroup, subnode, upgroup, group, node;
for (var j = -1, m = this.length; ++j < m; ) {
upgroup = (group = this[j]).update;
subgroups.push(subgroup = []);
subgroup.parentNode = group.parentNode;
for (var i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
subgroup.push(upgroup[i] = subnode = selector.call(group.parentNode, node.__data__, i));
subnode.__data__ = node.__data__;
} else {
subgroup.push(null);
}
}
}
return d3_selection(subgroups);
};
function d3_transition(groups, id) {
d3_arraySubclass(groups, d3_transitionPrototype);
groups.id = id;
return groups;
}
var d3_transitionPrototype = [], d3_transitionId = 0, d3_transitionInheritId, d3_transitionInherit = {
ease: d3_ease_cubicInOut,
delay: 0,
duration: 250
};
d3_transitionPrototype.call = d3_selectionPrototype.call;
d3_transitionPrototype.empty = d3_selectionPrototype.empty;
d3_transitionPrototype.node = d3_selectionPrototype.node;
d3.transition = function(selection) {
return arguments.length ? d3_transitionInheritId ? selection.transition() : selection : d3_selectionRoot.transition();
};
d3.transition.prototype = d3_transitionPrototype;
function d3_transitionNode(node, i, id, inherit) {
var lock = node.__transition__ || (node.__transition__ = {
active: 0,
count: 0
}), transition = lock[id];
if (!transition) {
var time = inherit.time;
transition = lock[id] = {
tween: new d3_Map(),
event: d3.dispatch("start", "end"),
time: time,
ease: inherit.ease,
delay: inherit.delay,
duration: inherit.duration
};
++lock.count;
d3.timer(function(elapsed) {
var d = node.__data__, ease = transition.ease, event = transition.event, delay = transition.delay, duration = transition.duration, tweened = [];
return delay <= elapsed ? start(elapsed) : d3.timer(start, delay, time), 1;
function start(elapsed) {
if (lock.active > id) return stop();
lock.active = id;
event.start.call(node, d, i);
transition.tween.forEach(function(key, value) {
if (value = value.call(node, d, i)) {
tweened.push(value);
}
});
if (!tick(elapsed)) d3.timer(tick, 0, time);
return 1;
}
function tick(elapsed) {
if (lock.active !== id) return stop();
var t = (elapsed - delay) / duration, e = ease(t), n = tweened.length;
while (n > 0) {
tweened[--n].call(node, e);
}
if (t >= 1) {
stop();
event.end.call(node, d, i);
return 1;
}
}
function stop() {
if (--lock.count) delete lock[id]; else delete node.__transition__;
return 1;
}
}, 0, time);
return transition;
}
}
d3_transitionPrototype.select = function(selector) {
var id = this.id, subgroups = [], subgroup, subnode, node;
if (typeof selector !== "function") selector = d3_selection_selector(selector);
for (var j = -1, m = this.length; ++j < m; ) {
subgroups.push(subgroup = []);
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if ((node = group[i]) && (subnode = selector.call(node, node.__data__, i))) {
if ("__data__" in node) subnode.__data__ = node.__data__;
d3_transitionNode(subnode, i, id, node.__transition__[id]);
subgroup.push(subnode);
} else {
subgroup.push(null);
}
}
}
return d3_transition(subgroups, id);
};
d3_transitionPrototype.selectAll = function(selector) {
var id = this.id, subgroups = [], subgroup, subnodes, node, subnode, transition;
if (typeof selector !== "function") selector = d3_selection_selectorAll(selector);
for (var j = -1, m = this.length; ++j < m; ) {
for (var group = this[j], i = -1, n = group.length; ++i < n; ) {
if (node = group[i]) {
transition = node.__transition__[id];
subnodes = selector.call(node, node.__data__, i);
subgroups.push(subgroup = []);
for (var k = -1, o = subnodes.length; ++k < o; ) {
d3_transitionNode(subnode = subnodes[k], k, id, transition);
subgroup.push(subnode);
}
}
}
}
return d3_transition(subgroups, id);
};
d3_transitionPrototype.filter = function(filter) {
var subgroups = [], subgroup, group, node;
if (typeof filter !== "function") filter = d3_selection_filter(filter);
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
if ((node = group[i]) && filter.call(node, node.__data__, i)) {
subgroup.push(node);
}
}
}
return d3_transition(subgroups, this.id, this.time).ease(this.ease());
};
d3_transitionPrototype.attr = function(nameNS, value) {
if (arguments.length < 2) {
for (value in nameNS) this.attr(value, nameNS[value]);
return this;
}
var interpolate = d3_interpolateByName(nameNS), name = d3.ns.qualify(nameNS);
function attrNull() {
this.removeAttribute(name);
}
function attrNullNS() {
this.removeAttributeNS(name.space, name.local);
}
return d3_transition_tween(this, "attr." + nameNS, value, function(b) {
function attrString() {
var a = this.getAttribute(name), i;
return a !== b && (i = interpolate(a, b), function(t) {
this.setAttribute(name, i(t));
});
}
function attrStringNS() {
var a = this.getAttributeNS(name.space, name.local), i;
return a !== b && (i = interpolate(a, b), function(t) {
this.setAttributeNS(name.space, name.local, i(t));
});
}
return b == null ? name.local ? attrNullNS : attrNull : (b += "", name.local ? attrStringNS : attrString);
});
};
d3_transitionPrototype.attrTween = function(nameNS, tween) {
var name = d3.ns.qualify(nameNS);
function attrTween(d, i) {
var f = tween.call(this, d, i, this.getAttribute(name));
return f && function(t) {
this.setAttribute(name, f(t));
};
}
function attrTweenNS(d, i) {
var f = tween.call(this, d, i, this.getAttributeNS(name.space, name.local));
return f && function(t) {
this.setAttributeNS(name.space, name.local, f(t));
};
}
return this.tween("attr." + nameNS, name.local ? attrTweenNS : attrTween);
};
d3_transitionPrototype.style = function(name, value, priority) {
var n = arguments.length;
if (n < 3) {
if (typeof name !== "string") {
if (n < 2) value = "";
for (priority in name) this.style(priority, name[priority], value);
return this;
}
priority = "";
}
var interpolate = d3_interpolateByName(name);
function styleNull() {
this.style.removeProperty(name);
}
return d3_transition_tween(this, "style." + name, value, function(b) {
function styleString() {
var a = d3_window.getComputedStyle(this, null).getPropertyValue(name), i;
return a !== b && (i = interpolate(a, b), function(t) {
this.style.setProperty(name, i(t), priority);
});
}
return b == null ? styleNull : (b += "", styleString);
});
};
d3_transitionPrototype.styleTween = function(name, tween, priority) {
if (arguments.length < 3) priority = "";
return this.tween("style." + name, function(d, i) {
var f = tween.call(this, d, i, d3_window.getComputedStyle(this, null).getPropertyValue(name));
return f && function(t) {
this.style.setProperty(name, f(t), priority);
};
});
};
d3_transitionPrototype.text = function(value) {
return d3_transition_tween(this, "text", value, d3_transition_text);
};
function d3_transition_text(b) {
if (b == null) b = "";
return function() {
this.textContent = b;
};
}
d3_transitionPrototype.remove = function() {
return this.each("end.transition", function() {
var p;
if (!this.__transition__ && (p = this.parentNode)) p.removeChild(this);
});
};
d3_transitionPrototype.ease = function(value) {
var id = this.id;
if (arguments.length < 1) return this.node().__transition__[id].ease;
if (typeof value !== "function") value = d3.ease.apply(d3, arguments);
return d3_selection_each(this, function(node) {
node.__transition__[id].ease = value;
});
};
d3_transitionPrototype.delay = function(value) {
var id = this.id;
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
node.__transition__[id].delay = value.call(node, node.__data__, i, j) | 0;
} : (value |= 0, function(node) {
node.__transition__[id].delay = value;
}));
};
d3_transitionPrototype.duration = function(value) {
var id = this.id;
return d3_selection_each(this, typeof value === "function" ? function(node, i, j) {
node.__transition__[id].duration = Math.max(1, value.call(node, node.__data__, i, j) | 0);
} : (value = Math.max(1, value | 0), function(node) {
node.__transition__[id].duration = value;
}));
};
d3_transitionPrototype.each = function(type, listener) {
var id = this.id;
if (arguments.length < 2) {
var inherit = d3_transitionInherit, inheritId = d3_transitionInheritId;
d3_transitionInheritId = id;
d3_selection_each(this, function(node, i, j) {
d3_transitionInherit = node.__transition__[id];
type.call(node, node.__data__, i, j);
});
d3_transitionInherit = inherit;
d3_transitionInheritId = inheritId;
} else {
d3_selection_each(this, function(node) {
node.__transition__[id].event.on(type, listener);
});
}
return this;
};
d3_transitionPrototype.transition = function() {
var id0 = this.id, id1 = ++d3_transitionId, subgroups = [], subgroup, group, node, transition;
for (var j = 0, m = this.length; j < m; j++) {
subgroups.push(subgroup = []);
for (var group = this[j], i = 0, n = group.length; i < n; i++) {
if (node = group[i]) {
transition = Object.create(node.__transition__[id0]);
transition.delay += transition.duration;
d3_transitionNode(node, i, id1, transition);
}
subgroup.push(node);
}
}
return d3_transition(subgroups, id1);
};
d3_transitionPrototype.tween = function(name, tween) {
var id = this.id;
if (arguments.length < 2) return this.node().__transition__[id].tween.get(name);
return d3_selection_each(this, tween == null ? function(node) {
node.__transition__[id].tween.remove(name);
} : function(node) {
node.__transition__[id].tween.set(name, tween);
});
};
function d3_transition_tween(groups, name, value, tween) {
var id = groups.id;
return d3_selection_each(groups, typeof value === "function" ? function(node, i, j) {
node.__transition__[id].tween.set(name, tween(value.call(node, node.__data__, i, j)));
} : (value = tween(value), function(node) {
node.__transition__[id].tween.set(name, value);
}));
}
var d3_timer_id = 0, d3_timer_byId = {}, d3_timer_queue = null, d3_timer_interval, d3_timer_timeout;
d3.timer = function(callback, delay, then) {
if (arguments.length < 3) {
if (arguments.length < 2) delay = 0; else if (!isFinite(delay)) return;
then = Date.now();
}
var timer = d3_timer_byId[callback.id];
if (timer && timer.callback === callback) {
timer.then = then;
timer.delay = delay;
} else d3_timer_byId[callback.id = ++d3_timer_id] = d3_timer_queue = {
callback: callback,
then: then,
delay: delay,
next: d3_timer_queue
};
if (!d3_timer_interval) {
d3_timer_timeout = clearTimeout(d3_timer_timeout);
d3_timer_interval = 1;
d3_timer_frame(d3_timer_step);
}
};
function d3_timer_step() {
var elapsed, now = Date.now(), t1 = d3_timer_queue;
while (t1) {
elapsed = now - t1.then;
if (elapsed >= t1.delay) t1.flush = t1.callback(elapsed);
t1 = t1.next;
}
var delay = d3_timer_flush() - now;
if (delay > 24) {
if (isFinite(delay)) {
clearTimeout(d3_timer_timeout);
d3_timer_timeout = setTimeout(d3_timer_step, delay);
}
d3_timer_interval = 0;
} else {
d3_timer_interval = 1;
d3_timer_frame(d3_timer_step);
}
}
d3.timer.flush = function() {
var elapsed, now = Date.now(), t1 = d3_timer_queue;
while (t1) {
elapsed = now - t1.then;
if (!t1.delay) t1.flush = t1.callback(elapsed);
t1 = t1.next;
}
d3_timer_flush();
};
function d3_timer_flush() {
var t0 = null, t1 = d3_timer_queue, then = Infinity;
while (t1) {
if (t1.flush) {
delete d3_timer_byId[t1.callback.id];
t1 = t0 ? t0.next = t1.next : d3_timer_queue = t1.next;
} else {
then = Math.min(then, t1.then + t1.delay);
t1 = (t0 = t1).next;
}
}
return then;
}
var d3_timer_frame = d3_window.requestAnimationFrame || d3_window.webkitRequestAnimationFrame || d3_window.mozRequestAnimationFrame || d3_window.oRequestAnimationFrame || d3_window.msRequestAnimationFrame || function(callback) {
setTimeout(callback, 17);
};
d3.mouse = function(container) {
return d3_mousePoint(container, d3_eventSource());
};
var d3_mouse_bug44083 = /WebKit/.test(d3_window.navigator.userAgent) ? -1 : 0;
function d3_mousePoint(container, e) {
var svg = container.ownerSVGElement || container;
if (svg.createSVGPoint) {
var point = svg.createSVGPoint();
if (d3_mouse_bug44083 < 0 && (d3_window.scrollX || d3_window.scrollY)) {
svg = d3.select(d3_document.body).append("svg").style("position", "absolute").style("top", 0).style("left", 0);
var ctm = svg[0][0].getScreenCTM();
d3_mouse_bug44083 = !(ctm.f || ctm.e);
svg.remove();
}
if (d3_mouse_bug44083) {
point.x = e.pageX;
point.y = e.pageY;
} else {
point.x = e.clientX;
point.y = e.clientY;
}
point = point.matrixTransform(container.getScreenCTM().inverse());
return [ point.x, point.y ];
}
var rect = container.getBoundingClientRect();
return [ e.clientX - rect.left - container.clientLeft, e.clientY - rect.top - container.clientTop ];
}
d3.touches = function(container, touches) {
if (arguments.length < 2) touches = d3_eventSource().touches;
return touches ? d3_array(touches).map(function(touch) {
var point = d3_mousePoint(container, touch);
point.identifier = touch.identifier;
return point;
}) : [];
};
function d3_noop() {}
d3.scale = {};
function d3_scaleExtent(domain) {
var start = domain[0], stop = domain[domain.length - 1];
return start < stop ? [ start, stop ] : [ stop, start ];
}
function d3_scaleRange(scale) {
return scale.rangeExtent ? scale.rangeExtent() : d3_scaleExtent(scale.range());
}
function d3_scale_nice(domain, nice) {
var i0 = 0, i1 = domain.length - 1, x0 = domain[i0], x1 = domain[i1], dx;
if (x1 < x0) {
dx = i0, i0 = i1, i1 = dx;
dx = x0, x0 = x1, x1 = dx;
}
if (nice = nice(x1 - x0)) {
domain[i0] = nice.floor(x0);
domain[i1] = nice.ceil(x1);
}
return domain;
}
function d3_scale_niceDefault() {
return Math;
}
d3.scale.linear = function() {
return d3_scale_linear([ 0, 1 ], [ 0, 1 ], d3.interpolate, false);
};
function d3_scale_linear(domain, range, interpolate, clamp) {
var output, input;
function rescale() {
var linear = Math.min(domain.length, range.length) > 2 ? d3_scale_polylinear : d3_scale_bilinear, uninterpolate = clamp ? d3_uninterpolateClamp : d3_uninterpolateNumber;
output = linear(domain, range, uninterpolate, interpolate);
input = linear(range, domain, uninterpolate, d3.interpolate);
return scale;
}
function scale(x) {
return output(x);
}
scale.invert = function(y) {
return input(y);
};
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = x.map(Number);
return rescale();
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return rescale();
};
scale.rangeRound = function(x) {
return scale.range(x).interpolate(d3.interpolateRound);
};
scale.clamp = function(x) {
if (!arguments.length) return clamp;
clamp = x;
return rescale();
};
scale.interpolate = function(x) {
if (!arguments.length) return interpolate;
interpolate = x;
return rescale();
};
scale.ticks = function(m) {
return d3_scale_linearTicks(domain, m);
};
scale.tickFormat = function(m) {
return d3_scale_linearTickFormat(domain, m);
};
scale.nice = function() {
d3_scale_nice(domain, d3_scale_linearNice);
return rescale();
};
scale.copy = function() {
return d3_scale_linear(domain, range, interpolate, clamp);
};
return rescale();
}
function d3_scale_linearRebind(scale, linear) {
return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
}
function d3_scale_linearNice(dx) {
dx = Math.pow(10, Math.round(Math.log(dx) / Math.LN10) - 1);
return dx && {
floor: function(x) {
return Math.floor(x / dx) * dx;
},
ceil: function(x) {
return Math.ceil(x / dx) * dx;
}
};
}
function d3_scale_linearTickRange(domain, m) {
var extent = d3_scaleExtent(domain), span = extent[1] - extent[0], step = Math.pow(10, Math.floor(Math.log(span / m) / Math.LN10)), err = m / span * step;
if (err <= .15) step *= 10; else if (err <= .35) step *= 5; else if (err <= .75) step *= 2;
extent[0] = Math.ceil(extent[0] / step) * step;
extent[1] = Math.floor(extent[1] / step) * step + step * .5;
extent[2] = step;
return extent;
}
function d3_scale_linearTicks(domain, m) {
return d3.range.apply(d3, d3_scale_linearTickRange(domain, m));
}
function d3_scale_linearTickFormat(domain, m) {
return d3.format(",." + Math.max(0, -Math.floor(Math.log(d3_scale_linearTickRange(domain, m)[2]) / Math.LN10 + .01)) + "f");
}
function d3_scale_bilinear(domain, range, uninterpolate, interpolate) {
var u = uninterpolate(domain[0], domain[1]), i = interpolate(range[0], range[1]);
return function(x) {
return i(u(x));
};
}
function d3_scale_polylinear(domain, range, uninterpolate, interpolate) {
var u = [], i = [], j = 0, k = Math.min(domain.length, range.length) - 1;
if (domain[k] < domain[0]) {
domain = domain.slice().reverse();
range = range.slice().reverse();
}
while (++j <= k) {
u.push(uninterpolate(domain[j - 1], domain[j]));
i.push(interpolate(range[j - 1], range[j]));
}
return function(x) {
var j = d3.bisect(domain, x, 1, k) - 1;
return i[j](u[j](x));
};
}
d3.scale.log = function() {
return d3_scale_log(d3.scale.linear(), d3_scale_logp);
};
function d3_scale_log(linear, log) {
var pow = log.pow;
function scale(x) {
return linear(log(x));
}
scale.invert = function(x) {
return pow(linear.invert(x));
};
scale.domain = function(x) {
if (!arguments.length) return linear.domain().map(pow);
log = x[0] < 0 ? d3_scale_logn : d3_scale_logp;
pow = log.pow;
linear.domain(x.map(log));
return scale;
};
scale.nice = function() {
linear.domain(d3_scale_nice(linear.domain(), d3_scale_niceDefault));
return scale;
};
scale.ticks = function() {
var extent = d3_scaleExtent(linear.domain()), ticks = [];
if (extent.every(isFinite)) {
var i = Math.floor(extent[0]), j = Math.ceil(extent[1]), u = pow(extent[0]), v = pow(extent[1]);
if (log === d3_scale_logn) {
ticks.push(pow(i));
for (;i++ < j; ) for (var k = 9; k > 0; k--) ticks.push(pow(i) * k);
} else {
for (;i < j; i++) for (var k = 1; k < 10; k++) ticks.push(pow(i) * k);
ticks.push(pow(i));
}
for (i = 0; ticks[i] < u; i++) {}
for (j = ticks.length; ticks[j - 1] > v; j--) {}
ticks = ticks.slice(i, j);
}
return ticks;
};
scale.tickFormat = function(n, format) {
if (arguments.length < 2) format = d3_scale_logFormat;
if (!arguments.length) return format;
var k = Math.max(.1, n / scale.ticks().length), f = log === d3_scale_logn ? (e = -1e-12,
Math.floor) : (e = 1e-12, Math.ceil), e;
return function(d) {
return d / pow(f(log(d) + e)) <= k ? format(d) : "";
};
};
scale.copy = function() {
return d3_scale_log(linear.copy(), log);
};
return d3_scale_linearRebind(scale, linear);
}
var d3_scale_logFormat = d3.format(".0e");
function d3_scale_logp(x) {
return Math.log(x < 0 ? 0 : x) / Math.LN10;
}
function d3_scale_logn(x) {
return -Math.log(x > 0 ? 0 : -x) / Math.LN10;
}
d3_scale_logp.pow = function(x) {
return Math.pow(10, x);
};
d3_scale_logn.pow = function(x) {
return -Math.pow(10, -x);
};
d3.scale.pow = function() {
return d3_scale_pow(d3.scale.linear(), 1);
};
function d3_scale_pow(linear, exponent) {
var powp = d3_scale_powPow(exponent), powb = d3_scale_powPow(1 / exponent);
function scale(x) {
return linear(powp(x));
}
scale.invert = function(x) {
return powb(linear.invert(x));
};
scale.domain = function(x) {
if (!arguments.length) return linear.domain().map(powb);
linear.domain(x.map(powp));
return scale;
};
scale.ticks = function(m) {
return d3_scale_linearTicks(scale.domain(), m);
};
scale.tickFormat = function(m) {
return d3_scale_linearTickFormat(scale.domain(), m);
};
scale.nice = function() {
return scale.domain(d3_scale_nice(scale.domain(), d3_scale_linearNice));
};
scale.exponent = function(x) {
if (!arguments.length) return exponent;
var domain = scale.domain();
powp = d3_scale_powPow(exponent = x);
powb = d3_scale_powPow(1 / exponent);
return scale.domain(domain);
};
scale.copy = function() {
return d3_scale_pow(linear.copy(), exponent);
};
return d3_scale_linearRebind(scale, linear);
}
function d3_scale_powPow(e) {
return function(x) {
return x < 0 ? -Math.pow(-x, e) : Math.pow(x, e);
};
}
d3.scale.sqrt = function() {
return d3.scale.pow().exponent(.5);
};
d3.scale.ordinal = function() {
return d3_scale_ordinal([], {
t: "range",
a: [ [] ]
});
};
function d3_scale_ordinal(domain, ranger) {
var index, range, rangeBand;
function scale(x) {
return range[((index.get(x) || index.set(x, domain.push(x))) - 1) % range.length];
}
function steps(start, step) {
return d3.range(domain.length).map(function(i) {
return start + step * i;
});
}
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = [];
index = new d3_Map();
var i = -1, n = x.length, xi;
while (++i < n) if (!index.has(xi = x[i])) index.set(xi, domain.push(xi));
return scale[ranger.t].apply(scale, ranger.a);
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
rangeBand = 0;
ranger = {
t: "range",
a: arguments
};
return scale;
};
scale.rangePoints = function(x, padding) {
if (arguments.length < 2) padding = 0;
var start = x[0], stop = x[1], step = (stop - start) / (Math.max(1, domain.length - 1) + padding);
range = steps(domain.length < 2 ? (start + stop) / 2 : start + step * padding / 2, step);
rangeBand = 0;
ranger = {
t: "rangePoints",
a: arguments
};
return scale;
};
scale.rangeBands = function(x, padding, outerPadding) {
if (arguments.length < 2) padding = 0;
if (arguments.length < 3) outerPadding = padding;
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = (stop - start) / (domain.length - padding + 2 * outerPadding);
range = steps(start + step * outerPadding, step);
if (reverse) range.reverse();
rangeBand = step * (1 - padding);
ranger = {
t: "rangeBands",
a: arguments
};
return scale;
};
scale.rangeRoundBands = function(x, padding, outerPadding) {
if (arguments.length < 2) padding = 0;
if (arguments.length < 3) outerPadding = padding;
var reverse = x[1] < x[0], start = x[reverse - 0], stop = x[1 - reverse], step = Math.floor((stop - start) / (domain.length - padding + 2 * outerPadding)), error = stop - start - (domain.length - padding) * step;
range = steps(start + Math.round(error / 2), step);
if (reverse) range.reverse();
rangeBand = Math.round(step * (1 - padding));
ranger = {
t: "rangeRoundBands",
a: arguments
};
return scale;
};
scale.rangeBand = function() {
return rangeBand;
};
scale.rangeExtent = function() {
return d3_scaleExtent(ranger.a[0]);
};
scale.copy = function() {
return d3_scale_ordinal(domain, ranger);
};
return scale.domain(domain);
}
d3.scale.category10 = function() {
return d3.scale.ordinal().range(d3_category10);
};
d3.scale.category20 = function() {
return d3.scale.ordinal().range(d3_category20);
};
d3.scale.category20b = function() {
return d3.scale.ordinal().range(d3_category20b);
};
d3.scale.category20c = function() {
return d3.scale.ordinal().range(d3_category20c);
};
var d3_category10 = [ "#1f77b4", "#ff7f0e", "#2ca02c", "#d62728", "#9467bd", "#8c564b", "#e377c2", "#7f7f7f", "#bcbd22", "#17becf" ];
var d3_category20 = [ "#1f77b4", "#aec7e8", "#ff7f0e", "#ffbb78", "#2ca02c", "#98df8a", "#d62728", "#ff9896", "#9467bd", "#c5b0d5", "#8c564b", "#c49c94", "#e377c2", "#f7b6d2", "#7f7f7f", "#c7c7c7", "#bcbd22", "#dbdb8d", "#17becf", "#9edae5" ];
var d3_category20b = [ "#393b79", "#5254a3", "#6b6ecf", "#9c9ede", "#637939", "#8ca252", "#b5cf6b", "#cedb9c", "#8c6d31", "#bd9e39", "#e7ba52", "#e7cb94", "#843c39", "#ad494a", "#d6616b", "#e7969c", "#7b4173", "#a55194", "#ce6dbd", "#de9ed6" ];
var d3_category20c = [ "#3182bd", "#6baed6", "#9ecae1", "#c6dbef", "#e6550d", "#fd8d3c", "#fdae6b", "#fdd0a2", "#31a354", "#74c476", "#a1d99b", "#c7e9c0", "#756bb1", "#9e9ac8", "#bcbddc", "#dadaeb", "#636363", "#969696", "#bdbdbd", "#d9d9d9" ];
d3.scale.quantile = function() {
return d3_scale_quantile([], []);
};
function d3_scale_quantile(domain, range) {
var thresholds;
function rescale() {
var k = 0, q = range.length;
thresholds = [];
while (++k < q) thresholds[k - 1] = d3.quantile(domain, k / q);
return scale;
}
function scale(x) {
if (isNaN(x = +x)) return NaN;
return range[d3.bisect(thresholds, x)];
}
scale.domain = function(x) {
if (!arguments.length) return domain;
domain = x.filter(function(d) {
return !isNaN(d);
}).sort(d3.ascending);
return rescale();
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return rescale();
};
scale.quantiles = function() {
return thresholds;
};
scale.copy = function() {
return d3_scale_quantile(domain, range);
};
return rescale();
}
d3.scale.quantize = function() {
return d3_scale_quantize(0, 1, [ 0, 1 ]);
};
function d3_scale_quantize(x0, x1, range) {
var kx, i;
function scale(x) {
return range[Math.max(0, Math.min(i, Math.floor(kx * (x - x0))))];
}
function rescale() {
kx = range.length / (x1 - x0);
i = range.length - 1;
return scale;
}
scale.domain = function(x) {
if (!arguments.length) return [ x0, x1 ];
x0 = +x[0];
x1 = +x[x.length - 1];
return rescale();
};
scale.range = function(x) {
if (!arguments.length) return range;
range = x;
return rescale();
};
scale.copy = function() {
return d3_scale_quantize(x0, x1, range);
};
return rescale();
}
d3.scale.threshold = function() {
return d3_scale_threshold([ .5 ], [ 0, 1 ]);
};
function d3_scale_threshold(domain, range) {
function scale(x) {
return range[d3.bisect(domain, x)];
}
scale.domain = function(_) {
if (!arguments.length) return domain;
domain = _;
return scale;
};
scale.range = function(_) {
if (!arguments.length) return range;
range = _;
return scale;
};
scale.copy = function() {
return d3_scale_threshold(domain, range);
};
return scale;
}
d3.scale.identity = function() {
return d3_scale_identity([ 0, 1 ]);
};
function d3_scale_identity(domain) {
function identity(x) {
return +x;
}
identity.invert = identity;
identity.domain = identity.range = function(x) {
if (!arguments.length) return domain;
domain = x.map(identity);
return identity;
};
identity.ticks = function(m) {
return d3_scale_linearTicks(domain, m);
};
identity.tickFormat = function(m) {
return d3_scale_linearTickFormat(domain, m);
};
identity.copy = function() {
return d3_scale_identity(domain);
};
return identity;
}
d3.svg = {};
d3.svg.arc = function() {
var innerRadius = d3_svg_arcInnerRadius, outerRadius = d3_svg_arcOuterRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
function arc() {
var r0 = innerRadius.apply(this, arguments), r1 = outerRadius.apply(this, arguments), a0 = startAngle.apply(this, arguments) + d3_svg_arcOffset, a1 = endAngle.apply(this, arguments) + d3_svg_arcOffset, da = (a1 < a0 && (da = a0,
a0 = a1, a1 = da), a1 - a0), df = da < π ? "0" : "1", c0 = Math.cos(a0), s0 = Math.sin(a0), c1 = Math.cos(a1), s1 = Math.sin(a1);
return da >= d3_svg_arcMax ? r0 ? "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "M0," + r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + -r0 + "A" + r0 + "," + r0 + " 0 1,0 0," + r0 + "Z" : "M0," + r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + -r1 + "A" + r1 + "," + r1 + " 0 1,1 0," + r1 + "Z" : r0 ? "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L" + r0 * c1 + "," + r0 * s1 + "A" + r0 + "," + r0 + " 0 " + df + ",0 " + r0 * c0 + "," + r0 * s0 + "Z" : "M" + r1 * c0 + "," + r1 * s0 + "A" + r1 + "," + r1 + " 0 " + df + ",1 " + r1 * c1 + "," + r1 * s1 + "L0,0" + "Z";
}
arc.innerRadius = function(v) {
if (!arguments.length) return innerRadius;
innerRadius = d3_functor(v);
return arc;
};
arc.outerRadius = function(v) {
if (!arguments.length) return outerRadius;
outerRadius = d3_functor(v);
return arc;
};
arc.startAngle = function(v) {
if (!arguments.length) return startAngle;
startAngle = d3_functor(v);
return arc;
};
arc.endAngle = function(v) {
if (!arguments.length) return endAngle;
endAngle = d3_functor(v);
return arc;
};
arc.centroid = function() {
var r = (innerRadius.apply(this, arguments) + outerRadius.apply(this, arguments)) / 2, a = (startAngle.apply(this, arguments) + endAngle.apply(this, arguments)) / 2 + d3_svg_arcOffset;
return [ Math.cos(a) * r, Math.sin(a) * r ];
};
return arc;
};
var d3_svg_arcOffset = -π / 2, d3_svg_arcMax = 2 * π - 1e-6;
function d3_svg_arcInnerRadius(d) {
return d.innerRadius;
}
function d3_svg_arcOuterRadius(d) {
return d.outerRadius;
}
function d3_svg_arcStartAngle(d) {
return d.startAngle;
}
function d3_svg_arcEndAngle(d) {
return d.endAngle;
}
function d3_svg_line(projection) {
var x = d3_svg_lineX, y = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, tension = .7;
function line(data) {
var segments = [], points = [], i = -1, n = data.length, d, fx = d3_functor(x), fy = d3_functor(y);
function segment() {
segments.push("M", interpolate(projection(points), tension));
}
while (++i < n) {
if (defined.call(this, d = data[i], i)) {
points.push([ +fx.call(this, d, i), +fy.call(this, d, i) ]);
} else if (points.length) {
segment();
points = [];
}
}
if (points.length) segment();
return segments.length ? segments.join("") : null;
}
line.x = function(_) {
if (!arguments.length) return x;
x = _;
return line;
};
line.y = function(_) {
if (!arguments.length) return y;
y = _;
return line;
};
line.defined = function(_) {
if (!arguments.length) return defined;
defined = _;
return line;
};
line.interpolate = function(_) {
if (!arguments.length) return interpolateKey;
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
return line;
};
line.tension = function(_) {
if (!arguments.length) return tension;
tension = _;
return line;
};
return line;
}
d3.svg.line = function() {
return d3_svg_line(d3_identity);
};
function d3_svg_lineX(d) {
return d[0];
}
function d3_svg_lineY(d) {
return d[1];
}
var d3_svg_lineInterpolators = d3.map({
linear: d3_svg_lineLinear,
"linear-closed": d3_svg_lineLinearClosed,
"step-before": d3_svg_lineStepBefore,
"step-after": d3_svg_lineStepAfter,
basis: d3_svg_lineBasis,
"basis-open": d3_svg_lineBasisOpen,
"basis-closed": d3_svg_lineBasisClosed,
bundle: d3_svg_lineBundle,
cardinal: d3_svg_lineCardinal,
"cardinal-open": d3_svg_lineCardinalOpen,
"cardinal-closed": d3_svg_lineCardinalClosed,
monotone: d3_svg_lineMonotone
});
d3_svg_lineInterpolators.forEach(function(key, value) {
value.key = key;
value.closed = /-closed$/.test(key);
});
function d3_svg_lineLinear(points) {
return points.join("L");
}
function d3_svg_lineLinearClosed(points) {
return d3_svg_lineLinear(points) + "Z";
}
function d3_svg_lineStepBefore(points) {
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
while (++i < n) path.push("V", (p = points[i])[1], "H", p[0]);
return path.join("");
}
function d3_svg_lineStepAfter(points) {
var i = 0, n = points.length, p = points[0], path = [ p[0], ",", p[1] ];
while (++i < n) path.push("H", (p = points[i])[0], "V", p[1]);
return path.join("");
}
function d3_svg_lineCardinalOpen(points, tension) {
return points.length < 4 ? d3_svg_lineLinear(points) : points[1] + d3_svg_lineHermite(points.slice(1, points.length - 1), d3_svg_lineCardinalTangents(points, tension));
}
function d3_svg_lineCardinalClosed(points, tension) {
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite((points.push(points[0]),
points), d3_svg_lineCardinalTangents([ points[points.length - 2] ].concat(points, [ points[1] ]), tension));
}
function d3_svg_lineCardinal(points, tension) {
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineCardinalTangents(points, tension));
}
function d3_svg_lineHermite(points, tangents) {
if (tangents.length < 1 || points.length != tangents.length && points.length != tangents.length + 2) {
return d3_svg_lineLinear(points);
}
var quad = points.length != tangents.length, path = "", p0 = points[0], p = points[1], t0 = tangents[0], t = t0, pi = 1;
if (quad) {
path += "Q" + (p[0] - t0[0] * 2 / 3) + "," + (p[1] - t0[1] * 2 / 3) + "," + p[0] + "," + p[1];
p0 = points[1];
pi = 2;
}
if (tangents.length > 1) {
t = tangents[1];
p = points[pi];
pi++;
path += "C" + (p0[0] + t0[0]) + "," + (p0[1] + t0[1]) + "," + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
for (var i = 2; i < tangents.length; i++, pi++) {
p = points[pi];
t = tangents[i];
path += "S" + (p[0] - t[0]) + "," + (p[1] - t[1]) + "," + p[0] + "," + p[1];
}
}
if (quad) {
var lp = points[pi];
path += "Q" + (p[0] + t[0] * 2 / 3) + "," + (p[1] + t[1] * 2 / 3) + "," + lp[0] + "," + lp[1];
}
return path;
}
function d3_svg_lineCardinalTangents(points, tension) {
var tangents = [], a = (1 - tension) / 2, p0, p1 = points[0], p2 = points[1], i = 1, n = points.length;
while (++i < n) {
p0 = p1;
p1 = p2;
p2 = points[i];
tangents.push([ a * (p2[0] - p0[0]), a * (p2[1] - p0[1]) ]);
}
return tangents;
}
function d3_svg_lineBasis(points) {
if (points.length < 3) return d3_svg_lineLinear(points);
var i = 1, n = points.length, pi = points[0], x0 = pi[0], y0 = pi[1], px = [ x0, x0, x0, (pi = points[1])[0] ], py = [ y0, y0, y0, pi[1] ], path = [ x0, ",", y0 ];
d3_svg_lineBasisBezier(path, px, py);
while (++i < n) {
pi = points[i];
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
i = -1;
while (++i < 2) {
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
return path.join("");
}
function d3_svg_lineBasisOpen(points) {
if (points.length < 4) return d3_svg_lineLinear(points);
var path = [], i = -1, n = points.length, pi, px = [ 0 ], py = [ 0 ];
while (++i < 3) {
pi = points[i];
px.push(pi[0]);
py.push(pi[1]);
}
path.push(d3_svg_lineDot4(d3_svg_lineBasisBezier3, px) + "," + d3_svg_lineDot4(d3_svg_lineBasisBezier3, py));
--i;
while (++i < n) {
pi = points[i];
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
return path.join("");
}
function d3_svg_lineBasisClosed(points) {
var path, i = -1, n = points.length, m = n + 4, pi, px = [], py = [];
while (++i < 4) {
pi = points[i % n];
px.push(pi[0]);
py.push(pi[1]);
}
path = [ d3_svg_lineDot4(d3_svg_lineBasisBezier3, px), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, py) ];
--i;
while (++i < m) {
pi = points[i % n];
px.shift();
px.push(pi[0]);
py.shift();
py.push(pi[1]);
d3_svg_lineBasisBezier(path, px, py);
}
return path.join("");
}
function d3_svg_lineBundle(points, tension) {
var n = points.length - 1;
if (n) {
var x0 = points[0][0], y0 = points[0][1], dx = points[n][0] - x0, dy = points[n][1] - y0, i = -1, p, t;
while (++i <= n) {
p = points[i];
t = i / n;
p[0] = tension * p[0] + (1 - tension) * (x0 + t * dx);
p[1] = tension * p[1] + (1 - tension) * (y0 + t * dy);
}
}
return d3_svg_lineBasis(points);
}
function d3_svg_lineDot4(a, b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2] + a[3] * b[3];
}
var d3_svg_lineBasisBezier1 = [ 0, 2 / 3, 1 / 3, 0 ], d3_svg_lineBasisBezier2 = [ 0, 1 / 3, 2 / 3, 0 ], d3_svg_lineBasisBezier3 = [ 0, 1 / 6, 2 / 3, 1 / 6 ];
function d3_svg_lineBasisBezier(path, x, y) {
path.push("C", d3_svg_lineDot4(d3_svg_lineBasisBezier1, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier1, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier2, y), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, x), ",", d3_svg_lineDot4(d3_svg_lineBasisBezier3, y));
}
function d3_svg_lineSlope(p0, p1) {
return (p1[1] - p0[1]) / (p1[0] - p0[0]);
}
function d3_svg_lineFiniteDifferences(points) {
var i = 0, j = points.length - 1, m = [], p0 = points[0], p1 = points[1], d = m[0] = d3_svg_lineSlope(p0, p1);
while (++i < j) {
m[i] = (d + (d = d3_svg_lineSlope(p0 = p1, p1 = points[i + 1]))) / 2;
}
m[i] = d;
return m;
}
function d3_svg_lineMonotoneTangents(points) {
var tangents = [], d, a, b, s, m = d3_svg_lineFiniteDifferences(points), i = -1, j = points.length - 1;
while (++i < j) {
d = d3_svg_lineSlope(points[i], points[i + 1]);
if (Math.abs(d) < 1e-6) {
m[i] = m[i + 1] = 0;
} else {
a = m[i] / d;
b = m[i + 1] / d;
s = a * a + b * b;
if (s > 9) {
s = d * 3 / Math.sqrt(s);
m[i] = s * a;
m[i + 1] = s * b;
}
}
}
i = -1;
while (++i <= j) {
s = (points[Math.min(j, i + 1)][0] - points[Math.max(0, i - 1)][0]) / (6 * (1 + m[i] * m[i]));
tangents.push([ s || 0, m[i] * s || 0 ]);
}
return tangents;
}
function d3_svg_lineMonotone(points) {
return points.length < 3 ? d3_svg_lineLinear(points) : points[0] + d3_svg_lineHermite(points, d3_svg_lineMonotoneTangents(points));
}
d3.svg.line.radial = function() {
var line = d3_svg_line(d3_svg_lineRadial);
line.radius = line.x, delete line.x;
line.angle = line.y, delete line.y;
return line;
};
function d3_svg_lineRadial(points) {
var point, i = -1, n = points.length, r, a;
while (++i < n) {
point = points[i];
r = point[0];
a = point[1] + d3_svg_arcOffset;
point[0] = r * Math.cos(a);
point[1] = r * Math.sin(a);
}
return points;
}
function d3_svg_area(projection) {
var x0 = d3_svg_lineX, x1 = d3_svg_lineX, y0 = 0, y1 = d3_svg_lineY, defined = d3_true, interpolate = d3_svg_lineLinear, interpolateKey = interpolate.key, interpolateReverse = interpolate, L = "L", tension = .7;
function area(data) {
var segments = [], points0 = [], points1 = [], i = -1, n = data.length, d, fx0 = d3_functor(x0), fy0 = d3_functor(y0), fx1 = x0 === x1 ? function() {
return x;
} : d3_functor(x1), fy1 = y0 === y1 ? function() {
return y;
} : d3_functor(y1), x, y;
function segment() {
segments.push("M", interpolate(projection(points1), tension), L, interpolateReverse(projection(points0.reverse()), tension), "Z");
}
while (++i < n) {
if (defined.call(this, d = data[i], i)) {
points0.push([ x = +fx0.call(this, d, i), y = +fy0.call(this, d, i) ]);
points1.push([ +fx1.call(this, d, i), +fy1.call(this, d, i) ]);
} else if (points0.length) {
segment();
points0 = [];
points1 = [];
}
}
if (points0.length) segment();
return segments.length ? segments.join("") : null;
}
area.x = function(_) {
if (!arguments.length) return x1;
x0 = x1 = _;
return area;
};
area.x0 = function(_) {
if (!arguments.length) return x0;
x0 = _;
return area;
};
area.x1 = function(_) {
if (!arguments.length) return x1;
x1 = _;
return area;
};
area.y = function(_) {
if (!arguments.length) return y1;
y0 = y1 = _;
return area;
};
area.y0 = function(_) {
if (!arguments.length) return y0;
y0 = _;
return area;
};
area.y1 = function(_) {
if (!arguments.length) return y1;
y1 = _;
return area;
};
area.defined = function(_) {
if (!arguments.length) return defined;
defined = _;
return area;
};
area.interpolate = function(_) {
if (!arguments.length) return interpolateKey;
if (typeof _ === "function") interpolateKey = interpolate = _; else interpolateKey = (interpolate = d3_svg_lineInterpolators.get(_) || d3_svg_lineLinear).key;
interpolateReverse = interpolate.reverse || interpolate;
L = interpolate.closed ? "M" : "L";
return area;
};
area.tension = function(_) {
if (!arguments.length) return tension;
tension = _;
return area;
};
return area;
}
d3_svg_lineStepBefore.reverse = d3_svg_lineStepAfter;
d3_svg_lineStepAfter.reverse = d3_svg_lineStepBefore;
d3.svg.area = function() {
return d3_svg_area(d3_identity);
};
d3.svg.area.radial = function() {
var area = d3_svg_area(d3_svg_lineRadial);
area.radius = area.x, delete area.x;
area.innerRadius = area.x0, delete area.x0;
area.outerRadius = area.x1, delete area.x1;
area.angle = area.y, delete area.y;
area.startAngle = area.y0, delete area.y0;
area.endAngle = area.y1, delete area.y1;
return area;
};
d3.svg.chord = function() {
var source = d3_source, target = d3_target, radius = d3_svg_chordRadius, startAngle = d3_svg_arcStartAngle, endAngle = d3_svg_arcEndAngle;
function chord(d, i) {
var s = subgroup(this, source, d, i), t = subgroup(this, target, d, i);
return "M" + s.p0 + arc(s.r, s.p1, s.a1 - s.a0) + (equals(s, t) ? curve(s.r, s.p1, s.r, s.p0) : curve(s.r, s.p1, t.r, t.p0) + arc(t.r, t.p1, t.a1 - t.a0) + curve(t.r, t.p1, s.r, s.p0)) + "Z";
}
function subgroup(self, f, d, i) {
var subgroup = f.call(self, d, i), r = radius.call(self, subgroup, i), a0 = startAngle.call(self, subgroup, i) + d3_svg_arcOffset, a1 = endAngle.call(self, subgroup, i) + d3_svg_arcOffset;
return {
r: r,
a0: a0,
a1: a1,
p0: [ r * Math.cos(a0), r * Math.sin(a0) ],
p1: [ r * Math.cos(a1), r * Math.sin(a1) ]
};
}
function equals(a, b) {
return a.a0 == b.a0 && a.a1 == b.a1;
}
function arc(r, p, a) {
return "A" + r + "," + r + " 0 " + +(a > π) + ",1 " + p;
}
function curve(r0, p0, r1, p1) {
return "Q 0,0 " + p1;
}
chord.radius = function(v) {
if (!arguments.length) return radius;
radius = d3_functor(v);
return chord;
};
chord.source = function(v) {
if (!arguments.length) return source;
source = d3_functor(v);
return chord;
};
chord.target = function(v) {
if (!arguments.length) return target;
target = d3_functor(v);
return chord;
};
chord.startAngle = function(v) {
if (!arguments.length) return startAngle;
startAngle = d3_functor(v);
return chord;
};
chord.endAngle = function(v) {
if (!arguments.length) return endAngle;
endAngle = d3_functor(v);
return chord;
};
return chord;
};
function d3_svg_chordRadius(d) {
return d.radius;
}
d3.svg.diagonal = function() {
var source = d3_source, target = d3_target, projection = d3_svg_diagonalProjection;
function diagonal(d, i) {
var p0 = source.call(this, d, i), p3 = target.call(this, d, i), m = (p0.y + p3.y) / 2, p = [ p0, {
x: p0.x,
y: m
}, {
x: p3.x,
y: m
}, p3 ];
p = p.map(projection);
return "M" + p[0] + "C" + p[1] + " " + p[2] + " " + p[3];
}
diagonal.source = function(x) {
if (!arguments.length) return source;
source = d3_functor(x);
return diagonal;
};
diagonal.target = function(x) {
if (!arguments.length) return target;
target = d3_functor(x);
return diagonal;
};
diagonal.projection = function(x) {
if (!arguments.length) return projection;
projection = x;
return diagonal;
};
return diagonal;
};
function d3_svg_diagonalProjection(d) {
return [ d.x, d.y ];
}
d3.svg.diagonal.radial = function() {
var diagonal = d3.svg.diagonal(), projection = d3_svg_diagonalProjection, projection_ = diagonal.projection;
diagonal.projection = function(x) {
return arguments.length ? projection_(d3_svg_diagonalRadialProjection(projection = x)) : projection;
};
return diagonal;
};
function d3_svg_diagonalRadialProjection(projection) {
return function() {
var d = projection.apply(this, arguments), r = d[0], a = d[1] + d3_svg_arcOffset;
return [ r * Math.cos(a), r * Math.sin(a) ];
};
}
d3.svg.symbol = function() {
var type = d3_svg_symbolType, size = d3_svg_symbolSize;
function symbol(d, i) {
return (d3_svg_symbols.get(type.call(this, d, i)) || d3_svg_symbolCircle)(size.call(this, d, i));
}
symbol.type = function(x) {
if (!arguments.length) return type;
type = d3_functor(x);
return symbol;
};
symbol.size = function(x) {
if (!arguments.length) return size;
size = d3_functor(x);
return symbol;
};
return symbol;
};
function d3_svg_symbolSize() {
return 64;
}
function d3_svg_symbolType() {
return "circle";
}
function d3_svg_symbolCircle(size) {
var r = Math.sqrt(size / π);
return "M0," + r + "A" + r + "," + r + " 0 1,1 0," + -r + "A" + r + "," + r + " 0 1,1 0," + r + "Z";
}
var d3_svg_symbols = d3.map({
circle: d3_svg_symbolCircle,
cross: function(size) {
var r = Math.sqrt(size / 5) / 2;
return "M" + -3 * r + "," + -r + "H" + -r + "V" + -3 * r + "H" + r + "V" + -r + "H" + 3 * r + "V" + r + "H" + r + "V" + 3 * r + "H" + -r + "V" + r + "H" + -3 * r + "Z";
},
diamond: function(size) {
var ry = Math.sqrt(size / (2 * d3_svg_symbolTan30)), rx = ry * d3_svg_symbolTan30;
return "M0," + -ry + "L" + rx + ",0" + " 0," + ry + " " + -rx + ",0" + "Z";
},
square: function(size) {
var r = Math.sqrt(size) / 2;
return "M" + -r + "," + -r + "L" + r + "," + -r + " " + r + "," + r + " " + -r + "," + r + "Z";
},
"triangle-down": function(size) {
var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
return "M0," + ry + "L" + rx + "," + -ry + " " + -rx + "," + -ry + "Z";
},
"triangle-up": function(size) {
var rx = Math.sqrt(size / d3_svg_symbolSqrt3), ry = rx * d3_svg_symbolSqrt3 / 2;
return "M0," + -ry + "L" + rx + "," + ry + " " + -rx + "," + ry + "Z";
}
});
d3.svg.symbolTypes = d3_svg_symbols.keys();
var d3_svg_symbolSqrt3 = Math.sqrt(3), d3_svg_symbolTan30 = Math.tan(30 * d3_radians);
d3.svg.axis = function() {
var scale = d3.scale.linear(), orient = d3_svg_axisDefaultOrient, tickMajorSize = 6, tickMinorSize = 6, tickEndSize = 6, tickPadding = 3, tickArguments_ = [ 10 ], tickValues = null, tickFormat_, tickSubdivide = 0;
function axis(g) {
g.each(function() {
var g = d3.select(this);
var ticks = tickValues == null ? scale.ticks ? scale.ticks.apply(scale, tickArguments_) : scale.domain() : tickValues, tickFormat = tickFormat_ == null ? scale.tickFormat ? scale.tickFormat.apply(scale, tickArguments_) : String : tickFormat_;
var subticks = d3_svg_axisSubdivide(scale, ticks, tickSubdivide), subtick = g.selectAll(".tick.minor").data(subticks, String), subtickEnter = subtick.enter().insert("line", ".tick").attr("class", "tick minor").style("opacity", 1e-6), subtickExit = d3.transition(subtick.exit()).style("opacity", 1e-6).remove(), subtickUpdate = d3.transition(subtick).style("opacity", 1);
var tick = g.selectAll(".tick.major").data(ticks, String), tickEnter = tick.enter().insert("g", "path").attr("class", "tick major").style("opacity", 1e-6), tickExit = d3.transition(tick.exit()).style("opacity", 1e-6).remove(), tickUpdate = d3.transition(tick).style("opacity", 1), tickTransform;
var range = d3_scaleRange(scale), path = g.selectAll(".domain").data([ 0 ]), pathUpdate = (path.enter().append("path").attr("class", "domain"),
d3.transition(path));
var scale1 = scale.copy(), scale0 = this.__chart__ || scale1;
this.__chart__ = scale1;
tickEnter.append("line");
tickEnter.append("text");
var lineEnter = tickEnter.select("line"), lineUpdate = tickUpdate.select("line"), text = tick.select("text").text(tickFormat), textEnter = tickEnter.select("text"), textUpdate = tickUpdate.select("text");
switch (orient) {
case "bottom":
{
tickTransform = d3_svg_axisX;
subtickEnter.attr("y2", tickMinorSize);
subtickUpdate.attr("x2", 0).attr("y2", tickMinorSize);
lineEnter.attr("y2", tickMajorSize);
textEnter.attr("y", Math.max(tickMajorSize, 0) + tickPadding);
lineUpdate.attr("x2", 0).attr("y2", tickMajorSize);
textUpdate.attr("x", 0).attr("y", Math.max(tickMajorSize, 0) + tickPadding);
text.attr("dy", ".71em").style("text-anchor", "middle");
pathUpdate.attr("d", "M" + range[0] + "," + tickEndSize + "V0H" + range[1] + "V" + tickEndSize);
break;
}
case "top":
{
tickTransform = d3_svg_axisX;
subtickEnter.attr("y2", -tickMinorSize);
subtickUpdate.attr("x2", 0).attr("y2", -tickMinorSize);
lineEnter.attr("y2", -tickMajorSize);
textEnter.attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
lineUpdate.attr("x2", 0).attr("y2", -tickMajorSize);
textUpdate.attr("x", 0).attr("y", -(Math.max(tickMajorSize, 0) + tickPadding));
text.attr("dy", "0em").style("text-anchor", "middle");
pathUpdate.attr("d", "M" + range[0] + "," + -tickEndSize + "V0H" + range[1] + "V" + -tickEndSize);
break;
}
case "left":
{
tickTransform = d3_svg_axisY;
subtickEnter.attr("x2", -tickMinorSize);
subtickUpdate.attr("x2", -tickMinorSize).attr("y2", 0);
lineEnter.attr("x2", -tickMajorSize);
textEnter.attr("x", -(Math.max(tickMajorSize, 0) + tickPadding));
lineUpdate.attr("x2", -tickMajorSize).attr("y2", 0);
textUpdate.attr("x", -(Math.max(tickMajorSize, 0) + tickPadding)).attr("y", 0);
text.attr("dy", ".32em").style("text-anchor", "end");
pathUpdate.attr("d", "M" + -tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + -tickEndSize);
break;
}
case "right":
{
tickTransform = d3_svg_axisY;
subtickEnter.attr("x2", tickMinorSize);
subtickUpdate.attr("x2", tickMinorSize).attr("y2", 0);
lineEnter.attr("x2", tickMajorSize);
textEnter.attr("x", Math.max(tickMajorSize, 0) + tickPadding);
lineUpdate.attr("x2", tickMajorSize).attr("y2", 0);
textUpdate.attr("x", Math.max(tickMajorSize, 0) + tickPadding).attr("y", 0);
text.attr("dy", ".32em").style("text-anchor", "start");
pathUpdate.attr("d", "M" + tickEndSize + "," + range[0] + "H0V" + range[1] + "H" + tickEndSize);
break;
}
}
if (scale.ticks) {
tickEnter.call(tickTransform, scale0);
tickUpdate.call(tickTransform, scale1);
tickExit.call(tickTransform, scale1);
subtickEnter.call(tickTransform, scale0);
subtickUpdate.call(tickTransform, scale1);
subtickExit.call(tickTransform, scale1);
} else {
var dx = scale1.rangeBand() / 2, x = function(d) {
return scale1(d) + dx;
};
tickEnter.call(tickTransform, x);
tickUpdate.call(tickTransform, x);
}
});
}
axis.scale = function(x) {
if (!arguments.length) return scale;
scale = x;
return axis;
};
axis.orient = function(x) {
if (!arguments.length) return orient;
orient = x in d3_svg_axisOrients ? x + "" : d3_svg_axisDefaultOrient;
return axis;
};
axis.ticks = function() {
if (!arguments.length) return tickArguments_;
tickArguments_ = arguments;
return axis;
};
axis.tickValues = function(x) {
if (!arguments.length) return tickValues;
tickValues = x;
return axis;
};
axis.tickFormat = function(x) {
if (!arguments.length) return tickFormat_;
tickFormat_ = x;
return axis;
};
axis.tickSize = function(x, y) {
if (!arguments.length) return tickMajorSize;
var n = arguments.length - 1;
tickMajorSize = +x;
tickMinorSize = n > 1 ? +y : tickMajorSize;
tickEndSize = n > 0 ? +arguments[n] : tickMajorSize;
return axis;
};
axis.tickPadding = function(x) {
if (!arguments.length) return tickPadding;
tickPadding = +x;
return axis;
};
axis.tickSubdivide = function(x) {
if (!arguments.length) return tickSubdivide;
tickSubdivide = +x;
return axis;
};
return axis;
};
var d3_svg_axisDefaultOrient = "bottom", d3_svg_axisOrients = {
top: 1,
right: 1,
bottom: 1,
left: 1
};
function d3_svg_axisX(selection, x) {
selection.attr("transform", function(d) {
return "translate(" + x(d) + ",0)";
});
}
function d3_svg_axisY(selection, y) {
selection.attr("transform", function(d) {
return "translate(0," + y(d) + ")";
});
}
function d3_svg_axisSubdivide(scale, ticks, m) {
subticks = [];
if (m && ticks.length > 1) {
var extent = d3_scaleExtent(scale.domain()), subticks, i = -1, n = ticks.length, d = (ticks[1] - ticks[0]) / ++m, j, v;
while (++i < n) {
for (j = m; --j > 0; ) {
if ((v = +ticks[i] - j * d) >= extent[0]) {
subticks.push(v);
}
}
}
for (--i, j = 0; ++j < m && (v = +ticks[i] + j * d) < extent[1]; ) {
subticks.push(v);
}
}
return subticks;
}
d3.svg.brush = function() {
var event = d3_eventDispatch(brush, "brushstart", "brush", "brushend"), x = null, y = null, resizes = d3_svg_brushResizes[0], extent = [ [ 0, 0 ], [ 0, 0 ] ], extentDomain;
function brush(g) {
g.each(function() {
var g = d3.select(this), bg = g.selectAll(".background").data([ 0 ]), fg = g.selectAll(".extent").data([ 0 ]), tz = g.selectAll(".resize").data(resizes, String), e;
g.style("pointer-events", "all").on("mousedown.brush", brushstart).on("touchstart.brush", brushstart);
bg.enter().append("rect").attr("class", "background").style("visibility", "hidden").style("cursor", "crosshair");
fg.enter().append("rect").attr("class", "extent").style("cursor", "move");
tz.enter().append("g").attr("class", function(d) {
return "resize " + d;
}).style("cursor", function(d) {
return d3_svg_brushCursor[d];
}).append("rect").attr("x", function(d) {
return /[ew]$/.test(d) ? -3 : null;
}).attr("y", function(d) {
return /^[ns]/.test(d) ? -3 : null;
}).attr("width", 6).attr("height", 6).style("visibility", "hidden");
tz.style("display", brush.empty() ? "none" : null);
tz.exit().remove();
if (x) {
e = d3_scaleRange(x);
bg.attr("x", e[0]).attr("width", e[1] - e[0]);
redrawX(g);
}
if (y) {
e = d3_scaleRange(y);
bg.attr("y", e[0]).attr("height", e[1] - e[0]);
redrawY(g);
}
redraw(g);
});
}
function redraw(g) {
g.selectAll(".resize").attr("transform", function(d) {
return "translate(" + extent[+/e$/.test(d)][0] + "," + extent[+/^s/.test(d)][1] + ")";
});
}
function redrawX(g) {
g.select(".extent").attr("x", extent[0][0]);
g.selectAll(".extent,.n>rect,.s>rect").attr("width", extent[1][0] - extent[0][0]);
}
function redrawY(g) {
g.select(".extent").attr("y", extent[0][1]);
g.selectAll(".extent,.e>rect,.w>rect").attr("height", extent[1][1] - extent[0][1]);
}
function brushstart() {
var target = this, eventTarget = d3.select(d3.event.target), event_ = event.of(target, arguments), g = d3.select(target), resizing = eventTarget.datum(), resizingX = !/^(n|s)$/.test(resizing) && x, resizingY = !/^(e|w)$/.test(resizing) && y, dragging = eventTarget.classed("extent"), center, origin = mouse(), offset;
var w = d3.select(d3_window).on("mousemove.brush", brushmove).on("mouseup.brush", brushend).on("touchmove.brush", brushmove).on("touchend.brush", brushend).on("keydown.brush", keydown).on("keyup.brush", keyup);
if (dragging) {
origin[0] = extent[0][0] - origin[0];
origin[1] = extent[0][1] - origin[1];
} else if (resizing) {
var ex = +/w$/.test(resizing), ey = +/^n/.test(resizing);
offset = [ extent[1 - ex][0] - origin[0], extent[1 - ey][1] - origin[1] ];
origin[0] = extent[ex][0];
origin[1] = extent[ey][1];
} else if (d3.event.altKey) center = origin.slice();
g.style("pointer-events", "none").selectAll(".resize").style("display", null);
d3.select("body").style("cursor", eventTarget.style("cursor"));
event_({
type: "brushstart"
});
brushmove();
d3_eventCancel();
function mouse() {
var touches = d3.event.changedTouches;
return touches ? d3.touches(target, touches)[0] : d3.mouse(target);
}
function keydown() {
if (d3.event.keyCode == 32) {
if (!dragging) {
center = null;
origin[0] -= extent[1][0];
origin[1] -= extent[1][1];
dragging = 2;
}
d3_eventCancel();
}
}
function keyup() {
if (d3.event.keyCode == 32 && dragging == 2) {
origin[0] += extent[1][0];
origin[1] += extent[1][1];
dragging = 0;
d3_eventCancel();
}
}
function brushmove() {
var point = mouse(), moved = false;
if (offset) {
point[0] += offset[0];
point[1] += offset[1];
}
if (!dragging) {
if (d3.event.altKey) {
if (!center) center = [ (extent[0][0] + extent[1][0]) / 2, (extent[0][1] + extent[1][1]) / 2 ];
origin[0] = extent[+(point[0] < center[0])][0];
origin[1] = extent[+(point[1] < center[1])][1];
} else center = null;
}
if (resizingX && move1(point, x, 0)) {
redrawX(g);
moved = true;
}
if (resizingY && move1(point, y, 1)) {
redrawY(g);
moved = true;
}
if (moved) {
redraw(g);
event_({
type: "brush",
mode: dragging ? "move" : "resize"
});
}
}
function move1(point, scale, i) {
var range = d3_scaleRange(scale), r0 = range[0], r1 = range[1], position = origin[i], size = extent[1][i] - extent[0][i], min, max;
if (dragging) {
r0 -= position;
r1 -= size + position;
}
min = Math.max(r0, Math.min(r1, point[i]));
if (dragging) {
max = (min += position) + size;
} else {
if (center) position = Math.max(r0, Math.min(r1, 2 * center[i] - min));
if (position < min) {
max = min;
min = position;
} else {
max = position;
}
}
if (extent[0][i] !== min || extent[1][i] !== max) {
extentDomain = null;
extent[0][i] = min;
extent[1][i] = max;
return true;
}
}
function brushend() {
brushmove();
g.style("pointer-events", "all").selectAll(".resize").style("display", brush.empty() ? "none" : null);
d3.select("body").style("cursor", null);
w.on("mousemove.brush", null).on("mouseup.brush", null).on("touchmove.brush", null).on("touchend.brush", null).on("keydown.brush", null).on("keyup.brush", null);
event_({
type: "brushend"
});
d3_eventCancel();
}
}
brush.x = function(z) {
if (!arguments.length) return x;
x = z;
resizes = d3_svg_brushResizes[!x << 1 | !y];
return brush;
};
brush.y = function(z) {
if (!arguments.length) return y;
y = z;
resizes = d3_svg_brushResizes[!x << 1 | !y];
return brush;
};
brush.extent = function(z) {
var x0, x1, y0, y1, t;
if (!arguments.length) {
z = extentDomain || extent;
if (x) {
x0 = z[0][0], x1 = z[1][0];
if (!extentDomain) {
x0 = extent[0][0], x1 = extent[1][0];
if (x.invert) x0 = x.invert(x0), x1 = x.invert(x1);
if (x1 < x0) t = x0, x0 = x1, x1 = t;
}
}
if (y) {
y0 = z[0][1], y1 = z[1][1];
if (!extentDomain) {
y0 = extent[0][1], y1 = extent[1][1];
if (y.invert) y0 = y.invert(y0), y1 = y.invert(y1);
if (y1 < y0) t = y0, y0 = y1, y1 = t;
}
}
return x && y ? [ [ x0, y0 ], [ x1, y1 ] ] : x ? [ x0, x1 ] : y && [ y0, y1 ];
}
extentDomain = [ [ 0, 0 ], [ 0, 0 ] ];
if (x) {
x0 = z[0], x1 = z[1];
if (y) x0 = x0[0], x1 = x1[0];
extentDomain[0][0] = x0, extentDomain[1][0] = x1;
if (x.invert) x0 = x(x0), x1 = x(x1);
if (x1 < x0) t = x0, x0 = x1, x1 = t;
extent[0][0] = x0 | 0, extent[1][0] = x1 | 0;
}
if (y) {
y0 = z[0], y1 = z[1];
if (x) y0 = y0[1], y1 = y1[1];
extentDomain[0][1] = y0, extentDomain[1][1] = y1;
if (y.invert) y0 = y(y0), y1 = y(y1);
if (y1 < y0) t = y0, y0 = y1, y1 = t;
extent[0][1] = y0 | 0, extent[1][1] = y1 | 0;
}
return brush;
};
brush.clear = function() {
extentDomain = null;
extent[0][0] = extent[0][1] = extent[1][0] = extent[1][1] = 0;
return brush;
};
brush.empty = function() {
return x && extent[0][0] === extent[1][0] || y && extent[0][1] === extent[1][1];
};
return d3.rebind(brush, event, "on");
};
var d3_svg_brushCursor = {
n: "ns-resize",
e: "ew-resize",
s: "ns-resize",
w: "ew-resize",
nw: "nwse-resize",
ne: "nesw-resize",
se: "nwse-resize",
sw: "nesw-resize"
};
var d3_svg_brushResizes = [ [ "n", "e", "s", "w", "nw", "ne", "se", "sw" ], [ "e", "w" ], [ "n", "s" ], [] ];
d3.behavior = {};
d3.behavior.drag = function() {
var event = d3_eventDispatch(drag, "drag", "dragstart", "dragend"), origin = null;
function drag() {
this.on("mousedown.drag", mousedown).on("touchstart.drag", mousedown);
}
function mousedown() {
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, touchId = d3.event.touches ? d3.event.changedTouches[0].identifier : null, offset, origin_ = point(), moved = 0;
var w = d3.select(d3_window).on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", dragmove).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", dragend, true);
if (origin) {
offset = origin.apply(target, arguments);
offset = [ offset.x - origin_[0], offset.y - origin_[1] ];
} else {
offset = [ 0, 0 ];
}
if (touchId == null) d3_eventCancel();
event_({
type: "dragstart"
});
function point() {
var p = target.parentNode;
return touchId != null ? d3.touches(p).filter(function(p) {
return p.identifier === touchId;
})[0] : d3.mouse(p);
}
function dragmove() {
if (!target.parentNode) return dragend();
var p = point(), dx = p[0] - origin_[0], dy = p[1] - origin_[1];
moved |= dx | dy;
origin_ = p;
d3_eventCancel();
event_({
type: "drag",
x: p[0] + offset[0],
y: p[1] + offset[1],
dx: dx,
dy: dy
});
}
function dragend() {
event_({
type: "dragend"
});
if (moved) {
d3_eventCancel();
if (d3.event.target === eventTarget) w.on("click.drag", click, true);
}
w.on(touchId != null ? "touchmove.drag-" + touchId : "mousemove.drag", null).on(touchId != null ? "touchend.drag-" + touchId : "mouseup.drag", null);
}
function click() {
d3_eventCancel();
w.on("click.drag", null);
}
}
drag.origin = function(x) {
if (!arguments.length) return origin;
origin = x;
return drag;
};
return d3.rebind(drag, event, "on");
};
d3.behavior.zoom = function() {
var translate = [ 0, 0 ], translate0, scale = 1, scale0, scaleExtent = d3_behavior_zoomInfinity, event = d3_eventDispatch(zoom, "zoom"), x0, x1, y0, y1, touchtime;
function zoom() {
this.on("mousedown.zoom", mousedown).on("mousemove.zoom", mousemove).on(d3_behavior_zoomWheel + ".zoom", mousewheel).on("dblclick.zoom", dblclick).on("touchstart.zoom", touchstart).on("touchmove.zoom", touchmove).on("touchend.zoom", touchstart);
}
zoom.translate = function(x) {
if (!arguments.length) return translate;
translate = x.map(Number);
rescale();
return zoom;
};
zoom.scale = function(x) {
if (!arguments.length) return scale;
scale = +x;
rescale();
return zoom;
};
zoom.scaleExtent = function(x) {
if (!arguments.length) return scaleExtent;
scaleExtent = x == null ? d3_behavior_zoomInfinity : x.map(Number);
return zoom;
};
zoom.x = function(z) {
if (!arguments.length) return x1;
x1 = z;
x0 = z.copy();
translate = [ 0, 0 ];
scale = 1;
return zoom;
};
zoom.y = function(z) {
if (!arguments.length) return y1;
y1 = z;
y0 = z.copy();
translate = [ 0, 0 ];
scale = 1;
return zoom;
};
function location(p) {
return [ (p[0] - translate[0]) / scale, (p[1] - translate[1]) / scale ];
}
function point(l) {
return [ l[0] * scale + translate[0], l[1] * scale + translate[1] ];
}
function scaleTo(s) {
scale = Math.max(scaleExtent[0], Math.min(scaleExtent[1], s));
}
function translateTo(p, l) {
l = point(l);
translate[0] += p[0] - l[0];
translate[1] += p[1] - l[1];
}
function rescale() {
if (x1) x1.domain(x0.range().map(function(x) {
return (x - translate[0]) / scale;
}).map(x0.invert));
if (y1) y1.domain(y0.range().map(function(y) {
return (y - translate[1]) / scale;
}).map(y0.invert));
}
function dispatch(event) {
rescale();
d3.event.preventDefault();
event({
type: "zoom",
scale: scale,
translate: translate
});
}
function mousedown() {
var target = this, event_ = event.of(target, arguments), eventTarget = d3.event.target, moved = 0, w = d3.select(d3_window).on("mousemove.zoom", mousemove).on("mouseup.zoom", mouseup), l = location(d3.mouse(target));
d3_window.focus();
d3_eventCancel();
function mousemove() {
moved = 1;
translateTo(d3.mouse(target), l);
dispatch(event_);
}
function mouseup() {
if (moved) d3_eventCancel();
w.on("mousemove.zoom", null).on("mouseup.zoom", null);
if (moved && d3.event.target === eventTarget) w.on("click.zoom", click, true);
}
function click() {
d3_eventCancel();
w.on("click.zoom", null);
}
}
function mousewheel() {
if (!translate0) translate0 = location(d3.mouse(this));
scaleTo(Math.pow(2, d3_behavior_zoomDelta() * .002) * scale);
translateTo(d3.mouse(this), translate0);
dispatch(event.of(this, arguments));
}
function mousemove() {
translate0 = null;
}
function dblclick() {
var p = d3.mouse(this), l = location(p), k = Math.log(scale) / Math.LN2;
scaleTo(Math.pow(2, d3.event.shiftKey ? Math.ceil(k) - 1 : Math.floor(k) + 1));
translateTo(p, l);
dispatch(event.of(this, arguments));
}
function touchstart() {
var touches = d3.touches(this), now = Date.now();
scale0 = scale;
translate0 = {};
touches.forEach(function(t) {
translate0[t.identifier] = location(t);
});
d3_eventCancel();
if (touches.length === 1) {
if (now - touchtime < 500) {
var p = touches[0], l = location(touches[0]);
scaleTo(scale * 2);
translateTo(p, l);
dispatch(event.of(this, arguments));
}
touchtime = now;
}
}
function touchmove() {
var touches = d3.touches(this), p0 = touches[0], l0 = translate0[p0.identifier];
if (p1 = touches[1]) {
var p1, l1 = translate0[p1.identifier];
p0 = [ (p0[0] + p1[0]) / 2, (p0[1] + p1[1]) / 2 ];
l0 = [ (l0[0] + l1[0]) / 2, (l0[1] + l1[1]) / 2 ];
scaleTo(d3.event.scale * scale0);
}
translateTo(p0, l0);
touchtime = null;
dispatch(event.of(this, arguments));
}
return d3.rebind(zoom, event, "on");
};
var d3_behavior_zoomInfinity = [ 0, Infinity ];
var d3_behavior_zoomDelta, d3_behavior_zoomWheel = "onwheel" in document ? (d3_behavior_zoomDelta = function() {
return -d3.event.deltaY * (d3.event.deltaMode ? 120 : 1);
}, "wheel") : "onmousewheel" in document ? (d3_behavior_zoomDelta = function() {
return d3.event.wheelDelta;
}, "mousewheel") : (d3_behavior_zoomDelta = function() {
return -d3.event.detail;
}, "MozMousePixelScroll");
d3.layout = {};
d3.layout.bundle = function() {
return function(links) {
var paths = [], i = -1, n = links.length;
while (++i < n) paths.push(d3_layout_bundlePath(links[i]));
return paths;
};
};
function d3_layout_bundlePath(link) {
var start = link.source, end = link.target, lca = d3_layout_bundleLeastCommonAncestor(start, end), points = [ start ];
while (start !== lca) {
start = start.parent;
points.push(start);
}
var k = points.length;
while (end !== lca) {
points.splice(k, 0, end);
end = end.parent;
}
return points;
}
function d3_layout_bundleAncestors(node) {
var ancestors = [], parent = node.parent;
while (parent != null) {
ancestors.push(node);
node = parent;
parent = parent.parent;
}
ancestors.push(node);
return ancestors;
}
function d3_layout_bundleLeastCommonAncestor(a, b) {
if (a === b) return a;
var aNodes = d3_layout_bundleAncestors(a), bNodes = d3_layout_bundleAncestors(b), aNode = aNodes.pop(), bNode = bNodes.pop(), sharedNode = null;
while (aNode === bNode) {
sharedNode = aNode;
aNode = aNodes.pop();
bNode = bNodes.pop();
}
return sharedNode;
}
d3.layout.chord = function() {
var chord = {}, chords, groups, matrix, n, padding = 0, sortGroups, sortSubgroups, sortChords;
function relayout() {
var subgroups = {}, groupSums = [], groupIndex = d3.range(n), subgroupIndex = [], k, x, x0, i, j;
chords = [];
groups = [];
k = 0, i = -1;
while (++i < n) {
x = 0, j = -1;
while (++j < n) {
x += matrix[i][j];
}
groupSums.push(x);
subgroupIndex.push(d3.range(n));
k += x;
}
if (sortGroups) {
groupIndex.sort(function(a, b) {
return sortGroups(groupSums[a], groupSums[b]);
});
}
if (sortSubgroups) {
subgroupIndex.forEach(function(d, i) {
d.sort(function(a, b) {
return sortSubgroups(matrix[i][a], matrix[i][b]);
});
});
}
k = (2 * π - padding * n) / k;
x = 0, i = -1;
while (++i < n) {
x0 = x, j = -1;
while (++j < n) {
var di = groupIndex[i], dj = subgroupIndex[di][j], v = matrix[di][dj], a0 = x, a1 = x += v * k;
subgroups[di + "-" + dj] = {
index: di,
subindex: dj,
startAngle: a0,
endAngle: a1,
value: v
};
}
groups[di] = {
index: di,
startAngle: x0,
endAngle: x,
value: (x - x0) / k
};
x += padding;
}
i = -1;
while (++i < n) {
j = i - 1;
while (++j < n) {
var source = subgroups[i + "-" + j], target = subgroups[j + "-" + i];
if (source.value || target.value) {
chords.push(source.value < target.value ? {
source: target,
target: source
} : {
source: source,
target: target
});
}
}
}
if (sortChords) resort();
}
function resort() {
chords.sort(function(a, b) {
return sortChords((a.source.value + a.target.value) / 2, (b.source.value + b.target.value) / 2);
});
}
chord.matrix = function(x) {
if (!arguments.length) return matrix;
n = (matrix = x) && matrix.length;
chords = groups = null;
return chord;
};
chord.padding = function(x) {
if (!arguments.length) return padding;
padding = x;
chords = groups = null;
return chord;
};
chord.sortGroups = function(x) {
if (!arguments.length) return sortGroups;
sortGroups = x;
chords = groups = null;
return chord;
};
chord.sortSubgroups = function(x) {
if (!arguments.length) return sortSubgroups;
sortSubgroups = x;
chords = null;
return chord;
};
chord.sortChords = function(x) {
if (!arguments.length) return sortChords;
sortChords = x;
if (chords) resort();
return chord;
};
chord.chords = function() {
if (!chords) relayout();
return chords;
};
chord.groups = function() {
if (!groups) relayout();
return groups;
};
return chord;
};
d3.layout.force = function() {
var force = {}, event = d3.dispatch("start", "tick", "end"), size = [ 1, 1 ], drag, alpha, friction = .9, linkDistance = d3_layout_forceLinkDistance, linkStrength = d3_layout_forceLinkStrength, charge = -30, gravity = .1, theta = .8, nodes = [], links = [], distances, strengths, charges;
function repulse(node) {
return function(quad, x1, _, x2) {
if (quad.point !== node) {
var dx = quad.cx - node.x, dy = quad.cy - node.y, dn = 1 / Math.sqrt(dx * dx + dy * dy);
if ((x2 - x1) * dn < theta) {
var k = quad.charge * dn * dn;
node.px -= dx * k;
node.py -= dy * k;
return true;
}
if (quad.point && isFinite(dn)) {
var k = quad.pointCharge * dn * dn;
node.px -= dx * k;
node.py -= dy * k;
}
}
return !quad.charge;
};
}
force.tick = function() {
if ((alpha *= .99) < .005) {
event.end({
type: "end",
alpha: alpha = 0
});
return true;
}
var n = nodes.length, m = links.length, q, i, o, s, t, l, k, x, y;
for (i = 0; i < m; ++i) {
o = links[i];
s = o.source;
t = o.target;
x = t.x - s.x;
y = t.y - s.y;
if (l = x * x + y * y) {
l = alpha * strengths[i] * ((l = Math.sqrt(l)) - distances[i]) / l;
x *= l;
y *= l;
t.x -= x * (k = s.weight / (t.weight + s.weight));
t.y -= y * k;
s.x += x * (k = 1 - k);
s.y += y * k;
}
}
if (k = alpha * gravity) {
x = size[0] / 2;
y = size[1] / 2;
i = -1;
if (k) while (++i < n) {
o = nodes[i];
o.x += (x - o.x) * k;
o.y += (y - o.y) * k;
}
}
if (charge) {
d3_layout_forceAccumulate(q = d3.geom.quadtree(nodes), alpha, charges);
i = -1;
while (++i < n) {
if (!(o = nodes[i]).fixed) {
q.visit(repulse(o));
}
}
}
i = -1;
while (++i < n) {
o = nodes[i];
if (o.fixed) {
o.x = o.px;
o.y = o.py;
} else {
o.x -= (o.px - (o.px = o.x)) * friction;
o.y -= (o.py - (o.py = o.y)) * friction;
}
}
event.tick({
type: "tick",
alpha: alpha
});
};
force.nodes = function(x) {
if (!arguments.length) return nodes;
nodes = x;
return force;
};
force.links = function(x) {
if (!arguments.length) return links;
links = x;
return force;
};
force.size = function(x) {
if (!arguments.length) return size;
size = x;
return force;
};
force.linkDistance = function(x) {
if (!arguments.length) return linkDistance;
linkDistance = typeof x === "function" ? x : +x;
return force;
};
force.distance = force.linkDistance;
force.linkStrength = function(x) {
if (!arguments.length) return linkStrength;
linkStrength = typeof x === "function" ? x : +x;
return force;
};
force.friction = function(x) {
if (!arguments.length) return friction;
friction = +x;
return force;
};
force.charge = function(x) {
if (!arguments.length) return charge;
charge = typeof x === "function" ? x : +x;
return force;
};
force.gravity = function(x) {
if (!arguments.length) return gravity;
gravity = +x;
return force;
};
force.theta = function(x) {
if (!arguments.length) return theta;
theta = +x;
return force;
};
force.alpha = function(x) {
if (!arguments.length) return alpha;
x = +x;
if (alpha) {
if (x > 0) alpha = x; else alpha = 0;
} else if (x > 0) {
event.start({
type: "start",
alpha: alpha = x
});
d3.timer(force.tick);
}
return force;
};
force.start = function() {
var i, j, n = nodes.length, m = links.length, w = size[0], h = size[1], neighbors, o;
for (i = 0; i < n; ++i) {
(o = nodes[i]).index = i;
o.weight = 0;
}
for (i = 0; i < m; ++i) {
o = links[i];
if (typeof o.source == "number") o.source = nodes[o.source];
if (typeof o.target == "number") o.target = nodes[o.target];
++o.source.weight;
++o.target.weight;
}
for (i = 0; i < n; ++i) {
o = nodes[i];
if (isNaN(o.x)) o.x = position("x", w);
if (isNaN(o.y)) o.y = position("y", h);
if (isNaN(o.px)) o.px = o.x;
if (isNaN(o.py)) o.py = o.y;
}
distances = [];
if (typeof linkDistance === "function") for (i = 0; i < m; ++i) distances[i] = +linkDistance.call(this, links[i], i); else for (i = 0; i < m; ++i) distances[i] = linkDistance;
strengths = [];
if (typeof linkStrength === "function") for (i = 0; i < m; ++i) strengths[i] = +linkStrength.call(this, links[i], i); else for (i = 0; i < m; ++i) strengths[i] = linkStrength;
charges = [];
if (typeof charge === "function") for (i = 0; i < n; ++i) charges[i] = +charge.call(this, nodes[i], i); else for (i = 0; i < n; ++i) charges[i] = charge;
function position(dimension, size) {
var neighbors = neighbor(i), j = -1, m = neighbors.length, x;
while (++j < m) if (!isNaN(x = neighbors[j][dimension])) return x;
return Math.random() * size;
}
function neighbor() {
if (!neighbors) {
neighbors = [];
for (j = 0; j < n; ++j) {
neighbors[j] = [];
}
for (j = 0; j < m; ++j) {
var o = links[j];
neighbors[o.source.index].push(o.target);
neighbors[o.target.index].push(o.source);
}
}
return neighbors[i];
}
return force.resume();
};
force.resume = function() {
return force.alpha(.1);
};
force.stop = function() {
return force.alpha(0);
};
force.drag = function() {
if (!drag) drag = d3.behavior.drag().origin(d3_identity).on("dragstart.force", d3_layout_forceDragstart).on("drag.force", dragmove).on("dragend.force", d3_layout_forceDragend);
if (!arguments.length) return drag;
this.on("mouseover.force", d3_layout_forceMouseover).on("mouseout.force", d3_layout_forceMouseout).call(drag);
};
function dragmove(d) {
d.px = d3.event.x, d.py = d3.event.y;
force.resume();
}
return d3.rebind(force, event, "on");
};
function d3_layout_forceDragstart(d) {
d.fixed |= 2;
}
function d3_layout_forceDragend(d) {
d.fixed &= ~6;
}
function d3_layout_forceMouseover(d) {
d.fixed |= 4;
d.px = d.x, d.py = d.y;
}
function d3_layout_forceMouseout(d) {
d.fixed &= ~4;
}
function d3_layout_forceAccumulate(quad, alpha, charges) {
var cx = 0, cy = 0;
quad.charge = 0;
if (!quad.leaf) {
var nodes = quad.nodes, n = nodes.length, i = -1, c;
while (++i < n) {
c = nodes[i];
if (c == null) continue;
d3_layout_forceAccumulate(c, alpha, charges);
quad.charge += c.charge;
cx += c.charge * c.cx;
cy += c.charge * c.cy;
}
}
if (quad.point) {
if (!quad.leaf) {
quad.point.x += Math.random() - .5;
quad.point.y += Math.random() - .5;
}
var k = alpha * charges[quad.point.index];
quad.charge += quad.pointCharge = k;
cx += k * quad.point.x;
cy += k * quad.point.y;
}
quad.cx = cx / quad.charge;
quad.cy = cy / quad.charge;
}
var d3_layout_forceLinkDistance = 20, d3_layout_forceLinkStrength = 1;
d3.layout.partition = function() {
var hierarchy = d3.layout.hierarchy(), size = [ 1, 1 ];
function position(node, x, dx, dy) {
var children = node.children;
node.x = x;
node.y = node.depth * dy;
node.dx = dx;
node.dy = dy;
if (children && (n = children.length)) {
var i = -1, n, c, d;
dx = node.value ? dx / node.value : 0;
while (++i < n) {
position(c = children[i], x, d = c.value * dx, dy);
x += d;
}
}
}
function depth(node) {
var children = node.children, d = 0;
if (children && (n = children.length)) {
var i = -1, n;
while (++i < n) d = Math.max(d, depth(children[i]));
}
return 1 + d;
}
function partition(d, i) {
var nodes = hierarchy.call(this, d, i);
position(nodes[0], 0, size[0], size[1] / depth(nodes[0]));
return nodes;
}
partition.size = function(x) {
if (!arguments.length) return size;
size = x;
return partition;
};
return d3_layout_hierarchyRebind(partition, hierarchy);
};
d3.layout.pie = function() {
var value = Number, sort = d3_layout_pieSortByValue, startAngle = 0, endAngle = 2 * π;
function pie(data) {
var values = data.map(function(d, i) {
return +value.call(pie, d, i);
});
var a = +(typeof startAngle === "function" ? startAngle.apply(this, arguments) : startAngle);
var k = ((typeof endAngle === "function" ? endAngle.apply(this, arguments) : endAngle) - startAngle) / d3.sum(values);
var index = d3.range(data.length);
if (sort != null) index.sort(sort === d3_layout_pieSortByValue ? function(i, j) {
return values[j] - values[i];
} : function(i, j) {
return sort(data[i], data[j]);
});
var arcs = [];
index.forEach(function(i) {
var d;
arcs[i] = {
data: data[i],
value: d = values[i],
startAngle: a,
endAngle: a += d * k
};
});
return arcs;
}
pie.value = function(x) {
if (!arguments.length) return value;
value = x;
return pie;
};
pie.sort = function(x) {
if (!arguments.length) return sort;
sort = x;
return pie;
};
pie.startAngle = function(x) {
if (!arguments.length) return startAngle;
startAngle = x;
return pie;
};
pie.endAngle = function(x) {
if (!arguments.length) return endAngle;
endAngle = x;
return pie;
};
return pie;
};
var d3_layout_pieSortByValue = {};
d3.layout.stack = function() {
var values = d3_identity, order = d3_layout_stackOrderDefault, offset = d3_layout_stackOffsetZero, out = d3_layout_stackOut, x = d3_layout_stackX, y = d3_layout_stackY;
function stack(data, index) {
var series = data.map(function(d, i) {
return values.call(stack, d, i);
});
var points = series.map(function(d) {
return d.map(function(v, i) {
return [ x.call(stack, v, i), y.call(stack, v, i) ];
});
});
var orders = order.call(stack, points, index);
series = d3.permute(series, orders);
points = d3.permute(points, orders);
var offsets = offset.call(stack, points, index);
var n = series.length, m = series[0].length, i, j, o;
for (j = 0; j < m; ++j) {
out.call(stack, series[0][j], o = offsets[j], points[0][j][1]);
for (i = 1; i < n; ++i) {
out.call(stack, series[i][j], o += points[i - 1][j][1], points[i][j][1]);
}
}
return data;
}
stack.values = function(x) {
if (!arguments.length) return values;
values = x;
return stack;
};
stack.order = function(x) {
if (!arguments.length) return order;
order = typeof x === "function" ? x : d3_layout_stackOrders.get(x) || d3_layout_stackOrderDefault;
return stack;
};
stack.offset = function(x) {
if (!arguments.length) return offset;
offset = typeof x === "function" ? x : d3_layout_stackOffsets.get(x) || d3_layout_stackOffsetZero;
return stack;
};
stack.x = function(z) {
if (!arguments.length) return x;
x = z;
return stack;
};
stack.y = function(z) {
if (!arguments.length) return y;
y = z;
return stack;
};
stack.out = function(z) {
if (!arguments.length) return out;
out = z;
return stack;
};
return stack;
};
function d3_layout_stackX(d) {
return d.x;
}
function d3_layout_stackY(d) {
return d.y;
}
function d3_layout_stackOut(d, y0, y) {
d.y0 = y0;
d.y = y;
}
var d3_layout_stackOrders = d3.map({
"inside-out": function(data) {
var n = data.length, i, j, max = data.map(d3_layout_stackMaxIndex), sums = data.map(d3_layout_stackReduceSum), index = d3.range(n).sort(function(a, b) {
return max[a] - max[b];
}), top = 0, bottom = 0, tops = [], bottoms = [];
for (i = 0; i < n; ++i) {
j = index[i];
if (top < bottom) {
top += sums[j];
tops.push(j);
} else {
bottom += sums[j];
bottoms.push(j);
}
}
return bottoms.reverse().concat(tops);
},
reverse: function(data) {
return d3.range(data.length).reverse();
},
"default": d3_layout_stackOrderDefault
});
var d3_layout_stackOffsets = d3.map({
silhouette: function(data) {
var n = data.length, m = data[0].length, sums = [], max = 0, i, j, o, y0 = [];
for (j = 0; j < m; ++j) {
for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
if (o > max) max = o;
sums.push(o);
}
for (j = 0; j < m; ++j) {
y0[j] = (max - sums[j]) / 2;
}
return y0;
},
wiggle: function(data) {
var n = data.length, x = data[0], m = x.length, i, j, k, s1, s2, s3, dx, o, o0, y0 = [];
y0[0] = o = o0 = 0;
for (j = 1; j < m; ++j) {
for (i = 0, s1 = 0; i < n; ++i) s1 += data[i][j][1];
for (i = 0, s2 = 0, dx = x[j][0] - x[j - 1][0]; i < n; ++i) {
for (k = 0, s3 = (data[i][j][1] - data[i][j - 1][1]) / (2 * dx); k < i; ++k) {
s3 += (data[k][j][1] - data[k][j - 1][1]) / dx;
}
s2 += s3 * data[i][j][1];
}
y0[j] = o -= s1 ? s2 / s1 * dx : 0;
if (o < o0) o0 = o;
}
for (j = 0; j < m; ++j) y0[j] -= o0;
return y0;
},
expand: function(data) {
var n = data.length, m = data[0].length, k = 1 / n, i, j, o, y0 = [];
for (j = 0; j < m; ++j) {
for (i = 0, o = 0; i < n; i++) o += data[i][j][1];
if (o) for (i = 0; i < n; i++) data[i][j][1] /= o; else for (i = 0; i < n; i++) data[i][j][1] = k;
}
for (j = 0; j < m; ++j) y0[j] = 0;
return y0;
},
zero: d3_layout_stackOffsetZero
});
function d3_layout_stackOrderDefault(data) {
return d3.range(data.length);
}
function d3_layout_stackOffsetZero(data) {
var j = -1, m = data[0].length, y0 = [];
while (++j < m) y0[j] = 0;
return y0;
}
function d3_layout_stackMaxIndex(array) {
var i = 1, j = 0, v = array[0][1], k, n = array.length;
for (;i < n; ++i) {
if ((k = array[i][1]) > v) {
j = i;
v = k;
}
}
return j;
}
function d3_layout_stackReduceSum(d) {
return d.reduce(d3_layout_stackSum, 0);
}
function d3_layout_stackSum(p, d) {
return p + d[1];
}
d3.layout.histogram = function() {
var frequency = true, valuer = Number, ranger = d3_layout_histogramRange, binner = d3_layout_histogramBinSturges;
function histogram(data, i) {
var bins = [], values = data.map(valuer, this), range = ranger.call(this, values, i), thresholds = binner.call(this, range, values, i), bin, i = -1, n = values.length, m = thresholds.length - 1, k = frequency ? 1 : 1 / n, x;
while (++i < m) {
bin = bins[i] = [];
bin.dx = thresholds[i + 1] - (bin.x = thresholds[i]);
bin.y = 0;
}
if (m > 0) {
i = -1;
while (++i < n) {
x = values[i];
if (x >= range[0] && x <= range[1]) {
bin = bins[d3.bisect(thresholds, x, 1, m) - 1];
bin.y += k;
bin.push(data[i]);
}
}
}
return bins;
}
histogram.value = function(x) {
if (!arguments.length) return valuer;
valuer = x;
return histogram;
};
histogram.range = function(x) {
if (!arguments.length) return ranger;
ranger = d3_functor(x);
return histogram;
};
histogram.bins = function(x) {
if (!arguments.length) return binner;
binner = typeof x === "number" ? function(range) {
return d3_layout_histogramBinFixed(range, x);
} : d3_functor(x);
return histogram;
};
histogram.frequency = function(x) {
if (!arguments.length) return frequency;
frequency = !!x;
return histogram;
};
return histogram;
};
function d3_layout_histogramBinSturges(range, values) {
return d3_layout_histogramBinFixed(range, Math.ceil(Math.log(values.length) / Math.LN2 + 1));
}
function d3_layout_histogramBinFixed(range, n) {
var x = -1, b = +range[0], m = (range[1] - b) / n, f = [];
while (++x <= n) f[x] = m * x + b;
return f;
}
function d3_layout_histogramRange(values) {
return [ d3.min(values), d3.max(values) ];
}
d3.layout.hierarchy = function() {
var sort = d3_layout_hierarchySort, children = d3_layout_hierarchyChildren, value = d3_layout_hierarchyValue;
function recurse(node, depth, nodes) {
var childs = children.call(hierarchy, node, depth);
node.depth = depth;
nodes.push(node);
if (childs && (n = childs.length)) {
var i = -1, n, c = node.children = [], v = 0, j = depth + 1, d;
while (++i < n) {
d = recurse(childs[i], j, nodes);
d.parent = node;
c.push(d);
v += d.value;
}
if (sort) c.sort(sort);
if (value) node.value = v;
} else if (value) {
node.value = +value.call(hierarchy, node, depth) || 0;
}
return node;
}
function revalue(node, depth) {
var children = node.children, v = 0;
if (children && (n = children.length)) {
var i = -1, n, j = depth + 1;
while (++i < n) v += revalue(children[i], j);
} else if (value) {
v = +value.call(hierarchy, node, depth) || 0;
}
if (value) node.value = v;
return v;
}
function hierarchy(d) {
var nodes = [];
recurse(d, 0, nodes);
return nodes;
}
hierarchy.sort = function(x) {
if (!arguments.length) return sort;
sort = x;
return hierarchy;
};
hierarchy.children = function(x) {
if (!arguments.length) return children;
children = x;
return hierarchy;
};
hierarchy.value = function(x) {
if (!arguments.length) return value;
value = x;
return hierarchy;
};
hierarchy.revalue = function(root) {
revalue(root, 0);
return root;
};
return hierarchy;
};
function d3_layout_hierarchyRebind(object, hierarchy) {
d3.rebind(object, hierarchy, "sort", "children", "value");
object.nodes = object;
object.links = d3_layout_hierarchyLinks;
return object;
}
function d3_layout_hierarchyChildren(d) {
return d.children;
}
function d3_layout_hierarchyValue(d) {
return d.value;
}
function d3_layout_hierarchySort(a, b) {
return b.value - a.value;
}
function d3_layout_hierarchyLinks(nodes) {
return d3.merge(nodes.map(function(parent) {
return (parent.children || []).map(function(child) {
return {
source: parent,
target: child
};
});
}));
}
d3.layout.pack = function() {
var hierarchy = d3.layout.hierarchy().sort(d3_layout_packSort), padding = 0, size = [ 1, 1 ];
function pack(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0];
root.x = 0;
root.y = 0;
d3_layout_treeVisitAfter(root, function(d) {
d.r = Math.sqrt(d.value);
});
d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
var w = size[0], h = size[1], k = Math.max(2 * root.r / w, 2 * root.r / h);
if (padding > 0) {
var dr = padding * k / 2;
d3_layout_treeVisitAfter(root, function(d) {
d.r += dr;
});
d3_layout_treeVisitAfter(root, d3_layout_packSiblings);
d3_layout_treeVisitAfter(root, function(d) {
d.r -= dr;
});
k = Math.max(2 * root.r / w, 2 * root.r / h);
}
d3_layout_packTransform(root, w / 2, h / 2, 1 / k);
return nodes;
}
pack.size = function(x) {
if (!arguments.length) return size;
size = x;
return pack;
};
pack.padding = function(_) {
if (!arguments.length) return padding;
padding = +_;
return pack;
};
return d3_layout_hierarchyRebind(pack, hierarchy);
};
function d3_layout_packSort(a, b) {
return a.value - b.value;
}
function d3_layout_packInsert(a, b) {
var c = a._pack_next;
a._pack_next = b;
b._pack_prev = a;
b._pack_next = c;
c._pack_prev = b;
}
function d3_layout_packSplice(a, b) {
a._pack_next = b;
b._pack_prev = a;
}
function d3_layout_packIntersects(a, b) {
var dx = b.x - a.x, dy = b.y - a.y, dr = a.r + b.r;
return dr * dr - dx * dx - dy * dy > .001;
}
function d3_layout_packSiblings(node) {
if (!(nodes = node.children) || !(n = nodes.length)) return;
var nodes, xMin = Infinity, xMax = -Infinity, yMin = Infinity, yMax = -Infinity, a, b, c, i, j, k, n;
function bound(node) {
xMin = Math.min(node.x - node.r, xMin);
xMax = Math.max(node.x + node.r, xMax);
yMin = Math.min(node.y - node.r, yMin);
yMax = Math.max(node.y + node.r, yMax);
}
nodes.forEach(d3_layout_packLink);
a = nodes[0];
a.x = -a.r;
a.y = 0;
bound(a);
if (n > 1) {
b = nodes[1];
b.x = b.r;
b.y = 0;
bound(b);
if (n > 2) {
c = nodes[2];
d3_layout_packPlace(a, b, c);
bound(c);
d3_layout_packInsert(a, c);
a._pack_prev = c;
d3_layout_packInsert(c, b);
b = a._pack_next;
for (i = 3; i < n; i++) {
d3_layout_packPlace(a, b, c = nodes[i]);
var isect = 0, s1 = 1, s2 = 1;
for (j = b._pack_next; j !== b; j = j._pack_next, s1++) {
if (d3_layout_packIntersects(j, c)) {
isect = 1;
break;
}
}
if (isect == 1) {
for (k = a._pack_prev; k !== j._pack_prev; k = k._pack_prev, s2++) {
if (d3_layout_packIntersects(k, c)) {
break;
}
}
}
if (isect) {
if (s1 < s2 || s1 == s2 && b.r < a.r) d3_layout_packSplice(a, b = j); else d3_layout_packSplice(a = k, b);
i--;
} else {
d3_layout_packInsert(a, c);
b = c;
bound(c);
}
}
}
}
var cx = (xMin + xMax) / 2, cy = (yMin + yMax) / 2, cr = 0;
for (i = 0; i < n; i++) {
c = nodes[i];
c.x -= cx;
c.y -= cy;
cr = Math.max(cr, c.r + Math.sqrt(c.x * c.x + c.y * c.y));
}
node.r = cr;
nodes.forEach(d3_layout_packUnlink);
}
function d3_layout_packLink(node) {
node._pack_next = node._pack_prev = node;
}
function d3_layout_packUnlink(node) {
delete node._pack_next;
delete node._pack_prev;
}
function d3_layout_packTransform(node, x, y, k) {
var children = node.children;
node.x = x += k * node.x;
node.y = y += k * node.y;
node.r *= k;
if (children) {
var i = -1, n = children.length;
while (++i < n) d3_layout_packTransform(children[i], x, y, k);
}
}
function d3_layout_packPlace(a, b, c) {
var db = a.r + c.r, dx = b.x - a.x, dy = b.y - a.y;
if (db && (dx || dy)) {
var da = b.r + c.r, dc = dx * dx + dy * dy;
da *= da;
db *= db;
var x = .5 + (db - da) / (2 * dc), y = Math.sqrt(Math.max(0, 2 * da * (db + dc) - (db -= dc) * db - da * da)) / (2 * dc);
c.x = a.x + x * dx + y * dy;
c.y = a.y + x * dy - y * dx;
} else {
c.x = a.x + db;
c.y = a.y;
}
}
d3.layout.cluster = function() {
var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ];
function cluster(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0], previousNode, x = 0;
d3_layout_treeVisitAfter(root, function(node) {
var children = node.children;
if (children && children.length) {
node.x = d3_layout_clusterX(children);
node.y = d3_layout_clusterY(children);
} else {
node.x = previousNode ? x += separation(node, previousNode) : 0;
node.y = 0;
previousNode = node;
}
});
var left = d3_layout_clusterLeft(root), right = d3_layout_clusterRight(root), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2;
d3_layout_treeVisitAfter(root, function(node) {
node.x = (node.x - x0) / (x1 - x0) * size[0];
node.y = (1 - (root.y ? node.y / root.y : 1)) * size[1];
});
return nodes;
}
cluster.separation = function(x) {
if (!arguments.length) return separation;
separation = x;
return cluster;
};
cluster.size = function(x) {
if (!arguments.length) return size;
size = x;
return cluster;
};
return d3_layout_hierarchyRebind(cluster, hierarchy);
};
function d3_layout_clusterY(children) {
return 1 + d3.max(children, function(child) {
return child.y;
});
}
function d3_layout_clusterX(children) {
return children.reduce(function(x, child) {
return x + child.x;
}, 0) / children.length;
}
function d3_layout_clusterLeft(node) {
var children = node.children;
return children && children.length ? d3_layout_clusterLeft(children[0]) : node;
}
function d3_layout_clusterRight(node) {
var children = node.children, n;
return children && (n = children.length) ? d3_layout_clusterRight(children[n - 1]) : node;
}
d3.layout.tree = function() {
var hierarchy = d3.layout.hierarchy().sort(null).value(null), separation = d3_layout_treeSeparation, size = [ 1, 1 ];
function tree(d, i) {
var nodes = hierarchy.call(this, d, i), root = nodes[0];
function firstWalk(node, previousSibling) {
var children = node.children, layout = node._tree;
if (children && (n = children.length)) {
var n, firstChild = children[0], previousChild, ancestor = firstChild, child, i = -1;
while (++i < n) {
child = children[i];
firstWalk(child, previousChild);
ancestor = apportion(child, previousChild, ancestor);
previousChild = child;
}
d3_layout_treeShift(node);
var midpoint = .5 * (firstChild._tree.prelim + child._tree.prelim);
if (previousSibling) {
layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
layout.mod = layout.prelim - midpoint;
} else {
layout.prelim = midpoint;
}
} else {
if (previousSibling) {
layout.prelim = previousSibling._tree.prelim + separation(node, previousSibling);
}
}
}
function secondWalk(node, x) {
node.x = node._tree.prelim + x;
var children = node.children;
if (children && (n = children.length)) {
var i = -1, n;
x += node._tree.mod;
while (++i < n) {
secondWalk(children[i], x);
}
}
}
function apportion(node, previousSibling, ancestor) {
if (previousSibling) {
var vip = node, vop = node, vim = previousSibling, vom = node.parent.children[0], sip = vip._tree.mod, sop = vop._tree.mod, sim = vim._tree.mod, som = vom._tree.mod, shift;
while (vim = d3_layout_treeRight(vim), vip = d3_layout_treeLeft(vip), vim && vip) {
vom = d3_layout_treeLeft(vom);
vop = d3_layout_treeRight(vop);
vop._tree.ancestor = node;
shift = vim._tree.prelim + sim - vip._tree.prelim - sip + separation(vim, vip);
if (shift > 0) {
d3_layout_treeMove(d3_layout_treeAncestor(vim, node, ancestor), node, shift);
sip += shift;
sop += shift;
}
sim += vim._tree.mod;
sip += vip._tree.mod;
som += vom._tree.mod;
sop += vop._tree.mod;
}
if (vim && !d3_layout_treeRight(vop)) {
vop._tree.thread = vim;
vop._tree.mod += sim - sop;
}
if (vip && !d3_layout_treeLeft(vom)) {
vom._tree.thread = vip;
vom._tree.mod += sip - som;
ancestor = node;
}
}
return ancestor;
}
d3_layout_treeVisitAfter(root, function(node, previousSibling) {
node._tree = {
ancestor: node,
prelim: 0,
mod: 0,
change: 0,
shift: 0,
number: previousSibling ? previousSibling._tree.number + 1 : 0
};
});
firstWalk(root);
secondWalk(root, -root._tree.prelim);
var left = d3_layout_treeSearch(root, d3_layout_treeLeftmost), right = d3_layout_treeSearch(root, d3_layout_treeRightmost), deep = d3_layout_treeSearch(root, d3_layout_treeDeepest), x0 = left.x - separation(left, right) / 2, x1 = right.x + separation(right, left) / 2, y1 = deep.depth || 1;
d3_layout_treeVisitAfter(root, function(node) {
node.x = (node.x - x0) / (x1 - x0) * size[0];
node.y = node.depth / y1 * size[1];
delete node._tree;
});
return nodes;
}
tree.separation = function(x) {
if (!arguments.length) return separation;
separation = x;
return tree;
};
tree.size = function(x) {
if (!arguments.length) return size;
size = x;
return tree;
};
return d3_layout_hierarchyRebind(tree, hierarchy);
};
function d3_layout_treeSeparation(a, b) {
return a.parent == b.parent ? 1 : 2;
}
function d3_layout_treeLeft(node) {
var children = node.children;
return children && children.length ? children[0] : node._tree.thread;
}
function d3_layout_treeRight(node) {
var children = node.children, n;
return children && (n = children.length) ? children[n - 1] : node._tree.thread;
}
function d3_layout_treeSearch(node, compare) {
var children = node.children;
if (children && (n = children.length)) {
var child, n, i = -1;
while (++i < n) {
if (compare(child = d3_layout_treeSearch(children[i], compare), node) > 0) {
node = child;
}
}
}
return node;
}
function d3_layout_treeRightmost(a, b) {
return a.x - b.x;
}
function d3_layout_treeLeftmost(a, b) {
return b.x - a.x;
}
function d3_layout_treeDeepest(a, b) {
return a.depth - b.depth;
}
function d3_layout_treeVisitAfter(node, callback) {
function visit(node, previousSibling) {
var children = node.children;
if (children && (n = children.length)) {
var child, previousChild = null, i = -1, n;
while (++i < n) {
child = children[i];
visit(child, previousChild);
previousChild = child;
}
}
callback(node, previousSibling);
}
visit(node, null);
}
function d3_layout_treeShift(node) {
var shift = 0, change = 0, children = node.children, i = children.length, child;
while (--i >= 0) {
child = children[i]._tree;
child.prelim += shift;
child.mod += shift;
shift += child.shift + (change += child.change);
}
}
function d3_layout_treeMove(ancestor, node, shift) {
ancestor = ancestor._tree;
node = node._tree;
var change = shift / (node.number - ancestor.number);
ancestor.change += change;
node.change -= change;
node.shift += shift;
node.prelim += shift;
node.mod += shift;
}
function d3_layout_treeAncestor(vim, node, ancestor) {
return vim._tree.ancestor.parent == node.parent ? vim._tree.ancestor : ancestor;
}
d3.layout.treemap = function() {
var hierarchy = d3.layout.hierarchy(), round = Math.round, size = [ 1, 1 ], padding = null, pad = d3_layout_treemapPadNull, sticky = false, stickies, mode = "squarify", ratio = .5 * (1 + Math.sqrt(5));
function scale(children, k) {
var i = -1, n = children.length, child, area;
while (++i < n) {
area = (child = children[i]).value * (k < 0 ? 0 : k);
child.area = isNaN(area) || area <= 0 ? 0 : area;
}
}
function squarify(node) {
var children = node.children;
if (children && children.length) {
var rect = pad(node), row = [], remaining = children.slice(), child, best = Infinity, score, u = mode === "slice" ? rect.dx : mode === "dice" ? rect.dy : mode === "slice-dice" ? node.depth & 1 ? rect.dy : rect.dx : Math.min(rect.dx, rect.dy), n;
scale(remaining, rect.dx * rect.dy / node.value);
row.area = 0;
while ((n = remaining.length) > 0) {
row.push(child = remaining[n - 1]);
row.area += child.area;
if (mode !== "squarify" || (score = worst(row, u)) <= best) {
remaining.pop();
best = score;
} else {
row.area -= row.pop().area;
position(row, u, rect, false);
u = Math.min(rect.dx, rect.dy);
row.length = row.area = 0;
best = Infinity;
}
}
if (row.length) {
position(row, u, rect, true);
row.length = row.area = 0;
}
children.forEach(squarify);
}
}
function stickify(node) {
var children = node.children;
if (children && children.length) {
var rect = pad(node), remaining = children.slice(), child, row = [];
scale(remaining, rect.dx * rect.dy / node.value);
row.area = 0;
while (child = remaining.pop()) {
row.push(child);
row.area += child.area;
if (child.z != null) {
position(row, child.z ? rect.dx : rect.dy, rect, !remaining.length);
row.length = row.area = 0;
}
}
children.forEach(stickify);
}
}
function worst(row, u) {
var s = row.area, r, rmax = 0, rmin = Infinity, i = -1, n = row.length;
while (++i < n) {
if (!(r = row[i].area)) continue;
if (r < rmin) rmin = r;
if (r > rmax) rmax = r;
}
s *= s;
u *= u;
return s ? Math.max(u * rmax * ratio / s, s / (u * rmin * ratio)) : Infinity;
}
function position(row, u, rect, flush) {
var i = -1, n = row.length, x = rect.x, y = rect.y, v = u ? round(row.area / u) : 0, o;
if (u == rect.dx) {
if (flush || v > rect.dy) v = rect.dy;
while (++i < n) {
o = row[i];
o.x = x;
o.y = y;
o.dy = v;
x += o.dx = Math.min(rect.x + rect.dx - x, v ? round(o.area / v) : 0);
}
o.z = true;
o.dx += rect.x + rect.dx - x;
rect.y += v;
rect.dy -= v;
} else {
if (flush || v > rect.dx) v = rect.dx;
while (++i < n) {
o = row[i];
o.x = x;
o.y = y;
o.dx = v;
y += o.dy = Math.min(rect.y + rect.dy - y, v ? round(o.area / v) : 0);
}
o.z = false;
o.dy += rect.y + rect.dy - y;
rect.x += v;
rect.dx -= v;
}
}
function treemap(d) {
var nodes = stickies || hierarchy(d), root = nodes[0];
root.x = 0;
root.y = 0;
root.dx = size[0];
root.dy = size[1];
if (stickies) hierarchy.revalue(root);
scale([ root ], root.dx * root.dy / root.value);
(stickies ? stickify : squarify)(root);
if (sticky) stickies = nodes;
return nodes;
}
treemap.size = function(x) {
if (!arguments.length) return size;
size = x;
return treemap;
};
treemap.padding = function(x) {
if (!arguments.length) return padding;
function padFunction(node) {
var p = x.call(treemap, node, node.depth);
return p == null ? d3_layout_treemapPadNull(node) : d3_layout_treemapPad(node, typeof p === "number" ? [ p, p, p, p ] : p);
}
function padConstant(node) {
return d3_layout_treemapPad(node, x);
}
var type;
pad = (padding = x) == null ? d3_layout_treemapPadNull : (type = typeof x) === "function" ? padFunction : type === "number" ? (x = [ x, x, x, x ],
padConstant) : padConstant;
return treemap;
};
treemap.round = function(x) {
if (!arguments.length) return round != Number;
round = x ? Math.round : Number;
return treemap;
};
treemap.sticky = function(x) {
if (!arguments.length) return sticky;
sticky = x;
stickies = null;
return treemap;
};
treemap.ratio = function(x) {
if (!arguments.length) return ratio;
ratio = x;
return treemap;
};
treemap.mode = function(x) {
if (!arguments.length) return mode;
mode = x + "";
return treemap;
};
return d3_layout_hierarchyRebind(treemap, hierarchy);
};
function d3_layout_treemapPadNull(node) {
return {
x: node.x,
y: node.y,
dx: node.dx,
dy: node.dy
};
}
function d3_layout_treemapPad(node, padding) {
var x = node.x + padding[3], y = node.y + padding[0], dx = node.dx - padding[1] - padding[3], dy = node.dy - padding[0] - padding[2];
if (dx < 0) {
x += dx / 2;
dx = 0;
}
if (dy < 0) {
y += dy / 2;
dy = 0;
}
return {
x: x,
y: y,
dx: dx,
dy: dy
};
}
function d3_dsv(delimiter, mimeType) {
var reFormat = new RegExp('["' + delimiter + "\n]"), delimiterCode = delimiter.charCodeAt(0);
function dsv(url, callback) {
return d3.xhr(url, mimeType, callback).response(response);
}
function response(request) {
return dsv.parse(request.responseText);
}
dsv.parse = function(text) {
var o;
return dsv.parseRows(text, function(row) {
if (o) return o(row);
o = new Function("d", "return {" + row.map(function(name, i) {
return JSON.stringify(name) + ": d[" + i + "]";
}).join(",") + "}");
});
};
dsv.parseRows = function(text, f) {
var EOL = {}, EOF = {}, rows = [], N = text.length, I = 0, n = 0, t, eol;
function token() {
if (I >= N) return EOF;
if (eol) return eol = false, EOL;
var j = I;
if (text.charCodeAt(j) === 34) {
var i = j;
while (i++ < N) {
if (text.charCodeAt(i) === 34) {
if (text.charCodeAt(i + 1) !== 34) break;
++i;
}
}
I = i + 2;
var c = text.charCodeAt(i + 1);
if (c === 13) {
eol = true;
if (text.charCodeAt(i + 2) === 10) ++I;
} else if (c === 10) {
eol = true;
}
return text.substring(j + 1, i).replace(/""/g, '"');
}
while (I < N) {
var c = text.charCodeAt(I++), k = 1;
if (c === 10) eol = true; else if (c === 13) {
eol = true;
if (text.charCodeAt(I) === 10) ++I, ++k;
} else if (c !== delimiterCode) continue;
return text.substring(j, I - k);
}
return text.substring(j);
}
while ((t = token()) !== EOF) {
var a = [];
while (t !== EOL && t !== EOF) {
a.push(t);
t = token();
}
if (f && !(a = f(a, n++))) continue;
rows.push(a);
}
return rows;
};
dsv.format = function(rows) {
return rows.map(formatRow).join("\n");
};
function formatRow(row) {
return row.map(formatValue).join(delimiter);
}
function formatValue(text) {
return reFormat.test(text) ? '"' + text.replace(/\"/g, '""') + '"' : text;
}
return dsv;
}
d3.csv = d3_dsv(",", "text/csv");
d3.tsv = d3_dsv(" ", "text/tab-separated-values");
d3.geo = {};
d3.geo.stream = function(object, listener) {
if (d3_geo_streamObjectType.hasOwnProperty(object.type)) {
d3_geo_streamObjectType[object.type](object, listener);
} else {
d3_geo_streamGeometry(object, listener);
}
};
function d3_geo_streamGeometry(geometry, listener) {
if (d3_geo_streamGeometryType.hasOwnProperty(geometry.type)) {
d3_geo_streamGeometryType[geometry.type](geometry, listener);
}
}
var d3_geo_streamObjectType = {
Feature: function(feature, listener) {
d3_geo_streamGeometry(feature.geometry, listener);
},
FeatureCollection: function(object, listener) {
var features = object.features, i = -1, n = features.length;
while (++i < n) d3_geo_streamGeometry(features[i].geometry, listener);
}
};
var d3_geo_streamGeometryType = {
Sphere: function(object, listener) {
listener.sphere();
},
Point: function(object, listener) {
var coordinate = object.coordinates;
listener.point(coordinate[0], coordinate[1]);
},
MultiPoint: function(object, listener) {
var coordinates = object.coordinates, i = -1, n = coordinates.length, coordinate;
while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1]);
},
LineString: function(object, listener) {
d3_geo_streamLine(object.coordinates, listener, 0);
},
MultiLineString: function(object, listener) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) d3_geo_streamLine(coordinates[i], listener, 0);
},
Polygon: function(object, listener) {
d3_geo_streamPolygon(object.coordinates, listener);
},
MultiPolygon: function(object, listener) {
var coordinates = object.coordinates, i = -1, n = coordinates.length;
while (++i < n) d3_geo_streamPolygon(coordinates[i], listener);
},
GeometryCollection: function(object, listener) {
var geometries = object.geometries, i = -1, n = geometries.length;
while (++i < n) d3_geo_streamGeometry(geometries[i], listener);
}
};
function d3_geo_streamLine(coordinates, listener, closed) {
var i = -1, n = coordinates.length - closed, coordinate;
listener.lineStart();
while (++i < n) coordinate = coordinates[i], listener.point(coordinate[0], coordinate[1]);
listener.lineEnd();
}
function d3_geo_streamPolygon(coordinates, listener) {
var i = -1, n = coordinates.length;
listener.polygonStart();
while (++i < n) d3_geo_streamLine(coordinates[i], listener, 1);
listener.polygonEnd();
}
function d3_geo_spherical(cartesian) {
return [ Math.atan2(cartesian[1], cartesian[0]), Math.asin(Math.max(-1, Math.min(1, cartesian[2]))) ];
}
function d3_geo_sphericalEqual(a, b) {
return Math.abs(a[0] - b[0]) < ε && Math.abs(a[1] - b[1]) < ε;
}
function d3_geo_cartesian(spherical) {
var λ = spherical[0], φ = spherical[1], cosφ = Math.cos(φ);
return [ cosφ * Math.cos(λ), cosφ * Math.sin(λ), Math.sin(φ) ];
}
function d3_geo_cartesianDot(a, b) {
return a[0] * b[0] + a[1] * b[1] + a[2] * b[2];
}
function d3_geo_cartesianCross(a, b) {
return [ a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0] ];
}
function d3_geo_cartesianAdd(a, b) {
a[0] += b[0];
a[1] += b[1];
a[2] += b[2];
}
function d3_geo_cartesianScale(vector, k) {
return [ vector[0] * k, vector[1] * k, vector[2] * k ];
}
function d3_geo_cartesianNormalize(d) {
var l = Math.sqrt(d[0] * d[0] + d[1] * d[1] + d[2] * d[2]);
d[0] /= l;
d[1] /= l;
d[2] /= l;
}
function d3_geo_resample(project) {
var δ2 = .5, maxDepth = 16;
function resample(stream) {
var λ0, x0, y0, a0, b0, c0;
var resample = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
stream.polygonStart();
resample.lineStart = polygonLineStart;
},
polygonEnd: function() {
stream.polygonEnd();
resample.lineStart = lineStart;
}
};
function point(x, y) {
x = project(x, y);
stream.point(x[0], x[1]);
}
function lineStart() {
x0 = NaN;
resample.point = linePoint;
stream.lineStart();
}
function linePoint(λ, φ) {
var c = d3_geo_cartesian([ λ, φ ]), p = project(λ, φ);
resampleLineTo(x0, y0, λ0, a0, b0, c0, x0 = p[0], y0 = p[1], λ0 = λ, a0 = c[0], b0 = c[1], c0 = c[2], maxDepth, stream);
stream.point(x0, y0);
}
function lineEnd() {
resample.point = point;
stream.lineEnd();
}
function polygonLineStart() {
var λ00, φ00, x00, y00, a00, b00, c00;
lineStart();
resample.point = function(λ, φ) {
linePoint(λ00 = λ, φ00 = φ), x00 = x0, y00 = y0, a00 = a0, b00 = b0, c00 = c0;
resample.point = linePoint;
};
resample.lineEnd = function() {
resampleLineTo(x0, y0, λ0, a0, b0, c0, x00, y00, λ00, a00, b00, c00, maxDepth, stream);
resample.lineEnd = lineEnd;
lineEnd();
};
}
return resample;
}
function resampleLineTo(x0, y0, λ0, a0, b0, c0, x1, y1, λ1, a1, b1, c1, depth, stream) {
var dx = x1 - x0, dy = y1 - y0, d2 = dx * dx + dy * dy;
if (d2 > 4 * δ2 && depth--) {
var a = a0 + a1, b = b0 + b1, c = c0 + c1, m = Math.sqrt(a * a + b * b + c * c), φ2 = Math.asin(c /= m), λ2 = Math.abs(Math.abs(c) - 1) < ε ? (λ0 + λ1) / 2 : Math.atan2(b, a), p = project(λ2, φ2), x2 = p[0], y2 = p[1], dx2 = x2 - x0, dy2 = y2 - y0, dz = dy * dx2 - dx * dy2;
if (dz * dz / d2 > δ2 || Math.abs((dx * dx2 + dy * dy2) / d2 - .5) > .3) {
resampleLineTo(x0, y0, λ0, a0, b0, c0, x2, y2, λ2, a /= m, b /= m, c, depth, stream);
stream.point(x2, y2);
resampleLineTo(x2, y2, λ2, a, b, c, x1, y1, λ1, a1, b1, c1, depth, stream);
}
}
}
resample.precision = function(_) {
if (!arguments.length) return Math.sqrt(δ2);
maxDepth = (δ2 = _ * _) > 0 && 16;
return resample;
};
return resample;
}
d3.geo.albersUsa = function() {
var lower48 = d3.geo.albers();
var alaska = d3.geo.albers().rotate([ 160, 0 ]).center([ 0, 60 ]).parallels([ 55, 65 ]);
var hawaii = d3.geo.albers().rotate([ 160, 0 ]).center([ 0, 20 ]).parallels([ 8, 18 ]);
var puertoRico = d3.geo.albers().rotate([ 60, 0 ]).center([ 0, 10 ]).parallels([ 8, 18 ]);
function albersUsa(coordinates) {
return projection(coordinates)(coordinates);
}
function projection(point) {
var lon = point[0], lat = point[1];
return lat > 50 ? alaska : lon < -140 ? hawaii : lat < 21 ? puertoRico : lower48;
}
albersUsa.scale = function(x) {
if (!arguments.length) return lower48.scale();
lower48.scale(x);
alaska.scale(x * .6);
hawaii.scale(x);
puertoRico.scale(x * 1.5);
return albersUsa.translate(lower48.translate());
};
albersUsa.translate = function(x) {
if (!arguments.length) return lower48.translate();
var dz = lower48.scale(), dx = x[0], dy = x[1];
lower48.translate(x);
alaska.translate([ dx - .4 * dz, dy + .17 * dz ]);
hawaii.translate([ dx - .19 * dz, dy + .2 * dz ]);
puertoRico.translate([ dx + .58 * dz, dy + .43 * dz ]);
return albersUsa;
};
return albersUsa.scale(lower48.scale());
};
function d3_geo_albers(φ0, φ1) {
var sinφ0 = Math.sin(φ0), n = (sinφ0 + Math.sin(φ1)) / 2, C = 1 + sinφ0 * (2 * n - sinφ0), ρ0 = Math.sqrt(C) / n;
function albers(λ, φ) {
var ρ = Math.sqrt(C - 2 * n * Math.sin(φ)) / n;
return [ ρ * Math.sin(λ *= n), ρ0 - ρ * Math.cos(λ) ];
}
albers.invert = function(x, y) {
var ρ0_y = ρ0 - y;
return [ Math.atan2(x, ρ0_y) / n, Math.asin((C - (x * x + ρ0_y * ρ0_y) * n * n) / (2 * n)) ];
};
return albers;
}
(d3.geo.albers = function() {
var φ0 = 29.5 * d3_radians, φ1 = 45.5 * d3_radians, m = d3_geo_projectionMutator(d3_geo_albers), p = m(φ0, φ1);
p.parallels = function(_) {
if (!arguments.length) return [ φ0 * d3_degrees, φ1 * d3_degrees ];
return m(φ0 = _[0] * d3_radians, φ1 = _[1] * d3_radians);
};
return p.rotate([ 98, 0 ]).center([ 0, 38 ]).scale(1e3);
}).raw = d3_geo_albers;
var d3_geo_azimuthalEqualArea = d3_geo_azimuthal(function(cosλcosφ) {
return Math.sqrt(2 / (1 + cosλcosφ));
}, function(ρ) {
return 2 * Math.asin(ρ / 2);
});
(d3.geo.azimuthalEqualArea = function() {
return d3_geo_projection(d3_geo_azimuthalEqualArea);
}).raw = d3_geo_azimuthalEqualArea;
var d3_geo_azimuthalEquidistant = d3_geo_azimuthal(function(cosλcosφ) {
var c = Math.acos(cosλcosφ);
return c && c / Math.sin(c);
}, d3_identity);
(d3.geo.azimuthalEquidistant = function() {
return d3_geo_projection(d3_geo_azimuthalEquidistant);
}).raw = d3_geo_azimuthalEquidistant;
d3.geo.bounds = d3_geo_bounds(d3_identity);
function d3_geo_bounds(projectStream) {
var x0, y0, x1, y1;
var bound = {
point: boundPoint,
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: function() {
bound.lineEnd = boundPolygonLineEnd;
},
polygonEnd: function() {
bound.point = boundPoint;
}
};
function boundPoint(x, y) {
if (x < x0) x0 = x;
if (x > x1) x1 = x;
if (y < y0) y0 = y;
if (y > y1) y1 = y;
}
function boundPolygonLineEnd() {
bound.point = bound.lineEnd = d3_noop;
}
return function(feature) {
y1 = x1 = -(x0 = y0 = Infinity);
d3.geo.stream(feature, projectStream(bound));
return [ [ x0, y0 ], [ x1, y1 ] ];
};
}
d3.geo.centroid = function(object) {
d3_geo_centroidDimension = d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
d3.geo.stream(object, d3_geo_centroid);
var m;
if (d3_geo_centroidW && Math.abs(m = Math.sqrt(d3_geo_centroidX * d3_geo_centroidX + d3_geo_centroidY * d3_geo_centroidY + d3_geo_centroidZ * d3_geo_centroidZ)) > ε) {
return [ Math.atan2(d3_geo_centroidY, d3_geo_centroidX) * d3_degrees, Math.asin(Math.max(-1, Math.min(1, d3_geo_centroidZ / m))) * d3_degrees ];
}
};
var d3_geo_centroidDimension, d3_geo_centroidW, d3_geo_centroidX, d3_geo_centroidY, d3_geo_centroidZ;
var d3_geo_centroid = {
sphere: function() {
if (d3_geo_centroidDimension < 2) {
d3_geo_centroidDimension = 2;
d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
}
},
point: d3_geo_centroidPoint,
lineStart: d3_geo_centroidLineStart,
lineEnd: d3_geo_centroidLineEnd,
polygonStart: function() {
if (d3_geo_centroidDimension < 2) {
d3_geo_centroidDimension = 2;
d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
}
d3_geo_centroid.lineStart = d3_geo_centroidRingStart;
},
polygonEnd: function() {
d3_geo_centroid.lineStart = d3_geo_centroidLineStart;
}
};
function d3_geo_centroidPoint(λ, φ) {
if (d3_geo_centroidDimension) return;
++d3_geo_centroidW;
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
d3_geo_centroidX += (cosφ * Math.cos(λ) - d3_geo_centroidX) / d3_geo_centroidW;
d3_geo_centroidY += (cosφ * Math.sin(λ) - d3_geo_centroidY) / d3_geo_centroidW;
d3_geo_centroidZ += (Math.sin(φ) - d3_geo_centroidZ) / d3_geo_centroidW;
}
function d3_geo_centroidRingStart() {
var λ00, φ00;
d3_geo_centroidDimension = 1;
d3_geo_centroidLineStart();
d3_geo_centroidDimension = 2;
var linePoint = d3_geo_centroid.point;
d3_geo_centroid.point = function(λ, φ) {
linePoint(λ00 = λ, φ00 = φ);
};
d3_geo_centroid.lineEnd = function() {
d3_geo_centroid.point(λ00, φ00);
d3_geo_centroidLineEnd();
d3_geo_centroid.lineEnd = d3_geo_centroidLineEnd;
};
}
function d3_geo_centroidLineStart() {
var x0, y0, z0;
if (d3_geo_centroidDimension > 1) return;
if (d3_geo_centroidDimension < 1) {
d3_geo_centroidDimension = 1;
d3_geo_centroidW = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
}
d3_geo_centroid.point = function(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians);
x0 = cosφ * Math.cos(λ);
y0 = cosφ * Math.sin(λ);
z0 = Math.sin(φ);
d3_geo_centroid.point = nextPoint;
};
function nextPoint(λ, φ) {
λ *= d3_radians;
var cosφ = Math.cos(φ *= d3_radians), x = cosφ * Math.cos(λ), y = cosφ * Math.sin(λ), z = Math.sin(φ), w = Math.atan2(Math.sqrt((w = y0 * z - z0 * y) * w + (w = z0 * x - x0 * z) * w + (w = x0 * y - y0 * x) * w), x0 * x + y0 * y + z0 * z);
d3_geo_centroidW += w;
d3_geo_centroidX += w * (x0 + (x0 = x));
d3_geo_centroidY += w * (y0 + (y0 = y));
d3_geo_centroidZ += w * (z0 + (z0 = z));
}
}
function d3_geo_centroidLineEnd() {
d3_geo_centroid.point = d3_geo_centroidPoint;
}
d3.geo.circle = function() {
var origin = [ 0, 0 ], angle, precision = 6, interpolate;
function circle() {
var center = typeof origin === "function" ? origin.apply(this, arguments) : origin, rotate = d3_geo_rotation(-center[0] * d3_radians, -center[1] * d3_radians, 0).invert, ring = [];
interpolate(null, null, 1, {
point: function(x, y) {
ring.push(x = rotate(x, y));
x[0] *= d3_degrees, x[1] *= d3_degrees;
}
});
return {
type: "Polygon",
coordinates: [ ring ]
};
}
circle.origin = function(x) {
if (!arguments.length) return origin;
origin = x;
return circle;
};
circle.angle = function(x) {
if (!arguments.length) return angle;
interpolate = d3_geo_circleInterpolate((angle = +x) * d3_radians, precision * d3_radians);
return circle;
};
circle.precision = function(_) {
if (!arguments.length) return precision;
interpolate = d3_geo_circleInterpolate(angle * d3_radians, (precision = +_) * d3_radians);
return circle;
};
return circle.angle(90);
};
function d3_geo_circleInterpolate(radians, precision) {
var cr = Math.cos(radians), sr = Math.sin(radians);
return function(from, to, direction, listener) {
if (from != null) {
from = d3_geo_circleAngle(cr, from);
to = d3_geo_circleAngle(cr, to);
if (direction > 0 ? from < to : from > to) from += direction * 2 * π;
} else {
from = radians + direction * 2 * π;
to = radians;
}
var point;
for (var step = direction * precision, t = from; direction > 0 ? t > to : t < to; t -= step) {
listener.point((point = d3_geo_spherical([ cr, -sr * Math.cos(t), -sr * Math.sin(t) ]))[0], point[1]);
}
};
}
function d3_geo_circleAngle(cr, point) {
var a = d3_geo_cartesian(point);
a[0] -= cr;
d3_geo_cartesianNormalize(a);
var angle = Math.acos(Math.max(-1, Math.min(1, -a[1])));
return ((-a[2] < 0 ? -angle : angle) + 2 * Math.PI - ε) % (2 * Math.PI);
}
function d3_geo_clip(pointVisible, clipLine, interpolate) {
return function(listener) {
var line = clipLine(listener);
var clip = {
point: point,
lineStart: lineStart,
lineEnd: lineEnd,
polygonStart: function() {
clip.point = pointRing;
clip.lineStart = ringStart;
clip.lineEnd = ringEnd;
invisible = false;
invisibleArea = visibleArea = 0;
segments = [];
listener.polygonStart();
},
polygonEnd: function() {
clip.point = point;
clip.lineStart = lineStart;
clip.lineEnd = lineEnd;
segments = d3.merge(segments);
if (segments.length) {
d3_geo_clipPolygon(segments, interpolate, listener);
} else if (visibleArea < -ε || invisible && invisibleArea < -ε) {
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
}
listener.polygonEnd();
segments = null;
},
sphere: function() {
listener.polygonStart();
listener.lineStart();
interpolate(null, null, 1, listener);
listener.lineEnd();
listener.polygonEnd();
}
};
function point(λ, φ) {
if (pointVisible(λ, φ)) listener.point(λ, φ);
}
function pointLine(λ, φ) {
line.point(λ, φ);
}
function lineStart() {
clip.point = pointLine;
line.lineStart();
}
function lineEnd() {
clip.point = point;
line.lineEnd();
}
var segments, visibleArea, invisibleArea, invisible;
var buffer = d3_geo_clipBufferListener(), ringListener = clipLine(buffer), ring;
function pointRing(λ, φ) {
ringListener.point(λ, φ);
ring.push([ λ, φ ]);
}
function ringStart() {
ringListener.lineStart();
ring = [];
}
function ringEnd() {
pointRing(ring[0][0], ring[0][1]);
ringListener.lineEnd();
var clean = ringListener.clean(), ringSegments = buffer.buffer(), segment, n = ringSegments.length;
if (!n) {
invisible = true;
invisibleArea += d3_geo_clipAreaRing(ring, -1);
ring = null;
return;
}
ring = null;
if (clean & 1) {
segment = ringSegments[0];
visibleArea += d3_geo_clipAreaRing(segment, 1);
var n = segment.length - 1, i = -1, point;
listener.lineStart();
while (++i < n) listener.point((point = segment[i])[0], point[1]);
listener.lineEnd();
return;
}
if (n > 1 && clean & 2) ringSegments.push(ringSegments.pop().concat(ringSegments.shift()));
segments.push(ringSegments.filter(d3_geo_clipSegmentLength1));
}
return clip;
};
}
function d3_geo_clipPolygon(segments, interpolate, listener) {
var subject = [], clip = [];
segments.forEach(function(segment) {
if ((n = segment.length) <= 1) return;
var n, p0 = segment[0], p1 = segment[n - 1];
if (d3_geo_sphericalEqual(p0, p1)) {
listener.lineStart();
for (var i = 0; i < n; ++i) listener.point((p0 = segment[i])[0], p0[1]);
listener.lineEnd();
return;
}
var a = {
point: p0,
points: segment,
other: null,
visited: false,
entry: true,
subject: true
}, b = {
point: p0,
points: [ p0 ],
other: a,
visited: false,
entry: false,
subject: false
};
a.other = b;
subject.push(a);
clip.push(b);
a = {
point: p1,
points: [ p1 ],
other: null,
visited: false,
entry: false,
subject: true
};
b = {
point: p1,
points: [ p1 ],
other: a,
visited: false,
entry: true,
subject: false
};
a.other = b;
subject.push(a);
clip.push(b);
});
clip.sort(d3_geo_clipSort);
d3_geo_clipLinkCircular(subject);
d3_geo_clipLinkCircular(clip);
if (!subject.length) return;
var start = subject[0], current, points, point;
while (1) {
current = start;
while (current.visited) if ((current = current.next) === start) return;
points = current.points;
listener.lineStart();
do {
current.visited = current.other.visited = true;
if (current.entry) {
if (current.subject) {
for (var i = 0; i < points.length; i++) listener.point((point = points[i])[0], point[1]);
} else {
interpolate(current.point, current.next.point, 1, listener);
}
current = current.next;
} else {
if (current.subject) {
points = current.prev.points;
for (var i = points.length; --i >= 0; ) listener.point((point = points[i])[0], point[1]);
} else {
interpolate(current.point, current.prev.point, -1, listener);
}
current = current.prev;
}
current = current.other;
points = current.points;
} while (!current.visited);
listener.lineEnd();
}
}
function d3_geo_clipLinkCircular(array) {
if (!(n = array.length)) return;
var n, i = 0, a = array[0], b;
while (++i < n) {
a.next = b = array[i];
b.prev = a;
a = b;
}
a.next = b = array[0];
b.prev = a;
}
function d3_geo_clipSort(a, b) {
return ((a = a.point)[0] < 0 ? a[1] - π / 2 - ε : π / 2 - a[1]) - ((b = b.point)[0] < 0 ? b[1] - π / 2 - ε : π / 2 - b[1]);
}
function d3_geo_clipSegmentLength1(segment) {
return segment.length > 1;
}
function d3_geo_clipBufferListener() {
var lines = [], line;
return {
lineStart: function() {
lines.push(line = []);
},
point: function(λ, φ) {
line.push([ λ, φ ]);
},
lineEnd: d3_noop,
buffer: function() {
var buffer = lines;
lines = [];
line = null;
return buffer;
}
};
}
function d3_geo_clipAreaRing(ring, invisible) {
if (!(n = ring.length)) return 0;
var n, i = 0, area = 0, p = ring[0], λ = p[0], φ = p[1], cosφ = Math.cos(φ), x0 = Math.atan2(invisible * Math.sin(λ) * cosφ, Math.sin(φ)), y0 = 1 - invisible * Math.cos(λ) * cosφ, x1 = x0, x, y;
while (++i < n) {
p = ring[i];
cosφ = Math.cos(φ = p[1]);
x = Math.atan2(invisible * Math.sin(λ = p[0]) * cosφ, Math.sin(φ));
y = 1 - invisible * Math.cos(λ) * cosφ;
if (Math.abs(y0 - 2) < ε && Math.abs(y - 2) < ε) continue;
if (Math.abs(y) < ε || Math.abs(y0) < ε) {} else if (Math.abs(Math.abs(x - x0) - π) < ε) {
if (y + y0 > 2) area += 4 * (x - x0);
} else if (Math.abs(y0 - 2) < ε) area += 4 * (x - x1); else area += ((3 * π + x - x0) % (2 * π) - π) * (y0 + y);
x1 = x0, x0 = x, y0 = y;
}
return area;
}
var d3_geo_clipAntimeridian = d3_geo_clip(d3_true, d3_geo_clipAntimeridianLine, d3_geo_clipAntimeridianInterpolate);
function d3_geo_clipAntimeridianLine(listener) {
var λ0 = NaN, φ0 = NaN, sλ0 = NaN, clean;
return {
lineStart: function() {
listener.lineStart();
clean = 1;
},
point: function(λ1, φ1) {
var sλ1 = λ1 > 0 ? π : -π, dλ = Math.abs(λ1 - λ0);
if (Math.abs(dλ - π) < ε) {
listener.point(λ0, φ0 = (φ0 + φ1) / 2 > 0 ? π / 2 : -π / 2);
listener.point(sλ0, φ0);
listener.lineEnd();
listener.lineStart();
listener.point(sλ1, φ0);
listener.point(λ1, φ0);
clean = 0;
} else if (sλ0 !== sλ1 && dλ >= π) {
if (Math.abs(λ0 - sλ0) < ε) λ0 -= sλ0 * ε;
if (Math.abs(λ1 - sλ1) < ε) λ1 -= sλ1 * ε;
φ0 = d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1);
listener.point(sλ0, φ0);
listener.lineEnd();
listener.lineStart();
listener.point(sλ1, φ0);
clean = 0;
}
listener.point(λ0 = λ1, φ0 = φ1);
sλ0 = sλ1;
},
lineEnd: function() {
listener.lineEnd();
λ0 = φ0 = NaN;
},
clean: function() {
return 2 - clean;
}
};
}
function d3_geo_clipAntimeridianIntersect(λ0, φ0, λ1, φ1) {
var cosφ0, cosφ1, sinλ0_λ1 = Math.sin(λ0 - λ1);
return Math.abs(sinλ0_λ1) > ε ? Math.atan((Math.sin(φ0) * (cosφ1 = Math.cos(φ1)) * Math.sin(λ1) - Math.sin(φ1) * (cosφ0 = Math.cos(φ0)) * Math.sin(λ0)) / (cosφ0 * cosφ1 * sinλ0_λ1)) : (φ0 + φ1) / 2;
}
function d3_geo_clipAntimeridianInterpolate(from, to, direction, listener) {
var φ;
if (from == null) {
φ = direction * π / 2;
listener.point(-π, φ);
listener.point(0, φ);
listener.point(π, φ);
listener.point(π, 0);
listener.point(π, -φ);
listener.point(0, -φ);
listener.point(-π, -φ);
listener.point(-π, 0);
listener.point(-π, φ);
} else if (Math.abs(from[0] - to[0]) > ε) {
var s = (from[0] < to[0] ? 1 : -1) * π;
φ = direction * s / 2;
listener.point(-s, φ);
listener.point(0, φ);
listener.point(s, φ);
} else {
listener.point(to[0], to[1]);
}
}
function d3_geo_clipCircle(degrees) {
var radians = degrees * d3_radians, cr = Math.cos(radians), interpolate = d3_geo_circleInterpolate(radians, 6 * d3_radians);
return d3_geo_clip(visible, clipLine, interpolate);
function visible(λ, φ) {
return Math.cos(λ) * Math.cos(φ) > cr;
}
function clipLine(listener) {
var point0, v0, v00, clean;
return {
lineStart: function() {
v00 = v0 = false;
clean = 1;
},
point: function(λ, φ) {
var point1 = [ λ, φ ], point2, v = visible(λ, φ);
if (!point0 && (v00 = v0 = v)) listener.lineStart();
if (v !== v0) {
point2 = intersect(point0, point1);
if (d3_geo_sphericalEqual(point0, point2) || d3_geo_sphericalEqual(point1, point2)) {
point1[0] += ε;
point1[1] += ε;
v = visible(point1[0], point1[1]);
}
}
if (v !== v0) {
clean = 0;
if (v0 = v) {
listener.lineStart();
point2 = intersect(point1, point0);
listener.point(point2[0], point2[1]);
} else {
point2 = intersect(point0, point1);
listener.point(point2[0], point2[1]);
listener.lineEnd();
}
point0 = point2;
}
if (v && (!point0 || !d3_geo_sphericalEqual(point0, point1))) listener.point(point1[0], point1[1]);
point0 = point1;
},
lineEnd: function() {
if (v0) listener.lineEnd();
point0 = null;
},
clean: function() {
return clean | (v00 && v0) << 1;
}
};
}
function intersect(a, b) {
var pa = d3_geo_cartesian(a, 0), pb = d3_geo_cartesian(b, 0);
var n1 = [ 1, 0, 0 ], n2 = d3_geo_cartesianCross(pa, pb), n2n2 = d3_geo_cartesianDot(n2, n2), n1n2 = n2[0], determinant = n2n2 - n1n2 * n1n2;
if (!determinant) return a;
var c1 = cr * n2n2 / determinant, c2 = -cr * n1n2 / determinant, n1xn2 = d3_geo_cartesianCross(n1, n2), A = d3_geo_cartesianScale(n1, c1), B = d3_geo_cartesianScale(n2, c2);
d3_geo_cartesianAdd(A, B);
var u = n1xn2, w = d3_geo_cartesianDot(A, u), uu = d3_geo_cartesianDot(u, u), t = Math.sqrt(w * w - uu * (d3_geo_cartesianDot(A, A) - 1)), q = d3_geo_cartesianScale(u, (-w - t) / uu);
d3_geo_cartesianAdd(q, A);
return d3_geo_spherical(q);
}
}
function d3_geo_compose(a, b) {
function compose(x, y) {
return x = a(x, y), b(x[0], x[1]);
}
if (a.invert && b.invert) compose.invert = function(x, y) {
return x = b.invert(x, y), x && a.invert(x[0], x[1]);
};
return compose;
}
function d3_geo_equirectangular(λ, φ) {
return [ λ, φ ];
}
(d3.geo.equirectangular = function() {
return d3_geo_projection(d3_geo_equirectangular).scale(250 / π);
}).raw = d3_geo_equirectangular.invert = d3_geo_equirectangular;
var d3_geo_gnomonic = d3_geo_azimuthal(function(cosλcosφ) {
return 1 / cosλcosφ;
}, Math.atan);
(d3.geo.gnomonic = function() {
return d3_geo_projection(d3_geo_gnomonic);
}).raw = d3_geo_gnomonic;
d3.geo.graticule = function() {
var x1, x0, y1, y0, dx = 22.5, dy = dx, x, y, precision = 2.5;
function graticule() {
return {
type: "MultiLineString",
coordinates: lines()
};
}
function lines() {
return d3.range(Math.ceil(x0 / dx) * dx, x1, dx).map(x).concat(d3.range(Math.ceil(y0 / dy) * dy, y1, dy).map(y));
}
graticule.lines = function() {
return lines().map(function(coordinates) {
return {
type: "LineString",
coordinates: coordinates
};
});
};
graticule.outline = function() {
return {
type: "Polygon",
coordinates: [ x(x0).concat(y(y1).slice(1), x(x1).reverse().slice(1), y(y0).reverse().slice(1)) ]
};
};
graticule.extent = function(_) {
if (!arguments.length) return [ [ x0, y0 ], [ x1, y1 ] ];
x0 = +_[0][0], x1 = +_[1][0];
y0 = +_[0][1], y1 = +_[1][1];
if (x0 > x1) _ = x0, x0 = x1, x1 = _;
if (y0 > y1) _ = y0, y0 = y1, y1 = _;
return graticule.precision(precision);
};
graticule.step = function(_) {
if (!arguments.length) return [ dx, dy ];
dx = +_[0], dy = +_[1];
return graticule;
};
graticule.precision = function(_) {
if (!arguments.length) return precision;
precision = +_;
x = d3_geo_graticuleX(y0, y1, precision);
y = d3_geo_graticuleY(x0, x1, precision);
return graticule;
};
return graticule.extent([ [ -180 + ε, -90 + ε ], [ 180 - ε, 90 - ε ] ]);
};
function d3_geo_graticuleX(y0, y1, dy) {
var y = d3.range(y0, y1 - ε, dy).concat(y1);
return function(x) {
return y.map(function(y) {
return [ x, y ];
});
};
}
function d3_geo_graticuleY(x0, x1, dx) {
var x = d3.range(x0, x1 - ε, dx).concat(x1);
return function(y) {
return x.map(function(x) {
return [ x, y ];
});
};
}
function d3_geo_haversin(x) {
return (x = Math.sin(x / 2)) * x;
}
d3.geo.interpolate = function(source, target) {
return d3_geo_interpolate(source[0] * d3_radians, source[1] * d3_radians, target[0] * d3_radians, target[1] * d3_radians);
};
function d3_geo_interpolate(x0, y0, x1, y1) {
var cy0 = Math.cos(y0), sy0 = Math.sin(y0), cy1 = Math.cos(y1), sy1 = Math.sin(y1), kx0 = cy0 * Math.cos(x0), ky0 = cy0 * Math.sin(x0), kx1 = cy1 * Math.cos(x1), ky1 = cy1 * Math.sin(x1), d = 2 * Math.asin(Math.sqrt(d3_geo_haversin(y1 - y0) + cy0 * cy1 * d3_geo_haversin(x1 - x0))), k = 1 / Math.sin(d);
var interpolate = d ? function(t) {
var B = Math.sin(t *= d) * k, A = Math.sin(d - t) * k, x = A * kx0 + B * kx1, y = A * ky0 + B * ky1, z = A * sy0 + B * sy1;
return [ Math.atan2(y, x) * d3_degrees, Math.atan2(z, Math.sqrt(x * x + y * y)) * d3_degrees ];
} : function() {
return [ x0 * d3_degrees, y0 * d3_degrees ];
};
interpolate.distance = d;
return interpolate;
}
d3.geo.greatArc = function() {
var source = d3_source, source_, target = d3_target, target_, precision = 6 * d3_radians, interpolate;
function greatArc() {
var p0 = source_ || source.apply(this, arguments), p1 = target_ || target.apply(this, arguments), i = interpolate || d3.geo.interpolate(p0, p1), t = 0, dt = precision / i.distance, coordinates = [ p0 ];
while ((t += dt) < 1) coordinates.push(i(t));
coordinates.push(p1);
return {
type: "LineString",
coordinates: coordinates
};
}
greatArc.distance = function() {
return (interpolate || d3.geo.interpolate(source_ || source.apply(this, arguments), target_ || target.apply(this, arguments))).distance;
};
greatArc.source = function(_) {
if (!arguments.length) return source;
source = _, source_ = typeof _ === "function" ? null : _;
interpolate = source_ && target_ ? d3.geo.interpolate(source_, target_) : null;
return greatArc;
};
greatArc.target = function(_) {
if (!arguments.length) return target;
target = _, target_ = typeof _ === "function" ? null : _;
interpolate = source_ && target_ ? d3.geo.interpolate(source_, target_) : null;
return greatArc;
};
greatArc.precision = function(_) {
if (!arguments.length) return precision / d3_radians;
precision = _ * d3_radians;
return greatArc;
};
return greatArc;
};
function d3_geo_mercator(λ, φ) {
return [ λ / (2 * π), Math.max(-.5, Math.min(+.5, Math.log(Math.tan(π / 4 + φ / 2)) / (2 * π))) ];
}
d3_geo_mercator.invert = function(x, y) {
return [ 2 * π * x, 2 * Math.atan(Math.exp(2 * π * y)) - π / 2 ];
};
(d3.geo.mercator = function() {
return d3_geo_projection(d3_geo_mercator).scale(500);
}).raw = d3_geo_mercator;
var d3_geo_orthographic = d3_geo_azimuthal(function() {
return 1;
}, Math.asin);
(d3.geo.orthographic = function() {
return d3_geo_projection(d3_geo_orthographic);
}).raw = d3_geo_orthographic;
d3.geo.path = function() {
var pointRadius = 4.5, projection, context, projectStream, contextStream;
function path(object) {
if (object) d3.geo.stream(object, projectStream(contextStream.pointRadius(typeof pointRadius === "function" ? +pointRadius.apply(this, arguments) : pointRadius)));
return contextStream.result();
}
path.area = function(object) {
d3_geo_pathAreaSum = 0;
d3.geo.stream(object, projectStream(d3_geo_pathArea));
return d3_geo_pathAreaSum;
};
path.centroid = function(object) {
d3_geo_centroidDimension = d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
d3.geo.stream(object, projectStream(d3_geo_pathCentroid));
return d3_geo_centroidZ ? [ d3_geo_centroidX / d3_geo_centroidZ, d3_geo_centroidY / d3_geo_centroidZ ] : undefined;
};
path.bounds = function(object) {
return d3_geo_bounds(projectStream)(object);
};
path.projection = function(_) {
if (!arguments.length) return projection;
projectStream = (projection = _) ? _.stream || d3_geo_pathProjectStream(_) : d3_identity;
return path;
};
path.context = function(_) {
if (!arguments.length) return context;
contextStream = (context = _) == null ? new d3_geo_pathBuffer() : new d3_geo_pathContext(_);
return path;
};
path.pointRadius = function(_) {
if (!arguments.length) return pointRadius;
pointRadius = typeof _ === "function" ? _ : +_;
return path;
};
return path.projection(d3.geo.albersUsa()).context(null);
};
function d3_geo_pathCircle(radius) {
return "m0," + radius + "a" + radius + "," + radius + " 0 1,1 0," + -2 * radius + "a" + radius + "," + radius + " 0 1,1 0," + +2 * radius + "z";
}
function d3_geo_pathProjectStream(project) {
var resample = d3_geo_resample(function(λ, φ) {
return project([ λ * d3_degrees, φ * d3_degrees ]);
});
return function(stream) {
stream = resample(stream);
return {
point: function(λ, φ) {
stream.point(λ * d3_radians, φ * d3_radians);
},
sphere: function() {
stream.sphere();
},
lineStart: function() {
stream.lineStart();
},
lineEnd: function() {
stream.lineEnd();
},
polygonStart: function() {
stream.polygonStart();
},
polygonEnd: function() {
stream.polygonEnd();
}
};
};
}
function d3_geo_pathBuffer() {
var pointCircle = d3_geo_pathCircle(4.5), buffer = [];
var stream = {
point: point,
lineStart: function() {
stream.point = pointLineStart;
},
lineEnd: lineEnd,
polygonStart: function() {
stream.lineEnd = lineEndPolygon;
},
polygonEnd: function() {
stream.lineEnd = lineEnd;
stream.point = point;
},
pointRadius: function(_) {
pointCircle = d3_geo_pathCircle(_);
return stream;
},
result: function() {
if (buffer.length) {
var result = buffer.join("");
buffer = [];
return result;
}
}
};
function point(x, y) {
buffer.push("M", x, ",", y, pointCircle);
}
function pointLineStart(x, y) {
buffer.push("M", x, ",", y);
stream.point = pointLine;
}
function pointLine(x, y) {
buffer.push("L", x, ",", y);
}
function lineEnd() {
stream.point = point;
}
function lineEndPolygon() {
buffer.push("Z");
}
return stream;
}
function d3_geo_pathContext(context) {
var pointRadius = 4.5;
var stream = {
point: point,
lineStart: function() {
stream.point = pointLineStart;
},
lineEnd: lineEnd,
polygonStart: function() {
stream.lineEnd = lineEndPolygon;
},
polygonEnd: function() {
stream.lineEnd = lineEnd;
stream.point = point;
},
pointRadius: function(_) {
pointRadius = _;
return stream;
},
result: d3_noop
};
function point(x, y) {
context.moveTo(x, y);
context.arc(x, y, pointRadius, 0, 2 * π);
}
function pointLineStart(x, y) {
context.moveTo(x, y);
stream.point = pointLine;
}
function pointLine(x, y) {
context.lineTo(x, y);
}
function lineEnd() {
stream.point = point;
}
function lineEndPolygon() {
context.closePath();
}
return stream;
}
var d3_geo_pathAreaSum, d3_geo_pathAreaPolygon, d3_geo_pathArea = {
point: d3_noop,
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: function() {
d3_geo_pathAreaPolygon = 0;
d3_geo_pathArea.lineStart = d3_geo_pathAreaRingStart;
},
polygonEnd: function() {
d3_geo_pathArea.lineStart = d3_geo_pathArea.lineEnd = d3_geo_pathArea.point = d3_noop;
d3_geo_pathAreaSum += Math.abs(d3_geo_pathAreaPolygon / 2);
}
};
function d3_geo_pathAreaRingStart() {
var x00, y00, x0, y0;
d3_geo_pathArea.point = function(x, y) {
d3_geo_pathArea.point = nextPoint;
x00 = x0 = x, y00 = y0 = y;
};
function nextPoint(x, y) {
d3_geo_pathAreaPolygon += y0 * x - x0 * y;
x0 = x, y0 = y;
}
d3_geo_pathArea.lineEnd = function() {
nextPoint(x00, y00);
};
}
var d3_geo_pathCentroid = {
point: d3_geo_pathCentroidPoint,
lineStart: d3_geo_pathCentroidLineStart,
lineEnd: d3_geo_pathCentroidLineEnd,
polygonStart: function() {
d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidRingStart;
},
polygonEnd: function() {
d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
d3_geo_pathCentroid.lineStart = d3_geo_pathCentroidLineStart;
d3_geo_pathCentroid.lineEnd = d3_geo_pathCentroidLineEnd;
}
};
function d3_geo_pathCentroidPoint(x, y) {
if (d3_geo_centroidDimension) return;
d3_geo_centroidX += x;
d3_geo_centroidY += y;
++d3_geo_centroidZ;
}
function d3_geo_pathCentroidLineStart() {
var x0, y0;
if (d3_geo_centroidDimension !== 1) {
if (d3_geo_centroidDimension < 1) {
d3_geo_centroidDimension = 1;
d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
} else return;
}
d3_geo_pathCentroid.point = function(x, y) {
d3_geo_pathCentroid.point = nextPoint;
x0 = x, y0 = y;
};
function nextPoint(x, y) {
var dx = x - x0, dy = y - y0, z = Math.sqrt(dx * dx + dy * dy);
d3_geo_centroidX += z * (x0 + x) / 2;
d3_geo_centroidY += z * (y0 + y) / 2;
d3_geo_centroidZ += z;
x0 = x, y0 = y;
}
}
function d3_geo_pathCentroidLineEnd() {
d3_geo_pathCentroid.point = d3_geo_pathCentroidPoint;
}
function d3_geo_pathCentroidRingStart() {
var x00, y00, x0, y0;
if (d3_geo_centroidDimension < 2) {
d3_geo_centroidDimension = 2;
d3_geo_centroidX = d3_geo_centroidY = d3_geo_centroidZ = 0;
}
d3_geo_pathCentroid.point = function(x, y) {
d3_geo_pathCentroid.point = nextPoint;
x00 = x0 = x, y00 = y0 = y;
};
function nextPoint(x, y) {
var z = y0 * x - x0 * y;
d3_geo_centroidX += z * (x0 + x);
d3_geo_centroidY += z * (y0 + y);
d3_geo_centroidZ += z * 3;
x0 = x, y0 = y;
}
d3_geo_pathCentroid.lineEnd = function() {
nextPoint(x00, y00);
};
}
d3.geo.area = function(object) {
d3_geo_areaSum = 0;
d3.geo.stream(object, d3_geo_area);
return d3_geo_areaSum;
};
var d3_geo_areaSum, d3_geo_areaRingU, d3_geo_areaRingV;
var d3_geo_area = {
sphere: function() {
d3_geo_areaSum += 4 * π;
},
point: d3_noop,
lineStart: d3_noop,
lineEnd: d3_noop,
polygonStart: function() {
d3_geo_areaRingU = 1, d3_geo_areaRingV = 0;
d3_geo_area.lineStart = d3_geo_areaRingStart;
},
polygonEnd: function() {
var area = 2 * Math.atan2(d3_geo_areaRingV, d3_geo_areaRingU);
d3_geo_areaSum += area < 0 ? 4 * π + area : area;
d3_geo_area.lineStart = d3_geo_area.lineEnd = d3_geo_area.point = d3_noop;
}
};
function d3_geo_areaRingStart() {
var λ00, φ00, λ0, cosφ0, sinφ0;
d3_geo_area.point = function(λ, φ) {
d3_geo_area.point = nextPoint;
λ0 = (λ00 = λ) * d3_radians, cosφ0 = Math.cos(φ = (φ00 = φ) * d3_radians / 2 + π / 4),
sinφ0 = Math.sin(φ);
};
function nextPoint(λ, φ) {
λ *= d3_radians;
φ = φ * d3_radians / 2 + π / 4;
var dλ = λ - λ0, cosφ = Math.cos(φ), sinφ = Math.sin(φ), k = sinφ0 * sinφ, u0 = d3_geo_areaRingU, v0 = d3_geo_areaRingV, u = cosφ0 * cosφ + k * Math.cos(dλ), v = k * Math.sin(dλ);
d3_geo_areaRingU = u0 * u - v0 * v;
d3_geo_areaRingV = v0 * u + u0 * v;
λ0 = λ, cosφ0 = cosφ, sinφ0 = sinφ;
}
d3_geo_area.lineEnd = function() {
nextPoint(λ00, φ00);
};
}
d3.geo.projection = d3_geo_projection;
d3.geo.projectionMutator = d3_geo_projectionMutator;
function d3_geo_projection(project) {
return d3_geo_projectionMutator(function() {
return project;
})();
}
function d3_geo_projectionMutator(projectAt) {
var project, rotate, projectRotate, projectResample = d3_geo_resample(function(x, y) {
x = project(x, y);
return [ x[0] * k + δx, δy - x[1] * k ];
}), k = 150, x = 480, y = 250, λ = 0, φ = 0, δλ = 0, δφ = 0, δγ = 0, δx, δy, clip = d3_geo_clipAntimeridian, clipAngle = null;
function projection(point) {
point = projectRotate(point[0] * d3_radians, point[1] * d3_radians);
return [ point[0] * k + δx, δy - point[1] * k ];
}
function invert(point) {
point = projectRotate.invert((point[0] - δx) / k, (δy - point[1]) / k);
return point && [ point[0] * d3_degrees, point[1] * d3_degrees ];
}
projection.stream = function(stream) {
return d3_geo_projectionRadiansRotate(rotate, clip(projectResample(stream)));
};
projection.clipAngle = function(_) {
if (!arguments.length) return clipAngle;
clip = _ == null ? (clipAngle = _, d3_geo_clipAntimeridian) : d3_geo_clipCircle(clipAngle = +_);
return projection;
};
projection.scale = function(_) {
if (!arguments.length) return k;
k = +_;
return reset();
};
projection.translate = function(_) {
if (!arguments.length) return [ x, y ];
x = +_[0];
y = +_[1];
return reset();
};
projection.center = function(_) {
if (!arguments.length) return [ λ * d3_degrees, φ * d3_degrees ];
λ = _[0] % 360 * d3_radians;
φ = _[1] % 360 * d3_radians;
return reset();
};
projection.rotate = function(_) {
if (!arguments.length) return [ δλ * d3_degrees, δφ * d3_degrees, δγ * d3_degrees ];
δλ = _[0] % 360 * d3_radians;
δφ = _[1] % 360 * d3_radians;
δγ = _.length > 2 ? _[2] % 360 * d3_radians : 0;
return reset();
};
d3.rebind(projection, projectResample, "precision");
function reset() {
projectRotate = d3_geo_compose(rotate = d3_geo_rotation(δλ, δφ, δγ), project);
var center = project(λ, φ);
δx = x - center[0] * k;
δy = y + center[1] * k;
return projection;
}
return function() {
project = projectAt.apply(this, arguments);
projection.invert = project.invert && invert;
return reset();
};
}
function d3_geo_projectionRadiansRotate(rotate, stream) {
return {
point: function(x, y) {
y = rotate(x * d3_radians, y * d3_radians), x = y[0];
stream.point(x > π ? x - 2 * π : x < -π ? x + 2 * π : x, y[1]);
},
sphere: function() {
stream.sphere();
},
lineStart: function() {
stream.lineStart();
},
lineEnd: function() {
stream.lineEnd();
},
polygonStart: function() {
stream.polygonStart();
},
polygonEnd: function() {
stream.polygonEnd();
}
};
}
function d3_geo_rotation(δλ, δφ, δγ) {
return δλ ? δφ || δγ ? d3_geo_compose(d3_geo_rotationλ(δλ), d3_geo_rotationφγ(δφ, δγ)) : d3_geo_rotationλ(δλ) : δφ || δγ ? d3_geo_rotationφγ(δφ, δγ) : d3_geo_equirectangular;
}
function d3_geo_forwardRotationλ(δλ) {
return function(λ, φ) {
return λ += δλ, [ λ > π ? λ - 2 * π : λ < -π ? λ + 2 * π : λ, φ ];
};
}
function d3_geo_rotationλ(δλ) {
var rotation = d3_geo_forwardRotationλ(δλ);
rotation.invert = d3_geo_forwardRotationλ(-δλ);
return rotation;
}
function d3_geo_rotationφγ(δφ, δγ) {
var cosδφ = Math.cos(δφ), sinδφ = Math.sin(δφ), cosδγ = Math.cos(δγ), sinδγ = Math.sin(δγ);
function rotation(λ, φ) {
var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδφ + x * sinδφ;
return [ Math.atan2(y * cosδγ - k * sinδγ, x * cosδφ - z * sinδφ), Math.asin(Math.max(-1, Math.min(1, k * cosδγ + y * sinδγ))) ];
}
rotation.invert = function(λ, φ) {
var cosφ = Math.cos(φ), x = Math.cos(λ) * cosφ, y = Math.sin(λ) * cosφ, z = Math.sin(φ), k = z * cosδγ - y * sinδγ;
return [ Math.atan2(y * cosδγ + z * sinδγ, x * cosδφ + k * sinδφ), Math.asin(Math.max(-1, Math.min(1, k * cosδφ - x * sinδφ))) ];
};
return rotation;
}
var d3_geo_stereographic = d3_geo_azimuthal(function(cosλcosφ) {
return 1 / (1 + cosλcosφ);
}, function(ρ) {
return 2 * Math.atan(ρ);
});
(d3.geo.stereographic = function() {
return d3_geo_projection(d3_geo_stereographic);
}).raw = d3_geo_stereographic;
function d3_geo_azimuthal(scale, angle) {
function azimuthal(λ, φ) {
var cosλ = Math.cos(λ), cosφ = Math.cos(φ), k = scale(cosλ * cosφ);
return [ k * cosφ * Math.sin(λ), k * Math.sin(φ) ];
}
azimuthal.invert = function(x, y) {
var ρ = Math.sqrt(x * x + y * y), c = angle(ρ), sinc = Math.sin(c), cosc = Math.cos(c);
return [ Math.atan2(x * sinc, ρ * cosc), Math.asin(ρ && y * sinc / ρ) ];
};
return azimuthal;
}
d3.geom = {};
d3.geom.hull = function(vertices) {
if (vertices.length < 3) return [];
var len = vertices.length, plen = len - 1, points = [], stack = [], i, j, h = 0, x1, y1, x2, y2, u, v, a, sp;
for (i = 1; i < len; ++i) {
if (vertices[i][1] < vertices[h][1]) {
h = i;
} else if (vertices[i][1] == vertices[h][1]) {
h = vertices[i][0] < vertices[h][0] ? i : h;
}
}
for (i = 0; i < len; ++i) {
if (i === h) continue;
y1 = vertices[i][1] - vertices[h][1];
x1 = vertices[i][0] - vertices[h][0];
points.push({
angle: Math.atan2(y1, x1),
index: i
});
}
points.sort(function(a, b) {
return a.angle - b.angle;
});
a = points[0].angle;
v = points[0].index;
u = 0;
for (i = 1; i < plen; ++i) {
j = points[i].index;
if (a == points[i].angle) {
x1 = vertices[v][0] - vertices[h][0];
y1 = vertices[v][1] - vertices[h][1];
x2 = vertices[j][0] - vertices[h][0];
y2 = vertices[j][1] - vertices[h][1];
if (x1 * x1 + y1 * y1 >= x2 * x2 + y2 * y2) {
points[i].index = -1;
} else {
points[u].index = -1;
a = points[i].angle;
u = i;
v = j;
}
} else {
a = points[i].angle;
u = i;
v = j;
}
}
stack.push(h);
for (i = 0, j = 0; i < 2; ++j) {
if (points[j].index !== -1) {
stack.push(points[j].index);
i++;
}
}
sp = stack.length;
for (;j < plen; ++j) {
if (points[j].index === -1) continue;
while (!d3_geom_hullCCW(stack[sp - 2], stack[sp - 1], points[j].index, vertices)) {
--sp;
}
stack[sp++] = points[j].index;
}
var poly = [];
for (i = 0; i < sp; ++i) {
poly.push(vertices[stack[i]]);
}
return poly;
};
function d3_geom_hullCCW(i1, i2, i3, v) {
var t, a, b, c, d, e, f;
t = v[i1];
a = t[0];
b = t[1];
t = v[i2];
c = t[0];
d = t[1];
t = v[i3];
e = t[0];
f = t[1];
return (f - b) * (c - a) - (d - b) * (e - a) > 0;
}
d3.geom.polygon = function(coordinates) {
coordinates.area = function() {
var i = 0, n = coordinates.length, area = coordinates[n - 1][1] * coordinates[0][0] - coordinates[n - 1][0] * coordinates[0][1];
while (++i < n) {
area += coordinates[i - 1][1] * coordinates[i][0] - coordinates[i - 1][0] * coordinates[i][1];
}
return area * .5;
};
coordinates.centroid = function(k) {
var i = -1, n = coordinates.length, x = 0, y = 0, a, b = coordinates[n - 1], c;
if (!arguments.length) k = -1 / (6 * coordinates.area());
while (++i < n) {
a = b;
b = coordinates[i];
c = a[0] * b[1] - b[0] * a[1];
x += (a[0] + b[0]) * c;
y += (a[1] + b[1]) * c;
}
return [ x * k, y * k ];
};
coordinates.clip = function(subject) {
var input, i = -1, n = coordinates.length, j, m, a = coordinates[n - 1], b, c, d;
while (++i < n) {
input = subject.slice();
subject.length = 0;
b = coordinates[i];
c = input[(m = input.length) - 1];
j = -1;
while (++j < m) {
d = input[j];
if (d3_geom_polygonInside(d, a, b)) {
if (!d3_geom_polygonInside(c, a, b)) {
subject.push(d3_geom_polygonIntersect(c, d, a, b));
}
subject.push(d);
} else if (d3_geom_polygonInside(c, a, b)) {
subject.push(d3_geom_polygonIntersect(c, d, a, b));
}
c = d;
}
a = b;
}
return subject;
};
return coordinates;
};
function d3_geom_polygonInside(p, a, b) {
return (b[0] - a[0]) * (p[1] - a[1]) < (b[1] - a[1]) * (p[0] - a[0]);
}
function d3_geom_polygonIntersect(c, d, a, b) {
var x1 = c[0], x3 = a[0], x21 = d[0] - x1, x43 = b[0] - x3, y1 = c[1], y3 = a[1], y21 = d[1] - y1, y43 = b[1] - y3, ua = (x43 * (y1 - y3) - y43 * (x1 - x3)) / (y43 * x21 - x43 * y21);
return [ x1 + ua * x21, y1 + ua * y21 ];
}
d3.geom.voronoi = function(vertices) {
var polygons = vertices.map(function() {
return [];
}), Z = 1e6;
d3_voronoi_tessellate(vertices, function(e) {
var s1, s2, x1, x2, y1, y2;
if (e.a === 1 && e.b >= 0) {
s1 = e.ep.r;
s2 = e.ep.l;
} else {
s1 = e.ep.l;
s2 = e.ep.r;
}
if (e.a === 1) {
y1 = s1 ? s1.y : -Z;
x1 = e.c - e.b * y1;
y2 = s2 ? s2.y : Z;
x2 = e.c - e.b * y2;
} else {
x1 = s1 ? s1.x : -Z;
y1 = e.c - e.a * x1;
x2 = s2 ? s2.x : Z;
y2 = e.c - e.a * x2;
}
var v1 = [ x1, y1 ], v2 = [ x2, y2 ];
polygons[e.region.l.index].push(v1, v2);
polygons[e.region.r.index].push(v1, v2);
});
polygons = polygons.map(function(polygon, i) {
var cx = vertices[i][0], cy = vertices[i][1], angle = polygon.map(function(v) {
return Math.atan2(v[0] - cx, v[1] - cy);
}), order = d3.range(polygon.length).sort(function(a, b) {
return angle[a] - angle[b];
});
return order.filter(function(d, i) {
return !i || angle[d] - angle[order[i - 1]] > ε;
}).map(function(d) {
return polygon[d];
});
});
polygons.forEach(function(polygon, i) {
var n = polygon.length;
if (!n) return polygon.push([ -Z, -Z ], [ -Z, Z ], [ Z, Z ], [ Z, -Z ]);
if (n > 2) return;
var p0 = vertices[i], p1 = polygon[0], p2 = polygon[1], x0 = p0[0], y0 = p0[1], x1 = p1[0], y1 = p1[1], x2 = p2[0], y2 = p2[1], dx = Math.abs(x2 - x1), dy = y2 - y1;
if (Math.abs(dy) < ε) {
var y = y0 < y1 ? -Z : Z;
polygon.push([ -Z, y ], [ Z, y ]);
} else if (dx < ε) {
var x = x0 < x1 ? -Z : Z;
polygon.push([ x, -Z ], [ x, Z ]);
} else {
var y = (x2 - x1) * (y1 - y0) < (x1 - x0) * (y2 - y1) ? Z : -Z, z = Math.abs(dy) - dx;
if (Math.abs(z) < ε) {
polygon.push([ dy < 0 ? y : -y, y ]);
} else {
if (z > 0) y *= -1;
polygon.push([ -Z, y ], [ Z, y ]);
}
}
});
return polygons;
};
var d3_voronoi_opposite = {
l: "r",
r: "l"
};
function d3_voronoi_tessellate(vertices, callback) {
var Sites = {
list: vertices.map(function(v, i) {
return {
index: i,
x: v[0],
y: v[1]
};
}).sort(function(a, b) {
return a.y < b.y ? -1 : a.y > b.y ? 1 : a.x < b.x ? -1 : a.x > b.x ? 1 : 0;
}),
bottomSite: null
};
var EdgeList = {
list: [],
leftEnd: null,
rightEnd: null,
init: function() {
EdgeList.leftEnd = EdgeList.createHalfEdge(null, "l");
EdgeList.rightEnd = EdgeList.createHalfEdge(null, "l");
EdgeList.leftEnd.r = EdgeList.rightEnd;
EdgeList.rightEnd.l = EdgeList.leftEnd;
EdgeList.list.unshift(EdgeList.leftEnd, EdgeList.rightEnd);
},
createHalfEdge: function(edge, side) {
return {
edge: edge,
side: side,
vertex: null,
l: null,
r: null
};
},
insert: function(lb, he) {
he.l = lb;
he.r = lb.r;
lb.r.l = he;
lb.r = he;
},
leftBound: function(p) {
var he = EdgeList.leftEnd;
do {
he = he.r;
} while (he != EdgeList.rightEnd && Geom.rightOf(he, p));
he = he.l;
return he;
},
del: function(he) {
he.l.r = he.r;
he.r.l = he.l;
he.edge = null;
},
right: function(he) {
return he.r;
},
left: function(he) {
return he.l;
},
leftRegion: function(he) {
return he.edge == null ? Sites.bottomSite : he.edge.region[he.side];
},
rightRegion: function(he) {
return he.edge == null ? Sites.bottomSite : he.edge.region[d3_voronoi_opposite[he.side]];
}
};
var Geom = {
bisect: function(s1, s2) {
var newEdge = {
region: {
l: s1,
r: s2
},
ep: {
l: null,
r: null
}
};
var dx = s2.x - s1.x, dy = s2.y - s1.y, adx = dx > 0 ? dx : -dx, ady = dy > 0 ? dy : -dy;
newEdge.c = s1.x * dx + s1.y * dy + (dx * dx + dy * dy) * .5;
if (adx > ady) {
newEdge.a = 1;
newEdge.b = dy / dx;
newEdge.c /= dx;
} else {
newEdge.b = 1;
newEdge.a = dx / dy;
newEdge.c /= dy;
}
return newEdge;
},
intersect: function(el1, el2) {
var e1 = el1.edge, e2 = el2.edge;
if (!e1 || !e2 || e1.region.r == e2.region.r) {
return null;
}
var d = e1.a * e2.b - e1.b * e2.a;
if (Math.abs(d) < 1e-10) {
return null;
}
var xint = (e1.c * e2.b - e2.c * e1.b) / d, yint = (e2.c * e1.a - e1.c * e2.a) / d, e1r = e1.region.r, e2r = e2.region.r, el, e;
if (e1r.y < e2r.y || e1r.y == e2r.y && e1r.x < e2r.x) {
el = el1;
e = e1;
} else {
el = el2;
e = e2;
}
var rightOfSite = xint >= e.region.r.x;
if (rightOfSite && el.side === "l" || !rightOfSite && el.side === "r") {
return null;
}
return {
x: xint,
y: yint
};
},
rightOf: function(he, p) {
var e = he.edge, topsite = e.region.r, rightOfSite = p.x > topsite.x;
if (rightOfSite && he.side === "l") {
return 1;
}
if (!rightOfSite && he.side === "r") {
return 0;
}
if (e.a === 1) {
var dyp = p.y - topsite.y, dxp = p.x - topsite.x, fast = 0, above = 0;
if (!rightOfSite && e.b < 0 || rightOfSite && e.b >= 0) {
above = fast = dyp >= e.b * dxp;
} else {
above = p.x + p.y * e.b > e.c;
if (e.b < 0) {
above = !above;
}
if (!above) {
fast = 1;
}
}
if (!fast) {
var dxs = topsite.x - e.region.l.x;
above = e.b * (dxp * dxp - dyp * dyp) < dxs * dyp * (1 + 2 * dxp / dxs + e.b * e.b);
if (e.b < 0) {
above = !above;
}
}
} else {
var yl = e.c - e.a * p.x, t1 = p.y - yl, t2 = p.x - topsite.x, t3 = yl - topsite.y;
above = t1 * t1 > t2 * t2 + t3 * t3;
}
return he.side === "l" ? above : !above;
},
endPoint: function(edge, side, site) {
edge.ep[side] = site;
if (!edge.ep[d3_voronoi_opposite[side]]) return;
callback(edge);
},
distance: function(s, t) {
var dx = s.x - t.x, dy = s.y - t.y;
return Math.sqrt(dx * dx + dy * dy);
}
};
var EventQueue = {
list: [],
insert: function(he, site, offset) {
he.vertex = site;
he.ystar = site.y + offset;
for (var i = 0, list = EventQueue.list, l = list.length; i < l; i++) {
var next = list[i];
if (he.ystar > next.ystar || he.ystar == next.ystar && site.x > next.vertex.x) {
continue;
} else {
break;
}
}
list.splice(i, 0, he);
},
del: function(he) {
for (var i = 0, ls = EventQueue.list, l = ls.length; i < l && ls[i] != he; ++i) {}
ls.splice(i, 1);
},
empty: function() {
return EventQueue.list.length === 0;
},
nextEvent: function(he) {
for (var i = 0, ls = EventQueue.list, l = ls.length; i < l; ++i) {
if (ls[i] == he) return ls[i + 1];
}
return null;
},
min: function() {
var elem = EventQueue.list[0];
return {
x: elem.vertex.x,
y: elem.ystar
};
},
extractMin: function() {
return EventQueue.list.shift();
}
};
EdgeList.init();
Sites.bottomSite = Sites.list.shift();
var newSite = Sites.list.shift(), newIntStar;
var lbnd, rbnd, llbnd, rrbnd, bisector;
var bot, top, temp, p, v;
var e, pm;
while (true) {
if (!EventQueue.empty()) {
newIntStar = EventQueue.min();
}
if (newSite && (EventQueue.empty() || newSite.y < newIntStar.y || newSite.y == newIntStar.y && newSite.x < newIntStar.x)) {
lbnd = EdgeList.leftBound(newSite);
rbnd = EdgeList.right(lbnd);
bot = EdgeList.rightRegion(lbnd);
e = Geom.bisect(bot, newSite);
bisector = EdgeList.createHalfEdge(e, "l");
EdgeList.insert(lbnd, bisector);
p = Geom.intersect(lbnd, bisector);
if (p) {
EventQueue.del(lbnd);
EventQueue.insert(lbnd, p, Geom.distance(p, newSite));
}
lbnd = bisector;
bisector = EdgeList.createHalfEdge(e, "r");
EdgeList.insert(lbnd, bisector);
p = Geom.intersect(bisector, rbnd);
if (p) {
EventQueue.insert(bisector, p, Geom.distance(p, newSite));
}
newSite = Sites.list.shift();
} else if (!EventQueue.empty()) {
lbnd = EventQueue.extractMin();
llbnd = EdgeList.left(lbnd);
rbnd = EdgeList.right(lbnd);
rrbnd = EdgeList.right(rbnd);
bot = EdgeList.leftRegion(lbnd);
top = EdgeList.rightRegion(rbnd);
v = lbnd.vertex;
Geom.endPoint(lbnd.edge, lbnd.side, v);
Geom.endPoint(rbnd.edge, rbnd.side, v);
EdgeList.del(lbnd);
EventQueue.del(rbnd);
EdgeList.del(rbnd);
pm = "l";
if (bot.y > top.y) {
temp = bot;
bot = top;
top = temp;
pm = "r";
}
e = Geom.bisect(bot, top);
bisector = EdgeList.createHalfEdge(e, pm);
EdgeList.insert(llbnd, bisector);
Geom.endPoint(e, d3_voronoi_opposite[pm], v);
p = Geom.intersect(llbnd, bisector);
if (p) {
EventQueue.del(llbnd);
EventQueue.insert(llbnd, p, Geom.distance(p, bot));
}
p = Geom.intersect(bisector, rrbnd);
if (p) {
EventQueue.insert(bisector, p, Geom.distance(p, bot));
}
} else {
break;
}
}
for (lbnd = EdgeList.right(EdgeList.leftEnd); lbnd != EdgeList.rightEnd; lbnd = EdgeList.right(lbnd)) {
callback(lbnd.edge);
}
}
d3.geom.delaunay = function(vertices) {
var edges = vertices.map(function() {
return [];
}), triangles = [];
d3_voronoi_tessellate(vertices, function(e) {
edges[e.region.l.index].push(vertices[e.region.r.index]);
});
edges.forEach(function(edge, i) {
var v = vertices[i], cx = v[0], cy = v[1];
edge.forEach(function(v) {
v.angle = Math.atan2(v[0] - cx, v[1] - cy);
});
edge.sort(function(a, b) {
return a.angle - b.angle;
});
for (var j = 0, m = edge.length - 1; j < m; j++) {
triangles.push([ v, edge[j], edge[j + 1] ]);
}
});
return triangles;
};
d3.geom.quadtree = function(points, x1, y1, x2, y2) {
var p, i = -1, n = points.length;
if (arguments.length < 5) {
if (arguments.length === 3) {
y2 = y1;
x2 = x1;
y1 = x1 = 0;
} else {
x1 = y1 = Infinity;
x2 = y2 = -Infinity;
while (++i < n) {
p = points[i];
if (p.x < x1) x1 = p.x;
if (p.y < y1) y1 = p.y;
if (p.x > x2) x2 = p.x;
if (p.y > y2) y2 = p.y;
}
}
}
var dx = x2 - x1, dy = y2 - y1;
if (dx > dy) y2 = y1 + dx; else x2 = x1 + dy;
function insert(n, p, x1, y1, x2, y2) {
if (isNaN(p.x) || isNaN(p.y)) return;
if (n.leaf) {
var v = n.point;
if (v) {
if (Math.abs(v.x - p.x) + Math.abs(v.y - p.y) < .01) {
insertChild(n, p, x1, y1, x2, y2);
} else {
n.point = null;
insertChild(n, v, x1, y1, x2, y2);
insertChild(n, p, x1, y1, x2, y2);
}
} else {
n.point = p;
}
} else {
insertChild(n, p, x1, y1, x2, y2);
}
}
function insertChild(n, p, x1, y1, x2, y2) {
var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, right = p.x >= sx, bottom = p.y >= sy, i = (bottom << 1) + right;
n.leaf = false;
n = n.nodes[i] || (n.nodes[i] = d3_geom_quadtreeNode());
if (right) x1 = sx; else x2 = sx;
if (bottom) y1 = sy; else y2 = sy;
insert(n, p, x1, y1, x2, y2);
}
var root = d3_geom_quadtreeNode();
root.add = function(p) {
insert(root, p, x1, y1, x2, y2);
};
root.visit = function(f) {
d3_geom_quadtreeVisit(f, root, x1, y1, x2, y2);
};
points.forEach(root.add);
return root;
};
function d3_geom_quadtreeNode() {
return {
leaf: true,
nodes: [],
point: null
};
}
function d3_geom_quadtreeVisit(f, node, x1, y1, x2, y2) {
if (!f(node, x1, y1, x2, y2)) {
var sx = (x1 + x2) * .5, sy = (y1 + y2) * .5, children = node.nodes;
if (children[0]) d3_geom_quadtreeVisit(f, children[0], x1, y1, sx, sy);
if (children[1]) d3_geom_quadtreeVisit(f, children[1], sx, y1, x2, sy);
if (children[2]) d3_geom_quadtreeVisit(f, children[2], x1, sy, sx, y2);
if (children[3]) d3_geom_quadtreeVisit(f, children[3], sx, sy, x2, y2);
}
}
d3.time = {};
var d3_time = Date, d3_time_daySymbols = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ];
function d3_time_utc() {
this._ = new Date(arguments.length > 1 ? Date.UTC.apply(this, arguments) : arguments[0]);
}
d3_time_utc.prototype = {
getDate: function() {
return this._.getUTCDate();
},
getDay: function() {
return this._.getUTCDay();
},
getFullYear: function() {
return this._.getUTCFullYear();
},
getHours: function() {
return this._.getUTCHours();
},
getMilliseconds: function() {
return this._.getUTCMilliseconds();
},
getMinutes: function() {
return this._.getUTCMinutes();
},
getMonth: function() {
return this._.getUTCMonth();
},
getSeconds: function() {
return this._.getUTCSeconds();
},
getTime: function() {
return this._.getTime();
},
getTimezoneOffset: function() {
return 0;
},
valueOf: function() {
return this._.valueOf();
},
setDate: function() {
d3_time_prototype.setUTCDate.apply(this._, arguments);
},
setDay: function() {
d3_time_prototype.setUTCDay.apply(this._, arguments);
},
setFullYear: function() {
d3_time_prototype.setUTCFullYear.apply(this._, arguments);
},
setHours: function() {
d3_time_prototype.setUTCHours.apply(this._, arguments);
},
setMilliseconds: function() {
d3_time_prototype.setUTCMilliseconds.apply(this._, arguments);
},
setMinutes: function() {
d3_time_prototype.setUTCMinutes.apply(this._, arguments);
},
setMonth: function() {
d3_time_prototype.setUTCMonth.apply(this._, arguments);
},
setSeconds: function() {
d3_time_prototype.setUTCSeconds.apply(this._, arguments);
},
setTime: function() {
d3_time_prototype.setTime.apply(this._, arguments);
}
};
var d3_time_prototype = Date.prototype;
var d3_time_formatDateTime = "%a %b %e %X %Y", d3_time_formatDate = "%m/%d/%Y", d3_time_formatTime = "%H:%M:%S";
var d3_time_days = [ "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday" ], d3_time_dayAbbreviations = [ "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat" ], d3_time_months = [ "January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" ], d3_time_monthAbbreviations = [ "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec" ];
d3.time.format = function(template) {
var n = template.length;
function format(date) {
var string = [], i = -1, j = 0, c, p, f;
while (++i < n) {
if (template.charCodeAt(i) === 37) {
string.push(template.substring(j, i));
if ((p = d3_time_formatPads[c = template.charAt(++i)]) != null) c = template.charAt(++i);
if (f = d3_time_formats[c]) c = f(date, p == null ? c === "e" ? " " : "0" : p);
string.push(c);
j = i + 1;
}
}
string.push(template.substring(j, i));
return string.join("");
}
format.parse = function(string) {
var d = {
y: 1900,
m: 0,
d: 1,
H: 0,
M: 0,
S: 0,
L: 0
}, i = d3_time_parse(d, template, string, 0);
if (i != string.length) return null;
if ("p" in d) d.H = d.H % 12 + d.p * 12;
var date = new d3_time();
date.setFullYear(d.y, d.m, d.d);
date.setHours(d.H, d.M, d.S, d.L);
return date;
};
format.toString = function() {
return template;
};
return format;
};
function d3_time_parse(date, template, string, j) {
var c, p, i = 0, n = template.length, m = string.length;
while (i < n) {
if (j >= m) return -1;
c = template.charCodeAt(i++);
if (c === 37) {
p = d3_time_parsers[template.charAt(i++)];
if (!p || (j = p(date, string, j)) < 0) return -1;
} else if (c != string.charCodeAt(j++)) {
return -1;
}
}
return j;
}
function d3_time_formatRe(names) {
return new RegExp("^(?:" + names.map(d3.requote).join("|") + ")", "i");
}
function d3_time_formatLookup(names) {
var map = new d3_Map(), i = -1, n = names.length;
while (++i < n) map.set(names[i].toLowerCase(), i);
return map;
}
function d3_time_formatPad(value, fill, width) {
value += "";
var length = value.length;
return length < width ? new Array(width - length + 1).join(fill) + value : value;
}
var d3_time_dayRe = d3_time_formatRe(d3_time_days), d3_time_dayAbbrevRe = d3_time_formatRe(d3_time_dayAbbreviations), d3_time_monthRe = d3_time_formatRe(d3_time_months), d3_time_monthLookup = d3_time_formatLookup(d3_time_months), d3_time_monthAbbrevRe = d3_time_formatRe(d3_time_monthAbbreviations), d3_time_monthAbbrevLookup = d3_time_formatLookup(d3_time_monthAbbreviations);
var d3_time_formatPads = {
"-": "",
_: " ",
"0": "0"
};
var d3_time_formats = {
a: function(d) {
return d3_time_dayAbbreviations[d.getDay()];
},
A: function(d) {
return d3_time_days[d.getDay()];
},
b: function(d) {
return d3_time_monthAbbreviations[d.getMonth()];
},
B: function(d) {
return d3_time_months[d.getMonth()];
},
c: d3.time.format(d3_time_formatDateTime),
d: function(d, p) {
return d3_time_formatPad(d.getDate(), p, 2);
},
e: function(d, p) {
return d3_time_formatPad(d.getDate(), p, 2);
},
H: function(d, p) {
return d3_time_formatPad(d.getHours(), p, 2);
},
I: function(d, p) {
return d3_time_formatPad(d.getHours() % 12 || 12, p, 2);
},
j: function(d, p) {
return d3_time_formatPad(1 + d3.time.dayOfYear(d), p, 3);
},
L: function(d, p) {
return d3_time_formatPad(d.getMilliseconds(), p, 3);
},
m: function(d, p) {
return d3_time_formatPad(d.getMonth() + 1, p, 2);
},
M: function(d, p) {
return d3_time_formatPad(d.getMinutes(), p, 2);
},
p: function(d) {
return d.getHours() >= 12 ? "PM" : "AM";
},
S: function(d, p) {
return d3_time_formatPad(d.getSeconds(), p, 2);
},
U: function(d, p) {
return d3_time_formatPad(d3.time.sundayOfYear(d), p, 2);
},
w: function(d) {
return d.getDay();
},
W: function(d, p) {
return d3_time_formatPad(d3.time.mondayOfYear(d), p, 2);
},
x: d3.time.format(d3_time_formatDate),
X: d3.time.format(d3_time_formatTime),
y: function(d, p) {
return d3_time_formatPad(d.getFullYear() % 100, p, 2);
},
Y: function(d, p) {
return d3_time_formatPad(d.getFullYear() % 1e4, p, 4);
},
Z: d3_time_zone,
"%": function() {
return "%";
}
};
var d3_time_parsers = {
a: d3_time_parseWeekdayAbbrev,
A: d3_time_parseWeekday,
b: d3_time_parseMonthAbbrev,
B: d3_time_parseMonth,
c: d3_time_parseLocaleFull,
d: d3_time_parseDay,
e: d3_time_parseDay,
H: d3_time_parseHour24,
I: d3_time_parseHour24,
L: d3_time_parseMilliseconds,
m: d3_time_parseMonthNumber,
M: d3_time_parseMinutes,
p: d3_time_parseAmPm,
S: d3_time_parseSeconds,
x: d3_time_parseLocaleDate,
X: d3_time_parseLocaleTime,
y: d3_time_parseYear,
Y: d3_time_parseFullYear
};
function d3_time_parseWeekdayAbbrev(date, string, i) {
d3_time_dayAbbrevRe.lastIndex = 0;
var n = d3_time_dayAbbrevRe.exec(string.substring(i));
return n ? i += n[0].length : -1;
}
function d3_time_parseWeekday(date, string, i) {
d3_time_dayRe.lastIndex = 0;
var n = d3_time_dayRe.exec(string.substring(i));
return n ? i += n[0].length : -1;
}
function d3_time_parseMonthAbbrev(date, string, i) {
d3_time_monthAbbrevRe.lastIndex = 0;
var n = d3_time_monthAbbrevRe.exec(string.substring(i));
return n ? (date.m = d3_time_monthAbbrevLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
}
function d3_time_parseMonth(date, string, i) {
d3_time_monthRe.lastIndex = 0;
var n = d3_time_monthRe.exec(string.substring(i));
return n ? (date.m = d3_time_monthLookup.get(n[0].toLowerCase()), i += n[0].length) : -1;
}
function d3_time_parseLocaleFull(date, string, i) {
return d3_time_parse(date, d3_time_formats.c.toString(), string, i);
}
function d3_time_parseLocaleDate(date, string, i) {
return d3_time_parse(date, d3_time_formats.x.toString(), string, i);
}
function d3_time_parseLocaleTime(date, string, i) {
return d3_time_parse(date, d3_time_formats.X.toString(), string, i);
}
function d3_time_parseFullYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 4));
return n ? (date.y = +n[0], i += n[0].length) : -1;
}
function d3_time_parseYear(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.y = d3_time_expandYear(+n[0]), i += n[0].length) : -1;
}
function d3_time_expandYear(d) {
return d + (d > 68 ? 1900 : 2e3);
}
function d3_time_parseMonthNumber(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.m = n[0] - 1, i += n[0].length) : -1;
}
function d3_time_parseDay(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.d = +n[0], i += n[0].length) : -1;
}
function d3_time_parseHour24(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.H = +n[0], i += n[0].length) : -1;
}
function d3_time_parseMinutes(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.M = +n[0], i += n[0].length) : -1;
}
function d3_time_parseSeconds(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 2));
return n ? (date.S = +n[0], i += n[0].length) : -1;
}
function d3_time_parseMilliseconds(date, string, i) {
d3_time_numberRe.lastIndex = 0;
var n = d3_time_numberRe.exec(string.substring(i, i + 3));
return n ? (date.L = +n[0], i += n[0].length) : -1;
}
var d3_time_numberRe = /^\s*\d+/;
function d3_time_parseAmPm(date, string, i) {
var n = d3_time_amPmLookup.get(string.substring(i, i += 2).toLowerCase());
return n == null ? -1 : (date.p = n, i);
}
var d3_time_amPmLookup = d3.map({
am: 0,
pm: 1
});
function d3_time_zone(d) {
var z = d.getTimezoneOffset(), zs = z > 0 ? "-" : "+", zh = ~~(Math.abs(z) / 60), zm = Math.abs(z) % 60;
return zs + d3_time_formatPad(zh, "0", 2) + d3_time_formatPad(zm, "0", 2);
}
d3.time.format.utc = function(template) {
var local = d3.time.format(template);
function format(date) {
try {
d3_time = d3_time_utc;
var utc = new d3_time();
utc._ = date;
return local(utc);
} finally {
d3_time = Date;
}
}
format.parse = function(string) {
try {
d3_time = d3_time_utc;
var date = local.parse(string);
return date && date._;
} finally {
d3_time = Date;
}
};
format.toString = local.toString;
return format;
};
var d3_time_formatIso = d3.time.format.utc("%Y-%m-%dT%H:%M:%S.%LZ");
d3.time.format.iso = Date.prototype.toISOString && +new Date("2000-01-01T00:00:00.000Z") ? d3_time_formatIsoNative : d3_time_formatIso;
function d3_time_formatIsoNative(date) {
return date.toISOString();
}
d3_time_formatIsoNative.parse = function(string) {
var date = new Date(string);
return isNaN(date) ? null : date;
};
d3_time_formatIsoNative.toString = d3_time_formatIso.toString;
function d3_time_interval(local, step, number) {
function round(date) {
var d0 = local(date), d1 = offset(d0, 1);
return date - d0 < d1 - date ? d0 : d1;
}
function ceil(date) {
step(date = local(new d3_time(date - 1)), 1);
return date;
}
function offset(date, k) {
step(date = new d3_time(+date), k);
return date;
}
function range(t0, t1, dt) {
var time = ceil(t0), times = [];
if (dt > 1) {
while (time < t1) {
if (!(number(time) % dt)) times.push(new Date(+time));
step(time, 1);
}
} else {
while (time < t1) times.push(new Date(+time)), step(time, 1);
}
return times;
}
function range_utc(t0, t1, dt) {
try {
d3_time = d3_time_utc;
var utc = new d3_time_utc();
utc._ = t0;
return range(utc, t1, dt);
} finally {
d3_time = Date;
}
}
local.floor = local;
local.round = round;
local.ceil = ceil;
local.offset = offset;
local.range = range;
var utc = local.utc = d3_time_interval_utc(local);
utc.floor = utc;
utc.round = d3_time_interval_utc(round);
utc.ceil = d3_time_interval_utc(ceil);
utc.offset = d3_time_interval_utc(offset);
utc.range = range_utc;
return local;
}
function d3_time_interval_utc(method) {
return function(date, k) {
try {
d3_time = d3_time_utc;
var utc = new d3_time_utc();
utc._ = date;
return method(utc, k)._;
} finally {
d3_time = Date;
}
};
}
d3.time.second = d3_time_interval(function(date) {
return new d3_time(Math.floor(date / 1e3) * 1e3);
}, function(date, offset) {
date.setTime(date.getTime() + Math.floor(offset) * 1e3);
}, function(date) {
return date.getSeconds();
});
d3.time.seconds = d3.time.second.range;
d3.time.seconds.utc = d3.time.second.utc.range;
d3.time.minute = d3_time_interval(function(date) {
return new d3_time(Math.floor(date / 6e4) * 6e4);
}, function(date, offset) {
date.setTime(date.getTime() + Math.floor(offset) * 6e4);
}, function(date) {
return date.getMinutes();
});
d3.time.minutes = d3.time.minute.range;
d3.time.minutes.utc = d3.time.minute.utc.range;
d3.time.hour = d3_time_interval(function(date) {
var timezone = date.getTimezoneOffset() / 60;
return new d3_time((Math.floor(date / 36e5 - timezone) + timezone) * 36e5);
}, function(date, offset) {
date.setTime(date.getTime() + Math.floor(offset) * 36e5);
}, function(date) {
return date.getHours();
});
d3.time.hours = d3.time.hour.range;
d3.time.hours.utc = d3.time.hour.utc.range;
d3.time.day = d3_time_interval(function(date) {
var day = new d3_time(1970, 0);
day.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());
return day;
}, function(date, offset) {
date.setDate(date.getDate() + offset);
}, function(date) {
return date.getDate() - 1;
});
d3.time.days = d3.time.day.range;
d3.time.days.utc = d3.time.day.utc.range;
d3.time.dayOfYear = function(date) {
var year = d3.time.year(date);
return Math.floor((date - year - (date.getTimezoneOffset() - year.getTimezoneOffset()) * 6e4) / 864e5);
};
d3_time_daySymbols.forEach(function(day, i) {
day = day.toLowerCase();
i = 7 - i;
var interval = d3.time[day] = d3_time_interval(function(date) {
(date = d3.time.day(date)).setDate(date.getDate() - (date.getDay() + i) % 7);
return date;
}, function(date, offset) {
date.setDate(date.getDate() + Math.floor(offset) * 7);
}, function(date) {
var day = d3.time.year(date).getDay();
return Math.floor((d3.time.dayOfYear(date) + (day + i) % 7) / 7) - (day !== i);
});
d3.time[day + "s"] = interval.range;
d3.time[day + "s"].utc = interval.utc.range;
d3.time[day + "OfYear"] = function(date) {
var day = d3.time.year(date).getDay();
return Math.floor((d3.time.dayOfYear(date) + (day + i) % 7) / 7);
};
});
d3.time.week = d3.time.sunday;
d3.time.weeks = d3.time.sunday.range;
d3.time.weeks.utc = d3.time.sunday.utc.range;
d3.time.weekOfYear = d3.time.sundayOfYear;
d3.time.month = d3_time_interval(function(date) {
date = d3.time.day(date);
date.setDate(1);
return date;
}, function(date, offset) {
date.setMonth(date.getMonth() + offset);
}, function(date) {
return date.getMonth();
});
d3.time.months = d3.time.month.range;
d3.time.months.utc = d3.time.month.utc.range;
d3.time.year = d3_time_interval(function(date) {
date = d3.time.day(date);
date.setMonth(0, 1);
return date;
}, function(date, offset) {
date.setFullYear(date.getFullYear() + offset);
}, function(date) {
return date.getFullYear();
});
d3.time.years = d3.time.year.range;
d3.time.years.utc = d3.time.year.utc.range;
function d3_time_scale(linear, methods, format) {
function scale(x) {
return linear(x);
}
scale.invert = function(x) {
return d3_time_scaleDate(linear.invert(x));
};
scale.domain = function(x) {
if (!arguments.length) return linear.domain().map(d3_time_scaleDate);
linear.domain(x);
return scale;
};
scale.nice = function(m) {
return scale.domain(d3_scale_nice(scale.domain(), function() {
return m;
}));
};
scale.ticks = function(m, k) {
var extent = d3_time_scaleExtent(scale.domain());
if (typeof m !== "function") {
var span = extent[1] - extent[0], target = span / m, i = d3.bisect(d3_time_scaleSteps, target);
if (i == d3_time_scaleSteps.length) return methods.year(extent, m);
if (!i) return linear.ticks(m).map(d3_time_scaleDate);
if (Math.log(target / d3_time_scaleSteps[i - 1]) < Math.log(d3_time_scaleSteps[i] / target)) --i;
m = methods[i];
k = m[1];
m = m[0].range;
}
return m(extent[0], new Date(+extent[1] + 1), k);
};
scale.tickFormat = function() {
return format;
};
scale.copy = function() {
return d3_time_scale(linear.copy(), methods, format);
};
return d3.rebind(scale, linear, "range", "rangeRound", "interpolate", "clamp");
}
function d3_time_scaleExtent(domain) {
var start = domain[0], stop = domain[domain.length - 1];
return start < stop ? [ start, stop ] : [ stop, start ];
}
function d3_time_scaleDate(t) {
return new Date(t);
}
function d3_time_scaleFormat(formats) {
return function(date) {
var i = formats.length - 1, f = formats[i];
while (!f[1](date)) f = formats[--i];
return f[0](date);
};
}
function d3_time_scaleSetYear(y) {
var d = new Date(y, 0, 1);
d.setFullYear(y);
return d;
}
function d3_time_scaleGetYear(d) {
var y = d.getFullYear(), d0 = d3_time_scaleSetYear(y), d1 = d3_time_scaleSetYear(y + 1);
return y + (d - d0) / (d1 - d0);
}
var d3_time_scaleSteps = [ 1e3, 5e3, 15e3, 3e4, 6e4, 3e5, 9e5, 18e5, 36e5, 108e5, 216e5, 432e5, 864e5, 1728e5, 6048e5, 2592e6, 7776e6, 31536e6 ];
var d3_time_scaleLocalMethods = [ [ d3.time.second, 1 ], [ d3.time.second, 5 ], [ d3.time.second, 15 ], [ d3.time.second, 30 ], [ d3.time.minute, 1 ], [ d3.time.minute, 5 ], [ d3.time.minute, 15 ], [ d3.time.minute, 30 ], [ d3.time.hour, 1 ], [ d3.time.hour, 3 ], [ d3.time.hour, 6 ], [ d3.time.hour, 12 ], [ d3.time.day, 1 ], [ d3.time.day, 2 ], [ d3.time.week, 1 ], [ d3.time.month, 1 ], [ d3.time.month, 3 ], [ d3.time.year, 1 ] ];
var d3_time_scaleLocalFormats = [ [ d3.time.format("%Y"), d3_true ], [ d3.time.format("%B"), function(d) {
return d.getMonth();
} ], [ d3.time.format("%b %d"), function(d) {
return d.getDate() != 1;
} ], [ d3.time.format("%a %d"), function(d) {
return d.getDay() && d.getDate() != 1;
} ], [ d3.time.format("%I %p"), function(d) {
return d.getHours();
} ], [ d3.time.format("%I:%M"), function(d) {
return d.getMinutes();
} ], [ d3.time.format(":%S"), function(d) {
return d.getSeconds();
} ], [ d3.time.format(".%L"), function(d) {
return d.getMilliseconds();
} ] ];
var d3_time_scaleLinear = d3.scale.linear(), d3_time_scaleLocalFormat = d3_time_scaleFormat(d3_time_scaleLocalFormats);
d3_time_scaleLocalMethods.year = function(extent, m) {
return d3_time_scaleLinear.domain(extent.map(d3_time_scaleGetYear)).ticks(m).map(d3_time_scaleSetYear);
};
d3.time.scale = function() {
return d3_time_scale(d3.scale.linear(), d3_time_scaleLocalMethods, d3_time_scaleLocalFormat);
};
var d3_time_scaleUTCMethods = d3_time_scaleLocalMethods.map(function(m) {
return [ m[0].utc, m[1] ];
});
var d3_time_scaleUTCFormats = [ [ d3.time.format.utc("%Y"), d3_true ], [ d3.time.format.utc("%B"), function(d) {
return d.getUTCMonth();
} ], [ d3.time.format.utc("%b %d"), function(d) {
return d.getUTCDate() != 1;
} ], [ d3.time.format.utc("%a %d"), function(d) {
return d.getUTCDay() && d.getUTCDate() != 1;
} ], [ d3.time.format.utc("%I %p"), function(d) {
return d.getUTCHours();
} ], [ d3.time.format.utc("%I:%M"), function(d) {
return d.getUTCMinutes();
} ], [ d3.time.format.utc(":%S"), function(d) {
return d.getUTCSeconds();
} ], [ d3.time.format.utc(".%L"), function(d) {
return d.getUTCMilliseconds();
} ] ];
var d3_time_scaleUTCFormat = d3_time_scaleFormat(d3_time_scaleUTCFormats);
function d3_time_scaleUTCSetYear(y) {
var d = new Date(Date.UTC(y, 0, 1));
d.setUTCFullYear(y);
return d;
}
function d3_time_scaleUTCGetYear(d) {
var y = d.getUTCFullYear(), d0 = d3_time_scaleUTCSetYear(y), d1 = d3_time_scaleUTCSetYear(y + 1);
return y + (d - d0) / (d1 - d0);
}
d3_time_scaleUTCMethods.year = function(extent, m) {
return d3_time_scaleLinear.domain(extent.map(d3_time_scaleUTCGetYear)).ticks(m).map(d3_time_scaleUTCSetYear);
};
d3.time.scale.utc = function() {
return d3_time_scale(d3.scale.linear(), d3_time_scaleUTCMethods, d3_time_scaleUTCFormat);
};
return d3;
}();
Display the source blob
Display the rendered blob
Raw
{"type":"FeatureCollection","features":[{"type":"Feature","properties":{"name":"Аксаково","id":83,"pid":4,"pop":20426,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.985,43.404],[28.024,43.36],[28.042,43.309],[28.031,43.305],[28.006,43.281],[27.969,43.27],[27.932,43.271],[27.92,43.281],[27.914,43.3],[27.896,43.307],[27.889,43.305],[27.867,43.288],[27.833,43.284],[27.826,43.281],[27.823,43.277],[27.829,43.267],[27.826,43.262],[27.81,43.253],[27.792,43.249],[27.777,43.238],[27.734,43.233],[27.712,43.236],[27.695,43.23],[27.661,43.259],[27.681,43.261],[27.696,43.282],[27.744,43.278],[27.753,43.28],[27.759,43.289],[27.743,43.315],[27.724,43.327],[27.705,43.352],[27.704,43.36],[27.711,43.371],[27.7,43.389],[27.68,43.393],[27.656,43.413],[27.655,43.421],[27.663,43.435],[27.682,43.448],[27.693,43.462],[27.701,43.486],[27.713,43.487],[27.723,43.483],[27.733,43.455],[27.74,43.446],[27.766,43.43],[27.801,43.423],[27.804,43.411],[27.826,43.386],[27.855,43.367],[27.863,43.366],[27.873,43.369],[27.909,43.396],[27.931,43.404],[27.966,43.407],[27.985,43.404]]]}},{"type":"Feature","properties":{"name":"Алфатар","id":270,"pid":33,"pop":3036,"oblast":"Силистра"},"geometry":{"type":"Polygon","coordinates":[[[27.414,43.979],[27.423,43.952],[27.419,43.944],[27.42,43.924],[27.412,43.904],[27.411,43.879],[27.424,43.862],[27.395,43.836],[27.373,43.822],[27.334,43.82],[27.257,43.855],[27.246,43.865],[27.244,43.896],[27.236,43.901],[27.206,43.91],[27.206,43.933],[27.22,43.934],[27.221,43.937],[27.218,43.958],[27.228,43.969],[27.288,43.99],[27.289,44.007],[27.305,44.016],[27.311,44.013],[27.316,44.003],[27.332,44],[27.338,43.976],[27.351,43.966],[27.371,43.966],[27.398,43.977],[27.414,43.979]]]}},{"type":"Feature","properties":{"name":"Антон","id":265,"pid":38,"pop":1599,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[24.383,42.746],[24.342,42.687],[24.308,42.695],[24.294,42.713],[24.287,42.717],[24.232,42.711],[24.22,42.714],[24.216,42.722],[24.223,42.769],[24.236,42.772],[24.282,42.773],[24.322,42.757],[24.363,42.755],[24.383,42.746]]]}},{"type":"Feature","properties":{"name":"Антоново","id":277,"pid":41,"pop":6262,"oblast":"Търговище"},"geometry":{"type":"Polygon","coordinates":[[[26.315,43.227],[26.339,43.237],[26.365,43.231],[26.376,43.22],[26.392,43.21],[26.4,43.195],[26.399,43.19],[26.379,43.176],[26.339,43.166],[26.312,43.167],[26.3,43.162],[26.297,43.153],[26.317,43.14],[26.331,43.125],[26.315,43.107],[26.315,43.086],[26.293,43.064],[26.292,43.055],[26.301,43.044],[26.295,43.035],[26.287,43.003],[26.27,42.986],[26.256,42.976],[26.208,42.958],[26.2,42.95],[26.189,42.964],[26.15,42.983],[26.117,42.987],[26.118,43],[26.151,43.021],[26.154,43.027],[26.146,43.037],[26.133,43.041],[26.105,43.056],[26.077,43.095],[26.085,43.12],[26.085,43.141],[26.094,43.151],[26.094,43.173],[26.129,43.196],[26.132,43.21],[26.126,43.223],[26.144,43.235],[26.159,43.241],[26.193,43.226],[26.233,43.238],[26.254,43.237],[26.283,43.222],[26.3,43.221],[26.315,43.227]]]}},{"type":"Feature","properties":{"name":"Априлци","id":237,"pid":13,"pop":3338,"oblast":"Ловеч"},"geometry":{"type":"Polygon","coordinates":[[[24.88,42.921],[24.892,42.888],[24.908,42.879],[24.946,42.866],[25.015,42.794],[25.034,42.763],[25.036,42.743],[25.033,42.731],[25.005,42.732],[24.984,42.718],[24.936,42.703],[24.915,42.704],[24.89,42.714],[24.883,42.732],[24.885,42.751],[24.877,42.772],[24.879,42.78],[24.876,42.788],[24.867,42.798],[24.849,42.809],[24.832,42.827],[24.831,42.832],[24.842,42.855],[24.826,42.875],[24.819,42.889],[24.815,42.916],[24.821,42.923],[24.828,42.924],[24.88,42.921]]]}},{"type":"Feature","properties":{"name":"Ардино","id":52,"pid":8,"pop":11572,"oblast":"Кърджали"},"geometry":{"type":"Polygon","coordinates":[[[25.148,41.731],[25.168,41.72],[25.178,41.717],[25.22,41.719],[25.227,41.717],[25.239,41.709],[25.268,41.67],[25.302,41.658],[25.301,41.651],[25.27,41.632],[25.236,41.593],[25.242,41.58],[25.283,41.577],[25.282,41.544],[25.276,41.538],[25.253,41.542],[25.245,41.54],[25.235,41.528],[25.234,41.513],[25.229,41.51],[25.21,41.508],[25.194,41.494],[25.18,41.506],[25.167,41.509],[25.137,41.506],[25.106,41.497],[25.073,41.497],[25.043,41.515],[25.04,41.535],[25.015,41.561],[25.016,41.578],[25.02,41.582],[25.039,41.585],[25.092,41.586],[25.114,41.597],[25.125,41.606],[25.13,41.616],[25.123,41.644],[25.133,41.659],[25.107,41.697],[25.101,41.72],[25.111,41.73],[25.136,41.727],[25.148,41.731]]]}},{"type":"Feature","properties":{"name":"Асеновград","id":155,"pid":53,"pop":64034,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[25.121,42.083],[25.123,42.077],[25.14,42.066],[25.144,42.057],[25.135,42.047],[25.108,42.041],[25.097,42.036],[25.095,42.018],[25.113,41.998],[25.138,41.976],[25.141,41.966],[25.124,41.958],[25.118,41.951],[25.091,41.95],[25.081,41.945],[25.084,41.932],[25.083,41.92],[25.111,41.916],[25.124,41.91],[25.147,41.911],[25.16,41.88],[25.16,41.844],[25.17,41.833],[25.151,41.821],[25.141,41.792],[25.133,41.786],[25.114,41.78],[25.071,41.789],[25.064,41.796],[25.059,41.81],[25.029,41.826],[25.019,41.825],[24.984,41.809],[24.98,41.81],[24.956,41.822],[24.926,41.849],[24.871,41.871],[24.856,41.894],[24.833,41.906],[24.817,41.903],[24.809,41.894],[24.795,41.887],[24.788,41.87],[24.764,41.882],[24.736,41.881],[24.723,41.888],[24.691,41.893],[24.682,41.9],[24.719,41.912],[24.754,41.91],[24.78,41.916],[24.806,41.916],[24.821,41.919],[24.828,41.93],[24.826,41.943],[24.839,41.969],[24.835,41.982],[24.842,41.997],[24.842,42.014],[24.86,42.034],[24.879,42.041],[24.909,42.034],[24.928,42.037],[24.948,42.033],[24.961,42.034],[24.987,42.041],[25.011,42.061],[25.019,42.06],[25.02,42.05],[25.025,42.05],[25.042,42.07],[25.055,42.075],[25.068,42.078],[25.09,42.077],[25.109,42.084],[25.121,42.083]]]}},{"type":"Feature","properties":{"name":"Аврен","id":189,"pid":4,"pop":8574,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.629,43.211],[27.631,43.2],[27.627,43.192],[27.627,43.165],[27.63,43.163],[27.643,43.166],[27.662,43.188],[27.674,43.189],[27.715,43.164],[27.732,43.163],[27.75,43.171],[27.77,43.157],[27.784,43.156],[27.805,43.146],[27.813,43.146],[27.82,43.151],[27.838,43.148],[27.84,43.142],[27.835,43.133],[27.839,43.131],[27.869,43.129],[27.876,43.123],[27.9,43.115],[27.917,43.116],[27.934,43.108],[27.922,43.073],[27.899,43.045],[27.897,43.035],[27.883,43.034],[27.853,43.019],[27.846,43.022],[27.837,43.037],[27.82,43.042],[27.753,43.03],[27.738,43.031],[27.729,43.036],[27.716,43.036],[27.71,43.042],[27.714,43.054],[27.712,43.064],[27.677,43.099],[27.671,43.101],[27.663,43.099],[27.652,43.085],[27.645,43.061],[27.634,43.059],[27.621,43.064],[27.611,43.064],[27.607,43.06],[27.611,43.051],[27.607,43.046],[27.592,43.049],[27.577,43.07],[27.563,43.065],[27.549,43.07],[27.548,43.076],[27.57,43.096],[27.55,43.11],[27.545,43.122],[27.551,43.126],[27.569,43.129],[27.583,43.142],[27.576,43.154],[27.548,43.172],[27.55,43.18],[27.569,43.203],[27.562,43.217],[27.58,43.221],[27.596,43.216],[27.617,43.216],[27.629,43.211]]]}},{"type":"Feature","properties":{"name":"Айтос","id":103,"pid":44,"pop":28687,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.248,42.795],[27.274,42.796],[27.312,42.791],[27.37,42.802],[27.406,42.789],[27.438,42.786],[27.45,42.753],[27.448,42.733],[27.431,42.723],[27.436,42.702],[27.411,42.681],[27.36,42.675],[27.343,42.666],[27.321,42.646],[27.287,42.643],[27.281,42.638],[27.241,42.622],[27.228,42.628],[27.225,42.634],[27.237,42.647],[27.239,42.653],[27.235,42.654],[27.173,42.627],[27.166,42.633],[27.129,42.647],[27.118,42.656],[27.115,42.675],[27.125,42.697],[27.088,42.718],[27.094,42.731],[27.118,42.752],[27.124,42.774],[27.121,42.781],[27.116,42.785],[27.106,42.781],[27.111,42.761],[27.106,42.752],[27.095,42.75],[27.079,42.763],[27.062,42.767],[27.057,42.774],[27.057,42.782],[27.064,42.786],[27.086,42.789],[27.103,42.804],[27.12,42.808],[27.146,42.805],[27.171,42.787],[27.178,42.785],[27.193,42.786],[27.218,42.793],[27.248,42.795]]]}},{"type":"Feature","properties":{"name":"Балчик","id":183,"pid":26,"pop":20317,"oblast":"Добрич"},"geometry":{"type":"Polygon","coordinates":[[[28.227,43.563],[28.241,43.53],[28.266,43.519],[28.292,43.494],[28.286,43.482],[28.268,43.469],[28.25,43.446],[28.245,43.435],[28.244,43.407],[28.238,43.409],[28.221,43.403],[28.199,43.401],[28.177,43.403],[28.161,43.41],[28.15,43.407],[28.097,43.375],[28.072,43.34],[28.073,43.331],[28.061,43.31],[28.042,43.309],[28.024,43.36],[27.985,43.404],[27.999,43.412],[28.005,43.421],[27.994,43.446],[27.991,43.477],[27.988,43.481],[27.967,43.49],[27.96,43.497],[27.947,43.54],[27.949,43.551],[27.955,43.555],[27.992,43.569],[27.987,43.586],[27.996,43.592],[27.998,43.605],[28.019,43.613],[28.018,43.629],[28.003,43.649],[28.024,43.652],[28.05,43.647],[28.062,43.638],[28.083,43.606],[28.099,43.604],[28.115,43.608],[28.127,43.605],[28.16,43.572],[28.168,43.573],[28.181,43.567],[28.185,43.568],[28.193,43.586],[28.199,43.587],[28.213,43.57],[28.227,43.563]]]}},{"type":"Feature","properties":{"name":"Баните","id":196,"pid":23,"pop":4923,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[25.071,41.789],[25.114,41.78],[25.099,41.774],[25.093,41.769],[25.09,41.743],[25.102,41.721],[25.107,41.697],[25.132,41.662],[25.123,41.637],[25.13,41.616],[25.117,41.599],[25.094,41.587],[25.039,41.585],[25.022,41.582],[25.005,41.603],[24.949,41.611],[24.928,41.669],[24.92,41.677],[24.896,41.689],[24.884,41.705],[24.899,41.713],[24.899,41.734],[24.904,41.741],[24.928,41.742],[24.962,41.732],[24.974,41.732],[24.995,41.745],[24.997,41.755],[24.984,41.762],[24.978,41.771],[24.975,41.798],[24.98,41.808],[25.019,41.825],[25.029,41.826],[25.059,41.81],[25.064,41.796],[25.071,41.789]]]}},{"type":"Feature","properties":{"name":"Банско","id":125,"pid":56,"pop":13125,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.803,41.845],[23.832,41.826],[23.822,41.8],[23.794,41.786],[23.767,41.777],[23.735,41.746],[23.692,41.737],[23.69,41.731],[23.697,41.723],[23.697,41.716],[23.633,41.72],[23.521,41.699],[23.483,41.714],[23.47,41.737],[23.456,41.745],[23.447,41.746],[23.437,41.741],[23.402,41.714],[23.395,41.718],[23.394,41.731],[23.388,41.74],[23.37,41.745],[23.39,41.751],[23.406,41.765],[23.409,41.777],[23.403,41.795],[23.423,41.811],[23.425,41.822],[23.433,41.834],[23.456,41.848],[23.487,41.86],[23.506,41.86],[23.534,41.85],[23.55,41.849],[23.582,41.856],[23.606,41.867],[23.612,41.859],[23.611,41.848],[23.637,41.832],[23.65,41.828],[23.667,41.83],[23.693,41.843],[23.699,41.853],[23.709,41.856],[23.731,41.855],[23.772,41.844],[23.803,41.845]]]}},{"type":"Feature","properties":{"name":"Батак","id":186,"pid":74,"pop":6144,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.286,41.965],[24.297,41.957],[24.303,41.928],[24.297,41.913],[24.302,41.908],[24.362,41.898],[24.385,41.9],[24.419,41.911],[24.419,41.899],[24.405,41.879],[24.389,41.867],[24.347,41.843],[24.338,41.826],[24.324,41.812],[24.321,41.796],[24.323,41.781],[24.327,41.771],[24.337,41.763],[24.31,41.75],[24.271,41.726],[24.205,41.741],[24.184,41.734],[24.117,41.729],[24.105,41.74],[24.075,41.754],[24.049,41.788],[24.025,41.801],[24.004,41.819],[24.002,41.841],[24.022,41.857],[24.03,41.885],[24.045,41.892],[24.083,41.889],[24.09,41.894],[24.101,41.915],[24.112,41.917],[24.134,41.914],[24.145,41.92],[24.156,41.938],[24.166,41.968],[24.183,41.984],[24.192,42.005],[24.205,42.017],[24.225,41.996],[24.26,41.97],[24.286,41.965]]]}},{"type":"Feature","properties":{"name":"Белене","id":19,"pid":18,"pop":10318,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[25.14,43.696],[25.176,43.707],[25.225,43.697],[25.195,43.654],[25.195,43.637],[25.218,43.614],[25.221,43.602],[25.208,43.59],[25.209,43.566],[25.204,43.558],[25.185,43.551],[25.165,43.536],[25.154,43.513],[25.145,43.507],[25.094,43.492],[25.082,43.491],[25.066,43.499],[25.055,43.524],[25.057,43.529],[25.077,43.539],[25.102,43.542],[25.109,43.547],[25.109,43.551],[25.077,43.565],[25.067,43.58],[25.06,43.579],[25.038,43.564],[25.025,43.561],[25.001,43.565],[24.986,43.571],[24.981,43.576],[24.984,43.585],[25.026,43.606],[25.029,43.619],[25.025,43.624],[25.014,43.628],[24.985,43.63],[24.974,43.635],[24.961,43.647],[24.96,43.661],[24.99,43.678],[25.023,43.675],[25.039,43.677],[25.049,43.682],[25.052,43.7],[25.046,43.71],[25.063,43.702],[25.101,43.693],[25.116,43.692],[25.14,43.696]]]}},{"type":"Feature","properties":{"name":"Белица","id":263,"pid":56,"pop":9927,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.581,42.098],[23.602,42.086],[23.612,42.071],[23.606,42.028],[23.621,42.009],[23.623,41.996],[23.623,41.983],[23.612,41.96],[23.614,41.956],[23.619,41.952],[23.628,41.952],[23.64,41.959],[23.652,41.975],[23.675,41.971],[23.681,41.979],[23.702,41.98],[23.716,41.989],[23.723,41.987],[23.726,41.971],[23.736,41.965],[23.745,41.963],[23.765,41.965],[23.774,41.941],[23.776,41.915],[23.795,41.884],[23.803,41.845],[23.772,41.844],[23.731,41.855],[23.709,41.856],[23.699,41.853],[23.693,41.843],[23.667,41.83],[23.65,41.828],[23.637,41.832],[23.612,41.847],[23.612,41.859],[23.602,41.872],[23.59,41.884],[23.566,41.898],[23.553,41.91],[23.534,41.944],[23.53,41.962],[23.521,41.978],[23.521,42.006],[23.515,42.025],[23.528,42.026],[23.531,42.037],[23.503,42.07],[23.483,42.085],[23.509,42.104],[23.508,42.102],[23.531,42.101],[23.559,42.094],[23.581,42.098]]]}},{"type":"Feature","properties":{"name":"Белоградчик","id":220,"pid":46,"pop":6602,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.554,43.751],[22.555,43.749],[22.572,43.755],[22.573,43.751],[22.567,43.744],[22.569,43.741],[22.59,43.751],[22.614,43.758],[22.621,43.758],[22.625,43.752],[22.636,43.753],[22.642,43.745],[22.635,43.739],[22.636,43.718],[22.656,43.708],[22.67,43.717],[22.683,43.718],[22.687,43.709],[22.712,43.697],[22.718,43.69],[22.716,43.669],[22.711,43.663],[22.698,43.658],[22.71,43.637],[22.732,43.623],[22.74,43.61],[22.767,43.598],[22.781,43.595],[22.765,43.581],[22.739,43.571],[22.727,43.57],[22.721,43.579],[22.721,43.609],[22.718,43.612],[22.705,43.612],[22.684,43.597],[22.68,43.577],[22.661,43.571],[22.648,43.572],[22.636,43.578],[22.613,43.581],[22.601,43.578],[22.595,43.564],[22.611,43.547],[22.612,43.541],[22.589,43.507],[22.594,43.472],[22.586,43.453],[22.575,43.463],[22.554,43.461],[22.534,43.47],[22.533,43.477],[22.525,43.485],[22.524,43.496],[22.505,43.516],[22.501,43.528],[22.502,43.54],[22.489,43.556],[22.489,43.568],[22.496,43.582],[22.487,43.592],[22.494,43.602],[22.488,43.617],[22.481,43.625],[22.492,43.637],[22.484,43.645],[22.482,43.653],[22.476,43.656],[22.459,43.659],[22.44,43.673],[22.42,43.682],[22.454,43.694],[22.48,43.726],[22.511,43.739],[22.533,43.757],[22.556,43.759],[22.558,43.756],[22.554,43.751]]]}},{"type":"Feature","properties":{"name":"Белослав","id":192,"pid":4,"pop":11023,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.82,43.151],[27.813,43.146],[27.805,43.146],[27.784,43.156],[27.77,43.157],[27.75,43.171],[27.732,43.163],[27.715,43.164],[27.674,43.189],[27.662,43.188],[27.643,43.166],[27.63,43.163],[27.627,43.165],[27.627,43.192],[27.631,43.2],[27.629,43.211],[27.639,43.214],[27.649,43.209],[27.666,43.21],[27.692,43.228],[27.708,43.235],[27.751,43.233],[27.779,43.238],[27.785,43.23],[27.808,43.214],[27.808,43.16],[27.82,43.151]]]}},{"type":"Feature","properties":{"name":"Белово","id":123,"pid":74,"pop":8891,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.016,42.27],[24.029,42.264],[24.041,42.268],[24.057,42.267],[24.088,42.251],[24.097,42.241],[24.097,42.232],[24.089,42.222],[24.089,42.202],[24.063,42.169],[24.05,42.144],[24.031,42.134],[23.995,42.121],[23.973,42.106],[23.961,42.102],[23.942,42.098],[23.907,42.096],[23.867,42.086],[23.802,42.082],[23.788,42.11],[23.794,42.129],[23.766,42.156],[23.765,42.167],[23.775,42.182],[23.789,42.189],[23.805,42.203],[23.822,42.21],[23.826,42.214],[23.861,42.226],[23.874,42.236],[23.89,42.268],[23.907,42.271],[23.925,42.256],[23.942,42.249],[23.965,42.253],[23.991,42.273],[23.999,42.276],[24.016,42.27]]]}},{"type":"Feature","properties":{"name":"Берковица","id":16,"pid":15,"pop":18803,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.345,43.315],[23.337,43.295],[23.286,43.276],[23.245,43.257],[23.244,43.246],[23.263,43.23],[23.263,43.224],[23.249,43.217],[23.24,43.203],[23.228,43.196],[23.225,43.181],[23.207,43.153],[23.209,43.135],[23.236,43.115],[23.162,43.114],[23.14,43.12],[23.125,43.133],[23.109,43.16],[23.068,43.179],[23.05,43.204],[23.034,43.208],[23.023,43.266],[23.027,43.273],[23.045,43.284],[23.048,43.292],[23.036,43.334],[23.053,43.349],[23.056,43.366],[23.087,43.385],[23.112,43.387],[23.136,43.392],[23.134,43.382],[23.141,43.375],[23.172,43.374],[23.185,43.366],[23.23,43.352],[23.302,43.353],[23.312,43.346],[23.32,43.332],[23.345,43.315]]]}},{"type":"Feature","properties":{"name":"Благоевград","id":288,"pid":56,"pop":77441,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.232,42.11],[23.281,42.108],[23.301,42.101],[23.328,42.099],[23.358,42.084],[23.378,42.082],[23.414,42.063],[23.44,42.063],[23.462,42.068],[23.462,42.065],[23.454,42.053],[23.421,42.025],[23.4,42.015],[23.378,41.987],[23.35,41.988],[23.328,41.992],[23.307,42.018],[23.288,42.029],[23.272,42.031],[23.252,42.002],[23.221,41.986],[23.207,41.966],[23.196,41.96],[23.179,41.958],[23.16,41.946],[23.118,41.946],[23.11,41.95],[23.11,41.963],[23.101,41.967],[23.069,41.953],[23.051,41.954],[23.047,41.947],[23.05,41.933],[23.039,41.929],[23.044,41.92],[23.043,41.912],[23.023,41.878],[22.977,41.86],[22.969,41.846],[22.964,41.844],[22.934,41.847],[22.918,41.873],[22.911,41.877],[22.901,41.876],[22.898,41.887],[22.901,41.891],[22.896,41.898],[22.899,41.903],[22.894,41.915],[22.891,41.919],[22.882,41.921],[22.873,41.936],[22.877,41.943],[22.874,41.945],[22.873,41.955],[22.878,41.976],[22.873,41.978],[22.875,41.997],[22.859,42.004],[22.866,42.011],[22.865,42.022],[22.909,42.028],[22.922,42.035],[22.926,42.045],[22.926,42.076],[22.943,42.105],[22.96,42.111],[22.969,42.102],[22.975,42.085],[22.983,42.076],[23.001,42.072],[23.045,42.072],[23.049,42.069],[23.055,42.055],[23.066,42.052],[23.138,42.068],[23.195,42.108],[23.232,42.11]]]}},{"type":"Feature","properties":{"name":"Бобошево","id":180,"pid":97,"pop":2870,"oblast":"Кюстендил"},"geometry":{"type":"Polygon","coordinates":[[[23.185,42.195],[23.174,42.181],[23.162,42.174],[23.1,42.161],[23.093,42.147],[23.051,42.14],[23.028,42.124],[23.016,42.123],[23.01,42.126],[23.008,42.139],[22.987,42.151],[22.976,42.167],[22.967,42.173],[22.928,42.174],[22.94,42.199],[22.955,42.215],[23.028,42.244],[23.055,42.242],[23.059,42.236],[23.051,42.225],[23.051,42.22],[23.078,42.217],[23.101,42.198],[23.133,42.195],[23.166,42.2],[23.185,42.195]]]}},{"type":"Feature","properties":{"name":"Бобов дол","id":227,"pid":97,"pop":9067,"oblast":"Кюстендил"},"geometry":{"type":"Polygon","coordinates":[[[23.052,42.389],[23.055,42.372],[23.067,42.352],[23.072,42.338],[23.103,42.296],[23.103,42.283],[23.079,42.273],[23.035,42.275],[23.026,42.265],[23.028,42.243],[22.988,42.227],[22.971,42.223],[22.951,42.212],[22.94,42.213],[22.946,42.229],[22.943,42.254],[22.954,42.27],[22.955,42.279],[22.951,42.287],[22.926,42.31],[22.92,42.332],[22.9,42.357],[22.896,42.378],[22.916,42.378],[22.939,42.37],[22.944,42.374],[22.942,42.388],[22.946,42.394],[22.955,42.398],[22.987,42.4],[23.012,42.414],[23.03,42.413],[23.043,42.408],[23.052,42.389]]]}},{"type":"Feature","properties":{"name":"Болярово","id":98,"pid":71,"pop":4160,"oblast":"Ямбол"},"geometry":{"type":"Polygon","coordinates":[[[27.044,42.087],[27.033,42.084],[27.034,42.066],[27.021,42.051],[27.016,42.046],[26.99,42.038],[26.985,42.034],[26.985,42.019],[26.971,42.004],[26.946,42.003],[26.904,41.993],[26.87,41.992],[26.843,41.974],[26.805,41.982],[26.797,41.989],[26.79,41.987],[26.792,42.018],[26.782,42.02],[26.766,42.017],[26.746,42.022],[26.743,42.026],[26.746,42.061],[26.737,42.072],[26.737,42.08],[26.738,42.094],[26.743,42.106],[26.742,42.119],[26.738,42.132],[26.721,42.14],[26.703,42.17],[26.706,42.179],[26.719,42.19],[26.71,42.211],[26.711,42.219],[26.721,42.23],[26.749,42.247],[26.754,42.264],[26.771,42.286],[26.809,42.285],[26.846,42.28],[26.859,42.284],[26.871,42.296],[26.886,42.299],[26.896,42.296],[26.912,42.3],[26.922,42.299],[26.934,42.306],[26.945,42.298],[26.972,42.294],[26.975,42.291],[26.97,42.278],[26.954,42.266],[26.947,42.249],[26.95,42.242],[26.96,42.231],[26.975,42.223],[26.981,42.214],[26.98,42.209],[26.955,42.194],[26.955,42.159],[26.966,42.14],[26.976,42.131],[27,42.121],[27.044,42.112],[27.052,42.101],[27.044,42.087]]]}},{"type":"Feature","properties":{"name":"Борино","id":219,"pid":23,"pop":3641,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[24.353,41.728],[24.355,41.716],[24.346,41.699],[24.347,41.688],[24.367,41.668],[24.379,41.646],[24.376,41.633],[24.361,41.613],[24.357,41.592],[24.369,41.544],[24.382,41.535],[24.372,41.524],[24.368,41.523],[24.367,41.519],[24.361,41.518],[24.357,41.524],[24.338,41.528],[24.331,41.522],[24.318,41.52],[24.315,41.515],[24.305,41.512],[24.299,41.52],[24.3,41.525],[24.295,41.526],[24.303,41.539],[24.287,41.553],[24.272,41.558],[24.275,41.569],[24.263,41.574],[24.271,41.617],[24.261,41.648],[24.273,41.667],[24.268,41.672],[24.234,41.681],[24.233,41.694],[24.226,41.706],[24.222,41.737],[24.271,41.726],[24.31,41.75],[24.337,41.763],[24.353,41.728]]]}},{"type":"Feature","properties":{"name":"Борован","id":261,"pid":49,"pop":5714,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[23.783,43.35],[23.751,43.373],[23.735,43.391],[23.702,43.409],[23.693,43.429],[23.654,43.451],[23.643,43.478],[23.626,43.492],[23.639,43.514],[23.654,43.528],[23.705,43.51],[23.72,43.508],[23.744,43.515],[23.75,43.535],[23.766,43.541],[23.785,43.525],[23.821,43.504],[23.83,43.496],[23.844,43.462],[23.825,43.448],[23.818,43.425],[23.822,43.419],[23.839,43.414],[23.843,43.41],[23.841,43.383],[23.828,43.373],[23.8,43.363],[23.783,43.35]]]}},{"type":"Feature","properties":{"name":"Борово","id":214,"pid":65,"pop":6101,"oblast":"Русе"},"geometry":{"type":"Polygon","coordinates":[[[25.869,43.642],[25.873,43.623],[25.858,43.599],[25.853,43.579],[25.854,43.564],[25.846,43.553],[25.844,43.541],[25.865,43.493],[25.88,43.482],[25.881,43.477],[25.877,43.469],[25.865,43.469],[25.856,43.464],[25.835,43.469],[25.816,43.465],[25.809,43.468],[25.803,43.476],[25.787,43.513],[25.754,43.527],[25.746,43.536],[25.745,43.547],[25.76,43.579],[25.758,43.589],[25.735,43.6],[25.713,43.606],[25.683,43.625],[25.668,43.637],[25.665,43.648],[25.63,43.679],[25.671,43.699],[25.684,43.702],[25.718,43.699],[25.732,43.701],[25.76,43.708],[25.769,43.714],[25.784,43.708],[25.794,43.693],[25.806,43.683],[25.835,43.679],[25.843,43.676],[25.869,43.642]]]}},{"type":"Feature","properties":{"name":"Ботевград","id":92,"pid":38,"pop":33175,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.861,43.04],[23.873,42.991],[23.859,42.97],[23.836,42.951],[23.84,42.947],[23.861,42.948],[23.87,42.945],[23.883,42.929],[23.88,42.907],[23.894,42.896],[23.896,42.886],[23.875,42.855],[23.87,42.828],[23.856,42.823],[23.823,42.804],[23.797,42.803],[23.757,42.814],[23.723,42.829],[23.698,42.831],[23.701,42.852],[23.692,42.869],[23.676,42.882],[23.637,42.898],[23.598,42.933],[23.597,42.942],[23.612,42.949],[23.617,42.957],[23.597,42.967],[23.589,42.989],[23.605,42.995],[23.626,43.019],[23.646,43.03],[23.662,43.043],[23.671,43.041],[23.69,43.027],[23.704,43.022],[23.725,43.027],[23.757,43.049],[23.788,43.058],[23.806,43.058],[23.827,43.043],[23.861,43.04]]]}},{"type":"Feature","properties":{"name":"Бойчиновци","id":271,"pid":15,"pop":9272,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.441,43.626],[23.465,43.621],[23.475,43.615],[23.488,43.595],[23.497,43.592],[23.556,43.593],[23.622,43.551],[23.634,43.539],[23.633,43.53],[23.625,43.526],[23.583,43.528],[23.565,43.508],[23.55,43.502],[23.523,43.506],[23.502,43.504],[23.468,43.514],[23.449,43.514],[23.442,43.508],[23.414,43.45],[23.416,43.426],[23.402,43.432],[23.355,43.438],[23.33,43.454],[23.31,43.459],[23.297,43.47],[23.27,43.472],[23.241,43.481],[23.238,43.487],[23.248,43.493],[23.26,43.496],[23.283,43.494],[23.301,43.504],[23.326,43.512],[23.335,43.521],[23.338,43.536],[23.336,43.557],[23.345,43.568],[23.355,43.573],[23.368,43.587],[23.392,43.589],[23.399,43.604],[23.405,43.609],[23.418,43.612],[23.427,43.626],[23.441,43.626]]]}},{"type":"Feature","properties":{"name":"Бойница","id":246,"pid":46,"pop":1341,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.606,44.062],[22.63,44.037],[22.63,44.032],[22.626,44.025],[22.613,44.016],[22.591,44.011],[22.584,44.005],[22.584,43.995],[22.591,43.986],[22.586,43.977],[22.582,43.956],[22.573,43.945],[22.549,43.936],[22.541,43.926],[22.533,43.923],[22.521,43.926],[22.501,43.923],[22.476,43.936],[22.392,43.93],[22.408,43.939],[22.405,43.948],[22.41,43.954],[22.412,43.971],[22.408,43.986],[22.415,43.992],[22.409,43.997],[22.408,44.005],[22.441,44.011],[22.445,44.017],[22.466,44.015],[22.483,44.021],[22.508,44.018],[22.531,44.02],[22.532,44.024],[22.539,44.025],[22.543,44.033],[22.537,44.038],[22.54,44.043],[22.531,44.048],[22.533,44.051],[22.554,44.053],[22.559,44.057],[22.58,44.053],[22.582,44.061],[22.606,44.062]]]}},{"type":"Feature","properties":{"name":"Божурище","id":153,"pid":38,"pop":8473,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.242,42.774],[23.239,42.764],[23.25,42.75],[23.245,42.741],[23.213,42.739],[23.197,42.733],[23.176,42.731],[23.107,42.737],[23.072,42.738],[23.06,42.734],[23.053,42.753],[23.02,42.754],[23.003,42.774],[23.057,42.796],[23.081,42.821],[23.106,42.827],[23.121,42.842],[23.151,42.816],[23.16,42.814],[23.178,42.816],[23.188,42.813],[23.227,42.778],[23.242,42.774]]]}},{"type":"Feature","properties":{"name":"Брацигово","id":75,"pid":74,"pop":9648,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.443,42.071],[24.435,42.06],[24.437,42.049],[24.462,42.028],[24.466,42.004],[24.444,41.952],[24.418,41.921],[24.419,41.911],[24.385,41.9],[24.362,41.898],[24.302,41.908],[24.297,41.913],[24.303,41.928],[24.297,41.957],[24.286,41.965],[24.293,41.968],[24.306,41.983],[24.32,41.99],[24.337,42.02],[24.341,42.041],[24.337,42.061],[24.341,42.075],[24.35,42.084],[24.369,42.093],[24.397,42.104],[24.434,42.109],[24.448,42.114],[24.454,42.099],[24.45,42.079],[24.443,42.071]]]}},{"type":"Feature","properties":{"name":"Братя Даскалови","id":276,"pid":113,"pop":8677,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.279,42.472],[25.294,42.454],[25.318,42.45],[25.343,42.452],[25.4,42.468],[25.394,42.452],[25.396,42.418],[25.39,42.403],[25.388,42.374],[25.368,42.348],[25.345,42.337],[25.333,42.323],[25.313,42.314],[25.296,42.273],[25.296,42.268],[25.309,42.259],[25.317,42.248],[25.315,42.236],[25.299,42.217],[25.307,42.179],[25.303,42.164],[25.288,42.161],[25.263,42.149],[25.232,42.151],[25.204,42.149],[25.177,42.142],[25.157,42.143],[25.132,42.151],[25.11,42.15],[25.099,42.167],[25.095,42.186],[25.096,42.218],[25.108,42.234],[25.137,42.244],[25.202,42.247],[25.214,42.253],[25.212,42.261],[25.202,42.269],[25.18,42.273],[25.167,42.279],[25.154,42.279],[25.148,42.282],[25.142,42.3],[25.147,42.353],[25.141,42.386],[25.149,42.391],[25.162,42.391],[25.208,42.376],[25.223,42.374],[25.234,42.377],[25.24,42.386],[25.237,42.4],[25.189,42.422],[25.186,42.431],[25.213,42.443],[25.223,42.467],[25.249,42.472],[25.268,42.464],[25.279,42.472]]]}},{"type":"Feature","properties":{"name":"Брегово","id":262,"pid":46,"pop":5514,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.701,44.208],[22.752,44.2],[22.751,44.191],[22.726,44.172],[22.722,44.165],[22.721,44.156],[22.733,44.138],[22.732,44.116],[22.736,44.108],[22.743,44.108],[22.769,44.122],[22.782,44.123],[22.785,44.101],[22.781,44.083],[22.796,44.066],[22.796,44.057],[22.766,44.052],[22.75,44.062],[22.721,44.06],[22.695,44.045],[22.664,44.046],[22.63,44.037],[22.62,44.045],[22.609,44.062],[22.621,44.063],[22.619,44.068],[22.624,44.072],[22.615,44.078],[22.62,44.083],[22.619,44.097],[22.61,44.106],[22.617,44.137],[22.621,44.145],[22.626,44.147],[22.628,44.156],[22.622,44.162],[22.616,44.161],[22.613,44.165],[22.619,44.173],[22.625,44.17],[22.628,44.174],[22.635,44.174],[22.635,44.178],[22.628,44.183],[22.637,44.181],[22.642,44.185],[22.636,44.19],[22.645,44.198],[22.647,44.203],[22.644,44.208],[22.654,44.204],[22.664,44.213],[22.668,44.207],[22.669,44.213],[22.676,44.215],[22.688,44.213],[22.701,44.208]]]}},{"type":"Feature","properties":{"name":"Брезник","id":120,"pid":119,"pop":6945,"oblast":"Перник"},"geometry":{"type":"Polygon","coordinates":[[[22.878,42.858],[22.882,42.84],[22.888,42.833],[22.923,42.83],[22.932,42.822],[22.945,42.794],[22.963,42.786],[22.993,42.783],[23.019,42.754],[23.015,42.739],[22.985,42.734],[22.974,42.726],[22.978,42.713],[22.993,42.713],[22.997,42.708],[22.978,42.679],[22.969,42.641],[22.962,42.642],[22.945,42.659],[22.907,42.67],[22.886,42.664],[22.872,42.65],[22.859,42.628],[22.842,42.636],[22.822,42.656],[22.813,42.659],[22.798,42.657],[22.789,42.643],[22.777,42.638],[22.771,42.642],[22.767,42.656],[22.755,42.662],[22.719,42.661],[22.702,42.665],[22.659,42.685],[22.659,42.694],[22.653,42.704],[22.664,42.719],[22.659,42.735],[22.663,42.741],[22.686,42.738],[22.699,42.749],[22.726,42.755],[22.732,42.762],[22.753,42.773],[22.789,42.764],[22.8,42.768],[22.823,42.784],[22.832,42.803],[22.831,42.813],[22.797,42.844],[22.795,42.862],[22.837,42.857],[22.868,42.864],[22.878,42.858]]]}},{"type":"Feature","properties":{"name":"Брезово","id":160,"pid":53,"pop":7298,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[25.104,42.485],[25.128,42.476],[25.169,42.481],[25.191,42.489],[25.204,42.487],[25.211,42.482],[25.223,42.467],[25.218,42.45],[25.209,42.44],[25.186,42.431],[25.186,42.426],[25.2,42.415],[25.235,42.402],[25.24,42.39],[25.234,42.377],[25.223,42.374],[25.208,42.376],[25.162,42.391],[25.149,42.391],[25.141,42.386],[25.147,42.353],[25.142,42.3],[25.148,42.282],[25.154,42.279],[25.167,42.279],[25.18,42.273],[25.202,42.269],[25.212,42.261],[25.214,42.253],[25.202,42.247],[25.137,42.244],[25.108,42.234],[25.104,42.236],[25.105,42.248],[25.092,42.252],[25.08,42.261],[25.058,42.29],[25.037,42.307],[25.005,42.314],[24.987,42.321],[24.978,42.32],[24.969,42.314],[24.958,42.312],[24.948,42.313],[24.936,42.322],[24.909,42.322],[24.899,42.346],[24.907,42.379],[24.912,42.389],[24.92,42.394],[24.948,42.4],[24.953,42.406],[24.951,42.413],[24.936,42.421],[24.932,42.43],[24.948,42.465],[24.993,42.453],[25.007,42.457],[25.013,42.485],[25.006,42.522],[25.014,42.531],[25.048,42.534],[25.054,42.512],[25.069,42.495],[25.08,42.489],[25.104,42.485]]]}},{"type":"Feature","properties":{"name":"Брусарци","id":275,"pid":15,"pop":5078,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.157,43.735],[23.17,43.723],[23.17,43.7],[23.166,43.692],[23.158,43.689],[23.132,43.692],[23.123,43.686],[23.112,43.667],[23.075,43.636],[23.065,43.615],[23.046,43.597],[22.984,43.585],[22.955,43.57],[22.945,43.571],[22.925,43.579],[22.934,43.599],[22.935,43.62],[22.943,43.63],[22.937,43.65],[22.942,43.661],[22.939,43.673],[22.985,43.685],[23.014,43.701],[23.042,43.704],[23.056,43.714],[23.055,43.721],[23.041,43.738],[23.028,43.747],[23.015,43.752],[23.052,43.765],[23.077,43.765],[23.11,43.749],[23.138,43.745],[23.151,43.736],[23.157,43.735]]]}},{"type":"Feature","properties":{"name":"Бургас","id":302,"pid":44,"pop":212902,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.585,42.566],[27.578,42.56],[27.571,42.559],[27.541,42.563],[27.52,42.56],[27.51,42.553],[27.5,42.536],[27.491,42.514],[27.489,42.495],[27.462,42.493],[27.457,42.489],[27.456,42.469],[27.471,42.454],[27.469,42.441],[27.475,42.432],[27.482,42.44],[27.479,42.448],[27.484,42.455],[27.48,42.459],[27.485,42.466],[27.498,42.452],[27.515,42.444],[27.513,42.434],[27.528,42.437],[27.534,42.442],[27.538,42.453],[27.546,42.456],[27.544,42.463],[27.564,42.456],[27.558,42.433],[27.569,42.416],[27.569,42.409],[27.531,42.372],[27.52,42.366],[27.498,42.387],[27.489,42.384],[27.484,42.377],[27.48,42.378],[27.467,42.399],[27.451,42.399],[27.42,42.395],[27.375,42.393],[27.358,42.395],[27.378,42.404],[27.384,42.411],[27.376,42.425],[27.376,42.452],[27.367,42.473],[27.354,42.474],[27.34,42.486],[27.329,42.488],[27.323,42.507],[27.316,42.509],[27.308,42.508],[27.299,42.5],[27.285,42.496],[27.273,42.481],[27.265,42.48],[27.259,42.491],[27.228,42.514],[27.229,42.535],[27.211,42.566],[27.217,42.568],[27.26,42.565],[27.271,42.556],[27.309,42.538],[27.337,42.544],[27.376,42.572],[27.385,42.585],[27.385,42.599],[27.379,42.6],[27.363,42.594],[27.344,42.608],[27.324,42.614],[27.268,42.609],[27.254,42.613],[27.241,42.622],[27.281,42.638],[27.287,42.643],[27.321,42.646],[27.343,42.666],[27.36,42.675],[27.411,42.681],[27.436,42.702],[27.431,42.723],[27.448,42.734],[27.457,42.726],[27.477,42.725],[27.493,42.719],[27.502,42.713],[27.511,42.699],[27.524,42.69],[27.528,42.681],[27.514,42.653],[27.518,42.636],[27.529,42.623],[27.547,42.613],[27.56,42.584],[27.578,42.574],[27.585,42.566]]]}},{"type":"Feature","properties":{"name":"Бяла","id":184,"pid":65,"pop":13467,"oblast":"Русе"},"geometry":{"type":"Polygon","coordinates":[[[25.877,43.469],[25.875,43.461],[25.881,43.452],[25.936,43.429],[25.96,43.409],[25.959,43.404],[25.98,43.388],[26.013,43.377],[26.03,43.365],[26.029,43.322],[26.003,43.321],[25.97,43.328],[25.953,43.371],[25.944,43.375],[25.93,43.374],[25.896,43.362],[25.874,43.362],[25.825,43.371],[25.784,43.361],[25.754,43.373],[25.715,43.404],[25.699,43.402],[25.688,43.39],[25.676,43.388],[25.626,43.402],[25.617,43.409],[25.593,43.414],[25.574,43.422],[25.568,43.428],[25.585,43.445],[25.581,43.461],[25.582,43.494],[25.613,43.511],[25.625,43.515],[25.636,43.515],[25.646,43.511],[25.656,43.483],[25.669,43.48],[25.687,43.486],[25.692,43.491],[25.692,43.504],[25.697,43.511],[25.724,43.511],[25.75,43.531],[25.787,43.513],[25.794,43.492],[25.811,43.467],[25.82,43.465],[25.835,43.469],[25.852,43.464],[25.865,43.469],[25.877,43.469]]]}},{"type":"Feature","properties":{"name":"Бяла","id":278,"pid":4,"pop":3242,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.905,42.964],[27.913,42.943],[27.904,42.919],[27.908,42.894],[27.904,42.873],[27.91,42.86],[27.899,42.86],[27.894,42.856],[27.891,42.841],[27.856,42.842],[27.826,42.832],[27.797,42.828],[27.789,42.83],[27.777,42.841],[27.757,42.842],[27.717,42.875],[27.725,42.887],[27.713,42.898],[27.724,42.916],[27.745,42.921],[27.764,42.92],[27.777,42.925],[27.793,42.937],[27.818,42.942],[27.825,42.94],[27.843,42.948],[27.861,42.964],[27.88,42.959],[27.905,42.964]]]}},{"type":"Feature","properties":{"name":"Бяла Слатина","id":143,"pid":49,"pop":24606,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[24.045,43.602],[24.038,43.551],[24.022,43.532],[24.036,43.506],[24.041,43.48],[24.049,43.471],[24.076,43.453],[24.08,43.441],[24.066,43.421],[24.023,43.393],[24.018,43.374],[23.987,43.36],[23.979,43.351],[23.978,43.344],[23.989,43.313],[23.982,43.288],[23.981,43.255],[23.972,43.247],[23.941,43.246],[23.913,43.251],[23.873,43.265],[23.863,43.265],[23.854,43.26],[23.844,43.264],[23.825,43.264],[23.82,43.266],[23.828,43.285],[23.823,43.314],[23.783,43.35],[23.8,43.363],[23.828,43.373],[23.841,43.383],[23.843,43.41],[23.839,43.414],[23.822,43.419],[23.818,43.429],[23.825,43.448],[23.842,43.459],[23.844,43.468],[23.826,43.5],[23.785,43.525],[23.766,43.541],[23.776,43.577],[23.823,43.571],[23.836,43.573],[23.852,43.586],[23.875,43.597],[23.915,43.596],[23.943,43.603],[23.983,43.606],[23.999,43.61],[24.009,43.61],[24.029,43.601],[24.045,43.602]]]}},{"type":"Feature","properties":{"name":"Чавдар","id":266,"pid":38,"pop":1272,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[24.08,42.683],[24.089,42.654],[24.087,42.608],[24.095,42.57],[24.077,42.564],[24.06,42.548],[24.051,42.566],[24.051,42.583],[24.033,42.637],[24.036,42.672],[24.046,42.685],[24.059,42.683],[24.08,42.683]]]}},{"type":"Feature","properties":{"name":"Челопеч","id":273,"pid":38,"pop":1473,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[24.08,42.683],[24.056,42.683],[24.046,42.685],[24.04,42.691],[24.038,42.697],[24.042,42.709],[24.036,42.735],[24.04,42.753],[24.072,42.751],[24.091,42.756],[24.091,42.735],[24.1,42.696],[24.08,42.683]]]}},{"type":"Feature","properties":{"name":"Чепеларе","id":108,"pid":23,"pop":7720,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[24.788,41.87],[24.8,41.83],[24.787,41.823],[24.777,41.804],[24.764,41.801],[24.762,41.792],[24.775,41.773],[24.78,41.772],[24.786,41.78],[24.793,41.782],[24.795,41.764],[24.817,41.766],[24.818,41.756],[24.804,41.734],[24.787,41.723],[24.788,41.697],[24.784,41.687],[24.759,41.672],[24.745,41.648],[24.738,41.645],[24.716,41.645],[24.711,41.648],[24.711,41.661],[24.683,41.666],[24.663,41.696],[24.631,41.71],[24.616,41.732],[24.612,41.75],[24.587,41.762],[24.575,41.775],[24.575,41.793],[24.565,41.818],[24.574,41.843],[24.571,41.858],[24.575,41.87],[24.574,41.885],[24.634,41.89],[24.682,41.9],[24.691,41.893],[24.723,41.888],[24.736,41.881],[24.764,41.882],[24.788,41.87]]]}},{"type":"Feature","properties":{"name":"Черноочене","id":274,"pid":8,"pop":9607,"oblast":"Кърджали"},"geometry":{"type":"Polygon","coordinates":[[[25.39,41.836],[25.405,41.829],[25.412,41.801],[25.419,41.791],[25.427,41.783],[25.437,41.782],[25.434,41.769],[25.409,41.729],[25.406,41.71],[25.392,41.7],[25.366,41.698],[25.341,41.701],[25.334,41.709],[25.329,41.726],[25.325,41.728],[25.302,41.717],[25.29,41.726],[25.285,41.727],[25.275,41.706],[25.268,41.702],[25.261,41.702],[25.252,41.709],[25.244,41.739],[25.238,41.746],[25.194,41.74],[25.171,41.747],[25.161,41.745],[25.141,41.728],[25.117,41.731],[25.111,41.73],[25.102,41.721],[25.097,41.725],[25.089,41.752],[25.096,41.772],[25.137,41.788],[25.151,41.821],[25.191,41.847],[25.203,41.862],[25.218,41.873],[25.263,41.891],[25.277,41.893],[25.269,41.871],[25.28,41.842],[25.281,41.816],[25.309,41.806],[25.32,41.792],[25.325,41.79],[25.332,41.793],[25.341,41.811],[25.364,41.816],[25.38,41.831],[25.39,41.836]]]}},{"type":"Feature","properties":{"name":"Червен бряг","id":168,"pid":18,"pop":27856,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[24.243,43.433],[24.245,43.42],[24.234,43.387],[24.235,43.374],[24.243,43.368],[24.261,43.37],[24.274,43.366],[24.304,43.349],[24.308,43.34],[24.305,43.295],[24.329,43.279],[24.32,43.268],[24.313,43.266],[24.301,43.269],[24.278,43.255],[24.263,43.25],[24.23,43.246],[24.182,43.248],[24.146,43.256],[24.13,43.254],[24.103,43.241],[24.089,43.222],[24.051,43.214],[24.019,43.233],[24.007,43.231],[23.998,43.225],[23.988,43.226],[23.972,43.247],[23.981,43.255],[23.982,43.288],[23.988,43.303],[23.988,43.32],[23.978,43.344],[23.979,43.351],[23.987,43.36],[24.018,43.374],[24.039,43.369],[24.068,43.371],[24.097,43.366],[24.117,43.386],[24.119,43.401],[24.128,43.408],[24.166,43.418],[24.19,43.431],[24.207,43.435],[24.219,43.435],[24.232,43.429],[24.243,43.433]]]}},{"type":"Feature","properties":{"name":"Чипровци","id":174,"pid":15,"pop":3715,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[22.874,43.501],[22.912,43.5],[22.921,43.483],[22.946,43.484],[22.964,43.477],[22.999,43.472],[23.015,43.462],[23.026,43.439],[23.044,43.427],[23.046,43.422],[23.022,43.413],[23.004,43.402],[22.981,43.394],[22.966,43.385],[22.945,43.38],[22.906,43.361],[22.863,43.354],[22.825,43.331],[22.803,43.337],[22.794,43.343],[22.784,43.354],[22.77,43.362],[22.767,43.376],[22.749,43.385],[22.77,43.407],[22.794,43.422],[22.814,43.443],[22.815,43.456],[22.807,43.478],[22.808,43.484],[22.816,43.496],[22.855,43.505],[22.874,43.501]]]}},{"type":"Feature","properties":{"name":"Чирпан","id":135,"pid":113,"pop":21637,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.602,42.184],[25.591,42.162],[25.562,42.154],[25.565,42.151],[25.582,42.149],[25.581,42.144],[25.574,42.139],[25.55,42.14],[25.524,42.153],[25.493,42.141],[25.486,42.131],[25.491,42.113],[25.467,42.078],[25.452,42.077],[25.433,42.091],[25.413,42.092],[25.399,42.098],[25.382,42.098],[25.374,42.093],[25.358,42.104],[25.347,42.124],[25.317,42.143],[25.303,42.163],[25.307,42.179],[25.299,42.217],[25.315,42.236],[25.317,42.248],[25.309,42.259],[25.295,42.269],[25.313,42.314],[25.333,42.323],[25.345,42.337],[25.368,42.348],[25.386,42.372],[25.398,42.369],[25.434,42.369],[25.468,42.355],[25.498,42.354],[25.512,42.345],[25.512,42.307],[25.538,42.294],[25.544,42.28],[25.54,42.268],[25.532,42.256],[25.525,42.251],[25.506,42.247],[25.491,42.235],[25.48,42.231],[25.479,42.222],[25.497,42.218],[25.504,42.212],[25.515,42.185],[25.525,42.184],[25.539,42.188],[25.563,42.185],[25.585,42.19],[25.602,42.184]]]}},{"type":"Feature","properties":{"name":"Чупрене","id":154,"pid":46,"pop":2083,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.727,43.57],[22.739,43.571],[22.765,43.581],[22.781,43.595],[22.805,43.588],[22.825,43.557],[22.822,43.543],[22.827,43.532],[22.823,43.519],[22.828,43.5],[22.816,43.496],[22.808,43.484],[22.816,43.453],[22.814,43.443],[22.794,43.422],[22.77,43.407],[22.749,43.385],[22.734,43.388],[22.721,43.395],[22.7,43.393],[22.676,43.395],[22.667,43.403],[22.667,43.411],[22.659,43.426],[22.639,43.433],[22.624,43.427],[22.597,43.435],[22.59,43.44],[22.586,43.453],[22.594,43.472],[22.589,43.507],[22.612,43.541],[22.611,43.547],[22.595,43.564],[22.601,43.578],[22.613,43.581],[22.636,43.578],[22.648,43.572],[22.661,43.571],[22.68,43.577],[22.683,43.594],[22.7,43.61],[22.713,43.612],[22.721,43.609],[22.721,43.579],[22.727,43.57]]]}},{"type":"Feature","properties":{"name":"Дългопол","id":252,"pid":4,"pop":14389,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.463,43.085],[27.482,43.091],[27.501,43.087],[27.49,43.073],[27.508,43.049],[27.485,43.017],[27.491,43.009],[27.508,43.001],[27.508,42.966],[27.515,42.948],[27.51,42.941],[27.501,42.937],[27.48,42.934],[27.436,42.936],[27.422,42.932],[27.385,42.949],[27.374,42.964],[27.36,42.974],[27.314,42.983],[27.254,42.987],[27.228,42.985],[27.173,42.957],[27.155,42.953],[27.142,42.953],[27.151,42.984],[27.143,42.99],[27.11,42.994],[27.118,43.016],[27.103,43.027],[27.103,43.031],[27.113,43.033],[27.147,43.032],[27.154,43.045],[27.163,43.049],[27.196,43.048],[27.237,43.057],[27.272,43.055],[27.272,43.062],[27.258,43.073],[27.253,43.098],[27.254,43.102],[27.268,43.105],[27.288,43.117],[27.297,43.115],[27.29,43.108],[27.292,43.102],[27.325,43.109],[27.349,43.108],[27.359,43.101],[27.371,43.105],[27.393,43.124],[27.433,43.126],[27.439,43.124],[27.444,43.118],[27.44,43.102],[27.443,43.085],[27.449,43.082],[27.463,43.085]]]}},{"type":"Feature","properties":{"name":"Девин","id":106,"pid":23,"pop":13013,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[24.46,41.922],[24.475,41.921],[24.491,41.926],[24.504,41.926],[24.532,41.894],[24.559,41.884],[24.574,41.885],[24.575,41.87],[24.571,41.858],[24.574,41.843],[24.565,41.815],[24.575,41.796],[24.575,41.775],[24.587,41.762],[24.586,41.754],[24.585,41.738],[24.576,41.725],[24.56,41.711],[24.537,41.704],[24.518,41.689],[24.505,41.666],[24.5,41.665],[24.491,41.672],[24.481,41.673],[24.461,41.666],[24.432,41.671],[24.422,41.665],[24.428,41.646],[24.419,41.628],[24.423,41.626],[24.45,41.625],[24.458,41.621],[24.468,41.61],[24.475,41.589],[24.499,41.571],[24.502,41.562],[24.503,41.558],[24.498,41.559],[24.494,41.554],[24.483,41.558],[24.482,41.555],[24.472,41.551],[24.471,41.548],[24.463,41.546],[24.46,41.54],[24.462,41.53],[24.448,41.523],[24.439,41.53],[24.432,41.527],[24.425,41.53],[24.415,41.53],[24.405,41.541],[24.382,41.535],[24.369,41.544],[24.357,41.6],[24.361,41.613],[24.378,41.636],[24.379,41.646],[24.367,41.668],[24.347,41.688],[24.346,41.699],[24.354,41.713],[24.354,41.724],[24.342,41.747],[24.342,41.757],[24.326,41.773],[24.321,41.796],[24.324,41.812],[24.338,41.826],[24.347,41.843],[24.389,41.867],[24.409,41.883],[24.419,41.899],[24.418,41.921],[24.429,41.935],[24.431,41.937],[24.445,41.927],[24.46,41.922]]]}},{"type":"Feature","properties":{"name":"Девня","id":203,"pid":4,"pop":8730,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.661,43.259],[27.695,43.23],[27.673,43.213],[27.66,43.209],[27.644,43.21],[27.639,43.214],[27.629,43.211],[27.617,43.216],[27.596,43.216],[27.58,43.221],[27.562,43.217],[27.553,43.233],[27.538,43.24],[27.526,43.251],[27.528,43.269],[27.531,43.274],[27.557,43.287],[27.561,43.303],[27.566,43.296],[27.597,43.288],[27.625,43.292],[27.661,43.259]]]}},{"type":"Feature","properties":{"name":"Димитровград","id":80,"pid":28,"pop":53557,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[25.627,42.192],[25.637,42.187],[25.64,42.175],[25.633,42.125],[25.636,42.115],[25.64,42.113],[25.651,42.117],[25.665,42.128],[25.686,42.139],[25.705,42.14],[25.714,42.133],[25.723,42.11],[25.744,42.094],[25.748,42.085],[25.749,42.058],[25.753,42.052],[25.77,42.047],[25.8,42.049],[25.785,42.03],[25.781,42.002],[25.734,42.017],[25.722,42.012],[25.708,41.996],[25.683,41.982],[25.665,41.977],[25.648,41.979],[25.63,41.974],[25.571,41.982],[25.565,41.982],[25.555,41.974],[25.536,41.986],[25.515,41.983],[25.491,41.989],[25.476,41.981],[25.452,41.98],[25.432,41.972],[25.428,41.973],[25.428,41.986],[25.419,41.986],[25.401,41.978],[25.373,41.979],[25.349,41.966],[25.343,42],[25.332,42.017],[25.331,42.023],[25.345,42.05],[25.375,42.094],[25.382,42.098],[25.399,42.098],[25.413,42.092],[25.433,42.091],[25.452,42.077],[25.467,42.078],[25.491,42.113],[25.486,42.131],[25.493,42.141],[25.524,42.153],[25.55,42.14],[25.574,42.139],[25.581,42.144],[25.582,42.149],[25.565,42.151],[25.562,42.154],[25.591,42.162],[25.597,42.177],[25.606,42.187],[25.627,42.192]]]}},{"type":"Feature","properties":{"name":"Димово","id":47,"pid":46,"pop":6514,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.932,43.833],[22.988,43.816],[23.053,43.807],[23.019,43.787],[22.969,43.787],[22.96,43.773],[22.965,43.759],[22.948,43.746],[22.906,43.729],[22.9,43.704],[22.887,43.696],[22.865,43.669],[22.825,43.657],[22.804,43.645],[22.801,43.626],[22.807,43.605],[22.805,43.588],[22.757,43.601],[22.737,43.612],[22.732,43.623],[22.712,43.635],[22.698,43.655],[22.699,43.66],[22.711,43.663],[22.718,43.673],[22.718,43.69],[22.712,43.697],[22.687,43.709],[22.683,43.718],[22.67,43.717],[22.656,43.708],[22.639,43.716],[22.635,43.724],[22.637,43.742],[22.666,43.755],[22.687,43.756],[22.707,43.761],[22.73,43.776],[22.754,43.801],[22.771,43.804],[22.783,43.797],[22.793,43.798],[22.808,43.806],[22.819,43.822],[22.866,43.826],[22.884,43.835],[22.886,43.844],[22.932,43.833]]]}},{"type":"Feature","properties":{"name":"Добрич-села","id":188,"pid":26,"pop":22081,"oblast":"Добрич"},"geometry":{"type":"Polygon","coordinates":[[[27.809,43.805],[27.831,43.797],[27.841,43.787],[27.852,43.761],[27.872,43.742],[27.874,43.719],[27.878,43.711],[27.892,43.708],[27.908,43.695],[27.951,43.684],[27.955,43.663],[27.982,43.648],[28.003,43.649],[28.019,43.625],[28.019,43.613],[27.998,43.605],[27.996,43.592],[27.987,43.586],[27.992,43.569],[27.955,43.555],[27.947,43.545],[27.96,43.497],[27.967,43.49],[27.988,43.481],[27.991,43.477],[27.992,43.455],[28.003,43.432],[28.005,43.419],[27.988,43.404],[27.949,43.407],[27.919,43.401],[27.904,43.393],[27.873,43.369],[27.863,43.366],[27.853,43.368],[27.826,43.386],[27.804,43.411],[27.801,43.423],[27.766,43.43],[27.74,43.446],[27.733,43.455],[27.721,43.485],[27.713,43.487],[27.692,43.487],[27.681,43.492],[27.648,43.49],[27.627,43.501],[27.622,43.509],[27.625,43.531],[27.604,43.551],[27.596,43.553],[27.589,43.551],[27.576,43.531],[27.562,43.521],[27.518,43.522],[27.512,43.536],[27.517,43.569],[27.505,43.59],[27.487,43.603],[27.48,43.625],[27.483,43.639],[27.477,43.651],[27.491,43.659],[27.494,43.665],[27.494,43.686],[27.505,43.697],[27.514,43.733],[27.509,43.758],[27.512,43.763],[27.529,43.772],[27.532,43.784],[27.529,43.795],[27.541,43.805],[27.544,43.826],[27.558,43.826],[27.581,43.802],[27.585,43.801],[27.592,43.806],[27.594,43.822],[27.602,43.821],[27.608,43.812],[27.611,43.814],[27.604,43.834],[27.616,43.844],[27.633,43.844],[27.64,43.829],[27.682,43.804],[27.686,43.798],[27.693,43.762],[27.707,43.751],[27.719,43.748],[27.73,43.753],[27.743,43.777],[27.75,43.781],[27.767,43.775],[27.775,43.775],[27.792,43.786],[27.809,43.805]],[[27.78,43.543],[27.784,43.53],[27.817,43.527],[27.817,43.541],[27.846,43.569],[27.848,43.586],[27.864,43.601],[27.859,43.632],[27.784,43.634],[27.776,43.62],[27.75,43.619],[27.748,43.625],[27.736,43.624],[27.721,43.601],[27.696,43.6],[27.696,43.566],[27.716,43.563],[27.72,43.547],[27.78,43.543]]]}},{"type":"Feature","properties":{"name":"Добрич","id":91,"pid":26,"pop":91030,"oblast":"Добрич"},"geometry":{"type":"Polygon","coordinates":[[[27.78,43.543],[27.72,43.547],[27.716,43.563],[27.696,43.566],[27.696,43.6],[27.721,43.601],[27.736,43.624],[27.748,43.625],[27.75,43.619],[27.776,43.62],[27.784,43.634],[27.859,43.632],[27.864,43.601],[27.848,43.586],[27.846,43.569],[27.817,43.541],[27.817,43.527],[27.784,43.53],[27.78,43.543]]]}},{"type":"Feature","properties":{"name":"Долна баня","id":222,"pid":38,"pop":4522,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.726,42.216],[23.728,42.28],[23.72,42.302],[23.73,42.318],[23.722,42.324],[23.72,42.331],[23.729,42.343],[23.745,42.343],[23.761,42.336],[23.786,42.339],[23.791,42.335],[23.79,42.308],[23.793,42.302],[23.824,42.298],[23.826,42.288],[23.821,42.281],[23.803,42.272],[23.78,42.25],[23.764,42.245],[23.747,42.223],[23.726,42.216]]]}},{"type":"Feature","properties":{"name":"Долна Митрополия","id":172,"pid":18,"pop":20064,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[24.454,43.732],[24.455,43.715],[24.441,43.698],[24.435,43.683],[24.445,43.657],[24.45,43.653],[24.478,43.646],[24.509,43.594],[24.517,43.591],[24.528,43.593],[24.553,43.611],[24.606,43.616],[24.618,43.62],[24.651,43.616],[24.675,43.598],[24.689,43.57],[24.688,43.546],[24.699,43.534],[24.69,43.528],[24.686,43.521],[24.703,43.498],[24.7,43.485],[24.692,43.48],[24.677,43.476],[24.659,43.477],[24.635,43.471],[24.598,43.485],[24.57,43.473],[24.553,43.481],[24.548,43.455],[24.538,43.453],[24.507,43.455],[24.494,43.451],[24.486,43.443],[24.455,43.454],[24.436,43.458],[24.365,43.457],[24.348,43.46],[24.337,43.468],[24.334,43.478],[24.35,43.532],[24.35,43.545],[24.341,43.559],[24.315,43.564],[24.32,43.571],[24.334,43.583],[24.325,43.588],[24.317,43.598],[24.314,43.597],[24.308,43.584],[24.282,43.572],[24.264,43.573],[24.246,43.567],[24.211,43.566],[24.187,43.56],[24.146,43.592],[24.144,43.601],[24.147,43.606],[24.169,43.604],[24.186,43.614],[24.207,43.648],[24.217,43.656],[24.228,43.655],[24.256,43.637],[24.261,43.653],[24.267,43.655],[24.282,43.643],[24.292,43.644],[24.322,43.704],[24.345,43.702],[24.363,43.707],[24.418,43.727],[24.445,43.744],[24.454,43.732]]]}},{"type":"Feature","properties":{"name":"Долни чифлик","id":225,"pid":4,"pop":19360,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.897,43.035],[27.899,42.991],[27.905,42.964],[27.88,42.959],[27.861,42.964],[27.843,42.948],[27.825,42.94],[27.818,42.942],[27.793,42.937],[27.777,42.925],[27.764,42.92],[27.745,42.921],[27.724,42.916],[27.713,42.898],[27.625,42.91],[27.603,42.91],[27.574,42.907],[27.549,42.894],[27.536,42.893],[27.527,42.903],[27.521,42.904],[27.483,42.9],[27.468,42.902],[27.444,42.914],[27.422,42.932],[27.44,42.936],[27.496,42.936],[27.506,42.938],[27.514,42.945],[27.508,42.966],[27.508,43.001],[27.491,43.009],[27.485,43.017],[27.508,43.049],[27.49,43.073],[27.501,43.087],[27.507,43.085],[27.525,43.087],[27.55,43.081],[27.547,43.075],[27.549,43.07],[27.563,43.065],[27.577,43.07],[27.59,43.051],[27.603,43.046],[27.61,43.049],[27.607,43.06],[27.611,43.064],[27.621,43.064],[27.634,43.059],[27.645,43.061],[27.652,43.085],[27.663,43.099],[27.671,43.101],[27.677,43.099],[27.712,43.064],[27.714,43.054],[27.71,43.042],[27.716,43.036],[27.729,43.036],[27.738,43.031],[27.753,43.03],[27.82,43.042],[27.837,43.037],[27.846,43.022],[27.853,43.019],[27.883,43.034],[27.897,43.035]]]}},{"type":"Feature","properties":{"name":"Долни Дъбник","id":205,"pid":18,"pop":11670,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[24.486,43.443],[24.492,43.416],[24.489,43.405],[24.465,43.395],[24.461,43.389],[24.469,43.383],[24.511,43.368],[24.536,43.35],[24.556,43.346],[24.559,43.34],[24.558,43.332],[24.547,43.309],[24.519,43.292],[24.49,43.289],[24.49,43.286],[24.505,43.279],[24.504,43.273],[24.5,43.27],[24.481,43.273],[24.467,43.285],[24.451,43.291],[24.432,43.288],[24.412,43.279],[24.397,43.288],[24.386,43.289],[24.37,43.289],[24.329,43.279],[24.305,43.295],[24.306,43.346],[24.298,43.354],[24.273,43.367],[24.273,43.372],[24.274,43.377],[24.29,43.382],[24.296,43.387],[24.307,43.41],[24.331,43.423],[24.331,43.44],[24.341,43.459],[24.345,43.461],[24.365,43.457],[24.436,43.458],[24.455,43.454],[24.486,43.443]]]}},{"type":"Feature","properties":{"name":"Доспат","id":259,"pid":23,"pop":9116,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[24.222,41.737],[24.226,41.706],[24.233,41.694],[24.234,41.681],[24.268,41.672],[24.273,41.667],[24.261,41.648],[24.271,41.617],[24.263,41.574],[24.241,41.563],[24.24,41.557],[24.229,41.547],[24.212,41.552],[24.208,41.549],[24.21,41.544],[24.189,41.532],[24.193,41.523],[24.186,41.516],[24.172,41.517],[24.175,41.522],[24.161,41.529],[24.16,41.537],[24.15,41.539],[24.134,41.534],[24.131,41.541],[24.12,41.539],[24.107,41.543],[24.101,41.551],[24.078,41.541],[24.074,41.535],[24.073,41.556],[24.093,41.591],[24.086,41.617],[24.112,41.638],[24.115,41.644],[24.113,41.659],[24.092,41.67],[24.101,41.69],[24.119,41.711],[24.117,41.729],[24.184,41.734],[24.205,41.741],[24.222,41.737]]]}},{"type":"Feature","properties":{"name":"Драгоман","id":55,"pid":38,"pop":5362,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[22.907,43.036],[22.925,43.034],[22.941,43.028],[22.946,43.023],[22.955,42.985],[22.964,42.977],[22.981,42.97],[23.01,42.966],[23.04,42.967],[23.075,42.969],[23.117,42.975],[23.137,42.955],[23.131,42.934],[23.133,42.913],[23.126,42.909],[23.105,42.912],[23.012,42.906],[22.978,42.915],[22.962,42.903],[22.939,42.902],[22.932,42.899],[22.918,42.881],[22.9,42.874],[22.887,42.86],[22.878,42.858],[22.868,42.864],[22.837,42.857],[22.795,42.862],[22.787,42.885],[22.759,42.898],[22.781,42.927],[22.772,42.943],[22.786,42.947],[22.788,42.979],[22.842,42.996],[22.863,43.023],[22.897,43.038],[22.907,43.036]]]}},{"type":"Feature","properties":{"name":"Дряново","id":61,"pid":60,"pop":9685,"oblast":"Габрово"},"geometry":{"type":"Polygon","coordinates":[[[25.593,42.906],[25.579,42.899],[25.565,42.898],[25.51,42.901],[25.496,42.892],[25.487,42.882],[25.474,42.895],[25.459,42.947],[25.452,42.958],[25.437,42.963],[25.423,42.962],[25.404,42.957],[25.365,42.958],[25.346,42.963],[25.325,42.977],[25.308,43.021],[25.309,43.027],[25.332,43.051],[25.343,43.046],[25.403,43.049],[25.415,43.047],[25.429,43.033],[25.444,43.033],[25.471,43.039],[25.494,43.04],[25.505,43.03],[25.513,43.028],[25.541,43.031],[25.566,43.012],[25.608,43.009],[25.619,42.994],[25.614,42.976],[25.574,42.953],[25.579,42.935],[25.572,42.924],[25.593,42.906]]]}},{"type":"Feature","properties":{"name":"Дулово","id":150,"pid":33,"pop":28282,"oblast":"Силистра"},"geometry":{"type":"Polygon","coordinates":[[[27.096,43.938],[27.112,43.935],[27.119,43.93],[27.13,43.907],[27.137,43.903],[27.151,43.904],[27.165,43.913],[27.185,43.919],[27.211,43.907],[27.239,43.9],[27.246,43.893],[27.246,43.865],[27.251,43.86],[27.264,43.85],[27.334,43.82],[27.283,43.773],[27.247,43.764],[27.235,43.754],[27.231,43.724],[27.265,43.701],[27.268,43.691],[27.26,43.681],[27.23,43.68],[27.167,43.686],[27.141,43.705],[27.123,43.731],[27.107,43.738],[27.079,43.737],[27.047,43.723],[27.017,43.719],[27.003,43.725],[26.992,43.733],[26.982,43.759],[26.972,43.761],[26.956,43.759],[26.933,43.765],[26.927,43.771],[26.924,43.799],[26.954,43.819],[26.973,43.827],[26.988,43.842],[26.985,43.85],[26.974,43.858],[26.922,43.859],[26.913,43.884],[26.927,43.901],[26.936,43.902],[26.949,43.89],[26.949,43.882],[26.938,43.88],[26.941,43.871],[26.959,43.878],[26.978,43.878],[26.987,43.886],[26.988,43.908],[26.992,43.914],[26.999,43.914],[27.008,43.909],[27.034,43.915],[27.053,43.94],[27.063,43.946],[27.078,43.945],[27.09,43.938],[27.096,43.938]]]}},{"type":"Feature","properties":{"name":"Дупница","id":112,"pid":97,"pop":44988,"oblast":"Кюстендил"},"geometry":{"type":"Polygon","coordinates":[[[23.134,42.409],[23.141,42.406],[23.148,42.385],[23.161,42.375],[23.186,42.371],[23.213,42.361],[23.235,42.365],[23.249,42.372],[23.273,42.362],[23.263,42.325],[23.256,42.315],[23.235,42.306],[23.199,42.301],[23.192,42.293],[23.192,42.283],[23.199,42.271],[23.22,42.254],[23.253,42.238],[23.282,42.232],[23.32,42.209],[23.341,42.202],[23.293,42.19],[23.262,42.193],[23.242,42.186],[23.22,42.183],[23.202,42.187],[23.174,42.199],[23.111,42.196],[23.096,42.2],[23.078,42.217],[23.051,42.22],[23.051,42.225],[23.059,42.236],[23.057,42.24],[23.046,42.243],[23.028,42.244],[23.027,42.268],[23.039,42.276],[23.067,42.273],[23.086,42.274],[23.103,42.283],[23.104,42.287],[23.1,42.3],[23.072,42.338],[23.067,42.352],[23.055,42.372],[23.052,42.389],[23.102,42.381],[23.123,42.405],[23.134,42.409]]]}},{"type":"Feature","properties":{"name":"Две могили","id":206,"pid":65,"pop":9442,"oblast":"Русе"},"geometry":{"type":"Polygon","coordinates":[[[26.068,43.587],[26.069,43.582],[26.087,43.575],[26.1,43.567],[26.11,43.547],[26.125,43.531],[26.053,43.518],[26.044,43.502],[26.043,43.476],[26.015,43.447],[26.005,43.427],[25.987,43.416],[25.96,43.409],[25.936,43.429],[25.921,43.438],[25.896,43.444],[25.881,43.452],[25.875,43.461],[25.88,43.482],[25.865,43.493],[25.844,43.541],[25.846,43.553],[25.854,43.564],[25.853,43.579],[25.858,43.599],[25.873,43.623],[25.869,43.642],[25.892,43.64],[25.922,43.644],[25.932,43.637],[25.946,43.635],[25.952,43.622],[25.975,43.606],[25.975,43.593],[26.006,43.58],[26.04,43.578],[26.068,43.587]]]}},{"type":"Feature","properties":{"name":"Джебел","id":257,"pid":8,"pop":8167,"oblast":"Кърджали"},"geometry":{"type":"Polygon","coordinates":[[[25.362,41.554],[25.36,41.543],[25.362,41.54],[25.387,41.534],[25.372,41.513],[25.38,41.488],[25.375,41.472],[25.377,41.458],[25.371,41.448],[25.359,41.446],[25.337,41.452],[25.326,41.452],[25.317,41.446],[25.31,41.434],[25.296,41.431],[25.273,41.432],[25.253,41.441],[25.24,41.433],[25.221,41.431],[25.221,41.426],[25.236,41.422],[25.238,41.419],[25.214,41.415],[25.17,41.4],[25.159,41.397],[25.152,41.4],[25.153,41.404],[25.184,41.417],[25.192,41.425],[25.192,41.431],[25.188,41.433],[25.164,41.433],[25.159,41.437],[25.175,41.446],[25.18,41.453],[25.187,41.455],[25.188,41.477],[25.195,41.483],[25.194,41.494],[25.21,41.508],[25.229,41.51],[25.234,41.513],[25.235,41.528],[25.241,41.537],[25.251,41.542],[25.267,41.538],[25.278,41.539],[25.283,41.547],[25.282,41.563],[25.294,41.555],[25.309,41.551],[25.348,41.556],[25.362,41.554]]]}},{"type":"Feature","properties":{"name":"Елена","id":105,"pid":81,"pop":9434,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[26.117,42.987],[26.15,42.983],[26.189,42.964],[26.2,42.95],[26.162,42.912],[26.132,42.902],[26.116,42.892],[26.08,42.879],[26.076,42.87],[26.087,42.853],[26.085,42.843],[26.06,42.831],[26.041,42.825],[26.014,42.806],[25.996,42.787],[25.964,42.783],[25.901,42.766],[25.882,42.768],[25.832,42.783],[25.808,42.777],[25.777,42.783],[25.736,42.774],[25.737,42.787],[25.762,42.819],[25.765,42.835],[25.782,42.84],[25.787,42.847],[25.78,42.853],[25.756,42.863],[25.75,42.873],[25.75,42.885],[25.759,42.897],[25.756,42.914],[25.747,42.915],[25.731,42.911],[25.724,42.917],[25.727,42.923],[25.746,42.927],[25.738,42.941],[25.747,42.96],[25.763,42.961],[25.793,42.958],[25.807,42.962],[25.828,42.961],[25.84,42.956],[25.851,42.956],[25.881,42.968],[25.901,42.991],[25.915,42.992],[25.939,42.987],[25.96,42.991],[25.982,43.002],[26.005,43.022],[26.016,43.026],[26.028,43.023],[26.05,42.996],[26.059,42.99],[26.075,42.987],[26.117,42.987]]]}},{"type":"Feature","properties":{"name":"Елхово","id":99,"pid":71,"pop":16219,"oblast":"Ямбол"},"geometry":{"type":"Polygon","coordinates":[[[26.771,42.286],[26.754,42.264],[26.749,42.247],[26.721,42.23],[26.711,42.219],[26.71,42.211],[26.719,42.19],[26.706,42.179],[26.703,42.17],[26.721,42.14],[26.738,42.132],[26.742,42.119],[26.743,42.106],[26.738,42.094],[26.737,42.08],[26.737,42.072],[26.746,42.061],[26.743,42.026],[26.746,42.022],[26.766,42.017],[26.782,42.02],[26.792,42.018],[26.79,41.987],[26.759,41.962],[26.749,41.967],[26.732,41.965],[26.722,41.969],[26.671,41.972],[26.628,41.981],[26.62,41.966],[26.595,41.954],[26.58,41.944],[26.574,41.946],[26.56,41.939],[26.549,41.955],[26.526,41.97],[26.526,41.984],[26.512,41.995],[26.51,42.011],[26.492,42.022],[26.498,42.033],[26.519,42.037],[26.521,42.039],[26.523,42.056],[26.513,42.073],[26.509,42.093],[26.537,42.144],[26.511,42.145],[26.494,42.166],[26.459,42.157],[26.446,42.16],[26.429,42.171],[26.423,42.172],[26.398,42.163],[26.384,42.166],[26.374,42.175],[26.383,42.198],[26.381,42.221],[26.411,42.239],[26.445,42.23],[26.465,42.236],[26.486,42.231],[26.509,42.239],[26.539,42.234],[26.546,42.237],[26.552,42.244],[26.587,42.257],[26.59,42.264],[26.586,42.28],[26.591,42.285],[26.605,42.29],[26.63,42.294],[26.655,42.307],[26.674,42.313],[26.685,42.313],[26.693,42.309],[26.702,42.308],[26.722,42.318],[26.754,42.322],[26.771,42.286]]]}},{"type":"Feature","properties":{"name":"Елин Пелин","id":118,"pid":38,"pop":22841,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.698,42.831],[23.723,42.829],[23.757,42.814],[23.792,42.804],[23.823,42.804],[23.813,42.795],[23.806,42.78],[23.755,42.77],[23.724,42.746],[23.718,42.737],[23.712,42.705],[23.706,42.699],[23.685,42.69],[23.677,42.682],[23.676,42.655],[23.682,42.653],[23.71,42.661],[23.718,42.659],[23.742,42.636],[23.765,42.625],[23.782,42.63],[23.796,42.65],[23.802,42.653],[23.83,42.641],[23.844,42.639],[23.861,42.626],[23.874,42.627],[23.89,42.635],[23.901,42.633],[23.907,42.63],[23.908,42.622],[23.901,42.606],[23.904,42.594],[23.895,42.586],[23.899,42.577],[23.886,42.554],[23.878,42.555],[23.838,42.567],[23.825,42.577],[23.816,42.594],[23.809,42.601],[23.791,42.603],[23.739,42.604],[23.722,42.608],[23.708,42.608],[23.668,42.596],[23.665,42.588],[23.667,42.574],[23.661,42.562],[23.636,42.541],[23.631,42.524],[23.623,42.515],[23.595,42.514],[23.56,42.538],[23.56,42.545],[23.572,42.561],[23.57,42.58],[23.575,42.616],[23.567,42.627],[23.54,42.63],[23.529,42.636],[23.535,42.668],[23.54,42.672],[23.574,42.681],[23.59,42.701],[23.622,42.707],[23.634,42.713],[23.641,42.747],[23.655,42.77],[23.655,42.785],[23.662,42.804],[23.657,42.83],[23.698,42.831]]]}},{"type":"Feature","properties":{"name":"Етрополе","id":126,"pid":38,"pop":12047,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[24.15,42.786],[24.135,42.786],[24.122,42.781],[24.101,42.762],[24.079,42.753],[24.064,42.75],[24.025,42.753],[23.952,42.78],[23.934,42.792],[23.92,42.795],[23.892,42.823],[23.879,42.829],[23.87,42.828],[23.875,42.855],[23.888,42.874],[23.929,42.877],[23.952,42.887],[23.992,42.897],[24.017,42.909],[24.033,42.921],[24.059,42.933],[24.073,42.945],[24.086,42.95],[24.102,42.966],[24.125,42.947],[24.165,42.941],[24.17,42.937],[24.168,42.934],[24.146,42.926],[24.144,42.915],[24.151,42.901],[24.173,42.893],[24.177,42.889],[24.176,42.878],[24.167,42.869],[24.168,42.851],[24.173,42.846],[24.188,42.839],[24.189,42.834],[24.188,42.829],[24.179,42.82],[24.181,42.804],[24.16,42.797],[24.15,42.786]]]}},{"type":"Feature","properties":{"name":"Габрово","id":282,"pid":60,"pop":65268,"oblast":"Габрово"},"geometry":{"type":"Polygon","coordinates":[[[25.324,42.98],[25.346,42.963],[25.354,42.96],[25.404,42.957],[25.423,42.962],[25.44,42.963],[25.452,42.958],[25.459,42.947],[25.474,42.895],[25.487,42.882],[25.482,42.869],[25.441,42.827],[25.434,42.812],[25.438,42.8],[25.448,42.794],[25.455,42.784],[25.459,42.758],[25.453,42.755],[25.464,42.728],[25.463,42.722],[25.457,42.718],[25.334,42.74],[25.316,42.741],[25.287,42.737],[25.247,42.754],[25.222,42.768],[25.225,42.799],[25.211,42.812],[25.211,42.825],[25.195,42.838],[25.192,42.851],[25.163,42.853],[25.155,42.86],[25.154,42.882],[25.149,42.897],[25.155,42.926],[25.16,42.93],[25.181,42.926],[25.185,42.929],[25.18,42.945],[25.166,42.964],[25.17,42.968],[25.181,42.971],[25.202,42.984],[25.216,42.979],[25.232,42.978],[25.243,42.972],[25.27,42.967],[25.285,42.968],[25.311,42.978],[25.324,42.98]]]}},{"type":"Feature","properties":{"name":"Гълъбово","id":175,"pid":113,"pop":13394,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[26.15,42.156],[26.145,42.148],[26.144,42.122],[26.16,42.092],[26.163,42.042],[26.136,42.038],[26.119,42.03],[26.101,42.03],[26.084,42.013],[26.071,42.01],[26.044,42.023],[26.028,42.049],[26.004,42.075],[25.985,42.088],[25.949,42.09],[25.92,42.108],[25.893,42.103],[25.877,42.111],[25.868,42.11],[25.856,42.097],[25.854,42.082],[25.845,42.065],[25.821,42.06],[25.806,42.088],[25.802,42.12],[25.784,42.141],[25.783,42.16],[25.77,42.181],[25.768,42.192],[25.771,42.199],[25.777,42.203],[25.788,42.204],[25.8,42.2],[25.811,42.193],[25.819,42.192],[25.833,42.201],[25.846,42.204],[25.843,42.221],[25.861,42.222],[25.871,42.213],[25.886,42.206],[25.894,42.185],[25.904,42.179],[25.928,42.18],[25.963,42.175],[25.978,42.172],[26.001,42.158],[26.012,42.155],[26.029,42.158],[26.063,42.152],[26.1,42.168],[26.11,42.162],[26.124,42.163],[26.15,42.156]]]}},{"type":"Feature","properties":{"name":"Гърмен","id":139,"pid":56,"pop":14981,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.998,41.731],[23.968,41.727],[23.924,41.702],[23.928,41.654],[23.922,41.641],[23.906,41.625],[23.9,41.614],[23.907,41.608],[23.927,41.606],[23.932,41.601],[23.925,41.589],[23.919,41.585],[23.923,41.575],[23.908,41.562],[23.88,41.558],[23.861,41.55],[23.851,41.549],[23.834,41.564],[23.836,41.568],[23.831,41.571],[23.802,41.581],[23.787,41.593],[23.768,41.6],[23.755,41.643],[23.761,41.653],[23.755,41.673],[23.753,41.7],[23.736,41.734],[23.735,41.746],[23.767,41.777],[23.794,41.786],[23.805,41.793],[23.82,41.798],[23.832,41.826],[23.865,41.811],[23.894,41.805],[23.912,41.796],[23.969,41.759],[23.99,41.751],[23.998,41.731]]]}},{"type":"Feature","properties":{"name":"Генерал Тошево","id":171,"pid":26,"pop":15097,"oblast":"Добрич"},"geometry":{"type":"Polygon","coordinates":[[[27.928,44.008],[27.938,44.001],[27.944,43.991],[27.951,43.961],[27.983,43.902],[27.996,43.86],[28.006,43.851],[28.159,43.797],[28.241,43.774],[28.361,43.757],[28.419,43.742],[28.477,43.735],[28.436,43.717],[28.435,43.697],[28.404,43.679],[28.4,43.672],[28.379,43.671],[28.359,43.66],[28.336,43.667],[28.323,43.666],[28.325,43.643],[28.314,43.635],[28.288,43.629],[28.268,43.641],[28.248,43.643],[28.245,43.639],[28.254,43.625],[28.236,43.614],[28.234,43.609],[28.239,43.598],[28.255,43.582],[28.253,43.572],[28.242,43.564],[28.227,43.563],[28.218,43.566],[28.199,43.587],[28.193,43.586],[28.185,43.568],[28.181,43.567],[28.168,43.573],[28.16,43.572],[28.127,43.605],[28.115,43.608],[28.099,43.604],[28.083,43.606],[28.062,43.638],[28.047,43.648],[28.024,43.652],[27.993,43.647],[27.98,43.649],[27.955,43.663],[27.951,43.684],[27.908,43.695],[27.892,43.708],[27.878,43.711],[27.874,43.719],[27.872,43.742],[27.852,43.761],[27.837,43.792],[27.808,43.806],[27.807,43.815],[27.814,43.822],[27.82,43.839],[27.833,43.846],[27.837,43.852],[27.857,43.86],[27.861,43.876],[27.876,43.893],[27.877,43.909],[27.872,43.927],[27.858,43.94],[27.845,43.97],[27.903,44.007],[27.915,44.01],[27.928,44.008]]]}},{"type":"Feature","properties":{"name":"Георги Дамяново","id":73,"pid":15,"pop":2771,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.136,43.392],[23.082,43.383],[23.067,43.371],[23.056,43.366],[23.052,43.348],[23.037,43.336],[23.048,43.29],[23.042,43.282],[23.027,43.273],[23.023,43.259],[23.029,43.243],[23.03,43.215],[23.035,43.206],[23.022,43.202],[22.987,43.199],[22.959,43.207],[22.94,43.202],[22.918,43.219],[22.897,43.224],[22.869,43.254],[22.868,43.267],[22.862,43.273],[22.848,43.275],[22.843,43.285],[22.845,43.296],[22.831,43.308],[22.825,43.331],[22.863,43.354],[22.906,43.361],[22.945,43.38],[22.966,43.385],[22.981,43.394],[23.004,43.402],[23.022,43.413],[23.046,43.422],[23.044,43.427],[23.026,43.439],[23.015,43.462],[22.999,43.472],[23.006,43.488],[23.03,43.509],[23.042,43.512],[23.05,43.509],[23.065,43.471],[23.088,43.461],[23.113,43.435],[23.128,43.429],[23.164,43.422],[23.161,43.412],[23.136,43.392]]]}},{"type":"Feature","properties":{"name":"Главиница","id":34,"pid":33,"pop":10930,"oblast":"Силистра"},"geometry":{"type":"Polygon","coordinates":[[[26.945,43.969],[26.963,43.968],[26.969,43.963],[26.973,43.954],[26.973,43.944],[26.967,43.935],[26.943,43.914],[26.938,43.901],[26.927,43.901],[26.914,43.888],[26.921,43.86],[26.925,43.857],[26.937,43.86],[26.948,43.857],[26.974,43.858],[26.985,43.85],[26.988,43.842],[26.973,43.827],[26.954,43.819],[26.924,43.799],[26.892,43.811],[26.878,43.819],[26.857,43.853],[26.845,43.852],[26.827,43.835],[26.811,43.842],[26.799,43.833],[26.787,43.831],[26.779,43.846],[26.773,43.851],[26.745,43.851],[26.73,43.86],[26.71,43.861],[26.696,43.87],[26.676,43.878],[26.723,43.915],[26.732,43.924],[26.744,43.948],[26.777,43.973],[26.777,43.981],[26.769,43.993],[26.769,44.003],[26.761,44.014],[26.773,44.03],[26.769,44.074],[26.763,44.087],[26.783,44.093],[26.86,44.127],[26.874,44.083],[26.886,44.07],[26.922,44.051],[26.924,44.011],[26.931,44],[26.946,43.99],[26.945,43.982],[26.937,43.973],[26.945,43.969]]]}},{"type":"Feature","properties":{"name":"Годеч","id":116,"pid":38,"pop":5375,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.162,43.114],[23.236,43.115],[23.255,43.101],[23.253,43.085],[23.236,43.071],[23.211,43.057],[23.205,43.048],[23.202,43.021],[23.179,43.029],[23.143,43.026],[23.14,43.016],[23.146,42.993],[23.131,42.981],[23.115,42.975],[23.075,42.969],[23.04,42.967],[23.01,42.966],[22.981,42.97],[22.964,42.977],[22.955,42.985],[22.946,43.023],[22.941,43.028],[22.925,43.034],[22.897,43.038],[22.898,43.049],[22.907,43.055],[22.917,43.08],[22.931,43.088],[22.95,43.092],[22.982,43.112],[22.984,43.122],[22.994,43.137],[22.995,43.156],[22.994,43.162],[22.985,43.166],[23.005,43.187],[23.004,43.192],[22.987,43.199],[23.022,43.202],[23.04,43.207],[23.05,43.204],[23.068,43.179],[23.109,43.16],[23.125,43.133],[23.135,43.122],[23.148,43.116],[23.162,43.114]]]}},{"type":"Feature","properties":{"name":"Горна Малина","id":232,"pid":38,"pop":6209,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.92,42.795],[23.923,42.776],[23.91,42.739],[23.906,42.709],[23.9,42.694],[23.883,42.672],[23.886,42.667],[23.898,42.66],[23.898,42.655],[23.886,42.641],[23.886,42.634],[23.874,42.627],[23.861,42.626],[23.844,42.639],[23.83,42.641],[23.802,42.653],[23.796,42.65],[23.782,42.63],[23.765,42.625],[23.742,42.636],[23.718,42.659],[23.71,42.661],[23.682,42.653],[23.676,42.655],[23.677,42.682],[23.71,42.703],[23.72,42.742],[23.753,42.769],[23.806,42.78],[23.819,42.801],[23.856,42.823],[23.87,42.828],[23.879,42.829],[23.892,42.823],[23.92,42.795]]]}},{"type":"Feature","properties":{"name":"Горна Оряховица","id":82,"pid":81,"pop":46685,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[25.899,43.187],[25.882,43.172],[25.846,43.159],[25.817,43.13],[25.802,43.127],[25.783,43.137],[25.768,43.137],[25.749,43.128],[25.724,43.105],[25.71,43.105],[25.685,43.113],[25.656,43.118],[25.646,43.123],[25.643,43.128],[25.643,43.146],[25.636,43.165],[25.622,43.182],[25.62,43.193],[25.63,43.211],[25.65,43.232],[25.653,43.259],[25.658,43.255],[25.668,43.254],[25.71,43.264],[25.738,43.267],[25.746,43.272],[25.755,43.305],[25.798,43.326],[25.819,43.311],[25.824,43.301],[25.82,43.293],[25.794,43.28],[25.794,43.276],[25.805,43.276],[25.801,43.255],[25.811,43.242],[25.819,43.237],[25.836,43.238],[25.864,43.249],[25.885,43.241],[25.905,43.238],[25.904,43.228],[25.891,43.208],[25.899,43.187]]]}},{"type":"Feature","properties":{"name":"Гоце Делчев","id":138,"pid":56,"pop":31236,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.834,41.564],[23.822,41.558],[23.803,41.562],[23.802,41.551],[23.79,41.553],[23.741,41.551],[23.726,41.532],[23.719,41.529],[23.706,41.53],[23.697,41.535],[23.681,41.534],[23.659,41.522],[23.649,41.506],[23.61,41.603],[23.567,41.643],[23.54,41.662],[23.525,41.682],[23.521,41.699],[23.633,41.72],[23.697,41.716],[23.697,41.723],[23.69,41.731],[23.692,41.737],[23.735,41.746],[23.736,41.734],[23.753,41.7],[23.755,41.673],[23.761,41.653],[23.755,41.643],[23.766,41.602],[23.787,41.593],[23.802,41.581],[23.831,41.571],[23.836,41.568],[23.834,41.564]]]}},{"type":"Feature","properties":{"name":"Грамада","id":322,"pid":46,"pop":2007,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.721,43.917],[22.728,43.897],[22.72,43.887],[22.719,43.881],[22.724,43.874],[22.751,43.872],[22.755,43.869],[22.762,43.852],[22.758,43.833],[22.763,43.822],[22.765,43.806],[22.744,43.799],[22.721,43.806],[22.644,43.799],[22.61,43.788],[22.573,43.809],[22.523,43.805],[22.504,43.81],[22.514,43.817],[22.521,43.832],[22.536,43.84],[22.535,43.845],[22.53,43.849],[22.532,43.854],[22.552,43.856],[22.576,43.848],[22.59,43.847],[22.609,43.857],[22.622,43.882],[22.613,43.894],[22.615,43.896],[22.664,43.914],[22.681,43.916],[22.701,43.93],[22.713,43.93],[22.721,43.917]]]}},{"type":"Feature","properties":{"name":"Гулянци","id":233,"pid":18,"pop":12336,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[24.583,43.762],[24.631,43.75],[24.669,43.73],[24.71,43.719],[24.747,43.716],[24.781,43.721],[24.82,43.722],[24.819,43.697],[24.826,43.674],[24.815,43.658],[24.808,43.639],[24.819,43.617],[24.815,43.583],[24.821,43.576],[24.812,43.575],[24.785,43.563],[24.76,43.564],[24.718,43.557],[24.707,43.54],[24.699,43.534],[24.688,43.546],[24.689,43.57],[24.678,43.592],[24.651,43.616],[24.618,43.62],[24.606,43.616],[24.562,43.612],[24.548,43.609],[24.528,43.593],[24.517,43.591],[24.509,43.594],[24.478,43.646],[24.45,43.653],[24.445,43.657],[24.435,43.683],[24.441,43.698],[24.453,43.71],[24.457,43.726],[24.445,43.744],[24.477,43.758],[24.51,43.768],[24.529,43.769],[24.583,43.762]]]}},{"type":"Feature","properties":{"name":"Гурково","id":158,"pid":113,"pop":5127,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.8,42.778],[25.81,42.777],[25.832,42.783],[25.844,42.78],[25.839,42.772],[25.839,42.755],[25.855,42.696],[25.873,42.674],[25.881,42.621],[25.896,42.596],[25.913,42.586],[25.92,42.577],[25.919,42.568],[25.914,42.564],[25.871,42.548],[25.862,42.551],[25.862,42.571],[25.853,42.596],[25.85,42.618],[25.835,42.634],[25.805,42.635],[25.794,42.644],[25.768,42.644],[25.758,42.636],[25.758,42.625],[25.733,42.625],[25.722,42.636],[25.704,42.683],[25.653,42.711],[25.652,42.727],[25.667,42.733],[25.675,42.746],[25.712,42.764],[25.736,42.774],[25.773,42.783],[25.781,42.783],[25.8,42.778]]]}},{"type":"Feature","properties":{"name":"Хаджидимово","id":251,"pid":56,"pop":10091,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[24.023,41.474],[24.022,41.467],[24.015,41.466],[24.008,41.457],[24.003,41.454],[23.996,41.455],[23.994,41.449],[23.971,41.437],[23.952,41.448],[23.942,41.449],[23.941,41.461],[23.933,41.463],[23.932,41.47],[23.915,41.481],[23.909,41.478],[23.906,41.456],[23.891,41.45],[23.881,41.454],[23.869,41.448],[23.857,41.449],[23.851,41.439],[23.844,41.441],[23.823,41.436],[23.809,41.438],[23.801,41.437],[23.79,41.423],[23.789,41.417],[23.783,41.414],[23.769,41.396],[23.757,41.403],[23.746,41.403],[23.73,41.408],[23.692,41.404],[23.674,41.41],[23.658,41.399],[23.664,41.408],[23.659,41.425],[23.663,41.441],[23.663,41.476],[23.649,41.506],[23.669,41.529],[23.691,41.536],[23.71,41.529],[23.723,41.53],[23.738,41.55],[23.745,41.552],[23.768,41.55],[23.79,41.553],[23.802,41.551],[23.803,41.562],[23.822,41.558],[23.834,41.564],[23.851,41.549],[23.857,41.549],[23.88,41.558],[23.908,41.562],[23.924,41.576],[23.95,41.564],[23.958,41.548],[23.961,41.532],[23.953,41.517],[23.956,41.505],[23.972,41.494],[24.023,41.474]]]}},{"type":"Feature","properties":{"name":"Харманли","id":151,"pid":28,"pop":24947,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[26.266,42.011],[26.263,41.999],[26.257,41.991],[26.227,41.978],[26.208,41.96],[26.165,41.939],[26.143,41.916],[26.128,41.91],[26.101,41.912],[26.095,41.909],[26.078,41.887],[26.069,41.885],[26.048,41.888],[26.044,41.86],[26.038,41.85],[26.008,41.842],[25.973,41.842],[25.968,41.838],[25.969,41.829],[25.979,41.811],[25.956,41.785],[25.961,41.763],[25.961,41.759],[25.958,41.757],[25.922,41.752],[25.895,41.737],[25.871,41.737],[25.852,41.731],[25.829,41.735],[25.827,41.747],[25.815,41.757],[25.807,41.775],[25.776,41.779],[25.75,41.793],[25.752,41.818],[25.765,41.827],[25.788,41.828],[25.819,41.815],[25.83,41.815],[25.838,41.818],[25.856,41.859],[25.851,41.871],[25.823,41.888],[25.827,41.906],[25.818,41.924],[25.819,41.936],[25.797,41.947],[25.786,41.965],[25.799,41.972],[25.826,41.976],[25.857,41.972],[25.876,41.973],[25.907,41.999],[25.919,42.002],[25.945,42],[25.955,42.003],[25.973,42.012],[25.997,42.032],[26.011,42.022],[26.022,42.026],[26.041,42.026],[26.064,42.011],[26.073,42.01],[26.084,42.013],[26.101,42.03],[26.119,42.03],[26.136,42.038],[26.163,42.042],[26.179,42.025],[26.214,42.01],[26.226,42.008],[26.266,42.011]]]}},{"type":"Feature","properties":{"name":"Хасково","id":299,"pid":28,"pop":94156,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[25.781,42.002],[25.775,41.995],[25.776,41.98],[25.768,41.96],[25.775,41.959],[25.786,41.965],[25.797,41.947],[25.818,41.938],[25.818,41.924],[25.827,41.906],[25.823,41.888],[25.851,41.871],[25.856,41.863],[25.838,41.818],[25.83,41.815],[25.819,41.815],[25.789,41.828],[25.77,41.828],[25.759,41.825],[25.75,41.812],[25.697,41.801],[25.682,41.806],[25.664,41.829],[25.654,41.832],[25.647,41.83],[25.629,41.806],[25.591,41.784],[25.585,41.774],[25.585,41.753],[25.545,41.742],[25.536,41.743],[25.519,41.754],[25.481,41.765],[25.458,41.78],[25.427,41.783],[25.423,41.787],[25.412,41.801],[25.405,41.829],[25.39,41.837],[25.393,41.847],[25.416,41.853],[25.429,41.862],[25.437,41.882],[25.459,41.914],[25.46,41.925],[25.454,41.934],[25.435,41.945],[25.43,41.952],[25.432,41.972],[25.452,41.98],[25.476,41.981],[25.491,41.989],[25.515,41.983],[25.536,41.986],[25.555,41.974],[25.565,41.982],[25.571,41.982],[25.63,41.974],[25.648,41.979],[25.665,41.977],[25.683,41.982],[25.708,41.996],[25.722,42.012],[25.734,42.017],[25.781,42.002]]]}},{"type":"Feature","properties":{"name":"Хайредин","id":173,"pid":49,"pop":5001,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[23.694,43.638],[23.69,43.631],[23.691,43.622],[23.701,43.618],[23.717,43.618],[23.726,43.612],[23.764,43.604],[23.769,43.592],[23.766,43.583],[23.776,43.577],[23.766,43.541],[23.75,43.535],[23.744,43.515],[23.72,43.508],[23.705,43.51],[23.661,43.527],[23.633,43.53],[23.634,43.539],[23.622,43.551],[23.563,43.588],[23.555,43.598],[23.559,43.61],[23.591,43.641],[23.597,43.681],[23.61,43.689],[23.621,43.681],[23.647,43.679],[23.662,43.659],[23.685,43.659],[23.691,43.655],[23.694,43.638]]]}},{"type":"Feature","properties":{"name":"Хисаря","id":76,"pid":53,"pop":12600,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.647,42.57],[24.665,42.577],[24.711,42.573],[24.723,42.569],[24.748,42.567],[24.773,42.546],[24.813,42.542],[24.833,42.535],[24.834,42.526],[24.829,42.507],[24.833,42.495],[24.817,42.48],[24.79,42.486],[24.78,42.482],[24.774,42.467],[24.766,42.459],[24.764,42.444],[24.756,42.433],[24.753,42.41],[24.748,42.411],[24.736,42.42],[24.719,42.423],[24.684,42.413],[24.663,42.4],[24.648,42.408],[24.646,42.416],[24.621,42.417],[24.606,42.425],[24.603,42.435],[24.61,42.453],[24.602,42.457],[24.569,42.44],[24.542,42.439],[24.539,42.432],[24.541,42.418],[24.528,42.409],[24.548,42.396],[24.548,42.392],[24.531,42.38],[24.511,42.375],[24.499,42.384],[24.485,42.387],[24.482,42.397],[24.465,42.398],[24.451,42.41],[24.428,42.418],[24.412,42.428],[24.403,42.442],[24.381,42.454],[24.371,42.477],[24.381,42.494],[24.409,42.52],[24.415,42.542],[24.441,42.544],[24.45,42.547],[24.46,42.563],[24.484,42.577],[24.493,42.592],[24.506,42.589],[24.532,42.572],[24.556,42.57],[24.575,42.56],[24.624,42.562],[24.647,42.57]]]}},{"type":"Feature","properties":{"name":"Хитрино","id":229,"pid":31,"pop":6223,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[27.098,43.509],[27.098,43.497],[27.107,43.48],[27.102,43.476],[27.094,43.481],[27.091,43.48],[27.089,43.447],[27.075,43.428],[27.052,43.414],[27.032,43.412],[27.003,43.417],[26.99,43.416],[26.998,43.396],[26.987,43.387],[26.958,43.387],[26.926,43.393],[26.92,43.388],[26.919,43.38],[26.908,43.378],[26.903,43.382],[26.898,43.395],[26.868,43.402],[26.859,43.401],[26.838,43.387],[26.822,43.388],[26.813,43.393],[26.815,43.405],[26.805,43.42],[26.772,43.429],[26.765,43.433],[26.768,43.449],[26.757,43.469],[26.765,43.473],[26.787,43.475],[26.788,43.492],[26.8,43.5],[26.825,43.497],[26.839,43.502],[26.848,43.511],[26.871,43.49],[26.898,43.482],[26.933,43.463],[26.946,43.462],[26.955,43.471],[26.954,43.49],[26.959,43.495],[26.977,43.503],[26.989,43.515],[27.032,43.518],[27.037,43.526],[27.048,43.534],[27.06,43.537],[27.09,43.533],[27.097,43.528],[27.098,43.509]]]}},{"type":"Feature","properties":{"name":"Ихтиман","id":152,"pid":38,"pop":17720,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.818,42.59],[23.825,42.577],[23.846,42.563],[23.902,42.551],[23.903,42.54],[23.918,42.523],[23.924,42.492],[23.978,42.452],[23.991,42.446],[24.013,42.443],[24.028,42.446],[24.053,42.459],[24.065,42.459],[24.077,42.454],[24.076,42.435],[24.062,42.413],[24.06,42.403],[24.05,42.389],[24.037,42.381],[23.972,42.371],[23.93,42.371],[23.882,42.376],[23.844,42.366],[23.833,42.367],[23.809,42.384],[23.788,42.385],[23.779,42.391],[23.726,42.398],[23.695,42.417],[23.654,42.428],[23.636,42.472],[23.615,42.497],[23.631,42.524],[23.636,42.541],[23.661,42.562],[23.667,42.574],[23.665,42.588],[23.668,42.596],[23.714,42.609],[23.736,42.604],[23.801,42.602],[23.809,42.601],[23.818,42.59]]]}},{"type":"Feature","properties":{"name":"Искър","id":200,"pid":18,"pop":6884,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[24.345,43.461],[24.331,43.44],[24.331,43.423],[24.307,43.41],[24.29,43.382],[24.274,43.377],[24.273,43.367],[24.261,43.37],[24.239,43.369],[24.235,43.374],[24.234,43.385],[24.245,43.423],[24.24,43.44],[24.23,43.45],[24.234,43.464],[24.239,43.468],[24.237,43.475],[24.248,43.474],[24.25,43.478],[24.217,43.486],[24.188,43.488],[24.177,43.495],[24.176,43.51],[24.187,43.56],[24.211,43.566],[24.246,43.567],[24.264,43.573],[24.282,43.572],[24.308,43.584],[24.314,43.597],[24.317,43.598],[24.325,43.588],[24.334,43.583],[24.32,43.571],[24.315,43.564],[24.341,43.559],[24.35,43.545],[24.35,43.532],[24.334,43.478],[24.337,43.468],[24.345,43.461]]]}},{"type":"Feature","properties":{"name":"Исперих","id":146,"pid":21,"pop":22692,"oblast":"Разград"},"geometry":{"type":"Polygon","coordinates":[[[26.924,43.799],[26.929,43.769],[26.956,43.759],[26.972,43.761],[26.982,43.759],[26.992,43.733],[27.003,43.725],[27.017,43.719],[27.025,43.703],[27.038,43.697],[27.038,43.665],[27.026,43.659],[27.001,43.655],[26.983,43.645],[26.952,43.671],[26.911,43.676],[26.883,43.684],[26.859,43.684],[26.85,43.679],[26.847,43.649],[26.818,43.641],[26.798,43.619],[26.773,43.616],[26.729,43.623],[26.722,43.635],[26.7,43.652],[26.698,43.663],[26.705,43.675],[26.734,43.7],[26.747,43.728],[26.747,43.757],[26.763,43.771],[26.77,43.785],[26.776,43.785],[26.779,43.771],[26.788,43.771],[26.81,43.8],[26.812,43.81],[26.796,43.825],[26.794,43.832],[26.799,43.833],[26.811,43.842],[26.827,43.835],[26.845,43.852],[26.857,43.853],[26.878,43.819],[26.892,43.811],[26.924,43.799]]]}},{"type":"Feature","properties":{"name":"Иваново","id":201,"pid":65,"pop":9429,"oblast":"Русе"},"geometry":{"type":"Polygon","coordinates":[[[26.087,43.754],[26.115,43.728],[26.119,43.719],[26.116,43.699],[26.151,43.652],[26.14,43.649],[26.117,43.648],[26.099,43.637],[26.064,43.635],[26.063,43.627],[26.079,43.605],[26.079,43.597],[26.068,43.587],[26.04,43.578],[26.015,43.578],[25.975,43.593],[25.975,43.606],[25.952,43.622],[25.943,43.637],[25.932,43.637],[25.922,43.644],[25.892,43.64],[25.869,43.642],[25.843,43.676],[25.835,43.679],[25.806,43.683],[25.794,43.693],[25.784,43.708],[25.769,43.714],[25.788,43.72],[25.816,43.754],[25.86,43.767],[25.873,43.776],[25.89,43.772],[25.916,43.761],[25.936,43.758],[25.96,43.761],[26.021,43.781],[26.037,43.782],[26.052,43.778],[26.087,43.754]]]}},{"type":"Feature","properties":{"name":"Ивайловград","id":141,"pid":28,"pop":6426,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[26.09,41.641],[26.09,41.631],[26.095,41.626],[26.119,41.623],[26.123,41.63],[26.137,41.631],[26.137,41.613],[26.142,41.612],[26.145,41.606],[26.152,41.605],[26.146,41.554],[26.157,41.552],[26.176,41.554],[26.181,41.524],[26.185,41.519],[26.172,41.503],[26.171,41.492],[26.152,41.485],[26.154,41.474],[26.174,41.463],[26.192,41.447],[26.199,41.436],[26.189,41.438],[26.183,41.434],[26.173,41.433],[26.168,41.424],[26.159,41.42],[26.164,41.409],[26.157,41.398],[26.158,41.39],[26.15,41.385],[26.149,41.379],[26.143,41.375],[26.136,41.375],[26.136,41.363],[26.13,41.354],[26.12,41.357],[26.112,41.353],[26.107,41.358],[26.099,41.353],[26.099,41.357],[26.089,41.346],[26.068,41.349],[26.052,41.346],[26.041,41.35],[26.032,41.349],[26.03,41.347],[26.008,41.343],[25.997,41.325],[25.99,41.326],[25.974,41.318],[25.951,41.32],[25.957,41.331],[25.945,41.337],[25.942,41.354],[25.93,41.372],[25.921,41.377],[25.893,41.384],[25.886,41.4],[25.872,41.397],[25.855,41.424],[25.854,41.43],[25.86,41.441],[25.861,41.457],[25.88,41.467],[25.884,41.475],[25.881,41.48],[25.876,41.483],[25.852,41.483],[25.829,41.495],[25.798,41.5],[25.793,41.539],[25.802,41.569],[25.81,41.579],[25.839,41.59],[25.853,41.599],[25.857,41.612],[25.889,41.587],[25.902,41.569],[25.91,41.564],[25.933,41.562],[25.958,41.566],[25.966,41.569],[25.974,41.577],[25.984,41.605],[25.995,41.62],[26.005,41.617],[26.022,41.62],[26.04,41.648],[26.048,41.651],[26.054,41.65],[26.069,41.637],[26.079,41.634],[26.09,41.641]]]}},{"type":"Feature","properties":{"name":"Калояново","id":54,"pid":53,"pop":11879,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.854,42.483],[24.88,42.49],[24.909,42.473],[24.948,42.465],[24.932,42.43],[24.934,42.423],[24.95,42.415],[24.954,42.408],[24.948,42.4],[24.92,42.394],[24.91,42.387],[24.899,42.348],[24.909,42.322],[24.893,42.306],[24.888,42.291],[24.861,42.28],[24.853,42.286],[24.846,42.286],[24.837,42.276],[24.829,42.275],[24.783,42.294],[24.768,42.309],[24.747,42.311],[24.707,42.368],[24.685,42.381],[24.677,42.391],[24.665,42.4],[24.684,42.413],[24.719,42.423],[24.736,42.42],[24.748,42.411],[24.753,42.41],[24.756,42.433],[24.766,42.447],[24.766,42.459],[24.782,42.484],[24.79,42.486],[24.817,42.48],[24.833,42.495],[24.854,42.483]]]}},{"type":"Feature","properties":{"name":"Камено","id":239,"pid":44,"pop":10393,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.241,42.622],[27.254,42.613],[27.268,42.609],[27.318,42.615],[27.344,42.608],[27.363,42.594],[27.379,42.6],[27.385,42.599],[27.387,42.596],[27.385,42.585],[27.376,42.572],[27.337,42.544],[27.327,42.54],[27.305,42.539],[27.256,42.566],[27.217,42.568],[27.211,42.566],[27.229,42.535],[27.228,42.514],[27.259,42.491],[27.265,42.48],[27.273,42.481],[27.285,42.496],[27.299,42.5],[27.308,42.508],[27.32,42.509],[27.329,42.488],[27.34,42.486],[27.354,42.474],[27.367,42.473],[27.369,42.471],[27.376,42.452],[27.376,42.424],[27.343,42.411],[27.33,42.411],[27.305,42.42],[27.279,42.419],[27.267,42.43],[27.247,42.432],[27.232,42.438],[27.198,42.439],[27.18,42.445],[27.157,42.47],[27.15,42.474],[27.15,42.485],[27.136,42.5],[27.136,42.506],[27.146,42.513],[27.148,42.519],[27.137,42.535],[27.137,42.544],[27.122,42.557],[27.112,42.575],[27.117,42.592],[27.137,42.609],[27.17,42.62],[27.173,42.627],[27.235,42.654],[27.239,42.653],[27.237,42.647],[27.225,42.634],[27.228,42.628],[27.241,42.622]]]}},{"type":"Feature","properties":{"name":"Каолиново","id":58,"pid":31,"pop":12093,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[27.248,43.679],[27.272,43.668],[27.269,43.662],[27.26,43.657],[27.24,43.654],[27.233,43.644],[27.231,43.633],[27.22,43.61],[27.215,43.608],[27.194,43.612],[27.186,43.608],[27.175,43.574],[27.187,43.558],[27.187,43.553],[27.162,43.548],[27.157,43.543],[27.155,43.535],[27.159,43.524],[27.15,43.516],[27.128,43.506],[27.101,43.508],[27.098,43.509],[27.097,43.528],[27.09,43.533],[27.055,43.536],[27.046,43.541],[27.043,43.545],[27.046,43.557],[27.04,43.573],[27.055,43.613],[27.053,43.619],[27.046,43.624],[26.992,43.625],[26.983,43.628],[26.98,43.635],[26.982,43.644],[26.998,43.654],[27.026,43.659],[27.038,43.665],[27.04,43.693],[27.022,43.706],[27.017,43.719],[27.047,43.723],[27.079,43.737],[27.107,43.738],[27.123,43.731],[27.141,43.705],[27.167,43.686],[27.248,43.679]]]}},{"type":"Feature","properties":{"name":"Кърджали","id":290,"pid":8,"pop":67460,"oblast":"Кърджали"},"geometry":{"type":"Polygon","coordinates":[[[25.585,41.753],[25.607,41.743],[25.647,41.713],[25.649,41.692],[25.657,41.672],[25.655,41.661],[25.646,41.648],[25.629,41.637],[25.617,41.633],[25.594,41.635],[25.548,41.629],[25.542,41.624],[25.542,41.611],[25.539,41.607],[25.527,41.607],[25.508,41.599],[25.446,41.589],[25.431,41.579],[25.419,41.578],[25.379,41.566],[25.362,41.554],[25.348,41.556],[25.318,41.551],[25.298,41.554],[25.283,41.562],[25.284,41.575],[25.281,41.578],[25.244,41.579],[25.236,41.588],[25.238,41.597],[25.249,41.611],[25.277,41.638],[25.301,41.651],[25.302,41.658],[25.268,41.67],[25.239,41.709],[25.227,41.717],[25.22,41.719],[25.178,41.717],[25.168,41.72],[25.148,41.731],[25.161,41.745],[25.171,41.747],[25.194,41.74],[25.238,41.746],[25.244,41.739],[25.252,41.709],[25.257,41.703],[25.268,41.702],[25.275,41.706],[25.285,41.727],[25.29,41.726],[25.302,41.717],[25.325,41.728],[25.329,41.726],[25.334,41.709],[25.341,41.701],[25.385,41.699],[25.396,41.701],[25.406,41.71],[25.409,41.729],[25.434,41.769],[25.437,41.782],[25.458,41.78],[25.481,41.765],[25.519,41.754],[25.538,41.743],[25.561,41.745],[25.585,41.753]]]}},{"type":"Feature","properties":{"name":"Карлово","id":124,"pid":53,"pop":52307,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.89,42.714],[24.915,42.704],[24.936,42.703],[24.984,42.718],[25.005,42.732],[25.033,42.731],[25.031,42.719],[25.042,42.698],[25.035,42.67],[25.042,42.651],[25.046,42.622],[25.023,42.594],[25.022,42.588],[25.044,42.551],[25.048,42.534],[25.014,42.531],[25.008,42.527],[25.006,42.514],[25.012,42.479],[25.007,42.457],[24.995,42.453],[24.985,42.454],[24.952,42.466],[24.909,42.473],[24.88,42.49],[24.869,42.489],[24.859,42.483],[24.841,42.488],[24.833,42.495],[24.83,42.504],[24.834,42.53],[24.83,42.537],[24.813,42.542],[24.773,42.546],[24.748,42.567],[24.723,42.569],[24.711,42.573],[24.663,42.577],[24.631,42.563],[24.575,42.56],[24.556,42.57],[24.532,42.572],[24.506,42.589],[24.493,42.592],[24.459,42.606],[24.429,42.63],[24.375,42.65],[24.357,42.672],[24.353,42.7],[24.383,42.746],[24.42,42.753],[24.459,42.747],[24.467,42.749],[24.494,42.783],[24.504,42.79],[24.591,42.778],[24.628,42.778],[24.656,42.768],[24.686,42.75],[24.694,42.728],[24.725,42.731],[24.748,42.729],[24.735,42.687],[24.708,42.659],[24.716,42.654],[24.739,42.65],[24.745,42.644],[24.757,42.647],[24.768,42.644],[24.793,42.648],[24.798,42.664],[24.806,42.673],[24.791,42.701],[24.784,42.729],[24.769,42.722],[24.764,42.73],[24.796,42.738],[24.83,42.736],[24.89,42.714]]]}},{"type":"Feature","properties":{"name":"Карнобат","id":149,"pid":44,"pop":25477,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.057,42.823],[27.062,42.809],[27.079,42.801],[27.079,42.794],[27.09,42.794],[27.086,42.789],[27.064,42.786],[27.057,42.782],[27.057,42.774],[27.062,42.767],[27.079,42.763],[27.092,42.75],[27.1,42.75],[27.109,42.756],[27.112,42.763],[27.105,42.776],[27.107,42.783],[27.116,42.785],[27.123,42.778],[27.118,42.752],[27.094,42.731],[27.088,42.718],[27.125,42.697],[27.115,42.675],[27.118,42.656],[27.129,42.647],[27.166,42.633],[27.173,42.625],[27.168,42.619],[27.137,42.609],[27.117,42.592],[27.113,42.585],[27.112,42.575],[27.121,42.558],[27.137,42.544],[27.137,42.535],[27.148,42.519],[27.136,42.503],[27.15,42.485],[27.15,42.474],[27.116,42.47],[27.099,42.464],[27.059,42.455],[27.028,42.458],[27.005,42.454],[26.993,42.438],[26.976,42.429],[26.952,42.458],[26.939,42.459],[26.903,42.456],[26.891,42.46],[26.885,42.471],[26.884,42.501],[26.863,42.51],[26.857,42.517],[26.846,42.539],[26.835,42.548],[26.81,42.585],[26.8,42.628],[26.763,42.663],[26.76,42.67],[26.774,42.675],[26.784,42.675],[26.797,42.682],[26.803,42.681],[26.828,42.662],[26.847,42.664],[26.853,42.674],[26.85,42.698],[26.854,42.718],[26.869,42.729],[26.902,42.737],[26.909,42.741],[26.935,42.783],[26.938,42.784],[26.941,42.778],[26.948,42.779],[26.953,42.788],[26.959,42.791],[26.968,42.782],[26.977,42.783],[26.986,42.793],[26.991,42.815],[27.001,42.823],[27.014,42.825],[27.057,42.823]]]}},{"type":"Feature","properties":{"name":"Каспичан","id":121,"pid":31,"pop":7976,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[27.154,43.433],[27.169,43.416],[27.188,43.401],[27.185,43.375],[27.196,43.363],[27.229,43.353],[27.243,43.343],[27.249,43.335],[27.262,43.329],[27.269,43.33],[27.284,43.339],[27.291,43.336],[27.29,43.322],[27.282,43.312],[27.283,43.303],[27.303,43.279],[27.312,43.237],[27.331,43.224],[27.333,43.22],[27.329,43.215],[27.3,43.212],[27.261,43.186],[27.242,43.199],[27.212,43.213],[27.19,43.234],[27.169,43.242],[27.154,43.254],[27.092,43.262],[27.084,43.268],[27.083,43.276],[27.09,43.291],[27.077,43.3],[27.077,43.304],[27.09,43.311],[27.1,43.324],[27.144,43.334],[27.151,43.338],[27.153,43.352],[27.136,43.379],[27.127,43.383],[27.095,43.381],[27.08,43.384],[27.07,43.391],[27.052,43.414],[27.075,43.428],[27.088,43.445],[27.114,43.445],[27.128,43.434],[27.146,43.436],[27.154,43.433]]]}},{"type":"Feature","properties":{"name":"Каварна","id":40,"pid":26,"pop":15358,"oblast":"Добрич"},"geometry":{"type":"Polygon","coordinates":[[[28.576,43.473],[28.541,43.431],[28.531,43.424],[28.504,43.413],[28.498,43.405],[28.481,43.393],[28.474,43.384],[28.468,43.364],[28.454,43.381],[28.437,43.387],[28.422,43.387],[28.383,43.41],[28.365,43.416],[28.347,43.416],[28.329,43.42],[28.276,43.416],[28.244,43.407],[28.245,43.435],[28.25,43.446],[28.268,43.469],[28.286,43.482],[28.292,43.494],[28.266,43.519],[28.241,43.53],[28.227,43.563],[28.242,43.564],[28.254,43.574],[28.253,43.586],[28.239,43.598],[28.234,43.607],[28.236,43.614],[28.254,43.625],[28.245,43.641],[28.251,43.644],[28.268,43.641],[28.286,43.629],[28.295,43.629],[28.324,43.64],[28.325,43.667],[28.336,43.667],[28.359,43.66],[28.379,43.671],[28.424,43.673],[28.444,43.671],[28.461,43.65],[28.459,43.628],[28.47,43.611],[28.467,43.607],[28.454,43.606],[28.447,43.596],[28.428,43.586],[28.429,43.575],[28.453,43.569],[28.453,43.565],[28.414,43.538],[28.411,43.532],[28.414,43.525],[28.424,43.519],[28.479,43.527],[28.5,43.498],[28.515,43.493],[28.526,43.485],[28.544,43.482],[28.559,43.474],[28.576,43.473]]]}},{"type":"Feature","properties":{"name":"Кайнарджа","id":258,"pid":33,"pop":5070,"oblast":"Силистра"},"geometry":{"type":"Polygon","coordinates":[[[27.684,44.024],[27.695,44.009],[27.703,43.988],[27.679,43.988],[27.644,43.983],[27.635,43.976],[27.623,43.961],[27.622,43.953],[27.604,43.939],[27.605,43.931],[27.613,43.923],[27.612,43.917],[27.598,43.911],[27.576,43.907],[27.545,43.922],[27.538,43.92],[27.517,43.864],[27.502,43.853],[27.49,43.854],[27.47,43.874],[27.463,43.877],[27.441,43.874],[27.424,43.862],[27.411,43.879],[27.411,43.892],[27.42,43.924],[27.419,43.944],[27.423,43.952],[27.414,43.98],[27.433,44.013],[27.431,44.021],[27.426,44.025],[27.5,44.034],[27.507,44.031],[27.595,44.022],[27.619,44.023],[27.628,44.027],[27.643,44.044],[27.657,44.05],[27.684,44.024]]]}},{"type":"Feature","properties":{"name":"Казанлък","id":129,"pid":113,"pop":72581,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.459,42.758],[25.483,42.759],[25.498,42.756],[25.524,42.738],[25.545,42.732],[25.539,42.711],[25.543,42.668],[25.536,42.629],[25.538,42.614],[25.553,42.577],[25.546,42.546],[25.565,42.524],[25.56,42.496],[25.544,42.476],[25.522,42.462],[25.512,42.462],[25.504,42.467],[25.501,42.479],[25.493,42.488],[25.467,42.493],[25.451,42.5],[25.437,42.501],[25.424,42.494],[25.416,42.48],[25.401,42.468],[25.33,42.45],[25.3,42.452],[25.287,42.461],[25.277,42.475],[25.283,42.494],[25.271,42.5],[25.259,42.512],[25.263,42.525],[25.258,42.546],[25.272,42.562],[25.291,42.573],[25.315,42.61],[25.316,42.624],[25.306,42.633],[25.272,42.645],[25.254,42.657],[25.246,42.678],[25.229,42.699],[25.225,42.726],[25.214,42.742],[25.208,42.76],[25.222,42.768],[25.247,42.754],[25.287,42.737],[25.316,42.741],[25.334,42.74],[25.376,42.731],[25.412,42.728],[25.452,42.718],[25.46,42.72],[25.464,42.728],[25.453,42.755],[25.459,42.758]]]}},{"type":"Feature","properties":{"name":"Кирково","id":9,"pid":8,"pop":21916,"oblast":"Кърджали"},"geometry":{"type":"Polygon","coordinates":[[[25.489,41.427],[25.481,41.408],[25.492,41.38],[25.482,41.358],[25.482,41.352],[25.487,41.349],[25.503,41.348],[25.533,41.353],[25.545,41.348],[25.548,41.34],[25.546,41.326],[25.551,41.326],[25.551,41.313],[25.545,41.31],[25.543,41.301],[25.534,41.291],[25.531,41.278],[25.525,41.276],[25.516,41.283],[25.507,41.286],[25.474,41.288],[25.469,41.282],[25.461,41.283],[25.442,41.275],[25.431,41.275],[25.428,41.264],[25.416,41.266],[25.41,41.261],[25.403,41.262],[25.385,41.256],[25.367,41.26],[25.356,41.25],[25.342,41.248],[25.336,41.241],[25.296,41.245],[25.288,41.235],[25.282,41.236],[25.266,41.244],[25.231,41.247],[25.233,41.254],[25.223,41.264],[25.225,41.268],[25.222,41.279],[25.214,41.283],[25.208,41.291],[25.2,41.291],[25.196,41.295],[25.189,41.294],[25.178,41.302],[25.181,41.308],[25.171,41.312],[25.163,41.311],[25.159,41.318],[25.148,41.314],[25.143,41.322],[25.167,41.339],[25.165,41.352],[25.158,41.357],[25.165,41.385],[25.159,41.397],[25.214,41.415],[25.238,41.419],[25.236,41.422],[25.221,41.426],[25.221,41.431],[25.242,41.433],[25.25,41.44],[25.257,41.44],[25.273,41.432],[25.304,41.432],[25.312,41.436],[25.32,41.449],[25.337,41.452],[25.359,41.446],[25.371,41.448],[25.38,41.436],[25.392,41.434],[25.445,41.456],[25.467,41.448],[25.489,41.427]]]}},{"type":"Feature","properties":{"name":"Кнежа","id":110,"pid":18,"pop":13803,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[24.147,43.606],[24.144,43.601],[24.146,43.592],[24.187,43.558],[24.176,43.51],[24.177,43.495],[24.188,43.488],[24.248,43.48],[24.248,43.474],[24.237,43.475],[24.239,43.468],[24.234,43.464],[24.23,43.45],[24.243,43.433],[24.232,43.429],[24.219,43.435],[24.207,43.435],[24.19,43.431],[24.166,43.418],[24.128,43.408],[24.119,43.401],[24.117,43.386],[24.097,43.366],[24.068,43.371],[24.039,43.369],[24.018,43.374],[24.023,43.393],[24.066,43.421],[24.08,43.441],[24.076,43.453],[24.049,43.471],[24.041,43.48],[24.036,43.506],[24.022,43.532],[24.038,43.551],[24.045,43.602],[24.07,43.617],[24.093,43.612],[24.111,43.619],[24.118,43.618],[24.127,43.609],[24.147,43.606]]]}},{"type":"Feature","properties":{"name":"Кочериново","id":198,"pid":97,"pop":5214,"oblast":"Кюстендил"},"geometry":{"type":"Polygon","coordinates":[[[23.093,42.147],[23.089,42.131],[23.094,42.123],[23.145,42.115],[23.157,42.109],[23.182,42.111],[23.193,42.107],[23.143,42.071],[23.129,42.064],[23.081,42.054],[23.057,42.053],[23.045,42.072],[23.001,42.072],[22.983,42.076],[22.975,42.085],[22.969,42.102],[22.96,42.111],[22.943,42.105],[22.926,42.076],[22.899,42.075],[22.889,42.086],[22.887,42.09],[22.898,42.122],[22.908,42.13],[22.905,42.146],[22.928,42.174],[22.967,42.173],[22.976,42.167],[22.987,42.151],[23.008,42.139],[23.01,42.126],[23.016,42.123],[23.031,42.125],[23.051,42.14],[23.093,42.147]]]}},{"type":"Feature","properties":{"name":"Копривщица","id":228,"pid":38,"pop":2410,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[24.493,42.592],[24.484,42.577],[24.462,42.565],[24.454,42.55],[24.444,42.544],[24.415,42.542],[24.403,42.553],[24.379,42.559],[24.369,42.556],[24.348,42.542],[24.337,42.543],[24.329,42.562],[24.309,42.581],[24.298,42.602],[24.282,42.612],[24.282,42.618],[24.299,42.637],[24.296,42.654],[24.325,42.669],[24.353,42.7],[24.357,42.672],[24.373,42.651],[24.392,42.642],[24.429,42.63],[24.453,42.609],[24.493,42.592]]]}},{"type":"Feature","properties":{"name":"Костенец","id":170,"pid":38,"pop":12793,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.971,42.371],[23.968,42.357],[23.955,42.338],[23.95,42.31],[23.961,42.298],[23.981,42.299],[23.998,42.295],[24.004,42.285],[24.001,42.277],[23.991,42.273],[23.965,42.253],[23.946,42.249],[23.925,42.256],[23.907,42.271],[23.89,42.268],[23.874,42.236],[23.861,42.226],[23.826,42.214],[23.822,42.21],[23.805,42.203],[23.789,42.189],[23.775,42.182],[23.74,42.179],[23.733,42.173],[23.732,42.165],[23.719,42.166],[23.714,42.172],[23.713,42.181],[23.723,42.199],[23.724,42.214],[23.73,42.219],[23.747,42.223],[23.764,42.245],[23.78,42.25],[23.803,42.272],[23.821,42.281],[23.826,42.294],[23.824,42.298],[23.793,42.302],[23.788,42.337],[23.781,42.339],[23.761,42.336],[23.745,42.343],[23.723,42.344],[23.715,42.35],[23.708,42.365],[23.701,42.371],[23.657,42.39],[23.653,42.401],[23.669,42.423],[23.695,42.417],[23.726,42.398],[23.779,42.391],[23.788,42.385],[23.809,42.384],[23.833,42.367],[23.844,42.366],[23.882,42.376],[23.93,42.371],[23.971,42.371]]]}},{"type":"Feature","properties":{"name":"Костинброд","id":117,"pid":38,"pop":17846,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.324,42.886],[23.314,42.884],[23.302,42.86],[23.287,42.851],[23.284,42.827],[23.27,42.817],[23.265,42.792],[23.242,42.774],[23.23,42.776],[23.188,42.813],[23.178,42.816],[23.16,42.814],[23.151,42.816],[23.105,42.856],[23.097,42.867],[23.094,42.879],[23.095,42.911],[23.108,42.912],[23.128,42.909],[23.135,42.918],[23.131,42.934],[23.137,42.955],[23.117,42.975],[23.131,42.981],[23.146,42.993],[23.163,42.99],[23.184,42.992],[23.192,42.989],[23.191,42.984],[23.178,42.971],[23.182,42.965],[23.196,42.966],[23.218,42.978],[23.233,42.979],[23.24,42.975],[23.251,42.949],[23.26,42.948],[23.286,42.953],[23.292,42.95],[23.292,42.932],[23.316,42.911],[23.315,42.894],[23.324,42.886]]]}},{"type":"Feature","properties":{"name":"Котел","id":194,"pid":94,"pop":19391,"oblast":"Сливен"},"geometry":{"type":"Polygon","coordinates":[[[26.579,42.998],[26.547,42.977],[26.543,42.969],[26.547,42.947],[26.553,42.938],[26.568,42.93],[26.591,42.929],[26.594,42.927],[26.584,42.906],[26.584,42.896],[26.604,42.867],[26.607,42.856],[26.605,42.848],[26.59,42.829],[26.592,42.812],[26.606,42.798],[26.651,42.794],[26.66,42.785],[26.671,42.782],[26.683,42.764],[26.714,42.744],[26.719,42.738],[26.714,42.722],[26.708,42.716],[26.683,42.723],[26.675,42.721],[26.672,42.711],[26.675,42.705],[26.646,42.712],[26.62,42.7],[26.609,42.689],[26.57,42.694],[26.559,42.701],[26.558,42.709],[26.55,42.713],[26.543,42.728],[26.512,42.731],[26.51,42.746],[26.519,42.761],[26.519,42.769],[26.497,42.787],[26.481,42.807],[26.44,42.814],[26.409,42.807],[26.386,42.808],[26.297,42.85],[26.276,42.849],[26.257,42.854],[26.235,42.851],[26.232,42.858],[26.245,42.871],[26.245,42.876],[26.241,42.883],[26.219,42.899],[26.222,42.916],[26.216,42.928],[26.221,42.942],[26.2,42.95],[26.208,42.958],[26.249,42.972],[26.28,42.994],[26.287,43.003],[26.295,43.035],[26.301,43.044],[26.307,43.044],[26.321,43.038],[26.334,43.038],[26.355,43.05],[26.363,43.05],[26.366,43.039],[26.359,43.016],[26.365,43.011],[26.374,43.013],[26.391,43.031],[26.401,43.032],[26.419,43.018],[26.432,43.011],[26.459,43.009],[26.506,43.02],[26.526,43.021],[26.558,43.014],[26.579,42.998]]]}},{"type":"Feature","properties":{"name":"Ковачевци","id":323,"pid":119,"pop":1600,"oblast":"Перник"},"geometry":{"type":"Polygon","coordinates":[[[22.912,42.591],[22.904,42.578],[22.876,42.562],[22.877,42.552],[22.883,42.546],[22.909,42.543],[22.92,42.536],[22.916,42.53],[22.893,42.515],[22.899,42.489],[22.891,42.481],[22.869,42.474],[22.858,42.465],[22.831,42.454],[22.827,42.462],[22.833,42.482],[22.83,42.495],[22.822,42.512],[22.797,42.537],[22.792,42.567],[22.783,42.59],[22.806,42.599],[22.819,42.61],[22.85,42.604],[22.867,42.624],[22.876,42.621],[22.888,42.599],[22.912,42.591]]]}},{"type":"Feature","properties":{"name":"Козлодуй","id":50,"pid":49,"pop":21180,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[23.719,43.814],[23.755,43.811],[23.779,43.795],[23.826,43.785],[23.859,43.77],[23.857,43.758],[23.843,43.737],[23.845,43.723],[23.839,43.706],[23.843,43.698],[23.841,43.69],[23.819,43.68],[23.801,43.677],[23.793,43.67],[23.76,43.654],[23.738,43.654],[23.718,43.642],[23.698,43.637],[23.694,43.638],[23.691,43.655],[23.685,43.659],[23.662,43.659],[23.647,43.679],[23.621,43.681],[23.61,43.689],[23.618,43.72],[23.633,43.737],[23.636,43.749],[23.623,43.784],[23.623,43.8],[23.637,43.8],[23.689,43.812],[23.719,43.814]]]}},{"type":"Feature","properties":{"name":"Кресна","id":248,"pid":56,"pop":5441,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.361,41.821],[23.374,41.806],[23.399,41.798],[23.405,41.792],[23.408,41.771],[23.4,41.758],[23.39,41.751],[23.37,41.745],[23.35,41.746],[23.331,41.75],[23.318,41.749],[23.283,41.727],[23.239,41.685],[23.217,41.673],[23.205,41.674],[23.181,41.685],[23.162,41.69],[23.137,41.689],[23.124,41.683],[23.114,41.683],[23.039,41.69],[23.019,41.698],[23.034,41.709],[23.031,41.717],[23.033,41.722],[23.021,41.748],[23.015,41.75],[23.015,41.757],[23.008,41.768],[23.042,41.771],[23.052,41.774],[23.084,41.806],[23.098,41.813],[23.122,41.812],[23.145,41.797],[23.196,41.816],[23.232,41.813],[23.272,41.823],[23.307,41.821],[23.348,41.827],[23.361,41.821]]]}},{"type":"Feature","properties":{"name":"Кричим","id":208,"pid":53,"pop":8409,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.505,42.077],[24.501,42.069],[24.482,42.054],[24.477,42.045],[24.475,42.031],[24.484,42.011],[24.462,41.958],[24.463,41.93],[24.467,41.927],[24.46,41.922],[24.445,41.927],[24.431,41.937],[24.455,41.974],[24.466,42.004],[24.463,42.025],[24.438,42.047],[24.435,42.06],[24.443,42.071],[24.479,42.08],[24.506,42.097],[24.495,42.078],[24.5,42.075],[24.505,42.077]]]}},{"type":"Feature","properties":{"name":"Криводол","id":240,"pid":49,"pop":9390,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[23.654,43.528],[23.643,43.52],[23.62,43.485],[23.593,43.464],[23.575,43.44],[23.575,43.427],[23.591,43.391],[23.579,43.369],[23.562,43.366],[23.533,43.373],[23.52,43.361],[23.496,43.352],[23.486,43.339],[23.465,43.335],[23.459,43.33],[23.462,43.31],[23.442,43.293],[23.441,43.265],[23.406,43.269],[23.373,43.277],[23.349,43.286],[23.337,43.295],[23.345,43.315],[23.384,43.341],[23.397,43.359],[23.406,43.384],[23.421,43.395],[23.424,43.409],[23.415,43.427],[23.414,43.45],[23.445,43.511],[23.462,43.515],[23.502,43.504],[23.523,43.506],[23.55,43.502],[23.565,43.508],[23.583,43.528],[23.625,43.526],[23.633,43.53],[23.654,43.528]]]}},{"type":"Feature","properties":{"name":"Крумовград","id":63,"pid":8,"pop":17823,"oblast":"Кърджали"},"geometry":{"type":"Polygon","coordinates":[[[25.857,41.612],[25.853,41.599],[25.839,41.59],[25.81,41.579],[25.802,41.569],[25.793,41.539],[25.798,41.513],[25.797,41.503],[25.8,41.498],[25.829,41.495],[25.852,41.483],[25.876,41.483],[25.881,41.48],[25.884,41.475],[25.88,41.467],[25.861,41.457],[25.86,41.441],[25.854,41.43],[25.855,41.424],[25.872,41.397],[25.886,41.4],[25.893,41.384],[25.921,41.377],[25.93,41.372],[25.942,41.354],[25.945,41.337],[25.957,41.331],[25.951,41.32],[25.935,41.321],[25.928,41.315],[25.919,41.313],[25.903,41.305],[25.893,41.307],[25.882,41.304],[25.868,41.312],[25.872,41.327],[25.853,41.327],[25.846,41.336],[25.821,41.347],[25.816,41.336],[25.807,41.337],[25.8,41.332],[25.79,41.332],[25.78,41.32],[25.769,41.32],[25.763,41.324],[25.757,41.319],[25.749,41.319],[25.744,41.315],[25.739,41.318],[25.721,41.318],[25.711,41.302],[25.714,41.293],[25.71,41.291],[25.699,41.293],[25.693,41.301],[25.683,41.306],[25.664,41.308],[25.658,41.314],[25.637,41.311],[25.623,41.304],[25.591,41.308],[25.574,41.319],[25.56,41.318],[25.551,41.313],[25.551,41.326],[25.546,41.326],[25.548,41.34],[25.541,41.351],[25.53,41.354],[25.503,41.348],[25.484,41.351],[25.482,41.358],[25.492,41.382],[25.482,41.413],[25.485,41.422],[25.493,41.43],[25.502,41.432],[25.537,41.419],[25.549,41.418],[25.56,41.422],[25.564,41.435],[25.568,41.439],[25.592,41.438],[25.6,41.442],[25.601,41.465],[25.612,41.473],[25.614,41.479],[25.599,41.489],[25.597,41.498],[25.623,41.526],[25.628,41.541],[25.62,41.556],[25.595,41.577],[25.599,41.584],[25.601,41.6],[25.613,41.633],[25.629,41.637],[25.626,41.628],[25.629,41.619],[25.646,41.61],[25.667,41.61],[25.692,41.619],[25.716,41.609],[25.755,41.624],[25.766,41.63],[25.781,41.648],[25.79,41.65],[25.807,41.645],[25.837,41.645],[25.857,41.612]]]}},{"type":"Feature","properties":{"name":"Крушари","id":178,"pid":26,"pop":4547,"oblast":"Добрич"},"geometry":{"type":"Polygon","coordinates":[[[27.703,43.988],[27.72,43.969],[27.739,43.96],[27.758,43.96],[27.826,43.971],[27.845,43.97],[27.858,43.94],[27.872,43.927],[27.877,43.904],[27.875,43.89],[27.861,43.876],[27.859,43.862],[27.837,43.852],[27.833,43.846],[27.82,43.839],[27.814,43.822],[27.807,43.815],[27.809,43.805],[27.792,43.786],[27.773,43.775],[27.747,43.78],[27.739,43.774],[27.73,43.753],[27.719,43.748],[27.707,43.751],[27.693,43.762],[27.686,43.798],[27.682,43.804],[27.64,43.829],[27.634,43.842],[27.629,43.845],[27.616,43.844],[27.604,43.834],[27.585,43.853],[27.579,43.905],[27.579,43.908],[27.598,43.911],[27.612,43.917],[27.613,43.923],[27.605,43.931],[27.604,43.939],[27.622,43.953],[27.631,43.972],[27.644,43.983],[27.679,43.988],[27.703,43.988]]]}},{"type":"Feature","properties":{"name":"Кубрат","id":226,"pid":21,"pop":18355,"oblast":"Разград"},"geometry":{"type":"Polygon","coordinates":[[[26.676,43.878],[26.656,43.857],[26.644,43.834],[26.646,43.825],[26.666,43.798],[26.663,43.785],[26.651,43.787],[26.618,43.806],[26.607,43.809],[26.596,43.806],[26.578,43.779],[26.535,43.776],[26.531,43.77],[26.465,43.781],[26.429,43.803],[26.42,43.801],[26.409,43.794],[26.397,43.801],[26.386,43.794],[26.373,43.795],[26.355,43.792],[26.281,43.789],[26.251,43.804],[26.246,43.813],[26.245,43.818],[26.26,43.845],[26.27,43.847],[26.284,43.857],[26.318,43.86],[26.325,43.868],[26.324,43.881],[26.329,43.886],[26.328,43.897],[26.332,43.903],[26.35,43.916],[26.358,43.926],[26.391,43.942],[26.399,43.951],[26.422,43.951],[26.439,43.954],[26.48,43.948],[26.487,43.944],[26.498,43.928],[26.507,43.926],[26.567,43.942],[26.593,43.941],[26.599,43.932],[26.618,43.918],[26.622,43.899],[26.629,43.89],[26.676,43.878]]]}},{"type":"Feature","properties":{"name":"Куклен","id":260,"pid":53,"pop":6431,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.712,41.912],[24.702,41.909],[24.707,41.917],[24.683,41.933],[24.699,41.965],[24.705,42.008],[24.706,42.025],[24.701,42.034],[24.708,42.037],[24.712,42.029],[24.721,42.035],[24.741,42.033],[24.766,42.02],[24.773,42.031],[24.787,42.041],[24.792,42.054],[24.802,42.06],[24.82,42.062],[24.84,42.039],[24.868,42.036],[24.856,42.033],[24.841,42.017],[24.842,41.996],[24.833,41.982],[24.84,41.973],[24.829,41.946],[24.825,41.943],[24.829,41.93],[24.821,41.921],[24.813,41.917],[24.782,41.917],[24.764,41.911],[24.712,41.912]]]}},{"type":"Feature","properties":{"name":"Кула","id":204,"pid":46,"pop":4717,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.694,43.999],[22.678,43.993],[22.675,43.988],[22.693,43.972],[22.708,43.972],[22.702,43.956],[22.673,43.936],[22.665,43.915],[22.652,43.909],[22.637,43.906],[22.613,43.895],[22.622,43.882],[22.613,43.862],[22.602,43.852],[22.59,43.847],[22.579,43.847],[22.552,43.856],[22.532,43.854],[22.53,43.849],[22.535,43.845],[22.536,43.84],[22.521,43.832],[22.511,43.814],[22.504,43.81],[22.492,43.808],[22.458,43.823],[22.441,43.825],[22.415,43.839],[22.372,43.835],[22.379,43.846],[22.388,43.88],[22.394,43.908],[22.388,43.925],[22.392,43.93],[22.476,43.936],[22.501,43.923],[22.521,43.926],[22.536,43.923],[22.549,43.936],[22.573,43.945],[22.582,43.956],[22.586,43.977],[22.591,43.986],[22.602,43.985],[22.609,43.987],[22.619,44],[22.631,43.999],[22.666,44.015],[22.68,44.018],[22.701,44.007],[22.694,43.999]]]}},{"type":"Feature","properties":{"name":"Кюстендил","id":296,"pid":97,"pop":60681,"oblast":"Кюстендил"},"geometry":{"type":"Polygon","coordinates":[[[22.578,42.485],[22.6,42.489],[22.604,42.483],[22.602,42.468],[22.608,42.455],[22.616,42.453],[22.637,42.457],[22.653,42.447],[22.697,42.458],[22.707,42.467],[22.717,42.484],[22.726,42.485],[22.764,42.437],[22.779,42.429],[22.802,42.425],[22.813,42.42],[22.829,42.396],[22.854,42.396],[22.858,42.379],[22.868,42.37],[22.896,42.378],[22.9,42.357],[22.921,42.328],[22.903,42.326],[22.891,42.319],[22.869,42.289],[22.852,42.276],[22.739,42.224],[22.705,42.172],[22.684,42.159],[22.68,42.142],[22.669,42.13],[22.664,42.127],[22.653,42.135],[22.648,42.133],[22.62,42.096],[22.612,42.094],[22.6,42.097],[22.59,42.109],[22.583,42.109],[22.565,42.118],[22.548,42.134],[22.528,42.139],[22.524,42.146],[22.512,42.152],[22.511,42.155],[22.516,42.158],[22.505,42.169],[22.501,42.195],[22.485,42.201],[22.468,42.201],[22.467,42.21],[22.448,42.236],[22.45,42.242],[22.439,42.247],[22.434,42.257],[22.424,42.256],[22.424,42.264],[22.414,42.267],[22.399,42.284],[22.401,42.29],[22.388,42.295],[22.379,42.308],[22.368,42.308],[22.359,42.312],[22.365,42.324],[22.37,42.321],[22.386,42.323],[22.399,42.326],[22.403,42.332],[22.415,42.329],[22.424,42.333],[22.432,42.323],[22.44,42.328],[22.452,42.331],[22.463,42.344],[22.459,42.362],[22.468,42.375],[22.479,42.381],[22.481,42.387],[22.477,42.394],[22.52,42.394],[22.523,42.41],[22.535,42.425],[22.532,42.432],[22.539,42.459],[22.557,42.48],[22.551,42.486],[22.551,42.491],[22.578,42.485]]]}},{"type":"Feature","properties":{"name":"Лъки","id":127,"pid":53,"pop":2902,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.984,41.809],[24.979,41.807],[24.976,41.801],[24.978,41.771],[24.984,41.762],[24.997,41.755],[24.995,41.745],[24.974,41.732],[24.962,41.732],[24.928,41.742],[24.904,41.741],[24.899,41.734],[24.899,41.713],[24.876,41.7],[24.862,41.678],[24.852,41.674],[24.846,41.676],[24.83,41.702],[24.805,41.716],[24.802,41.731],[24.818,41.756],[24.818,41.765],[24.795,41.764],[24.793,41.782],[24.786,41.78],[24.78,41.772],[24.775,41.773],[24.762,41.792],[24.764,41.801],[24.777,41.804],[24.787,41.823],[24.8,41.83],[24.788,41.87],[24.794,41.885],[24.809,41.894],[24.817,41.903],[24.833,41.906],[24.843,41.902],[24.86,41.89],[24.871,41.871],[24.926,41.849],[24.956,41.822],[24.97,41.814],[24.984,41.809]]]}},{"type":"Feature","properties":{"name":"Лесичово","id":169,"pid":74,"pop":5408,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.238,42.338],[24.251,42.324],[24.272,42.308],[24.275,42.293],[24.267,42.286],[24.244,42.28],[24.222,42.269],[24.209,42.272],[24.172,42.295],[24.135,42.323],[24.119,42.331],[24.059,42.333],[24.033,42.352],[24.025,42.354],[24.007,42.355],[23.979,42.35],[23.964,42.351],[23.971,42.371],[24.03,42.378],[24.05,42.389],[24.075,42.433],[24.076,42.452],[24.079,42.454],[24.09,42.448],[24.103,42.436],[24.147,42.422],[24.164,42.412],[24.174,42.401],[24.184,42.38],[24.194,42.366],[24.231,42.338],[24.238,42.338]]]}},{"type":"Feature","properties":{"name":"Летница","id":115,"pid":13,"pop":3776,"oblast":"Ловеч"},"geometry":{"type":"Polygon","coordinates":[[[25.159,43.278],[25.166,43.268],[25.168,43.254],[25.159,43.235],[25.134,43.21],[25.136,43.183],[25.13,43.177],[25.103,43.172],[25.072,43.177],[25.023,43.191],[24.999,43.202],[24.977,43.217],[24.971,43.237],[24.975,43.244],[24.984,43.248],[25.019,43.25],[25.029,43.256],[25.024,43.285],[25.02,43.292],[25.002,43.305],[24.971,43.319],[25.013,43.343],[25.022,43.362],[25.022,43.378],[25.027,43.387],[25.054,43.382],[25.071,43.37],[25.085,43.347],[25.094,43.317],[25.104,43.304],[25.159,43.278]]]}},{"type":"Feature","properties":{"name":"Левски","id":241,"pid":18,"pop":19938,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[25.263,43.364],[25.269,43.348],[25.267,43.337],[25.249,43.315],[25.225,43.302],[25.208,43.298],[25.183,43.285],[25.159,43.278],[25.104,43.304],[25.094,43.317],[25.081,43.356],[25.058,43.38],[25.015,43.39],[24.99,43.391],[24.962,43.384],[24.948,43.389],[24.944,43.403],[24.945,43.427],[24.964,43.454],[24.96,43.458],[24.944,43.464],[24.939,43.477],[24.908,43.501],[24.989,43.494],[25.004,43.5],[25.002,43.508],[25.007,43.512],[25.056,43.523],[25.069,43.497],[25.082,43.491],[25.094,43.492],[25.145,43.507],[25.154,43.513],[25.165,43.536],[25.185,43.551],[25.204,43.558],[25.222,43.544],[25.228,43.532],[25.209,43.506],[25.208,43.466],[25.193,43.453],[25.18,43.447],[25.128,43.439],[25.125,43.431],[25.133,43.42],[25.144,43.416],[25.199,43.425],[25.228,43.422],[25.234,43.415],[25.233,43.404],[25.207,43.381],[25.2,43.369],[25.211,43.366],[25.263,43.364]]]}},{"type":"Feature","properties":{"name":"Лом","id":133,"pid":15,"pop":28139,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.459,43.857],[23.486,43.85],[23.485,43.822],[23.479,43.815],[23.449,43.807],[23.429,43.791],[23.367,43.794],[23.353,43.786],[23.33,43.761],[23.297,43.751],[23.26,43.746],[23.213,43.735],[23.18,43.734],[23.151,43.736],[23.141,43.744],[23.114,43.747],[23.077,43.765],[23.052,43.765],[23.015,43.752],[22.965,43.759],[22.963,43.762],[22.961,43.777],[22.972,43.788],[23.019,43.787],[23.053,43.807],[23.115,43.811],[23.171,43.823],[23.212,43.837],[23.288,43.856],[23.337,43.858],[23.383,43.856],[23.43,43.863],[23.459,43.857]]]}},{"type":"Feature","properties":{"name":"Ловеч","id":281,"pid":13,"pop":49738,"oblast":"Ловеч"},"geometry":{"type":"Polygon","coordinates":[[[24.971,43.319],[25.002,43.305],[25.02,43.292],[25.03,43.261],[25.024,43.251],[24.984,43.248],[24.975,43.244],[24.971,43.237],[24.977,43.217],[24.961,43.217],[24.958,43.214],[24.963,43.193],[24.962,43.173],[24.969,43.157],[24.969,43.145],[24.962,43.136],[24.932,43.13],[24.927,43.12],[24.931,43.099],[24.93,43.079],[24.945,43.057],[24.944,43.054],[24.935,43.053],[24.934,43.05],[24.947,43.035],[24.914,43.035],[24.899,43.032],[24.874,43.035],[24.861,43.034],[24.805,43.009],[24.743,42.993],[24.731,42.977],[24.709,42.977],[24.698,43.004],[24.663,43.016],[24.682,43.038],[24.686,43.066],[24.679,43.066],[24.663,43.056],[24.646,43.059],[24.625,43.051],[24.608,43.051],[24.596,43.061],[24.577,43.063],[24.585,43.074],[24.576,43.088],[24.58,43.098],[24.568,43.1],[24.557,43.098],[24.548,43.104],[24.524,43.108],[24.516,43.114],[24.518,43.124],[24.537,43.134],[24.548,43.145],[24.547,43.161],[24.568,43.163],[24.562,43.182],[24.566,43.194],[24.58,43.209],[24.599,43.223],[24.633,43.225],[24.64,43.228],[24.645,43.234],[24.65,43.267],[24.66,43.275],[24.675,43.254],[24.684,43.252],[24.696,43.271],[24.714,43.284],[24.752,43.302],[24.806,43.319],[24.834,43.32],[24.865,43.305],[24.893,43.3],[24.914,43.288],[24.921,43.29],[24.935,43.303],[24.951,43.313],[24.971,43.319]]]}},{"type":"Feature","properties":{"name":"Лозница","id":22,"pid":21,"pop":9265,"oblast":"Разград"},"geometry":{"type":"Polygon","coordinates":[[[26.697,43.519],[26.705,43.503],[26.717,43.493],[26.731,43.494],[26.741,43.51],[26.748,43.511],[26.754,43.479],[26.76,43.472],[26.757,43.467],[26.768,43.449],[26.765,43.433],[26.808,43.417],[26.815,43.405],[26.811,43.391],[26.786,43.382],[26.764,43.385],[26.749,43.372],[26.732,43.381],[26.711,43.374],[26.7,43.383],[26.69,43.383],[26.68,43.358],[26.673,43.349],[26.667,43.347],[26.631,43.348],[26.602,43.366],[26.564,43.375],[26.547,43.373],[26.52,43.36],[26.495,43.368],[26.477,43.366],[26.477,43.36],[26.487,43.35],[26.478,43.341],[26.454,43.331],[26.452,43.319],[26.459,43.296],[26.455,43.286],[26.445,43.281],[26.396,43.274],[26.388,43.278],[26.377,43.295],[26.385,43.302],[26.406,43.307],[26.406,43.316],[26.392,43.319],[26.384,43.326],[26.354,43.328],[26.341,43.357],[26.37,43.366],[26.388,43.366],[26.397,43.377],[26.448,43.401],[26.478,43.426],[26.47,43.442],[26.479,43.457],[26.499,43.458],[26.523,43.474],[26.529,43.472],[26.541,43.452],[26.556,43.451],[26.589,43.466],[26.613,43.471],[26.631,43.49],[26.656,43.499],[26.673,43.518],[26.697,43.519]]]}},{"type":"Feature","properties":{"name":"Луковит","id":14,"pid":13,"pop":18125,"oblast":"Ловеч"},"geometry":{"type":"Polygon","coordinates":[[[24.412,43.279],[24.415,43.271],[24.447,43.256],[24.454,43.249],[24.458,43.241],[24.453,43.234],[24.452,43.216],[24.45,43.213],[24.437,43.211],[24.397,43.217],[24.363,43.203],[24.356,43.192],[24.355,43.179],[24.342,43.165],[24.331,43.136],[24.316,43.121],[24.316,43.112],[24.328,43.1],[24.326,43.092],[24.336,43.081],[24.333,43.077],[24.306,43.08],[24.299,43.076],[24.29,43.062],[24.244,43.074],[24.235,43.085],[24.237,43.117],[24.226,43.128],[24.21,43.136],[24.153,43.132],[24.135,43.135],[24.129,43.133],[24.12,43.122],[24.083,43.12],[24.068,43.115],[24.06,43.119],[24.05,43.141],[24.055,43.158],[24.05,43.178],[24.057,43.2],[24.051,43.214],[24.089,43.222],[24.103,43.241],[24.117,43.25],[24.146,43.256],[24.182,43.248],[24.238,43.247],[24.278,43.255],[24.301,43.269],[24.315,43.266],[24.33,43.279],[24.37,43.289],[24.397,43.288],[24.412,43.279]]]}},{"type":"Feature","properties":{"name":"Лясковец","id":86,"pid":81,"pop":13397,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[25.981,43.135],[25.934,43.131],[25.916,43.124],[25.887,43.095],[25.865,43.085],[25.868,43.07],[25.849,43.057],[25.839,43.035],[25.826,43.027],[25.798,43.032],[25.783,43.043],[25.756,43.042],[25.753,43.066],[25.731,43.091],[25.724,43.105],[25.749,43.128],[25.768,43.137],[25.783,43.137],[25.802,43.127],[25.817,43.13],[25.849,43.161],[25.882,43.172],[25.899,43.187],[25.905,43.184],[25.912,43.185],[25.938,43.199],[25.944,43.198],[25.944,43.185],[25.958,43.172],[25.959,43.16],[25.981,43.144],[25.981,43.135]]]}},{"type":"Feature","properties":{"name":"Любимец","id":202,"pid":28,"pop":10214,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[26.117,41.724],[26.113,41.713],[26.085,41.716],[26.07,41.709],[26.068,41.698],[26.06,41.698],[26.061,41.687],[26.068,41.672],[26.063,41.662],[26.073,41.646],[26.081,41.641],[26.09,41.642],[26.087,41.637],[26.081,41.634],[26.073,41.636],[26.06,41.647],[26.048,41.651],[26.038,41.646],[26.029,41.626],[26.022,41.62],[26.005,41.617],[25.996,41.619],[25.979,41.635],[25.973,41.645],[25.972,41.658],[26.002,41.713],[26.006,41.738],[26.001,41.742],[25.968,41.74],[25.962,41.744],[25.956,41.785],[25.979,41.811],[25.969,41.829],[25.968,41.838],[25.976,41.844],[26.008,41.842],[26.038,41.85],[26.044,41.86],[26.048,41.888],[26.069,41.885],[26.078,41.887],[26.095,41.909],[26.101,41.912],[26.128,41.91],[26.143,41.916],[26.165,41.939],[26.216,41.966],[26.224,41.932],[26.217,41.905],[26.209,41.89],[26.188,41.88],[26.171,41.869],[26.143,41.839],[26.139,41.83],[26.139,41.816],[26.159,41.809],[26.159,41.801],[26.152,41.799],[26.126,41.799],[26.103,41.793],[26.076,41.794],[26.066,41.782],[26.063,41.759],[26.04,41.744],[26.043,41.736],[26.062,41.729],[26.086,41.724],[26.113,41.722],[26.117,41.724]]]}},{"type":"Feature","properties":{"name":"Мадан","id":68,"pid":23,"pop":12276,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[25.022,41.582],[25.016,41.578],[25.015,41.561],[25.04,41.535],[25.043,41.515],[25.058,41.506],[25.043,41.489],[25.02,41.485],[25.017,41.47],[24.988,41.448],[24.985,41.432],[24.957,41.435],[24.941,41.431],[24.931,41.443],[24.925,41.463],[24.911,41.47],[24.912,41.48],[24.92,41.492],[24.918,41.501],[24.89,41.519],[24.94,41.544],[24.951,41.567],[24.949,41.577],[24.937,41.587],[24.938,41.59],[24.955,41.59],[24.96,41.595],[24.978,41.597],[24.994,41.606],[25.005,41.603],[25.022,41.582]]]}},{"type":"Feature","properties":{"name":"Маджарово","id":96,"pid":28,"pop":1665,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[25.995,41.62],[25.984,41.605],[25.974,41.577],[25.966,41.569],[25.933,41.562],[25.91,41.564],[25.902,41.569],[25.889,41.587],[25.857,41.612],[25.84,41.643],[25.786,41.65],[25.781,41.667],[25.755,41.672],[25.756,41.687],[25.744,41.708],[25.745,41.718],[25.759,41.724],[25.816,41.727],[25.829,41.736],[25.852,41.731],[25.871,41.737],[25.895,41.737],[25.918,41.75],[25.945,41.753],[25.961,41.759],[25.961,41.75],[25.965,41.741],[25.995,41.743],[26.004,41.741],[26.006,41.738],[26.002,41.713],[25.972,41.658],[25.973,41.645],[25.979,41.635],[25.995,41.62]]]}},{"type":"Feature","properties":{"name":"Мъглиж","id":142,"pid":113,"pop":10180,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.652,42.727],[25.653,42.711],[25.694,42.691],[25.706,42.68],[25.727,42.629],[25.736,42.624],[25.758,42.625],[25.763,42.61],[25.772,42.605],[25.786,42.603],[25.785,42.6],[25.764,42.594],[25.75,42.584],[25.744,42.574],[25.729,42.579],[25.718,42.575],[25.715,42.568],[25.732,42.538],[25.712,42.545],[25.708,42.533],[25.686,42.516],[25.658,42.508],[25.623,42.511],[25.587,42.508],[25.571,42.497],[25.56,42.496],[25.565,42.524],[25.546,42.546],[25.553,42.577],[25.538,42.614],[25.536,42.629],[25.543,42.668],[25.539,42.711],[25.543,42.729],[25.545,42.732],[25.574,42.736],[25.594,42.747],[25.613,42.749],[25.62,42.748],[25.639,42.729],[25.652,42.727]]]}},{"type":"Feature","properties":{"name":"Макреш","id":324,"pid":46,"pop":1630,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.49,43.809],[22.504,43.81],[22.523,43.805],[22.573,43.809],[22.61,43.788],[22.64,43.799],[22.699,43.804],[22.721,43.806],[22.739,43.799],[22.754,43.801],[22.73,43.776],[22.707,43.761],[22.687,43.756],[22.666,43.755],[22.644,43.746],[22.636,43.753],[22.625,43.752],[22.617,43.759],[22.593,43.752],[22.569,43.741],[22.567,43.744],[22.573,43.751],[22.572,43.755],[22.555,43.749],[22.559,43.758],[22.535,43.758],[22.511,43.739],[22.48,43.726],[22.454,43.694],[22.421,43.683],[22.408,43.696],[22.405,43.717],[22.396,43.73],[22.4,43.738],[22.398,43.753],[22.402,43.759],[22.394,43.759],[22.377,43.774],[22.357,43.809],[22.36,43.822],[22.368,43.827],[22.372,43.835],[22.412,43.84],[22.441,43.825],[22.458,43.823],[22.49,43.809]]]}},{"type":"Feature","properties":{"name":"Малко Търново","id":102,"pid":44,"pop":3793,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.481,42.192],[27.531,42.181],[27.545,42.16],[27.566,42.15],[27.574,42.15],[27.583,42.154],[27.585,42.167],[27.605,42.183],[27.605,42.196],[27.622,42.19],[27.634,42.171],[27.641,42.168],[27.663,42.164],[27.667,42.146],[27.65,42.119],[27.653,42.105],[27.672,42.089],[27.676,42.075],[27.706,42.069],[27.726,42.044],[27.758,42.031],[27.767,42.022],[27.783,41.993],[27.775,41.979],[27.767,41.973],[27.75,41.973],[27.747,41.975],[27.753,41.98],[27.741,41.985],[27.734,41.979],[27.727,41.983],[27.704,41.984],[27.707,41.978],[27.687,41.976],[27.68,41.964],[27.677,41.964],[27.674,41.969],[27.665,41.963],[27.661,41.968],[27.645,41.961],[27.643,41.965],[27.636,41.963],[27.627,41.965],[27.625,41.961],[27.633,41.956],[27.619,41.948],[27.613,41.947],[27.613,41.953],[27.607,41.955],[27.591,41.942],[27.579,41.947],[27.579,41.942],[27.571,41.932],[27.579,41.931],[27.58,41.929],[27.568,41.924],[27.577,41.921],[27.579,41.917],[27.575,41.913],[27.563,41.911],[27.546,41.923],[27.531,41.946],[27.518,41.959],[27.514,41.962],[27.489,41.961],[27.471,41.976],[27.449,41.977],[27.435,41.996],[27.422,41.996],[27.417,42.005],[27.4,42.018],[27.375,42.058],[27.358,42.064],[27.343,42.065],[27.342,42.074],[27.332,42.086],[27.288,42.1],[27.278,42.106],[27.284,42.113],[27.286,42.141],[27.27,42.181],[27.274,42.193],[27.284,42.2],[27.322,42.203],[27.331,42.196],[27.341,42.195],[27.359,42.203],[27.378,42.205],[27.401,42.19],[27.426,42.195],[27.453,42.19],[27.481,42.192]]]}},{"type":"Feature","properties":{"name":"Марица","id":114,"pid":53,"pop":32438,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.834,42.274],[24.842,42.257],[24.854,42.249],[24.868,42.234],[24.872,42.221],[24.878,42.216],[24.926,42.214],[24.927,42.228],[24.936,42.233],[24.978,42.229],[25.004,42.184],[25.001,42.177],[24.99,42.17],[24.984,42.158],[25.014,42.136],[24.992,42.136],[24.982,42.142],[24.939,42.144],[24.837,42.137],[24.838,42.14],[24.832,42.149],[24.811,42.156],[24.801,42.17],[24.779,42.173],[24.756,42.182],[24.744,42.18],[24.734,42.165],[24.721,42.161],[24.706,42.143],[24.671,42.15],[24.65,42.164],[24.625,42.161],[24.613,42.167],[24.6,42.231],[24.583,42.252],[24.601,42.263],[24.62,42.273],[24.663,42.272],[24.668,42.276],[24.672,42.296],[24.676,42.299],[24.688,42.297],[24.699,42.287],[24.727,42.288],[24.736,42.306],[24.752,42.312],[24.768,42.309],[24.783,42.294],[24.821,42.276],[24.834,42.274]]]}},{"type":"Feature","properties":{"name":"Медковец","id":70,"pid":15,"pop":4029,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.188,43.579],[23.172,43.576],[23.163,43.562],[23.142,43.559],[23.131,43.563],[23.091,43.587],[23.049,43.6],[23.065,43.615],[23.075,43.636],[23.112,43.667],[23.123,43.686],[23.132,43.692],[23.158,43.689],[23.166,43.692],[23.17,43.7],[23.17,43.723],[23.157,43.735],[23.213,43.735],[23.26,43.746],[23.297,43.751],[23.288,43.737],[23.285,43.725],[23.298,43.706],[23.282,43.68],[23.281,43.661],[23.269,43.655],[23.237,43.653],[23.233,43.637],[23.24,43.625],[23.236,43.617],[23.206,43.598],[23.188,43.579]]]}},{"type":"Feature","properties":{"name":"Мездра","id":84,"pid":49,"pop":21748,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[23.82,43.266],[23.829,43.263],[23.844,43.264],[23.854,43.26],[23.863,43.265],[23.873,43.265],[23.906,43.255],[23.897,43.247],[23.898,43.232],[23.891,43.214],[23.881,43.207],[23.866,43.204],[23.856,43.19],[23.86,43.183],[23.883,43.166],[23.89,43.155],[23.887,43.145],[23.882,43.142],[23.854,43.147],[23.846,43.144],[23.843,43.139],[23.846,43.118],[23.829,43.106],[23.832,43.089],[23.815,43.075],[23.805,43.059],[23.788,43.058],[23.757,43.049],[23.725,43.027],[23.708,43.022],[23.696,43.024],[23.671,43.041],[23.662,43.043],[23.646,43.03],[23.626,43.019],[23.601,42.993],[23.585,42.988],[23.575,42.99],[23.555,43.008],[23.536,43.043],[23.497,43.077],[23.481,43.105],[23.483,43.11],[23.509,43.134],[23.529,43.13],[23.563,43.116],[23.582,43.115],[23.606,43.108],[23.624,43.111],[23.653,43.131],[23.65,43.149],[23.627,43.169],[23.624,43.18],[23.637,43.205],[23.647,43.212],[23.667,43.213],[23.673,43.219],[23.673,43.227],[23.665,43.239],[23.667,43.249],[23.707,43.252],[23.721,43.264],[23.73,43.265],[23.733,43.249],[23.744,43.246],[23.763,43.246],[23.775,43.249],[23.802,43.266],[23.81,43.268],[23.82,43.266]]]}},{"type":"Feature","properties":{"name":"Минерални бани","id":145,"pid":28,"pop":5899,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[25.432,41.972],[25.429,41.955],[25.431,41.95],[25.454,41.934],[25.46,41.923],[25.456,41.908],[25.437,41.882],[25.429,41.862],[25.416,41.853],[25.393,41.847],[25.39,41.836],[25.38,41.831],[25.368,41.817],[25.345,41.813],[25.339,41.809],[25.334,41.794],[25.323,41.79],[25.309,41.806],[25.281,41.816],[25.28,41.842],[25.269,41.871],[25.275,41.893],[25.292,41.902],[25.328,41.929],[25.344,41.947],[25.349,41.966],[25.371,41.979],[25.401,41.978],[25.419,41.986],[25.428,41.986],[25.428,41.973],[25.432,41.972]]]}},{"type":"Feature","properties":{"name":"Мирково","id":230,"pid":38,"pop":2540,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[24.04,42.753],[24.036,42.731],[24.042,42.708],[24.038,42.697],[24.046,42.685],[24.037,42.676],[24.033,42.645],[24.02,42.635],[23.988,42.628],[23.977,42.621],[23.973,42.614],[23.972,42.57],[23.912,42.561],[23.902,42.551],[23.886,42.554],[23.899,42.577],[23.895,42.586],[23.904,42.594],[23.901,42.606],[23.908,42.622],[23.905,42.631],[23.89,42.635],[23.886,42.634],[23.886,42.641],[23.898,42.655],[23.898,42.66],[23.886,42.667],[23.883,42.672],[23.9,42.694],[23.906,42.709],[23.91,42.739],[23.923,42.776],[23.92,42.795],[23.934,42.792],[23.952,42.78],[24.02,42.755],[24.04,42.753]]]}},{"type":"Feature","properties":{"name":"Мизия","id":176,"pid":49,"pop":7570,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[23.876,43.742],[23.891,43.732],[23.909,43.726],[23.917,43.715],[23.928,43.711],[23.93,43.696],[23.947,43.689],[23.941,43.673],[23.954,43.653],[23.952,43.637],[23.972,43.632],[23.973,43.617],[23.985,43.607],[23.958,43.606],[23.915,43.596],[23.875,43.597],[23.852,43.586],[23.836,43.573],[23.818,43.57],[23.767,43.581],[23.769,43.592],[23.764,43.604],[23.726,43.612],[23.717,43.618],[23.701,43.618],[23.691,43.622],[23.69,43.631],[23.694,43.638],[23.718,43.642],[23.738,43.654],[23.76,43.654],[23.793,43.67],[23.801,43.677],[23.819,43.68],[23.841,43.69],[23.843,43.698],[23.839,43.706],[23.845,43.723],[23.843,43.737],[23.857,43.758],[23.859,43.77],[23.876,43.742]]]}},{"type":"Feature","properties":{"name":"Момчилград","id":10,"pid":8,"pop":16263,"oblast":"Кърджали"},"geometry":{"type":"Polygon","coordinates":[[[25.613,41.633],[25.601,41.6],[25.599,41.584],[25.595,41.577],[25.62,41.556],[25.628,41.541],[25.623,41.526],[25.597,41.498],[25.599,41.489],[25.614,41.479],[25.612,41.473],[25.601,41.465],[25.599,41.441],[25.59,41.438],[25.568,41.439],[25.558,41.42],[25.547,41.418],[25.502,41.432],[25.489,41.427],[25.467,41.448],[25.445,41.456],[25.406,41.438],[25.392,41.434],[25.38,41.436],[25.371,41.448],[25.377,41.458],[25.375,41.472],[25.38,41.488],[25.372,41.511],[25.376,41.522],[25.387,41.531],[25.387,41.534],[25.361,41.541],[25.362,41.554],[25.366,41.559],[25.383,41.567],[25.398,41.569],[25.419,41.578],[25.431,41.579],[25.446,41.589],[25.508,41.599],[25.527,41.607],[25.539,41.607],[25.542,41.611],[25.542,41.624],[25.548,41.629],[25.594,41.635],[25.613,41.633]]]}},{"type":"Feature","properties":{"name":"Монтана","id":298,"pid":15,"pop":53856,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.188,43.579],[23.203,43.57],[23.217,43.566],[23.233,43.553],[23.243,43.551],[23.287,43.568],[23.301,43.568],[23.318,43.563],[23.339,43.562],[23.336,43.551],[23.338,43.527],[23.326,43.512],[23.301,43.504],[23.283,43.494],[23.26,43.496],[23.248,43.493],[23.238,43.485],[23.247,43.477],[23.264,43.476],[23.273,43.471],[23.297,43.47],[23.31,43.459],[23.33,43.454],[23.355,43.438],[23.402,43.432],[23.421,43.421],[23.424,43.409],[23.421,43.395],[23.406,43.384],[23.389,43.346],[23.374,43.333],[23.345,43.315],[23.32,43.332],[23.312,43.346],[23.302,43.353],[23.23,43.352],[23.185,43.366],[23.172,43.374],[23.148,43.373],[23.137,43.378],[23.134,43.382],[23.136,43.392],[23.161,43.412],[23.164,43.422],[23.128,43.429],[23.113,43.435],[23.088,43.461],[23.065,43.471],[23.05,43.509],[23.045,43.512],[23.03,43.509],[23.006,43.488],[22.999,43.472],[22.964,43.477],[22.946,43.484],[22.921,43.483],[22.912,43.5],[22.874,43.501],[22.855,43.505],[22.877,43.52],[22.896,43.558],[22.915,43.575],[22.925,43.579],[22.945,43.571],[22.955,43.57],[22.984,43.585],[23.004,43.588],[23.015,43.593],[23.036,43.595],[23.049,43.6],[23.091,43.587],[23.131,43.563],[23.142,43.559],[23.163,43.562],[23.172,43.576],[23.188,43.579]]]}},{"type":"Feature","properties":{"name":"Неделино","id":25,"pid":23,"pop":7221,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[25.194,41.494],[25.195,41.483],[25.188,41.477],[25.187,41.455],[25.18,41.453],[25.175,41.446],[25.159,41.437],[25.121,41.428],[25.103,41.431],[25.089,41.428],[25.06,41.443],[25.06,41.449],[25.044,41.47],[25.035,41.472],[25.017,41.47],[25.02,41.485],[25.043,41.489],[25.058,41.506],[25.073,41.497],[25.084,41.497],[25.106,41.497],[25.137,41.506],[25.167,41.509],[25.18,41.506],[25.194,41.494]]]}},{"type":"Feature","properties":{"name":"Несебър","id":109,"pid":44,"pop":22348,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.713,42.898],[27.725,42.887],[27.717,42.876],[27.723,42.87],[27.757,42.842],[27.777,42.841],[27.789,42.83],[27.797,42.828],[27.826,42.832],[27.856,42.842],[27.891,42.841],[27.898,42.802],[27.908,42.777],[27.898,42.765],[27.896,42.757],[27.908,42.714],[27.903,42.707],[27.889,42.706],[27.824,42.71],[27.802,42.708],[27.771,42.715],[27.735,42.715],[27.717,42.693],[27.715,42.684],[27.724,42.671],[27.733,42.666],[27.721,42.658],[27.719,42.653],[27.707,42.658],[27.697,42.657],[27.683,42.641],[27.649,42.705],[27.644,42.726],[27.598,42.786],[27.598,42.801],[27.59,42.814],[27.593,42.817],[27.611,42.819],[27.647,42.851],[27.652,42.87],[27.642,42.885],[27.659,42.89],[27.652,42.907],[27.713,42.898]]]}},{"type":"Feature","properties":{"name":"Невестино","id":321,"pid":97,"pop":2821,"oblast":"Кюстендил"},"geometry":{"type":"Polygon","coordinates":[[[22.946,42.212],[22.951,42.212],[22.94,42.199],[22.93,42.176],[22.905,42.146],[22.908,42.13],[22.898,42.122],[22.887,42.09],[22.899,42.075],[22.926,42.076],[22.926,42.042],[22.914,42.03],[22.86,42.021],[22.852,42.024],[22.843,42.02],[22.827,42.02],[22.815,42.027],[22.799,42.046],[22.792,42.037],[22.78,42.036],[22.75,42.046],[22.74,42.045],[22.733,42.048],[22.727,42.058],[22.718,42.063],[22.718,42.07],[22.698,42.063],[22.677,42.064],[22.67,42.07],[22.65,42.076],[22.65,42.08],[22.63,42.093],[22.62,42.096],[22.648,42.133],[22.653,42.135],[22.664,42.127],[22.673,42.135],[22.68,42.142],[22.684,42.159],[22.705,42.172],[22.739,42.224],[22.852,42.276],[22.869,42.289],[22.885,42.314],[22.903,42.326],[22.921,42.328],[22.928,42.307],[22.954,42.281],[22.954,42.27],[22.943,42.254],[22.946,42.229],[22.939,42.214],[22.946,42.212]]]}},{"type":"Feature","properties":{"name":"Никола Козлево","id":69,"pid":31,"pop":6100,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[27.325,43.638],[27.334,43.621],[27.348,43.619],[27.37,43.623],[27.415,43.637],[27.423,43.637],[27.436,43.627],[27.454,43.605],[27.442,43.592],[27.425,43.583],[27.355,43.56],[27.3,43.5],[27.289,43.502],[27.279,43.519],[27.268,43.52],[27.259,43.516],[27.229,43.493],[27.197,43.491],[27.185,43.509],[27.16,43.522],[27.155,43.535],[27.162,43.548],[27.187,43.553],[27.187,43.558],[27.175,43.574],[27.186,43.608],[27.194,43.612],[27.215,43.608],[27.22,43.61],[27.237,43.65],[27.24,43.654],[27.263,43.658],[27.272,43.668],[27.298,43.665],[27.31,43.661],[27.325,43.638]]]}},{"type":"Feature","properties":{"name":"Николаево","id":209,"pid":113,"pop":4346,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.862,42.551],[25.84,42.547],[25.808,42.55],[25.771,42.536],[25.765,42.536],[25.751,42.544],[25.739,42.538],[25.732,42.538],[25.715,42.568],[25.716,42.573],[25.729,42.579],[25.744,42.574],[25.75,42.584],[25.764,42.594],[25.782,42.598],[25.786,42.601],[25.768,42.607],[25.76,42.614],[25.756,42.632],[25.763,42.642],[25.794,42.644],[25.805,42.635],[25.832,42.635],[25.849,42.622],[25.853,42.596],[25.862,42.571],[25.862,42.551]]]}},{"type":"Feature","properties":{"name":"Никопол","id":48,"pid":18,"pop":9305,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[25.019,43.727],[25.046,43.71],[25.053,43.689],[25.049,43.682],[25.039,43.677],[25.023,43.675],[24.99,43.678],[24.96,43.661],[24.961,43.647],[24.974,43.635],[24.985,43.63],[25.014,43.628],[25.025,43.624],[25.029,43.619],[25.026,43.606],[24.986,43.587],[24.981,43.582],[24.982,43.574],[24.995,43.566],[25.025,43.561],[25.038,43.564],[25.06,43.579],[25.067,43.58],[25.074,43.567],[25.107,43.553],[25.109,43.547],[25.102,43.542],[25.068,43.537],[25.057,43.529],[25.056,43.523],[25.007,43.512],[25.002,43.508],[25.004,43.5],[24.989,43.494],[24.9,43.501],[24.874,43.514],[24.865,43.53],[24.848,43.522],[24.833,43.522],[24.831,43.536],[24.845,43.55],[24.829,43.557],[24.826,43.572],[24.816,43.58],[24.819,43.617],[24.808,43.639],[24.815,43.658],[24.826,43.674],[24.819,43.697],[24.82,43.722],[24.832,43.722],[24.859,43.716],[24.875,43.715],[24.906,43.718],[24.951,43.732],[24.985,43.737],[24.993,43.738],[25.019,43.727]]]}},{"type":"Feature","properties":{"name":"Нова Загора","id":95,"pid":94,"pop":39010,"oblast":"Сливен"},"geometry":{"type":"Polygon","coordinates":[[[26.01,42.63],[26.021,42.624],[26.015,42.586],[26.031,42.588],[26.055,42.602],[26.074,42.594],[26.087,42.598],[26.097,42.605],[26.138,42.605],[26.147,42.593],[26.145,42.569],[26.154,42.562],[26.174,42.56],[26.194,42.539],[26.185,42.494],[26.185,42.467],[26.189,42.461],[26.197,42.458],[26.229,42.458],[26.226,42.454],[26.232,42.425],[26.228,42.419],[26.216,42.418],[26.191,42.424],[26.185,42.419],[26.186,42.411],[26.21,42.376],[26.222,42.377],[26.245,42.392],[26.253,42.39],[26.253,42.378],[26.237,42.339],[26.187,42.267],[26.18,42.24],[26.126,42.25],[26.106,42.259],[26.094,42.262],[26.082,42.259],[26.064,42.248],[26.057,42.248],[26.055,42.27],[26.026,42.271],[26.019,42.274],[25.995,42.304],[25.983,42.311],[25.959,42.318],[25.951,42.329],[25.948,42.355],[25.923,42.388],[25.92,42.403],[25.914,42.412],[25.895,42.419],[25.887,42.427],[25.892,42.439],[25.912,42.455],[25.914,42.467],[25.913,42.473],[25.896,42.487],[25.883,42.511],[25.875,42.519],[25.865,42.535],[25.867,42.544],[25.917,42.566],[25.92,42.577],[25.913,42.586],[25.92,42.6],[25.929,42.609],[25.945,42.612],[25.968,42.61],[25.997,42.626],[26.01,42.63]]]}},{"type":"Feature","properties":{"name":"Нови пазар","id":85,"pid":31,"pop":16879,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[27.373,43.518],[27.37,43.508],[27.346,43.487],[27.348,43.484],[27.37,43.483],[27.374,43.476],[27.373,43.469],[27.348,43.442],[27.325,43.427],[27.316,43.404],[27.321,43.386],[27.332,43.377],[27.349,43.371],[27.352,43.364],[27.332,43.335],[27.31,43.322],[27.29,43.322],[27.291,43.336],[27.286,43.339],[27.279,43.338],[27.269,43.33],[27.257,43.33],[27.229,43.353],[27.2,43.36],[27.192,43.366],[27.185,43.375],[27.188,43.401],[27.15,43.436],[27.132,43.433],[27.114,43.445],[27.088,43.445],[27.091,43.48],[27.094,43.481],[27.102,43.476],[27.107,43.48],[27.098,43.497],[27.098,43.509],[27.113,43.506],[27.132,43.507],[27.15,43.516],[27.159,43.524],[27.185,43.509],[27.197,43.491],[27.22,43.491],[27.237,43.496],[27.259,43.516],[27.268,43.52],[27.279,43.519],[27.289,43.502],[27.3,43.5],[27.34,43.543],[27.343,43.527],[27.355,43.522],[27.369,43.522],[27.373,43.518]]]}},{"type":"Feature","properties":{"name":"Ново село","id":136,"pid":46,"pop":2979,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.872,44.142],[22.912,44.119],[22.898,44.099],[22.892,44.074],[22.875,44.062],[22.859,44.058],[22.848,44.062],[22.845,44.082],[22.837,44.087],[22.816,44.087],[22.782,44.08],[22.785,44.103],[22.782,44.123],[22.769,44.122],[22.743,44.108],[22.736,44.108],[22.732,44.118],[22.733,44.14],[22.723,44.152],[22.722,44.165],[22.726,44.172],[22.751,44.191],[22.752,44.2],[22.762,44.196],[22.801,44.168],[22.872,44.142]]]}},{"type":"Feature","properties":{"name":"Омуртаг","id":42,"pid":41,"pop":21853,"oblast":"Търговище"},"geometry":{"type":"Polygon","coordinates":[[[26.668,43.096],[26.661,43.093],[26.661,43.067],[26.632,43.061],[26.623,43.055],[26.629,43.048],[26.621,43.036],[26.633,43.029],[26.632,43.024],[26.623,43.018],[26.598,43.013],[26.579,42.998],[26.558,43.014],[26.526,43.021],[26.506,43.02],[26.459,43.009],[26.432,43.011],[26.419,43.018],[26.401,43.032],[26.391,43.031],[26.374,43.013],[26.365,43.011],[26.359,43.016],[26.366,43.039],[26.363,43.05],[26.355,43.05],[26.33,43.037],[26.317,43.039],[26.307,43.044],[26.301,43.044],[26.293,43.052],[26.293,43.064],[26.315,43.086],[26.315,43.107],[26.331,43.125],[26.317,43.14],[26.296,43.155],[26.303,43.164],[26.312,43.167],[26.339,43.166],[26.379,43.176],[26.397,43.188],[26.399,43.192],[26.415,43.186],[26.424,43.186],[26.452,43.188],[26.471,43.193],[26.495,43.188],[26.502,43.182],[26.502,43.174],[26.489,43.156],[26.495,43.142],[26.516,43.142],[26.546,43.136],[26.57,43.143],[26.581,43.143],[26.599,43.13],[26.65,43.111],[26.668,43.096]]]}},{"type":"Feature","properties":{"name":"Опака","id":207,"pid":41,"pop":6664,"oblast":"Търговище"},"geometry":{"type":"Polygon","coordinates":[[[26.018,43.45],[26.043,43.476],[26.044,43.502],[26.053,43.518],[26.125,43.531],[26.13,43.527],[26.14,43.526],[26.155,43.53],[26.169,43.53],[26.185,43.537],[26.205,43.536],[26.215,43.544],[26.221,43.539],[26.231,43.515],[26.22,43.5],[26.216,43.487],[26.222,43.443],[26.22,43.439],[26.207,43.433],[26.167,43.422],[26.124,43.438],[26.115,43.439],[26.097,43.428],[26.085,43.441],[26.073,43.449],[26.052,43.447],[26.018,43.45]]]}},{"type":"Feature","properties":{"name":"Опан","id":247,"pid":113,"pop":2950,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.77,42.267],[25.772,42.257],[25.782,42.246],[25.813,42.234],[25.832,42.222],[25.843,42.221],[25.846,42.21],[25.843,42.202],[25.833,42.201],[25.819,42.192],[25.811,42.193],[25.8,42.2],[25.788,42.204],[25.777,42.203],[25.771,42.199],[25.768,42.192],[25.77,42.181],[25.783,42.16],[25.784,42.141],[25.802,42.12],[25.806,42.088],[25.821,42.06],[25.8,42.049],[25.791,42.047],[25.768,42.047],[25.752,42.053],[25.746,42.091],[25.737,42.101],[25.723,42.11],[25.714,42.133],[25.707,42.139],[25.686,42.139],[25.64,42.113],[25.633,42.119],[25.641,42.168],[25.637,42.187],[25.627,42.192],[25.631,42.203],[25.646,42.219],[25.653,42.259],[25.68,42.281],[25.696,42.286],[25.721,42.283],[25.752,42.27],[25.77,42.267]]]}},{"type":"Feature","properties":{"name":"Оряхово","id":64,"pid":49,"pop":11522,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[23.941,43.753],[23.99,43.751],[24.015,43.742],[24.028,43.734],[24.075,43.721],[24.093,43.712],[24.148,43.7],[24.157,43.695],[24.18,43.689],[24.208,43.69],[24.284,43.702],[24.322,43.704],[24.292,43.644],[24.282,43.643],[24.267,43.655],[24.261,43.653],[24.256,43.637],[24.228,43.655],[24.217,43.656],[24.207,43.648],[24.186,43.614],[24.171,43.605],[24.127,43.609],[24.118,43.618],[24.111,43.619],[24.093,43.612],[24.07,43.617],[24.049,43.603],[24.035,43.6],[24.009,43.61],[23.985,43.607],[23.979,43.61],[23.973,43.617],[23.972,43.632],[23.952,43.637],[23.954,43.653],[23.941,43.673],[23.947,43.689],[23.93,43.696],[23.928,43.711],[23.917,43.715],[23.909,43.726],[23.891,43.732],[23.874,43.743],[23.859,43.77],[23.894,43.759],[23.941,43.753]]]}},{"type":"Feature","properties":{"name":"Панагюрище","id":101,"pid":74,"pop":25263,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.282,42.612],[24.298,42.602],[24.307,42.583],[24.331,42.558],[24.33,42.556],[24.295,42.557],[24.281,42.549],[24.269,42.534],[24.263,42.506],[24.254,42.484],[24.267,42.471],[24.271,42.456],[24.313,42.445],[24.323,42.439],[24.326,42.43],[24.317,42.421],[24.283,42.416],[24.278,42.408],[24.278,42.402],[24.286,42.392],[24.314,42.372],[24.282,42.354],[24.263,42.355],[24.255,42.352],[24.25,42.355],[24.246,42.355],[24.238,42.338],[24.231,42.338],[24.198,42.362],[24.184,42.38],[24.174,42.401],[24.164,42.412],[24.147,42.422],[24.11,42.433],[24.089,42.449],[24.065,42.459],[24.053,42.459],[24.033,42.448],[24.017,42.443],[23.991,42.446],[23.975,42.454],[23.924,42.492],[23.918,42.523],[23.902,42.544],[23.902,42.551],[23.912,42.561],[23.963,42.567],[23.987,42.574],[24.031,42.545],[24.04,42.541],[24.05,42.541],[24.077,42.564],[24.095,42.57],[24.117,42.563],[24.126,42.563],[24.132,42.567],[24.136,42.592],[24.146,42.606],[24.225,42.622],[24.256,42.612],[24.282,42.612]]]}},{"type":"Feature","properties":{"name":"Първомай","id":93,"pid":53,"pop":25883,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[25.374,42.093],[25.342,42.046],[25.331,42.023],[25.332,42.017],[25.343,42],[25.349,41.966],[25.343,41.945],[25.328,41.929],[25.292,41.902],[25.275,41.893],[25.263,41.891],[25.218,41.873],[25.203,41.862],[25.191,41.847],[25.17,41.833],[25.16,41.844],[25.161,41.873],[25.147,41.911],[25.124,41.91],[25.111,41.916],[25.083,41.92],[25.084,41.932],[25.081,41.945],[25.084,41.948],[25.118,41.951],[25.124,41.958],[25.141,41.966],[25.138,41.976],[25.113,41.998],[25.095,42.018],[25.094,42.027],[25.096,42.034],[25.103,42.039],[25.135,42.047],[25.144,42.057],[25.14,42.066],[25.122,42.079],[25.123,42.085],[25.145,42.096],[25.169,42.131],[25.196,42.142],[25.204,42.149],[25.232,42.151],[25.263,42.149],[25.288,42.161],[25.303,42.163],[25.317,42.143],[25.347,42.124],[25.358,42.104],[25.374,42.093]]]}},{"type":"Feature","properties":{"name":"Павел баня","id":165,"pid":113,"pop":14186,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.279,42.472],[25.268,42.464],[25.249,42.472],[25.223,42.467],[25.211,42.482],[25.194,42.489],[25.169,42.481],[25.124,42.476],[25.104,42.485],[25.08,42.489],[25.063,42.501],[25.054,42.512],[25.044,42.551],[25.022,42.588],[25.023,42.594],[25.046,42.622],[25.042,42.651],[25.035,42.67],[25.042,42.698],[25.031,42.719],[25.033,42.731],[25.07,42.73],[25.085,42.725],[25.106,42.725],[25.148,42.744],[25.184,42.748],[25.208,42.76],[25.214,42.742],[25.225,42.726],[25.229,42.699],[25.246,42.678],[25.254,42.657],[25.272,42.645],[25.311,42.63],[25.317,42.621],[25.315,42.61],[25.291,42.573],[25.272,42.562],[25.258,42.546],[25.263,42.525],[25.259,42.512],[25.283,42.492],[25.277,42.481],[25.279,42.472]]]}},{"type":"Feature","properties":{"name":"Павликени","id":181,"pid":81,"pop":23869,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[25.542,43.268],[25.541,43.25],[25.528,43.234],[25.514,43.234],[25.495,43.246],[25.48,43.241],[25.484,43.223],[25.475,43.191],[25.468,43.18],[25.472,43.152],[25.48,43.143],[25.481,43.136],[25.454,43.133],[25.421,43.114],[25.413,43.115],[25.41,43.135],[25.391,43.148],[25.384,43.149],[25.378,43.147],[25.365,43.133],[25.347,43.127],[25.346,43.113],[25.337,43.106],[25.323,43.108],[25.294,43.105],[25.278,43.125],[25.279,43.135],[25.276,43.146],[25.279,43.168],[25.271,43.184],[25.251,43.193],[25.232,43.19],[25.225,43.192],[25.214,43.204],[25.184,43.214],[25.178,43.22],[25.182,43.228],[25.208,43.224],[25.212,43.229],[25.193,43.262],[25.185,43.287],[25.208,43.298],[25.228,43.303],[25.257,43.322],[25.268,43.342],[25.263,43.364],[25.281,43.375],[25.307,43.398],[25.34,43.406],[25.375,43.405],[25.399,43.414],[25.432,43.415],[25.449,43.393],[25.453,43.373],[25.448,43.366],[25.428,43.354],[25.432,43.341],[25.462,43.317],[25.472,43.301],[25.503,43.291],[25.542,43.268]]]}},{"type":"Feature","properties":{"name":"Пазарджик","id":292,"pid":74,"pop":114817,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.429,42.355],[24.429,42.348],[24.435,42.344],[24.458,42.336],[24.466,42.33],[24.467,42.321],[24.475,42.311],[24.463,42.294],[24.446,42.284],[24.463,42.266],[24.485,42.226],[24.476,42.193],[24.483,42.189],[24.519,42.185],[24.531,42.17],[24.52,42.16],[24.485,42.152],[24.464,42.141],[24.445,42.124],[24.444,42.119],[24.448,42.114],[24.434,42.109],[24.397,42.104],[24.383,42.098],[24.357,42.116],[24.342,42.142],[24.329,42.144],[24.285,42.113],[24.276,42.081],[24.264,42.063],[24.248,42.054],[24.228,42.048],[24.215,42.036],[24.184,42.063],[24.175,42.08],[24.164,42.09],[24.158,42.112],[24.163,42.13],[24.181,42.15],[24.196,42.177],[24.225,42.204],[24.226,42.217],[24.208,42.262],[24.209,42.272],[24.226,42.27],[24.244,42.28],[24.267,42.286],[24.275,42.293],[24.272,42.308],[24.251,42.324],[24.238,42.338],[24.244,42.354],[24.25,42.355],[24.255,42.352],[24.263,42.355],[24.282,42.354],[24.314,42.372],[24.341,42.377],[24.366,42.373],[24.395,42.358],[24.429,42.355]]]}},{"type":"Feature","properties":{"name":"Перник","id":301,"pid":119,"pop":97181,"oblast":"Перник"},"geometry":{"type":"Polygon","coordinates":[[[23.058,42.746],[23.061,42.729],[23.073,42.721],[23.12,42.702],[23.128,42.694],[23.133,42.678],[23.14,42.671],[23.18,42.664],[23.193,42.654],[23.202,42.605],[23.181,42.595],[23.179,42.592],[23.182,42.589],[23.22,42.587],[23.237,42.583],[23.263,42.551],[23.288,42.548],[23.295,42.544],[23.3,42.525],[23.287,42.513],[23.271,42.49],[23.254,42.477],[23.248,42.46],[23.229,42.459],[23.21,42.455],[23.196,42.456],[23.168,42.474],[23.115,42.52],[23.096,42.533],[23.075,42.541],[23.062,42.542],[23.016,42.567],[22.993,42.571],[22.985,42.58],[22.974,42.587],[22.918,42.59],[22.888,42.599],[22.876,42.621],[22.859,42.628],[22.883,42.661],[22.904,42.67],[22.913,42.669],[22.945,42.659],[22.962,42.642],[22.969,42.641],[22.978,42.679],[22.997,42.708],[22.993,42.713],[22.978,42.713],[22.975,42.728],[22.985,42.734],[23.015,42.739],[23.019,42.754],[23.049,42.754],[23.058,42.746]]]}},{"type":"Feature","properties":{"name":"Перущица","id":100,"pid":53,"pop":5058,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.505,42.077],[24.5,42.075],[24.495,42.078],[24.506,42.097],[24.55,42.127],[24.565,42.118],[24.578,42.092],[24.597,42.074],[24.591,42.052],[24.6,42.033],[24.599,42.024],[24.579,42.02],[24.537,42.02],[24.533,42.025],[24.535,42.065],[24.518,42.079],[24.505,42.077]]]}},{"type":"Feature","properties":{"name":"Пещера","id":187,"pid":74,"pop":18899,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.383,42.098],[24.355,42.087],[24.341,42.075],[24.337,42.061],[24.341,42.041],[24.339,42.024],[24.32,41.99],[24.306,41.983],[24.288,41.965],[24.26,41.97],[24.225,41.996],[24.205,42.017],[24.224,42.045],[24.264,42.063],[24.276,42.081],[24.285,42.113],[24.326,42.142],[24.337,42.144],[24.357,42.116],[24.383,42.098]]]}},{"type":"Feature","properties":{"name":"Петрич","id":107,"pid":56,"pop":54006,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.156,41.549],[23.179,41.548],[23.196,41.541],[23.215,41.538],[23.29,41.483],[23.314,41.471],[23.333,41.47],[23.365,41.481],[23.374,41.479],[23.384,41.469],[23.385,41.441],[23.4,41.434],[23.404,41.401],[23.4,41.4],[23.395,41.392],[23.388,41.391],[23.378,41.383],[23.361,41.378],[23.352,41.368],[23.34,41.364],[23.322,41.4],[23.283,41.4],[23.264,41.39],[23.257,41.382],[23.231,41.376],[23.231,41.371],[23.225,41.367],[23.231,41.351],[23.225,41.337],[23.199,41.322],[23.189,41.323],[23.18,41.319],[23.161,41.322],[23.099,41.317],[23.057,41.324],[23.028,41.334],[23.014,41.33],[22.981,41.336],[22.974,41.333],[22.952,41.335],[22.948,41.349],[22.951,41.352],[22.964,41.353],[22.961,41.379],[22.966,41.393],[22.96,41.408],[22.954,41.412],[22.952,41.418],[22.963,41.43],[22.968,41.43],[22.979,41.447],[22.965,41.461],[22.967,41.474],[22.961,41.476],[22.961,41.491],[22.957,41.493],[22.969,41.503],[22.971,41.514],[22.958,41.534],[22.959,41.542],[22.99,41.548],[23.009,41.544],[23.023,41.545],[23.036,41.539],[23.045,41.539],[23.06,41.544],[23.07,41.553],[23.079,41.554],[23.088,41.551],[23.1,41.538],[23.11,41.534],[23.123,41.536],[23.135,41.544],[23.156,41.549]]]}},{"type":"Feature","properties":{"name":"Пирдоп","id":166,"pid":38,"pop":8293,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[24.223,42.769],[24.216,42.722],[24.22,42.714],[24.24,42.711],[24.287,42.717],[24.294,42.713],[24.308,42.695],[24.342,42.687],[24.325,42.669],[24.297,42.655],[24.295,42.648],[24.299,42.637],[24.282,42.618],[24.282,42.612],[24.256,42.612],[24.225,42.622],[24.146,42.606],[24.134,42.62],[24.134,42.646],[24.127,42.656],[24.129,42.666],[24.173,42.744],[24.194,42.773],[24.223,42.769]]]}},{"type":"Feature","properties":{"name":"Плевен","id":294,"pid":18,"pop":131152,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[24.821,43.576],[24.826,43.572],[24.829,43.557],[24.845,43.55],[24.831,43.536],[24.833,43.522],[24.842,43.52],[24.862,43.53],[24.867,43.529],[24.874,43.514],[24.891,43.504],[24.909,43.5],[24.939,43.477],[24.944,43.464],[24.9,43.45],[24.881,43.434],[24.869,43.428],[24.844,43.424],[24.814,43.427],[24.79,43.422],[24.783,43.417],[24.777,43.401],[24.766,43.389],[24.763,43.38],[24.766,43.372],[24.777,43.363],[24.791,43.358],[24.807,43.357],[24.832,43.365],[24.853,43.359],[24.854,43.353],[24.842,43.343],[24.834,43.32],[24.806,43.319],[24.741,43.297],[24.701,43.275],[24.684,43.252],[24.675,43.254],[24.66,43.275],[24.65,43.267],[24.645,43.234],[24.633,43.225],[24.591,43.22],[24.558,43.221],[24.539,43.223],[24.511,43.232],[24.478,43.232],[24.463,43.236],[24.45,43.254],[24.415,43.271],[24.412,43.279],[24.432,43.288],[24.451,43.291],[24.467,43.285],[24.481,43.273],[24.503,43.271],[24.505,43.279],[24.49,43.286],[24.49,43.289],[24.515,43.29],[24.538,43.302],[24.547,43.309],[24.559,43.34],[24.553,43.348],[24.536,43.35],[24.511,43.368],[24.469,43.383],[24.461,43.389],[24.465,43.395],[24.489,43.405],[24.492,43.416],[24.486,43.443],[24.492,43.449],[24.507,43.455],[24.538,43.453],[24.548,43.455],[24.553,43.481],[24.57,43.473],[24.598,43.485],[24.635,43.471],[24.659,43.477],[24.688,43.478],[24.698,43.483],[24.703,43.495],[24.7,43.504],[24.688,43.515],[24.687,43.523],[24.707,43.54],[24.718,43.557],[24.76,43.564],[24.785,43.563],[24.812,43.575],[24.821,43.576]]]}},{"type":"Feature","properties":{"name":"Пловдив","id":291,"pid":53,"pop":338153,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.837,42.137],[24.833,42.133],[24.812,42.131],[24.802,42.117],[24.79,42.108],[24.783,42.105],[24.765,42.103],[24.759,42.094],[24.744,42.091],[24.732,42.08],[24.708,42.087],[24.702,42.092],[24.687,42.123],[24.692,42.147],[24.707,42.144],[24.721,42.161],[24.734,42.165],[24.744,42.18],[24.756,42.182],[24.779,42.173],[24.801,42.17],[24.811,42.156],[24.832,42.149],[24.838,42.14],[24.837,42.137]]]}},{"type":"Feature","properties":{"name":"Полски Тръмбеш","id":177,"pid":81,"pop":14451,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[25.582,43.494],[25.581,43.461],[25.585,43.445],[25.568,43.43],[25.574,43.422],[25.595,43.414],[25.617,43.409],[25.626,43.402],[25.676,43.388],[25.688,43.39],[25.699,43.402],[25.715,43.404],[25.754,43.373],[25.784,43.361],[25.823,43.371],[25.817,43.356],[25.817,43.338],[25.812,43.338],[25.81,43.344],[25.806,43.344],[25.796,43.324],[25.755,43.305],[25.746,43.272],[25.738,43.267],[25.71,43.264],[25.663,43.254],[25.642,43.268],[25.604,43.259],[25.559,43.26],[25.503,43.291],[25.472,43.301],[25.462,43.317],[25.431,43.343],[25.428,43.354],[25.448,43.366],[25.453,43.378],[25.449,43.393],[25.432,43.415],[25.431,43.424],[25.445,43.433],[25.472,43.442],[25.479,43.449],[25.486,43.468],[25.528,43.483],[25.546,43.498],[25.56,43.493],[25.582,43.494]]]}},{"type":"Feature","properties":{"name":"Поморие","id":213,"pid":44,"pop":27658,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.652,42.907],[27.659,42.89],[27.642,42.885],[27.652,42.87],[27.647,42.851],[27.611,42.819],[27.593,42.817],[27.59,42.814],[27.598,42.801],[27.598,42.786],[27.644,42.726],[27.649,42.705],[27.683,42.641],[27.679,42.644],[27.654,42.644],[27.649,42.642],[27.644,42.633],[27.638,42.609],[27.643,42.58],[27.64,42.58],[27.654,42.563],[27.651,42.561],[27.63,42.569],[27.616,42.569],[27.608,42.565],[27.598,42.569],[27.585,42.566],[27.578,42.574],[27.56,42.584],[27.547,42.613],[27.525,42.626],[27.514,42.645],[27.514,42.653],[27.528,42.681],[27.527,42.687],[27.493,42.719],[27.45,42.73],[27.45,42.759],[27.438,42.787],[27.442,42.793],[27.478,42.802],[27.494,42.815],[27.495,42.824],[27.481,42.861],[27.489,42.88],[27.483,42.888],[27.483,42.9],[27.521,42.904],[27.527,42.903],[27.534,42.893],[27.543,42.892],[27.574,42.907],[27.594,42.909],[27.625,42.91],[27.652,42.907]]]}},{"type":"Feature","properties":{"name":"Попово","id":79,"pid":41,"pop":28775,"oblast":"Търговище"},"geometry":{"type":"Polygon","coordinates":[[[26.321,43.536],[26.336,43.512],[26.367,43.502],[26.367,43.472],[26.37,43.465],[26.381,43.457],[26.406,43.453],[26.466,43.463],[26.479,43.457],[26.47,43.442],[26.478,43.426],[26.448,43.401],[26.397,43.377],[26.388,43.366],[26.37,43.366],[26.341,43.357],[26.354,43.328],[26.384,43.326],[26.392,43.319],[26.406,43.316],[26.406,43.307],[26.385,43.302],[26.377,43.295],[26.388,43.278],[26.396,43.274],[26.383,43.266],[26.356,43.259],[26.35,43.234],[26.339,43.237],[26.3,43.221],[26.28,43.222],[26.258,43.236],[26.247,43.238],[26.23,43.238],[26.193,43.226],[26.159,43.241],[26.144,43.235],[26.126,43.223],[26.113,43.227],[26.099,43.242],[26.095,43.252],[26.074,43.258],[26.072,43.262],[26.076,43.269],[26.104,43.284],[26.106,43.289],[26.102,43.295],[26.097,43.3],[26.066,43.315],[26.053,43.32],[26.029,43.322],[26.03,43.365],[26.013,43.377],[25.98,43.388],[25.959,43.404],[25.959,43.409],[25.975,43.412],[25.997,43.421],[26.007,43.43],[26.018,43.45],[26.052,43.447],[26.073,43.449],[26.085,43.441],[26.097,43.428],[26.115,43.439],[26.124,43.438],[26.167,43.422],[26.207,43.433],[26.22,43.439],[26.222,43.443],[26.216,43.487],[26.22,43.5],[26.231,43.515],[26.226,43.53],[26.214,43.544],[26.231,43.566],[26.243,43.569],[26.258,43.567],[26.278,43.548],[26.321,43.536]]]}},{"type":"Feature","properties":{"name":"Пордим","id":269,"pid":18,"pop":6426,"oblast":"Плевен"},"geometry":{"type":"Polygon","coordinates":[[[25.03,43.388],[25.024,43.383],[25.022,43.362],[25.01,43.341],[24.971,43.319],[24.951,43.313],[24.935,43.303],[24.921,43.29],[24.914,43.288],[24.893,43.3],[24.865,43.305],[24.834,43.32],[24.842,43.343],[24.854,43.353],[24.853,43.359],[24.832,43.365],[24.807,43.357],[24.791,43.358],[24.769,43.369],[24.763,43.38],[24.786,43.42],[24.814,43.427],[24.844,43.424],[24.869,43.428],[24.881,43.434],[24.9,43.45],[24.944,43.464],[24.96,43.458],[24.964,43.452],[24.945,43.427],[24.944,43.403],[24.948,43.389],[24.962,43.384],[24.99,43.391],[25.03,43.388]]]}},{"type":"Feature","properties":{"name":"Правец","id":238,"pid":38,"pop":7569,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[24.09,43.006],[24.094,42.97],[24.102,42.966],[24.086,42.95],[24.073,42.945],[24.059,42.933],[24.033,42.921],[24.021,42.911],[23.992,42.897],[23.952,42.887],[23.929,42.877],[23.888,42.874],[23.896,42.888],[23.892,42.899],[23.88,42.907],[23.882,42.931],[23.869,42.947],[23.84,42.947],[23.836,42.951],[23.859,42.97],[23.873,42.991],[23.861,43.04],[23.901,43.044],[23.956,43.027],[23.971,43.028],[23.979,43.036],[23.982,43.057],[24.006,43.056],[24.049,43.067],[24.064,43.068],[24.069,43.06],[24.065,43.044],[24.07,43.033],[24.09,43.006]]]}},{"type":"Feature","properties":{"name":"Приморско","id":191,"pid":44,"pop":6064,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.745,42.333],[27.744,42.336],[27.761,42.333],[27.765,42.34],[27.788,42.341],[27.793,42.338],[27.789,42.331],[27.779,42.326],[27.789,42.323],[27.803,42.312],[27.794,42.312],[27.782,42.307],[27.771,42.294],[27.762,42.291],[27.766,42.274],[27.772,42.269],[27.762,42.269],[27.76,42.258],[27.763,42.253],[27.774,42.247],[27.781,42.249],[27.79,42.241],[27.792,42.239],[27.784,42.238],[27.784,42.235],[27.801,42.221],[27.663,42.16],[27.663,42.164],[27.634,42.171],[27.622,42.19],[27.602,42.196],[27.604,42.181],[27.585,42.167],[27.583,42.154],[27.571,42.149],[27.545,42.16],[27.531,42.181],[27.481,42.192],[27.48,42.203],[27.472,42.216],[27.474,42.227],[27.493,42.249],[27.505,42.28],[27.522,42.299],[27.54,42.344],[27.559,42.347],[27.597,42.342],[27.604,42.32],[27.644,42.315],[27.671,42.295],[27.695,42.308],[27.712,42.31],[27.725,42.322],[27.738,42.324],[27.745,42.333]]]}},{"type":"Feature","properties":{"name":"Провадия","id":137,"pid":4,"pop":22934,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.527,43.257],[27.526,43.251],[27.531,43.246],[27.553,43.233],[27.568,43.207],[27.569,43.203],[27.55,43.18],[27.548,43.172],[27.571,43.159],[27.583,43.145],[27.58,43.138],[27.569,43.129],[27.551,43.126],[27.545,43.122],[27.55,43.11],[27.57,43.096],[27.554,43.08],[27.525,43.087],[27.507,43.085],[27.487,43.091],[27.46,43.083],[27.445,43.083],[27.44,43.102],[27.444,43.118],[27.439,43.124],[27.43,43.126],[27.393,43.124],[27.371,43.105],[27.359,43.101],[27.349,43.108],[27.325,43.109],[27.292,43.102],[27.29,43.108],[27.297,43.115],[27.294,43.117],[27.285,43.116],[27.268,43.105],[27.254,43.102],[27.242,43.108],[27.22,43.11],[27.206,43.117],[27.201,43.125],[27.204,43.14],[27.23,43.167],[27.3,43.212],[27.327,43.215],[27.333,43.218],[27.331,43.224],[27.311,43.24],[27.303,43.279],[27.331,43.278],[27.359,43.272],[27.369,43.274],[27.376,43.287],[27.39,43.295],[27.431,43.297],[27.439,43.301],[27.454,43.315],[27.466,43.316],[27.483,43.312],[27.497,43.3],[27.503,43.26],[27.512,43.256],[27.527,43.257]]]}},{"type":"Feature","properties":{"name":"Раднево","id":157,"pid":113,"pop":20079,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.932,42.377],[25.948,42.355],[25.951,42.329],[25.959,42.318],[25.983,42.311],[25.995,42.304],[26.019,42.274],[26.026,42.271],[26.055,42.27],[26.057,42.248],[26.064,42.248],[26.082,42.259],[26.094,42.262],[26.106,42.259],[26.126,42.25],[26.178,42.24],[26.199,42.228],[26.184,42.206],[26.175,42.179],[26.164,42.165],[26.15,42.156],[26.124,42.163],[26.11,42.162],[26.1,42.168],[26.063,42.152],[26.029,42.158],[26.012,42.155],[26.001,42.158],[25.978,42.172],[25.963,42.175],[25.898,42.181],[25.894,42.185],[25.886,42.206],[25.871,42.213],[25.861,42.222],[25.832,42.222],[25.813,42.234],[25.79,42.241],[25.78,42.248],[25.772,42.257],[25.77,42.267],[25.786,42.272],[25.791,42.277],[25.792,42.287],[25.786,42.297],[25.771,42.304],[25.735,42.301],[25.725,42.305],[25.721,42.311],[25.723,42.326],[25.735,42.338],[25.744,42.344],[25.756,42.346],[25.765,42.353],[25.8,42.36],[25.816,42.376],[25.826,42.381],[25.849,42.38],[25.875,42.358],[25.887,42.354],[25.898,42.36],[25.912,42.376],[25.932,42.377]]]}},{"type":"Feature","properties":{"name":"Радомир","id":162,"pid":119,"pop":20896,"oblast":"Перник"},"geometry":{"type":"Polygon","coordinates":[[[23.248,42.46],[23.252,42.428],[23.267,42.404],[23.268,42.39],[23.241,42.367],[23.22,42.361],[23.205,42.363],[23.186,42.371],[23.157,42.377],[23.148,42.385],[23.141,42.406],[23.134,42.409],[23.123,42.405],[23.105,42.383],[23.095,42.381],[23.052,42.389],[23.043,42.408],[23.023,42.414],[23.012,42.414],[22.987,42.4],[22.955,42.398],[22.946,42.394],[22.942,42.388],[22.944,42.374],[22.939,42.37],[22.916,42.378],[22.904,42.379],[22.868,42.37],[22.858,42.379],[22.854,42.396],[22.826,42.398],[22.82,42.413],[22.813,42.42],[22.834,42.439],[22.831,42.454],[22.858,42.465],[22.869,42.474],[22.891,42.481],[22.899,42.489],[22.893,42.515],[22.916,42.53],[22.92,42.536],[22.909,42.543],[22.883,42.546],[22.877,42.552],[22.876,42.562],[22.904,42.578],[22.912,42.591],[22.974,42.587],[22.985,42.58],[22.993,42.571],[23.016,42.567],[23.062,42.542],[23.075,42.541],[23.096,42.533],[23.115,42.52],[23.168,42.474],[23.196,42.456],[23.21,42.455],[23.229,42.459],[23.248,42.46]]]}},{"type":"Feature","properties":{"name":"Ракитово","id":90,"pid":74,"pop":15064,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.158,42.102],[24.164,42.09],[24.177,42.078],[24.185,42.061],[24.215,42.036],[24.205,42.017],[24.192,42.005],[24.183,41.984],[24.166,41.968],[24.156,41.938],[24.145,41.92],[24.134,41.914],[24.112,41.917],[24.101,41.915],[24.09,41.894],[24.083,41.889],[24.045,41.892],[24.034,41.889],[24.025,41.909],[24.027,41.922],[24.021,41.939],[24.021,41.948],[24.041,41.965],[24.071,42.005],[24.091,42.015],[24.091,42.018],[24.076,42.03],[24.079,42.042],[24.069,42.071],[24.074,42.081],[24.072,42.092],[24.089,42.106],[24.092,42.132],[24.125,42.112],[24.158,42.102]]]}},{"type":"Feature","properties":{"name":"Раковски","id":156,"pid":53,"pop":26381,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[25.108,42.234],[25.096,42.218],[25.095,42.186],[25.099,42.167],[25.11,42.15],[25.101,42.148],[25.068,42.128],[25.054,42.126],[25.033,42.135],[25.014,42.136],[24.986,42.156],[24.985,42.164],[25.001,42.177],[25.004,42.184],[24.978,42.229],[24.936,42.233],[24.927,42.228],[24.926,42.214],[24.878,42.216],[24.872,42.221],[24.868,42.234],[24.854,42.249],[24.842,42.257],[24.834,42.274],[24.846,42.286],[24.853,42.286],[24.861,42.28],[24.885,42.288],[24.895,42.308],[24.909,42.322],[24.936,42.322],[24.948,42.313],[24.958,42.312],[24.969,42.314],[24.978,42.32],[24.987,42.321],[25.005,42.314],[25.032,42.31],[25.042,42.305],[25.058,42.29],[25.08,42.261],[25.092,42.252],[25.105,42.248],[25.104,42.236],[25.108,42.234]]]}},{"type":"Feature","properties":{"name":"Разград","id":287,"pid":21,"pop":51095,"oblast":"Разград"},"geometry":{"type":"Polygon","coordinates":[[[26.713,43.682],[26.701,43.67],[26.698,43.657],[26.7,43.652],[26.726,43.63],[26.729,43.614],[26.723,43.598],[26.706,43.582],[26.726,43.566],[26.72,43.55],[26.702,43.533],[26.697,43.519],[26.673,43.518],[26.656,43.499],[26.631,43.49],[26.613,43.471],[26.589,43.466],[26.552,43.45],[26.541,43.452],[26.529,43.472],[26.523,43.474],[26.494,43.457],[26.479,43.457],[26.468,43.462],[26.456,43.463],[26.4,43.453],[26.378,43.459],[26.367,43.472],[26.367,43.502],[26.338,43.511],[26.321,43.532],[26.339,43.559],[26.345,43.592],[26.335,43.618],[26.315,43.637],[26.357,43.646],[26.48,43.644],[26.496,43.645],[26.52,43.652],[26.538,43.665],[26.557,43.697],[26.562,43.713],[26.561,43.736],[26.565,43.751],[26.592,43.737],[26.589,43.723],[26.605,43.706],[26.605,43.699],[26.599,43.691],[26.602,43.686],[26.633,43.687],[26.657,43.683],[26.688,43.69],[26.713,43.682]]]}},{"type":"Feature","properties":{"name":"Разлог","id":130,"pid":56,"pop":20598,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.606,41.867],[23.582,41.856],[23.55,41.849],[23.534,41.85],[23.502,41.861],[23.487,41.86],[23.473,41.856],[23.448,41.844],[23.433,41.834],[23.425,41.822],[23.423,41.811],[23.403,41.795],[23.374,41.806],[23.362,41.82],[23.324,41.839],[23.306,41.855],[23.308,41.868],[23.334,41.903],[23.34,41.934],[23.369,41.953],[23.368,41.972],[23.373,41.983],[23.386,41.994],[23.4,42.015],[23.418,42.024],[23.45,42.05],[23.462,42.068],[23.483,42.085],[23.503,42.07],[23.531,42.037],[23.528,42.026],[23.515,42.025],[23.521,42.006],[23.521,41.978],[23.53,41.962],[23.534,41.944],[23.553,41.91],[23.566,41.898],[23.59,41.884],[23.606,41.867]]]}},{"type":"Feature","properties":{"name":"Рила","id":211,"pid":97,"pop":2888,"oblast":"Кюстендил"},"geometry":{"type":"Polygon","coordinates":[[[23.509,42.104],[23.464,42.069],[23.44,42.063],[23.419,42.062],[23.4,42.068],[23.378,42.082],[23.358,42.084],[23.328,42.099],[23.301,42.101],[23.285,42.107],[23.262,42.109],[23.209,42.111],[23.193,42.107],[23.182,42.111],[23.157,42.109],[23.145,42.115],[23.094,42.123],[23.089,42.133],[23.094,42.154],[23.1,42.161],[23.162,42.174],[23.174,42.181],[23.185,42.195],[23.202,42.187],[23.22,42.183],[23.242,42.186],[23.262,42.193],[23.293,42.19],[23.341,42.202],[23.348,42.195],[23.359,42.191],[23.383,42.189],[23.451,42.2],[23.459,42.198],[23.467,42.191],[23.471,42.164],[23.48,42.153],[23.525,42.134],[23.527,42.122],[23.509,42.104]]]}},{"type":"Feature","properties":{"name":"Родопи","id":218,"pid":53,"pop":32602,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.7,41.965],[24.684,41.937],[24.688,41.927],[24.705,41.917],[24.702,41.909],[24.679,41.899],[24.642,41.891],[24.563,41.884],[24.532,41.892],[24.509,41.923],[24.503,41.926],[24.494,41.928],[24.476,41.922],[24.46,41.922],[24.465,41.927],[24.461,41.96],[24.472,41.976],[24.475,41.993],[24.483,42.008],[24.475,42.031],[24.475,42.043],[24.481,42.054],[24.504,42.072],[24.504,42.077],[24.517,42.079],[24.536,42.067],[24.537,42.039],[24.533,42.03],[24.536,42.023],[24.544,42.019],[24.574,42.02],[24.591,42.021],[24.6,42.025],[24.591,42.051],[24.597,42.075],[24.574,42.099],[24.563,42.118],[24.551,42.126],[24.568,42.128],[24.582,42.135],[24.589,42.142],[24.591,42.157],[24.584,42.163],[24.552,42.169],[24.53,42.17],[24.519,42.184],[24.504,42.189],[24.481,42.189],[24.476,42.195],[24.484,42.226],[24.502,42.232],[24.534,42.253],[24.564,42.25],[24.583,42.252],[24.597,42.238],[24.606,42.211],[24.612,42.167],[24.624,42.161],[24.656,42.163],[24.676,42.148],[24.691,42.147],[24.688,42.12],[24.699,42.103],[24.701,42.093],[24.723,42.081],[24.732,42.08],[24.745,42.091],[24.756,42.092],[24.764,42.101],[24.795,42.11],[24.814,42.133],[24.833,42.134],[24.837,42.137],[24.885,42.139],[24.908,42.143],[24.919,42.141],[24.901,42.132],[24.892,42.12],[24.893,42.098],[24.877,42.07],[24.884,42.041],[24.868,42.036],[24.84,42.04],[24.821,42.061],[24.802,42.06],[24.791,42.054],[24.788,42.041],[24.772,42.031],[24.768,42.02],[24.74,42.033],[24.72,42.034],[24.712,42.029],[24.707,42.038],[24.701,42.034],[24.706,42.026],[24.7,41.965]]]}},{"type":"Feature","properties":{"name":"Роман","id":164,"pid":49,"pop":6223,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[23.972,43.247],[23.988,43.226],[23.998,43.225],[24.011,43.233],[24.024,43.232],[24.053,43.212],[24.057,43.2],[24.05,43.178],[24.055,43.158],[24.05,43.141],[24.06,43.119],[24.037,43.114],[23.985,43.114],[23.978,43.111],[23.987,43.074],[23.979,43.036],[23.971,43.028],[23.956,43.027],[23.901,43.044],[23.858,43.04],[23.827,43.043],[23.805,43.059],[23.815,43.075],[23.832,43.089],[23.829,43.106],[23.846,43.118],[23.843,43.139],[23.846,43.144],[23.854,43.147],[23.885,43.143],[23.89,43.151],[23.883,43.166],[23.856,43.187],[23.862,43.201],[23.868,43.206],[23.881,43.207],[23.891,43.214],[23.898,43.232],[23.897,43.247],[23.906,43.255],[23.941,43.246],[23.972,43.247]]]}},{"type":"Feature","properties":{"name":"Рудозем","id":62,"pid":23,"pop":10069,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[24.89,41.519],[24.918,41.501],[24.92,41.492],[24.912,41.48],[24.911,41.47],[24.925,41.463],[24.931,41.443],[24.941,41.431],[24.938,41.416],[24.917,41.406],[24.91,41.407],[24.894,41.405],[24.881,41.391],[24.875,41.393],[24.866,41.391],[24.855,41.399],[24.834,41.398],[24.82,41.401],[24.822,41.385],[24.815,41.37],[24.816,41.354],[24.813,41.349],[24.804,41.346],[24.79,41.359],[24.77,41.364],[24.76,41.372],[24.762,41.376],[24.755,41.378],[24.755,41.415],[24.749,41.422],[24.754,41.428],[24.75,41.432],[24.773,41.443],[24.792,41.466],[24.806,41.475],[24.822,41.498],[24.833,41.501],[24.841,41.516],[24.872,41.522],[24.89,41.519]]]}},{"type":"Feature","properties":{"name":"Руен","id":195,"pid":44,"pop":29101,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.422,42.932],[27.449,42.911],[27.468,42.902],[27.483,42.9],[27.483,42.888],[27.489,42.88],[27.481,42.861],[27.496,42.821],[27.493,42.812],[27.486,42.807],[27.442,42.793],[27.438,42.786],[27.406,42.789],[27.37,42.802],[27.312,42.791],[27.274,42.796],[27.232,42.795],[27.178,42.785],[27.171,42.787],[27.155,42.8],[27.134,42.808],[27.109,42.806],[27.09,42.794],[27.079,42.794],[27.079,42.801],[27.06,42.811],[27.057,42.823],[27.071,42.84],[27.079,42.844],[27.113,42.847],[27.117,42.859],[27.087,42.88],[27.076,42.897],[27.062,42.905],[27.045,42.91],[27.034,42.922],[27.059,42.926],[27.115,42.951],[27.163,42.954],[27.192,42.965],[27.22,42.982],[27.234,42.986],[27.254,42.987],[27.314,42.983],[27.36,42.974],[27.374,42.964],[27.385,42.949],[27.422,42.932]]]}},{"type":"Feature","properties":{"name":"Русе","id":284,"pid":65,"pop":167585,"oblast":"Русе"},"geometry":{"type":"Polygon","coordinates":[[[26.153,43.966],[26.165,43.952],[26.162,43.932],[26.173,43.919],[26.195,43.909],[26.215,43.889],[26.24,43.878],[26.246,43.859],[26.26,43.845],[26.245,43.818],[26.249,43.806],[26.256,43.802],[26.24,43.775],[26.23,43.764],[26.168,43.747],[26.157,43.748],[26.132,43.762],[26.117,43.766],[26.102,43.785],[26.091,43.78],[26.087,43.754],[26.052,43.778],[26.037,43.782],[26.021,43.781],[25.96,43.761],[25.936,43.758],[25.916,43.761],[25.89,43.772],[25.873,43.776],[25.909,43.813],[25.932,43.844],[25.954,43.864],[25.992,43.882],[26.017,43.897],[26.062,43.913],[26.069,43.919],[26.082,43.948],[26.118,43.978],[26.121,43.98],[26.135,43.975],[26.145,43.976],[26.153,43.966]]]}},{"type":"Feature","properties":{"name":"Ружинци","id":256,"pid":46,"pop":4374,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.989,43.757],[23.018,43.751],[23.033,43.745],[23.053,43.725],[23.055,43.712],[23.038,43.703],[23.007,43.698],[22.979,43.683],[22.939,43.673],[22.942,43.661],[22.937,43.65],[22.943,43.63],[22.935,43.62],[22.934,43.599],[22.925,43.579],[22.915,43.575],[22.896,43.558],[22.877,43.52],[22.856,43.506],[22.828,43.5],[22.823,43.517],[22.827,43.532],[22.822,43.543],[22.824,43.558],[22.805,43.588],[22.807,43.605],[22.801,43.626],[22.802,43.643],[22.818,43.654],[22.865,43.669],[22.887,43.696],[22.9,43.704],[22.903,43.723],[22.909,43.73],[22.948,43.746],[22.965,43.759],[22.989,43.757]]]}},{"type":"Feature","properties":{"name":"Садово","id":221,"pid":53,"pop":15604,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[25.204,42.149],[25.196,42.142],[25.169,42.131],[25.142,42.093],[25.129,42.089],[25.121,42.083],[25.109,42.084],[25.09,42.077],[25.068,42.078],[25.052,42.074],[25.042,42.07],[25.025,42.05],[25.02,42.05],[25.019,42.06],[25.011,42.061],[24.981,42.038],[24.951,42.033],[24.928,42.037],[24.905,42.034],[24.883,42.041],[24.876,42.068],[24.892,42.099],[24.891,42.118],[24.9,42.13],[24.92,42.142],[24.982,42.142],[24.992,42.136],[25.03,42.135],[25.06,42.126],[25.107,42.15],[25.132,42.151],[25.157,42.143],[25.177,42.142],[25.204,42.149]]]}},{"type":"Feature","properties":{"name":"Съединение","id":199,"pid":53,"pop":10450,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.665,42.4],[24.677,42.391],[24.685,42.381],[24.707,42.368],[24.745,42.314],[24.747,42.311],[24.735,42.305],[24.73,42.29],[24.723,42.287],[24.703,42.286],[24.685,42.298],[24.676,42.299],[24.672,42.296],[24.668,42.276],[24.663,42.272],[24.62,42.273],[24.58,42.251],[24.533,42.253],[24.499,42.231],[24.483,42.226],[24.463,42.266],[24.446,42.284],[24.463,42.294],[24.475,42.313],[24.461,42.335],[24.438,42.342],[24.429,42.348],[24.428,42.366],[24.407,42.388],[24.406,42.396],[24.411,42.404],[24.428,42.418],[24.434,42.416],[24.451,42.41],[24.465,42.398],[24.482,42.397],[24.487,42.386],[24.499,42.384],[24.511,42.375],[24.518,42.375],[24.534,42.382],[24.548,42.392],[24.548,42.396],[24.528,42.407],[24.529,42.412],[24.541,42.418],[24.54,42.437],[24.545,42.44],[24.574,42.442],[24.605,42.457],[24.61,42.452],[24.603,42.435],[24.606,42.425],[24.621,42.417],[24.646,42.416],[24.648,42.408],[24.665,42.4]]]}},{"type":"Feature","properties":{"name":"Самоков","id":89,"pid":38,"pop":38089,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.654,42.428],[23.669,42.423],[23.653,42.401],[23.655,42.392],[23.666,42.384],[23.698,42.373],[23.708,42.365],[23.717,42.347],[23.729,42.343],[23.72,42.328],[23.73,42.318],[23.72,42.302],[23.728,42.28],[23.725,42.205],[23.713,42.179],[23.719,42.166],[23.732,42.165],[23.736,42.162],[23.745,42.146],[23.737,42.143],[23.723,42.147],[23.694,42.165],[23.682,42.17],[23.675,42.17],[23.654,42.158],[23.623,42.164],[23.607,42.152],[23.593,42.114],[23.581,42.098],[23.559,42.094],[23.531,42.101],[23.508,42.102],[23.524,42.118],[23.527,42.13],[23.521,42.137],[23.491,42.148],[23.476,42.157],[23.469,42.171],[23.467,42.191],[23.459,42.198],[23.448,42.2],[23.383,42.189],[23.359,42.191],[23.343,42.199],[23.34,42.211],[23.346,42.225],[23.38,42.256],[23.411,42.263],[23.419,42.27],[23.42,42.276],[23.407,42.288],[23.375,42.3],[23.367,42.316],[23.358,42.326],[23.359,42.348],[23.35,42.356],[23.335,42.361],[23.273,42.362],[23.249,42.372],[23.262,42.382],[23.269,42.394],[23.252,42.428],[23.248,42.46],[23.251,42.473],[23.271,42.49],[23.287,42.513],[23.3,42.525],[23.347,42.51],[23.359,42.495],[23.385,42.477],[23.414,42.463],[23.43,42.452],[23.437,42.449],[23.452,42.449],[23.461,42.455],[23.466,42.463],[23.457,42.485],[23.459,42.501],[23.464,42.509],[23.472,42.512],[23.496,42.51],[23.509,42.514],[23.517,42.51],[23.54,42.476],[23.532,42.43],[23.539,42.419],[23.563,42.423],[23.598,42.417],[23.647,42.422],[23.654,42.428]]]}},{"type":"Feature","properties":{"name":"Самуил","id":179,"pid":21,"pop":7005,"oblast":"Разград"},"geometry":{"type":"Polygon","coordinates":[[[26.875,43.684],[26.952,43.671],[26.983,43.645],[26.98,43.635],[26.983,43.628],[26.976,43.619],[26.96,43.613],[26.945,43.615],[26.921,43.623],[26.903,43.622],[26.898,43.616],[26.894,43.598],[26.887,43.59],[26.871,43.581],[26.839,43.568],[26.82,43.553],[26.822,43.538],[26.844,43.533],[26.849,43.517],[26.846,43.507],[26.825,43.497],[26.81,43.501],[26.796,43.499],[26.788,43.492],[26.787,43.475],[26.76,43.472],[26.754,43.479],[26.748,43.511],[26.741,43.51],[26.731,43.494],[26.723,43.493],[26.714,43.494],[26.7,43.511],[26.699,43.528],[26.72,43.55],[26.726,43.566],[26.71,43.576],[26.707,43.584],[26.726,43.603],[26.729,43.623],[26.773,43.616],[26.798,43.619],[26.818,43.641],[26.847,43.649],[26.851,43.681],[26.875,43.684]]]}},{"type":"Feature","properties":{"name":"Сандански","id":87,"pid":56,"pop":40470,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.521,41.699],[23.525,41.682],[23.54,41.662],[23.567,41.643],[23.61,41.603],[23.643,41.517],[23.661,41.483],[23.664,41.453],[23.659,41.425],[23.664,41.408],[23.658,41.399],[23.647,41.394],[23.646,41.381],[23.636,41.375],[23.628,41.377],[23.615,41.375],[23.606,41.38],[23.597,41.377],[23.581,41.389],[23.55,41.386],[23.537,41.394],[23.534,41.402],[23.526,41.405],[23.483,41.398],[23.439,41.406],[23.419,41.398],[23.404,41.401],[23.4,41.434],[23.385,41.441],[23.384,41.469],[23.374,41.479],[23.365,41.481],[23.333,41.47],[23.314,41.471],[23.29,41.483],[23.215,41.538],[23.196,41.541],[23.179,41.548],[23.156,41.549],[23.188,41.561],[23.189,41.563],[23.21,41.573],[23.23,41.607],[23.242,41.616],[23.266,41.665],[23.31,41.696],[23.342,41.71],[23.357,41.732],[23.37,41.745],[23.388,41.74],[23.394,41.731],[23.395,41.718],[23.402,41.714],[23.437,41.741],[23.447,41.746],[23.456,41.745],[23.47,41.737],[23.483,41.714],[23.521,41.699]]]}},{"type":"Feature","properties":{"name":"Сапарева баня","id":212,"pid":97,"pop":7528,"oblast":"Кюстендил"},"geometry":{"type":"Polygon","coordinates":[[[23.335,42.361],[23.35,42.356],[23.359,42.348],[23.358,42.326],[23.367,42.316],[23.375,42.3],[23.407,42.288],[23.42,42.276],[23.415,42.265],[23.38,42.256],[23.363,42.242],[23.345,42.223],[23.34,42.214],[23.341,42.202],[23.32,42.209],[23.282,42.232],[23.253,42.238],[23.215,42.256],[23.196,42.275],[23.192,42.287],[23.193,42.296],[23.199,42.301],[23.235,42.306],[23.256,42.315],[23.263,42.325],[23.273,42.362],[23.335,42.361]]]}},{"type":"Feature","properties":{"name":"Сатовча","id":57,"pid":56,"pop":15444,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[24.092,41.67],[24.113,41.659],[24.116,41.647],[24.112,41.638],[24.086,41.617],[24.093,41.591],[24.073,41.556],[24.076,41.533],[24.059,41.522],[24.059,41.512],[24.066,41.501],[24.061,41.485],[24.069,41.482],[24.074,41.467],[24.072,41.464],[24.056,41.46],[24.047,41.452],[24.038,41.451],[24.036,41.457],[24.026,41.455],[24.021,41.46],[24.023,41.474],[23.972,41.494],[23.956,41.505],[23.953,41.517],[23.961,41.532],[23.958,41.548],[23.95,41.564],[23.924,41.576],[23.919,41.582],[23.932,41.602],[23.927,41.606],[23.907,41.608],[23.9,41.614],[23.906,41.625],[23.922,41.641],[23.928,41.654],[23.924,41.702],[23.973,41.729],[23.998,41.731],[24.045,41.699],[24.071,41.678],[24.092,41.67]]]}},{"type":"Feature","properties":{"name":"Септември","id":224,"pid":74,"pop":25794,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.209,42.272],[24.208,42.262],[24.226,42.217],[24.226,42.206],[24.196,42.177],[24.181,42.15],[24.163,42.13],[24.158,42.102],[24.121,42.114],[24.076,42.141],[24.053,42.147],[24.063,42.169],[24.089,42.202],[24.089,42.222],[24.097,42.232],[24.096,42.243],[24.088,42.251],[24.057,42.267],[24.041,42.268],[24.029,42.264],[23.999,42.276],[24.004,42.285],[23.998,42.295],[23.981,42.299],[23.965,42.298],[23.958,42.3],[23.95,42.31],[23.958,42.344],[23.964,42.351],[23.979,42.35],[23.991,42.353],[24.019,42.355],[24.033,42.352],[24.059,42.333],[24.119,42.331],[24.132,42.326],[24.172,42.295],[24.209,42.272]]]}},{"type":"Feature","properties":{"name":"Севлиево","id":111,"pid":60,"pop":35995,"oblast":"Габрово"},"geometry":{"type":"Polygon","coordinates":[[[24.977,43.217],[24.999,43.202],[25.023,43.191],[25.072,43.177],[25.102,43.172],[25.113,43.144],[25.125,43.135],[25.145,43.127],[25.159,43.107],[25.179,43.097],[25.226,43.086],[25.257,43.086],[25.282,43.095],[25.295,43.105],[25.329,43.108],[25.337,43.106],[25.342,43.091],[25.328,43.06],[25.332,43.051],[25.308,43.025],[25.324,42.98],[25.311,42.978],[25.285,42.968],[25.27,42.967],[25.243,42.972],[25.232,42.978],[25.216,42.979],[25.202,42.984],[25.166,42.964],[25.18,42.945],[25.185,42.929],[25.181,42.926],[25.16,42.93],[25.155,42.926],[25.149,42.897],[25.154,42.882],[25.155,42.86],[25.163,42.853],[25.192,42.851],[25.195,42.838],[25.211,42.825],[25.211,42.812],[25.225,42.799],[25.222,42.768],[25.189,42.75],[25.151,42.745],[25.106,42.725],[25.085,42.725],[25.07,42.73],[25.033,42.731],[25.036,42.755],[25.023,42.784],[24.946,42.866],[24.908,42.879],[24.892,42.888],[24.871,42.945],[24.872,42.992],[24.883,43.025],[24.893,43.033],[24.947,43.035],[24.934,43.05],[24.935,43.053],[24.944,43.054],[24.945,43.057],[24.93,43.079],[24.928,43.124],[24.936,43.133],[24.962,43.136],[24.968,43.143],[24.97,43.153],[24.962,43.173],[24.963,43.193],[24.957,43.211],[24.961,43.217],[24.977,43.217]]]}},{"type":"Feature","properties":{"name":"Шабла","id":215,"pid":26,"pop":5069,"oblast":"Добрич"},"geometry":{"type":"Polygon","coordinates":[[[28.583,43.708],[28.571,43.694],[28.569,43.67],[28.579,43.65],[28.589,43.641],[28.581,43.635],[28.573,43.609],[28.589,43.573],[28.605,43.559],[28.612,43.539],[28.609,43.525],[28.576,43.473],[28.559,43.474],[28.544,43.482],[28.526,43.485],[28.515,43.493],[28.5,43.498],[28.479,43.527],[28.424,43.519],[28.414,43.525],[28.411,43.532],[28.414,43.538],[28.453,43.565],[28.453,43.569],[28.429,43.575],[28.428,43.586],[28.447,43.596],[28.454,43.606],[28.467,43.607],[28.469,43.613],[28.459,43.628],[28.461,43.65],[28.446,43.67],[28.434,43.673],[28.4,43.672],[28.404,43.679],[28.435,43.697],[28.436,43.717],[28.477,43.735],[28.583,43.737],[28.574,43.723],[28.583,43.708]]]}},{"type":"Feature","properties":{"name":"Шумен","id":293,"pid":31,"pop":93649,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[27.037,43.412],[27.052,43.414],[27.07,43.391],[27.08,43.384],[27.095,43.381],[27.127,43.383],[27.136,43.379],[27.153,43.352],[27.151,43.338],[27.144,43.334],[27.1,43.324],[27.09,43.311],[27.077,43.304],[27.077,43.3],[27.09,43.291],[27.083,43.276],[27.085,43.266],[27.092,43.262],[27.154,43.254],[27.169,43.242],[27.19,43.234],[27.212,43.213],[27.242,43.199],[27.261,43.186],[27.23,43.167],[27.21,43.148],[27.202,43.136],[27.177,43.138],[27.158,43.135],[27.141,43.123],[27.129,43.119],[27.105,43.121],[27.069,43.131],[27.037,43.125],[27.007,43.155],[26.983,43.166],[26.977,43.177],[26.969,43.18],[26.948,43.181],[26.941,43.185],[26.934,43.252],[26.931,43.257],[26.914,43.264],[26.905,43.278],[26.841,43.288],[26.802,43.284],[26.786,43.279],[26.781,43.285],[26.762,43.291],[26.749,43.3],[26.748,43.314],[26.776,43.358],[26.786,43.382],[26.801,43.386],[26.813,43.393],[26.822,43.388],[26.838,43.387],[26.859,43.401],[26.868,43.402],[26.898,43.395],[26.905,43.379],[26.913,43.378],[26.919,43.38],[26.92,43.388],[26.926,43.393],[26.969,43.386],[26.987,43.387],[26.993,43.39],[26.998,43.398],[26.99,43.416],[27.003,43.417],[27.037,43.412]]]}},{"type":"Feature","properties":{"name":"Силистра","id":283,"pid":33,"pop":51386,"oblast":"Силистра"},"geometry":{"type":"Polygon","coordinates":[[[27.034,44.152],[27.057,44.149],[27.078,44.143],[27.108,44.148],[27.137,44.15],[27.153,44.148],[27.182,44.131],[27.212,44.126],[27.245,44.127],[27.273,44.135],[27.286,44.133],[27.29,44.107],[27.303,44.085],[27.321,44.077],[27.354,44.073],[27.369,44.066],[27.395,44.037],[27.408,44.028],[27.426,44.025],[27.431,44.021],[27.433,44.013],[27.414,43.979],[27.398,43.977],[27.371,43.966],[27.351,43.966],[27.338,43.976],[27.332,44],[27.316,44.003],[27.309,44.015],[27.303,44.015],[27.294,44.012],[27.287,44.004],[27.288,43.99],[27.261,43.979],[27.247,43.977],[27.228,43.969],[27.219,43.961],[27.217,43.955],[27.221,43.937],[27.22,43.934],[27.206,43.933],[27.206,43.91],[27.183,43.919],[27.165,43.913],[27.151,43.904],[27.135,43.904],[27.119,43.93],[27.112,43.935],[27.096,43.938],[27.102,43.953],[27.09,43.972],[27.088,43.986],[27.076,43.994],[27.074,44.006],[27.052,44.024],[27.057,44.048],[27.028,44.066],[27.018,44.069],[27.005,44.065],[26.996,44.072],[26.992,44.095],[26.971,44.143],[27.007,44.144],[27.034,44.152]]]}},{"type":"Feature","properties":{"name":"Симеоновград","id":131,"pid":28,"pop":8755,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[26.041,42.026],[26.022,42.026],[26.011,42.022],[25.997,42.032],[25.973,42.012],[25.955,42.003],[25.945,42],[25.919,42.002],[25.907,41.999],[25.876,41.973],[25.857,41.972],[25.829,41.976],[25.809,41.975],[25.78,41.961],[25.768,41.96],[25.788,42.037],[25.8,42.049],[25.818,42.059],[25.845,42.065],[25.854,42.082],[25.856,42.097],[25.868,42.11],[25.877,42.111],[25.893,42.103],[25.92,42.108],[25.949,42.09],[25.983,42.09],[26.004,42.075],[26.028,42.049],[26.041,42.026]]]}},{"type":"Feature","properties":{"name":"Симитли","id":77,"pid":56,"pop":14283,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.358,41.987],[23.378,41.987],[23.369,41.975],[23.369,41.953],[23.34,41.934],[23.334,41.903],[23.314,41.877],[23.306,41.86],[23.309,41.85],[23.32,41.841],[23.348,41.827],[23.307,41.821],[23.272,41.823],[23.232,41.813],[23.193,41.816],[23.15,41.797],[23.141,41.798],[23.122,41.812],[23.098,41.813],[23.084,41.806],[23.064,41.783],[23.046,41.772],[23.021,41.768],[23,41.769],[22.993,41.767],[22.989,41.771],[22.97,41.77],[22.964,41.773],[22.964,41.788],[22.955,41.795],[22.941,41.816],[22.942,41.829],[22.935,41.844],[22.937,41.847],[22.964,41.844],[22.969,41.846],[22.977,41.86],[23.023,41.878],[23.043,41.912],[23.044,41.92],[23.039,41.929],[23.05,41.933],[23.047,41.947],[23.049,41.953],[23.069,41.953],[23.101,41.967],[23.11,41.963],[23.11,41.95],[23.118,41.946],[23.16,41.946],[23.179,41.958],[23.196,41.96],[23.207,41.966],[23.221,41.986],[23.252,42.002],[23.272,42.031],[23.288,42.029],[23.307,42.018],[23.328,41.992],[23.358,41.987]]]}},{"type":"Feature","properties":{"name":"Ситово","id":268,"pid":33,"pop":5396,"oblast":"Силистра"},"geometry":{"type":"Polygon","coordinates":[[[26.973,44.139],[26.992,44.095],[26.996,44.072],[27.005,44.065],[27.018,44.069],[27.028,44.066],[27.057,44.048],[27.052,44.024],[27.074,44.006],[27.076,43.994],[27.088,43.986],[27.09,43.972],[27.102,43.951],[27.095,43.937],[27.074,43.946],[27.057,43.944],[27.034,43.915],[27.008,43.909],[26.999,43.914],[26.992,43.914],[26.985,43.882],[26.978,43.878],[26.959,43.878],[26.941,43.871],[26.938,43.88],[26.95,43.885],[26.947,43.894],[26.938,43.901],[26.941,43.909],[26.948,43.92],[26.967,43.935],[26.973,43.954],[26.963,43.968],[26.945,43.969],[26.937,43.973],[26.946,43.987],[26.929,44.001],[26.924,44.011],[26.922,44.051],[26.886,44.07],[26.874,44.083],[26.86,44.127],[26.877,44.13],[26.904,44.141],[26.929,44.141],[26.936,44.139],[26.971,44.143],[26.973,44.139]]]}},{"type":"Feature","properties":{"name":"Сливен","id":295,"pid":94,"pop":125268,"oblast":"Сливен"},"geometry":{"type":"Polygon","coordinates":[[[26.675,42.705],[26.682,42.662],[26.668,42.646],[26.664,42.635],[26.655,42.634],[26.646,42.641],[26.638,42.641],[26.618,42.613],[26.567,42.586],[26.519,42.587],[26.479,42.564],[26.462,42.56],[26.443,42.56],[26.419,42.568],[26.402,42.566],[26.372,42.541],[26.39,42.522],[26.39,42.506],[26.359,42.494],[26.344,42.475],[26.322,42.465],[26.313,42.454],[26.304,42.452],[26.282,42.459],[26.277,42.458],[26.25,42.465],[26.24,42.465],[26.229,42.458],[26.197,42.458],[26.189,42.461],[26.184,42.474],[26.194,42.539],[26.174,42.56],[26.154,42.562],[26.145,42.569],[26.147,42.593],[26.138,42.605],[26.096,42.605],[26.088,42.62],[26.086,42.634],[26.094,42.665],[26.119,42.707],[26.131,42.714],[26.145,42.702],[26.157,42.705],[26.16,42.727],[26.167,42.738],[26.159,42.748],[26.16,42.772],[26.145,42.767],[26.138,42.774],[26.139,42.794],[26.135,42.803],[26.14,42.825],[26.127,42.831],[26.079,42.833],[26.068,42.835],[26.078,42.839],[26.088,42.847],[26.087,42.853],[26.077,42.866],[26.078,42.876],[26.089,42.884],[26.116,42.892],[26.132,42.902],[26.162,42.912],[26.203,42.951],[26.221,42.942],[26.216,42.928],[26.222,42.916],[26.219,42.899],[26.241,42.883],[26.245,42.876],[26.245,42.871],[26.232,42.858],[26.235,42.851],[26.257,42.854],[26.276,42.849],[26.297,42.85],[26.386,42.808],[26.409,42.807],[26.44,42.814],[26.481,42.807],[26.497,42.787],[26.519,42.769],[26.519,42.761],[26.51,42.746],[26.512,42.731],[26.543,42.728],[26.55,42.713],[26.558,42.709],[26.559,42.701],[26.577,42.692],[26.612,42.69],[26.62,42.7],[26.646,42.712],[26.675,42.705]]]}},{"type":"Feature","properties":{"name":"Сливница","id":236,"pid":38,"pop":9681,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.089,42.909],[23.095,42.911],[23.096,42.87],[23.105,42.856],[23.12,42.844],[23.119,42.838],[23.106,42.827],[23.081,42.821],[23.057,42.796],[23.011,42.779],[23.007,42.775],[23.003,42.774],[22.993,42.783],[22.963,42.786],[22.95,42.791],[22.939,42.802],[22.928,42.827],[22.915,42.832],[22.891,42.831],[22.883,42.838],[22.878,42.858],[22.887,42.86],[22.9,42.874],[22.918,42.881],[22.929,42.897],[22.935,42.901],[22.962,42.903],[22.978,42.915],[23.012,42.906],[23.089,42.909]]]}},{"type":"Feature","properties":{"name":"Сливо поле","id":66,"pid":65,"pop":10855,"oblast":"Русе"},"geometry":{"type":"Polygon","coordinates":[[[26.399,43.951],[26.391,43.942],[26.358,43.926],[26.35,43.916],[26.332,43.903],[26.328,43.897],[26.329,43.886],[26.324,43.881],[26.325,43.868],[26.318,43.86],[26.284,43.857],[26.27,43.847],[26.26,43.845],[26.246,43.859],[26.24,43.878],[26.215,43.889],[26.195,43.909],[26.173,43.919],[26.162,43.932],[26.166,43.945],[26.164,43.954],[26.145,43.976],[26.135,43.975],[26.121,43.98],[26.136,43.989],[26.152,43.993],[26.167,43.995],[26.195,43.991],[26.213,43.995],[26.232,44.001],[26.244,44.009],[26.266,44.014],[26.286,44.028],[26.302,44.035],[26.34,44.042],[26.364,44.017],[26.405,44],[26.407,43.995],[26.404,43.99],[26.385,43.973],[26.387,43.965],[26.399,43.951]]]}},{"type":"Feature","properties":{"name":"Смолян","id":303,"pid":23,"pop":41452,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[24.804,41.734],[24.805,41.716],[24.83,41.702],[24.846,41.676],[24.852,41.674],[24.862,41.678],[24.873,41.697],[24.884,41.705],[24.896,41.689],[24.92,41.677],[24.928,41.669],[24.949,41.611],[24.994,41.606],[24.978,41.597],[24.96,41.595],[24.955,41.59],[24.938,41.59],[24.937,41.587],[24.949,41.577],[24.951,41.567],[24.938,41.542],[24.891,41.519],[24.872,41.522],[24.841,41.516],[24.833,41.501],[24.822,41.498],[24.806,41.475],[24.792,41.466],[24.773,41.443],[24.75,41.432],[24.754,41.428],[24.749,41.422],[24.755,41.415],[24.755,41.378],[24.746,41.38],[24.742,41.391],[24.735,41.396],[24.736,41.409],[24.729,41.415],[24.708,41.42],[24.692,41.417],[24.681,41.424],[24.673,41.417],[24.662,41.418],[24.659,41.415],[24.655,41.418],[24.659,41.42],[24.657,41.426],[24.663,41.431],[24.657,41.434],[24.648,41.433],[24.642,41.43],[24.628,41.431],[24.618,41.423],[24.608,41.426],[24.597,41.441],[24.596,41.453],[24.599,41.455],[24.595,41.466],[24.586,41.467],[24.583,41.472],[24.573,41.474],[24.569,41.49],[24.559,41.502],[24.562,41.517],[24.556,41.524],[24.556,41.529],[24.546,41.54],[24.553,41.551],[24.543,41.558],[24.535,41.556],[24.535,41.565],[24.525,41.569],[24.509,41.558],[24.503,41.558],[24.499,41.571],[24.475,41.589],[24.468,41.61],[24.458,41.621],[24.45,41.625],[24.42,41.627],[24.419,41.633],[24.428,41.646],[24.422,41.665],[24.432,41.671],[24.461,41.666],[24.481,41.673],[24.491,41.672],[24.5,41.665],[24.505,41.666],[24.518,41.689],[24.537,41.704],[24.56,41.711],[24.576,41.725],[24.585,41.738],[24.587,41.762],[24.612,41.75],[24.616,41.732],[24.63,41.712],[24.663,41.696],[24.683,41.666],[24.711,41.661],[24.713,41.646],[24.738,41.645],[24.749,41.652],[24.759,41.672],[24.786,41.69],[24.787,41.723],[24.804,41.734]]]}},{"type":"Feature","properties":{"name":"Смядово","id":197,"pid":31,"pop":6698,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[27.181,43.138],[27.202,43.136],[27.203,43.122],[27.215,43.111],[27.242,43.108],[27.254,43.102],[27.252,43.093],[27.259,43.079],[27.258,43.073],[27.272,43.062],[27.273,43.058],[27.27,43.054],[27.237,43.057],[27.196,43.048],[27.163,43.049],[27.154,43.045],[27.147,43.032],[27.113,43.033],[27.103,43.031],[27.103,43.027],[27.118,43.016],[27.11,42.994],[27.143,42.99],[27.151,42.984],[27.142,42.953],[27.115,42.951],[27.059,42.926],[27.035,42.921],[27.028,42.929],[27.012,42.938],[27.002,42.951],[26.986,42.95],[26.973,42.946],[26.959,42.948],[26.937,42.941],[26.923,42.942],[26.894,42.953],[26.867,42.952],[26.85,42.973],[26.849,42.988],[26.865,43.009],[26.869,43.026],[26.891,43.036],[26.901,43.052],[26.905,43.068],[26.903,43.079],[26.906,43.081],[26.929,43.086],[26.953,43.08],[26.961,43.081],[26.968,43.087],[26.977,43.104],[26.99,43.113],[27.059,43.131],[27.074,43.131],[27.105,43.121],[27.129,43.119],[27.141,43.123],[27.158,43.135],[27.181,43.138]]]}},{"type":"Feature","properties":{"name":"Сопот","id":134,"pid":53,"pop":9827,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.748,42.729],[24.764,42.73],[24.77,42.722],[24.786,42.729],[24.792,42.696],[24.806,42.673],[24.792,42.648],[24.778,42.648],[24.768,42.644],[24.757,42.647],[24.746,42.644],[24.737,42.651],[24.717,42.653],[24.708,42.659],[24.735,42.687],[24.748,42.729]]]}},{"type":"Feature","properties":{"name":"Созопол","id":88,"pid":44,"pop":12610,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.744,42.336],[27.745,42.33],[27.738,42.324],[27.727,42.323],[27.712,42.31],[27.695,42.308],[27.671,42.295],[27.644,42.315],[27.604,42.32],[27.597,42.342],[27.545,42.347],[27.537,42.342],[27.522,42.299],[27.505,42.28],[27.493,42.249],[27.474,42.227],[27.472,42.216],[27.48,42.203],[27.481,42.192],[27.453,42.19],[27.426,42.195],[27.401,42.19],[27.378,42.205],[27.359,42.203],[27.341,42.195],[27.331,42.196],[27.322,42.203],[27.31,42.203],[27.319,42.224],[27.338,42.233],[27.341,42.238],[27.326,42.273],[27.306,42.287],[27.305,42.326],[27.327,42.337],[27.336,42.345],[27.346,42.381],[27.354,42.393],[27.357,42.396],[27.375,42.393],[27.431,42.395],[27.451,42.399],[27.467,42.399],[27.48,42.378],[27.484,42.377],[27.489,42.384],[27.498,42.387],[27.516,42.367],[27.524,42.367],[27.566,42.405],[27.569,42.416],[27.558,42.433],[27.561,42.448],[27.564,42.456],[27.585,42.453],[27.588,42.456],[27.585,42.461],[27.592,42.471],[27.614,42.452],[27.627,42.452],[27.633,42.458],[27.634,42.465],[27.643,42.454],[27.657,42.457],[27.657,42.449],[27.652,42.447],[27.661,42.436],[27.653,42.435],[27.649,42.43],[27.657,42.421],[27.679,42.415],[27.693,42.422],[27.702,42.431],[27.707,42.429],[27.717,42.413],[27.731,42.416],[27.736,42.412],[27.73,42.406],[27.72,42.407],[27.714,42.399],[27.717,42.391],[27.73,42.383],[27.717,42.374],[27.729,42.356],[27.737,42.35],[27.744,42.336]]]}},{"type":"Feature","properties":{"name":"Средец","id":45,"pid":44,"pop":14934,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.15,42.474],[27.157,42.47],[27.18,42.445],[27.198,42.439],[27.232,42.438],[27.247,42.432],[27.267,42.43],[27.279,42.419],[27.305,42.42],[27.33,42.411],[27.343,42.411],[27.376,42.424],[27.384,42.413],[27.382,42.407],[27.36,42.397],[27.35,42.389],[27.339,42.349],[27.332,42.34],[27.305,42.326],[27.306,42.287],[27.326,42.273],[27.341,42.238],[27.338,42.233],[27.319,42.224],[27.31,42.203],[27.284,42.2],[27.276,42.195],[27.272,42.188],[27.27,42.176],[27.285,42.143],[27.283,42.111],[27.278,42.106],[27.264,42.104],[27.25,42.107],[27.231,42.101],[27.222,42.09],[27.208,42.084],[27.212,42.069],[27.209,42.065],[27.203,42.065],[27.186,42.074],[27.172,42.07],[27.149,42.072],[27.116,42.091],[27.082,42.096],[27.055,42.086],[27.044,42.087],[27.052,42.101],[27.044,42.112],[27,42.121],[26.971,42.135],[26.955,42.159],[26.954,42.189],[26.959,42.198],[26.98,42.209],[26.981,42.214],[26.975,42.223],[26.96,42.231],[26.95,42.242],[26.947,42.249],[26.954,42.266],[26.97,42.278],[26.975,42.291],[26.972,42.294],[26.945,42.298],[26.934,42.305],[26.927,42.327],[26.916,42.343],[26.875,42.363],[26.869,42.392],[26.873,42.402],[26.881,42.405],[26.943,42.413],[26.96,42.419],[26.993,42.438],[27.005,42.454],[27.028,42.458],[27.059,42.455],[27.099,42.464],[27.116,42.47],[27.15,42.474]]]}},{"type":"Feature","properties":{"name":"Стамболийски","id":267,"pid":53,"pop":20771,"oblast":"Пловдив"},"geometry":{"type":"Polygon","coordinates":[[[24.55,42.127],[24.479,42.08],[24.443,42.071],[24.45,42.079],[24.454,42.099],[24.445,42.117],[24.445,42.124],[24.468,42.144],[24.485,42.152],[24.52,42.16],[24.531,42.17],[24.551,42.17],[24.588,42.161],[24.59,42.145],[24.586,42.137],[24.571,42.129],[24.55,42.127]]]}},{"type":"Feature","properties":{"name":"Стамболово","id":30,"pid":28,"pop":5934,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[25.75,41.812],[25.752,41.792],[25.776,41.779],[25.807,41.775],[25.815,41.757],[25.827,41.747],[25.829,41.741],[25.829,41.735],[25.816,41.727],[25.759,41.724],[25.748,41.721],[25.745,41.718],[25.744,41.708],[25.756,41.687],[25.754,41.673],[25.759,41.67],[25.781,41.667],[25.786,41.65],[25.777,41.645],[25.766,41.63],[25.721,41.61],[25.712,41.61],[25.692,41.619],[25.667,41.61],[25.646,41.61],[25.631,41.617],[25.626,41.63],[25.629,41.637],[25.648,41.65],[25.656,41.663],[25.657,41.674],[25.649,41.692],[25.648,41.71],[25.639,41.721],[25.607,41.743],[25.585,41.753],[25.587,41.779],[25.598,41.79],[25.629,41.806],[25.647,41.83],[25.654,41.832],[25.664,41.829],[25.677,41.81],[25.69,41.802],[25.709,41.802],[25.75,41.812]]]}},{"type":"Feature","properties":{"name":"Стара Загора","id":300,"pid":113,"pop":160108,"oblast":"Стара Загора"},"geometry":{"type":"Polygon","coordinates":[[[25.862,42.551],[25.871,42.548],[25.866,42.542],[25.865,42.535],[25.875,42.519],[25.883,42.511],[25.896,42.487],[25.913,42.473],[25.914,42.467],[25.912,42.455],[25.892,42.439],[25.887,42.427],[25.895,42.419],[25.909,42.415],[25.917,42.408],[25.923,42.388],[25.932,42.377],[25.912,42.376],[25.898,42.36],[25.887,42.354],[25.875,42.358],[25.849,42.38],[25.826,42.381],[25.816,42.376],[25.8,42.36],[25.765,42.353],[25.756,42.346],[25.741,42.342],[25.727,42.332],[25.722,42.323],[25.721,42.311],[25.731,42.302],[25.771,42.304],[25.788,42.295],[25.793,42.285],[25.786,42.272],[25.77,42.267],[25.752,42.27],[25.718,42.283],[25.696,42.286],[25.686,42.284],[25.653,42.259],[25.646,42.219],[25.631,42.203],[25.627,42.192],[25.611,42.189],[25.602,42.184],[25.585,42.19],[25.563,42.185],[25.539,42.188],[25.525,42.184],[25.515,42.185],[25.504,42.212],[25.497,42.218],[25.481,42.221],[25.477,42.225],[25.48,42.231],[25.491,42.235],[25.506,42.247],[25.525,42.251],[25.532,42.256],[25.542,42.275],[25.544,42.283],[25.538,42.294],[25.512,42.307],[25.514,42.336],[25.511,42.348],[25.495,42.355],[25.464,42.356],[25.434,42.369],[25.398,42.369],[25.386,42.372],[25.39,42.403],[25.396,42.416],[25.394,42.452],[25.4,42.468],[25.416,42.48],[25.424,42.494],[25.434,42.5],[25.445,42.501],[25.467,42.493],[25.483,42.492],[25.499,42.484],[25.504,42.467],[25.512,42.462],[25.522,42.462],[25.544,42.476],[25.56,42.496],[25.571,42.497],[25.585,42.507],[25.623,42.511],[25.658,42.508],[25.676,42.512],[25.708,42.533],[25.712,42.545],[25.731,42.538],[25.739,42.538],[25.754,42.544],[25.765,42.536],[25.771,42.536],[25.808,42.55],[25.84,42.547],[25.862,42.551]]]}},{"type":"Feature","properties":{"name":"Столична","id":37,"pid":36,"pop":1291591,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.514,42.868],[23.522,42.868],[23.547,42.861],[23.581,42.837],[23.591,42.834],[23.614,42.837],[23.634,42.847],[23.649,42.845],[23.656,42.837],[23.662,42.804],[23.655,42.785],[23.655,42.77],[23.641,42.747],[23.634,42.713],[23.622,42.707],[23.59,42.701],[23.574,42.681],[23.537,42.671],[23.529,42.643],[23.529,42.636],[23.534,42.632],[23.567,42.627],[23.571,42.624],[23.575,42.61],[23.57,42.584],[23.572,42.561],[23.56,42.545],[23.56,42.538],[23.595,42.514],[23.623,42.515],[23.615,42.497],[23.636,42.472],[23.649,42.445],[23.654,42.428],[23.647,42.422],[23.598,42.417],[23.563,42.423],[23.539,42.419],[23.532,42.43],[23.54,42.476],[23.517,42.51],[23.509,42.514],[23.496,42.51],[23.472,42.512],[23.464,42.509],[23.459,42.501],[23.457,42.485],[23.466,42.468],[23.463,42.457],[23.452,42.449],[23.437,42.449],[23.43,42.452],[23.414,42.463],[23.385,42.477],[23.359,42.495],[23.347,42.51],[23.3,42.525],[23.293,42.546],[23.263,42.551],[23.237,42.583],[23.22,42.587],[23.182,42.589],[23.179,42.592],[23.181,42.595],[23.202,42.605],[23.193,42.654],[23.18,42.664],[23.14,42.671],[23.133,42.678],[23.128,42.694],[23.12,42.702],[23.07,42.722],[23.059,42.733],[23.072,42.738],[23.182,42.731],[23.213,42.739],[23.245,42.741],[23.25,42.75],[23.238,42.77],[23.265,42.792],[23.27,42.817],[23.284,42.827],[23.287,42.851],[23.302,42.86],[23.316,42.886],[23.335,42.885],[23.348,42.875],[23.364,42.871],[23.381,42.843],[23.398,42.839],[23.434,42.839],[23.452,42.843],[23.47,42.85],[23.488,42.864],[23.514,42.868]]]}},{"type":"Feature","properties":{"name":"Стралджа","id":72,"pid":71,"pop":12781,"oblast":"Ямбол"},"geometry":{"type":"Polygon","coordinates":[[[26.708,42.716],[26.726,42.706],[26.753,42.675],[26.76,42.67],[26.763,42.663],[26.8,42.628],[26.802,42.61],[26.817,42.573],[26.846,42.539],[26.863,42.51],[26.884,42.501],[26.885,42.471],[26.891,42.46],[26.903,42.456],[26.939,42.459],[26.952,42.458],[26.976,42.429],[26.951,42.415],[26.89,42.407],[26.873,42.402],[26.869,42.392],[26.875,42.363],[26.916,42.343],[26.927,42.327],[26.929,42.314],[26.934,42.306],[26.922,42.299],[26.912,42.3],[26.896,42.296],[26.886,42.299],[26.871,42.296],[26.859,42.284],[26.85,42.281],[26.771,42.286],[26.754,42.323],[26.751,42.339],[26.71,42.37],[26.707,42.383],[26.71,42.393],[26.726,42.404],[26.731,42.415],[26.74,42.418],[26.749,42.428],[26.761,42.432],[26.765,42.446],[26.763,42.45],[26.755,42.455],[26.727,42.465],[26.706,42.496],[26.69,42.499],[26.642,42.528],[26.613,42.537],[26.604,42.547],[26.582,42.557],[26.587,42.573],[26.575,42.591],[26.618,42.613],[26.638,42.641],[26.646,42.641],[26.655,42.634],[26.664,42.635],[26.668,42.646],[26.68,42.658],[26.68,42.687],[26.672,42.711],[26.674,42.72],[26.683,42.723],[26.708,42.716]]]}},{"type":"Feature","properties":{"name":"Стражица","id":132,"pid":81,"pop":12721,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[26.029,43.322],[26.053,43.32],[26.097,43.3],[26.106,43.289],[26.104,43.284],[26.074,43.268],[26.073,43.261],[26.095,43.252],[26.108,43.23],[26.126,43.223],[26.132,43.21],[26.132,43.202],[26.125,43.192],[26.094,43.173],[26.094,43.151],[26.085,43.141],[26.085,43.116],[26.079,43.107],[26.073,43.105],[26.063,43.107],[26.057,43.115],[26.03,43.107],[26.016,43.109],[26.004,43.125],[25.981,43.135],[25.979,43.146],[25.959,43.16],[25.958,43.172],[25.944,43.185],[25.944,43.198],[25.935,43.198],[25.909,43.185],[25.899,43.187],[25.891,43.208],[25.904,43.228],[25.905,43.238],[25.885,43.241],[25.864,43.249],[25.836,43.238],[25.817,43.238],[25.8,43.257],[25.805,43.276],[25.793,43.278],[25.798,43.283],[25.813,43.289],[25.823,43.298],[25.819,43.311],[25.798,43.326],[25.806,43.344],[25.81,43.344],[25.812,43.338],[25.817,43.338],[25.817,43.356],[25.825,43.371],[25.874,43.362],[25.887,43.362],[25.9,43.363],[25.933,43.375],[25.944,43.375],[25.953,43.371],[25.97,43.328],[26.003,43.321],[26.029,43.322]]]}},{"type":"Feature","properties":{"name":"Стрелча","id":167,"pid":74,"pop":4913,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.415,42.542],[24.409,42.52],[24.381,42.494],[24.371,42.477],[24.381,42.454],[24.403,42.442],[24.412,42.428],[24.428,42.418],[24.409,42.402],[24.406,42.392],[24.41,42.383],[24.428,42.366],[24.426,42.355],[24.395,42.358],[24.366,42.373],[24.352,42.376],[24.314,42.372],[24.297,42.384],[24.278,42.402],[24.279,42.412],[24.291,42.418],[24.317,42.421],[24.324,42.427],[24.327,42.435],[24.308,42.446],[24.271,42.456],[24.267,42.471],[24.254,42.484],[24.27,42.537],[24.281,42.549],[24.295,42.557],[24.33,42.556],[24.334,42.545],[24.344,42.542],[24.371,42.557],[24.386,42.558],[24.403,42.553],[24.415,42.542]]]}},{"type":"Feature","properties":{"name":"Струмяни","id":78,"pid":56,"pop":5778,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.37,41.745],[23.357,41.732],[23.342,41.71],[23.31,41.696],[23.266,41.665],[23.242,41.616],[23.23,41.607],[23.212,41.576],[23.202,41.567],[23.156,41.549],[23.135,41.544],[23.114,41.534],[23.105,41.535],[23.088,41.551],[23.079,41.554],[23.07,41.553],[23.06,41.544],[23.045,41.539],[23.036,41.539],[23.023,41.545],[23.009,41.544],[22.99,41.548],[22.969,41.543],[22.972,41.563],[22.967,41.566],[22.965,41.577],[22.96,41.584],[22.952,41.586],[22.949,41.595],[22.954,41.618],[22.952,41.627],[22.948,41.631],[22.951,41.642],[22.957,41.644],[22.959,41.648],[22.983,41.647],[22.981,41.657],[22.99,41.663],[22.994,41.673],[23.007,41.682],[23.019,41.698],[23.039,41.69],[23.114,41.683],[23.124,41.683],[23.137,41.689],[23.162,41.69],[23.181,41.685],[23.205,41.674],[23.217,41.673],[23.239,41.685],[23.283,41.727],[23.318,41.749],[23.331,41.75],[23.35,41.746],[23.37,41.745]]]}},{"type":"Feature","properties":{"name":"Сухиндол","id":140,"pid":81,"pop":2542,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[25.294,43.105],[25.265,43.087],[25.226,43.086],[25.179,43.097],[25.165,43.103],[25.159,43.107],[25.145,43.127],[25.125,43.135],[25.113,43.144],[25.102,43.172],[25.119,43.174],[25.136,43.181],[25.134,43.21],[25.159,43.235],[25.168,43.254],[25.16,43.279],[25.185,43.287],[25.195,43.257],[25.212,43.233],[25.208,43.224],[25.19,43.228],[25.18,43.227],[25.178,43.22],[25.18,43.216],[25.214,43.204],[25.225,43.192],[25.255,43.193],[25.273,43.182],[25.279,43.168],[25.276,43.146],[25.279,43.135],[25.278,43.125],[25.294,43.105]]]}},{"type":"Feature","properties":{"name":"Сунгурларе","id":182,"pid":44,"pop":12559,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.034,42.922],[27.045,42.91],[27.062,42.905],[27.076,42.897],[27.087,42.88],[27.115,42.86],[27.113,42.847],[27.077,42.844],[27.057,42.823],[27.014,42.825],[27.001,42.823],[26.991,42.815],[26.986,42.793],[26.977,42.783],[26.968,42.782],[26.959,42.791],[26.953,42.788],[26.948,42.779],[26.941,42.778],[26.938,42.784],[26.935,42.783],[26.909,42.741],[26.902,42.737],[26.869,42.729],[26.856,42.721],[26.851,42.71],[26.852,42.671],[26.847,42.664],[26.84,42.662],[26.823,42.664],[26.803,42.681],[26.797,42.682],[26.784,42.675],[26.774,42.675],[26.76,42.67],[26.753,42.675],[26.726,42.706],[26.708,42.716],[26.714,42.722],[26.719,42.738],[26.714,42.744],[26.683,42.764],[26.671,42.782],[26.66,42.785],[26.649,42.795],[26.606,42.798],[26.592,42.812],[26.59,42.829],[26.605,42.848],[26.607,42.856],[26.604,42.867],[26.584,42.896],[26.585,42.908],[26.595,42.923],[26.588,42.935],[26.594,42.94],[26.619,42.944],[26.656,42.939],[26.658,42.935],[26.649,42.915],[26.658,42.908],[26.693,42.913],[26.734,42.911],[26.764,42.926],[26.799,42.948],[26.819,42.95],[26.843,42.946],[26.861,42.946],[26.867,42.952],[26.881,42.954],[26.905,42.95],[26.927,42.941],[26.937,42.941],[26.959,42.948],[26.973,42.946],[26.986,42.95],[27.002,42.951],[27.012,42.938],[27.028,42.929],[27.034,42.922]]]}},{"type":"Feature","properties":{"name":"Суворово","id":5,"pid":4,"pop":7225,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.661,43.259],[27.625,43.292],[27.604,43.287],[27.566,43.296],[27.561,43.303],[27.561,43.312],[27.546,43.333],[27.537,43.339],[27.533,43.349],[27.55,43.381],[27.565,43.388],[27.574,43.399],[27.592,43.405],[27.627,43.402],[27.644,43.408],[27.655,43.418],[27.658,43.409],[27.67,43.399],[27.683,43.392],[27.7,43.389],[27.711,43.371],[27.704,43.36],[27.705,43.352],[27.724,43.327],[27.743,43.315],[27.759,43.289],[27.753,43.28],[27.744,43.278],[27.696,43.282],[27.681,43.261],[27.661,43.259]]]}},{"type":"Feature","properties":{"name":"Свиленград","id":29,"pid":28,"pop":23004,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[26.582,41.899],[26.572,41.888],[26.581,41.879],[26.555,41.858],[26.548,41.844],[26.535,41.836],[26.381,41.836],[26.374,41.832],[26.345,41.782],[26.336,41.758],[26.338,41.747],[26.367,41.711],[26.359,41.709],[26.358,41.711],[26.342,41.712],[26.331,41.717],[26.312,41.71],[26.283,41.712],[26.248,41.722],[26.231,41.74],[26.232,41.746],[26.228,41.748],[26.226,41.739],[26.215,41.731],[26.181,41.739],[26.172,41.748],[26.122,41.73],[26.113,41.722],[26.08,41.725],[26.049,41.732],[26.041,41.739],[26.042,41.745],[26.063,41.759],[26.066,41.782],[26.076,41.794],[26.103,41.793],[26.126,41.799],[26.152,41.799],[26.159,41.801],[26.159,41.809],[26.139,41.816],[26.139,41.83],[26.143,41.839],[26.171,41.869],[26.188,41.88],[26.209,41.89],[26.217,41.905],[26.224,41.932],[26.216,41.966],[26.227,41.978],[26.261,41.995],[26.266,42.011],[26.29,42.022],[26.302,42.022],[26.382,41.96],[26.405,41.959],[26.406,41.964],[26.395,41.986],[26.398,41.995],[26.409,41.993],[26.425,41.982],[26.448,41.979],[26.46,41.966],[26.462,41.931],[26.47,41.921],[26.47,41.906],[26.474,41.903],[26.48,41.902],[26.493,41.906],[26.505,41.905],[26.513,41.907],[26.522,41.894],[26.544,41.88],[26.559,41.884],[26.573,41.898],[26.582,41.899]]]}},{"type":"Feature","properties":{"name":"Свищов","id":128,"pid":81,"pop":42734,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[25.342,43.64],[25.371,43.628],[25.388,43.627],[25.446,43.634],[25.474,43.644],[25.51,43.622],[25.52,43.61],[25.522,43.601],[25.514,43.593],[25.492,43.583],[25.486,43.577],[25.486,43.569],[25.496,43.551],[25.509,43.543],[25.516,43.521],[25.528,43.515],[25.537,43.5],[25.546,43.498],[25.528,43.483],[25.486,43.468],[25.477,43.446],[25.433,43.426],[25.432,43.415],[25.399,43.414],[25.375,43.405],[25.343,43.406],[25.321,43.403],[25.296,43.392],[25.281,43.375],[25.263,43.364],[25.205,43.366],[25.2,43.369],[25.204,43.377],[25.234,43.406],[25.234,43.415],[25.23,43.42],[25.204,43.426],[25.161,43.418],[25.141,43.417],[25.133,43.42],[25.125,43.434],[25.131,43.44],[25.171,43.445],[25.185,43.449],[25.208,43.466],[25.209,43.506],[25.228,43.532],[25.222,43.544],[25.204,43.558],[25.209,43.566],[25.208,43.59],[25.222,43.605],[25.218,43.614],[25.195,43.637],[25.195,43.654],[25.225,43.697],[25.265,43.689],[25.296,43.664],[25.324,43.657],[25.342,43.64]]]}},{"type":"Feature","properties":{"name":"Своге","id":39,"pid":38,"pop":22363,"oblast":"Софийска"},"geometry":{"type":"Polygon","coordinates":[[[23.387,43.167],[23.494,43.157],[23.51,43.153],[23.509,43.134],[23.483,43.11],[23.482,43.102],[23.497,43.077],[23.536,43.043],[23.561,43.002],[23.575,42.99],[23.589,42.989],[23.597,42.967],[23.616,42.958],[23.615,42.951],[23.597,42.942],[23.6,42.93],[23.637,42.898],[23.676,42.882],[23.696,42.864],[23.701,42.852],[23.698,42.831],[23.657,42.83],[23.655,42.842],[23.642,42.847],[23.634,42.847],[23.614,42.837],[23.591,42.834],[23.581,42.837],[23.552,42.858],[23.522,42.868],[23.488,42.864],[23.463,42.846],[23.434,42.839],[23.388,42.84],[23.381,42.843],[23.367,42.869],[23.348,42.875],[23.335,42.885],[23.317,42.89],[23.316,42.911],[23.292,42.932],[23.291,42.951],[23.251,42.949],[23.24,42.975],[23.23,42.979],[23.218,42.978],[23.196,42.966],[23.182,42.965],[23.178,42.971],[23.191,42.984],[23.192,42.989],[23.184,42.992],[23.163,42.99],[23.146,42.993],[23.14,43.016],[23.143,43.026],[23.179,43.029],[23.202,43.021],[23.205,43.048],[23.211,43.057],[23.236,43.071],[23.253,43.085],[23.255,43.101],[23.236,43.115],[23.266,43.118],[23.296,43.129],[23.314,43.125],[23.328,43.126],[23.341,43.135],[23.358,43.161],[23.368,43.166],[23.387,43.167]]]}},{"type":"Feature","properties":{"name":"Търговище","id":289,"pid":41,"pop":57264,"oblast":"Търговище"},"geometry":{"type":"Polygon","coordinates":[[[26.786,43.382],[26.776,43.358],[26.758,43.335],[26.747,43.308],[26.752,43.296],[26.784,43.283],[26.789,43.275],[26.788,43.262],[26.78,43.248],[26.735,43.222],[26.729,43.207],[26.729,43.185],[26.724,43.175],[26.711,43.174],[26.691,43.182],[26.681,43.177],[26.687,43.167],[26.677,43.154],[26.676,43.14],[26.681,43.127],[26.698,43.109],[26.698,43.104],[26.691,43.098],[26.668,43.096],[26.65,43.111],[26.599,43.13],[26.581,43.143],[26.57,43.143],[26.546,43.136],[26.516,43.142],[26.495,43.142],[26.489,43.152],[26.492,43.163],[26.502,43.174],[26.502,43.182],[26.497,43.186],[26.471,43.193],[26.448,43.187],[26.415,43.186],[26.399,43.192],[26.392,43.21],[26.374,43.221],[26.368,43.23],[26.35,43.234],[26.353,43.254],[26.358,43.26],[26.383,43.266],[26.396,43.274],[26.445,43.281],[26.455,43.286],[26.459,43.296],[26.452,43.319],[26.454,43.331],[26.478,43.341],[26.487,43.35],[26.477,43.36],[26.477,43.366],[26.495,43.368],[26.52,43.36],[26.547,43.373],[26.564,43.375],[26.602,43.366],[26.631,43.348],[26.667,43.347],[26.673,43.349],[26.68,43.358],[26.69,43.383],[26.7,43.383],[26.711,43.374],[26.732,43.381],[26.746,43.372],[26.755,43.375],[26.764,43.385],[26.786,43.382]]]}},{"type":"Feature","properties":{"name":"Тервел","id":27,"pid":26,"pop":16178,"oblast":"Добрич"},"geometry":{"type":"Polygon","coordinates":[[[27.579,43.908],[27.584,43.856],[27.604,43.834],[27.611,43.814],[27.608,43.812],[27.602,43.821],[27.594,43.822],[27.592,43.806],[27.585,43.801],[27.581,43.802],[27.558,43.826],[27.549,43.827],[27.543,43.824],[27.542,43.807],[27.529,43.795],[27.532,43.784],[27.529,43.772],[27.512,43.763],[27.509,43.758],[27.514,43.733],[27.505,43.697],[27.494,43.686],[27.494,43.665],[27.491,43.659],[27.477,43.651],[27.483,43.639],[27.48,43.625],[27.487,43.603],[27.47,43.601],[27.454,43.605],[27.436,43.627],[27.423,43.637],[27.403,43.634],[27.354,43.619],[27.334,43.621],[27.31,43.661],[27.298,43.665],[27.272,43.668],[27.248,43.679],[27.26,43.681],[27.267,43.692],[27.265,43.701],[27.231,43.724],[27.233,43.75],[27.24,43.76],[27.283,43.773],[27.33,43.819],[27.366,43.82],[27.38,43.826],[27.441,43.874],[27.467,43.877],[27.485,43.857],[27.49,43.854],[27.502,43.853],[27.517,43.864],[27.538,43.92],[27.545,43.922],[27.571,43.908],[27.579,43.908]]]}},{"type":"Feature","properties":{"name":"Тетевен","id":223,"pid":13,"pop":21307,"oblast":"Ловеч"},"geometry":{"type":"Polygon","coordinates":[[[24.29,43.062],[24.312,43.049],[24.327,43.034],[24.343,42.987],[24.335,42.973],[24.305,42.959],[24.306,42.947],[24.313,42.938],[24.322,42.931],[24.35,42.922],[24.37,42.906],[24.383,42.9],[24.448,42.89],[24.48,42.879],[24.488,42.874],[24.5,42.854],[24.523,42.833],[24.522,42.824],[24.508,42.817],[24.503,42.81],[24.504,42.79],[24.494,42.783],[24.467,42.749],[24.459,42.747],[24.42,42.753],[24.383,42.746],[24.363,42.755],[24.322,42.757],[24.282,42.773],[24.216,42.769],[24.159,42.778],[24.15,42.785],[24.151,42.79],[24.16,42.797],[24.181,42.804],[24.179,42.82],[24.188,42.829],[24.189,42.834],[24.188,42.839],[24.173,42.846],[24.168,42.851],[24.167,42.869],[24.176,42.878],[24.177,42.889],[24.173,42.893],[24.151,42.901],[24.144,42.915],[24.146,42.926],[24.168,42.934],[24.17,42.937],[24.165,42.941],[24.125,42.947],[24.094,42.97],[24.09,43.006],[24.118,43.009],[24.134,42.983],[24.148,42.986],[24.163,42.985],[24.145,43.027],[24.148,43.039],[24.16,43.055],[24.176,43.06],[24.198,43.052],[24.224,43.056],[24.245,43.073],[24.29,43.062]]]}},{"type":"Feature","properties":{"name":"Тополовград","id":245,"pid":28,"pop":11681,"oblast":"Хасково"},"geometry":{"type":"Polygon","coordinates":[[[26.374,42.175],[26.38,42.168],[26.39,42.164],[26.398,42.163],[26.423,42.172],[26.429,42.171],[26.453,42.157],[26.494,42.166],[26.511,42.145],[26.537,42.144],[26.509,42.093],[26.513,42.073],[26.523,42.056],[26.521,42.039],[26.519,42.037],[26.498,42.033],[26.492,42.022],[26.51,42.011],[26.512,41.995],[26.526,41.984],[26.526,41.97],[26.549,41.955],[26.554,41.944],[26.56,41.939],[26.574,41.946],[26.58,41.944],[26.57,41.925],[26.586,41.907],[26.584,41.902],[26.582,41.899],[26.575,41.9],[26.57,41.897],[26.559,41.884],[26.552,41.881],[26.542,41.881],[26.529,41.889],[26.519,41.897],[26.513,41.907],[26.505,41.905],[26.489,41.906],[26.48,41.902],[26.47,41.906],[26.47,41.921],[26.461,41.934],[26.46,41.966],[26.445,41.98],[26.425,41.982],[26.409,41.993],[26.398,41.995],[26.396,41.982],[26.406,41.962],[26.403,41.958],[26.388,41.958],[26.377,41.961],[26.342,41.993],[26.299,42.023],[26.29,42.022],[26.271,42.012],[26.221,42.008],[26.179,42.025],[26.163,42.042],[26.16,42.092],[26.144,42.119],[26.145,42.148],[26.15,42.156],[26.166,42.167],[26.177,42.183],[26.184,42.206],[26.199,42.228],[26.238,42.217],[26.254,42.208],[26.295,42.203],[26.323,42.188],[26.331,42.18],[26.374,42.175]]]}},{"type":"Feature","properties":{"name":"Трън","id":159,"pid":119,"pop":4146,"oblast":"Перник"},"geometry":{"type":"Polygon","coordinates":[[[22.787,42.885],[22.792,42.878],[22.797,42.844],[22.831,42.813],[22.828,42.792],[22.819,42.78],[22.789,42.764],[22.753,42.773],[22.732,42.762],[22.726,42.755],[22.699,42.749],[22.686,42.738],[22.67,42.742],[22.661,42.739],[22.664,42.719],[22.653,42.704],[22.659,42.694],[22.659,42.685],[22.64,42.654],[22.644,42.642],[22.663,42.625],[22.666,42.613],[22.674,42.606],[22.673,42.597],[22.658,42.575],[22.635,42.579],[22.627,42.584],[22.625,42.622],[22.621,42.633],[22.612,42.64],[22.599,42.64],[22.549,42.632],[22.533,42.632],[22.483,42.643],[22.466,42.64],[22.453,42.646],[22.459,42.648],[22.458,42.655],[22.471,42.667],[22.475,42.675],[22.469,42.681],[22.46,42.683],[22.457,42.689],[22.467,42.691],[22.472,42.696],[22.475,42.71],[22.486,42.722],[22.496,42.723],[22.495,42.732],[22.501,42.739],[22.496,42.745],[22.481,42.754],[22.475,42.767],[22.459,42.779],[22.455,42.793],[22.44,42.804],[22.439,42.824],[22.465,42.833],[22.475,42.831],[22.497,42.848],[22.509,42.85],[22.521,42.858],[22.523,42.872],[22.541,42.885],[22.542,42.878],[22.566,42.868],[22.576,42.861],[22.575,42.875],[22.586,42.89],[22.594,42.889],[22.6,42.893],[22.605,42.889],[22.622,42.893],[22.637,42.878],[22.659,42.88],[22.674,42.872],[22.68,42.863],[22.685,42.871],[22.696,42.876],[22.703,42.886],[22.715,42.879],[22.721,42.884],[22.743,42.886],[22.759,42.898],[22.787,42.885]]]}},{"type":"Feature","properties":{"name":"Трекляно","id":325,"pid":97,"pop":629,"oblast":"Кюстендил"},"geometry":{"type":"Polygon","coordinates":[[[22.542,42.632],[22.604,42.641],[22.617,42.637],[22.625,42.622],[22.624,42.592],[22.63,42.582],[22.662,42.572],[22.682,42.539],[22.722,42.523],[22.729,42.51],[22.727,42.487],[22.717,42.484],[22.707,42.467],[22.693,42.456],[22.653,42.447],[22.637,42.457],[22.616,42.453],[22.608,42.455],[22.602,42.468],[22.604,42.483],[22.6,42.489],[22.582,42.484],[22.551,42.491],[22.553,42.5],[22.545,42.508],[22.499,42.538],[22.488,42.548],[22.481,42.55],[22.465,42.563],[22.45,42.567],[22.438,42.565],[22.44,42.589],[22.449,42.595],[22.45,42.611],[22.458,42.626],[22.456,42.631],[22.463,42.632],[22.466,42.64],[22.483,42.643],[22.542,42.632]]]}},{"type":"Feature","properties":{"name":"Троян","id":190,"pid":13,"pop":32399,"oblast":"Ловеч"},"geometry":{"type":"Polygon","coordinates":[[[24.893,43.033],[24.881,43.023],[24.871,42.987],[24.87,42.949],[24.88,42.921],[24.828,42.924],[24.818,42.92],[24.814,42.913],[24.815,42.902],[24.826,42.875],[24.842,42.855],[24.831,42.832],[24.832,42.827],[24.849,42.809],[24.867,42.798],[24.876,42.788],[24.879,42.78],[24.877,42.772],[24.885,42.751],[24.883,42.732],[24.89,42.714],[24.844,42.732],[24.801,42.739],[24.756,42.729],[24.725,42.731],[24.694,42.728],[24.686,42.75],[24.656,42.768],[24.633,42.776],[24.591,42.778],[24.552,42.785],[24.52,42.786],[24.504,42.79],[24.503,42.81],[24.508,42.817],[24.522,42.824],[24.523,42.833],[24.5,42.854],[24.488,42.874],[24.482,42.878],[24.489,42.887],[24.489,42.906],[24.477,42.924],[24.473,42.936],[24.443,42.968],[24.437,42.992],[24.45,43.012],[24.463,43.019],[24.502,43.024],[24.56,43.015],[24.635,43.018],[24.663,43.016],[24.696,43.006],[24.707,42.978],[24.724,42.976],[24.735,42.98],[24.743,42.993],[24.805,43.009],[24.861,43.034],[24.893,43.033]]]}},{"type":"Feature","properties":{"name":"Трявна","id":104,"pid":60,"pop":11754,"oblast":"Габрово"},"geometry":{"type":"Polygon","coordinates":[[[25.675,42.746],[25.667,42.733],[25.653,42.727],[25.639,42.729],[25.62,42.748],[25.613,42.749],[25.592,42.747],[25.574,42.736],[25.545,42.732],[25.524,42.738],[25.498,42.756],[25.483,42.759],[25.459,42.758],[25.455,42.784],[25.434,42.807],[25.436,42.818],[25.457,42.846],[25.482,42.869],[25.489,42.884],[25.503,42.897],[25.516,42.901],[25.565,42.898],[25.579,42.899],[25.593,42.906],[25.609,42.895],[25.635,42.897],[25.643,42.894],[25.644,42.863],[25.663,42.858],[25.667,42.851],[25.658,42.84],[25.624,42.822],[25.62,42.808],[25.639,42.786],[25.641,42.764],[25.661,42.758],[25.675,42.746]]]}},{"type":"Feature","properties":{"name":"Цар Калоян","id":249,"pid":21,"pop":6192,"oblast":"Разград"},"geometry":{"type":"Polygon","coordinates":[[[26.315,43.637],[26.335,43.618],[26.345,43.592],[26.339,43.559],[26.33,43.544],[26.321,43.536],[26.281,43.547],[26.258,43.567],[26.243,43.569],[26.231,43.566],[26.208,43.537],[26.199,43.535],[26.185,43.537],[26.169,43.53],[26.155,43.53],[26.143,43.526],[26.13,43.527],[26.11,43.547],[26.1,43.567],[26.067,43.584],[26.078,43.595],[26.08,43.601],[26.063,43.627],[26.064,43.635],[26.099,43.637],[26.117,43.648],[26.148,43.65],[26.16,43.663],[26.171,43.667],[26.193,43.665],[26.214,43.659],[26.236,43.663],[26.258,43.661],[26.306,43.636],[26.315,43.637]]]}},{"type":"Feature","properties":{"name":"Царево","id":250,"pid":44,"pop":9291,"oblast":"Бургас"},"geometry":{"type":"Polygon","coordinates":[[[27.767,41.973],[27.776,41.98],[27.783,41.993],[27.773,42.015],[27.758,42.031],[27.726,42.044],[27.706,42.069],[27.676,42.075],[27.672,42.089],[27.658,42.1],[27.65,42.115],[27.667,42.146],[27.663,42.16],[27.801,42.221],[27.825,42.212],[27.828,42.205],[27.838,42.198],[27.854,42.191],[27.852,42.186],[27.858,42.184],[27.859,42.177],[27.866,42.175],[27.862,42.171],[27.864,42.169],[27.872,42.168],[27.876,42.163],[27.879,42.165],[27.883,42.164],[27.883,42.155],[27.906,42.147],[27.913,42.133],[27.92,42.132],[27.918,42.124],[27.93,42.108],[27.955,42.108],[27.964,42.09],[27.981,42.072],[28,42.065],[27.994,42.058],[28.019,42.031],[28.026,42.009],[28.034,42.004],[28.043,41.99],[28.017,41.986],[27.998,41.987],[27.987,41.994],[27.96,41.983],[27.958,41.989],[27.951,41.986],[27.938,41.989],[27.935,41.981],[27.928,41.984],[27.921,41.981],[27.914,41.981],[27.907,41.986],[27.906,41.997],[27.893,41.998],[27.868,42.01],[27.866,41.999],[27.862,41.997],[27.858,41.997],[27.858,42.005],[27.853,42.005],[27.851,41.997],[27.836,42],[27.827,41.993],[27.825,41.984],[27.829,41.979],[27.828,41.968],[27.83,41.965],[27.838,41.968],[27.841,41.966],[27.841,41.96],[27.835,41.954],[27.828,41.959],[27.82,41.958],[27.818,41.948],[27.808,41.958],[27.796,41.955],[27.791,41.96],[27.787,41.959],[27.792,41.968],[27.789,41.969],[27.783,41.972],[27.776,41.968],[27.767,41.973]]]}},{"type":"Feature","properties":{"name":"Ценово","id":147,"pid":65,"pop":5923,"oblast":"Русе"},"geometry":{"type":"Polygon","coordinates":[[[25.649,43.663],[25.665,43.648],[25.668,43.637],[25.683,43.625],[25.713,43.606],[25.751,43.594],[25.761,43.584],[25.745,43.547],[25.75,43.531],[25.747,43.527],[25.724,43.511],[25.697,43.511],[25.692,43.504],[25.692,43.491],[25.687,43.486],[25.669,43.48],[25.656,43.483],[25.648,43.507],[25.636,43.515],[25.615,43.512],[25.582,43.494],[25.555,43.494],[25.537,43.5],[25.528,43.515],[25.516,43.521],[25.509,43.543],[25.496,43.551],[25.485,43.572],[25.492,43.583],[25.518,43.596],[25.522,43.603],[25.52,43.61],[25.51,43.622],[25.474,43.644],[25.498,43.651],[25.537,43.647],[25.562,43.648],[25.584,43.654],[25.63,43.679],[25.649,43.663]]]}},{"type":"Feature","properties":{"name":"Тунджа","id":185,"pid":71,"pop":24155,"oblast":"Ямбол"},"geometry":{"type":"Polygon","coordinates":[[[26.754,42.322],[26.722,42.318],[26.702,42.308],[26.693,42.309],[26.685,42.313],[26.674,42.313],[26.655,42.307],[26.63,42.294],[26.605,42.29],[26.591,42.285],[26.586,42.28],[26.59,42.264],[26.587,42.257],[26.552,42.244],[26.546,42.237],[26.536,42.233],[26.509,42.239],[26.486,42.231],[26.465,42.236],[26.445,42.23],[26.414,42.239],[26.406,42.237],[26.381,42.221],[26.383,42.198],[26.374,42.175],[26.331,42.18],[26.306,42.199],[26.291,42.204],[26.254,42.208],[26.228,42.221],[26.193,42.23],[26.18,42.24],[26.187,42.267],[26.237,42.339],[26.253,42.378],[26.253,42.39],[26.245,42.392],[26.222,42.377],[26.21,42.376],[26.189,42.405],[26.186,42.421],[26.194,42.425],[26.212,42.419],[26.23,42.42],[26.232,42.433],[26.226,42.454],[26.24,42.465],[26.282,42.459],[26.308,42.452],[26.318,42.457],[26.322,42.465],[26.344,42.475],[26.359,42.494],[26.39,42.506],[26.39,42.522],[26.372,42.541],[26.402,42.566],[26.414,42.569],[26.443,42.56],[26.469,42.561],[26.522,42.588],[26.563,42.585],[26.575,42.591],[26.587,42.573],[26.582,42.557],[26.586,42.555],[26.604,42.547],[26.613,42.537],[26.642,42.528],[26.686,42.501],[26.706,42.496],[26.727,42.465],[26.755,42.455],[26.763,42.45],[26.765,42.446],[26.761,42.432],[26.749,42.428],[26.74,42.418],[26.731,42.415],[26.726,42.404],[26.71,42.393],[26.707,42.383],[26.712,42.367],[26.751,42.339],[26.754,42.322]],[[26.423,42.464],[26.422,42.446],[26.452,42.446],[26.465,42.432],[26.459,42.422],[26.468,42.411],[26.495,42.424],[26.501,42.44],[26.532,42.441],[26.542,42.468],[26.557,42.47],[26.565,42.489],[26.583,42.492],[26.583,42.506],[26.595,42.515],[26.564,42.519],[26.561,42.533],[26.534,42.524],[26.533,42.532],[26.544,42.545],[26.539,42.553],[26.514,42.548],[26.503,42.525],[26.478,42.536],[26.462,42.53],[26.461,42.49],[26.449,42.489],[26.446,42.466],[26.423,42.464]]]}},{"type":"Feature","properties":{"name":"Тутракан","id":148,"pid":33,"pop":15374,"oblast":"Силистра"},"geometry":{"type":"Polygon","coordinates":[[[26.763,44.085],[26.769,44.074],[26.773,44.03],[26.761,44.014],[26.769,44.003],[26.769,43.993],[26.777,43.981],[26.777,43.973],[26.744,43.948],[26.732,43.924],[26.723,43.915],[26.676,43.878],[26.629,43.89],[26.622,43.899],[26.618,43.918],[26.599,43.932],[26.593,43.941],[26.567,43.942],[26.507,43.926],[26.498,43.928],[26.487,43.944],[26.48,43.948],[26.439,43.954],[26.422,43.951],[26.399,43.951],[26.387,43.965],[26.385,43.973],[26.404,43.99],[26.407,43.995],[26.405,44],[26.364,44.017],[26.34,44.042],[26.398,44.051],[26.417,44.046],[26.444,44.045],[26.458,44.049],[26.482,44.05],[26.553,44.068],[26.609,44.063],[26.66,44.071],[26.707,44.085],[26.741,44.083],[26.763,44.085]]]}},{"type":"Feature","properties":{"name":"Твърдица","id":243,"pid":94,"pop":13804,"oblast":"Сливен"},"geometry":{"type":"Polygon","coordinates":[[[26.097,42.605],[26.087,42.598],[26.074,42.594],[26.055,42.602],[26.031,42.588],[26.017,42.585],[26.015,42.591],[26.021,42.624],[26.008,42.63],[25.968,42.61],[25.945,42.612],[25.929,42.609],[25.92,42.6],[25.913,42.586],[25.898,42.594],[25.881,42.621],[25.873,42.674],[25.854,42.701],[25.838,42.76],[25.839,42.772],[25.844,42.78],[25.888,42.767],[25.908,42.767],[25.925,42.774],[25.996,42.787],[26.014,42.806],[26.041,42.825],[26.068,42.835],[26.079,42.833],[26.127,42.831],[26.137,42.828],[26.14,42.825],[26.135,42.803],[26.139,42.794],[26.138,42.774],[26.145,42.767],[26.16,42.772],[26.159,42.748],[26.167,42.738],[26.16,42.727],[26.157,42.705],[26.145,42.702],[26.131,42.714],[26.128,42.714],[26.119,42.707],[26.114,42.695],[26.098,42.675],[26.086,42.634],[26.088,42.62],[26.097,42.605]]]}},{"type":"Feature","properties":{"name":"Угърчин","id":210,"pid":13,"pop":6505,"oblast":"Ловеч"},"geometry":{"type":"Polygon","coordinates":[[[24.599,43.223],[24.58,43.209],[24.566,43.194],[24.562,43.182],[24.568,43.163],[24.547,43.161],[24.548,43.145],[24.537,43.134],[24.518,43.124],[24.516,43.114],[24.524,43.108],[24.548,43.104],[24.557,43.098],[24.568,43.1],[24.58,43.098],[24.576,43.088],[24.585,43.074],[24.577,43.063],[24.596,43.061],[24.608,43.051],[24.625,43.051],[24.646,43.059],[24.663,43.056],[24.679,43.066],[24.686,43.066],[24.682,43.038],[24.663,43.016],[24.635,43.018],[24.56,43.015],[24.502,43.024],[24.459,43.017],[24.441,43.001],[24.438,42.986],[24.443,42.968],[24.473,42.936],[24.477,42.924],[24.488,42.909],[24.489,42.887],[24.482,42.878],[24.448,42.89],[24.383,42.9],[24.37,42.906],[24.35,42.922],[24.315,42.936],[24.306,42.947],[24.308,42.962],[24.331,42.971],[24.343,42.987],[24.327,43.034],[24.312,43.049],[24.29,43.062],[24.299,43.076],[24.306,43.08],[24.328,43.077],[24.335,43.079],[24.325,43.095],[24.328,43.1],[24.316,43.112],[24.315,43.119],[24.331,43.136],[24.342,43.165],[24.355,43.179],[24.357,43.195],[24.369,43.207],[24.397,43.217],[24.437,43.211],[24.45,43.213],[24.453,43.234],[24.458,43.24],[24.47,43.233],[24.511,43.232],[24.543,43.222],[24.578,43.22],[24.599,43.223]]]}},{"type":"Feature","properties":{"name":"Вълчедръм","id":17,"pid":15,"pop":9900,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.577,43.814],[23.623,43.8],[23.623,43.784],[23.635,43.756],[23.635,43.741],[23.618,43.72],[23.61,43.689],[23.597,43.681],[23.591,43.641],[23.559,43.61],[23.556,43.593],[23.497,43.592],[23.488,43.595],[23.475,43.615],[23.465,43.621],[23.441,43.626],[23.444,43.634],[23.436,43.646],[23.431,43.648],[23.419,43.646],[23.397,43.664],[23.391,43.674],[23.397,43.691],[23.395,43.706],[23.371,43.722],[23.369,43.742],[23.362,43.752],[23.335,43.764],[23.353,43.786],[23.367,43.794],[23.429,43.791],[23.449,43.807],[23.479,43.815],[23.485,43.822],[23.486,43.85],[23.577,43.814]]]}},{"type":"Feature","properties":{"name":"Вълчи дол","id":193,"pid":4,"pop":10052,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.487,43.603],[27.505,43.59],[27.517,43.569],[27.512,43.536],[27.518,43.522],[27.562,43.521],[27.576,43.531],[27.588,43.55],[27.601,43.552],[27.615,43.543],[27.625,43.531],[27.622,43.509],[27.627,43.501],[27.648,43.49],[27.681,43.492],[27.7,43.485],[27.693,43.462],[27.686,43.452],[27.666,43.437],[27.655,43.418],[27.648,43.411],[27.627,43.402],[27.592,43.405],[27.574,43.399],[27.565,43.388],[27.55,43.381],[27.541,43.361],[27.535,43.356],[27.527,43.358],[27.516,43.368],[27.515,43.374],[27.524,43.39],[27.522,43.395],[27.514,43.397],[27.506,43.388],[27.496,43.384],[27.49,43.384],[27.475,43.397],[27.448,43.401],[27.441,43.406],[27.432,43.428],[27.388,43.464],[27.374,43.472],[27.37,43.483],[27.348,43.484],[27.346,43.487],[27.37,43.508],[27.373,43.515],[27.371,43.522],[27.355,43.522],[27.343,43.527],[27.34,43.544],[27.349,43.556],[27.361,43.563],[27.425,43.583],[27.442,43.592],[27.454,43.605],[27.47,43.601],[27.487,43.603]]]}},{"type":"Feature","properties":{"name":"Върбица","id":59,"pid":31,"pop":10391,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[26.727,43.179],[26.745,43.163],[26.767,43.159],[26.841,43.118],[26.845,43.103],[26.851,43.096],[26.895,43.084],[26.903,43.078],[26.904,43.062],[26.891,43.036],[26.869,43.026],[26.865,43.009],[26.849,42.988],[26.85,42.973],[26.867,42.952],[26.861,42.946],[26.843,42.946],[26.819,42.95],[26.799,42.948],[26.738,42.912],[26.687,42.913],[26.658,42.908],[26.649,42.915],[26.658,42.937],[26.652,42.941],[26.608,42.943],[26.591,42.939],[26.588,42.929],[26.562,42.932],[26.548,42.945],[26.544,42.973],[26.598,43.013],[26.623,43.018],[26.632,43.024],[26.633,43.029],[26.621,43.036],[26.629,43.048],[26.624,43.057],[26.632,43.061],[26.661,43.067],[26.664,43.095],[26.691,43.098],[26.698,43.104],[26.698,43.109],[26.681,43.127],[26.676,43.14],[26.677,43.154],[26.687,43.167],[26.681,43.177],[26.691,43.182],[26.717,43.174],[26.727,43.179]]]}},{"type":"Feature","properties":{"name":"Варна","id":279,"pid":4,"pop":343704,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[28.061,43.31],[28.046,43.267],[28.021,43.234],[28.007,43.222],[27.986,43.223],[27.933,43.209],[27.929,43.198],[27.919,43.198],[27.907,43.193],[27.908,43.191],[27.919,43.19],[27.925,43.177],[27.952,43.176],[27.955,43.164],[27.952,43.148],[27.94,43.129],[27.934,43.108],[27.917,43.116],[27.9,43.115],[27.876,43.123],[27.869,43.129],[27.837,43.131],[27.838,43.148],[27.815,43.153],[27.808,43.16],[27.808,43.214],[27.785,43.23],[27.779,43.238],[27.792,43.249],[27.81,43.253],[27.826,43.262],[27.829,43.267],[27.825,43.28],[27.833,43.284],[27.867,43.288],[27.889,43.305],[27.896,43.307],[27.914,43.3],[27.92,43.281],[27.929,43.273],[27.958,43.268],[27.969,43.27],[28.006,43.281],[28.036,43.307],[28.061,43.31]]]}},{"type":"Feature","properties":{"name":"Вършец","id":122,"pid":15,"pop":8203,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.441,43.265],[23.452,43.261],[23.466,43.25],[23.473,43.234],[23.468,43.219],[23.43,43.217],[23.419,43.206],[23.418,43.188],[23.435,43.163],[23.368,43.166],[23.35,43.152],[23.341,43.135],[23.324,43.125],[23.296,43.129],[23.266,43.118],[23.236,43.115],[23.219,43.126],[23.209,43.135],[23.209,43.158],[23.225,43.181],[23.228,43.196],[23.264,43.227],[23.244,43.246],[23.245,43.257],[23.286,43.276],[23.337,43.295],[23.351,43.285],[23.373,43.277],[23.406,43.269],[23.441,43.265]]]}},{"type":"Feature","properties":{"name":"Велики Преслав","id":32,"pid":31,"pop":13382,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[27.037,43.125],[26.986,43.111],[26.973,43.097],[26.968,43.087],[26.961,43.081],[26.921,43.086],[26.903,43.078],[26.877,43.091],[26.851,43.096],[26.844,43.105],[26.843,43.116],[26.835,43.122],[26.805,43.136],[26.767,43.159],[26.745,43.163],[26.727,43.179],[26.732,43.218],[26.741,43.227],[26.78,43.248],[26.788,43.262],[26.786,43.279],[26.802,43.284],[26.841,43.288],[26.872,43.282],[26.901,43.28],[26.914,43.264],[26.931,43.257],[26.934,43.252],[26.941,43.185],[26.948,43.181],[26.969,43.18],[26.977,43.177],[26.983,43.166],[27.007,43.155],[27.037,43.125]]]}},{"type":"Feature","properties":{"name":"Велико Търново","id":286,"pid":81,"pop":88670,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[25.653,43.259],[25.65,43.232],[25.63,43.211],[25.62,43.193],[25.622,43.182],[25.636,43.165],[25.643,43.146],[25.643,43.128],[25.646,43.123],[25.656,43.118],[25.685,43.113],[25.708,43.105],[25.724,43.105],[25.731,43.091],[25.753,43.066],[25.754,43.045],[25.758,43.041],[25.783,43.043],[25.798,43.032],[25.821,43.027],[25.836,43.032],[25.846,43.05],[25.85,43.049],[25.855,43.045],[25.86,43.029],[25.875,43.015],[25.881,42.991],[25.875,42.979],[25.875,42.965],[25.851,42.956],[25.84,42.956],[25.83,42.961],[25.807,42.962],[25.793,42.958],[25.75,42.961],[25.743,42.957],[25.738,42.941],[25.746,42.927],[25.727,42.923],[25.724,42.917],[25.731,42.911],[25.747,42.915],[25.756,42.914],[25.759,42.897],[25.75,42.885],[25.75,42.873],[25.759,42.861],[25.784,42.85],[25.786,42.844],[25.782,42.84],[25.765,42.835],[25.762,42.819],[25.737,42.787],[25.736,42.774],[25.676,42.746],[25.661,42.758],[25.641,42.764],[25.639,42.786],[25.621,42.805],[25.62,42.811],[25.624,42.822],[25.664,42.845],[25.666,42.855],[25.661,42.859],[25.644,42.863],[25.643,42.894],[25.635,42.897],[25.606,42.896],[25.572,42.924],[25.579,42.935],[25.573,42.95],[25.575,42.956],[25.614,42.976],[25.619,42.994],[25.611,43.007],[25.566,43.012],[25.541,43.031],[25.513,43.028],[25.505,43.03],[25.494,43.04],[25.471,43.039],[25.432,43.032],[25.41,43.049],[25.339,43.046],[25.333,43.049],[25.328,43.06],[25.342,43.088],[25.337,43.106],[25.347,43.115],[25.346,43.126],[25.365,43.133],[25.381,43.149],[25.391,43.148],[25.41,43.135],[25.411,43.12],[25.415,43.114],[25.426,43.115],[25.454,43.133],[25.481,43.136],[25.48,43.143],[25.472,43.152],[25.468,43.18],[25.482,43.212],[25.485,43.226],[25.479,43.239],[25.483,43.244],[25.5,43.245],[25.514,43.234],[25.528,43.234],[25.541,43.25],[25.542,43.268],[25.559,43.26],[25.598,43.258],[25.642,43.268],[25.649,43.265],[25.653,43.259]]]}},{"type":"Feature","properties":{"name":"Велинград","id":163,"pid":74,"pop":40707,"oblast":"Пазарджик"},"geometry":{"type":"Polygon","coordinates":[[[24.092,42.132],[24.089,42.106],[24.072,42.092],[24.074,42.081],[24.069,42.071],[24.079,42.042],[24.076,42.03],[24.091,42.018],[24.091,42.015],[24.071,42.005],[24.041,41.965],[24.021,41.948],[24.021,41.939],[24.027,41.922],[24.025,41.909],[24.034,41.889],[24.028,41.882],[24.027,41.866],[24.022,41.857],[24.005,41.846],[24.001,41.836],[24.008,41.814],[24.049,41.788],[24.075,41.754],[24.105,41.74],[24.117,41.729],[24.119,41.711],[24.101,41.69],[24.092,41.67],[24.071,41.678],[24.045,41.699],[23.998,41.731],[23.994,41.747],[23.987,41.753],[23.969,41.759],[23.908,41.798],[23.894,41.805],[23.865,41.811],[23.824,41.831],[23.803,41.845],[23.795,41.884],[23.776,41.915],[23.774,41.941],[23.765,41.965],[23.771,41.98],[23.827,42.028],[23.824,42.033],[23.808,42.037],[23.8,42.043],[23.802,42.082],[23.867,42.086],[23.907,42.096],[23.942,42.098],[23.961,42.102],[23.973,42.106],[23.999,42.122],[24.033,42.135],[24.053,42.147],[24.076,42.141],[24.092,42.132]]]}},{"type":"Feature","properties":{"name":"Венец","id":51,"pid":31,"pop":7137,"oblast":"Шумен"},"geometry":{"type":"Polygon","coordinates":[[[27.055,43.536],[27.04,43.529],[27.032,43.518],[27.023,43.515],[26.996,43.516],[26.985,43.513],[26.977,43.503],[26.956,43.493],[26.956,43.473],[26.952,43.465],[26.938,43.462],[26.898,43.482],[26.869,43.491],[26.848,43.511],[26.844,43.533],[26.822,43.538],[26.819,43.55],[26.839,43.568],[26.871,43.581],[26.892,43.595],[26.898,43.616],[26.903,43.622],[26.921,43.623],[26.945,43.615],[26.96,43.613],[26.976,43.619],[26.983,43.628],[27.007,43.623],[27.046,43.624],[27.053,43.619],[27.055,43.613],[27.04,43.573],[27.047,43.554],[27.043,43.545],[27.055,43.536]]]}},{"type":"Feature","properties":{"name":"Ветово","id":244,"pid":65,"pop":12450,"oblast":"Русе"},"geometry":{"type":"Polygon","coordinates":[[[26.531,43.77],[26.565,43.751],[26.561,43.736],[26.562,43.713],[26.557,43.697],[26.538,43.665],[26.524,43.654],[26.503,43.647],[26.48,43.644],[26.357,43.646],[26.333,43.643],[26.309,43.635],[26.274,43.655],[26.254,43.662],[26.23,43.663],[26.214,43.659],[26.193,43.665],[26.171,43.667],[26.16,43.663],[26.151,43.652],[26.116,43.699],[26.119,43.719],[26.115,43.728],[26.087,43.753],[26.089,43.774],[26.094,43.782],[26.1,43.785],[26.107,43.782],[26.117,43.766],[26.132,43.762],[26.157,43.748],[26.177,43.747],[26.23,43.764],[26.24,43.775],[26.256,43.802],[26.281,43.789],[26.355,43.792],[26.373,43.795],[26.386,43.794],[26.397,43.801],[26.409,43.794],[26.42,43.801],[26.429,43.803],[26.465,43.781],[26.531,43.77]]]}},{"type":"Feature","properties":{"name":"Ветрино","id":231,"pid":4,"pop":5415,"oblast":"Варна"},"geometry":{"type":"Polygon","coordinates":[[[27.409,43.448],[27.435,43.425],[27.441,43.406],[27.448,43.401],[27.475,43.397],[27.49,43.384],[27.502,43.386],[27.514,43.397],[27.524,43.393],[27.515,43.374],[27.516,43.368],[27.527,43.358],[27.535,43.356],[27.535,43.341],[27.546,43.333],[27.561,43.312],[27.557,43.287],[27.531,43.274],[27.527,43.257],[27.512,43.256],[27.503,43.26],[27.497,43.3],[27.483,43.312],[27.466,43.316],[27.454,43.315],[27.439,43.301],[27.431,43.297],[27.39,43.295],[27.376,43.287],[27.369,43.274],[27.359,43.272],[27.331,43.278],[27.303,43.279],[27.285,43.3],[27.282,43.312],[27.287,43.32],[27.31,43.322],[27.322,43.328],[27.332,43.335],[27.352,43.364],[27.349,43.371],[27.328,43.379],[27.318,43.393],[27.317,43.409],[27.325,43.427],[27.348,43.442],[27.374,43.472],[27.409,43.448]]]}},{"type":"Feature","properties":{"name":"Видин","id":285,"pid":46,"pop":63257,"oblast":"Видин"},"geometry":{"type":"Polygon","coordinates":[[[22.988,44.103],[23.014,44.104],[23.03,44.101],[23.041,44.087],[23.046,44.06],[23.038,44.044],[23.012,44.023],[22.979,44.012],[22.915,44.001],[22.898,43.993],[22.892,43.987],[22.878,43.955],[22.861,43.928],[22.851,43.896],[22.859,43.865],[22.874,43.85],[22.886,43.844],[22.884,43.835],[22.866,43.826],[22.819,43.822],[22.808,43.806],[22.789,43.796],[22.771,43.804],[22.754,43.801],[22.765,43.806],[22.763,43.822],[22.758,43.833],[22.762,43.852],[22.751,43.872],[22.728,43.873],[22.722,43.875],[22.72,43.887],[22.728,43.897],[22.718,43.926],[22.713,43.93],[22.701,43.93],[22.681,43.916],[22.665,43.915],[22.671,43.934],[22.699,43.954],[22.709,43.97],[22.693,43.972],[22.675,43.988],[22.678,43.993],[22.698,44.001],[22.701,44.007],[22.68,44.018],[22.67,44.017],[22.631,43.999],[22.619,44],[22.612,43.989],[22.602,43.985],[22.595,43.985],[22.586,43.991],[22.584,44.005],[22.591,44.011],[22.613,44.016],[22.626,44.025],[22.63,44.037],[22.648,44.043],[22.668,44.046],[22.695,44.045],[22.725,44.061],[22.75,44.062],[22.766,44.052],[22.794,44.057],[22.796,44.066],[22.782,44.08],[22.8,44.084],[22.823,44.088],[22.84,44.086],[22.845,44.082],[22.848,44.062],[22.859,44.058],[22.875,44.062],[22.892,44.074],[22.898,44.099],[22.912,44.119],[22.939,44.108],[22.971,44.102],[22.988,44.103]]]}},{"type":"Feature","properties":{"name":"Враца","id":280,"pid":49,"pop":73894,"oblast":"Враца"},"geometry":{"type":"Polygon","coordinates":[[[23.783,43.35],[23.823,43.314],[23.828,43.285],[23.822,43.269],[23.82,43.266],[23.81,43.268],[23.799,43.265],[23.775,43.249],[23.763,43.246],[23.744,43.246],[23.733,43.249],[23.73,43.265],[23.721,43.264],[23.707,43.252],[23.667,43.249],[23.665,43.239],[23.673,43.227],[23.673,43.219],[23.667,43.213],[23.647,43.212],[23.637,43.205],[23.624,43.18],[23.627,43.169],[23.65,43.149],[23.653,43.134],[23.651,43.128],[23.627,43.113],[23.606,43.108],[23.582,43.115],[23.563,43.116],[23.529,43.13],[23.509,43.134],[23.512,43.148],[23.507,43.155],[23.435,43.163],[23.418,43.188],[23.419,43.206],[23.43,43.217],[23.468,43.219],[23.473,43.228],[23.472,43.241],[23.466,43.25],[23.452,43.261],[23.441,43.265],[23.442,43.293],[23.462,43.31],[23.459,43.33],[23.465,43.335],[23.486,43.339],[23.496,43.352],[23.52,43.361],[23.533,43.373],[23.562,43.366],[23.579,43.369],[23.591,43.391],[23.575,43.427],[23.575,43.44],[23.593,43.464],[23.626,43.492],[23.643,43.478],[23.656,43.449],[23.693,43.429],[23.702,43.409],[23.735,43.391],[23.751,43.373],[23.783,43.35]]]}},{"type":"Feature","properties":{"name":"Ябланица","id":67,"pid":13,"pop":6234,"oblast":"Ловеч"},"geometry":{"type":"Polygon","coordinates":[[[24.245,43.073],[24.224,43.056],[24.198,43.052],[24.176,43.06],[24.16,43.055],[24.148,43.039],[24.145,43.027],[24.164,42.987],[24.134,42.983],[24.118,43.009],[24.09,43.006],[24.07,43.033],[24.065,43.044],[24.069,43.06],[24.064,43.068],[24.049,43.067],[24.006,43.056],[23.982,43.057],[23.987,43.074],[23.977,43.107],[23.978,43.111],[23.985,43.114],[24.03,43.113],[24.06,43.119],[24.068,43.115],[24.083,43.12],[24.12,43.122],[24.129,43.133],[24.135,43.135],[24.153,43.132],[24.21,43.136],[24.223,43.131],[24.236,43.12],[24.239,43.11],[24.235,43.085],[24.245,43.073]]]}},{"type":"Feature","properties":{"name":"Якимово","id":326,"pid":15,"pop":4332,"oblast":"Монтана"},"geometry":{"type":"Polygon","coordinates":[[[23.441,43.626],[23.427,43.626],[23.418,43.612],[23.405,43.609],[23.399,43.604],[23.392,43.589],[23.368,43.587],[23.339,43.562],[23.318,43.563],[23.301,43.568],[23.287,43.568],[23.243,43.551],[23.233,43.553],[23.217,43.566],[23.203,43.57],[23.188,43.579],[23.206,43.598],[23.236,43.617],[23.24,43.625],[23.233,43.637],[23.237,43.653],[23.269,43.655],[23.281,43.661],[23.282,43.68],[23.298,43.706],[23.285,43.725],[23.288,43.737],[23.297,43.751],[23.335,43.764],[23.366,43.748],[23.371,43.722],[23.397,43.704],[23.393,43.669],[23.419,43.646],[23.431,43.648],[23.436,43.646],[23.444,43.634],[23.441,43.626]]]}},{"type":"Feature","properties":{"name":"Якоруда","id":216,"pid":56,"pop":10731,"oblast":"Благоевград"},"geometry":{"type":"Polygon","coordinates":[[[23.802,42.082],[23.8,42.043],[23.808,42.037],[23.824,42.033],[23.827,42.028],[23.771,41.98],[23.765,41.965],[23.745,41.963],[23.736,41.965],[23.726,41.971],[23.723,41.987],[23.716,41.989],[23.702,41.98],[23.681,41.979],[23.675,41.971],[23.652,41.975],[23.636,41.955],[23.624,41.952],[23.615,41.954],[23.612,41.96],[23.623,41.983],[23.623,41.999],[23.621,42.009],[23.606,42.028],[23.612,42.071],[23.602,42.086],[23.581,42.098],[23.593,42.114],[23.604,42.146],[23.62,42.163],[23.654,42.158],[23.675,42.17],[23.682,42.17],[23.694,42.165],[23.719,42.149],[23.74,42.143],[23.746,42.148],[23.732,42.165],[23.734,42.175],[23.743,42.179],[23.775,42.182],[23.765,42.167],[23.766,42.156],[23.794,42.129],[23.788,42.11],[23.802,42.082]]]}},{"type":"Feature","properties":{"name":"Ямбол","id":297,"pid":71,"pop":74132,"oblast":"Ямбол"},"geometry":{"type":"Polygon","coordinates":[[[26.423,42.464],[26.446,42.466],[26.449,42.489],[26.461,42.49],[26.462,42.53],[26.478,42.536],[26.503,42.525],[26.514,42.548],[26.539,42.553],[26.544,42.545],[26.533,42.532],[26.534,42.524],[26.561,42.533],[26.564,42.519],[26.595,42.515],[26.583,42.506],[26.583,42.492],[26.565,42.489],[26.557,42.47],[26.542,42.468],[26.532,42.441],[26.501,42.44],[26.495,42.424],[26.468,42.411],[26.459,42.422],[26.465,42.432],[26.452,42.446],[26.422,42.446],[26.423,42.464]]]}},{"type":"Feature","properties":{"name":"Завет","id":161,"pid":21,"pop":10586,"oblast":"Разград"},"geometry":{"type":"Polygon","coordinates":[[[26.794,43.832],[26.796,43.825],[26.812,43.81],[26.81,43.8],[26.79,43.772],[26.779,43.771],[26.776,43.785],[26.77,43.785],[26.763,43.771],[26.749,43.759],[26.747,43.728],[26.734,43.7],[26.722,43.688],[26.713,43.682],[26.693,43.69],[26.657,43.683],[26.633,43.687],[26.605,43.685],[26.599,43.688],[26.605,43.706],[26.589,43.723],[26.592,43.737],[26.531,43.77],[26.535,43.776],[26.578,43.779],[26.596,43.806],[26.607,43.809],[26.618,43.806],[26.651,43.787],[26.663,43.785],[26.666,43.798],[26.646,43.825],[26.644,43.834],[26.656,43.857],[26.676,43.878],[26.696,43.87],[26.71,43.861],[26.73,43.86],[26.745,43.851],[26.773,43.851],[26.779,43.846],[26.785,43.832],[26.794,43.832]]]}},{"type":"Feature","properties":{"name":"Земен","id":217,"pid":119,"pop":2762,"oblast":"Перник"},"geometry":{"type":"Polygon","coordinates":[[[22.859,42.628],[22.867,42.624],[22.85,42.604],[22.819,42.61],[22.806,42.599],[22.786,42.593],[22.782,42.588],[22.792,42.567],[22.797,42.537],[22.824,42.509],[22.833,42.485],[22.827,42.462],[22.834,42.439],[22.813,42.42],[22.802,42.425],[22.779,42.429],[22.761,42.439],[22.726,42.485],[22.729,42.51],[22.725,42.521],[22.719,42.525],[22.682,42.539],[22.664,42.569],[22.655,42.574],[22.662,42.579],[22.674,42.602],[22.663,42.625],[22.644,42.642],[22.64,42.657],[22.659,42.685],[22.702,42.665],[22.719,42.661],[22.755,42.662],[22.767,42.656],[22.771,42.642],[22.777,42.638],[22.789,42.643],[22.798,42.657],[22.815,42.659],[22.842,42.636],[22.859,42.628]]]}},{"type":"Feature","properties":{"name":"Златарица","id":144,"pid":81,"pop":3991,"oblast":"Велико Търново"},"geometry":{"type":"Polygon","coordinates":[[[25.981,43.135],[26.004,43.125],[26.014,43.11],[26.02,43.107],[26.034,43.108],[26.053,43.115],[26.066,43.106],[26.079,43.107],[26.077,43.095],[26.097,43.066],[26.118,43.048],[26.151,43.034],[26.153,43.024],[26.118,43],[26.117,42.987],[26.091,42.986],[26.065,42.988],[26.054,42.992],[26.028,43.023],[26.024,43.026],[26.012,43.025],[26.005,43.022],[25.982,43.002],[25.96,42.991],[25.939,42.987],[25.915,42.992],[25.901,42.991],[25.885,42.971],[25.875,42.965],[25.875,42.979],[25.881,42.991],[25.876,43.012],[25.856,43.034],[25.855,43.045],[25.846,43.05],[25.851,43.059],[25.868,43.07],[25.865,43.085],[25.887,43.095],[25.921,43.128],[25.964,43.135],[25.981,43.135]]]}},{"type":"Feature","properties":{"name":"Златица","id":234,"pid":38,"pop":5837,"oblast":"Софийска"},"geometry":{"type":"MultiPolygon","coordinates":[[[[24.051,42.575],[24.052,42.562],[24.06,42.548],[24.05,42.541],[24.04,42.541],[24.031,42.545],[23.987,42.574],[23.972,42.57],[23.973,42.614],[23.977,42.621],[23.988,42.628],[24.02,42.635],[24.032,42.644],[24.05,42.585],[24.051,42.575]]],[[[24.128,42.564],[24.117,42.563],[24.095,42.57],[24.087,42.608],[24.089,42.654],[24.08,42.683],[24.1,42.696],[24.091,42.735],[24.091,42.756],[24.122,42.781],[24.148,42.786],[24.159,42.778],[24.194,42.773],[24.167,42.735],[24.128,42.664],[24.127,42.656],[24.134,42.646],[24.134,42.62],[24.146,42.606],[24.138,42.598],[24.134,42.57],[24.128,42.564]]]]}},{"type":"Feature","properties":{"name":"Златоград","id":24,"pid":23,"pop":12321,"oblast":"Смолян"},"geometry":{"type":"Polygon","coordinates":[[[25.159,41.437],[25.164,41.433],[25.188,41.433],[25.192,41.427],[25.184,41.417],[25.15,41.401],[25.159,41.397],[25.165,41.385],[25.157,41.362],[25.158,41.357],[25.165,41.352],[25.167,41.339],[25.143,41.322],[25.137,41.321],[25.123,41.331],[25.124,41.342],[25.111,41.342],[25.098,41.334],[25.092,41.339],[25.082,41.338],[25.069,41.348],[25.063,41.359],[25.055,41.364],[25.041,41.367],[25.034,41.365],[24.989,41.376],[24.976,41.376],[24.952,41.387],[24.94,41.386],[24.917,41.404],[24.936,41.413],[24.942,41.432],[24.957,41.435],[24.985,41.432],[24.991,41.452],[25.022,41.471],[25.044,41.47],[25.06,41.449],[25.06,41.443],[25.089,41.428],[25.103,41.431],[25.121,41.428],[25.159,41.437]]]}}]}
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Bulgarian dialect data</title>
<script type="text/javascript" src="d3.v3.js"></script>
<script type="text/javascript" src="bulgaria.js"></script>
<style type="text/css">
#states path {
stroke: #fff;
}
path.arc {
pointer-events: none;
fill: none;
stroke: #000;
display: none;
}
path.cell {
fill: none;
pointer-events: none;
}
circle {
fill: steelblue;
fill-opacity: .8;
stroke: #fff;
}
#cells.voronoi path.cell {
stroke: white;
stroke-width: 1;
}
#cells g:hover path.arc {
display: inherit;
}
.poly:hover {
stroke: white;
stroke-width: 2;
}
</style>
</head>
<body>
<div id="map" style="position:absolute; left: 70px;"></div>
<div style="position:absolute;top:10px;font-size:18px;">
<input type="checkbox" id="voronoi"> <label for="voronoi">show voronoi</label> <br>
<input type="checkbox" id="locations"> <label for="voronoi">show locations</label> <br>
<select name="inputdata" id="inputdata" size="1">
<option value="bulgaria_non.txt">raw MDS values</option>
<option value="bulgaria.txt">scaled MDS values</option>
</select> <label for='colorspace'>select input data</label> <br>
<select name="colorspace" id="colorspace" size="1" onchange="
if(this.selectedIndex != 0){ document.getElementById('luminationcontrol').style.visibility = 'hidden';}
else{ document.getElementById('luminationcontrol').style.visibility = 'visible';}">
<option>L*a*b*</option>
<option>L*a*b* (using formula)</option>
<option>RGB</option>
<option>HSL</option>
<option>HCL</option>
<option>RYB</option>
</select> <label for='colorspace'>select color space</label>
<div id="luminationcontrol">
<input id="lumination" type='range' min="0" max="100" value="60">
<label for="lumination">L value: <span id="lvalue">60</span></label>
</div>
<div id="infopanel" style="display: none;">
Name: <span id="info" style="text-transform: capitalize;"></span> <br>
Dim 1: <span id="mds1"></span> <br>
Dim 2: <span id="mds2"></span> <br>
Dim 3: <span id="mds3"></span>
</div>
</div>
<script type="text/javascript">
var inputdatafile = "bulgaria_non.txt";
var currscale = 'lab';
var data = [];
//Width and height
var w = 1000;
var h = 1000;
var dim1values = [];
var dim2values = [];
var dim3values = [];
var dim1scale = d3.scale.linear();
var dim2scale = d3.scale.linear();
var dim3scale = d3.scale.linear();
d3.tsv(inputdatafile, function(data) {
data.forEach(function(a){
dim1values.push(parseFloat(a.dim1));
dim2values.push(parseFloat(a.dim2));
dim3values.push(parseFloat(a.dim3));
});
dim1scale
.domain([d3.min(dim1values),d3.max(dim1values)])
.range([0,1])
;
dim2scale
.domain([d3.min(dim2values),d3.max(dim2values)])
.range([0,1])
;
dim3scale
.domain([d3.min(dim3values),d3.max(dim3values)])
.range([0,1])
;
});
// l*a*b* scale
var aScale = d3.scale.linear()
.domain([0,1])
.range([-150,100]);
;
var bScale = d3.scale.linear()
.domain([0,1])
.range([-100,150]);
;
// l*a*b* scale
var aScaleInv = d3.scale.linear()
.domain([-1,1])
.range([-150,100]);
;
// RGB scale
var rgbScale = d3.scale.linear()
.domain([0,1])
.range([0,255]);
;
// HSL scale
var hslScale = d3.scale.linear()
.domain([0,1])
.range([0,360]);
;
// HCLHue scale
var hclHueScale = d3.scale.linear()
.domain([0,1])
.range([0,360]);
;
// HCLChromaLuminance scale
var hclCLScale = d3.scale.linear()
.domain([0,1])
.range([0,100]);
;
var bScaleInv = d3.scale.linear()
.domain([-1,1])
.range([-100,150]);
;
// lvalue for L*a*b*
var lvalue = 60;
//Define map projection
var projection = d3.geo.mercator()
.center([24.7, 42.55])
.scale([7000 * 5]);
//Define path generator
var path = d3.geo.path()
.projection(projection);
//Create SVG element
var svg = d3.select("#map")
.append("svg")
.attr("width", w)
.attr("height", h);
var polys = svg.append("svg:g")
.attr("id","polys")
;
var circles = svg.append("svg:g")
.attr("id", "circles")
;
var cells = svg.append("svg:g")
.attr("id", "cells")
.attr("pointer-events",'none')
;
var states = svg.append("svg:g")
.attr("id", "states")
;
d3.select("#voronoi").on("change", function() {
cells.classed("voronoi", this.checked);
});
d3.select("#locations").on("change", function() {
var locationopacity = this.checked ? 1 : 0;
var locationpointer = this.checked ? 'all' : 'none';
//console.log(locationopacity);
d3.selectAll('.location')
.style("opacity",locationopacity)
.attr('pointer-events', locationpointer)
;
});
//Load in GeoJSON data
d3.json("geo.json", function(json) {
//Bind data and create one path per GeoJSON feature
states.selectAll("path")
.data(json.features)
.enter()
.append("path")
.attr("d", path)
.style("fill", "none")
.style("stroke","#d0d0d0")
.style("stroke-width","0.1px")
.attr('pointer-events','none')
;
d3.tsv(inputdatafile, function(inputdata) {
// get the positions and polygons for the voronoi
data = inputdata;
positions = [];
data.forEach(function(a){
positions.push(projection([a.lon,a.lat]));
});
circles.selectAll("circle")
.data(data)
.enter()
.append("circle")
.attr('class','location')
.attr("cx", function(d) {
return projection([d.lon, d.lat])[0];
})
.attr("cy", function(d) {
return projection([d.lon, d.lat])[1];
})
.attr("r", 4)
.attr('pointer-events','none')
.style("fill", "steelblue")
.style("stroke","white")
.style("stroke-weight",3)
.style("opacity", 0)
.style('cursor','pointer')
.append("title")
.text(function(d){
return d.name;
})
;
var polygons = d3.geom.voronoi(positions);
var hesse = [];
hessen.forEach(function(a){
//parts = a.split(';').reverse()
parts = a;
hesse.push(projection(parts));
//hesse.push(parts);
});
//console.log(hesse);
var hesse_poly = d3.geom.polygon(hesse);
//console.log(polygons);
// plot the voronoi polygons
var g = cells.selectAll("g")
.data(data)
.enter().append("svg:g");
g.append("svg:path")
.attr("class", "cell")
.attr("d", function(d, i) { return "M" + polygons[i].join("L") + "Z"; })
.attr('pointer-events','none')
;
// make the clipped polygons
// non-contiguous polygons: 43,48,56,58
polys.selectAll('polygon')
.data(polygons)
.enter()
.append("polygon")
.attr('class',function(d,i){return 'poly poly_' + i;})
.attr("points",function(d,i) {
var currHesse = hesse.slice(0);
var hesse_poly = d3.geom.polygon(currHesse);
var currPoly = d3.geom.polygon(d).clip(hesse_poly);
return currPoly.map(function(m){
//return d.map(function(m){
return [m[0],m[1]].join(',');
}).join(" ");
})
//.attr("fill",'green')
.attr("fill",function(d,i){
//console.log(data[i].dim1,data[i].dim2);
//console.log(dim1scale(data[i].dim1));
return d3.lab(lvalue,aScale(dim1scale(data[i].dim1)),bScale(dim2scale(data[i].dim2)));
})
.style("cursor","pointer")
.style('opacity',1)//function(d,i){return (156-i)/156;})
.on("mouseover",function(d,i){
document.getElementById('info').innerHTML = data[i].name;
document.getElementById('mds1').innerHTML = data[i].dim1;
document.getElementById('mds2').innerHTML = data[i].dim2;
document.getElementById('mds3').innerHTML = data[i].dim3;
d3.select('#infopanel').style('display','block');
})
.on("mouseout",function(d,i){
document.getElementById('info').innerHTML = "";
document.getElementById('mds1').innerHTML = "";
document.getElementById('mds2').innerHTML = "";
document.getElementById('mds3').innerHTML = "";
d3.select('#infopanel').style('display','none');
})
;
// non-contiguous polygons: 43,48,56,58
polys.selectAll('polygon2')
.data([hesse])
.enter()
.append("polygon")
.attr("points",function(d,i) {
//console.log(d);
return d.map(function(m){
return [m[0],m[1]].join(',');
}).join(" ");
})
.attr('fill','none')
.attr("stroke","black")
.attr("stroke-width",1)
;
//############### Lumination slider ###############
d3.select("#lumination").on("change", function() {
lvalue = this.value;
//console.log(lvalue);
document.getElementById("lvalue").innerHTML = lvalue;
polys.selectAll('.poly')
.data(polygons)
.attr("fill",function(d,i){
//console.log(data[i].dim1,data[i].dim2);
return d3.lab(lvalue,aScale(dim1scale(data[i].dim1)),bScale(dim2scale(data[i].dim2)));
})
;
});
//############### Lumination slider ###############
d3.select("#inputdata").on("change", function() {
inputdatafile = this.value;
console.log(inputdatafile);
d3.tsv(inputdatafile, function(datanew) {
data = datanew;
if(inputdatafile == 'bulgaria.txt'){
dim1scale
.domain([0,1])
;
dim2scale
.domain([0,1])
;
dim3scale
.domain([0,1])
;
}
else{
data.forEach(function(a){
dim1values.push(parseFloat(a.dim1));
dim2values.push(parseFloat(a.dim2));
dim3values.push(parseFloat(a.dim3));
});
dim1scale
.domain([d3.min(dim1values),d3.max(dim1values)])
.range([0,1])
;
dim2scale
.domain([d3.min(dim2values),d3.max(dim2values)])
.range([0,1])
;
dim3scale
.domain([d3.min(dim3values),d3.max(dim3values)])
.range([0,1])
;
}
colormap(currscale);
});
});
//############### Dropdown menu ###############
d3.select("#colorspace").on("change", function() {
// L*a*b* with formula below
if(this.selectedIndex == 1){
currscale = 'labform';
colormap(currscale);
}
// RGB
else if(this.selectedIndex == 2){
currscale = 'rgb';
colormap(currscale);
}
// HSL
else if(this.selectedIndex == 3){
currscale = 'hsl';
colormap(currscale);
}
// HCL
else if(this.selectedIndex == 4){
currscale = 'hcl';
colormap(currscale);
}
// RYB
else if(this.selectedIndex == 5){
currscale = 'ryb';
colormap(currscale);
}
// L*a*b* directly with dim1 as a and dim2 as b (L value variable in slider)
else{
currscale = 'lab';
colormap(currscale);
}
});
// change values in map
function colormap(colorscale){
polys.selectAll('.poly')
.data(polygons)
.transition()
.duration(1000)
.attr("fill",function(d,i){
//console.log(data[i].dim1,data[i].dim2);
if(colorscale == 'labform'){
var colarray = cl2pix(dim1scale(data[i].dim1),dim2scale(data[i].dim2));
return d3.lab(colarray[0]*100,aScaleInv(colarray[1]),bScaleInv(colarray[2]));
}
else if(colorscale == 'rgb'){
return d3.rgb(rgbScale(dim1scale(data[i].dim1)),rgbScale(dim2scale(data[i].dim2)),rgbScale(dim3scale(data[i].dim3)));
}
else if(colorscale == 'hsl'){
return d3.hsl(hslScale(dim1scale(data[i].dim1)),dim2scale(data[i].dim2),dim3scale(data[i].dim3));
}
else if(colorscale == 'hcl'){
return d3.hcl(hclHueScale(dim1scale(data[i].dim1)),hclCLScale(dim2scale(data[i].dim2)),hclCLScale(dim3scale(data[i].dim3)));
}
else if(colorscale == 'ryb'){
var rgbvalues = RYB2RGB(dim1scale(data[i].dim1),dim2scale(data[i].dim2),dim3scale(data[i].dim3));
return d3.rgb(rgbvalues[0],rgbvalues[1],rgbvalues[2]);
}
else{
return d3.lab(lvalue,aScale(dim1scale(data[i].dim1)),bScale(dim2scale(data[i].dim2)));
}
})
;
};
// taken from http://davidad.net/colorviz/
// convert into lab color
function cl2pix(c,l){
var TAU = 6.283185307179586476925287 // also known as "two pi"
var L = l*0.61 + 0.09; // L of L*a*b*
var angle = TAU/6.0 - c*TAU;
var r = l*0.311 + 0.125 //~chroma
var a = Math.sin(angle)*r;
var b = Math.cos(angle)*r;
return [L,a,b];
};
// taken from http://www.delphipraxis.net/152223-rgb-ryb.html
function cubicInt(t, A, B){
var weight = t*t*(3-2*t);
return A + weight*(B-A);
}
function getR (iR, iY, iB) {
var x0, x1, x2, x3, y0, y1;
//red
var x0 = cubicInt(iB, 1.0, 0.163);
var x1 = cubicInt(iB, 1.0, 0.0);
var x2 = cubicInt(iB, 1.0, 0.5);
var x3 = cubicInt(iB, 1.0, 0.2);
var y0 = cubicInt(iY, x0, x1);
var y1 = cubicInt(iY, x2, x3);
return Math.ceil (255 * cubicInt(iR, y0, y1));
}
function getG (iR, iY, iB) {
var x0, x1, x2, x3, y0, y1;
//green
x0 = cubicInt(iB, 1.0, 0.373);
x1 = cubicInt(iB, 1.0, 0.66);
x2 = cubicInt(iB, 0.0, 0.0);
x3 = cubicInt(iB, 0.5, 0.094);
y0 = cubicInt(iY, x0, x1);
y1 = cubicInt(iY, x2, x3);
return Math.ceil (255 * cubicInt(iR, y0, y1));
}
function getB (iR, iY, iB) {
var x0, x1, x2, x3, y0, y1;
//blue
x0 = cubicInt(iB, 1.0, 0.6);
x1 = cubicInt(iB, 0.0, 0.2);
x2 = cubicInt(iB, 0.0, 0.5);
x3 = cubicInt(iB, 0.0, 0.0);
y0 = cubicInt(iY, x0, x1);
y1 = cubicInt(iY, x2, x3);
return Math.ceil (255 * cubicInt(iR, y0, y1));
}
function RYB2RGB(R,Y,B){
if (
isNaN( R ) || isNaN( Y ) || isNaN( B ) ||
(R < 0 || R > 1) ||
(Y < 0 || Y > 1) ||
(B < 0 || B > 1)
)
{
alert('Invalid RYB values');
return;
}
//----------------------------
var R1 = getR(R,Y,B) ;
var G1 = getG(R,Y,B) ;
var B1 = getB(R,Y,B) ;
return [R1,G1,B1];
}
});
});
</script>
</body>
</html>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment