PageSourceSearch

https://search.sharesamadhan.com/src/features/admin/pages/Products.tsx

js sharesamadhan.com collected 2026-10-04 05:55:37 UTC 18,986 bytes, 76 lines download raw bytes

1import __vite__cjsImport0_react_jsxRuntime from "/node_modules/.vite/deps/react_jsx-runtime.js?v=f660f992"; const jsx = __vite__cjsImport0_react_jsxRuntime["jsx"]; const jsxs = __vite__cjsImport0_react_jsxRuntime["jsxs"];
2import __vite__cjsImport1_react from "/node_modules/.vite/deps/react.js?v=f660f992"; const React = __vite__cjsImport1_react.__esModule ? __vite__cjsImport1_react.default : __vite__cjsImport1_react; const useState = __vite__cjsImport1_react["useState"]; const useEffect = __vite__cjsImport1_react["useEffect"];
3import { Card } from "/src/features/admin/components/Card.tsx";
4import { Package, Search } from "/node_modules/.vite/deps/lucide-react.js?v=f660f992";
5import { adminApiClient } from "/src/api/clients/adminApiClient.ts";
6export const Products = () => {
7  const [products, setProducts] = useState([]);
8  const [loading, setLoading] = useState(true);
9  useEffect(() => {
10    const fetchProducts = async () => {
11      try {
12        const response = await adminApiClient.get("/admin/subscription/products");
13        setProducts(response.data);
14      } catch (error) {
15        console.error("Error fetching products:", error);
16      } finally {
17        setLoading(false);
18      }
19    };
20    fetchProducts();
21  }, []);
22  return /* @__PURE__ */ jsxs("div", { className: "space-y-8", children: [
23    /* @__PURE__ */ jsx("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between gap-4", children: /* @__PURE__ */ jsxs("div", { children: [
24      /* @__PURE__ */ jsx("h1", { className: "text-2xl font-bold text-slate-900 dark:text-white", children: "Products" }),
25      /* @__PURE__ */ jsx("p", { className: "text-slate-500 dark:text-slate-400 mt-1", children: "Manage subscription products and offerings." })
26    ] }) }),
27    /* @__PURE__ */ jsxs(Card, { className: "p-0 overflow-visible", children: [
28      /* @__PURE__ */ jsx("div", { className: "p-4 border-b border-slate-200 dark:border-slate-800 flex flex-wrap gap-4 items-center justify-between bg-slate-50/30 dark:bg-slate-900/30", children: /* @__PURE__ */ jsxs("div", { className: "relative max-w-sm flex-1", children: [
29        /* @__PURE__ */ jsx(Search, { className: "absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-slate-400" }),
30        /* @__PURE__ */ jsx(
31          "input",
32          {
33            type: "text",
34            placeholder: "Search products...",
35            className: "w-full bg-white dark:bg-slate-800 border border-slate-200 dark:border-slate-700 rounded-xl py-2 pl-10 pr-4 text-sm focus:outline-none focus:ring-2 focus:ring-indigo-500/10 transition-shadow"
36          }
37        )
38      ] }) }),
39      /* @__PURE__ */ jsx("div", { className: "overflow-x-auto", children: /* @__PURE__ */ jsxs("table", { className: "w-full", children: [
40        /* @__PURE__ */ jsx("thead", { children: /* @__PURE__ */ jsxs("tr", { className: "bg-slate-50/50 dark:bg-slate-800/50 text-left border-b border-slate-200 dark:border-slate-800", children: [
41          /* @__PURE__ */ jsx("th", { className: "px-6 py-4 text-xs font-semibold text-slate-500 uppercase tracking-wider", children: "Product Info" }),
42          /* @__PURE__ */ jsx("th", { className: "px-6 py-4 text-xs font-semibold text-slate-500 uppercase tracking-wider", children: "Status" }),
43          /* @__PURE__ */ jsx("th", { className: "px-6 py-4 text-xs font-semibold text-slate-500 uppercase tracking-wider", children: "Plans/Addons" }),
44          /* @__PURE__ */ jsx("th", { className: "px-6 py-4 text-xs font-semibold text-slate-500 uppercase tracking-wider", children: "Created" })
45        ] }) }),
46        /* @__PURE__ */ jsx("tbody", { className: "divide-y divide-slate-100 dark:divide-slate-800/50", children: loading ? /* @__P
46URE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: 4, className: "px-6 py-8 text-center text-slate-500", children: "Loading products..." }) }) : products.length === 0 ? /* @__PURE__ */ jsx("tr", { children: /* @__PURE__ */ jsx("td", { colSpan: 4, className: "px-6 py-8 text-center text-slate-500", children: "No products found." }) }) : products.map((product) => /* @__PURE__ */ jsxs("tr", { className: "hover:bg-slate-50/50 dark:hover:bg-slate-800/30 transition-colors", children: [
47          /* @__PURE__ */ jsx("td", { className: "px-6 py-4", children: /* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3", children: [
48            /* @__PURE__ */ jsx("div", { className: "w-10 h-10 rounded-xl bg-indigo-50 dark:bg-indigo-500/10 flex items-center justify-center text-indigo-600 dark:text-indigo-400", children: /* @__PURE__ */ jsx(Package, { size: 20 }) }),
49            /* @__PURE__ */ jsxs("div", { children: [
50              /* @__PURE__ */ jsx("p", { className: "text-sm font-semibold text-slate-900 dark:text-white", children: product.name }),
51              /* @__PURE__ */ jsx("p", { className: "text-xs text-slate-500", children: product.description || "No description" })
52            ] })
53          ] }) }),
54          /* @__PURE__ */ jsx("td", { className: "px-6 py-4", children: /* @__PURE__ */ jsx("span", { className: `px-2 py-1 rounded-full text-[10px] font-bold ${product.status === "active" ? "bg-emerald-50 text-emerald-600 dark:bg-emerald-500/10 dark:text-emerald-400" : "bg-slate-100 text-slate-500 dark:bg-slate-800 dark:text-slate-400"}`, children: product.status.charAt(0).toUpperCase() + product.status.slice(1) }) }),
55          /* @__PURE__ */ jsx("td", { className: "px-6 py-4", children: /* @__PURE__ */ jsxs("div", { className: "text-xs text-slate-500 space-y-1", children: [
56            /* @__PURE__ */ jsxs("p", { children: [
57              "Plans: ",
58              /* @__PURE__ */ jsx("span", { className: "font-medium text-slate-700 dark:text-slate-300", children: product.plans_count })
59            ] }),
60            /* @__PURE__ */ jsxs("p", { children: [
61              "Addons: ",
62              /* @__PURE__ */ jsx("span", { className: "font-medium text-slate-700 dark:text-slate-300", children: product.addons_count })
63            ] }),
64            /* @__PURE__ */ jsxs("p", { children: [
65              "Coupons: ",
66              /* @__PURE__ */ jsx("span", { className: "font-medium text-slate-700 dark:text-slate-300", children: product.coupons_count })
67            ] })
68          ] }) }),
69          /* @__PURE__ */ jsx("td", { className: "px-6 py-4 text-xs text-slate-500", children: product.created_at })
70        ] }, product.product_id)) })
71      ] }) })
72    ] })
73  ] });
74};
75
76//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIlByb2R1Y3RzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QsIHsgdXNlU3RhdGUsIHVzZUVmZmVjdCB9IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IENhcmQgfSBmcm9tICcuLi9jb21wb25lbnRzL0NhcmQnO1xuaW1wb3J0IHsgUGFja2FnZSwgU2VhcmNoIH0gZnJvbSAnbHVjaWRlLXJlYWN0JztcbmltcG9ydCB7IGFkbWluQXBpQ2xpZW50IH0gZnJvbSAnLi4vLi4vLi4vYXBpL2NsaWVudHMvYWRtaW5BcGlDbGllbnQnO1xuXG5pbnRlcmZhY2UgUHJvZHVjdCB7XG4gICAgcHJvZHVjdF9pZDogc3RyaW5nO1xuICAgIG5hbWU6IHN0cmluZztcbiAgICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICAgIHN0YXR1czogc3RyaW5nO1xuICAgIHBsYW5zX2NvdW50OiBudW1iZXI7XG4gICAgYWRkb25zX2NvdW50OiBudW1iZXI7XG4gICAgY291cG9uc19jb3VudDogbnVtYmVyO1xuICAgIGNyZWF0ZWRfYXQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGNvbnN0IFByb2R1Y3RzOiBSZWFjdC5GQyA9ICgpID0+IHtcbiAgICBjb25zdCBbcHJvZHVjdHMsIHNldFByb2R1Y3RzXSA9IHVzZVN0YXRlPFByb2R1Y3RbXT4oW10pO1xuICAgIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuXG4gICAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICAgICAgY29uc3QgZmV0Y2hQcm9kdWN0cyA9IGFzeW5jICgpID0+IHtcbiAgICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICAgICAgLy8gRmV0Y2hpbmcgZnJvbSB0aGUgYWRtaW4gQVBJIGNsaWVudCB3aGljaCBhdXRvbWF0aWNhbGx5IGF0dGFjaGVzIGF1dGggaGVhZGVyc1xuICAgICAgICAgICAgICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYWRtaW5BcGlDbGllbnQuZ2V0KCcvYWRtaW4vc3Vic2NyaXB0aW9uL3Byb2R1Y3RzJyk7XG4gICAgICAgICAgICAgICAgc2V0UHJvZHVjdHMocmVzcG9uc2UuZGF0YSk7XG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIGZldGNoaW5nIHByb2R1Y3RzOicsIGVycm9yKTtcbiAgICAgICAgICAgIH0gZmluYWxseSB7XG4gICAgICAgICAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICAgICAgICB9XG4gICAgICAgIH07XG5cbiAgICAgICAgZmV0Y2hQcm9kdWN0cygpO1xuICAgIH0sIFtdKTtcblxuICAgIHJldHVybiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS04XCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgc206ZmxleC1yb3cgc206aXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBnYXAtNFwiPlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxoMSBjbGFzc05hbWU9XCJ0ZXh0LTJ4bCBmb250LWJvbGQgdGV4dC1zbGF0ZS05MDAgZGFyazp0ZXh0LXdoaXRlXCI+UHJvZHVjdHM8L2gxPlxuICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNsYXRlLTUwMCBkYXJrOnRleHQtc2xhdGUtNDAwIG10LTFcIj5NYW5hZ2Ugc3Vic2NyaXB0aW9uIHByb2R1Y3RzIGFuZCBvZmZlcmluZ3MuPC9wPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIDxDYXJkIGNsYXNzTmFtZT1cInAtMCBvdmVyZmxvdy12aXNpYmxlXCI+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJwLTQgYm9yZGVyLWIgYm9yZGVyLXNsYXRlLTIwMCBkYXJrOmJvcmRlci1zbGF0ZS04MDAgZmxleCBmbGV4LXdyYXAgZ2FwLTQgaXRlbXMtY2VudGVyIGp1c3RpZnktYmV0d2VlbiBiZy1zbGF0ZS01MC8zMCBkYXJrOmJnLXNsYXRlLTkwMC8zMFwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInJlbGF0aXZlIG1heC13LXNtIGZsZXgtMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNlYXJjaCBjbGFzc05hbWU9XCJhYnNvbHV0ZSBsZWZ0LTMgdG9wLTEvMiAtdHJhbnNsYXRlLXktMS8yIGgtNCB3LTQgdGV4dC1zbGF0ZS00MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPGlucHV0XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT1cInRleHRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBsYWNlaG9sZGVyPVwiU2VhcmNoIHByb2R1Y3RzLi4uXCJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ3LWZ1bGwgYmctd2hpdGUgZGFyazpiZy1zbGF0ZS04MDAgYm9yZGVyIGJvcmRlci1zbGF0ZS0yMDAgZGFyazpib3JkZXItc2xhdGUtNzAwIHJvdW5kZWQteGwgcHktMiBwbC0xMCBwci00IHRleHQtc20gZm9jdXM6b3V0bGluZS1ub25lIGZvY3VzOnJpbmctMiBmb2N1czpyaW5nLWluZGlnby01MDAvMTAgdHJhbnNpdGlvbi1zaGFkb3dcIlxuICAgICAgICAgICAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm92ZXJmbG93LXgtYXV0b1wiPlxuICAgICAgICAgICAgICAgICAgICA8dGFibGUgY2xhc3NOYW1lPVwidy1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICA8dGhlYWQ+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGNsYXNzTmFtZT1cImJnLXNsYXRlLTUwLzUwIGRhcms6Ymctc2xhdGUtODAwLzUwIHRleHQtbGVmdCBib3JkZXItYiBib3JkZXItc2xhdGUtMjAwIGRhcms6Ym9yZGVyLXNsYXRlLTgwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtNiBweS00IHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXNsYXRlLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5Qcm9kdWN0IEluZm88L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtNiBweS00IHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXNsYXRlLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5TdGF0dXM8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtNiBweS00IHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXNsYXRlLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5QbGFucy9BZGRvbnM8L3RoPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGggY2xhc3NOYW1lPVwicHgtNiBweS00IHRleHQteHMgZm9udC1zZW1pYm9sZCB0ZXh0LXNsYXRlLTUwMCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj5DcmVhdGVkPC90aD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgPC90aGVhZD5cbiAgICAgICAgICAgICAgICAgICAgICAgIDx0Ym9keSBjbGFzc05hbWU9XCJkaXZpZGUteSBkaXZpZGUtc2xhdGUtMTAwIGRhcms6ZGl2aWRlLXNsYXRlLTgwMC81MFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgI
76Htsb2FkaW5nID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sU3Bhbj17NH0gY2xhc3NOYW1lPVwicHgtNiBweS04IHRleHQtY2VudGVyIHRleHQtc2xhdGUtNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZGluZyBwcm9kdWN0cy4uLlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90cj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICApIDogcHJvZHVjdHMubGVuZ3RoID09PSAwID8gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY29sU3Bhbj17NH0gY2xhc3NOYW1lPVwicHgtNiBweS04IHRleHQtY2VudGVyIHRleHQtc2xhdGUtNTAwXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gcHJvZHVjdHMgZm91bmQuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RyPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb2R1Y3RzLm1hcCgocHJvZHVjdCkgPT4gKFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHRyIGtleT17cHJvZHVjdC5wcm9kdWN0X2lkfSBjbGFzc05hbWU9XCJob3ZlcjpiZy1zbGF0ZS01MC81MCBkYXJrOmhvdmVyOmJnLXNsYXRlLTgwMC8zMCB0cmFuc2l0aW9uLWNvbG9yc1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC02IHB5LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ3LTEwIGgtMTAgcm91bmRlZC14bCBiZy1pbmRpZ28tNTAgZGFyazpiZy1pbmRpZ28tNTAwLzEwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtaW5kaWdvLTYwMCBkYXJrOnRleHQtaW5kaWdvLTQwMFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxQYWNrYWdlIHNpemU9ezIwfSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0ZXh0LXNsYXRlLTkwMCBkYXJrOnRleHQtd2hpdGVcIj57cHJvZHVjdC5uYW1lfTwvcD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwXCI+e3Byb2R1Y3QuZGVzY3JpcHRpb24gfHwgJ05vIGRlc2NyaXB0aW9uJ308L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dGQgY2xhc3NOYW1lPVwicHgtNiBweS00XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YHB4LTIgcHktMSByb3VuZGVkLWZ1bGwgdGV4dC1bMTBweF0gZm9udC1ib2xkICR7cHJvZHVjdC5zdGF0dXMgPT09ICdhY3RpdmUnID8gJ2JnLWVtZXJhbGQtNTAgdGV4dC1lbWVyYWxkLTYwMCBkYXJrOmJnLWVtZXJhbGQtNTAwLzEwIGRhcms6dGV4dC1lbWVyYWxkLTQwMCcgOlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2JnLXNsYXRlLTEwMCB0ZXh0LXNsYXRlLTUwMCBkYXJrOmJnLXNsYXRlLTgwMCBkYXJrOnRleHQtc2xhdGUtNDAwJ1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfWB9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3Byb2R1Y3Quc3RhdHVzLmNoYXJBdCgwKS50b1VwcGVyQ2FzZSgpICsgcHJvZHVjdC5zdGF0dXMuc2xpY2UoMSl9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC02IHB5LTRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtc2xhdGUtNTAwIHNwYWNlLXktMVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+UGxhbnM6IDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtIHRleHQtc2xhdGUtNzAwIGRhcms6dGV4dC1zbGF0ZS0zMDBcIj57cHJvZHVjdC5wbGFuc19jb3VudH08L3NwYW4+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHA+QWRkb25zOiA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXNsYXRlLTcwMCBkYXJrOnRleHQtc2xhdGUtMzAwXCI+e3Byb2R1Y3QuYWRkb25zX2NvdW50fTwvc3Bhbj48L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cD5Db3Vwb25zOiA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bSB0ZXh0LXNsYXRlLTcwMCBkYXJrOnRleHQtc2xhdGUtMzAwXCI+e3Byb2R1Y3QuY291cG9uc19jb3VudH08L3NwYW4+PC9wPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3RkPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDx0ZCBjbGFzc05hbWU9XCJweC02IHB5LTQgdGV4dC14cyB0ZXh0LXNsYXRlLTUwMFwiPntwcm9kdWN0LmNyZWF0ZWRfYXR9PC90ZD5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvdHI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvdGJvZHk+XG4gICAgICAgICAgICAgICAgICAgIDwvdGFibGU+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L0NhcmQ+XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59O1xuIl0sIm1hcHBpbmdzIjoiQUF1Q2dCLFNBQ0ksS0FESjtBQXZDaEIsT0FBTyxTQUFTLFVBQVUsaUJBQWlCO0FBQzNDLFNBQVMsWUFBWTtBQUNyQixTQUFTLFNBQVMsY0FBYztBQUNoQyxTQUFTLHNCQUFzQjtBQWF4QixhQUFNLFdBQXFCLE1BQU07QUFDcEMsUUFBTSxDQUFDLFVBQVUsV0FBVyxJQUFJLFNBQW9CLENBQUMsQ0FBQztBQUN0RCxRQUFNLENBQUMsU0FBUyxVQUFVLElBQUksU0FBUyxJQUFJO0FBRTNDLFlBQVUsTUFBTTtBQUNaLFVBQU0sZ0JBQWdCLFlBQVk7QUFDOUIsVUFBSTtBQUVBLGNBQU0sV0FBVyxNQUFNLGVBQWUsSUFBSSw4QkFBOEI7QUFDeEUsb0JBQVksU0FBUyxJQUFJO0FBQUEsTUFDN0IsU0FBUyxPQUFPO0FBQ1osZ0JBQVEsTUFBTSw0QkFBNEIsS0FBSztBQUFBLE1BQ25ELFVBQUU7QUFDRSxtQkFBVyxLQUFLO0FBQUEsTUFDcEI7QUFBQSxJQUNKO0FBRUEsa0JBQWM7QUFBQSxFQUNsQixHQUFHLENBQUMsQ0FBQztBQUVMLFNBQ0kscUJBQUMsU0FBSSxXQUFVLGFBQ1g7QUFBQSx3QkFBQyxTQUFJLFdBQVUsbUVBQ1gsK0JBQUMsU0FDRztBQUFBLDBCQUFDLFFBQUcsV0FBVSxxREFBb0Qsc0JBQVE7QUFBQSxNQUMxRSxvQkFBQyxPQUFFLFdBQVUsMkNBQTBDLHlEQUEyQztBQUFBLE9BQ3RHLEdBQ0o7QUFBQSxJQUVBLHFCQUFDLFFBQUssV0FBVSx3QkFDWjtBQUFBLDBCQUFDLFNBQUksV0FBVSw2SUFDWCwrQkFBQyxTQUFJLFdBQVUsNEJBQ1g7QUFBQSw0QkFBQyxVQUFPLFdBQVUsbUVBQWtFO0FBQUEsUUFDcEY7QUFBQSxVQUFDO0FBQUE7QUFBQSxZQUNHLE1BQUs7QUFBQSxZQUNMLGFBQVk7QUFBQSxZQUNaLFdBQVU7QUFBQTtBQUFBLFFBQ2Q7QUFBQSxTQUNKLEdBQ0o7QUFBQSxNQUVBLG9CQUFDLFNBQUksV0FBVSxtQkFDWCwrQkFBQyxXQUFNLFdBQVUsVUFDYjtBQUFBLDRCQUFDLFdBQ0csK0JBQUMsUUFBRyxXQUFVLGlHQUNWO0FBQUEsOEJBQUMsUUFBRyxXQUFVLDJFQUEwRSwwQkFBWTtBQUFBLFVBQ3BHLG9CQUFDLFFBQUcsV0FBVSwyRUFBMEUsb0JBQU07QUFBQSxVQUM5RixvQkFBQyxRQUFHLFdBQVUsMkVBQTBFLDBCQUFZO0FBQUEsVUFDcEcsb0JBQUMsUUFBRyxXQUFVLDJFQUEwRSxxQkFBTztBQUFBLFdBQ25HLEdBQ0o7QUFBQSxRQUNBLG9CQUFDLFdBQU0sV0FBVSxzREFDWixvQkFDRyxvQkFBQyxRQUNHLDhCQUFDLFFBQUcsU0FBUyxHQUFHLFdBQVUsd0NBQXVDLGlDQUVqRSxHQUNKLElBQ0EsU0FBUyxXQUFXLElBQ3BCLG9CQUFDLFFBQ0csOEJBQUMsUUFBRyxTQUFTLEdBQUcsV0FBVSx3Q0FBdUMsZ0NBRWpFLEdBQ0osSUFFQSxTQUFTLElBQUksQ0FBQyxZQUNWLHFCQUFDLFFBQTRCLFdBQVUscUVBQ25DO0FBQUEsOEJBQUMsUUFBRyxXQUFVLGFBQ1YsK0JBQUMsU0FBSSxXQUFVLDJCQUNYO0FBQUEsZ0NBQUMsU0FBSSxXQUFVLGlJQUNYLDhCQUFDLFdBQVEsTUFBTSxJQUFJLEdBQ3ZCO0FBQUEsWUFDQSxxQkFBQyxTQUNHO0FBQUEsa0NBQUMsT0FBRSxXQUFVLHdEQUF3RCxrQkFBUSxNQUFLO0FBQUEsY0FDbEYsb0JBQUMsT0FBRSxXQUFVLDBCQUEwQixrQkFBUSxlQUFlLGtCQUFpQjtBQUFBLGVBQ25GO0FBQUEsYUFDSixHQUNKO0FBQUEsVUFDQSxvQkFBQyxRQUFHLFdBQVUsYUFDViw4QkFBQyxVQUFLLFdBQVcsZ0RBQWdELFFBQVEsV0FBVyxXQUFXLGdGQUMzRixtRUFDQSxJQUNDLGtCQUFRLE9BQU8sT0FBTyxDQUFDLEVBQUUsWUFBWSxJQUFJLFFBQVEsT0FBTyxNQUFNLENBQUMsR0FDcEUsR0FDSjtBQUFBLFVBQ0Esb0JBQUMsUUFBRyxXQUFVLGFBQ1YsK0JBQUMsU0FBSSxXQUFVLG9DQUNYO0FBQUEsaUNBQUMsT0FBRTtBQUFBO0FBQUEsY0FBTyxvQkFBQyxVQUFLLFdBQVUsa0RBQWtELGtCQUFRLGFBQVk7QUFBQSxlQUFPO0FBQUEsWUFDdkcscUJBQUMsT0FBRTtBQUFBO0FBQUEsY0FBUSxvQkFBQyxVQUFLLFdBQVUsa0RBQWtELGtCQUFRLGNBQWE7QUFBQSxlQUFPO0FBQUEsWUFDekcscUJBQUMsT0FBRTtBQUFBO0FBQUEsY0FBUyxvQkFBQyxVQUFLLFdBQVUsa0RBQWtELGtCQUFRLGVBQWM7QUFBQSxlQUFPO0FBQUEsYUFDL0csR0FDSjtBQUFBLFVBQ0Esb0JBQUMsUUFBRyxXQUFVLG9DQUFvQyxrQkFBUSxZQUFXO0FBQUEsYUExQmhFL
76FFBQVEsVUEyQmpCLENBQ0gsR0FFVDtBQUFBLFNBQ0osR0FDSjtBQUFBLE9BQ0o7QUFBQSxLQUNKO0FBRVI7IiwibmFtZXMiOltdfQ==

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.