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