[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"guide-autocomplete-api-guide":3,"related-autocomplete-api-guide":6254},{"id":4,"title":5,"body":6,"category":6244,"description":6245,"draft":6246,"extension":6247,"icon":6248,"meta":6249,"navigation":635,"order":283,"path":6250,"seo":6251,"stem":6252,"__hash__":6253},"guides\u002Fguides\u002Fautocomplete-api-guide.md","Building Autocomplete Search with the Township Canada API",{"type":7,"value":8,"toc":6232},"minimark",[9,14,18,22,40,44,55,61,67,72,139,144,150,155,436,451,455,458,596,599,603,610,855,862,866,875,999,1010,1014,1017,1037,1048,1052,1055,3779,3783,3786,3793,4953,4960,6088,6091,6158,6162,6209,6212,6229],[10,11,13],"h2",{"id":12},"what-youll-build","What You'll Build",[15,16,17],"p",{},"A search-as-you-type input that queries the Township Canada Autocomplete API as users type, shows a dropdown of matching legal land descriptions, and lets users select a result with mouse or keyboard. By the end you'll have a working component in vanilla JS and React.",[10,19,21],{"id":20},"prerequisites","Prerequisites",[23,24,25,34,37],"ul",{},[26,27,28,29],"li",{},"A Township Canada API key - get one from the ",[30,31,33],"a",{"href":32},"\u002Fapp\u002Fapi","API page",[26,35,36],{},"Basic familiarity with fetch and async\u002Fawait",[26,38,39],{},"For the React example: a React project (Next.js, Vite, or Create React App)",[10,41,43],{"id":42},"the-autocomplete-endpoint","The Autocomplete Endpoint",[45,46,51],"pre",{"className":47,"code":49,"language":50},[48],"language-text","GET https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location\n","text",[52,53,49],"code",{"__ignoreMap":54},"",[15,56,57],{},[58,59,60],"strong",{},"Headers:",[45,62,65],{"className":63,"code":64,"language":50},[48],"X-API-Key: YOUR_API_KEY\n",[52,66,64],{"__ignoreMap":54},[15,68,69],{},[58,70,71],{},"Query parameters:",[73,74,75,91],"table",{},[76,77,78],"thead",{},[79,80,81,85,88],"tr",{},[82,83,84],"th",{},"Parameter",[82,86,87],{},"Required",[82,89,90],{},"Description",[92,93,94,111,124],"tbody",{},[79,95,96,102,105],{},[97,98,99],"td",{},[52,100,101],{},"location",[97,103,104],{},"Yes",[97,106,107,108],{},"Partial or full legal land description, e.g. ",[52,109,110],{},"NW-2",[79,112,113,118,121],{},[97,114,115],{},[52,116,117],{},"limit",[97,119,120],{},"No",[97,122,123],{},"Number of results to return. Range: 1–10, default 3",[79,125,126,131,133],{},[97,127,128],{},[52,129,130],{},"proximity",[97,132,120],{},[97,134,135,136],{},"Bias results toward a point: ",[52,137,138],{},"lng,lat",[15,140,141],{},[58,142,143],{},"Example request:",[45,145,148],{"className":146,"code":147,"language":50},[48],"GET \u002Fautocomplete\u002Flegal-location?location=NW-25-24-1&limit=3\n",[52,149,147],{"__ignoreMap":54},[15,151,152],{},[58,153,154],{},"Response format:",[45,156,160],{"className":157,"code":158,"language":159,"meta":54,"style":54},"language-json shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","{\n  \"type\": \"FeatureCollection\",\n  \"features\": [\n    {\n      \"type\": \"Feature\",\n      \"geometry\": {\n        \"type\": \"Point\",\n        \"coordinates\": [-114.01924, 51.077932]\n      },\n      \"properties\": {\n        \"legal_location\": \"NW-25-24-1-W5\",\n        \"search_term\": \"NW-25-24-1\",\n        \"survey_system\": \"DLS\",\n        \"unit\": \"Quarter Section\"\n      }\n    }\n  ]\n}\n","json",[52,161,162,171,201,216,222,244,259,281,309,315,329,350,371,392,412,418,424,430],{"__ignoreMap":54},[163,164,167],"span",{"class":165,"line":166},"line",1,[163,168,170],{"class":169},"soVBu","{\n",[163,172,174,178,182,185,188,192,196,198],{"class":165,"line":173},2,[163,175,177],{"class":176},"s4Jsk","  \"",[163,179,181],{"class":180},"sLorS","type",[163,183,184],{"class":176},"\"",[163,186,187],{"class":169},":",[163,189,191],{"class":190},"sbYkP"," \"",[163,193,195],{"class":194},"sTbE_","FeatureCollection",[163,197,184],{"class":190},[163,199,200],{"class":169},",\n",[163,202,204,206,209,211,213],{"class":165,"line":203},3,[163,205,177],{"class":176},[163,207,208],{"class":180},"features",[163,210,184],{"class":176},[163,212,187],{"class":169},[163,214,215],{"class":169}," [\n",[163,217,219],{"class":165,"line":218},4,[163,220,221],{"class":169},"    {\n",[163,223,225,228,231,233,235,237,240,242],{"class":165,"line":224},5,[163,226,227],{"class":176},"      \"",[163,229,181],{"class":230},"sa2tF",[163,232,184],{"class":176},[163,234,187],{"class":169},[163,236,191],{"class":190},[163,238,239],{"class":194},"Feature",[163,241,184],{"class":190},[163,243,200],{"class":169},[163,245,247,249,252,254,256],{"class":165,"line":246},6,[163,248,227],{"class":176},[163,250,251],{"class":230},"geometry",[163,253,184],{"class":176},[163,255,187],{"class":169},[163,257,258],{"class":169}," {\n",[163,260,262,265,268,270,272,274,277,279],{"class":165,"line":261},7,[163,263,264],{"class":176},"        \"",[163,266,181],{"class":267},"skNjk",[163,269,184],{"class":176},[163,271,187],{"class":169},[163,273,191],{"class":190},[163,275,276],{"class":194},"Point",[163,278,184],{"class":190},[163,280,200],{"class":169},[163,282,284,286,289,291,293,296,300,303,306],{"class":165,"line":283},8,[163,285,264],{"class":176},[163,287,288],{"class":267},"coordinates",[163,290,184],{"class":176},[163,292,187],{"class":169},[163,294,295],{"class":169}," [",[163,297,299],{"class":298},"s7CZa","-114.01924",[163,301,302],{"class":169},",",[163,304,305],{"class":298}," 51.077932",[163,307,308],{"class":169},"]\n",[163,310,312],{"class":165,"line":311},9,[163,313,314],{"class":169},"      },\n",[163,316,318,320,323,325,327],{"class":165,"line":317},10,[163,319,227],{"class":176},[163,321,322],{"class":230},"properties",[163,324,184],{"class":176},[163,326,187],{"class":169},[163,328,258],{"class":169},[163,330,332,334,337,339,341,343,346,348],{"class":165,"line":331},11,[163,333,264],{"class":176},[163,335,336],{"class":267},"legal_location",[163,338,184],{"class":176},[163,340,187],{"class":169},[163,342,191],{"class":190},[163,344,345],{"class":194},"NW-25-24-1-W5",[163,347,184],{"class":190},[163,349,200],{"class":169},[163,351,353,355,358,360,362,364,367,369],{"class":165,"line":352},12,[163,354,264],{"class":176},[163,356,357],{"class":267},"search_term",[163,359,184],{"class":176},[163,361,187],{"class":169},[163,363,191],{"class":190},[163,365,366],{"class":194},"NW-25-24-1",[163,368,184],{"class":190},[163,370,200],{"class":169},[163,372,374,376,379,381,383,385,388,390],{"class":165,"line":373},13,[163,375,264],{"class":176},[163,377,378],{"class":267},"survey_system",[163,380,184],{"class":176},[163,382,187],{"class":169},[163,384,191],{"class":190},[163,386,387],{"class":194},"DLS",[163,389,184],{"class":190},[163,391,200],{"class":169},[163,393,395,397,400,402,404,406,409],{"class":165,"line":394},14,[163,396,264],{"class":176},[163,398,399],{"class":267},"unit",[163,401,184],{"class":176},[163,403,187],{"class":169},[163,405,191],{"class":190},[163,407,408],{"class":194},"Quarter Section",[163,410,411],{"class":190},"\"\n",[163,413,415],{"class":165,"line":414},15,[163,416,417],{"class":169},"      }\n",[163,419,421],{"class":165,"line":420},16,[163,422,423],{"class":169},"    }\n",[163,425,427],{"class":165,"line":426},17,[163,428,429],{"class":169},"  ]\n",[163,431,433],{"class":165,"line":432},18,[163,434,435],{"class":169},"}\n",[15,437,438,439,442,443,446,447,450],{},"Each feature's display label is at ",[52,440,441],{},"feature.properties.legal_location",". Coordinates are at ",[52,444,445],{},"feature.geometry.coordinates"," as ",[52,448,449],{},"[longitude, latitude]",".",[10,452,454],{"id":453},"step-1-debouncing","Step 1: Debouncing",[15,456,457],{},"The autocomplete endpoint is fast, but firing a request on every keystroke wastes API quota and creates a choppy experience. A 300ms debounce is the right balance - responsive enough that users don't notice the delay, but conservative enough to batch rapid keystrokes into a single request.",[45,459,463],{"className":460,"code":461,"language":462,"meta":54,"style":54},"language-js shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","function debounce(fn, delay) {\n  let timer;\n  return function (...args) {\n    clearTimeout(timer);\n    timer = setTimeout(() => fn.apply(this, args), delay);\n  };\n}\n","js",[52,464,465,492,504,523,538,587,592],{"__ignoreMap":54},[163,466,467,471,475,478,482,484,487,490],{"class":165,"line":166},[163,468,470],{"class":469},"s5Kfy","function",[163,472,474],{"class":473},"sljsM"," debounce",[163,476,477],{"class":169},"(",[163,479,481],{"class":480},"sqOPj","fn",[163,483,302],{"class":169},[163,485,486],{"class":480}," delay",[163,488,489],{"class":169},")",[163,491,258],{"class":169},[163,493,494,497,501],{"class":165,"line":173},[163,495,496],{"class":469},"  let",[163,498,500],{"class":499},"sSC40"," timer",[163,502,503],{"class":169},";\n",[163,505,506,510,513,516,519,521],{"class":165,"line":203},[163,507,509],{"class":508},"siDh9","  return",[163,511,512],{"class":469}," function",[163,514,515],{"class":169}," (...",[163,517,518],{"class":480},"args",[163,520,489],{"class":169},[163,522,258],{"class":169},[163,524,525,528,531,534,536],{"class":165,"line":218},[163,526,527],{"class":473},"    clearTimeout",[163,529,477],{"class":530},"sLdnO",[163,532,533],{"class":499},"timer",[163,535,489],{"class":530},[163,537,503],{"class":169},[163,539,540,543,546,549,551,554,558,561,563,566,568,572,574,577,579,581,583,585],{"class":165,"line":224},[163,541,542],{"class":499},"    timer",[163,544,545],{"class":169}," =",[163,547,548],{"class":473}," setTimeout",[163,550,477],{"class":530},[163,552,553],{"class":169},"()",[163,555,557],{"class":556},"sIOqK"," =>",[163,559,560],{"class":499}," fn",[163,562,450],{"class":169},[163,564,565],{"class":473},"apply",[163,567,477],{"class":530},[163,569,571],{"class":570},"sETVe","this",[163,573,302],{"class":169},[163,575,576],{"class":499}," args",[163,578,489],{"class":530},[163,580,302],{"class":169},[163,582,486],{"class":499},[163,584,489],{"class":530},[163,586,503],{"class":169},[163,588,589],{"class":165,"line":246},[163,590,591],{"class":169},"  };\n",[163,593,594],{"class":165,"line":261},[163,595,435],{"class":169},[15,597,598],{},"Wrap your fetch call with this before attaching it to the input event.",[10,600,602],{"id":601},"step-2-cancelling-in-flight-requests","Step 2: Cancelling In-Flight Requests",[15,604,605,606,609],{},"When a user types quickly, earlier requests may return after newer ones. Without cancellation, stale results can overwrite fresh ones. Use ",[52,607,608],{},"AbortController"," to cancel the previous request before issuing a new one:",[45,611,613],{"className":460,"code":612,"language":462,"meta":54,"style":54},"let controller = null;\n\nasync function fetchSuggestions(query) {\n  if (controller) controller.abort();\n  controller = new AbortController();\n\n  const res = await fetch(\n    `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location?location=${encodeURIComponent(query)}&limit=3`,\n    {\n      headers: { \"X-API-Key\": \"YOUR_API_KEY\" },\n      signal: controller.signal\n    }\n  );\n\n  const data = await res.json();\n  return data.features;\n}\n",[52,614,615,631,637,656,680,697,701,720,754,758,789,803,807,814,818,839,851],{"__ignoreMap":54},[163,616,617,620,623,625,629],{"class":165,"line":166},[163,618,619],{"class":469},"let",[163,621,622],{"class":499}," controller",[163,624,545],{"class":169},[163,626,628],{"class":627},"sVsLi"," null",[163,630,503],{"class":169},[163,632,633],{"class":165,"line":173},[163,634,636],{"emptyLinePlaceholder":635},true,"\n",[163,638,639,642,644,647,649,652,654],{"class":165,"line":203},[163,640,641],{"class":469},"async",[163,643,512],{"class":469},[163,645,646],{"class":473}," fetchSuggestions",[163,648,477],{"class":169},[163,650,651],{"class":480},"query",[163,653,489],{"class":169},[163,655,258],{"class":169},[163,657,658,661,664,667,669,671,673,676,678],{"class":165,"line":218},[163,659,660],{"class":508},"  if",[163,662,663],{"class":530}," (",[163,665,666],{"class":499},"controller",[163,668,489],{"class":530},[163,670,622],{"class":499},[163,672,450],{"class":169},[163,674,675],{"class":473},"abort",[163,677,553],{"class":530},[163,679,503],{"class":169},[163,681,682,685,687,690,693,695],{"class":165,"line":224},[163,683,684],{"class":499},"  controller",[163,686,545],{"class":169},[163,688,689],{"class":627}," new",[163,691,692],{"class":473}," AbortController",[163,694,553],{"class":530},[163,696,503],{"class":169},[163,698,699],{"class":165,"line":246},[163,700,636],{"emptyLinePlaceholder":635},[163,702,703,706,709,711,714,717],{"class":165,"line":261},[163,704,705],{"class":469},"  const",[163,707,708],{"class":499}," res",[163,710,545],{"class":169},[163,712,713],{"class":508}," await",[163,715,716],{"class":473}," fetch",[163,718,719],{"class":530},"(\n",[163,721,722,725,728,732,735,738,741,743,746,749,752],{"class":165,"line":283},[163,723,724],{"class":190},"    `",[163,726,727],{"class":194},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location?location=",[163,729,731],{"class":730},"s8XtY","${",[163,733,734],{"class":473},"encodeURIComponent",[163,736,477],{"class":737},"snCua",[163,739,651],{"class":740},"su_V2",[163,742,489],{"class":737},[163,744,745],{"class":730},"}",[163,747,748],{"class":194},"&limit=3",[163,750,751],{"class":190},"`",[163,753,200],{"class":169},[163,755,756],{"class":165,"line":311},[163,757,221],{"class":169},[163,759,760,764,766,769,771,775,777,779,781,784,786],{"class":165,"line":317},[163,761,763],{"class":762},"suXOh","      headers",[163,765,187],{"class":169},[163,767,768],{"class":169}," {",[163,770,191],{"class":190},[163,772,774],{"class":773},"sQtxO","X-API-Key",[163,776,184],{"class":190},[163,778,187],{"class":169},[163,780,191],{"class":190},[163,782,783],{"class":194},"YOUR_API_KEY",[163,785,184],{"class":190},[163,787,788],{"class":169}," },\n",[163,790,791,794,796,798,800],{"class":165,"line":331},[163,792,793],{"class":762},"      signal",[163,795,187],{"class":169},[163,797,622],{"class":499},[163,799,450],{"class":169},[163,801,802],{"class":499},"signal\n",[163,804,805],{"class":165,"line":352},[163,806,423],{"class":169},[163,808,809,812],{"class":165,"line":373},[163,810,811],{"class":530},"  )",[163,813,503],{"class":169},[163,815,816],{"class":165,"line":394},[163,817,636],{"emptyLinePlaceholder":635},[163,819,820,822,825,827,829,831,833,835,837],{"class":165,"line":414},[163,821,705],{"class":469},[163,823,824],{"class":499}," data",[163,826,545],{"class":169},[163,828,713],{"class":508},[163,830,708],{"class":499},[163,832,450],{"class":169},[163,834,159],{"class":473},[163,836,553],{"class":530},[163,838,503],{"class":169},[163,840,841,843,845,847,849],{"class":165,"line":420},[163,842,509],{"class":508},[163,844,824],{"class":499},[163,846,450],{"class":169},[163,848,208],{"class":499},[163,850,503],{"class":169},[163,852,853],{"class":165,"line":426},[163,854,435],{"class":169},[15,856,857,858,861],{},"Catch ",[52,859,860],{},"AbortError"," separately so it doesn't surface as a user-visible error - it's expected behaviour.",[10,863,865],{"id":864},"step-3-proximity-biasing","Step 3: Proximity Biasing",[15,867,868,869,871,872,874],{},"If your app has a map, pass its current center to the ",[52,870,130],{}," parameter. The API will score results closer to that point higher. This is especially useful for partial queries like ",[52,873,110],{}," that match dozens of locations across the prairies.",[45,876,878],{"className":460,"code":877,"language":462,"meta":54,"style":54},"const center = map.getCenter(); \u002F\u002F { lng, lat } from your map library\nconst url =\n  `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location` +\n  `?location=${encodeURIComponent(query)}` +\n  `&limit=3` +\n  `&proximity=${center.lng},${center.lat}`;\n",[52,879,880,907,917,930,953,963],{"__ignoreMap":54},[163,881,882,885,888,890,893,895,898,900,903],{"class":165,"line":166},[163,883,884],{"class":469},"const",[163,886,887],{"class":499}," center",[163,889,545],{"class":169},[163,891,892],{"class":499}," map",[163,894,450],{"class":169},[163,896,897],{"class":473},"getCenter",[163,899,553],{"class":737},[163,901,902],{"class":169},";",[163,904,906],{"class":905},"s9Tkl"," \u002F\u002F { lng, lat } from your map library\n",[163,908,909,911,914],{"class":165,"line":173},[163,910,884],{"class":469},[163,912,913],{"class":499}," url",[163,915,916],{"class":169}," =\n",[163,918,919,922,925,927],{"class":165,"line":203},[163,920,921],{"class":190},"  `",[163,923,924],{"class":194},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location",[163,926,751],{"class":190},[163,928,929],{"class":627}," +\n",[163,931,932,934,937,939,941,943,945,947,949,951],{"class":165,"line":218},[163,933,921],{"class":190},[163,935,936],{"class":194},"?location=",[163,938,731],{"class":730},[163,940,734],{"class":473},[163,942,477],{"class":737},[163,944,651],{"class":740},[163,946,489],{"class":737},[163,948,745],{"class":730},[163,950,751],{"class":190},[163,952,929],{"class":627},[163,954,955,957,959,961],{"class":165,"line":224},[163,956,921],{"class":190},[163,958,748],{"class":194},[163,960,751],{"class":190},[163,962,929],{"class":627},[163,964,965,967,970,972,975,977,980,982,984,986,988,990,993,995,997],{"class":165,"line":246},[163,966,921],{"class":190},[163,968,969],{"class":194},"&proximity=",[163,971,731],{"class":730},[163,973,974],{"class":740},"center",[163,976,450],{"class":169},[163,978,979],{"class":740},"lng",[163,981,745],{"class":730},[163,983,302],{"class":194},[163,985,731],{"class":730},[163,987,974],{"class":740},[163,989,450],{"class":169},[163,991,992],{"class":740},"lat",[163,994,745],{"class":730},[163,996,751],{"class":190},[163,998,503],{"class":169},[15,1000,1001,1002,1004,1005,1009],{},"Without proximity, a search for ",[52,1003,110],{}," returns the first five alphabetical matches. With proximity set to central Alberta, it returns the five closest matches to where the user is looking. See the ",[30,1006,1008],{"href":1007},"\u002Fguides\u002Fmapbox-integration","Mapbox integration guide"," for how to wire this up with a live map.",[10,1011,1013],{"id":1012},"step-4-dropdown-ux-and-keyboard-navigation","Step 4: Dropdown UX and Keyboard Navigation",[15,1015,1016],{},"A good autocomplete dropdown handles three interaction modes:",[23,1018,1019,1025,1031],{},[26,1020,1021,1024],{},[58,1022,1023],{},"Mouse",": hover highlights a suggestion, click selects it",[26,1026,1027,1030],{},[58,1028,1029],{},"Keyboard",": arrow keys move the highlighted index, Enter selects, Escape closes",[26,1032,1033,1036],{},[58,1034,1035],{},"Outside click",": clicking anywhere outside the input or dropdown closes it",[15,1038,1039,1040,1043,1044,1047],{},"Track ",[52,1041,1042],{},"highlightedIndex"," as an integer, reset to ",[52,1045,1046],{},"-1"," when the list updates.",[10,1049,1051],{"id":1050},"vanilla-js-example","Vanilla JS Example",[15,1053,1054],{},"A complete standalone implementation - no build step required.",[45,1056,1060],{"className":1057,"code":1058,"language":1059,"meta":54,"style":54},"language-html shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u003C!DOCTYPE html>\n\u003Chtml lang=\"en\">\n  \u003Chead>\n    \u003Cmeta charset=\"UTF-8\" \u002F>\n    \u003Ctitle>Township Autocomplete\u003C\u002Ftitle>\n    \u003Cstyle>\n      .autocomplete-wrapper {\n        position: relative;\n        width: 360px;\n      }\n      input {\n        width: 100%;\n        padding: 8px 12px;\n        font-size: 16px;\n        box-sizing: border-box;\n      }\n      .suggestions {\n        position: absolute;\n        top: 100%;\n        left: 0;\n        right: 0;\n        background: #fff;\n        border: 1px solid #ddd;\n        border-top: none;\n        list-style: none;\n        margin: 0;\n        padding: 0;\n        z-index: 100;\n      }\n      .suggestions li {\n        padding: 10px 12px;\n        cursor: pointer;\n        font-size: 15px;\n      }\n      .suggestions li.highlighted {\n        background: #f0f7f4;\n      }\n      .suggestions li.no-results {\n        color: #888;\n        cursor: default;\n      }\n    \u003C\u002Fstyle>\n  \u003C\u002Fhead>\n  \u003Cbody>\n    \u003Cdiv class=\"autocomplete-wrapper\">\n      \u003Cinput\n        id=\"lld-input\"\n        type=\"text\"\n        placeholder=\"e.g. NW-25-24-1-W5\"\n        autocomplete=\"off\"\n      \u002F>\n      \u003Cul\n        id=\"suggestions\"\n        class=\"suggestions\"\n        hidden\n      >\u003C\u002Ful>\n    \u003C\u002Fdiv>\n\n    \u003Cscript>\n      const API_KEY = \"YOUR_API_KEY\";\n      const input = document.getElementById(\"lld-input\");\n      const list = document.getElementById(\"suggestions\");\n      let features = [];\n      let highlightedIndex = -1;\n      let controller = null;\n\n      function debounce(fn, delay) {\n        let timer;\n        return function (...args) {\n          clearTimeout(timer);\n          timer = setTimeout(() => fn.apply(this, args), delay);\n        };\n      }\n\n      async function fetchSuggestions(query) {\n        if (controller) controller.abort();\n        controller = new AbortController();\n\n        try {\n          const res = await fetch(\n            `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location` +\n              `?location=${encodeURIComponent(query)}&limit=3`,\n            {\n              headers: { \"X-API-Key\": API_KEY },\n              signal: controller.signal\n            }\n          );\n          const data = await res.json();\n          return data.features || [];\n        } catch (err) {\n          if (err.name === \"AbortError\") return null;\n          console.error(\"Autocomplete error:\", err);\n          return [];\n        }\n      }\n\n      function renderSuggestions() {\n        list.innerHTML = \"\";\n        highlightedIndex = -1;\n\n        if (features.length === 0) {\n          const li = document.createElement(\"li\");\n          li.className = \"no-results\";\n          li.textContent = \"No results\";\n          list.appendChild(li);\n        } else {\n          features.forEach((feature, i) => {\n            const li = document.createElement(\"li\");\n            li.textContent = feature.properties.legal_location;\n            li.addEventListener(\"mouseenter\", () => highlight(i));\n            li.addEventListener(\"click\", () => selectFeature(feature));\n            list.appendChild(li);\n          });\n        }\n\n        list.hidden = false;\n      }\n\n      function highlight(index) {\n        const items = list.querySelectorAll(\"li:not(.no-results)\");\n        items.forEach((el) => el.classList.remove(\"highlighted\"));\n        highlightedIndex = index;\n        if (index >= 0 && index \u003C items.length) {\n          items[index].classList.add(\"highlighted\");\n        }\n      }\n\n      function selectFeature(feature) {\n        input.value = feature.properties.legal_location;\n        const [lng, lat] = feature.geometry.coordinates;\n        list.hidden = true;\n        features = [];\n        console.log(\"Selected:\", feature.properties.legal_location, { lng, lat });\n        \u002F\u002F → fly your map here, or dispatch an event\n      }\n\n      const debouncedFetch = debounce(async (query) => {\n        if (query.length \u003C 2) {\n          list.hidden = true;\n          return;\n        }\n        const results = await fetchSuggestions(query);\n        if (results === null) return; \u002F\u002F aborted\n        features = results;\n        renderSuggestions();\n      }, 300);\n\n      input.addEventListener(\"input\", () => debouncedFetch(input.value.trim()));\n\n      input.addEventListener(\"keydown\", (e) => {\n        const items = list.querySelectorAll(\"li:not(.no-results)\");\n        if (e.key === \"ArrowDown\") {\n          e.preventDefault();\n          highlight(Math.min(highlightedIndex + 1, items.length - 1));\n        } else if (e.key === \"ArrowUp\") {\n          e.preventDefault();\n          highlight(Math.max(highlightedIndex - 1, 0));\n        } else if (e.key === \"Enter\" && highlightedIndex >= 0) {\n          e.preventDefault();\n          selectFeature(features[highlightedIndex]);\n        } else if (e.key === \"Escape\") {\n          list.hidden = true;\n        }\n      });\n\n      document.addEventListener(\"click\", (e) => {\n        if (!e.target.closest(\".autocomplete-wrapper\")) {\n          list.hidden = true;\n        }\n      });\n    \u003C\u002Fscript>\n  \u003C\u002Fbody>\n\u003C\u002Fhtml>\n","html",[52,1061,1062,1078,1100,1110,1133,1154,1163,1174,1188,1204,1208,1216,1230,1249,1263,1275,1279,1288,1299,1313,1326,1338,1354,1377,1390,1402,1414,1425,1437,1442,1454,1472,1485,1499,1504,1520,1534,1539,1555,1570,1582,1587,1597,1607,1617,1638,1647,1662,1676,1691,1706,1712,1720,1733,1747,1753,1763,1772,1777,1787,1806,1836,1864,1880,1898,1911,1916,1936,1946,1962,1976,2016,2022,2027,2032,2050,2072,2088,2093,2101,2117,2129,2155,2161,2183,2197,2203,2211,2232,2251,2269,2302,2331,2340,2346,2351,2356,2368,2386,2400,2405,2428,2456,2477,2498,2517,2527,2556,2584,2609,2648,2683,2701,2711,2716,2721,2739,2744,2749,2765,2796,2842,2854,2886,2921,2926,2931,2936,2951,2976,3006,3022,3034,3084,3090,3095,3100,3126,3148,3163,3170,3175,3197,3220,3231,3241,3254,3259,3303,3308,3339,3366,3393,3408,3449,3480,3493,3523,3561,3574,3593,3623,3638,3643,3653,3658,3688,3723,3738,3743,3752,3761,3770],{"__ignoreMap":54},[163,1063,1064,1067,1071,1075],{"class":165,"line":166},[163,1065,1066],{"class":169},"\u003C!",[163,1068,1070],{"class":1069},"sJFLg","DOCTYPE",[163,1072,1074],{"class":1073},"s5q8q"," html",[163,1076,1077],{"class":169},">\n",[163,1079,1080,1083,1085,1088,1091,1093,1096,1098],{"class":165,"line":173},[163,1081,1082],{"class":169},"\u003C",[163,1084,1059],{"class":1069},[163,1086,1087],{"class":1073}," lang",[163,1089,1090],{"class":169},"=",[163,1092,184],{"class":190},[163,1094,1095],{"class":194},"en",[163,1097,184],{"class":190},[163,1099,1077],{"class":169},[163,1101,1102,1105,1108],{"class":165,"line":203},[163,1103,1104],{"class":169},"  \u003C",[163,1106,1107],{"class":1069},"head",[163,1109,1077],{"class":169},[163,1111,1112,1115,1118,1121,1123,1125,1128,1130],{"class":165,"line":218},[163,1113,1114],{"class":169},"    \u003C",[163,1116,1117],{"class":1069},"meta",[163,1119,1120],{"class":1073}," charset",[163,1122,1090],{"class":169},[163,1124,184],{"class":190},[163,1126,1127],{"class":194},"UTF-8",[163,1129,184],{"class":190},[163,1131,1132],{"class":169}," \u002F>\n",[163,1134,1135,1137,1140,1143,1147,1150,1152],{"class":165,"line":224},[163,1136,1114],{"class":169},[163,1138,1139],{"class":1069},"title",[163,1141,1142],{"class":169},">",[163,1144,1146],{"class":1145},"sftqT","Township Autocomplete",[163,1148,1149],{"class":169},"\u003C\u002F",[163,1151,1139],{"class":1069},[163,1153,1077],{"class":169},[163,1155,1156,1158,1161],{"class":165,"line":246},[163,1157,1114],{"class":169},[163,1159,1160],{"class":1069},"style",[163,1162,1077],{"class":169},[163,1164,1165,1168,1172],{"class":165,"line":261},[163,1166,1167],{"class":169},"      .",[163,1169,1171],{"class":1170},"sKL33","autocomplete-wrapper",[163,1173,258],{"class":169},[163,1175,1176,1180,1182,1186],{"class":165,"line":283},[163,1177,1179],{"class":1178},"s5HLA","        position",[163,1181,187],{"class":169},[163,1183,1185],{"class":1184},"se3Ec"," relative",[163,1187,503],{"class":169},[163,1189,1190,1193,1195,1198,1202],{"class":165,"line":311},[163,1191,1192],{"class":1178},"        width",[163,1194,187],{"class":169},[163,1196,1197],{"class":298}," 360",[163,1199,1201],{"class":1200},"sQBxk","px",[163,1203,503],{"class":169},[163,1205,1206],{"class":165,"line":317},[163,1207,417],{"class":169},[163,1209,1210,1214],{"class":165,"line":331},[163,1211,1213],{"class":1212},"skzw8","      input",[163,1215,258],{"class":169},[163,1217,1218,1220,1222,1225,1228],{"class":165,"line":352},[163,1219,1192],{"class":1178},[163,1221,187],{"class":169},[163,1223,1224],{"class":298}," 100",[163,1226,1227],{"class":1200},"%",[163,1229,503],{"class":169},[163,1231,1232,1235,1237,1240,1242,1245,1247],{"class":165,"line":373},[163,1233,1234],{"class":1178},"        padding",[163,1236,187],{"class":169},[163,1238,1239],{"class":298}," 8",[163,1241,1201],{"class":1200},[163,1243,1244],{"class":298}," 12",[163,1246,1201],{"class":1200},[163,1248,503],{"class":169},[163,1250,1251,1254,1256,1259,1261],{"class":165,"line":394},[163,1252,1253],{"class":1178},"        font-size",[163,1255,187],{"class":169},[163,1257,1258],{"class":298}," 16",[163,1260,1201],{"class":1200},[163,1262,503],{"class":169},[163,1264,1265,1268,1270,1273],{"class":165,"line":414},[163,1266,1267],{"class":1178},"        box-sizing",[163,1269,187],{"class":169},[163,1271,1272],{"class":1184}," border-box",[163,1274,503],{"class":169},[163,1276,1277],{"class":165,"line":420},[163,1278,417],{"class":169},[163,1280,1281,1283,1286],{"class":165,"line":426},[163,1282,1167],{"class":169},[163,1284,1285],{"class":1170},"suggestions",[163,1287,258],{"class":169},[163,1289,1290,1292,1294,1297],{"class":165,"line":432},[163,1291,1179],{"class":1178},[163,1293,187],{"class":169},[163,1295,1296],{"class":1184}," absolute",[163,1298,503],{"class":169},[163,1300,1302,1305,1307,1309,1311],{"class":165,"line":1301},19,[163,1303,1304],{"class":1178},"        top",[163,1306,187],{"class":169},[163,1308,1224],{"class":298},[163,1310,1227],{"class":1200},[163,1312,503],{"class":169},[163,1314,1316,1319,1321,1324],{"class":165,"line":1315},20,[163,1317,1318],{"class":1178},"        left",[163,1320,187],{"class":169},[163,1322,1323],{"class":298}," 0",[163,1325,503],{"class":169},[163,1327,1329,1332,1334,1336],{"class":165,"line":1328},21,[163,1330,1331],{"class":1178},"        right",[163,1333,187],{"class":169},[163,1335,1323],{"class":298},[163,1337,503],{"class":169},[163,1339,1341,1344,1346,1349,1352],{"class":165,"line":1340},22,[163,1342,1343],{"class":1178},"        background",[163,1345,187],{"class":169},[163,1347,1348],{"class":169}," #",[163,1350,1351],{"class":1184},"fff",[163,1353,503],{"class":169},[163,1355,1357,1360,1362,1365,1367,1370,1372,1375],{"class":165,"line":1356},23,[163,1358,1359],{"class":1178},"        border",[163,1361,187],{"class":169},[163,1363,1364],{"class":298}," 1",[163,1366,1201],{"class":1200},[163,1368,1369],{"class":1184}," solid",[163,1371,1348],{"class":169},[163,1373,1374],{"class":1184},"ddd",[163,1376,503],{"class":169},[163,1378,1380,1383,1385,1388],{"class":165,"line":1379},24,[163,1381,1382],{"class":1178},"        border-top",[163,1384,187],{"class":169},[163,1386,1387],{"class":1184}," none",[163,1389,503],{"class":169},[163,1391,1393,1396,1398,1400],{"class":165,"line":1392},25,[163,1394,1395],{"class":1178},"        list-style",[163,1397,187],{"class":169},[163,1399,1387],{"class":1184},[163,1401,503],{"class":169},[163,1403,1405,1408,1410,1412],{"class":165,"line":1404},26,[163,1406,1407],{"class":1178},"        margin",[163,1409,187],{"class":169},[163,1411,1323],{"class":298},[163,1413,503],{"class":169},[163,1415,1417,1419,1421,1423],{"class":165,"line":1416},27,[163,1418,1234],{"class":1178},[163,1420,187],{"class":169},[163,1422,1323],{"class":298},[163,1424,503],{"class":169},[163,1426,1428,1431,1433,1435],{"class":165,"line":1427},28,[163,1429,1430],{"class":1178},"        z-index",[163,1432,187],{"class":169},[163,1434,1224],{"class":298},[163,1436,503],{"class":169},[163,1438,1440],{"class":165,"line":1439},29,[163,1441,417],{"class":169},[163,1443,1445,1447,1449,1452],{"class":165,"line":1444},30,[163,1446,1167],{"class":169},[163,1448,1285],{"class":1170},[163,1450,1451],{"class":1212}," li",[163,1453,258],{"class":169},[163,1455,1457,1459,1461,1464,1466,1468,1470],{"class":165,"line":1456},31,[163,1458,1234],{"class":1178},[163,1460,187],{"class":169},[163,1462,1463],{"class":298}," 10",[163,1465,1201],{"class":1200},[163,1467,1244],{"class":298},[163,1469,1201],{"class":1200},[163,1471,503],{"class":169},[163,1473,1475,1478,1480,1483],{"class":165,"line":1474},32,[163,1476,1477],{"class":1178},"        cursor",[163,1479,187],{"class":169},[163,1481,1482],{"class":1184}," pointer",[163,1484,503],{"class":169},[163,1486,1488,1490,1492,1495,1497],{"class":165,"line":1487},33,[163,1489,1253],{"class":1178},[163,1491,187],{"class":169},[163,1493,1494],{"class":298}," 15",[163,1496,1201],{"class":1200},[163,1498,503],{"class":169},[163,1500,1502],{"class":165,"line":1501},34,[163,1503,417],{"class":169},[163,1505,1507,1509,1511,1513,1515,1518],{"class":165,"line":1506},35,[163,1508,1167],{"class":169},[163,1510,1285],{"class":1170},[163,1512,1451],{"class":1212},[163,1514,450],{"class":169},[163,1516,1517],{"class":1170},"highlighted",[163,1519,258],{"class":169},[163,1521,1523,1525,1527,1529,1532],{"class":165,"line":1522},36,[163,1524,1343],{"class":1178},[163,1526,187],{"class":169},[163,1528,1348],{"class":169},[163,1530,1531],{"class":1184},"f0f7f4",[163,1533,503],{"class":169},[163,1535,1537],{"class":165,"line":1536},37,[163,1538,417],{"class":169},[163,1540,1542,1544,1546,1548,1550,1553],{"class":165,"line":1541},38,[163,1543,1167],{"class":169},[163,1545,1285],{"class":1170},[163,1547,1451],{"class":1212},[163,1549,450],{"class":169},[163,1551,1552],{"class":1170},"no-results",[163,1554,258],{"class":169},[163,1556,1558,1561,1563,1565,1568],{"class":165,"line":1557},39,[163,1559,1560],{"class":1178},"        color",[163,1562,187],{"class":169},[163,1564,1348],{"class":169},[163,1566,1567],{"class":1184},"888",[163,1569,503],{"class":169},[163,1571,1573,1575,1577,1580],{"class":165,"line":1572},40,[163,1574,1477],{"class":1178},[163,1576,187],{"class":169},[163,1578,1579],{"class":1184}," default",[163,1581,503],{"class":169},[163,1583,1585],{"class":165,"line":1584},41,[163,1586,417],{"class":169},[163,1588,1590,1593,1595],{"class":165,"line":1589},42,[163,1591,1592],{"class":169},"    \u003C\u002F",[163,1594,1160],{"class":1069},[163,1596,1077],{"class":169},[163,1598,1600,1603,1605],{"class":165,"line":1599},43,[163,1601,1602],{"class":169},"  \u003C\u002F",[163,1604,1107],{"class":1069},[163,1606,1077],{"class":169},[163,1608,1610,1612,1615],{"class":165,"line":1609},44,[163,1611,1104],{"class":169},[163,1613,1614],{"class":1069},"body",[163,1616,1077],{"class":169},[163,1618,1620,1622,1625,1628,1630,1632,1634,1636],{"class":165,"line":1619},45,[163,1621,1114],{"class":169},[163,1623,1624],{"class":1069},"div",[163,1626,1627],{"class":1073}," class",[163,1629,1090],{"class":169},[163,1631,184],{"class":190},[163,1633,1171],{"class":194},[163,1635,184],{"class":190},[163,1637,1077],{"class":169},[163,1639,1641,1644],{"class":165,"line":1640},46,[163,1642,1643],{"class":169},"      \u003C",[163,1645,1646],{"class":1069},"input\n",[163,1648,1650,1653,1655,1657,1660],{"class":165,"line":1649},47,[163,1651,1652],{"class":1073},"        id",[163,1654,1090],{"class":169},[163,1656,184],{"class":190},[163,1658,1659],{"class":194},"lld-input",[163,1661,411],{"class":190},[163,1663,1665,1668,1670,1672,1674],{"class":165,"line":1664},48,[163,1666,1667],{"class":1073},"        type",[163,1669,1090],{"class":169},[163,1671,184],{"class":190},[163,1673,50],{"class":194},[163,1675,411],{"class":190},[163,1677,1679,1682,1684,1686,1689],{"class":165,"line":1678},49,[163,1680,1681],{"class":1073},"        placeholder",[163,1683,1090],{"class":169},[163,1685,184],{"class":190},[163,1687,1688],{"class":194},"e.g. NW-25-24-1-W5",[163,1690,411],{"class":190},[163,1692,1694,1697,1699,1701,1704],{"class":165,"line":1693},50,[163,1695,1696],{"class":1073},"        autocomplete",[163,1698,1090],{"class":169},[163,1700,184],{"class":190},[163,1702,1703],{"class":194},"off",[163,1705,411],{"class":190},[163,1707,1709],{"class":165,"line":1708},51,[163,1710,1711],{"class":169},"      \u002F>\n",[163,1713,1715,1717],{"class":165,"line":1714},52,[163,1716,1643],{"class":169},[163,1718,1719],{"class":1069},"ul\n",[163,1721,1723,1725,1727,1729,1731],{"class":165,"line":1722},53,[163,1724,1652],{"class":1073},[163,1726,1090],{"class":169},[163,1728,184],{"class":190},[163,1730,1285],{"class":194},[163,1732,411],{"class":190},[163,1734,1736,1739,1741,1743,1745],{"class":165,"line":1735},54,[163,1737,1738],{"class":1073},"        class",[163,1740,1090],{"class":169},[163,1742,184],{"class":190},[163,1744,1285],{"class":194},[163,1746,411],{"class":190},[163,1748,1750],{"class":165,"line":1749},55,[163,1751,1752],{"class":1073},"        hidden\n",[163,1754,1756,1759,1761],{"class":165,"line":1755},56,[163,1757,1758],{"class":169},"      >\u003C\u002F",[163,1760,23],{"class":1069},[163,1762,1077],{"class":169},[163,1764,1766,1768,1770],{"class":165,"line":1765},57,[163,1767,1592],{"class":169},[163,1769,1624],{"class":1069},[163,1771,1077],{"class":169},[163,1773,1775],{"class":165,"line":1774},58,[163,1776,636],{"emptyLinePlaceholder":635},[163,1778,1780,1782,1785],{"class":165,"line":1779},59,[163,1781,1114],{"class":169},[163,1783,1784],{"class":1069},"script",[163,1786,1077],{"class":169},[163,1788,1790,1793,1796,1798,1800,1802,1804],{"class":165,"line":1789},60,[163,1791,1792],{"class":469},"      const",[163,1794,1795],{"class":499}," API_KEY",[163,1797,545],{"class":169},[163,1799,191],{"class":190},[163,1801,783],{"class":194},[163,1803,184],{"class":190},[163,1805,503],{"class":169},[163,1807,1809,1811,1814,1816,1819,1821,1824,1826,1828,1830,1832,1834],{"class":165,"line":1808},61,[163,1810,1792],{"class":469},[163,1812,1813],{"class":499}," input",[163,1815,545],{"class":169},[163,1817,1818],{"class":499}," document",[163,1820,450],{"class":169},[163,1822,1823],{"class":473},"getElementById",[163,1825,477],{"class":737},[163,1827,184],{"class":190},[163,1829,1659],{"class":194},[163,1831,184],{"class":190},[163,1833,489],{"class":737},[163,1835,503],{"class":169},[163,1837,1839,1841,1844,1846,1848,1850,1852,1854,1856,1858,1860,1862],{"class":165,"line":1838},62,[163,1840,1792],{"class":469},[163,1842,1843],{"class":499}," list",[163,1845,545],{"class":169},[163,1847,1818],{"class":499},[163,1849,450],{"class":169},[163,1851,1823],{"class":473},[163,1853,477],{"class":737},[163,1855,184],{"class":190},[163,1857,1285],{"class":194},[163,1859,184],{"class":190},[163,1861,489],{"class":737},[163,1863,503],{"class":169},[163,1865,1867,1870,1873,1875,1878],{"class":165,"line":1866},63,[163,1868,1869],{"class":469},"      let",[163,1871,1872],{"class":499}," features",[163,1874,545],{"class":169},[163,1876,1877],{"class":737}," []",[163,1879,503],{"class":169},[163,1881,1883,1885,1888,1890,1893,1896],{"class":165,"line":1882},64,[163,1884,1869],{"class":469},[163,1886,1887],{"class":499}," highlightedIndex",[163,1889,545],{"class":169},[163,1891,1892],{"class":627}," -",[163,1894,1895],{"class":298},"1",[163,1897,503],{"class":169},[163,1899,1901,1903,1905,1907,1909],{"class":165,"line":1900},65,[163,1902,1869],{"class":469},[163,1904,622],{"class":499},[163,1906,545],{"class":169},[163,1908,628],{"class":627},[163,1910,503],{"class":169},[163,1912,1914],{"class":165,"line":1913},66,[163,1915,636],{"emptyLinePlaceholder":635},[163,1917,1919,1922,1924,1926,1928,1930,1932,1934],{"class":165,"line":1918},67,[163,1920,1921],{"class":469},"      function",[163,1923,474],{"class":473},[163,1925,477],{"class":169},[163,1927,481],{"class":480},[163,1929,302],{"class":169},[163,1931,486],{"class":480},[163,1933,489],{"class":169},[163,1935,258],{"class":169},[163,1937,1939,1942,1944],{"class":165,"line":1938},68,[163,1940,1941],{"class":469},"        let",[163,1943,500],{"class":499},[163,1945,503],{"class":169},[163,1947,1949,1952,1954,1956,1958,1960],{"class":165,"line":1948},69,[163,1950,1951],{"class":508},"        return",[163,1953,512],{"class":469},[163,1955,515],{"class":169},[163,1957,518],{"class":480},[163,1959,489],{"class":169},[163,1961,258],{"class":169},[163,1963,1965,1968,1970,1972,1974],{"class":165,"line":1964},70,[163,1966,1967],{"class":473},"          clearTimeout",[163,1969,477],{"class":530},[163,1971,533],{"class":499},[163,1973,489],{"class":530},[163,1975,503],{"class":169},[163,1977,1979,1982,1984,1986,1988,1990,1992,1994,1996,1998,2000,2002,2004,2006,2008,2010,2012,2014],{"class":165,"line":1978},71,[163,1980,1981],{"class":499},"          timer",[163,1983,545],{"class":169},[163,1985,548],{"class":473},[163,1987,477],{"class":530},[163,1989,553],{"class":169},[163,1991,557],{"class":556},[163,1993,560],{"class":499},[163,1995,450],{"class":169},[163,1997,565],{"class":473},[163,1999,477],{"class":530},[163,2001,571],{"class":570},[163,2003,302],{"class":169},[163,2005,576],{"class":499},[163,2007,489],{"class":530},[163,2009,302],{"class":169},[163,2011,486],{"class":499},[163,2013,489],{"class":530},[163,2015,503],{"class":169},[163,2017,2019],{"class":165,"line":2018},72,[163,2020,2021],{"class":169},"        };\n",[163,2023,2025],{"class":165,"line":2024},73,[163,2026,417],{"class":169},[163,2028,2030],{"class":165,"line":2029},74,[163,2031,636],{"emptyLinePlaceholder":635},[163,2033,2035,2038,2040,2042,2044,2046,2048],{"class":165,"line":2034},75,[163,2036,2037],{"class":469},"      async",[163,2039,512],{"class":469},[163,2041,646],{"class":473},[163,2043,477],{"class":169},[163,2045,651],{"class":480},[163,2047,489],{"class":169},[163,2049,258],{"class":169},[163,2051,2053,2056,2058,2060,2062,2064,2066,2068,2070],{"class":165,"line":2052},76,[163,2054,2055],{"class":508},"        if",[163,2057,663],{"class":530},[163,2059,666],{"class":499},[163,2061,489],{"class":530},[163,2063,622],{"class":499},[163,2065,450],{"class":169},[163,2067,675],{"class":473},[163,2069,553],{"class":530},[163,2071,503],{"class":169},[163,2073,2075,2078,2080,2082,2084,2086],{"class":165,"line":2074},77,[163,2076,2077],{"class":499},"        controller",[163,2079,545],{"class":169},[163,2081,689],{"class":627},[163,2083,692],{"class":473},[163,2085,553],{"class":530},[163,2087,503],{"class":169},[163,2089,2091],{"class":165,"line":2090},78,[163,2092,636],{"emptyLinePlaceholder":635},[163,2094,2096,2099],{"class":165,"line":2095},79,[163,2097,2098],{"class":508},"        try",[163,2100,258],{"class":169},[163,2102,2104,2107,2109,2111,2113,2115],{"class":165,"line":2103},80,[163,2105,2106],{"class":469},"          const",[163,2108,708],{"class":499},[163,2110,545],{"class":169},[163,2112,713],{"class":508},[163,2114,716],{"class":473},[163,2116,719],{"class":530},[163,2118,2120,2123,2125,2127],{"class":165,"line":2119},81,[163,2121,2122],{"class":190},"            `",[163,2124,924],{"class":194},[163,2126,751],{"class":190},[163,2128,929],{"class":627},[163,2130,2132,2135,2137,2139,2141,2143,2145,2147,2149,2151,2153],{"class":165,"line":2131},82,[163,2133,2134],{"class":190},"              `",[163,2136,936],{"class":194},[163,2138,731],{"class":730},[163,2140,734],{"class":473},[163,2142,477],{"class":737},[163,2144,651],{"class":740},[163,2146,489],{"class":737},[163,2148,745],{"class":730},[163,2150,748],{"class":194},[163,2152,751],{"class":190},[163,2154,200],{"class":169},[163,2156,2158],{"class":165,"line":2157},83,[163,2159,2160],{"class":169},"            {\n",[163,2162,2164,2167,2169,2171,2173,2175,2177,2179,2181],{"class":165,"line":2163},84,[163,2165,2166],{"class":762},"              headers",[163,2168,187],{"class":169},[163,2170,768],{"class":169},[163,2172,191],{"class":190},[163,2174,774],{"class":773},[163,2176,184],{"class":190},[163,2178,187],{"class":169},[163,2180,1795],{"class":499},[163,2182,788],{"class":169},[163,2184,2186,2189,2191,2193,2195],{"class":165,"line":2185},85,[163,2187,2188],{"class":762},"              signal",[163,2190,187],{"class":169},[163,2192,622],{"class":499},[163,2194,450],{"class":169},[163,2196,802],{"class":499},[163,2198,2200],{"class":165,"line":2199},86,[163,2201,2202],{"class":169},"            }\n",[163,2204,2206,2209],{"class":165,"line":2205},87,[163,2207,2208],{"class":530},"          )",[163,2210,503],{"class":169},[163,2212,2214,2216,2218,2220,2222,2224,2226,2228,2230],{"class":165,"line":2213},88,[163,2215,2106],{"class":469},[163,2217,824],{"class":499},[163,2219,545],{"class":169},[163,2221,713],{"class":508},[163,2223,708],{"class":499},[163,2225,450],{"class":169},[163,2227,159],{"class":473},[163,2229,553],{"class":530},[163,2231,503],{"class":169},[163,2233,2235,2238,2240,2242,2244,2247,2249],{"class":165,"line":2234},89,[163,2236,2237],{"class":508},"          return",[163,2239,824],{"class":499},[163,2241,450],{"class":169},[163,2243,208],{"class":499},[163,2245,2246],{"class":627}," ||",[163,2248,1877],{"class":530},[163,2250,503],{"class":169},[163,2252,2254,2257,2260,2262,2265,2267],{"class":165,"line":2253},90,[163,2255,2256],{"class":169},"        }",[163,2258,2259],{"class":508}," catch",[163,2261,663],{"class":530},[163,2263,2264],{"class":499},"err",[163,2266,489],{"class":530},[163,2268,258],{"class":169},[163,2270,2272,2275,2277,2279,2281,2284,2287,2289,2291,2293,2295,2298,2300],{"class":165,"line":2271},91,[163,2273,2274],{"class":508},"          if",[163,2276,663],{"class":530},[163,2278,2264],{"class":499},[163,2280,450],{"class":169},[163,2282,2283],{"class":499},"name",[163,2285,2286],{"class":627}," ===",[163,2288,191],{"class":190},[163,2290,860],{"class":194},[163,2292,184],{"class":190},[163,2294,489],{"class":530},[163,2296,2297],{"class":508}," return",[163,2299,628],{"class":627},[163,2301,503],{"class":169},[163,2303,2305,2308,2310,2313,2315,2317,2320,2322,2324,2327,2329],{"class":165,"line":2304},92,[163,2306,2307],{"class":499},"          console",[163,2309,450],{"class":169},[163,2311,2312],{"class":473},"error",[163,2314,477],{"class":530},[163,2316,184],{"class":190},[163,2318,2319],{"class":194},"Autocomplete error:",[163,2321,184],{"class":190},[163,2323,302],{"class":169},[163,2325,2326],{"class":499}," err",[163,2328,489],{"class":530},[163,2330,503],{"class":169},[163,2332,2334,2336,2338],{"class":165,"line":2333},93,[163,2335,2237],{"class":508},[163,2337,1877],{"class":530},[163,2339,503],{"class":169},[163,2341,2343],{"class":165,"line":2342},94,[163,2344,2345],{"class":169},"        }\n",[163,2347,2349],{"class":165,"line":2348},95,[163,2350,417],{"class":169},[163,2352,2354],{"class":165,"line":2353},96,[163,2355,636],{"emptyLinePlaceholder":635},[163,2357,2359,2361,2364,2366],{"class":165,"line":2358},97,[163,2360,1921],{"class":469},[163,2362,2363],{"class":473}," renderSuggestions",[163,2365,553],{"class":169},[163,2367,258],{"class":169},[163,2369,2371,2374,2376,2379,2381,2384],{"class":165,"line":2370},98,[163,2372,2373],{"class":499},"        list",[163,2375,450],{"class":169},[163,2377,2378],{"class":499},"innerHTML",[163,2380,545],{"class":169},[163,2382,2383],{"class":190}," \"\"",[163,2385,503],{"class":169},[163,2387,2389,2392,2394,2396,2398],{"class":165,"line":2388},99,[163,2390,2391],{"class":499},"        highlightedIndex",[163,2393,545],{"class":169},[163,2395,1892],{"class":627},[163,2397,1895],{"class":298},[163,2399,503],{"class":169},[163,2401,2403],{"class":165,"line":2402},100,[163,2404,636],{"emptyLinePlaceholder":635},[163,2406,2408,2410,2412,2414,2416,2420,2422,2424,2426],{"class":165,"line":2407},101,[163,2409,2055],{"class":508},[163,2411,663],{"class":530},[163,2413,208],{"class":499},[163,2415,450],{"class":169},[163,2417,2419],{"class":2418},"s131V","length",[163,2421,2286],{"class":627},[163,2423,1323],{"class":298},[163,2425,489],{"class":530},[163,2427,258],{"class":169},[163,2429,2431,2433,2435,2437,2439,2441,2444,2446,2448,2450,2452,2454],{"class":165,"line":2430},102,[163,2432,2106],{"class":469},[163,2434,1451],{"class":499},[163,2436,545],{"class":169},[163,2438,1818],{"class":499},[163,2440,450],{"class":169},[163,2442,2443],{"class":473},"createElement",[163,2445,477],{"class":530},[163,2447,184],{"class":190},[163,2449,26],{"class":194},[163,2451,184],{"class":190},[163,2453,489],{"class":530},[163,2455,503],{"class":169},[163,2457,2459,2462,2464,2467,2469,2471,2473,2475],{"class":165,"line":2458},103,[163,2460,2461],{"class":499},"          li",[163,2463,450],{"class":169},[163,2465,2466],{"class":499},"className",[163,2468,545],{"class":169},[163,2470,191],{"class":190},[163,2472,1552],{"class":194},[163,2474,184],{"class":190},[163,2476,503],{"class":169},[163,2478,2480,2482,2484,2487,2489,2491,2494,2496],{"class":165,"line":2479},104,[163,2481,2461],{"class":499},[163,2483,450],{"class":169},[163,2485,2486],{"class":499},"textContent",[163,2488,545],{"class":169},[163,2490,191],{"class":190},[163,2492,2493],{"class":194},"No results",[163,2495,184],{"class":190},[163,2497,503],{"class":169},[163,2499,2501,2504,2506,2509,2511,2513,2515],{"class":165,"line":2500},105,[163,2502,2503],{"class":499},"          list",[163,2505,450],{"class":169},[163,2507,2508],{"class":473},"appendChild",[163,2510,477],{"class":530},[163,2512,26],{"class":499},[163,2514,489],{"class":530},[163,2516,503],{"class":169},[163,2518,2520,2522,2525],{"class":165,"line":2519},106,[163,2521,2256],{"class":169},[163,2523,2524],{"class":508}," else",[163,2526,258],{"class":169},[163,2528,2530,2533,2535,2538,2540,2542,2545,2547,2550,2552,2554],{"class":165,"line":2529},107,[163,2531,2532],{"class":499},"          features",[163,2534,450],{"class":169},[163,2536,2537],{"class":473},"forEach",[163,2539,477],{"class":530},[163,2541,477],{"class":169},[163,2543,2544],{"class":480},"feature",[163,2546,302],{"class":169},[163,2548,2549],{"class":480}," i",[163,2551,489],{"class":169},[163,2553,557],{"class":556},[163,2555,258],{"class":169},[163,2557,2559,2562,2564,2566,2568,2570,2572,2574,2576,2578,2580,2582],{"class":165,"line":2558},108,[163,2560,2561],{"class":469},"            const",[163,2563,1451],{"class":499},[163,2565,545],{"class":169},[163,2567,1818],{"class":499},[163,2569,450],{"class":169},[163,2571,2443],{"class":473},[163,2573,477],{"class":530},[163,2575,184],{"class":190},[163,2577,26],{"class":194},[163,2579,184],{"class":190},[163,2581,489],{"class":530},[163,2583,503],{"class":169},[163,2585,2587,2590,2592,2594,2596,2599,2601,2603,2605,2607],{"class":165,"line":2586},109,[163,2588,2589],{"class":499},"            li",[163,2591,450],{"class":169},[163,2593,2486],{"class":499},[163,2595,545],{"class":169},[163,2597,2598],{"class":499}," feature",[163,2600,450],{"class":169},[163,2602,322],{"class":499},[163,2604,450],{"class":169},[163,2606,336],{"class":499},[163,2608,503],{"class":169},[163,2610,2612,2614,2616,2619,2621,2623,2626,2628,2630,2633,2635,2638,2640,2643,2646],{"class":165,"line":2611},110,[163,2613,2589],{"class":499},[163,2615,450],{"class":169},[163,2617,2618],{"class":473},"addEventListener",[163,2620,477],{"class":530},[163,2622,184],{"class":190},[163,2624,2625],{"class":194},"mouseenter",[163,2627,184],{"class":190},[163,2629,302],{"class":169},[163,2631,2632],{"class":169}," ()",[163,2634,557],{"class":556},[163,2636,2637],{"class":473}," highlight",[163,2639,477],{"class":530},[163,2641,2642],{"class":499},"i",[163,2644,2645],{"class":530},"))",[163,2647,503],{"class":169},[163,2649,2651,2653,2655,2657,2659,2661,2664,2666,2668,2670,2672,2675,2677,2679,2681],{"class":165,"line":2650},111,[163,2652,2589],{"class":499},[163,2654,450],{"class":169},[163,2656,2618],{"class":473},[163,2658,477],{"class":530},[163,2660,184],{"class":190},[163,2662,2663],{"class":194},"click",[163,2665,184],{"class":190},[163,2667,302],{"class":169},[163,2669,2632],{"class":169},[163,2671,557],{"class":556},[163,2673,2674],{"class":473}," selectFeature",[163,2676,477],{"class":530},[163,2678,2544],{"class":499},[163,2680,2645],{"class":530},[163,2682,503],{"class":169},[163,2684,2686,2689,2691,2693,2695,2697,2699],{"class":165,"line":2685},112,[163,2687,2688],{"class":499},"            list",[163,2690,450],{"class":169},[163,2692,2508],{"class":473},[163,2694,477],{"class":530},[163,2696,26],{"class":499},[163,2698,489],{"class":530},[163,2700,503],{"class":169},[163,2702,2704,2707,2709],{"class":165,"line":2703},113,[163,2705,2706],{"class":169},"          }",[163,2708,489],{"class":530},[163,2710,503],{"class":169},[163,2712,2714],{"class":165,"line":2713},114,[163,2715,2345],{"class":169},[163,2717,2719],{"class":165,"line":2718},115,[163,2720,636],{"emptyLinePlaceholder":635},[163,2722,2724,2726,2728,2731,2733,2737],{"class":165,"line":2723},116,[163,2725,2373],{"class":499},[163,2727,450],{"class":169},[163,2729,2730],{"class":499},"hidden",[163,2732,545],{"class":169},[163,2734,2736],{"class":2735},"sq3J1"," false",[163,2738,503],{"class":169},[163,2740,2742],{"class":165,"line":2741},117,[163,2743,417],{"class":169},[163,2745,2747],{"class":165,"line":2746},118,[163,2748,636],{"emptyLinePlaceholder":635},[163,2750,2752,2754,2756,2758,2761,2763],{"class":165,"line":2751},119,[163,2753,1921],{"class":469},[163,2755,2637],{"class":473},[163,2757,477],{"class":169},[163,2759,2760],{"class":480},"index",[163,2762,489],{"class":169},[163,2764,258],{"class":169},[163,2766,2768,2771,2774,2776,2778,2780,2783,2785,2787,2790,2792,2794],{"class":165,"line":2767},120,[163,2769,2770],{"class":469},"        const",[163,2772,2773],{"class":499}," items",[163,2775,545],{"class":169},[163,2777,1843],{"class":499},[163,2779,450],{"class":169},[163,2781,2782],{"class":473},"querySelectorAll",[163,2784,477],{"class":530},[163,2786,184],{"class":190},[163,2788,2789],{"class":194},"li:not(.no-results)",[163,2791,184],{"class":190},[163,2793,489],{"class":530},[163,2795,503],{"class":169},[163,2797,2799,2802,2804,2806,2808,2810,2813,2815,2817,2820,2822,2825,2827,2830,2832,2834,2836,2838,2840],{"class":165,"line":2798},121,[163,2800,2801],{"class":499},"        items",[163,2803,450],{"class":169},[163,2805,2537],{"class":473},[163,2807,477],{"class":530},[163,2809,477],{"class":169},[163,2811,2812],{"class":480},"el",[163,2814,489],{"class":169},[163,2816,557],{"class":556},[163,2818,2819],{"class":499}," el",[163,2821,450],{"class":169},[163,2823,2824],{"class":499},"classList",[163,2826,450],{"class":169},[163,2828,2829],{"class":473},"remove",[163,2831,477],{"class":530},[163,2833,184],{"class":190},[163,2835,1517],{"class":194},[163,2837,184],{"class":190},[163,2839,2645],{"class":530},[163,2841,503],{"class":169},[163,2843,2845,2847,2849,2852],{"class":165,"line":2844},122,[163,2846,2391],{"class":499},[163,2848,545],{"class":169},[163,2850,2851],{"class":499}," index",[163,2853,503],{"class":169},[163,2855,2857,2859,2861,2863,2866,2868,2871,2873,2876,2878,2880,2882,2884],{"class":165,"line":2856},123,[163,2858,2055],{"class":508},[163,2860,663],{"class":530},[163,2862,2760],{"class":499},[163,2864,2865],{"class":169}," >=",[163,2867,1323],{"class":298},[163,2869,2870],{"class":627}," &&",[163,2872,2851],{"class":499},[163,2874,2875],{"class":169}," \u003C",[163,2877,2773],{"class":499},[163,2879,450],{"class":169},[163,2881,2419],{"class":2418},[163,2883,489],{"class":530},[163,2885,258],{"class":169},[163,2887,2889,2892,2895,2897,2900,2902,2904,2906,2909,2911,2913,2915,2917,2919],{"class":165,"line":2888},124,[163,2890,2891],{"class":499},"          items",[163,2893,2894],{"class":530},"[",[163,2896,2760],{"class":499},[163,2898,2899],{"class":530},"]",[163,2901,450],{"class":169},[163,2903,2824],{"class":499},[163,2905,450],{"class":169},[163,2907,2908],{"class":473},"add",[163,2910,477],{"class":530},[163,2912,184],{"class":190},[163,2914,1517],{"class":194},[163,2916,184],{"class":190},[163,2918,489],{"class":530},[163,2920,503],{"class":169},[163,2922,2924],{"class":165,"line":2923},125,[163,2925,2345],{"class":169},[163,2927,2929],{"class":165,"line":2928},126,[163,2930,417],{"class":169},[163,2932,2934],{"class":165,"line":2933},127,[163,2935,636],{"emptyLinePlaceholder":635},[163,2937,2939,2941,2943,2945,2947,2949],{"class":165,"line":2938},128,[163,2940,1921],{"class":469},[163,2942,2674],{"class":473},[163,2944,477],{"class":169},[163,2946,2544],{"class":480},[163,2948,489],{"class":169},[163,2950,258],{"class":169},[163,2952,2954,2957,2959,2962,2964,2966,2968,2970,2972,2974],{"class":165,"line":2953},129,[163,2955,2956],{"class":499},"        input",[163,2958,450],{"class":169},[163,2960,2961],{"class":499},"value",[163,2963,545],{"class":169},[163,2965,2598],{"class":499},[163,2967,450],{"class":169},[163,2969,322],{"class":499},[163,2971,450],{"class":169},[163,2973,336],{"class":499},[163,2975,503],{"class":169},[163,2977,2979,2981,2983,2985,2987,2990,2992,2994,2996,2998,3000,3002,3004],{"class":165,"line":2978},130,[163,2980,2770],{"class":469},[163,2982,295],{"class":169},[163,2984,979],{"class":499},[163,2986,302],{"class":169},[163,2988,2989],{"class":499}," lat",[163,2991,2899],{"class":169},[163,2993,545],{"class":169},[163,2995,2598],{"class":499},[163,2997,450],{"class":169},[163,2999,251],{"class":499},[163,3001,450],{"class":169},[163,3003,288],{"class":499},[163,3005,503],{"class":169},[163,3007,3009,3011,3013,3015,3017,3020],{"class":165,"line":3008},131,[163,3010,2373],{"class":499},[163,3012,450],{"class":169},[163,3014,2730],{"class":499},[163,3016,545],{"class":169},[163,3018,3019],{"class":2735}," true",[163,3021,503],{"class":169},[163,3023,3025,3028,3030,3032],{"class":165,"line":3024},132,[163,3026,3027],{"class":499},"        features",[163,3029,545],{"class":169},[163,3031,1877],{"class":530},[163,3033,503],{"class":169},[163,3035,3037,3040,3042,3045,3047,3049,3052,3054,3056,3058,3060,3062,3064,3066,3068,3070,3073,3075,3077,3080,3082],{"class":165,"line":3036},133,[163,3038,3039],{"class":499},"        console",[163,3041,450],{"class":169},[163,3043,3044],{"class":473},"log",[163,3046,477],{"class":530},[163,3048,184],{"class":190},[163,3050,3051],{"class":194},"Selected:",[163,3053,184],{"class":190},[163,3055,302],{"class":169},[163,3057,2598],{"class":499},[163,3059,450],{"class":169},[163,3061,322],{"class":499},[163,3063,450],{"class":169},[163,3065,336],{"class":499},[163,3067,302],{"class":169},[163,3069,768],{"class":169},[163,3071,3072],{"class":499}," lng",[163,3074,302],{"class":169},[163,3076,2989],{"class":499},[163,3078,3079],{"class":169}," }",[163,3081,489],{"class":530},[163,3083,503],{"class":169},[163,3085,3087],{"class":165,"line":3086},134,[163,3088,3089],{"class":905},"        \u002F\u002F → fly your map here, or dispatch an event\n",[163,3091,3093],{"class":165,"line":3092},135,[163,3094,417],{"class":169},[163,3096,3098],{"class":165,"line":3097},136,[163,3099,636],{"emptyLinePlaceholder":635},[163,3101,3103,3105,3108,3110,3112,3114,3116,3118,3120,3122,3124],{"class":165,"line":3102},137,[163,3104,1792],{"class":469},[163,3106,3107],{"class":499}," debouncedFetch",[163,3109,545],{"class":169},[163,3111,474],{"class":473},[163,3113,477],{"class":737},[163,3115,641],{"class":469},[163,3117,663],{"class":169},[163,3119,651],{"class":480},[163,3121,489],{"class":169},[163,3123,557],{"class":556},[163,3125,258],{"class":169},[163,3127,3129,3131,3133,3135,3137,3139,3141,3144,3146],{"class":165,"line":3128},138,[163,3130,2055],{"class":508},[163,3132,663],{"class":530},[163,3134,651],{"class":499},[163,3136,450],{"class":169},[163,3138,2419],{"class":2418},[163,3140,2875],{"class":169},[163,3142,3143],{"class":298}," 2",[163,3145,489],{"class":530},[163,3147,258],{"class":169},[163,3149,3151,3153,3155,3157,3159,3161],{"class":165,"line":3150},139,[163,3152,2503],{"class":499},[163,3154,450],{"class":169},[163,3156,2730],{"class":499},[163,3158,545],{"class":169},[163,3160,3019],{"class":2735},[163,3162,503],{"class":169},[163,3164,3166,3168],{"class":165,"line":3165},140,[163,3167,2237],{"class":508},[163,3169,503],{"class":169},[163,3171,3173],{"class":165,"line":3172},141,[163,3174,2345],{"class":169},[163,3176,3178,3180,3183,3185,3187,3189,3191,3193,3195],{"class":165,"line":3177},142,[163,3179,2770],{"class":469},[163,3181,3182],{"class":499}," results",[163,3184,545],{"class":169},[163,3186,713],{"class":508},[163,3188,646],{"class":473},[163,3190,477],{"class":530},[163,3192,651],{"class":499},[163,3194,489],{"class":530},[163,3196,503],{"class":169},[163,3198,3200,3202,3204,3207,3209,3211,3213,3215,3217],{"class":165,"line":3199},143,[163,3201,2055],{"class":508},[163,3203,663],{"class":530},[163,3205,3206],{"class":499},"results",[163,3208,2286],{"class":627},[163,3210,628],{"class":627},[163,3212,489],{"class":530},[163,3214,2297],{"class":508},[163,3216,902],{"class":169},[163,3218,3219],{"class":905}," \u002F\u002F aborted\n",[163,3221,3223,3225,3227,3229],{"class":165,"line":3222},144,[163,3224,3027],{"class":499},[163,3226,545],{"class":169},[163,3228,3182],{"class":499},[163,3230,503],{"class":169},[163,3232,3234,3237,3239],{"class":165,"line":3233},145,[163,3235,3236],{"class":473},"        renderSuggestions",[163,3238,553],{"class":530},[163,3240,503],{"class":169},[163,3242,3244,3247,3250,3252],{"class":165,"line":3243},146,[163,3245,3246],{"class":169},"      },",[163,3248,3249],{"class":298}," 300",[163,3251,489],{"class":737},[163,3253,503],{"class":169},[163,3255,3257],{"class":165,"line":3256},147,[163,3258,636],{"emptyLinePlaceholder":635},[163,3260,3262,3264,3266,3268,3270,3272,3275,3277,3279,3281,3283,3285,3287,3289,3291,3293,3295,3298,3301],{"class":165,"line":3261},148,[163,3263,1213],{"class":499},[163,3265,450],{"class":169},[163,3267,2618],{"class":473},[163,3269,477],{"class":737},[163,3271,184],{"class":190},[163,3273,3274],{"class":194},"input",[163,3276,184],{"class":190},[163,3278,302],{"class":169},[163,3280,2632],{"class":169},[163,3282,557],{"class":556},[163,3284,3107],{"class":473},[163,3286,477],{"class":737},[163,3288,3274],{"class":499},[163,3290,450],{"class":169},[163,3292,2961],{"class":499},[163,3294,450],{"class":169},[163,3296,3297],{"class":473},"trim",[163,3299,3300],{"class":737},"()))",[163,3302,503],{"class":169},[163,3304,3306],{"class":165,"line":3305},149,[163,3307,636],{"emptyLinePlaceholder":635},[163,3309,3311,3313,3315,3317,3319,3321,3324,3326,3328,3330,3333,3335,3337],{"class":165,"line":3310},150,[163,3312,1213],{"class":499},[163,3314,450],{"class":169},[163,3316,2618],{"class":473},[163,3318,477],{"class":737},[163,3320,184],{"class":190},[163,3322,3323],{"class":194},"keydown",[163,3325,184],{"class":190},[163,3327,302],{"class":169},[163,3329,663],{"class":169},[163,3331,3332],{"class":480},"e",[163,3334,489],{"class":169},[163,3336,557],{"class":556},[163,3338,258],{"class":169},[163,3340,3342,3344,3346,3348,3350,3352,3354,3356,3358,3360,3362,3364],{"class":165,"line":3341},151,[163,3343,2770],{"class":469},[163,3345,2773],{"class":499},[163,3347,545],{"class":169},[163,3349,1843],{"class":499},[163,3351,450],{"class":169},[163,3353,2782],{"class":473},[163,3355,477],{"class":530},[163,3357,184],{"class":190},[163,3359,2789],{"class":194},[163,3361,184],{"class":190},[163,3363,489],{"class":530},[163,3365,503],{"class":169},[163,3367,3369,3371,3373,3375,3377,3380,3382,3384,3387,3389,3391],{"class":165,"line":3368},152,[163,3370,2055],{"class":508},[163,3372,663],{"class":530},[163,3374,3332],{"class":499},[163,3376,450],{"class":169},[163,3378,3379],{"class":499},"key",[163,3381,2286],{"class":627},[163,3383,191],{"class":190},[163,3385,3386],{"class":194},"ArrowDown",[163,3388,184],{"class":190},[163,3390,489],{"class":530},[163,3392,258],{"class":169},[163,3394,3396,3399,3401,3404,3406],{"class":165,"line":3395},153,[163,3397,3398],{"class":499},"          e",[163,3400,450],{"class":169},[163,3402,3403],{"class":473},"preventDefault",[163,3405,553],{"class":530},[163,3407,503],{"class":169},[163,3409,3411,3414,3416,3419,3421,3424,3426,3428,3431,3433,3435,3437,3439,3441,3443,3445,3447],{"class":165,"line":3410},154,[163,3412,3413],{"class":473},"          highlight",[163,3415,477],{"class":530},[163,3417,3418],{"class":499},"Math",[163,3420,450],{"class":169},[163,3422,3423],{"class":473},"min",[163,3425,477],{"class":530},[163,3427,1042],{"class":499},[163,3429,3430],{"class":627}," +",[163,3432,1364],{"class":298},[163,3434,302],{"class":169},[163,3436,2773],{"class":499},[163,3438,450],{"class":169},[163,3440,2419],{"class":2418},[163,3442,1892],{"class":627},[163,3444,1364],{"class":298},[163,3446,2645],{"class":530},[163,3448,503],{"class":169},[163,3450,3452,3454,3456,3459,3461,3463,3465,3467,3469,3471,3474,3476,3478],{"class":165,"line":3451},155,[163,3453,2256],{"class":169},[163,3455,2524],{"class":508},[163,3457,3458],{"class":508}," if",[163,3460,663],{"class":530},[163,3462,3332],{"class":499},[163,3464,450],{"class":169},[163,3466,3379],{"class":499},[163,3468,2286],{"class":627},[163,3470,191],{"class":190},[163,3472,3473],{"class":194},"ArrowUp",[163,3475,184],{"class":190},[163,3477,489],{"class":530},[163,3479,258],{"class":169},[163,3481,3483,3485,3487,3489,3491],{"class":165,"line":3482},156,[163,3484,3398],{"class":499},[163,3486,450],{"class":169},[163,3488,3403],{"class":473},[163,3490,553],{"class":530},[163,3492,503],{"class":169},[163,3494,3496,3498,3500,3502,3504,3507,3509,3511,3513,3515,3517,3519,3521],{"class":165,"line":3495},157,[163,3497,3413],{"class":473},[163,3499,477],{"class":530},[163,3501,3418],{"class":499},[163,3503,450],{"class":169},[163,3505,3506],{"class":473},"max",[163,3508,477],{"class":530},[163,3510,1042],{"class":499},[163,3512,1892],{"class":627},[163,3514,1364],{"class":298},[163,3516,302],{"class":169},[163,3518,1323],{"class":298},[163,3520,2645],{"class":530},[163,3522,503],{"class":169},[163,3524,3526,3528,3530,3532,3534,3536,3538,3540,3542,3544,3547,3549,3551,3553,3555,3557,3559],{"class":165,"line":3525},158,[163,3527,2256],{"class":169},[163,3529,2524],{"class":508},[163,3531,3458],{"class":508},[163,3533,663],{"class":530},[163,3535,3332],{"class":499},[163,3537,450],{"class":169},[163,3539,3379],{"class":499},[163,3541,2286],{"class":627},[163,3543,191],{"class":190},[163,3545,3546],{"class":194},"Enter",[163,3548,184],{"class":190},[163,3550,2870],{"class":627},[163,3552,1887],{"class":499},[163,3554,2865],{"class":169},[163,3556,1323],{"class":298},[163,3558,489],{"class":530},[163,3560,258],{"class":169},[163,3562,3564,3566,3568,3570,3572],{"class":165,"line":3563},159,[163,3565,3398],{"class":499},[163,3567,450],{"class":169},[163,3569,3403],{"class":473},[163,3571,553],{"class":530},[163,3573,503],{"class":169},[163,3575,3577,3580,3582,3584,3586,3588,3591],{"class":165,"line":3576},160,[163,3578,3579],{"class":473},"          selectFeature",[163,3581,477],{"class":530},[163,3583,208],{"class":499},[163,3585,2894],{"class":530},[163,3587,1042],{"class":499},[163,3589,3590],{"class":530},"])",[163,3592,503],{"class":169},[163,3594,3596,3598,3600,3602,3604,3606,3608,3610,3612,3614,3617,3619,3621],{"class":165,"line":3595},161,[163,3597,2256],{"class":169},[163,3599,2524],{"class":508},[163,3601,3458],{"class":508},[163,3603,663],{"class":530},[163,3605,3332],{"class":499},[163,3607,450],{"class":169},[163,3609,3379],{"class":499},[163,3611,2286],{"class":627},[163,3613,191],{"class":190},[163,3615,3616],{"class":194},"Escape",[163,3618,184],{"class":190},[163,3620,489],{"class":530},[163,3622,258],{"class":169},[163,3624,3626,3628,3630,3632,3634,3636],{"class":165,"line":3625},162,[163,3627,2503],{"class":499},[163,3629,450],{"class":169},[163,3631,2730],{"class":499},[163,3633,545],{"class":169},[163,3635,3019],{"class":2735},[163,3637,503],{"class":169},[163,3639,3641],{"class":165,"line":3640},163,[163,3642,2345],{"class":169},[163,3644,3646,3649,3651],{"class":165,"line":3645},164,[163,3647,3648],{"class":169},"      }",[163,3650,489],{"class":737},[163,3652,503],{"class":169},[163,3654,3656],{"class":165,"line":3655},165,[163,3657,636],{"emptyLinePlaceholder":635},[163,3659,3661,3664,3666,3668,3670,3672,3674,3676,3678,3680,3682,3684,3686],{"class":165,"line":3660},166,[163,3662,3663],{"class":499},"      document",[163,3665,450],{"class":169},[163,3667,2618],{"class":473},[163,3669,477],{"class":737},[163,3671,184],{"class":190},[163,3673,2663],{"class":194},[163,3675,184],{"class":190},[163,3677,302],{"class":169},[163,3679,663],{"class":169},[163,3681,3332],{"class":480},[163,3683,489],{"class":169},[163,3685,557],{"class":556},[163,3687,258],{"class":169},[163,3689,3691,3693,3695,3698,3700,3702,3705,3707,3710,3712,3714,3717,3719,3721],{"class":165,"line":3690},167,[163,3692,2055],{"class":508},[163,3694,663],{"class":530},[163,3696,3697],{"class":627},"!",[163,3699,3332],{"class":499},[163,3701,450],{"class":169},[163,3703,3704],{"class":499},"target",[163,3706,450],{"class":169},[163,3708,3709],{"class":473},"closest",[163,3711,477],{"class":530},[163,3713,184],{"class":190},[163,3715,3716],{"class":194},".autocomplete-wrapper",[163,3718,184],{"class":190},[163,3720,2645],{"class":530},[163,3722,258],{"class":169},[163,3724,3726,3728,3730,3732,3734,3736],{"class":165,"line":3725},168,[163,3727,2503],{"class":499},[163,3729,450],{"class":169},[163,3731,2730],{"class":499},[163,3733,545],{"class":169},[163,3735,3019],{"class":2735},[163,3737,503],{"class":169},[163,3739,3741],{"class":165,"line":3740},169,[163,3742,2345],{"class":169},[163,3744,3746,3748,3750],{"class":165,"line":3745},170,[163,3747,3648],{"class":169},[163,3749,489],{"class":737},[163,3751,503],{"class":169},[163,3753,3755,3757,3759],{"class":165,"line":3754},171,[163,3756,1592],{"class":169},[163,3758,1784],{"class":1069},[163,3760,1077],{"class":169},[163,3762,3764,3766,3768],{"class":165,"line":3763},172,[163,3765,1602],{"class":169},[163,3767,1614],{"class":1069},[163,3769,1077],{"class":169},[163,3771,3773,3775,3777],{"class":165,"line":3772},173,[163,3774,1149],{"class":169},[163,3776,1059],{"class":1069},[163,3778,1077],{"class":169},[10,3780,3782],{"id":3781},"react-example","React Example",[15,3784,3785],{},"A custom hook that encapsulates the autocomplete logic, paired with a component.",[15,3787,3788],{},[58,3789,3790],{},[52,3791,3792],{},"hooks\u002FuseAutocomplete.js",[45,3794,3796],{"className":460,"code":3795,"language":462,"meta":54,"style":54},"import { useState, useRef, useCallback, useEffect } from \"react\";\n\nexport function useAutocomplete(apiKey) {\n  const [query, setQuery] = useState(\"\");\n  const [suggestions, setSuggestions] = useState([]);\n  const [highlightedIndex, setHighlightedIndex] = useState(-1);\n  const [isOpen, setIsOpen] = useState(false);\n\n  const controllerRef = useRef(null);\n  const timerRef = useRef(null);\n\n  const fetchSuggestions = useCallback(\n    async (value, proximity) => {\n      if (controllerRef.current) controllerRef.current.abort();\n      controllerRef.current = new AbortController();\n\n      let url =\n        `https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fautocomplete\u002Flegal-location` +\n        `?location=${encodeURIComponent(value)}&limit=3`;\n\n      if (proximity) {\n        url += `&proximity=${proximity.lng},${proximity.lat}`;\n      }\n\n      try {\n        const res = await fetch(url, {\n          headers: { \"X-API-Key\": apiKey },\n          signal: controllerRef.current.signal\n        });\n        const data = await res.json();\n        const features = data.features || [];\n        setSuggestions(features);\n        setHighlightedIndex(-1);\n        setIsOpen(features.length > 0 || value.length >= 2);\n      } catch (err) {\n        if (err.name !== \"AbortError\") {\n          console.error(\"Autocomplete error:\", err);\n          setSuggestions([]);\n        }\n      }\n    },\n    [apiKey]\n  );\n\n  useEffect(() => {\n    clearTimeout(timerRef.current);\n    if (query.trim().length \u003C 2) {\n      setSuggestions([]);\n      setIsOpen(false);\n      return;\n    }\n    timerRef.current = setTimeout(() => fetchSuggestions(query.trim()), 300);\n    return () => clearTimeout(timerRef.current);\n  }, [query, fetchSuggestions]);\n\n  const moveDown = useCallback(() => {\n    setHighlightedIndex((i) => Math.min(i + 1, suggestions.length - 1));\n  }, [suggestions.length]);\n\n  const moveUp = useCallback(() => {\n    setHighlightedIndex((i) => Math.max(i - 1, 0));\n  }, []);\n\n  const close = useCallback(() => {\n    setIsOpen(false);\n    setHighlightedIndex(-1);\n  }, []);\n\n  return {\n    query,\n    setQuery,\n    suggestions,\n    highlightedIndex,\n    setHighlightedIndex,\n    isOpen,\n    moveDown,\n    moveUp,\n    close\n  };\n}\n",[52,3797,3798,3837,3841,3860,3888,3912,3942,3971,3975,3995,4014,4018,4030,4050,4081,4100,4104,4112,4123,4147,4151,4163,4202,4206,4210,4217,4238,4260,4277,4285,4305,4325,4338,4353,4388,4402,4427,4451,4460,4464,4468,4473,4482,4488,4492,4505,4522,4549,4558,4571,4578,4582,4622,4646,4663,4667,4686,4733,4749,4753,4772,4808,4817,4821,4840,4853,4867,4875,4879,4885,4892,4899,4906,4913,4919,4926,4933,4940,4945,4949],{"__ignoreMap":54},[163,3799,3800,3803,3805,3808,3810,3813,3815,3818,3820,3823,3825,3828,3830,3833,3835],{"class":165,"line":166},[163,3801,3802],{"class":508},"import",[163,3804,768],{"class":169},[163,3806,3807],{"class":499}," useState",[163,3809,302],{"class":169},[163,3811,3812],{"class":499}," useRef",[163,3814,302],{"class":169},[163,3816,3817],{"class":499}," useCallback",[163,3819,302],{"class":169},[163,3821,3822],{"class":499}," useEffect",[163,3824,3079],{"class":169},[163,3826,3827],{"class":508}," from",[163,3829,191],{"class":190},[163,3831,3832],{"class":194},"react",[163,3834,184],{"class":190},[163,3836,503],{"class":169},[163,3838,3839],{"class":165,"line":173},[163,3840,636],{"emptyLinePlaceholder":635},[163,3842,3843,3846,3848,3851,3853,3856,3858],{"class":165,"line":203},[163,3844,3845],{"class":508},"export",[163,3847,512],{"class":469},[163,3849,3850],{"class":473}," useAutocomplete",[163,3852,477],{"class":169},[163,3854,3855],{"class":480},"apiKey",[163,3857,489],{"class":169},[163,3859,258],{"class":169},[163,3861,3862,3864,3866,3868,3870,3873,3875,3877,3879,3881,3884,3886],{"class":165,"line":218},[163,3863,705],{"class":469},[163,3865,295],{"class":169},[163,3867,651],{"class":499},[163,3869,302],{"class":169},[163,3871,3872],{"class":499}," setQuery",[163,3874,2899],{"class":169},[163,3876,545],{"class":169},[163,3878,3807],{"class":473},[163,3880,477],{"class":530},[163,3882,3883],{"class":190},"\"\"",[163,3885,489],{"class":530},[163,3887,503],{"class":169},[163,3889,3890,3892,3894,3896,3898,3901,3903,3905,3907,3910],{"class":165,"line":224},[163,3891,705],{"class":469},[163,3893,295],{"class":169},[163,3895,1285],{"class":499},[163,3897,302],{"class":169},[163,3899,3900],{"class":499}," setSuggestions",[163,3902,2899],{"class":169},[163,3904,545],{"class":169},[163,3906,3807],{"class":473},[163,3908,3909],{"class":530},"([])",[163,3911,503],{"class":169},[163,3913,3914,3916,3918,3920,3922,3925,3927,3929,3931,3933,3936,3938,3940],{"class":165,"line":246},[163,3915,705],{"class":469},[163,3917,295],{"class":169},[163,3919,1042],{"class":499},[163,3921,302],{"class":169},[163,3923,3924],{"class":499}," setHighlightedIndex",[163,3926,2899],{"class":169},[163,3928,545],{"class":169},[163,3930,3807],{"class":473},[163,3932,477],{"class":530},[163,3934,3935],{"class":627},"-",[163,3937,1895],{"class":298},[163,3939,489],{"class":530},[163,3941,503],{"class":169},[163,3943,3944,3946,3948,3951,3953,3956,3958,3960,3962,3964,3967,3969],{"class":165,"line":261},[163,3945,705],{"class":469},[163,3947,295],{"class":169},[163,3949,3950],{"class":499},"isOpen",[163,3952,302],{"class":169},[163,3954,3955],{"class":499}," setIsOpen",[163,3957,2899],{"class":169},[163,3959,545],{"class":169},[163,3961,3807],{"class":473},[163,3963,477],{"class":530},[163,3965,3966],{"class":2735},"false",[163,3968,489],{"class":530},[163,3970,503],{"class":169},[163,3972,3973],{"class":165,"line":283},[163,3974,636],{"emptyLinePlaceholder":635},[163,3976,3977,3979,3982,3984,3986,3988,3991,3993],{"class":165,"line":311},[163,3978,705],{"class":469},[163,3980,3981],{"class":499}," controllerRef",[163,3983,545],{"class":169},[163,3985,3812],{"class":473},[163,3987,477],{"class":530},[163,3989,3990],{"class":627},"null",[163,3992,489],{"class":530},[163,3994,503],{"class":169},[163,3996,3997,3999,4002,4004,4006,4008,4010,4012],{"class":165,"line":317},[163,3998,705],{"class":469},[163,4000,4001],{"class":499}," timerRef",[163,4003,545],{"class":169},[163,4005,3812],{"class":473},[163,4007,477],{"class":530},[163,4009,3990],{"class":627},[163,4011,489],{"class":530},[163,4013,503],{"class":169},[163,4015,4016],{"class":165,"line":331},[163,4017,636],{"emptyLinePlaceholder":635},[163,4019,4020,4022,4024,4026,4028],{"class":165,"line":352},[163,4021,705],{"class":469},[163,4023,646],{"class":499},[163,4025,545],{"class":169},[163,4027,3817],{"class":473},[163,4029,719],{"class":530},[163,4031,4032,4035,4037,4039,4041,4044,4046,4048],{"class":165,"line":373},[163,4033,4034],{"class":469},"    async",[163,4036,663],{"class":169},[163,4038,2961],{"class":480},[163,4040,302],{"class":169},[163,4042,4043],{"class":480}," proximity",[163,4045,489],{"class":169},[163,4047,557],{"class":556},[163,4049,258],{"class":169},[163,4051,4052,4055,4057,4060,4062,4065,4067,4069,4071,4073,4075,4077,4079],{"class":165,"line":394},[163,4053,4054],{"class":508},"      if",[163,4056,663],{"class":530},[163,4058,4059],{"class":499},"controllerRef",[163,4061,450],{"class":169},[163,4063,4064],{"class":499},"current",[163,4066,489],{"class":530},[163,4068,3981],{"class":499},[163,4070,450],{"class":169},[163,4072,4064],{"class":499},[163,4074,450],{"class":169},[163,4076,675],{"class":473},[163,4078,553],{"class":530},[163,4080,503],{"class":169},[163,4082,4083,4086,4088,4090,4092,4094,4096,4098],{"class":165,"line":414},[163,4084,4085],{"class":499},"      controllerRef",[163,4087,450],{"class":169},[163,4089,4064],{"class":499},[163,4091,545],{"class":169},[163,4093,689],{"class":627},[163,4095,692],{"class":473},[163,4097,553],{"class":530},[163,4099,503],{"class":169},[163,4101,4102],{"class":165,"line":420},[163,4103,636],{"emptyLinePlaceholder":635},[163,4105,4106,4108,4110],{"class":165,"line":426},[163,4107,1869],{"class":469},[163,4109,913],{"class":499},[163,4111,916],{"class":169},[163,4113,4114,4117,4119,4121],{"class":165,"line":432},[163,4115,4116],{"class":190},"        `",[163,4118,924],{"class":194},[163,4120,751],{"class":190},[163,4122,929],{"class":627},[163,4124,4125,4127,4129,4131,4133,4135,4137,4139,4141,4143,4145],{"class":165,"line":1301},[163,4126,4116],{"class":190},[163,4128,936],{"class":194},[163,4130,731],{"class":730},[163,4132,734],{"class":473},[163,4134,477],{"class":737},[163,4136,2961],{"class":740},[163,4138,489],{"class":737},[163,4140,745],{"class":730},[163,4142,748],{"class":194},[163,4144,751],{"class":190},[163,4146,503],{"class":169},[163,4148,4149],{"class":165,"line":1315},[163,4150,636],{"emptyLinePlaceholder":635},[163,4152,4153,4155,4157,4159,4161],{"class":165,"line":1328},[163,4154,4054],{"class":508},[163,4156,663],{"class":530},[163,4158,130],{"class":499},[163,4160,489],{"class":530},[163,4162,258],{"class":169},[163,4164,4165,4168,4171,4174,4176,4178,4180,4182,4184,4186,4188,4190,4192,4194,4196,4198,4200],{"class":165,"line":1340},[163,4166,4167],{"class":499},"        url",[163,4169,4170],{"class":627}," +=",[163,4172,4173],{"class":190}," `",[163,4175,969],{"class":194},[163,4177,731],{"class":730},[163,4179,130],{"class":740},[163,4181,450],{"class":169},[163,4183,979],{"class":740},[163,4185,745],{"class":730},[163,4187,302],{"class":194},[163,4189,731],{"class":730},[163,4191,130],{"class":740},[163,4193,450],{"class":169},[163,4195,992],{"class":740},[163,4197,745],{"class":730},[163,4199,751],{"class":190},[163,4201,503],{"class":169},[163,4203,4204],{"class":165,"line":1356},[163,4205,417],{"class":169},[163,4207,4208],{"class":165,"line":1379},[163,4209,636],{"emptyLinePlaceholder":635},[163,4211,4212,4215],{"class":165,"line":1392},[163,4213,4214],{"class":508},"      try",[163,4216,258],{"class":169},[163,4218,4219,4221,4223,4225,4227,4229,4231,4234,4236],{"class":165,"line":1404},[163,4220,2770],{"class":469},[163,4222,708],{"class":499},[163,4224,545],{"class":169},[163,4226,713],{"class":508},[163,4228,716],{"class":473},[163,4230,477],{"class":530},[163,4232,4233],{"class":499},"url",[163,4235,302],{"class":169},[163,4237,258],{"class":169},[163,4239,4240,4243,4245,4247,4249,4251,4253,4255,4258],{"class":165,"line":1416},[163,4241,4242],{"class":762},"          headers",[163,4244,187],{"class":169},[163,4246,768],{"class":169},[163,4248,191],{"class":190},[163,4250,774],{"class":773},[163,4252,184],{"class":190},[163,4254,187],{"class":169},[163,4256,4257],{"class":499}," apiKey",[163,4259,788],{"class":169},[163,4261,4262,4265,4267,4269,4271,4273,4275],{"class":165,"line":1427},[163,4263,4264],{"class":762},"          signal",[163,4266,187],{"class":169},[163,4268,3981],{"class":499},[163,4270,450],{"class":169},[163,4272,4064],{"class":499},[163,4274,450],{"class":169},[163,4276,802],{"class":499},[163,4278,4279,4281,4283],{"class":165,"line":1439},[163,4280,2256],{"class":169},[163,4282,489],{"class":530},[163,4284,503],{"class":169},[163,4286,4287,4289,4291,4293,4295,4297,4299,4301,4303],{"class":165,"line":1444},[163,4288,2770],{"class":469},[163,4290,824],{"class":499},[163,4292,545],{"class":169},[163,4294,713],{"class":508},[163,4296,708],{"class":499},[163,4298,450],{"class":169},[163,4300,159],{"class":473},[163,4302,553],{"class":530},[163,4304,503],{"class":169},[163,4306,4307,4309,4311,4313,4315,4317,4319,4321,4323],{"class":165,"line":1456},[163,4308,2770],{"class":469},[163,4310,1872],{"class":499},[163,4312,545],{"class":169},[163,4314,824],{"class":499},[163,4316,450],{"class":169},[163,4318,208],{"class":499},[163,4320,2246],{"class":627},[163,4322,1877],{"class":530},[163,4324,503],{"class":169},[163,4326,4327,4330,4332,4334,4336],{"class":165,"line":1474},[163,4328,4329],{"class":473},"        setSuggestions",[163,4331,477],{"class":530},[163,4333,208],{"class":499},[163,4335,489],{"class":530},[163,4337,503],{"class":169},[163,4339,4340,4343,4345,4347,4349,4351],{"class":165,"line":1487},[163,4341,4342],{"class":473},"        setHighlightedIndex",[163,4344,477],{"class":530},[163,4346,3935],{"class":627},[163,4348,1895],{"class":298},[163,4350,489],{"class":530},[163,4352,503],{"class":169},[163,4354,4355,4358,4360,4362,4364,4366,4369,4371,4373,4376,4378,4380,4382,4384,4386],{"class":165,"line":1501},[163,4356,4357],{"class":473},"        setIsOpen",[163,4359,477],{"class":530},[163,4361,208],{"class":499},[163,4363,450],{"class":169},[163,4365,2419],{"class":2418},[163,4367,4368],{"class":169}," >",[163,4370,1323],{"class":298},[163,4372,2246],{"class":627},[163,4374,4375],{"class":499}," value",[163,4377,450],{"class":169},[163,4379,2419],{"class":2418},[163,4381,2865],{"class":169},[163,4383,3143],{"class":298},[163,4385,489],{"class":530},[163,4387,503],{"class":169},[163,4389,4390,4392,4394,4396,4398,4400],{"class":165,"line":1506},[163,4391,3648],{"class":169},[163,4393,2259],{"class":508},[163,4395,663],{"class":530},[163,4397,2264],{"class":499},[163,4399,489],{"class":530},[163,4401,258],{"class":169},[163,4403,4404,4406,4408,4410,4412,4414,4417,4419,4421,4423,4425],{"class":165,"line":1522},[163,4405,2055],{"class":508},[163,4407,663],{"class":530},[163,4409,2264],{"class":499},[163,4411,450],{"class":169},[163,4413,2283],{"class":499},[163,4415,4416],{"class":627}," !==",[163,4418,191],{"class":190},[163,4420,860],{"class":194},[163,4422,184],{"class":190},[163,4424,489],{"class":530},[163,4426,258],{"class":169},[163,4428,4429,4431,4433,4435,4437,4439,4441,4443,4445,4447,4449],{"class":165,"line":1536},[163,4430,2307],{"class":499},[163,4432,450],{"class":169},[163,4434,2312],{"class":473},[163,4436,477],{"class":530},[163,4438,184],{"class":190},[163,4440,2319],{"class":194},[163,4442,184],{"class":190},[163,4444,302],{"class":169},[163,4446,2326],{"class":499},[163,4448,489],{"class":530},[163,4450,503],{"class":169},[163,4452,4453,4456,4458],{"class":165,"line":1541},[163,4454,4455],{"class":473},"          setSuggestions",[163,4457,3909],{"class":530},[163,4459,503],{"class":169},[163,4461,4462],{"class":165,"line":1557},[163,4463,2345],{"class":169},[163,4465,4466],{"class":165,"line":1572},[163,4467,417],{"class":169},[163,4469,4470],{"class":165,"line":1584},[163,4471,4472],{"class":169},"    },\n",[163,4474,4475,4478,4480],{"class":165,"line":1589},[163,4476,4477],{"class":530},"    [",[163,4479,3855],{"class":499},[163,4481,308],{"class":530},[163,4483,4484,4486],{"class":165,"line":1599},[163,4485,811],{"class":530},[163,4487,503],{"class":169},[163,4489,4490],{"class":165,"line":1609},[163,4491,636],{"emptyLinePlaceholder":635},[163,4493,4494,4497,4499,4501,4503],{"class":165,"line":1619},[163,4495,4496],{"class":473},"  useEffect",[163,4498,477],{"class":530},[163,4500,553],{"class":169},[163,4502,557],{"class":556},[163,4504,258],{"class":169},[163,4506,4507,4509,4511,4514,4516,4518,4520],{"class":165,"line":1640},[163,4508,527],{"class":473},[163,4510,477],{"class":530},[163,4512,4513],{"class":499},"timerRef",[163,4515,450],{"class":169},[163,4517,4064],{"class":499},[163,4519,489],{"class":530},[163,4521,503],{"class":169},[163,4523,4524,4527,4529,4531,4533,4535,4537,4539,4541,4543,4545,4547],{"class":165,"line":1649},[163,4525,4526],{"class":508},"    if",[163,4528,663],{"class":530},[163,4530,651],{"class":499},[163,4532,450],{"class":169},[163,4534,3297],{"class":473},[163,4536,553],{"class":530},[163,4538,450],{"class":169},[163,4540,2419],{"class":2418},[163,4542,2875],{"class":169},[163,4544,3143],{"class":298},[163,4546,489],{"class":530},[163,4548,258],{"class":169},[163,4550,4551,4554,4556],{"class":165,"line":1664},[163,4552,4553],{"class":473},"      setSuggestions",[163,4555,3909],{"class":530},[163,4557,503],{"class":169},[163,4559,4560,4563,4565,4567,4569],{"class":165,"line":1678},[163,4561,4562],{"class":473},"      setIsOpen",[163,4564,477],{"class":530},[163,4566,3966],{"class":2735},[163,4568,489],{"class":530},[163,4570,503],{"class":169},[163,4572,4573,4576],{"class":165,"line":1693},[163,4574,4575],{"class":508},"      return",[163,4577,503],{"class":169},[163,4579,4580],{"class":165,"line":1708},[163,4581,423],{"class":169},[163,4583,4584,4587,4589,4591,4593,4595,4597,4599,4601,4603,4605,4607,4609,4611,4614,4616,4618,4620],{"class":165,"line":1714},[163,4585,4586],{"class":499},"    timerRef",[163,4588,450],{"class":169},[163,4590,4064],{"class":499},[163,4592,545],{"class":169},[163,4594,548],{"class":473},[163,4596,477],{"class":530},[163,4598,553],{"class":169},[163,4600,557],{"class":556},[163,4602,646],{"class":473},[163,4604,477],{"class":530},[163,4606,651],{"class":499},[163,4608,450],{"class":169},[163,4610,3297],{"class":473},[163,4612,4613],{"class":530},"())",[163,4615,302],{"class":169},[163,4617,3249],{"class":298},[163,4619,489],{"class":530},[163,4621,503],{"class":169},[163,4623,4624,4627,4629,4631,4634,4636,4638,4640,4642,4644],{"class":165,"line":1722},[163,4625,4626],{"class":508},"    return",[163,4628,2632],{"class":169},[163,4630,557],{"class":556},[163,4632,4633],{"class":473}," clearTimeout",[163,4635,477],{"class":530},[163,4637,4513],{"class":499},[163,4639,450],{"class":169},[163,4641,4064],{"class":499},[163,4643,489],{"class":530},[163,4645,503],{"class":169},[163,4647,4648,4651,4653,4655,4657,4659,4661],{"class":165,"line":1735},[163,4649,4650],{"class":169},"  },",[163,4652,295],{"class":530},[163,4654,651],{"class":499},[163,4656,302],{"class":169},[163,4658,646],{"class":499},[163,4660,3590],{"class":530},[163,4662,503],{"class":169},[163,4664,4665],{"class":165,"line":1749},[163,4666,636],{"emptyLinePlaceholder":635},[163,4668,4669,4671,4674,4676,4678,4680,4682,4684],{"class":165,"line":1755},[163,4670,705],{"class":469},[163,4672,4673],{"class":499}," moveDown",[163,4675,545],{"class":169},[163,4677,3817],{"class":473},[163,4679,477],{"class":530},[163,4681,553],{"class":169},[163,4683,557],{"class":556},[163,4685,258],{"class":169},[163,4687,4688,4691,4693,4695,4697,4699,4701,4704,4706,4708,4710,4712,4714,4716,4718,4721,4723,4725,4727,4729,4731],{"class":165,"line":1765},[163,4689,4690],{"class":473},"    setHighlightedIndex",[163,4692,477],{"class":530},[163,4694,477],{"class":169},[163,4696,2642],{"class":480},[163,4698,489],{"class":169},[163,4700,557],{"class":556},[163,4702,4703],{"class":499}," Math",[163,4705,450],{"class":169},[163,4707,3423],{"class":473},[163,4709,477],{"class":530},[163,4711,2642],{"class":499},[163,4713,3430],{"class":627},[163,4715,1364],{"class":298},[163,4717,302],{"class":169},[163,4719,4720],{"class":499}," suggestions",[163,4722,450],{"class":169},[163,4724,2419],{"class":2418},[163,4726,1892],{"class":627},[163,4728,1364],{"class":298},[163,4730,2645],{"class":530},[163,4732,503],{"class":169},[163,4734,4735,4737,4739,4741,4743,4745,4747],{"class":165,"line":1774},[163,4736,4650],{"class":169},[163,4738,295],{"class":530},[163,4740,1285],{"class":499},[163,4742,450],{"class":169},[163,4744,2419],{"class":2418},[163,4746,3590],{"class":530},[163,4748,503],{"class":169},[163,4750,4751],{"class":165,"line":1779},[163,4752,636],{"emptyLinePlaceholder":635},[163,4754,4755,4757,4760,4762,4764,4766,4768,4770],{"class":165,"line":1789},[163,4756,705],{"class":469},[163,4758,4759],{"class":499}," moveUp",[163,4761,545],{"class":169},[163,4763,3817],{"class":473},[163,4765,477],{"class":530},[163,4767,553],{"class":169},[163,4769,557],{"class":556},[163,4771,258],{"class":169},[163,4773,4774,4776,4778,4780,4782,4784,4786,4788,4790,4792,4794,4796,4798,4800,4802,4804,4806],{"class":165,"line":1808},[163,4775,4690],{"class":473},[163,4777,477],{"class":530},[163,4779,477],{"class":169},[163,4781,2642],{"class":480},[163,4783,489],{"class":169},[163,4785,557],{"class":556},[163,4787,4703],{"class":499},[163,4789,450],{"class":169},[163,4791,3506],{"class":473},[163,4793,477],{"class":530},[163,4795,2642],{"class":499},[163,4797,1892],{"class":627},[163,4799,1364],{"class":298},[163,4801,302],{"class":169},[163,4803,1323],{"class":298},[163,4805,2645],{"class":530},[163,4807,503],{"class":169},[163,4809,4810,4812,4815],{"class":165,"line":1838},[163,4811,4650],{"class":169},[163,4813,4814],{"class":530}," [])",[163,4816,503],{"class":169},[163,4818,4819],{"class":165,"line":1866},[163,4820,636],{"emptyLinePlaceholder":635},[163,4822,4823,4825,4828,4830,4832,4834,4836,4838],{"class":165,"line":1882},[163,4824,705],{"class":469},[163,4826,4827],{"class":499}," close",[163,4829,545],{"class":169},[163,4831,3817],{"class":473},[163,4833,477],{"class":530},[163,4835,553],{"class":169},[163,4837,557],{"class":556},[163,4839,258],{"class":169},[163,4841,4842,4845,4847,4849,4851],{"class":165,"line":1900},[163,4843,4844],{"class":473},"    setIsOpen",[163,4846,477],{"class":530},[163,4848,3966],{"class":2735},[163,4850,489],{"class":530},[163,4852,503],{"class":169},[163,4854,4855,4857,4859,4861,4863,4865],{"class":165,"line":1913},[163,4856,4690],{"class":473},[163,4858,477],{"class":530},[163,4860,3935],{"class":627},[163,4862,1895],{"class":298},[163,4864,489],{"class":530},[163,4866,503],{"class":169},[163,4868,4869,4871,4873],{"class":165,"line":1918},[163,4870,4650],{"class":169},[163,4872,4814],{"class":530},[163,4874,503],{"class":169},[163,4876,4877],{"class":165,"line":1938},[163,4878,636],{"emptyLinePlaceholder":635},[163,4880,4881,4883],{"class":165,"line":1948},[163,4882,509],{"class":508},[163,4884,258],{"class":169},[163,4886,4887,4890],{"class":165,"line":1964},[163,4888,4889],{"class":499},"    query",[163,4891,200],{"class":169},[163,4893,4894,4897],{"class":165,"line":1978},[163,4895,4896],{"class":499},"    setQuery",[163,4898,200],{"class":169},[163,4900,4901,4904],{"class":165,"line":2018},[163,4902,4903],{"class":499},"    suggestions",[163,4905,200],{"class":169},[163,4907,4908,4911],{"class":165,"line":2024},[163,4909,4910],{"class":499},"    highlightedIndex",[163,4912,200],{"class":169},[163,4914,4915,4917],{"class":165,"line":2029},[163,4916,4690],{"class":499},[163,4918,200],{"class":169},[163,4920,4921,4924],{"class":165,"line":2034},[163,4922,4923],{"class":499},"    isOpen",[163,4925,200],{"class":169},[163,4927,4928,4931],{"class":165,"line":2052},[163,4929,4930],{"class":499},"    moveDown",[163,4932,200],{"class":169},[163,4934,4935,4938],{"class":165,"line":2074},[163,4936,4937],{"class":499},"    moveUp",[163,4939,200],{"class":169},[163,4941,4942],{"class":165,"line":2090},[163,4943,4944],{"class":499},"    close\n",[163,4946,4947],{"class":165,"line":2095},[163,4948,591],{"class":169},[163,4950,4951],{"class":165,"line":2103},[163,4952,435],{"class":169},[15,4954,4955],{},[58,4956,4957],{},[52,4958,4959],{},"components\u002FLldAutocomplete.jsx",[45,4961,4963],{"className":460,"code":4962,"language":462,"meta":54,"style":54},"import { useRef, useEffect } from \"react\";\nimport { useAutocomplete } from \"..\u002Fhooks\u002FuseAutocomplete\";\n\nexport function LldAutocomplete({ apiKey, onSelect }) {\n  const wrapperRef = useRef(null);\n  const ac = useAutocomplete(apiKey);\n\n  function selectFeature(feature) {\n    ac.setQuery(feature.properties.legal_location);\n    const [lng, lat] = feature.geometry.coordinates;\n    onSelect({ label: feature.properties.legal_location, lng, lat });\n    ac.close();\n  }\n\n  function handleKeyDown(e) {\n    if (e.key === \"ArrowDown\") {\n      e.preventDefault();\n      ac.moveDown();\n    } else if (e.key === \"ArrowUp\") {\n      e.preventDefault();\n      ac.moveUp();\n    } else if (e.key === \"Enter\" && ac.highlightedIndex >= 0) {\n      e.preventDefault();\n      selectFeature(ac.suggestions[ac.highlightedIndex]);\n    } else if (e.key === \"Escape\") {\n      ac.close();\n    }\n  }\n\n  useEffect(() => {\n    function handleClick(e) {\n      if (wrapperRef.current && !wrapperRef.current.contains(e.target)) {\n        ac.close();\n      }\n    }\n    document.addEventListener(\"click\", handleClick);\n    return () => document.removeEventListener(\"click\", handleClick);\n  }, [ac.close]);\n\n  return (\n    \u003Cdiv\n      ref={wrapperRef}\n      className=\"autocomplete-wrapper\"\n    >\n      \u003Cinput\n        type=\"text\"\n        value={ac.query}\n        onChange={(e) => ac.setQuery(e.target.value)}\n        onKeyDown={handleKeyDown}\n        placeholder=\"e.g. NW-25-24-1-W5\"\n        autoComplete=\"off\"\n      \u002F>\n\n      {ac.isOpen && (\n        \u003Cul className=\"suggestions\">\n          {ac.suggestions.length === 0 ? (\n            \u003Cli className=\"no-results\">No results\u003C\u002Fli>\n          ) : (\n            ac.suggestions.map((feature, i) => (\n              \u003Cli\n                key={feature.properties.legal_location}\n                className={i === ac.highlightedIndex ? \"highlighted\" : \"\"}\n                onMouseEnter={() => ac.setHighlightedIndex(i)}\n                onClick={() => selectFeature(feature)}\n              >\n                {feature.properties.legal_location}\n              \u003C\u002Fli>\n            ))\n          )}\n        \u003C\u002Ful>\n      )}\n    \u003C\u002Fdiv>\n  );\n}\n",[52,4964,4965,4989,5010,5014,5038,5057,5076,5080,5095,5121,5150,5189,5202,5207,5211,5226,5250,5263,5277,5306,5318,5331,5371,5383,5409,5437,5449,5453,5457,5461,5473,5489,5530,5543,5547,5551,5576,5607,5623,5627,5634,5641,5653,5666,5671,5677,5689,5704,5740,5752,5764,5777,5781,5785,5800,5820,5844,5871,5880,5910,5918,5937,5968,5993,6012,6017,6034,6043,6048,6054,6063,6070,6078,6084],{"__ignoreMap":54},[163,4966,4967,4969,4971,4973,4975,4977,4979,4981,4983,4985,4987],{"class":165,"line":166},[163,4968,3802],{"class":508},[163,4970,768],{"class":169},[163,4972,3812],{"class":499},[163,4974,302],{"class":169},[163,4976,3822],{"class":499},[163,4978,3079],{"class":169},[163,4980,3827],{"class":508},[163,4982,191],{"class":190},[163,4984,3832],{"class":194},[163,4986,184],{"class":190},[163,4988,503],{"class":169},[163,4990,4991,4993,4995,4997,4999,5001,5003,5006,5008],{"class":165,"line":173},[163,4992,3802],{"class":508},[163,4994,768],{"class":169},[163,4996,3850],{"class":499},[163,4998,3079],{"class":169},[163,5000,3827],{"class":508},[163,5002,191],{"class":190},[163,5004,5005],{"class":194},"..\u002Fhooks\u002FuseAutocomplete",[163,5007,184],{"class":190},[163,5009,503],{"class":169},[163,5011,5012],{"class":165,"line":203},[163,5013,636],{"emptyLinePlaceholder":635},[163,5015,5016,5018,5020,5023,5026,5028,5030,5033,5036],{"class":165,"line":218},[163,5017,3845],{"class":508},[163,5019,512],{"class":469},[163,5021,5022],{"class":473}," LldAutocomplete",[163,5024,5025],{"class":169},"({",[163,5027,4257],{"class":480},[163,5029,302],{"class":169},[163,5031,5032],{"class":480}," onSelect",[163,5034,5035],{"class":169}," })",[163,5037,258],{"class":169},[163,5039,5040,5042,5045,5047,5049,5051,5053,5055],{"class":165,"line":224},[163,5041,705],{"class":469},[163,5043,5044],{"class":499}," wrapperRef",[163,5046,545],{"class":169},[163,5048,3812],{"class":473},[163,5050,477],{"class":530},[163,5052,3990],{"class":627},[163,5054,489],{"class":530},[163,5056,503],{"class":169},[163,5058,5059,5061,5064,5066,5068,5070,5072,5074],{"class":165,"line":246},[163,5060,705],{"class":469},[163,5062,5063],{"class":499}," ac",[163,5065,545],{"class":169},[163,5067,3850],{"class":473},[163,5069,477],{"class":530},[163,5071,3855],{"class":499},[163,5073,489],{"class":530},[163,5075,503],{"class":169},[163,5077,5078],{"class":165,"line":261},[163,5079,636],{"emptyLinePlaceholder":635},[163,5081,5082,5085,5087,5089,5091,5093],{"class":165,"line":283},[163,5083,5084],{"class":469},"  function",[163,5086,2674],{"class":473},[163,5088,477],{"class":169},[163,5090,2544],{"class":480},[163,5092,489],{"class":169},[163,5094,258],{"class":169},[163,5096,5097,5100,5102,5105,5107,5109,5111,5113,5115,5117,5119],{"class":165,"line":311},[163,5098,5099],{"class":499},"    ac",[163,5101,450],{"class":169},[163,5103,5104],{"class":473},"setQuery",[163,5106,477],{"class":530},[163,5108,2544],{"class":499},[163,5110,450],{"class":169},[163,5112,322],{"class":499},[163,5114,450],{"class":169},[163,5116,336],{"class":499},[163,5118,489],{"class":530},[163,5120,503],{"class":169},[163,5122,5123,5126,5128,5130,5132,5134,5136,5138,5140,5142,5144,5146,5148],{"class":165,"line":317},[163,5124,5125],{"class":469},"    const",[163,5127,295],{"class":169},[163,5129,979],{"class":499},[163,5131,302],{"class":169},[163,5133,2989],{"class":499},[163,5135,2899],{"class":169},[163,5137,545],{"class":169},[163,5139,2598],{"class":499},[163,5141,450],{"class":169},[163,5143,251],{"class":499},[163,5145,450],{"class":169},[163,5147,288],{"class":499},[163,5149,503],{"class":169},[163,5151,5152,5155,5157,5160,5163,5165,5167,5169,5171,5173,5175,5177,5179,5181,5183,5185,5187],{"class":165,"line":331},[163,5153,5154],{"class":473},"    onSelect",[163,5156,477],{"class":530},[163,5158,5159],{"class":169},"{",[163,5161,5162],{"class":762}," label",[163,5164,187],{"class":169},[163,5166,2598],{"class":499},[163,5168,450],{"class":169},[163,5170,322],{"class":499},[163,5172,450],{"class":169},[163,5174,336],{"class":499},[163,5176,302],{"class":169},[163,5178,3072],{"class":499},[163,5180,302],{"class":169},[163,5182,2989],{"class":499},[163,5184,3079],{"class":169},[163,5186,489],{"class":530},[163,5188,503],{"class":169},[163,5190,5191,5193,5195,5198,5200],{"class":165,"line":352},[163,5192,5099],{"class":499},[163,5194,450],{"class":169},[163,5196,5197],{"class":473},"close",[163,5199,553],{"class":530},[163,5201,503],{"class":169},[163,5203,5204],{"class":165,"line":373},[163,5205,5206],{"class":169},"  }\n",[163,5208,5209],{"class":165,"line":394},[163,5210,636],{"emptyLinePlaceholder":635},[163,5212,5213,5215,5218,5220,5222,5224],{"class":165,"line":414},[163,5214,5084],{"class":469},[163,5216,5217],{"class":473}," handleKeyDown",[163,5219,477],{"class":169},[163,5221,3332],{"class":480},[163,5223,489],{"class":169},[163,5225,258],{"class":169},[163,5227,5228,5230,5232,5234,5236,5238,5240,5242,5244,5246,5248],{"class":165,"line":420},[163,5229,4526],{"class":508},[163,5231,663],{"class":530},[163,5233,3332],{"class":499},[163,5235,450],{"class":169},[163,5237,3379],{"class":499},[163,5239,2286],{"class":627},[163,5241,191],{"class":190},[163,5243,3386],{"class":194},[163,5245,184],{"class":190},[163,5247,489],{"class":530},[163,5249,258],{"class":169},[163,5251,5252,5255,5257,5259,5261],{"class":165,"line":426},[163,5253,5254],{"class":499},"      e",[163,5256,450],{"class":169},[163,5258,3403],{"class":473},[163,5260,553],{"class":530},[163,5262,503],{"class":169},[163,5264,5265,5268,5270,5273,5275],{"class":165,"line":432},[163,5266,5267],{"class":499},"      ac",[163,5269,450],{"class":169},[163,5271,5272],{"class":473},"moveDown",[163,5274,553],{"class":530},[163,5276,503],{"class":169},[163,5278,5279,5282,5284,5286,5288,5290,5292,5294,5296,5298,5300,5302,5304],{"class":165,"line":1301},[163,5280,5281],{"class":169},"    }",[163,5283,2524],{"class":508},[163,5285,3458],{"class":508},[163,5287,663],{"class":530},[163,5289,3332],{"class":499},[163,5291,450],{"class":169},[163,5293,3379],{"class":499},[163,5295,2286],{"class":627},[163,5297,191],{"class":190},[163,5299,3473],{"class":194},[163,5301,184],{"class":190},[163,5303,489],{"class":530},[163,5305,258],{"class":169},[163,5307,5308,5310,5312,5314,5316],{"class":165,"line":1315},[163,5309,5254],{"class":499},[163,5311,450],{"class":169},[163,5313,3403],{"class":473},[163,5315,553],{"class":530},[163,5317,503],{"class":169},[163,5319,5320,5322,5324,5327,5329],{"class":165,"line":1328},[163,5321,5267],{"class":499},[163,5323,450],{"class":169},[163,5325,5326],{"class":473},"moveUp",[163,5328,553],{"class":530},[163,5330,503],{"class":169},[163,5332,5333,5335,5337,5339,5341,5343,5345,5347,5349,5351,5353,5355,5357,5359,5361,5363,5365,5367,5369],{"class":165,"line":1340},[163,5334,5281],{"class":169},[163,5336,2524],{"class":508},[163,5338,3458],{"class":508},[163,5340,663],{"class":530},[163,5342,3332],{"class":499},[163,5344,450],{"class":169},[163,5346,3379],{"class":499},[163,5348,2286],{"class":627},[163,5350,191],{"class":190},[163,5352,3546],{"class":194},[163,5354,184],{"class":190},[163,5356,2870],{"class":627},[163,5358,5063],{"class":499},[163,5360,450],{"class":169},[163,5362,1042],{"class":499},[163,5364,2865],{"class":169},[163,5366,1323],{"class":298},[163,5368,489],{"class":530},[163,5370,258],{"class":169},[163,5372,5373,5375,5377,5379,5381],{"class":165,"line":1356},[163,5374,5254],{"class":499},[163,5376,450],{"class":169},[163,5378,3403],{"class":473},[163,5380,553],{"class":530},[163,5382,503],{"class":169},[163,5384,5385,5388,5390,5393,5395,5397,5399,5401,5403,5405,5407],{"class":165,"line":1379},[163,5386,5387],{"class":473},"      selectFeature",[163,5389,477],{"class":530},[163,5391,5392],{"class":499},"ac",[163,5394,450],{"class":169},[163,5396,1285],{"class":499},[163,5398,2894],{"class":530},[163,5400,5392],{"class":499},[163,5402,450],{"class":169},[163,5404,1042],{"class":499},[163,5406,3590],{"class":530},[163,5408,503],{"class":169},[163,5410,5411,5413,5415,5417,5419,5421,5423,5425,5427,5429,5431,5433,5435],{"class":165,"line":1392},[163,5412,5281],{"class":169},[163,5414,2524],{"class":508},[163,5416,3458],{"class":508},[163,5418,663],{"class":530},[163,5420,3332],{"class":499},[163,5422,450],{"class":169},[163,5424,3379],{"class":499},[163,5426,2286],{"class":627},[163,5428,191],{"class":190},[163,5430,3616],{"class":194},[163,5432,184],{"class":190},[163,5434,489],{"class":530},[163,5436,258],{"class":169},[163,5438,5439,5441,5443,5445,5447],{"class":165,"line":1404},[163,5440,5267],{"class":499},[163,5442,450],{"class":169},[163,5444,5197],{"class":473},[163,5446,553],{"class":530},[163,5448,503],{"class":169},[163,5450,5451],{"class":165,"line":1416},[163,5452,423],{"class":169},[163,5454,5455],{"class":165,"line":1427},[163,5456,5206],{"class":169},[163,5458,5459],{"class":165,"line":1439},[163,5460,636],{"emptyLinePlaceholder":635},[163,5462,5463,5465,5467,5469,5471],{"class":165,"line":1444},[163,5464,4496],{"class":473},[163,5466,477],{"class":530},[163,5468,553],{"class":169},[163,5470,557],{"class":556},[163,5472,258],{"class":169},[163,5474,5475,5478,5481,5483,5485,5487],{"class":165,"line":1456},[163,5476,5477],{"class":469},"    function",[163,5479,5480],{"class":473}," handleClick",[163,5482,477],{"class":169},[163,5484,3332],{"class":480},[163,5486,489],{"class":169},[163,5488,258],{"class":169},[163,5490,5491,5493,5495,5498,5500,5502,5504,5507,5509,5511,5513,5515,5518,5520,5522,5524,5526,5528],{"class":165,"line":1474},[163,5492,4054],{"class":508},[163,5494,663],{"class":530},[163,5496,5497],{"class":499},"wrapperRef",[163,5499,450],{"class":169},[163,5501,4064],{"class":499},[163,5503,2870],{"class":627},[163,5505,5506],{"class":627}," !",[163,5508,5497],{"class":499},[163,5510,450],{"class":169},[163,5512,4064],{"class":499},[163,5514,450],{"class":169},[163,5516,5517],{"class":473},"contains",[163,5519,477],{"class":530},[163,5521,3332],{"class":499},[163,5523,450],{"class":169},[163,5525,3704],{"class":499},[163,5527,2645],{"class":530},[163,5529,258],{"class":169},[163,5531,5532,5535,5537,5539,5541],{"class":165,"line":1487},[163,5533,5534],{"class":499},"        ac",[163,5536,450],{"class":169},[163,5538,5197],{"class":473},[163,5540,553],{"class":530},[163,5542,503],{"class":169},[163,5544,5545],{"class":165,"line":1501},[163,5546,417],{"class":169},[163,5548,5549],{"class":165,"line":1506},[163,5550,423],{"class":169},[163,5552,5553,5556,5558,5560,5562,5564,5566,5568,5570,5572,5574],{"class":165,"line":1522},[163,5554,5555],{"class":499},"    document",[163,5557,450],{"class":169},[163,5559,2618],{"class":473},[163,5561,477],{"class":530},[163,5563,184],{"class":190},[163,5565,2663],{"class":194},[163,5567,184],{"class":190},[163,5569,302],{"class":169},[163,5571,5480],{"class":499},[163,5573,489],{"class":530},[163,5575,503],{"class":169},[163,5577,5578,5580,5582,5584,5586,5588,5591,5593,5595,5597,5599,5601,5603,5605],{"class":165,"line":1536},[163,5579,4626],{"class":508},[163,5581,2632],{"class":169},[163,5583,557],{"class":556},[163,5585,1818],{"class":499},[163,5587,450],{"class":169},[163,5589,5590],{"class":473},"removeEventListener",[163,5592,477],{"class":530},[163,5594,184],{"class":190},[163,5596,2663],{"class":194},[163,5598,184],{"class":190},[163,5600,302],{"class":169},[163,5602,5480],{"class":499},[163,5604,489],{"class":530},[163,5606,503],{"class":169},[163,5608,5609,5611,5613,5615,5617,5619,5621],{"class":165,"line":1541},[163,5610,4650],{"class":169},[163,5612,295],{"class":530},[163,5614,5392],{"class":499},[163,5616,450],{"class":169},[163,5618,5197],{"class":499},[163,5620,3590],{"class":530},[163,5622,503],{"class":169},[163,5624,5625],{"class":165,"line":1557},[163,5626,636],{"emptyLinePlaceholder":635},[163,5628,5629,5631],{"class":165,"line":1572},[163,5630,509],{"class":508},[163,5632,5633],{"class":530}," (\n",[163,5635,5636,5638],{"class":165,"line":1584},[163,5637,1114],{"class":169},[163,5639,5640],{"class":1069},"div\n",[163,5642,5643,5646,5649,5651],{"class":165,"line":1589},[163,5644,5645],{"class":1073},"      ref",[163,5647,5648],{"class":169},"={",[163,5650,5497],{"class":499},[163,5652,435],{"class":169},[163,5654,5655,5658,5660,5662,5664],{"class":165,"line":1599},[163,5656,5657],{"class":1073},"      className",[163,5659,1090],{"class":169},[163,5661,184],{"class":190},[163,5663,1171],{"class":194},[163,5665,411],{"class":190},[163,5667,5668],{"class":165,"line":1609},[163,5669,5670],{"class":169},"    >\n",[163,5672,5673,5675],{"class":165,"line":1619},[163,5674,1643],{"class":169},[163,5676,1646],{"class":1069},[163,5678,5679,5681,5683,5685,5687],{"class":165,"line":1640},[163,5680,1667],{"class":1073},[163,5682,1090],{"class":169},[163,5684,184],{"class":190},[163,5686,50],{"class":194},[163,5688,411],{"class":190},[163,5690,5691,5694,5696,5698,5700,5702],{"class":165,"line":1649},[163,5692,5693],{"class":1073},"        value",[163,5695,5648],{"class":169},[163,5697,5392],{"class":499},[163,5699,450],{"class":169},[163,5701,651],{"class":499},[163,5703,435],{"class":169},[163,5705,5706,5709,5712,5714,5716,5718,5720,5722,5724,5726,5728,5730,5732,5734,5736,5738],{"class":165,"line":1664},[163,5707,5708],{"class":1073},"        onChange",[163,5710,5711],{"class":169},"={(",[163,5713,3332],{"class":480},[163,5715,489],{"class":169},[163,5717,557],{"class":556},[163,5719,5063],{"class":499},[163,5721,450],{"class":169},[163,5723,5104],{"class":473},[163,5725,477],{"class":737},[163,5727,3332],{"class":499},[163,5729,450],{"class":169},[163,5731,3704],{"class":499},[163,5733,450],{"class":169},[163,5735,2961],{"class":499},[163,5737,489],{"class":737},[163,5739,435],{"class":169},[163,5741,5742,5745,5747,5750],{"class":165,"line":1678},[163,5743,5744],{"class":1073},"        onKeyDown",[163,5746,5648],{"class":169},[163,5748,5749],{"class":499},"handleKeyDown",[163,5751,435],{"class":169},[163,5753,5754,5756,5758,5760,5762],{"class":165,"line":1693},[163,5755,1681],{"class":1073},[163,5757,1090],{"class":169},[163,5759,184],{"class":190},[163,5761,1688],{"class":194},[163,5763,411],{"class":190},[163,5765,5766,5769,5771,5773,5775],{"class":165,"line":1708},[163,5767,5768],{"class":1073},"        autoComplete",[163,5770,1090],{"class":169},[163,5772,184],{"class":190},[163,5774,1703],{"class":194},[163,5776,411],{"class":190},[163,5778,5779],{"class":165,"line":1714},[163,5780,1711],{"class":169},[163,5782,5783],{"class":165,"line":1722},[163,5784,636],{"emptyLinePlaceholder":635},[163,5786,5787,5790,5792,5794,5796,5798],{"class":165,"line":1735},[163,5788,5789],{"class":169},"      {",[163,5791,5392],{"class":499},[163,5793,450],{"class":169},[163,5795,3950],{"class":499},[163,5797,2870],{"class":627},[163,5799,5633],{"class":737},[163,5801,5802,5805,5807,5810,5812,5814,5816,5818],{"class":165,"line":1749},[163,5803,5804],{"class":169},"        \u003C",[163,5806,23],{"class":1069},[163,5808,5809],{"class":1073}," className",[163,5811,1090],{"class":169},[163,5813,184],{"class":190},[163,5815,1285],{"class":194},[163,5817,184],{"class":190},[163,5819,1077],{"class":169},[163,5821,5822,5825,5827,5829,5831,5833,5835,5837,5839,5842],{"class":165,"line":1755},[163,5823,5824],{"class":169},"          {",[163,5826,5392],{"class":499},[163,5828,450],{"class":169},[163,5830,1285],{"class":499},[163,5832,450],{"class":169},[163,5834,2419],{"class":2418},[163,5836,2286],{"class":627},[163,5838,1323],{"class":298},[163,5840,5841],{"class":627}," ?",[163,5843,5633],{"class":737},[163,5845,5846,5849,5851,5853,5855,5857,5859,5861,5863,5865,5867,5869],{"class":165,"line":1765},[163,5847,5848],{"class":169},"            \u003C",[163,5850,26],{"class":1069},[163,5852,5809],{"class":1073},[163,5854,1090],{"class":169},[163,5856,184],{"class":190},[163,5858,1552],{"class":194},[163,5860,184],{"class":190},[163,5862,1142],{"class":169},[163,5864,2493],{"class":1145},[163,5866,1149],{"class":169},[163,5868,26],{"class":1069},[163,5870,1077],{"class":169},[163,5872,5873,5875,5878],{"class":165,"line":1774},[163,5874,2208],{"class":737},[163,5876,5877],{"class":627}," :",[163,5879,5633],{"class":737},[163,5881,5882,5885,5887,5889,5891,5894,5896,5898,5900,5902,5904,5906,5908],{"class":165,"line":1779},[163,5883,5884],{"class":499},"            ac",[163,5886,450],{"class":169},[163,5888,1285],{"class":499},[163,5890,450],{"class":169},[163,5892,5893],{"class":473},"map",[163,5895,477],{"class":737},[163,5897,477],{"class":169},[163,5899,2544],{"class":480},[163,5901,302],{"class":169},[163,5903,2549],{"class":480},[163,5905,489],{"class":169},[163,5907,557],{"class":556},[163,5909,5633],{"class":737},[163,5911,5912,5915],{"class":165,"line":1789},[163,5913,5914],{"class":169},"              \u003C",[163,5916,5917],{"class":1069},"li\n",[163,5919,5920,5923,5925,5927,5929,5931,5933,5935],{"class":165,"line":1808},[163,5921,5922],{"class":1073},"                key",[163,5924,5648],{"class":169},[163,5926,2544],{"class":499},[163,5928,450],{"class":169},[163,5930,322],{"class":499},[163,5932,450],{"class":169},[163,5934,336],{"class":499},[163,5936,435],{"class":169},[163,5938,5939,5942,5944,5946,5948,5950,5952,5954,5956,5958,5960,5962,5964,5966],{"class":165,"line":1838},[163,5940,5941],{"class":1073},"                className",[163,5943,5648],{"class":169},[163,5945,2642],{"class":499},[163,5947,2286],{"class":627},[163,5949,5063],{"class":499},[163,5951,450],{"class":169},[163,5953,1042],{"class":499},[163,5955,5841],{"class":627},[163,5957,191],{"class":190},[163,5959,1517],{"class":194},[163,5961,184],{"class":190},[163,5963,5877],{"class":627},[163,5965,2383],{"class":190},[163,5967,435],{"class":169},[163,5969,5970,5973,5976,5978,5980,5982,5985,5987,5989,5991],{"class":165,"line":1866},[163,5971,5972],{"class":1073},"                onMouseEnter",[163,5974,5975],{"class":169},"={()",[163,5977,557],{"class":556},[163,5979,5063],{"class":499},[163,5981,450],{"class":169},[163,5983,5984],{"class":473},"setHighlightedIndex",[163,5986,477],{"class":737},[163,5988,2642],{"class":499},[163,5990,489],{"class":737},[163,5992,435],{"class":169},[163,5994,5995,5998,6000,6002,6004,6006,6008,6010],{"class":165,"line":1882},[163,5996,5997],{"class":1073},"                onClick",[163,5999,5975],{"class":169},[163,6001,557],{"class":556},[163,6003,2674],{"class":473},[163,6005,477],{"class":737},[163,6007,2544],{"class":499},[163,6009,489],{"class":737},[163,6011,435],{"class":169},[163,6013,6014],{"class":165,"line":1900},[163,6015,6016],{"class":169},"              >\n",[163,6018,6019,6022,6024,6026,6028,6030,6032],{"class":165,"line":1913},[163,6020,6021],{"class":169},"                {",[163,6023,2544],{"class":499},[163,6025,450],{"class":169},[163,6027,322],{"class":499},[163,6029,450],{"class":169},[163,6031,336],{"class":499},[163,6033,435],{"class":169},[163,6035,6036,6039,6041],{"class":165,"line":1918},[163,6037,6038],{"class":169},"              \u003C\u002F",[163,6040,26],{"class":1069},[163,6042,1077],{"class":169},[163,6044,6045],{"class":165,"line":1938},[163,6046,6047],{"class":737},"            ))\n",[163,6049,6050,6052],{"class":165,"line":1948},[163,6051,2208],{"class":737},[163,6053,435],{"class":169},[163,6055,6056,6059,6061],{"class":165,"line":1964},[163,6057,6058],{"class":169},"        \u003C\u002F",[163,6060,23],{"class":1069},[163,6062,1077],{"class":169},[163,6064,6065,6068],{"class":165,"line":1978},[163,6066,6067],{"class":737},"      )",[163,6069,435],{"class":169},[163,6071,6072,6074,6076],{"class":165,"line":2018},[163,6073,1592],{"class":169},[163,6075,1624],{"class":1069},[163,6077,1077],{"class":169},[163,6079,6080,6082],{"class":165,"line":2024},[163,6081,811],{"class":530},[163,6083,503],{"class":169},[163,6085,6086],{"class":165,"line":2029},[163,6087,435],{"class":169},[15,6089,6090],{},"Usage in a parent component:",[45,6092,6094],{"className":460,"code":6093,"language":462,"meta":54,"style":54},"\u003CLldAutocomplete\n  apiKey=\"YOUR_API_KEY\"\n  onSelect={({ label, lng, lat }) => flyToLocation(lng, lat)}\n\u002F>\n",[52,6095,6096,6103,6116,6153],{"__ignoreMap":54},[163,6097,6098,6100],{"class":165,"line":166},[163,6099,1082],{"class":169},[163,6101,6102],{"class":230},"LldAutocomplete\n",[163,6104,6105,6108,6110,6112,6114],{"class":165,"line":173},[163,6106,6107],{"class":1073},"  apiKey",[163,6109,1090],{"class":169},[163,6111,184],{"class":190},[163,6113,783],{"class":194},[163,6115,411],{"class":190},[163,6117,6118,6121,6124,6126,6128,6130,6132,6134,6136,6138,6141,6143,6145,6147,6149,6151],{"class":165,"line":203},[163,6119,6120],{"class":1073},"  onSelect",[163,6122,6123],{"class":169},"={({",[163,6125,5162],{"class":480},[163,6127,302],{"class":169},[163,6129,3072],{"class":480},[163,6131,302],{"class":169},[163,6133,2989],{"class":480},[163,6135,5035],{"class":169},[163,6137,557],{"class":556},[163,6139,6140],{"class":473}," flyToLocation",[163,6142,477],{"class":737},[163,6144,979],{"class":499},[163,6146,302],{"class":169},[163,6148,2989],{"class":499},[163,6150,489],{"class":737},[163,6152,435],{"class":169},[163,6154,6155],{"class":165,"line":218},[163,6156,6157],{"class":169},"\u002F>\n",[10,6159,6161],{"id":6160},"next-steps","Next Steps",[23,6163,6164,6177,6188,6199],{},[26,6165,6166,6169,6170,6173,6174,6176],{},[58,6167,6168],{},"Fly to the selected location",": pass the ",[52,6171,6172],{},"[lng, lat]"," coordinates to your map's fly-to method - see the ",[30,6175,1008],{"href":1007}," for a complete walkthrough.",[26,6178,6179,6182,6183,6187],{},[58,6180,6181],{},"Geocode a full LLD",": once a user selects a result, use the ",[30,6184,6186],{"href":6185},"\u002Fapi","API reference"," to fetch the full boundary polygon for that location.",[26,6189,6190,6193,6194,6198],{},[58,6191,6192],{},"Batch lookups",": if you need to geocode multiple locations at once, the ",[30,6195,6197],{"href":6196},"\u002Fguides\u002Fbatch-api-guide","batch API guide"," covers CSV uploads and programmatic batch requests.",[26,6200,6201,6204,6205,450],{},[58,6202,6203],{},"API key setup and rate limits",": covered in the ",[30,6206,6208],{"href":6207},"\u002Fguides\u002Fapi-integration","API integration guide",[6210,6211],"hr",{},[15,6213,6214,6215,6218,6219,6218,6222,6218,6225],{},"Related guides: ",[30,6216,6217],{"href":6207},"API Integration"," · ",[30,6220,6221],{"href":1007},"Mapbox Integration",[30,6223,6224],{"href":6196},"Batch API Guide",[30,6226,6228],{"href":6227},"\u002Fabout","About Township Canada",[1160,6230,6231],{},"html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .skNjk, html code.shiki .skNjk{--shiki-light:#F76D47;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .sLdnO, html code.shiki .sLdnO{--shiki-light:#E53935;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sIOqK, html code.shiki .sIOqK{--shiki-light:#9C3EDA;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sETVe, html code.shiki .sETVe{--shiki-light:#39ADB5;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .su_V2, html code.shiki .su_V2{--shiki-light:#90A4AE;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sQtxO, html code.shiki .sQtxO{--shiki-light:#E53935;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sq3J1, html code.shiki .sq3J1{--shiki-light:#FF5370;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s131V, html code.shiki .s131V{--shiki-light:#90A4AE;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sJFLg, html code.shiki .sJFLg{--shiki-light:#E53935;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .s5q8q, html code.shiki .s5q8q{--shiki-light:#9C3EDA;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sKL33, html code.shiki .sKL33{--shiki-light:#E2931D;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .s5HLA, html code.shiki .s5HLA{--shiki-light:#8796B0;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .sQBxk, html code.shiki .sQBxk{--shiki-light:#F76D47;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .skzw8, html code.shiki .skzw8{--shiki-light:#E2931D;--shiki-default:#1E754F;--shiki-dark:#4D9375}",{"title":54,"searchDepth":173,"depth":173,"links":6233},[6234,6235,6236,6237,6238,6239,6240,6241,6242,6243],{"id":12,"depth":173,"text":13},{"id":20,"depth":173,"text":21},{"id":42,"depth":173,"text":43},{"id":453,"depth":173,"text":454},{"id":601,"depth":173,"text":602},{"id":864,"depth":173,"text":865},{"id":1012,"depth":173,"text":1013},{"id":1050,"depth":173,"text":1051},{"id":3781,"depth":173,"text":3782},{"id":6160,"depth":173,"text":6161},"api","Build a search-as-you-type component for legal land descriptions using the Township Canada Autocomplete API. Includes debouncing, proximity biasing, and examples in vanilla JS and React.",false,"md","i-lucide-search",{},"\u002Fguides\u002Fautocomplete-api-guide",{"title":5,"description":6245},"guides\u002Fautocomplete-api-guide","WX-FnuJTkSt6abj5nepjSRdwu5wCIstJbuOznmyyDwc",[6255,6739,7621],{"id":6256,"title":6257,"body":6258,"category":6244,"description":6733,"draft":6246,"extension":6247,"icon":6734,"meta":6735,"navigation":635,"order":166,"path":6207,"seo":6736,"stem":6737,"__hash__":6738},"guides\u002Fguides\u002Fapi-integration.md","Legal Land Description API Integration Guide",{"type":7,"value":6259,"toc":6698},[6260,6263,6270,6274,6303,6309,6313,6316,6320,6323,6329,6333,6336,6341,6345,6348,6353,6357,6360,6365,6369,6372,6377,6439,6445,6495,6498,6502,6506,6509,6513,6516,6520,6523,6527,6530,6534,6537,6541,6582,6586,6592,6612,6616,6619,6623,6626,6630,6633,6637,6640,6644,6654,6658,6690],[15,6261,6262],{},"Integrate Township Canada's legal land description services directly into your applications and workflows. Our REST APIs enable LLD-to-coordinate conversion, autocomplete search, batch processing, and interactive grid maps-all with simple JSON responses.",[15,6264,6265],{},[6266,6267],"img",{"alt":6268,"src":6269},"Developer Portal","\u002Fimages\u002Fguides\u002Fapi-portal.webp",[10,6271,6273],{"id":6272},"quick-start","Quick start",[6275,6276,6277,6282,6289,6293,6296,6300],"steps",{},[6278,6279,6281],"h3",{"id":6280},"get-an-api-key","Get an API key",[15,6283,6284,6285,6288],{},"Log into your Township Canada account and go to ",[58,6286,6287],{},"API"," in the main navigation. Subscribe to an API endpoint and create your first API key.",[6278,6290,6292],{"id":6291},"make-your-first-request","Make your first request",[15,6294,6295],{},"Add your API key to the request header and make a test request.",[6278,6297,6299],{"id":6298},"parse-the-response","Parse the response",[15,6301,6302],{},"All APIs return JSON with coordinates, legal descriptions, and metadata.",[15,6304,6305,6306,450],{},"For full documentation and code examples, visit the ",[30,6307,6308],{"href":6185},"API documentation",[10,6310,6312],{"id":6311},"api-endpoints","API endpoints",[15,6314,6315],{},"Township Canada offers four distinct API endpoints:",[6278,6317,6319],{"id":6318},"search-api-20month","Search API ($20\u002Fmonth)",[15,6321,6322],{},"Convert legal land descriptions to geographic coordinates and vice versa. Supports DLS, NTS, Geographic Townships, and FPS formats.",[15,6324,6325,6328],{},[58,6326,6327],{},"Use cases",": Property lookup, coordinate conversion, reverse geocoding",[6278,6330,6332],{"id":6331},"autocomplete-api-20month","Autocomplete API ($20\u002Fmonth)",[15,6334,6335],{},"Search legal land descriptions with partial text. Returns up to 10 matching results with coordinates-ideal for search boxes and type-ahead interfaces.",[15,6337,6338,6340],{},[58,6339,6327],{},": Search boxes, type-ahead, field validation",[6278,6342,6344],{"id":6343},"batch-api-40month","Batch API ($40\u002Fmonth)",[15,6346,6347],{},"Process up to 100 records per request. Convert lists of legal land descriptions to coordinates or coordinates to legal land descriptions.",[15,6349,6350,6352],{},[58,6351,6327],{},": Bulk data processing, migration, spatial analysis",[6278,6354,6356],{"id":6355},"maps-api-20month","Maps API ($20\u002Fmonth)",[15,6358,6359],{},"Display legal survey grids on maps in your web or mobile applications. Vector tiles format compatible with Mapbox GL, Leaflet, and other mapping libraries.",[15,6361,6362,6364],{},[58,6363,6327],{},": Custom mapping applications, data visualization",[10,6366,6368],{"id":6367},"api-pricing-tiers","API pricing tiers",[15,6370,6371],{},"Each API offers three pricing tiers:",[15,6373,6374],{},[58,6375,6376],{},"Search, Autocomplete & Batch APIs",[73,6378,6379,6395],{},[76,6380,6381],{},[79,6382,6383,6386,6389,6392],{},[82,6384,6385],{},"Tier",[82,6387,6388],{},"Monthly Requests",[82,6390,6391],{},"Rate Limit",[82,6393,6394],{},"Price",[92,6396,6397,6411,6425],{},[79,6398,6399,6402,6405,6408],{},[97,6400,6401],{},"Build",[97,6403,6404],{},"1,000",[97,6406,6407],{},"1\u002Fsec",[97,6409,6410],{},"$20-40\u002Fmo",[79,6412,6413,6416,6419,6422],{},[97,6414,6415],{},"Scale",[97,6417,6418],{},"10,000",[97,6420,6421],{},"5\u002Fsec",[97,6423,6424],{},"$100-200\u002Fmo",[79,6426,6427,6430,6433,6436],{},[97,6428,6429],{},"Enterprise",[97,6431,6432],{},"100,000",[97,6434,6435],{},"25\u002Fsec",[97,6437,6438],{},"$500-1,000\u002Fmo",[15,6440,6441,6444],{},[58,6442,6443],{},"Maps API"," (higher request quotas for tile rendering)",[73,6446,6447,6459],{},[76,6448,6449],{},[79,6450,6451,6453,6455,6457],{},[82,6452,6385],{},[82,6454,6388],{},[82,6456,6391],{},[82,6458,6394],{},[92,6460,6461,6472,6483],{},[79,6462,6463,6465,6467,6469],{},[97,6464,6401],{},[97,6466,6418],{},[97,6468,6407],{},[97,6470,6471],{},"$20\u002Fmo",[79,6473,6474,6476,6478,6480],{},[97,6475,6415],{},[97,6477,6432],{},[97,6479,6421],{},[97,6481,6482],{},"$100\u002Fmo",[79,6484,6485,6487,6490,6492],{},[97,6486,6429],{},[97,6488,6489],{},"1,000,000",[97,6491,6435],{},[97,6493,6494],{},"$500\u002Fmo",[15,6496,6497],{},"Annual billing saves two months compared to monthly billing.",[10,6499,6501],{"id":6500},"common-integration-patterns","Common integration patterns",[6278,6503,6505],{"id":6504},"real-estate-applications","Real Estate Applications",[15,6507,6508],{},"Add legal land description lookup to property search interfaces. Use the Autocomplete API for type-ahead search and the Search API for coordinate conversion.",[6278,6510,6512],{"id":6511},"oil-gas-software","Oil & Gas Software",[15,6514,6515],{},"Integrate batch conversion for well location management. Use the Maps API to display DLS\u002FNTS grids in custom mapping applications.",[6278,6517,6519],{"id":6518},"mobile-field-apps","Mobile Field Apps",[15,6521,6522],{},"Add LLD search and coordinate conversion for field workers. The APIs work with any mobile development framework (React Native, Flutter, native iOS\u002FAndroid).",[6278,6524,6526],{"id":6525},"gis-platforms","GIS Platforms",[15,6528,6529],{},"Enhance ArcGIS, QGIS, or custom GIS tools with legal land description support. Batch API enables bulk coordinate conversion for spatial analysis.",[6278,6531,6533],{"id":6532},"agriculture-technology","Agriculture Technology",[15,6535,6536],{},"Add quarter section and LSD lookup to farm management software. Combine with soil and boundary data for precision agriculture applications.",[10,6538,6540],{"id":6539},"getting-an-api-key","Getting an API key",[6275,6542,6543,6547,6553,6557,6560,6564,6571,6575],{},[6278,6544,6546],{"id":6545},"open-the-developer-portal","Open the Developer Portal",[15,6548,6549,6550,6552],{},"Go to ",[58,6551,6287],{}," in the main navigation to access the Developer Portal.",[6278,6554,6556],{"id":6555},"subscribe-to-an-api","Subscribe to an API",[15,6558,6559],{},"Click on the API you want to use (Search, Autocomplete, Batch, or Maps). Select a tier and complete payment.",[6278,6561,6563],{"id":6562},"create-an-api-key","Create an API key",[15,6565,6566,6567,6570],{},"Click ",[58,6568,6569],{},"+ Add Key"," and give your key a descriptive name. Copy the key immediately-it won't be shown again.",[6278,6572,6574],{"id":6573},"use-your-key","Use your key",[15,6576,6577,6578,6581],{},"Include the API key in the ",[52,6579,6580],{},"x-api-key"," header for all requests.",[10,6583,6585],{"id":6584},"managing-api-subscriptions","Managing API subscriptions",[15,6587,6588,6589,6591],{},"Manage your API subscriptions from the ",[58,6590,6287],{}," page in the main navigation. The Developer Portal provides:",[23,6593,6594,6600,6606],{},[26,6595,6596,6599],{},[58,6597,6598],{},"Overview",": View all your API keys and subscriptions",[26,6601,6602,6605],{},[58,6603,6604],{},"Logs",": Monitor API requests with timestamps and response codes",[26,6607,6608,6611],{},[58,6609,6610],{},"Alerts",": Configure usage threshold notifications",[6278,6613,6615],{"id":6614},"usage-monitoring","Usage monitoring",[15,6617,6618],{},"Track your API usage in real-time from the Overview tab. Usage resets at the start of each billing period.",[6278,6620,6622],{"id":6621},"rate-limiting","Rate limiting",[15,6624,6625],{},"Exceeding your rate limit results in HTTP 429 Too Many Requests responses. Implement exponential backoff in your integration to handle rate limits gracefully.",[6278,6627,6629],{"id":6628},"quota-management","Quota management",[15,6631,6632],{},"When you reach your monthly quota, requests return HTTP 429 until the next billing cycle. Upgrade your tier for higher quotas or implement caching to reduce request volume.",[10,6634,6636],{"id":6635},"code-examples","Code examples",[15,6638,6639],{},"Access code examples in JavaScript, Python, and cURL from the Developer Portal. Each API endpoint includes ready-to-use code snippets you can copy and customize.",[10,6641,6643],{"id":6642},"checking-system-health","Checking system health",[15,6645,6646,6647,6653],{},"For the current status of Township Canada's APIs, including uptime, response time, and incident history, visit ",[30,6648,6652],{"href":6649,"rel":6650},"https:\u002F\u002Fstatus.townshipcanada.com",[6651],"nofollow","status.townshipcanada.com",". This site provides real-time updates on API system health.",[10,6655,6657],{"id":6656},"related-guides","Related guides",[23,6659,6660,6667,6674,6681],{},[26,6661,6662,6666],{},[30,6663,6665],{"href":6664},"\u002Fguides\u002Faccount-management","Account Management"," - Manage billing for API subscriptions",[26,6668,6669,6673],{},[30,6670,6672],{"href":6671},"\u002Fguides\u002Fbatch-conversion","Batch Conversion"," - Web interface for batch processing",[26,6675,6676,6680],{},[30,6677,6679],{"href":6678},"\u002Fguides\u002Fmap","Interactive Maps"," - Map features available through the Maps API",[26,6682,6683,6689],{},[30,6684,6686],{"href":6685},"\u002Fblog\u002Ftownshipcanada-sdk-typescript-npm-package",[52,6687,6688],{},"townshipcanada"," - Official TypeScript SDK for Node.js developers",[15,6691,6692,6693,6697],{},"Need help with your integration? ",[30,6694,6696],{"href":6695},"\u002Fcontact-us","Contact us"," for technical support and custom API solutions.",{"title":54,"searchDepth":173,"depth":173,"links":6699},[6700,6705,6711,6712,6719,6725,6730,6731,6732],{"id":6272,"depth":173,"text":6273,"children":6701},[6702,6703,6704],{"id":6280,"depth":203,"text":6281},{"id":6291,"depth":203,"text":6292},{"id":6298,"depth":203,"text":6299},{"id":6311,"depth":173,"text":6312,"children":6706},[6707,6708,6709,6710],{"id":6318,"depth":203,"text":6319},{"id":6331,"depth":203,"text":6332},{"id":6343,"depth":203,"text":6344},{"id":6355,"depth":203,"text":6356},{"id":6367,"depth":173,"text":6368},{"id":6500,"depth":173,"text":6501,"children":6713},[6714,6715,6716,6717,6718],{"id":6504,"depth":203,"text":6505},{"id":6511,"depth":203,"text":6512},{"id":6518,"depth":203,"text":6519},{"id":6525,"depth":203,"text":6526},{"id":6532,"depth":203,"text":6533},{"id":6539,"depth":173,"text":6540,"children":6720},[6721,6722,6723,6724],{"id":6545,"depth":203,"text":6546},{"id":6555,"depth":203,"text":6556},{"id":6562,"depth":203,"text":6563},{"id":6573,"depth":203,"text":6574},{"id":6584,"depth":173,"text":6585,"children":6726},[6727,6728,6729],{"id":6614,"depth":203,"text":6615},{"id":6621,"depth":203,"text":6622},{"id":6628,"depth":203,"text":6629},{"id":6635,"depth":173,"text":6636},{"id":6642,"depth":173,"text":6643},{"id":6656,"depth":173,"text":6657},"Integrate legal land description APIs into your applications. Convert LLDs to coordinates, add autocomplete search, process batch records, and display DLS\u002FNTS grid maps. REST API with JSON responses.","i-lucide-code",{},{"title":6257,"description":6733},"guides\u002Fapi-integration","0skTidP_JHbRyEgb2lLso64Jt5ActydUoBJbxBER46M",{"id":6740,"title":6741,"body":6742,"category":6244,"description":7614,"draft":6246,"extension":6247,"icon":7615,"meta":7616,"navigation":635,"order":331,"path":7617,"seo":7618,"stem":7619,"__hash__":7620},"guides\u002Fguides\u002Fapi-key-management.md","Managing API Keys for Development, Staging, and Production",{"type":7,"value":6743,"toc":7598},[6744,6747,6750,6754,6760,6783,6786,6792,6796,6799,6805,6808,6872,6875,6879,6882,6886,6893,6910,6913,7031,7034,7072,7076,7081,7093,7099,7263,7267,7276,7302,7309,7328,7332,7335,7361,7364,7368,7371,7375,7378,7402,7405,7501,7504,7508,7511,7514,7517,7521,7524,7539,7545,7551,7557,7563,7565,7595],[15,6745,6746],{},"Most API integrations span multiple environments-local development, a staging server, and production. Using a single API key across all three creates problems: one accidental revocation takes everything down, you can't track which environment is generating traffic, and debugging becomes harder when all requests look identical in the logs.",[15,6748,6749],{},"Township Canada lets you create unlimited API keys on paid plans. The recommended approach is one key per environment, per project.",[10,6751,6753],{"id":6752},"creating-api-keys","Creating API keys",[15,6755,6756,6757,6759],{},"API keys are managed from the ",[30,6758,6268],{"href":32},". To create a new key:",[6761,6762,6763,6768,6772,6775,6780],"ol",{},[26,6764,6549,6765,6767],{},[58,6766,6287],{}," in the main navigation",[26,6769,6566,6770],{},[58,6771,6569],{},[26,6773,6774],{},"Enter a descriptive name (see naming conventions below)",[26,6776,6566,6777],{},[58,6778,6779],{},"Create",[26,6781,6782],{},"Copy the key immediately - it will not be shown again",[15,6784,6785],{},"Each key displays its name, creation date, and last-used timestamp. Keys can be revoked individually without affecting any other key on your account.",[6787,6788,6789],"warning",{},[15,6790,6791],{},"Copy your key before closing the dialog. Township Canada does not store the full key value after creation. If you lose it, revoke the key and create a new one.",[10,6793,6795],{"id":6794},"naming-conventions","Naming conventions",[15,6797,6798],{},"A consistent naming pattern makes it easy to identify keys at a glance, especially once you have several. Use the format:",[45,6800,6803],{"className":6801,"code":6802,"language":50},[48],"{Environment} - {Project} {Version}\n",[52,6804,6802],{"__ignoreMap":54},[15,6806,6807],{},"Examples:",[73,6809,6810,6820],{},[76,6811,6812],{},[79,6813,6814,6817],{},[82,6815,6816],{},"Key name",[82,6818,6819],{},"What it's for",[92,6821,6822,6832,6842,6852,6862],{},[79,6823,6824,6829],{},[97,6825,6826],{},[52,6827,6828],{},"Production - Well Mapper v2",[97,6830,6831],{},"Live production traffic for version 2 of your app",[79,6833,6834,6839],{},[97,6835,6836],{},[52,6837,6838],{},"Staging - Well Mapper v2",[97,6840,6841],{},"Pre-release testing against real data",[79,6843,6844,6849],{},[97,6845,6846],{},[52,6847,6848],{},"Dev - Local Testing",[97,6850,6851],{},"Your local development environment",[79,6853,6854,6859],{},[97,6855,6856],{},[52,6857,6858],{},"CI - Well Mapper",[97,6860,6861],{},"Automated tests in your CI pipeline",[79,6863,6864,6869],{},[97,6865,6866],{},[52,6867,6868],{},"Dev - Jane Smith",[97,6870,6871],{},"A team member's personal development key",[15,6873,6874],{},"Avoid generic names like \"API Key 1\" or \"Test Key\". When you're reviewing keys six months from now, a descriptive name tells you exactly what to keep and what to revoke.",[10,6876,6878],{"id":6877},"environment-variable-setup","Environment variable setup",[15,6880,6881],{},"Never hardcode an API key in your source code. Use environment variables so keys stay out of version control.",[6278,6883,6885],{"id":6884},"nodejs","Node.js",[15,6887,6888,6889,6892],{},"Create a ",[52,6890,6891],{},".env"," file in your project root:",[45,6894,6898],{"className":6895,"code":6896,"language":6897,"meta":54,"style":54},"language-bash shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","TOWNSHIP_CANADA_API_KEY=tc_live_your_key_here\n","bash",[52,6899,6900],{"__ignoreMap":54},[163,6901,6902,6905,6907],{"class":165,"line":166},[163,6903,6904],{"class":499},"TOWNSHIP_CANADA_API_KEY",[163,6906,1090],{"class":169},[163,6908,6909],{"class":194},"tc_live_your_key_here\n",[15,6911,6912],{},"Load and use it in your application:",[45,6914,6918],{"className":6915,"code":6916,"language":6917,"meta":54,"style":54},"language-javascript shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","\u002F\u002F Make sure dotenv is loaded early (e.g., in your entry file)\nrequire(\"dotenv\").config();\n\nconst response = await fetch(\n  \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-36-42-3-W5\",\n  {\n    headers: {\n      \"X-API-Key\": process.env.TOWNSHIP_CANADA_API_KEY\n    }\n  }\n);\n","javascript",[52,6919,6920,6925,6950,6954,6969,6980,6985,6994,7017,7021,7025],{"__ignoreMap":54},[163,6921,6922],{"class":165,"line":166},[163,6923,6924],{"class":905},"\u002F\u002F Make sure dotenv is loaded early (e.g., in your entry file)\n",[163,6926,6927,6930,6932,6934,6937,6939,6941,6943,6946,6948],{"class":165,"line":173},[163,6928,6929],{"class":473},"require",[163,6931,477],{"class":737},[163,6933,184],{"class":190},[163,6935,6936],{"class":194},"dotenv",[163,6938,184],{"class":190},[163,6940,489],{"class":737},[163,6942,450],{"class":169},[163,6944,6945],{"class":473},"config",[163,6947,553],{"class":737},[163,6949,503],{"class":169},[163,6951,6952],{"class":165,"line":203},[163,6953,636],{"emptyLinePlaceholder":635},[163,6955,6956,6958,6961,6963,6965,6967],{"class":165,"line":218},[163,6957,884],{"class":469},[163,6959,6960],{"class":499}," response",[163,6962,545],{"class":169},[163,6964,713],{"class":508},[163,6966,716],{"class":473},[163,6968,719],{"class":737},[163,6970,6971,6973,6976,6978],{"class":165,"line":224},[163,6972,177],{"class":190},[163,6974,6975],{"class":194},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?location=NW-36-42-3-W5",[163,6977,184],{"class":190},[163,6979,200],{"class":169},[163,6981,6982],{"class":165,"line":246},[163,6983,6984],{"class":169},"  {\n",[163,6986,6987,6990,6992],{"class":165,"line":261},[163,6988,6989],{"class":762},"    headers",[163,6991,187],{"class":169},[163,6993,258],{"class":169},[163,6995,6996,6998,7000,7002,7004,7007,7009,7012,7014],{"class":165,"line":283},[163,6997,227],{"class":190},[163,6999,774],{"class":773},[163,7001,184],{"class":190},[163,7003,187],{"class":169},[163,7005,7006],{"class":499}," process",[163,7008,450],{"class":169},[163,7010,7011],{"class":499},"env",[163,7013,450],{"class":169},[163,7015,7016],{"class":499},"TOWNSHIP_CANADA_API_KEY\n",[163,7018,7019],{"class":165,"line":311},[163,7020,423],{"class":169},[163,7022,7023],{"class":165,"line":317},[163,7024,5206],{"class":169},[163,7026,7027,7029],{"class":165,"line":331},[163,7028,489],{"class":737},[163,7030,503],{"class":169},[15,7032,7033],{},"For the Maps API tiles, pass the key as a query parameter instead:",[45,7035,7037],{"className":6915,"code":7036,"language":6917,"meta":54,"style":54},"const tileUrl = `https:\u002F\u002Fmaps.townshipcanada.com\u002Fgrid\u002Fdls\u002Ftwp\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=${process.env.TOWNSHIP_CANADA_API_KEY}`;\n",[52,7038,7039],{"__ignoreMap":54},[163,7040,7041,7043,7046,7048,7050,7053,7055,7058,7060,7062,7064,7066,7068,7070],{"class":165,"line":166},[163,7042,884],{"class":469},[163,7044,7045],{"class":499}," tileUrl",[163,7047,545],{"class":169},[163,7049,4173],{"class":190},[163,7051,7052],{"class":194},"https:\u002F\u002Fmaps.townshipcanada.com\u002Fgrid\u002Fdls\u002Ftwp\u002F{z}\u002F{x}\u002F{y}.mvt?api_key=",[163,7054,731],{"class":730},[163,7056,7057],{"class":740},"process",[163,7059,450],{"class":169},[163,7061,7011],{"class":740},[163,7063,450],{"class":169},[163,7065,6904],{"class":740},[163,7067,745],{"class":730},[163,7069,751],{"class":190},[163,7071,503],{"class":169},[6278,7073,7075],{"id":7074},"python","Python",[15,7077,6888,7078,7080],{},[52,7079,6891],{}," file:",[45,7082,7083],{"className":6895,"code":6896,"language":6897,"meta":54,"style":54},[52,7084,7085],{"__ignoreMap":54},[163,7086,7087,7089,7091],{"class":165,"line":166},[163,7088,6904],{"class":499},[163,7090,1090],{"class":169},[163,7092,6909],{"class":194},[15,7094,7095,7096,187],{},"Load it using ",[52,7097,7098],{},"python-dotenv",[45,7100,7103],{"className":7101,"code":7102,"language":7074,"meta":54,"style":54},"language-python shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","import os\nfrom dotenv import load_dotenv\nimport requests\n\nload_dotenv()\n\napi_key = os.environ.get('TOWNSHIP_CANADA_API_KEY')\n\nresponse = requests.get(\n    'https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location',\n    headers={'X-API-Key': api_key},\n    params={'location': '10-15-23-4-W4'}\n)\n",[52,7104,7105,7112,7125,7132,7136,7145,7149,7182,7186,7202,7214,7234,7259],{"__ignoreMap":54},[163,7106,7107,7109],{"class":165,"line":166},[163,7108,3802],{"class":508},[163,7110,7111],{"class":1145}," os\n",[163,7113,7114,7117,7120,7122],{"class":165,"line":173},[163,7115,7116],{"class":508},"from",[163,7118,7119],{"class":1145}," dotenv ",[163,7121,3802],{"class":508},[163,7123,7124],{"class":1145}," load_dotenv\n",[163,7126,7127,7129],{"class":165,"line":203},[163,7128,3802],{"class":508},[163,7130,7131],{"class":1145}," requests\n",[163,7133,7134],{"class":165,"line":218},[163,7135,636],{"emptyLinePlaceholder":635},[163,7137,7138,7142],{"class":165,"line":224},[163,7139,7141],{"class":7140},"siWMO","load_dotenv",[163,7143,7144],{"class":169},"()\n",[163,7146,7147],{"class":165,"line":246},[163,7148,636],{"emptyLinePlaceholder":635},[163,7150,7151,7154,7156,7159,7161,7165,7167,7170,7172,7175,7177,7179],{"class":165,"line":261},[163,7152,7153],{"class":1145},"api_key ",[163,7155,1090],{"class":169},[163,7157,7158],{"class":1145}," os",[163,7160,450],{"class":169},[163,7162,7164],{"class":7163},"sBPpx","environ",[163,7166,450],{"class":169},[163,7168,7169],{"class":7140},"get",[163,7171,477],{"class":169},[163,7173,7174],{"class":190},"'",[163,7176,6904],{"class":194},[163,7178,7174],{"class":190},[163,7180,7181],{"class":169},")\n",[163,7183,7184],{"class":165,"line":283},[163,7185,636],{"emptyLinePlaceholder":635},[163,7187,7188,7191,7193,7196,7198,7200],{"class":165,"line":311},[163,7189,7190],{"class":1145},"response ",[163,7192,1090],{"class":169},[163,7194,7195],{"class":1145}," requests",[163,7197,450],{"class":169},[163,7199,7169],{"class":7140},[163,7201,719],{"class":169},[163,7203,7204,7207,7210,7212],{"class":165,"line":317},[163,7205,7206],{"class":190},"    '",[163,7208,7209],{"class":194},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location",[163,7211,7174],{"class":190},[163,7213,200],{"class":169},[163,7215,7216,7218,7220,7222,7224,7226,7228,7231],{"class":165,"line":331},[163,7217,6989],{"class":480},[163,7219,5648],{"class":169},[163,7221,7174],{"class":190},[163,7223,774],{"class":194},[163,7225,7174],{"class":190},[163,7227,187],{"class":169},[163,7229,7230],{"class":7140}," api_key",[163,7232,7233],{"class":169},"},\n",[163,7235,7236,7239,7241,7243,7245,7247,7249,7252,7255,7257],{"class":165,"line":352},[163,7237,7238],{"class":480},"    params",[163,7240,5648],{"class":169},[163,7242,7174],{"class":190},[163,7244,101],{"class":194},[163,7246,7174],{"class":190},[163,7248,187],{"class":169},[163,7250,7251],{"class":190}," '",[163,7253,7254],{"class":194},"10-15-23-4-W4",[163,7256,7174],{"class":190},[163,7258,435],{"class":169},[163,7260,7261],{"class":165,"line":373},[163,7262,7181],{"class":169},[6278,7264,7266],{"id":7265},"keeping-keys-out-of-git","Keeping keys out of git",[15,7268,7269,7270,7272,7273,7080],{},"Add ",[52,7271,6891],{}," to your ",[52,7274,7275],{},".gitignore",[45,7277,7279],{"className":6895,"code":7278,"language":6897,"meta":54,"style":54},"# .gitignore\n.env\n.env.local\n.env.*.local\n",[52,7280,7281,7286,7292,7297],{"__ignoreMap":54},[163,7282,7283],{"class":165,"line":166},[163,7284,7285],{"class":905},"# .gitignore\n",[163,7287,7288],{"class":165,"line":173},[163,7289,7291],{"class":7290},"sYn-s",".env\n",[163,7293,7294],{"class":165,"line":203},[163,7295,7296],{"class":7290},".env.local\n",[163,7298,7299],{"class":165,"line":218},[163,7300,7301],{"class":7290},".env.*.local\n",[15,7303,7304,7305,7308],{},"Commit a ",[52,7306,7307],{},".env.example"," file with placeholder values instead. Other developers on your team know what variables to set without seeing real credentials:",[45,7310,7312],{"className":6895,"code":7311,"language":6897,"meta":54,"style":54},"# .env.example\nTOWNSHIP_CANADA_API_KEY=your_api_key_here\n",[52,7313,7314,7319],{"__ignoreMap":54},[163,7315,7316],{"class":165,"line":166},[163,7317,7318],{"class":905},"# .env.example\n",[163,7320,7321,7323,7325],{"class":165,"line":173},[163,7322,6904],{"class":499},[163,7324,1090],{"class":169},[163,7326,7327],{"class":194},"your_api_key_here\n",[10,7329,7331],{"id":7330},"key-rotation-without-downtime","Key rotation without downtime",[15,7333,7334],{},"Rotating a production key requires a brief overlap period where both the old and new key are valid. Follow this sequence:",[6761,7336,7337,7343,7349,7355],{},[26,7338,7339,7342],{},[58,7340,7341],{},"Create the new key"," in the Developer Portal with the same name (add \"v2\" or today's date to distinguish it)",[26,7344,7345,7348],{},[58,7346,7347],{},"Update your deployment"," - set the new key value in your environment variables or secrets manager",[26,7350,7351,7354],{},[58,7352,7353],{},"Deploy and verify"," - confirm requests are succeeding with the new key in your application logs",[26,7356,7357,7360],{},[58,7358,7359],{},"Revoke the old key"," - only after confirming the new key is working",[15,7362,7363],{},"Never revoke the old key before confirming the new one works. A failed deploy with no fallback means downtime.",[10,7365,7367],{"id":7366},"cicd-secrets","CI\u002FCD secrets",[15,7369,7370],{},"Automated pipelines need API keys without human involvement. Store keys in your CI provider's secrets store, not in configuration files.",[6278,7372,7374],{"id":7373},"github-actions","GitHub Actions",[15,7376,7377],{},"Add your API key as a repository secret:",[6761,7379,7380,7386,7391,7397],{},[26,7381,6549,7382,7385],{},[58,7383,7384],{},"Settings → Secrets and variables → Actions"," in your GitHub repository",[26,7387,6566,7388],{},[58,7389,7390],{},"New repository secret",[26,7392,7393,7394,7396],{},"Name it ",[52,7395,6904],{}," and paste your CI key value",[26,7398,6566,7399],{},[58,7400,7401],{},"Add secret",[15,7403,7404],{},"Reference it in your workflow file:",[45,7406,7410],{"className":7407,"code":7408,"language":7409,"meta":54,"style":54},"language-yaml shiki shiki-themes material-theme-lighter vitesse-light vitesse-dark","# .github\u002Fworkflows\u002Ftest.yml\njobs:\n  test:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions\u002Fcheckout@v4\n      - name: Run integration tests\n        env:\n          TOWNSHIP_CANADA_API_KEY: ${{ secrets.TOWNSHIP_CANADA_API_KEY }}\n        run: npm test\n","yaml",[52,7411,7412,7417,7425,7432,7442,7449,7462,7474,7481,7491],{"__ignoreMap":54},[163,7413,7414],{"class":165,"line":166},[163,7415,7416],{"class":905},"# .github\u002Fworkflows\u002Ftest.yml\n",[163,7418,7419,7422],{"class":165,"line":173},[163,7420,7421],{"class":762},"jobs",[163,7423,7424],{"class":169},":\n",[163,7426,7427,7430],{"class":165,"line":203},[163,7428,7429],{"class":762},"  test",[163,7431,7424],{"class":169},[163,7433,7434,7437,7439],{"class":165,"line":218},[163,7435,7436],{"class":762},"    runs-on",[163,7438,187],{"class":169},[163,7440,7441],{"class":194}," ubuntu-latest\n",[163,7443,7444,7447],{"class":165,"line":224},[163,7445,7446],{"class":762},"    steps",[163,7448,7424],{"class":169},[163,7450,7451,7454,7457,7459],{"class":165,"line":246},[163,7452,7453],{"class":169},"      -",[163,7455,7456],{"class":762}," uses",[163,7458,187],{"class":169},[163,7460,7461],{"class":194}," actions\u002Fcheckout@v4\n",[163,7463,7464,7466,7469,7471],{"class":165,"line":261},[163,7465,7453],{"class":169},[163,7467,7468],{"class":762}," name",[163,7470,187],{"class":169},[163,7472,7473],{"class":194}," Run integration tests\n",[163,7475,7476,7479],{"class":165,"line":283},[163,7477,7478],{"class":762},"        env",[163,7480,7424],{"class":169},[163,7482,7483,7486,7488],{"class":165,"line":311},[163,7484,7485],{"class":762},"          TOWNSHIP_CANADA_API_KEY",[163,7487,187],{"class":169},[163,7489,7490],{"class":194}," ${{ secrets.TOWNSHIP_CANADA_API_KEY }}\n",[163,7492,7493,7496,7498],{"class":165,"line":317},[163,7494,7495],{"class":762},"        run",[163,7497,187],{"class":169},[163,7499,7500],{"class":194}," npm test\n",[15,7502,7503],{},"The same pattern applies to other CI platforms - GitLab CI uses project variables, Bitbucket Pipelines uses repository variables, and CircleCI uses environment variables in project settings. The key principle is the same: the secret is stored in the platform, referenced by name in the config file, and never written to disk or logs.",[10,7505,7507],{"id":7506},"team-key-management","Team key management",[15,7509,7510],{},"On the Business plan, account admins can view all API keys created by team members - including the key name, creator, creation date, and last-used timestamp. This makes it possible to audit which keys are active, identify keys that haven't been used recently, and revoke credentials when a team member leaves.",[15,7512,7513],{},"Individual developers see only their own keys. Admins see keys across the entire team.",[15,7515,7516],{},"If your team uses a shared integration (for example, a company-wide internal tool), create that key under an admin account rather than a personal one. That way the key doesn't become inaccessible if the original creator's account is deactivated.",[10,7518,7520],{"id":7519},"security-practices","Security practices",[15,7522,7523],{},"A few habits that prevent the most common problems:",[15,7525,7526,7529,7530,7532,7533,7538],{},[58,7527,7528],{},"Don't commit keys."," The ",[52,7531,7275],{}," pattern above covers most cases. For extra protection, consider a tool like ",[30,7534,7537],{"href":7535,"rel":7536},"https:\u002F\u002Fgithub.com\u002Fawslabs\u002Fgit-secrets",[6651],"git-secrets"," that scans commits for credential patterns before they're pushed.",[15,7540,7541,7544],{},[58,7542,7543],{},"Use separate keys for separate projects."," If Project A's key is ever compromised, you revoke that key without touching Project B. It also makes usage monitoring cleaner - each key's activity in the logs maps to exactly one project.",[15,7546,7547,7550],{},[58,7548,7549],{},"Rotate keys periodically."," There's no hard rule on frequency, but a yearly rotation for production keys is a reasonable baseline. After a team member departure, rotate any keys they had access to.",[15,7552,7553,7556],{},[58,7554,7555],{},"Delete unused keys."," Old keys from completed projects or former team members are attack surface with no benefit. If a key hasn't been used in 90 days and you don't recognize its purpose, revoke it.",[15,7558,7559,7562],{},[58,7560,7561],{},"Treat keys like passwords."," Don't paste them into chat messages, emails, or support tickets. If you need to share a key temporarily, do it through a password manager or secrets vault.",[10,7564,6657],{"id":6656},[23,7566,7567,7572,7577,7583,7588],{},[26,7568,7569,7571],{},[30,7570,6217],{"href":6207}," - Get started with the Township Canada API",[26,7573,7574,7576],{},[30,7575,6224],{"href":6196}," - Process multiple records in a single request",[26,7578,7579,7582],{},[30,7580,7581],{"href":6250},"Autocomplete API Guide"," - Add LLD search suggestions to your app",[26,7584,7585,7587],{},[30,7586,6665],{"href":6664}," - Manage subscriptions and billing",[26,7589,7590,7594],{},[30,7591,7593],{"href":7592},"\u002Fpricing","Pricing"," - API plan tiers and request quotas",[1160,7596,7597],{},"html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .suXOh, html code.shiki .suXOh{--shiki-light:#E53935;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sQtxO, html code.shiki .sQtxO{--shiki-light:#E53935;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .s8XtY, html code.shiki .s8XtY{--shiki-light:#39ADB5;--shiki-default:#1E754F;--shiki-dark:#4D9375}html pre.shiki code .su_V2, html code.shiki .su_V2{--shiki-light:#90A4AE;--shiki-default:#B56959;--shiki-dark:#C98A7D}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sBPpx, html code.shiki .sBPpx{--shiki-light:#E53935;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}",{"title":54,"searchDepth":173,"depth":173,"links":7599},[7600,7601,7602,7607,7608,7611,7612,7613],{"id":6752,"depth":173,"text":6753},{"id":6794,"depth":173,"text":6795},{"id":6877,"depth":173,"text":6878,"children":7603},[7604,7605,7606],{"id":6884,"depth":203,"text":6885},{"id":7074,"depth":203,"text":7075},{"id":7265,"depth":203,"text":7266},{"id":7330,"depth":173,"text":7331},{"id":7366,"depth":173,"text":7367,"children":7609},[7610],{"id":7373,"depth":203,"text":7374},{"id":7506,"depth":173,"text":7507},{"id":7519,"depth":173,"text":7520},{"id":6656,"depth":173,"text":6657},"Create and manage multiple Township Canada API keys for different environments. Naming conventions, key rotation, environment variables, and CI\u002FCD setup.","i-lucide-key-round",{},"\u002Fguides\u002Fapi-key-management",{"title":6741,"description":7614},"guides\u002Fapi-key-management","y5S7M5b-MjrYZXjYnpDKKgJzo3-V9wx-qk4t04QBnso",{"id":7622,"title":7623,"body":7624,"category":6244,"description":8607,"draft":6246,"extension":6247,"icon":8608,"meta":8609,"navigation":635,"order":283,"path":8610,"seo":8611,"stem":8612,"__hash__":8613},"guides\u002Fguides\u002Fapi-troubleshooting.md","API Troubleshooting & Best Practices",{"type":7,"value":7625,"toc":8585},[7626,7632,7636,7640,7668,7674,7679,7696,7729,7732,7736,7741,7774,7778,7805,7809,7815,7820,7825,7838,7842,7845,7850,7861,7866,7897,7901,7912,7917,7935,7939,7946,7981,7985,7989,8095,8176,8180,8389,8393,8396,8402,8406,8409,8466,8469,8483,8487,8491,8498,8502,8505,8537,8541,8548,8550,8582],[15,7627,7628,7631],{},[58,7629,7630],{},"Getting errors from the Township Canada API?"," This guide covers the most common issues developers run into - authentication failures, CORS blocks, rate limits, and unexpected empty responses - with clear fixes for each one.",[10,7633,7635],{"id":7634},"common-errors-and-what-they-mean","Common errors and what they mean",[6278,7637,7639],{"id":7638},"forbidden-http-403","Forbidden (HTTP 403)",[45,7641,7643],{"className":157,"code":7642,"language":159,"meta":54,"style":54},"{ \"message\": \"Forbidden\" }\n",[52,7644,7645],{"__ignoreMap":54},[163,7646,7647,7649,7651,7654,7656,7658,7660,7663,7665],{"class":165,"line":166},[163,7648,5159],{"class":169},[163,7650,191],{"class":176},[163,7652,7653],{"class":180},"message",[163,7655,184],{"class":176},[163,7657,187],{"class":169},[163,7659,191],{"class":190},[163,7661,7662],{"class":194},"Forbidden",[163,7664,184],{"class":190},[163,7666,7667],{"class":169}," }\n",[15,7669,7670,7673],{},[58,7671,7672],{},"Cause:"," Your API key is missing, invalid, or not included correctly.",[15,7675,7676],{},[58,7677,7678],{},"Fix:",[6761,7680,7681,7687,7693],{},[26,7682,7683,7684],{},"Confirm your API key exists: go to ",[58,7685,7686],{},"My Account → API Access",[26,7688,7689,7690,7692],{},"Include it in the ",[52,7691,774],{}," header (not as a URL parameter)",[26,7694,7695],{},"Test with curl:",[45,7697,7699],{"className":6895,"code":7698,"language":6897,"meta":54,"style":54},"curl -H \"X-API-Key: YOUR_KEY\" \\\n  \"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?q=SW-25-24-1-W5\"\n",[52,7700,7701,7720],{"__ignoreMap":54},[163,7702,7703,7706,7710,7712,7715,7717],{"class":165,"line":166},[163,7704,7705],{"class":7290},"curl",[163,7707,7709],{"class":7708},"sz9Cv"," -H",[163,7711,191],{"class":190},[163,7713,7714],{"class":194},"X-API-Key: YOUR_KEY",[163,7716,184],{"class":190},[163,7718,7719],{"class":1184}," \\\n",[163,7721,7722,7724,7727],{"class":165,"line":173},[163,7723,177],{"class":190},[163,7725,7726],{"class":194},"https:\u002F\u002Fdeveloper.townshipcanada.com\u002Fsearch\u002Flegal-location?q=SW-25-24-1-W5",[163,7728,411],{"class":190},[15,7730,7731],{},"If you get a valid JSON response, your key works. If you still get Forbidden, the key may have been rotated - generate a new one from your account page.",[6278,7733,7735],{"id":7734},"too-many-requests-http-429","Too Many Requests (HTTP 429)",[15,7737,7738,7740],{},[58,7739,7672],{}," You exceeded the rate limit for your API tier.",[73,7742,7743,7751],{},[76,7744,7745],{},[79,7746,7747,7749],{},[82,7748,6385],{},[82,7750,6391],{},[92,7752,7753,7760,7767],{},[79,7754,7755,7757],{},[97,7756,6401],{},[97,7758,7759],{},"1 request\u002Fsecond",[79,7761,7762,7764],{},[97,7763,6415],{},[97,7765,7766],{},"5 requests\u002Fsecond",[79,7768,7769,7771],{},[97,7770,6429],{},[97,7772,7773],{},"25 requests\u002Fsecond",[15,7775,7776],{},[58,7777,7678],{},[23,7779,7780,7791,7798],{},[26,7781,7782,7783,7786,7787,7790],{},"Add a delay between requests: ",[52,7784,7785],{},"await new Promise(r => setTimeout(r, 1000))"," in JavaScript, or ",[52,7788,7789],{},"time.sleep(1)"," in Python",[26,7792,7793,7794,7797],{},"Use the ",[30,7795,7796],{"href":6196},"Batch API"," instead of looping single calls - it processes up to 100 records per request",[26,7799,7800,7801,7804],{},"If you consistently need higher throughput, ",[30,7802,7803],{"href":6695},"contact us"," about upgrading your tier",[6278,7806,7808],{"id":7807},"cors-policy-error","CORS Policy Error",[45,7810,7813],{"className":7811,"code":7812,"language":50},[48],"Access to fetch at 'https:\u002F\u002Fdeveloper.townshipcanada.com\u002F...' has been blocked by CORS policy\n",[52,7814,7812],{"__ignoreMap":54},[15,7816,7817,7819],{},[58,7818,7672],{}," You are calling the API directly from a browser (client-side JavaScript). The API is designed for server-to-server calls and does not include CORS headers by default.",[15,7821,7822],{},[58,7823,7824],{},"Fix options:",[6761,7826,7827,7833],{},[26,7828,7829,7832],{},[58,7830,7831],{},"Proxy through your backend"," - Make the API call from your server (Node.js, Python, etc.) and return the result to your frontend",[26,7834,7835,7837],{},[58,7836,6696],{}," - If you need direct browser access, we can add your domain to the CORS allowlist",[6278,7839,7841],{"id":7840},"empty-response-no-features","Empty Response (no features)",[15,7843,7844],{},"The API returns a valid HTTP 200 response, but the result contains no features or coordinates.",[15,7846,7847],{},[58,7848,7849],{},"Possible causes:",[23,7851,7852,7855,7858],{},[26,7853,7854],{},"The legal description does not exist (e.g., a township\u002Frange combination that was never surveyed)",[26,7856,7857],{},"The description is at a resolution not supported for that region",[26,7859,7860],{},"Format is slightly wrong - the API is stricter than the web app",[15,7862,7863],{},[58,7864,7865],{},"Debugging steps:",[6761,7867,7868,7876,7886,7889],{},[26,7869,7870,7871,7875],{},"Try the same description in the ",[30,7872,7874],{"href":7873},"\u002Fapp","web app search box"," - does it work there?",[26,7877,7878,7879,7882,7883,489],{},"Check that you included the full meridian (e.g., ",[52,7880,7881],{},"W5"," not just ",[52,7884,7885],{},"5",[26,7887,7888],{},"Verify component ranges: LSD 1–16, Section 1–36, Township 1–126, Range 1–34",[26,7890,7891,7892,7896],{},"Check the ",[30,7893,7895],{"href":7894},"\u002Fguides\u002Fcoverage","Coverage Guide"," for resolution limits by region",[6278,7898,7900],{"id":7899},"database-errors-28000-08006","Database Errors (28000, 08006)",[15,7902,7903,7904,7907,7908,7911],{},"Errors with codes like ",[52,7905,7906],{},"28000"," or ",[52,7909,7910],{},"08006"," indicate a service disruption, not an issue with your code.",[15,7913,7914],{},[58,7915,7916],{},"What to do:",[23,7918,7919,7927,7930],{},[26,7920,7891,7921,7926],{},[30,7922,7925],{"href":7923,"rel":7924},"https:\u002F\u002Fstatus.townshipcanada.com\u002F",[6651],"status page"," for incident reports",[26,7928,7929],{},"Wait a few minutes and retry",[26,7931,7932,7933],{},"If the issue persists beyond 15 minutes, ",[30,7934,7803],{"href":6695},[10,7936,7938],{"id":7937},"api-key-setup","API key setup",[15,7940,7941,7942,7945],{},"Quick recap of key setup (see the ",[30,7943,7944],{"href":7617},"full API key management guide"," for details):",[6761,7947,7948,7954,7963,7969,7975],{},[26,7949,7950,7953],{},[58,7951,7952],{},"Find your key:"," My Account → API Access",[26,7955,7956,7959,7960,7962],{},[58,7957,7958],{},"Include in requests:"," Add the ",[52,7961,774],{}," header to every request",[26,7964,7965,7968],{},[58,7966,7967],{},"Test before coding:"," Use curl or Postman to confirm the key works",[26,7970,7971,7974],{},[58,7972,7973],{},"Name your keys:"," Use descriptive names like \"production-backend\" or \"staging-test\" to keep track of which key is used where",[26,7976,7977,7980],{},[58,7978,7979],{},"Rotate regularly:"," Generate new keys periodically and phase out old ones",[10,7982,7984],{"id":7983},"rate-limiting-best-practices","Rate limiting best practices",[6278,7986,7988],{"id":7987},"add-delay-between-requests","Add delay between requests",[45,7990,7992],{"className":6915,"code":7991,"language":6917,"meta":54,"style":54},"\u002F\u002F JavaScript - simple delay\nfor (const query of queries) {\n  const result = await fetch(url + query, { headers });\n  await new Promise((r) => setTimeout(r, 1000));\n}\n",[52,7993,7994,7999,8021,8055,8091],{"__ignoreMap":54},[163,7995,7996],{"class":165,"line":166},[163,7997,7998],{"class":905},"\u002F\u002F JavaScript - simple delay\n",[163,8000,8001,8004,8006,8008,8011,8014,8017,8019],{"class":165,"line":173},[163,8002,8003],{"class":508},"for",[163,8005,663],{"class":737},[163,8007,884],{"class":469},[163,8009,8010],{"class":499}," query",[163,8012,8013],{"class":627}," of",[163,8015,8016],{"class":499}," queries",[163,8018,489],{"class":737},[163,8020,258],{"class":169},[163,8022,8023,8025,8028,8030,8032,8034,8036,8038,8040,8042,8044,8046,8049,8051,8053],{"class":165,"line":203},[163,8024,705],{"class":469},[163,8026,8027],{"class":499}," result",[163,8029,545],{"class":169},[163,8031,713],{"class":508},[163,8033,716],{"class":473},[163,8035,477],{"class":530},[163,8037,4233],{"class":499},[163,8039,3430],{"class":627},[163,8041,8010],{"class":499},[163,8043,302],{"class":169},[163,8045,768],{"class":169},[163,8047,8048],{"class":499}," headers",[163,8050,3079],{"class":169},[163,8052,489],{"class":530},[163,8054,503],{"class":169},[163,8056,8057,8060,8062,8065,8067,8069,8072,8074,8076,8078,8080,8082,8084,8087,8089],{"class":165,"line":218},[163,8058,8059],{"class":508},"  await",[163,8061,689],{"class":627},[163,8063,8064],{"class":230}," Promise",[163,8066,477],{"class":530},[163,8068,477],{"class":169},[163,8070,8071],{"class":480},"r",[163,8073,489],{"class":169},[163,8075,557],{"class":556},[163,8077,548],{"class":473},[163,8079,477],{"class":530},[163,8081,8071],{"class":499},[163,8083,302],{"class":169},[163,8085,8086],{"class":298}," 1000",[163,8088,2645],{"class":530},[163,8090,503],{"class":169},[163,8092,8093],{"class":165,"line":224},[163,8094,435],{"class":169},[45,8096,8098],{"className":7101,"code":8097,"language":7074,"meta":54,"style":54},"# Python - simple delay\nimport time\nfor query in queries:\n    result = requests.get(url + query, headers=headers)\n    time.sleep(1)\n",[52,8099,8100,8105,8112,8126,8160],{"__ignoreMap":54},[163,8101,8102],{"class":165,"line":166},[163,8103,8104],{"class":905},"# Python - simple delay\n",[163,8106,8107,8109],{"class":165,"line":173},[163,8108,3802],{"class":508},[163,8110,8111],{"class":1145}," time\n",[163,8113,8114,8116,8119,8122,8124],{"class":165,"line":203},[163,8115,8003],{"class":508},[163,8117,8118],{"class":1145}," query ",[163,8120,8121],{"class":508},"in",[163,8123,8016],{"class":1145},[163,8125,7424],{"class":169},[163,8127,8128,8131,8133,8135,8137,8139,8141,8144,8147,8149,8151,8153,8155,8158],{"class":165,"line":218},[163,8129,8130],{"class":1145},"    result ",[163,8132,1090],{"class":169},[163,8134,7195],{"class":1145},[163,8136,450],{"class":169},[163,8138,7169],{"class":7140},[163,8140,477],{"class":169},[163,8142,8143],{"class":7140},"url ",[163,8145,8146],{"class":627},"+",[163,8148,8010],{"class":7140},[163,8150,302],{"class":169},[163,8152,8048],{"class":480},[163,8154,1090],{"class":169},[163,8156,8157],{"class":7140},"headers",[163,8159,7181],{"class":169},[163,8161,8162,8165,8167,8170,8172,8174],{"class":165,"line":224},[163,8163,8164],{"class":1145},"    time",[163,8166,450],{"class":169},[163,8168,8169],{"class":7140},"sleep",[163,8171,477],{"class":169},[163,8173,1895],{"class":298},[163,8175,7181],{"class":169},[6278,8177,8179],{"id":8178},"use-exponential-backoff-on-429","Use exponential backoff on 429",[45,8181,8183],{"className":6915,"code":8182,"language":6917,"meta":54,"style":54},"async function fetchWithBackoff(url, headers, maxRetries = 3) {\n  for (let i = 0; i \u003C maxRetries; i++) {\n    const res = await fetch(url, { headers });\n    if (res.status !== 429) return res;\n    await new Promise((r) => setTimeout(r, 1000 * Math.pow(2, i)));\n  }\n  throw new Error(\"Rate limit exceeded after retries\");\n}\n",[52,8184,8185,8216,8250,8278,8305,8358,8362,8385],{"__ignoreMap":54},[163,8186,8187,8189,8191,8194,8196,8198,8200,8202,8204,8207,8209,8212,8214],{"class":165,"line":166},[163,8188,641],{"class":469},[163,8190,512],{"class":469},[163,8192,8193],{"class":473}," fetchWithBackoff",[163,8195,477],{"class":169},[163,8197,4233],{"class":480},[163,8199,302],{"class":169},[163,8201,8048],{"class":480},[163,8203,302],{"class":169},[163,8205,8206],{"class":480}," maxRetries",[163,8208,545],{"class":169},[163,8210,8211],{"class":298}," 3",[163,8213,489],{"class":169},[163,8215,258],{"class":169},[163,8217,8218,8221,8223,8225,8227,8229,8231,8233,8235,8237,8239,8241,8243,8246,8248],{"class":165,"line":173},[163,8219,8220],{"class":508},"  for",[163,8222,663],{"class":530},[163,8224,619],{"class":469},[163,8226,2549],{"class":499},[163,8228,545],{"class":169},[163,8230,1323],{"class":298},[163,8232,902],{"class":169},[163,8234,2549],{"class":499},[163,8236,2875],{"class":169},[163,8238,8206],{"class":499},[163,8240,902],{"class":169},[163,8242,2549],{"class":499},[163,8244,8245],{"class":627},"++",[163,8247,489],{"class":530},[163,8249,258],{"class":169},[163,8251,8252,8254,8256,8258,8260,8262,8264,8266,8268,8270,8272,8274,8276],{"class":165,"line":203},[163,8253,5125],{"class":469},[163,8255,708],{"class":499},[163,8257,545],{"class":169},[163,8259,713],{"class":508},[163,8261,716],{"class":473},[163,8263,477],{"class":530},[163,8265,4233],{"class":499},[163,8267,302],{"class":169},[163,8269,768],{"class":169},[163,8271,8048],{"class":499},[163,8273,3079],{"class":169},[163,8275,489],{"class":530},[163,8277,503],{"class":169},[163,8279,8280,8282,8284,8287,8289,8292,8294,8297,8299,8301,8303],{"class":165,"line":218},[163,8281,4526],{"class":508},[163,8283,663],{"class":530},[163,8285,8286],{"class":499},"res",[163,8288,450],{"class":169},[163,8290,8291],{"class":499},"status",[163,8293,4416],{"class":627},[163,8295,8296],{"class":298}," 429",[163,8298,489],{"class":530},[163,8300,2297],{"class":508},[163,8302,708],{"class":499},[163,8304,503],{"class":169},[163,8306,8307,8310,8312,8314,8316,8318,8320,8322,8324,8326,8328,8330,8332,8334,8337,8339,8341,8344,8346,8349,8351,8353,8356],{"class":165,"line":224},[163,8308,8309],{"class":508},"    await",[163,8311,689],{"class":627},[163,8313,8064],{"class":230},[163,8315,477],{"class":530},[163,8317,477],{"class":169},[163,8319,8071],{"class":480},[163,8321,489],{"class":169},[163,8323,557],{"class":556},[163,8325,548],{"class":473},[163,8327,477],{"class":530},[163,8329,8071],{"class":499},[163,8331,302],{"class":169},[163,8333,8086],{"class":298},[163,8335,8336],{"class":627}," *",[163,8338,4703],{"class":499},[163,8340,450],{"class":169},[163,8342,8343],{"class":473},"pow",[163,8345,477],{"class":530},[163,8347,8348],{"class":298},"2",[163,8350,302],{"class":169},[163,8352,2549],{"class":499},[163,8354,8355],{"class":530},")))",[163,8357,503],{"class":169},[163,8359,8360],{"class":165,"line":246},[163,8361,5206],{"class":169},[163,8363,8364,8367,8369,8372,8374,8376,8379,8381,8383],{"class":165,"line":261},[163,8365,8366],{"class":508},"  throw",[163,8368,689],{"class":627},[163,8370,8371],{"class":473}," Error",[163,8373,477],{"class":530},[163,8375,184],{"class":190},[163,8377,8378],{"class":194},"Rate limit exceeded after retries",[163,8380,184],{"class":190},[163,8382,489],{"class":530},[163,8384,503],{"class":169},[163,8386,8387],{"class":165,"line":283},[163,8388,435],{"class":169},[6278,8390,8392],{"id":8391},"use-the-batch-api-for-bulk-work","Use the Batch API for bulk work",[15,8394,8395],{},"Instead of looping 1,000 single calls (which takes 17+ minutes at 1\u002Fsec), use the Batch API to process 100 records per call - the same 1,000 records take 10 calls.",[15,8397,8398,8399,8401],{},"See the ",[30,8400,6224],{"href":6196}," for chunking examples in Node.js and Python.",[10,8403,8405],{"id":8404},"format-differences-web-app-vs-api","Format differences: web app vs. API",[15,8407,8408],{},"The web app's search box is more forgiving than the API:",[73,8410,8411,8423],{},[76,8412,8413],{},[79,8414,8415,8418,8421],{},[82,8416,8417],{},"Issue",[82,8419,8420],{},"Web App",[82,8422,6287],{},[92,8424,8425,8436,8447,8456],{},[79,8426,8427,8430,8433],{},[97,8428,8429],{},"Missing \"W\" on meridian",[97,8431,8432],{},"May auto-correct",[97,8434,8435],{},"Returns empty",[79,8437,8438,8441,8444],{},[97,8439,8440],{},"Extra spaces",[97,8442,8443],{},"Handled",[97,8445,8446],{},"May cause issues",[79,8448,8449,8452,8454],{},[97,8450,8451],{},"Mixed case",[97,8453,8443],{},[97,8455,8443],{},[79,8457,8458,8461,8464],{},[97,8459,8460],{},"Partial descriptions",[97,8462,8463],{},"Shows suggestions",[97,8465,8435],{},[15,8467,8468],{},"When building API integrations, always normalize your input first:",[23,8470,8471,8474,8477,8480],{},[26,8472,8473],{},"Include dashes between all components",[26,8475,8476],{},"Add the \"W\" prefix on meridians",[26,8478,8479],{},"Remove extra text, parentheses, and place names",[26,8481,8482],{},"Trim whitespace",[10,8484,8486],{"id":8485},"integration-patterns","Integration patterns",[6278,8488,8490],{"id":8489},"caching","Caching",[15,8492,8493,8494,8497],{},"If your application looks up the same legal descriptions repeatedly, cache the results. Legal land descriptions map to fixed coordinates - the result for ",[52,8495,8496],{},"SW-25-24-1-W5"," will not change.",[6278,8499,8501],{"id":8500},"error-handling","Error handling",[15,8503,8504],{},"Always handle these response codes:",[23,8506,8507,8513,8519,8525,8531],{},[26,8508,8509,8512],{},[58,8510,8511],{},"200"," - Success, parse the result",[26,8514,8515,8518],{},[58,8516,8517],{},"400"," - Bad request, check your input format",[26,8520,8521,8524],{},[58,8522,8523],{},"403"," - Authentication failed, check your API key",[26,8526,8527,8530],{},[58,8528,8529],{},"429"," - Rate limited, wait and retry",[26,8532,8533,8536],{},[58,8534,8535],{},"500\u002F502\u002F503"," - Server issue, retry after a short delay",[6278,8538,8540],{"id":8539},"openapi-spec","OpenAPI spec",[15,8542,8543,8544,8547],{},"Download the OpenAPI specification at ",[30,8545,8546],{"href":8546},"\u002Fopenapi.yaml"," and import it into Postman, Swagger UI, or Insomnia for interactive testing and documentation.",[10,8549,6657],{"id":6656},[23,8551,8552,8558,8564,8571,8576],{},[26,8553,8554,8557],{},[30,8555,8556],{"href":6207},"API Integration Guide"," - getting started with the API",[26,8559,8560,8563],{},[30,8561,8562],{"href":7617},"API Key Management"," - creating and managing API keys",[26,8565,8566,8570],{},[30,8567,8569],{"href":8568},"\u002Fguides\u002Fsearch-api-guide","Search API Guide"," - single-location lookups",[26,8572,8573,8575],{},[30,8574,6224],{"href":6196}," - bulk conversions",[26,8577,8578,8581],{},[30,8579,8580],{"href":7894},"Coverage & Limitations"," - what regions and resolutions are supported",[1160,8583,8584],{},"html pre.shiki code .soVBu, html code.shiki .soVBu{--shiki-light:#39ADB5;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s4Jsk, html code.shiki .s4Jsk{--shiki-light:#39ADB5;--shiki-default:#99841877;--shiki-dark:#B8A96577}html pre.shiki code .sLorS, html code.shiki .sLorS{--shiki-light:#9C3EDA;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sbYkP, html code.shiki .sbYkP{--shiki-light:#39ADB5;--shiki-default:#B5695977;--shiki-dark:#C98A7D77}html pre.shiki code .sTbE_, html code.shiki .sTbE_{--shiki-light:#91B859;--shiki-default:#B56959;--shiki-dark:#C98A7D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sYn-s, html code.shiki .sYn-s{--shiki-light:#E2931D;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sz9Cv, html code.shiki .sz9Cv{--shiki-light:#91B859;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .se3Ec, html code.shiki .se3Ec{--shiki-light:#90A4AE;--shiki-default:#A65E2B;--shiki-dark:#C99076}html pre.shiki code .s9Tkl, html code.shiki .s9Tkl{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#A0ADA0;--shiki-default-font-style:inherit;--shiki-dark:#758575DD;--shiki-dark-font-style:inherit}html pre.shiki code .siDh9, html code.shiki .siDh9{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#1E754F;--shiki-default-font-style:inherit;--shiki-dark:#4D9375;--shiki-dark-font-style:inherit}html pre.shiki code .snCua, html code.shiki .snCua{--shiki-light:#90A4AE;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s5Kfy, html code.shiki .s5Kfy{--shiki-light:#9C3EDA;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sSC40, html code.shiki .sSC40{--shiki-light:#90A4AE;--shiki-default:#B07D48;--shiki-dark:#BD976A}html pre.shiki code .sVsLi, html code.shiki .sVsLi{--shiki-light:#39ADB5;--shiki-default:#AB5959;--shiki-dark:#CB7676}html pre.shiki code .sljsM, html code.shiki .sljsM{--shiki-light:#6182B8;--shiki-default:#59873A;--shiki-dark:#80A665}html pre.shiki code .sLdnO, html code.shiki .sLdnO{--shiki-light:#E53935;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .sa2tF, html code.shiki .sa2tF{--shiki-light:#E2931D;--shiki-default:#998418;--shiki-dark:#B8A965}html pre.shiki code .sqOPj, html code.shiki .sqOPj{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#B07D48;--shiki-default-font-style:inherit;--shiki-dark:#BD976A;--shiki-dark-font-style:inherit}html pre.shiki code .sIOqK, html code.shiki .sIOqK{--shiki-light:#9C3EDA;--shiki-default:#999999;--shiki-dark:#666666}html pre.shiki code .s7CZa, html code.shiki .s7CZa{--shiki-light:#F76D47;--shiki-default:#2F798A;--shiki-dark:#4C9A91}html pre.shiki code .sftqT, html code.shiki .sftqT{--shiki-light:#90A4AE;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}html pre.shiki code .siWMO, html code.shiki .siWMO{--shiki-light:#6182B8;--shiki-default:#393A34;--shiki-dark:#DBD7CAEE}",{"title":54,"searchDepth":173,"depth":173,"links":8586},[8587,8594,8595,8600,8601,8606],{"id":7634,"depth":173,"text":7635,"children":8588},[8589,8590,8591,8592,8593],{"id":7638,"depth":203,"text":7639},{"id":7734,"depth":203,"text":7735},{"id":7807,"depth":203,"text":7808},{"id":7840,"depth":203,"text":7841},{"id":7899,"depth":203,"text":7900},{"id":7937,"depth":173,"text":7938},{"id":7983,"depth":173,"text":7984,"children":8596},[8597,8598,8599],{"id":7987,"depth":203,"text":7988},{"id":8178,"depth":203,"text":8179},{"id":8391,"depth":203,"text":8392},{"id":8404,"depth":173,"text":8405},{"id":8485,"depth":173,"text":8486,"children":8602},[8603,8604,8605],{"id":8489,"depth":203,"text":8490},{"id":8500,"depth":203,"text":8501},{"id":8539,"depth":203,"text":8540},{"id":6656,"depth":173,"text":6657},"Fix common Township Canada API errors including Forbidden responses, CORS issues, rate limiting, and empty results. Includes debugging tips and integration patterns.","i-lucide-bug",{},"\u002Fguides\u002Fapi-troubleshooting",{"title":7623,"description":8607},"guides\u002Fapi-troubleshooting","YhFOkUOkxRyXExvO-F29ZJyxlbLEw9dMy2FCmSMog7U"]