1import { createHotContext as __vite__createHotContext } from "/@vite/client";import.meta.hot = __vite__createHotContext("/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx");import __vite__cjsImport0_react_jsxDevRuntime from "/node_modules/.vite/deps/react_jsx-dev-runtime.js?v=06a3ba8c"; const jsxDEV = __vite__cjsImport0_react_jsxDevRuntime["jsxDEV"]; 2import * as RefreshRuntime from "/@react-refresh"; 3const inWebWorker = typeof WorkerGlobalScope !== "undefined" && self instanceof WorkerGlobalScope; 4let prevRefreshReg; 5let prevRefreshSig; 6if (import.meta.hot && !inWebWorker) { 7 if (!window.$RefreshReg$) { 8 throw new Error( 9 "@vitejs/plugin-react can't detect preamble. Something is wrong." 10 ); 11 } 12 prevRefreshReg = window.$RefreshReg$; 13 prevRefreshSig = window.$RefreshSig$; 14 window.$RefreshReg$ = RefreshRuntime.getRefreshReg("/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx"); 15 window.$RefreshSig$ = RefreshRuntime.createSignatureFunctionForTransform; 16} 17import { 18 Alert, 19 Box, 20 Button, 21 CircularProgress, 22 Dialog, 23 DialogActions, 24 DialogContent, 25 DialogTitle, 26 FormControl, 27 InputLabel, 28 MenuItem, 29 Select, 30 TextField, 31 Typography 32} from "/node_modules/.vite/deps/@mui_material.js?v=06a3ba8c"; 33export default function CreateAPIKeyDialog(props) { 34 const { 35 open, 36 activeTenantId, 37 workspaceList, 38 instanceList, 39 selectedWorkspaceId, 40 selectedInstanceId, 41 keyName, 42 workspacesLoading, 43 instancesLoading, 44 workspaceLoadError, 45 instanceLoadError, 46 creating, 47 onClose, 48 onWorkspaceChange, 49 onInstanceChange, 50 onKeyNameChange, 51 onSubmit 52 } = props; 53 return /* @__PURE__ */ jsxDEV( 54 Dialog, 55 { 56 open, 57 onClose, 58 maxWidth: "sm", 59 fullWidth: true, 60 PaperProps: { 61 sx: { 62 borderRadius: 3, 63 bgcolor: "background.paper", 64 backgroundImage: "none" 65 } 66 }, 67 children: [
68 /* @__PURE__ */ jsxDEV(DialogTitle, { sx: { fontWeight: 600, color: "text.primary", borderBottom: "1px solid", borderColor: "divider", pb: 2 }, children: "Create New API Key" }, void 0, false, { 69 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 70 lineNumber: 94, 71 columnNumber: 13 72 }, this), 73 /* @__PURE__ */ jsxDEV(DialogContent, { children: [ 74 !activeTenantId && /* @__PURE__ */ jsxDEV(Alert, { severity: "warning", sx: { mt: 2, mb: 2 }, children: "Select an active tenant (workspace switcher) before creating a key." }, void 0, false, { 75 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 76 lineNumber: 99, 77 columnNumber: 9 78 }, this), 79 /* @__PURE__ */ jsxDEV( 80 FormControl, 81 { 82 fullWidth: true, 83 sx: { 84 mt: 2, 85 mb: 2, 86 "& .MuiInputLabel-root": { color: "text.secondary" }, 87 "& .MuiInputLabel-root.Mui-focused": { color: "text.secondary" } 88 }, 89 disabled: !activeTenantId || workspacesLoading, 90 children: [
91 /* @__PURE__ */ jsxDEV(InputLabel, { id: "api-key-workspace-label", children: "Workspace" }, void 0, false, { 92 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 93 lineNumber: 112, 94 columnNumber: 21 95 }, this), 96 /* @__PURE__ */ jsxDEV( 97 Select, 98 { 99 labelId: "api-key-workspace-label", 100 label: "Workspace", 101 value: selectedWorkspaceId, 102 onChange: (e) => onWorkspaceChange(e.target.value), 103 MenuProps: { 104 PaperProps: { 105 sx: { 106 bgcolor: "background.paper", 107 backgroundImage: "none", 108 border: "1px solid", 109 borderColor: "divider" 110 } 111 } 112 }, 113 children: workspaceList.map( 114 (ws) => /* @__PURE__ */ jsxDEV(MenuItem, { value: ws.id, children: ws.name }, ws.id, false, { 115 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 116 lineNumber: 130, 117 columnNumber: 13 118 }, this) 119 ) 120 }, 121 void 0, 122 false, 123 { 124 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 125 lineNumber: 113, 126 columnNumber: 21 127 }, 128 this 129 ) 130 ] 131 }, 132 void 0, 133 true, 134 { 135 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 136 lineNumber: 103, 137 columnNumber: 17 138 }, 139 this 140 ), 141 workspacesLoading && /* @__PURE__ */ jsxDEV(Box, { sx: { display: "flex", alignItems: "center", gap: 1, mb: 2 }, children: [
142 /* @__PURE__ */ jsxDEV(CircularProgress, { size: 14 }, void 0, false, { 143 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 144 lineNumber: 138, 145 columnNumber: 25 146 }, this), 147 /* @__PURE__ */ jsxDEV(Typography, { variant: "caption", color: "text.secondary", children: "Loading workspaces..." }, void 0, false, { 148 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 149 lineNumber: 139, 150 columnNumber: 25 151 }, this) 152 ] }, void 0, true, { 153 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 154 lineNumber: 137, 155 columnNumber: 9 156 }, this), 157 workspaceLoadError && /* @__PURE__ */ jsxDEV(Alert, { severity: "error", sx: { mb: 2, borderRadius: 1.5 }, children: workspaceLoadError }, void 0, false, { 158 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 159 lineNumber: 145, 160 columnNumber: 9 161 }, this),
162 /* @__PURE__ */ jsxDEV( 163 FormControl, 164 { 165 fullWidth: true, 166 sx: { 167 mb: 2, 168 "& .MuiInputLabel-root": { color: "text.secondary" }, 169 "& .MuiInputLabel-root.Mui-focused": { color: "text.secondary" } 170 }, 171 disabled: !selectedWorkspaceId || instancesLoading, 172 children: [ 173 /* @__PURE__ */ jsxDEV(InputLabel, { id: "api-key-instance-label", children: "Instance" }, void 0, false, { 174 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 175 lineNumber: 158, 176 columnNumber: 21 177 }, this), 178 /* @__PURE__ */ jsxDEV( 179 Select, 180 { 181 labelId: "api-key-instance-label", 182 label: "Instance", 183 value: selectedInstanceId, 184 onChange: (e) => onInstanceChange(e.target.value), 185 MenuProps: { 186 PaperProps: { 187 sx: { 188 bgcolor: "background.paper", 189 backgroundImage: "none", 190 border: "1px solid", 191 borderColor: "divider" 192 } 193 } 194 }, 195 children: instanceList.length === 0 && selectedWorkspaceId && !instancesLoading ? /* @__P
195URE__ */ jsxDEV(MenuItem, { value: "", children: "No Instance" }, void 0, false, { 196 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 197 lineNumber: 176, 198 columnNumber: 13 199 }, this) : instanceList.map( 200 (inst) => /* @__PURE__ */ jsxDEV(MenuItem, { value: inst.id, children: inst.name }, inst.id, false, { 201 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 202 lineNumber: 181, 203 columnNumber: 13 204 }, this) 205 ) 206 }, 207 void 0, 208 false, 209 { 210 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 211 lineNumber: 159, 212 columnNumber: 21 213 }, 214 this 215 ) 216 ] 217 }, 218 void 0, 219 true, 220 { 221 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 222 lineNumber: 149, 223 columnNumber: 17 224 }, 225 this 226 ), 227 instancesLoading && /* @__PURE__ */ jsxDEV(Box, { sx: { display: "flex", alignItems: "center", gap: 1, mb: 2 }, children: [
228 /* @__PURE__ */ jsxDEV(CircularProgress, { size: 14 }, void 0, false, { 229 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 230 lineNumber: 190, 231 columnNumber: 25 232 }, this), 233 /* @__PURE__ */ jsxDEV(Typography, { variant: "caption", color: "text.secondary", children: "Loading instances..." }, void 0, false, { 234 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 235 lineNumber: 191, 236 columnNumber: 25 237 }, this) 238 ] }, void 0, true, { 239 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 240 lineNumber: 189, 241 columnNumber: 9 242 }, this), 243 instanceLoadError && /* @__PURE__ */ jsxDEV(Alert, { severity: "error", sx: { mb: 2, borderRadius: 1.5 }, children: instanceLoadError }, void 0, false, { 244 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 245 lineNumber: 197, 246 columnNumber: 9 247 }, this), 248 selectedWorkspaceId && !instancesLoading && instanceList.length === 0 && /* @__PURE__ */ jsxDEV(Typography, { variant: "body2", color: "text.secondary", sx: { mb: 2 }, children: "No active instances in this workspace. Create an instance first." }, void 0, false, { 249 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 250 lineNumber: 202, 251 columnNumber: 9 252 }, this),
253 /* @__PURE__ */ jsxDEV( 254 TextField, 255 { 256 fullWidth: true, 257 label: "Key name", 258 placeholder: "e.g., Production API", 259 value: keyName, 260 onChange: (e) => onKeyNameChange(e.target.value), 261 disabled: !selectedInstanceId, 262 inputProps: { maxLength: 100 }, 263 helperText: "Shown in your API keys list (max 100 characters).", 264 sx: { 265 "& .MuiInputLabel-root": { color: "text.secondary" }, 266 "& .MuiInputLabel-root.Mui-focused": { color: "text.secondary" } 267 } 268 }, 269 void 0, 270 false, 271 { 272 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 273 lineNumber: 206, 274 columnNumber: 17 275 }, 276 this 277 ) 278 ] }, void 0, true, { 279 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 280 lineNumber: 97, 281 columnNumber: 13 282 }, this),
283 /* @__PURE__ */ jsxDEV(DialogActions, { sx: { px: 3, pb: 2, borderTop: "1px solid", borderColor: "divider", pt: 2 }, children: [ 284 /* @__PURE__ */ jsxDEV( 285 Button, 286 { 287 onClick: onClose, 288 sx: { 289 textTransform: "none", 290 color: "text.secondary", 291 fontWeight: 500, 292 border: "1px solid", 293 borderColor: "divider", 294 borderRadius: "8px", 295 px: 2, 296 "&:hover": { bgcolor: (theme) => theme.palette.mode === "dark" ? "#1f1f1f" : "#f9fafb" } 297 }, 298 children: "Cancel" 299 }, 300 void 0, 301 false, 302 { 303 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 304 lineNumber: 222, 305 columnNumber: 17 306 }, 307 this 308 ), 309 /* @__PURE__ */ jsxDEV( 310 Button, 311 { 312 variant: "contained", 313 onClick: onSubmit, 314 disabled: !activeTenantId || !selectedInstanceId || !keyName.trim() || creating || workspacesLoading || instancesLoading, 315 sx: { 316 textTransform: "none", 317 fontWeight: 600, 318 borderRadius: "8px", 319 px: 3, 320 bgcolor: (theme) => theme.palette.mode === "dark" ? "#3f3f46" : "#1a1a2e", 321 "&:hover": { bgcolor: (theme) => theme.palette.mode === "dark" ? "#52525b" : "#2d2d44" }, 322 "&.Mui-disabled": { bgcolor: (theme) => theme.palette.mode === "dark" ? "#27272A" : void 0, color: (theme) => theme.palette.mode === "dark" ? "#71717a" : void 0 } 323 },
324 children: creating ? /* @__PURE__ */ jsxDEV(CircularProgress, { size: 20, color: "inherit" }, void 0, false, { 325 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 326 lineNumber: 258, 327 columnNumber: 33 328 }, this) : "Create Key" 329 }, 330 void 0, 331 false, 332 { 333 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 334 lineNumber: 237, 335 columnNumber: 17 336 }, 337 this 338 ) 339 ] }, void 0, true, { 340 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 341 lineNumber: 221, 342 columnNumber: 13 343 }, this) 344 ] 345 }, 346 void 0, 347 true, 348 { 349 fileName: "/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", 350 lineNumber: 81, 351 columnNumber: 5 352 }, 353 this 354 ); 355} 356_c = CreateAPIKeyDialog; 357var _c; 358$RefreshReg$(_c, "CreateAPIKeyDialog"); 359if (import.meta.hot && !inWebWorker) { 360 window.$RefreshReg$ = prevRefreshReg; 361 window.$RefreshSig$ = prevRefreshSig; 362} 363if (import.meta.hot && !inWebWorker) { 364 RefreshRuntime.__hmr_import(import.meta.url).then((currentExports) => { 365 RefreshRuntime.registerExportsForReactRefresh("/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", currentExports); 366 import.meta.hot.accept((nextExports) => { 367 if (!nextExports) return; 368 const invalidateMessage = RefreshRuntime.validateRefreshBoundaryAndEnqueueUpdate("/app/src/features/developer-studio/components/api-keys/CreateAPIKeyDialog.tsx", currentExports, nextExports); 369 if (invalidateMessage) import.meta.hot.invalidate(invalidateMessage); 370 }); 371 }); 372} 373 374//# sourceMappingURL=data:application/json;base64,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5QixJQUFJO0FBQUEsZ0JBQ0p4QixTQUFTQSxDQUFDNEIsVUFBVUEsTUFBTUMsUUFBUUMsU0FBUyxTQUFTLFlBQVk7QUFBQSxnQkFDaEUsV0FBVyxFQUFFOUIsU0FBU0EsQ0FBQzRCLFVBQVVBLE1BQU1DLFFBQVFDLFNBQVMsU0FBUyxZQUFZLFVBQVU7QUFBQSxnQkFDdkYsa0JBQWtCLEVBQUU5QixTQUFTQSxDQUFDNEIsVUFBVUEsTUFBTUMsUUFBUUMsU0FBUyxTQUFTLFlBQVlFLFFBQVc3QixPQUFPQSxDQUFDeUIsVUFBVUEsTUFBTUMsUUFBUUMsU0FBUyxTQUFTLFlBQVlFLE9BQVU7QUFBQSxjQUMzSztBQUFBLGNBRUN4QyxxQkFBVyx1QkFBQyxvQkFBaUIsTUFBTSxJQUFJLE9BQU0sYUFBbEM7QUFBQTtBQUFBO0FBQUE7QUFBQSxxQkFBMkMsSUFBTTtBQUFBO0FBQUEsWUFyQmpFO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQSxVQXNCQTtBQUFBLGFBdENKO0FBQUE7QUFBQTtBQUFBO0FBQUEsZUF1Q0E7QUFBQTtBQUFBO0FBQUEsSUFuTEo7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUFBLEVBb0xBO0FBRVI7QUFBQ3lDLEtBNU11QnREO0FBQWtCLElBQUFzRDtBQUFBLGFBQUFBLElBQUEiLCJuYW1lcyI6WyJBbGVydCIsIkJveCIsIkJ1dHRvbiIsIkNpcmN1bGFyUHJvZ3Jlc3MiLCJEaWFsb2ciLCJEaWFsb2dBY3Rpb25zIiwiRGlhbG9nQ29udGVudCIsIkRpYWxvZ1RpdGxlIiwiRm9ybUNvbnRyb2wiLCJJbnB1dExhYmVsIiwiTWVudUl0ZW0iLCJTZWxlY3QiLCJUZXh0RmllbGQiLCJUeXBvZ3JhcGh5IiwiQ3JlYXRlQVBJS2V5RGlhbG9nIiwicHJvcHMiLCJvcGVuIiwiYWN0aXZlVGVuYW50SWQiLCJ3b3Jrc3BhY2V
374MaXN0IiwiaW5zdGFuY2VMaXN0Iiwic2VsZWN0ZWRXb3Jrc3BhY2VJZCIsInNlbGVjdGVkSW5zdGFuY2VJZCIsImtleU5hbWUiLCJ3b3Jrc3BhY2VzTG9hZGluZyIsImluc3RhbmNlc0xvYWRpbmciLCJ3b3Jrc3BhY2VMb2FkRXJyb3IiLCJpbnN0YW5jZUxvYWRFcnJvciIsImNyZWF0aW5nIiwib25DbG9zZSIsIm9uV29ya3NwYWNlQ2hhbmdlIiwib25JbnN0YW5jZUNoYW5nZSIsIm9uS2V5TmFtZUNoYW5nZSIsIm9uU3VibWl0Iiwic3giLCJib3JkZXJSYWRpdXMiLCJiZ2NvbG9yIiwiYmFja2dyb3VuZEltYWdlIiwiZm9udFdlaWdodCIsImNvbG9yIiwiYm9yZGVyQm90dG9tIiwiYm9yZGVyQ29sb3IiLCJwYiIsIm10IiwibWIiLCJlIiwidGFyZ2V0IiwidmFsdWUiLCJQYXBlclByb3BzIiwiYm9yZGVyIiwibWFwIiwid3MiLCJpZCIsIm5hbWUiLCJkaXNwbGF5IiwiYWxpZ25JdGVtcyIsImdhcCIsImxlbmd0aCIsImluc3QiLCJtYXhMZW5ndGgiLCJweCIsImJvcmRlclRvcCIsInB0IiwidGV4dFRyYW5zZm9ybSIsInRoZW1lIiwicGFsZXR0ZSIsIm1vZGUiLCJ0cmltIiwidW5kZWZpbmVkIiwiX2MiXSwiaWdub3JlTGlzdCI6W10sInNvdXJjZXMiOlsiQ3JlYXRlQVBJS2V5RGlhbG9nLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge1xuICAgIEFsZXJ0LFxuICAgIEJveCxcbiAgICBCdXR0b24sXG4gICAgQ2lyY3VsYXJQcm9ncmVzcyxcbiAgICBEaWFsb2csXG4gICAgRGlhbG9nQWN0aW9ucyxcbiAgICBEaWFsb2dDb250ZW50LFxuICAgIERpYWxvZ1RpdGxlLFxuICAgIEZvcm1Db250cm9sLFxuICAgIElucHV0TGFiZWwsXG4gICAgTWVudUl0ZW0sXG4gICAgU2VsZWN0LFxuICAgIFRleHRGaWVsZCxcbiAgICBUeXBvZ3JhcGh5LFxufSBmcm9tICdAbXVpL21hdGVyaWFsJ1xuaW1wb3J0IHsgdHlwZSBXb3Jrc3BhY2VSZXNwb25zZSB9IGZyb20gJ0AvYXBpL3dvcmtzcGFjZXMnXG5pbXBvcnQgeyB0eXBlIEluc3RhbmNlUmVzcG9uc2UgfSBmcm9tICdAL2FwaS9pbnN0YW5jZXMnXG5cbmludGVyZmFjZSBDcmVhdGVBUElLZXlEaWFsb2dQcm9wcyB7XG4gICAgb3BlbjogYm9vbGVhblxuICAgIGFjdGl2ZVRlbmFudElkPzogc3RyaW5nIHwgbnVsbFxuICAgIHdvcmtzcGFjZUxpc3Q6IFdvcmtzcGFjZVJlc3BvbnNlW11cbiAgICBpbnN0YW5jZUxpc3Q6IEluc3RhbmNlUmVzcG9uc2VbXVxuICAgIHNlbGVjdGVkV29ya3NwYWNlSWQ6IHN0cmluZ1xuICAgIHNlbGVjdGVkSW5zdGFuY2VJZDogc3RyaW5nXG4gICAga2V5TmFtZTogc3RyaW5nXG4gICAgd29ya3NwYWNlc0xvYWRpbmc6IGJvb2xlYW5cbiAgICBpbnN0YW5jZXNMb2FkaW5nOiBib29sZWFuXG4gICAgd29ya3NwYWNlTG9hZEVycm9yOiBzdHJpbmcgfCBudWxsXG4gICAgaW5zdGFuY2VMb2FkRXJyb3I6IHN0cmluZyB8IG51bGxcbiAgICBjcmVhdGluZzogYm9vbGVhblxuICAgIG9uQ2xvc2U6ICgpID0+IHZvaWRcbiAgICBvbldvcmtzcGFjZUNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvbkluc3RhbmNlQ2hhbmdlOiAodmFsdWU6IHN0cmluZykgPT4gdm9pZFxuICAgIG9uS2V5TmFtZUNoYW5nZTogKHZhbHVlOiBzdHJpbmcpID0+IHZvaWRcbiAgICBvblN1Ym1pdDogKCkgPT4gdm9pZFxufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBDcmVhdGVBUElLZXlEaWFsb2cocHJvcHM6IENyZWF0ZUFQSUtleURpYWxvZ1Byb3BzKSB7XG4gICAgY29uc3Qge1xuICAgICAgICBvcGVuLFxuICAgICAgICBhY3RpdmVUZW5hbnRJZCxcbiAgICAgICAgd29ya3NwYWNlTGlzdCxcbiAgICAgICAgaW5zdGFuY2VMaXN0LFxuICAgICAgICBzZWxlY3RlZFdvcmtzcGFjZUlkLFxuICAgICAgICBzZWxlY3RlZEluc3RhbmNlSWQsXG4gICAgICAgIGtleU5hbWUsXG4gICAgICAgIHdvcmtzcGFjZXNMb2FkaW5nLFxuICAgICAgICBpbnN0YW5jZXNMb2FkaW5nLFxuICAgICAgICB3b3Jrc3BhY2VMb2FkRXJyb3IsXG4gICAgICAgIGluc3RhbmNlTG9hZEVycm9yLFxuICAgICAgICBjcmVhdGluZyxcbiAgICAgICAgb25DbG9zZSxcbiAgICAgICAgb25Xb3Jrc3BhY2VDaGFuZ2UsXG4gICAgICAgIG9uSW5zdGFuY2VDaGFuZ2UsXG4gICAgICAgIG9uS2V5TmFtZUNoYW5nZSxcbiAgICAgICAgb25TdWJtaXQsXG4gICAgfSA9IHByb3BzXG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8RGlhbG9nXG4gICAgICAgICAgICBvcGVuPXtvcGVufVxuICAgICAgICAgICAgb25DbG9zZT17b25DbG9zZX1cbiAgICAgICAgICAgIG1heFdpZHRoPVwic21cIlxuICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICBQYXBlclByb3BzPXt7XG4gICAgICAgICAgICAgICAgc3g6IHtcbiAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAzLFxuICAgICAgICAgICAgICAgICAgICBiZ2NvbG9yOiAnYmFja2dyb3VuZC5wYXBlcicsXG4gICAgICAgICAgICAgICAgICAgIGJhY2tncm91bmRJbWFnZTogJ25vbmUnLFxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH19XG4gICAgICAgID5cbiAgICAgICAgICAgIDxEaWFsb2dUaXRsZSBzeD17eyBmb250V2VpZ2h0OiA2MDAsIGNvbG9yOiAndGV4dC5wcmltYXJ5JywgYm9yZGVyQm90dG9tOiAnMXB4IHNvbGlkJywgYm9yZGVyQ29sb3I6ICdkaXZpZGVyJywgcGI6IDIgfX0+XG4gICAgICAgICAgICAgICAgQ3JlYXRlIE5ldyBBUEkgS2V5XG4gICAgICAgICAgICA8L0RpYWxvZ1RpdGxlPlxuICAgICAgICAgICAgPERpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICAgICAgeyFhY3RpdmVUZW5hbnRJZCAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxBbGVydCBzZXZlcml0eT1cIndhcm5pbmdcIiBzeD17eyBtdDogMiwgbWI6IDIgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICBTZWxlY3QgYW4gYWN0aXZlIHRlbmFudCAod29ya3NwYWNlIHN3aXRjaGVyKSBiZWZvcmUgY3JlYXRpbmcgYSBrZXkuXG4gICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8Rm9ybUNvbnRyb2xcbiAgICAgICAgICAgICAgICAgICAgZnVsbFdpZHRoXG4gICAgICAgICAgICAgICAgICAgI
374HN4PXt7XG4gICAgICAgICAgICAgICAgICAgICAgICBtdDogMiwgbWI6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJiAuTXVpSW5wdXRMYWJlbC1yb290JzogeyBjb2xvcjogJ3RleHQuc2Vjb25kYXJ5JyB9LFxuICAgICAgICAgICAgICAgICAgICAgICAgJyYgLk11aUlucHV0TGFiZWwtcm9vdC5NdWktZm9jdXNlZCc6IHsgY29sb3I6ICd0ZXh0LnNlY29uZGFyeScgfSxcbiAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgZGlzYWJsZWQ9eyFhY3RpdmVUZW5hbnRJZCB8fCB3b3Jrc3BhY2VzTG9hZGluZ31cbiAgICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgICAgIDxJbnB1dExhYmVsIGlkPVwiYXBpLWtleS13b3Jrc3BhY2UtbGFiZWxcIj5Xb3Jrc3BhY2U8L0lucHV0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsSWQ9XCJhcGkta2V5LXdvcmtzcGFjZS1sYWJlbFwiXG4gICAgICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIldvcmtzcGFjZVwiXG4gICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZT17c2VsZWN0ZWRXb3Jrc3BhY2VJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gb25Xb3Jrc3BhY2VDaGFuZ2UoZS50YXJnZXQudmFsdWUpfVxuICAgICAgICAgICAgICAgICAgICAgICAgTWVudVByb3BzPXt7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFwZXJQcm9wczoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeDoge1xuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmdjb2xvcjogJ2JhY2tncm91bmQucGFwZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFja2dyb3VuZEltYWdlOiAnbm9uZScsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXI6ICcxcHggc29saWQnLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyQ29sb3I6ICdkaXZpZGVyJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgICAgIHt3b3Jrc3BhY2VMaXN0Lm1hcCgod3MpID0+IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW0ga2V5PXt3cy5pZH0gdmFsdWU9e3dzLmlkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAge3dzLm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9NZW51SXRlbT5cbiAgICAgICAgICAgICAgICAgICAgICAgICkpfVxuICAgICAgICAgICAgICAgICAgICA8L1NlbGVjdD5cbiAgICAgICAgICAgICAgICA8L0Zvcm1Db250cm9sPlxuICAgICAgICAgICAgICAgIHt3b3Jrc3BhY2VzTG9hZGluZyAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxCb3ggc3g9e3sgZGlzcGxheTogJ2ZsZXgnLCBhbGlnbkl0ZW1zOiAnY2VudGVyJywgZ2FwOiAxLCBtYjogMiB9fT5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxDaXJjdWxhclByb2dyZXNzIHNpemU9ezE0fSAvPlxuICAgICAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImNhcHRpb25cIiBjb2xvcj1cInRleHQuc2Vjb25kYXJ5XCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgTG9hZGluZyB3b3Jrc3BhY2VzLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge3dvcmtzcGFjZUxvYWRFcnJvciAmJiAoXG4gICAgICAgICAgICAgICAgICAgIDxBbGVydCBzZXZlcml0eT1cImVycm9yXCIgc3g9e3sgbWI6IDIsIGJvcmRlclJhZGl1czogMS41IH19PlxuICAgICAgICAgICAgICAgICAgICAgICAge3dvcmtzcGFjZUxvYWRFcnJvcn1cbiAgICAgICAgICAgICAgICAgICAgPC9BbGVydD5cbiAgICAgICAgICAgICAgICApfVxuICAgICAgICAgICAgICAgIDxGb3JtQ29udHJvbFxuICAgICAgICAgICAgICAgICAgICBmdWxsV2lkdGhcbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIG1iOiAyLFxuICAgICAgICAgICAgICAgICAgICAgICAgJyYgLk11aUlucHV0TGFiZWwtcm9vdCc6IHsgY29sb3I6ICd0ZXh0LnNlY29uZGFyeScgfSxcbiAgICAgICAgICAgICAgICAgICAgICAgICcmIC5NdWlJbnB1dExhYmVsLXJvb3QuTXVpLWZvY3VzZWQnOiB7IGNvbG9yOiAndGV4dC5zZWNvbmRhcnknIH0sXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshc2VsZWN0ZWRXb3Jrc3BhY2VJZCB8fCBpbnN0YW5jZXNMb2FkaW5nfVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgPElucHV0TGFiZWwgaWQ9XCJhcGkta2V5LWluc3RhbmNlLWxhYmVsXCI+SW5zdGFuY2U8L0lucHV0TGFiZWw+XG4gICAgICAgICAgICAgICAgICAgIDxTZWxlY3RcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsSWQ9XCJhcGkta2V5LWluc3RhbmNlLWxhYmVsXCJcbiAgICAgICAgICAgICAgICAgICAgICAgIGxhYmVsPVwiSW5zdGFuY2VcIlxuICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWU9e3NlbGVjdGVkSW5zdGFuY2VJZH1cbiAgICAgICAgICAgICAgICAgICAgICAgIG9uQ2hhbmdlPXsoZSkgPT4gb25JbnN0YW5jZUNoYW5nZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgICAgICBNZW51UHJvcHM9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXBlclByb3BzOiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN4OiB7XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZ2NvbG9yOiAnYmFja2dyb3VuZC5wYXBlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYWNrZ3JvdW5kSW1hZ2U6ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlcjogJzFweCBzb2xpZCcsXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJDb2xvcjogJ2RpdmlkZXInLFxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICAgICAgfX1cbiAgICAgICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICAgICAge2luc3RhbmNlTGlzdC5sZW5ndGggPT09IDAgJiYgc2VsZWN0ZWRXb3Jrc3B
374hY2VJZCAmJiAhaW5zdGFuY2VzTG9hZGluZyA/IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8TWVudUl0ZW0gdmFsdWU9XCJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm8gSW5zdGFuY2VcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L01lbnVJdGVtPlxuICAgICAgICAgICAgICAgICAgICAgICAgKSA6IChcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YW5jZUxpc3QubWFwKChpbnN0KSA9PiAoXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxNZW51SXRlbSBrZXk9e2luc3QuaWR9IHZhbHVlPXtpbnN0LmlkfT5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHtpbnN0Lm5hbWV9XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvTWVudUl0ZW0+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgKSlcbiAgICAgICAgICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAgICAgIDwvU2VsZWN0PlxuICAgICAgICAgICAgICAgIDwvRm9ybUNvbnRyb2w+XG4gICAgICAgICAgICAgICAge2luc3RhbmNlc0xvYWRpbmcgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8Qm94IHN4PXt7IGRpc3BsYXk6ICdmbGV4JywgYWxpZ25JdGVtczogJ2NlbnRlcicsIGdhcDogMSwgbWI6IDIgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICA8Q2lyY3VsYXJQcm9ncmVzcyBzaXplPXsxNH0gLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxUeXBvZ3JhcGh5IHZhcmlhbnQ9XCJjYXB0aW9uXCIgY29sb3I9XCJ0ZXh0LnNlY29uZGFyeVwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvYWRpbmcgaW5zdGFuY2VzLi4uXG4gICAgICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgICAgIDwvQm94PlxuICAgICAgICAgICAgICAgICl9XG4gICAgICAgICAgICAgICAge2luc3RhbmNlTG9hZEVycm9yICYmIChcbiAgICAgICAgICAgICAgICAgICAgPEFsZXJ0IHNldmVyaXR5PVwiZXJyb3JcIiBzeD17eyBtYjogMiwgYm9yZGVyUmFkaXVzOiAxLjUgfX0+XG4gICAgICAgICAgICAgICAgICAgICAgICB7aW5zdGFuY2VMb2FkRXJyb3J9XG4gICAgICAgICAgICAgICAgICAgIDwvQWxlcnQ+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICB7c2VsZWN0ZWRXb3Jrc3BhY2VJZCAmJiAhaW5zdGFuY2VzTG9hZGluZyAmJiBpbnN0YW5jZUxpc3QubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICAgICAgICAgICAgPFR5cG9ncmFwaHkgdmFyaWFudD1cImJvZHkyXCIgY29sb3I9XCJ0ZXh0LnNlY29uZGFyeVwiIHN4PXt7IG1iOiAyIH19PlxuICAgICAgICAgICAgICAgICAgICAgICAgTm8gYWN0aXZlIGluc3RhbmNlcyBpbiB0aGlzIHdvcmtzcGFjZS4gQ3JlYXRlIGFuIGluc3RhbmNlIGZpcnN0LlxuICAgICAgICAgICAgICAgICAgICA8L1R5cG9ncmFwaHk+XG4gICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8VGV4dEZpZWxkXG4gICAgICAgICAgICAgICAgICAgIGZ1bGxXaWR0aFxuICAgICAgICAgICAgICAgICAgICBsYWJlbD1cIktleSBuYW1lXCJcbiAgICAgICAgICAgICAgICAgICAgcGxhY2Vob2xkZXI9XCJlLmcuLCBQcm9kdWN0aW9uIEFQSVwiXG4gICAgICAgICAgICAgICAgICAgIHZhbHVlPXtrZXlOYW1lfVxuICAgICAgICAgICAgICAgICAgICBvbkNoYW5nZT17KGUpID0+IG9uS2V5TmFtZUNoYW5nZShlLnRhcmdldC52YWx1ZSl9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXshc2VsZWN0ZWRJbnN0YW5jZUlkfVxuICAgICAgICAgICAgICAgICAgICBpbnB1dFByb3BzPXt7IG1heExlbmd0aDogMTAwIH19XG4gICAgICAgICAgICAgICAgICAgIGhlbHBlclRleHQ9XCJTaG93biBpbiB5b3VyIEFQSSBrZXlzIGxpc3QgKG1heCAxMDAgY2hhcmFjdGVycykuXCJcbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgICcmIC5NdWlJbnB1dExhYmVsLXJvb3QnOiB7IGNvbG9yOiAndGV4dC5zZWNvbmRhcnknIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAnJiAuTXVpSW5wdXRMYWJlbC1yb290Lk11aS1mb2N1c2VkJzogeyBjb2xvcjogJ3RleHQuc2Vjb25kYXJ5JyB9LFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L0RpYWxvZ0NvbnRlbnQ+XG4gICAgICAgICAgICA8RGlhbG9nQWN0aW9ucyBzeD17eyBweDogMywgcGI6IDIsIGJvcmRlclRvcDogJzFweCBzb2xpZCcsIGJvcmRlckNvbG9yOiAnZGl2aWRlcicsIHB0OiAyIH19PlxuICAgICAgICAgICAgICAgIDxCdXR0b25cbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25DbG9zZX1cbiAgICAgICAgICAgICAgICAgICAgc3g9e3tcbiAgICAgICAgICAgICAgICAgICAgICAgIHRleHRUcmFuc2Zvcm06ICdub25lJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbG9yOiAndGV4dC5zZWNvbmRhcnknLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNTAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyOiAnMXB4IHNvbGlkJyxcbiAgICAgICAgICAgICAgICAgICAgICAgIGJvcmRlckNvbG9yOiAnZGl2aWRlcicsXG4gICAgICAgICAgICAgICAgICAgICAgICBib3JkZXJSYWRpdXM6ICc4cHgnLFxuICAgICAgICAgICAgICAgICAgICAgICAgcHg6IDIsXG4gICAgICAgICAgICAgICAgICAgICAgICAnJjpob3Zlcic6IHsgYmdjb2xvcjogKHRoZW1lKSA9PiB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdkYXJrJyA/ICcjMWYxZjFmJyA6ICcjZjlmYWZiJyB9LFxuICAgICAgICAgICAgICAgICAgICB9fVxuICAgICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICAgICAgQ2FuY2VsXG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICAgICAgPEJ1dHRvblxuICAgICAgICAgICAgICAgICAgICB2Y
374XJpYW50PVwiY29udGFpbmVkXCJcbiAgICAgICAgICAgICAgICAgICAgb25DbGljaz17b25TdWJtaXR9XG4gICAgICAgICAgICAgICAgICAgIGRpc2FibGVkPXtcbiAgICAgICAgICAgICAgICAgICAgICAgICFhY3RpdmVUZW5hbnRJZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIXNlbGVjdGVkSW5zdGFuY2VJZCB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgIWtleU5hbWUudHJpbSgpIHx8XG4gICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGluZyB8fFxuICAgICAgICAgICAgICAgICAgICAgICAgd29ya3NwYWNlc0xvYWRpbmcgfHxcbiAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbmNlc0xvYWRpbmdcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgICAgICBzeD17e1xuICAgICAgICAgICAgICAgICAgICAgICAgdGV4dFRyYW5zZm9ybTogJ25vbmUnLFxuICAgICAgICAgICAgICAgICAgICAgICAgZm9udFdlaWdodDogNjAwLFxuICAgICAgICAgICAgICAgICAgICAgICAgYm9yZGVyUmFkaXVzOiAnOHB4JyxcbiAgICAgICAgICAgICAgICAgICAgICAgIHB4OiAzLFxuICAgICAgICAgICAgICAgICAgICAgICAgYmdjb2xvcjogKHRoZW1lKSA9PiB0aGVtZS5wYWxldHRlLm1vZGUgPT09ICdkYXJrJyA/ICcjM2YzZjQ2JyA6ICcjMWExYTJlJyxcbiAgICAgICAgICAgICAgICAgICAgICAgICcmOmhvdmVyJzogeyBiZ2NvbG9yOiAodGhlbWUpID0+IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2RhcmsnID8gJyM1MjUyNWInIDogJyMyZDJkNDQnIH0sXG4gICAgICAgICAgICAgICAgICAgICAgICAnJi5NdWktZGlzYWJsZWQnOiB7IGJnY29sb3I6ICh0aGVtZSkgPT4gdGhlbWUucGFsZXR0ZS5tb2RlID09PSAnZGFyaycgPyAnIzI3MjcyQScgOiB1bmRlZmluZWQsIGNvbG9yOiAodGhlbWUpID0+IHRoZW1lLnBhbGV0dGUubW9kZSA9PT0gJ2RhcmsnID8gJyM3MTcxN2EnIDogdW5kZWZpbmVkIH0sXG4gICAgICAgICAgICAgICAgICAgIH19XG4gICAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgICAgICB7Y3JlYXRpbmcgPyA8Q2lyY3VsYXJQcm9ncmVzcyBzaXplPXsyMH0gY29sb3I9XCJpbmhlcml0XCIgLz4gOiAnQ3JlYXRlIEtleSd9XG4gICAgICAgICAgICAgICAgPC9CdXR0b24+XG4gICAgICAgICAgICA8L0RpYWxvZ0FjdGlvbnM+XG4gICAgICAgIDwvRGlhbG9nPlxuICAgIClcbn1cbiJdLCJmaWxlIjoiL2FwcC9zcmMvZmVhdHVyZXMvZGV2ZWxvcGVyLXN0dWRpby9jb21wb25lbnRzL2FwaS1rZXlzL0NyZWF0ZUFQSUtleURpYWxvZy50c3gifQ==
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.