PageSourceSearch

https://www.peek-a-box.shop/_next/static/chunks/1034fe645d1a3fc8.js?dpl=dpl_Hn2uUFskxFtgXXWVv1pdKveM7DkM

js peek-a-box.shop collected 2026-10-07 22:16:48 UTC 18,423 bytes, 1 lines download raw bytes

1(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,45500,e=>{"use strict";let t={"x-descope-sdk-name":"nextjs","x-descope-sdk-version":"0.15.9"};e.s(["baseHeaders",()=>t])},18540,e=>{"use strict";var t=e.i(63133),s=e.i(99210),s=s,r=e.i(71645),o=e.i(45500);Object.assign(t.baseHeaders,o.baseHeaders);let n=({...e})=>r.default.createElement(s.default,{sessionTokenViaCookie:{sameSite:"Lax"},refreshTokenViaCookie:{sameSite:"Lax"},...e});e.s(["default",()=>n],18540)},14372,e=>{"use strict";var t=e.i(71645),s=e.i(70703),r=e.i(18566),o=e.i(45500);function n(n){return(0,s.default)(()=>e.A(37217).then(e=>{e.baseHeaders&&Object.assign(e.baseHeaders,o.baseHeaders);let s=e[n],a=({redirectAfterSuccess:e="",redirectAfterError:o="",...n})=>{let a=(0,r.useRouter)(),i={...n};if(e){let t=i.onSuccess;i.onSuccess=(...s)=>{t?.(...s),a.push(e)}}if(o){let e=i.onError;i.onError=(...t)=>{e?.(...t),a.push(o)}}return t.default.createElement(s,i)};return a.displayName=`Descope${n}`,{default:a}}),{ssr:!1})}let a=n("Descope"),i=n("SignInFlow"),l=n("SignUpFlow"),d=n("SignUpOrInFlow");e.s(["Descope",()=>a,"SignInFlow",()=>i,"SignUpFlow",()=>l,"SignUpOrInFlow",()=>d])},24352,e=>{"use strict";var t=e.i(71645),s=e.i(70703);function r(r){return(0,s.default)(()=>e.A(37217).then(e=>{let s=e[r],o=e=>t.default.createElement(s,e);return o.displayName=`Descope${r}`,{default:o}}),{ssr:!1})}let o=r("UserManagement"),n=r("RoleManagement"),a=r("AccessKeyManagement"),i=r("AuditManagement"),l=r("UserProfile"),d=r("ApplicationsPortal"),u=r("TenantProfile"),c=r("OutboundApplications");e.s(["AccessKeyManagement",()=>a,"ApplicationsPortal",()=>d,"AuditManagement",()=>i,"OutboundApplications",()=>c,"RoleManagement",()=>n,"TenantProfile",()=>u,"UserManagement",()=>o,"UserProfile",()=>l])},67585,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"BailoutToCSR",{enumerable:!0,get:function(){return o}});let r=e.r(32061);function o({reason:e,children:t}){if("undefined"==typeof window)throw Object.defineProperty(new r.BailoutToCSRError(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return t}},9885,(e,t,s)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"encodeURIPath",{enumerable:!0,get:function(){return r}})},52157,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"PreloadChunks",{enumerable:!0,get:function(){return i}});let r=e.r(43476),o=e.r(74080),n=e.r(63599),a=e.r(9885);function i({moduleIds:e}){if("undefined"!=typeof window)return null;let t=n.workAsyncStorage.getStore();if(void 0===t)return null;let s=[];if(t.reactLoadableManifest&&e){let r=t.reactLoadableManifest;for(let t of e){if(!r[t])continue;let e=r[t].files;s.push(...e)}}return 0===s.length?null:(0,r.jsx)(r.Fragment,{children:s.map(e=>{let s=`${t.assetPrefix}/_next/${(0,a.encodeURIPath)(e)}?dpl=dpl_Hn2uUFskxFtgXXWVv1pdKveM7DkM`;return e.endsWith(".css")?(0,r.jsx)("link",{precedence:"dynamic",href:s,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,o.preload)(s,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return d}});let r=e.r(43476),o=e.r(71645),n=e.r(67585),a=e.r(52157);function i(e){return{default:e&&"default"in e?e.default:e}}let l={loader:()=>Promise.resolve(i(()=>null)),loading:null,ssr:!0},d=function(e){let t={...l,...e},s=(0,o.lazy)(()=>t.loader().then(i)),d=t.loading;function u(e){let i=d?(0,r.jsx)(d,{isLoading:!0,pastDelay:!0,error:null}):null,l=!t.ssr||!!t.loading,u=l?o.Suspense:o.Fragment,c=t.ssr?(0,r.jsxs)(r.Fragment,{children:["undefined"==typeof window?(0,r.jsx)(a.PreloadChunks,{moduleIds:t.modules}):null,(0,r.jsx)(s,{...e})]}):(0,r.jsx)(n.BailoutToCSR,{reason:"next/dynamic",children:(0,r.jsx)(s,{...e})});return(0,r.jsx)(u,{...l?{fallback:i}:{},children:c})}return u.displayName="LoadableComponent",u}},70703,(e,t,s)=>{"use strict";Object.defineProperty(s,"__esModule",{value:!0}),Object.defineProperty(s,"default",{enumerable:!0,get:function(){return o}});let r=e.r(55682)._(e.r(69093));function o(e,t){let s={};"function"==typeof e&&(s.loader=e);let o={...s,...t};return(0,r.default)({...o,modules:o.loadableGenerated?.modules})}("function"==typeof s.default||"object"==typeof s.default&&null!==s.default)&&void 0===s.default.__esModule&&(Object.defineProperty(s.default,"__esMo
1dule",{value:!0}),Object.assign(s.default,s),t.exports=s.default)},18566,(e,t,s)=>{t.exports=e.r(76562)},63133,e=>{"use strict";let t={"x-descope-sdk-name":"react","x-descope-sdk-version":"2.26.0"},s="undefined"!=typeof window;e.s(["IS_BROWSER",()=>s,"baseHeaders",()=>t])},29737,e=>{"use strict";let t=e.i(71645).default.createContext(void 0);e.s(["default",()=>t])},78313,e=>{"use strict";let t=e=>(...t)=>{if(!e)throw Error("You can only use this function after sdk initialization. Make sure to supply 'projectId' to <AuthProvider /> component");return e(...t)},s=e=>(...t)=>{let s;try{s=e(...t)}catch(e){console.error(e)}return s},r=()=>"undefined"!=typeof window&&!!window.descopeBridge;e.s(["isDescopeBridge",()=>r,"withValidation",()=>t,"wrapInTry",()=>s])},80385,e=>{"use strict";let t;var s=e.i(60688),r=e.i(63133),o=e.i(78313);let n=e=>{let o=(0,s.createSdk)(Object.assign({persistTokens:r.IS_BROWSER,autoRefresh:r.IS_BROWSER},e));return t=o,o},a=()=>n({projectId:"temp pid",persistTokens:!1,autoRefresh:!1,storeLastAuthenticatedUser:!1});t=a();let i=()=>r.IS_BROWSER?null==t?void 0:t.getSessionToken():(console.warn("Get session token is not supported in SSR"),""),l=()=>r.IS_BROWSER?null==t?void 0:t.getRefreshToken():(console.warn("Get refresh token is not supported in SSR"),""),d=(e=i())=>null==t?void 0:t.isJwtExpired(e),u=(e=l())=>null==t?void 0:t.isJwtExpired(e),c=(0,o.wrapInTry)((e=i(),s)=>null==t?void 0:t.getJwtPermissions(e,s)),m=(0,o.wrapInTry)((e=i(),s)=>null==t?void 0:t.getJwtRoles(e,s)),f=(0,o.wrapInTry)((e=i())=>null==t?void 0:t.getCurrentTenant(e)),p=(e=l())=>null==t?void 0:t.refresh(e),h=()=>t;e.s(["createTempSdk",()=>a,"default",()=>n,"getCurrentTenant",()=>f,"getGlobalSdk",()=>h,"getJwtPermissions",()=>c,"getJwtRoles",()=>m,"getRefreshToken",()=>l,"getSessionToken",()=>i,"isRefreshTokenExpired",()=>u,"isSessionTokenExpired",()=>d,"refresh",()=>p])},63178,e=>{"use strict";var t=e.i(71645),s=(e,t,s,r,o,n,a,i)=>{let l=document.documentElement,d=["light","dark"];function u(t){var s;(Array.isArray(e)?e:[e]).forEach(e=>{let s="class"===e,r=s&&n?o.map(e=>n[e]||e):o;s?(l.classList.remove(...r),l.classList.add(n&&n[t]?n[t]:t)):l.setAttribute(e,t)}),s=t,i&&d.includes(s)&&(l.style.colorScheme=s)}if(r)u(r);else try{let e=localStorage.getItem(t)||s,r=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;u(r)}catch(e){}},r=["light","dark"],o="(prefers-color-scheme: dark)",n="undefined"==typeof window,a=t.createContext(void 0),i={setTheme:e=>{},themes:[]},l=()=>{var e;return null!=(e=t.useContext(a))?e:i},d=e=>t.useContext(a)?t.createElement(t.Fragment,null,e.children):t.createElement(c,{...e}),u=["light","dark"],c=({forcedTheme:e,disableTransitionOnChange:s=!1,enableSystem:n=!0,enableColorScheme:i=!0,storageKey:l="theme",themes:d=u,defaultTheme:c=n?"system":"light",attribute:g="data-theme",value:b,children:x,nonce:y,scriptProps:k})=>{let[w,v]=t.useState(()=>f(l,c)),[S,j]=t.useState(()=>"system"===w?h():w),T=b?Object.values(b):d,C=t.useCallback(e=>{let t=e;if(!t)return;"system"===e&&n&&(t=h());let o=b?b[t]:t,a=s?p(y):null,l=document.documentElement,d=e=>{"class"===e?(l.classList.remove(...T),o&&l.classList.add(o)):e.startsWith("data-")&&(o?l.setAttribute(e,o):l.removeAttribute(e))};if(Array.isArray(g)?g.forEach(d):d(g),i){let e=r.includes(c)?c:null,s=r.includes(t)?t:e;l.style.colorScheme=s}null==a||a()},[y]),E=t.useCallback(e=>{let t="function"==typeof e?e(w):e;v(t);try{localStorage.setItem(l,t)}catch(e){}},[w]),R=t.useCallback(t=>{j(h(t)),"system"===w&&n&&!e&&C("system")},[w,e]);t.useEffect(()=>{let e=window.matchMedia(o);return e.addListener(R),R(e),()=>e.removeListener(R)},[R]),t.useEffect(()=>{let e=e=>{e.key===l&&(e.newValue?v(e.newValue):E(c))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[E]),t.useEffect(()=>{C(null!=e?e:w)},[e,w]);let A=t.useMemo(()=>({theme:w,setTheme:E,forcedTheme:e,resolvedTheme:"system"===w?S:w,themes:n?[...d,"system"]:d,systemTheme:n?S:void 0}),[w,E,e,S,n,d]);return t.createElement(a.Provider,{value:A},t.createElement(m,{forcedTheme:e,storageKey:l,attribute:g,enableSystem:n,enableColorScheme:i,defaultTheme:c,value:b,themes:d,nonce:y,scriptProps:k}),x)},m=t.memo(({forcedTheme:e,storageKey:r,attribute:o,enableSystem:n,enableColorScheme:a,defaultTheme:i,value:l,themes:d,nonce:u,scriptProps:c})=>{let m=JSON.stringify([o,r,i,e,d,l,n,a]).slice(1,-1);return t.createElement("script",{...c,suppressHydrationWarning:!0,nonce:"undefined"==typeof window?u:"",dangerouslySetInnerHTML:{__html:`(${s.toString()})(${m})`}})}),f=(e,t)=>{let s;if(!n){try{s=localStorage.getItem(e)||void 0}catch(e){}return s||t}},p=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},h=e=>
1(e||(e=window.matchMedia(o)),e.matches?"dark":"light");e.s(["ThemeProvider",()=>d,"useTheme",()=>l])},75254,e=>{"use strict";var t=e.i(71645);let s=(...e)=>e.filter((e,t,s)=>!!e&&""!==e.trim()&&s.indexOf(e)===t).join(" ").trim();var r={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let o=(0,t.forwardRef)(({color:e="currentColor",size:o=24,strokeWidth:n=2,absoluteStrokeWidth:a,className:i="",children:l,iconNode:d,...u},c)=>(0,t.createElement)("svg",{ref:c,...r,width:o,height:o,stroke:e,strokeWidth:a?24*Number(n)/Number(o):n,className:s("lucide",i),...u},[...d.map(([e,s])=>(0,t.createElement)(e,s)),...Array.isArray(l)?l:[l]])),n=(e,r)=>{let n=(0,t.forwardRef)(({className:n,...a},i)=>(0,t.createElement)(o,{ref:i,iconNode:r,className:s(`lucide-${e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,n),...a}));return n.displayName=`${e}`,n};e.s(["default",()=>n],75254)},99210,e=>{"use strict";var t=e.i(71645),s=e.i(29737),r=e.i(78313),o=e.i(63133),n=e.i(80385);let a=({projectId:e,baseUrl:a="",baseStaticUrl:i="",baseCdnUrl:l="",sessionTokenViaCookie:d=!1,refreshTokenViaCookie:u=!1,hooks:c,persistTokens:m=!0,autoRefresh:f=!0,oidcConfig:p,storeLastAuthenticatedUser:h=!0,keepLastAuthenticatedUserAfterLogout:g=!1,refreshCookieName:b="",getExternalToken:x,customStorage:y,children:k})=>{let[w,v]=(0,t.useState)(),[S,j]=(0,t.useState)(),[T,C]=(0,t.useState)(),[E,R]=(0,t.useState)(!1),[A,P]=(0,t.useState)(!1),[U,O]=(0,t.useState)(!1),[L,N]=(0,t.useState)(!!p),I=(0,t.useRef)(!1),_=(({projectId:e,baseUrl:s,persistTokens:r,autoRefresh:a,sessionTokenViaCookie:i,refreshTokenViaCookie:l,refreshCookieName:d,oidcConfig:u,storeLastAuthenticatedUser:c,keepLastAuthenticatedUserAfterLogout:m,getExternalToken:f,hooks:p,customStorage:h})=>(0,t.useMemo)(()=>{if(e)return(0,n.default)({projectId:e,baseUrl:s,sessionTokenViaCookie:i,refreshTokenViaCookie:l,baseHeaders:o.baseHeaders,persistTokens:r,autoRefresh:a,refreshCookieName:d,oidcConfig:u,storeLastAuthenticatedUser:c,keepLastAuthenticatedUserAfterLogout:m,hooks:p,getExternalToken:f,customStorage:h})},[e,s,JSON.stringify(i),JSON.stringify(l),f,h]))({projectId:e,baseUrl:a,persistTokens:m,autoRefresh:f,sessionTokenViaCookie:d,refreshTokenViaCookie:u,hooks:c,oidcConfig:p,storeLastAuthenticatedUser:h,keepLastAuthenticatedUserAfterLogout:g,refreshCookieName:b,getExternalToken:x,customStorage:y});(0,t.useEffect)(()=>{if(_){let e=_.onSessionTokenChange(j),t=_.onUserChange(v),s=_.onIsAuthenticatedChange(R),r=_.onClaimsChange(C);return()=>{e(),t(),s(),r()}}},[_]);let M=(0,t.useRef)(!1),D=(0,t.useRef)(!1);(0,t.useEffect)(()=>{_&&p&&!I.current&&(I.current=!0,_.oidc.finishLoginIfNeed().finally(()=>{N(!1),M.current=!0}))},[]);let F=(0,t.useCallback)(()=>{(0,r.isDescopeBridge)()||M.current||(M.current=!0,O(!0),(0,r.withValidation)(null==_?void 0:_.refresh)(void 0,!0).then(()=>{O(!1)}))},[_]),V=(0,t.useCallback)(()=>{D.current||(D.current=!0,P(!0),(0,r.withValidation)(_.me)().then(()=>{P(!1)}))},[_]),B=(0,t.useMemo)(()=>({fetchUser:V,user:w,isUserLoading:A,isUserFetched:D.current,fetchSession:F,session:S,isAuthenticated:E,isSessionLoading:U,isOidcLoading:L,isSessionFetched:M.current,projectId:e,baseUrl:a,baseStaticUrl:i,baseCdnUrl:l,storeLastAuthenticatedUser:h,keepLastAuthenticatedUserAfterLogout:g,refreshCookieName:b,customStorage:y,setUser:v,setSession:j,setIsAuthenticated:R,claims:T,sdk:_}),[V,w,A,D.current,F,S,E,U,L,M.current,e,a,i,l,g,b,y,v,j,R,T,_]);return t.default.createElement(s.default.Provider,{value:B},k)};e.s(["default",()=>a],99210)},89554,e=>{"use strict";var t=e.i(43476),s=e.i(63178);function r({children:e,...r}){return(0,t.jsx)(s.ThemeProvider,{...r,children:e})}e.s(["ThemeProvider",()=>r])},63135,e=>{"use strict";var t=e.i(43476),s=e.i(71645),r=e.i(26999),o=e.i(95926),n=e.i(47163);function a({...e}){return(0,t.jsx)(r.Root,{"data-slot":"dialog",...e})}function i({...e}){return(0,t.jsx)(r.Portal,{"data-slot":"dialog-portal",...e})}function l({className:e,...s}){return(0,t.jsx)(r.Overlay,{"data-slot":"dialog-overlay",className:(0,n.cn)("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/50",e),...s})}function d({className:e,children:s,showCloseButton:a=!0,...d}){return(0,t.jsxs)(i,{"data-slot":"dialog-portal",children:[(0,t.jsx)(l,{}),(0,t.jsxs)(r.Content,{"data-slot":"dialog-content",className:(0,n.cn)("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 roun
1ded-lg border p-6 shadow-lg duration-200 sm:max-w-lg",e),...d,children:[s,a&&(0,t.jsxs)(r.Close,{"data-slot":"dialog-close",className:"ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",children:[(0,t.jsx)(o.XIcon,{}),(0,t.jsx)("span",{className:"sr-only",children:"Close"})]})]})]})}function u({className:e,...s}){return(0,t.jsx)("div",{"data-slot":"dialog-header",className:(0,n.cn)("flex flex-col gap-2 text-center sm:text-left",e),...s})}function c({className:e,...s}){return(0,t.jsx)(r.Title,{"data-slot":"dialog-title",className:(0,n.cn)("text-lg leading-none font-semibold",e),...s})}function m({className:e,...s}){return(0,t.jsx)(r.Description,{"data-slot":"dialog-description",className:(0,n.cn)("text-muted-foreground text-sm",e),...s})}let f="descope-b2c-welcome-dismissed";function p({projectId:e=""}
1){let[r,o]=(0,s.useState)(!1),[n,i]=(0,s.useState)("");return(0,s.useEffect)(()=>{o("true"!==localStorage.getItem(f))},[]),(0,s.useEffect)(()=>{{let e=window.location.origin+window.location.pathname;i(`${e}?project=YOUR_PROJECT_ID&flow=YOUR_FLOW_ID`)}},[]),(0,s.useEffect)(()=>(r?document.body.classList.add("welcome-open"):document.body.classList.remove("welcome-open"),()=>document.body.classList.remove("welcome-open")),[r]),(0,t.jsx)(a,{open:r,onOpenChange:e=>{e||(localStorage.setItem(f,"true"),window.dispatchEvent(new CustomEvent("welcome-dismissed"))),o(e)},children:(0,t.jsxs)(d,{className:"sm:max-w-5xl p-8 text-xl rounded-3xl border border-foreground/10 bg-background/80 backdrop-blur-md shadow-lg",children:[(0,t.jsxs)(u,{className:"space-y-2",children:[(0,t.jsx)(c,{className:"text-center text-3xl sm:text-4xl",children:"Welcome to peek-a-box!"}),(0,t.jsxs)(m,{className:"text-lg",children:["This is a ",(0,t.jsx)("strong",{children:" sample retail app built by Descope"}),". It shows how to integrate Descope auth into a B2C-style experience."]})]}),(0,t.jsxs)("div",{className:"rounded-2xl border border-foreground
1/10 bg-muted/40 backdrop-blur-sm p-4 shadow-inner",children:[(0,t.jsx)("p",{className:"mb-2 text-lg font-medium text-foreground",children:"Suggested ways to explore the site"}),(0,t.jsxs)("ul",{className:"list-inside list-disc space-y-2 text-base text-muted-foreground",children:[(0,t.jsx)("li",{children:"Try signing up to experience progressive profiling"}),(0,t.jsx)("li",{children:"Try signing in with Google One Tap"}),(0,t.jsx)("li",{children:"Try checking out with more than one item in your cart to experience step-up authentication"}),(0,t.jsx)("li",{children:"Try managing your own profile information with the User Profile widget"})]})]}),(0,t.jsxs)("p",{className:"text-base text-muted-foreground",children:["Currently using Descope Flows from Project ID:"," ",(0,t.jsx)("span",{className:"inline-block rounded-full border border-foreground/10 bg-muted/40 backdrop-blur-sm px-2.5 py-1 font-mono text-sm font-medium text-foreground shadow-sm",children:e||"—"})]}),(0,t.jsxs)("div",{className:"rounded-2xl border border-foreground
1/10 bg-muted/40 backdrop-blur-sm p-4 shadow-inner",children:[(0,t.jsx)("p",{className:"mb-2 text-lg font-medium text-foreground",children:"Use your own project and flow"}),(0,t.jsx)("p",{className:"mb-2 text-base text-muted-foreground",children:"Use query parameters to point to your own project and flow:"}),n&&(0,t.jsx)("p",{className:"break-all rounded-lg bg-background/80 px-3 py-2 font-mono text-base text-foreground",children:n})]})]})})}e.s(["WelcomePopup",()=>p],63135)},37217,e=>{e.v(t=>Promise.all(["static/chunks/f195339ade8f067f.js"].map(t=>e.l(t))).then(()=>t(60263)))}]);

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.