1import { createHotContext as __vite__createHotContext } from "/mapas/@vite/client";import.meta.hot = __vite__createHotContext("/src/components/search/index.tsx");import.meta.env = {"VITE_IDESP_URL":"https://www.idesp.sp.gov.br/","VITE_CONTEXT_URL":"https://www.idesp.sp.gov.br/visualizador","VITE_API_URL_BASE":"https://www.idesp.sp.gov.br/simm-api","VITE_SIMM_URL":"https://www.idesp.sp.gov.br/simm-api","VITE_API_URL":"https://www.idesp.sp.gov.br/simm-api/api","VITE_DOWNLOAD_API_URL":"https://homologa.idesp.sp.gov.br/download/api/download","VITE_PROXY_URL":"https://www.idesp.sp.gov.br/proxy","VITE_CONTEXT_APPLICATION":"ge21-portal","VITE_CONTEXT_LIST_HOME":"/mapas/contextos","VITE_CONTEXT_MAP":"/mapas","VITE_MAPFISH_PRINT_SERVER":"https://www.idesp.sp.gov.br/mapfish","VITE_IDESP":"/mapas/contextos","VITE_KEYCLOAK_URL":"https://keycloak.idesp.sp.gov.br/","VITE_KEYCLOAK_RESOURCE_CLIENT":"idesp-client","VITE_GOOGLE_API_KEY":"AIzaSyDqDB6KOAoK_J9sRycOHwD0DIGjf6va_dw","VITE_CESIUM_KEY":"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJqdGkiOiI0N2RmN2NhMy0wNDIxLTQ1MWMtODg0MC1kMDcyYzVkYWRmNTQiLCJpZCI6Mjg1MDk3LCJpYXQiOjE3NDIyMjI4MTZ9.LZ5Cv1y3k55emC4x1H9tCDNoqcoZgF7BWEp60s6qJys","VITE_CONDEPHAAT_PDF":"75ae5ee5-ec93-4fe3-aa62-1aa24fe31c8d","VITE_KEYCLOAK_REALM":"idesp-realm","BASE_URL":"/mapas","MODE":"development","DEV":true,"PROD":false,"SSR":false};import __vite__cjsImport0_react_jsxDevRuntime from "/mapas/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=4af0aedf"; const Fragment = __vite__cjsImport0_react_jsxDevRuntime["Fragment"]; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"]; 2import RefreshRuntime from "/mapas/@react-refresh"; 3const inWebWorker = typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope; 4let prevRefreshReg; 5let prevRefreshSig; 6if (import.meta.hot && !inWebWorker) { 7 if (!window.__vite_plugin_react_preamble_installed__) { 8 throw new Error("@vitejs/plugin-react can't detect preamble. Something is wrong. See https://github.com/vitejs/vite-plugin-react/pull/11#discussion_r430879201"); 9 } 10 prevRefreshReg = window.$RefreshReg$; 11 prevRefreshSig = window.$RefreshSig$; 12 window.$RefreshReg$ = (type, id) => { 13 RefreshRuntime.register(type, "/app/src/components/search/index.tsx " + id); 14 }; 15 window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; 16} 17var _s = $RefreshSig$(); 18import { GrClose } from "/mapas/node_modules/.vite/deps/react-icons_gr.js?v=1801f566"; 19import { BiSearch } from "/mapas/node_modules/.vite/deps/react-icons_bi.js?v=ef2db948"; 20import { useForm, useFormContext } from "/mapas/node_modules/.vite/deps/react-hook-form.js?v=943feb95"; 21import { cn } from "/mapas/src/utils/cn.ts"; 22import __vite__cjsImport7_react from "/mapas/node_modules/.vite/deps/react.js?v=4af0aedf"; const useCallback = __vite__cjsImport7_react["useCallback"]; 23import { 24 STREET_SEARCH_FOCUS, 25 STREET_SEARCH_FOCUS_HISTORY, 26 useSearch 27} from "/mapas/src/components/search/hook/useSearch/index.tsx"; 28import { MenuGraus } from "/mapas/src/components/Map/dropdown-menu/index.tsx"; 29import { 30 useCoordinateActions, 31 useDecimals, 32 useDegrees, 33 useFocus, 34 useGoogle, 35 useInline, 36 useUtm 37} from "/mapas/src/store/coordinateStore.ts"; 38import { DmsInputs } from "/mapas/src/components/search/dmsInputs.tsx"; 39import { LatLngInputs } from "/mapas/src/components/search/latLngInputs.tsx"; 40import { InlineInput, InlineInputGoogle } from "/mapas/src/components/search/inlineInput.tsx"; 41import { Form } from "/mapas/src/components/ui/form/index.tsx"; 42import { assemblyDms } from "/mapas/src/components/search/hook/useSearch/dms-search.ts"; 43import { assemblyLatLng } from "/mapas/src/components/search/hook/useSearch/latlng-search.ts"; 44import { UTMInputs } from "/mapas/src/components/search/utmInputs.tsx"; 45import { assemblyUTM } from "/mapas/src/components/search/hook/useSearch/utm-search.ts"; 46import { APIProvider } from "/mapas/node_modules/.vite/deps/@vis__gl_react-google-maps.js?v=4822465d"; 47import { FaMapMarkerAlt } from "/mapas/node_modules/.vite/deps/react-icons_fa.js?v=6241f1eb"; 48const googleApiKey = import.meta.env.VITE_GOOGLE_API_KEY; 49const fields = [ 50 "search", 51 "lat", 52 "long", 53 "latDegrees", 54 "latMinutes", 55 "latSeconds", 56 "longDegrees", 57 "longMinutes", 58 "longSeconds", 59 "latDirection", 60 "longDirection" 61]; 62export function Search() { 63 _s(); 64 const parent = useFormContext(); 65 const form = useForm({ 66 defaultValues: { 67 [STREET_SEARCH_FOCUS]: false, 68 latDirection: "N", 69 longDirection: "O" 70 } 71 }); 72 const { setFocus } = useCoordinateActions(); 73 const focus = useFocus(); 74 const decimals = useDecimals(); 75 const degrees = useDegrees(); 76 const utm = useUtm(); 77 const inline = useInline(); 78 const google = useGoogle(); 79 const target = parent.watch(STREET_SEARCH_FOCUS); 80 const handleRemoveMarker = () => { 81 parent.setValue(STREET_SEARCH_FOCUS, null); 82 }; 83 const clear = () => { 84 fields.forEach((field) => form.setValue(field, "")); 85 form.setValue(STREET_SEARCH_FOCUS, false); 86 setFocus(false); 87 }; 88 const search = form.watch("search"); 89 const { data } = useSearch(search); 90 const histories = parent.watch(STREET_SEARCH_FOCUS_HISTORY); 91 const setTarget = useCallback( 92 (target2) => { 93 parent.setValue(STREET_SEARCH_FOCUS, target2); 94 const h = histories || []; 95 if (!h.filter((s) => s.osm_id == target2.osm_id).length) 96 parent.setValue(STREET_SEARCH_FOCUS_HISTORY, [...h, target2]); 97 form.setValue(STREET_SEARCH_FOCUS, false); 98 form.setValue("search", ""); 99 setFocus(false); 100 }, 101 [parent, histories, form, setFocus] 102 ); 103 const handleSearchCoordinates = useCallback(() => { 104 let searchValue = form.getValues("search"); 105 if (degrees) 106 searchValue = assemblyDms({ 107 ...fields.reduce((acc, field) => { 108 acc[field] = form.getValues(field); 109 return acc; 110 }, {}) 111 }); 112 else if (decimals) 113 searchValue = assemblyLatLng( 114 form.getValues("lat"), 115 form.getValues("long") 116 ); 117 else if (utm) { 118 searchValue = assemblyUTM({ 119 x: form.getValues("utm.x"), 120 y: form.getValues("utm.y"), 121 proj: form.getValues("utm.proj") 122 }); 123 } 124 form.setValue("search", searchValue); 125 }, [decimals, degrees, utm, form]); 126 const sideContext = useFormContext().watch("sideBar"); 127 if (sideContext?.withoutLateral) 128 return null; 129 return /* @__PURE__ */ jsxDEV("div", { className: "absolute left-24 top-2 flex flex-col gap-2 rounded-lg max-lg:hidden", children: [
130 /* @__PURE__ */ jsxDEV("div", { className: "flex w-fit rounded-lg bg-background", children: [ 131 /* @__PURE__ */ jsxDEV("div", { className: "flex w-full flex-col gap-2 p-1", children: [ 132 google && /* @__PURE__ */ jsxDEV( 133 APIProvider, 134 { 135 apiKey: googleApiKey, 136 solutionChannel: "GMP_devsite_samples_v3_rgmautocomplete", 137 children: /* @__PURE__ */ jsxDEV(InlineInputGoogle, {}, void 0, false, { 138 fileName: "/app/src/components/search/index.tsx", 139 lineNumber: 135, 140 columnNumber: 15 141 }, this) 142 }, 143 void 0, 144 false, 145 { 146 fileName: "/app/src/components/search/index.tsx", 147 lineNumber: 131, 148 columnNumber: 11 149 }, 150 this 151 ), 152 !google && /* @__PURE__ */ jsxDEV(Form, { ...form, children: [ 153 inline && /* @__PURE__ */ jsxDEV(InlineInput, {}, void 0, false, { 154 fileName: "/app/src/components/search/index.tsx", 155 lineNumber: 140, 156 columnNumber: 26 157 }, this), 158 decimals && /* @__PURE__ */ jsxDEV(LatLngInputs, {}, void 0, false, { 159 fileName: "/app/src/components/search/index.tsx", 160 lineNumber: 141, 161 columnNumber: 28 162 }, this), 163 degrees && /* @__PURE__ */ jsxDEV(DmsInputs, {}, void 0, false, { 164 fileName: "/app/src/components/search/index.tsx", 165 lineNumber: 142, 166 columnNumber: 27 167 }, this), 168 utm && /* @__PURE__ */ jsxDEV(UTMInputs, {}, void 0, false, { 169 fileName: "/app/src/components/search/index.tsx", 170 lineNumber: 143, 171 columnNumber: 23 172 }, this) 173 ] }, void 0, true, { 174 fileName: "/app/src/components/search/index.tsx", 175 lineNumber: 139, 176 columnNumber: 11 177 }, this) 178 ] }, void 0, true, { 179 fileName: "/app/src/components/search/index.tsx", 180 lineNumber: 129, 181 columnNumber: 9 182 }, this),
183 /* @__PURE__ */ jsxDEV("div", { className: "flex items-start justify-center gap-4 p-2", children: [ 184 focus && /* @__PURE__ */ jsxDEV("div", { className: "rounded-md bg-Secondary-25 p-2 hover:bg-Secondary-50", children: [ 185 /* @__PURE__ */ jsxDEV(GrClose, { className: "cursor-pointer", onClick: clear }, void 0, false, { 186 fileName: "/app/src/components/search/index.tsx", 187 lineNumber: 150, 188 columnNumber: 15 189 }, this), 190 /* @__PURE__ */ jsxDEV("span", { className: "h-[70%] w-[1px] bg-Neutral-200" }, void 0, false, { 191 fileName: "/app/src/components/search/index.tsx", 192 lineNumber: 151, 193 columnNumber: 15 194 }, this) 195 ] }, void 0, true, { 196 fileName: "/app/src/components/search/index.tsx", 197 lineNumber: 149, 198 columnNumber: 11 199 }, this), 200 /* @__PURE__ */ jsxDEV("div", { className: "flex h-8 gap-2", children: [ 201 /* @__PURE__ */ jsxDEV(MenuGraus, {}, void 0, false, { 202 fileName: "/app/src/components/search/index.tsx", 203 lineNumber: 156, 204 columnNumber: 13 205 }, this),
206 /* @__PURE__ */ jsxDEV( 207 "div", 208 { 209 onClick: handleSearchCoordinates, 210 className: "cursor-pointer rounded-md bg-slate-600 p-2 hover:bg-slate-700", 211 children: /* @__PURE__ */ jsxDEV(BiSearch, { className: "text-white" }, void 0, false, { 212 fileName: "/app/src/components/search/index.tsx", 213 lineNumber: 161, 214 columnNumber: 15 215 }, this) 216 }, 217 void 0, 218 false, 219 { 220 fileName: "/app/src/components/search/index.tsx", 221 lineNumber: 157, 222 columnNumber: 13 223 }, 224 this 225 ), 226 target && /* @__PURE__ */ jsxDEV("div", { className: "cursor-pointer rounded-md p-2 hover:bg-slate-100", children: /* @__PURE__ */ jsxDEV("button", { onClick: handleRemoveMarker, title: "Limpar marcador", children: /* @__PURE__ */ jsxDEV(FaMapMarkerAlt, { size: "" }, void 0, false, { 227 fileName: "/app/src/components/search/index.tsx", 228 lineNumber: 166, 229 columnNumber: 19 230 }, this) }, void 0, false, { 231 fileName: "/app/src/components/search/index.tsx", 232 lineNumber: 165, 233 columnNumber: 17 234 }, this) }, void 0, false, { 235 fileName: "/app/src/components/search/index.tsx", 236 lineNumber: 164, 237 columnNumber: 13 238 }, this) 239 ] }, void 0, true, { 240 fileName: "/app/src/components/search/index.tsx", 241 lineNumber: 155, 242 columnNumber: 11 243 }, this) 244 ] }, void 0, true, { 245 fileName: "/app/src/components/search/index.tsx", 246 lineNumber: 147, 247 columnNumber: 9 248 }, this) 249 ] }, void 0, true, { 250 fileName: "/app/src/components/search/index.tsx", 251 lineNumber: 128, 252 columnNumber: 7 253 }, this), 254 (data?.length || histories?.length) && /* @__PURE__ */ jsxDEV("div", { className: cn("flex", search || focus ? "" : "hidden"), children: /* @__PURE__ */ jsxDEV("div", { className: "w-full rounded-lg bg-background p-4", children: [
255 !!data?.length && /* @__PURE__ */ jsxDEV("div", { className: "h-52 w-full overflow-auto", children: data?.map( 256 (s) => /* @__PURE__ */ jsxDEV(Fragment, { children: [ 257 /* @__PURE__ */ jsxDEV( 258 "p", 259 { 260 className: "cursor-pointer rounded-md p-2 hover:bg-Primary-50", 261 onClick: () => setTarget(s), 262 children: s.display_name 263 }, 264 void 0, 265 false, 266 { 267 fileName: "/app/src/components/search/index.tsx", 268 lineNumber: 181, 269 columnNumber: 21 270 }, 271 this 272 ), 273 /* @__PURE__ */ jsxDEV("hr", { className: "my-2" }, void 0, false, { 274 fileName: "/app/src/components/search/index.tsx", 275 lineNumber: 187, 276 columnNumber: 21 277 }, this) 278 ] }, void 0, true, { 279 fileName: "/app/src/components/search/index.tsx", 280 lineNumber: 180, 281 columnNumber: 13 282 }, this) 283 ) }, void 0, false, { 284 fileName: "/app/src/components/search/index.tsx", 285 lineNumber: 178, 286 columnNumber: 11 287 }, this),
288 /* @__PURE__ */ jsxDEV("hr", {}, void 0, false, { 289 fileName: "/app/src/components/search/index.tsx", 290 lineNumber: 193, 291 columnNumber: 13 292 }, this), 293 !!histories?.length && /* @__PURE__ */ jsxDEV("div", { className: "w-full", children: [ 294 /* @__PURE__ */ jsxDEV("p", { className: "my-2 font-bold text-Primary-600", children: "Ultima pesquisa:" }, void 0, false, { 295 fileName: "/app/src/components/search/index.tsx", 296 lineNumber: 196, 297 columnNumber: 17 298 }, this), 299 /* @__PURE__ */ jsxDEV("div", { className: "max-h-52 overflow-auto", children: histories?.map( 300 (s) => /* @__PURE__ */ jsxDEV(Fragment, { children: [ 301 /* @__PURE__ */ jsxDEV( 302 "p", 303 { 304 className: "cursor-pointer rounded-md p-2 text-Primary-600 hover:bg-Primary-50", 305 onClick: () => setTarget(s), 306 children: [ 307 s.display_name.slice(0, 40), 308 s.display_name.length > 40 ? "..." : "" 309 ] 310 }, 311 `history-${s.display_name}`, 312 true, 313 { 314 fileName: "/app/src/components/search/index.tsx", 315 lineNumber: 202, 316 columnNumber: 23 317 }, 318 this 319 ),
320 /* @__PURE__ */ jsxDEV("hr", { className: "my-2" }, void 0, false, { 321 fileName: "/app/src/components/search/index.tsx", 322 lineNumber: 210, 323 columnNumber: 23 324 }, this) 325 ] }, void 0, true, { 326 fileName: "/app/src/components/search/index.tsx", 327 lineNumber: 201, 328 columnNumber: 15 329 }, this) 330 ) }, void 0, false, { 331 fileName: "/app/src/components/search/index.tsx", 332 lineNumber: 199, 333 columnNumber: 17 334 }, this) 335 ] }, void 0, true, { 336 fileName: "/app/src/components/search/index.tsx", 337 lineNumber: 195, 338 columnNumber: 11 339 }, this) 340 ] }, void 0, true, { 341 fileName: "/app/src/components/search/index.tsx", 342 lineNumber: 176, 343 columnNumber: 11 344 }, this) }, void 0, false, { 345 fileName: "/app/src/components/search/index.tsx", 346 lineNumber: 175, 347 columnNumber: 7 348 }, this) 349 ] }, void 0, true, { 350 fileName: "/app/src/components/search/index.tsx", 351 lineNumber: 127, 352 columnNumber: 5 353 }, this); 354} 355_s(Search, "X3VoN/bu03fm7O33/xC7t6xkcOg=", false, function() { 356 return [useFormContext, useForm, useCoordinateActions, useFocus, useDecimals, useDegrees, useUtm, useInline, useGoogle, useSearch, useFormContext]; 357}); 358_c = Search; 359var _c; 360$RefreshReg$(_c, "Search"); 361if (import.meta.hot && !inWebWorker) { 362 window.$RefreshReg$ = prevRefreshReg; 363 window.$RefreshSig$ = prevRefreshSig; 364 RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { 365 RefreshRuntime.registerExportsForReactRefresh("/app/src/components/search/index.tsx", currentExports); 366 import.meta.hot.accept((nextExports) => { 367 if (!nextExports) 368 return; 369 const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate(currentExports, nextExports); 370 if (invalidateMessage) 371 import.meta.hot.invalidate(invalidateMessage); 372 }); 373 }); 374} 375 376//# sourceMappingURL=data:application/json;base64,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0JBQUMsT0FBRSxXQUFVLG1DQUFpQyxnQ0FBOUM7QUFBQTtBQUFBO0FBQUE7QUFBQSxlQUVBO0FBQUEsUUFDQSx1QkFBQyxTQUFJLFdBQVUsMEJBQ1pOLHFCQUFXaUI7QUFBQUEsVUFBSSxDQUFDYixNQUNmLG1DQUNFO0FBQUE7QUFBQSxjQUFDO0FBQUE7QUFBQSxnQkFFQyxXQUFVO0FBQUEsZ0JBQ1YsU0FBUyxNQUFNSCxVQUFVRyxDQUFDO0FBQUEsZ0JBRXpCQTtBQUFBQSxvQkFBRWMsYUFBYUMsTUFBTSxHQUFHLEVBQUU7QUFBQSxrQkFDMUJmLEVBQUVjLGFBQWFaLFNBQVMsS0FBSyxRQUFRO0FBQUE7QUFBQTtBQUFBLGNBTGhDLFdBQVVGLEVBQUVjLFlBQWE7QUFBQSxjQURqQztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFlBT0E7QUFBQSxZQUNBLHVCQUFDLFFBQUcsV0FBVSxVQUFkO0FBQUE7QUFBQTtBQUFBO0FBQUEsbUJBQW9CO0FBQUEsZUFUdEI7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFVQTtBQUFBLFFBQ0QsS0FiSDtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBY0E7QUFBQSxXQWxCRjtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBbUJBO0FBQUEsU0F0Q0o7QUFBQTtBQUFBO0FBQUE7QUFBQSxXQXdDQSxLQXpDRjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBMENBO0FBQUEsT0ExRko7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQTRGQTtBQUVKO0FBQUN4QyxHQTNLZUQsUUFBTTtBQUFBLFVBQ0w5QixnQkFDRkQsU0FPUVEsc0JBQ1BHLFVBRUdGLGFBQ0RDLFlBQ0
376pJLFFBQ0dELFdBQ0FELFdBZUVOLFdBMENHTCxjQUFjO0FBQUE7QUFBQXlFLEtBekVwQjNDO0FBQU0sSUFBQTJDO0FBQUFDLGFBQUFELElBQUEiLCJuYW1lcyI6WyJHckNsb3NlIiwiQmlTZWFyY2giLCJ1c2VGb3JtIiwidXNlRm9ybUNvbnRleHQiLCJjbiIsInVzZUNhbGxiYWNrIiwiU1RSRUVUX1NFQVJDSF9GT0NVUyIsIlNUUkVFVF9TRUFSQ0hfRk9DVVNfSElTVE9SWSIsInVzZVNlYXJjaCIsIk1lbnVHcmF1cyIsInVzZUNvb3JkaW5hdGVBY3Rpb25zIiwidXNlRGVjaW1hbHMiLCJ1c2VEZWdyZWVzIiwidXNlRm9jdXMiLCJ1c2VHb29nbGUiLCJ1c2VJbmxpbmUiLCJ1c2VVdG0iLCJEbXNJbnB1dHMiLCJMYXRMbmdJbnB1dHMiLCJJbmxpbmVJbnB1dCIsIklubGluZUlucHV0R29vZ2xlIiwiRm9ybSIsImFzc2VtYmx5RG1zIiwiYXNzZW1ibHlMYXRMbmciLCJVVE1JbnB1dHMiLCJhc3NlbWJseVVUTSIsIkFQSVByb3ZpZGVyIiwiRmFNYXBNYXJrZXJBbHQiLCJnb29nbGVBcGlLZXkiLCJpbXBvcnQiLCJlbnYiLCJWSVRFX0dPT0dMRV9BUElfS0VZIiwiZmllbGRzIiwiU2VhcmNoIiwiX3MiLCJwYXJlbnQiLCJmb3JtIiwiZGVmYXVsdFZhbHVlcyIsImxhdERpcmVjdGlvbiIsImxvbmdEaXJlY3Rpb24iLCJzZXRGb2N1cyIsImZvY3VzIiwiZGVjaW1hbHMiLCJkZWdyZWVzIiwidXRtIiwiaW5saW5lIiwiZ29vZ2xlIiwidGFyZ2V0Iiwid2F0Y2giLCJoYW5kbGVSZW1vdmVNYXJrZXIiLCJzZXRWYWx1ZSIsImNsZWFyIiwiZm9yRWFjaCIsImZpZWxkIiwic2VhcmNoIiwiZGF0YSIsImhpc3RvcmllcyIsInNldFRhcmdldCIsImgiLCJmaWx0ZXIiLCJzIiwib3NtX2lkIiwibGVuZ3RoIiwiaGFuZGxlU2VhcmNoQ29vcmRpbmF0ZXMiLCJzZWFyY2hWYWx1ZSIsImdldFZhbHVlcyIsInJlZHVjZSIsImFjYyIsIngiLCJ5IiwicHJvaiIsInNpZGVDb250ZXh0Iiwid2l0aG91dExhdGVyYWwiLCJtYXAiLCJkaXNwbGF5X25hbWUiLCJzbGljZSIsIl9jIiwiJFJlZnJlc2hSZWckIl0sInNvdXJjZXMiOlsiaW5kZXgudHN4Il0sInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlIEB0eXBlc2NyaXB0LWVzbGludC9uby1leHBsaWNpdC1hbnkgKi9cbmltcG9ydCB7IEdyQ2xvc2UgfSBmcm9tIFwicmVhY3QtaWNvbnMvZ3JcIjtcbmltcG9ydCB7IEJpU2VhcmNoIH0gZnJvbSBcInJlYW
376N0LWljb25zL2JpXCI7XG5pbXBvcnQgeyB1c2VGb3JtLCB1c2VGb3JtQ29udGV4dCB9IGZyb20gXCJyZWFjdC1ob29rLWZvcm1cIjtcbmltcG9ydCB7IGNuIH0gZnJvbSBcIi4uLy4uL3V0aWxzL2NuXCI7XG5pbXBvcnQgeyB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHtcbiAgU1RSRUVUX1NFQVJDSF9GT0NVUyxcbiAgU1RSRUVUX1NFQVJDSF9GT0NVU19ISVNUT1JZLFxuICB1c2VTZWFyY2gsXG59IGZyb20gXCIuL2hvb2svdXNlU2VhcmNoXCI7XG5pbXBvcnQgeyBNZW51R3JhdXMgfSBmcm9tIFwiLi4vTWFwL2Ryb3Bkb3duLW1lbnVcIjtcbmltcG9ydCB7XG4gIHVzZUNvb3JkaW5hdGVBY3Rpb25zLFxuICB1c2VEZWNpbWFscyxcbiAgdXNlRGVncmVlcyxcbiAgdXNlRm9jdXMsXG4gIHVzZUdvb2dsZSxcbiAgdXNlSW5saW5lLFxuICB1c2VVdG0sXG59IGZyb20gXCIuLi8uLi9zdG9yZS9jb29yZGluYXRlU3RvcmVcIjtcblxuaW1wb3J0IHsgRG1zSW5wdXRzIH0gZnJvbSBcIi4vZG1zSW5wdXRzXCI7XG5pbXBvcnQgeyBMYXRMbmdJbnB1dHMgfSBmcm9tIFwiLi9sYXRMbmdJbnB1dHNcIjtcbmltcG9ydCB7IElubGluZUlucHV0LCBJbmxpbmVJbnB1dEdvb2dsZSB9IGZyb20gXCIuL2lubGluZUlucHV0XCI7XG5pbXBvcnQgeyBGb3JtIH0gZnJvbSBcIi4uL3VpL2Zvcm1cIjtcbmltcG9ydCB7IGFzc2VtYmx5RG1zIH0gZnJvbSBcIi4vaG9vay91c2VTZWFyY2gvZG1zLXNlYXJjaFwiO1xuaW1wb3J0IHsgYXNzZW1ibHlMYXRMbmcgfSBmcm9tIFwiLi9ob29rL3VzZVNlYXJjaC9sYXRsbmctc2VhcmNoXCI7XG5pbXBvcnQgeyBVVE1JbnB1dHMgfSBmcm9tIFwiLi91dG1JbnB1dHNcIjtcbmltcG9ydCB7IGFzc2VtYmx5VVRNIH0gZnJvbSBcIi4vaG9vay91c2VTZWFyY2gvdXRtLXNlYXJjaFwiO1xuaW1wb3J0IHsgQVBJUHJvdmlkZXIgfSBmcm9tIFwiQHZpcy5nbC9yZWFjdC1nb29nbGUtbWFwc1wiO1xuaW1wb3J0IHsgRmFNYXBNYXJrZXJBbHQgfSBmcm9tIFwicmVhY3QtaWNvbnMvZmFcIjtcblxuY29uc3QgZ29vZ2xlQXBpS2V5ID0gaW1wb3J0Lm1ldGEuZW52LlZJVEVfR09PR0xFX0FQSV9LRVkgYXMgc3RyaW5nO1xuXG5jb25zdCBmaWVsZHMgPSBbXG4gIFwic2VhcmNoXCIsXG4gIFwibGF0XCIsXG4gIFwibG9uZ1wiLFxuICBcImxhdERlZ3JlZXNcIixcbiAgXCJsYXRNaW51dGVzXCIsXG4gIFwibGF0U2Vjb25kc1wiLFxuICBcImxvbmdEZWdyZWVzXCIsXG4gIFwibG9uZ01pbnV0ZXNcIixcbiAgXCJsb25nU2Vjb25kc1wiLFxuICBcImxhdERpcmVjdGlvblwiLFxuICBcImxvbmdEaXJlY3Rpb25cIixcbl07XG5cbmV4cG9ydCBmdW5jdGlvbiBTZWFyY2goKSB7XG4gIGNvbnN0IHBhcmVudCA9IHVzZUZvcm1Db250ZXh0KCk7XG4gIGNvbnN0IGZvcm0gPSB1c2VGb3JtPFJlY29yZDxzdHJpbmcsIGFueT4+KHtcbiAgICBkZWZhdWx0VmFsdWVzOiB7XG4gICAgICBbU1RSRUVUX1NFQVJDSF9GT0NVU106IGZhbHNlLFxuICAgICAgbGF0RGlyZWN0aW9uOiBcIk5cIixcbiAgICAgIGxvbmdEaXJlY3Rpb246IFwiT1wiLFxuICAgIH0sXG4gIH0pO1xuICBjb25zdCB7IHNldEZvY3VzIH0gPSB1c2VDb29yZGluYXRlQWN0aW9ucygpO1xuICBjb25zdCBmb2N1cyA9IHVzZUZvY3VzKCk7XG5cbiAgY29uc3QgZGVjaW1hbHMgPSB1c2VEZWNpbWFscygpO1xuICBjb25zdCBkZWdyZWVzID0gdXNlRGVncmVlcygpO1xuICBjb25zdCB1dG0gPSB1c2VVdG0oKTtcbiAgY29uc3QgaW5saW5lID0gdXNlSW5saW5lKCk7XG4gIGNvbnN0IGdvb2dsZSA9IHVzZUdvb2dsZSgpO1xuICBjb25zdCB0YXJnZXQgPSBwYXJlbnQud2F0Y2goU1RSRUVUX1NFQVJDSF9GT0NVUyk7XG5cbiAgY29uc3QgaGFuZGxlUmVtb3ZlTWFya2VyID0gKCkgPT4ge1xuICAgIHBhcmVudC5zZXRWYWx1ZShTVFJFRVRfU0VBUkNIX0ZPQ1VTLCBudWxsKTtcbiAgfTtcblxuICBjb25zdCBjbGVhciA9ICgpID0+IHtcbiAgICBmaWVsZHMuZm9yRWFjaCgoZmllbGQpID0+IGZvcm0uc2V0VmFsdWUoZmllbGQsIFwiXCIpKTtcblxuICAgIGZvcm0uc2V0VmFsdWUoU1RSRUVUX1NFQVJDSF9GT0NVUywgZmFsc2UpO1xuICAgIHNldEZvY3VzKGZhbHNlKTtcbiAgfTtcbiAgY29uc3Qgc2VhcmNoID0gZm9ybS53YXRjaChcInNlYXJjaFwiKTtcblxuICBjb25zdCB7IGRhdGEgfSA9IHVzZVNlYXJjaChzZWFyY2gpO1xuXG4gIGNvbnN0IGhpc3RvcmllcyA9IHBhcmVudC53YXRjaChTVFJFRVRfU0VBUkNIX0ZPQ1VTX0hJU1RPUlkpO1xuICBjb25zdCBzZXRUYXJnZXQgPSB1c2VDYWxsYmFjayhcbiAgICAodGFyZ2V0OiBhbnkpID0+IHtcbiAgICAgIHBhcmVudC5zZXRWYWx1ZShTVFJFRVRfU0VBUkNIX0ZPQ1VTLCB0YXJnZXQpO1xuICAgICAgY29uc3QgaCA9IGhpc3RvcmllcyB8fCBbXTtcblxuICAgICAgaWYgKCFoLmZpbHRlcigoczogYW55KSA9PiBzLm9zbV9pZCA9PSB0YXJnZXQub3NtX2lkKS5sZW5ndGgpXG4gICAgICAgIHBhcmVudC5zZXRWYWx1ZShTVFJFRVRfU0VBUkNIX0ZPQ1VTX0hJU1RPUlksIFsuLi5oLCB0YXJnZXRdKTtcblxuICAgICAgZm9ybS5zZXRWYWx1ZShTVFJFRVRfU0VBUkNIX0ZPQ1VTLCBmYWxzZSk7XG4gICAgICBmb3JtLnNldFZhbHVlKFwic2VhcmNoXCIsIFwiXCIpO1xuICAgICAgc2V0Rm9jdXMoZmFsc2UpO1xuICAgIH0sXG4gICAgW3BhcmVudCwgaGlzdG9yaWVzLCBmb3JtLCBzZXRGb2N1c10sXG4gICk7XG5cbiAgY29uc3QgaGFuZGxlU2VhcmNoQ29vcmRpbmF0ZXMgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgbGV0IHNlYXJjaFZhbHVlID0gZm9ybS5nZXRWYWx1ZXMoXCJzZWFyY2hcIik7XG4gICAgaWYgKGRlZ3JlZXMpXG4gICAgICBzZWFyY2hWYWx1ZSA9IGFzc2VtYmx5RG1zKHtcbiAgICAgICAgLi4uZmllbGRzLnJlZHVjZSgoYWNjLCBmaWVsZCkgPT4ge1xuICAgICAgICAgIGFjY1tmaWVsZF0gPSBmb3JtLmdldFZhbHVlcyhmaWVsZCk7XG4gICAgICAgICAgcmV0dXJuIGFjYztcbiAgICAgICAgfSwge30gYXMgYW55KSxcbiAgICAgIH0gYXMgYW55KTtcbiAgICBlbHNlIGlmIChkZWNpbWFscylcbiAgICAgIHNlYXJjaFZhbHVlID0gYXNzZW1ibHlMYXRMbmcoXG4gICAgICAgIGZvcm0uZ2V0VmFsdWVzKFwibGF0XCIpLFxuICAgICAgICBmb3JtLmdldFZhbHVlcyhcImxvbmdcIiksXG4gICAgICApO1xuICAgIGVsc2UgaWYgKHV0bSkge1xuICAgICAgc2VhcmNoVmFsdWUgPSBhc3NlbWJseVVUTSh7XG4gICAgICAgI
376Hg6IGZvcm0uZ2V0VmFsdWVzKFwidXRtLnhcIiksXG4gICAgICAgIHk6IGZvcm0uZ2V0VmFsdWVzKFwidXRtLnlcIiksXG4gICAgICAgIHByb2o6IGZvcm0uZ2V0VmFsdWVzKFwidXRtLnByb2pcIiksXG4gICAgICB9KTtcbiAgICB9XG4gICAgZm9ybS5zZXRWYWx1ZShcInNlYXJjaFwiLCBzZWFyY2hWYWx1ZSk7XG4gIH0sIFtkZWNpbWFscywgZGVncmVlcywgdXRtLCBmb3JtXSk7XG5cbiAgY29uc3Qgc2lkZUNvbnRleHQgPSB1c2VGb3JtQ29udGV4dCgpLndhdGNoKFwic2lkZUJhclwiKTtcbiAgaWYgKHNpZGVDb250ZXh0Py53aXRob3V0TGF0ZXJhbCkgcmV0dXJuIG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImFic29sdXRlIGxlZnQtMjQgdG9wLTIgZmxleCAgZmxleC1jb2wgZ2FwLTIgcm91bmRlZC1sZyBtYXgtbGc6aGlkZGVuXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggdy1maXQgcm91bmRlZC1sZyBiZy1iYWNrZ3JvdW5kXCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCB3LWZ1bGwgZmxleC1jb2wgZ2FwLTIgcC0xXCI+XG4gICAgICAgICAge2dvb2dsZSAmJiAoXG4gICAgICAgICAgICA8QVBJUHJvdmlkZXJcbiAgICAgICAgICAgICAgYXBpS2V5PXtnb29nbGVBcGlLZXl9XG4gICAgICAgICAgICAgIHNvbHV0aW9uQ2hhbm5lbD1cIkdNUF9kZXZzaXRlX3NhbXBsZXNfdjNfcmdtYXV0b2NvbXBsZXRlXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPElubGluZUlucHV0R29vZ2xlIC8+XG4gICAgICAgICAgICA8L0FQSVByb3ZpZGVyPlxuICAgICAgICAgICl9XG4gICAgICAgICAgeyFnb29nbGUgJiYgKFxuICAgICAgICAgICAgPEZvcm0gey4uLmZvcm19PlxuICAgICAgICAgICAgICB7aW5saW5lICYmIDxJbmxpbmVJbnB1dCAvPn1cbiAgICAgICAgICAgICAge2RlY2ltYWxzICYmIDxMYXRMbmdJbnB1dHMgLz59XG4gICAgICAgICAgICAgIHtkZWdyZWVzICYmIDxEbXNJbnB1dHMgLz59XG4gICAgICAgICAgICAgIHt1dG0gJiYgPFVUTUlucHV0cyAvPn1cbiAgICAgICAgICAgIDwvRm9ybT5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLXN0YXJ0IGp1c3RpZnktY2VudGVyIGdhcC00IHAtMlwiPlxuICAgICAgICAgIHtmb2N1cyAmJiAoXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJvdW5kZWQtbWQgYmctU2Vjb25kYXJ5LTI1IHAtMiBob3ZlcjpiZy1TZWNvbmRhcnktNTBcIj5cbiAgICAgICAgICAgICAgPEdyQ2xvc2UgY2xhc3NOYW1lPVwiY3Vyc29yLXBvaW50ZXJcIiBvbkNsaWNrPXtjbGVhcn0gLz5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaC1bNzAlXSB3LVsxcHhdIGJnLU5ldXRyYWwtMjAwXCIgLz5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICl9XG5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaC04IGdhcC0yXCI+XG4gICAgICAgICAgICA8TWVudUdyYXVzIC8+XG4gICAgICAgICAgICA8ZGl2XG4gICAgICAgICAgICAgIG9uQ2xpY2s9e2hhbmRsZVNlYXJjaENvb3JkaW5hdGVzfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJjdXJzb3ItcG9pbnRlciByb3VuZGVkLW1kIGJnLXNsYXRlLTYwMCBwLTIgaG92ZXI6Ymctc2xhdGUtNzAwXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPEJpU2VhcmNoIGNsYXNzTmFtZT1cInRleHQtd2hpdGVcIiAvPlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICB7dGFyZ2V0ICYmIChcbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjdXJzb3ItcG9pbnRlciByb3VuZGVkLW1kIHAtMiBob3ZlcjpiZy1zbGF0ZS0xMDBcIj5cbiAgICAgICAgICAgICAgICA8YnV0dG9uIG9uQ2xpY2s9e2hhbmRsZVJlbW92ZU1hcmtlcn0gdGl0bGU9XCJMaW1wYXIgbWFyY2Fkb3JcIj5cbiAgICAgICAgICAgICAgICAgIDxGYU1hcE1hcmtlckFsdCBzaXplPXtcIlwifSAvPlxuICAgICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsoZGF0YT8ubGVuZ3RoIHx8IGhpc3Rvcmllcz8ubGVuZ3RoKSAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPXtjbihcImZsZXhcIiwgc2VhcmNoIHx8IGZvY3VzID8gXCJcIiA6IFwiaGlkZGVuXCIpfT5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCByb3VuZGVkLWxnIGJnLWJhY2tncm91bmQgcC00XCI+XG4gICAgICAgICAgICB7ISFkYXRhPy5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtNTIgdy1mdWxsIG92ZXJmbG93LWF1dG9cIj5cbiAgICAgICAgICAgICAgICB7ZGF0YT8ubWFwKChzOiBhbnkpID0+IChcbiAgICAgICAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiY3Vyc29yLXBvaW50ZXIgcm91bmRlZC1tZCBwLTIgaG92ZXI6YmctUHJpbWFyeS01MFwiXG4gICAgICAgICAgICAgICAgICAgICAgb25DbGljaz17KCkgPT4gc2V0VGFyZ2V0KHMpfVxuICAgICAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgICAge3MuZGlzcGxheV9uYW1lfVxuICAgICAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgICAgIDxociBjbGFzc05hbWU9XCJteS0yXCIgLz5cbiAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgIDxociAvPlxuICAgICAgICAgICAgeyEhaGlzdG9yaWVzPy5sZW5ndGggJiYgKFxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbFwiPlxuICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cIm15LTIgZm9udC1ib2xkIHRleHQtUHJpbWFyeS02MDBcIj5cbiAgICAgICAgICAgICAgICAgIFVsdGltYSBwZXNxdWlzYTpcbiAgICAgICAgICAgICAgICA8L3A+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtaC01MiBvdmVyZmxvdy1hdXRvXCI+XG4gICAgICAgICAgICAgICAgICB7aGlzdG9yaWVzPy5tYXAoKHM6IGFueSkgPT4gKFxuICAgICAgICAgICAgICAgICAgICA8PlxuICAgICAgICAgICAgICAgICAgICAgIDxwXG4gICAgICAgICAgICAgICAgICAgICAgICBrZXk9e2BoaXN0b3J5LSR7cy5kaXNwbGF5X25hbWV9YH1cbiAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImN1cnNvci1wb2ludGVyIHJvdW5kZWQtbWQgcC0yIHRleHQtUHJpbWFyeS02MDAgaG92ZXI6YmctUHJpbWFyeS01MFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBvbkNsaWNrPXsoKSA9PiBzZXRUYXJnZXQocyl9XG4gICAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge3MuZGlzcGxheV9uYW1lLnNsaWNlKDAsIDQwKX1cbiAgICAgICAgICAgICAgICAgICAgICAgI
376HtzLmRpc3BsYXlfbmFtZS5sZW5ndGggPiA0MCA/IFwiLi4uXCIgOiBcIlwifVxuICAgICAgICAgICAgICAgICAgICAgIDwvcD5cbiAgICAgICAgICAgICAgICAgICAgICA8aHIgY2xhc3NOYW1lPVwibXktMlwiIC8+XG4gICAgICAgICAgICAgICAgICAgIDwvPlxuICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sImZpbGUiOiIvYXBwL3NyYy9jb21wb25lbnRzL3NlYXJjaC9pbmRleC50c3gifQ==
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.