PageSourceSearch

https://www.idesp.sp.gov.br/mapas/src/components/search/index.tsx

js idesp.sp.gov.br collected 2026-10-04 07:07:38 UTC 34,524 bytes, 376 lines download raw bytes

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.