1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/pages/user/training/Training.tsx");import __vite__cjsImport0_react_jsxDevRuntime from "/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=dd74cbdf"; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"]; 2import RefreshRuntime from "/@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/pages/user/training/Training.tsx " + id); 14 }; 15 window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; 16} 17var _s = $RefreshSig$(); 18import __vite__cjsImport3_react from "/node_modules/.vite/deps/react.js?v=dd74cbdf"; const useEffect = __vite__cjsImport3_react["useEffect"]; const useState = __vite__cjsImport3_react["useState"]; 19import { Breadcrumb, Spin, Button, Input } from "/node_modules/.vite/deps/antd.js?v=dd74cbdf"; 20import { HomeOutlined, SearchOutlined } from "/node_modules/.vite/deps/@ant-design_icons.js?v=dd74cbdf"; 21import { GetTrainningApi } from "/src/api/homeApi.ts"; 22const pageSize = 9; 23const Training = () => { 24 _s(); 25 const [activeTopic, setActiveTopic] = useState(null); 26 const [blogs, setBlogs] = useState([]); 27 const [pageIndex, setPageIndex] = useState(1); 28 const [totalPage, setTotalPage] = useState(1); 29 const [loading, setLoading] = useState(false); 30 const [loadingMore, setLoadingMore] = useState(false); 31 const [searchValue, setSearchValue] = useState(""); 32 const [appliedSearch, setAppliedSearch] = useState(""); 33 useEffect(() => { 34 document.title = "Äà o tạo"; 35 fetchBlogs("", 1, false); 36 }, []); 37 const fetchBlogs = async (title, page, isLoadMore = false) => { 38 if (isLoadMore) { 39 setLoadingMore(true); 40 } else { 41 setLoading(true); 42 } 43 try { 44 const res = await GetTrainningApi({ 45 pagingParams: { 46 orderBy: "", 47 keyword: "", 48 pageIndex: page, 49 isPaging: true, 50 pageSize 51 }, 52 filterParams: { 53 title 54 } 55 }); 56 const responseData = res.data; 57 setTotalPage(responseData.meta.totalPage); 58 if (isLoadMore) { 59 setBlogs((prev) => [...prev, ...responseData.data]); 60 } else { 61 setBlogs(responseData.data); 62 } 63 } catch (err) { 64 console.error("Error fetching blogs", err); 65 } finally { 66 setLoading(false); 67 setLoadingMore(false); 68 } 69 }; 70 const handleLoadMore = () => { 71 const nextPage = pageIndex + 1; 72 setPageIndex(nextPage); 73 fetchBlogs(appliedSearch, nextPage, true); 74 }; 75 const handleSearch = () => { 76 setAppliedSearch(searchValue); 77 setPageIndex(1); 78 fetchBlogs(searchValue, 1, false); 79 }; 80 return /* @__PURE__ */ jsxDEV("div", { className: "mx-auto", children: [ 81 /* @__PURE__ */ jsxDEV( 82 Breadcrumb, 83 { 84 items: [ 85 { href: "/", title: /* @__PURE__ */ jsxDEV(HomeOutlined, {}, void 0, false, { 86 fileName: "/app/src/pages/user/training/Training.tsx", 87 lineNumber: 77, 88 columnNumber: 29 89 }, this) }, 90 { title: "Äà o tạo" } 91 ] 92 }, 93 void 0, 94 false, 95 { 96 fileName: "/app/src/pages/user/training/Training.tsx", 97 lineNumber: 75, 98 columnNumber: 13 99 }, 100 this 101 ), 102 /* @__PURE__ */ jsxDEV("div", { className: "mt-4", children: [
103 /* @__PURE__ */ jsxDEV("div", { className: "flex justify-end ", children: [ 104 /* @__PURE__ */ jsxDEV( 105 Input, 106 { 107 placeholder: "Tìm kiếm bà i viết...", 108 prefix: /* @__PURE__ */ jsxDEV(SearchOutlined, {}, void 0, false, { 109 fileName: "/app/src/pages/user/training/Training.tsx", 110 lineNumber: 86, 111 columnNumber: 21 112 }, this), 113 value: searchValue, 114 onChange: (e) => setSearchValue(e.target.value), 115 onPressEnter: handleSearch, 116 style: { width: 300 }, 117 allowClear: true 118 }, 119 void 0, 120 false, 121 { 122 fileName: "/app/src/pages/user/training/Training.tsx", 123 lineNumber: 84, 124 columnNumber: 21 125 }, 126 this 127 ), 128 /* @__PURE__ */ jsxDEV(Button, { type: "primary", onClick: handleSearch, className: "ml-2", children: "Tìm kiếm" }, void 0, false, { 129 fileName: "/app/src/pages/user/training/Training.tsx", 130 lineNumber: 93, 131 columnNumber: 21 132 }, this) 133 ] }, void 0, true, { 134 fileName: "/app/src/pages/user/training/Training.tsx", 135 lineNumber: 83, 136 columnNumber: 17 137 }, this),
138 loading ? /* @__PURE__ */ jsxDEV("div", { className: "flex justify-center items-center min-h-[200px]", children: /* @__PURE__ */ jsxDEV(Spin, {}, void 0, false, { 139 fileName: "/app/src/pages/user/training/Training.tsx", 140 lineNumber: 100, 141 columnNumber: 25 142 }, this) }, void 0, false, { 143 fileName: "/app/src/pages/user/training/Training.tsx", 144 lineNumber: 99, 145 columnNumber: 9 146 }, this) : /* @__PURE__ */ jsxDEV("div", { className: "grid grid-cols-1 md:grid-cols-3 gap-4 mt-4", children: blogs.map( 147 (item) => /* @__PURE__ */ jsxDEV("a", { href: `/${item.href}`, className: "bg-white rounded shadow hover:shadow-md transition overflow-hidden", children: [ 148 /* @__PURE__ */ jsxDEV("img", { src: item.cover, alt: item.title, className: "w-full h-48 object-cover" }, void 0, false, { 149 fileName: "/app/src/pages/user/training/Training.tsx", 150 lineNumber: 106, 151 columnNumber: 25 152 }, this), 153 /* @__PURE__ */ jsxDEV("div", { className: "p-3", children: [
154 /* @__PURE__ */ jsxDEV( 155 "span", 156 { 157 className: "text-xs font-medium px-2 py-1 rounded", 158 style: { backgroundColor: item.color, color: "#fff" }, 159 children: item.topic 160 }, 161 void 0, 162 false, 163 { 164 fileName: "/app/src/pages/user/training/Training.tsx", 165 lineNumber: 108, 166 columnNumber: 29 167 }, 168 this 169 ), 170 /* @__PURE__ */ jsxDEV("h3", { className: "text-base font-semibold text-gray-800 mt-2 line-clamp-2", children: item.title }, void 0, false, { 171 fileName: "/app/src/pages/user/training/Training.tsx", 172 lineNumber: 114, 173 columnNumber: 29 174 }, this), 175 /* @__PURE__ */ jsxDEV("p", { className: "text-sm text-gray-600 mt-1 line-clamp-3", children: item.description }, void 0, false, { 176 fileName: "/app/src/pages/user/training/Training.tsx", 177 lineNumber: 115, 178 columnNumber: 29 179 }, this) 180 ] }, void 0, true, { 181 fileName: "/app/src/pages/user/training/Training.tsx", 182 lineNumber: 107, 183 columnNumber: 25 184 }, this) 185 ] }, item.id, true, { 186 fileName: "/app/src/pages/user/training/Training.tsx", 187 lineNumber: 105, 188 columnNumber: 11 189 }, this) 190 ) }, void 0, false, { 191 fileName: "/app/src/pages/user/training/Training.tsx", 192 lineNumber: 103, 193 columnNumber: 9 194 }, this), 195 !loading && pageIndex < totalPage && /* @__PURE__ */ jsxDEV("div", { className: "text-center mt-6", children: /* @__PURE__ */ jsxDEV(Button, { loading: loadingMore, onClick: handleLoadMore, children: "Xem thêm" }, void 0, false, { 196 fileName: "/app/src/pages/user/training/Training.tsx", 197 lineNumber: 124, 198 columnNumber: 21 199 }, this) }, void 0, false, { 200 fileName: "/app/src/pages/user/training/Training.tsx", 201 lineNumber: 123, 202 columnNumber: 9 203 }, this) 204 ] }, void 0, true, { 205 fileName: "/app/src/pages/user/training/Training.tsx", 206 lineNumber: 82, 207 columnNumber: 13 208 }, this) 209 ] }, void 0, true, { 210 fileName: "/app/src/pages/user/training/Training.tsx", 211 lineNumber: 74, 212 columnNumber: 5 213 }, this); 214}; 215_s(Training, "1XXuc6l08W52+yGQk6+1pfh2fWM="); 216_c = Training; 217export default Training; 218var _c; 219$RefreshReg$(_c, "Training"); 220if (import.meta.hot && !inWebWorker) { 221 window.$RefreshReg$ = prevRefreshReg; 222 window.$RefreshSig$ = prevRefreshSig; 223} 224if (import.meta.hot && !inWebWorker) { 225 RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { 226 RefreshRuntime.registerExportsForReactRefresh("/app/src/pages/user/training/Training.tsx", currentExports); 227 import.meta.hot.accept((nextExports) => { 228 if (!nextExports) return; 229 const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/app/src/pages/user/training/Training.tsx", currentExports, nextExports); 230 if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage); 231 }); 232 }); 233} 234 235//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJtYXBwaW5ncyI6IkFBNEV3QzsyQkE1RXhDO0FBQW9CQSxvQkFBZ0IsT0FBTztBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUMzQyxTQUFTQyxZQUFrQkMsTUFBTUMsUUFBUUMsYUFBYTtBQUN0RCxTQUFTQyxjQUFjQyxzQkFBdUI7QUFDOUMsU0FBK0JDLHVCQUF1QjtBQUV0RCxNQUFNQyxXQUFXO0FBRWpCLE1BQU1DLFdBQVdBLE1BQU07QUFBQUMsS0FBQTtBQUNuQixRQUFNLENBQUNDLGFBQWFDLGNBQWMsSUFBSVosU0FBd0IsSUFBSTtBQUNsRSxRQUFNLENBQUNhLE9BQU9DLFFBQVEsSUFBSWQsU0FBZ0IsRUFBRTtBQUM1QyxRQUFNLENBQUNlLFdBQVdDLFlBQVksSUFBSWhCLFNBQVMsQ0FBQztBQUM1QyxRQUFNLENBQUNpQixXQUFXQyxZQUFZLElBQUlsQixTQUFTLENBQUM7QUFDNUMsUUFBTSxDQUFDbUIsU0FBU0MsVUFBVSxJQUFJcEIsU0FBUyxLQUFLO0FBQzVDLFFBQU0sQ0FBQ3FCLGFBQWFDLGNBQWMsSUFBSXRCLFNBQVMsS0FBSztBQUNwRCxRQUFNLENBQUN1QixhQUFhQyxjQUFjLElBQUl4QixTQUFTLEVBQUU7QUFDakQsUUFBTSxDQUFDeUIsZUFBZUMsZ0JBQWdCLElBQUkxQixTQUFTLEVBQUU7QUFFckQyQixZQUFVLE1BQU07QUFDWkMsYUFBU0MsUUFBUTtBQUNqQkMsZUFBVyxJQUFJLEdBQUcsS0FBSztBQUFBLEVBQzNCLEdBQUcsRUFBRTtBQUVMLFFBQU1BLGFBQWEsT0FBT0QsT0FBZUUsTUFBY0MsYUFBYSxVQUFVO0FBQzFFLFFBQUlBLFlBQVk7QUFDWlYscUJBQWUsSUFBSTtBQUFBLElBQ3ZCLE9BQU87QUFDSEYsaUJBQVcsSUFBSTtBQUFBLElBQ25CO0FBRUEsUUFBSTtBQUNKLFlBQU1hLE1BQU0sTUFBTTFCLGdCQUFnQjtBQUFBLFFBQzlCMkIsY0FBYztBQUFBLFVBQ1ZDLFNBQVM7QU
235FBQSxVQUNUQyxTQUFTO0FBQUEsVUFDVHJCLFdBQVdnQjtBQUFBQSxVQUNYTSxVQUFVO0FBQUEsVUFDVjdCO0FBQUFBLFFBQ0o7QUFBQSxRQUNBOEIsY0FBYztBQUFBLFVBQ1ZUO0FBQUFBLFFBQ0o7QUFBQSxNQUNKLENBQUM7QUFFRCxZQUFNVSxlQUFlTixJQUFJTztBQUN6QnRCLG1CQUFhcUIsYUFBYUUsS0FBS3hCLFNBQVM7QUFFeEMsVUFBSWUsWUFBWTtBQUNabEIsaUJBQVMsQ0FBQTRCLFNBQVEsQ0FBQyxHQUFHQSxNQUFNLEdBQUdILGFBQWFDLElBQUksQ0FBQztBQUFBLE1BQ3BELE9BQU87QUFDSDFCLGlCQUFTeUIsYUFBYUMsSUFBSTtBQUFBLE1BQzlCO0FBQUEsSUFFQSxTQUFTRyxLQUFLO0FBQ1ZDLGNBQVFDLE1BQU0sd0JBQXdCRixHQUFHO0FBQUEsSUFDN0MsVUFBQztBQUNHdkIsaUJBQVcsS0FBSztBQUNoQkUscUJBQWUsS0FBSztBQUFBLElBQ3hCO0FBQUEsRUFDSjtBQUVBLFFBQU13QixpQkFBaUJBLE1BQU07QUFDekIsVUFBTUMsV0FBV2hDLFlBQVk7QUFDN0JDLGlCQUFhK0IsUUFBUTtBQUNyQmpCLGVBQVdMLGVBQWVzQixVQUFVLElBQUk7QUFBQSxFQUM1QztBQUVBLFFBQU1DLGVBQWVBLE1BQU07QUFDdkJ0QixxQkFBaUJILFdBQVc7QUFDNUJQLGlCQUFhLENBQUM7QUFDZGMsZUFBV1AsYUFBYSxHQUFHLEtBQUs7QUFBQSxFQUNwQztBQUVBLFNBQ0ksdUJBQUMsU0FBSSxXQUFVLFdBQ1g7QUFBQTtBQUFBLE1BQUM7QUFBQTtBQUFBLFFBQ0csT0FBTztBQUFBLFVBQ0gsRUFBRTBCLE1BQU0sS0FBS3BCLE9BQU8sdUJBQUMsa0JBQUQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFBYSxFQUFJO0FBQUEsVUFDckMsRUFBRUEsT0FBTyxVQUFVO0FBQUEsUUFBQztBQUFBO0FBQUEsTUFINUI7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLElBSU07QUFBQSxJQUdOLHVCQUFDLFNBQUksV0FBVSxRQUNYO0FBQUEsNkJBQUMsU0FBSSxXQUFVLHFCQUNYO0FBQUE7QUFBQSxVQUFDO0FBQUE7QUFBQSxZQUNHLGFBQVk7QUFBQSxZQUNaLFFBQVEsdUJBQUMsb0JBQUQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBZTtBQUFBLFlBQ3ZCLE9BQU9OO0FBQUFBLFlBQ1AsVUFBVSxDQUFDMkIsTUFBTTFCLGVBQWUwQixFQUFFQyxPQUFPQyxLQUFLO0FBQUEsWUFDOUMsY0FBY0o7QUFBQUEsWUFDZCxPQUFPLEVBQUVLLE9BQU8sSUFBSTtBQUFBLFlBQ3BCLFlBQVU7QUFBQTtBQUFBLFVBUGQ7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLFFBT2M7QUFBQSxRQUVkLHVCQUFDLFVBQU8sTUFBSyxXQUFVLFNBQVNMLGNBQWMsV0FBVSxRQUFNLHdCQUE5RDtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBRUE7QUFBQSxXQVpKO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFhQTtBQUFBLE1BRUM3QixVQUNHLHVCQUFDLFNBQUksV0FBVSxrREFDWCxpQ0FBQyxVQUFEO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFBSyxLQURUO0FBQUE7QUFBQTtBQUFBO0FBQUEsYUFFQSxJQUVBLHVCQUFDLFNBQUksV0FBVSw4Q0FDZE4sZ0JBQU15QztBQUFBQSxRQUFJLENBQUFDLFNBQ1AsdUJBQUMsT0FBZ0IsTUFBTSxJQUFJQSxLQUFLTixJQUFJLElBQUksV0FBVSxzRUFDbEQ7QUFBQSxpQ0FBQyxTQUFJLEtBQUtNLEtBQUtDLE9BQU8sS0FBS0QsS0FBSzFCLE9BQU8sV0FBVSw4QkFBakQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxpQkFBMkU7QUFBQSxVQUMzRSx1QkFBQyxTQUFJLFdBQVUsT0FDWDtBQUFBO0FBQUEsY0FBQztBQUFBO0FBQUEsZ0JBQ0csV0FBVTtBQUFBLGdCQUNWLE9BQU8sRUFBRTRCLGlCQUFpQkYsS0FBS0csT0FBT0EsT0FBTyxPQUFPO0FBQUEsZ0JBRW5ESCxlQUFLSTtBQUFBQTtBQUFBQSxjQUpWO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxZQUtBO0FBQUEsWUFDQSx1QkFBQyxRQUFHLFdBQVUsMkRBQTJESixlQUFLMUIsU0FBOUU7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBb0Y7QUFBQSxZQUNwRix1QkFBQyxPQUFFLFdBQVUsMkNBQTJDMEIsZUFBS0ssZUFBN0Q7QUFBQTtBQUFBO0FBQUE7QUFBQSxtQkFBeUU7QUFBQSxlQVI3RTtBQUFBO0FBQUE7QUFBQTtBQUFBLGlCQVNBO0FBQUEsYUFYUUwsS0FBS00sSUFBYjtBQUFBO0FBQUE7QUFBQTtBQUFBLGVBWUE7QUFBQSxNQUNILEtBZkQ7QUFBQTtBQUFBO0FBQUE7QUFBQSxhQWdCQTtBQUFBLE1BR0gsQ0FBQzFDLFdBQVdKLFlBQVlFLGFBQ3JCLHVCQUFDLFNBQUksV0FBVSxvQkFDZixpQ0FBQyxVQUFPLFNBQVNJLGFBQWEsU0FBU3lCLGdCQUFlLHdCQUF0RDtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBRUEsS0FIQTtBQUFBO0FBQUE7QUFBQTtBQUFBLGFBSUE7QUFBQSxTQTdDUjtBQUFBO0FBQUE7QUFBQTtBQUFBLFdBK0NBO0FBQUEsT0F2REo7QUFBQTtBQUFBO0FBQUE7QUFBQSxTQXdEQTtBQUVSO0FBQUVwQyxHQTVISUQsVUFBUTtBQUFBcUQsS0FBUnJEO0FBOEhOLGVBQWVBO0FBQVMsSUFBQXFEO0FBQUFDLGFBQUFELElBQUEiLCJuYW1lcyI6WyJ1c2VTdGF0ZSIsIkJyZWFkY3J1bWIiLCJTcGluIiwiQnV0dG9uIiwiSW5wdXQiLCJIb21lT3V0bGluZWQiLCJTZWFyY2hPdXRsaW5lZCIsIkdldFRyYWlubmluZ0FwaSIsInBhZ2VTaXplIiwiVHJhaW5pbmciLCJfcyIsImFjdGl2ZVRvcGljIiwic2V0QWN0aXZlVG9waWMiLCJibG9ncyIsInNldEJsb2dzIiwicGFnZUluZGV4Iiwic2V0UGFnZUluZGV4IiwidG90YWxQYWdlIiwic2V0VG90YWxQYWdlIiwibG9hZGluZyIsInNldExvYWRpbmciLCJsb2FkaW5nTW9yZSIsInNldExvYWRpbmdNb3JlIiwic2VhcmNoVmFsdWUiLCJzZXRTZWFyY2hWYWx1ZSIsImFwcGxpZWRTZWFyY2giLCJzZXRBcHBsaWVkU2VhcmNoIiwidXNlRWZmZWN0IiwiZG9jdW1lbnQiLCJ0aXRsZSIsImZldGNoQmxvZ3MiLCJwYWdlIiwiaXNMb2FkTW9yZSIsInJlcyIsInBhZ2luZ1BhcmFtcyIsIm9yZGVyQnkiLCJrZXl3b3JkIiwiaXNQYWdpbmciLCJmaWx0ZXJQYXJhbXMiLCJyZXNwb25zZURhdGEiLCJkYXRhIiwibWV0YSIsInByZXYiLCJlcnIiLCJjb25zb2xlIiwiZXJyb3IiLCJoYW5kbGVMb2FkTW9yZSIsIm5leHRQYWdlIiwiaGFuZGxlU2VhcmNoIiwiaHJlZiIsImUiLCJ0YXJnZXQiLCJ2YWx1ZSIsIndpZHRoIiwibWFwIiwiaXRlbSIsImNvdmVyIiwiYmFja2dyb3VuZENvbG9yIiwiY29sb3IiLCJ0b3BpYyIsImRlc2NyaXB0aW9uIiwiaWQiLCJfYyIsIiRSZWZyZXNoUmVnJCJdLCJpZ25vcmVMaXN0IjpbXSwic291cmNlcyI6WyJUcmFpbmluZy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VTdGF0ZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQnJlYWRjcnVtYiwgVGFicywgU3BpbiwgQnV0dG9uLCBJbnB1dCB9IGZyb20gXCJhbnRkXCI7XG5pbXBvcnQgeyBIb21lT3V0bGluZWQsIFNlYXJjaE91dGxpbmVkICB9IGZyb20gXCJAYW50LWRlc2lnbi9pY29uc1wiO1xuaW1wb3J0IHsgR2V0TmV3QmxvZ0J5VG9waWNBcGksIEdldFRyYWlubmluZ0FwaSB9IGZyb20gXCIuLi8uLi8uLi9hcG
235kvaG9tZUFwaVwiO1xuXG5jb25zdCBwYWdlU2l6ZSA9IDk7XG5cbmNvbnN0IFRyYWluaW5nID0gKCkgPT4ge1xuICAgIGNvbnN0IFthY3RpdmVUb3BpYywgc2V0QWN0aXZlVG9waWNdID0gdXNlU3RhdGU8bnVtYmVyIHwgbnVsbD4obnVsbCk7XG4gICAgY29uc3QgW2Jsb2dzLCBzZXRCbG9nc10gPSB1c2VTdGF0ZTxhbnlbXT4oW10pO1xuICAgIGNvbnN0IFtwYWdlSW5kZXgsIHNldFBhZ2VJbmRleF0gPSB1c2VTdGF0ZSgxKTtcbiAgICBjb25zdCBbdG90YWxQYWdlLCBzZXRUb3RhbFBhZ2VdID0gdXNlU3RhdGUoMSk7XG4gICAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtsb2FkaW5nTW9yZSwgc2V0TG9hZGluZ01vcmVdID0gdXNlU3RhdGUoZmFsc2UpO1xuICAgIGNvbnN0IFtzZWFyY2hWYWx1ZSwgc2V0U2VhcmNoVmFsdWVdID0gdXNlU3RhdGUoXCJcIik7XG4gICAgY29uc3QgW2FwcGxpZWRTZWFyY2gsIHNldEFwcGxpZWRTZWFyY2hdID0gdXNlU3RhdGUoXCJcIik7XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBkb2N1bWVudC50aXRsZSA9IFwixJDDoG8gdOG6oW9cIjtcbiAgICAgICAgZmV0Y2hCbG9ncyhcIlwiLCAxLCBmYWxzZSk7XG4gICAgfSwgW10pO1xuXG4gICAgY29uc3QgZmV0Y2hCbG9ncyA9IGFzeW5jICh0aXRsZTogc3RyaW5nLCBwYWdlOiBudW1iZXIsIGlzTG9hZE1vcmUgPSBmYWxzZSkgPT4ge1xuICAgICAgICBpZiAoaXNMb2FkTW9yZSkge1xuICAgICAgICAgICAgc2V0TG9hZGluZ01vcmUodHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgICB9XG5cbiAgICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgR2V0VHJhaW5uaW5nQXBpKHtcbiAgICAgICAgICAgIHBhZ2luZ1BhcmFtczoge1xuICAgICAgICAgICAgICAgIG9yZGVyQnk6IFwiXCIsXG4gICAgICAgICAgICAgICAga2V5d29yZDogXCJcIixcbiAgICAgICAgICAgICAgICBwYWdlSW5kZXg6IHBhZ2UsXG4gICAgICAgICAgICAgICAgaXNQYWdpbmc6IHRydWUsXG4gICAgICAgICAgICAgICAgcGFnZVNpemUsXG4gICAgICAgICAgICB9LFxuICAgICAgICAgICAgZmlsdGVyUGFyYW1zOiB7XG4gICAgICAgICAgICAgICAgdGl0bGU6IHRpdGxlLFxuICAgICAgICAgICAgfSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgY29uc3QgcmVzcG9uc2VEYXRhID0gcmVzLmRhdGE7XG4gICAgICAgIHNldFRvdGFsUGFnZShyZXNwb25zZURhdGEubWV0YS50b3RhbFBhZ2UpO1xuXG4gICAgICAgIGlmIChpc0xvYWRNb3JlKSB7XG4gICAgICAgICAgICBzZXRCbG9ncyhwcmV2ID0+IFsuLi5wcmV2LCAuLi5yZXNwb25zZURhdGEuZGF0YV0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgc2V0QmxvZ3MocmVzcG9uc2VEYXRhLmRhdGEpO1xuICAgICAgICB9XG5cbiAgICAgICAgfSBjYXRjaCAoZXJyKSB7XG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKFwiRXJyb3IgZmV0Y2hpbmcgYmxvZ3NcIiwgZXJyKTtcbiAgICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgICAgICAgc2V0TG9hZGluZ01vcmUoZmFsc2UpO1xuICAgICAgICB9XG4gICAgfTtcblxuICAgIGNvbnN0IGhhbmRsZUxvYWRNb3JlID0gKCkgPT4ge1xuICAgICAgICBjb25zdCBuZXh0UGFnZSA9IHBhZ2VJbmRleCArIDE7XG4gICAgICAgIHNldFBhZ2VJbmRleChuZXh0UGFnZSk7XG4gICAgICAgIGZldGNoQmxvZ3MoYXBwbGllZFNlYXJjaCwgbmV4dFBhZ2UsIHRydWUpO1xuICAgIH07XG5cbiAgICBjb25zdCBoYW5kbGVTZWFyY2ggPSAoKSA9PiB7XG4gICAgICAgIHNldEFwcGxpZWRTZWFyY2goc2VhcmNoVmFsdWUpO1xuICAgICAgICBzZXRQYWdlSW5kZXgoMSk7XG4gICAgICAgIGZldGNoQmxvZ3Moc2VhcmNoVmFsdWUsIDEsIGZhbHNlKTtcbiAgICB9O1xuXG4gICAgcmV0dXJuIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvXCI+XG4gICAgICAgICAgICA8QnJlYWRjcnVtYlxuICAgICAgICAgICAgICAgIGl0ZW1zPXtbXG4gICAgICAgICAgICAgICAgICAgIHsgaHJlZjogXCIvXCIsIHRpdGxlOiA8SG9tZU91dGxpbmVkIC8+IH0sXG4gICAgICAgICAgICAgICAgICAgIHsgdGl0bGU6IFwixJDDoG8gdOG6oW9cIiB9LFxuICAgICAgICAgICAgICAgIF19XG4gICAgICAgICAgICAvPlxuXG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1lbmQgXCI+XG4gICAgICAgICAgICAgICAgICAgIDxJbnB1dFxuICAgICAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJUw6xtIGtp4bq/bSBiw6BpIHZp4bq/dC4uLlwiXG4gICAgICAgICAgICAgICAgICAgICAgICBwcmVmaXg9ezxTZWFyY2hPdXRsaW5lZCAvPn1cbiAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlPXtzZWFyY2hWYWx1ZX1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gc2V0U2VhcmNoVmFsdWUoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgb25QcmVzc0VudGVyPXtoYW5kbGVTZWFyY2h9XG4gICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyB3aWR0aDogMzAwIH19XG4gICAgICAgICAgICAgICAgICAgICAgICBhbGxvd0NsZWFyXG4gICAgICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b24gdHlwZT1cInByaW1hcnlcIiBvbkNsaWNrPXtoYW5kbGVTZWFyY2h9IGNsYXNzTmFtZT1cIm1sLTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIFTDrG0ga2nhur9tXG4gICAgICAgICAgICAgICAgICAgIDwvQnV0dG9uPlxuICAgICAgICAgICAgICAgIDwvZGl2PlxuXG4gICAgICAgICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWNlbnRlciBpdGVtcy1jZW50ZXIgbWluLWgtWzIwMHB4XVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFNwaW4gLz5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0zIGdhcC00IG10LTRcIj5cbiAgICAgICAgICAgICAgICAgICAge2Jsb2dzLm1hcChpdGVtID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGtleT17aXRlbS5pZH0gaHJlZj17YC8ke2l0ZW0uaHJlZn1gfSBjbGFzc05hbWU9XCJiZy13aGl0ZSByb3VuZGVkIHNoYWRvdyBob3ZlcjpzaGFkb3ctbWQgdHJhbnNpdGlvbiBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXtpdG
235VtLmNvdmVyfSBhbHQ9e2l0ZW0udGl0bGV9IGNsYXNzTmFtZT1cInctZnVsbCBoLTQ4IG9iamVjdC1jb3ZlclwiIC8+XG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInAtM1wiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tZWRpdW0gcHgtMiBweS0xIHJvdW5kZWRcIlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZT17eyBiYWNrZ3JvdW5kQ29sb3I6IGl0ZW0uY29sb3IsIGNvbG9yOiBcIiNmZmZcIiB9fVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge2l0ZW0udG9waWN9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxoMyBjbGFzc05hbWU9XCJ0ZXh0LWJhc2UgZm9udC1zZW1pYm9sZCB0ZXh0LWdyYXktODAwIG10LTIgbGluZS1jbGFtcC0yXCI+e2l0ZW0udGl0bGV9PC9oMz5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXNtIHRleHQtZ3JheS02MDAgbXQtMSBsaW5lLWNsYW1wLTNcIj57aXRlbS5kZXNjcmlwdGlvbn08L3A+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgKSl9XG4gICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICl9XG5cbiAgICAgICAgICAgICAgICB7IWxvYWRpbmcgJiYgcGFnZUluZGV4IDwgdG90YWxQYWdlICYmIChcbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBtdC02XCI+XG4gICAgICAgICAgICAgICAgICAgIDxCdXR0b24gbG9hZGluZz17bG9hZGluZ01vcmV9IG9uQ2xpY2s9e2hhbmRsZUxvYWRNb3JlfT5cbiAgICAgICAgICAgICAgICAgICAgICAgIFhlbSB0aMOqbVxuICAgICAgICAgICAgICAgICAgICA8L0J1dHRvbj5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgIDwvZGl2PiAgICBcbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn07XG5cbmV4cG9ydCBkZWZhdWx0IFRyYWluaW5nO1xuIl0sImZpbGUiOiIvYXBwL3NyYy9wYWdlcy91c2VyL3RyYWluaW5nL1RyYWluaW5nLnRzeCJ9
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.