{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"deepidv","colors":{"primary":"#1E7FE0","light":"#22B8F0","dark":"#1456A0"},"logo":{"light":"https://mintcdn.com/deep-identity-inc/iEa1biN40aTilpTP/logo/logo-full-black.svg?fit=max\u0026auto=format\u0026n=iEa1biN40aTilpTP\u0026q=85\u0026s=a577cb0e581db37558215bbd72f08dc6","dark":"https://mintcdn.com/deep-identity-inc/iEa1biN40aTilpTP/logo/logo-full-white.svg?fit=max\u0026auto=format\u0026n=iEa1biN40aTilpTP\u0026q=85\u0026s=b496e0504aeac4cc1b4e3fa2b5672d3e"},"favicon":"https://mintcdn.com/deep-identity-inc/iEa1biN40aTilpTP/logo/favicon.svg?fit=max\u0026auto=format\u0026n=iEa1biN40aTilpTP\u0026q=85\u0026s=317a65c523baba0dd43be8939720010d","api":{"mdx":{"server":"https://api.deepidv.com"}},"navbar":{"links":[{"href":"mailto:support@deepidv.com","label":"Support"}],"primary":{"type":"button","label":"Admin Console","href":"https://app.deepidv.com"}},"footer":{"socials":{"x":"https://x.com/deepidv","linkedin":"https://linkedin.com/company/deepidv"}},"icons":{"library":"lucide"},"contextual":{"options":["copy","view","claude","chatgpt","perplexity","mcp","cursor","vscode"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{"anchors":[{"anchor":"API Reference","icon":"code","href":"/api-reference/sessions/create-session"},{"anchor":"Admin Console","icon":"layout-grid","href":"https://app.deepidv.com"},{"anchor":"Agent Skills","icon":"bot","href":"https://github.com/Deep-Identity-Inc/agent-skills"}]},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"deep-identity-inc","hasAudioNarration":false,"actualSubdomain":"deep-identity-inc","customDomains":["docs.deepidv.com"],"gitSource":{"type":"github","owner":"deep-identity-inc","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"latestBuiltDeploymentHistoryId":"6ace755926932eeb60354a2a","collectionId":"931adf68-86b3-4c7c-b804-26e9eb654148","liveDeploymentHistoryId":"6ace755926932eeb60354a2a","schemaVersion":"v3"},"entitlements":{"AI_CHAT":{"status":"DISABLED"}},"buildId":"6ad163037bfa63b85af7365c","clientVersion":"0.0.3965","searchFilterCounts":[{"language":"default","tag":"API Reference","count":47},{"language":"default","tag":"Get Started","count":17},{"language":"default","tag":"Integrate / SDKs","count":14},{"language":"default","tag":"Chain Layer","count":12},{"language":"default","tag":"TypeScript","count":11},{"language":"default","tag":"iGaming Self-Exclusion \u0026 Management","count":8},{"language":"default","tag":"Server SDK","count":7},{"language":"default","tag":"Server-to-Server","count":6},{"language":"default","tag":"iGaming Checks","count":5},{"language":"default","tag":"Workflow Runner","count":5}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"custom.css","content":".deepidv-section-header{display:flex;flex-direction:column;gap:4px;margin-top:2rem;margin-bottom:1.5rem}.deepidv-section-label{font-size:.75rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#1e7fe0;margin:0}.deepidv-section-title{font-size:1.75rem;font-weight:700;line-height:1.2;margin:0}.deepidv-section-title span{color:#1e7fe0}.deepidv-section-desc{font-size:1rem;color:#6b7280;margin:.25rem 0 0}.deepidv-feature-grid{display:grid;grid-template-columns:repeat(var(--grid-cols, 3),1fr);gap:1rem;margin-top:1rem;margin-bottom:1rem}@media (max-width:768px){.deepidv-feature-grid{grid-template-columns:1fr}}.deepidv-feature-card{display:flex;flex-direction:column;gap:.75rem;padding:1.25rem;border:1px solid #e5e7eb;border-radius:12px;background:#fff;transition:border-color .15s ease,box-shadow .15s ease;height:100%}:root.dark .deepidv-feature-card{background:#1a1a2e;border-color:#2d2d44}.deepidv-feature-card:hover{border-color:#1e7fe0;box-shadow:0 2px 8px rgba(30,127,224,.08)}.deepidv-feature-card-icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;color:#1e7fe0;flex-shrink:0}.deepidv-feature-card-content{display:flex;flex-direction:column;gap:.25rem}.deepidv-feature-card-title{font-size:.9rem;font-weight:600;margin:0;line-height:1.3}.deepidv-feature-card-desc{font-size:.825rem;color:#6b7280;margin:0;line-height:1.5}:root.dark .deepidv-feature-card-desc{color:#9ca3af}.deepidv-feature-card-arrow{margin-top:auto;color:#1e7fe0;opacity:0;transition:opacity .15s ease}.deepidv-feature-card:hover .deepidv-feature-card-arrow{opacity:1}.deepidv-video-embed{position:relative;width:100%;padding-bottom:56.25%;margin:1.5rem 0;border-radius:12px;overflow:hidden;background:#000}.deepidv-video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;border-radius:12px}"}],"page":{"pagePath":"workflow-builder","slug":"/workflow-builder","pageMetadata":{"title":"Workflow Builder","description":"Build a deepidv verification workflow visually — drag services in, order them, configure each step, and get the API calls needed to run it in your own integration","mode":"custom","href":"/workflow-builder"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Build a deepidv verification workflow visually — drag services in, order them, configure each step, and get the API calls needed to run it in your own integration\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const WorkflowBuilderApp=props=>{const d=props\u0026\u0026props.deps||{};const App=useMemo(()=>{if(typeof d.makeApp!==`function`)return()=>_jsx(`div`,{className:`wb-boot-error`,children:`Workflow Builder failed to load.`});const WB=typeof d.makeWB===`function`?d.makeWB(d.generated):d.WB;const ui=d.makeUi();const utils=d.makeUtils({WB});const geometry=d.makeGeometry({WB});const store=d.makeStore({WB,utils,geometry});const dnd=d.makeDnd();const mui=d.makeMui({ui});const configPanelMod=d.makeConfigPanel({WB,utils,store,ui,mui});const paletteMod=d.makePalette({WB,utils,store,ui,dnd});const listModeMod=d.makeListMode({WB,utils,store,ui,dnd});const saveDialogMod=typeof d.makeSaveDialog===`function`?d.makeSaveDialog({WB,utils,store,ui,mui}):{};return d.makeApp({WB,WB_CSS:d.WB_CSS,ui,utils,geometry,store,dnd,palette:paletteMod,listMode:listModeMod,configPanel:configPanelMod,saveDialog:saveDialogMod}).WorkflowBuilder},[]);return _jsx(App,{})};const makeApp=({WB,WB_CSS,ui,utils,geometry,store,palette,listMode,configPanel,saveDialog,dnd})=>{const _components={a:`a`,..._provideComponents()};const{WorkflowProvider,useWorkflow}=store;const{Palette}=palette;const{ListCanvas,useListDnd}=listMode;const{RightConfigPanel}=configPanel;const{ToastProvider,StepIcon,MuiButton,MuiIconButton,MuiTextField,MuiSelect}=ui;const{DndProvider}=dnd;const SaveFlow=saveDialog\u0026\u0026saveDialog.SaveFlow||(()=>null);const I18N=WB.I18N||{};const t=(key,fallback,vars)=>{let s=typeof I18N[key]===`string`?I18N[key]:fallback;if(vars)Object.keys(vars).forEach(k=>{s=s.split(`{{`+k+`}}`).join(String(vars[k]))});return s};const TEMPLATE_COLORS=WB.WORKFLOW_TEMPLATE_COLORS||{};const PANEL_W=WB.PANEL\u0026\u0026WB.PANEL.WIDTH||350;const PANEL_W_EXP=WB.PANEL\u0026\u0026WB.PANEL.WIDTH_EXPANDED||600;const FONT_HREF=`https://fonts.googleapis.com/css2?family=Inter:wght@300..800\u0026display=swap`;const Styles=()=>{const done=useRef(false);useEffect(()=>{if(done.current)return;done.current=true;try{if(!document.getElementById(`wb-css`)){const el=document.createElement(`style`);el.id=`wb-css`;el.textContent=WB_CSS;document.head.appendChild(el)}if(!document.getElementById(`wb-font`)){const link=document.createElement(`link`);link.id=`wb-font`;link.rel=`stylesheet`;link.href=FONT_HREF;document.head.appendChild(link)}}catch(e){}},[]);return null};const templateIconColor=template=>{const c=TEMPLATE_COLORS[template.colorCategory];if(!c||!c.gradient)return`var(--wb-primary)`;const m=String(c.gradient).match(/#[0-9a-fA-F]{6}/);return m?m[0]:`var(--wb-primary)`};const Shell=({fromScratch:fromScratchProp=false,isLoading=false,showHeader=true})=>{const wf=useWorkflow();const{state,actions,selectors}=wf;const workflow=state.workflow;const steps=workflow.steps||[];const[fromScratch,setFromScratch]=useState(fromScratchProp);const[panelExpanded,setPanelExpanded]=useState(false);const[saveRequest,setSaveRequest]=useState(null);const[headerH,setHeaderH]=useState(112);useEffect(()=>{const measure=()=>{try{const el=document.querySelector(`header`);const b=el?Math.round(el.getBoundingClientRect().bottom):112;setHeaderH(b>0?b:112)}catch(e){setHeaderH(112)}};measure();window.addEventListener(`resize`,measure);return()=>window.removeEventListener(`resize`,measure)},[]);const selectedStep=selectors.selectedStep;const isIdVerification=!!(selectedStep\u0026\u0026selectedStep.id===`id-verification`);const rightPanelWidth=panelExpanded\u0026\u0026isIdVerification?PANEL_W_EXP:PANEL_W;const listDnd=useListDnd({});const costLabel=`$`+Number(selectors.cost||0).toFixed(2)+` / session`;const onTemplateChange=templateId=>{if(!templateId)return;if(templateId===`scratch`)setFromScratch(true);actions.applyTemplate({templateId})};const availableIds=useMemo(()=>new Set(utils.getAvailableServiceData().map(s=>s.id)),[]);const templateOptions=(WB.WORKFLOW_TEMPLATES||[]).filter(template=>(template.steps||[]).every(st=>availableIds.has(typeof st===`string`?st:st\u0026\u0026st.id))).map(template=>({value:template.id,label:I18N.templates\u0026\u0026I18N.templates[template.id]\u0026\u0026I18N.templates[template.id].label||template.label,icon:_jsx(StepIcon,{icon:template.icon,size:20,color:templateIconColor(template)})}));const handleSave=()=>setSaveRequest({at:Date.now()});const header=showHeader?_jsxs(`header`,{className:`wb-hd`,\"data-testid\":`wb-header`,children:[_jsxs(`div`,{className:`wb-hd-group`,children:[_jsx(_components.a,{href:`/workflows/workflows`,style:{textDecoration:`none`},children:_jsx(MuiButton,{variant:`text`,noHover:true,className:`wb-mbtn-back`,testId:`wb-back`,startIcon:_jsx(StepIcon,{icon:`eva:arrow-ios-back-fill`,size:18,color:`currentColor`}),children:t(`builderBack`,`Back`)})}),_jsxs(`div`,{className:`wb-hd-costwrap`,children:[_jsx(`span`,{className:`wb-hd-cost`,\"data-testid\":`wb-cost`,children:costLabel}),_jsx(`span`,{className:`wb-hd-info`,children:_jsx(StepIcon,{icon:`eva:info-outline`,size:18,color:`currentColor`})})]})]}),_jsxs(`div`,{className:`wb-hd-group`,children:[_jsx(MuiTextField,{size:`small`,label:t(`builderWorkflowName`,`Workflow Name`),placeholder:t(`builderWorkflowNamePlaceholder`,`My Workflow`),value:workflow.name||``,onChange:v=>actions.setName({name:v}),style:{minWidth:fromScratch?320:200},testId:`wb-name-input`}),!fromScratch?_jsx(MuiSelect,{size:`small`,label:t(`builderTemplate`,`Template`),displayEmpty:true,value:``,renderValue:()=>t(`builderTemplatePlaceholder`,`Select template...`),options:templateOptions,onChange:onTemplateChange,style:{minWidth:300},testId:`wb-template-select`}):null]}),_jsx(`div`,{className:`wb-hd-group`,children:_jsx(MuiButton,{variant:`contained`,gradient:true,className:`wb-mbtn-save`,onClick:handleSave,testId:`wb-save-btn`,children:t(`builderSaveWorkflow`,`Save Workflow`)})})]}):null;const panel=_jsx(RightConfigPanel,{selectedStep,dimmed:steps.length===0,expanded:panelExpanded,onExpandedChange:setPanelExpanded});const body=_jsx(DndProvider,{disabled:isLoading,onDragStart:listDnd.handleDragStart,onDragOver:listDnd.handleDragOver,onDragEnd:listDnd.handleDragEnd,onDragCancel:listDnd.handleDragCancel,renderOverlay:listDnd.renderOverlay,children:_jsxs(`div`,{className:`wb-main`,children:[_jsx(Palette,{viewMode:`builder`,disabled:isLoading}),_jsx(`div`,{className:`wb-stage`,\"data-testid\":`wb-center`,children:_jsx(`div`,{className:`wb-stage-content`,children:_jsx(ListCanvas,{isLoading,connectedStepIds:listDnd.connectedStepIds})})}),panel]})});return _jsxs(`div`,{className:`wb-root wb-shell`,\"data-testid\":`wb-root`,style:{height:`calc(97vh - `+headerH+`px)`},children:[_jsx(Styles,{}),header,body,_jsx(SaveFlow,{request:saveRequest,onDone:()=>setSaveRequest(null)})]})};const WorkflowBuilder=()=>_jsx(ToastProvider,{children:_jsx(WorkflowProvider,{children:_jsx(Shell,{})})});return{WorkflowBuilder,Shell}};const makeDnd=()=>{const ACTIVATION_DISTANCE=10;const DndContext=React.createContext(null);const rectCenter=r=>({x:r.left+r.width/2,y:r.top+r.height/2});const dist=(a,b)=>Math.hypot(a.x-b.x,a.y-b.y);const DndProvider=({children,onDragStart,onDragOver,onDragEnd,onDragCancel,renderOverlay,disabled})=>{const draggables=useRef(new Map);const droppables=useRef(new Map);const[active,setActive]=useState(null);const[over,setOver]=useState(null);const[pointer,setPointer]=useState(null);const pending=useRef(null);const overRef=useRef(null);const activeRef=useRef(null);const overlayRef=useRef(null);const activeRect=useRef(null);const handlers=useRef({});handlers.current={onDragStart,onDragOver,onDragEnd,onDragCancel};const registerDraggable=useCallback((id,entry)=>{draggables.current.set(id,entry);return()=>{draggables.current.delete(id)}},[]);const registerDroppable=useCallback((id,entry)=>{droppables.current.set(id,entry);return()=>{droppables.current.delete(id)}},[]);const collide=pt=>{let best=null;let bestD=Infinity;const stage=document.querySelector(`.wb-stage`);if(stage){const sr=stage.getBoundingClientRect();if(pt.x\u003csr.left||pt.x>sr.right||pt.y\u003csr.top||pt.y>sr.bottom)return null}droppables.current.forEach((entry,id)=>{const el=entry.ref.current;if(!el||entry.disabled)return;const r=el.getBoundingClientRect();if(r.width===0\u0026\u0026r.height===0)return;const inside=pt.x>=r.left\u0026\u0026pt.x\u003c=r.right\u0026\u0026pt.y>=r.top\u0026\u0026pt.y\u003c=r.bottom;const d=inside?dist(pt,rectCenter(r))-1e5:dist(pt,rectCenter(r));if(d\u003cbestD){bestD=d;best={id,data:entry.data,rect:r}}});return best};const finish=cancelled=>{const a=activeRef.current;const o=overRef.current;window.removeEventListener(`pointermove`,onMove);window.removeEventListener(`pointerup`,onUp);window.removeEventListener(`pointercancel`,onCancel);window.removeEventListener(`keydown`,onKey);pending.current=null;activeRef.current=null;overRef.current=null;setActive(null);setOver(null);setPointer(null);try{document.body.style.cursor=``;document.body.style.userSelect=``}catch(e){}if(!a)return;if(cancelled){if(handlers.current.onDragCancel)handlers.current.onDragCancel({active:a});return}if(handlers.current.onDragEnd)handlers.current.onDragEnd({active:a,over:o})};const onMove=e=>{const p=pending.current;if(p\u0026\u0026!activeRef.current){if(Math.hypot(e.clientX-p.x,e.clientY-p.y)\u003cACTIVATION_DISTANCE)return;const entry=draggables.current.get(p.id);if(!entry){pending.current=null;return}const el=entry.ref.current;const r=el?el.getBoundingClientRect():{left:p.x,top:p.y,width:0,height:0};activeRect.current={offsetX:p.x-r.left,offsetY:p.y-r.top,width:r.width,height:r.height};const a={id:p.id,data:entry.data};activeRef.current=a;setActive(a);try{document.body.style.cursor=`grabbing`;document.body.style.userSelect=`none`}catch(err){}if(handlers.current.onDragStart)handlers.current.onDragStart({active:a})}if(!activeRef.current)return;e.preventDefault();const pt={x:e.clientX,y:e.clientY};setPointer(pt);const hit=collide(pt);const prevId=overRef.current?overRef.current.id:null;const nextId=hit?hit.id:null;if(prevId!==nextId){overRef.current=hit;setOver(hit);if(handlers.current.onDragOver)handlers.current.onDragOver({active:activeRef.current,over:hit})}else if(hit){overRef.current=hit}};const onUp=()=>finish(false);const onCancel=()=>finish(true);const onKey=e=>{if(e.key===`Escape`)finish(true)};const beginPointer=useCallback(id=>e=>{if(disabled)return;if(e.button!==undefined\u0026\u0026e.button!==0)return;const target=e.target;if(target\u0026\u0026target.closest\u0026\u0026target.closest(`[data-dnd-ignore]`))return;pending.current={id,x:e.clientX,y:e.clientY};window.addEventListener(`pointermove`,onMove,{passive:false});window.addEventListener(`pointerup`,onUp);window.addEventListener(`pointercancel`,onCancel);window.addEventListener(`keydown`,onKey)},[disabled]);useEffect(()=>()=>{window.removeEventListener(`pointermove`,onMove);window.removeEventListener(`pointerup`,onUp);window.removeEventListener(`pointercancel`,onCancel);window.removeEventListener(`keydown`,onKey)},[]);const value=useMemo(()=>({registerDraggable,registerDroppable,beginPointer,active,over}),[registerDraggable,registerDroppable,beginPointer,active,over]);const overlay=active\u0026\u0026pointer\u0026\u0026typeof renderOverlay===`function`?renderOverlay(active):null;const ar=activeRect.current||{offsetX:0,offsetY:0,width:0,height:0};return _jsxs(DndContext.Provider,{value,children:[children,overlay?_jsx(`div`,{ref:overlayRef,className:`wb-dnd-overlay`,style:{position:`fixed`,left:pointer.x-ar.offsetX,top:pointer.y-ar.offsetY,width:ar.width||`auto`,zIndex:1500,pointerEvents:`none`},children:overlay}):null]})};const useDnd=()=>useContext(DndContext);const useDraggable=({id,data,disabled})=>{const ctx=useContext(DndContext);const ref=useRef(null);useEffect(()=>{if(!ctx)return undefined;return ctx.registerDraggable(id,{ref,data})},[ctx,id,data]);const isDragging=!!(ctx\u0026\u0026ctx.active\u0026\u0026ctx.active.id===id);const listeners=ctx\u0026\u0026!disabled?{onPointerDown:ctx.beginPointer(id)}:{};return{setNodeRef:el=>{ref.current=el},listeners,isDragging}};const useDroppable=({id,data,disabled})=>{const ctx=useContext(DndContext);const ref=useRef(null);useEffect(()=>{if(!ctx)return undefined;return ctx.registerDroppable(id,{ref,data,disabled})},[ctx,id,data,disabled]);const isOver=!!(ctx\u0026\u0026ctx.over\u0026\u0026ctx.over.id===id);return{setNodeRef:el=>{ref.current=el},isOver}};const useSortable=({id,data,disabled})=>{const drag=useDraggable({id,data,disabled});const drop=useDroppable({id,data,disabled});const setNodeRef=el=>{drag.setNodeRef(el);drop.setNodeRef(el)};return{setNodeRef,listeners:drag.listeners,isDragging:drag.isDragging,isOver:drop.isOver}};const parseNodeDropId=dndId=>{const parts=String(dndId||``).split(`:`);if(parts[0]===`palette`)return{context:`palette`,id:parts[1]};if(parts[0]===`chart`)return{context:`chart`,id:parts.slice(1).join(`:`)};return{context:`unknown`,raw:dndId}};return{DndProvider,useDnd,useDraggable,useDroppable,useSortable,parseNodeDropId}};const makeSaveDialog=({WB,utils,store,ui,mui})=>{const _components={a:`a`,..._provideComponents()};const{useWorkflow}=store;const{useToast,StepIcon}=ui;const{Iconify,MuiAlert,MuiDialog,MuiTabs,MuiChip,MuiButton,MuiTextField,SmallIconButton,cx}=mui;const I18N=WB.I18N||{};const t=(key,fallback,vars)=>{let s=typeof I18N[key]===`string`?I18N[key]:fallback;if(typeof s!==`string`)s=fallback||``;if(vars)Object.keys(vars).forEach(k=>{s=s.split(`{{`+k+`}}`).join(String(vars[k]))});return s};const API_BASE=`https://api.deepidv.com`;const MIN_STEPS=WB.WORKFLOW_MIN_STEPS||1;const EXCLUDED_FROM_PREVIEW=WB.EXCLUDED_FROM_PREVIEW||[];const START=WB.START_NODE_ID||`__start__`;const keyOf=s=>s\u0026\u0026(s.instanceId||s.id)||``;const stepLabel=step=>{const key=(WB.WORKFLOW_STEP_I18N_KEYS||{})[step.id];return key\u0026\u0026I18N[key]||step.label||step.id};const validateCryptoWalletScreeningStep=(step,errors)=>{const getProp=(groupId,propId)=>{const g=(step.propertyGroups||[]).find(x=>x.groupId===groupId);return g?(g.properties||[]).find(p=>p.id===propId):undefined};const networksProp=getProp(`crypto-networks-scanned`,`networks-scanned`);const networksEnabled=networksProp\u0026\u0026networksProp.value?Object.values(networksProp.value).filter(Boolean).length:0;if(networksEnabled===0)errors.push(`Step \"`+step.label+`\": requires at least one network scanned.`);const scanGroup=(step.propertyGroups||[]).find(g=>g.groupId===`crypto-scan-categories`);const categoriesEnabled=(scanGroup\u0026\u0026scanGroup.properties||[]).filter(p=>p.value===true).length;if(categoriesEnabled===0)errors.push(`Step \"`+step.label+`\": requires at least one scan category enabled.`)};const stepValidation=workflow=>{const errors=[];if(!workflow||!workflow.steps||workflow.steps.length===0){errors.push(`Workflow must have at least one step`);return errors}const NON_ACTIONABLE=[`add-step`,`start-session`,`end-session`,...EXCLUDED_FROM_PREVIEW];const actualSteps=workflow.steps.filter(s=>!NON_ACTIONABLE.includes(s.id));if(actualSteps.length===0)errors.push(`Workflow must have at least one actionable step`);actualSteps.forEach(step=>{if(step.id===`id-verification`\u0026\u0026step.propertyGroups){let requireSecondaryId=false;let requireTertiaryId=false;let selectedIdTypesCount=0;step.propertyGroups.forEach(group=>{(group.properties||[]).forEach(prop=>{if(prop.id===`require-secondary-id`)requireSecondaryId=prop.value===true;if(prop.id===`require-tertiary-id`)requireTertiaryId=prop.value===true;if(prop.id===`valid-id-types`\u0026\u0026prop.value){if(Array.isArray(prop.value))selectedIdTypesCount=prop.value.length;else if(typeof prop.value===`object`)selectedIdTypesCount=Object.values(prop.value).filter(Boolean).length}})});const minRequired=1+(requireSecondaryId?1:0)+(requireTertiaryId?1:0);if(selectedIdTypesCount\u003cminRequired)errors.push(`ID Verification step requires at least `+minRequired+` valid ID type(s).`)}});actualSteps.forEach(step=>{if(!step.propertyGroups)return;if(step.id===`crypto-wallet-screening`)validateCryptoWalletScreeningStep(step,errors);if(step.id===`e-signature`){const getGroupProps=gid=>{const g=step.propertyGroups.find(x=>x.groupId===gid);return g\u0026\u0026g.properties||[]};const getPropValue=(gid,pid)=>{const p=getGroupProps(gid).find(x=>x.id===pid);return p?p.value:undefined};const templateIdRaw=getPropValue(`e-signature-settings`,`template-id`)!==undefined\u0026\u0026getPropValue(`e-signature-settings`,`template-id`)!==null?getPropValue(`e-signature-settings`,`template-id`):getPropValue(`esign-template`,`template-id`);const templateId=typeof templateIdRaw===`string`?templateIdRaw.trim():templateIdRaw;const templateSignerCount=Number(getPropValue(`e-signature-settings`,`template-signer-count`)||0);const includeRaw=getPropValue(`e-signature-settings`,`include-sender-as-signer`);const includeSenderAsSigner=includeRaw===true||String(includeRaw||``).toLowerCase()===`true`;const senderRole=getPropValue(`e-signature-settings`,`sender-role`);const documentsValue=getPropValue(`esign-document-setup`,`documents`)||{};const files=Array.isArray(documentsValue.files)?documentsValue.files.filter(Boolean):[];const hasTemplate=!!(templateId\u0026\u0026String(templateId).trim()!==``);if((!templateId||String(templateId).trim()===``)\u0026\u0026files.length===0)errors.push(`Step \"`+step.label+`\": select an existing DeepSign template or upload at least one PDF in Document Setup before saving`);if(hasTemplate\u0026\u0026files.length>0)errors.push(`Step \"`+step.label+`\": choose either a DeepSign template or uploaded workflow documents, not both`);if(templateId){if(!Number.isFinite(templateSignerCount)||templateSignerCount\u003c1)errors.push(`Step \"`+step.label+`\" (E-Signature Internal Settings): selected DeepSign template is missing signer metadata`);else if(templateSignerCount>2)errors.push(`Step \"`+step.label+`\" (E-Signature Internal Settings): workflow e-sign supports a maximum of 2 signer roles per template`);else if(templateSignerCount===1\u0026\u0026includeSenderAsSigner)errors.push(`Step \"`+step.label+`\" (E-Signature Internal Settings): sender signing requires a DeepSign template with 2 signer roles`);else if(templateSignerCount===2\u0026\u0026!includeSenderAsSigner)errors.push(`Step \"`+step.label+`\" (E-Signature Internal Settings): templates with 2 signer roles require \"Include sender as signer\" to be enabled`);else if(templateSignerCount===2\u0026\u0026includeSenderAsSigner\u0026\u0026!senderRole)errors.push(`Step \"`+step.label+`\" (E-Signature Internal Settings): Sender assigned to is required when the sender is included as a signer`)}if(!hasTemplate\u0026\u0026files.length>0){if(files.length>25)errors.push(`Step \"`+step.label+`\" (Document Setup): workflow e-sign supports a maximum of 25 uploaded documents`);const invalid=files.find(f=>{const name=String(f.name||``);const type=String(f.type||``);return type\u0026\u0026type!==`application/pdf`\u0026\u0026!/\\.pdf$/i.test(name)});if(invalid)errors.push(`Step \"`+step.label+`\" (Document Setup): workflow e-sign document setup currently supports PDF documents only`);const allFields=files.flatMap(f=>Array.isArray(f.fields)?f.fields:[]);if(allFields.length===0)errors.push(`Step \"`+step.label+`\" (Document Setup): add at least one applicant field before saving`);else if(!allFields.some(f=>f\u0026\u0026f.role!==`sender`))errors.push(`Step \"`+step.label+`\" (Document Setup): at least one field must be assigned to the applicant`)}}const hasEnabledQuestionnaireTemplate=step.propertyGroups.some(g=>(g.properties||[]).some(p=>p.type===`questionnaire-template-toggles`\u0026\u0026p.value\u0026\u0026typeof p.value===`object`\u0026\u0026Object.values(p.value).some(tpl=>tpl\u0026\u0026tpl.enabled===true)));step.propertyGroups.forEach(group=>{(group.properties||[]).forEach(prop=>{const gname=group.groupName||`Property Group`;if(prop.type===`text-list`){if(!prop.value||prop.value.length===0)errors.push(`Step \"`+step.label+`\" (`+gname+`): `+prop.label+` must have at least one item`);else prop.value.forEach((item,index)=>{if(!item.text||item.text.trim()===``)errors.push(`Step \"`+step.label+`\" (`+gname+`): `+prop.label+` item `+(index+1)+` cannot be blank`)})}if(prop.type===`text`\u0026\u0026prop.required\u0026\u0026(!prop.value||String(prop.value).trim()===``))errors.push(`Step \"`+step.label+`\" (`+gname+`): `+prop.label+` is required`);if(prop.type===`select`){const empty=prop.value===undefined||prop.value===null||String(prop.value).trim()===``;if(prop.required\u0026\u0026empty)errors.push(`Step \"`+step.label+`\" (`+gname+`): `+prop.label+` is required`)}if(prop.type===`doc-upload`){if(!prop.value||typeof prop.value!==`object`)errors.push(`Step \"`+step.label+`\" cannot be empty. Please add at least one document description.`);else{const docs=Object.values(prop.value);if(docs.length===0)errors.push(`Step \"`+step.label+`\" cannot be empty. Please add at least one document description.`);else if(docs.some(d=>!d||String(d).trim()===``))errors.push(`Step \"`+step.label+`\" has documents with empty descriptions. All document descriptions must be filled in.`)}}if(prop.id===`minimum-optional-uploads`\u0026\u0026prop.value>0){const flagsProp=group.properties.find(p=>p.id===`document-optional-flags`);const optionalCount=Object.values(flagsProp\u0026\u0026flagsProp.value||{}).filter(Boolean).length;if(prop.value>optionalCount)errors.push(`Step \"`+step.label+`\": Minimum optional uploads (`+prop.value+`) exceeds the number of optional documents (`+optionalCount+`).`)}if(prop.type===`data-extraction`\u0026\u0026prop.value\u0026\u0026typeof prop.value===`object`){const docGroup=step.propertyGroups.find(g=>g.groupId===`document-upload-instructions`);const listProp=docGroup\u0026\u0026(docGroup.properties||[]).find(p=>p.id===`document-upload-list`);const liveKeys=new Set(Object.keys(listProp\u0026\u0026listProp.value||{}));const allParams=[];Object.entries(prop.value).filter(([k])=>liveKeys.has(k)).forEach(([docKey,cfg])=>{if(!cfg||!cfg.enabled)return;(cfg.extractions||[]).forEach((entry,idx)=>{if(entry.parameter\u0026\u0026!/^[a-zA-Z0-9_]+$/.test(entry.parameter))errors.push(`Step \"`+step.label+`\": parameter \"`+entry.parameter+`\" in `+docKey+` contains invalid characters. Use only letters, numbers, and underscores.`);if(entry.parameter)allParams.push(entry.parameter);if(entry.parameter\u0026\u0026!(entry.prompt\u0026\u0026entry.prompt.trim()))errors.push(`Step \"`+step.label+`\": extraction #`+(idx+1)+` in `+docKey+` has a parameter but no prompt.`)})});const seen=new Set;allParams.forEach(p=>{if(seen.has(p))errors.push(`Step \"`+step.label+`\": duplicate parameter name \"`+p+`\". Each parameter must be unique across all documents.`);seen.add(p)})}if(prop.type===`object`){if(hasEnabledQuestionnaireTemplate)return;if(!prop.value||typeof prop.value!==`object`){errors.push(`Step \"`+step.label+`\" cannot be empty. Please add at least one form field.`);return}const isLegacyFlat=Object.values(prop.value).some(v=>v\u0026\u0026typeof v===`object`\u0026\u0026`label`in v);const pages=isLegacyFlat?{page1:{fields:prop.value}}:prop.value;const pageEntries=Object.entries(pages);if(pageEntries.length===0){errors.push(`Step \"`+step.label+`\" cannot be empty. Please add at least one form field.`);return}let totalFields=0;pageEntries.forEach(([,pageData],pageIdx)=>{const fields=pageData\u0026\u0026pageData.fields||{};const fieldEntries=Object.entries(fields);totalFields+=fieldEntries.length;if(fieldEntries.length===0)errors.push(`Step \"`+step.label+`\" — Page `+(pageIdx+1)+` has no questions. Please add at least one question or remove the page.`);fieldEntries.forEach(([fieldKey,cfg])=>{const label=typeof cfg===`string`?cfg:cfg\u0026\u0026cfg.label||``;const type=typeof cfg===`object`?cfg\u0026\u0026cfg.type||`short-text`:`short-text`;const rawOptions=typeof cfg===`object`?cfg\u0026\u0026cfg.options||{}:{};const optionsArray=Array.isArray(rawOptions)?rawOptions:typeof rawOptions===`object`?Object.values(rawOptions):[];if(!label||label.trim()===``)errors.push(`Step \"`+step.label+`\" — Page `+(pageIdx+1)+` has a form field with empty label. All form field labels must be filled in.`);if(type===`dropdown`||type===`checkbox`){const valid=optionsArray.filter(o=>o\u0026\u0026(typeof o!==`string`||o.trim()!==``));if(optionsArray.length>0\u0026\u0026valid.length===0)errors.push(`Step \"`+step.label+`\" field \"`+(label||fieldKey)+`\" has empty options. Please fill in the options or change the field type.`)}})});if(totalFields===0)errors.push(`Step \"`+step.label+`\" cannot be empty. Please add at least one form field.`)}})})});return errors};const PUBLIC_STEP_IDS={\"id-verification\":`ID_VERIFICATION`,\"face-liveness\":`FACE_LIVENESS`,\"age-estimation\":`AGE_ESTIMATION`,\"pep-sanctions\":`PEP_SANCTIONS`,\"adverse-media\":`ADVERSE_MEDIA`,\"ip-jurisdiction\":`IP_JURISDICTION`,\"vpn-detection\":`VPN_DETECTION`,\"injection-detection\":`INJECTION_DETECTION`,\"anti-cheat\":`ANTI_CHEAT`};const ALLOWED_KEYS={ID_VERIFICATION:[`minimum_age`,`maximum_age`,`expiry_date_years`,`require_secondary_id`,`require_tertiary_id`,`face_front_photo_only`,`require_front_only`,`enable_fraud_analysis`,`escalation_type`,`escalation_risk_threshold`],FACE_LIVENESS:[`confidence_threshold`],AGE_ESTIMATION:[`minimum_age`],PEP_SANCTIONS:[],ADVERSE_MEDIA:[],IP_JURISDICTION:[`allowed_jurisdictions`,`blocked_jurisdictions`,`out_of_jurisdiction_action`,`datacenter_ip_action`,`trusted_ip_list`,`escalation_type`],VPN_DETECTION:[`vpn_enabled`,`vpn_action`,`datacenter_enabled`,`datacenter_action`,`tor_enabled`,`tor_action`,`trusted_ip_list`,`trusted_asn_list`,`confidence_threshold`,`escalation_type`],INJECTION_DETECTION:[`action_on_detection`,`automation_handling`,`confidence_threshold`,`escalation_type`],ANTI_CHEAT:[`duplicate_enabled`,`match_threshold`,`action_on_duplicate`,`multi_account_enabled`,`signal_ip_enabled`,`signal_ip_weight`,`signal_biometric_enabled`,`signal_biometric_weight`,`signal_document_enabled`,`signal_document_weight`,`signal_namedob_enabled`,`signal_namedob_weight`,`signal_device_enabled`,`signal_device_weight`,`link_sensitivity`,`action_on_multi_account`,`self_exclusion_enabled`]};const RUNNER_STEPS=[`ID_VERIFICATION`,`FACE_LIVENESS`];const snake=s=>String(s).replace(/-/g,`_`);const flatProps=step=>(step.propertyGroups||[]).flatMap(g=>(g.properties||[]).map(p=>({...p,groupId:g.groupId})));const findVal=(props,id)=>{const p=props.find(x=>x.id===id);return p?p.value:undefined};const listify=v=>Array.isArray(v)?v:String(v||``).split(/[\\n,]/).map(s=>s.trim()).filter(Boolean);const buildStepConfig=(step,apiId)=>{const props=flatProps(step);const cfg={};if(apiId===`ID_VERIFICATION`){const age=findVal(props,`minimum-age`);if(Array.isArray(age)){cfg.minimum_age=age[0];cfg.maximum_age=age[1]}else if(age\u0026\u0026typeof age===`object`){if(age.lower!==undefined)cfg.minimum_age=age.lower;if(age.upper!==undefined)cfg.maximum_age=age.upper}const expiry=findVal(props,`expiry-date`);if(expiry!==undefined)cfg.expiry_date_years=expiry;[`require-secondary-id`,`require-tertiary-id`,`face-front-photo-only`,`require-front-only`,`enable-fraud-analysis`,`escalation-type`,`escalation-risk-threshold`].forEach(id=>{const v=findVal(props,id);if(v!==undefined)cfg[snake(id)]=v});if(cfg.escalation_type\u0026\u0026cfg.escalation_type!==`none`)cfg.enable_fraud_analysis=true}else if(apiId===`FACE_LIVENESS`){const v=findVal(props,`confidence-threshold`);if(v!==undefined)cfg.confidence_threshold=v}else if(apiId===`AGE_ESTIMATION`){const age=findVal(props,`minimum-age`);if(Array.isArray(age))cfg.minimum_age=age[0];else if(age\u0026\u0026typeof age===`object`\u0026\u0026age.lower!==undefined)cfg.minimum_age=age.lower}else{props.forEach(p=>{if(p.type===`hidden`||p.type===`weight-display`)return;const key=snake(p.id);if(!(ALLOWED_KEYS[apiId]||[]).includes(key))return;let v=p.value;if(/_list$/.test(key)||/_jurisdictions$/.test(key))v=listify(v);cfg[key]=v})}const allowed=ALLOWED_KEYS[apiId]||[];const out={};allowed.forEach(k=>{if(cfg[k]!==undefined\u0026\u0026cfg[k]!==null)out[k]=cfg[k]});return out};const buildPublicWorkflowPayload=(name,orderedSteps)=>{const steps=[];const unsupported=[];const seen=new Set;orderedSteps.forEach(step=>{const apiId=PUBLIC_STEP_IDS[step.id];if(!apiId){unsupported.push(step);return}if(seen.has(apiId))return;seen.add(apiId);const config=buildStepConfig(step,apiId);steps.push(Object.keys(config).length?{id:apiId,config}:{id:apiId})});return{payload:{name,steps:steps.slice(0,10)},unsupported,truncated:steps.length>10}};const json=v=>JSON.stringify(v,null,2);const curlFor=(method,path,body)=>`curl -X `+method+` \"`+API_BASE+path+`\" \\\\\n -H \"x-api-key: YOUR_API_KEY\"`+(body?` \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '`+json(body)+`'`:``);const nodeFor=(method,path,body)=>`const response = await fetch(\"`+API_BASE+path+`\", {\n method: \"`+method+`\",\n headers: {\n \"x-api-key\": \"YOUR_API_KEY\",`+(body?`\n \"Content-Type\": \"application/json\",`:``)+`\n },`+(body?`\n body: JSON.stringify(`+json(body).split(`\n`).join(`\n `)+`),`:``)+`\n});\n\nconst data = await response.json();`;const pyFor=(method,path,body)=>`import requests\n\nresponse = requests.`+method.toLowerCase()+`(\n \"`+API_BASE+path+`\",\n headers={\"x-api-key\": \"YOUR_API_KEY\"`+(body?`, \"Content-Type\": \"application/json\"`:``)+`},`+(body?`\n json=`+json(body).split(`\n`).join(`\n `)+`,`:``)+`\n)\n\ndata = response.json()`;const CodeBlock=({code,lang,testId})=>{return _jsxs(`div`,{className:`wb-sd-code`,\"data-testid\":testId,children:[_jsxs(`div`,{className:`wb-sd-code-bar`,children:[_jsx(`span`,{className:`wb-sd-code-lang`,children:lang}),_jsx(SmallIconButton,{icon:`solar:copy-bold`,width:16,label:`Copy`,onClick:()=>{try{navigator.clipboard.writeText(code)}catch(e){}}})]}),_jsx(`pre`,{className:`wb-sd-pre`,children:code})]})};const CodeGroup=({method,path,body,testId})=>{const[lang,setLang]=useState(`curl`);const langs=[{value:`curl`,label:`cURL`},{value:`node`,label:`Node.js`},{value:`python`,label:`Python`}];const code=lang===`curl`?curlFor(method,path,body):lang===`node`?nodeFor(method,path,body):pyFor(method,path,body);return _jsxs(`div`,{className:`wb-sd-codegroup`,\"data-testid\":testId,children:[_jsx(`div`,{className:`wb-sd-codegroup-tabs`,children:langs.map(l=>_jsx(`button`,{type:`button`,className:cx(`wb-sd-codegroup-tab`,lang===l.value\u0026\u0026`wb-sd-codegroup-tab-on`),onClick:()=>setLang(l.value),children:l.label},l.value))}),_jsx(CodeBlock,{code,lang:langs.find(l=>l.value===lang).label})]})};const Endpoint=({method,path,href,children})=>_jsxs(`div`,{className:`wb-sd-endpoint`,children:[_jsx(`span`,{className:cx(`wb-sd-method`,`wb-sd-method-`+method.toLowerCase()),children:method}),_jsx(`code`,{className:`wb-sd-path`,children:path}),href?_jsxs(_components.a,{className:`wb-sd-doclink`,href,target:`_blank`,rel:`noopener noreferrer`,children:[`API reference `,_jsx(Iconify,{icon:`eva:arrow-ios-back-fill`,width:14,style:{transform:`rotate(180deg)`}})]}):null,children]});const FieldTable=({rows})=>_jsxs(`table`,{className:`wb-sd-table`,children:[_jsx(`thead`,{children:_jsxs(`tr`,{children:[_jsx(`th`,{children:`Field`}),_jsx(`th`,{children:`Type`}),_jsx(`th`,{children:`Description`})]})}),_jsx(`tbody`,{children:rows.map(r=>_jsxs(`tr`,{children:[_jsx(`td`,{children:_jsx(`code`,{children:r[0]})}),_jsx(`td`,{className:`wb-sd-muted`,children:r[1]}),_jsx(`td`,{children:r[2]})]},r[0]))})]});const SESSION_FIELDS=[[`first_name`,`string`,`Applicant first name (required)`],[`last_name`,`string`,`Applicant last name (required)`],[`email`,`string`,`Applicant email (required)`],[`phone`,`string`,`E.164 phone number, e.g. +15192223333 (required if the workflow includes a phone verification step)`],[`workflow_id`,`string`,`The id returned by POST /v1/workflows in step 1`],[`external_id`,`string`,`Your own reference for this applicant`],[`redirect_url`,`string`,`HTTPS URL the applicant returns to after the session`],[`send_email_invite`,`boolean`,`Send the hosted link by email (default true)`],[`send_phone_invite`,`boolean`,`Send the hosted link by SMS (default true)`],[`expires_in_hours`,`integer`,`1-8760, overrides the workflow expiry`]];const TS_TYPES=[`type WorkflowStepId =`,` | \"ID_VERIFICATION\" | \"FACE_LIVENESS\" | \"AGE_ESTIMATION\" | \"PEP_SANCTIONS\" | \"ADVERSE_MEDIA\"`,` | \"IP_JURISDICTION\" | \"VPN_DETECTION\" | \"INJECTION_DETECTION\" | \"ANTI_CHEAT\";`,``,`type EnforcementAction = \"block\" | \"flag\" | \"step-up\" | \"allow\";`,``,`interface IdVerificationConfig {`,` minimum_age?: number; // 1-100, default 18`,` maximum_age?: number; // 1-100, default 51`,` expiry_date_years?: number; // 0-10, default 2`,` require_secondary_id?: boolean; // default false`,` require_tertiary_id?: boolean; // default false`,` face_front_photo_only?: boolean; // default false`,` require_front_only?: boolean; // default false`,` enable_fraud_analysis?: boolean; // default false, implied by escalation_type != \"none\"`,` escalation_type?: \"none\" | \"nfc-passport\";`,` escalation_risk_threshold?: number; // 0-100, default 60`,`}`,`interface FaceLivenessConfig { confidence_threshold?: number; } // 1-100, default 70`,`interface AgeEstimationConfig { minimum_age?: number; } // 1-100, default 18`,`interface IpJurisdictionConfig {`,` allowed_jurisdictions?: string[]; // ISO 3166 codes, e.g. \"CA\", \"US-WA\"`,` blocked_jurisdictions?: string[];`,` out_of_jurisdiction_action?: EnforcementAction; // default \"block\"`,` datacenter_ip_action?: EnforcementAction; // default \"flag\"`,` trusted_ip_list?: string[]; // CIDR ranges or ASNs`,` escalation_type?: string; // default \"none\"`,`}`,`interface VpnDetectionConfig {`,` vpn_enabled?: boolean; vpn_action?: EnforcementAction;`,` datacenter_enabled?: boolean; datacenter_action?: EnforcementAction;`,` tor_enabled?: boolean; tor_action?: EnforcementAction;`,` trusted_ip_list?: string[]; trusted_asn_list?: string[];`,` confidence_threshold?: number; escalation_type?: string;`,`}`,`interface InjectionDetectionConfig {`,` action_on_detection?: \"block\" | \"flag\" | \"step-up\" | \"rechallenge\" | \"allow\";`,` automation_handling?: \"block\" | \"flag\" | \"step-up\" | \"ignore\";`,` confidence_threshold?: number; escalation_type?: string;`,`}`,`interface AntiCheatConfig {`,` duplicate_enabled?: boolean; match_threshold?: number; action_on_duplicate?: \"flag\" | \"manual-review\" | \"block\" | \"allow\";`,` multi_account_enabled?: boolean; link_sensitivity?: number; action_on_multi_account?: \"flag\" | \"manual-review\" | \"block\" | \"allow\";`,` signal_ip_enabled?: boolean; signal_ip_weight?: number;`,` signal_biometric_enabled?: boolean; signal_biometric_weight?: number;`,` signal_document_enabled?: boolean; signal_document_weight?: number;`,` signal_namedob_enabled?: boolean; signal_namedob_weight?: number;`,` signal_device_enabled?: boolean; signal_device_weight?: number;`,` self_exclusion_enabled?: boolean;`,`}`,``,`interface CreateWorkflowRequest {`,` name: string; // 1-255 characters`,` steps: Array\u003c{ id: WorkflowStepId; config?: object }>; // 1-10 unique steps, in order`,`}`,`interface Workflow {`,` id: string; name: string; status: \"active\" | \"inactive\";`,` organization_id: string; created_at: string; updated_at: string;`,` steps: Array\u003c{ id: string; config: Record\u003cstring, unknown> }>; // db ids (kebab-case), snake_case config`,`}`,`interface CreateSessionRequest {`,` first_name: string; last_name: string; email: string; phone: string; // E.164`,` workflow_id?: string; external_id?: string; redirect_url?: string;`,` send_email_invite?: boolean; send_phone_invite?: boolean; expires_in_hours?: number;`,`}`,`interface CreateSessionResponse {`,` id: string; session_url: string; externalId?: string; expires_at?: string;`,` links: Array\u003c{ rel: string; href: string; description: string }>;`,`}`,`type SessionStatus = \"PENDING\" | \"SUBMITTED\" | \"VERIFIED\" | \"REJECTED\" | \"VOIDED\" | \"EXPIRED\" | \"FAILED\";`,`interface WebhookEvent {`,` type: \"session.created\" | \"session.status.submitted\" | \"session.status.verified\" | \"session.status.rejected\" | \"session.status.failed\";`,` data: SessionRecord; // same object as GET /v1/sessions/{id} -> session_record`,`}`,`interface SessionRecord {`,` id: string; organization_id: string; user_id: string; external_id?: string;`,` status: SessionStatus; session_progress: \"PENDING\" | \"STARTED\" | \"COMPLETED\";`,` workflow_id: string; workflow_steps: WorkflowStepId[];`,` created_at: string; updated_at: string; submitted_at?: string; expires_at?: string;`,` analysis_data?: { id_matches_selfie?: boolean; faceliveness_score?: number; pep_sanctions_data?: object; adverse_media_data?: object; [k: string]: unknown };`,` meta_data?: { applicantSubmissionIp?: string; applicantSubmissionDevice?: string; [k: string]: unknown };`,`}`].join(`\n`);const ValidationErrorsDialog=({open,onClose,errors})=>_jsxs(MuiDialog,{open,onClose,maxWidth:`sm`,testId:`wb-validation-dialog`,paperStyle:{borderRadius:16},title:_jsxs(`div`,{className:`wb-sd-vtitle`,children:[_jsx(`span`,{className:`wb-sd-vicon`,children:_jsx(Iconify,{icon:`solar:danger-triangle-bold-duotone`,width:22})}),_jsx(`span`,{className:`wb-sd-h6`,children:`Can't save just yet`})]}),actions:_jsx(MuiButton,{variant:`contained`,style:{minWidth:100},onClick:onClose,testId:`wb-validation-close`,children:`Got it`}),children:[_jsx(`div`,{className:`wb-sd-body2 wb-sd-muted`,style:{marginBottom:16},children:`Please fix the following before saving:`}),_jsx(`div`,{className:`wb-sd-stack10`,children:errors.map((m,i)=>_jsxs(`div`,{className:`wb-sd-vrow`,children:[_jsx(`span`,{className:`wb-sd-vdot`}),_jsx(`span`,{className:`wb-sd-body2`,style:{lineHeight:1.55},children:m})]},i+m))})]});const SaveCustomWorkflowDialog=({open,onClose,initialName,onSave})=>{const[name,setName]=useState(initialName||``);const[error,setError]=useState(``);useEffect(()=>{if(open){setName(initialName||``);setError(``)}},[open,initialName]);const submit=()=>{if(!name.trim()){setError(`Workflow name is required!`);return}onSave(name.trim())};return _jsx(MuiDialog,{open,onClose,maxWidth:`sm`,testId:`wb-save-dialog`,title:_jsx(`span`,{className:`wb-sd-h6`,style:{fontWeight:500},children:`Save Custom Workflow`}),actions:_jsxs(_Fragment,{children:[_jsx(MuiButton,{variant:`outlined`,onClick:onClose,testId:`wb-save-cancel`,children:`Cancel`}),_jsx(MuiButton,{variant:`contained`,gradient:true,onClick:submit,testId:`wb-save-confirm`,children:`Save`})]}),children:_jsx(`div`,{style:{paddingTop:8},children:_jsx(MuiTextField,{fullWidth:true,label:`Workflow Name`,value:name,onChange:v=>{setName(v);setError(``)},error:!!error,helperText:error,testId:`wb-save-name`,autoFocus:true,onKeyDown:e=>{if(e.key===`Enter`)submit()}})})})};const IntegrationDialog=({open,onClose,name,orderedSteps})=>{const[tab,setTab]=useState(`create`);const built=useMemo(()=>buildPublicWorkflowPayload(name,orderedSteps),[name,orderedSteps]);const publicIds=built.payload.steps.map(s=>s.id);const runnerOk=publicIds.length>0\u0026\u0026publicIds.every(id=>RUNNER_STEPS.includes(id));const[apiKey,setApiKey]=useState(``);const[sending,setSending]=useState(false);const[sendResult,setSendResult]=useState(null);useEffect(()=>{if(open){setTab(`create`);setSendResult(null)}},[open]);const sendToApi=()=>{if(!apiKey.trim()){setSendResult({ok:false,status:0,body:`Enter an API key first.`});return}setSending(true);setSendResult(null);fetch(API_BASE+`/v1/workflows`,{method:`POST`,headers:{\"Content-Type\":`application/json`,\"x-api-key\":apiKey.trim()},body:JSON.stringify(built.payload)}).then(r=>r.text().then(txt=>{setSending(false);setSendResult({ok:r.ok,status:r.status,body:txt.slice(0,800)})})).catch(err=>{setSending(false);setSendResult({ok:false,status:0,body:String(err\u0026\u0026err.message)})})};const download=()=>{try{const blob=new Blob([json(built.payload)],{type:`application/json`});const url=URL.createObjectURL(blob);const a=document.createElement(`a`);a.href=url;a.download=(String(name||`workflow`).toLowerCase().replace(/[^a-z0-9]+/g,`-`)||`workflow`)+`.json`;document.body.appendChild(a);a.click();document.body.removeChild(a);URL.revokeObjectURL(url)}catch(e){}};const sessionBody={first_name:`Jane`,last_name:`Doe`,email:`jane.doe@example.com`,phone:`+15192223333`,workflow_id:`\u003cworkflow.id from step 1>`,external_id:`user-12345`,redirect_url:`https://yourapp.com/verify-callback`};const runnerBody={first_name:`Jane`,last_name:`Doe`,email:`jane.doe@example.com`,phone:`+15192223333`,external_id:`user-12345`};const tabs=[{value:`create`,label:`1. Create workflow`},{value:`session`,label:`2. Start a session`},{value:`results`,label:`3. Get results`},{value:`types`,label:`Data structures`}];return _jsxs(MuiDialog,{open,onClose,maxWidth:`md`,testId:`wb-integration-dialog`,paperStyle:{maxWidth:860},title:_jsxs(`div`,{className:`wb-sd-ititle`,children:[_jsxs(`div`,{children:[_jsxs(`div`,{className:`wb-sd-h6`,children:[`Run \"`,name,`\" in your integration`]}),_jsxs(`div`,{className:`wb-sd-caption wb-sd-muted`,children:[`Everything below uses the public API with your `,_jsx(`code`,{children:`x-api-key`}),`. Base URL `,API_BASE,`.`]})]}),_jsx(SmallIconButton,{icon:`mingcute:close-line`,width:20,label:`Close`,onClick:onClose,testId:`wb-integration-close`})]}),actions:_jsxs(_Fragment,{children:[_jsx(MuiButton,{variant:`text`,onClick:onClose,children:`Close`}),_jsx(MuiButton,{variant:`outlined`,onClick:()=>{try{navigator.clipboard.writeText(json(built.payload))}catch(e){}},testId:`wb-save-copy`,children:`Copy payload`}),_jsx(MuiButton,{variant:`contained`,gradient:true,onClick:download,testId:`wb-save-download`,children:`Download JSON`})]}),children:[_jsx(MuiTabs,{value:tab,onChange:setTab,tabs,style:{marginBottom:16,gap:24}}),tab===`create`?_jsxs(`div`,{className:`wb-sd-stack16`,children:[_jsx(Endpoint,{method:`POST`,path:`/v1/workflows`,href:`/api-reference/workflows/create-workflow`}),_jsxs(`p`,{className:`wb-sd-body2 wb-sd-muted`,children:[`Creates the workflow once. Save the returned `,_jsx(`code`,{children:`workflow.id`}),`; every session you create in step 2 references it. Sandbox API keys cannot create workflows.`]}),built.unsupported.length?_jsxs(MuiAlert,{severity:`warning`,variant:`outlined`,testId:`wb-unsupported-alert`,children:[_jsx(`div`,{className:`wb-sd-semibold`,children:built.unsupported.length===1?`1 step is not available via the public API yet`:built.unsupported.length+` steps are not available via the public API yet`}),_jsx(`div`,{className:`wb-sd-chips`,children:built.unsupported.map(s=>_jsx(MuiChip,{label:stepLabel(s),variant:`soft`,color:`warning`,icon:_jsx(StepIcon,{icon:utils.getStepIcon(s.id),size:14,color:`currentColor`})},keyOf(s)))}),_jsx(`div`,{className:`wb-sd-caption`,style:{marginTop:6},children:`They were left out of the payload. Add them to this workflow in the Admin Console (app.deepidv.com) and they will run in hosted sessions.`})]}):null,built.truncated?_jsx(MuiAlert,{severity:`warning`,variant:`outlined`,children:`The public API accepts at most 10 steps; the payload was trimmed to the first 10.`}):null,!built.payload.steps.length?_jsx(MuiAlert,{severity:`error`,variant:`outlined`,children:`None of the steps in this workflow can be created through the public API yet.`}):null,_jsx(CodeGroup,{method:`POST`,path:`/v1/workflows`,body:built.payload,testId:`wb-save-json`}),_jsxs(`details`,{className:`wb-sd-details`,children:[_jsx(`summary`,{children:`Response (201 Created)`}),_jsx(FieldTable,{rows:[[`workflow.id`,`string`,`Use this as workflow_id when creating sessions`],[`workflow.name`,`string`,`Workflow name`],[`workflow.status`,`string`,`Always active for new workflows`],[`workflow.organization_id`,`string`,`Your organization id`],[`workflow.steps[]`,`array`,`Steps with resolved configuration (db ids such as id-verification, snake_case config)`],[`workflow.created_at / updated_at`,`string`,`ISO 8601 timestamps`]]}),_jsx(`div`,{className:`wb-sd-caption wb-sd-muted`,style:{marginTop:8},children:`Errors: 400 invalid body or duplicate step, 401 bad key, 403 sandbox key, 429 rate limited.`})]}),_jsxs(`div`,{className:`wb-sd-send`,children:[_jsx(`div`,{className:`wb-sd-semibold wb-sd-body2`,children:`Try it with your API key (optional)`}),_jsxs(`div`,{className:`wb-sd-row8`,children:[_jsx(MuiTextField,{fullWidth:true,size:`small`,type:`password`,placeholder:`x-api-key`,value:apiKey,onChange:setApiKey,testId:`wb-api-key`}),_jsx(MuiButton,{variant:`outlined`,onClick:sendToApi,disabled:sending,testId:`wb-send-api`,children:sending?`Sending...`:`Send`})]}),_jsx(`div`,{className:`wb-sd-caption wb-sd-muted`,children:`POSTs the payload above straight from your browser. The key is never stored.`}),sendResult?_jsxs(MuiAlert,{severity:sendResult.ok?`success`:`error`,variant:`soft`,children:[_jsxs(`div`,{className:`wb-sd-semibold`,children:[`HTTP `,sendResult.status]}),_jsx(`pre`,{className:`wb-sd-pre wb-sd-pre-inline`,children:sendResult.body})]}):null]})]}):null,tab===`session`?_jsxs(`div`,{className:`wb-sd-stack16`,children:[_jsxs(`div`,{className:`wb-sd-card`,children:[_jsxs(`div`,{className:`wb-sd-cardhead`,children:[_jsx(MuiChip,{label:`Hosted`,color:`primary`,variant:`soft`}),_jsx(`span`,{className:`wb-sd-semibold`,children:`Send the applicant a deepidv-hosted link`})]}),_jsx(Endpoint,{method:`POST`,path:`/v1/sessions`,href:`/api-reference/sessions/create-session`}),_jsxs(`p`,{className:`wb-sd-body2 wb-sd-muted`,children:[`Pass the `,_jsx(`code`,{children:`workflow_id`}),` from step 1. The response contains a `,_jsx(`code`,{children:`session_url`}),` you can open in your app, and deepidv emails or texts the invite unless you turn that off.`]}),_jsx(FieldTable,{rows:SESSION_FIELDS}),_jsx(CodeGroup,{method:`POST`,path:`/v1/sessions`,body:sessionBody}),_jsxs(`details`,{className:`wb-sd-details`,children:[_jsx(`summary`,{children:`Response (200)`}),_jsx(FieldTable,{rows:[[`id`,`string`,`Session id, use it for GET /v1/sessions/{id} and to match webhooks`],[`session_url`,`string`,`Hosted verification URL (includes redirect_url when provided)`],[`externalId`,`string`,`Echoed if provided`],[`expires_at`,`string`,`ISO 8601 expiry when configured`],[`links[]`,`array`,`admin_console and session_details links`]]})]})]}),_jsxs(`div`,{className:`wb-sd-card`,children:[_jsxs(`div`,{className:`wb-sd-cardhead`,children:[_jsx(MuiChip,{label:`Headless`,color:`info`,variant:`soft`}),_jsx(`span`,{className:`wb-sd-semibold`,children:`Drive the steps yourself with the Workflow Runner API`})]}),runnerOk?_jsx(MuiAlert,{severity:`success`,variant:`soft`,children:`This workflow only uses ID_VERIFICATION / FACE_LIVENESS, so it can run through the Workflow Runner.`}):_jsx(MuiAlert,{severity:`info`,variant:`outlined`,children:`The Workflow Runner currently supports workflows made only of ID_VERIFICATION and FACE_LIVENESS. This workflow includes other steps, so use the hosted flow above for it.`}),_jsx(Endpoint,{method:`POST`,path:`/v1/workflows/{workflow_id}/sessions`,href:`/api-reference/workflow-runner/create-workflow-session`}),_jsxs(`p`,{className:`wb-sd-body2 wb-sd-muted`,children:[`Creates a session without sending invites and returns the ordered `,_jsx(`code`,{children:`steps[]`}),` with each step's `,_jsx(`code`,{children:`requirements`}),` and `,_jsx(`code`,{children:`current_step`}),`.`]}),_jsx(CodeGroup,{method:`POST`,path:`/v1/workflows/{workflow_id}/sessions`,body:runnerBody}),_jsx(Endpoint,{method:`POST`,path:`/v1/sessions/{session_id}/steps/{step_id}`,href:`/api-reference/workflow-runner/submit-workflow-step`,children:_jsx(`span`,{className:`wb-sd-caption wb-sd-muted`,children:`Submit steps in order (uploads come from Create Session Uploads).`})}),_jsx(Endpoint,{method:`GET`,path:`/v1/sessions/{session_id}/workflow`,href:`/api-reference/workflow-runner/get-workflow-state`,children:_jsx(`span`,{className:`wb-sd-caption wb-sd-muted`,children:`Read every step's status and what to submit next.`})})]})]}):null,tab===`results`?_jsxs(`div`,{className:`wb-sd-stack16`,children:[_jsxs(`div`,{className:`wb-sd-card`,children:[_jsxs(`div`,{className:`wb-sd-cardhead`,children:[_jsx(MuiChip,{label:`Poll`,color:`default`,variant:`soft`}),_jsx(`span`,{className:`wb-sd-semibold`,children:`Read the session on demand`})]}),_jsx(Endpoint,{method:`GET`,path:`/v1/sessions/{id}`,href:`/api-reference/sessions/retrieve-session`}),_jsx(CodeGroup,{method:`GET`,path:`/v1/sessions/{id}`}),_jsx(FieldTable,{rows:[[`session_record.status`,`string`,`PENDING, SUBMITTED, VERIFIED, REJECTED, VOIDED, EXPIRED or FAILED`],[`session_record.session_progress`,`string`,`PENDING, STARTED or COMPLETED`],[`session_record.workflow_id / workflow_steps`,`string / string[]`,`The workflow this session ran and its step ids`],[`session_record.analysis_data`,`object`,`id_matches_selfie, faceliveness_score, pep_sanctions_data, adverse_media_data, document_risk_data, custom_form_data ...`],[`session_record.meta_data`,`object`,`Submission IP, device, browser, location, failureData`],[`resource_links`,`object`,`Presigned URLs for uploaded images (time limited)`]]})]}),_jsxs(`div`,{className:`wb-sd-card`,children:[_jsxs(`div`,{className:`wb-sd-cardhead`,children:[_jsx(MuiChip,{label:`Push`,color:`success`,variant:`soft`}),_jsx(`span`,{className:`wb-sd-semibold`,children:`Or receive webhooks`}),` `,_jsx(_components.a,{className:`wb-sd-doclink`,href:`/webhooks/overview`,target:`_blank`,rel:`noopener noreferrer`,children:`Webhooks guide`})]}),_jsxs(`p`,{className:`wb-sd-body2 wb-sd-muted`,children:[`Register an HTTPS endpoint in the Admin Console. Each delivery is `,_jsx(`code`,{children:`{ \"type\": \"...\", \"data\": SessionRecord }`}),` signed with the `,_jsx(`code`,{children:`deepidv-signature`}),` header.`]}),_jsx(FieldTable,{rows:[[`session.created`,`event`,`A session was created (no analysis yet)`],[`session.status.submitted`,`event`,`Applicant finished; analysis_data is populated`],[`session.status.verified`,`event`,`Marked verified by rules or manual review`],[`session.status.rejected`,`event`,`Marked rejected by rules or manual review`],[`session.status.failed`,`event`,`Hit the workflow failed-attempt limit`]]}),_jsx(CodeBlock,{lang:`JSON`,code:json({type:`session.status.submitted`,data:{id:`a1b2c3d4-e5f6-7890-abcd-ef1234567890`,external_id:`user-12345`,status:`SUBMITTED`,session_progress:`COMPLETED`,workflow_id:`\u003cworkflow.id>`,workflow_steps:publicIds,submitted_at:`2026-09-14T14:35:00.000Z`,analysis_data:{id_matches_selfie:true,faceliveness_score:98.2}}})})]})]}):null,tab===`types`?_jsxs(`div`,{className:`wb-sd-stack16`,children:[_jsx(`p`,{className:`wb-sd-body2 wb-sd-muted`,children:`Request and response shapes for every call above, written as TypeScript. Config keys per step mirror the public API contract.`}),_jsx(CodeBlock,{lang:`TypeScript`,code:TS_TYPES,testId:`wb-types`})]}):null]})};const SaveFlow=({request,onDone})=>{const{state,actions}=useWorkflow();const workflow=state.workflow;const[validationErrors,setValidationErrors]=useState([]);const[saveOpen,setSaveOpen]=useState(false);const[integration,setIntegration]=useState(null);const lastReq=useRef(null);useEffect(()=>{if(!request||request===lastReq.current)return;lastReq.current=request;const steps=workflow.steps||[];const preErrors=[];if(steps.find(s=>s.id===`add-step`)||steps.length\u003cMIN_STEPS)preErrors.push(t(MIN_STEPS===1?`createErrorMinSteps_one`:`createErrorMinSteps_other`,`Please insert at least {{count}} step into your workflow before saving.`,{count:MIN_STEPS}));if(!workflow.name||!workflow.name.trim())preErrors.push(t(`createErrorNoName`,`Please enter a workflow name before saving.`));if(preErrors.length){setValidationErrors(preErrors);return}const errors=stepValidation(workflow);if(errors.length){setValidationErrors(errors);return}const res=utils.resolveStepOrderFromConnections(steps,workflow.canvasData\u0026\u0026workflow.canvasData.connections||[]);const warnings=res\u0026\u0026res.warnings||[];if(warnings.some(w=>/cycle/i.test(String(w)))){setValidationErrors([t(`createErrorCycle`,`Workflow connections contain a cycle. Please remove circular connections.`)]);return}setSaveOpen(true)},[request]);const orderedSteps=useMemo(()=>{const steps=workflow.steps||[];const res=utils.resolveStepOrderFromConnections(steps,workflow.canvasData\u0026\u0026workflow.canvasData.connections||[]);const ordered=res\u0026\u0026(res.orderedSteps||res.ordered)||[];const seen=new Set(ordered.map(keyOf));return ordered.concat(steps.filter(s=>!seen.has(keyOf(s))))},[workflow]);const handleSave=name=>{actions.setName({name});setSaveOpen(false);setIntegration({name,orderedSteps})};return _jsxs(_Fragment,{children:[_jsx(ValidationErrorsDialog,{open:validationErrors.length>0,errors:validationErrors,onClose:()=>{setValidationErrors([]);if(onDone)onDone()}}),_jsx(SaveCustomWorkflowDialog,{open:saveOpen,initialName:workflow.name||``,onClose:()=>{setSaveOpen(false);if(onDone)onDone()},onSave:handleSave}),_jsx(IntegrationDialog,{open:!!integration,name:integration?integration.name:``,orderedSteps:integration?integration.orderedSteps:[],onClose:()=>{setIntegration(null);if(onDone)onDone()}})]})};return{SaveFlow,stepValidation,buildPublicWorkflowPayload,PUBLIC_STEP_IDS}};const makeConfigPanel=({WB,utils,store,ui,mui})=>{const _components={a:`a`,..._provideComponents()};const{useWorkflow}=store;const{StepIcon}=ui;const{Iconify,FlagIcon,MuiSwitch,MuiCheckbox,MuiChip,MuiAlert,MuiDialog,MuiSlider,MuiRangeSlider,MuiToggleGroup,MuiTabs,MuiDivider,Adornment,NumberBadge,SmallIconButton,Spinner,MuiButton,MuiTextField,MuiSelect,cx}=mui;const I18N=WB.I18N||{};const REMOVED=new Set(WB.REMOVED_PROPERTY_GROUPS||[`id-classification-settings`]);const STEP_UP_GUARD_STEPS=WB.STEP_UP_GUARD_STEPS||[`ip-jurisdiction`,`vpn-detection`,`injection-detection`];const PHONE_INTEL_BLOCK_IDS=[`phone-trust-check`,`carrier-age-gate`,`phone-ownership-match`];const CUSTOM_FORM_FIELD_TYPES=WB.CUSTOM_FORM_FIELD_TYPES||[];const CUSTOM_FORM_FIELD_TYPE_DEFAULT=WB.CUSTOM_FORM_FIELD_TYPE_DEFAULT||`short-text`;const CUSTOM_FORM_MAX_OPTIONS=WB.MAX_OPTIONS||10;const MAX_FIELDS_PER_PAGE=WB.MAX_FIELDS_PER_PAGE||5;const QUESTIONNAIRE_TEMPLATES=WB.QUESTIONNAIRE_TEMPLATES||{};const INPUT_TYPE_ICONS=WB.INPUT_TYPE_ICONS||{};const INPUT_TYPE_LABELS=WB.INPUT_TYPE_LABELS||{};const OPTION_MARKERS=WB.OPTION_MARKERS||{};const PROOFCALL_QUESTION_TEMPLATES=WB.PROOFCALL_QUESTION_TEMPLATES||{};const AGE_RESTRICTION_CATEGORIES=WB.AGE_RESTRICTION_CATEGORIES||[];const AGE_RESTRICTION_COUNTRY_DATA=WB.AGE_RESTRICTION_COUNTRY_DATA||[];const US_UNIVERSITIES=WB.US_UNIVERSITIES||[];const CA_UNIVERSITIES=WB.CA_UNIVERSITIES||[];const JURISDICTIONS=WB.JURISDICTIONS||[];const E_SIGNATURE_FIELD_TYPES=WB.ESIGN\u0026\u0026WB.ESIGN.FIELD_TYPES||[];const ADMIN_CONSOLE=`https://app.deepidv.com/dashboard`;const stepKeyOf=s=>s\u0026\u0026(s.instanceId||s.id)||null;const GRADIENT_BTN=`wb-mbtn-gradient`;const t=(key,fallback,vars)=>{let s=typeof I18N[key]===`string`?I18N[key]:fallback;if(typeof s!==`string`)s=fallback||``;if(vars)Object.keys(vars).forEach(k=>{s=s.split(`{{`+k+`}}`).join(String(vars[k]))});return s};const tCount=(key,count)=>{const k=count===1?key+`_one`:key+`_other`;return t(k,I18N[key]||`{{count}}`,{count})};const deepGet=(obj,path)=>path.reduce((acc,k)=>acc\u0026\u0026typeof acc===`object`?acc[k]:undefined,obj);const tPath=(path,fallback)=>{const v=deepGet(I18N,path);return typeof v===`string`?v:fallback||``};const tGroup=(step,group,field)=>tPath([`stepConfig`,step.id,group.groupId,field],group[field]||``);const tProp=(step,group,prop,field=`label`)=>tPath([`stepConfig`,step.id,group.groupId,prop.id,field],prop[field]||``);const tOption=(step,group,prop,option,field=`label`)=>tPath([`stepConfig`,step.id,group.groupId,prop.id,`options`,option.value,field],option[field]||``);const stepLabel=step=>{const key=(WB.WORKFLOW_STEP_I18N_KEYS||{})[step.id];return key\u0026\u0026I18N[key]||step.label||step.id};const GradientButton=({children,onClick,disabled,startIcon,size=`small`,style,testId,fullWidth})=>_jsx(MuiButton,{variant:`contained`,gradient:true,className:cx(`wb-sp-gbtn`,size===`small`\u0026\u0026`wb-mbtn-sm`,fullWidth\u0026\u0026`wb-mbtn-full`),onClick,disabled,startIcon,style,testId,children});const OutlinedSmall=({children,onClick,disabled,startIcon,className,style,dashed,testId})=>_jsx(MuiButton,{variant:`outlined`,className:cx(`wb-mbtn-sm wb-sp-obtn`,dashed\u0026\u0026`wb-sp-obtn-dashed`,className),onClick,disabled,startIcon,style,testId,children});const SoftButton=({children,onClick,disabled,color=`primary`,startIcon,className,style,fullWidth,testId})=>_jsxs(`button`,{type:`button`,className:cx(`wb-mbtn wb-mbtn-sm wb-sp-soft`,`wb-sp-soft-`+color,fullWidth\u0026\u0026`wb-mbtn-full`,className),onClick,disabled,style,\"data-testid\":testId,children:[startIcon?_jsx(`span`,{className:`wb-mbtn-start`,children:startIcon}):null,_jsx(`span`,{children})]});const stepUpNeedsEscalation=step=>{if(!STEP_UP_GUARD_STEPS.includes(step\u0026\u0026step.id))return false;const props=(step.propertyGroups||[]).flatMap(g=>g.properties||[]);const hasStepUp=props.some(p=>p.value===`step-up`);const esc=props.find(p=>p.id===`escalation-type`);return hasStepUp\u0026\u0026(!esc||!esc.value||esc.value===`none`)};const getProp=(step,groupId,propId)=>{const g=(step.propertyGroups||[]).find(x=>x.groupId===groupId);return g?(g.properties||[]).find(p=>p.id===propId):undefined};const getPropValue=(step,groupId,propId)=>{const p=getProp(step,groupId,propId);return p?p.value:undefined};const mapProps=(step,groupId,fn)=>({...step,propertyGroups:(step.propertyGroups||[]).map(g=>g.groupId===groupId?{...g,properties:(g.properties||[]).map(fn)}:g)});const DialogFooterButtons=({onCancel,onSave,saveLabel=`Save`,cancelLabel=`Cancel`,outlinedCancel})=>_jsxs(_Fragment,{children:[outlinedCancel?_jsx(MuiButton,{variant:`outlined`,className:`wb-mbtn-sm wb-sp-cancel-outlined`,onClick:onCancel,children:cancelLabel}):_jsx(MuiButton,{variant:`text`,className:`wb-mbtn-sm`,style:{color:`var(--wb-text-secondary)`},onClick:onCancel,children:cancelLabel}),_jsx(GradientButton,{onClick:onSave,style:{borderRadius:8},children:saveLabel})]});const CountryCustomizeButton=({value,countries,onChange})=>{const[open,setOpen]=useState(false);const[search,setSearch]=useState(``);const[localValue,setLocalValue]=useState(value||{});const allCountries=(countries||[]).flatMap(region=>(region.categoryOptions||[]).map(c=>({...c,region:region.category})));const filtered=search.trim()?allCountries.filter(c=>c.name.toLowerCase().includes(search.toLowerCase())):allCountries;const grouped={};filtered.forEach(c=>{(grouped[c.region]=grouped[c.region]||[]).push(c)});const selectedCount=Object.values(localValue).filter(Boolean).length;const toggleAll=on=>{const next={};allCountries.forEach(c=>{next[c.id]=on});setLocalValue(next)};return _jsxs(_Fragment,{children:[_jsxs(OutlinedSmall,{startIcon:_jsx(Iconify,{icon:`solar:settings-linear`,width:16}),onClick:()=>{setLocalValue(value||{});setOpen(true)},testId:`wb-country-customize`,children:[`Customize (`,Object.values(value||{}).filter(Boolean).length,`)`]}),_jsx(MuiDialog,{open,onClose:()=>setOpen(false),maxWidth:`sm`,testId:`wb-country-dialog`,paperStyle:{borderRadius:24,maxHeight:`80vh`},title:_jsxs(`div`,{className:`wb-sp-dialog-head`,children:[_jsx(`span`,{className:`wb-sp-dialog-h6`,children:`Select Countries`}),_jsx(SmallIconButton,{icon:`mingcute:close-line`,width:20,onClick:()=>setOpen(false),label:`Close`})]}),actions:_jsx(DialogFooterButtons,{outlinedCancel:true,onCancel:()=>setOpen(false),onSave:()=>{onChange(localValue);setOpen(false)}}),children:_jsxs(`div`,{className:`wb-sp-stack16`,style:{paddingTop:8},children:[_jsx(MuiTextField,{fullWidth:true,size:`small`,placeholder:`Search countries...`,value:search,onChange:setSearch,startAdornment:_jsx(Iconify,{icon:`eva:search-fill`,width:18})}),_jsxs(`div`,{className:`wb-sp-row8`,children:[_jsx(SoftButton,{onClick:()=>toggleAll(true),children:`Select All`}),_jsx(SoftButton,{color:`inherit`,onClick:()=>toggleAll(false),children:`Deselect All`})]}),_jsx(`div`,{style:{maxHeight:`50vh`,overflowY:`auto`},children:Object.entries(grouped).map(([region,list])=>_jsxs(`div`,{style:{marginBottom:16},children:[_jsx(`div`,{className:`wb-sp-overline`,children:region}),_jsx(`div`,{className:`wb-sp-chips`,style:{marginTop:4},children:list.map(country=>_jsx(MuiChip,{label:country.name,icon:_jsx(FlagIcon,{code:country.id,size:18}),variant:localValue[country.id]?`filled`:`outlined`,color:localValue[country.id]?`primary`:`default`,onClick:()=>setLocalValue(prev=>({...prev,[country.id]:!prev[country.id]})),className:`wb-sp-chip-sq`},country.id))})]},region))}),_jsxs(`div`,{className:`wb-sp-caption`,children:[selectedCount,` selected`]})]})})]})};const EducationInstitutionPicker=({value,onUpdate})=>{const[open,setOpen]=useState(false);const[search,setSearch]=useState(``);const[localValue,setLocalValue]=useState(value||{});const universities=useMemo(()=>[...US_UNIVERSITIES.map(u=>({...u,country:u.country||`US`})),...CA_UNIVERSITIES.map(u=>({...u,country:u.country||`CA`}))],[]);const selectedCount=universities.length-Object.keys(localValue).length;const currentCount=universities.length-Object.keys(value||{}).length;const filtered=search.trim()?universities.filter(u=>u.name.toLowerCase().includes(search.toLowerCase())):universities;const toggleAll=on=>setLocalValue(on?{}:Object.fromEntries(universities.map(u=>[u.id,true])));const UniLogo=({domain})=>{const[idx,setIdx]=useState(0);const sources=[`https://logo.clearbit.com/`+domain,`https://www.google.com/s2/favicons?domain=`+domain+`\u0026sz=128`,``];const src=sources[idx];if(!src)return _jsx(`span`,{className:`wb-sp-unilogo-fallback`,children:_jsx(Iconify,{icon:`solar:square-academic-cap-bold`,width:12})});return _jsx(`img`,{src,alt:``,className:`wb-sp-unilogo`,onError:()=>setIdx(i=>i+1)})};return _jsxs(_Fragment,{children:[_jsxs(`div`,{className:`wb-sp-stack12`,children:[_jsxs(`div`,{className:`wb-sp-caption`,children:[currentCount,` of `,universities.length,` institutions selected`]}),_jsxs(OutlinedSmall,{startIcon:_jsx(Iconify,{icon:`solar:settings-linear`,width:16}),onClick:()=>{setLocalValue(value||{});setOpen(true)},children:[`Configure (`,currentCount,`)`]})]}),_jsx(MuiDialog,{open,onClose:()=>setOpen(false),maxWidth:`md`,paperStyle:{borderRadius:24,maxHeight:`85vh`},title:_jsxs(`div`,{children:[_jsxs(`div`,{className:`wb-sp-dialog-head`,children:[_jsx(`span`,{className:`wb-sp-dialog-h6`,children:`Select Institutions`}),_jsx(SmallIconButton,{icon:`mingcute:close-line`,width:20,onClick:()=>setOpen(false),label:`Close`})]}),_jsxs(`div`,{className:`wb-sp-body2 wb-sp-secondary`,style:{marginTop:4},children:[selectedCount,` of `,universities.length,` selected`]})]}),actions:_jsx(DialogFooterButtons,{outlinedCancel:true,onCancel:()=>setOpen(false),onSave:()=>{onUpdate(localValue);setOpen(false)}}),children:_jsxs(`div`,{className:`wb-sp-stack16`,style:{paddingTop:8},children:[_jsx(MuiTextField,{fullWidth:true,size:`small`,placeholder:`Search institutions...`,value:search,onChange:setSearch,startAdornment:_jsx(Iconify,{icon:`eva:search-fill`,width:18})}),_jsxs(`div`,{className:`wb-sp-row8`,children:[_jsx(SoftButton,{onClick:()=>toggleAll(true),children:`Select All`}),_jsx(SoftButton,{color:`inherit`,onClick:()=>toggleAll(false),children:`Deselect All`})]}),_jsx(`div`,{style:{maxHeight:`50vh`,overflowY:`auto`},children:_jsx(`div`,{className:`wb-sp-chips`,style:{gap:6},children:filtered.map(uni=>{const isSelected=!localValue[uni.id];return _jsx(MuiChip,{label:uni.name,icon:_jsx(UniLogo,{domain:uni.domain}),variant:isSelected?`filled`:`outlined`,color:isSelected?`primary`:`default`,className:`wb-sp-chip-sq`,onClick:()=>setLocalValue(prev=>{const next={...prev};if(next[uni.id])delete next[uni.id];else next[uni.id]=true;return next})},uni.id)})})})]})})]})};const CustomizeQuestionsDialog=({open,section,questions,onClose,onSave})=>{const[edited,setEdited]=useState(questions||[]);const update=(idx,key,value)=>setEdited(prev=>prev.map((q,i)=>i===idx?{...q,[key]:value}:q));const remove=idx=>setEdited(prev=>prev.filter((_,i)=>i!==idx));const move=(idx,dir)=>{const list=[...edited];const target=idx+dir;if(target\u003c0||target>=list.length)return;[list[idx],list[target]]=[list[target],list[idx]];setEdited(list)};const isMarker=o=>typeof o===`string`\u0026\u0026!!OPTION_MARKERS[o];return _jsx(MuiDialog,{open,onClose,maxWidth:`md`,dividers:true,contentStyle:{padding:0},title:t(`stepConfigCustomizeQuestions`,`Customize Questions`),titleIcon:_jsx(Iconify,{icon:`solar:clipboard-list-linear`,width:22,color:`var(--wb-primary)`}),subtitle:section?section.name+` • `+tCount(`stepConfigQuestionCount`,edited.length):null,actions:_jsx(DialogFooterButtons,{onCancel:onClose,onSave:()=>{onSave(edited);onClose()},cancelLabel:t(`stepConfigDialogCancel`,`Cancel`),saveLabel:t(`stepConfigDialogSave`,`Save Changes`)}),children:edited.map((q,idx)=>_jsxs(`div`,{className:`wb-sp-qrow`,children:[_jsxs(`div`,{className:`wb-sp-qmove`,children:[_jsx(SmallIconButton,{icon:`solar:alt-arrow-up-linear`,width:14,disabled:idx===0,onClick:()=>move(idx,-1),label:`Move up`}),_jsx(SmallIconButton,{icon:`solar:alt-arrow-down-linear`,width:14,disabled:idx===edited.length-1,onClick:()=>move(idx,1),label:`Move down`})]}),_jsxs(`div`,{className:`wb-sp-stack8`,style:{flex:1,minWidth:0},children:[_jsx(MuiTextField,{fullWidth:true,size:`small`,multiline:true,rows:1,value:q.text,onChange:v=>update(idx,`text`,v),className:`wb-sp-small-input`}),_jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`center`},children:[_jsx(MuiChip,{variant:`outlined`,label:INPUT_TYPE_LABELS[q.type]?tPath([`stepConfigInputType`,q.type],INPUT_TYPE_LABELS[q.type]):q.type,icon:_jsx(Iconify,{icon:INPUT_TYPE_ICONS[q.type]||`solar:text-linear`,width:14}),className:`wb-sp-chip-xs`}),_jsx(MuiChip,{label:q.required?t(`stepConfigQuestionRequired`,`Required`):t(`stepConfigQuestionOptional`,`Optional`),color:q.required?`primary`:`default`,variant:q.required?`filled`:`outlined`,onClick:()=>update(idx,`required`,!q.required),className:`wb-sp-chip-xs`}),q.conditional?_jsx(MuiChip,{label:t(`stepConfigQuestionConditional`,`Conditional`),variant:`outlined`,color:`warning`,className:`wb-sp-chip-xs`}):null]}),Array.isArray(q.options)?_jsx(MuiTextField,{fullWidth:true,size:`small`,label:t(`stepConfigQuestionOptions`,`Options (comma-separated)`),value:q.options.join(`, `),onChange:v=>update(idx,`options`,v.split(`,`).map(s=>s.trim())),className:`wb-sp-small-input`}):null,isMarker(q.options)?_jsx(MuiChip,{variant:`outlined`,icon:_jsx(Iconify,{icon:`solar:global-linear`,width:14}),label:t(`stepConfigQuestionOptionsFromList`,`Country list ({{count}} options)`,{count:(OPTION_MARKERS[q.options]||[]).length}),className:`wb-sp-chip-xs`,style:{alignSelf:`flex-start`}}):null]}),_jsx(SmallIconButton,{icon:`solar:trash-bin-minimalistic-linear`,width:16,onClick:()=>remove(idx),label:`Remove`,danger:true,style:{marginTop:4}})]},q.id))})};const QuestionnaireTemplateToggles=({prop,onUpdate})=>{const[customize,setCustomize]=useState(null);const value=prop.value||{};const all=Object.values(QUESTIONNAIRE_TEMPLATES);const tTemplateName=tpl=>tPath([`questionnaire`,tpl.id,`name`],tpl.name);const tSectionName=(tpl,sec)=>tPath([`questionnaire`,tpl.id,sec.id,`name`],sec.name);const toggleTemplate=id=>{const cur=value[id]||{enabled:false,sections:{}};onUpdate({...value,[id]:{...cur,enabled:!cur.enabled}})};const toggleSection=(tid,sid)=>{const tpl=value[tid]||{enabled:true,sections:{}};const sec=tpl.sections\u0026\u0026tpl.sections[sid]||{enabled:false,questions:null};onUpdate({...value,[tid]:{...tpl,sections:{...tpl.sections||{},[sid]:{...sec,enabled:!sec.enabled}}}})};const saveQuestions=(tid,sid,questions)=>{const tpl=value[tid]||{enabled:true,sections:{}};onUpdate({...value,[tid]:{...tpl,sections:{...tpl.sections||{},[sid]:{enabled:true,questions}}}})};return _jsxs(_Fragment,{children:[_jsx(`div`,{className:`wb-sp-stack12`,children:all.map(template=>{const st=value[template.id]||{enabled:false,sections:{}};return _jsxs(`div`,{children:[_jsxs(`div`,{className:cx(`wb-sp-qt-head`,st.enabled\u0026\u0026`wb-sp-qt-head-on`),children:[_jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`center`},children:[_jsx(MuiSwitch,{size:`small`,color:`success`,checked:!!st.enabled,onChange:()=>toggleTemplate(template.id)}),_jsx(`span`,{className:cx(`wb-sp-caption`,`wb-sp-bold`,st.enabled?`wb-sp-primarytext`:`wb-sp-secondary`),children:tTemplateName(template)})]}),_jsx(`span`,{className:`wb-sp-caption wb-sp-disabled`,style:{fontSize:`0.6rem`},children:tCount(`stepConfigSectionCount`,template.sections.length)})]}),st.enabled?_jsx(`div`,{className:`wb-sp-qt-body`,children:template.sections.map((section,idx)=>{const sec=st.sections\u0026\u0026st.sections[section.id]||{enabled:false};const qCount=sec.questions\u0026\u0026sec.questions.length||section.questions.length;return _jsxs(`div`,{className:cx(`wb-sp-qt-sec`,sec.enabled\u0026\u0026`wb-sp-qt-sec-on`),style:{borderBottom:idx\u003ctemplate.sections.length-1?`1px solid var(--wb-grey-a10)`:`none`},children:[_jsxs(`div`,{className:`wb-sp-row6`,style:{alignItems:`center`,flex:1,minWidth:0},children:[_jsx(`span`,{style:{transform:`scale(0.8)`,display:`inline-flex`},children:_jsx(MuiSwitch,{size:`small`,color:`success`,checked:!!sec.enabled,onChange:()=>toggleSection(template.id,section.id)})}),_jsxs(`div`,{style:{minWidth:0},children:[_jsx(`div`,{className:cx(`wb-sp-caption wb-sp-semibold wb-sp-nowrap`,sec.enabled?`wb-sp-primarytext`:`wb-sp-disabled`),style:{fontSize:`0.7rem`},children:tSectionName(template,section)}),_jsx(`div`,{className:`wb-sp-caption wb-sp-disabled`,style:{fontSize:`0.6rem`},children:tCount(`stepConfigQuestionCount`,qCount)})]})]}),sec.enabled?_jsx(SmallIconButton,{icon:`solar:settings-linear`,width:14,label:`Customize`,onClick:()=>setCustomize({templateId:template.id,section,questions:sec.questions||section.questions.map(q=>({...q}))})}):null]},section.id)})}):null]},template.id)})}),customize?_jsx(CustomizeQuestionsDialog,{open:true,section:customize.section,questions:customize.questions,onClose:()=>setCustomize(null),onSave:qs=>saveQuestions(customize.templateId,customize.section.id,qs)}):null]})};const WORKFLOW_ESIGN_ROLE_OPTIONS=[{value:`recipient`,label:`Applicant`},{value:`sender`,label:`Sender`}];const WORKFLOW_ESIGN_DEFAULT_FIELD_TYPES=E_SIGNATURE_FIELD_TYPES.filter(f=>[`signature`,`initial`,`date_signed`,`textbox`,`checkbox`].includes(f.value));let esignFieldCounter=0;let esignFileCounter=0;const esignLocalFiles=new Map;const resolveFieldType=input=>{const raw=typeof input===`string`?input:input\u0026\u0026(input.type||input.value||input.inputType)||``;const legacy={date:`date_signed`,text:`textbox`,initials:`initial`};const norm=legacy[raw]||raw;return E_SIGNATURE_FIELD_TYPES.find(f=>f.value===norm)||E_SIGNATURE_FIELD_TYPES.find(f=>f.inputType===norm)||WORKFLOW_ESIGN_DEFAULT_FIELD_TYPES[0]||{value:`signature`,label:`Signature`,inputType:`signature`}};const normalizeESignField=(field,index=0)=>{const ft=resolveFieldType(field);return{id:field\u0026\u0026field.id||`workflow-esign-field-`+Date.now()+`-`+ ++esignFieldCounter,type:ft.value,inputType:ft.inputType,label:field\u0026\u0026field.label||ft.label,role:field\u0026\u0026field.role===`sender`?`sender`:`recipient`,page:Math.max(1,Number(field\u0026\u0026field.page||1)||1),x:Number.isFinite(Number(field\u0026\u0026field.x))?Number(field.x):48+index%4*24,y:Number.isFinite(Number(field\u0026\u0026field.y))?Number(field.y):620-index%4*28,scale:1,scaleX:1,scaleY:1,options:Array.isArray(field\u0026\u0026field.options)?field.options:[],direction:field\u0026\u0026field.direction||`row`}};const ESignFieldDialog=({open,file,sourceFile,onClose,onSave})=>{const[fields,setFields]=useState(()=>Array.isArray(file\u0026\u0026file.fields)?file.fields.map(normalizeESignField):[]);const[activeRole,setActiveRole]=useState(`recipient`);const sourceIsPdf=!!(sourceFile\u0026\u0026(sourceFile.type===`application/pdf`||/\\.pdf$/i.test(sourceFile.name||``)));const addField=ft=>setFields(prev=>[...prev,normalizeESignField({type:ft.value,role:activeRole,label:ft.label},prev.length)]);const renderList=roleId=>{const roleFields=fields.filter(f=>f.role===roleId);return _jsxs(`div`,{className:`wb-sp-stack8`,children:[roleFields.length===0?_jsx(`span`,{className:`wb-sp-caption wb-sp-disabled`,style:{fontStyle:`italic`},children:`No fields added yet`}):null,roleFields.map(field=>{const ft=resolveFieldType(field);return _jsxs(`div`,{className:`wb-sp-esign-fieldrow`,children:[_jsx(Iconify,{icon:ft.icon||`solar:pen-new-square-linear`,width:16,color:`var(--wb-text-secondary)`}),_jsx(`select`,{className:`wb-sp-plainselect`,value:field.type,onChange:e=>{const nft=resolveFieldType(e.target.value);setFields(prev=>prev.map(it=>it.id===field.id?{...it,type:nft.value,inputType:nft.inputType,label:nft.label}:it))},children:E_SIGNATURE_FIELD_TYPES.map(o=>_jsx(`option`,{value:o.value,children:o.label},o.value))}),_jsx(SmallIconButton,{icon:`solar:close-circle-bold`,width:16,label:`Remove field`,danger:true,onClick:()=>setFields(prev=>prev.filter(it=>it.id!==field.id))})]},field.id)})]})};return _jsx(MuiDialog,{open,onClose,maxWidth:`lg`,dividers:true,title:`Configure Signature Fields`,subtitle:file\u0026\u0026file.name,titleIcon:_jsx(Iconify,{icon:`solar:pen-new-square-linear`,width:22,color:`var(--wb-primary)`}),actions:_jsx(DialogFooterButtons,{onCancel:onClose,onSave:()=>{onSave({fields,pageCount:Math.max(1,Number(file\u0026\u0026file.pageCount||1)||1)});onClose()},saveLabel:`Done`}),children:_jsxs(`div`,{className:`wb-sp-esign-editor`,children:[_jsxs(`div`,{className:`wb-sp-esign-side`,children:[_jsxs(`div`,{className:`wb-sp-stack8`,children:[_jsx(`div`,{className:`wb-sp-subtitle2 wb-sp-bold`,children:`Assign New Fields To`}),_jsx(MuiToggleGroup,{value:activeRole,onChange:setActiveRole,options:WORKFLOW_ESIGN_ROLE_OPTIONS}),_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:`Drag a field into the page, or click a field below to place it.`})]}),_jsx(MuiDivider,{}),_jsxs(`div`,{className:`wb-sp-stack8`,children:[_jsx(`div`,{className:`wb-sp-subtitle2 wb-sp-bold`,children:`Field Palette`}),_jsx(`div`,{className:`wb-sp-stack6`,children:WORKFLOW_ESIGN_DEFAULT_FIELD_TYPES.map(ft=>_jsxs(`button`,{type:`button`,className:`wb-sp-esign-palette-item`,onClick:()=>addField(ft),children:[_jsx(Iconify,{icon:ft.icon,width:18}),_jsx(`span`,{children:ft.label})]},ft.value))})]}),_jsx(MuiDivider,{}),_jsxs(`div`,{className:`wb-sp-stack16`,children:[_jsx(MuiAlert,{severity:`info`,variant:`outlined`,children:sourceIsPdf?`Field placement preview is not available in the docs sandbox. You can still manage the field list below.`:`Field placement preview currently supports PDF files only. You can still manage the field list below.`}),_jsxs(`div`,{className:`wb-sp-grid2`,children:[_jsxs(`div`,{className:`wb-sp-stack12`,children:[_jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`center`},children:[_jsx(`span`,{className:`wb-sp-dot`,style:{background:`var(--wb-success)`}}),_jsx(`span`,{className:`wb-sp-subtitle2 wb-sp-bold`,children:`Applicant Fields`})]}),renderList(`recipient`)]}),_jsxs(`div`,{className:`wb-sp-stack12`,children:[_jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`center`},children:[_jsx(`span`,{className:`wb-sp-dot`,style:{background:`var(--wb-primary)`}}),_jsx(`span`,{className:`wb-sp-subtitle2 wb-sp-bold`,children:`Sender Fields`})]}),renderList(`sender`)]})]})]})]}),_jsx(`div`,{className:`wb-sp-esign-stage`,children:_jsxs(`div`,{className:`wb-sp-esign-stage-empty`,children:[_jsx(Iconify,{icon:`solar:file-text-linear`,width:44}),_jsx(`span`,{className:`wb-sp-body2`,children:`Preview unavailable for this document.`})]})})]})})};const ESignDocumentSetup=({prop,isDisabled,onUpdate})=>{const inputRef=useRef(null);const[dialogOpen,setDialogOpen]=useState(false);const[editingIdx,setEditingIdx]=useState(null);const files=prop.value\u0026\u0026prop.value.files||[];const handleFiles=e=>{const picked=Array.from(e.target.files||[]).slice(0,25-files.length);if(!picked.length)return;const newFiles=picked.map(file=>{const localFileId=`workflow-esign-doc-`+Date.now()+`-`+ ++esignFileCounter;esignLocalFiles.set(localFileId,file);return{localFileId,name:file.name,size:file.size,type:file.type||``,pageCount:0,fields:[]}});onUpdate({...prop.value||{},files:[...files,...newFiles]});setEditingIdx(files.length);setDialogOpen(true);e.target.value=``};const editing=editingIdx!==null?files[editingIdx]:null;return _jsxs(`div`,{className:`wb-sp-stack12`,children:[files.map((file,idx)=>_jsxs(`div`,{className:`wb-sp-esign-filerow`,children:[_jsx(Iconify,{icon:`solar:file-text-linear`,width:18,color:`var(--wb-text-secondary)`}),_jsxs(`div`,{style:{flex:1,minWidth:0},children:[_jsx(`div`,{className:`wb-sp-caption wb-sp-semibold wb-sp-nowrap`,children:file.name}),_jsxs(`div`,{className:`wb-sp-caption wb-sp-disabled`,children:[file.fields\u0026\u0026file.fields.length||0,` field`,(file.fields\u0026\u0026file.fields.length)!==1?`s`:``,` configured`]})]}),_jsx(OutlinedSmall,{className:`wb-sp-tinybtn`,disabled:isDisabled,onClick:()=>{setEditingIdx(idx);setDialogOpen(true)},children:`Edit Fields`}),_jsx(SmallIconButton,{icon:`solar:close-circle-bold`,width:18,danger:true,disabled:isDisabled,label:`Remove`,onClick:()=>{if(file.localFileId)esignLocalFiles.delete(file.localFileId);onUpdate({...prop.value||{},files:files.filter((_,i)=>i!==idx)})}})]},idx)),files.length\u003c25?_jsxs(_Fragment,{children:[_jsx(`input`,{ref:inputRef,type:`file`,multiple:true,accept:`.pdf,application/pdf`,style:{display:`none`},onChange:handleFiles,disabled:isDisabled}),_jsxs(OutlinedSmall,{dashed:true,disabled:isDisabled,startIcon:_jsx(Iconify,{icon:`solar:upload-linear`,width:16}),onClick:()=>inputRef.current\u0026\u0026inputRef.current.click(),children:[`Upload Document`,files.length>0?` (`+files.length+`/25)`:` (up to 25)`]})]}):null,editing\u0026\u0026dialogOpen?_jsx(ESignFieldDialog,{open:true,file:editing,sourceFile:editing.localFileId?esignLocalFiles.get(editing.localFileId):null,onClose:()=>{setDialogOpen(false);setEditingIdx(null)},onSave:({fields,pageCount})=>onUpdate({...prop.value||{},files:files.map((f,i)=>i===editingIdx?{...f,fields,pageCount:pageCount||f.pageCount||0}:f)})}):null]})};const MOCK_ESIGN_TEMPLATES=[{id:`tpl-nda-applicant`,title:`Mutual NDA (applicant signs)`,workflowSignerCount:1,workflowSignerRoles:[`signer_1`]},{id:`tpl-service-agreement`,title:`Service Agreement (applicant + sender)`,workflowSignerCount:2,workflowSignerRoles:[`signer_1`,`signer_2`]},{id:`tpl-lease`,title:`Residential Lease (applicant signs)`,workflowSignerCount:1,workflowSignerRoles:[`signer_1`]},{id:`tpl-board-resolution`,title:`Board Resolution (3 signers)`,workflowSignerCount:3,workflowSignerRoles:[`signer_1`,`signer_2`,`signer_3`]}];const mapTemplateOption=template=>{const signerCount=Number(template.workflowSignerCount||0);return{value:template.id,label:template.title||template.name||`Template `+template.id,workflowSignerCount:signerCount,workflowSignerRoles:template.workflowSignerRoles||[],disabled:signerCount>2||signerCount\u003c1,hint:signerCount>2?`Workflow supports max 2 signers`:signerCount===2?`Applicant + sender`:signerCount===1?`Applicant only`:`Missing signer fields`}};const FormFieldEditor=({fieldKey,fieldConfig,onChange,onDelete,disabled})=>{const normalized=fieldConfig\u0026\u0026typeof fieldConfig===`object`\u0026\u0026fieldConfig.label!==undefined?{label:fieldConfig.label||``,type:fieldConfig.type||CUSTOM_FORM_FIELD_TYPE_DEFAULT,options:fieldConfig.options\u0026\u0026typeof fieldConfig.options===`object`?fieldConfig.options:{}}:{label:typeof fieldConfig===`string`?fieldConfig:``,type:CUSTOM_FORM_FIELD_TYPE_DEFAULT,options:{}};const{label,type,options}=normalized;const FIELD_TYPE_I18N={\"short-text\":`stepConfigFieldTypeShortText`,dropdown:`stepConfigFieldTypeDropdown`,checkbox:`stepConfigFieldTypeCheckbox`,\"yes-no\":`stepConfigFieldTypeYesNo`,date:`stepConfigFieldTypeDate`,number:`stepConfigFieldTypeNumber`};const typeLabel=(id,fb)=>t(FIELD_TYPE_I18N[id],fb);const def=CUSTOM_FORM_FIELD_TYPES.find(ft=>ft.id===type)||CUSTOM_FORM_FIELD_TYPES.find(ft=>ft.id===CUSTOM_FORM_FIELD_TYPE_DEFAULT)||{};const optionsArray=Array.isArray(options)?options:Object.keys(options).sort((a,b)=>parseInt(a.replace(`option`,``),10)-parseInt(b.replace(`option`,``),10)).map(k=>options[k]);const toObj=arr=>arr.reduce((acc,v,i)=>{acc[`option`+(i+1)]=v;return acc},{});const maxOptions=def.maxOptions||CUSTOM_FORM_MAX_OPTIONS;return _jsxs(`div`,{className:`wb-sp-ffield`,children:[_jsx(MuiTextField,{fullWidth:true,size:`small`,placeholder:t(`stepConfigFieldLabelPlaceholder`,`Field label (e.g., Company Name)`),value:label,disabled,onChange:v=>onChange(fieldKey,{...normalized,label:v}),error:!label||!label.trim(),helperText:!label||!label.trim()?t(`stepConfigFieldLabelRequired`,`Label is required`):``,startAdornment:_jsx(NumberBadge,{color:`warning`,children:_jsx(Iconify,{icon:def.icon||`solar:text-field-bold`,width:12})}),endAdornment:_jsx(SmallIconButton,{icon:`solar:close-circle-bold`,width:18,danger:true,label:`Remove field`,onClick:()=>onDelete(fieldKey),style:{pointerEvents:`auto`}})}),_jsx(MuiSelect,{size:`small`,value:type,style:{minWidth:160},disabled,options:CUSTOM_FORM_FIELD_TYPES.map(ft=>({value:ft.id,label:typeLabel(ft.id,ft.label),icon:_jsx(Iconify,{icon:ft.icon,width:16})})),onChange:nt=>{const ntDef=CUSTOM_FORM_FIELD_TYPES.find(ft=>ft.id===nt);const has=options\u0026\u0026typeof options===`object`\u0026\u0026Object.keys(options).length>0;onChange(fieldKey,{...normalized,type:nt,options:ntDef\u0026\u0026ntDef.hasOptions?has?options:{option1:``}:{}})}}),def.hasOptions?_jsxs(`div`,{className:`wb-sp-stack8`,children:[_jsxs(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:[`Options (max `,maxOptions,`)`]}),optionsArray.map((opt,index)=>_jsx(MuiTextField,{fullWidth:true,size:`small`,placeholder:`Option `+(index+1),value:opt,disabled,onChange:v=>{const arr=[...optionsArray];arr[index]=v;onChange(fieldKey,{...normalized,options:toObj(arr)})},startAdornment:_jsx(NumberBadge,{color:`infoLight`,children:index+1}),endAdornment:_jsx(SmallIconButton,{icon:`solar:close-circle-bold`,width:18,danger:true,disabled:optionsArray.length\u003c=1,label:`Remove option`,onClick:()=>onChange(fieldKey,{...normalized,options:toObj(optionsArray.filter((_,i)=>i!==index))}),style:{pointerEvents:`auto`}})},index)),optionsArray.length\u003cmaxOptions?_jsx(SoftButton,{color:`info`,startIcon:_jsx(Iconify,{icon:`solar:add-circle-bold`,width:16}),onClick:()=>onChange(fieldKey,{...normalized,options:toObj([...optionsArray,``])}),style:{alignSelf:`flex-start`},children:`Add Option`}):null,optionsArray.length>=maxOptions?_jsxs(`span`,{className:`wb-sp-caption`,style:{color:`var(--wb-warning)`},children:[`Maximum of `,maxOptions,` options reached`]}):null]}):null]})};const CustomFormPages=({prop,isDisabled,updateValue})=>{const rawVal=prop.value\u0026\u0026typeof prop.value===`object`?prop.value:{};const isLegacyFlat=Object.keys(rawVal).length===0||Object.values(rawVal).some(v=>v\u0026\u0026typeof v===`object`\u0026\u0026`label`in v);const pages=isLegacyFlat?{page1:{fields:rawVal}}:rawVal;const pageEntries=Object.entries(pages);const blankField=()=>({label:``,type:CUSTOM_FORM_FIELD_TYPE_DEFAULT,options:{}});return _jsxs(`div`,{className:`wb-sp-stack16`,children:[_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:t(`stepConfigFormFieldsHint`,`Form fields the applicant needs to fill in`)}),pageEntries.map(([pageKey,pageData],pageIdx)=>{const fields=pageData\u0026\u0026pageData.fields||{};const fieldEntries=Object.entries(fields);const canAdd=fieldEntries.length\u003cMAX_FIELDS_PER_PAGE;return _jsxs(`div`,{className:`wb-sp-stack12`,children:[_jsxs(`div`,{className:`wb-sp-between`,children:[_jsxs(`span`,{className:`wb-sp-subtitle2 wb-sp-bold`,children:[`Page `,pageIdx+1]}),pageEntries.length>1?_jsx(SmallIconButton,{icon:`solar:close-circle-bold`,width:18,danger:true,disabled:isDisabled,label:`Remove page`,onClick:()=>{const np={...pages};delete np[pageKey];const re={};Object.values(np).forEach((p,i)=>{re[`page`+(i+1)]=p});updateValue(re)}}):null]}),_jsxs(`div`,{className:`wb-sp-stack12 wb-sp-pagefields`,children:[fieldEntries.map(([fieldKey,fieldConfig])=>_jsx(FormFieldEditor,{fieldKey,fieldConfig,disabled:isDisabled,onChange:(fk,cfg)=>updateValue({...pages,[pageKey]:{...pages[pageKey],fields:{...fields,[fk]:cfg}}}),onDelete:fk=>{const nf={...fields};delete nf[fk];const re={};Object.values(nf).forEach((f,i)=>{re[`field`+(i+1)]=f});updateValue({...pages,[pageKey]:{...pages[pageKey],fields:re}})}},fieldKey)),canAdd?_jsx(SoftButton,{color:`warning`,disabled:isDisabled,startIcon:_jsx(Iconify,{icon:`solar:add-circle-bold`,width:16}),onClick:()=>updateValue({...pages,[pageKey]:{...pages[pageKey],fields:{...fields,[`field`+(Object.keys(fields).length+1)]:blankField()}}}),style:{alignSelf:`flex-start`},children:t(`stepConfigAddField`,`Add Field`)}):_jsxs(`span`,{className:`wb-sp-caption wb-sp-disabled`,style:{fontStyle:`italic`},children:[`Maximum of `,MAX_FIELDS_PER_PAGE,` questions per page`]})]}),pageIdx\u003cpageEntries.length-1?_jsx(MuiDivider,{dashed:true,style:{margin:`4px 0`}}):null]},pageKey)}),_jsx(MuiDivider,{dashed:true,children:_jsx(SoftButton,{color:`info`,disabled:isDisabled,startIcon:_jsx(Iconify,{icon:`solar:add-circle-bold`,width:16}),onClick:()=>updateValue({...pages,[`page`+(pageEntries.length+1)]:{fields:{field1:blankField()}}}),children:`Add Page`})})]})};const MultiSelectTable=({options,values,onChange,optionLabel,categoryLabel})=>{const[search,setSearch]=useState(``);const[openRows,setOpenRows]=useState({});const selected=values\u0026\u0026typeof values===`object`\u0026\u0026!Array.isArray(values)?values:{};const q=search.toLowerCase();const rows=(options||[]).map(row=>{if(!q)return row;const catMatch=row.category.toLowerCase().includes(q);const matching=(row.categoryOptions||[]).filter(o=>o.name.toLowerCase().includes(q)||catMatch);return catMatch||matching.length?{...row,categoryOptions:matching}:null}).filter(Boolean);const allIds=rows.flatMap(r=>(r.categoryOptions||[]).map(o=>o.id));const numSelected=Object.keys(selected).filter(k=>selected[k]).length;const setAll=()=>{if(allIds.every(id=>selected[id]))onChange({});else{const next={...selected};allIds.forEach(id=>{next[id]=true});onChange(next)}};return _jsxs(`div`,{className:`wb-sp-stack16`,children:[_jsx(MuiTextField,{fullWidth:true,size:`small`,placeholder:`Search by `+(optionLabel||`item`)+`...`,value:search,onChange:setSearch,startAdornment:_jsx(Iconify,{icon:`eva:search-fill`,width:20})}),_jsxs(`div`,{className:`wb-sp-table`,children:[_jsxs(`div`,{className:`wb-sp-table-head`,children:[_jsx(MuiCheckbox,{checked:allIds.length>0\u0026\u0026numSelected===allIds.length,indeterminate:numSelected>0\u0026\u0026numSelected\u003callIds.length,onChange:setAll,ariaLabel:`Select all`}),_jsx(`span`,{className:`wb-sp-table-headcell`,children:categoryLabel})]}),rows.map(row=>{const ids=(row.categoryOptions||[]).map(o=>o.id);const all=ids.length>0\u0026\u0026ids.every(id=>selected[id]);const some=ids.some(id=>selected[id]);const open=!!openRows[row.id]||!!q\u0026\u0026(row.category.toLowerCase().includes(q)||ids.length>0);return _jsxs(`div`,{className:`wb-sp-table-row`,children:[_jsxs(`div`,{className:`wb-sp-table-primary`,onClick:()=>setOpenRows(p=>({...p,[row.id]:!open})),children:[_jsx(MuiCheckbox,{checked:all,indeterminate:some\u0026\u0026!all,onChange:()=>{const next={...selected};if(all)ids.forEach(id=>{delete next[id]});else ids.forEach(id=>{next[id]=true});onChange(next)},ariaLabel:row.category}),_jsx(`span`,{className:`wb-sp-body2 wb-sp-nowrap`,style:{flex:1},children:row.category}),_jsx(Iconify,{icon:`eva:arrow-ios-downward-fill`,width:20,style:{transform:open?`rotate(180deg)`:`none`,transition:`transform 0.2s`}})]}),open?_jsx(`div`,{className:`wb-sp-table-secondary`,children:(row.categoryOptions||[]).map(o=>_jsxs(`div`,{className:`wb-sp-table-option`,children:[_jsx(MuiCheckbox,{size:`small`,checked:!!selected[o.id],onChange:()=>{const next={...selected};if(next[o.id])delete next[o.id];else next[o.id]=true;onChange(next)},ariaLabel:o.name}),_jsxs(`div`,{children:[_jsx(`div`,{className:`wb-sp-body2`,children:o.name}),o.description?_jsx(`div`,{className:`wb-sp-caption wb-sp-secondary`,children:o.description}):null]})]},o.id))}):null]},row.id)}),!rows.length?_jsx(`div`,{className:`wb-sp-body2 wb-sp-secondary`,style:{textAlign:`center`,padding:24},children:`No data`}):null]})]})};const CountryIdTable=({options,value,onChange,categoryLabel=`Continent`})=>{const[open,setOpen]=useState(false);const[local,setLocal]=useState(value||{});const[search,setSearch]=useState(``);const[expanded,setExpanded]=useState({});const isOn=(vals,key)=>vals\u0026\u0026vals[key]===true;const countryKeys=c=>(c.idTypes||[]).map(i=>i.id);const continentKeys=c=>(c.countries||[]).flatMap(countryKeys);const allKeys=(options||[]).flatMap(continentKeys);const totalCountries=(options||[]).reduce((s,c)=>s+(c.countries||[]).length,0);const acceptedCountries=(options||[]).reduce((s,c)=>s+(c.countries||[]).filter(co=>countryKeys(co).some(k=>isOn(value,k))).length,0);const q=search.toLowerCase();const filtered=(options||[]).map(continent=>{if(!q)return continent;if(continent.category.toLowerCase().includes(q))return continent;const countries=(continent.countries||[]).filter(c=>c.name.toLowerCase().includes(q)||(c.idTypes||[]).some(i=>i.name.toLowerCase().includes(q)));return countries.length?{...continent,countries}:null}).filter(Boolean);const localSelected=allKeys.filter(k=>isOn(local,k)).length;const setKeys=(keys,on)=>setLocal(prev=>{const next={...prev};keys.forEach(k=>{next[k]=on});return next});const summary=acceptedCountries===totalCountries?`All `+totalCountries+` countries accepted`:acceptedCountries+` of `+totalCountries+` countries selected`;return _jsxs(_Fragment,{children:[_jsxs(`div`,{className:`wb-sp-row12`,style:{alignItems:`center`},children:[_jsx(OutlinedSmall,{startIcon:_jsx(Iconify,{icon:`solar:pen-bold`,width:16}),onClick:()=>{setLocal(value||{});setSearch(``);setOpen(true)},children:`Edit`}),_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:summary})]}),_jsx(MuiDialog,{open,onClose:()=>setOpen(false),maxWidth:`md`,paperStyle:{borderRadius:24,maxHeight:`85vh`},title:_jsxs(`div`,{className:`wb-sp-dialog-head`,children:[_jsxs(`div`,{children:[_jsx(`div`,{className:`wb-sp-dialog-h6`,children:`Valid ID Types by Country`}),_jsx(`div`,{className:`wb-sp-caption wb-sp-secondary`,children:`Select the countries and the individual ID documents accepted for verification.`})]}),_jsx(SmallIconButton,{icon:`mingcute:close-line`,width:20,onClick:()=>setOpen(false),label:`Close`})]}),actions:_jsxs(_Fragment,{children:[_jsx(MuiButton,{variant:`text`,className:`wb-mbtn-sm`,onClick:()=>setOpen(false),children:`Cancel`}),_jsxs(MuiButton,{variant:`contained`,className:`wb-mbtn-sm`,onClick:()=>{onChange(local);setOpen(false)},children:[`Save (`,localSelected,`)`]})]}),children:_jsxs(`div`,{className:`wb-sp-stack16`,style:{paddingTop:8},children:[_jsx(MuiTextField,{fullWidth:true,size:`small`,value:search,onChange:setSearch,placeholder:`Search country or ID type...`,startAdornment:_jsx(Iconify,{icon:`eva:search-fill`,width:20})}),_jsxs(`div`,{className:`wb-sp-row8`,children:[_jsx(SoftButton,{onClick:()=>setKeys(allKeys,true),children:`Accept All`}),_jsx(SoftButton,{color:`inherit`,onClick:()=>setKeys(allKeys,false),children:`Reject All`})]}),_jsxs(`div`,{style:{maxHeight:`55vh`,overflowY:`auto`,paddingRight:8},className:`wb-sp-stack4`,children:[filtered.map(continent=>{const keys=continentKeys(continent);const allOn=keys.length>0\u0026\u0026keys.every(k=>isOn(local,k));const someOn=keys.some(k=>isOn(local,k));const isOpen=!!q||!!expanded[continent.id];const accepted=(continent.countries||[]).filter(c=>countryKeys(c).some(k=>isOn(local,k))).length;return _jsxs(`div`,{className:`wb-sp-cid-group`,children:[_jsxs(`div`,{className:`wb-sp-cid-grouphead`,children:[_jsx(MuiCheckbox,{checked:allOn,indeterminate:someOn\u0026\u0026!allOn,onChange:()=>setKeys(keys,!allOn),ariaLabel:continent.category+` `+categoryLabel+` checkbox`}),_jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`center`,flex:1,cursor:`pointer`},onClick:()=>setExpanded(p=>({...p,[continent.id]:!isOpen})),children:[_jsx(`span`,{className:`wb-sp-subtitle2`,style:{flex:1},children:continent.category}),_jsxs(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:[accepted,`/`,(continent.countries||[]).length]}),_jsx(Iconify,{icon:`eva:arrow-ios-downward-fill`,width:18,color:`var(--wb-text-secondary)`,style:{transform:isOpen?`rotate(180deg)`:`none`,transition:`transform 0.2s`}})]})]}),isOpen?_jsx(`div`,{style:{paddingBottom:8},children:(continent.countries||[]).map(country=>{const ck=countryKeys(country);const cAll=ck.length>0\u0026\u0026ck.every(k=>isOn(local,k));const cSome=ck.some(k=>isOn(local,k));return _jsxs(`div`,{className:`wb-sp-cid-country`,children:[_jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`center`,paddingLeft:8,padding:`2px 0 2px 8px`},children:[_jsx(MuiCheckbox,{checked:cAll,indeterminate:cSome\u0026\u0026!cAll,onChange:()=>setKeys(ck,!cAll),ariaLabel:country.name+` checkbox`}),_jsx(FlagIcon,{code:country.id,size:20}),_jsx(`span`,{className:`wb-sp-body2 wb-sp-semibold`,children:country.name})]}),_jsx(`div`,{style:{paddingLeft:48,paddingBottom:4},children:(country.idTypes||[]).map(idt=>_jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`flex-start`,padding:`2px 0`},children:[_jsx(MuiCheckbox,{size:`small`,checked:isOn(local,idt.id),onChange:()=>setKeys([idt.id],!isOn(local,idt.id)),ariaLabel:idt.name+` checkbox`}),_jsxs(`div`,{children:[_jsx(`div`,{className:`wb-sp-body2`,children:idt.name}),_jsx(`div`,{className:`wb-sp-caption wb-sp-secondary`,children:[idt.localName,idt.authority,idt.format,idt.notes].filter(Boolean).join(` · `)})]})]},idt.id))})]},country.id)})}):null]},continent.id)}),!filtered.length?_jsx(`div`,{className:`wb-sp-body2 wb-sp-secondary`,style:{textAlign:`center`,padding:32},children:`No countries match your search.`}):null]})]})})]})};const resolveMinAge=(countryEntry,dataKey)=>countryEntry\u0026\u0026countryEntry[dataKey]!==undefined?countryEntry[dataKey]:null;const computeOverallMinAge=rules=>{const ages=(rules||[]).flatMap(r=>(r.categories||[]).map(c=>c.minimumAge)).filter(a=>typeof a===`number`);return ages.length?Math.max(...ages):null};const AgeRestrictionCountryCategory=({value=[],onChange,onMinimumAgeChange,disabled})=>{const AGE_CATEGORY_I18N={\"online-gaming\":`stepConfigAgeCategoryOnlineGaming`,\"alcohol-tobacco\":`stepConfigAgeCategoryAlcoholTobacco`,\"adult-content\":`stepConfigAgeCategoryAdultContent`};const[selectedCategoryIds,setSelectedCategoryIds]=useState(()=>[...new Set(value.flatMap(v=>(v.categories||[]).map(c=>c.id)))]);const[open,setOpen]=useState(false);const[search,setSearch]=useState(``);const currentCountries=value.map(v=>v.country);const emit=next=>{onChange(next);if(onMinimumAgeChange)onMinimumAgeChange(computeOverallMinAge(next))};const buildAndEmit=(countries,catIds)=>{emit(countries.map(countryName=>{const entry=AGE_RESTRICTION_COUNTRY_DATA.find(c=>c.country===countryName);const categories=catIds.map(catId=>{const cat=AGE_RESTRICTION_CATEGORIES.find(c=>c.id===catId);const minAge=resolveMinAge(entry,cat.dataKey);return minAge!==null?{id:cat.id,label:cat.label,minimumAge:minAge}:null}).filter(Boolean);return{country:countryName,categories}}))};const toggleCategory=catId=>{const updated=selectedCategoryIds.includes(catId)?selectedCategoryIds.filter(id=>id!==catId):[...selectedCategoryIds,catId];setSelectedCategoryIds(updated);buildAndEmit(currentCountries,updated)};const toggleCountry=name=>{const next=currentCountries.includes(name)?currentCountries.filter(c=>c!==name):[...currentCountries,name];buildAndEmit(next,selectedCategoryIds)};const overallMin=computeOverallMinAge(value);const disabledCountries=disabled||selectedCategoryIds.length===0;const filtered=AGE_RESTRICTION_COUNTRY_DATA.filter(c=>c.country.toLowerCase().includes(search.toLowerCase()));return _jsxs(`div`,{className:`wb-sp-stack16`,children:[_jsxs(`div`,{children:[_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:t(`stepConfigAgeSelectCategories`,`Select categories to enforce`)}),AGE_RESTRICTION_CATEGORIES.map(cat=>_jsxs(`label`,{className:cx(`wb-sp-checkrow`,disabled\u0026\u0026`wb-sp-disabledrow`),children:[_jsx(MuiCheckbox,{size:`small`,checked:selectedCategoryIds.includes(cat.id),onChange:()=>toggleCategory(cat.id),disabled,ariaLabel:cat.label}),_jsx(`span`,{className:`wb-sp-body2`,children:t(AGE_CATEGORY_I18N[cat.id],cat.label)})]},cat.id))]}),_jsxs(`div`,{className:cx(`wb-sp-autocomplete`,disabledCountries\u0026\u0026`wb-mf-disabled`),children:[_jsxs(`div`,{className:`wb-sp-autocomplete-field`,onClick:()=>{if(!disabledCountries)setOpen(o=>!o)},children:[_jsx(`span`,{className:`wb-sp-autocomplete-label`,children:t(`stepConfigAgeSelectCountries`,`Select Countries`)}),_jsxs(`div`,{className:`wb-sp-chips`,style:{gap:4,flex:1},children:[value.map(v=>_jsx(MuiChip,{label:v.country,variant:`soft`,onDelete:disabledCountries?undefined:()=>toggleCountry(v.country)},v.country)),_jsx(`input`,{className:`wb-sp-autocomplete-input`,value:search,disabled:disabledCountries,placeholder:selectedCategoryIds.length===0?t(`stepConfigAgeSelectCategoriesFirst`,`Select categories first…`):t(`stepConfigAgeSearchCountries`,`Search countries…`),onChange:e=>{setSearch(e.target.value);setOpen(true)},onFocus:()=>setOpen(true),onClick:e=>e.stopPropagation()})]}),_jsx(Iconify,{icon:`eva:arrow-ios-downward-fill`,width:20,color:`var(--wb-text-secondary)`})]}),open\u0026\u0026!disabledCountries?_jsxs(`div`,{className:`wb-sp-autocomplete-menu`,children:[filtered.map(c=>_jsxs(`div`,{className:`wb-sp-autocomplete-option`,onClick:()=>toggleCountry(c.country),children:[_jsx(MuiCheckbox,{size:`small`,checked:currentCountries.includes(c.country),onChange:()=>toggleCountry(c.country),ariaLabel:c.country}),_jsx(`span`,{className:`wb-sp-body2`,children:c.country})]},c.country)),!filtered.length?_jsx(`div`,{className:`wb-sp-body2 wb-sp-secondary`,style:{padding:12},children:`No options`}):null]}):null]}),overallMin!==null?_jsxs(`div`,{className:`wb-sp-row8 wb-sp-minage`,children:[_jsx(`span`,{className:`wb-sp-body2`,style:{color:`var(--wb-success-dark)`,fontWeight:500},children:t(`stepConfigAgeMinimumAccepted`,`Minimum Accepted Age`)}),_jsx(MuiChip,{label:overallMin+`+`,variant:`paper`})]}):null]})};const JurisdictionPicker=({label,value,onChange})=>{const[open,setOpen]=useState(false);const[search,setSearch]=useState(``);const byCode=useMemo(()=>{const m={};JURISDICTIONS.forEach(j=>{m[j.code]=j});return m},[]);const codes=(Array.isArray(value)?value:String(value||``).split(`,`)).map(s=>String(s).trim().toUpperCase()).filter(Boolean);const selected=codes.map(code=>byCode[code]||{code,label:code,group:`Other`,countryCode:code.slice(0,2)});const q=search.toLowerCase();const groups={};JURISDICTIONS.filter(j=>!q||j.label.toLowerCase().includes(q)||j.code.toLowerCase().includes(q)).forEach(j=>{(groups[j.group]=groups[j.group]||[]).push(j)});const toggle=code=>onChange(codes.includes(code)?codes.filter(c=>c!==code):[...codes,code]);return _jsxs(`div`,{className:`wb-sp-autocomplete`,children:[_jsxs(`div`,{className:`wb-sp-autocomplete-field`,onClick:()=>setOpen(o=>!o),children:[_jsx(`span`,{className:`wb-sp-autocomplete-label`,children:label}),_jsxs(`div`,{className:`wb-sp-chips`,style:{gap:4,flex:1},children:[selected.map(opt=>_jsx(MuiChip,{label:opt.label,variant:`soft`,icon:_jsx(FlagIcon,{code:opt.countryCode,size:16}),onDelete:()=>toggle(opt.code)},opt.code)),_jsx(`input`,{className:`wb-sp-autocomplete-input`,value:search,placeholder:`Search countries or states…`,onChange:e=>{setSearch(e.target.value);setOpen(true)},onFocus:()=>setOpen(true),onClick:e=>e.stopPropagation()})]}),_jsx(Iconify,{icon:`eva:arrow-ios-downward-fill`,width:20,color:`var(--wb-text-secondary)`})]}),open?_jsx(`div`,{className:`wb-sp-autocomplete-menu`,children:Object.entries(groups).map(([group,list])=>_jsxs(`div`,{children:[_jsx(`div`,{className:`wb-sp-autocomplete-group`,children:group}),list.map(j=>_jsxs(`div`,{className:cx(`wb-sp-autocomplete-option`,codes.includes(j.code)\u0026\u0026`wb-sp-autocomplete-option-sel`),onClick:()=>toggle(j.code),children:[_jsx(FlagIcon,{code:j.countryCode,size:22}),_jsx(`span`,{className:`wb-sp-body2`,children:j.label})]},j.code))]},group))}):null]})};const ProofCallQuestions=({step,group,prop,updateValue})=>{const templateProp=(group.properties||[]).find(p=>p.id===`proofcall-template-type`);const templateType=templateProp\u0026\u0026templateProp.value||`employment`;const isCustom=templateType===`custom`;const templateQuestions=PROOFCALL_QUESTION_TEMPLATES[templateType]||[];const customQuestions=Array.isArray(prop.value)\u0026\u0026prop.value.length>0?prop.value:[{text:``}];const maxQuestions=Number.isInteger(prop.maxQuestions)\u0026\u0026prop.maxQuestions>0?prop.maxQuestions:10;let totalSeconds=25;if(isCustom){const nonEmpty=customQuestions.filter(q=>q.text\u0026\u0026q.text.trim());nonEmpty.forEach(q=>{const wc=q.text.trim().split(/\\s+/).length;totalSeconds+=8+wc*.35+30+Math.min(wc*.5,25)+8});if(nonEmpty.length===0)totalSeconds=0}else{templateQuestions.forEach(q=>{const wc=q.split(/\\s+/).length;totalSeconds+=8+wc*.35+35+8})}const estimatedMinutes=totalSeconds/60;const estimatedCost=estimatedMinutes*.5;return _jsxs(`div`,{className:`wb-sp-stack12`,children:[_jsxs(`div`,{className:`wb-sp-between`,style:{flexWrap:`wrap`,gap:8},children:[_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:isCustom?customQuestions.filter(q=>q.text\u0026\u0026q.text.trim()).length+`/`+maxQuestions+` questions`:templateQuestions.length+` questions`}),estimatedCost>0?_jsxs(`span`,{className:`wb-sp-row4`,style:{alignItems:`center`},children:[_jsx(Iconify,{icon:`solar:dollar-bold`,width:14,color:`#22C55E`}),_jsxs(`span`,{className:`wb-sp-caption`,style:{color:`#22C55E`,fontWeight:700},children:[`Est. $`,estimatedCost.toFixed(2),` (~`,estimatedMinutes.toFixed(1),` min)`]})]}):null]}),!isCustom?_jsx(`span`,{className:`wb-sp-caption wb-sp-disabled`,style:{fontStyle:`italic`},children:`Switch to Custom to edit. Use [name] as a placeholder for the subject's name.`}):null,_jsx(`div`,{className:`wb-sp-stack8`,children:isCustom?customQuestions.map((q,idx)=>_jsx(MuiTextField,{fullWidth:true,size:`small`,multiline:true,rows:2,placeholder:`Question `+(idx+1),value:q.text||``,onChange:v=>{const next=[...customQuestions];next[idx]={...next[idx],text:v};updateValue(next)},endAdornment:customQuestions.length>1?_jsx(SmallIconButton,{icon:`solar:close-circle-bold`,width:18,danger:true,label:`Remove`,onClick:()=>updateValue(customQuestions.filter((_,i)=>i!==idx)),style:{pointerEvents:`auto`}}):null},idx)):templateQuestions.map((q,idx)=>_jsx(`div`,{className:`wb-sp-tplq`,children:_jsxs(`span`,{className:`wb-sp-body2 wb-sp-secondary`,style:{fontSize:`0.8rem`},children:[idx+1,`. `,q]})},idx))}),isCustom\u0026\u0026customQuestions.length\u003cmaxQuestions?_jsx(GradientButton,{startIcon:_jsx(Iconify,{icon:`solar:add-circle-bold`,width:16}),onClick:()=>updateValue([...customQuestions,{text:``}]),style:{alignSelf:`flex-start`},children:`Add Question`}):null]})};const WeightDisplay=({step})=>{const on=(gid,pid)=>{const v=getPropValue(step,gid,pid);return v===undefined?true:v};const diEnabled=on(`bfp-device-integrity`,`device-integrity-enabled`);const msEnabled=on(`bfp-media-source`,`media-source-enabled`);const envEnabled=on(`bfp-environment-analysis`,`environment-enabled`);const base={device:.15,media:.2,env:.15};const totalBg=(diEnabled?base.device:0)+(msEnabled?base.media:0)+(envEnabled?base.env:0);const layers=[{label:t(`stepConfigLayerArMesh`,`AR Mesh`),weight:1-totalBg,color:`#1890FF`},diEnabled\u0026\u0026{label:t(`stepConfigLayerDevice`,`Device`),weight:base.device,color:`#7635DC`},msEnabled\u0026\u0026{label:t(`stepConfigLayerMedia`,`Media`),weight:base.media,color:`#FF5630`},envEnabled\u0026\u0026{label:t(`stepConfigLayerEnvironment`,`Environment`),weight:base.env,color:`#FFAB00`}].filter(Boolean);return _jsxs(`div`,{className:`wb-sp-weightbox`,children:[_jsx(`div`,{className:`wb-sp-caption wb-sp-secondary wb-sp-semibold`,style:{marginBottom:8},children:t(`stepConfigWeightAllocation`,`Weight Allocation`)}),_jsx(`div`,{className:`wb-sp-stack6`,children:layers.map(l=>_jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`center`},children:[_jsx(`span`,{className:`wb-sp-dot`,style:{background:l.color}}),_jsx(`span`,{className:`wb-sp-caption`,style:{flex:1,fontSize:`0.7rem`},children:l.label}),_jsxs(`span`,{className:`wb-sp-caption wb-sp-bold`,style:{fontSize:`0.7rem`},children:[Math.round(l.weight*100),`%`]})]},l.label))})]})};const DocUploadEditor=({step,group,prop,isDisabled,updateValue,patch})=>{const optionalFlagsProp=(group.properties||[]).find(p=>p.id===`document-optional-flags`);const optionalFlags=optionalFlagsProp\u0026\u0026optionalFlagsProp.value||{};const minUploadsProp=(group.properties||[]).find(p=>p.id===`minimum-optional-uploads`);const minUploads=minUploadsProp\u0026\u0026minUploadsProp.value||0;const optionalCount=Object.values(optionalFlags).filter(Boolean).length;const setGroupValues=values=>patch(s=>mapProps(s,group.groupId,p=>Object.prototype.hasOwnProperty.call(values,p.id)?{...p,value:values[p.id]}:p));const entries=Object.entries(prop.value||{});return _jsxs(`div`,{className:`wb-sp-stack12`,children:[_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:t(`stepConfigDocsHint`,`Documents the applicant needs to upload`)}),entries.map(([key,value])=>_jsxs(`div`,{className:`wb-sp-stack6`,children:[_jsx(MuiTextField,{fullWidth:true,size:`small`,placeholder:t(`stepConfigDocPlaceholder`,`e.g., Articles of Incorporation`),value,disabled:isDisabled,onChange:v=>updateValue({...prop.value||{},[key]:v}),startAdornment:_jsx(NumberBadge,{color:`info`,children:_jsx(Iconify,{icon:`solar:document-bold`,width:12})}),endAdornment:_jsx(SmallIconButton,{icon:`solar:close-circle-bold`,width:18,danger:true,disabled:isDisabled,label:`Remove document`,style:{pointerEvents:`auto`},onClick:()=>{const remaining=entries.filter(([k])=>k!==key);const newObj={};remaining.forEach(([,v],idx)=>{newObj[`document`+(idx+1)]=v});const oldKeys=remaining.map(([k])=>k);const newFlags={};oldKeys.forEach((ok,idx)=>{if(optionalFlags[ok])newFlags[`document`+(idx+1)]=true});const newOptCount=Object.values(newFlags).filter(Boolean).length;patch(s=>{let next=mapProps(s,group.groupId,p=>{if(p.id===prop.id)return{...p,value:newObj};if(p.id===`document-optional-flags`)return{...p,value:newFlags};if(p.id===`minimum-optional-uploads`\u0026\u0026(p.value||0)>newOptCount)return{...p,value:newOptCount};return p});const ext=getProp(next,`data-extraction-settings`,`data-extraction-config`);if(ext\u0026\u0026ext.value){const newExt={};oldKeys.forEach((ok,idx)=>{if(ext.value[ok])newExt[`document`+(idx+1)]=ext.value[ok]});next=mapProps(next,`data-extraction-settings`,p=>p.id===`data-extraction-config`?{...p,value:newExt}:p)}return next})}})}),_jsxs(`div`,{className:`wb-sp-reqopt`,children:[_jsx(`button`,{type:`button`,className:cx(`wb-sp-reqopt-btn`,!optionalFlags[key]\u0026\u0026`wb-sp-reqopt-on`),disabled:isDisabled,onClick:()=>{const nf={...optionalFlags};delete nf[key];const cnt=Object.values(nf).filter(Boolean).length;setGroupValues({\"document-optional-flags\":nf,...minUploads>cnt?{\"minimum-optional-uploads\":cnt}:{}})},children:t(`previewKybRequirementRequired`,`Required`)}),_jsx(`button`,{type:`button`,className:cx(`wb-sp-reqopt-btn`,optionalFlags[key]\u0026\u0026`wb-sp-reqopt-on`),disabled:isDisabled,onClick:()=>setGroupValues({\"document-optional-flags\":{...optionalFlags,[key]:true}}),children:t(`previewKybRequirementOptional`,`Optional`)})]})]},key)),_jsx(GradientButton,{disabled:isDisabled,startIcon:_jsx(Iconify,{icon:`solar:add-circle-bold`,width:16}),onClick:()=>updateValue({...prop.value||{},[`document`+(entries.length+1)]:``}),style:{alignSelf:`flex-start`},children:t(`stepConfigAddDocument`,`Add Document`)}),optionalCount>0?_jsxs(`div`,{className:`wb-sp-stack6`,style:{marginTop:8},children:[_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary wb-sp-semibold`,children:t(`stepConfigMinOptionalUploadsLabel`,`Minimum optional uploads required`)}),_jsxs(`div`,{className:`wb-sp-spinner`,children:[_jsx(`button`,{type:`button`,className:`wb-sp-spinner-btn`,disabled:isDisabled||minUploads\u003c=0,onClick:()=>setGroupValues({\"minimum-optional-uploads\":Math.max(0,minUploads-1)}),children:_jsx(Iconify,{icon:`eva:minus-outline`,width:18})}),_jsx(`span`,{className:`wb-sp-spinner-val`,children:minUploads}),_jsx(`button`,{type:`button`,className:`wb-sp-spinner-btn`,disabled:isDisabled||minUploads>=optionalCount,onClick:()=>setGroupValues({\"minimum-optional-uploads\":Math.min(optionalCount,minUploads+1)}),children:_jsx(Iconify,{icon:`eva:plus-outline`,width:18})})]}),_jsx(`span`,{className:`wb-sp-caption wb-sp-disabled`,children:t(`stepConfigMinOptionalUploadsHint`,`How many optional documents must be uploaded (0 = no minimum)`)})]}):null]})};const DataExtractionEditor=({step,prop,isDisabled,updateValue})=>{const docList=getPropValue(step,`document-upload-instructions`,`document-upload-list`)||{};const docEntries=Object.entries(docList).filter(([,name])=>name\u0026\u0026name.trim());const config=prop.value||{};const update=(docKey,cfg)=>updateValue({...config,[docKey]:cfg});const live=new Set(docEntries.map(([k])=>k));const allParams=[];Object.entries(config).filter(([k])=>live.has(k)).forEach(([,cfg])=>{(cfg\u0026\u0026cfg.extractions||[]).forEach(ex=>{if(ex.parameter)allParams.push(ex.parameter)})});const duplicates=allParams.filter((p,i)=>allParams.indexOf(p)!==i);if(docEntries.length===0)return _jsx(`span`,{className:`wb-sp-caption wb-sp-disabled`,children:`Add documents above to configure data extraction.`});return _jsx(`div`,{className:`wb-sp-stack16`,children:docEntries.map(([docKey,docName])=>{const cfg=config[docKey]||{enabled:false,extractions:[]};return _jsxs(`div`,{className:`wb-sp-extbox`,children:[_jsxs(`div`,{className:`wb-sp-between`,children:[_jsx(`span`,{className:`wb-sp-body2 wb-sp-semibold`,children:docName}),_jsx(MuiSwitch,{size:`small`,checked:!!cfg.enabled,disabled:isDisabled,onChange:v=>update(docKey,{...cfg,enabled:v})})]}),cfg.enabled?_jsxs(`div`,{className:`wb-sp-stack8`,style:{marginTop:12},children:[(cfg.extractions||[]).map((entry,idx)=>{const isDup=duplicates.includes(entry.parameter);const isInvalid=entry.parameter\u0026\u0026!/^[a-zA-Z0-9_]+$/.test(entry.parameter);return _jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`flex-start`},children:[_jsxs(`div`,{className:`wb-sp-stack8`,style:{flex:1},children:[_jsx(MuiTextField,{size:`small`,fullWidth:true,placeholder:`e.g. Final net pay amount`,label:`Prompt`,value:entry.prompt||``,disabled:isDisabled,onChange:v=>{const ex=[...cfg.extractions||[]];ex[idx]={...ex[idx],prompt:v};update(docKey,{...cfg,extractions:ex})}}),_jsx(MuiTextField,{size:`small`,fullWidth:true,placeholder:`e.g. netPay`,label:`Parameter`,value:entry.parameter||``,disabled:isDisabled,error:isDup||isInvalid,helperText:isDup?`Duplicate parameter`:isInvalid?`Letters, numbers, _ only`:``,onChange:v=>{const ex=[...cfg.extractions||[]];ex[idx]={...ex[idx],parameter:v};update(docKey,{...cfg,extractions:ex})}})]}),_jsx(SmallIconButton,{icon:`solar:close-circle-bold`,width:18,danger:true,disabled:isDisabled,label:`Remove`,style:{marginTop:4},onClick:()=>update(docKey,{...cfg,extractions:(cfg.extractions||[]).filter((_,i)=>i!==idx)})})]},idx)}),_jsx(OutlinedSmall,{disabled:isDisabled,startIcon:_jsx(Iconify,{icon:`solar:add-circle-bold`,width:16}),onClick:()=>update(docKey,{...cfg,extractions:[...cfg.extractions||[],{prompt:``,parameter:``}]}),style:{alignSelf:`flex-start`},children:`Add extraction`})]}):null]},docKey)})})};const TextListEditor=({prop,isDisabled,updateValue})=>{const list=Array.isArray(prop.value)?prop.value:[];return _jsxs(`div`,{className:`wb-sp-stack12`,children:[_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:t(`stepConfigPromptsHint`,`Actions for applicant to perform in their photo`)}),list.map((item,index)=>_jsx(MuiTextField,{fullWidth:true,size:`small`,placeholder:t(`stepConfigPromptPlaceholder`,`e.g., Hold two fingers up`),value:item.text||``,disabled:isDisabled,onChange:v=>{const next=[...list];next[index]={...next[index],text:v};updateValue(next)},startAdornment:_jsx(NumberBadge,{color:`primary`,shape:`round`,children:index+1}),endAdornment:_jsx(SmallIconButton,{icon:`solar:close-circle-bold`,width:18,danger:true,disabled:isDisabled,label:`Remove`,style:{pointerEvents:`auto`},onClick:()=>updateValue(list.filter((_,i)=>i!==index))})},index)),_jsx(GradientButton,{disabled:isDisabled,startIcon:_jsx(Iconify,{icon:`solar:add-circle-bold`,width:16}),onClick:()=>updateValue([...list,{text:``}]),style:{alignSelf:`flex-start`},children:t(`stepConfigAddPrompt`,`Add Prompt`)})]})};const PanelHeader=({stepId,title,subtitleText})=>_jsxs(`div`,{className:`wb-sp-header`,children:[_jsx(`span`,{className:`wb-tile wb-tile-50`,style:{background:utils.getStepGradient(stepId)},children:_jsx(StepIcon,{icon:utils.getStepIcon(stepId),size:28})}),_jsxs(`div`,{children:[_jsx(`div`,{className:`wb-sp-subtitle2 wb-sp-secondary`,children:title}),_jsx(`div`,{className:`wb-sp-h6`,children:subtitleText||t(`builderConfigureSettings`,`Configure settings`)})]})]});const PHONE_INTEL_KEY=`deepidv-wb-phone-intel-config-v1`;const PHONE_INTEL_DEFAULTS={version:12,lastChangedBy:`compliance@operator.com`,lastChangedAt:`2026-08-20T14:20:00.000Z`,pendingApproval:false,preOtpGuard:{enabled:true,checks:{simSwap:true,callDivert:true,lineType:true},simSwapStepUpHours:72,simSwapFlagDays:7,fallbackChannel:`email`},simpleBlocks:{phoneTrustCheck:{enabled:false,sensitivity:`medium`,actionOnTrip:`step_up`},carrierAgeGate:{enabled:false,threshold:18},phoneOwnershipMatch:{enabled:false,strictness:`medium`}}};const SENSITIVITY_OPTIONS=[{value:`low`,label:`Low`,color:`success`,helper:`Only very recent SIM changes.`},{value:`medium`,label:`Medium`,color:`warning`,helper:`Recent SIM changes or call forwarding.`},{value:`high`,label:`High`,color:`error`,helper:`Also unusual line types.`}];const ACTION_ON_TRIP_OPTIONS=[{value:`flag`,label:`Flag`},{value:`step_up`,label:`Step-up`}];const AGE_THRESHOLD_OPTIONS=[{value:18,label:`18`,color:`neutral`},{value:21,label:`21`,color:`neutral`}];const STRICTNESS_OPTIONS=[{value:`relaxed`,label:`Relaxed`,color:`success`},{value:`medium`,label:`Medium`,color:`warning`},{value:`strict`,label:`Strict`,color:`error`}];const FALLBACK_CHANNEL_OPTIONS=[{value:`email`,label:`Email`},{value:`authenticator`,label:`Authenticator app`},{value:`none`,label:`None`}];const PRE_OTP_CHECKS=[{id:`simSwap`,label:`Was this SIM recently changed`},{id:`callDivert`,label:`Is this number forwarding calls`},{id:`lineType`,label:`Is this an unusual line type`}];const COVERAGE_COMMANDS=[{id:`sim_swap`,label:`SIM change check`},{id:`kyc_match`,label:`Name and date of birth match`}];const COVERAGE_STATES={served:{label:`Covered`,color:`success`},not_covered:{label:`Coming Soon`,color:`default`},unknown:{label:`Partial Coverage`,color:`warning`}};const COVERAGE_COUNTRY_META={EU:{name:`EU`,flag:`eu`},US:{name:`US`,flag:`us`},CAN:{name:`CAN`,flag:`ca`},BR:{name:`BR`,flag:`br`},JPN:{name:`JPN`,flag:`jp`},SK:{name:`SK`,flag:`kr`},NG:{name:`Nigeria`,flag:`ng`},KE:{name:`Kenya`,flag:`ke`},GH:{name:`Ghana`,flag:`gh`}};const MOCK_COVERAGE=[{iso:`EU`,commands:{sim_swap:`served`,kyc_match:`served`}},{iso:`US`,commands:{sim_swap:`served`,kyc_match:`served`}},{iso:`CAN`,commands:{sim_swap:`served`,kyc_match:`served`}},{iso:`BR`,commands:{sim_swap:`served`,kyc_match:`unknown`}},{iso:`JPN`,commands:{sim_swap:`served`,kyc_match:`served`}},{iso:`SK`,commands:{sim_swap:`served`,kyc_match:`served`}},{iso:`NG`,commands:{sim_swap:`served`,kyc_match:`not_covered`}},{iso:`KE`,commands:{sim_swap:`served`,kyc_match:`not_covered`}},{iso:`GH`,commands:{sim_swap:`served`,kyc_match:`not_covered`}}];const readPhoneIntel=()=>{try{const raw=window.localStorage.getItem(PHONE_INTEL_KEY);if(raw)return JSON.parse(raw)}catch(e){}return PHONE_INTEL_DEFAULTS};const deepSet=(obj,path,value)=>{const keys=path.split(`.`);const out={...obj};let cur=out;keys.forEach((k,i)=>{if(i===keys.length-1)cur[k]=value;else{cur[k]={...cur[k]||{}};cur=cur[k]}});return out};const PhoneIntelForm=({stepId,title,children})=>{const[saved,setSaved]=useState(readPhoneIntel);const[draft,setDraft]=useState(saved);const[pendingApproval,setPendingApproval]=useState(!!saved.pendingApproval);const isDirty=JSON.stringify(draft)!==JSON.stringify(saved);const save=()=>{const next={...draft,version:(saved.version||0)+1,pendingApproval:true,lastChangedBy:`you@operator.com`,lastChangedAt:new Date().toISOString()};try{window.localStorage.setItem(PHONE_INTEL_KEY,JSON.stringify(next))}catch(e){}setSaved(next);setDraft(next);setPendingApproval(true)};const api={watch:path=>deepGet(draft,path.split(`.`)),setValue:(path,value)=>setDraft(d=>deepSet(d,path,value))};return _jsxs(`div`,{className:`wb-sp-stack20`,style:{paddingBottom:32},children:[stepId?_jsx(PanelHeader,{stepId,title}):null,_jsxs(`div`,{className:`wb-sp-stack20`,style:{padding:`0 24px`},children:[_jsx(MuiAlert,{severity:`info`,variant:`outlined`,children:`Mock mode: changes are kept for this session only (backend not connected).`}),pendingApproval?_jsxs(MuiAlert,{severity:`info`,variant:`outlined`,icon:_jsx(Iconify,{icon:`ph:hourglass-medium`,width:22}),action:_jsx(MuiChip,{label:`pending approval`,color:`info`,variant:`soft`}),children:[saved.version?`Version `+saved.version+` was submitted and is awaiting approval. `:`Changes were submitted and are awaiting approval. `,`A new submission replaces the pending one.`]}):null,typeof children===`function`?children(api):children,_jsx(`div`,{style:{display:`flex`,justifyContent:`flex-end`,paddingTop:8},children:_jsx(MuiButton,{variant:`contained`,disabled:!isDirty,onClick:save,children:`Save changes`})})]})]})};const EnableSwitch=({api,name,label,description})=>_jsxs(`div`,{className:`wb-sp-between`,style:{gap:16},children:[_jsxs(`div`,{style:{minWidth:0},children:[_jsx(`div`,{className:`wb-sp-body2 wb-sp-semibold`,children:label}),description?_jsx(`div`,{className:`wb-sp-caption wb-sp-secondary`,children:description}):null]}),_jsx(MuiSwitch,{checked:!!api.watch(name),onChange:v=>api.setValue(name,v)})]});const FieldBlock=({label,description,children})=>_jsxs(`div`,{children:[_jsx(`div`,{className:`wb-sp-body2 wb-sp-semibold`,style:{marginBottom:4},children:label}),description?_jsx(`div`,{className:`wb-sp-caption wb-sp-secondary`,style:{marginBottom:8},children:description}):null,children]});const BehaviorNote=({children})=>_jsxs(`div`,{className:`wb-sp-note`,children:[_jsx(Iconify,{icon:`ph:info`,width:16,style:{marginTop:2,flexShrink:0}}),_jsx(`span`,{className:`wb-sp-caption`,children})]});const SegmentedField=({api,name,options,ariaLabel})=>_jsx(MuiToggleGroup,{segmented:true,value:api.watch(name),onChange:v=>api.setValue(name,v),options,ariaLabel});const PhoneTrustCheckSection=({api})=>{const sens=api.watch(`simpleBlocks.phoneTrustCheck.sensitivity`);const helper=(SENSITIVITY_OPTIONS.find(o=>o.value===sens)||{}).helper;return _jsxs(`div`,{className:`wb-sp-stack20`,children:[_jsx(EnableSwitch,{api,name:`simpleBlocks.phoneTrustCheck.enabled`,label:`Turn on phone trust check`,description:`Looks at recent SIM changes and call forwarding before a code is sent.`}),_jsx(FieldBlock,{label:`Sensitivity`,description:helper,children:_jsx(SegmentedField,{api,name:`simpleBlocks.phoneTrustCheck.sensitivity`,options:SENSITIVITY_OPTIONS,ariaLabel:`Sensitivity`})}),_jsx(FieldBlock,{label:`If it trips`,children:_jsx(SegmentedField,{api,name:`simpleBlocks.phoneTrustCheck.actionOnTrip`,options:ACTION_ON_TRIP_OPTIONS,ariaLabel:`Action if it trips`})})]})};const CarrierAgeGateSection=({api})=>_jsxs(`div`,{className:`wb-sp-stack20`,children:[_jsx(EnableSwitch,{api,name:`simpleBlocks.carrierAgeGate.enabled`,label:`Turn on carrier age gate`,description:`Asks the carrier to confirm the person meets the minimum age.`}),_jsx(FieldBlock,{label:`Minimum age`,children:_jsx(SegmentedField,{api,name:`simpleBlocks.carrierAgeGate.threshold`,options:AGE_THRESHOLD_OPTIONS,ariaLabel:`Minimum age`})}),_jsx(BehaviorNote,{children:`If the carrier cannot confirm age, the person continues to the standard age check.`})]});const PhoneOwnershipMatchSection=({api})=>_jsxs(`div`,{className:`wb-sp-stack20`,children:[_jsx(EnableSwitch,{api,name:`simpleBlocks.phoneOwnershipMatch.enabled`,label:`Turn on phone ownership match`,description:`Compares the name and date of birth on the phone subscription.`}),_jsx(FieldBlock,{label:`Strictness`,children:_jsx(SegmentedField,{api,name:`simpleBlocks.phoneOwnershipMatch.strictness`,options:STRICTNESS_OPTIONS,ariaLabel:`Strictness`})}),_jsx(BehaviorNote,{children:`Checks the name and date of birth on the phone subscription. If the carrier holds no data, the person continues normally.`})]});const PreOtpGuardSection=({api})=>{const[confirmNone,setConfirmNone]=useState(false);const guardEnabled=!!api.watch(`preOtpGuard.enabled`);const fallback=api.watch(`preOtpGuard.fallbackChannel`);return _jsxs(`div`,{className:`wb-sp-stack20`,children:[_jsx(EnableSwitch,{api,name:`preOtpGuard.enabled`,label:`Turn on the pre-code guard`,description:`Runs carrier checks before a one-time code is sent.`}),_jsx(FieldBlock,{label:`Checks to run`,children:_jsx(`div`,{className:`wb-sp-stack12`,style:{opacity:guardEnabled?1:.5,pointerEvents:guardEnabled?`auto`:`none`},children:PRE_OTP_CHECKS.map(c=>_jsx(EnableSwitch,{api,name:`preOtpGuard.checks.`+c.id,label:c.label},c.id))})}),_jsxs(`div`,{className:`wb-sp-row16`,children:[_jsx(FieldBlock,{label:`Step-up window (hours)`,children:_jsx(MuiTextField,{size:`small`,type:`number`,value:api.watch(`preOtpGuard.simSwapStepUpHours`),onChange:v=>api.setValue(`preOtpGuard.simSwapStepUpHours`,Number(v)),inputProps:{min:1,max:720}})}),_jsx(FieldBlock,{label:`Flag window (days)`,children:_jsx(MuiTextField,{size:`small`,type:`number`,value:api.watch(`preOtpGuard.simSwapFlagDays`),onChange:v=>api.setValue(`preOtpGuard.simSwapFlagDays`,Number(v)),inputProps:{min:1,max:90}})})]}),_jsx(FieldBlock,{label:`Fallback channel`,children:_jsx(MuiSelect,{size:`small`,value:fallback||``,options:FALLBACK_CHANNEL_OPTIONS,style:{maxWidth:280,width:`100%`},onChange:v=>{if(v===`none`)setConfirmNone(true);else api.setValue(`preOtpGuard.fallbackChannel`,v)}})}),_jsx(MuiDialog,{open:confirmNone,onClose:()=>setConfirmNone(false),maxWidth:`xs`,title:`Turn off the fallback channel?`,actions:_jsxs(_Fragment,{children:[_jsx(MuiButton,{variant:`text`,onClick:()=>setConfirmNone(false),children:`Keep current`}),_jsx(MuiButton,{variant:`contained`,onClick:()=>{api.setValue(`preOtpGuard.fallbackChannel`,`none`);setConfirmNone(false)},children:`Use None`})]}),children:_jsx(`p`,{className:`wb-sp-body1 wb-sp-secondary`,children:`With no fallback channel, one-time codes are still sent to the phone even when a recent SIM change is detected.`})})]})};const CostEstimate=({api})=>{const guard=api.watch(`preOtpGuard`)||{};const count=guard.enabled?[`simSwap`,`callDivert`,`lineType`].filter(k=>guard.checks\u0026\u0026guard.checks[k]).length:0;return _jsxs(`div`,{className:`wb-sp-neutralbox`,children:[_jsx(`div`,{className:`wb-sp-subtitle2`,children:`Cost`}),_jsx(`div`,{className:`wb-sp-caption wb-sp-secondary`,style:{display:`block`,marginTop:2},children:`Billing is per served command.`}),_jsxs(`div`,{className:`wb-sp-body2`,style:{marginTop:4},children:[`Current guard configuration uses up to `,count,` command`,count===1?``:`s`,` per verification.`]})]})};const CoverageMatrix=()=>_jsxs(`div`,{style:{overflowX:`auto`},children:[_jsxs(`table`,{className:`wb-sp-covtable`,children:[_jsx(`thead`,{children:_jsxs(`tr`,{children:[_jsx(`th`,{children:`Country`}),COVERAGE_COMMANDS.map(c=>_jsx(`th`,{style:{textAlign:`center`},children:c.label},c.id))]})}),_jsx(`tbody`,{children:MOCK_COVERAGE.map(country=>{const meta=COVERAGE_COUNTRY_META[country.iso];return _jsxs(`tr`,{children:[_jsx(`td`,{children:_jsxs(`span`,{className:`wb-sp-row8`,style:{alignItems:`center`,fontWeight:600},children:[_jsx(FlagIcon,{code:meta\u0026\u0026meta.flag||country.iso,size:22}),_jsx(`span`,{children:meta\u0026\u0026meta.name||country.iso})]})}),COVERAGE_COMMANDS.map(c=>{const cfg=COVERAGE_STATES[(country.commands||{})[c.id]]||COVERAGE_STATES.unknown;return _jsx(`td`,{style:{textAlign:`center`},children:_jsx(MuiChip,{label:cfg.label,color:cfg.color,variant:`soft`,className:`wb-sp-chip-xs`})},c.id)})]},country.iso)})})]}),_jsx(`div`,{className:`wb-sp-caption wb-sp-secondary`,style:{marginTop:8},children:`Coverage varies by country and supplier and can change without notice.`})]});const CarrierIntelligenceTab=()=>_jsx(PhoneIntelForm,{children:api=>_jsxs(_Fragment,{children:[_jsx(PreOtpGuardSection,{api}),_jsx(CostEstimate,{api}),_jsx(MuiDivider,{children:_jsx(`span`,{className:`wb-sp-overline`,children:`Coverage`})}),_jsx(CoverageMatrix,{})]})});const PhoneIntelBlock=({stepId})=>{const titles={\"phone-trust-check\":`Phone Trust Check`,\"carrier-age-gate\":`Carrier Age Gate`,\"phone-ownership-match\":`Phone Ownership Match`};const Section={\"phone-trust-check\":PhoneTrustCheckSection,\"carrier-age-gate\":CarrierAgeGateSection,\"phone-ownership-match\":PhoneOwnershipMatchSection}[stepId];if(!Section)return null;return _jsx(PhoneIntelForm,{stepId,title:titles[stepId],children:api=>_jsx(Section,{api})})};const PhoneVerificationSettings=({step,patch})=>{const[tab,setTab]=useState(`prompt`);const PROMPT_MAX=60;const value=((step.propertyGroups||[]).flatMap(g=>g.properties||[]).find(p=>p.id===`verification-prompt`)||{}).value||``;const update=next=>patch(s=>({...s,propertyGroups:(s.propertyGroups||[]).map(g=>({...g,properties:(g.properties||[]).map(p=>p.id===`verification-prompt`?{...p,value:next}:p)}))}));return _jsxs(`div`,{className:`wb-sp-stack20`,style:{paddingBottom:32},children:[_jsx(PanelHeader,{stepId:`phone-verification`,title:`Phone Verification`}),_jsx(MuiTabs,{value:tab,onChange:setTab,tabs:[{value:`prompt`,label:`Prompt`},{value:`carrier`,label:`Carrier intelligence`}],style:{padding:`0 24px`}}),_jsx(`div`,{style:{display:tab===`prompt`?`block`:`none`},children:_jsx(`div`,{className:`wb-sp-stack16`,style:{padding:`0 24px`},children:_jsx(FieldBlock,{label:`Verification prompt`,description:`The words the person says on the call.`,children:_jsx(MuiTextField,{fullWidth:true,size:`small`,value,onChange:v=>update(String(v).slice(0,PROMPT_MAX)),placeholder:`Say your full name and today's date`,helperText:value.length+`/`+PROMPT_MAX})})})}),_jsx(`div`,{style:{display:tab===`carrier`?`block`:`none`},children:_jsx(CarrierIntelligenceTab,{})})]})};const StepSettingsPanel=({step,actions})=>{const key=stepKeyOf(step);const stepRef=useRef(step);stepRef.current=step;const patch=useCallback(fn=>actions.patchStep({stepKey:key,step:fn(stepRef.current)}),[actions,key]);const updatePropertyValue=useCallback((groupId,propId,value)=>actions.updatePropertyValue({stepKey:key,groupId,propId,value}),[actions,key]);const updatePropertyValues=useCallback((groupId,values)=>actions.updatePropertyValues({stepKey:key,groupId,values}),[actions,key]);const isESignatureStep=step.id===`e-signature`;const COMPAT=`e-signature-settings`;const TPL_GROUP=`esign-template`;const DOC_GROUP=`esign-document-setup`;const SIG_GROUP=`esign-signature-method`;const[templateOptions,setTemplateOptions]=useState([]);const[isLoadingTemplates,setIsLoadingTemplates]=useState(false);const[templatesError,setTemplatesError]=useState(``);const loadWorkflowTemplates=useCallback(()=>{setIsLoadingTemplates(true);setTemplatesError(``);window.setTimeout(()=>{setTemplateOptions(MOCK_ESIGN_TEMPLATES.map(mapTemplateOption));setIsLoadingTemplates(false)},450)},[]);useEffect(()=>{if(isESignatureStep)loadWorkflowTemplates()},[isESignatureStep,loadWorkflowTemplates]);const selectedTemplateId=String(getPropValue(step,TPL_GROUP,`template-id`)||getPropValue(step,COMPAT,`template-id`)||``);const includeSenderAsSigner=!!getPropValue(step,COMPAT,`include-sender-as-signer`);const selectedTemplateOption=templateOptions.find(o=>o.value===selectedTemplateId)||null;const selectedTemplateSignerCount=Number(selectedTemplateOption\u0026\u0026selectedTemplateOption.workflowSignerCount||getPropValue(step,COMPAT,`template-signer-count`)||0)||0;const syncWorkflowTemplateSelection=useCallback((templateId,opts)=>{const clearManagedState=!!(opts\u0026\u0026opts.clearManagedState);const sel=templateOptions.find(o=>o.value===templateId);const signerCount=Number(sel\u0026\u0026sel.workflowSignerCount||0);const templateName=sel\u0026\u0026sel.label||``;patch(s=>{const currentSenderRole=getPropValue(s,COMPAT,`sender-role`)||``;return{...s,propertyGroups:(s.propertyGroups||[]).map(group=>{if(group.groupId===TPL_GROUP)return{...group,properties:group.properties.map(p=>p.id===`template-id`?{...p,value:templateId}:p)};if(group.groupId===COMPAT){return{...group,properties:group.properties.map(p=>{switch(p.id){case`source-mode`:return{...p,value:`template`};case`template-id`:return{...p,value:templateId};case`template-name`:return{...p,value:templateName};case`template-signer-count`:return{...p,value:signerCount};case`include-sender-as-signer`:return{...p,value:signerCount===2};case`sender-role`:return{...p,value:signerCount===2?currentSenderRole||`signer_2`:``};case`workflow-template-managed`:return clearManagedState?{...p,value:false}:p;case`workflow-template-source-signature`:return clearManagedState?{...p,value:``}:p;default:return p}})}}return group})}})},[templateOptions,patch]);useEffect(()=>{if(!isESignatureStep||!selectedTemplateId||!selectedTemplateOption)return;const cur=(gid,pid)=>String(getPropValue(step,gid,pid)||``);const nextIncludeSender=selectedTemplateSignerCount===2;const nextSenderRole=nextIncludeSender?cur(COMPAT,`sender-role`)||`signer_2`:``;if(cur(COMPAT,`template-id`)!==selectedTemplateId||cur(TPL_GROUP,`template-id`)!==selectedTemplateId||cur(COMPAT,`template-name`)!==(selectedTemplateOption.label||``)||Number(getPropValue(step,COMPAT,`template-signer-count`)||0)!==selectedTemplateSignerCount||includeSenderAsSigner!==nextIncludeSender||cur(COMPAT,`sender-role`)!==nextSenderRole){syncWorkflowTemplateSelection(selectedTemplateId)}},[isESignatureStep,selectedTemplateId,selectedTemplateOption,selectedTemplateSignerCount,includeSenderAsSigner,step,syncWorkflowTemplateSelection]);const clearWorkflowESignUploadedDocuments=()=>{const docs=getPropValue(step,DOC_GROUP,`documents`)||{};(docs.files||[]).forEach(f=>{if(f\u0026\u0026f.localFileId)esignLocalFiles.delete(f.localFileId)});updatePropertyValue(DOC_GROUP,`documents`,{files:[]})};const syncTypedSignature=allow=>patch(s=>({...s,propertyGroups:(s.propertyGroups||[]).map(g=>g.groupId===COMPAT||g.groupId===SIG_GROUP?{...g,properties:g.properties.map(p=>p.id===`allow-typed-signature`?{...p,value:allow}:p)}:g)}));const templateOptionsWithPlaceholder=[{value:``,label:isLoadingTemplates?`Loading templates...`:`Select a template`,disabled:isLoadingTemplates},...templateOptions];const updateLinkedWeights=(groupId,changedId,newValue)=>{const weightIds=[`edge-consistency-weight`,`lighting-coherence-weight`,`compression-artifact-weight`];const otherIds=weightIds.filter(w=>w!==changedId);patch(s=>({...s,propertyGroups:(s.propertyGroups||[]).map(group=>{if(group.groupId!==groupId)return group;const oldOtherSum=group.properties.filter(p=>otherIds.includes(p.id)).reduce((acc,p)=>acc+(p.value||0),0);const remaining=100-newValue;return{...group,properties:group.properties.map(p=>{if(p.id===changedId)return{...p,value:newValue};if(otherIds.includes(p.id)){const ratio=oldOtherSum>0?p.value/oldOtherSum:1/otherIds.length;return{...p,value:Math.round(remaining*ratio/5)*5}}return p})}})}))};if(!(step.propertyGroups\u0026\u0026step.propertyGroups.length>0)){return _jsxs(`div`,{className:`wb-sp-noopts`,children:[_jsx(StepIcon,{icon:step.icon||utils.getStepIcon(step.id),size:48,color:`var(--wb-text-disabled)`,style:{marginBottom:16}}),_jsx(`div`,{className:`wb-sp-subtitle1 wb-sp-semibold`,children:stepLabel(step)}),_jsx(`div`,{className:`wb-sp-body2 wb-sp-secondary`,style:{marginTop:8},children:t(`stepConfigNoOptions`,`There are no configuration options for this service.`)})]})}return _jsxs(`div`,{className:`wb-sp-stack24`,style:{paddingBottom:96},children:[_jsx(PanelHeader,{stepId:step.id,title:stepLabel(step)}),_jsx(MuiDivider,{style:{margin:0}}),stepUpNeedsEscalation(step)?_jsx(MuiAlert,{severity:`warning`,variant:`outlined`,style:{margin:`0 24px -8px`},children:tPath([`stepConfig`,`stepUpNeedsEscalation`],`Step-up only takes effect when an Escalation Type is set below — until then it behaves as Flag.`)}):null,step.propertyGroups.map((group,groupIdx)=>{if(REMOVED.has(group.groupId))return null;const isAgeGroup=group.groupId===`age-restriction-settings`;const visible=(group.properties||[]).filter(p=>p.type!==`hidden`);const ageMode=isAgeGroup?(group.properties.find(p=>p.id===`age-restriction-mode`)||{}).value||`slider`:null;if(group.parentToggle){const masterGroup=step.propertyGroups.find(g=>(g.properties||[]).some(p=>p.id===group.parentToggle));const master=masterGroup\u0026\u0026masterGroup.properties.find(p=>p.id===group.parentToggle);if(master\u0026\u0026!master.value)return null}if(!visible.length)return null;return _jsxs(`div`,{className:`wb-sp-group`,\"data-testid\":`wb-group-`+group.groupId,children:[groupIdx>0?_jsx(MuiDivider,{style:{marginBottom:8}}):null,_jsxs(`div`,{className:`wb-sp-stack4`,children:[_jsxs(`div`,{className:`wb-sp-between`,children:[_jsxs(`div`,{className:`wb-sp-row8`,style:{alignItems:`center`},children:[group.groupIcon?_jsx(Iconify,{icon:group.groupIcon,width:20,color:`var(--wb-text-secondary)`}):null,_jsx(`span`,{className:`wb-sp-subtitle1`,children:tGroup(step,group,`groupName`)})]}),isAgeGroup?_jsx(MuiToggleGroup,{value:ageMode,onChange:m=>{if(m!==null)updatePropertyValue(group.groupId,`age-restriction-mode`,m)},className:`wb-sp-agetoggle`,options:[{value:`slider`,icon:_jsx(Iconify,{icon:`uil:slider-h`,width:18})},{value:`country`,icon:_jsx(Iconify,{icon:`mynaui:globe`,width:18})}]}):null]}),_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:tGroup(step,group,`groupTooltip`)})]}),visible.map(prop=>{if(isAgeGroup){if(ageMode===`slider`\u0026\u0026prop.type===`age-restriction-country-category`)return null;if(ageMode===`country`\u0026\u0026prop.type===`range`)return null}const requirementMet=(()=>{if(!prop.requirement)return true;if(typeof prop.requirement===`string`)return(group.properties.find(p=>p.id===prop.requirement)||{}).value===true;if(typeof prop.requirement===`object`\u0026\u0026prop.requirement.id){const ref=(group.properties.find(p=>p.id===prop.requirement.id)||{}).value;if(`notEquals`in prop.requirement)return ref!==prop.requirement.notEquals;if(`equals`in prop.requirement)return ref===prop.requirement.equals}return true})();const inverseHidden=prop.requirementInverse\u0026\u0026(group.properties.find(p=>p.id===prop.requirementInverse)||{}).value===true;if(inverseHidden)return null;const isESignBoolean=isESignatureStep\u0026\u0026group.groupId===COMPAT\u0026\u0026prop.id===`include-sender-as-signer`;const isESignSenderRoleSelect=isESignatureStep\u0026\u0026group.groupId===COMPAT\u0026\u0026prop.id===`sender-role`;const isWorkflowESignTemplateField=isESignatureStep\u0026\u0026group.groupId===TPL_GROUP\u0026\u0026prop.id===`template-id`;const isTypedSigToggle=isESignatureStep\u0026\u0026group.groupId===SIG_GROUP\u0026\u0026prop.id===`allow-typed-signature`;const isLocked=!!prop.locked;const isDisabled=isLocked||!!prop.disabled||!requirementMet||isESignBoolean\u0026\u0026selectedTemplateSignerCount!==2||isESignSenderRoleSelect\u0026\u0026(!includeSenderAsSigner||selectedTemplateSignerCount!==2);const boolValue=isDisabled\u0026\u0026!isLocked\u0026\u0026!isESignSenderRoleSelect\u0026\u0026prop.type===`boolean`?false:prop.value;if(isESignSenderRoleSelect\u0026\u0026!includeSenderAsSigner)return null;const updateValue=v=>updatePropertyValue(group.groupId,prop.id,v);const label=tProp(step,group,prop);return _jsxs(`div`,{style:{opacity:isDisabled?.5:1},\"data-testid\":`wb-prop-`+prop.id,children:[prop.type===`boolean`?_jsxs(`div`,{className:`wb-sp-stack8`,children:[_jsxs(`div`,{className:`wb-sp-boolrow`,children:[_jsx(`label`,{className:`wb-sp-boollabel`,children:prop.flag?_jsxs(`span`,{className:`wb-sp-row8`,style:{alignItems:`center`},children:[_jsx(FlagIcon,{code:prop.flag,size:20,round:false}),_jsx(`span`,{children:label})]}):_jsx(`span`,{children:label})}),_jsx(MuiSwitch,{checked:!!boolValue\u0026\u0026!isDisabled,disabled:isDisabled,onChange:v=>{if(isTypedSigToggle)syncTypedSignature(v);else updateValue(v)},testId:`wb-switch-`+prop.id})]}),prop.sublabel?_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,style:{marginLeft:12,marginBottom:4,lineHeight:1.4},children:tProp(step,group,prop,`sublabel`)}):null,isESignBoolean\u0026\u0026selectedTemplateSignerCount!==2?_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,style:{padding:`0 4px`},children:selectedTemplateSignerCount===0?t(`stepConfigESignSigner2NeededSelect`):selectedTemplateSignerCount===1?t(`stepConfigESignSigner1Only`):t(`stepConfigESignMax2Signers`)}):null]}):null,prop.type===`text`?_jsx(MuiTextField,{fullWidth:true,size:`small`,label,multiline:true,rows:1,value:prop.value||``,disabled:isDisabled,onChange:updateValue}):null,prop.type===`select`?_jsx(MuiSelect,{fullWidth:true,size:`small`,label,value:prop.value||``,disabled:isDisabled,options:(isESignatureStep\u0026\u0026group.groupId===COMPAT\u0026\u0026prop.id===`template-id`?templateOptionsWithPlaceholder:prop.options||[]).map(o=>({value:o.value,label:tOption(step,group,prop,o),disabled:o.disabled,flagSrc:o.flag?`https://hatscripts.github.io/circle-flags/flags/`+String(o.flag).toLowerCase()+`.svg`:undefined,hint:o.hint?tOption(step,group,prop,o,`hint`):undefined,cost:o.cost})),onChange:value=>{if(isESignatureStep\u0026\u0026group.groupId===COMPAT\u0026\u0026prop.id===`template-id`){const sel=templateOptions.find(o=>o.value===value);const signerCount=Number(sel\u0026\u0026sel.workflowSignerCount||0);updatePropertyValues(group.groupId,{\"source-mode\":`template`,\"template-id\":value,\"template-name\":sel\u0026\u0026sel.label||``,\"template-signer-count\":signerCount,\"include-sender-as-signer\":signerCount===2,\"sender-role\":signerCount===2?getPropValue(step,group.groupId,`sender-role`)||`signer_2`:``});return}updateValue(value)}}):null,group.groupId===`deep-age-settings`\u0026\u0026prop.id===`method`\u0026\u0026prop.value===`parent-connect`?_jsx(MuiAlert,{severity:`warning`,variant:`outlined`,style:{marginTop:12},children:t(`stepConfigDeepAgeParentConnectWarning`)}):null,step.id===`id-verification`\u0026\u0026group.groupId===`fraud-analysis-escalation`\u0026\u0026prop.id===`escalation-type`\u0026\u0026prop.value\u0026\u0026prop.value!==`none`?_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,style:{display:`block`,marginLeft:12,marginTop:8,lineHeight:1.4},children:tPath([`stepConfig`,`id-verification`,`fraud-analysis-escalation`,`extra-charge-warning`],`Enabling an escalation step may add an additional charge to each session that triggers it.`)}):null,prop.type===`object`?_jsx(CustomFormPages,{prop,isDisabled,updateValue}):null,prop.type===`doc-upload`?_jsx(DocUploadEditor,{step,group,prop,isDisabled,updateValue,patch}):null,prop.type===`data-extraction`?_jsx(DataExtractionEditor,{step,prop,isDisabled,updateValue}):null,prop.type===`text-list`?_jsx(TextListEditor,{prop,isDisabled,updateValue}):null,prop.type===`multiselect-table`?_jsx(`div`,{style:{pointerEvents:isDisabled?`none`:`auto`},children:_jsx(MultiSelectTable,{options:(prop.options||[]).map(cat=>({...cat,category:tPath([`stepConfig`,step.id,group.groupId,prop.id,`options`,cat.id,`category`],cat.category),description:tPath([`stepConfig`,step.id,group.groupId,prop.id,`options`,cat.id,`description`],cat.description),categoryOptions:(cat.categoryOptions||[]).map(o=>({...o,name:tPath([`stepConfig`,step.id,group.groupId,prop.id,`options`,cat.id,`categoryOptions`,o.id,`name`],o.name)}))})),categoryLabel:tPath([`stepConfig`,step.id,group.groupId,prop.id,`categoryLabel`],prop.categoryLabel),optionLabel:tPath([`stepConfig`,step.id,group.groupId,prop.id,`optionLabel`],prop.optionLabel),values:prop.value||{},onChange:updateValue})}):null,prop.type===`country-id-table`?_jsxs(`div`,{style:{pointerEvents:isDisabled?`none`:`auto`},children:[_jsxs(`div`,{className:`wb-sp-stack4`,style:{marginBottom:12,paddingTop:12,borderTop:`1px dashed var(--wb-divider)`},children:[_jsx(`span`,{className:`wb-sp-subtitle2`,children:prop.label}),_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:`No country-specific IDs are accepted until you choose them. Click Edit to select which countries and individual IDs are valid.`})]}),_jsx(CountryIdTable,{options:prop.options||[],value:prop.value||{},categoryLabel:prop.categoryLabel,onChange:updateValue})]}):null,prop.type===`age-restriction-country-category`?_jsx(AgeRestrictionCountryCategory,{value:prop.value||[],disabled:isDisabled,onChange:updateValue,onMinimumAgeChange:minAge=>updatePropertyValue(group.groupId,`country-category-minimum-age`,minAge)}):null,prop.type===`slider`?_jsxs(`div`,{className:`wb-sp-stack8`,children:[_jsxs(`div`,{className:`wb-sp-between`,children:[prop.label?_jsxs(`span`,{className:`wb-sp-row4`,style:{alignItems:`center`},children:[_jsx(`span`,{className:`wb-sp-body2`,style:{fontWeight:500},children:label}),step.id===`id-verification`\u0026\u0026group.groupId===`valid-id-types-settings`\u0026\u0026prop.id===`id-confidence-threshold`?_jsx(`span`,{className:`wb-tip`,\"data-tip\":tPath([`stepConfig`,`id-verification`,`valid-id-types-settings`,`id-confidence-threshold`,`caption`],``),style:{cursor:`help`},children:_jsx(Iconify,{icon:`eva:info-outline`,width:16,color:`var(--wb-text-disabled)`})}):null]}):_jsx(`span`,{}),prop.unit===`%`?_jsxs(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:[prop.value,`%`]}):null,prop.unit!==`%`\u0026\u0026(prop.step\u003c1||prop.showValue)?_jsx(`span`,{className:`wb-sp-caption wb-sp-secondary`,children:prop.value}):null]}),_jsx(`div`,{style:{pointerEvents:isDisabled?`none`:`auto`},children:_jsx(MuiSlider,{value:prop.value,min:prop.min,max:prop.max,step:prop.step||1,marks:prop.marks,disabled:isDisabled,ariaLabel:label,onChange:nv=>{if(prop.linkedGroup===`env-weights`)updateLinkedWeights(group.groupId,prop.id,nv);else updateValue(nv)}})})]}):null,prop.type===`questionnaire-template-toggles`?_jsx(QuestionnaireTemplateToggles,{prop,onUpdate:updateValue}):null,prop.type===`esign-template-select`?_jsxs(`div`,{children:[_jsx(MuiSelect,{fullWidth:true,size:`small`,label,disabled:isDisabled||isLoadingTemplates,value:isWorkflowESignTemplateField?selectedTemplateId:prop.value||``,options:(isWorkflowESignTemplateField?templateOptionsWithPlaceholder:prop.options||[]).map(o=>({value:o.value,label:tOption(step,group,prop,o),disabled:o.disabled,hint:o.hint?tOption(step,group,prop,o,`hint`):undefined})),onChange:value=>{if(isWorkflowESignTemplateField){const docs=getPropValue(step,DOC_GROUP,`documents`)||{};if(value\u0026\u0026Array.isArray(docs.files)\u0026\u0026docs.files.filter(Boolean).length>0)clearWorkflowESignUploadedDocuments();syncWorkflowTemplateSelection(value,{clearManagedState:true});return}updateValue(value)}}),templatesError\u0026\u0026isWorkflowESignTemplateField?_jsx(`span`,{className:`wb-sp-caption`,style:{color:`var(--wb-error)`,display:`block`,marginTop:4},children:templatesError}):null,!isLoadingTemplates\u0026\u0026isWorkflowESignTemplateField\u0026\u0026templateOptions.length===0?_jsx(`span`,{className:`wb-sp-caption wb-sp-disabled`,style:{display:`block`,marginTop:4},children:t(`stepConfigESignCreateHint`)}):null,isWorkflowESignTemplateField?_jsxs(`div`,{className:`wb-sp-stack12`,style:{marginTop:12},children:[_jsx(MuiAlert,{severity:`info`,variant:`outlined`,children:t(`stepConfigESignTemplateInfo`)}),selectedTemplateId\u0026\u0026selectedTemplateSignerCount===1?_jsx(MuiAlert,{severity:`info`,variant:`soft`,children:t(`stepConfigESignApplicantOnly`)}):null,selectedTemplateId\u0026\u0026selectedTemplateSignerCount===2?_jsx(MuiAlert,{severity:includeSenderAsSigner?`success`:`warning`,variant:`soft`,children:includeSenderAsSigner?t(`stepConfigESignSenderAssignRole`):t(`stepConfigESignEnableIncludeSender`)}):null,selectedTemplateId\u0026\u0026selectedTemplateSignerCount>2?_jsx(MuiAlert,{severity:`error`,variant:`soft`,children:t(`stepConfigESignMax2SignersPerTemplate`)}):null,_jsxs(`div`,{className:`wb-sp-stack10`,children:[_jsxs(_components.a,{className:`wb-mbtn wb-mbtn-sm wb-sp-soft wb-sp-soft-primary wb-sp-esign-link`,href:ADMIN_CONSOLE+`/e-signature/templates/new?source=workflow-builder\u0026signerCount=1`,target:`_blank`,rel:`noopener noreferrer`,children:[_jsx(`span`,{className:`wb-mbtn-start`,children:_jsx(Iconify,{icon:`solar:add-circle-bold`,width:16})}),_jsx(`span`,{children:t(`stepConfigESignCreateUploadTemplate`,`Create / Upload Template`)})]}),_jsxs(_components.a,{className:`wb-mbtn wb-mbtn-sm wb-mbtn-outlined wb-sp-esign-link wb-sp-esign-link-outlined`,href:ADMIN_CONSOLE+`/e-signature/templates`,target:`_blank`,rel:`noopener noreferrer`,children:[_jsx(`span`,{className:`wb-mbtn-start`,children:_jsx(Iconify,{icon:`solar:documents-bold`,width:16})}),_jsx(`span`,{children:t(`stepConfigESignManageTemplates`,`Manage Templates`)})]}),_jsx(MuiButton,{variant:`outlined`,className:`wb-mbtn-sm wb-sp-esign-link wb-sp-esign-link-refresh`,disabled:isLoadingTemplates,loading:isLoadingTemplates,startIcon:isLoadingTemplates?null:_jsx(Iconify,{icon:`solar:refresh-linear`,width:16}),onClick:loadWorkflowTemplates,children:t(`stepConfigESignRefreshTemplates`,`Refresh Templates`)})]})]}):null]}):null,prop.type===`esign-document-setup`?_jsx(ESignDocumentSetup,{prop,isDisabled,onUpdate:updateValue}):null,prop.type===`proofcall-questions`?_jsx(ProofCallQuestions,{step,group,prop,updateValue}):null,prop.type===`education-institution-picker`?_jsx(EducationInstitutionPicker,{value:prop.value||{},onUpdate:updateValue}):null,prop.type===`country-customize`?(group.properties.find(p=>p.id===`accept-all-countries`)||{}).value?null:_jsx(CountryCustomizeButton,{value:prop.value||{},countries:prop.countries||[],onChange:updateValue}):null,prop.type===`jurisdiction-picker`?_jsx(JurisdictionPicker,{label,value:prop.value,onChange:updateValue}):null,prop.type===`weight-display`?_jsx(WeightDisplay,{step}):null,prop.type===`range`?_jsxs(`div`,{className:`wb-sp-stack8`,style:{pointerEvents:isDisabled?`none`:`auto`},children:[prop.label?_jsx(`span`,{className:`wb-sp-body2`,style:{fontWeight:500},children:label}):null,(()=>{const rangeValue=Array.isArray(prop.value)?prop.value:[prop.value\u0026\u0026prop.value.lower!==undefined?prop.value.lower:prop.min,prop.value\u0026\u0026prop.value.upper!==undefined?prop.value.upper:prop.max];const lowColor=prop.lowerColor||`#EF4444`;const midColor=prop.middleColor||`#22C55E`;const highColor=prop.upperColor||`#EF4444`;const hasCustom=!!prop.middleColor;const lowPct=(rangeValue[0]-prop.min)/(prop.max-prop.min)*100;const highPct=(rangeValue[1]-prop.min)/(prop.max-prop.min)*100;const rail=hasCustom?`linear-gradient(to right, `+lowColor+` `+lowPct+`%, `+midColor+` `+lowPct+`%, `+midColor+` `+highPct+`%, `+highColor+` `+highPct+`%)`:`linear-gradient(to right, #FF5630 `+lowPct+`%, `+midColor+` `+lowPct+`%, `+midColor+` `+highPct+`%, #FF5630 `+highPct+`%)`;const rgba=(hex,a)=>{const h=hex.replace(`#`,``);const n=parseInt(h.length===3?h.split(``).map(c=>c+c).join(``):h,16);return`rgba(`+(n>>16\u0026255)+`,`+(n>>8\u0026255)+`,`+(n\u0026255)+`,`+a+`)`};return _jsxs(_Fragment,{children:[_jsx(MuiRangeSlider,{value:rangeValue,min:prop.min,max:prop.max,step:1,color:midColor,railBackground:rail,onChange:updateValue}),_jsxs(`div`,{className:`wb-sp-stack8`,children:[_jsxs(`div`,{className:`wb-sp-rangerow`,style:{background:rgba(lowColor,.1)},children:[_jsxs(`span`,{className:`wb-sp-body2`,style:{color:lowColor,fontWeight:500},children:[`• `,prop.lowerLabel?tProp(step,group,prop,`lowerLabel`):t(`stepConfigRangeTooLow`,`Too low`)]}),_jsx(MuiChip,{label:`\u003c `+rangeValue[0],variant:`paper`})]}),_jsxs(`div`,{className:`wb-sp-rangerow`,style:{background:rgba(midColor,.1)},children:[_jsxs(`span`,{className:`wb-sp-body2`,style:{color:midColor,fontWeight:500},children:[`• `,prop.middleLabel?tProp(step,group,prop,`middleLabel`):t(`stepConfigRangeValid`,`Valid`)]}),_jsx(MuiChip,{label:rangeValue[0]+` - `+rangeValue[1],variant:`paper`})]}),_jsxs(`div`,{className:`wb-sp-rangerow`,style:{background:rgba(highColor,.1)},children:[_jsxs(`span`,{className:`wb-sp-body2`,style:{color:highColor,fontWeight:500},children:[`• `,prop.upperLabel?tProp(step,group,prop,`upperLabel`):t(`stepConfigRangeTooHigh`,`Too high`)]}),_jsx(MuiChip,{label:`> `+rangeValue[1],variant:`paper`})]})]})]})})()]}):null]},prop.id)})]},group.groupId)})]})};const RightConfigPanel=({selectedStep,dimmed,expanded,onExpandedChange})=>{const{actions,selectors}=useWorkflow();const step=selectedStep===undefined?selectors.selectedStep:selectedStep;const isIdVerification=!!(step\u0026\u0026step.id===`id-verification`);const effectiveExpanded=!!expanded\u0026\u0026isIdVerification;const isPhoneIntel=!!(step\u0026\u0026PHONE_INTEL_BLOCK_IDS.includes(step.id));const isPhoneVerification=!!(step\u0026\u0026step.id===`phone-verification`);const key=stepKeyOf(step);const patch=fn=>actions.patchStep({stepKey:key,step:fn(step)});return _jsxs(`aside`,{className:`wb-panel wb-sp`,\"data-testid\":`wb-config-panel`,\"data-expanded\":effectiveExpanded?`true`:`false`,style:{width:effectiveExpanded?WB.PANEL\u0026\u0026WB.PANEL.WIDTH_EXPANDED||600:WB.PANEL\u0026\u0026WB.PANEL.WIDTH||350},children:[isIdVerification?_jsx(`div`,{className:`wb-sp-expand`,role:`button`,tabIndex:0,\"data-testid\":`wb-panel-expand`,\"aria-label\":effectiveExpanded?`Collapse panel`:`Expand panel`,onClick:()=>onExpandedChange\u0026\u0026onExpandedChange(!expanded),children:_jsx(Iconify,{icon:effectiveExpanded?`eva:chevron-right-fill`:`eva:chevron-left-fill`,width:18})}):null,_jsxs(`div`,{className:`wb-sp-body`,children:[step\u0026\u0026isPhoneVerification?_jsx(PhoneVerificationSettings,{step,patch}):null,step\u0026\u0026isPhoneIntel\u0026\u0026!isPhoneVerification?_jsx(PhoneIntelBlock,{stepId:step.id}):null,step\u0026\u0026!isPhoneIntel\u0026\u0026!isPhoneVerification?_jsx(StepSettingsPanel,{step,actions},key):null,!step?_jsxs(`div`,{className:`wb-sp-empty`,\"data-testid\":`wb-config-empty`,children:[_jsx(Iconify,{icon:`ph:gear`,width:48,color:`var(--wb-text-disabled)`,style:{marginBottom:16}}),_jsx(`div`,{className:`wb-sp-subtitle1 wb-sp-secondary`,children:t(`builderConfigureSettings`,`Configure settings`)}),_jsx(`div`,{className:`wb-sp-body2 wb-sp-disabled`,style:{whiteSpace:`pre-line`},children:t(`builderConfigureSettingsHint`,`Add and select a service to\nconfigure settings`)})]}):null]})]})};return{RightConfigPanel,StepSettingsPanel}};const makeMui=({ui})=>{const{StepIcon,MuiButton,MuiTextField,MuiSelect}=ui;const cx=(...p)=>p.filter(Boolean).join(` `);const clamp=(v,lo,hi)=>Math.min(hi,Math.max(lo,v));const Iconify=({icon,width=20,color=`currentColor`,className,style})=>_jsx(StepIcon,{icon,size:width,color,className,style});const FlagIcon=({code,size=22,round=true,style,className})=>{if(!code)return null;return _jsx(`span`,{className:cx(`wb-m-flag`,className),style:{width:size,height:size,...style||{}},children:_jsx(`img`,{loading:`lazy`,alt:code,src:`https://hatscripts.github.io/circle-flags/flags/`+String(code).toLowerCase()+`.svg`,style:{borderRadius:round?`50%`:4}})})};const MuiSwitch=({checked,onChange,disabled,size=`medium`,color=`primary`,testId,ariaLabel})=>_jsx(`button`,{type:`button`,role:`switch`,\"aria-checked\":!!checked,\"aria-label\":ariaLabel,disabled,\"data-testid\":testId,className:cx(`wb-m-switch`,`wb-m-switch-`+size,`wb-m-switch-`+color,checked\u0026\u0026`wb-m-switch-on`,disabled\u0026\u0026`wb-m-switch-disabled`),onClick:e=>{e.stopPropagation();if(!disabled\u0026\u0026typeof onChange===`function`)onChange(!checked)},children:_jsx(`span`,{className:`wb-m-switch-track`,children:_jsx(`span`,{className:`wb-m-switch-thumb`})})});const MuiCheckbox=({checked,indeterminate,onChange,disabled,size=`small`,ariaLabel,testId})=>_jsx(`button`,{type:`button`,role:`checkbox`,\"aria-checked\":indeterminate?`mixed`:!!checked,\"aria-label\":ariaLabel,disabled,\"data-testid\":testId,className:cx(`wb-m-check`,`wb-m-check-`+size,checked\u0026\u0026`wb-m-check-on`,indeterminate\u0026\u0026`wb-m-check-mixed`),onClick:e=>{e.stopPropagation();if(!disabled\u0026\u0026typeof onChange===`function`)onChange(!checked)},children:_jsx(`span`,{className:`wb-m-check-box`,children:indeterminate?_jsx(`span`,{className:`wb-m-check-dash`}):checked?_jsx(`svg`,{viewBox:`0 0 24 24`,width:`14`,height:`14`,\"aria-hidden\":`true`,children:_jsx(`path`,{fill:`currentColor`,d:`M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z`})}):null})});const MuiChip=({label,icon,color=`default`,variant=`soft`,size=`small`,onClick,onDelete,deleteIcon,className,style,testId})=>_jsxs(`span`,{className:cx(`wb-m-chip`,`wb-m-chip-`+variant,`wb-m-chip-`+color,`wb-m-chip-`+size,onClick\u0026\u0026`wb-m-chip-click`,className),style,onClick,role:onClick?`button`:undefined,tabIndex:onClick?0:undefined,\"data-testid\":testId,children:[icon?_jsx(`span`,{className:`wb-m-chip-icon`,children:icon}):null,_jsx(`span`,{className:`wb-m-chip-label`,children:label}),onDelete?_jsx(`button`,{type:`button`,className:`wb-m-chip-del`,\"aria-label\":`Remove`,onClick:e=>{e.stopPropagation();onDelete()},children:deleteIcon||_jsx(Iconify,{icon:`solar:close-circle-bold`,width:16})}):null]});const ALERT_ICONS={info:`eva:info-outline`,warning:`solar:danger-triangle-bold-duotone`,error:`solar:danger-triangle-bold-duotone`,success:`solar:check-circle-bold`};const MuiAlert=({severity=`info`,variant=`standard`,icon,action,children,className,style,testId})=>_jsxs(`div`,{role:`alert`,\"data-testid\":testId,className:cx(`wb-m-alert`,`wb-m-alert-`+severity,`wb-m-alert-`+variant,className),style,children:[_jsx(`span`,{className:`wb-m-alert-icon`,children:icon===false?null:icon||_jsx(Iconify,{icon:ALERT_ICONS[severity],width:22})}),_jsx(`div`,{className:`wb-m-alert-msg`,children}),action?_jsx(`span`,{className:`wb-m-alert-action`,children:action}):null]});const MuiDialog=({open,onClose,title,subtitle,titleIcon,children,actions,maxWidth=`sm`,dividers,testId,className,contentStyle,paperStyle})=>{useEffect(()=>{if(!open)return undefined;const onKey=e=>{if(e.key===`Escape`\u0026\u0026typeof onClose===`function`)onClose()};window.addEventListener(`keydown`,onKey);return()=>window.removeEventListener(`keydown`,onKey)},[open,onClose]);if(!open)return null;const widths={xs:444,sm:600,md:900,lg:1200};return _jsx(`div`,{className:`wb-m-backdrop`,onMouseDown:e=>{if(e.target===e.currentTarget\u0026\u0026typeof onClose===`function`)onClose()},children:_jsxs(`div`,{role:`dialog`,\"aria-modal\":`true`,\"data-testid\":testId,className:cx(`wb-m-paper`,className),style:{width:`100%`,maxWidth:widths[maxWidth]||widths.sm,...paperStyle||{}},children:[title?_jsx(`div`,{className:`wb-m-dialog-title`,children:typeof title===`string`?_jsxs(`div`,{className:`wb-m-dialog-title-row`,children:[titleIcon?_jsx(`span`,{className:`wb-m-dialog-title-icon`,children:titleIcon}):null,_jsxs(`div`,{children:[_jsx(`div`,{className:`wb-m-dialog-title-text`,children:title}),subtitle?_jsx(`div`,{className:`wb-m-dialog-subtitle`,children:subtitle}):null]})]}):title}):null,_jsx(`div`,{className:cx(`wb-m-dialog-content`,dividers\u0026\u0026`wb-m-dialog-dividers`),style:contentStyle,children}),actions?_jsx(`div`,{className:`wb-m-dialog-actions`,children:actions}):null]})})};const useSliderDrag=(ref,{min,max,step,onValue})=>{const toValue=clientX=>{const el=ref.current;if(!el)return min;const r=el.getBoundingClientRect();const pct=clamp((clientX-r.left)/(r.width||1),0,1);const raw=min+pct*(max-min);const st=step||1;const snapped=Math.round(raw/st)*st;const decimals=String(st).includes(`.`)?String(st).split(`.`)[1].length:0;return clamp(Number(snapped.toFixed(decimals)),min,max)};const begin=(e,which)=>{e.preventDefault();e.stopPropagation();onValue(toValue(e.clientX),which,true);const move=ev=>onValue(toValue(ev.clientX),which,false);const up=()=>{window.removeEventListener(`pointermove`,move);window.removeEventListener(`pointerup`,up)};window.addEventListener(`pointermove`,move);window.addEventListener(`pointerup`,up)};return{begin,toValue}};const fmtNum=v=>Number.isFinite(v)?(Math.round(v*100)/100).toString():``;const MuiSlider=({value,onChange,min=0,max=100,step=1,marks,disabled,color,railStyle,testId,ariaLabel,markLabelFor})=>{const ref=useRef(null);const v=clamp(Number(value)||0,min,max);const pct=(v-min)/(max-min||1)*100;const{begin}=useSliderDrag(ref,{min,max,step,onValue:nv=>{if(!disabled\u0026\u0026typeof onChange===`function`)onChange(nv)}});const markList=Array.isArray(marks)?marks:[];return _jsxs(`div`,{className:cx(`wb-m-slider`,disabled\u0026\u0026`wb-m-slider-disabled`),\"data-testid\":testId,style:color?{\"--wb-m-slider-color\":color}:undefined,children:[_jsxs(`div`,{ref,className:`wb-m-slider-rail`,style:railStyle,onPointerDown:e=>begin(e,0),children:[_jsx(`div`,{className:`wb-m-slider-track`,style:{width:pct+`%`}}),markList.map(m=>_jsx(`span`,{className:`wb-m-slider-mark`,style:{left:(m.value-min)/(max-min||1)*100+`%`}},String(m.value))),_jsx(`div`,{className:`wb-m-slider-thumb`,style:{left:pct+`%`},role:`slider`,\"aria-label\":ariaLabel,\"aria-valuemin\":min,\"aria-valuemax\":max,\"aria-valuenow\":v,tabIndex:disabled?-1:0,onKeyDown:e=>{if(disabled)return;const st=step||1;if(e.key===`ArrowRight`||e.key===`ArrowUp`)onChange(clamp(v+st,min,max));if(e.key===`ArrowLeft`||e.key===`ArrowDown`)onChange(clamp(v-st,min,max))}})]}),markList.length?_jsx(`div`,{className:`wb-m-slider-marks`,children:markList.map(m=>{const show=typeof markLabelFor===`function`?markLabelFor(m,v):m.value===v;return show\u0026\u0026m.label!==undefined?_jsx(`span`,{className:`wb-m-slider-marklabel`,style:{left:(m.value-min)/(max-min||1)*100+`%`},children:m.label},String(m.value)):null})}):null]})};const MuiRangeSlider=({value,onChange,min=0,max=100,step=1,disabled,color,railBackground,testId})=>{const ref=useRef(null);const pair=Array.isArray(value)?value:[min,max];const lo=clamp(Number(pair[0]),min,max);const hi=clamp(Number(pair[1]),min,max);const loPct=(lo-min)/(max-min||1)*100;const hiPct=(hi-min)/(max-min||1)*100;const activeRef=useRef(null);const{begin,toValue}=useSliderDrag(ref,{min,max,step,onValue:(nv,which,first)=>{if(disabled||typeof onChange!==`function`)return;let w=which;if(first\u0026\u0026which===`auto`){w=Math.abs(nv-lo)\u003c=Math.abs(nv-hi)?0:1;activeRef.current=w}else if(which===`auto`)w=activeRef.current;if(w===0)onChange([Math.min(nv,hi),hi]);else onChange([lo,Math.max(nv,lo)])}});return _jsxs(`div`,{className:cx(`wb-m-slider wb-m-range`,disabled\u0026\u0026`wb-m-slider-disabled`),\"data-testid\":testId,style:color?{\"--wb-m-slider-color\":color}:undefined,children:[_jsxs(`div`,{ref,className:`wb-m-slider-rail`,style:railBackground?{background:railBackground}:undefined,onPointerDown:e=>begin(e,`auto`),children:[!railBackground?_jsx(`div`,{className:`wb-m-slider-track`,style:{left:loPct+`%`,width:hiPct-loPct+`%`}}):null,_jsx(`div`,{className:`wb-m-slider-thumb wb-m-slider-thumb-paper`,style:{left:loPct+`%`},onPointerDown:e=>{activeRef.current=0;begin(e,0)},role:`slider`,\"aria-valuenow\":lo}),_jsx(`div`,{className:`wb-m-slider-thumb wb-m-slider-thumb-paper`,style:{left:hiPct+`%`},onPointerDown:e=>{activeRef.current=1;begin(e,1)},role:`slider`,\"aria-valuenow\":hi})]}),_jsxs(`div`,{className:`wb-m-slider-marks`,children:[_jsx(`span`,{className:`wb-m-slider-marklabel`,style:{left:loPct+`%`},children:fmtNum(lo)}),_jsx(`span`,{className:`wb-m-slider-marklabel`,style:{left:hiPct+`%`},children:fmtNum(hi)})]})]})};const MuiToggleGroup=({value,onChange,options,size=`small`,className,ariaLabel,segmented})=>_jsx(`div`,{role:`group`,\"aria-label\":ariaLabel,className:cx(`wb-m-toggle-group`,segmented\u0026\u0026`wb-m-toggle-segmented`,className),children:(options||[]).map(opt=>{const selected=String(opt.value)===String(value);return _jsxs(`button`,{type:`button`,\"aria-pressed\":selected?`true`:`false`,disabled:opt.disabled,className:cx(`wb-m-toggle-btn`,selected\u0026\u0026`wb-m-toggle-selected`,opt.color\u0026\u0026`wb-m-toggle-`+opt.color),onClick:()=>{if(typeof onChange===`function`)onChange(opt.value)},children:[opt.icon?_jsx(`span`,{className:`wb-m-toggle-icon`,children:opt.icon}):null,opt.label!==undefined?_jsx(`span`,{children:opt.label}):null]},String(opt.value))})});const MuiTabs=({value,onChange,tabs,className,style})=>_jsx(`div`,{role:`tablist`,className:cx(`wb-m-tabs`,className),style,children:(tabs||[]).map(tb=>_jsx(`button`,{type:`button`,role:`tab`,\"aria-selected\":String(tb.value)===String(value)?`true`:`false`,className:`wb-m-tab`,onClick:()=>onChange(tb.value),children:tb.label},String(tb.value)))});const MuiDivider=({dashed,children,className,style})=>children?_jsx(`div`,{className:cx(`wb-m-divider-text`,dashed\u0026\u0026`wb-m-divider-dashed`,className),style,children:_jsx(`span`,{children})}):_jsx(`hr`,{className:cx(`wb-m-divider`,dashed\u0026\u0026`wb-m-divider-dashed`,className),style});const Adornment=({children,position=`start`})=>_jsx(`span`,{className:`wb-m-adorn wb-m-adorn-`+position,children});const NumberBadge=({children,color=`info`,shape=`square`})=>_jsx(`span`,{className:cx(`wb-m-numbadge`,`wb-m-numbadge-`+color,shape===`round`\u0026\u0026`wb-m-numbadge-round`),children});const SmallIconButton=({icon,onClick,disabled,label,danger,className,width=18,style,testId})=>_jsx(`button`,{type:`button`,className:cx(`wb-m-ibtn`,danger\u0026\u0026`wb-m-ibtn-danger`,className),disabled,\"aria-label\":label,onClick:e=>{e.stopPropagation();if(onClick)onClick(e)},style,\"data-testid\":testId,children:_jsx(Iconify,{icon,width})});const Spinner=({size=22})=>_jsx(`span`,{className:`wb-m-spinner`,style:{width:size,height:size},\"aria-hidden\":`true`});return{Iconify,FlagIcon,MuiSwitch,MuiCheckbox,MuiChip,MuiAlert,MuiDialog,MuiSlider,MuiRangeSlider,MuiToggleGroup,MuiTabs,MuiDivider,Adornment,NumberBadge,SmallIconButton,Spinner,MuiButton,MuiTextField,MuiSelect,cx}};const makeListMode=deps=>{const{WB,utils,store,ui,dnd}=deps;const wb=WB||{};const I18N=wb.I18N||{};const t=(key,fallback)=>typeof I18N[key]===`string`?I18N[key]:fallback;const START_ID=wb.START_NODE_ID||`__start__`;const COUPLED=wb.COUPLED_STEPS||{};const OVERRIDES=wb.COUPLED_PROPERTY_OVERRIDES||{};const{StepIcon}=ui;const{useSortable,useDroppable,parseNodeDropId}=dnd;const{useWorkflow}=store;const stepKeyOf=s=>s.instanceId||s.id;const labelOf=step=>{const key=(wb.WORKFLOW_STEP_I18N_KEYS||{})[step.id];return key\u0026\u0026I18N[key]||step.label||step.id};const descriptionOf=step=>{const key=(wb.WORKFLOW_STEP_DESCRIPTION_I18N_KEYS||{})[step.id];return key\u0026\u0026I18N[key]||utils.getStepDescription(step.id)};const autoConnUid=(()=>{let n=0;return()=>`auto-conn-`+Date.now()+`-`+ ++n})();const rebuildChainWithPinning=chainSteps=>{const enforced=utils.enforceBottomPinningOnSteps(chainSteps);return enforced.map((step,i)=>({id:autoConnUid(),sourceId:i===0?START_ID:stepKeyOf(enforced[i-1]),sourceAnchor:`bottom`,targetId:stepKeyOf(step),targetAnchor:`top`,waypoints:[],label:``}))};const withCoupled=(list,service)=>{const out=[...list];(COUPLED[service.id]||[]).forEach(coupledId=>{if(out.some(s=>s.id===coupledId))return;const coupledService=utils.getStepTemplate(coupledId);if(!coupledService)return;const overrides=OVERRIDES[service.id]\u0026\u0026OVERRIDES[service.id][coupledId];const step=utils.sanitizeStepForWorkflow(coupledService);out.push({...utils.applyOverridesToStep(step,overrides),instanceId:utils.makeInstanceId(coupledId)})});return out};const DroppableCanvas=({id,children})=>{const{setNodeRef,isOver}=useDroppable({id});return _jsx(`div`,{ref:setNodeRef,id,className:`wb-drop`,\"data-over\":isOver?`true`:`false`,\"data-testid\":`wb-list-dropzone`,children})};const DragPreview=({label,icon,stepId,isChartItem})=>{if(isChartItem){return _jsxs(`div`,{className:`wb-dragprev-chart`,children:[_jsx(`span`,{className:`wb-tile wb-tile-50`,style:{background:utils.getStepGradient(stepId)},children:_jsx(StepIcon,{icon,size:28})}),_jsx(`span`,{className:`wb-dragprev-label`,children:label})]})}return _jsxs(`div`,{className:`wb-dragprev-pal`,children:[_jsx(`span`,{className:`wb-tile`,style:{background:utils.getStepGradient(stepId)},children:_jsx(StepIcon,{icon,size:20})}),_jsx(`span`,{className:`wb-dragprev-label`,children:label})]})};const SortableStepNode=({step,stepNumber,active,onClick,onDelete,covered,disabled})=>{const key=stepKeyOf(step);const{setNodeRef,listeners,isDragging}=useSortable({id:`chart:`+key,data:{step},disabled});const breakdown=utils.getStepCostBreakdown(step);const stepDef=utils.getStepById(step.id);const included=t(`builderServiceIncluded`,`Included`);return _jsx(`div`,{ref:setNodeRef,className:`wb-sort`,\"data-dragging\":isDragging?`true`:`false`,\"data-disabled\":disabled?`true`:`false`,\"data-testid\":`wb-list-node-`+key,\"data-instance-id\":key,\"data-step-id\":step.id,children:_jsxs(`div`,{className:`wb-snode`,\"data-active\":active?`true`:`false`,\"data-disabled\":disabled?`true`:`false`,onClick:disabled?undefined:onClick,children:[stepNumber?_jsx(`span`,{className:`wb-snode-num`,\"data-testid\":`wb-list-number-`+key,children:stepNumber}):null,_jsxs(`div`,{className:`wb-snode-row`,...disabled?{}:listeners,children:[_jsx(`span`,{className:`wb-tile wb-tile-44 wb-tile-shadow`,style:{background:utils.getStepGradient(step.id)},children:_jsx(StepIcon,{icon:step.icon||utils.getStepIcon(step.id),size:24})}),_jsxs(`div`,{className:`wb-snode-text`,children:[_jsx(`div`,{className:`wb-snode-title`,children:labelOf(step)}),_jsx(`span`,{className:`wb-snode-desc`,children:descriptionOf(step)})]}),_jsxs(`div`,{className:`wb-snode-right`,children:[_jsx(`div`,{className:`wb-snode-costwrap`,children:breakdown.coupled?_jsx(`span`,{className:`wb-snode-included`,children:included}):breakdown.partiallyCovered?_jsxs(_Fragment,{children:[_jsx(`span`,{className:`wb-snode-cost-struck`,children:utils.fCurrency(breakdown.covered)}),_jsx(`span`,{className:`wb-snode-cost`,children:utils.fCurrency(breakdown.charged)})]}):_jsxs(_Fragment,{children:[_jsx(`span`,{className:`wb-snode-cost`,\"data-covered\":covered?`true`:`false`,\"data-testid\":`wb-list-cost-`+key,children:stepDef\u0026\u0026stepDef.costLabel||utils.fCurrency(breakdown.total)}),covered?_jsx(`span`,{className:`wb-snode-included`,style:{fontStyle:`normal`,color:`var(--wb-success)`},children:included}):null]})}),_jsx(`button`,{type:`button`,className:`wb-snode-del`,\"data-dnd-ignore\":`true`,\"data-testid\":`wb-list-delete-`+key,\"aria-label\":`Remove `+labelOf(step),onClick:e=>{e.stopPropagation();onDelete()},children:_jsx(StepIcon,{icon:`solar:close-circle-bold`,size:22,color:`currentColor`})})]})]})]})})};const EmptyChain=()=>_jsxs(`div`,{className:`wb-chain-empty`,\"data-testid\":`wb-list-empty`,children:[_jsxs(`div`,{className:`wb-chain-empty-art`,children:[_jsx(`div`,{className:`wb-chain-empty-core`,children:_jsx(StepIcon,{icon:`solar:cursor-square-bold-duotone`,size:24,color:`currentColor`})}),_jsx(`div`,{className:`wb-chain-empty-ring`})]}),_jsx(`div`,{className:`wb-chain-empty-text`,children:t(`builderCanvasEmpty`,`Drag a service here to start\nbuilding your workflow`)})]});const useListDnd=({onGated})=>{const wf=useWorkflow();const{state,actions}=wf;const steps=state.workflow.steps;const connections=state.workflow.canvasData.connections;const stepsRef=useRef(steps);stepsRef.current=steps;const connsRef=useRef(connections);connsRef.current=connections;const[activeId,setActiveId]=useState(null);const connectedStepIds=useMemo(()=>{const ids=new Set;if(!connections||!connections.length)return ids;const adjacency={};connections.forEach(c=>{(adjacency[c.sourceId]=adjacency[c.sourceId]||[]).push(c.targetId)});let cur=adjacency[START_ID]\u0026\u0026adjacency[START_ID][0];const visited=new Set;while(cur\u0026\u0026!visited.has(cur)){visited.add(cur);ids.add(cur);cur=adjacency[cur]\u0026\u0026adjacency[cur][0]}return ids},[connections]);const connectedRef=useRef(connectedStepIds);connectedRef.current=connectedStepIds;const commit=(nextSteps,rebuildConns,positionsUpdater)=>{actions.load({workflow:{...state.workflow,steps:nextSteps,canvasData:{...state.workflow.canvasData,connections:rebuildConns?rebuildChainWithPinning(nextSteps):connsRef.current,nodePositions:positionsUpdater?positionsUpdater(state.workflow.canvasData.nodePositions||{}):state.workflow.canvasData.nodePositions}},viewMode:state.viewMode,keepSelection:true})};const insertService=(service,atIndex)=>{if(utils.isStepGated(service,{whiteLabelConfigured:false})){if(onGated)onGated(service);return null}const list=stepsRef.current;const newInstanceId=utils.makeInstanceId(service.id);const newSteps=[...list];const idx=typeof atIndex===`number`?atIndex:newSteps.length;newSteps.splice(idx,0,{...utils.sanitizeStepForWorkflow(utils.getStepTemplate(service.id)),instanceId:newInstanceId});const withC=withCoupled(newSteps,service);const enforced=utils.enforceCoupledOverridesOnSteps(utils.enforceBottomPinningOnSteps(withC.filter(s=>s.id!==`add-step`)));actions.load({workflow:{...state.workflow,steps:enforced,canvasData:{...state.workflow.canvasData,connections:rebuildChainWithPinning(enforced)}},viewMode:state.viewMode,keepSelection:true});actions.selectStep({instanceId:newInstanceId});return newInstanceId};const handleDragStart=({active})=>setActiveId(active.id);const handleDragOver=({active,over})=>{if(!over)return;const a=parseNodeDropId(active.id);const o=parseNodeDropId(over.id);if(a.context!==`chart`||o.context!==`chart`||active.id===over.id)return;const list=stepsRef.current;const oldIndex=list.findIndex(s=>stepKeyOf(s)===a.id);const newIndex=list.findIndex(s=>stepKeyOf(s)===o.id);if(oldIndex===-1||newIndex===-1)return;const reordered=utils.arrayMove(list,oldIndex,newIndex);if(!utils.isReorderValidWithPinning(reordered))return;const connected=connectedRef.current;const chainSteps=reordered.filter(s=>connected.has(stepKeyOf(s)));const oldChain=list.filter(s=>connected.has(stepKeyOf(s)));stepsRef.current=reordered;actions.load({workflow:{...state.workflow,steps:reordered,canvasData:{...state.workflow.canvasData,connections:chainSteps.length?chainSteps.map((step,i)=>({id:autoConnUid(),sourceId:i===0?START_ID:stepKeyOf(chainSteps[i-1]),sourceAnchor:`bottom`,targetId:stepKeyOf(step),targetAnchor:`top`,waypoints:[],label:``})):connsRef.current,nodePositions:(()=>{const prev=state.workflow.canvasData.nodePositions||{};const oldPositions=oldChain.map(s=>prev[stepKeyOf(s)]||{x:340,y:120});const updated={...prev};chainSteps.forEach((step,i)=>{updated[stepKeyOf(step)]={...oldPositions[i]}});return updated})()}},viewMode:state.viewMode,keepSelection:true})};const handleDragEnd=({active,over})=>{setActiveId(null);if(!over)return;const a=parseNodeDropId(active.id);const o=parseNodeDropId(over.id);if(a.context===`palette`\u0026\u0026o.context===`chart`){const service=utils.getStepById(a.id);if(!service)return;const overIndex=stepsRef.current.findIndex(s=>stepKeyOf(s)===o.id);insertService(service,overIndex+1);return}if(a.context===`palette`\u0026\u0026over.id===`workflow-canvas`){const service=utils.getStepById(a.id);if(service)insertService(service,undefined)}};const handleDragCancel=()=>setActiveId(null);const renderOverlay=active=>{const parsed=parseNodeDropId(active.id);if(parsed.context===`palette`){const service=utils.getStepById(parsed.id);if(!service)return null;return _jsx(DragPreview,{label:labelOf(service),icon:service.icon,stepId:service.id})}if(parsed.context===`chart`){const step=stepsRef.current.find(s=>stepKeyOf(s)===parsed.id);if(!step)return null;return _jsx(DragPreview,{label:labelOf(step),icon:step.icon||utils.getStepIcon(step.id),stepId:step.id,isChartItem:true})}return null};return{activeId,connectedStepIds,handleDragStart,handleDragOver,handleDragEnd,handleDragCancel,renderOverlay,commit}};const ListCanvas=({isLoading,connectedStepIds})=>{const{state,actions,selectors}=useWorkflow();const steps=state.workflow.steps;const selectedStepId=state.selectedStepId;const resolvedOrder=useMemo(()=>{const order={};let num=1;(selectors.orderedSteps||[]).forEach(s=>{const key=stepKeyOf(s);if(connectedStepIds\u0026\u0026connectedStepIds.has(key))order[key]=num++});return order},[selectors.orderedSteps,connectedStepIds]);const handleDelete=step=>{actions.removeStep({instanceId:stepKeyOf(step)})};return _jsx(DroppableCanvas,{id:`workflow-canvas`,children:isLoading?_jsx(`div`,{className:`wb-chain`,children:[0,1,2].map(i=>_jsxs(`div`,{style:{display:`contents`},children:[_jsx(`div`,{className:`wb-skel`,style:{width:`100%`,height:90}}),i\u003c2?_jsx(`div`,{className:`wb-chain-connector`}):null]},i))}):steps.length===0?_jsx(EmptyChain,{}):_jsx(`div`,{className:`wb-chain`,children:steps.map((step,index)=>{const key=stepKeyOf(step);return _jsxs(`div`,{style:{display:`contents`},children:[_jsx(SortableStepNode,{step,stepNumber:resolvedOrder[key],active:selectedStepId===key,covered:false,disabled:!!isLoading,onClick:()=>actions.selectStep({instanceId:key}),onDelete:()=>handleDelete(step)}),index\u003csteps.length-1?_jsx(`div`,{className:`wb-chain-connector`}):null]},key)})})})};return{ListCanvas,useListDnd,DragPreview,rebuildChainWithPinning}};const makePalette=deps=>{const{WB,utils,store,ui,dnd}=deps;const wb=WB||{};const I18N=wb.I18N||{};const t=(key,fallback)=>typeof I18N[key]===`string`?I18N[key]:fallback;const CATEGORY_TABS=[{value:`All`,key:`builderCategoryAll`,label:`All`},{value:`Verify`,key:`builderCategoryVerify`,label:`Verify`},{value:`Docs`,key:`builderCategoryDocs`,label:`Docs`},{value:`Screen`,key:`builderCategoryScreen`,label:`Screen`},{value:`Crypto`,key:`builderCategoryCrypto`,label:`Crypto`},{value:`Gaming`,key:`builderCategoryGaming`,label:`Gaming`}];const DRAG_MIME=`application/workflow-step`;const{useWorkflow}=store;const{StepIcon,MuiTextField}=ui;const{useDraggable}=dnd;const labelOf=service=>{const key=(wb.WORKFLOW_STEP_I18N_KEYS||{})[service.id];return key\u0026\u0026I18N[key]||service.label};const descriptionOf=service=>{const key=(wb.WORKFLOW_STEP_DESCRIPTION_I18N_KEYS||{})[service.id];return key\u0026\u0026I18N[key]||service.description||``};const CostColumn=({service,covered})=>{const included=t(`builderServiceIncluded`,`Included`);if(service.coupled)return _jsx(`span`,{className:`wb-pal-included`,children:included});return _jsxs(_Fragment,{children:[_jsx(`span`,{className:`wb-pal-cost`,\"data-covered\":covered?`true`:`false`,children:utils.fCurrency(utils.getStepCost(service))}),covered?_jsx(`span`,{className:`wb-pal-included-covered`,children:included}):null]})};const CardBody=({service,covered,shadow})=>_jsxs(_Fragment,{children:[_jsx(`span`,{className:`wb-tile`+(shadow?` wb-tile-shadow`:``),style:{background:utils.getStepGradient(service.id)},\"aria-hidden\":`true`,children:_jsx(StepIcon,{icon:service.icon,size:20,color:`#ffffff`})}),_jsxs(`span`,{className:`wb-pal-body`,children:[_jsxs(`span`,{className:`wb-pal-row`,children:[_jsx(`span`,{className:`wb-pal-name`,children:labelOf(service)}),_jsx(`span`,{className:`wb-pal-right`,children:_jsx(CostColumn,{service,covered})})]}),_jsx(`span`,{className:`wb-pal-desc`,children:descriptionOf(service)})]})]});const ServicePaletteCard=({service,covered,disabled})=>{const{setNodeRef,listeners,isDragging}=useDraggable({id:`palette:`+service.id,data:{service},disabled});return _jsx(`div`,{ref:setNodeRef,className:`wb-pal-card wb-palette-card`,\"data-testid\":`wb-palette-card-`+service.id,\"data-step-id\":service.id,\"data-dragging\":isDragging?`true`:`false`,\"data-disabled\":disabled?`true`:`false`,role:`button`,tabIndex:0,\"aria-label\":`Drag `+labelOf(service)+` into the workflow`,...listeners,children:_jsx(CardBody,{service,covered})})};const CanvasPaletteCard=({service,covered,disabled})=>{const onDragStart=e=>{try{e.dataTransfer.setData(DRAG_MIME,service.id);e.dataTransfer.setData(`text/plain`,service.id);e.dataTransfer.effectAllowed=`copy`}catch(err){}};return _jsx(`div`,{className:`wb-pal-card wb-palette-card`,\"data-testid\":`wb-palette-card-`+service.id,\"data-step-id\":service.id,\"data-disabled\":disabled?`true`:`false`,draggable:!disabled,onDragStart:disabled?undefined:onDragStart,role:`button`,tabIndex:0,\"aria-label\":`Drag `+labelOf(service)+` onto the canvas`,children:_jsx(CardBody,{service,covered,shadow:true})})};const Palette=({viewMode,availableServices,disabled})=>{const{state}=useWorkflow();const steps=state\u0026\u0026state.workflow\u0026\u0026state.workflow.steps||[];const[searchQuery,setSearchQuery]=useState(``);const[categoryTab,setCategoryTab]=useState(`All`);const canvasMode=viewMode===`canvas`;const services=useMemo(()=>utils.getAvailableServiceData(availableServices)||[],[Array.isArray(availableServices)?availableServices.join(`|`):``]);const filtered=useMemo(()=>{const q=searchQuery.toLowerCase();return services.filter(service=>{const matchesSearch=String(service.label||``).toLowerCase().includes(q);const matchesCategory=categoryTab===`All`||service.category===categoryTab;const alreadyInWorkflow=steps.some(s=>s.id===service.id);return matchesSearch\u0026\u0026matchesCategory\u0026\u0026!alreadyInWorkflow})},[services,searchQuery,categoryTab,steps]);const Card=canvasMode?CanvasPaletteCard:ServicePaletteCard;return _jsxs(`aside`,{className:`wb-pal`,\"data-testid\":`wb-palette`,\"data-viewmode\":viewMode||`builder`,\"data-count\":filtered.length,\"aria-label\":t(`builderAvailableServices`,`Available Services`),children:[_jsxs(`div`,{className:`wb-pal-head`,children:[_jsx(`h6`,{className:`wb-pal-title`,children:t(`builderAvailableServices`,`Available Services`)}),_jsx(MuiTextField,{fullWidth:true,size:`small`,placeholder:t(`builderSearchPlaceholder`,`Search...`),value:searchQuery,onChange:setSearchQuery,startAdornment:_jsx(StepIcon,{icon:`eva:search-fill`,size:20,color:`currentColor`}),testId:`wb-palette-search`})]}),_jsx(`div`,{className:`wb-pal-tabs`,role:`tablist`,children:CATEGORY_TABS.map(tab=>_jsx(`button`,{type:`button`,role:`tab`,className:`wb-pal-tab`,\"aria-selected\":categoryTab===tab.value?`true`:`false`,\"data-testid\":`wb-palette-tab-`+tab.value,onClick:()=>setCategoryTab(tab.value),children:t(tab.key,tab.label)},tab.value))}),_jsx(`div`,{className:`wb-pal-list`+(canvasMode?` wb-pal-list-canvas`:``),\"data-testid\":`wb-palette-list`,children:filtered.map(service=>_jsx(Card,{service,covered:false,disabled:!!disabled},service.id))})]})};return{Palette}};const makeStore=deps=>{const{WB,utils,geometry}=deps;const START=WB\u0026\u0026WB.START_NODE_ID||`__start__`;const CV=WB\u0026\u0026WB.CANVAS||{};const NODE_W=CV.NODE_WIDTH||280;const NODE_H=CV.NODE_HEIGHT||100;const ROW_GAP=CV.ROW_GAP||140;const GRID=CV.GRID_SIZE||20;const STORAGE_KEY=`deepidv-wb-workflow-v1`;const PERSIST_DELAY=300;const VIEW_MODES=[`builder`];const IS_DEV=!!(WB\u0026\u0026WB.IS_DEV);const COUPLED=WB\u0026\u0026WB.COUPLED_STEPS||{};const OVERRIDES=WB\u0026\u0026WB.COUPLED_PROPERTY_OVERRIDES||{};const PINNED=WB\u0026\u0026WB.BOTTOM_PINNED_STEPS||[];const CATALOG=WB\u0026\u0026WB.WORKFLOW_STEPS_OPTIONS||[];const TEMPLATES=WB\u0026\u0026WB.WORKFLOW_TEMPLATES||[];const isObj=v=>v!==null\u0026\u0026typeof v===`object`\u0026\u0026!Array.isArray(v);const stepKey=s=>s?s.instanceId||s.id:undefined;const clone=v=>{if(utils\u0026\u0026typeof utils.deepClone===`function`)return utils.deepClone(v);return v===undefined?v:JSON.parse(JSON.stringify(v))};const snapV=v=>{if(geometry\u0026\u0026typeof geometry.snap===`function`)return geometry.snap(v);return Math.round(v/GRID)*GRID};const numOr=(v,d)=>typeof v===`number`\u0026\u0026Number.isFinite(v)?v:d;const U=(name,fallback)=>utils\u0026\u0026typeof utils[name]===`function`?utils[name]:fallback;const fbGetStepById=id=>CATALOG.find(s=>s.id===id)||null;const fbGetStepTemplate=id=>{const def=fbGetStepById(id);return def?{...def}:null};const fbSanitize=step=>{if(!step)return null;const out={id:step.id,label:step.label,icon:step.icon};if(step.propertyGroups)out.propertyGroups=clone(step.propertyGroups);return out};const fbMakeInstanceId=id=>`${id}-${Date.now()}`;const fbApplyOverrides=step=>{const ov=OVERRIDES[step.id];if(!ov||!isObj(ov)||!Array.isArray(step.propertyGroups))return step;let changed=false;const groups=step.propertyGroups.map(g=>{const gOv=ov[g.groupId];if(!isObj(gOv))return g;changed=true;return{...g,properties:(g.properties||[]).map(p=>p.id in gOv?{...p,value:gOv[p.id]}:p)}});return changed?{...step,propertyGroups:groups}:step};const fbApplyCoupled=(steps,newStep)=>{const list=[...steps];const added=[];const wanted=COUPLED[newStep.id]||[];wanted.forEach(cid=>{if(list.some(s=>s.id===cid))return;const tpl=U(`getStepTemplate`,fbGetStepTemplate)(cid);if(!tpl)return;const base=U(`sanitizeStepForWorkflow`,fbSanitize)(tpl)||{};const inst=fbApplyOverrides({...base,instanceId:U(`makeInstanceId`,fbMakeInstanceId)(cid)});list.push(inst);added.push(inst)});return{steps:list,added}};const fbEnforcePinning=steps=>{const unpinned=steps.filter(s=>!PINNED.includes(s.id));const pinned=steps.filter(s=>PINNED.includes(s.id));pinned.sort((a,b)=>PINNED.indexOf(a.id)-PINNED.indexOf(b.id));return[...unpinned,...pinned]};const fbEnforceOverrides=steps=>steps.map(fbApplyOverrides);const fbRemoveWithCoupled=(steps,instanceId)=>{const target=steps.find(s=>stepKey(s)===instanceId);if(!target)return steps;const cascade=new Set([target.id]);const wanted=COUPLED[target.id]||[];wanted.forEach(cid=>{if((COUPLED[cid]||[]).includes(target.id))cascade.add(cid)});return steps.filter(s=>!cascade.has(s.id))};const fbIsReorderValid=(steps,from,to)=>{if(from===to)return true;if(from\u003c0||to\u003c0||from>=steps.length||to>=steps.length)return false;const moved=steps[from];const list=[...steps];list.splice(from,1);list.splice(to,0,moved);const firstPinned=list.findIndex(s=>PINNED.includes(s.id));if(firstPinned===-1)return true;return list.slice(firstPinned).every(s=>PINNED.includes(s.id))};const fbRebuildChain=steps=>{const ordered=fbEnforcePinning(steps);const conns=[];let prev=START;ordered.forEach((s,i)=>{const key=stepKey(s);conns.push({id:`conn-${prev}-${key}-${i}`,sourceId:prev,sourceAnchor:`bottom`,targetId:key,targetAnchor:`top`,waypoints:[],label:``});prev=key});return conns};const fbResolveOrder=(steps,connections)=>{const byKey=new Map(steps.map(s=>[stepKey(s),s]));const warnings=[];const orderedSteps=[];const seen=new Set([START]);let cur=START;for(let guard=0;guard\u003c=steps.length+1;guard+=1){const out=(connections||[]).find(c=>c.sourceId===cur);if(!out)break;if(seen.has(out.targetId)){warnings.push(`Cycle detected`);break}seen.add(out.targetId);const step=byKey.get(out.targetId);if(step)orderedSteps.push(step);cur=out.targetId}return{orderedSteps,warnings}};const fbComputeResolvedOrder=(steps,connections)=>{const{orderedSteps}=fbResolveOrder(steps,connections);const out={};orderedSteps.forEach((s,i)=>{out[stepKey(s)]=i+1});return out};const fbRemoveWithBridge=(steps,connections,instanceIds)=>{const gone=new Set(instanceIds);let conns=[...connections||[]];instanceIds.forEach(id=>{const incoming=conns.filter(c=>c.targetId===id);const outgoing=conns.filter(c=>c.sourceId===id);conns=conns.filter(c=>c.sourceId!==id\u0026\u0026c.targetId!==id);if(incoming.length===1\u0026\u0026outgoing.length===1){const a=incoming[0];const b=outgoing[0];if(!gone.has(a.sourceId)\u0026\u0026!gone.has(b.targetId)\u0026\u0026a.sourceId!==b.targetId){const already=conns.some(c=>c.sourceId===a.sourceId)||conns.some(c=>c.targetId===b.targetId);if(!already)conns.push({...a,id:`conn-${a.sourceId}-${b.targetId}-${Date.now()}`,targetId:b.targetId,targetAnchor:b.targetAnchor,waypoints:[],label:``})}}});return{steps:steps.filter(s=>!gone.has(stepKey(s))),connections:conns}};const fbAddConnectionIfLinear=(connections,conn)=>{if(!conn||!conn.sourceId||!conn.targetId)return null;if(conn.sourceId===conn.targetId||conn.targetId===START)return null;const list=connections||[];if(list.some(c=>c.sourceId===conn.sourceId))return null;if(list.some(c=>c.targetId===conn.targetId))return null;return[...list,{waypoints:[],label:``,...conn}]};const fbComputeCost=steps=>{const getCost=U(`getStepCost`,s=>{const def=fbGetStepById(s.id);if(!def||def.coupled)return def\u0026\u0026def.coupled?0:null;return typeof def.cost===`number`?def.cost:null});return steps.reduce((sum,s)=>{const c=getCost(s);return typeof c===`number`\u0026\u0026Number.isFinite(c)?sum+c:sum},0)};const fbUpdatePropertyValue=(steps,key,groupId,propId,value)=>steps.map(s=>stepKey(s)===key?{...s,propertyGroups:(s.propertyGroups||[]).map(g=>g.groupId===groupId?{...g,properties:(g.properties||[]).map(p=>p.id===propId?{...p,value}:p)}:g)}:s);const fbUpdatePropertyValues=(steps,key,groupId,values)=>steps.map(s=>stepKey(s)===key?{...s,propertyGroups:(s.propertyGroups||[]).map(g=>g.groupId===groupId?{...g,properties:(g.properties||[]).map(p=>isObj(values)\u0026\u0026p.id in values?{...p,value:values[p.id]}:p)}:g)}:s);const fbUpdateLinkedWeights=(steps,key,groupId,changedId,value)=>steps.map(s=>{if(stepKey(s)!==key)return s;return{...s,propertyGroups:(s.propertyGroups||[]).map(g=>{if(g.groupId!==groupId)return g;const props=g.properties||[];const linked=props.filter(p=>p.type===`slider`\u0026\u0026p.linkedGroup);if(!linked.some(p=>p.id===changedId))return g;const next=Math.max(0,Math.min(100,Math.round(numOr(value,0)/5)*5));const others=linked.filter(p=>p.id!==changedId);const remaining=100-next;const otherSum=others.reduce((a,p)=>a+numOr(p.value,0),0);const newVals={[changedId]:next};let acc=0;others.forEach((p,i)=>{let v;if(i===others.length-1)v=remaining-acc;else{const share=otherSum>0?numOr(p.value,0)/otherSum:1/others.length;v=Math.round(remaining*share/5)*5;acc+=v}newVals[p.id]=Math.max(0,v)});return{...g,properties:props.map(p=>p.id in newVals?{...p,value:newVals[p.id]}:p)}})}});const fbInitialLayout=steps=>{const out={[START]:{x:snapV(NODE_W/2-(CV.START_NODE_WIDTH||120)/2),y:20}};steps.forEach((s,i)=>{out[stepKey(s)]={x:0,y:snapV(120+i*ROW_GAP)}});return out};const getStepTemplate=U(`getStepTemplate`,fbGetStepTemplate);const sanitizeStep=U(`sanitizeStepForWorkflow`,fbSanitize);const makeInstanceId=U(`makeInstanceId`,fbMakeInstanceId);const applyCoupledSteps=U(`applyCoupledSteps`,fbApplyCoupled);const enforcePinning=U(`enforceBottomPinningOnSteps`,fbEnforcePinning);const enforceOverrides=U(`enforceCoupledOverridesOnSteps`,fbEnforceOverrides);const removeWithCoupled=U(`removeWithCoupled`,fbRemoveWithCoupled);const isReorderValid=U(`isReorderValidWithPinning`,fbIsReorderValid);const rebuildChain=U(`rebuildChainWithPinning`,fbRebuildChain);const resolveOrder=U(`resolveStepOrderFromConnections`,fbResolveOrder);const computeResolvedOrder=U(`computeResolvedOrder`,fbComputeResolvedOrder);const removeWithBridge=U(`removeStepsWithBridge`,fbRemoveWithBridge);const addConnectionIfLinear=U(`addConnectionIfLinear`,fbAddConnectionIfLinear);const computeCost=U(`computeWorkflowCost`,fbComputeCost);const updatePropertyValueInSteps=U(`updatePropertyValueInSteps`,fbUpdatePropertyValue);const updatePropertyValuesInSteps=U(`updatePropertyValuesInSteps`,fbUpdatePropertyValues);const updateLinkedWeightsInSteps=U(`updateLinkedWeightsInSteps`,fbUpdateLinkedWeights);const initialLayout=geometry\u0026\u0026typeof geometry.initialLayout===`function`?geometry.initialLayout:fbInitialLayout;const blankViewport=()=>({x:0,y:0,zoom:1});const blankCanvasData=()=>({connections:[],nodePositions:{},viewport:blankViewport()});const blankWorkflow=()=>({name:``,steps:[],canvasData:blankCanvasData()});const initialState={workflow:blankWorkflow(),selectedStepId:null,selectedConnectionId:null,viewMode:`builder`,hydrated:false,toasts:[]};const normalizeConnection=c=>{if(!isObj(c)||!c.sourceId||!c.targetId)return null;return{id:c.id||`conn-${c.sourceId}-${c.targetId}`,sourceId:String(c.sourceId),sourceAnchor:c.sourceAnchor||`bottom`,targetId:String(c.targetId),targetAnchor:c.targetAnchor||`top`,waypoints:Array.isArray(c.waypoints)?c.waypoints.filter(p=>isObj(p)\u0026\u0026typeof p.x===`number`\u0026\u0026typeof p.y===`number`):[],label:typeof c.label===`string`?c.label:``}};const normalizeWorkflow=raw=>{const w=blankWorkflow();if(!isObj(raw))return w;if(typeof raw.name===`string`)w.name=raw.name;if(Array.isArray(raw.steps)){const seen=new Set;raw.steps.forEach(s=>{if(!isObj(s)||typeof s.id!==`string`)return;const step={...s};if(typeof step.instanceId!==`string`||!step.instanceId)step.instanceId=makeInstanceId(step.id);if(seen.has(step.instanceId))return;seen.add(step.instanceId);if(typeof step.label!==`string`){const def=fbGetStepById(step.id);step.label=def?def.label:step.id}if(typeof step.icon!==`string`){const def=fbGetStepById(step.id);step.icon=def?def.icon:WB\u0026\u0026WB.ICONS\u0026\u0026WB.ICONS.fallback||``}if(step.propertyGroups!==undefined\u0026\u0026!Array.isArray(step.propertyGroups))delete step.propertyGroups;w.steps.push(step)})}const cd=isObj(raw.canvasData)?raw.canvasData:{};const keys=new Set(w.steps.map(stepKey));keys.add(START);if(Array.isArray(cd.connections)){const seenIds=new Set;cd.connections.forEach(c=>{const n=normalizeConnection(c);if(!n||seenIds.has(n.id))return;if(!keys.has(n.sourceId)||!keys.has(n.targetId))return;seenIds.add(n.id);w.canvasData.connections.push(n)})}if(isObj(cd.nodePositions)){Object.keys(cd.nodePositions).forEach(k=>{const p=cd.nodePositions[k];if(keys.has(k)\u0026\u0026isObj(p)\u0026\u0026typeof p.x===`number`\u0026\u0026typeof p.y===`number`)w.canvasData.nodePositions[k]={x:p.x,y:p.y}})}if(isObj(cd.viewport)){const minZ=CV.MIN_ZOOM||.15;const maxZ=CV.MAX_ZOOM||2.5;w.canvasData.viewport={x:numOr(cd.viewport.x,0),y:numOr(cd.viewport.y,0),zoom:Math.min(maxZ,Math.max(minZ,numOr(cd.viewport.zoom,1)))}}return w};const withWorkflow=(state,patch)=>({...state,workflow:{...state.workflow,...patch}});const withCanvas=(state,patch)=>withWorkflow(state,{canvasData:{...state.workflow.canvasData,...patch}});const prunePositions=(positions,steps)=>{const keep=new Set(steps.map(stepKey));keep.add(START);const out={};Object.keys(positions||{}).forEach(k=>{if(keep.has(k))out[k]=positions[k]});return out};const positionTaken=(positions,x,y,ignoreKey)=>Object.keys(positions).some(k=>{if(k===ignoreKey)return false;const p=positions[k];return p\u0026\u0026Math.abs(p.x-x)\u003cGRID\u0026\u0026Math.abs(p.y-y)\u003cGRID});const ensurePositions=(steps,positions)=>{const existing=prunePositions(positions,steps);const missing=steps.map(stepKey).filter(k=>!existing[k]);const needStart=!existing[START];if(!missing.length\u0026\u0026!needStart)return existing;const layout=initialLayout(steps)||{};const out={...existing};if(needStart)out[START]=layout[START]||{x:0,y:20};missing.forEach(k=>{const base=layout[k]||{x:0,y:120};let x=snapV(base.x);let y=snapV(base.y);let guard=0;while(positionTaken(out,x,y,k)\u0026\u0026guard\u003c200){y+=ROW_GAP;guard+=1}out[k]={x,y}});return out};const buildInstance=stepId=>{const tpl=getStepTemplate(stepId);if(!tpl)return null;const base=sanitizeStep(tpl)||{id:tpl.id,label:tpl.label,icon:tpl.icon};const inst={...base,id:base.id||stepId,instanceId:makeInstanceId(stepId)};if(inst.propertyGroups===undefined)delete inst.propertyGroups;return inst};const applyStepRules=(steps,newStep)=>{const res=applyCoupledSteps(steps,newStep)||{steps,added:[]};let list=Array.isArray(res.steps)?res.steps:Array.isArray(res)?res:steps;const added=Array.isArray(res.added)?res.added:[];list=enforcePinning(list)||list;list=enforceOverrides(list)||list;return{steps:list,added}};const clampIndex=(index,len)=>{if(typeof index!==`number`||!Number.isFinite(index))return len;return Math.max(0,Math.min(len,Math.round(index)))};const reduceAddStep=(state,a)=>{const stepId=a.stepId||a.id;if(!stepId)return state;const steps=state.workflow.steps;const existing=steps.find(s=>s.id===stepId);if(existing){return{...state,selectedStepId:stepKey(existing),selectedConnectionId:null}}const newStep=buildInstance(stepId);if(!newStep)return state;const mode=a.mode||(state.viewMode===`canvas`?`canvas`:`list`);const cd=state.workflow.canvasData;if(mode===`canvas`){const{steps:nextSteps,added}=applyStepRules([...steps,newStep],newStep);let positions=prunePositions(cd.nodePositions,nextSteps);const pos=a.position;if(isObj(pos)\u0026\u0026typeof pos.x===`number`\u0026\u0026typeof pos.y===`number`){const x=snapV(pos.x-NODE_W/2);const y=snapV(pos.y-NODE_H/2);positions={...positions,[newStep.instanceId]:{x,y}};added.forEach((s,i)=>{if(!positions[stepKey(s)])positions[stepKey(s)]={x,y:y+ROW_GAP*(i+1)}})}positions=ensurePositions(nextSteps,positions);return{...withCanvas({...state,workflow:{...state.workflow,steps:nextSteps}},{nodePositions:positions}),selectedStepId:newStep.instanceId,selectedConnectionId:null}}const list=[...steps];list.splice(clampIndex(a.index,list.length),0,newStep);const{steps:nextSteps}=applyStepRules(list,newStep);const connections=rebuildChain(nextSteps)||[];const positions=ensurePositions(nextSteps,cd.nodePositions);return{...withCanvas({...state,workflow:{...state.workflow,steps:nextSteps}},{connections,nodePositions:positions}),selectedStepId:newStep.instanceId,selectedConnectionId:null}};const reduceApplyTemplate=(state,a)=>{if(a.templateId===`scratch`){return{...state,workflow:{name:``,steps:[],canvasData:{connections:[],nodePositions:{[START]:{x:400,y:40}},viewport:blankViewport()}},selectedStepId:null,selectedConnectionId:null}}const build=U(`buildWorkflowFromTemplate`,null);const tpl=TEMPLATES.find(t=>t.id===a.templateId);if(!tpl||typeof build!==`function`)return state;const built=build(a.templateId);const workflow=normalizeWorkflow(built);return{...state,workflow,selectedStepId:null,selectedConnectionId:null}};const reduceRemoveStep=(state,a)=>{const instanceId=a.instanceId;const steps=state.workflow.steps;if(!instanceId||!steps.some(s=>stepKey(s)===instanceId))return state;const remaining=removeWithCoupled(steps,instanceId)||steps.filter(s=>stepKey(s)!==instanceId);const keep=new Set(remaining.map(stepKey));const removedIds=steps.map(stepKey).filter(k=>!keep.has(k));if(!removedIds.includes(instanceId))removedIds.push(instanceId);const cd=state.workflow.canvasData;const res=removeWithBridge(steps,cd.connections,removedIds)||{};const nextSteps=Array.isArray(res.steps)?res.steps:steps.filter(s=>!removedIds.includes(stepKey(s)));const gone=new Set(removedIds);const nextConns=(Array.isArray(res.connections)?res.connections:cd.connections).filter(c=>!gone.has(c.sourceId)\u0026\u0026!gone.has(c.targetId));const positions=prunePositions(cd.nodePositions,nextSteps);const selectedStepId=gone.has(state.selectedStepId)?null:state.selectedStepId;const selectedConnectionId=nextConns.some(c=>c.id===state.selectedConnectionId)?state.selectedConnectionId:null;return{...withCanvas({...state,workflow:{...state.workflow,steps:nextSteps}},{connections:nextConns,nodePositions:positions}),selectedStepId,selectedConnectionId}};const reduceReorder=(state,a)=>{const steps=state.workflow.steps;const from=a.from;const to=a.to;if(typeof from!==`number`||typeof to!==`number`)return state;if(from===to||from\u003c0||to\u003c0||from>=steps.length||to>=steps.length)return state;if(!isReorderValid(steps,from,to))return state;const moved=steps[from];const displaced=steps[to];const list=[...steps];list.splice(from,1);list.splice(to,0,moved);const nextSteps=enforcePinning(list)||list;const connections=rebuildChain(nextSteps)||[];const cd=state.workflow.canvasData;const positions={...cd.nodePositions};const kA=stepKey(moved);const kB=stepKey(displaced);if(positions[kA]\u0026\u0026positions[kB]){const tmp=positions[kA];positions[kA]=positions[kB];positions[kB]=tmp}return withCanvas({...state,workflow:{...state.workflow,steps:nextSteps}},{connections,nodePositions:ensurePositions(nextSteps,positions)})};const reduceSyncOrder=(state,a)=>{const order=Array.isArray(a.order)?a.order:[];const steps=state.workflow.steps;const byKey=new Map(steps.map(s=>[stepKey(s),s]));const next=[];const used=new Set;order.forEach(k=>{const s=byKey.get(k);if(s\u0026\u0026!used.has(k)){used.add(k);next.push(s)}});steps.forEach(s=>{if(!used.has(stepKey(s)))next.push(s)});if(next.length===steps.length\u0026\u0026next.every((s,i)=>s===steps[i]))return state;return withWorkflow(state,{steps:next})};const reducer=(state,action)=>{if(!action||typeof action.type!==`string`)return state;const a=isObj(action.payload)?{...action.payload,type:action.type}:action;const cd=state.workflow.canvasData;switch(a.type){case`LOAD`:{const workflow=normalizeWorkflow(a.workflow);const viewMode=VIEW_MODES.includes(a.viewMode)?a.viewMode:state.viewMode;if(a.keepSelection){const keys=new Set(workflow.steps.map(stepKey));const selectedStepId=keys.has(state.selectedStepId)?state.selectedStepId:null;const selectedConnectionId=workflow.canvasData.connections.some(c=>c.id===state.selectedConnectionId)?state.selectedConnectionId:null;return{...state,workflow,viewMode,hydrated:true,selectedStepId,selectedConnectionId}}return{...state,workflow,viewMode,hydrated:true,selectedStepId:null,selectedConnectionId:null}}case`RESET`:return{...state,workflow:blankWorkflow(),selectedStepId:null,selectedConnectionId:null,viewMode:`builder`};case`SET_NAME`:return withWorkflow(state,{name:typeof a.name===`string`?a.name:``});case`APPLY_TEMPLATE`:return reduceApplyTemplate(state,a);case`ADD_STEP`:return reduceAddStep(state,a);case`REMOVE_STEP`:return reduceRemoveStep(state,a);case`REORDER`:return reduceReorder(state,a);case`SYNC_STEP_ORDER`:return reduceSyncOrder(state,a);case`SET_CONNECTIONS`:{const connections=(Array.isArray(a.connections)?a.connections:[]).map(normalizeConnection).filter(Boolean);const selectedConnectionId=connections.some(c=>c.id===state.selectedConnectionId)?state.selectedConnectionId:null;return{...withCanvas(state,{connections}),selectedConnectionId}}case`ADD_CONNECTION`:{const conn=normalizeConnection(a.connection);if(!conn)return state;if(conn.sourceId===conn.targetId||conn.targetId===START)return state;const known=new Set(state.workflow.steps.map(stepKey));known.add(START);if(!known.has(conn.sourceId)||!known.has(conn.targetId))return state;if(cd.connections.some(c=>c.id===conn.id))return state;const next=addConnectionIfLinear(cd.connections,conn);if(!Array.isArray(next))return state;return withCanvas(state,{connections:next})}case`REMOVE_CONNECTION`:{if(!cd.connections.some(c=>c.id===a.id))return state;const connections=cd.connections.filter(c=>c.id!==a.id);const selectedConnectionId=state.selectedConnectionId===a.id?null:state.selectedConnectionId;return{...withCanvas(state,{connections}),selectedConnectionId}}case`UPDATE_CONNECTION`:{if(!isObj(a.patch)||!cd.connections.some(c=>c.id===a.id))return state;const patch={...a.patch};delete patch.id;return withCanvas(state,{connections:cd.connections.map(c=>c.id===a.id?{...c,...patch}:c)})}case`SET_NODE_POSITION`:{if(!a.instanceId||typeof a.x!==`number`||typeof a.y!==`number`)return state;const prev=cd.nodePositions[a.instanceId];if(prev\u0026\u0026prev.x===a.x\u0026\u0026prev.y===a.y)return state;return withCanvas(state,{nodePositions:{...cd.nodePositions,[a.instanceId]:{x:a.x,y:a.y}}})}case`SET_NODE_POSITIONS`:{if(!isObj(a.positions))return state;const merged={...cd.nodePositions};Object.keys(a.positions).forEach(k=>{const p=a.positions[k];if(isObj(p)\u0026\u0026typeof p.x===`number`\u0026\u0026typeof p.y===`number`)merged[k]={x:p.x,y:p.y}});return withCanvas(state,{nodePositions:merged})}case`SET_VIEWPORT`:{if(!isObj(a.viewport))return state;const vp={x:numOr(a.viewport.x,cd.viewport.x),y:numOr(a.viewport.y,cd.viewport.y),zoom:numOr(a.viewport.zoom,cd.viewport.zoom)};if(vp.x===cd.viewport.x\u0026\u0026vp.y===cd.viewport.y\u0026\u0026vp.zoom===cd.viewport.zoom)return state;return withCanvas(state,{viewport:vp})}case`SELECT_STEP`:{const id=a.instanceId===undefined?null:a.instanceId;const valid=id===null||state.workflow.steps.some(s=>stepKey(s)===id);const nextId=valid?id:null;if(nextId===state.selectedStepId\u0026\u0026(nextId===null||state.selectedConnectionId===null))return state;return{...state,selectedStepId:nextId,selectedConnectionId:nextId===null?state.selectedConnectionId:null}}case`SELECT_CONNECTION`:{const id=a.id===undefined?null:a.id;const valid=id===null||cd.connections.some(c=>c.id===id);const nextId=valid?id:null;if(nextId===state.selectedConnectionId\u0026\u0026(nextId===null||state.selectedStepId===null))return state;return{...state,selectedConnectionId:nextId,selectedStepId:nextId===null?state.selectedStepId:null}}case`SET_VIEW_MODE`:{if(!VIEW_MODES.includes(a.viewMode)||a.viewMode===state.viewMode)return state;return{...state,viewMode:a.viewMode}}case`UPDATE_PROPERTY_VALUE`:{if(!a.stepKey||!a.groupId||!a.propId)return state;return withWorkflow(state,{steps:updatePropertyValueInSteps(state.workflow.steps,a.stepKey,a.groupId,a.propId,a.value)})}case`UPDATE_PROPERTY_VALUES`:{if(!a.stepKey||!a.groupId||!isObj(a.values))return state;return withWorkflow(state,{steps:updatePropertyValuesInSteps(state.workflow.steps,a.stepKey,a.groupId,a.values)})}case`PATCH_STEP`:{const key=a.stepKey;const nextStep=a.step;if(!key||!isObj(nextStep))return state;const steps=state.workflow.steps;if(!steps.some(s=>stepKey(s)===key))return state;return withWorkflow(state,{steps:steps.map(s=>stepKey(s)===key?{...s,...nextStep,instanceId:s.instanceId}:s)})}case`UPDATE_LINKED_WEIGHTS`:{if(!a.stepKey||!a.groupId||!a.changedId)return state;return withWorkflow(state,{steps:updateLinkedWeightsInSteps(state.workflow.steps,a.stepKey,a.groupId,a.changedId,a.value)})}default:return state}};const orderFromConnections=(steps,connections)=>{if(!steps.length)return{ordered:[],warnings:[]};let res;try{res=resolveOrder(steps,connections)||{}}catch(e){res={}}const reachable=Array.isArray(res.orderedSteps)?res.orderedSteps:[];const byKey=new Map(steps.map(s=>[stepKey(s),s]));const used=new Set;const ordered=[];reachable.forEach(s=>{const k=typeof s===`string`?s:stepKey(s);const real=byKey.get(k);if(real\u0026\u0026!used.has(k)){used.add(k);ordered.push(real)}});steps.forEach(s=>{if(!used.has(stepKey(s)))ordered.push(s)});return{ordered,warnings:Array.isArray(res.warnings)?res.warnings:[]}};const ACTION_DEFS={load:[`LOAD`,[`workflow`,`viewMode`,`keepSelection`]],reset:[`RESET`,[]],setName:[`SET_NAME`,[`name`]],applyTemplate:[`APPLY_TEMPLATE`,[`templateId`]],addStep:[`ADD_STEP`,[`stepId`,`index`,`position`,`mode`]],removeStep:[`REMOVE_STEP`,[`instanceId`]],reorder:[`REORDER`,[`from`,`to`]],setConnections:[`SET_CONNECTIONS`,[`connections`]],addConnection:[`ADD_CONNECTION`,[`connection`]],removeConnection:[`REMOVE_CONNECTION`,[`id`]],updateConnection:[`UPDATE_CONNECTION`,[`id`,`patch`]],setNodePosition:[`SET_NODE_POSITION`,[`instanceId`,`x`,`y`]],setNodePositions:[`SET_NODE_POSITIONS`,[`positions`]],setViewport:[`SET_VIEWPORT`,[`viewport`]],selectStep:[`SELECT_STEP`,[`instanceId`]],selectConnection:[`SELECT_CONNECTION`,[`id`]],setViewMode:[`SET_VIEW_MODE`,[`viewMode`]],updatePropertyValue:[`UPDATE_PROPERTY_VALUE`,[`stepKey`,`groupId`,`propId`,`value`]],updatePropertyValues:[`UPDATE_PROPERTY_VALUES`,[`stepKey`,`groupId`,`values`]],updateLinkedWeights:[`UPDATE_LINKED_WEIGHTS`,[`stepKey`,`groupId`,`changedId`,`value`]],patchStep:[`PATCH_STEP`,[`stepKey`,`step`]]};const bindActions=dispatch=>{const out={};Object.keys(ACTION_DEFS).forEach(name=>{const[type,keys]=ACTION_DEFS[name];out[name]=(...args)=>{const first=args[0];let payload;if(!keys.length)payload={};else if(args.length===1\u0026\u0026isObj(first)\u0026\u0026keys.some(k=>k in first))payload=first;else{payload={};keys.forEach((k,i)=>{if(i\u003cargs.length)payload[k]=args[i]})}dispatch({type,...payload})}});out.clearSelection=()=>{dispatch({type:`SELECT_STEP`,instanceId:null});dispatch({type:`SELECT_CONNECTION`,id:null})};return out};const noop=()=>{};const inertActions=bindActions(noop);const emptySelectors={resolvedOrder:{},cost:0,selectedStep:null,orderedSteps:[],stepCount:0};const fallbackContext={state:initialState,dispatch:noop,actions:inertActions,selectors:emptySelectors};const WorkflowContext=React.createContext(null);const WorkflowProvider=({children,initialWorkflow,storageKey})=>{const KEY=typeof storageKey===`string`\u0026\u0026storageKey?storageKey:STORAGE_KEY;const[state,dispatch]=useReducer(reducer,initialState);const hydratedRef=useRef(false);useEffect(()=>{if(hydratedRef.current)return;hydratedRef.current=true;let saved=null;try{const raw=window.localStorage.getItem(KEY);if(raw)saved=JSON.parse(raw)}catch(e){saved=null}const workflow=isObj(saved)\u0026\u0026isObj(saved.workflow)?saved.workflow:isObj(initialWorkflow)?initialWorkflow:undefined;const viewMode=isObj(saved)\u0026\u0026VIEW_MODES.includes(saved.viewMode)?saved.viewMode:undefined;dispatch({type:`LOAD`,workflow,viewMode})},[]);useEffect(()=>{if(!state.hydrated)return undefined;const t=setTimeout(()=>{try{window.localStorage.setItem(KEY,JSON.stringify({workflow:state.workflow,viewMode:state.viewMode}))}catch(e){}},PERSIST_DELAY);return()=>clearTimeout(t)},[state.workflow,state.viewMode,state.hydrated,KEY]);const connections=state.workflow.canvasData.connections;useEffect(()=>{const steps=state.workflow.steps;if(!steps.length)return;const{ordered}=orderFromConnections(steps,connections);if(ordered.length===steps.length\u0026\u0026ordered.every((s,i)=>s===steps[i]))return;dispatch({type:`SYNC_STEP_ORDER`,order:ordered.map(stepKey)})},[connections]);const actions=useMemo(()=>bindActions(dispatch),[dispatch]);const steps=state.workflow.steps;const selectedStepId=state.selectedStepId;const resolvedOrder=useMemo(()=>{try{return computeResolvedOrder(steps,connections)||{}}catch(e){return{}}},[steps,connections]);const cost=useMemo(()=>{try{const c=computeCost(steps);return typeof c===`number`\u0026\u0026Number.isFinite(c)?c:0}catch(e){return 0}},[steps]);const selectedStep=useMemo(()=>selectedStepId?steps.find(s=>stepKey(s)===selectedStepId)||null:null,[steps,selectedStepId]);const orderedSteps=useMemo(()=>orderFromConnections(steps,connections).ordered,[steps,connections]);const stepCount=steps.length;const selectors=useMemo(()=>({resolvedOrder,cost,selectedStep,orderedSteps,stepCount}),[resolvedOrder,cost,selectedStep,orderedSteps,stepCount]);const value=useMemo(()=>({state,dispatch,actions,selectors}),[state,actions,selectors]);return _jsx(WorkflowContext.Provider,{value,children})};let warnedOutside=false;const useWorkflow=()=>{const ctx=useContext(WorkflowContext);if(ctx)return ctx;if(IS_DEV\u0026\u0026!warnedOutside){warnedOutside=true;try{console.warn(`[workflow-builder] useWorkflow() called outside \u003cWorkflowProvider>; returning an inert store.`)}catch(e){}}return fallbackContext};return{WorkflowProvider,useWorkflow}};const makeGeometry=deps=>{const{WB}=deps;const C=WB.CANVAS;const START_NODE_ID=WB.START_NODE_ID;const NODE_W=C.NODE_WIDTH;const NODE_H=C.NODE_HEIGHT;const START_W=C.START_NODE_WIDTH;const START_H=C.START_NODE_HEIGHT;const MIN_ZOOM=C.MIN_ZOOM;const MAX_ZOOM=C.MAX_ZOOM;const ZOOM_STEP=C.ZOOM_STEP;const ELBOW_GAP=C.ELBOW_GAP;const CORNER_RADIUS=C.CORNER_RADIUS;const GRID_SIZE=C.GRID_SIZE;const ROW_GAP=C.ROW_GAP;const FIT_PADDING=C.FIT_PADDING;const FIT_MAX_ZOOM=C.FIT_MAX_ZOOM;const ANCHOR_HIT_RADIUS=C.ANCHOR_HIT_RADIUS;const isFiniteNum=n=>typeof n===`number`\u0026\u0026Number.isFinite(n);const num=(n,fallback)=>isFiniteNum(n)?n:fallback;const round2=n=>Math.round(n*100)/100;const round4=n=>Math.round(n*1e4)/1e4;const EPS=1e-6;const DEFAULT_VIEWPORT={x:0,y:0,zoom:1};const LAYOUT_AXIS_X=400;const LAYOUT_TOP_Y=20;const LAYOUT_FIRST_STEP_Y=120;const DEFAULT_START_POSITION={x:LAYOUT_AXIS_X-START_W/2,y:LAYOUT_TOP_Y};const ANCHOR_SIDES=[`top`,`right`,`bottom`,`left`];const START_ANCHOR_SIDES=[`bottom`,`right`];const makeOffsets=(w,h)=>({top:{x:w/2,y:0},right:{x:w,y:h/2},bottom:{x:w/2,y:h},left:{x:0,y:h/2}});const STEP_ANCHOR_OFFSETS=makeOffsets(NODE_W,NODE_H);const START_ANCHOR_OFFSETS=makeOffsets(START_W,START_H);const ANCHOR_OFFSETS={...STEP_ANCHOR_OFFSETS};Object.defineProperty(ANCHOR_OFFSETS,\"step\",{value:STEP_ANCHOR_OFFSETS,enumerable:false});Object.defineProperty(ANCHOR_OFFSETS,\"start\",{value:START_ANCHOR_OFFSETS,enumerable:false});const anchorOffsets=isStart=>isStart?START_ANCHOR_OFFSETS:STEP_ANCHOR_OFFSETS;const nodeSize=isStart=>isStart?{width:START_W,height:START_H}:{width:NODE_W,height:NODE_H};const isStartId=(nodeId,isStart)=>typeof isStart===`boolean`?isStart:nodeId===START_NODE_ID;const stepKeyOf=step=>{if(typeof step===`string`)return step;return step\u0026\u0026(step.instanceId||step.id)||``};const snap=v=>Math.round(num(v,0)/GRID_SIZE)*GRID_SIZE;const clampZoom=z=>{const n=num(z,1);return Math.min(MAX_ZOOM,Math.max(MIN_ZOOM,n))};const normalizeViewport=vp=>({x:num(vp\u0026\u0026vp.x,0),y:num(vp\u0026\u0026vp.y,0),zoom:clampZoom(vp\u0026\u0026vp.zoom)});const rectOrigin=svgRect=>({left:num(svgRect\u0026\u0026svgRect.left,0),top:num(svgRect\u0026\u0026svgRect.top,0)});const screenToCanvas=(clientX,clientY,viewport,svgRect)=>{const vp=normalizeViewport(viewport);const o=rectOrigin(svgRect);return{x:(num(clientX,0)-o.left-vp.x)/vp.zoom,y:(num(clientY,0)-o.top-vp.y)/vp.zoom}};const canvasToScreen=(x,y,viewport,svgRect)=>{const vp=normalizeViewport(viewport);const o=rectOrigin(svgRect);return{x:num(x,0)*vp.zoom+vp.x+o.left,y:num(y,0)*vp.zoom+vp.y+o.top}};const visibleCanvasRect=(viewport,containerW,containerH)=>{const vp=normalizeViewport(viewport);const W=Math.max(0,num(containerW,0));const H=Math.max(0,num(containerH,0));const tl=screenToCanvas(0,0,vp,null);return{x:tl.x,y:tl.y,width:W/vp.zoom,height:H/vp.zoom}};const centerViewportOn=(viewport,canvasPt,containerW,containerH)=>{const vp=normalizeViewport(viewport);const cx=num(canvasPt\u0026\u0026canvasPt.x,0);const cy=num(canvasPt\u0026\u0026canvasPt.y,0);return{x:round2(num(containerW,0)/2-cx*vp.zoom),y:round2(num(containerH,0)/2-cy*vp.zoom),zoom:vp.zoom}};const hasPosition=(nodeId,positions)=>{const p=positions\u0026\u0026positions[nodeId];return!!(p\u0026\u0026isFiniteNum(p.x)\u0026\u0026isFiniteNum(p.y))};const nodePosition=(nodeId,positions,isStart)=>{if(hasPosition(nodeId,positions))return{x:positions[nodeId].x,y:positions[nodeId].y};return isStart?{x:DEFAULT_START_POSITION.x,y:DEFAULT_START_POSITION.y}:{x:0,y:0}};const nodeRect=(nodeId,positions,isStart)=>{const start=isStartId(nodeId,isStart);const{x,y}=nodePosition(nodeId,positions,start);const{width,height}=nodeSize(start);return{x,y,width,height,right:x+width,bottom:y+height,cx:x+width/2,cy:y+height/2,isStart:start}};const anchorPoint=(nodeId,anchor,positions,isStart)=>{const r=nodeRect(nodeId,positions,isStart);const table=anchorOffsets(r.isStart);const off=table[anchor]||(r.isStart?table.bottom:table.top);return{x:r.x+off.x,y:r.y+off.y}};const DIRS={top:{x:0,y:-1},right:{x:1,y:0},bottom:{x:0,y:1},left:{x:-1,y:0}};const dirOf=a=>DIRS[a]||DIRS.bottom;const isVerticalAnchor=a=>a===`top`||a===`bottom`;const rectFromAnchor=(p,a,size)=>{const w=size.width;const h=size.height;if(a===`top`)return{x1:p.x-w/2,y1:p.y,x2:p.x+w/2,y2:p.y+h};if(a===`bottom`)return{x1:p.x-w/2,y1:p.y-h,x2:p.x+w/2,y2:p.y};if(a===`left`)return{x1:p.x,y1:p.y-h/2,x2:p.x+w,y2:p.y+h/2};return{x1:p.x-w,y1:p.y-h/2,x2:p.x,y2:p.y+h/2}};const samePt=(a,b)=>Math.abs(a.x-b.x)\u003cEPS\u0026\u0026Math.abs(a.y-b.y)\u003cEPS;const simplifyPoints=points=>{const out=[];for(const p of Array.isArray(points)?points:[]){if(!p||!isFiniteNum(p.x)||!isFiniteNum(p.y))continue;if(!out.length||!samePt(out[out.length-1],p))out.push({x:p.x,y:p.y})}let changed=true;while(changed\u0026\u0026out.length>2){changed=false;for(let i=1;i\u003cout.length-1;i++){const a=out[i-1];const b=out[i];const c=out[i+1];const ux=b.x-a.x;const uy=b.y-a.y;const vx=c.x-b.x;const vy=c.y-b.y;const cross=ux*vy-uy*vx;const dot=ux*vx+uy*vy;if(Math.abs(cross)\u003cEPS\u0026\u0026dot>0){out.splice(i,1);changed=true;break}}}return out};const hasUTurn=pts=>{for(let i=1;i\u003cpts.length-1;i++){const a=pts[i-1];const b=pts[i];const c=pts[i+1];const ux=b.x-a.x;const uy=b.y-a.y;const vx=c.x-b.x;const vy=c.y-b.y;if(Math.abs(ux*vy-uy*vx)\u003cEPS\u0026\u0026ux*vx+uy*vy\u003c0)return true}return false};const isOrthogonal=pts=>{for(let i=1;i\u003cpts.length;i++){if(Math.abs(pts[i].x-pts[i-1].x)>EPS\u0026\u0026Math.abs(pts[i].y-pts[i-1].y)>EPS)return false}return true};const segHitsRect=(a,b,r)=>{const inset=.5;const x1=r.x1+inset;const y1=r.y1+inset;const x2=r.x2-inset;const y2=r.y2-inset;if(x1>=x2||y1>=y2)return false;const minX=Math.min(a.x,b.x);const maxX=Math.max(a.x,b.x);const minY=Math.min(a.y,b.y);const maxY=Math.max(a.y,b.y);return maxX>x1\u0026\u0026minX\u003cx2\u0026\u0026maxY>y1\u0026\u0026minY\u003cy2};const pathLength=pts=>{let L=0;for(let i=1;i\u003cpts.length;i++)L+=Math.abs(pts[i].x-pts[i-1].x)+Math.abs(pts[i].y-pts[i-1].y);return L};const countBends=pts=>Math.max(0,pts.length-2);const computeOrthogonalRoute=(p1,a1,p2,a2,opts)=>{const P1={x:num(p1\u0026\u0026p1.x,0),y:num(p1\u0026\u0026p1.y,0)};const P2={x:num(p2\u0026\u0026p2.x,0),y:num(p2\u0026\u0026p2.y,0)};const A1=DIRS[a1]?a1:`bottom`;const A2=DIRS[a2]?a2:`top`;const d1=dirOf(A1);const d2=dirOf(A2);const srcSize=opts\u0026\u0026opts.sourceSize||nodeSize(false);const tgtSize=opts\u0026\u0026opts.targetSize||nodeSize(false);const gap=Math.max(0,num(opts\u0026\u0026opts.gap,ELBOW_GAP));const srcRect=rectFromAnchor(P1,A1,srcSize);const tgtRect=rectFromAnchor(P2,A2,tgtSize);let stub1=gap;let stub2=gap;const facing=d1.x===-d2.x\u0026\u0026d1.y===-d2.y;if(facing){const forward=(P2.x-P1.x)*d1.x+(P2.y-P1.y)*d1.y;if(forward>=0\u0026\u0026forward\u003c2*gap){stub1=forward/2;stub2=forward/2}}const s={x:P1.x+d1.x*stub1,y:P1.y+d1.y*stub1};const t={x:P2.x+d2.x*stub2,y:P2.y+d2.y*stub2};const midX=(s.x+t.x)/2;const midY=(s.y+t.y)/2;const outXs=[Math.max(srcRect.x2,tgtRect.x2)+gap,Math.min(srcRect.x1,tgtRect.x1)-gap];const outYs=[Math.max(srcRect.y2,tgtRect.y2)+gap,Math.min(srcRect.y1,tgtRect.y1)-gap];const candidates=[];candidates.push([]);candidates.push([{x:s.x,y:midY},{x:t.x,y:midY}]);candidates.push([{x:midX,y:s.y},{x:midX,y:t.y}]);candidates.push([{x:s.x,y:t.y}]);candidates.push([{x:t.x,y:s.y}]);for(const y of outYs)candidates.push([{x:s.x,y},{x:t.x,y}]);for(const x of outXs)candidates.push([{x,y:s.y},{x,y:t.y}]);for(const y of outYs){for(const x of outXs){candidates.push([{x:s.x,y},{x,y},{x,y:t.y}]);candidates.push([{x,y:s.y},{x,y},{x:t.x,y}])}}let best=null;let bestScore=Infinity;let relaxed=null;let relaxedScore=Infinity;for(const mid of candidates){const pts=simplifyPoints([P1,s,...mid,t,P2]);if(pts.length\u003c2||!isOrthogonal(pts)||hasUTurn(pts))continue;const score=pathLength(pts)+countBends(pts)*gap;if(score\u003crelaxedScore){relaxed=pts;relaxedScore=score}let clean=true;for(let i=1;i\u003cpts.length\u0026\u0026clean;i++){if(segHitsRect(pts[i-1],pts[i],srcRect)||segHitsRect(pts[i-1],pts[i],tgtRect))clean=false}if(clean\u0026\u0026score\u003cbestScore){best=pts;bestScore=score}}if(best)return best;if(relaxed)return relaxed;return simplifyPoints([P1,s,{x:s.x,y:midY},{x:t.x,y:midY},t,P2])};const fmt=n=>{const r=Math.round(n*100)/100;return Object.is(r,-0)?`0`:String(r)};const buildRoundedPolyline=(points,radius)=>{const R=Math.max(0,num(radius,CORNER_RADIUS));const pts=simplifyPoints(points);if(pts.length===0)return``;if(pts.length===1)return`M ${fmt(pts[0].x)} ${fmt(pts[0].y)}`;let d=`M ${fmt(pts[0].x)} ${fmt(pts[0].y)}`;for(let i=1;i\u003cpts.length-1;i++){const a=pts[i-1];const b=pts[i];const c=pts[i+1];const ux=b.x-a.x;const uy=b.y-a.y;const vx=c.x-b.x;const vy=c.y-b.y;const lu=Math.hypot(ux,uy);const lv=Math.hypot(vx,vy);const cross=ux*vy-uy*vx;const dot=ux*vx+uy*vy;const r=Math.min(R,lu/2,lv/2);if(r\u003c=.01||Math.abs(cross)\u003cEPS){d+=` L ${fmt(b.x)} ${fmt(b.y)}`;continue}const inX=b.x-ux/lu*r;const inY=b.y-uy/lu*r;const outX=b.x+vx/lv*r;const outY=b.y+vy/lv*r;d+=` L ${fmt(inX)} ${fmt(inY)}`;if(Math.abs(dot)\u003cEPS){d+=` A ${fmt(r)} ${fmt(r)} 0 0 ${cross>0?1:0} ${fmt(outX)} ${fmt(outY)}`}else{d+=` Q ${fmt(b.x)} ${fmt(b.y)} ${fmt(outX)} ${fmt(outY)}`}}const last=pts[pts.length-1];d+=` L ${fmt(last.x)} ${fmt(last.y)}`;return d};const connectionEndpoints=(conn,positions)=>{const sourceId=conn\u0026\u0026conn.sourceId!=null?conn.sourceId:START_NODE_ID;const targetId=conn\u0026\u0026conn.targetId!=null?conn.targetId:``;const sourceStart=sourceId===START_NODE_ID;const targetStart=targetId===START_NODE_ID;const a1=DIRS[conn\u0026\u0026conn.sourceAnchor]?conn.sourceAnchor:`bottom`;const a2=DIRS[conn\u0026\u0026conn.targetAnchor]?conn.targetAnchor:`top`;return{p1:anchorPoint(sourceId,a1,positions,sourceStart),a1,p2:anchorPoint(targetId,a2,positions,targetStart),a2,sourceSize:nodeSize(sourceStart),targetSize:nodeSize(targetStart)}};const orthogonalizeThrough=(pts,verticalFirst)=>{const out=[];for(let i=0;i\u003cpts.length;i++){const p=pts[i];if(out.length){const q=out[out.length-1];if(Math.abs(q.x-p.x)>EPS\u0026\u0026Math.abs(q.y-p.y)>EPS){out.push(verticalFirst?{x:q.x,y:p.y}:{x:p.x,y:q.y})}}out.push(p)}return out};const connectionPoints=(conn,positions)=>{const e=connectionEndpoints(conn,positions);const wps=Array.isArray(conn\u0026\u0026conn.waypoints)?conn.waypoints.filter(w=>w\u0026\u0026isFiniteNum(w.x)\u0026\u0026isFiniteNum(w.y)).map(w=>({x:w.x,y:w.y})):[];if(wps.length){const d1=dirOf(e.a1);const d2=dirOf(e.a2);const s={x:e.p1.x+d1.x*ELBOW_GAP,y:e.p1.y+d1.y*ELBOW_GAP};const t={x:e.p2.x+d2.x*ELBOW_GAP,y:e.p2.y+d2.y*ELBOW_GAP};return simplifyPoints(orthogonalizeThrough([e.p1,s,...wps,t,e.p2],isVerticalAnchor(e.a1)))}return computeOrthogonalRoute(e.p1,e.a1,e.p2,e.a2,{sourceSize:e.sourceSize,targetSize:e.targetSize})};const buildConnectionPath=(conn,positions)=>buildRoundedPolyline(connectionPoints(conn,positions),CORNER_RADIUS);const pathMidpoint=points=>{const pts=simplifyPoints(points);if(!pts.length)return{x:0,y:0};const total=pathLength(pts);const half=total/2;let acc=0;for(let i=1;i\u003cpts.length;i++){const a=pts[i-1];const b=pts[i];const L=Math.abs(b.x-a.x)+Math.abs(b.y-a.y);if(acc+L>=half){const f=L>0?(half-acc)/L:0;return{x:a.x+(b.x-a.x)*f,y:a.y+(b.y-a.y)*f}}acc+=L}return{x:pts[pts.length-1].x,y:pts[pts.length-1].y}};const layoutCascade=(steps,opts)=>{const list=Array.isArray(steps)?steps:[];const axisX=snap(num(opts\u0026\u0026opts.axisX,LAYOUT_AXIS_X));const positions={};positions[START_NODE_ID]={x:snap(axisX-START_W/2),y:LAYOUT_TOP_Y};list.forEach((step,i)=>{const key=stepKeyOf(step);if(!key||key===START_NODE_ID)return;positions[key]={x:snap(axisX-NODE_W/2),y:snap(LAYOUT_FIRST_STEP_Y+i*ROW_GAP)}});return positions};const initialLayout=(steps,opts)=>layoutCascade(steps,opts);const autoLayout=(steps,opts)=>layoutCascade(steps,opts);const contentBounds=(positions,stepIds,opts)=>{const includeStart=!(opts\u0026\u0026opts.includeStart===false);const ids=Array.isArray(stepIds)?stepIds:Object.keys(positions||{}).filter(k=>k!==START_NODE_ID);const rects=[];if(includeStart)rects.push(nodeRect(START_NODE_ID,positions,true));for(const id of ids){if(id===START_NODE_ID||!hasPosition(id,positions))continue;rects.push(nodeRect(id,positions,false))}if(!rects.length)return null;let minX=Infinity;let minY=Infinity;let maxX=-Infinity;let maxY=-Infinity;for(const r of rects){minX=Math.min(minX,r.x);minY=Math.min(minY,r.y);maxX=Math.max(maxX,r.right);maxY=Math.max(maxY,r.bottom)}return{minX,minY,maxX,maxY,width:maxX-minX,height:maxY-minY,count:rects.length}};const fitToContent=(positions,stepIds,containerW,containerH)=>{const W=num(containerW,0);const H=num(containerH,0);const ids=(Array.isArray(stepIds)?stepIds:[]).filter(id=>id!==START_NODE_ID\u0026\u0026hasPosition(id,positions));if(!ids.length||W\u003c=0||H\u003c=0)return{...DEFAULT_VIEWPORT};const b=contentBounds(positions,ids);if(!b||!(b.width>0)||!(b.height>0))return{...DEFAULT_VIEWPORT};const availW=Math.max(1,W-2*FIT_PADDING);const availH=Math.max(1,H-2*FIT_PADDING);const zoom=clampZoom(Math.min(FIT_MAX_ZOOM,availW/b.width,availH/b.height));const x=(W-b.width*zoom)/2-b.minX*zoom;const y=(H-b.height*zoom)/2-b.minY*zoom;const out={x:round2(x),y:round2(y),zoom:round4(zoom)};if(!isFiniteNum(out.x)||!isFiniteNum(out.y)||!isFiniteNum(out.zoom))return{...DEFAULT_VIEWPORT};return out};const hitTestAnchor=(canvasPt,positions,stepIds,radius,opts)=>{const R=num(radius,ANCHOR_HIT_RADIUS);const px=num(canvasPt\u0026\u0026canvasPt.x,NaN);const py=num(canvasPt\u0026\u0026canvasPt.y,NaN);if(!isFiniteNum(px)||!isFiniteNum(py))return null;const exclude=opts\u0026\u0026opts.excludeNodeId;const includeStart=!!(opts\u0026\u0026opts.includeStart);const ids=(Array.isArray(stepIds)?stepIds:[]).filter(id=>id!==START_NODE_ID\u0026\u0026hasPosition(id,positions));let best=null;let bestD=R;const test=(nodeId,sides,isStart)=>{if(nodeId===exclude)return;for(const side of sides){const a=anchorPoint(nodeId,side,positions,isStart);const d=Math.hypot(a.x-px,a.y-py);if(d\u003c=bestD){bestD=d;best={nodeId,anchor:side,x:a.x,y:a.y,distance:d}}}};if(includeStart)test(START_NODE_ID,START_ANCHOR_SIDES,true);for(const id of ids)test(id,ANCHOR_SIDES,false);return best};const zoomAround=(viewport,factor,screenPt,svgRect)=>{const vp=normalizeViewport(viewport);const newZoom=clampZoom(vp.zoom*num(factor,1));const o=rectOrigin(svgRect);const sx=screenPt\u0026\u0026isFiniteNum(screenPt.x)?screenPt.x-o.left:num(svgRect\u0026\u0026svgRect.width,0)/2;const sy=screenPt\u0026\u0026isFiniteNum(screenPt.y)?screenPt.y-o.top:num(svgRect\u0026\u0026svgRect.height,0)/2;const cx=(sx-vp.x)/vp.zoom;const cy=(sy-vp.y)/vp.zoom;return{x:round2(sx-cx*newZoom),y:round2(sy-cy*newZoom),zoom:newZoom}};const zoomTo=(viewport,zoom,screenPt,svgRect)=>{const vp=normalizeViewport(viewport);return zoomAround(vp,clampZoom(zoom)/vp.zoom,screenPt,svgRect)};const zoomByStep=(viewport,direction,containerW,containerH)=>{const vp=normalizeViewport(viewport);const target=clampZoom(vp.zoom+(num(direction,1)\u003c0?-ZOOM_STEP:ZOOM_STEP));return zoomTo(vp,target,{x:num(containerW,0)/2,y:num(containerH,0)/2},{left:0,top:0})};const wheelZoomFactor=deltaY=>num(deltaY,0)\u003c0?1+ZOOM_STEP:1/(1+ZOOM_STEP);const minimapTransform=(positions,stepIds,w,h)=>{const W=Math.max(1,num(w,180));const H=Math.max(1,num(h,130));const pad=8;const b=contentBounds(positions,stepIds)||{minX:0,minY:0,maxX:NODE_W,maxY:NODE_H,width:NODE_W,height:NODE_H,count:0};const bw=Math.max(b.width,1);const bh=Math.max(b.height,1);const scale=Math.max(EPS,Math.min((W-2*pad)/bw,(H-2*pad)/bh));const offsetX=(W-bw*scale)/2-b.minX*scale;const offsetY=(H-bh*scale)/2-b.minY*scale;const toMini=(x,y)=>({x:num(x,0)*scale+offsetX,y:num(y,0)*scale+offsetY});const fromMini=(mx,my)=>({x:(num(mx,0)-offsetX)/scale,y:(num(my,0)-offsetY)/scale});return{width:W,height:H,scale,offsetX,offsetY,bounds:b,toMini,fromMini}};return{snap,screenToCanvas,canvasToScreen,ANCHOR_OFFSETS,anchorPoint,nodeRect,computeOrthogonalRoute,buildRoundedPolyline,buildConnectionPath,initialLayout,autoLayout,fitToContent,hitTestAnchor,clampZoom,zoomAround,minimapTransform,DEFAULT_VIEWPORT,DEFAULT_START_POSITION,ANCHOR_SIDES,START_ANCHOR_SIDES,START_ANCHOR_OFFSETS,anchorOffsets,nodeSize,stepKeyOf,normalizeViewport,visibleCanvasRect,centerViewportOn,contentBounds,connectionPoints,pathMidpoint,simplifyPoints,zoomTo,zoomByStep,wheelZoomFactor}};const makeUtils=deps=>{const{WB}=deps||{};const wb=WB||{};const SERVICE_REGISTRY=wb.SERVICE_REGISTRY||{};const STEP_TO_SERVICES=wb.WORKFLOW_STEP_TO_SERVICES||{};const COST_OVERRIDES=wb.STEP_COST_OVERRIDES||{};const HIDDEN_STEPS=Array.isArray(wb.HIDDEN_STEP_IDS)?wb.HIDDEN_STEP_IDS:[];const TEMPLATES=Array.isArray(wb.WORKFLOW_TEMPLATES)?wb.WORKFLOW_TEMPLATES:[];const START=wb.START_NODE_ID||`__start__`;const CATALOG=Array.isArray(wb.WORKFLOW_STEPS_OPTIONS)?wb.WORKFLOW_STEPS_OPTIONS:[];const GRADIENTS=wb.STEP_ICON_GRADIENTS||{};const PINNED=Array.isArray(wb.BOTTOM_PINNED_STEPS)?wb.BOTTOM_PINNED_STEPS:[];const COUPLED=wb.COUPLED_STEPS||{};const OVERRIDES=wb.COUPLED_PROPERTY_OVERRIDES||{};const SYSTEM=Array.isArray(wb.SYSTEM_STEPS)?wb.SYSTEM_STEPS:[];const REMOVED_GROUPS=Array.isArray(wb.REMOVED_PROPERTY_GROUPS)?wb.REMOVED_PROPERTY_GROUPS:[];const SERVICE_MAP=wb.WORKFLOW_STEP_TO_SERVICE_MAP||{};const FALLBACK_ICON=wb.ICONS\u0026\u0026wb.ICONS.fallback||`solar:widget-bold-duotone`;const FALLBACK_GRADIENT=`linear-gradient(135deg, #8E8E93, #AEAEB2)`;const IS_DEV=wb.IS_DEV===true;const CYCLE_WARNING=`Cycle detected`;const hasOwn=(obj,key)=>!!obj\u0026\u0026Object.prototype.hasOwnProperty.call(obj,key);const keyOf=step=>step\u0026\u0026(step.instanceId||step.id)||null;const idOf=stepOrId=>{if(typeof stepOrId===`string`)return stepOrId;return stepOrId\u0026\u0026stepOrId.id||null};const isPinnedId=id=>PINNED.includes(id);const round2=n=>Math.round(n*100)/100;const num=(v,fallback)=>typeof v===`number`\u0026\u0026Number.isFinite(v)?v:fallback===undefined?0:fallback;const slugify=s=>{const slug=String(s===undefined||s===null?``:s).toLowerCase().trim().replace(/[^a-z0-9]+/g,`-`).replace(/^-+|-+$/g,``);return slug||`item`};const arrayMove=(arr,from,to)=>{const out=arr.slice();const[item]=out.splice(from,1);out.splice(to,0,item);return out};const deepClone=value=>{if(value===undefined||value===null)return value;if(typeof value!==`object`)return value;try{return JSON.parse(JSON.stringify(value))}catch(e){return value}};const fCurrency=n=>{const value=typeof n===`string`\u0026\u0026n.trim()!==``?Number(n):n;if(typeof value!==`number`||!Number.isFinite(value))return`—`;const fixed=Math.abs(value).toFixed(2);const parts=fixed.split(`.`);const grouped=parts[0].replace(/\\B(?=(\\d{3})+(?!\\d))/g,`,`);return`${value\u003c0?`-`:``}$${grouped}.${parts[1]}`};const truncateMiddle=(s,n=18)=>{const str=s===undefined||s===null?``:String(s);if(n\u003c=0||str.length\u003c=n)return str;if(n\u003c=1)return`…`;const keep=n-1;const head=Math.ceil(keep/2);const tail=Math.floor(keep/2);return`${str.slice(0,head)}…${tail>0?str.slice(str.length-tail):``}`};const parseNodeDropId=raw=>{const str=raw===undefined||raw===null?``:String(raw);const idx=str.indexOf(`:`);if(idx>0){const kind=str.slice(0,idx);const id=str.slice(idx+1);if(kind===`palette`||kind===`chart`)return{kind,id}}return{kind:null,id:str}};const getStepById=id=>CATALOG.find(s=>s\u0026\u0026s.id===id)||null;const getStepIcon=id=>{const entry=getStepById(idOf(id));return entry\u0026\u0026entry.icon||FALLBACK_ICON};const getStepGradient=id=>GRADIENTS[idOf(id)]||FALLBACK_GRADIENT;const getStepDescription=id=>{const entry=getStepById(idOf(id));return entry\u0026\u0026entry.description||``};const isCoupledStep=id=>{const entry=getStepById(idOf(id));return!!(entry\u0026\u0026entry.coupled)};const getServiceCost=serviceId=>{const def=SERVICE_REGISTRY[serviceId];return def\u0026\u0026typeof def.defaultCost===`number`?def.defaultCost:0};const readProp=(step,groupId,propId)=>{const cfg=step\u0026\u0026step.config\u0026\u0026step.config[groupId];if(cfg\u0026\u0026cfg[propId]!==undefined)return cfg[propId];const group=groupsOfRaw(step).find(g=>g\u0026\u0026g.groupId===groupId);const prop=group\u0026\u0026Array.isArray(group.properties)?group.properties.find(p=>p\u0026\u0026p.id===propId):null;return prop?prop.value:undefined};const groupsOfRaw=step=>step\u0026\u0026Array.isArray(step.propertyGroups)?step.propertyGroups:[];const getBillableStepsFromWorkflow=workflow=>{const billable=[];const steps=(workflow\u0026\u0026Array.isArray(workflow.steps)?workflow.steps:[]).filter(Boolean);steps.forEach(step=>{switch(step.id){case`id-verification`:{billable.push(`idvVerification`);if(readProp(step,`id-scan-settings`,`require-secondary-id`))billable.push(`idvVerification`);if(readProp(step,`id-scan-settings`,`require-tertiary-id`))billable.push(`idvVerification`);break}case`face-liveness`:billable.push(`faceliveness`);break;case`age-estimation`:billable.push(`ageEstimation`);break;case`pep-sanctions`:billable.push(`pepSanctions`);break;case`adverse-media`:billable.push(`adverseMedia`);break;case`custom-form`:billable.push(`customForm`);break;case`credit-check`:{let inquiryType=step.config\u0026\u0026step.config[`credit-check-settings`]\u0026\u0026step.config[`credit-check-settings`][`credit-check-inquiry-type`];if(inquiryType===undefined){groupsOfRaw(step).some(g=>{const m=(g.properties||[]).find(p=>p\u0026\u0026p.id===`credit-check-inquiry-type`);if(m\u0026\u0026m.value!==undefined){inquiryType=m.value;return true}return false})}billable.push(inquiryType===`soft`?`creditCheckSoft`:`creditCheck`);break}case`title-search`:billable.push(`titleSearch`);break;case`phone-verification`:billable.push(`phoneVerification`);break;case`custom-prompt`:{const prompts=readProp(step,`custom-instructions`,`custom-prompts-list`);const n=Array.isArray(prompts)?prompts.length:0;for(let i=0;i\u003cn;i+=1)billable.push(`customPrompt`);break}case`document-upload`:{const docs=readProp(step,`document-upload-instructions`,`document-upload-list`);const n=Array.isArray(docs)?docs.length:docs\u0026\u0026typeof docs===`object`?Object.keys(docs).length:0;for(let i=0;i\u003cn;i+=1)billable.push(`documentUpload`);if(readProp(step,`document-analysis-settings`,`enable-document-risk-analysis`)===true)billable.push(`documentRiskAnalysis`);break}case`bank-statement-upload`:{billable.push(`bankStatementSync`);let types=step.config\u0026\u0026step.config[`analysis-types`];if(!types){const g=groupsOfRaw(step).find(x=>x\u0026\u0026x.groupId===`analysis-types`);if(g\u0026\u0026Array.isArray(g.properties)){types={};g.properties.forEach(p=>{types[p.id]=p.value})}}if(types)Object.values(types).forEach(v=>{if(v===true)billable.push(`bankStatementReport`)});break}case`ai-bank-statement-analysis`:billable.push(`aiBankStatementAnalysis`);break;default:{const defaults=STEP_TO_SERVICES[step.id];if(Array.isArray(defaults))billable.push(...defaults)}}});if(billable.includes(`bankStatementSync`)\u0026\u0026!billable.includes(`aiBankStatementAnalysis`))billable.push(`aiBankStatementAnalysis`);return billable};const calculateCostFromSteps=serviceIds=>serviceIds.reduce((sum,id)=>sum+getServiceCost(id),0);const resolveStepServices=(stepId,step)=>getBillableStepsFromWorkflow({steps:[{...step||{},id:stepId}]});const getStepCost=step=>{const id=idOf(step);if(!id)return null;if(isCoupledStep(id))return 0;if(COST_OVERRIDES[id]!==undefined)return COST_OVERRIDES[id];const src=step\u0026\u0026typeof step===`object`?step:getStepTemplate(id);return round2(calculateCostFromSteps(resolveStepServices(id,src)))};const getStepCostBreakdown=step=>{const id=idOf(step);if(isCoupledStep(id))return{total:0,covered:0,charged:0,partiallyCovered:false,coupled:true};const total=getStepCost(step)||0;return{total,covered:0,charged:total,partiallyCovered:false,coupled:false}};const getStepCostLabel=step=>{const id=idOf(step);if(isCoupledStep(id))return`Included`;const entry=getStepById(id)||(step\u0026\u0026typeof step===`object`?step:null);if(entry\u0026\u0026entry.costLabel)return entry.costLabel;const cost=getStepCost(step);return typeof cost===`number`?fCurrency(cost):`—`};const getStepTemplate=id=>{const entry=getStepById(idOf(id));if(!entry)return null;const template={...entry};if(Array.isArray(entry.propertyGroups))template.propertyGroups=deepClone(entry.propertyGroups);return template};const sanitizeStepForWorkflow=step=>{const src=typeof step===`string`?getStepTemplate(step):step;if(!src||!src.id)return null;const entry=getStepById(src.id);const out={id:src.id,label:src.label||entry\u0026\u0026entry.label||src.id,icon:src.icon||entry\u0026\u0026entry.icon||FALLBACK_ICON};if(Array.isArray(src.propertyGroups))out.propertyGroups=deepClone(src.propertyGroups);return out};let lastStamp=0;const makeInstanceId=id=>{let ts=Date.now();if(ts\u003c=lastStamp)ts=lastStamp+1;lastStamp=ts;return`${id}-${ts}`};const createStepInstance=stepId=>{const template=getStepTemplate(stepId);if(!template)return null;const sanitized=sanitizeStepForWorkflow(template);return{...sanitized,instanceId:makeInstanceId(template.id)}};const resolveService=service=>typeof service===`string`?getStepById(service):service||null;const isGatedStep=service=>{const entry=resolveService(service);if(!entry)return false;if(entry.gated)return true;if(entry.devOnly\u0026\u0026!IS_DEV)return true;return false};const isStepGated=(service,ctx)=>{const entry=resolveService(service);if(!entry)return false;if(isGatedStep(entry))return true;const context=ctx||{whiteLabelConfigured:false};if(entry.id===`white-label`\u0026\u0026!context.whiteLabelConfigured)return true;return false};const isWorkflowStepAvailable=(stepId,availableServices)=>{if(!availableServices||!availableServices.length)return true;const serviceType=SERVICE_MAP[stepId];if(!serviceType)return true;return availableServices.includes(serviceType)};const getAvailableServiceData=availableServices=>CATALOG.filter(s=>s\u0026\u0026!HIDDEN_STEPS.includes(s.id)\u0026\u0026!s.advancedOnly\u0026\u0026!isStepGated(s,{whiteLabelConfigured:false})\u0026\u0026isWorkflowStepAvailable(s.id,availableServices));const groupsOf=step=>step\u0026\u0026Array.isArray(step.propertyGroups)?step.propertyGroups:[];const propsOf=group=>group\u0026\u0026Array.isArray(group.properties)?group.properties:[];const flattenProps=step=>groupsOf(step).reduce((acc,g)=>acc.concat(propsOf(g)),[]);const findGroup=(step,groupId)=>groupsOf(step).find(g=>g\u0026\u0026g.groupId===groupId)||null;const findProp=(step,groupId,propId)=>{if(groupId){const group=findGroup(step,groupId);if(group)return propsOf(group).find(p=>p\u0026\u0026p.id===propId)||null}return flattenProps(step).find(p=>p\u0026\u0026p.id===propId)||null};const applyOverridesToStep=(step,overrides)=>{if(!overrides||!step||!Array.isArray(step.propertyGroups))return step;let changed=false;const propertyGroups=step.propertyGroups.map(g=>{if(!g)return g;const groupOverrides=overrides[g.groupId];if(!groupOverrides||!Array.isArray(g.properties))return g;let groupChanged=false;const properties=g.properties.map(p=>{if(!p||!hasOwn(groupOverrides,p.id))return p;const next=groupOverrides[p.id];if(JSON.stringify(p.value)===JSON.stringify(next))return p;groupChanged=true;return{...p,value:deepClone(next)}});if(!groupChanged)return g;changed=true;return{...g,properties}});return changed?{...step,propertyGroups}:step};const enforceCoupledOverridesOnSteps=steps=>{const list=Array.isArray(steps)?steps:[];let changed=false;const out=list.map(s=>{const overrides=s?OVERRIDES[s.id]:null;if(!overrides||!Object.keys(overrides).length)return s;const next=applyOverridesToStep(s,overrides);if(next!==s)changed=true;return next});return changed?out:list};const enforceBottomPinningOnSteps=steps=>{const list=Array.isArray(steps)?steps:[];const free=list.filter(s=>!isPinnedId(idOf(s)));const pinned=list.filter(s=>isPinnedId(idOf(s)));if(!pinned.length)return list;const out=free.concat(pinned);const same=out.length===list.length\u0026\u0026out.every((s,i)=>s===list[i]);return same?list:out};const pinnedFormSuffix=list=>{let seenPinned=false;for(let i=0;i\u003clist.length;i+=1){if(isPinnedId(idOf(list[i])))seenPinned=true;else if(seenPinned)return false}return true};const isReorderValidWithPinning=(steps,from,to)=>{const list=Array.isArray(steps)?steps:[];if(from===undefined\u0026\u0026to===undefined)return pinnedFormSuffix(list);if(!Number.isInteger(from)||!Number.isInteger(to))return false;if(from\u003c0||to\u003c0||from>=list.length||to>=list.length)return false;if(from===to)return true;return pinnedFormSuffix(arrayMove(list,from,to))};const applyCoupledSteps=(steps,newStep)=>{const list=(Array.isArray(steps)?steps:[]).filter(Boolean);if(!newStep||!newStep.id)return{steps:list,added:[]};const newKey=keyOf(newStep);const out=list.some(s=>keyOf(s)===newKey)?list.slice():list.concat([newStep]);const added=[];const queue=[newStep];const seen=new Set;while(queue.length){const current=queue.shift();if(seen.has(current.id))continue;seen.add(current.id);const partners=COUPLED[current.id]||[];partners.forEach(partnerId=>{if(out.some(s=>s.id===partnerId))return;const partner=createStepInstance(partnerId);if(!partner)return;const withOverrides=applyOverridesToStep(partner,OVERRIDES[current.id]\u0026\u0026OVERRIDES[current.id][partnerId]);const anchorIndex=out.findIndex(s=>keyOf(s)===keyOf(current));const isFollowUp=isCoupledStep(partnerId);let insertAt=out.length;if(anchorIndex>=0)insertAt=isFollowUp?anchorIndex+1:anchorIndex;out.splice(insertAt,0,withOverrides);added.push(withOverrides);queue.push(withOverrides)})}return{steps:out,added}};const getKeysToRemove=(stepKey,steps)=>{const list=(Array.isArray(steps)?steps:[]).filter(Boolean);const keys=new Set;const worklist=[];const seed=list.find(s=>keyOf(s)===stepKey);if(!seed)return new Set([stepKey]);keys.add(stepKey);worklist.push(seed);while(worklist.length>0){const cur=worklist.pop();const enqueue=next=>{const nextKey=keyOf(next);if(keys.has(nextKey))return;keys.add(nextKey);worklist.push(next)};(COUPLED[cur.id]||[]).forEach(partnerId=>{const isMutual=(COUPLED[partnerId]||[]).includes(cur.id);if(!isMutual)return;const partner=list.find(s=>s.id===partnerId);if(partner)enqueue(partner)});Object.keys(COUPLED).forEach(dependentId=>{if(!(COUPLED[dependentId]||[]).includes(cur.id))return;const dependent=list.find(s=>s.id===dependentId);if(dependent)enqueue(dependent)})}return keys};const removeWithCoupled=(steps,instanceId)=>{const list=(Array.isArray(steps)?steps:[]).filter(Boolean);const toRemove=getKeysToRemove(instanceId,list);return list.filter(s=>!toRemove.has(keyOf(s)))};const makeConnection=(sourceId,targetId,extra)=>({id:`conn-${sourceId}-${targetId}`,sourceId,sourceAnchor:`bottom`,targetId,targetAnchor:`top`,waypoints:[],label:``,...extra||{}});const rebuildChainWithPinning=steps=>{const ordered=enforceBottomPinningOnSteps((Array.isArray(steps)?steps:[]).filter(Boolean));const connections=[];let prev=START;ordered.forEach(s=>{const key=keyOf(s);if(!key)return;connections.push(makeConnection(prev,key));prev=key});return connections};const graphHasCycle=(nodeKeys,conns)=>{const adjacency=new Map;nodeKeys.forEach(k=>adjacency.set(k,[]));conns.forEach(c=>{if(adjacency.has(c.sourceId)\u0026\u0026adjacency.has(c.targetId))adjacency.get(c.sourceId).push(c.targetId)});const state=new Map;const visit=k=>{state.set(k,1);const nexts=adjacency.get(k)||[];for(let i=0;i\u003cnexts.length;i+=1){const n=nexts[i];const st=state.get(n)||0;if(st===1)return true;if(st===0\u0026\u0026visit(n))return true}state.set(k,2);return false};for(let i=0;i\u003cnodeKeys.length;i+=1){if((state.get(nodeKeys[i])||0)===0\u0026\u0026visit(nodeKeys[i]))return true}return false};const resolveStepOrderFromConnections=(steps,connections)=>{const list=(Array.isArray(steps)?steps:[]).filter(Boolean);const conns=(Array.isArray(connections)?connections:[]).filter(Boolean);const byKey=new Map;list.forEach(s=>byKey.set(keyOf(s),s));const warnings=[];const orderedSteps=[];const visited=new Set([START]);let cycle=false;let current=START;let guard=0;const limit=conns.length+list.length+2;while(guard\u003climit){guard+=1;const next=conns.find(c=>c.sourceId===current);if(!next)break;const target=next.targetId;if(visited.has(target)){cycle=true;break}const step=byKey.get(target);if(!step){warnings.push(`Connection ${next.id||``} points to a step that no longer exists`.replace(` `,` `));break}visited.add(target);orderedSteps.push(step);current=target}const allKeys=[START].concat(list.map(keyOf));if(!cycle\u0026\u0026graphHasCycle(allKeys,conns))cycle=true;if(cycle)warnings.unshift(CYCLE_WARNING);const unreachable=list.filter(s=>!visited.has(keyOf(s)));if(unreachable.length){const labels=unreachable.map(s=>s.label||(getStepById(s.id)||{}).label||s.id).join(`, `);warnings.push(unreachable.length===1?`${labels} is not connected to Start`:`${unreachable.length} steps are not connected to Start: ${labels}`)}return{orderedSteps,warnings}};const computeResolvedOrder=(steps,connections)=>{const{orderedSteps}=resolveStepOrderFromConnections(steps,connections);const order={};orderedSteps.forEach((s,i)=>{order[keyOf(s)]=i+1});return order};const removeStepsWithBridge=(steps,connections,instanceIds)=>{const idList=Array.isArray(instanceIds)?instanceIds:[instanceIds];const ids=new Set(idList.filter(Boolean));let conns=(Array.isArray(connections)?connections:[]).filter(Boolean).slice();ids.forEach(id=>{const incoming=conns.filter(c=>c.targetId===id);const outgoing=conns.filter(c=>c.sourceId===id);conns=conns.filter(c=>c.sourceId!==id\u0026\u0026c.targetId!==id);if(!incoming.length||!outgoing.length)return;const pred=incoming[0];const succ=outgoing[0];if(pred.sourceId===succ.targetId)return;if(ids.has(succ.targetId)\u0026\u0026ids.has(pred.sourceId))return;if(conns.some(c=>c.sourceId===pred.sourceId))return;if(conns.some(c=>c.targetId===succ.targetId))return;conns.push(makeConnection(pred.sourceId,succ.targetId,{sourceAnchor:pred.sourceAnchor||`bottom`,targetAnchor:succ.targetAnchor||`top`}))});const remaining=(Array.isArray(steps)?steps:[]).filter(s=>s\u0026\u0026!ids.has(keyOf(s)));return{steps:remaining,connections:conns}};const addConnectionIfLinear=(connections,conn)=>{const conns=(Array.isArray(connections)?connections:[]).filter(Boolean);if(!conn||!conn.sourceId||!conn.targetId)return null;if(conn.sourceId===conn.targetId)return null;if(conn.targetId===START)return null;if(conns.some(c=>c.sourceId===conn.sourceId))return null;if(conns.some(c=>c.targetId===conn.targetId))return null;const full=makeConnection(conn.sourceId,conn.targetId,{...conn,id:conn.id||`conn-${conn.sourceId}-${conn.targetId}`,sourceAnchor:conn.sourceAnchor||`bottom`,targetAnchor:conn.targetAnchor||`top`,waypoints:Array.isArray(conn.waypoints)?conn.waypoints:[],label:typeof conn.label===`string`?conn.label:``});if(conns.some(c=>c.id===full.id))return null;return conns.concat([full])};const computeWorkflowCost=steps=>round2(calculateCostFromSteps(getBillableStepsFromWorkflow({steps:(Array.isArray(steps)?steps:[]).filter(s=>s\u0026\u0026!SYSTEM.includes(s.id))})));const generateInitialCanvasData=steps=>{const nodePositions={[START]:{x:360,y:20}};const connections=[];steps.forEach((step,i)=>{const key=keyOf(step);nodePositions[key]={x:340,y:120+i*140};connections.push({id:`init-conn-${i}`,sourceId:i===0?START:keyOf(steps[i-1]),sourceAnchor:`bottom`,targetId:key,targetAnchor:`top`,waypoints:[],label:``})});return{connections,nodePositions,viewport:{x:0,y:0,zoom:1}}};const buildWorkflowFromTemplate=templateId=>{const template=TEMPLATES.find(t=>t.id===templateId);if(!template)return{name:``,steps:[]};const steps=(template.steps||[]).map(stepId=>getStepTemplate(stepId)).filter(Boolean).map(step=>({...sanitizeStepForWorkflow(step),instanceId:makeInstanceId(step.id)}));if(template.meta\u0026\u0026template.meta.requireSecondaryId){const idStep=steps.find(s=>s.id===`id-verification`);groupsOf(idStep).forEach(group=>{if(group.groupId!==`id-scan-settings`)return;propsOf(group).forEach(prop=>{if(prop.id===`require-secondary-id`)prop.value=true;if(prop.id===`require-front-only`)prop.value=false})})}const orderedSteps=enforceBottomPinningOnSteps(steps);return{name:template.label,steps:orderedSteps,canvasData:generateInitialCanvasData(orderedSteps)}};const patchCanvasDataForAppendedSteps=(canvasData,orderedSteps,autoAppendedSteps)=>{if(!Array.isArray(autoAppendedSteps)||!autoAppendedSteps.length)return canvasData;const safe=canvasData||{connections:[],nodePositions:{},viewport:{x:0,y:0,zoom:1}};const connections=[...safe.connections||[]];const nodePositions={...safe.nodePositions||{}};autoAppendedSteps.forEach(appended=>{const appendedKey=keyOf(appended);const idx=orderedSteps.findIndex(s=>keyOf(s)===appendedKey);const prev=idx>0?orderedSteps[idx-1]:null;const prevKey=prev?keyOf(prev):START;connections.push({id:`auto-conn-${appendedKey}`,sourceId:prevKey,sourceAnchor:`bottom`,targetId:appendedKey,targetAnchor:`top`,waypoints:[],label:``});const prevPos=nodePositions[prevKey];nodePositions[appendedKey]=prevPos?{x:prevPos.x,y:prevPos.y+140}:{x:340,y:300}});return{...safe,connections,nodePositions}};const collectPropValues=allProps=>{const map=new Map;if(!allProps)return map;if(Array.isArray(allProps)){allProps.forEach(item=>{if(!item)return;if(Array.isArray(item.properties)){item.properties.forEach(p=>{if(p\u0026\u0026p.id!==undefined)map.set(p.id,p.value)})}else if(item.id!==undefined){map.set(item.id,item.value)}});return map}if(typeof allProps===`object`){Object.keys(allProps).forEach(k=>{const v=allProps[k];const looksLikeProp=v\u0026\u0026typeof v===`object`\u0026\u0026!Array.isArray(v)\u0026\u0026hasOwn(v,`id`)\u0026\u0026hasOwn(v,`type`);map.set(k,looksLikeProp?v.value:v)})}return map};const isRequirementMet=(prop,allProps)=>{if(!prop)return true;const values=collectPropValues(allProps);const lookup=id=>({found:values.has(id),value:values.get(id)});const req=prop.requirement;if(req){if(typeof req===`string`){const r=lookup(req);if(r.found\u0026\u0026r.value!==true)return false}else if(typeof req===`object`\u0026\u0026req.id){const r=lookup(req.id);if(r.found){if(hasOwn(req,`equals`)\u0026\u0026r.value!==req.equals)return false;if(hasOwn(req,`notEquals`)\u0026\u0026r.value===req.notEquals)return false}}}const inv=prop.requirementInverse;if(inv){if(typeof inv===`string`){const r=lookup(inv);if(r.found\u0026\u0026r.value)return false}else if(typeof inv===`object`\u0026\u0026inv.id){const r=lookup(inv.id);if(r.found){if(hasOwn(inv,`equals`)\u0026\u0026r.value===inv.equals)return false;if(hasOwn(inv,`notEquals`)\u0026\u0026r.value!==inv.notEquals)return false}}}return true};const isParentToggleOn=(parentToggle,allProps)=>{if(!parentToggle)return true;const values=collectPropValues(allProps);if(!values.has(parentToggle))return true;return!!values.get(parentToggle)};const isBlank=v=>v===undefined||v===null||typeof v===`string`\u0026\u0026v.trim()===``||Array.isArray(v)\u0026\u0026v.length===0||typeof v===`object`\u0026\u0026!Array.isArray(v)\u0026\u0026Object.keys(v).length===0;const docListOf=value=>{if(Array.isArray(value))return value;if(value\u0026\u0026typeof value===`object`){const key=[`documents`,`items`,`rows`].find(k=>Array.isArray(value[k]));if(key)return value[key]}return[]};const docName=doc=>{if(!doc)return``;if(typeof doc===`string`)return doc;return doc.name||doc.label||doc.title||doc.id||``};const pagesOf=value=>{if(Array.isArray(value))return value;if(value\u0026\u0026typeof value===`object`\u0026\u0026Array.isArray(value.pages))return value.pages;return[]};const textListItems=value=>(Array.isArray(value)?value:[]).filter(item=>{if(item===undefined||item===null)return false;if(typeof item===`string`)return item.trim()!==``;return typeof item.text===`string`?item.text.trim()!==``:!isBlank(item)});const questionsOf=value=>{if(Array.isArray(value))return value;if(value\u0026\u0026typeof value===`object`\u0026\u0026Array.isArray(value.questions))return value.questions;return[]};const rulesOf=value=>{if(Array.isArray(value))return value;if(value\u0026\u0026typeof value===`object`\u0026\u0026Array.isArray(value.rules))return value.rules;return[]};const selectedCount=value=>{if(Array.isArray(value)){const flagKeys=[`selected`,`enabled`,`checked`,`active`];const rows=value.filter(v=>v\u0026\u0026typeof v===`object`);if(rows.length\u0026\u0026rows.length===value.length){const flagged=rows.filter(row=>flagKeys.some(k=>hasOwn(row,k)));if(flagged.length)return flagged.filter(row=>flagKeys.some(k=>row[k]===true)).length;return rows.length}return value.filter(v=>v!==undefined\u0026\u0026v!==null\u0026\u0026v!==false\u0026\u0026v!==``).length}if(value\u0026\u0026typeof value===`object`)return Object.keys(value).filter(k=>!!value[k]).length;if(typeof value===`string`)return value.trim()?1:0;return 0};const isEffectivelyEmpty=prop=>{const value=prop.value;switch(prop.type){case`text-list`:return textListItems(value).length===0;case`object`:return pagesOf(value).reduce((n,page)=>n+(page\u0026\u0026Array.isArray(page.fields)\u0026\u0026page.fields.length||0),0)===0;case`doc-upload`:return docListOf(value).filter(d=>docName(d).trim()!==``).length===0;case`proofcall-questions`:return textListItems(questionsOf(value)).length===0;case`data-extraction`:return rulesOf(value).length===0;case`multiselect-table`:case`country-multiselect`:case`country-customize`:case`jurisdiction-picker`:case`education-institution-picker`:return selectedCount(value)===0;case`boolean`:return value!==true;default:return isBlank(value)}};const stepDisplayLabel=step=>step.label||(getStepById(step.id)||{}).label||step.id;const stepValidation=workflow=>{const errors=[];const wf=workflow||{};const steps=(Array.isArray(wf.steps)?wf.steps:[]).filter(s=>s\u0026\u0026s.id\u0026\u0026!SYSTEM.includes(s.id));if(!wf.name||!String(wf.name).trim())errors.push(`Workflow name is required`);if(!steps.length)errors.push(`Add at least one step to the workflow`);steps.forEach(step=>{const label=stepDisplayLabel(step);const all=flattenProps(step);if(step.id===`id-verification`){const group=findGroup(step,`document-types`);if(group){const anyDoc=propsOf(group).some(p=>p\u0026\u0026p.type===`boolean`\u0026\u0026p.value===true);if(!anyDoc)errors.push(`${label}: select at least one document type`)}}if(step.id===`crypto-wallet-screening`){const networks=findProp(step,`networks`,`networks`);if(networks\u0026\u0026selectedCount(networks.value)===0)errors.push(`${label}: select at least one network`);const categories=findProp(step,`risk`,`categories`);if(categories\u0026\u0026selectedCount(categories.value)===0)errors.push(`${label}: select at least one risk category`)}if(step.id===`e-signature`){const template=findProp(step,`template`,`template-id`);if(template\u0026\u0026isBlank(template.value))errors.push(`${label}: choose an e-signature template`)}groupsOf(step).forEach(group=>{if(!group||REMOVED_GROUPS.includes(group.groupId))return;if(!isParentToggleOn(group.parentToggle,all))return;propsOf(group).forEach(prop=>{if(!prop||prop.type===`hidden`)return;if(prop.locked||prop.disabled)return;if(!isRequirementMet(prop,all))return;const propLabel=prop.label||prop.id;if(prop.required\u0026\u0026isEffectivelyEmpty(prop)){errors.push(`${label}: ${propLabel} is required`)}if(prop.type===`data-extraction`){rulesOf(prop.value).forEach((rule,i)=>{const r=rule||{};const doc=r.document||r.documentId||r.documentSlug||r.documentName||r.doc;const fields=r.fields||r.params||r.parameters||r.extract;if(isBlank(doc))errors.push(`${label}: extraction rule ${i+1} needs a document`);if(selectedCount(fields)===0)errors.push(`${label}: extraction rule ${i+1} needs at least one field`)})}})})});return errors};const keyDocuments=docs=>{const out={};docs.forEach((doc,i)=>{if(doc===undefined||doc===null)return;const d=typeof doc===`string`?{name:doc}:doc;const base=slugify(d.slug||d.id||d.name||d.label||d.title||`document-${i+1}`);let key=base;let n=2;while(hasOwn(out,key)){key=`${base}-${n}`;n+=1}out[key]={...d}});return out};const transformDocUpload=value=>{if(Array.isArray(value))return keyDocuments(value);if(value\u0026\u0026typeof value===`object`){const listKey=[`documents`,`items`,`rows`].find(k=>Array.isArray(value[k]));if(listKey)return{...value,[listKey]:keyDocuments(value[listKey])}}return value};const transformPropertyValue=prop=>{const value=prop.value;switch(prop.type){case`range`:{if(Array.isArray(value))return{lower:value[0],upper:value[1]};if(value\u0026\u0026typeof value===`object`)return{lower:value.lower,upper:value.upper};return value}case`doc-upload`:return transformDocUpload(value);case`proofcall-questions`:{const questions=questionsOf(value).map(q=>typeof q===`string`?{text:q}:q);const meta=value\u0026\u0026!Array.isArray(value)\u0026\u0026typeof value===`object`?value:{};const perQuestion=num(meta.minutesPerQuestion,1)||1;return{...meta,questions,estimatedMinutes:questions.length*perQuestion}}case`object`:{if(Array.isArray(value))return{pages:value};if(value\u0026\u0026typeof value===`object`)return{...value,pages:Array.isArray(value.pages)?value.pages:[]};return{pages:[]}}default:return value}};const serializeWorkflowForSave=steps=>(Array.isArray(steps)?steps:[]).filter(s=>s\u0026\u0026s.id\u0026\u0026!SYSTEM.includes(s.id)).map(s=>{const config={};groupsOf(s).forEach(g=>{if(!g||!g.groupId||REMOVED_GROUPS.includes(g.groupId))return;const groupConfig={};propsOf(g).forEach(p=>{if(!p||!p.id||p.type===`weight-display`)return;const v=transformPropertyValue(p);if(v!==undefined)groupConfig[p.id]=deepClone(v)});config[g.groupId]=groupConfig});return{id:s.id,instanceId:keyOf(s),config}});const serializeCanvasData=canvasData=>{const cd=canvasData||{};const connections=(Array.isArray(cd.connections)?cd.connections:[]).filter(Boolean).map(c=>({id:c.id||`conn-${c.sourceId}-${c.targetId}`,sourceId:c.sourceId,sourceAnchor:c.sourceAnchor||`bottom`,targetId:c.targetId,targetAnchor:c.targetAnchor||`top`,waypoints:(Array.isArray(c.waypoints)?c.waypoints:[]).filter(Boolean).map(w=>({x:Math.round(num(w.x)),y:Math.round(num(w.y))})),label:typeof c.label===`string`?c.label:``}));const nodePositions={};const positions=cd.nodePositions||{};Object.keys(positions).forEach(k=>{const p=positions[k];if(!p)return;nodePositions[k]={x:Math.round(num(p.x)),y:Math.round(num(p.y))}});const vp=cd.viewport||{};const zoom=num(vp.zoom,1);return{connections,nodePositions,viewport:{x:round2(num(vp.x)),y:round2(num(vp.y)),zoom:zoom>0?round2(zoom):1}}};const buildSavePayload=args=>{const{workflow,orderedSteps,organizationId,createdBy}=args||{};const wf=workflow||{};const all=(Array.isArray(wf.steps)?wf.steps:[]).filter(Boolean);let stepsForSave=all;if(Array.isArray(orderedSteps)\u0026\u0026orderedSteps.length){const seen=new Set(orderedSteps.map(keyOf));stepsForSave=orderedSteps.concat(all.filter(s=>!seen.has(keyOf(s))))}return{organizationId:organizationId===undefined?null:organizationId,createdBy:createdBy===undefined?null:createdBy,name:String(wf.name||``).trim(),steps:serializeWorkflowForSave(stepsForSave),canvasData:serializeCanvasData(wf.canvasData),status:`active`}};const normalizeStepKey=stepKey=>stepKey\u0026\u0026typeof stepKey===`object`?keyOf(stepKey):stepKey;const updatePropertyValuesInSteps=(steps,stepKey,groupId,values)=>{const list=Array.isArray(steps)?steps:[];const key=normalizeStepKey(stepKey);if(!key||!values||typeof values!==`object`)return list;let changed=false;const out=list.map(s=>{if(!s||keyOf(s)!==key||!Array.isArray(s.propertyGroups))return s;let stepChanged=false;const propertyGroups=s.propertyGroups.map(g=>{if(!g||g.groupId!==groupId||!Array.isArray(g.properties))return g;let groupChanged=false;const properties=g.properties.map(p=>{if(!p||!hasOwn(values,p.id))return p;groupChanged=true;return{...p,value:values[p.id]}});if(!groupChanged)return g;stepChanged=true;return{...g,properties}});if(!stepChanged)return s;changed=true;return{...s,propertyGroups}});return changed?out:list};const updatePropertyValueInSteps=(steps,stepKey,groupId,propId,value)=>updatePropertyValuesInSteps(steps,stepKey,groupId,{[propId]:value});const redistributeWeights=(weights,changedId,value)=>{const clamp5=v=>Math.max(0,Math.min(100,Math.round((Number(v)||0)/5)*5));const changed=clamp5(value);const result={[changedId]:changed};const others=weights.filter(w=>w.id!==changedId);if(!others.length)return result;const remaining=100-changed;const sumOthers=others.reduce((s,w)=>s+(Number(w.value)||0),0);const allocated=others.map(w=>sumOthers>0?(Number(w.value)||0)/sumOthers*remaining:remaining/others.length);const rounded=allocated.map(clamp5);let drift=remaining-rounded.reduce((s,v)=>s+v,0);let guard=0;while(drift!==0\u0026\u0026guard\u003c100){guard+=1;const order=allocated.map((a,i)=>i).sort((a,b)=>allocated[b]-allocated[a]);let applied=false;for(let j=0;j\u003corder.length;j+=1){const i=order[j];const delta=drift>0?5:-5;const next=rounded[i]+delta;if(next>=0\u0026\u0026next\u003c=100){rounded[i]=next;drift-=delta;applied=true;break}}if(!applied)break}others.forEach((w,i)=>{result[w.id]=rounded[i]});return result};const updateLinkedWeightsInSteps=(steps,stepKey,groupId,changedId,value)=>{const list=Array.isArray(steps)?steps:[];const key=normalizeStepKey(stepKey);const step=list.find(s=>s\u0026\u0026keyOf(s)===key);if(!step)return list;const group=findGroup(step,groupId);if(!group)return list;const changedProp=propsOf(group).find(p=>p\u0026\u0026p.id===changedId);if(!changedProp)return list;const linkedGroup=changedProp.linkedGroup;const siblings=propsOf(group).filter(p=>p\u0026\u0026(linkedGroup?p.linkedGroup===linkedGroup:p.type===`slider`));if(siblings.length\u003c2)return updatePropertyValueInSteps(list,key,groupId,changedId,value);const next=redistributeWeights(siblings.map(p=>({id:p.id,value:p.value})),changedId,value);return updatePropertyValuesInSteps(list,key,groupId,next)};return{getStepById,getStepIcon,getStepGradient,getStepDescription,getStepCost,getStepCostBreakdown,getStepCostLabel,getServiceCost,getBillableStepsFromWorkflow,buildWorkflowFromTemplate,generateInitialCanvasData,patchCanvasDataForAppendedSteps,isCoupledStep,getStepTemplate,sanitizeStepForWorkflow,makeInstanceId,isGatedStep,isStepGated,isWorkflowStepAvailable,getAvailableServiceData,applyCoupledSteps,removeWithCoupled,getKeysToRemove,enforceBottomPinningOnSteps,enforceCoupledOverridesOnSteps,isReorderValidWithPinning,rebuildChainWithPinning,resolveStepOrderFromConnections,computeResolvedOrder,removeStepsWithBridge,addConnectionIfLinear,computeWorkflowCost,fCurrency,truncateMiddle,deepClone,parseNodeDropId,isRequirementMet,stepValidation,serializeWorkflowForSave,serializeCanvasData,buildSavePayload,updatePropertyValueInSteps,updatePropertyValuesInSteps,updateLinkedWeightsInSteps,arrayMove,applyOverridesToStep,keyOf,round2}};const makeUi=()=>{const _components={a:`a`,..._provideComponents()},{Icon}=_components;if(!Icon)_missingMdxReference(`Icon`,true);const noop=()=>{};const cx=(...parts)=>parts.filter(Boolean).join(` `);const clampNum=(n,lo,hi)=>Number.isNaN(n)?lo:Math.min(hi,Math.max(lo,n));const isEl=x=>React.isValidElement(x);const NAMED_COLORS={primary:`#1E7FE0`,secondary:`#8E33FF`,success:`#22C55E`,warning:`#FFAB00`,error:`#FF5630`,info:`#00B8D9`,default:`#637381`,grey:`#637381`,inherit:`#637381`};const toHex=c=>c\u0026\u0026NAMED_COLORS[c]||c||NAMED_COLORS.default;const hexToRgba=(hex,a)=>{const h=String(hex||``).replace(`#`,``);if(!/^[0-9a-fA-F]{3}([0-9a-fA-F]{3})?$/.test(h))return`rgba(99,115,129,${a})`;const full=h.length===3?h.split(``).map(ch=>ch+ch).join(``):h;const n=parseInt(full,16);return`rgba(${n>>16\u0026255},${n>>8\u0026255},${n\u0026255},${a})`};const flagEmoji=code=>{if(!code||typeof code!==`string`)return``;if(!/^[A-Za-z]{2}$/.test(code))return code;const up=code.toUpperCase();return String.fromCodePoint(...[...up].map(ch=>127397+ch.charCodeAt(0)))};const fmtCost=cost=>{if(cost==null||cost===``)return``;if(typeof cost===`number`)return cost===0?`free`:`$${cost.toFixed(2)}`;return String(cost)};const UI_CSS=`\n:where(:root){--wb-primary:#1E7FE0;--wb-primary-light:#22B8F0;--wb-primary-dark:#1456A0;--wb-primary-soft:rgba(30,127,224,.12);--wb-paper:#ffffff;--wb-bg:#F9FAFB;--wb-text:#1C252E;--wb-text-2:#637381;--wb-text-3:#919EAB;--wb-divider:rgba(145,158,171,.2);--wb-outline:rgba(145,158,171,.32);--wb-hover:rgba(145,158,171,.08);--wb-track:rgba(145,158,171,.32);--wb-success:#22C55E;--wb-warning:#FFAB00;--wb-error:#FF5630;--wb-info:#00B8D9;--wb-shadow:0 8px 24px rgba(145,158,171,.24);--wb-shadow-lg:0 24px 48px rgba(22,28,36,.24);--wb-backdrop:rgba(22,28,36,.48)}\n:where(html.dark){--wb-paper:#1C252E;--wb-bg:#141A21;--wb-text:#FFFFFF;--wb-text-2:#919EAB;--wb-text-3:#637381;--wb-divider:rgba(145,158,171,.24);--wb-outline:rgba(145,158,171,.36);--wb-hover:rgba(145,158,171,.12);--wb-track:rgba(145,158,171,.4);--wb-shadow:0 8px 24px rgba(0,0,0,.4);--wb-shadow-lg:0 24px 48px rgba(0,0,0,.6);--wb-backdrop:rgba(0,0,0,.6)}\n:where(.wb-icon){display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;line-height:0}\n:where(.wb-icon svg){display:block}\n:where(.wb-btn){display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:8px;font:inherit;font-weight:700;font-size:14px;line-height:1;height:36px;padding:0 16px;cursor:pointer;white-space:nowrap;text-decoration:none;transition:background .15s,box-shadow .15s,color .15s,border-color .15s,filter .15s;user-select:none;-webkit-tap-highlight-color:transparent;color:var(--wb-text);background:transparent;box-sizing:border-box;margin:0}\n:where(.wb-btn-small){height:30px;padding:0 10px;font-size:13px;border-radius:6px;gap:6px}\n:where(.wb-btn-large){height:44px;padding:0 22px;font-size:15px}\n:where(.wb-btn-full){width:100%}\n:where(.wb-btn:disabled,.wb-btn[aria-disabled=\"true\"]){cursor:not-allowed;opacity:.48;box-shadow:none;pointer-events:none}\n:where(.wb-btn:focus-visible){outline:2px solid var(--wb-primary);outline-offset:2px}\n:where(.wb-btn-contained.wb-btn-primary){background:linear-gradient(135deg,var(--wb-primary),var(--wb-primary-light));color:#fff;box-shadow:0 8px 16px var(--wb-primary-soft)}\n:where(.wb-btn-contained.wb-btn-primary:hover){filter:brightness(1.07)}\n:where(.wb-btn-contained.wb-btn-inherit){background:var(--wb-text);color:var(--wb-paper)}\n:where(.wb-btn-contained.wb-btn-inherit:hover){filter:brightness(1.15)}\n:where(.wb-btn-contained.wb-btn-error){background:var(--wb-error);color:#fff}\n:where(.wb-btn-contained.wb-btn-error:hover){filter:brightness(1.07)}\n:where(.wb-btn-outlined.wb-btn-primary){border-color:rgba(30,127,224,.48);color:var(--wb-primary)}\n:where(.wb-btn-outlined.wb-btn-primary:hover){background:var(--wb-primary-soft);border-color:var(--wb-primary)}\n:where(.wb-btn-outlined.wb-btn-inherit){border-color:var(--wb-outline);color:var(--wb-text)}\n:where(.wb-btn-outlined.wb-btn-inherit:hover){background:var(--wb-hover);border-color:var(--wb-text)}\n:where(.wb-btn-outlined.wb-btn-error){border-color:rgba(255,86,48,.48);color:var(--wb-error)}\n:where(.wb-btn-outlined.wb-btn-error:hover){background:rgba(255,86,48,.08);border-color:var(--wb-error)}\n:where(.wb-btn-text.wb-btn-primary){color:var(--wb-primary)}\n:where(.wb-btn-text.wb-btn-primary:hover){background:var(--wb-primary-soft)}\n:where(.wb-btn-text.wb-btn-inherit){color:var(--wb-text)}\n:where(.wb-btn-text.wb-btn-inherit:hover){background:var(--wb-hover)}\n:where(.wb-btn-text.wb-btn-error){color:var(--wb-error)}\n:where(.wb-btn-text.wb-btn-error:hover){background:rgba(255,86,48,.08)}\n:where(.wb-btn-soft.wb-btn-primary){background:var(--wb-primary-soft);color:var(--wb-primary-dark)}\n:where(.wb-btn-soft.wb-btn-primary:hover){background:rgba(30,127,224,.2)}\n:where(.wb-btn-soft.wb-btn-inherit){background:var(--wb-hover);color:var(--wb-text)}\n:where(.wb-btn-soft.wb-btn-error){background:rgba(255,86,48,.12);color:var(--wb-error)}\n:where(html.dark .wb-btn-soft.wb-btn-primary){color:#8FC6FF}\n:where(.wb-btn-icon){display:inline-flex;line-height:0}\n:where(.wb-iconbtn){display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:50%;border:0;background:transparent;color:var(--wb-text-2);cursor:pointer;padding:0;flex-shrink:0;transition:background .15s,color .15s;-webkit-tap-highlight-color:transparent;margin:0;font:inherit}\n:where(.wb-iconbtn-lg){width:36px;height:36px}\n:where(.wb-iconbtn:hover){background:var(--wb-hover);color:var(--wb-text)}\n:where(.wb-iconbtn-active){background:var(--wb-primary-soft);color:var(--wb-primary)}\n:where(.wb-iconbtn-active:hover){background:var(--wb-primary-soft);color:var(--wb-primary)}\n:where(.wb-iconbtn-outlined){border:1px solid var(--wb-outline);border-radius:8px}\n:where(.wb-iconbtn-primary){color:var(--wb-primary)}\n:where(.wb-iconbtn-error:hover){background:rgba(255,86,48,.1);color:var(--wb-error)}\n:where(.wb-iconbtn:disabled){opacity:.4;cursor:not-allowed}\n:where(.wb-iconbtn:focus-visible){outline:2px solid var(--wb-primary);outline-offset:1px}\n:where(.wb-textfield,.wb-select){display:inline-flex;flex-direction:column;gap:6px;min-width:0;vertical-align:top;text-align:left}\n:where(.wb-textfield-full,.wb-select-full){display:flex;width:100%}\n:where(.wb-field-label){font-size:12px;font-weight:600;color:var(--wb-text-2);line-height:1.4}\n:where(.wb-required){color:var(--wb-error)}\n:where(.wb-input-wrap,.wb-select-wrap){position:relative;display:flex;align-items:center;width:100%}\n:where(.wb-input,.wb-select-input){font:inherit;font-size:14px;line-height:1.4;color:var(--wb-text);background:var(--wb-paper);border:1px solid var(--wb-outline);border-radius:8px;padding:0 12px;height:36px;width:100%;min-width:0;outline:none;transition:border-color .15s,box-shadow .15s;box-sizing:border-box;margin:0}\n:where(.wb-textfield-medium .wb-input,.wb-select-medium .wb-select-input){height:44px;font-size:15px}\n:where(.wb-textarea){height:auto;min-height:72px;padding:8px 12px;resize:vertical;line-height:1.5}\n:where(.wb-input:hover,.wb-select-input:hover){border-color:var(--wb-text)}\n:where(.wb-input:focus,.wb-select-input:focus){border-color:var(--wb-primary);box-shadow:0 0 0 3px var(--wb-primary-soft)}\n:where(.wb-input::placeholder){color:var(--wb-text-3);opacity:1}\n:where(.wb-input:disabled,.wb-select-input:disabled){color:var(--wb-text-3);cursor:not-allowed;background:var(--wb-hover)}\n:where(.wb-input-error){border-color:var(--wb-error)}\n:where(.wb-input-error:focus){border-color:var(--wb-error);box-shadow:0 0 0 3px rgba(255,86,48,.16)}\n:where(.wb-input-has-icon){padding-left:36px}\n:where(.wb-input-has-end){padding-right:40px}\n:where(.wb-input-icon){position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--wb-text-3);display:inline-flex;pointer-events:none;line-height:0}\n:where(.wb-input-end){position:absolute;right:8px;top:50%;transform:translateY(-50%);display:inline-flex;align-items:center;color:var(--wb-text-2)}\n:where(.wb-helper){font-size:12px;color:var(--wb-text-2);line-height:1.4}\n:where(.wb-helper-error){color:var(--wb-error)}\n:where(.wb-select-input){appearance:none;-webkit-appearance:none;padding-right:32px;cursor:pointer}\n:where(.wb-select-input:disabled){cursor:not-allowed}\n:where(.wb-select-input option){color:#1C252E;background:#fff}\n:where(.wb-select-chevron){position:absolute;right:10px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--wb-text-2);display:inline-flex;line-height:0}\n:where(.wb-switch-row){display:flex;align-items:center;justify-content:space-between;gap:12px;cursor:pointer;min-height:24px;padding:4px 0;-webkit-tap-highlight-color:transparent}\n:where(.wb-switch-row-end){justify-content:flex-start}\n:where(.wb-switch-row.wb-disabled){cursor:not-allowed}\n:where(.wb-switch-text){display:flex;flex-direction:column;min-width:0;gap:2px}\n:where(.wb-switch-label){font-size:14px;font-weight:500;color:var(--wb-text);line-height:1.4}\n:where(.wb-switch-sublabel){font-size:12px;color:var(--wb-text-2);line-height:1.4}\n:where(.wb-switch){position:relative;display:inline-flex;flex-shrink:0;width:34px;height:20px}\n:where(.wb-switch-input){position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer;z-index:1}\n:where(.wb-switch-input:disabled){cursor:not-allowed}\n:where(.wb-switch-track){position:absolute;inset:0;border-radius:10px;background:var(--wb-track);transition:background .2s}\n:where(.wb-switch-thumb){position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.3);transition:transform .2s}\n:where(.wb-switch-input:checked + .wb-switch-track){background:var(--wb-primary)}\n:where(.wb-switch-input:checked + .wb-switch-track .wb-switch-thumb){transform:translateX(14px)}\n:where(.wb-switch-input:focus-visible + .wb-switch-track){box-shadow:0 0 0 3px var(--wb-primary-soft)}\n:where(.wb-switch-input:disabled + .wb-switch-track){opacity:.5}\n:where(.wb-slider){display:flex;flex-direction:column;gap:2px;width:100%;min-width:0}\n:where(.wb-slider-head){display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;color:var(--wb-text-2)}\n:where(.wb-slider-value){font-size:12px;font-weight:700;color:var(--wb-text);background:var(--wb-hover);border-radius:6px;padding:2px 8px;font-variant-numeric:tabular-nums}\n:where(.wb-slider-input){-webkit-appearance:none;appearance:none;width:100%;height:24px;background:transparent;margin:0;cursor:pointer;display:block;padding:0}\n:where(.wb-slider-input:disabled){cursor:not-allowed;opacity:.6}\n:where(.wb-slider-input:focus){outline:none}\n:where(.wb-slider-input)::-webkit-slider-runnable-track{height:4px;border-radius:2px;background:linear-gradient(to right,var(--wb-primary) var(--wb-fill,0%),var(--wb-track) var(--wb-fill,0%))}\n:where(.wb-slider-input)::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;background:var(--wb-primary);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.28);margin-top:-6px;transition:box-shadow .15s}\n:where(.wb-slider-input:focus-visible)::-webkit-slider-thumb{box-shadow:0 0 0 4px var(--wb-primary-soft)}\n:where(.wb-slider-input)::-moz-range-track{height:4px;border-radius:2px;background:var(--wb-track)}\n:where(.wb-slider-input)::-moz-range-progress{height:4px;border-radius:2px;background:var(--wb-primary)}\n:where(.wb-slider-input)::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--wb-primary);border:2px solid #fff;box-shadow:0 1px 4px rgba(0,0,0,.28)}\n:where(.wb-slider-marks){position:relative;height:16px;margin:0 8px;font-size:11px;color:var(--wb-text-3)}\n:where(.wb-slider-mark){position:absolute;top:0;transform:translateX(-50%);white-space:nowrap;line-height:1.2}\n:where(.wb-slider-mark::before){content:\"\";position:absolute;top:-8px;left:50%;width:2px;height:2px;border-radius:50%;background:var(--wb-text-3);transform:translateX(-50%)}\n:where(.wb-range){display:flex;flex-direction:column;gap:8px;width:100%}\n:where(.wb-range-track){position:relative;height:28px;display:flex;align-items:center}\n:where(.wb-range-rail){position:absolute;left:8px;right:8px;height:6px;border-radius:3px;top:50%;transform:translateY(-50%)}\n:where(.wb-range-input){-webkit-appearance:none;appearance:none;position:absolute;inset:0;width:100%;height:100%;margin:0;padding:0;background:transparent;pointer-events:none;outline:none}\n:where(.wb-range-input)::-webkit-slider-runnable-track{height:6px;background:transparent;border:0}\n:where(.wb-range-input)::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;pointer-events:auto;width:18px;height:18px;border-radius:50%;background:#fff;border:2px solid var(--wb-text);box-shadow:0 1px 4px rgba(0,0,0,.3);margin-top:-6px;cursor:grab}\n:where(.wb-range-input:focus-visible)::-webkit-slider-thumb{box-shadow:0 0 0 4px var(--wb-primary-soft)}\n:where(.wb-range-input)::-moz-range-track{height:6px;background:transparent;border:0}\n:where(.wb-range-input)::-moz-range-thumb{pointer-events:auto;width:18px;height:18px;border-radius:50%;background:#fff;border:2px solid var(--wb-text);box-shadow:0 1px 4px rgba(0,0,0,.3);cursor:grab}\n:where(.wb-range-input:disabled)::-webkit-slider-thumb{cursor:not-allowed}\n:where(.wb-range-chips){display:flex;gap:6px;flex-wrap:wrap}\n:where(.wb-chip){display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 8px;border-radius:8px;font-size:12px;font-weight:600;line-height:1;white-space:nowrap;border:1px solid transparent;box-sizing:border-box;max-width:100%;color:var(--wb-chip-c,var(--wb-text))}\n:where(.wb-chip-medium){height:32px;padding:0 12px;font-size:13px;border-radius:16px}\n:where(.wb-chip-label){overflow:hidden;text-overflow:ellipsis}\n:where(.wb-chip-soft){background:var(--wb-chip-bg,var(--wb-hover));color:var(--wb-chip-c,var(--wb-text));color:color-mix(in srgb,var(--wb-chip-c,var(--wb-text)) 78%,#000)}\n:where(html.dark .wb-chip-soft){color:color-mix(in srgb,var(--wb-chip-c,var(--wb-text)) 82%,#fff)}\n:where(.wb-chip-outlined){border-color:var(--wb-chip-c,var(--wb-outline));background:transparent}\n:where(.wb-chip-filled){background:var(--wb-chip-c,var(--wb-text-2));color:#fff}\n:where(.wb-chip-clickable){cursor:pointer;-webkit-tap-highlight-color:transparent}\n:where(.wb-chip-clickable:hover){filter:brightness(.96)}\n:where(.wb-chip-delete){display:inline-flex;border:0;background:transparent;padding:0;margin:0 -2px 0 0;cursor:pointer;color:inherit;opacity:.7;line-height:0}\n:where(.wb-chip-delete:hover){opacity:1}\n:where(.wb-alert){display:flex;gap:12px;align-items:flex-start;padding:12px 16px;border-radius:8px;font-size:13px;line-height:1.5;color:var(--wb-text)}\n:where(.wb-alert-info){background:rgba(0,184,217,.12)}\n:where(.wb-alert-warning){background:rgba(255,171,0,.14)}\n:where(.wb-alert-error){background:rgba(255,86,48,.12)}\n:where(.wb-alert-success){background:rgba(34,197,94,.12)}\n:where(.wb-alert-icon){display:inline-flex;flex-shrink:0;margin-top:1px;line-height:0}\n:where(.wb-alert-info .wb-alert-icon){color:var(--wb-info)}\n:where(.wb-alert-warning .wb-alert-icon){color:#B76E00}\n:where(.wb-alert-error .wb-alert-icon){color:var(--wb-error)}\n:where(.wb-alert-success .wb-alert-icon){color:#118D57}\n:where(html.dark .wb-alert-warning .wb-alert-icon){color:#FFD666}\n:where(html.dark .wb-alert-success .wb-alert-icon){color:#77ED8B}\n:where(.wb-alert-body){flex:1;min-width:0}\n:where(.wb-alert-title){font-weight:700;margin-bottom:2px}\n:where(.wb-alert-action){display:inline-flex;flex-shrink:0;align-items:center}\n:where(.wb-divider){border:0;border-top:1px dashed var(--wb-outline);margin:16px 0;height:0;width:100%;flex-shrink:0}\n:where(.wb-divider-solid){border-top-style:solid}\n:where(.wb-divider-vertical){border-top:0;border-left:1px solid var(--wb-outline);width:0;height:auto;align-self:stretch;margin:0 8px;min-height:16px}\n:where(.wb-divider-with-text){display:flex;align-items:center;gap:12px;border:0;color:var(--wb-text-2);font-size:12px}\n:where(.wb-divider-with-text::before,.wb-divider-with-text::after){content:\"\";flex:1;border-top:1px dashed var(--wb-outline)}\n:where(.wb-tooltip-wrap){position:relative;display:inline-flex;max-width:100%}\n:where(.wb-tooltip){position:absolute;left:50%;transform:translateX(-50%);z-index:1500;background:#1C252E;color:#fff;font-size:12px;font-weight:500;line-height:1.4;padding:6px 8px;border-radius:6px;white-space:nowrap;max-width:260px;pointer-events:none;box-shadow:var(--wb-shadow);animation:wb-ui-fade-in .12s ease-out}\n:where(.wb-tooltip-multiline){white-space:normal;width:max-content}\n:where(html.dark .wb-tooltip){background:#454F5B}\n:where(.wb-tooltip-top){bottom:calc(100% + 6px)}\n:where(.wb-tooltip-bottom){top:calc(100% + 6px)}\n:where(.wb-tooltip-right){left:calc(100% + 6px);top:50%;transform:translateY(-50%)}\n:where(.wb-tooltip-left){left:auto;right:calc(100% + 6px);top:50%;transform:translateY(-50%)}\n:where(.wb-dialog-overlay){position:fixed;inset:0;z-index:1300;background:var(--wb-backdrop);display:flex;align-items:center;justify-content:center;padding:16px;animation:wb-ui-fade-in .15s ease-out;box-sizing:border-box}\n:where(.wb-dialog){position:relative;background:var(--wb-paper);color:var(--wb-text);border-radius:16px;box-shadow:var(--wb-shadow-lg);display:flex;flex-direction:column;max-height:calc(100vh - 32px);outline:none;animation:wb-ui-pop .18s ease-out;box-sizing:border-box;font-size:14px}\n:where(.wb-dialog-header){display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px 16px 12px 24px}\n:where(.wb-dialog-title){margin:0;font-size:18px;font-weight:700;line-height:1.4;color:var(--wb-text)}\n:where(.wb-dialog-body){padding:4px 24px 20px;overflow:auto;min-height:0;flex:1 1 auto;line-height:1.5;color:var(--wb-text);scrollbar-width:thin}\n:where(.wb-dialog-actions){display:flex;justify-content:flex-end;gap:8px;padding:0 24px 24px;flex-wrap:wrap}\n:where(.wb-menu-wrap){position:relative;display:inline-block}\n:where(.wb-menu){position:absolute;z-index:1200;background:var(--wb-paper);color:var(--wb-text);border-radius:10px;box-shadow:var(--wb-shadow-lg);padding:4px;display:flex;flex-direction:column;gap:2px;animation:wb-ui-pop .12s ease-out;border:1px solid var(--wb-divider)}\n:where(.wb-menu-bottom){top:calc(100% + 4px)}\n:where(.wb-menu-top){bottom:calc(100% + 4px)}\n:where(.wb-menu-left){left:0}\n:where(.wb-menu-right){right:0}\n:where(.wb-menu-item){display:flex;align-items:center;gap:10px;width:100%;border:0;background:transparent;border-radius:6px;padding:8px 10px;font:inherit;font-size:13px;color:var(--wb-text);cursor:pointer;text-align:left;white-space:nowrap}\n:where(.wb-menu-item:hover,.wb-menu-item:focus-visible){background:var(--wb-hover);outline:none}\n:where(.wb-menu-item-selected){background:var(--wb-primary-soft);color:var(--wb-primary)}\n:where(.wb-menu-item-danger){color:var(--wb-error)}\n:where(.wb-menu-item:disabled){opacity:.48;cursor:not-allowed}\n:where(.wb-menu-item-label){flex:1}\n:where(.wb-menu-item-hint){font-size:11px;color:var(--wb-text-3)}\n:where(.wb-menu-divider){border-top:1px solid var(--wb-divider);margin:4px 0}\n:where(.wb-scrollbar){overflow:auto;min-height:0;scrollbar-width:thin;scrollbar-color:var(--wb-outline) transparent}\n:where(.wb-scrollbar)::-webkit-scrollbar{width:6px;height:6px}\n:where(.wb-scrollbar)::-webkit-scrollbar-thumb{background:var(--wb-outline);border-radius:3px}\n:where(.wb-scrollbar)::-webkit-scrollbar-track{background:transparent}\n:where(.wb-spinner){display:inline-block;width:24px;height:24px;border:3px solid var(--wb-track);border-top-color:var(--wb-primary);border-radius:50%;animation:wb-ui-spin .8s linear infinite;box-sizing:border-box;flex-shrink:0}\n:where(.wb-empty){display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:4px;padding:24px;color:var(--wb-text-2)}\n:where(.wb-empty-icon){display:inline-flex;margin-bottom:12px;opacity:.9;line-height:0}\n:where(.wb-empty-title){font-size:16px;font-weight:600;color:var(--wb-text);line-height:1.5}\n:where(.wb-empty-subtitle){font-size:14px;color:var(--wb-text-2);line-height:1.5;white-space:pre-line;max-width:320px}\n:where(.wb-empty-action){margin-top:12px}\n:where(.wb-locked){display:flex;gap:16px;align-items:flex-start}\n:where(.wb-locked-icon){display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;border-radius:50%;background:rgba(255,171,0,.16);color:#B76E00;flex-shrink:0}\n:where(html.dark .wb-locked-icon){color:#FFD666}\n:where(.wb-locked-copy){margin:0;font-size:14px;line-height:1.6;color:var(--wb-text-2)}\n:where(.wb-disabled){cursor:not-allowed}\n@keyframes wb-ui-spin{to{transform:rotate(360deg)}}\n@keyframes wb-ui-fade-in{from{opacity:0}to{opacity:1}}\n@keyframes wb-ui-pop{from{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:none}}\n@media (prefers-reduced-motion:reduce){:where(.wb-spinner,.wb-dialog,.wb-dialog-overlay,.wb-menu,.wb-tooltip){animation:none}}\n`;const mintIcon=(name,size,color)=>typeof color===`string`\u0026\u0026color?_jsx(Icon,{icon:String(name),size:Number(size)||16,color}):_jsx(Icon,{icon:String(name),size:Number(size)||16});const fallbackGlyph=size=>_jsx(`svg`,{width:size,height:size,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:`2`,strokeLinecap:`round`,strokeLinejoin:`round`,\"aria-hidden\":`true`,children:_jsx(`circle`,{cx:`12`,cy:`12`,r:`9`})});const LucideIcon=({name,size=16,color,className,style,title})=>{let inner=null;try{inner=mintIcon(name||`circle`,size,color)}catch(err){inner=null}return _jsx(`span`,{className:cx(`wb-icon`,className),\"data-icon\":name,\"aria-hidden\":title?undefined:true,role:title?`img`:undefined,\"aria-label\":title,style:{display:`inline-flex`,alignItems:`center`,justifyContent:`center`,width:size,height:size,flexShrink:0,lineHeight:0,color:color||`inherit`,...style},children:inner||fallbackGlyph(size)})};const iconUrl=iconId=>{const raw=String(iconId||`solar:widget-bold-duotone`).trim();const idx=raw.indexOf(`:`);const name=idx>0?raw.slice(idx+1):raw;return`/images/wb-icons/`+name+`.svg`};const StepIcon=({icon,size=20,color=`#ffffff`,style,className,alt=``,testId})=>_jsx(`span`,{\"data-testid\":testId,\"data-icon\":icon,\"aria-label\":alt||undefined,role:alt?`img`:undefined,\"aria-hidden\":alt?undefined:true,className:cx(`wb-step-icon`,className),style:{display:`inline-block`,width:size,height:size,flexShrink:0,backgroundColor:color||`currentColor`,WebkitMaskImage:`url(\"`+iconUrl(icon)+`\")`,maskImage:`url(\"`+iconUrl(icon)+`\")`,WebkitMaskRepeat:`no-repeat`,maskRepeat:`no-repeat`,WebkitMaskPosition:`center`,maskPosition:`center`,WebkitMaskSize:`contain`,maskSize:`contain`,...style}});const renderIcon=(icon,size)=>{if(icon===null||icon===undefined||icon===false)return null;if(isEl(icon))return icon;const name=String(icon);if(name.indexOf(`:`)>0)return _jsx(StepIcon,{icon:name,size,color:`currentColor`});return _jsx(LucideIcon,{name,size})};const Button=React.forwardRef(function WbButton(p,ref){const{variant=`contained`,color=`primary`,size=`medium`,startIcon,endIcon,fullWidth,disabled,loading,onClick,children,className,style,testId,href,target,type=`button`,...rest}=p;const iconSize=size===`small`?14:size===`large`?18:16;const cls=cx(`wb-btn`,`wb-btn-${variant}`,`wb-btn-${color}`,`wb-btn-${size}`,fullWidth\u0026\u0026`wb-btn-full`,loading\u0026\u0026`wb-btn-loading`,className);const isDisabled=!!disabled||!!loading;const content=_jsxs(_Fragment,{children:[loading?_jsx(`span`,{className:`wb-btn-icon`,children:_jsx(`span`,{className:`wb-spinner`,style:{width:iconSize,height:iconSize,borderWidth:2,borderTopColor:`currentColor`,borderColor:`rgba(255,255,255,.35)`,borderTopColor:`currentColor`}})}):startIcon?_jsx(`span`,{className:`wb-btn-icon`,children:renderIcon(startIcon,iconSize)}):null,children!=null?_jsx(`span`,{className:`wb-btn-label`,children}):null,endIcon?_jsx(`span`,{className:`wb-btn-icon`,children:renderIcon(endIcon,iconSize)}):null]});if(href\u0026\u0026!isDisabled){return _jsx(_components.a,{ref,href,target,rel:target===`_blank`?`noopener noreferrer`:undefined,className:cls,style,onClick,\"data-testid\":testId,...rest,children:content})}return _jsx(`button`,{ref,type,className:cls,style,disabled:isDisabled,\"aria-busy\":loading?true:undefined,onClick,\"data-testid\":testId,...rest,children:content})});const IconButton=React.forwardRef(function WbIconButton(p,ref){const{name,size=18,label,onClick,active,disabled,color,variant,className,style,testId,children,title,...rest}=p;return _jsx(`button`,{ref,type:`button`,\"aria-label\":label,title:title===undefined?label:title||undefined,\"aria-pressed\":active===undefined?undefined:!!active,disabled,onClick,\"data-testid\":testId,className:cx(`wb-iconbtn`,size>=20\u0026\u0026`wb-iconbtn-lg`,active\u0026\u0026`wb-iconbtn-active`,variant\u0026\u0026`wb-iconbtn-${variant}`,color\u0026\u0026`wb-iconbtn-${color}`,className),style,...rest,children:children||_jsx(LucideIcon,{name,size})})});const Divider=({style,className})=>_jsx(`div`,{className:cx(`wb-divider`,className),style});const Chip=({label,children,color,size=`small`,style,className,testId})=>_jsx(`span`,{\"data-testid\":testId,className:cx(`wb-chip`,color\u0026\u0026`wb-chip-${color}`,size===`tiny`\u0026\u0026`wb-chip-tiny`,className),style,children:children||label});const Spinner=({size=18,color})=>_jsx(`span`,{className:`wb-spinner`,style:{width:size,height:size,borderColor:color||`currentColor`,borderTopColor:`transparent`},\"aria-hidden\":`true`});const Alert=({severity=`info`,title,children,style,className,testId})=>_jsxs(`div`,{role:`note`,\"data-testid\":testId,className:cx(`wb-alert`,`wb-alert-${severity}`,className),style,children:[_jsx(LucideIcon,{name:severity===`warning`?`triangle-alert`:severity===`error`?`circle-alert`:severity===`success`?`circle-check`:`info`,size:16}),_jsxs(`div`,{className:`wb-alert-body`,children:[title?_jsx(`div`,{className:`wb-alert-title`,children:title}):null,children?_jsx(`div`,{className:`wb-alert-text`,children}):null]})]});const Tooltip=({title,children,style,className})=>_jsx(`span`,{className:cx(`wb-tip`,className),style,title:title===undefined||title===null?undefined:String(title),children});const Scrollbar=({children,style,className,testId})=>_jsx(`div`,{\"data-testid\":testId,className:cx(`wb-scroll`,className),style,children});const EmptyState=({icon,title,subtitle,style,className,testId})=>_jsxs(`div`,{\"data-testid\":testId,className:cx(`wb-empty`,className),style,children:[icon?_jsx(StepIcon,{icon,size:44,color:`#B0B8C4`}):null,title?_jsx(`div`,{className:`wb-empty-title`,children:title}):null,subtitle?_jsx(`div`,{className:`wb-empty-sub`,children:subtitle}):null]});const TextField=({label,value,onChange,placeholder,multiline,rows,size=`small`,fullWidth,type=`text`,disabled,error,helperText,startIcon,testId,style,className,onKeyDown,min,max,step,ariaLabel})=>{const handle=e=>{if(typeof onChange===`function`)onChange(e.target.value)};const shared={value:value===undefined||value===null?``:value,onChange:handle,placeholder,disabled,onKeyDown,\"data-testid\":testId,\"aria-label\":ariaLabel||(typeof label===`string`?label:undefined),className:cx(`wb-input`,multiline\u0026\u0026`wb-input-multiline`,error\u0026\u0026`wb-input-error`)};return _jsxs(`label`,{className:cx(`wb-field`,fullWidth\u0026\u0026`wb-field-full`,size===`tiny`\u0026\u0026`wb-field-tiny`,className),style,children:[label?_jsx(`span`,{className:`wb-field-label`,children:label}):null,_jsxs(`span`,{className:cx(`wb-input-wrap`,startIcon\u0026\u0026`wb-input-has-icon`),children:[startIcon?_jsx(`span`,{className:`wb-input-icon`,children:_jsx(LucideIcon,{name:startIcon,size:15})}):null,multiline?_jsx(`textarea`,{rows:rows||3,...shared}):_jsx(`input`,{type,min,max,step,...shared})]}),helperText?_jsx(`span`,{className:cx(`wb-field-help`,error\u0026\u0026`wb-field-help-error`),children:helperText}):null]})};const Select=({label,value,onChange,options,size=`small`,disabled,fullWidth,testId,style,className,placeholder})=>{const list=Array.isArray(options)?options:[];const handle=e=>{if(typeof onChange!==`function`)return;const raw=e.target.value;const hit=list.find(o=>String(o\u0026\u0026o.value)===raw);onChange(hit?hit.value:raw)};return _jsxs(`label`,{className:cx(`wb-field`,fullWidth\u0026\u0026`wb-field-full`,size===`tiny`\u0026\u0026`wb-field-tiny`,className),style,children:[label?_jsx(`span`,{className:`wb-field-label`,children:label}):null,_jsxs(`span`,{className:`wb-select-wrap`,children:[_jsxs(`select`,{className:`wb-select`,disabled,value:value===undefined||value===null?``:String(value),onChange:handle,\"data-testid\":testId,\"aria-label\":typeof label===`string`?label:undefined,children:[placeholder?_jsx(`option`,{value:``,children:placeholder}):null,list.map((o,i)=>{const parts=[o\u0026\u0026o.flag?String(o.flag)+` `:``,String((o\u0026\u0026o.label)===undefined?o\u0026\u0026o.value:o.label)];if(o\u0026\u0026o.hint)parts.push(` — `+o.hint);if(o\u0026\u0026(o.cost||o.cost===0))parts.push(` $`+Number(o.cost).toFixed(2));return _jsx(`option`,{value:String(o\u0026\u0026o.value),disabled:!!(o\u0026\u0026o.disabled),children:parts.join(``)},String((o\u0026\u0026o.value)??i))})]}),_jsx(`span`,{className:`wb-select-caret`,\"aria-hidden\":`true`,children:_jsx(LucideIcon,{name:`chevron-down`,size:14})})]})]})};const Switch=({checked,onChange,label,sublabel,disabled,labelPlacement=`start`,testId,style,className,flag})=>{const toggle=()=>{if(!disabled\u0026\u0026typeof onChange===`function`)onChange(!checked)};const control=_jsx(`button`,{type:`button`,role:`switch`,\"aria-checked\":!!checked,disabled,onClick:toggle,\"data-testid\":testId,className:cx(`wb-switch`,checked\u0026\u0026`wb-switch-on`,disabled\u0026\u0026`wb-switch-disabled`),\"aria-label\":typeof label===`string`?label:`toggle`,children:_jsx(`span`,{className:`wb-switch-thumb`})});const text=_jsxs(`span`,{className:`wb-switch-text`,children:[_jsxs(`span`,{className:`wb-switch-label`,children:[flag?_jsxs(`span`,{className:`wb-flag`,children:[flag,` `]}):null,label]}),sublabel?_jsx(`span`,{className:`wb-switch-sub`,children:sublabel}):null]});return _jsxs(`div`,{className:cx(`wb-switch-row`,disabled\u0026\u0026`wb-row-disabled`,className),style,children:[labelPlacement===`start`?text:null,control,labelPlacement===`start`?null:text]})};const Slider=({value,onChange,min=0,max=100,step=1,marks,showValue,unit,disabled,testId,label,style,className})=>{const v=clampNum(Number(value),min,max);const pct=max>min?(v-min)/(max-min)*100:0;return _jsxs(`div`,{className:cx(`wb-slider-row`,disabled\u0026\u0026`wb-row-disabled`,className),style,children:[label||showValue?_jsxs(`div`,{className:`wb-slider-head`,children:[_jsx(`span`,{className:`wb-field-label`,children:label}),showValue?_jsxs(`span`,{className:`wb-slider-value`,children:[v,unit||``]}):null]}):null,_jsx(`input`,{type:`range`,className:`wb-slider`,min,max,step,value:v,disabled,\"data-testid\":testId,\"aria-label\":typeof label===`string`?label:`slider`,style:{\"--wb-slider-pct\":pct+`%`},onChange:e=>{if(typeof onChange===`function`)onChange(Number(e.target.value))}}),Array.isArray(marks)\u0026\u0026marks.length?_jsx(`div`,{className:`wb-slider-marks`,children:marks.map((m,i)=>_jsx(`span`,{className:`wb-slider-mark`,children:m\u0026\u0026m.label!==undefined?m.label:m\u0026\u0026m.value},i))}):null]})};const RangeSlider=({value,onChange,min=0,max=100,step=1,lowerLabel,upperLabel,lowerColor=`#22C55E`,middleColor=`#FF9500`,upperColor=`#FF3B30`,disabled,testId,label,style,className})=>{const pair=Array.isArray(value)?value:[min,max];const lo=clampNum(Number(pair[0]),min,max);const hi=clampNum(Number(pair[1]),min,max);const span=max>min?max-min:1;const loPct=(lo-min)/span*100;const hiPct=(hi-min)/span*100;const emit=(nextLo,nextHi)=>{if(typeof onChange===`function`)onChange([Math.min(nextLo,nextHi),Math.max(nextLo,nextHi)])};return _jsxs(`div`,{className:cx(`wb-range`,disabled\u0026\u0026`wb-row-disabled`,className),style,\"data-testid\":testId,children:[label?_jsx(`div`,{className:`wb-field-label`,children:label}):null,_jsx(`div`,{className:`wb-range-rail`,style:{background:`linear-gradient(90deg, ${lowerColor} 0 ${loPct}%, ${middleColor} ${loPct}% ${hiPct}%, ${upperColor} ${hiPct}% 100%)`}}),_jsxs(`div`,{className:`wb-range-inputs`,children:[_jsx(`input`,{type:`range`,min,max,step,value:lo,disabled,\"aria-label\":(lowerLabel||`lower`)+` bound`,onChange:e=>emit(Number(e.target.value),hi)}),_jsx(`input`,{type:`range`,min,max,step,value:hi,disabled,\"aria-label\":(upperLabel||`upper`)+` bound`,onChange:e=>emit(lo,Number(e.target.value))})]}),_jsxs(`div`,{className:`wb-range-chips`,children:[_jsx(Chip,{color:`success`,children:(lowerLabel||`Low`)+` \u003c `+lo}),_jsx(Chip,{color:`warning`,children:lo+` – `+hi}),_jsx(Chip,{color:`error`,children:(upperLabel||`High`)+` > `+hi})]})]})};const Tabs=({value,onChange,tabs,pill=true,style,className,testIdPrefix})=>{const list=Array.isArray(tabs)?tabs:[];return _jsx(`div`,{role:`tablist`,className:cx(`wb-tabs`,pill\u0026\u0026`wb-tabs-pill`,className),style,children:list.map(t=>{const val=t\u0026\u0026t.value!==undefined?t.value:t;const active=String(val)===String(value);return _jsx(`button`,{type:`button`,role:`tab`,\"aria-selected\":active,\"data-testid\":t\u0026\u0026t.testId||(testIdPrefix?testIdPrefix+String(val):undefined),className:cx(`wb-tab`,active\u0026\u0026`wb-tab-active`),onClick:()=>{if(typeof onChange===`function`)onChange(val)},children:t\u0026\u0026t.label!==undefined?t.label:String(val)},String(val))})})};const Dialog=({open,onClose,title,children,actions,width=520,testId,className})=>{useEffect(()=>{if(!open)return undefined;const onKey=e=>{if(e.key===`Escape`\u0026\u0026typeof onClose===`function`)onClose()};window.addEventListener(`keydown`,onKey);return()=>window.removeEventListener(`keydown`,onKey)},[open,onClose]);if(!open)return null;return _jsx(`div`,{className:`wb-dialog-overlay`,onMouseDown:e=>{if(e.target===e.currentTarget\u0026\u0026typeof onClose===`function`)onClose()},children:_jsxs(`div`,{role:`dialog`,\"aria-modal\":`true`,\"aria-label\":typeof title===`string`?title:`dialog`,\"data-testid\":testId,className:cx(`wb-dialog`,className),style:{width,maxWidth:`calc(100vw - 48px)`},children:[_jsxs(`div`,{className:`wb-dialog-head`,children:[_jsx(`div`,{className:`wb-dialog-title`,children:title}),_jsx(IconButton,{name:`x`,size:16,label:`Close`,onClick:onClose,testId:testId?testId+`-close`:undefined})]}),_jsx(`div`,{className:`wb-dialog-body`,children}),actions?_jsx(`div`,{className:`wb-dialog-actions`,children:actions}):null]})})};const Menu=({open,onClose,items,style,className})=>{if(!open)return null;const list=Array.isArray(items)?items:[];return _jsx(`div`,{className:cx(`wb-menu`,className),style,role:`menu`,children:list.map((it,i)=>_jsxs(`button`,{type:`button`,role:`menuitem`,className:`wb-menu-item`,onClick:()=>{if(it\u0026\u0026typeof it.onClick===`function`)it.onClick();if(typeof onClose===`function`)onClose()},children:[it\u0026\u0026it.icon?_jsx(LucideIcon,{name:it.icon,size:14}):null,it\u0026\u0026it.label]},i))})};const ToastContext=React.createContext(null);const ToastProvider=({children})=>{const styleRef=useRef(false);useEffect(()=>{if(styleRef.current)return;styleRef.current=true;try{if(!document.getElementById(`wb-ui-css`)){const el=document.createElement(`style`);el.id=`wb-ui-css`;el.textContent=UI_CSS;document.head.appendChild(el)}}catch(e){}},[]);return _jsx(ToastContext.Provider,{value:null,children})};const useToast=()=>noop;const FeatureLockedDialog=({open,onClose,feature})=>_jsx(Dialog,{open,onClose,title:`Feature not activated`,width:460,testId:`wb-feature-locked-dialog`,actions:_jsxs(_Fragment,{children:[_jsx(Button,{variant:`text`,color:`inherit`,onClick:onClose,children:`Close`}),_jsx(Button,{variant:`contained`,onClick:()=>{try{window.location.href=`mailto:sales@deepidv.com`}catch(e){}if(typeof onClose===`function`)onClose()},children:`Contact sales`})]}),children:_jsx(`p`,{className:`wb-dialog-text`,children:(feature||`This feature`)+` hasn't been activated for this account yet. Contact our sales team to enable it.`})});const MuiButton=React.forwardRef(function WbMuiButton(p,ref){const{variant=`text`,gradient,startIcon,endIcon,disabled,loading,onClick,children,className,style,testId,noHover,type=`button`,...rest}=p;return _jsxs(`button`,{ref,type,className:cx(`wb-mbtn`,`wb-mbtn-`+variant,gradient\u0026\u0026`wb-mbtn-gradient`,noHover\u0026\u0026`wb-mbtn-nohover`,loading\u0026\u0026`wb-mbtn-loading`,className),style,disabled:!!disabled||!!loading,onClick,\"data-testid\":testId,...rest,children:[startIcon?_jsx(`span`,{className:`wb-mbtn-start`,children:startIcon}):null,_jsx(`span`,{children}),endIcon?_jsx(`span`,{className:`wb-mbtn-start`,style:{margin:`0 -4px 0 4px`},children:endIcon}):null,loading?_jsx(`span`,{className:`wb-spin`}):null]})});const MuiIconButton=React.forwardRef(function WbMuiIconButton(p,ref){const{size=`small`,label,onClick,disabled,className,style,testId,children,active,...rest}=p;return _jsx(`button`,{ref,type:`button`,\"aria-label\":label,\"aria-pressed\":active===undefined?undefined:!!active,disabled,onClick,\"data-testid\":testId,className:cx(`wb-micon`,`wb-micon-`+(size===`small`?`sm`:`md`),className),style,...rest,children})});const MuiTextField=({label,placeholder,value,onChange,size=`small`,fullWidth,startAdornment,endAdornment,disabled,error,helperText,type=`text`,testId,style,className,multiline,rows,inputProps,onKeyDown,autoFocus})=>{const[focused,setFocused]=useState(false);const filled=value!==undefined\u0026\u0026value!==null\u0026\u0026String(value)!==``;const shrunk=focused||filled||!!startAdornment||!!placeholder;const InputTag=multiline?`textarea`:`input`;return _jsxs(`div`,{className:cx(`wb-mf`,fullWidth\u0026\u0026`wb-mf-full`,shrunk\u0026\u0026`wb-mf-shrunk`,error\u0026\u0026`wb-mf-error`,disabled\u0026\u0026`wb-mf-disabled`,className),style,\"data-testid\":testId?testId+`-root`:undefined,children:[_jsxs(`div`,{className:`wb-mf-ctrl`,children:[startAdornment?_jsx(`span`,{className:`wb-mf-start`,children:startAdornment}):null,_jsx(InputTag,{className:cx(`wb-mf-input`,startAdornment\u0026\u0026`wb-mf-has-start`),type:multiline?undefined:type,rows:multiline?rows||3:undefined,value:value===undefined||value===null?``:value,placeholder,disabled,autoFocus,\"data-testid\":testId,\"aria-label\":typeof label===`string`?label:placeholder,onFocus:()=>setFocused(true),onBlur:()=>setFocused(false),onKeyDown,onChange:e=>{if(typeof onChange===`function`)onChange(e.target.value)},style:multiline?{height:`auto`,minHeight:40,resize:`vertical`,lineHeight:1.5,paddingTop:10,paddingBottom:10}:undefined,...inputProps||{}}),endAdornment?_jsx(`span`,{className:`wb-mf-end`,children:endAdornment}):null,_jsx(`fieldset`,{className:`wb-mf-outline`,\"aria-hidden\":`true`,children:_jsx(`legend`,{children:_jsx(`span`,{children:label||` `})})})]}),label?_jsx(`label`,{className:`wb-mf-label`,children:label}):null,helperText?_jsx(`div`,{className:`wb-mf-helper`,children:helperText}):null]})};const MuiSelect=({label,value,onChange,options,placeholder,renderValue,fullWidth,disabled,size=`small`,testId,style,className,displayEmpty,menuWidth})=>{const[open,setOpen]=useState(false);const anchorRef=useRef(null);const[pos,setPos]=useState(null);const list=Array.isArray(options)?options:[];const selected=list.find(o=>String(o.value)===String(value));const shrunk=displayEmpty||value!==undefined\u0026\u0026value!==null\u0026\u0026String(value)!==``||open;useEffect(()=>{if(!open)return undefined;const place=()=>{const el=anchorRef.current;if(!el)return;const r=el.getBoundingClientRect();const below=window.innerHeight-r.bottom;const maxH=320;const top=below>Math.min(maxH,200)+8?r.bottom+4:Math.max(8,r.top-Math.min(maxH,320)-4);setPos({left:r.left,top,width:menuWidth||r.width})};place();const close=e=>{if(anchorRef.current\u0026\u0026anchorRef.current.contains(e.target))return;if(e.target.closest\u0026\u0026e.target.closest(`.wb-menu-pop`))return;setOpen(false)};const onKey=e=>{if(e.key===`Escape`)setOpen(false)};window.addEventListener(`mousedown`,close);window.addEventListener(`keydown`,onKey);window.addEventListener(`resize`,place);window.addEventListener(`scroll`,place,true);return()=>{window.removeEventListener(`mousedown`,close);window.removeEventListener(`keydown`,onKey);window.removeEventListener(`resize`,place);window.removeEventListener(`scroll`,place,true)}},[open,menuWidth]);const shown=selected?typeof renderValue===`function`?renderValue(selected):_jsxs(_Fragment,{children:[selected.icon?_jsx(`span`,{className:`wb-menu-item-icon`,children:selected.icon}):null,_jsx(`span`,{style:{overflow:`hidden`,textOverflow:`ellipsis`,whiteSpace:`nowrap`},children:selected.label})]}):typeof renderValue===`function`?renderValue(null):placeholder||``;const menu=open\u0026\u0026pos?_jsx(`div`,{className:`wb-menu-pop`,role:`listbox`,style:{left:pos.left,top:pos.top,minWidth:pos.width},\"data-testid\":testId?testId+`-menu`:undefined,children:list.map(o=>_jsxs(`div`,{role:`option`,className:`wb-menu-item`,\"aria-selected\":String(o.value)===String(value)?`true`:`false`,\"aria-disabled\":o.disabled?`true`:undefined,\"data-value\":String(o.value),onClick:()=>{if(o.disabled)return;setOpen(false);if(typeof onChange===`function`)onChange(o.value)},children:[o.flagSrc?_jsx(`img`,{className:`wb-menu-item-flag`,src:o.flagSrc,alt:``}):null,o.icon?_jsx(`span`,{className:`wb-menu-item-icon`,children:o.icon}):null,_jsxs(`span`,{style:{flex:`1 1 auto`,minWidth:0},children:[o.label,o.hint?_jsx(`span`,{className:`wb-menu-item-hint`,children:` `+o.hint}):null]}),o.cost!==undefined\u0026\u0026o.cost!==null?_jsx(`span`,{className:`wb-menu-item-cost`,children:typeof o.cost===`number`?`$`+o.cost.toFixed(2):o.cost}):null]},String(o.value)))}):null;return _jsxs(`div`,{className:cx(`wb-mf`,`wb-mf-select`,fullWidth\u0026\u0026`wb-mf-full`,shrunk\u0026\u0026`wb-mf-shrunk`,open\u0026\u0026`wb-mf-select-open`,disabled\u0026\u0026`wb-mf-disabled`,className),style,ref:anchorRef,children:[_jsxs(`div`,{className:`wb-mf-ctrl`,children:[_jsx(`button`,{type:`button`,className:cx(`wb-mf-input`,!selected\u0026\u0026`wb-mf-placeholder`),disabled,\"aria-haspopup\":`listbox`,\"aria-expanded\":open?`true`:`false`,\"aria-label\":typeof label===`string`?label:placeholder,\"data-testid\":testId,onClick:()=>{if(!disabled)setOpen(v=>!v)},children:shown}),_jsx(`span`,{className:`wb-mf-caret`,children:_jsx(LucideIcon,{name:`chevron-down`,size:22})}),_jsx(`fieldset`,{className:`wb-mf-outline`,\"aria-hidden\":`true`,children:_jsx(`legend`,{children:_jsx(`span`,{children:label||` `})})})]}),label?_jsx(`label`,{className:`wb-mf-label`,children:label}):null,menu]})};return{LucideIcon,StepIcon,Button,IconButton,TextField,Select,Switch,Slider,RangeSlider,Tabs,Chip,Alert,Divider,Tooltip,Dialog,Menu,Scrollbar,ToastProvider,useToast,FeatureLockedDialog,Spinner,EmptyState,iconUrl,cx,MuiButton,MuiIconButton,MuiTextField,MuiSelect}};const I18N_EN={\"pageTitle\":`Workflows`,\"pageSubtitle\":`View and manage your custom workflows.`,\"newWorkflow\":`New Workflow`,\"colName\":`Name`,\"colCreatedBy\":`Created By`,\"colUpdatedAt\":`Updated At`,\"colPrice\":`Price`,\"colSteps\":`Steps`,\"stepsCount_one\":`{{count}} Step`,\"stepsCount_other\":`{{count}} Steps`,\"deleteConfirmMessage\":`Are you sure you want to delete \u003cstrong>{{count}}\u003c/strong> items?`,\"deleteSuccess\":`Delete success!`,\"chipStatus\":`Status:`,\"chipSentBy\":`Sent By:`,\"chipKeyword\":`Keyword:`,\"toolbarPrint\":`Print`,\"toolbarImport\":`Import`,\"toolbarExport\":`Export`,\"rowNewSession\":`New Session`,\"rowManageSessions\":`Manage Sessions`,\"rowViewPermalink\":`View Permalink`,\"rowCopyPermalink\":`Copy permalink`,\"rowPermalinkCopied\":`Permalink copied to clipboard`,\"rowPermalinkError\":`Couldn't copy permalink`,\"rowMoreActions\":`More actions`,\"rowSettings\":`Settings`,\"rowArchive\":`Archive`,\"rowRestore\":`Restore`,\"rowMarkedImportant\":`{{name}} marked as important`,\"rowMarkImportantError\":`Failed to mark {{name}} as important`,\"rowRestoreSuccess\":`Workflow {{name}} restored successfully`,\"rowRestoreError\":`Failed to restore workflow {{name}}`,\"viewDialogTitle\":`Workflow Details`,\"viewDialogAlert\":`Once a workflow is created, the workflow cannot be edited. You can archive the workflow and create a new one instead.`,\"viewDialogIncluded\":`Included`,\"stepStartSession\":`Start Session`,\"stepEndSession\":`End Session`,\"stepUnknown\":`Unknown Step`,\"stepIdVerification\":`ID Verification`,\"stepFaceLiveness\":`Face Liveness`,\"stepDeepfakeDetection\":`Deepfake Detection`,\"stepAddressVerification\":`Address Verification`,\"stepPhoneVerification\":`Phone Verification`,\"stepAgeEstimation\":`Age Estimation`,\"stepPepSanctions\":`PEP/Sanctions`,\"stepAdverseMedia\":`Adverse Media`,\"stepBankStatementUpload\":`Bank Statement`,\"stepAiBankStatementAnalysis\":`Bank Statement Analysis`,\"stepNfcVerification\":`NFC Verification`,\"stepPassportNfcScanner\":`Passport NFC Scanner`,\"stepCustomPrompt\":`Custom Prompts`,\"stepDocumentUpload\":`Document Upload`,\"stepTitleSearch\":`Title Search`,\"stepESignature\":`E-Signature`,\"stepCustomForm\":`Custom Form`,\"stepConsent\":`Consent`,\"stepCreditCheck\":`Credit Check`,\"stepBackgroundCheck\":`Background Check`,\"stepCriminalBackgroundCheck\":`Criminal Background Check`,\"stepVulnerableSectorCheck\":`Vulnerable Sector Check`,\"stepFinancialCrimeCheck\":`Financial Crime Check`,\"stepEducationConfirmation\":`Education Confirmation`,\"stepKyb\":`KYB`,\"stepWhiteLabel\":`White Label`,\"stepIpJurisdiction\":`IP Jurisdiction`,\"stepVpnDetection\":`VPN Detection`,\"stepInjectionDetection\":`Injection Detection`,\"stepAntiCheat\":`Anti-Cheat`,\"permalinkDialogTitle\":`Your {{name}} Permalinks`,\"permalinkDialogInfo\":`These are your permalinks for \u003cstrong>{{name}}\u003c/strong>. You can have multiple.`,\"permalinkDialogLabel\":`Permalink`,\"permalinkDialogCopyTooltip\":`Copy to clipboard`,\"permalinkDialogGenerate\":`Generate New Permalink`,\"permalinkDialogBack\":`Back`,\"permalinkDialogFallbackName\":`Workflow`,\"permalinkCreateSuccess\":`New permalink created!`,\"permalinkCreateError\":`Failed to create permalink`,\"permalinkConfirmTitle\":`Generate new permalink for {{name}}?`,\"permalinkConfirmWarning\":`Generating a new permalink will invalidate the previous one and cannot be undone. Are you sure you want to proceed?`,\"wfSettingsBreadcrumbSettings\":`Settings`,\"wfSettingsFallbackName\":`Workflow`,\"wfSettingsErrorTitle\":`Settings`,\"wfSettingsLoadFallback\":`Unable to load this workflow.`,\"wfSettingsOff\":`Off`,\"wfSettingsOn\":`On`,\"wfSettingsSaving\":`Saving...`,\"wfSettingsRetry\":`Retry`,\"wfRedirectTitle\":`Redirect URL`,\"wfRedirectDescription\":`When set, users will be redirected to this URL after completing, failing, or exiting a verification session. The redirect URL will include \u003c1>session_id\u003c/1>, \u003c3>status\u003c/3>, and \u003c5>reason\u003c/5> query parameters. \u003c7>Learn more\u003c/7>`,\"wfRedirectDefaultLabel\":`Workflow default redirect`,\"wfRedirectActive\":`Active`,\"wfRedirectInactive\":`Inactive`,\"wfRedirectFieldLabel\":`Redirect URL`,\"wfRedirectPlaceholder\":`https://yourapp.com/verify-callback`,\"wfRedirectHelperText\":`Leave empty to disable workflow-level redirect.`,\"wfRedirectValidationError\":`Enter a valid HTTPS URL (for example, https://yourapp.com/verify-callback).`,\"wfRedirectSave\":`Save redirect URL`,\"wfRedirectUpdateSuccess\":`Workflow redirect URL updated successfully`,\"wfRedirectClearSuccess\":`Workflow redirect URL cleared successfully`,\"wfRedirectUpdateError\":`Failed to update workflow redirect URL`,\"wfNotifTitle\":`Notifications`,\"wfNotifDescription\":`Configure upload-complete email notifications for this workflow.`,\"wfNotifHint\":`When notifications are on, the session sender always receives the email. Selected admins and agents are added to that list.`,\"wfNotifToggleLabel\":`Notification ON/OFF`,\"wfNotifToggleHint\":`Turn off all upload-complete emails for this workflow.`,\"wfNotifStatusOn\":`Notifications on`,\"wfNotifStatusOff\":`Notifications off`,\"wfNotifSenderList\":`Sender list`,\"wfNotifSenderListHint\":`Select the admins and agents who should also receive upload-complete emails.`,\"wfNotifSelectPlaceholder\":`Select admins and agents`,\"wfNotifOffPlaceholder\":`Notifications are off`,\"wfNotifRecipientsSelected_one\":`{{count}} additional recipient selected.`,\"wfNotifRecipientsSelected_other\":`{{count}} additional recipients selected.`,\"wfNotifNoRecipients\":`No additional recipients selected. Only the session sender will receive the email.`,\"wfNotifSave\":`Save notifications`,\"wfNotifLoadError\":`Failed to load workflow notifications`,\"wfNotifUpdateSuccess\":`Workflow notifications updated successfully`,\"wfNotifUpdateError\":`Failed to update workflow notifications`,\"wfNotifUnknownUser\":`Unknown user`,\"wfAutoRejectTitle\":`Auto-Reject`,\"wfAutoRejectDescription\":`Choose which upload-time checks can reject an ID attempt and ask the applicant to retry.`,\"wfAutoRejectHint\":`Existing workflows default to the current behavior with all checks enabled.`,\"wfAutoRejectIdTypeLabel\":`ID matches selected type`,\"wfAutoRejectIdTypeHint\":`Reject when the uploaded ID appears to be a different type than the applicant selected.`,\"wfAutoRejectFaceMatchLabel\":`Face matches selfie`,\"wfAutoRejectFaceMatchHint\":`Run face comparison between the ID photo and selfie for this workflow.`,\"wfAutoRejectConfidenceLabel\":`ID type confidence threshold`,\"wfAutoRejectConfidenceHint\":`Reject when the detected ID type confidence is below the configured threshold.`,\"wfAutoRejectFaceDetectedLabel\":`Face detected in ID`,\"wfAutoRejectFaceDetectedHint\":`Reject when the uploaded ID image does not contain a clear face photo.`,\"wfAutoRejectTagOn\":`Reject on`,\"wfAutoRejectTagOff\":`Reject off`,\"wfAutoRejectSave\":`Save changes`,\"wfAutoRejectLoadError\":`Failed to load auto-reject settings`,\"wfAutoRejectUpdateSuccess\":`Auto-reject settings updated successfully`,\"wfAutoRejectUpdateError\":`Failed to update auto-reject settings`,\"wfAutoRejectUnavailable\":`Unavailable`,\"wfAutoRejectIdTypeUnavailableNotice\":`ID matches selected type requires U.S. driver's license or U.S. passport enabled in Valid ID Types.`,\"wfAutoRejectIdTypeUnavailableHint\":`Unavailable for this workflow configuration. This check currently runs only for U.S. driver's licenses and passports.`,\"wfExpiryTitle\":`Session Expiry`,\"wfExpiryDescription\":`Automatically expire sessions that are not completed within a specified time.`,\"wfExpiryHint\":`When enabled, new sessions created from this workflow will be marked as EXPIRED after the configured number of hours if they have not been completed. Changes only apply to new sessions.`,\"wfExpiryAutoLabel\":`Auto-expire sessions`,\"wfExpiryAutoHint\":`Automatically mark incomplete sessions as expired after a set time.`,\"wfExpiryTagOn\":`Expiry on`,\"wfExpiryTagOff\":`Expiry off`,\"wfExpiryHoursLabel\":`Expiry time (hours)`,\"wfExpiryHoursHint\":`Sessions will be marked as EXPIRED after this many hours if not completed.`,\"wfExpiryHoursHelperText\":`Min: 1 hour, Max: 8760 hours (1 year)`,\"wfExpirySave\":`Save changes`,\"wfExpiryLoadError\":`Failed to load expiry settings`,\"wfExpiryUpdateSuccess\":`Session expiry settings updated successfully`,\"wfExpiryUpdateError\":`Failed to update session expiry settings`,\"wfExpiryValidationError\":`Expiry hours must be between 1 and 8760`,\"wfFailureTitle\":`Auto-fail Sessions`,\"wfFailureDescription\":`Automatically fail sessions after a set number of failed ID verification attempts.`,\"wfFailureHint\":`When enabled, new sessions created from this workflow will be marked as FAILED once the applicant accumulates the configured number of failed attempts. Existing sessions are unaffected.`,\"wfFailureAutoLabel\":`Auto-fail after too many attempts`,\"wfFailureAutoHint\":`Automatically mark sessions as failed once they exceed the configured number of failed attempts.`,\"wfFailureTagOn\":`Auto-fail on`,\"wfFailureTagOff\":`Auto-fail off`,\"wfFailureMaxLabel\":`Maximum failed attempts`,\"wfFailureMaxHint\":`Sessions will be marked as FAILED once they reach this many failed attempts.`,\"wfFailureMaxHelperText\":`Min: 1 attempt, Max: 10 attempts`,\"wfFailureSave\":`Save changes`,\"wfFailureLoadError\":`Failed to load auto-failure settings`,\"wfFailureUpdateSuccess\":`Auto-failure settings updated successfully`,\"wfFailureUpdateError\":`Failed to update auto-failure settings`,\"wfFailureValidationError\":`Maximum attempts must be between 1 and 10`,\"wfReceiptTitle\":`Verification Receipts`,\"wfReceiptDescription\":`Completed sessions always issue a verification receipt the applicant can download or add to a wallet.`,\"wfReceiptHint\":`Receipts are always generated. The only setting you can change is how long they remain valid. Changes only apply to new sessions.`,\"wfReceiptExpiryLabel\":`Expire receipts`,\"wfReceiptExpiryHint\":`Automatically expire receipts after a set number of days. Turn this off for receipts that never expire.`,\"wfReceiptExpiryTagOn\":`Expiry on`,\"wfReceiptExpiryTagOff\":`No expiry`,\"wfReceiptDaysLabel\":`Expiry time (days)`,\"wfReceiptDaysHint\":`Receipts will expire after this many days.`,\"wfReceiptDaysHelperText\":`Min: 1 day, Max: 365 days (1 year)`,\"wfReceiptSave\":`Save changes`,\"wfReceiptLoadError\":`Failed to load receipt settings`,\"wfReceiptUpdateSuccess\":`Receipt settings updated successfully`,\"wfReceiptUpdateError\":`Failed to update receipt settings`,\"wfReceiptValidationError\":`Expiry days must be an integer between 1 and 365`,\"createBreadcrumbHeading\":`Create New Workflow`,\"createBreadcrumbNew\":`New`,\"templatesChoose\":`Choose`,\"tierDialogTitle\":`Choose a workflow type`,\"tiers\":{\"simple\":{\"label\":`Simple`,\"description\":`Pick a ready-made template or start from scratch in the standard builder.`,\"features\":[`Canvas or linear layout`,`Set up in seconds`,`Best for new users`]},\"advanced\":{\"label\":`Advanced`,\"description\":`Design branching, conditional verification flows on a free-form canvas.`,\"features\":[`Node-based actions`,`Deep step-by-step customization`,`Control failed, suspicious, or inconclusive checks`]},\"compliance\":{\"label\":`Compliance`,\"description\":`Build a regulated, audit-ready flow with the Arbiter compliance builder.`,\"features\":[`Build your own rules`,`Set monitoring policies`,`Watch users continuously`]}},\"advancedComingSoonBadge\":`Coming soon`,\"advancedTitle\":`Advanced Canvas Builder`,\"advancedDescription\":`Design branching, conditional verification flows on a free-form canvas. This builder is on the way — in the meantime you can build linear flows with the standard builder.`,\"advancedUseStandard\":`Use the standard builder`,\"createErrorMinSteps_one\":`Please insert at least {{count}} step into your workflow before saving.`,\"createErrorMinSteps_other\":`Please insert at least {{count}} steps into your workflow before saving.`,\"createErrorNoName\":`Please enter a workflow name before saving.`,\"createErrorCycle\":`Workflow connections contain a cycle. Please remove circular connections.`,\"createSuccess\":`Create success!`,\"createError\":`Failed to create workflow`,\"builderBack\":`Back`,\"builderWorkflowName\":`Workflow Name`,\"builderWorkflowNamePlaceholder\":`My Workflow`,\"builderTemplate\":`Template`,\"builderTemplatePlaceholder\":`Select template...`,\"builderCostPerSession\":\"${{amount}} / session\",\"builderSaveWorkflow\":`Save Workflow`,\"builderListView\":`List View`,\"builderCanvasView\":`Canvas View`,\"builderZoomIn\":`Zoom in`,\"builderZoomOut\":`Zoom out`,\"builderViewToggleHint\":`Try switching between list and canvas view!`,\"builderDontShowAgain\":`Don't show again`,\"builderAvailableServices\":`Available Services`,\"builderSearchPlaceholder\":`Search...`,\"builderCategoryAll\":`All`,\"builderCategoryVerify\":`Verify`,\"builderCategoryDocs\":`Docs`,\"builderCategoryScreen\":`Screen`,\"builderTabWorkflow\":`Workflow`,\"builderTabClientPreview\":`Client Preview`,\"builderCanvasEmpty\":`Drag a service here to start\nbuilding your workflow`,\"builderPreviewEmpty\":`Add steps to your workflow to preview`,\"builderCanvasToolbarFit\":`Fit`,\"builderCanvasStart\":`Start`,\"builderConfigureSettings\":`Configure settings`,\"builderConfigureSettingsHint\":`Add and select a service to\nconfigure settings`,\"builderServiceIncluded\":`Included`,\"builderGatedWhitelabel\":`Enable white-labeling in the Whitelabel settings page first`,\"builderGatedContactSales\":`Requires activation. Please contact sales@deepidv.com`,\"featureLockedTitle\":`Feature not activated`,\"featureLockedBody\":`{{feature}} hasn’t been activated for this account yet. Contact our sales team to enable it for your workspace.`,\"featureLockedClose\":`Close`,\"featureLockedContactSales\":`Contact sales`,\"previewDesktopView\":`Desktop view`,\"previewMobileView\":`Mobile view`,\"previewPrevious\":`Previous`,\"previewNext\":`Next`,\"previewBeatCounter\":`{{label}} - Screen {{n}} of {{total}}`,\"previewWelcome\":`Welcome`,\"previewComplete\":`Complete`,\"previewStep\":`Step {{n}}`,\"previewOrganizationFallback\":`Organization`,\"previewCompleteOrganizationFallback\":`the organization`,\"previewInvitedToVerify\":`Invites you to complete verification.`,\"previewAcceptInvitation\":`Accept Invitation`,\"previewSessionSubmittedTitle\":`Verification Session Submitted`,\"previewSessionSubmittedBody\":`Your identity verification session has been submitted to \u003c1>{{organization}}\u003c/1>.`,\"previewReceiptHeading\":`Verification Receipt`,\"previewReceiptSubtitle\":`Download or save to validate verification in the future.`,\"previewReceiptAttestationIdLabel\":`Attestation ID`,\"previewReceiptAddToAppleWallet\":`Add to Apple Wallet`,\"previewReceiptAddToGoogleWallet\":`Add to Google Wallet`,\"previewReceiptCopy\":`Copy`,\"previewReceiptDownloadReceipt\":`Download receipt`,\"previewReceiptDownloadBundle\":`Download .dpiv-bundle`,\"previewReceiptDownloadAction\":`Download`,\"previewReset\":`Reset`,\"previewContinue\":`Continue`,\"previewStart\":`Start`,\"previewCompleted\":`Completed`,\"previewCapture\":`Capture`,\"previewCancel\":`Cancel`,\"previewConfirm\":`Confirm`,\"previewOk\":`OK`,\"previewUpload\":`Upload`,\"previewUploaded\":`Uploaded`,\"previewUploadDocument\":`Upload Document`,\"previewDragAndDropPrefix\":`Drag and drop or `,\"previewUploadFiles\":`upload a file`,\"previewDragAndDropSuffix\":`.`,\"previewSearchPlaceholder\":`Search...`,\"previewYes\":`Yes`,\"previewNo\":`No`,\"previewAgeLookCamera\":`Please look into the camera`,\"previewIdScreeningShowId\":`Please show your ID to the camera`,\"previewBackgroundTitle\":`This check is run in the background`,\"previewBackgroundBody\":`Your user will not see anything.`,\"previewBankSelectInstitution\":`Select an Institution`,\"previewBankMostPopular\":`Most Popular`,\"previewConsentDefault\":`I consent to the collection and processing of my personal information for verification purposes. I understand that my data will be handled securely and in accordance with applicable privacy laws.`,\"previewConsentMissingWarning\":`No consent text configured - using default`,\"previewConsentAgree\":`I agree to the terms above`,\"previewCustomFormDefaultLabel\":`Yes Or No`,\"previewCustomFormPageCount\":`Page {{current}} / {{total}}`,\"previewBeatCustomFormPage\":`Form`,\"previewBeatCustomPrompt\":`Custom prompts`,\"previewBeatDocumentPage\":`Documents`,\"previewBeatKybPage\":`Business details`,\"previewBeatFaceLiveness\":`Face liveness`,\"previewBeatDeepfake\":`Deepfake detection`,\"previewBeatAddressVerification\":`Address verification`,\"previewBeatIdVerification\":`ID verification`,\"previewBeatPassportNfc\":`Passport NFC scan`,\"previewBeatPhoneVerification\":`Phone verification`,\"previewBeatProofCall\":`Proof call`,\"previewBeatMasterVerification\":`Verification checklist`,\"previewCustomFormDatePlaceholder\":`MM / DD / YYYY`,\"previewCustomFormNumberPlaceholder\":`Enter a number...`,\"previewCustomFormTextPlaceholder\":`Enter your answer...`,\"previewCustomPromptsTitle\":`Custom Prompts`,\"previewCustomPromptsBody\":`The document sender has requested you to complete the following custom prompts before proceeding.`,\"previewCustomPromptHoldTwoFingers\":`Hold two fingers`,\"previewDeepfakeAnalysis\":`Deepfake Analysis`,\"previewDeepfakeIntroCaption\":`Remove any hats, glasses, or masks`,\"previewDeepfakePositionFace\":`Position your face in the frame to begin`,\"previewDeepfakeAnalyzing\":`Analyzing scan results…`,\"previewDeepfakeSayPhrase\":`Say this phrase aloud`,\"previewDeepfakeChallengeWord\":`sunshine`,\"previewDeepfakeSuccessTitle\":`Deepfake Detection Passed`,\"previewDocumentUploadTitle\":`Document Upload`,\"previewDocumentUploadBody\":`Please upload the requested documents to proceed.`,\"previewFaceLivenessTitle\":`Quick selfie`,\"previewFaceLivenessSubtitle\":`Hold your phone steady and follow the on-screen prompts.`,\"previewFaceLivenessStartScanning\":`Start Scanning`,\"previewFaceLivenessCenterFace\":`Center Your Face`,\"previewFaceLivenessHoldStill\":`Hold Still`,\"previewFaceLivenessPleaseWait\":`Please wait…`,\"previewFaceLivenessSuccessTitle\":`Face verified`,\"previewFaceLivenessErrorTitle\":`Verification failed`,\"previewFaceLivenessErrorCause\":`The face from your liveness check doesn't match the photo on your ID. Please try the liveness check again.`,\"previewFaceLivenessRetry\":`Retry`,\"previewIdvTitle\":`Verify your identity`,\"previewIdvBody\":`Your information is encrypted and only shared with {{organization}}.`,\"previewIdvProgressCompleted\":`{{completed}} / {{total}} completed`,\"previewIdvSecurityNotice\":`Protected by deepidv Secure Verification System.`,\"previewIdvStepId\":`ID Verification`,\"previewIdvStepFace\":`Face Match`,\"previewIdvCaptureIdFront\":`Capture the front of your ID`,\"previewIdvCaptureIdBack\":`Capture the back of your ID`,\"previewIdvCaptureSecondaryFront\":`Capture the front of your secondary ID`,\"previewIdvCaptureSecondaryBack\":`Capture the back of your secondary ID`,\"previewIdvCaptureTertiaryFront\":`Capture the front of your tertiary ID`,\"previewIdvCaptureTertiaryBack\":`Capture the back of your tertiary ID`,\"previewIdvCaptureFaceFront\":`Capture the front of your face`,\"previewIdvCaptureFaceRight\":`Capture the right side of your face`,\"previewIdvCaptureFaceLeft\":`Capture the left side of your face`,\"previewIdvDocSelectorTitle\":`Select your verification method`,\"previewIdvDocSelectorTitleSecondary\":`Select your secondary ID type`,\"previewIdvDocSelectorTitleTertiary\":`Select your tertiary ID type`,\"previewIdvPreviouslySelected\":`Previously selected:`,\"previewIdvDocTypeDriverLicense\":`Driver's License`,\"previewIdvDocTypePassport\":`Passport`,\"previewIdvDocTypeNationalId\":`National ID`,\"previewIdvDocTypePrCard\":`PR Card`,\"previewIdvDocTypeMilitaryId\":`Military ID`,\"previewIdvDocTypeFirearmLicense\":`Firearm License`,\"previewIdvDocTypeCountrySpecific\":`Country-Specific ID`,\"previewSkip\":`Skip`,\"previewIdvOnboardingHeadline1\":`Place your valid ID inside the frame`,\"previewIdvOnboardingHeadline2\":`Hold your phone steady`,\"previewIdvOnboardingHeadline3\":`Make sure information is readable`,\"previewIdvIdFrontPrompt\":`Front of your ID`,\"previewIdvIdFrontHelper\":`Hold it inside the frame. We'll capture it automatically.`,\"previewIdvIdBackPrompt\":`Back of your ID`,\"previewIdvIdBackHelper\":`Flip it over and hold inside the frame.`,\"previewIdvStartCapture\":`Start Capture`,\"previewKybInProgressTitle\":`Business verification in progress`,\"previewKybInProgressBody\":`KYB checks are being processed in the background.`,\"previewKybDocumentsTitle\":`Business Documents`,\"previewKybDocumentsBody\":`Please upload the required business documents to proceed with verification.`,\"previewKybUploadTitle\":`Upload: {{label}}`,\"previewKybRequirementRequired\":`Required`,\"previewKybRequirementOptional\":`Optional`,\"previewKybHeaderTitle\":`Business Verification`,\"previewKybHeaderDescription\":`We need a few details about your company and the people who own it.`,\"previewKybBack\":`Back`,\"previewKybSubmit\":`Submit \u0026 Continue`,\"previewKybPageBusinessInfo\":`Business Info`,\"previewKybPageAddress\":`Address`,\"previewKybPageUbos\":`Beneficial Owners`,\"previewKybPageOfficers\":`Officers`,\"previewKybPageDocuments\":`Documents`,\"previewKybFieldCountry\":`Country`,\"previewKybFieldFirstName\":`First Name`,\"previewKybFieldLastName\":`Last Name`,\"previewKybFieldOwnershipPercentage\":`Ownership %`,\"previewKybFieldControlType\":`Control Type`,\"previewKybFieldDateOfBirth\":`Date of Birth`,\"previewKybFieldNationality\":`Nationality`,\"previewKybFieldRole\":`Role`,\"previewKybEntityTypeLlc\":`Limited Liability Company (LLC)`,\"previewKybControlTypeOwnership\":`Ownership`,\"previewKybControlTypeVotingRights\":`Voting Rights`,\"previewKybOfficerRoleCeo\":`CEO`,\"previewKybOfficerRoleCfo\":`CFO`,\"previewKybBusinessInfoTitle\":`Business Information`,\"previewKybBusinessInfoLegalName\":`Business Legal Name`,\"previewKybBusinessInfoTradingName\":`Trading Name (DBA)`,\"previewKybBusinessInfoTradingNameHelper\":`If different from legal name`,\"previewKybBusinessInfoRegistrationNumber\":`Registration Number`,\"previewKybBusinessInfoTaxId\":`Tax ID`,\"previewKybBusinessInfoTaxIdHelper\":`EIN, BN, or VAT number`,\"previewKybBusinessInfoEntityType\":`Entity Type`,\"previewKybBusinessInfoJurisdictionCountry\":`Jurisdiction Country`,\"previewKybBusinessInfoJurisdictionState\":`Jurisdiction State/Province`,\"previewKybBusinessInfoDateOfIncorporation\":`Date of Incorporation`,\"previewKybBusinessInfoIndustryCode\":`Industry Code (NAICS/SIC)`,\"previewKybBusinessInfoWebsite\":`Website`,\"previewKybAddressTitle\":`Address`,\"previewKybAddressStreetAddress\":`Street Address`,\"previewKybAddressCity\":`City`,\"previewKybAddressStateProvince\":`State / Province`,\"previewKybAddressPostalCode\":`Postal Code`,\"previewKybUbosCardTitle\":`Beneficial owner`,\"previewKybUbosTotalOwnership\":`Total ownership:`,\"previewKybUbosAddUbo\":`Add beneficial owner`,\"previewKybUbosQuestion\":`Does any individual own 25% or more of the business, or exercise substantial control over it?`,\"previewKybUbosQuestionHelp\":`This includes ownership and control, such as a CEO or managing member, even with no ownership stake.`,\"previewKybUbosOwnershipHint\":`Enter 0 if control-only, no ownership stake`,\"previewKybOfficersCardTitle\":`Officer / Director`,\"previewKybOfficersAddOfficer\":`Add Officer or Director`,\"previewKybOfficersQuestion\":`Does the business have any officers or directors?`,\"previewKybOfficersQuestionHelp\":`Officers and directors are the people appointed to manage or direct the business.`,\"previewKybGateYes\":`Yes`,\"previewKybGateNo\":`No`,\"previewKybDocDefaultCertIncorporation\":`Certificate of Incorporation`,\"previewKybDocDefaultGoodStanding\":`Certificate of Good Standing`,\"previewPhoneTitle\":`Phone Verification`,\"previewPhoneBody\":`You'll receive a phone call to verify your identity. Keep your phone nearby.`,\"previewPhoneStart\":`Start Verification`,\"previewPhoneCallInProgressTitle\":`Call in progress`,\"previewPhoneCallInProgressMessage\":`Please answer the incoming call and follow the instructions provided.`,\"previewPhoneCompleteTitle\":`Verification Complete`,\"previewPhoneCompleteMessage\":`Your phone verification was successful.`,\"previewPhoneFailedTitle\":`Verification Call Failed`,\"previewPhoneFailedMessage\":`The verification call could not be completed. Please try again.`,\"previewPhoneRetry\":`Retry`,\"stepConfigRangeTooLow\":`Too low`,\"stepConfigRangeValid\":`Valid`,\"stepConfigRangeTooHigh\":`Too high`,\"stepConfigESignSigner2NeededSelect\":`Select a 2-signer DeepSign template to enable sender signing.`,\"stepConfigDeepAgeParentConnectWarning\":`Compliance check: Parent Connect admits an under-age applicant once a verified parent or guardian consents, instead of turning them away. Gambling regulators do not accept parental consent as a lawful basis for admitting anyone below the legal age. If you are licensed for betting, casino or other real-money gaming, do not enable this method. By enabling it you confirm that your service may lawfully be used by minors under adult supervision in every jurisdiction you operate in.`,\"stepConfigESignSigner1Only\":`This template only supports applicant signing.`,\"stepConfigESignMax2Signers\":`Workflow e-sign supports a maximum of 2 signer roles.`,\"stepConfigESignTemplateInfo\":`Workflow e-sign supports templates with 1 applicant signer, or 2 signer roles when the sender is also required to sign. Create or upload a new template in a new tab if needed, then return here to refresh and select it.`,\"stepConfigESignApplicantOnly\":`This template supports applicant-only signing.`,\"stepConfigESignSenderAssignRole\":`Sender signing is enabled for this template. Assign one signer role to the sender below.`,\"stepConfigESignEnableIncludeSender\":`This template has 2 signer roles. Enable \"Include sender as signer\" to use it in workflow e-sign.`,\"stepConfigESignMax2SignersPerTemplate\":`Workflow e-sign supports a maximum of 2 signer roles per template.`,\"stepConfigESignCreateUploadTemplate\":`Create / Upload Template`,\"stepConfigESignManageTemplates\":`Manage Templates`,\"stepConfigESignRefreshTemplates\":`Refresh Templates`,\"stepConfigESignCreateHint\":`Create templates in the E-Signature section to use here.`,\"stepConfigFormFieldsHint\":`Form fields the applicant needs to fill in`,\"stepConfigAddField\":`Add Field`,\"stepConfigDocsHint\":`Documents the applicant needs to upload`,\"stepConfigDocPlaceholder\":`e.g., Articles of Incorporation`,\"stepConfigAddDocument\":`Add Document`,\"stepConfigMinOptionalUploadsLabel\":`Minimum optional uploads required`,\"stepConfigMinOptionalUploadsHint\":`How many optional documents must be uploaded (0 = no minimum)`,\"previewMinOptionalUploadsMessage\":`At least {{count}} optional upload(s) required`,\"stepConfigPromptsHint\":`Actions for applicant to perform in their photo`,\"stepConfigPromptPlaceholder\":`e.g., Hold two fingers up`,\"stepConfigAddPrompt\":`Add Prompt`,\"stepConfigWeightAllocation\":`Weight Allocation`,\"stepConfigLayerArMesh\":`AR Mesh`,\"stepConfigLayerDevice\":`Device`,\"stepConfigLayerMedia\":`Media`,\"stepConfigLayerEnvironment\":`Environment`,\"stepConfigNoOptions\":`There are no configuration options for this service.`,\"stepConfigFieldLabelPlaceholder\":`Field label (e.g., Company Name)`,\"stepConfigFieldLabelRequired\":`Label is required`,\"stepConfigFieldTypeShortText\":`Short Text`,\"stepConfigFieldTypeDropdown\":`Dropdown Select`,\"stepConfigFieldTypeCheckbox\":`Checkbox Select`,\"stepConfigFieldTypeYesNo\":`Yes/No Select`,\"stepConfigFieldTypeDate\":`Date Select`,\"stepConfigFieldTypeNumber\":`Number Input`,\"stepConfigAgeSelectCategories\":`Select categories to enforce`,\"stepConfigAgeSelectCountries\":`Select Countries`,\"stepConfigAgeSelectCategoriesFirst\":`Select categories first…`,\"stepConfigAgeSearchCountries\":`Search countries…`,\"stepConfigAgeMinimumAccepted\":`Minimum Accepted Age`,\"stepConfigAgeCategoryOnlineGaming\":`Online Gaming / Gambling`,\"stepConfigAgeCategoryAlcoholTobacco\":`Alcohol / Tobacco`,\"stepConfigAgeCategoryAdultContent\":`Adult Content`,\"stepConfigCustomizeQuestions\":`Customize Questions`,\"stepConfigQuestionCount_one\":`{{count}} question`,\"stepConfigQuestionCount_other\":`{{count}} questions`,\"stepConfigSectionCount_one\":`{{count}} section`,\"stepConfigSectionCount_other\":`{{count}} sections`,\"stepConfigQuestionRequired\":`Required`,\"stepConfigQuestionOptional\":`Optional`,\"stepConfigQuestionConditional\":`Conditional`,\"stepConfigQuestionOptions\":`Options (comma-separated)`,\"stepConfigQuestionOptionsFromList\":`Country list ({{count}} options)`,\"stepConfigDialogCancel\":`Cancel`,\"stepConfigDialogSave\":`Save Changes`,\"stepConfigInputType\":{\"short-text\":`Short Text`,\"long-text\":`Long Text`,\"dropdown\":`Dropdown`,\"multi-select\":`Multi-Select`,\"checkbox\":`Checkbox`,\"yes-no\":`Yes/No`,\"date\":`Date`,\"number\":`Number`,\"currency\":`Currency`,\"file-upload\":`File Upload`},\"previewTitleSearchTitle\":`Title Search`,\"previewTitleSearchBody\":`\u003c1>{{organization}}\u003c/1> will be running a title check on your residential address. Please enter your current residential address below.`,\"previewTitleSearchAddressLabel\":`RESIDENTIAL ADDRESS`,\"previewTitleSearchAddressPlaceholder\":`Address`,\"previewTitleSearchUnitPlaceholder\":`Unit / Apt Number (if applicable)`,\"previewTitleSearchSubmit\":`Confirm \u0026 Next Step`,\"stepDescIdVerification\":`Verify government-issued identity documents`,\"stepDescFaceLiveness\":`Real-time liveness detection to prevent spoofing`,\"stepDescDeepfakeDetection\":`Real-time detection to prevent swapping`,\"stepDescAddressVerification\":`Verify applicant address through location-based quiz`,\"stepDescPhoneVerification\":`Verify identity through a spoken prompt over phone`,\"stepDescAgeEstimation\":`AI-based age verification without document upload`,\"stepDescPepSanctions\":`Check against global PEP and sanctions lists`,\"stepDescAdverseMedia\":`Search for negative news and media mentions`,\"stepDescBankStatementUpload\":`Retrieve and analyze bank statements`,\"stepDescAiBankStatementAnalysis\":`AI-powered analysis of bank statements`,\"stepDescNfcVerification\":`Read and verify NFC chip data from passports`,\"stepDescPassportNfcScanner\":`Scan and verify passport NFC chip data`,\"stepDescCustomPrompt\":`Add custom instructions for the applicant`,\"stepDescDocumentUpload\":`Upload and verify arbitrary documents`,\"stepDescTitleSearch\":`Retrieve title information about a residential address`,\"stepDescESignature\":`Collect legally binding electronic signatures from applicants and signers`,\"stepDescCustomForm\":`AML questionnaires and custom compliance forms`,\"stepDescConsent\":`Collect applicant consent before specific verification steps`,\"stepDescCreditCheck\":`Run a soft or hard credit inquiry on an applicant to assess financial risk`,\"stepDescCriminalBackgroundCheck\":`Run a criminal background check on an applicant`,\"stepDescVulnerableSectorCheck\":`Run a vulnerable sector check for positions working with vulnerable populations`,\"stepDescFinancialCrimeCheck\":`Screen for financial crimes and fraud history`,\"stepDescEducationConfirmation\":`Verify applicant education credentials against institutional records`,\"stepDescKyb\":`Know Your Business — verify corporate entities, ownership structures, and beneficial owners`,\"stepDescWhiteLabel\":`Apply white-labeling to this workflow session`,\"stepDescIpJurisdiction\":`Enforce allowed jurisdictions and IP reputation rules`,\"stepDescVpnDetection\":`Detect VPNs, proxies, and Tor and act on confidence`,\"stepDescInjectionDetection\":`Detect biometric and session injection attacks`,\"stepDescAntiCheat\":`Detect multi-accounting and enforce self-exclusion`,\"stepConfig\":{\"stepUpNeedsEscalation\":`Step-up only takes effect when an Escalation Type is set below — until then it behaves as Flag.`,\"id-verification\":{\"fraud-analysis-settings\":{\"groupName\":`Fraud Analysis`,\"groupTooltip\":`Activate our fraud prevention to ensure identification is authentic.`,\"enable-fraud-analysis\":{\"label\":`Enable Fraud Analysis`,\"sublabel\":`Activate our fraud prevention to ensure identification is authentic. (This will add $0.60 to the session cost)`}},\"fraud-analysis-escalation\":{\"groupName\":`Escalation`,\"groupTooltip\":`Trigger an extra verification action when Fraud Analysis returns a high-risk result.`,\"escalation-type\":{\"label\":`Escalation type`,\"options\":{\"none\":{\"label\":`None`},\"nfc-passport\":{\"label\":`Passport NFC Scan`},\"address-verification\":{\"label\":`Address Verification Quiz`},\"face-liveness\":{\"label\":`Face Liveness`}}},\"escalation-risk-threshold\":{\"label\":`Trigger when risk is at or above`},\"extra-charge-warning\":`Enabling an escalation step may add an additional charge to each session that triggers it.`},\"id-scan-settings\":{\"groupName\":`Additional Required Documents`,\"groupTooltip\":`Enable the requesting of additional documents.`,\"require-secondary-id\":{\"label\":`Require Secondary ID`},\"require-tertiary-id\":{\"label\":`Require Tertiary ID`}},\"id-scan-face-settings\":{\"groupName\":`Required ID Faces`,\"groupTooltip\":`Select which faces of the ID document(s) are required for verification.`,\"require-front-only\":{\"label\":`Require Front Only`}},\"face-scan-settings\":{\"groupName\":`Face Photos`,\"groupTooltip\":`Specify which face photos are required.`,\"face-front-photo-only\":{\"label\":`Front Photo Only`}},\"age-restriction-settings\":{\"groupName\":`Age Restriction`,\"groupTooltip\":`Set age requirements for this verification step.`,\"age-restriction-mode\":{\"label\":`Mode`},\"minimum-age\":{\"label\":`Minimum Age`,\"lowerLabel\":`Too young`,\"upperLabel\":`Too old`},\"country-category-restrictions\":{\"label\":`Country \u0026 Category Rules`},\"country-category-minimum-age\":{\"label\":`Overall Minimum Age`}},\"expiry-date-settings\":{\"groupName\":`Minimum ID Validity`,\"groupTooltip\":`Set the minimum number of days an ID must remain valid after the date of submission.`,\"expiry-date\":{\"label\":`Expiry Date`}},\"valid-countries-settings\":{\"groupName\":`Valid Countries`,\"groupTooltip\":`Choose which countries are accepted for ID verification.`,\"accept-all-countries\":{\"label\":`Accept All Countries`},\"valid-countries\":{\"label\":`Customize Countries`,\"options\":{\"na-countries\":{\"description\":`North American countries`},\"eu-countries\":{\"description\":`European countries`},\"sa-countries\":{\"description\":`South American countries`},\"as-countries\":{\"description\":`Asian countries`},\"af-countries\":{\"description\":`African countries`},\"oc-countries\":{\"description\":`Oceanian countries`}}}},\"valid-states-settings\":{\"groupName\":`Valid States / Provinces`,\"groupTooltip\":`Choose which states and provinces ID documents are allowed from.`,\"valid-states\":{\"label\":`Valid States / Provinces`,\"options\":{\"canada\":{\"description\":`Canadian provinces and territories`},\"united-states\":{\"description\":`States in the United States`}}}},\"valid-id-types-settings\":{\"groupName\":`Valid ID Types`,\"groupTooltip\":`Choose which ID types are allowed for verification.`,\"id-confidence-threshold-enabled\":{\"label\":`Enforce ID Confidence Threshold`},\"id-confidence-threshold\":{\"label\":`Minimum confidence`,\"caption\":`If an ID isn't recognized or its match confidence is below this threshold, the verification is flagged. If you've enabled Auto Failure or Auto Decline, that action is triggered automatically; otherwise it's surfaced for review in the back office.`},\"valid-id-types\":{\"label\":`Valid ID Types`,\"categoryLabel\":`Continent`,\"optionLabel\":`ID Type`,\"options\":{\"north-america\":{\"category\":`North America`,\"description\":`North American ID types`,\"categoryOptions\":{\"driver-license-ca\":{\"name\":`Driver's License (CA)`},\"passport-ca\":{\"name\":`Passport (CA)`},\"pr-card-ca\":{\"name\":`PR Card (CA)`},\"military-id-ca\":{\"name\":`Military ID (CA)`},\"firearm-license-ca\":{\"name\":`Firearms License (CA)`},\"nexus-card-ca\":{\"name\":`Nexus Card (CA)`},\"driver-license-us\":{\"name\":`Driver's License (US)`},\"passport-us\":{\"name\":`Passport (US)`},\"pr-card-us\":{\"name\":`Green Card (US)`},\"military-id-us\":{\"name\":`Military ID (US)`},\"firearm-license-us\":{\"name\":`Firearms License (US)`},\"nexus-card-us\":{\"name\":`Nexus Card (US)`},\"driver-license-mx\":{\"name\":`Driver's License (MX)`},\"passport-mx\":{\"name\":`Passport (MX)`},\"national-id-mx\":{\"name\":`INE / National ID (MX)`}}},\"europe\":{\"category\":`Europe`,\"description\":`European ID types`,\"categoryOptions\":{\"passport-eu\":{\"name\":`Passport`},\"driver-license-eu\":{\"name\":`Driver's License`},\"national-id-eu\":{\"name\":`National ID Card`},\"residence-permit-eu\":{\"name\":`Residence Permit`},\"military-id-eu\":{\"name\":`Military ID Card`}}},\"south-america\":{\"category\":`South America`,\"description\":`South American ID types`,\"categoryOptions\":{\"passport-sa\":{\"name\":`Passport`},\"driver-license-sa\":{\"name\":`Driver's License`},\"national-id-sa\":{\"name\":`National ID Card`}}},\"asia\":{\"category\":`Asia`,\"description\":`Asian ID types`,\"categoryOptions\":{\"passport-as\":{\"name\":`Passport`},\"driver-license-as\":{\"name\":`Driver's License`},\"national-id-as\":{\"name\":`National ID Card`},\"aadhaar-in\":{\"name\":`Aadhaar Card`},\"pan-card-in\":{\"name\":`PAN Card`}}},\"africa\":{\"category\":`Africa`,\"description\":`African ID types`,\"categoryOptions\":{\"passport-af\":{\"name\":`Passport`},\"driver-license-af\":{\"name\":`Driver's License`},\"national-id-af\":{\"name\":`National ID Card`}}},\"oceania\":{\"category\":`Oceania`,\"description\":`Oceanian ID types`,\"categoryOptions\":{\"passport-oc\":{\"name\":`Passport`},\"driver-license-oc\":{\"name\":`Driver's License`},\"national-id-oc\":{\"name\":`National ID Card`},\"medicare-card-au\":{\"name\":`Medicare Card`}}}}}}},\"face-liveness\":{\"face-liveness-settings\":{\"groupName\":`Face Liveness Settings`,\"groupTooltip\":`Settings for face liveness.`,\"preferred-liveness-method\":{\"label\":`Preferred Liveness Method`,\"options\":{\"FaceMovementChallenge\":{\"label\":`Face Movement`},\"FaceMovementAndLightChallenge\":{\"label\":`Flashing Lights`}}}},\"face-liveness-confidence-settings\":{\"groupName\":`Face Liveness Confidence`,\"groupTooltip\":`Settings for face liveness confidence.`,\"confidence-threshold\":{\"label\":`Confidence Threshold`}}},\"deepfake-detection\":{\"deepfake-detection-settings\":{\"groupName\":`Deepfake Detection Settings`,\"groupTooltip\":`Settings for verification.`,\"mesh-visuals\":{\"label\":`Mesh Visuals`,\"options\":{\"3d-ar-mesh\":{\"label\":`3D AR Mesh`},\"no-mesh\":{\"label\":`No Mesh Visuals`}}},\"use-custom-word\":{\"label\":`Use Custom Challenge Word`},\"challenge-word\":{\"label\":`Challenge Word`}},\"deepfake-confidence-settings\":{\"groupName\":`Deepfake Confidence`,\"groupTooltip\":`Settings for deepfake detection confidence.`,\"confidence-threshold\":{\"label\":`Confidence Threshold`}},\"background-fraud-prevention\":{\"groupName\":`Background Fraud Prevention`,\"groupTooltip\":`Additional security layers that run alongside the face scan to detect injected sessions, emulated devices, and manipulated environments.`,\"bfp-enabled\":{\"label\":`Enable Background Fraud Prevention`}},\"bfp-device-integrity\":{\"groupName\":`Device Integrity`,\"groupTooltip\":`Detects virtual machines, emulators, and headless browsers by fingerprinting the runtime environment. Runs once before camera access is granted.`,\"device-integrity-enabled\":{\"label\":`Enable Device Integrity Check`},\"block-emulators\":{\"label\":`Block Emulators`},\"block-headless-browsers\":{\"label\":`Block Headless Browsers`},\"soft-signal-sensitivity\":{\"label\":`Soft Signal Sensitivity`}},\"bfp-media-source\":{\"groupName\":`Media Source Validation`,\"groupTooltip\":`Validates the video feed source to detect virtual cameras, video injection, and replay attacks.`,\"media-source-enabled\":{\"label\":`Enable Media Source Validation`},\"block-virtual-cameras\":{\"label\":`Block Virtual Cameras`},\"enable-challenge-response\":{\"label\":`Enable Challenge-Response Verification`},\"frame-timing-sensitivity\":{\"label\":`Frame Timing Sensitivity (ms)`},\"challenge-pass-threshold\":{\"label\":`Challenge Pass Threshold`,\"options\":{\"2-of-3\":{\"label\":`2 of 3`},\"3-of-3\":{\"label\":`3 of 3`}}}},\"bfp-environment-analysis\":{\"groupName\":`Environment Analysis`,\"groupTooltip\":`Analyzes video frames for background manipulation, lighting inconsistencies, and compositing artifacts.`,\"environment-enabled\":{\"label\":`Enable Environment Analysis`},\"edge-consistency-weight\":{\"label\":`Edge Consistency Weight`},\"lighting-coherence-weight\":{\"label\":`Lighting Coherence Weight`},\"compression-artifact-weight\":{\"label\":`Compression Artifact Weight`},\"analysis-frequency\":{\"label\":`Analysis Frequency`,\"options\":{\"every-frame\":{\"label\":`Every Frame`},\"every-3rd\":{\"label\":`Every 3rd Frame`},\"every-5th\":{\"label\":`Every 5th Frame`},\"every-10th\":{\"label\":`Every 10th Frame`}}}},\"bfp-verdict-thresholds\":{\"groupName\":`Verdict Thresholds`,\"groupTooltip\":`Configure the score thresholds for automatic verdict determination.`,\"verdict-thresholds\":{\"label\":`Verdict Thresholds`,\"lowerLabel\":`Auto Reject`,\"middleLabel\":`Manual Review`,\"upperLabel\":`Auto Pass`}}},\"consent\":{\"consent-steps\":{\"groupName\":`Step Consent`,\"groupTooltip\":`Choose which steps require consent before proceeding.`,\"face-liveness\":{\"label\":`Face Liveness`,\"sublabel\":`Prompt the applicant for consent before performing face liveness.`},\"face-liveness-require-signature\":{\"label\":`Require Signature`,\"sublabel\":`Require the applicant to provide a signature along with consent.`}}},\"address-verification\":{\"address-verification-settings\":{\"groupName\":`Address Verification Settings`,\"groupTooltip\":`Configure the address verification quiz options.`,\"num-questions\":{\"label\":`Number of Questions`}},\"address-verification-escalation\":{\"groupName\":`Escalation`,\"groupTooltip\":`When the address quiz result is inconclusive, require the applicant to upload a proof-of-address document.`,\"enable-address-escalation\":{\"label\":`Escalate to Document Upload on Failure`,\"sublabel\":`If the address quiz does not pass, the applicant will be asked to upload a document showing their name and address.`}}},\"phone-verification\":{\"phone-verification-settings\":{\"groupName\":`Phone Verification Settings`,\"groupTooltip\":`Configure the verification prompt the user must say during the phone call.`,\"verification-prompt\":{\"label\":`Verification Prompt`}}},\"age-estimation\":{\"age-restriction-settings\":{\"groupName\":`Age Restriction`,\"groupTooltip\":`Set age requirements for this verification step.`,\"age-restriction-mode\":{\"label\":`Mode`},\"minimum-age\":{\"label\":`Minimum Age`,\"lowerLabel\":`Too young`,\"upperLabel\":`Too old`},\"country-category-restrictions\":{\"label\":`Country \u0026 Category Rules`},\"country-category-minimum-age\":{\"label\":`Overall Minimum Age`}}},\"bank-statement-upload\":{\"bank-statement-settings\":{\"groupName\":`Statement Upload Settings`,\"groupTooltip\":`Settings for bank statement upload step.`,\"account-type\":{\"label\":`Account Type`,\"options\":{\"checking\":{\"label\":`Checking`},\"savings\":{\"label\":`Savings`}}},\"statement-period\":{\"label\":`Statement Period`,\"options\":{\"3\":{\"label\":`3 Months`},\"6\":{\"label\":`6 Months`},\"12\":{\"label\":`12 Months`}}},\"country\":{\"label\":`Country`,\"options\":{\"canada\":{\"label\":`Canada`},\"usa\":{\"label\":`United States of America`}}}},\"analysis-types\":{\"groupName\":`Analysis Types`,\"groupTooltip\":`Select one or more AI analyses to run on the bank statement. Multiple can be enabled.`,\"transaction-categorization\":{\"label\":`Transaction Categorization`},\"net-worth-assessment\":{\"label\":`Net Worth Assessment`},\"mortgage-qualification-report\":{\"label\":`Mortgage Qualification Report`},\"tenant-financial-screening\":{\"label\":`Tenant Financial Screening`},\"fraud-anomaly-detection\":{\"label\":`Fraud \u0026 Anomaly Detection`}}},\"custom-prompt\":{\"custom-instructions\":{\"custom-prompts-list\":{\"label\":`Custom Prompt`}}},\"document-upload\":{\"document-upload-instructions\":{\"document-upload-list\":{\"label\":`Document Upload`}},\"document-analysis-settings\":{\"groupName\":`Document Analysis`,\"groupTooltip\":`AI-powered analysis scans uploaded documents for fraud indicators, metadata inconsistencies, and tampering signals (+$0.40/session)`,\"enable-document-risk-analysis\":{\"label\":`Document Fraud Analysis`}}},\"title-search\":{\"title-search-settings\":{\"groupName\":`Title Search Settings`,\"groupTooltip\":`Configure the title search options.`,\"title-search-country\":{\"label\":`Country`,\"options\":{\"usa\":{\"label\":`United States of America`}}},\"enhanced-title-search\":{\"label\":`Enhanced Title Search`,\"sublabel\":`Adds deeper ownership history and lien analysis. Adds $5.00 to the report cost.`}},\"title-search-location-info\":{\"groupName\":`Detailed Location Info`,\"groupTooltip\":`Select which location details to include in the title search results.`,\"location-info-fields\":{\"label\":`Location Information Fields`,\"options\":{\"location-fields\":{\"description\":`Address and geographic location details`}}}}},\"e-signature\":{\"e-signature-settings\":{\"groupName\":`E-Signature Internal Settings`,\"groupTooltip\":`Internal workflow e-sign compatibility settings.`},\"esign-template\":{\"groupName\":`Template`,\"groupTooltip\":`Use an existing template with pre-configured documents and signature fields.`,\"template-id\":{\"label\":`Select Template`}},\"esign-document-setup\":{\"groupName\":`Document Setup`,\"groupTooltip\":`Upload documents (up to 25) and configure signature fields for sender and recipient.`,\"documents\":{\"label\":`Documents \u0026 Fields`}},\"esign-signature-method\":{\"groupName\":`Signature Method`,\"groupTooltip\":`Control how the recipient can sign the document.`,\"allow-typed-signature\":{\"label\":`Allow Typed Signature`}}},\"custom-form\":{\"custom-form-templates\":{\"groupName\":`AML Questionnaire Templates`,\"groupTooltip\":`Toggle on a pre-built questionnaire for your industry. Sections can be individually enabled and customized.`},\"form-fields\":{\"groupName\":`Custom Form Fields`,\"groupTooltip\":`Define additional custom fields for the applicant to fill in.`,\"form-fields-list\":{\"label\":`Form Field`}}},\"credit-check\":{\"credit-check-settings\":{\"groupName\":`Credit Check Settings`,\"groupTooltip\":`Configure the credit check options.`,\"credit-check-type\":{\"label\":`Type`,\"options\":{\"consumer\":{\"label\":`Consumer`},\"commercial\":{\"label\":`Commercial`,\"hint\":`Talk to sales`}}},\"credit-check-inquiry-type\":{\"label\":`Credit Type`,\"sublabel\":`Soft checks do not affect the applicant's credit score. Hard checks may impact their score.`,\"options\":{\"soft\":{\"label\":`Soft Check`},\"hard\":{\"label\":`Hard Check`}}},\"credit-check-country\":{\"label\":`Country`,\"options\":{\"canada\":{\"label\":`Canada`},\"usa\":{\"label\":`United States of America`,\"hint\":`Talk to sales`}}}}},\"criminal-background-check\":{\"criminal-background-check-settings\":{\"groupName\":`Criminal Background Check Settings`,\"groupTooltip\":`Select the country for the background check. Pricing varies by country.`,\"criminal-background-check-country\":{\"label\":`Country`,\"sublabel\":`Canada — $25.00/session | USA — $10.00/session`,\"options\":{\"usa\":{\"label\":`USA ($10.00)`},\"canada\":{\"label\":`Canada ($25.00)`}}}}},\"vulnerable-sector-check\":{\"vulnerable-sector-check-settings\":{\"groupName\":`Vulnerable Sector Check Settings`,\"groupTooltip\":`Configure the vulnerable sector check options.`,\"vulnerable-sector-check-country\":{\"label\":`Country`,\"options\":{\"canada\":{\"label\":`Canada`},\"usa\":{\"label\":`USA`}}}}},\"financial-crime-check\":{\"financial-crime-check-settings\":{\"groupName\":`Financial Crime Check Settings`,\"groupTooltip\":`Configure the financial crime check options.`,\"financial-crime-check-country\":{\"label\":`Country`,\"options\":{\"canada\":{\"label\":`Canada`},\"usa\":{\"label\":`USA`}}}}},\"education-confirmation\":{\"education-confirmation-settings\":{\"groupName\":`Education Confirmation Settings`,\"groupTooltip\":`Configure institution selection and auto-decline behavior.`,\"education-institutions\":{\"label\":`Select Institutions`},\"education-auto-decline\":{\"label\":`Auto-Decline`,\"sublabel\":`Automatically reject an application if the applicant's listed education does not match their verified records`}}},\"kyb\":{\"kyb-data-sources\":{\"groupName\":`Data Source \u0026 Provider Selection`,\"groupTooltip\":`Configure which data sources feed into the KYB workflow — government registries, commercial providers, sanctions lists, and PEP databases.`,\"kyb-government-registries\":{\"label\":`Government Registries`},\"kyb-commercial-providers\":{\"label\":`Commercial Data Providers (Dun \u0026 Bradstreet, Bureau van Dijk)`},\"kyb-sanctions-lists\":{\"label\":`Sanctions Lists (OFAC, EU, UN, HMT)`},\"kyb-pep-databases\":{\"label\":`PEP Databases`}},\"kyb-approval-logic\":{\"groupName\":`Approval \u0026 Escalation Logic`,\"groupTooltip\":`Configure auto-approve thresholds, escalation triggers, assignment routing, and SLA timers.`,\"kyb-auto-approve-threshold\":{\"label\":`Auto-Approve Risk Threshold`,\"sublabel\":`Auto-approve if risk score is below this value and all documents pass`},\"kyb-escalate-pep-hit\":{\"label\":`Escalate on PEP Hit`},\"kyb-escalate-sanctions-match\":{\"label\":`Escalate on Sanctions Match`},\"kyb-escalate-adverse-media\":{\"label\":`Escalate on Adverse Media Flag`},\"kyb-sla-hours\":{\"label\":`SLA Timer (hours)`,\"sublabel\":`Auto-escalate if a case sits longer than this. Set to 0 for no timer.`}},\"kyb-jurisdiction-rules\":{\"groupName\":`Jurisdiction Rule Engine`,\"groupTooltip\":`Toggle which jurisdictions you operate in. The workflow auto-adapts to the correct regulatory framework.`,\"kyb-jurisdiction-eu-amld\":{\"label\":`EU AMLD (Anti-Money Laundering Directives)`},\"kyb-jurisdiction-fincen-cdd\":{\"label\":`FinCEN CDD Rule (USA)`},\"kyb-jurisdiction-fintrac\":{\"label\":`FINTRAC (Canada)`},\"kyb-jurisdiction-uk-psc\":{\"label\":`UK PSC Register Checks`}},\"kyb-document-matrix\":{\"groupName\":`Document Requirements Matrix`,\"groupTooltip\":`Documents set to Required or Optional will appear as upload fields for the user to submit. Documents set to Not Required will be hidden.`,\"kyb-doc-certificate-incorporation\":{\"label\":`Certificate of Incorporation`,\"options\":{\"required\":{\"label\":`Required`},\"optional\":{\"label\":`Optional`},\"none\":{\"label\":`Not Required`}}},\"kyb-doc-good-standing\":{\"label\":`Certificate of Good Standing`,\"sublabel\":`Typically optional for domestic, required for foreign entities`,\"options\":{\"required\":{\"label\":`Required`},\"optional\":{\"label\":`Optional`},\"none\":{\"label\":`Not Required`}}},\"kyb-doc-shareholder-register\":{\"label\":`Shareholder Register`,\"sublabel\":`Required above a certain ownership threshold`,\"options\":{\"required\":{\"label\":`Required`},\"optional\":{\"label\":`Optional`},\"none\":{\"label\":`Not Required`}}},\"kyb-doc-board-resolutions\":{\"label\":`Board Resolutions`,\"sublabel\":`Conditional on entity complexity`,\"options\":{\"required\":{\"label\":`Required`},\"optional\":{\"label\":`Optional`},\"none\":{\"label\":`Not Required`}}},\"kyb-doc-ubo-declaration\":{\"label\":`UBO Declaration`,\"options\":{\"required\":{\"label\":`Required`},\"optional\":{\"label\":`Optional`},\"none\":{\"label\":`Not Required`}}},\"kyb-doc-financial-statements\":{\"label\":`Financial Statements`,\"options\":{\"required\":{\"label\":`Required`},\"optional\":{\"label\":`Optional`},\"none\":{\"label\":`Not Required`}}}}},\"ip-jurisdiction\":{\"ip-jurisdiction-settings\":{\"groupName\":`IP Jurisdiction Settings`,\"groupTooltip\":`Configure which jurisdictions are allowed or blocked based on the applicant IP address.`,\"allowed-jurisdictions\":{\"label\":`Allowed Jurisdictions`},\"blocked-jurisdictions\":{\"label\":`Blocked Jurisdictions`},\"out-of-jurisdiction-action\":{\"label\":`Out-of-Jurisdiction Action`,\"options\":{\"allow\":{\"label\":`Allow`},\"flag\":{\"label\":`Flag`},\"step-up\":{\"label\":`Step-up`},\"block\":{\"label\":`Block`}}},\"datacenter-ip-action\":{\"label\":`Datacenter IP Action`,\"options\":{\"allow\":{\"label\":`Allow`},\"flag\":{\"label\":`Flag`},\"block\":{\"label\":`Block`}}},\"trusted-ip-list\":{\"label\":`Trusted IPs / ASNs`}},\"ip-jurisdiction-escalation\":{\"groupName\":`Escalation`,\"groupTooltip\":`Optional step-up verification to run when jurisdiction or reputation checks require additional assurance.`,\"escalation-type\":{\"label\":`Escalation type`,\"options\":{\"none\":{\"label\":`None`},\"nfc-passport\":{\"label\":`Passport NFC Scan`},\"address-verification\":{\"label\":`Address Verification Quiz`}}}}},\"vpn-detection\":{\"vpn-detection-settings\":{\"groupName\":`VPN / Proxy / Tor Settings`,\"groupTooltip\":`Configure detection and enforcement for VPNs, datacenter proxies, and Tor exit nodes.`,\"vpn-enabled\":{\"label\":`Detect VPNs`},\"vpn-action\":{\"label\":`VPN Action`,\"options\":{\"allow\":{\"label\":`Allow`},\"flag\":{\"label\":`Flag`},\"step-up\":{\"label\":`Step-up`},\"block\":{\"label\":`Block`}}},\"datacenter-enabled\":{\"label\":`Detect Datacenter Proxies`},\"datacenter-action\":{\"label\":`Datacenter Proxy Action`,\"options\":{\"allow\":{\"label\":`Allow`},\"flag\":{\"label\":`Flag`},\"block\":{\"label\":`Block`}}},\"tor-enabled\":{\"label\":`Detect Tor`},\"tor-action\":{\"label\":`Tor Action`,\"options\":{\"allow\":{\"label\":`Allow`},\"flag\":{\"label\":`Flag`},\"block\":{\"label\":`Block`}}},\"confidence-threshold\":{\"label\":`Confidence Threshold`},\"trusted-asn-list\":{\"label\":`Trusted ASNs`},\"trusted-ip-list\":{\"label\":`Trusted IPs`}},\"vpn-detection-escalation\":{\"groupName\":`Escalation`,\"groupTooltip\":`Optional step-up verification to run when VPN, proxy, or Tor detection requires additional assurance.`,\"escalation-type\":{\"label\":`Escalation type`,\"options\":{\"none\":{\"label\":`None`},\"nfc-passport\":{\"label\":`Passport NFC Scan`},\"address-verification\":{\"label\":`Address Verification Quiz`}}}}},\"injection-detection\":{\"injection-detection-settings\":{\"groupName\":`Injection Detection Settings`,\"groupTooltip\":`Detect injected/replayed biometric feeds and automated clients during capture.`,\"action-on-detection\":{\"label\":`Action on Detection`,\"options\":{\"flag\":{\"label\":`Flag`},\"rechallenge\":{\"label\":`Re-challenge`},\"step-up\":{\"label\":`Step-up`},\"block\":{\"label\":`Block`}}},\"automation-handling\":{\"label\":`Automation Handling`,\"options\":{\"ignore\":{\"label\":`Ignore`},\"flag\":{\"label\":`Flag`},\"block\":{\"label\":`Block`}}},\"confidence-threshold\":{\"label\":`Confidence Threshold`}},\"injection-detection-escalation\":{\"groupName\":`Escalation`,\"groupTooltip\":`Optional step-up verification to run when Action on Detection is Step-up.`,\"escalation-type\":{\"label\":`Escalation Type`,\"options\":{\"none\":{\"label\":`None`},\"nfc-passport\":{\"label\":`Passport NFC Scan`},\"address-verification\":{\"label\":`Address Verification Quiz`}}}}},\"anti-cheat\":{\"anti-cheat-duplicate\":{\"groupName\":`Multi-Accounting / Duplicate Detection`,\"groupTooltip\":`Detect applicants whose face already exists in your collection.`,\"duplicate-enabled\":{\"label\":`Enable Duplicate Detection`},\"match-threshold\":{\"label\":`Match Threshold`},\"action-on-duplicate\":{\"label\":`Action on Duplicate`,\"options\":{\"flag\":{\"label\":`Flag`},\"manual-review\":{\"label\":`Manual Review`},\"block\":{\"label\":`Block`}}}},\"anti-cheat-self-exclusion\":{\"groupName\":`Self-Exclusion`,\"groupTooltip\":`Block applicants on the operator self-exclusion list (by document number or flagged face). Self-exclusion hits always block.`,\"enabled\":{\"label\":`Enforce Self-Exclusion`}},\"anti-cheat-multi-accounting\":{\"groupName\":`Multi-Accounting (Session Linkage)`,\"groupTooltip\":`Flag applicants whose session links to existing accounts by shared signals (IP, biometric, document number, name + date of birth, device fingerprint). Complements duplicate detection; records the linked sessions for review.`,\"multi-account-enabled\":{\"label\":`Enable Multi-Accounting Detection`},\"signal-ip-enabled\":{\"label\":`Enable IP Signal`},\"signal-ip-weight\":{\"label\":`IP Signal Weight`},\"signal-biometric-enabled\":{\"label\":`Enable Biometric Signal`},\"signal-biometric-weight\":{\"label\":`Biometric Signal Weight`},\"signal-document-enabled\":{\"label\":`Enable Document Number Signal`},\"signal-document-weight\":{\"label\":`Document Number Signal Weight`},\"signal-namedob-enabled\":{\"label\":`Enable Name + Date of Birth Signal`},\"signal-namedob-weight\":{\"label\":`Name + Date of Birth Signal Weight`},\"signal-device-enabled\":{\"label\":`Enable Device Fingerprint Signal`},\"signal-device-weight\":{\"label\":`Device Fingerprint Signal Weight`},\"link-sensitivity\":{\"label\":`Link Sensitivity`},\"action-on-multi-account\":{\"label\":`Action on Linked Accounts`,\"options\":{\"flag\":{\"label\":`Flag`},\"manual-review\":{\"label\":`Manual Review`},\"block\":{\"label\":`Block`}}}}}},\"questionnaire\":{\"crypto-vasp\":{\"name\":`Crypto / VASP`,\"account-purpose\":{\"name\":`Account Purpose \u0026 Activity`},\"source-of-funds\":{\"name\":`Source of Funds \u0026 Wealth`},\"expected-activity\":{\"name\":`Expected Transaction Activity`},\"wallet-history\":{\"name\":`Wallet \u0026 Platform History`},\"corporate-entity\":{\"name\":`Corporate / Entity Information`},\"tax-residency\":{\"name\":`Tax Residency`},\"declarations\":{\"name\":`Declarations \u0026 Consent`}},\"fintech\":{\"name\":`Fintech`,\"account-purpose\":{\"name\":`Account Purpose \u0026 Services`},\"employment-income\":{\"name\":`Employment \u0026 Income`},\"source-of-funds\":{\"name\":`Source of Funds \u0026 Wealth`},\"expected-activity\":{\"name\":`Expected Transaction Activity`},\"business-entity\":{\"name\":`Business / Entity Information`},\"tax-residency\":{\"name\":`Tax Residency`},\"declarations\":{\"name\":`Declarations \u0026 Consent`}},\"real-estate\":{\"name\":`Real Estate`,\"transaction-details\":{\"name\":`Transaction Details`},\"source-of-funds\":{\"name\":`Source of Funds`},\"source-of-wealth\":{\"name\":`Source of Wealth \u0026 Income`},\"beneficial-ownership\":{\"name\":`Beneficial Ownership \u0026 Entity Details`},\"tax-residency\":{\"name\":`Tax Residency`},\"declarations\":{\"name\":`Declarations \u0026 Consent`}},\"higher-education\":{\"name\":`Higher Education`,\"student-info\":{\"name\":`Student / Applicant Information`},\"tuition-funds\":{\"name\":`Source of Tuition \u0026 Living Funds`},\"third-party-payer\":{\"name\":`Third-Party Payer Information`},\"expected-activity\":{\"name\":`Expected Account Activity`},\"tax-residency\":{\"name\":`Tax Residency`},\"declarations\":{\"name\":`Declarations \u0026 Consent`}}},\"templates\":{\"scratch\":{\"label\":`Create Your Own`,\"description\":`Build a custom workflow from the ground up`,\"features\":[`Full customization`,`Add any services you need`,`Configure each step individually`]},\"dual-id-verification\":{\"label\":`Basic KYC`,\"description\":`Simple identity verification workflow for basic know-your-customer requirements`,\"features\":[`Easy to set up and configure`,`Linear verification flow`,`Automatic status based on feature results`]},\"fintech-kyc-aml\":{\"label\":`Fintech KYC/AML`,\"description\":`Full compliance workflow for financial technology platforms`,\"features\":[`Identity verification`,`PEP/Sanctions screening`,`Bank statement analysis`]},\"loan-origination\":{\"label\":`Loan Origination Screening`,\"description\":`End-to-end loan application verification workflow`,\"features\":[`Full identity verification`,`Financial analysis`,`Digital signature collection`]},\"vehicle-leasing\":{\"label\":`Vehicle Leasing`,\"description\":`Comprehensive verification for vehicle leasing applications`,\"features\":[`Identity and financial verification`,`Credit assessment`,`E-signature collection`]},\"crypto-vasp\":{\"label\":`Crypto / VASP Onboarding`,\"description\":`AML-compliant onboarding for cryptocurrency and virtual asset platforms`,\"features\":[`Wallet \u0026 platform history collection`,`Source of funds verification`,`Enhanced transaction monitoring`]},\"insurance-underwriting\":{\"label\":`Insurance Underwriting`,\"description\":`Identity and risk verification for insurance policy applications`,\"features\":[`Applicant identity verification`,`Risk questionnaire collection`,`Document submission`]},\"new-hire-onboarding\":{\"label\":`New Hire Onboarding`,\"description\":`Comprehensive employee verification for new hires`,\"features\":[`Identity verification`,`Document collection`,`Custom form data`]},\"contractor-verification\":{\"label\":`Contractor Verification`,\"description\":`Verify independent contractors and freelancers before engagement`,\"features\":[`Identity and credential check`,`License and insurance upload`,`E-signature for agreements`]},\"vulnerable-sector\":{\"label\":`Vulnerable Sector Check (Canada Only)`,\"description\":`Enhanced screening for working with vulnerable populations`,\"features\":[`Identity verification`,`Custom form collection`,`Enhanced screening`]},\"online-gaming\":{\"label\":`Online Gaming (18+)`,\"description\":`Age verification workflow for online gaming platforms`,\"features\":[`Age verification`,`Identity verification`,`Geolocation compliance`]},\"restricted-content\":{\"label\":`Restricted Content`,\"description\":`Age estimation for restricted content access`,\"features\":[`AI-based age estimation`,`Quick verification`,`No document upload required`]},\"cannabis-dispensary\":{\"label\":`Cannabis Dispensary`,\"description\":`Age and identity verification for cannabis retail compliance`,\"features\":[`Age verification (19+/21+)`,`Government ID scan`,`Purchase limit tracking`]},\"student-enrollment\":{\"label\":`Student Enrollment`,\"description\":`Identity and credential verification for higher education admissions`,\"features\":[`Identity verification`,`Transcript and credential upload`,`International student compliance`]},\"scholarship-application\":{\"label\":`Scholarship Application`,\"description\":`Verify applicant identity and financial eligibility for scholarships`,\"features\":[`Financial disclosure form`,`Identity confirmation`,`Supporting document upload`]},\"exam-proctoring\":{\"label\":`Exam Proctoring`,\"description\":`Verify test-taker identity before remote examinations`,\"features\":[`Biometric face match`,`Deepfake detection`,`Real-time liveness check`]},\"online-dating\":{\"label\":`Online Dating`,\"description\":`Trust and safety verification for dating and social platforms`,\"features\":[`Face liveness verification`,`Deepfake prevention`,`Age confirmation`]},\"marketplace-seller\":{\"label\":`Marketplace Seller`,\"description\":`Verify seller identity for online marketplaces and platforms`,\"features\":[`Seller identity confirmation`,`Business document upload`,`Agreement e-signature`]},\"solicitor-kyc\":{\"label\":`Solicitor KYC`,\"description\":`Legal sector verification with biometric signatures`,\"features\":[`Identity verification`,`Biometric e-signature`,`Secure document transfer`]},\"realtor-screening\":{\"label\":`Realtor Pre-Screening`,\"description\":`Streamlined pre-qualification workflow for real estate transactions`,\"features\":[`Quick client data collection`,`Soft credit pre-qualification`,`Digital agreement signing`]},\"notary-verification\":{\"label\":`Notary Verification`,\"description\":`Remote online notarization identity verification workflow`,\"features\":[`Biometric identity confirmation`,`Credential-based authentication`,`Tamper-proof e-signature`]}},\"stepMasterVerification\":`Verify Your Identity`,\"previewMasterVerificationTitle\":`Verify your identity`,\"previewMasterVerificationBody\":`Your information is encrypted and only shared with {{organization}}.`,\"previewMasterVerificationProgressCompleted\":`{{completed}} / {{total}} completed`,\"previewMasterVerificationSecurityNotice\":`Protected by deepidv Secure Verification System.`,\"previewMasterVerificationRowIdVerification\":`ID Verification`,\"previewMasterVerificationRowFaceMatch\":`Face Match`,\"previewMasterVerificationRowFaceLiveness\":`Face Liveness`,\"previewMasterVerificationRowDeepfakeDetection\":`Deepfake Detection`,\"previewMasterVerificationRowAgeEstimation\":`Age Estimation`,\"previewMasterVerificationRowPepSanctions\":`PEP \u0026 Sanctions Screening`,\"previewMasterVerificationRowAdverseMedia\":`Adverse Media Screening`,\"previewMasterVerificationRowPassportNfc\":`Passport NFC Scan`,\"previewMasterVerificationRowCustomPrompt\":`Custom Prompts`,\"previewMasterVerificationRowAntiCheat\":`Face Check`,\"previewNfcScanTitle\":`Scan your passport`,\"previewNfcScanSubtitle\":`Take a photo of your valid passport to automatically fill in your details.`,\"previewNfcScanNow\":`Scan Now`,\"previewNfcCapturePrompt\":`Align your passport within the frame`,\"previewNfcCaptureHelper\":`Keep the entire passport visible in a well-lit area.`,\"previewNfcDetailsTitle\":`Passport Details`,\"previewNfcDetailsSubtitle\":`Enter the details from your passport data page.`,\"previewNfcDocumentNumber\":`Document Number`,\"previewNfcDateOfBirth\":`Date of Birth`,\"previewNfcExpiryDate\":`Expiry Date`,\"previewNfcDateFormat\":`Format: YYMMDD`,\"previewNfcContinueToNfc\":`Continue to NFC Scan`,\"previewNfcCompleteScanTitle\":`Complete NFC Scan`,\"previewNfcCompleteScanTitleDesktop\":`Complete NFC Scan on Mobile`,\"previewNfcQrScanInstructions\":`Scan the QR code with your smartphone camera to complete the NFC passport scan on your phone.`,\"previewNfcMobileInstructions\":`Open the deepidv app on your device and hold your passport against the back of your phone to read the NFC chip.`,\"previewNfcWaitingForScan\":`Waiting for scan to complete...`,\"previewNfcWaitingForScanDesktop\":`Waiting for scan on mobile...`,\"previewNfcOpenScanner\":`Open NFC Scanner`,\"previewProofCallHeaderTitle\":`Background Verification`,\"previewProofCallHeaderDescription\":`Please provide the contact details for your references. We will reach out to them to verify your information.`,\"previewProofCallReferenceTitle\":`Reference #{{number}}`,\"previewProofCallFieldFirstName\":`First Name`,\"previewProofCallFieldLastName\":`Last Name`,\"previewProofCallFieldCode\":`Code`,\"previewProofCallFieldPhone\":`Phone Number`,\"previewProofCallFieldCompany\":`Company (Optional)`,\"previewProofCallFieldEmail\":`Email (Optional)`,\"previewProofCallFieldRelationship\":`Relationship (Optional)`,\"previewProofCallSubmitting\":`Submitting...`,\"previewAntiCheatTitle\":`Confirm your face`,\"previewAntiCheatConsentNotice\":`Your photo is used to check for duplicate registrations.`,\"previewInjectionDetectionCheckingCamera\":`Checking your camera…`,\"previewAvInviteBody\":`invites you to verify your address.`,\"previewAvStart\":`Start Verification`,\"previewAvCaptureTitle\":`Verify Your Address`,\"previewAvCaptureDescription\":`Enter your residential address to begin the verification process.`,\"previewAvAddressLabel\":`Address`,\"previewAvAddressSelected\":`Address selected`,\"previewAvQuestionCounter\":`Question {{current}} of {{total}}`,\"previewAvQuestionPrompt\":`Which of these streets is closest to your home address?`,\"previewAvCompletionTitle\":`Verification completed`,\"previewCreditAuthTitle\":`Credit Authorization`,\"previewCreditAuthSubtitle\":`Complete the information below to authorize a {{country}} credit inquiry`,\"previewCreditCountryCanada\":`Canadian`,\"previewCreditCountryUsa\":`United States`,\"previewCreditPersonalInformation\":`Personal information`,\"previewCreditResidentialAddress\":`Residential address`,\"previewCreditFirstName\":`First Name`,\"previewCreditLastName\":`Last Name`,\"previewCreditDateOfBirth\":`Date of Birth`,\"previewCreditSin\":`Social Insurance Number (SIN)`,\"previewCreditSinHelper\":`Your SIN is encrypted and handled securely`,\"previewCreditAddress\":`Address`,\"previewCreditConsentTitle\":`Authorization \u0026 Consent`,\"previewCreditConsentBody\":`By checking the boxes below, I authorize a credit inquiry to be performed using the personal information provided above.`,\"previewCreditConsentAgree\":`I have read and agree to the above`,\"previewCreditConsentPolicies\":`By clicking here I agree to the \u003cpolicy>Privacy Policy\u003c/policy> and \u003cconsent>Credit Consent\u003c/consent>.`,\"previewCreditAuthorizeContinue\":`Authorize \u0026 Continue`,\"previewCreditAuthorizing\":`Authorizing…`,\"previewCreditFinePrint\":`By tapping Continue, I agree to deepidv's \u003cpolicy>Privacy Policy\u003c/policy> and consent to a credit check per the \u003cconsent>Credit Consent\u003c/consent> terms.`,\"previewBeatCreditCheck\":`Credit authorization`,\"previewCustomFormSectionQuestionCount\":`{{count}} questions`,\"previewCustomFormLongTextPlaceholder\":`Type your answer`,\"previewCustomFormCurrencyPlaceholder\":`0.00`,\"previewCustomFormFileUploadPlaceholder\":`Upload a file`,\"previewCustomFormShownIf\":`Shown if “{{question}}” is {{values}}.`,\"previewCustomFormShownIfNot\":`Shown if “{{question}}” is not {{values}}.`,\"previewCustomFormShownConditionally\":`Shown only for some applicants, depending on an earlier answer.`,\"previewCustomFormConditionOr\":` or `,\"previewCustomFormConditionSeparator\":`, `,\"previewCustomFormTextAnswer\":`Sample response`,\"previewCustomFormLongTextAnswer\":`Sample response provided by the applicant. In the live flow this is whatever they typed.`,\"previewCustomFormNumberAnswer\":`12`,\"previewCustomFormCurrencyAnswer\":`12,500.00`,\"previewCustomFormDateAnswer\":`1990-04-17`,\"previewCustomFormFileUploadAnswer\":`supporting-document.pdf`,\"previewBankConnectTitle\":`Connect Your Bank`,\"previewBankConnectSubtitle\":`Click below to securely link your bank account. We'll retrieve the last {{months}} months of statements.`,\"previewBankSelectYour\":`Please select your`,\"previewBankAccountCallout\":`{{accountType}} account`,\"previewBankAccountChecking\":`Checking`,\"previewBankAccountChequing\":`Chequing`,\"previewBankAccountSavings\":`Savings`,\"previewBankConnectAction\":`Connect Bank`,\"previewBankCredentialsTitle\":`Enter your credentials`,\"previewBankUsername\":`Username`,\"previewBankPassword\":`Password`,\"previewBankRequired\":`* Required`,\"previewBankGoToInstitution\":`Go to institution's website`,\"previewBankAccountSelectionTitle\":`Account selection`,\"previewBankAccountSelectionSubtitle\":`Select an account to connect`,\"previewBeatBankStatement\":`Bank connection`,\"previewESignatureDefaultDocument\":`agreement.pdf`,\"previewESignaturePageCount\":`Page {{current}} of {{total}}`,\"previewESignatureDocTitle\":`Service Agreement`,\"previewESignatureDocSubtitle\":`Please review the terms below before signing.`,\"previewESignatureDocParagraph1\":`This agreement sets out the terms under which the services described in the accompanying schedule are provided. By signing below, you confirm that the information you have supplied is accurate and complete to the best of your knowledge, and that you are authorised to enter into this agreement.`,\"previewESignatureDocParagraph2\":`The parties agree that the services will be performed with reasonable care and skill, and in accordance with the timelines set out in the schedule. Either party may terminate this agreement in writing, subject to the notice period described in the terms attached.`,\"previewESignatureFieldLabel\":`Signature`,\"previewBeatESignature\":`Document signing`,\"previewBeatTitleSearch\":`Property address`,\"previewAvQuestionPromptPostal\":`Which of these postal codes is associated with your address?`,\"previewAvQuestionPromptCity\":`Which of these cities have you lived in?`,\"previewAvQuestionPromptYears\":`How long have you lived at this address?`,\"previewAvQuestionPromptProperty\":`What type of property is this address?`,\"previewBeatBackgroundCheck\":`Background check`,\"previewBgcTitle\":`Background Check`,\"previewBgcDescription\":`Enter your details exactly as they appear on your official ID. Accurate information helps your check complete quickly, with no delays.`,\"previewBgcBack\":`Back`,\"previewBgcDateOfBirth\":`Date of birth`,\"previewBgcFirstName\":`First name`,\"previewBgcLastName\":`Last name`,\"previewBgcMiddleName\":`Middle name`,\"previewBgcCurrentCity\":`Current City`,\"previewBgcEmail\":`Email`,\"previewBgcBirthSurname\":`Birth surname`,\"previewBgcFormerName\":`Former name`,\"previewBgcPlaceOfBirth\":`Place of birth`,\"previewBgcGender\":`Gender`,\"previewBgcConsentBody\":`By checking the box below, I authorize a Background check to be performed using the personal information provided above and confirm the above information is correct.`,\"previewBgcConsentLabel\":`I consent to the background check`,\"previewBgcAdditionalInfoTitle\":`Additional Information`,\"previewBgcCurrentAddressDescription\":`Where do you live right now? Search to fill the address automatically.`,\"previewBgcPreviousAddressDescription\":`Tell us the address you lived at before your current one.`,\"previewBgcAddress\":`Address`,\"previewBgcNumber\":`Number`,\"previewBgcStreet\":`Street`,\"previewBgcApartment\":`Apartment`,\"previewBgcCity\":`City`,\"previewBgcProvince\":`Province`,\"previewBgcPostalCode\":`Postal Code`,\"previewBgcDeclarationDescription\":`Declare any previous offences, confirm where you're signing, type your full legal name, and sign below to authorize the check.`,\"previewBgcOffencesTitle\":`Previous Offences Declaration`,\"previewBgcOffencesDescription\":`Declare any prior criminal charges or convictions below.`,\"previewBgcAddOffence\":`Add Offence`,\"previewBgcOffencesEmpty\":`No offences declared. Click “Add Offence” if applicable.`,\"previewBgcSigningLocationTitle\":`Signing location`,\"previewBgcSigningLocationDescription\":`Where you are signing this consent.`,\"previewBgcSignatureTitle\":`Electronic Signature`,\"previewBgcFullLegalName\":`Full Legal Name`,\"previewBgcFullLegalNameHelper\":`Enter your full legal name as it appears on official documents`,\"previewBgcDrawSignature\":`Draw Signature`,\"previewBgcSignaturePlaceholder\":`Sign here`,\"previewBgcClear\":`Clear`,\"previewBgcAuthorizeContinue\":`Authorize \u0026 Continue`};const COUNTRY_ID_TYPES_DEFAULT_VALUE={};const COUNTRY_ID_TYPES_OPTIONS=[{\"id\":`africa`,\"category\":`Africa`,\"description\":`African country-specific ID documents`,\"countries\":[{\"id\":`DZ`,\"name\":`Algeria`,\"idTypes\":[{\"id\":`cid-dz`,\"name\":`Biometric National Identity Card`,\"localName\":`Carte Nationale d'Identité Biométrique Électronique (CNIBE)`,\"authority\":`Ministry of Interior`,\"format\":`18-digit NIN`,\"notes\":`Chip-based; mandatory for citizens`}]},{\"id\":`AO`,\"name\":`Angola`,\"idTypes\":[{\"id\":`cid-ao`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Ministry of Justice / DNIC`,\"format\":`Alphanumeric BI number`,\"notes\":`Mandatory from age 6`}]},{\"id\":`BJ`,\"name\":`Benin`,\"idTypes\":[{\"id\":`cid-bj`,\"name\":`Biometric National ID Card`,\"localName\":`Carte Nationale d'Identité Biométrique / CIP`,\"authority\":`ANIP`,\"format\":`10-digit NPI (Numéro Personnel d'Identification)`,\"notes\":`CIP certificate also used for KYC`}]},{\"id\":`BW`,\"name\":`Botswana`,\"idTypes\":[{\"id\":`cid-bw`,\"name\":`National Identity Card`,\"localName\":`Omang`,\"authority\":`Dept. of National Registration`,\"format\":`9-digit Omang number`,\"notes\":`Citizens only; mandatory from 16`}]},{\"id\":`BF`,\"name\":`Burkina Faso`,\"idTypes\":[{\"id\":`cid-bf`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité Burkinabè (CNIB)`,\"authority\":`ONI`,\"format\":`CNIB number`,\"notes\":`Biometric`}]},{\"id\":`BI`,\"name\":`Burundi`,\"idTypes\":[{\"id\":`cid-bi`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`,\"notes\":`Biometric rollout in progress`}]},{\"id\":`CV`,\"name\":`Cabo Verde`,\"idTypes\":[{\"id\":`cid-cv`,\"name\":`National Identification Card`,\"localName\":`Cartão Nacional de Identificação (CNI)`,\"authority\":`Ministry of Justice`,\"format\":`NIC number`,\"notes\":`Smart card; replaced older BI`}]},{\"id\":`CM`,\"name\":`Cameroon`,\"idTypes\":[{\"id\":`cid-cm`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`DGSN (National Police)`,\"format\":`CNI number`,\"notes\":`Biometric since 2016`}]},{\"id\":`CF`,\"name\":`Central African Republic`,\"idTypes\":[{\"id\":`cid-cf`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`,\"notes\":`Coverage limited; voter card often used in practice`}]},{\"id\":`TD`,\"name\":`Chad`,\"idTypes\":[{\"id\":`cid-td`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`ANATS`,\"format\":`NNI (national identification number)`,\"notes\":`Biometric`}]},{\"id\":`KM`,\"name\":`Comoros`,\"idTypes\":[{\"id\":`cid-km`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`}]},{\"id\":`CG`,\"name\":`Congo (Rep.)`,\"idTypes\":[{\"id\":`cid-cg`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`}]},{\"id\":`CD`,\"name\":`Congo (DRC)`,\"idTypes\":[{\"id\":`cid-cd`,\"name\":`National Identity Card`,\"localName\":`Carte d'Identité Nationale`,\"authority\":`ONIP`,\"format\":`National ID number`,\"notes\":`Rollout began 2023; voter card (carte d'électeur) still the de facto ID`}]},{\"id\":`CI`,\"name\":`Côte d'Ivoire`,\"idTypes\":[{\"id\":`cid-ci`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`ONECI`,\"format\":`NNI (Numéro National d'Identification)`,\"notes\":`Biometric; RNPP registry`}]},{\"id\":`DJ`,\"name\":`Djibouti`,\"idTypes\":[{\"id\":`cid-dj`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`}]},{\"id\":`EG`,\"name\":`Egypt`,\"idTypes\":[{\"id\":`cid-eg`,\"name\":`National ID Card`,\"localName\":`Bitaqat Tahqiq Al-Shakhsiya (بطاقة الرقم القومي)`,\"authority\":`Civil Status Organization (Ministry of Interior)`,\"format\":`14-digit National Number (encodes DOB + governorate)`,\"notes\":`Mandatory from 16`}]},{\"id\":`GQ`,\"name\":`Equatorial Guinea`,\"idTypes\":[{\"id\":`cid-gq`,\"name\":`Personal Identity Document`,\"localName\":`Documento de Identidad Personal (DIP)`,\"authority\":`Ministry of National Security`,\"format\":`DIP number`}]},{\"id\":`ER`,\"name\":`Eritrea`,\"idTypes\":[{\"id\":`cid-er`,\"name\":`National Identity Card`,\"localName\":`Mennesa Werket`,\"authority\":`Ministry of Interior`,\"format\":`ID number`}]},{\"id\":`SZ`,\"name\":`Eswatini`,\"idTypes\":[{\"id\":`cid-sz`,\"name\":`National Identity Card`,\"localName\":`Umazisi / National ID`,\"authority\":`Ministry of Home Affairs`,\"format\":`13-digit PIN (Personal Identification Number)`}]},{\"id\":`ET`,\"name\":`Ethiopia`,\"idTypes\":[{\"id\":`cid-et`,\"name\":`National Digital ID`,\"localName\":`Fayda`,\"authority\":`National ID Program (NIDP)`,\"format\":`12-digit FIN (Fayda Identification Number)`,\"notes\":`Fayda replacing regional kebele ID cards; mandated for banking KYC`}]},{\"id\":`GA`,\"name\":`Gabon`,\"idTypes\":[{\"id\":`cid-ga`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`DGDI`,\"format\":`NIP number`,\"notes\":`Biometric`}]},{\"id\":`GM`,\"name\":`Gambia`,\"idTypes\":[{\"id\":`cid-gm`,\"name\":`National Identity Card`,\"localName\":`National ID Card`,\"authority\":`GID / Immigration Dept.`,\"format\":`NIN`,\"notes\":`Biometric ECOWAS-format card`}]},{\"id\":`GH`,\"name\":`Ghana`,\"idTypes\":[{\"id\":`cid-gh`,\"name\":`Ghana Card`,\"localName\":`Ghana Card`,\"authority\":`National Identification Authority (NIA)`,\"format\":`GHA-XXXXXXXXX-X (PIN)`,\"notes\":`Sole ID for banking/SIM/tax since 2022; ECOWAS card`}]},{\"id\":`GN`,\"name\":`Guinea`,\"idTypes\":[{\"id\":`cid-gn`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Security`,\"format\":`CNI number`,\"notes\":`Biometric rollout`}]},{\"id\":`GW`,\"name\":`Guinea-Bissau`,\"idTypes\":[{\"id\":`cid-gw`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Ministry of Justice`,\"format\":`BI number`}]},{\"id\":`KE`,\"name\":`Kenya`,\"idTypes\":[{\"id\":`cid-ke`,\"name\":`National Identity Card`,\"localName\":`Kitambulisho / Maisha Card`,\"authority\":`National Registration Bureau (Interior Ministry)`,\"format\":`8-digit ID No.; Maisha Namba (UPI) on new cards`,\"notes\":`3rd-gen Maisha Card rolling out from 2023; legacy 2nd-gen cards remain valid`}]},{\"id\":`LS`,\"name\":`Lesotho`,\"idTypes\":[{\"id\":`cid-ls`,\"name\":`National Identity Card`,\"localName\":`Lengolo la Boitsebiso`,\"authority\":`Ministry of Home Affairs (NICR)`,\"format\":`ID number`}]},{\"id\":`LR`,\"name\":`Liberia`,\"idTypes\":[{\"id\":`cid-lr`,\"name\":`National Identification Card`,\"localName\":`NIR National ID Card`,\"authority\":`National Identification Registry (NIR)`,\"format\":`NIN`,\"notes\":`Biometric; required for bank KYC`}]},{\"id\":`LY`,\"name\":`Libya`,\"idTypes\":[{\"id\":`cid-ly`,\"name\":`National ID Number \u0026 Card`,\"localName\":`الرقم الوطني (National Number)`,\"authority\":`Civil Registry Authority`,\"format\":`12-digit National Number`,\"notes\":`Number is primary; card issuance uneven`}]},{\"id\":`MG`,\"name\":`Madagascar`,\"idTypes\":[{\"id\":`cid-mg`,\"name\":`National Identity Card`,\"localName\":`Kara-panondrom-pirenena / CIN`,\"authority\":`Ministry of Interior`,\"format\":`12-digit CIN number`,\"notes\":`Mandatory from 18`}]},{\"id\":`MW`,\"name\":`Malawi`,\"idTypes\":[{\"id\":`cid-mw`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`National Registration Bureau (NRB)`,\"format\":`8-character alphanumeric`,\"notes\":`Biometric; mandatory for banking KYC`}]},{\"id\":`ML`,\"name\":`Mali`,\"idTypes\":[{\"id\":`cid-ml`,\"name\":`Biometric National ID Card`,\"localName\":`Carte NINA / Carte d'Identité Biométrique`,\"authority\":`Ministry of Security / CTDEC`,\"format\":`14-15 char NINA number`,\"notes\":`NINA = Numéro d'Identification Nationale`}]},{\"id\":`MR`,\"name\":`Mauritania`,\"idTypes\":[{\"id\":`cid-mr`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`ANRPTS`,\"format\":`10-digit NNI`,\"notes\":`Biometric`}]},{\"id\":`MU`,\"name\":`Mauritius`,\"idTypes\":[{\"id\":`cid-mu`,\"name\":`National Identity Card`,\"localName\":`Smart National Identity Card`,\"authority\":`Civil Status Division (PMO)`,\"format\":`14-char NIC number (encodes DOB)`,\"notes\":`Smart card; mandatory from 18`}]},{\"id\":`MA`,\"name\":`Morocco`,\"idTypes\":[{\"id\":`cid-ma`,\"name\":`Electronic National Identity Card`,\"localName\":`Carte Nationale d'Identité Électronique (CNIE)`,\"authority\":`DGSN`,\"format\":`CIN (1-2 letters + digits)`,\"notes\":`CNIE 2.0 chip card; mandatory from 18`}]},{\"id\":`MZ`,\"name\":`Mozambique`,\"idTypes\":[{\"id\":`cid-mz`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Civil Identification Directorate (Ministry of Interior)`,\"format\":`13-char BI number`,\"notes\":`Mandatory`}]},{\"id\":`NA`,\"name\":`Namibia`,\"idTypes\":[{\"id\":`cid-na`,\"name\":`National Identity Card`,\"localName\":`Namibian ID Card`,\"authority\":`Ministry of Home Affairs, Immigration, Safety \u0026 Security`,\"format\":`11-digit ID number (encodes DOB)`,\"notes\":`Citizens \u0026 permanent residents`}]},{\"id\":`NE`,\"name\":`Niger`,\"idTypes\":[{\"id\":`cid-ne`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`,\"notes\":`Biometric rollout`}]},{\"id\":`NG`,\"name\":`Nigeria`,\"idTypes\":[{\"id\":`cid-ng`,\"name\":`National Identification Number \u0026 NIN Slip / Card`,\"localName\":`NIN / National e-ID Card`,\"authority\":`NIMC (National Identity Management Commission)`,\"format\":`11-digit NIN`,\"notes\":`NIN mandatory for bank accounts (BVN also used by banks); NIMC MobileID / improved NIN slip accepted`}]},{\"id\":`RW`,\"name\":`Rwanda`,\"idTypes\":[{\"id\":`cid-rw`,\"name\":`National Identity Card`,\"localName\":`Indangamuntu`,\"authority\":`NIDA (National Identification Agency)`,\"format\":`16-digit NID number`,\"notes\":`Mandatory from 16; digital ID (e-ID) rollout underway`}]},{\"id\":`ST`,\"name\":`São Tomé \u0026 Príncipe`,\"idTypes\":[{\"id\":`cid-st`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Ministry of Justice`,\"format\":`BI number`}]},{\"id\":`SN`,\"name\":`Senegal`,\"idTypes\":[{\"id\":`cid-sn`,\"name\":`Biometric National ID Card`,\"localName\":`Carte Nationale d'Identité CEDEAO`,\"authority\":`DAF (Ministry of Interior)`,\"format\":`NIN (encodes DOB)`,\"notes\":`ECOWAS-format biometric card; doubles as voter card`}]},{\"id\":`SC`,\"name\":`Seychelles`,\"idTypes\":[{\"id\":`cid-sc`,\"name\":`National Identity Card`,\"localName\":`National ID Card`,\"authority\":`Civil Status Office`,\"format\":`NIN`}]},{\"id\":`SL`,\"name\":`Sierra Leone`,\"idTypes\":[{\"id\":`cid-sl`,\"name\":`National Identity Card`,\"localName\":`National ID Card`,\"authority\":`NCRA`,\"format\":`9-digit NIN`,\"notes\":`Biometric; required for bank KYC`}]},{\"id\":`SO`,\"name\":`Somalia`,\"idTypes\":[{\"id\":`cid-so`,\"name\":`National Identity Card`,\"localName\":`Aqoonsiga Qaranka / National ID`,\"authority\":`NIRA Somalia`,\"format\":`NIN`,\"notes\":`New biometric system launched 2023-24; rollout ongoing`}]},{\"id\":`ZA`,\"name\":`South Africa`,\"idTypes\":[{\"id\":`cid-za`,\"name\":`Smart ID Card`,\"localName\":`Smart ID Card (green barcoded ID book being phased out)`,\"authority\":`Department of Home Affairs (DHA)`,\"format\":`13-digit ID number (encodes DOB, gender, citizenship)`,\"notes\":`ID number is the KYC backbone (FICA)`}]},{\"id\":`SS`,\"name\":`South Sudan`,\"idTypes\":[{\"id\":`cid-ss`,\"name\":`National Identity Card`,\"localName\":`National ID Card`,\"authority\":`Directorate of Nationality, Passports \u0026 Immigration`,\"format\":`National number`,\"notes\":`Coverage limited`}]},{\"id\":`SD`,\"name\":`Sudan`,\"idTypes\":[{\"id\":`cid-sd`,\"name\":`National Identity Card`,\"localName\":`National Number Card (الرقم الوطني)`,\"authority\":`Civil Registry`,\"format\":`11-digit National Number`}]},{\"id\":`TZ`,\"name\":`Tanzania`,\"idTypes\":[{\"id\":`cid-tz`,\"name\":`National Identity Card`,\"localName\":`Kitambulisho cha Taifa`,\"authority\":`NIDA (National Identification Authority)`,\"format\":`20-digit NIN`,\"notes\":`Mandatory for banking \u0026 SIM registration`}]},{\"id\":`TG`,\"name\":`Togo`,\"idTypes\":[{\"id\":`cid-tg`,\"name\":`National Identity Card / e-ID`,\"localName\":`Carte Nationale d'Identité; e-ID Togo`,\"authority\":`DGDN / ANID`,\"format\":`NIU (unique ID number)`,\"notes\":`WURI biometric e-ID rollout ongoing`}]},{\"id\":`TN`,\"name\":`Tunisia`,\"idTypes\":[{\"id\":`cid-tn`,\"name\":`National Identity Card`,\"localName\":`Carte d'Identité Nationale (CIN)`,\"authority\":`Ministry of Interior`,\"format\":`8-digit CIN number`,\"notes\":`Mandatory from 18`}]},{\"id\":`UG`,\"name\":`Uganda`,\"idTypes\":[{\"id\":`cid-ug`,\"name\":`National Identity Card`,\"localName\":`Ndaga Muntu`,\"authority\":`NIRA`,\"format\":`14-char NIN`,\"notes\":`Mandatory for bank KYC; renewal/upgrade cycle from 2024`}]},{\"id\":`ZM`,\"name\":`Zambia`,\"idTypes\":[{\"id\":`cid-zm`,\"name\":`National Registration Card`,\"localName\":`NRC`,\"authority\":`Department of National Registration`,\"format\":`9-digit NRC (XXXXXX/XX/X)`,\"notes\":`Biometric e-NRC rollout`}]},{\"id\":`ZW`,\"name\":`Zimbabwe`,\"idTypes\":[{\"id\":`cid-zw`,\"name\":`National Registration Card`,\"localName\":`National ID / Chitupa`,\"authority\":`Civil Registry Department`,\"format\":`ID number (XX-XXXXXX-Y-XX)`,\"notes\":`Plastic/polythene ID; mandatory from 16`}]}]},{\"id\":`americas`,\"category\":`Americas`,\"description\":`ID documents across North, Central \u0026 South America`,\"countries\":[{\"id\":`AG`,\"name\":`Antigua \u0026 Barbuda`,\"idTypes\":[{\"id\":`cid-ag`,\"name\":`National Identification Card`,\"localName\":`Voter ID / National ID Card`,\"authority\":`Electoral Commission`,\"format\":`ID number`,\"notes\":`Multipurpose voter/national ID`}]},{\"id\":`AR`,\"name\":`Argentina`,\"idTypes\":[{\"id\":`cid-ar`,\"name\":`National Identity Document`,\"localName\":`Documento Nacional de Identidad (DNI)`,\"authority\":`RENAPER`,\"format\":`7-8 digit DNI number`,\"notes\":`Card + digital DNI in Mi Argentina app`}]},{\"id\":`BS`,\"name\":`Bahamas`,\"idTypes\":[{\"id\":`cid-bs`,\"name\":`National Insurance Card / Voter's Card`,\"localName\":`NIB Smart Card`,\"authority\":`National Insurance Board / Parliamentary Registration Dept.`,\"format\":`NIB number`,\"notes\":`No single national ID; NIB card + voter's card fill the role`}]},{\"id\":`BB`,\"name\":`Barbados`,\"idTypes\":[{\"id\":`cid-bb`,\"name\":`Barbados National ID Card`,\"localName\":`Trident ID Card`,\"authority\":`Electoral \u0026 Boundaries Commission`,\"format\":`National Registration Number`,\"notes\":`New Trident smart ID replaced laminated ID from 2023`}]},{\"id\":`BZ`,\"name\":`Belize`,\"idTypes\":[{\"id\":`cid-bz`,\"name\":`Social Security Card`,\"localName\":`SSB Card`,\"authority\":`Social Security Board`,\"format\":`SSN`,\"notes\":`De facto ID for banking; voter ID also used`}]},{\"id\":`BO`,\"name\":`Bolivia`,\"idTypes\":[{\"id\":`cid-bo`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad (CI)`,\"authority\":`SEGIP`,\"format\":`CI number`,\"notes\":`Mandatory`}]},{\"id\":`BR`,\"name\":`Brazil`,\"idTypes\":[{\"id\":`cid-br`,\"name\":`National Identity Card`,\"localName\":`Carteira de Identidade Nacional (CIN) / RG`,\"authority\":`State civil ID bureaus (SSP) on CPF base`,\"format\":`CPF (11 digits) is the unified number on new CIN`,\"notes\":`New CIN (2022+) uses CPF as sole number; legacy RG cards remain valid; CPF itself essential for all KYC`}]},{\"id\":`CA`,\"name\":`Canada`,\"idTypes\":[{\"id\":`cid-ca`,\"name\":`Provincial Photo ID Cards (non-driver)`,\"authority\":`Provincial/territorial governments (e.g., Ontario Photo Card, BC Services Card)`,\"format\":`Varies by province`,\"notes\":`No federal ID card; SIN is a number only (not an ID document)`}]},{\"id\":`CL`,\"name\":`Chile`,\"idTypes\":[{\"id\":`cid-cl`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad`,\"authority\":`Registro Civil e Identificación`,\"format\":`RUN/RUT (7-8 digits + check digit)`,\"notes\":`RUN number used across all KYC`}]},{\"id\":`CO`,\"name\":`Colombia`,\"idTypes\":[{\"id\":`cid-co`,\"name\":`Citizenship Card`,\"localName\":`Cédula de Ciudadanía`,\"authority\":`Registraduría Nacional`,\"format\":`10-digit NUIP`,\"notes\":`Digital cédula also valid`}]},{\"id\":`CR`,\"name\":`Costa Rica`,\"idTypes\":[{\"id\":`cid-cr`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad`,\"authority\":`Tribunal Supremo de Elecciones (TSE)`,\"format\":`9-digit cédula number`,\"notes\":`Mandatory from 18`}]},{\"id\":`CU`,\"name\":`Cuba`,\"idTypes\":[{\"id\":`cid-cu`,\"name\":`Identity Card`,\"localName\":`Carné de Identidad`,\"authority\":`Ministry of Interior`,\"format\":`11-digit number (encodes DOB)`}]},{\"id\":`DM`,\"name\":`Dominica`,\"idTypes\":[{\"id\":`cid-dm`,\"name\":`National ID Card`,\"localName\":`National Identification Card`,\"authority\":`Electoral Office`,\"format\":`ID number`,\"notes\":`Multipurpose voter/national ID`}]},{\"id\":`DO`,\"name\":`Dominican Republic`,\"idTypes\":[{\"id\":`cid-do`,\"name\":`Identity \u0026 Electoral Card`,\"localName\":`Cédula de Identidad y Electoral`,\"authority\":`Junta Central Electoral (JCE)`,\"format\":`11-digit cédula number`,\"notes\":`Mandatory from 18`}]},{\"id\":`EC`,\"name\":`Ecuador`,\"idTypes\":[{\"id\":`cid-ec`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad / Ciudadanía`,\"authority\":`Registro Civil`,\"format\":`10-digit cédula number`,\"notes\":`Mandatory`}]},{\"id\":`SV`,\"name\":`El Salvador`,\"idTypes\":[{\"id\":`cid-sv`,\"name\":`Unique Identity Document`,\"localName\":`Documento Único de Identidad (DUI)`,\"authority\":`RNPN`,\"format\":`9-digit DUI number`,\"notes\":`Mandatory from 18`}]},{\"id\":`GD`,\"name\":`Grenada`,\"idTypes\":[{\"id\":`cid-gd`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`Parliamentary Elections Office`,\"format\":`ID number`,\"notes\":`Voter-based national ID`}]},{\"id\":`GT`,\"name\":`Guatemala`,\"idTypes\":[{\"id\":`cid-gt`,\"name\":`Personal Identification Document`,\"localName\":`Documento Personal de Identificación (DPI)`,\"authority\":`RENAP`,\"format\":`13-digit CUI`,\"notes\":`Mandatory from 18`}]},{\"id\":`GY`,\"name\":`Guyana`,\"idTypes\":[{\"id\":`cid-gy`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`GECOM / General Register Office`,\"format\":`ID number`,\"notes\":`New e-ID card project underway`}]},{\"id\":`HT`,\"name\":`Haiti`,\"idTypes\":[{\"id\":`cid-ht`,\"name\":`National Identification Card`,\"localName\":`Carte d'Identification Nationale Unique (CINU)`,\"authority\":`ONI (Office National d'Identification)`,\"format\":`NIU (10 digits)`,\"notes\":`CINU (Dermalog) replaced older CIN from 2020`}]},{\"id\":`HN`,\"name\":`Honduras`,\"idTypes\":[{\"id\":`cid-hn`,\"name\":`National Identity Document`,\"localName\":`Documento Nacional de Identificación (DNI)`,\"authority\":`RNP`,\"format\":`13-digit DNI number`,\"notes\":`Replaced Tarjeta de Identidad in 2021`}]},{\"id\":`JM`,\"name\":`Jamaica`,\"idTypes\":[{\"id\":`cid-jm`,\"name\":`National Identification Card (NIDS)`,\"localName\":`NIDS National ID; TRN card`,\"authority\":`NIRA (NIDS) / TAJ (TRN)`,\"format\":`9-digit NIN (NIDS); 9-digit TRN`,\"notes\":`NIDS voluntary rollout from 2023; TRN card + voter ID widely used for KYC`}]},{\"id\":`MX`,\"name\":`Mexico`,\"idTypes\":[{\"id\":`cid-mx`,\"name\":`Voter Credential (de facto national ID)`,\"localName\":`Credencial para Votar (INE)`,\"authority\":`Instituto Nacional Electoral (INE)`,\"format\":`18-char CURP + OCR/CIC numbers`,\"notes\":`INE card is the universal KYC ID; CURP is the national number; CURP biométrica rollout announced 2025`}]},{\"id\":`NI`,\"name\":`Nicaragua`,\"idTypes\":[{\"id\":`cid-ni`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad`,\"authority\":`Consejo Supremo Electoral`,\"format\":`14-char cédula number`,\"notes\":`Mandatory from 16`}]},{\"id\":`PA`,\"name\":`Panama`,\"idTypes\":[{\"id\":`cid-pa`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad Personal`,\"authority\":`Tribunal Electoral`,\"format\":`Cédula number (province-coded)`,\"notes\":`Mandatory from 18`}]},{\"id\":`PY`,\"name\":`Paraguay`,\"idTypes\":[{\"id\":`cid-py`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad Civil`,\"authority\":`Departamento de Identificaciones (Policía Nacional)`,\"format\":`7-digit CI number`,\"notes\":`Mandatory`}]},{\"id\":`PE`,\"name\":`Peru`,\"idTypes\":[{\"id\":`cid-pe`,\"name\":`National Identity Document`,\"localName\":`Documento Nacional de Identidad (DNI)`,\"authority\":`RENIEC`,\"format\":`8-digit DNI number`,\"notes\":`DNI electrónico (DNIe) chip card; mandatory`}]},{\"id\":`KN`,\"name\":`St. Kitts \u0026 Nevis`,\"idTypes\":[{\"id\":`cid-kn`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`Electoral Office`,\"format\":`ID number`}]},{\"id\":`LC`,\"name\":`St. Lucia`,\"idTypes\":[{\"id\":`cid-lc`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`Electoral Department`,\"format\":`ID number`}]},{\"id\":`VC`,\"name\":`St. Vincent \u0026 the Grenadines`,\"idTypes\":[{\"id\":`cid-vc`,\"name\":`National Identification Card`,\"localName\":`Voter ID Card`,\"authority\":`Electoral Office`,\"format\":`ID number`}]},{\"id\":`SR`,\"name\":`Suriname`,\"idTypes\":[{\"id\":`cid-sr`,\"name\":`Identity Card`,\"localName\":`Identiteitskaart (ID-kaart)`,\"authority\":`CBB (Central Civil Registry)`,\"format\":`ID number`,\"notes\":`e-ID rollout in progress`}]},{\"id\":`TT`,\"name\":`Trinidad \u0026 Tobago`,\"idTypes\":[{\"id\":`cid-tt`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`Elections \u0026 Boundaries Commission (EBC)`,\"format\":`ID number`,\"notes\":`Standard KYC document`}]},{\"id\":`US`,\"name\":`United States`,\"idTypes\":[{\"id\":`cid-us`,\"name\":`State ID Card (non-driver) / Social Security Number`,\"authority\":`State DMVs (ID cards); SSA (SSN)`,\"format\":`SSN: 9 digits (number only, not photo ID)`,\"notes\":`No federal ID card; REAL ID-compliant state IDs are the standard; SSN/ITIN used as the KYC number`}]},{\"id\":`UY`,\"name\":`Uruguay`,\"idTypes\":[{\"id\":`cid-uy`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad (CI)`,\"authority\":`DNIC (Ministry of Interior)`,\"format\":`8-digit CI number`,\"notes\":`eID chip card; mandatory`}]},{\"id\":`VE`,\"name\":`Venezuela`,\"idTypes\":[{\"id\":`cid-ve`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad`,\"authority\":`SAIME`,\"format\":`7-9 digit cédula number (V-/E- prefix)`,\"notes\":`Mandatory from 9`}]}]},{\"id\":`asia`,\"category\":`Asia`,\"description\":`Asian country-specific ID documents`,\"countries\":[{\"id\":`AF`,\"name\":`Afghanistan`,\"idTypes\":[{\"id\":`cid-af`,\"name\":`National Identity Card`,\"localName\":`Tazkira / e-Tazkira`,\"authority\":`NSIA`,\"format\":`Tazkira number`,\"notes\":`e-Tazkira biometric card; paper Tazkira still circulating`}]},{\"id\":`AM`,\"name\":`Armenia`,\"idTypes\":[{\"id\":`cid-am`,\"name\":`Identification Card`,\"localName\":`Nuynakanacman kart (ID card)`,\"authority\":`Police / Migration \u0026 Citizenship Service`,\"format\":`PSN (public services number)`,\"notes\":`Biometric ID card 2024+`}]},{\"id\":`AZ`,\"name\":`Azerbaijan`,\"idTypes\":[{\"id\":`cid-az`,\"name\":`Identity Card`,\"localName\":`Shəxsiyyət vəsiqəsi`,\"authority\":`State Migration / ASAN`,\"format\":`PIN (7-char FIN)`,\"notes\":`Chip-based new-generation card`}]},{\"id\":`BH`,\"name\":`Bahrain`,\"idTypes\":[{\"id\":`cid-bh`,\"name\":`Identity Card`,\"localName\":`Bahraini ID Card (CPR Card)`,\"authority\":`Information \u0026 eGovernment Authority (iGA)`,\"format\":`9-digit CPR number (encodes DOB)`,\"notes\":`Covers citizens \u0026 residents; core KYC document`}]},{\"id\":`BD`,\"name\":`Bangladesh`,\"idTypes\":[{\"id\":`cid-bd`,\"name\":`National Identity Card`,\"localName\":`NID / Smart NID Card`,\"authority\":`Election Commission (NID Wing)`,\"format\":`10-digit NID (17-digit legacy)`,\"notes\":`Smart NID chip card; mandatory for bank accounts`}]},{\"id\":`BT`,\"name\":`Bhutan`,\"idTypes\":[{\"id\":`cid-bt`,\"name\":`Citizenship Identity Card`,\"localName\":`CID Card`,\"authority\":`Department of Civil Registration \u0026 Census`,\"format\":`11-digit CID number`,\"notes\":`Bhutan NDI (digital ID) launched 2023`}]},{\"id\":`BN`,\"name\":`Brunei`,\"idTypes\":[{\"id\":`cid-bn`,\"name\":`Identity Card`,\"localName\":`Kad Pengenalan (Smart IC)`,\"authority\":`Immigration \u0026 National Registration Dept.`,\"format\":`IC number (colour-coded by status)`,\"notes\":`Yellow IC = citizens`}]},{\"id\":`KH`,\"name\":`Cambodia`,\"idTypes\":[{\"id\":`cid-kh`,\"name\":`Khmer Identity Card`,\"localName\":`Attasannheanabann Khmer`,\"authority\":`General Dept. of Identification (Ministry of Interior)`,\"format\":`9-digit ID number`,\"notes\":`Mandatory from 15`}]},{\"id\":`CN`,\"name\":`China`,\"idTypes\":[{\"id\":`cid-cn`,\"name\":`Resident Identity Card`,\"localName\":`居民身份证 (Jūmín Shēnfènzhèng)`,\"authority\":`Ministry of Public Security (local PSBs)`,\"format\":`18-digit citizen ID (encodes region, DOB, check digit)`,\"notes\":`Universal KYC document; mandatory`}]},{\"id\":`GE`,\"name\":`Georgia`,\"idTypes\":[{\"id\":`cid-ge`,\"name\":`Identity Card`,\"localName\":`Pirad0ba mowmoba (eID)`,\"authority\":`Public Service Development Agency`,\"format\":`11-digit personal number`,\"notes\":`Chip eID card`}]},{\"id\":`HK`,\"name\":`Hong Kong SAR`,\"idTypes\":[{\"id\":`cid-hk`,\"name\":`Hong Kong Identity Card`,\"localName\":`HKID (香港身份證)`,\"authority\":`Immigration Department`,\"format\":`1-2 letters + 6 digits + check digit`,\"notes\":`Smart HKID; mandatory from 11; universal KYC doc`}]},{\"id\":`MO`,\"name\":`Macau SAR`,\"idTypes\":[{\"id\":`cid-mo`,\"name\":`Macau Resident Identity Card`,\"localName\":`Bilhete de Identidade de Residente (BIR)`,\"authority\":`DSI (Identification Services Bureau)`,\"format\":`7-digit BIR number + check digit`,\"notes\":`Smart BIR; permanent vs non-permanent resident versions`}]},{\"id\":`IN`,\"name\":`India`,\"idTypes\":[{\"id\":`cid-in`,\"name\":`Aadhaar`,\"localName\":`Aadhaar (आधार)`,\"authority\":`UIDAI`,\"format\":`12-digit Aadhaar number`,\"notes\":`Primary e-KYC rail (offline XML / DigiLocker); PAN (tax) and Voter ID (EPIC) are the other country-specific IDs banks accept`}]},{\"id\":`ID`,\"name\":`Indonesia`,\"idTypes\":[{\"id\":`cid-id`,\"name\":`Resident Identity Card`,\"localName\":`Kartu Tanda Penduduk elektronik (e-KTP)`,\"authority\":`Dukcapil (Ministry of Home Affairs)`,\"format\":`16-digit NIK`,\"notes\":`Mandatory from 17; NIK is the universal KYC number; IKD digital ID rollout`}]},{\"id\":`IR`,\"name\":`Iran`,\"idTypes\":[{\"id\":`cid-ir`,\"name\":`National Card`,\"localName\":`Kart-e Melli (کارت ملی)`,\"authority\":`National Organization for Civil Registration`,\"format\":`10-digit Code Melli`,\"notes\":`Smart national card; mandatory`}]},{\"id\":`IQ`,\"name\":`Iraq`,\"idTypes\":[{\"id\":`cid-iq`,\"name\":`Unified National Card`,\"localName\":`Al-Bitaqa Al-Wataniya (البطاقة الوطنية الموحدة)`,\"authority\":`Ministry of Interior (Civil Affairs)`,\"format\":`12-digit number`,\"notes\":`Replaced Civil Status ID + Nationality Certificate`}]},{\"id\":`IL`,\"name\":`Israel`,\"idTypes\":[{\"id\":`cid-il`,\"name\":`Identity Card`,\"localName\":`Teudat Zehut (תעודת זהות)`,\"authority\":`Population \u0026 Immigration Authority`,\"format\":`9-digit ID number (with check digit)`,\"notes\":`Biometric smart card; mandatory from 16`}]},{\"id\":`JP`,\"name\":`Japan`,\"idTypes\":[{\"id\":`cid-jp`,\"name\":`Individual Number Card`,\"localName\":`My Number Card (マイナンバーカード)`,\"authority\":`Municipalities / J-LIS`,\"format\":`12-digit Individual Number (My Number)`,\"notes\":`Voluntary card but now the standard KYC/eKYC document; Juminhyo (residence record) also used`}]},{\"id\":`JO`,\"name\":`Jordan`,\"idTypes\":[{\"id\":`cid-jo`,\"name\":`National Identity Card`,\"localName\":`Bitaqat Al-Ahwal Al-Madaniya`,\"authority\":`Civil Status \u0026 Passports Dept.`,\"format\":`10-digit National Number`,\"notes\":`Smart ID card`}]},{\"id\":`KZ`,\"name\":`Kazakhstan`,\"idTypes\":[{\"id\":`cid-kz`,\"name\":`Identity Card`,\"localName\":`Udostoverenie lichnosti / Жеке куәлік`,\"authority\":`Ministry of Internal Affairs`,\"format\":`12-digit IIN (encodes DOB)`,\"notes\":`Chip card; mandatory from 16`}]},{\"id\":`KW`,\"name\":`Kuwait`,\"idTypes\":[{\"id\":`cid-kw`,\"name\":`Civil ID`,\"localName\":`Al-Bitaqa Al-Madaniya (Civil ID)`,\"authority\":`PACI`,\"format\":`12-digit Civil Number (encodes DOB)`,\"notes\":`Citizens \u0026 residents; core KYC document`}]},{\"id\":`KG`,\"name\":`Kyrgyzstan`,\"idTypes\":[{\"id\":`cid-kg`,\"name\":`Identity Card`,\"localName\":`ID Card (2017 series)`,\"authority\":`State Registration Service`,\"format\":`14-digit PIN`,\"notes\":`Chip eID`}]},{\"id\":`LA`,\"name\":`Laos`,\"idTypes\":[{\"id\":`cid-la`,\"name\":`National Identity Card`,\"localName\":`Bat Pachamtua`,\"authority\":`Ministry of Public Security`,\"format\":`ID number`,\"notes\":`Rollout expanding; family book also used`}]},{\"id\":`LB`,\"name\":`Lebanon`,\"idTypes\":[{\"id\":`cid-lb`,\"name\":`National Identity Card`,\"localName\":`Bitaqat Al-Hawiya (بطاقة الهوية)`,\"authority\":`Directorate General of Personal Status`,\"format\":`ID number`,\"notes\":`Ikhraj Qaid (civil extract) also widely used in KYC`}]},{\"id\":`MY`,\"name\":`Malaysia`,\"idTypes\":[{\"id\":`cid-my`,\"name\":`National Identity Card`,\"localName\":`MyKad`,\"authority\":`JPN (National Registration Department)`,\"format\":`12-digit NRIC (encodes DOB + state)`,\"notes\":`Smart chip card; mandatory from 12; universal KYC doc`}]},{\"id\":`MV`,\"name\":`Maldives`,\"idTypes\":[{\"id\":`cid-mv`,\"name\":`National Identity Card`,\"localName\":`Dhivehi Rayyithunge Kaadu`,\"authority\":`Department of National Registration`,\"format\":`A-prefixed ID number`,\"notes\":`Mandatory from 10`}]},{\"id\":`MN`,\"name\":`Mongolia`,\"idTypes\":[{\"id\":`cid-mn`,\"name\":`National Identity Card`,\"localName\":`Irgenii ünemlekh`,\"authority\":`General Authority for State Registration`,\"format\":`10-char registration number (ur, encodes DOB)`,\"notes\":`Chip eID card`}]},{\"id\":`MM`,\"name\":`Myanmar`,\"idTypes\":[{\"id\":`cid-mm`,\"name\":`Citizenship Scrutiny Card`,\"localName\":`NRC / CSC (မှတ်ပုံတင်)`,\"authority\":`Ministry of Immigration \u0026 Population`,\"format\":`NRC number (state/township-coded)`,\"notes\":`Card colour denotes citizenship class`}]},{\"id\":`NP`,\"name\":`Nepal`,\"idTypes\":[{\"id\":`cid-np`,\"name\":`National Identity Card`,\"localName\":`Rastriya Parichaya Patra (NID)`,\"authority\":`Department of National ID \u0026 Civil Registration`,\"format\":`NIN`,\"notes\":`NID replacing Citizenship Certificate as KYC standard; Citizenship Certificate still widely accepted`}]},{\"id\":`KP`,\"name\":`North Korea`,\"idTypes\":[{\"id\":`cid-kp`,\"name\":`Citizen's Certificate`,\"localName\":`Kongminŭng`,\"authority\":`Ministry of People's Security`,\"format\":`ID number`,\"notes\":`Internal document; not usable for remote KYC`}]},{\"id\":`OM`,\"name\":`Oman`,\"idTypes\":[{\"id\":`cid-om`,\"name\":`National ID Card`,\"localName\":`Al-Bitaqa Al-Shakhsiya`,\"authority\":`Royal Oman Police (Civil Status)`,\"format\":`Civil Number`,\"notes\":`Citizens; resident card is the parallel for expats`}]},{\"id\":`PK`,\"name\":`Pakistan`,\"idTypes\":[{\"id\":`cid-pk`,\"name\":`Computerized National Identity Card`,\"localName\":`CNIC / Smart NIC (SNIC)`,\"authority\":`NADRA`,\"format\":`13-digit CNIC (XXXXX-XXXXXXX-X)`,\"notes\":`Universal KYC document; NICOP for overseas Pakistanis`}]},{\"id\":`PS`,\"name\":`Palestine`,\"idTypes\":[{\"id\":`cid-ps`,\"name\":`Identity Card`,\"localName\":`Hawiya / Palestinian ID`,\"authority\":`Palestinian Civil Affairs Authority`,\"format\":`9-digit ID number`}]},{\"id\":`PH`,\"name\":`Philippines`,\"idTypes\":[{\"id\":`cid-ph`,\"name\":`Philippine Identification (National ID)`,\"localName\":`PhilID / ePhilID`,\"authority\":`PSA (PhilSys)`,\"format\":`12-digit PSN / PCN`,\"notes\":`PhilID + digital National ID accepted as sole KYC ID; UMID, TIN card, voter's ID are other country-specific fallbacks`}]},{\"id\":`QA`,\"name\":`Qatar`,\"idTypes\":[{\"id\":`cid-qa`,\"name\":`Qatar ID Card`,\"localName\":`QID (البطاقة الشخصية)`,\"authority\":`Ministry of Interior`,\"format\":`11-digit QID (encodes birth year + nationality)`,\"notes\":`Citizens \u0026 residents; core KYC document`}]},{\"id\":`SA`,\"name\":`Saudi Arabia`,\"idTypes\":[{\"id\":`cid-sa`,\"name\":`National Identity Card`,\"localName\":`Bitaqat Al-Hawiya Al-Wataniya`,\"authority\":`Ministry of Interior (Ahwal / Absher)`,\"format\":`10-digit National ID number`,\"notes\":`Citizens; Absher digital ID for eKYC`}]},{\"id\":`SG`,\"name\":`Singapore`,\"idTypes\":[{\"id\":`cid-sg`,\"name\":`National Registration Identity Card`,\"localName\":`NRIC`,\"authority\":`ICA`,\"format\":`NRIC number (S/T + 7 digits + letter)`,\"notes\":`Physical NRIC + Singpass/MyInfo for digital KYC`}]},{\"id\":`KR`,\"name\":`South Korea`,\"idTypes\":[{\"id\":`cid-kr`,\"name\":`Resident Registration Card`,\"localName\":`Jumin-deungnok-jeung (주민등록증)`,\"authority\":`Ministry of Interior \u0026 Safety`,\"format\":`13-digit RRN (encodes DOB + gender)`,\"notes\":`Mandatory from 17; mobile ID version live`}]},{\"id\":`LK`,\"name\":`Sri Lanka`,\"idTypes\":[{\"id\":`cid-lk`,\"name\":`National Identity Card`,\"localName\":`NIC`,\"authority\":`Department for Registration of Persons`,\"format\":`12-digit NIC (new) / 9+letter (old)`,\"notes\":`Mandatory from 15`}]},{\"id\":`SY`,\"name\":`Syria`,\"idTypes\":[{\"id\":`cid-sy`,\"name\":`National Identity Card`,\"localName\":`Bitaqa Shakhsiya`,\"authority\":`Civil Affairs Directorate`,\"format\":`11-digit National Number`}]},{\"id\":`TW`,\"name\":`Taiwan`,\"idTypes\":[{\"id\":`cid-tw`,\"name\":`National Identification Card`,\"localName\":`國民身分證 (Guomin Shenfenzheng)`,\"authority\":`Ministry of the Interior (Household Registration)`,\"format\":`1 letter + 9 digits`,\"notes\":`Citizens with household registration`}]},{\"id\":`TJ`,\"name\":`Tajikistan`,\"idTypes\":[{\"id\":`cid-tj`,\"name\":`Identity Card / Internal Passport`,\"localName\":`Shinosnoma (internal passport); new ID card`,\"authority\":`Ministry of Internal Affairs`,\"format\":`INN / personal number`,\"notes\":`Transitioning from internal passport to ID card`}]},{\"id\":`TH`,\"name\":`Thailand`,\"idTypes\":[{\"id\":`cid-th`,\"name\":`National Identity Card`,\"localName\":`Bat Prachachon (บัตรประจำตัวประชาชน)`,\"authority\":`Department of Provincial Administration (DOPA)`,\"format\":`13-digit ID number`,\"notes\":`Smart card; mandatory from 7; universal KYC doc`}]},{\"id\":`TL`,\"name\":`Timor-Leste`,\"idTypes\":[{\"id\":`cid-tl`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Ministry of Justice`,\"format\":`BI number`,\"notes\":`Electoral card also widely used`}]},{\"id\":`TM`,\"name\":`Turkmenistan`,\"idTypes\":[{\"id\":`cid-tm`,\"name\":`Internal Passport`,\"localName\":`Içerki pasport`,\"authority\":`State Migration Service`,\"format\":`Passport number`,\"notes\":`Internal passport serves as the national ID (distinct from travel passport)`}]},{\"id\":`AE`,\"name\":`United Arab Emirates`,\"idTypes\":[{\"id\":`cid-ae`,\"name\":`Emirates ID`,\"localName\":`بطاقة الهوية الإماراتية`,\"authority\":`ICP (Federal Authority for Identity \u0026 Citizenship)`,\"format\":`15-digit IDN (784-YYYY-XXXXXXX-X)`,\"notes\":`Citizens \u0026 residents; universal KYC document; UAE Pass for digital`}]},{\"id\":`UZ`,\"name\":`Uzbekistan`,\"idTypes\":[{\"id\":`cid-uz`,\"name\":`Identity Card`,\"localName\":`ID-karta`,\"authority\":`Ministry of Internal Affairs`,\"format\":`14-digit PINFL (JShShIR)`,\"notes\":`ID card replacing biometric internal passport since 2021`}]},{\"id\":`VN`,\"name\":`Vietnam`,\"idTypes\":[{\"id\":`cid-vn`,\"name\":`Citizen Identity Card`,\"localName\":`Căn cước công dân (CCCD) / Căn cước`,\"authority\":`Ministry of Public Security (C06)`,\"format\":`12-digit personal ID number`,\"notes\":`Chip CCCD; VNeID digital identity app; mandatory from 14`}]},{\"id\":`YE`,\"name\":`Yemen`,\"idTypes\":[{\"id\":`cid-ye`,\"name\":`National Identity Card`,\"localName\":`Bitaqa Shakhsiya`,\"authority\":`Civil Status \u0026 Civil Registration Authority`,\"format\":`ID number`}]}]},{\"id\":`europe`,\"category\":`Europe`,\"description\":`European country-specific ID documents`,\"countries\":[{\"id\":`AL`,\"name\":`Albania`,\"idTypes\":[{\"id\":`cid-al`,\"name\":`Identity Card`,\"localName\":`Letërnjoftim`,\"authority\":`Ministry of Interior (IDEMIA-produced)`,\"format\":`10-char NID (encodes DOB)`,\"notes\":`Chip eID; mandatory from 16`}]},{\"id\":`AD`,\"name\":`Andorra`,\"idTypes\":[{\"id\":`cid-ad`,\"name\":`Passport is sole national doc; census registration`,\"authority\":`Govern d'Andorra`,\"format\":`—`,\"notes\":`No ID card issued; banks rely on passport + census certificate (excluded docs aside, no card exists)`}]},{\"id\":`AT`,\"name\":`Austria`,\"idTypes\":[{\"id\":`cid-at`,\"name\":`Identity Card`,\"localName\":`Personalausweis; ID Austria (digital)`,\"authority\":`BMI / municipalities`,\"format\":`Card number; bPK for digital`,\"notes\":`ID Austria digital identity for eKYC`}]},{\"id\":`BY`,\"name\":`Belarus`,\"idTypes\":[{\"id\":`cid-by`,\"name\":`Identity Card`,\"localName\":`ID-karta`,\"authority\":`Ministry of Internal Affairs`,\"format\":`14-char personal number`,\"notes\":`Biometric ID card since 2021; internal passport still circulating`}]},{\"id\":`BE`,\"name\":`Belgium`,\"idTypes\":[{\"id\":`cid-be`,\"name\":`Electronic Identity Card`,\"localName\":`eID / Carte d'identité / Identiteitskaart`,\"authority\":`FPS Interior (municipalities)`,\"format\":`11-digit National Register Number`,\"notes\":`Mandatory from 12 (carry from 15); itsme app for eKYC`}]},{\"id\":`BA`,\"name\":`Bosnia \u0026 Herzegovina`,\"idTypes\":[{\"id\":`cid-ba`,\"name\":`Identity Card`,\"localName\":`Lična karta / Osobna iskaznica`,\"authority\":`IDDEEA`,\"format\":`13-digit JMBG`,\"notes\":`Mandatory from 18`}]},{\"id\":`BG`,\"name\":`Bulgaria`,\"idTypes\":[{\"id\":`cid-bg`,\"name\":`Identity Card`,\"localName\":`Лична карта (Lichna karta)`,\"authority\":`Ministry of Interior`,\"format\":`10-digit EGN (encodes DOB)`,\"notes\":`Mandatory from 14`}]},{\"id\":`HR`,\"name\":`Croatia`,\"idTypes\":[{\"id\":`cid-hr`,\"name\":`Identity Card`,\"localName\":`Osobna iskaznica`,\"authority\":`Ministry of Interior`,\"format\":`11-digit OIB (tax/personal number)`,\"notes\":`eOI chip card; mandatory`}]},{\"id\":`CY`,\"name\":`Cyprus`,\"idTypes\":[{\"id\":`cid-cy`,\"name\":`Identity Card`,\"localName\":`Δελτίο Ταυτότητας`,\"authority\":`Civil Registry \u0026 Migration Dept.`,\"format\":`ID number`,\"notes\":`Biometric card since 2020`}]},{\"id\":`CZ`,\"name\":`Czechia`,\"idTypes\":[{\"id\":`cid-cz`,\"name\":`Identity Card`,\"localName\":`Občanský průkaz`,\"authority\":`Ministry of Interior (municipalities)`,\"format\":`Card number; rodné číslo (birth number)`,\"notes\":`Mandatory from 15; eDoklady digital ID app`}]},{\"id\":`DK`,\"name\":`Denmark`,\"idTypes\":[{\"id\":`cid-dk`,\"name\":`CPR number + MitID (digital)`,\"authority\":`CPR Office; MitID (Digitaliseringsstyrelsen/FinansDanmark)`,\"format\":`10-digit CPR (encodes DOB)`,\"notes\":`No physical national ID; CPR + MitID is the KYC standard; new optional ID card for citizens announced`}]},{\"id\":`EE`,\"name\":`Estonia`,\"idTypes\":[{\"id\":`cid-ee`,\"name\":`Identity Card`,\"localName\":`ID-kaart`,\"authority\":`Police \u0026 Border Guard Board`,\"format\":`11-digit isikukood`,\"notes\":`Mandatory; e-Residency card for foreigners; Smart-ID/Mobile-ID for eKYC`}]},{\"id\":`FI`,\"name\":`Finland`,\"idTypes\":[{\"id\":`cid-fi`,\"name\":`Identity Card`,\"localName\":`Henkilökortti`,\"authority\":`Police`,\"format\":`11-char henkilötunnus (personal identity code)`,\"notes\":`Voluntary card; bank credentials (Tupas/FTN) dominate eKYC`}]},{\"id\":`FR`,\"name\":`France`,\"idTypes\":[{\"id\":`cid-fr`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité électronique (CNIe)`,\"authority\":`Ministry of Interior (ANTS)`,\"format\":`12-char card number; NIR (social security number) separate`,\"notes\":`New credit-card-format CNIe since 2021; France Identité app`}]},{\"id\":`DE`,\"name\":`Germany`,\"idTypes\":[{\"id\":`cid-de`,\"name\":`Identity Card`,\"localName\":`Personalausweis`,\"authority\":`BMI (local Bürgerämter)`,\"format\":`9-char card number (no lifetime personal number)`,\"notes\":`Mandatory from 16; eID online function (AusweisApp) for eKYC`}]},{\"id\":`GR`,\"name\":`Greece`,\"idTypes\":[{\"id\":`cid-gr`,\"name\":`Identity Card`,\"localName\":`Δελτίο Αστυνομικής Ταυτότητας (new EU-format)`,\"authority\":`Hellenic Police`,\"format\":`New card number; AMKA/AFM separate numbers`,\"notes\":`New biometric EU-format cards since 2023; Gov.gr Wallet digital ID`}]},{\"id\":`HU`,\"name\":`Hungary`,\"idTypes\":[{\"id\":`cid-hu`,\"name\":`Identity Card`,\"localName\":`Személyazonosító igazolvány (eSzemélyi)`,\"authority\":`Ministry of Interior`,\"format\":`Card number; személyi szám (personal number)`,\"notes\":`Chip eID; mandatory`}]},{\"id\":`IS`,\"name\":`Iceland`,\"idTypes\":[{\"id\":`cid-is`,\"name\":`Identity Card`,\"localName\":`Nafnskírteini`,\"authority\":`Registers Iceland (Þjóðskrá)`,\"format\":`10-digit kennitala (encodes DOB)`,\"notes\":`New EU/EEA-compliant nafnskírteini since 2024; kennitala + electronic ID (Auðkenni) drive KYC`}]},{\"id\":`IE`,\"name\":`Ireland`,\"idTypes\":[{\"id\":`cid-ie`,\"name\":`Public Services Card (PSC) + PPS Number`,\"authority\":`Department of Social Protection`,\"format\":`PPSN (7 digits + 1-2 letters)`,\"notes\":`No national ID; PSC/MyGovID used for public services; banks typically rely on excluded docs + PPSN`}]},{\"id\":`IT`,\"name\":`Italy`,\"idTypes\":[{\"id\":`cid-it`,\"name\":`Electronic Identity Card`,\"localName\":`Carta d'Identità Elettronica (CIE)`,\"authority\":`Ministry of Interior (municipalities)`,\"format\":`Card number; Codice Fiscale (16-char) separate`,\"notes\":`CIE 3.0 + SPID digital identity for eKYC`}]},{\"id\":`XK`,\"name\":`Kosovo`,\"idTypes\":[{\"id\":`cid-xk`,\"name\":`Identity Card`,\"localName\":`Letërnjoftim / Lična karta`,\"authority\":`Ministry of Internal Affairs`,\"format\":`10-digit personal number`,\"notes\":`Mandatory from 16`}]},{\"id\":`LV`,\"name\":`Latvia`,\"idTypes\":[{\"id\":`cid-lv`,\"name\":`Identity Card`,\"localName\":`eID karte`,\"authority\":`PMLP (Office of Citizenship \u0026 Migration Affairs)`,\"format\":`11-digit personas kods`,\"notes\":`Mandatory since 2023 (from 15)`}]},{\"id\":`LI`,\"name\":`Liechtenstein`,\"idTypes\":[{\"id\":`cid-li`,\"name\":`Identity Card`,\"localName\":`Identitätskarte`,\"authority\":`Migration \u0026 Passport Office`,\"format\":`Card number`,\"notes\":`Voluntary`}]},{\"id\":`LT`,\"name\":`Lithuania`,\"idTypes\":[{\"id\":`cid-lt`,\"name\":`Identity Card`,\"localName\":`Asmens tapatybės kortelė`,\"authority\":`Migration Department`,\"format\":`11-digit asmens kodas`,\"notes\":`Chip eID; Smart-ID widely used for eKYC`}]},{\"id\":`LU`,\"name\":`Luxembourg`,\"idTypes\":[{\"id\":`cid-lu`,\"name\":`Identity Card`,\"localName\":`Carte d'identité`,\"authority\":`Ministry of Home Affairs (communes)`,\"format\":`13-digit national ID number (matricule)`,\"notes\":`Mandatory from 15; LuxTrust for eKYC`}]},{\"id\":`MT`,\"name\":`Malta`,\"idTypes\":[{\"id\":`cid-mt`,\"name\":`Identity Card`,\"localName\":`Karta tal-Identità`,\"authority\":`Identità (Identity Malta)`,\"format\":`ID number (digits + M/G/A/P/L letter)`,\"notes\":`Mandatory from 14`}]},{\"id\":`MD`,\"name\":`Moldova`,\"idTypes\":[{\"id\":`cid-md`,\"name\":`Identity Card`,\"localName\":`Buletin de identitate`,\"authority\":`Public Services Agency (ASP)`,\"format\":`13-digit IDNP`,\"notes\":`Mandatory`}]},{\"id\":`MC`,\"name\":`Monaco`,\"idTypes\":[{\"id\":`cid-mc`,\"name\":`Identity Card`,\"localName\":`Carte d'identité monégasque`,\"authority\":`Mairie de Monaco`,\"format\":`Card number`,\"notes\":`Citizens; residents hold carte de séjour (excluded as PR-type)`}]},{\"id\":`ME`,\"name\":`Montenegro`,\"idTypes\":[{\"id\":`cid-me`,\"name\":`Identity Card`,\"localName\":`Lična karta`,\"authority\":`Ministry of Interior`,\"format\":`13-digit JMBG`,\"notes\":`Mandatory from 18`}]},{\"id\":`NL`,\"name\":`Netherlands`,\"idTypes\":[{\"id\":`cid-nl`,\"name\":`Identity Card`,\"localName\":`Nederlandse identiteitskaart (NIK)`,\"authority\":`Municipalities (RvIG)`,\"format\":`9-digit BSN (citizen service number)`,\"notes\":`BSN is the KYC number; iDIN (bank-based) + DigiD for eKYC`}]},{\"id\":`MK`,\"name\":`North Macedonia`,\"idTypes\":[{\"id\":`cid-mk`,\"name\":`Identity Card`,\"localName\":`Лична карта (Lichna karta)`,\"authority\":`Ministry of Interior`,\"format\":`13-digit EMBG`,\"notes\":`Mandatory from 18`}]},{\"id\":`NO`,\"name\":`Norway`,\"idTypes\":[{\"id\":`cid-no`,\"name\":`National Identity Card`,\"localName\":`Nasjonalt ID-kort`,\"authority\":`Police`,\"format\":`11-digit fødselsnummer (encodes DOB)`,\"notes\":`Card launched 2020; BankID is the dominant eKYC rail`}]},{\"id\":`PL`,\"name\":`Poland`,\"idTypes\":[{\"id\":`cid-pl`,\"name\":`Identity Card`,\"localName\":`Dowód osobisty`,\"authority\":`Ministry of Interior (gminas)`,\"format\":`11-digit PESEL (encodes DOB)`,\"notes\":`e-Dowód chip card; mObywatel digital ID; mandatory from 18`}]},{\"id\":`PT`,\"name\":`Portugal`,\"idTypes\":[{\"id\":`cid-pt`,\"name\":`Citizen Card`,\"localName\":`Cartão de Cidadão`,\"authority\":`IRN (Instituto dos Registos e do Notariado)`,\"format\":`Civil ID number; also bundles NIF (tax), NISS, health no.`,\"notes\":`Single card unifying civil, tax \u0026 social security numbers; Chave Móvel Digital for eKYC`}]},{\"id\":`RO`,\"name\":`Romania`,\"idTypes\":[{\"id\":`cid-ro`,\"name\":`Identity Card`,\"localName\":`Carte de identitate (CI / new CEI)`,\"authority\":`MAI (DEPABD)`,\"format\":`13-digit CNP (encodes DOB)`,\"notes\":`Electronic CEI rollout from 2021; mandatory from 14`}]},{\"id\":`RU`,\"name\":`Russia`,\"idTypes\":[{\"id\":`cid-ru`,\"name\":`Internal Passport`,\"localName\":`Внутренний паспорт (vnutrenniy pasport)`,\"authority\":`Ministry of Internal Affairs`,\"format\":`Series + number; SNILS \u0026 INN as numbers`,\"notes\":`Internal passport IS the national ID (distinct from travel passport); mandatory from 14`}]},{\"id\":`SM`,\"name\":`San Marino`,\"idTypes\":[{\"id\":`cid-sm`,\"name\":`Identity Card`,\"localName\":`Carta d'identità`,\"authority\":`Ufficio Stato Civile`,\"format\":`Card number`,\"notes\":`ISS number for services`}]},{\"id\":`RS`,\"name\":`Serbia`,\"idTypes\":[{\"id\":`cid-rs`,\"name\":`Identity Card`,\"localName\":`Lična karta (Лична карта)`,\"authority\":`Ministry of Interior`,\"format\":`13-digit JMBG`,\"notes\":`Chip card; mandatory from 16`}]},{\"id\":`SK`,\"name\":`Slovakia`,\"idTypes\":[{\"id\":`cid-sk`,\"name\":`Identity Card`,\"localName\":`Občiansky preukaz`,\"authority\":`Ministry of Interior`,\"format\":`Rodné číslo (birth number)`,\"notes\":`eID chip card; mandatory from 15`}]},{\"id\":`SI`,\"name\":`Slovenia`,\"idTypes\":[{\"id\":`cid-si`,\"name\":`Identity Card`,\"localName\":`Osebna izkaznica`,\"authority\":`Administrative units (MNZ)`,\"format\":`13-digit EMŠO`,\"notes\":`Biometric card since 2022`}]},{\"id\":`ES`,\"name\":`Spain`,\"idTypes\":[{\"id\":`cid-es`,\"name\":`National Identity Document`,\"localName\":`Documento Nacional de Identidad (DNI / DNIe)`,\"authority\":`Policía Nacional`,\"format\":`8 digits + letter (NIF)`,\"notes\":`Mandatory from 14; DNIe chip; NIE for foreigners is the parallel number`}]},{\"id\":`SE`,\"name\":`Sweden`,\"idTypes\":[{\"id\":`cid-se`,\"name\":`National Identity Card`,\"localName\":`Nationellt identitetskort; Skatteverket ID-kort`,\"authority\":`Police (national ID card); Tax Agency (ID-kort)`,\"format\":`10/12-digit personnummer`,\"notes\":`BankID dominates eKYC; personnummer is the KYC backbone`}]},{\"id\":`CH`,\"name\":`Switzerland`,\"idTypes\":[{\"id\":`cid-ch`,\"name\":`Identity Card`,\"localName\":`Identitätskarte / Carte d'identité (IDK)`,\"authority\":`Cantonal passport offices (fedpol)`,\"format\":`Card number; AHV number (756.xxxx) separate`,\"notes\":`Voluntary; widely held`}]},{\"id\":`UA`,\"name\":`Ukraine`,\"idTypes\":[{\"id\":`cid-ua`,\"name\":`Identity Card`,\"localName\":`ID-картка (plastic ID card)`,\"authority\":`State Migration Service`,\"format\":`13-digit UNZR + 10-digit RNTRC (tax)`,\"notes\":`Replaced booklet internal passport from 2016; Diia app digital ID legally equivalent`}]},{\"id\":`GB`,\"name\":`United Kingdom`,\"idTypes\":[{\"id\":`cid-gb`,\"name\":`(digital ID scheme announced; not yet issued)`,\"authority\":`— (Home Office for future digital ID)`,\"format\":`NINo (National Insurance number) is a number only`,\"notes\":`No national ID card; banks rely on excluded docs + electronic checks; PASS proof-of-age cards exist but limited KYC acceptance`}]},{\"id\":`VA`,\"name\":`Vatican City`,\"idTypes\":[{\"id\":`cid-va`,\"name\":`Vatican Identity Card`,\"localName\":`Carta d'identità vaticana`,\"authority\":`Governorate of Vatican City State`,\"format\":`Card number`,\"notes\":`Citizens/officials only`}]}]},{\"id\":`oceania`,\"category\":`Oceania`,\"description\":`Oceanian country-specific ID documents`,\"countries\":[{\"id\":`AU`,\"name\":`Australia`,\"idTypes\":[{\"id\":`cid-au`,\"name\":`State/Territory Photo Card (non-driver); Digital ID (myID)`,\"authority\":`State transport/registry agencies; ATO (myID)`,\"format\":`Varies; TFN is a number only`,\"notes\":`No national ID; NSW/VIC/QLD etc. Photo Cards are the country-specific card; Document Verification Service (DVS) underpins eKYC`}]},{\"id\":`FJ`,\"name\":`Fiji`,\"idTypes\":[{\"id\":`cid-fj`,\"name\":`(No single national ID)`,\"localName\":`FNPF/Voter Joint ID Card`,\"authority\":`Fiji National Provident Fund / Elections Office`,\"format\":`FNPF number`,\"notes\":`Joint FNPF-voter card is the de facto national ID`}]},{\"id\":`KI`,\"name\":`Kiribati`,\"idTypes\":[{\"id\":`cid-ki`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Civil Registration Office`,\"format\":`ID number`,\"notes\":`Rollout ongoing`}]},{\"id\":`MH`,\"name\":`Marshall Islands`,\"idTypes\":[{\"id\":`cid-mh`,\"name\":`Social Security Card`,\"authority\":`MISSA`,\"format\":`SSN`,\"notes\":`Limited domestic ID infrastructure`}]},{\"id\":`FM`,\"name\":`Micronesia`,\"idTypes\":[{\"id\":`cid-fm`,\"name\":`Voter ID / SSN Card`,\"authority\":`National \u0026 state offices`,\"format\":`SSN`,\"notes\":`Limited domestic ID infrastructure`}]},{\"id\":`NR`,\"name\":`Nauru`,\"idTypes\":[{\"id\":`cid-nr`,\"name\":`National ID (none issued)`,\"authority\":`—`,\"format\":`—`,\"notes\":`Birth certificate + excluded docs used`}]},{\"id\":`NZ`,\"name\":`New Zealand`,\"idTypes\":[{\"id\":`cid-nz`,\"name\":`Kiwi Access Card (18+); RealMe (digital)`,\"authority\":`Hospitality NZ (Kiwi Access); DIA (RealMe)`,\"format\":`—`,\"notes\":`No national ID; Kiwi Access is the country-specific photo card; RealMe verified identity for eKYC`}]},{\"id\":`PW`,\"name\":`Palau`,\"idTypes\":[{\"id\":`cid-pw`,\"name\":`Social Security Card`,\"authority\":`Palau SSA`,\"format\":`SSN`}]},{\"id\":`PG`,\"name\":`Papua New Guinea`,\"idTypes\":[{\"id\":`cid-pg`,\"name\":`National Identity Card`,\"localName\":`NID Card`,\"authority\":`PNG Civil \u0026 Identity Registry`,\"format\":`NID number`,\"notes\":`Rollout ongoing; coverage still partial`}]},{\"id\":`WS`,\"name\":`Samoa`,\"idTypes\":[{\"id\":`cid-ws`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Samoa Bureau of Statistics (SNID)`,\"format\":`National ID number`,\"notes\":`National Digital ID program launched 2023+`}]},{\"id\":`SB`,\"name\":`Solomon Islands`,\"idTypes\":[{\"id\":`cid-sb`,\"name\":`Voter ID Card`,\"authority\":`Electoral Commission`,\"format\":`Voter number`,\"notes\":`National ID planned`}]},{\"id\":`TO`,\"name\":`Tonga`,\"idTypes\":[{\"id\":`cid-to`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Civil Registration Unit (MIA)`,\"format\":`NIN`,\"notes\":`National ID Act 2010`}]},{\"id\":`TV`,\"name\":`Tuvalu`,\"idTypes\":[{\"id\":`cid-tv`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Civil Registry`,\"format\":`ID number`,\"notes\":`Digital ID work underway (Future Now project)`}]},{\"id\":`VU`,\"name\":`Vanuatu`,\"idTypes\":[{\"id\":`cid-vu`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Civil Registration \u0026 Vital Statistics (CRVS)`,\"format\":`NIN`,\"notes\":`Card doubles as voter ID`}]}]}];const JURISDICTIONS=[{\"code\":`AD`,\"label\":`Andorra`,\"group\":`Countries`,\"countryCode\":`AD`},{\"code\":`AE`,\"label\":`United Arab Emirates`,\"group\":`Countries`,\"countryCode\":`AE`},{\"code\":`AF`,\"label\":`Afghanistan`,\"group\":`Countries`,\"countryCode\":`AF`},{\"code\":`AG`,\"label\":`Antigua and Barbuda`,\"group\":`Countries`,\"countryCode\":`AG`},{\"code\":`AI`,\"label\":`Anguilla`,\"group\":`Countries`,\"countryCode\":`AI`},{\"code\":`AL`,\"label\":`Albania`,\"group\":`Countries`,\"countryCode\":`AL`},{\"code\":`AM`,\"label\":`Armenia`,\"group\":`Countries`,\"countryCode\":`AM`},{\"code\":`AO`,\"label\":`Angola`,\"group\":`Countries`,\"countryCode\":`AO`},{\"code\":`AQ`,\"label\":`Antarctica`,\"group\":`Countries`,\"countryCode\":`AQ`},{\"code\":`AR`,\"label\":`Argentina`,\"group\":`Countries`,\"countryCode\":`AR`},{\"code\":`AS`,\"label\":`American Samoa`,\"group\":`Countries`,\"countryCode\":`AS`},{\"code\":`AT`,\"label\":`Austria`,\"group\":`Countries`,\"countryCode\":`AT`},{\"code\":`AU`,\"label\":`Australia`,\"group\":`Countries`,\"countryCode\":`AU`},{\"code\":`AW`,\"label\":`Aruba`,\"group\":`Countries`,\"countryCode\":`AW`},{\"code\":`AX`,\"label\":`Alland Islands`,\"group\":`Countries`,\"countryCode\":`AX`},{\"code\":`AZ`,\"label\":`Azerbaijan`,\"group\":`Countries`,\"countryCode\":`AZ`},{\"code\":`BA`,\"label\":`Bosnia and Herzegovina`,\"group\":`Countries`,\"countryCode\":`BA`},{\"code\":`BB`,\"label\":`Barbados`,\"group\":`Countries`,\"countryCode\":`BB`},{\"code\":`BD`,\"label\":`Bangladesh`,\"group\":`Countries`,\"countryCode\":`BD`},{\"code\":`BE`,\"label\":`Belgium`,\"group\":`Countries`,\"countryCode\":`BE`},{\"code\":`BF`,\"label\":`Burkina Faso`,\"group\":`Countries`,\"countryCode\":`BF`},{\"code\":`BG`,\"label\":`Bulgaria`,\"group\":`Countries`,\"countryCode\":`BG`},{\"code\":`BH`,\"label\":`Bahrain`,\"group\":`Countries`,\"countryCode\":`BH`},{\"code\":`BI`,\"label\":`Burundi`,\"group\":`Countries`,\"countryCode\":`BI`},{\"code\":`BJ`,\"label\":`Benin`,\"group\":`Countries`,\"countryCode\":`BJ`},{\"code\":`BL`,\"label\":`Saint Barthelemy`,\"group\":`Countries`,\"countryCode\":`BL`},{\"code\":`BM`,\"label\":`Bermuda`,\"group\":`Countries`,\"countryCode\":`BM`},{\"code\":`BN`,\"label\":`Brunei Darussalam`,\"group\":`Countries`,\"countryCode\":`BN`},{\"code\":`BO`,\"label\":`Bolivia`,\"group\":`Countries`,\"countryCode\":`BO`},{\"code\":`BR`,\"label\":`Brazil`,\"group\":`Countries`,\"countryCode\":`BR`},{\"code\":`BS`,\"label\":`Bahamas`,\"group\":`Countries`,\"countryCode\":`BS`},{\"code\":`BT`,\"label\":`Bhutan`,\"group\":`Countries`,\"countryCode\":`BT`},{\"code\":`BV`,\"label\":`Bouvet Island`,\"group\":`Countries`,\"countryCode\":`BV`},{\"code\":`BW`,\"label\":`Botswana`,\"group\":`Countries`,\"countryCode\":`BW`},{\"code\":`BY`,\"label\":`Belarus`,\"group\":`Countries`,\"countryCode\":`BY`},{\"code\":`BZ`,\"label\":`Belize`,\"group\":`Countries`,\"countryCode\":`BZ`},{\"code\":`CA`,\"label\":`Canada`,\"group\":`Countries`,\"countryCode\":`CA`},{\"code\":`CC`,\"label\":`Cocos (Keeling) Islands`,\"group\":`Countries`,\"countryCode\":`CC`},{\"code\":`CD`,\"label\":`Congo, Democratic Republic of the`,\"group\":`Countries`,\"countryCode\":`CD`},{\"code\":`CF`,\"label\":`Central African Republic`,\"group\":`Countries`,\"countryCode\":`CF`},{\"code\":`CG`,\"label\":`Congo, Republic of the`,\"group\":`Countries`,\"countryCode\":`CG`},{\"code\":`CH`,\"label\":`Switzerland`,\"group\":`Countries`,\"countryCode\":`CH`},{\"code\":`CI`,\"label\":`Cote d'Ivoire`,\"group\":`Countries`,\"countryCode\":`CI`},{\"code\":`CK`,\"label\":`Cook Islands`,\"group\":`Countries`,\"countryCode\":`CK`},{\"code\":`CL`,\"label\":`Chile`,\"group\":`Countries`,\"countryCode\":`CL`},{\"code\":`CM`,\"label\":`Cameroon`,\"group\":`Countries`,\"countryCode\":`CM`},{\"code\":`CN`,\"label\":`China`,\"group\":`Countries`,\"countryCode\":`CN`},{\"code\":`CO`,\"label\":`Colombia`,\"group\":`Countries`,\"countryCode\":`CO`},{\"code\":`CR`,\"label\":`Costa Rica`,\"group\":`Countries`,\"countryCode\":`CR`},{\"code\":`CU`,\"label\":`Cuba`,\"group\":`Countries`,\"countryCode\":`CU`},{\"code\":`CV`,\"label\":`Cape Verde`,\"group\":`Countries`,\"countryCode\":`CV`},{\"code\":`CW`,\"label\":`Curacao`,\"group\":`Countries`,\"countryCode\":`CW`},{\"code\":`CX`,\"label\":`Christmas Island`,\"group\":`Countries`,\"countryCode\":`CX`},{\"code\":`CY`,\"label\":`Cyprus`,\"group\":`Countries`,\"countryCode\":`CY`},{\"code\":`CZ`,\"label\":`Czech Republic`,\"group\":`Countries`,\"countryCode\":`CZ`},{\"code\":`DE`,\"label\":`Germany`,\"group\":`Countries`,\"countryCode\":`DE`},{\"code\":`DJ`,\"label\":`Djibouti`,\"group\":`Countries`,\"countryCode\":`DJ`},{\"code\":`DK`,\"label\":`Denmark`,\"group\":`Countries`,\"countryCode\":`DK`},{\"code\":`DM`,\"label\":`Dominica`,\"group\":`Countries`,\"countryCode\":`DM`},{\"code\":`DO`,\"label\":`Dominican Republic`,\"group\":`Countries`,\"countryCode\":`DO`},{\"code\":`DZ`,\"label\":`Algeria`,\"group\":`Countries`,\"countryCode\":`DZ`},{\"code\":`EC`,\"label\":`Ecuador`,\"group\":`Countries`,\"countryCode\":`EC`},{\"code\":`EE`,\"label\":`Estonia`,\"group\":`Countries`,\"countryCode\":`EE`},{\"code\":`EG`,\"label\":`Egypt`,\"group\":`Countries`,\"countryCode\":`EG`},{\"code\":`EH`,\"label\":`Western Sahara`,\"group\":`Countries`,\"countryCode\":`EH`},{\"code\":`ER`,\"label\":`Eritrea`,\"group\":`Countries`,\"countryCode\":`ER`},{\"code\":`ES`,\"label\":`Spain`,\"group\":`Countries`,\"countryCode\":`ES`},{\"code\":`ET`,\"label\":`Ethiopia`,\"group\":`Countries`,\"countryCode\":`ET`},{\"code\":`FI`,\"label\":`Finland`,\"group\":`Countries`,\"countryCode\":`FI`},{\"code\":`FJ`,\"label\":`Fiji`,\"group\":`Countries`,\"countryCode\":`FJ`},{\"code\":`FK`,\"label\":`Falkland Islands (Malvinas)`,\"group\":`Countries`,\"countryCode\":`FK`},{\"code\":`FM`,\"label\":`Micronesia, Federated States of`,\"group\":`Countries`,\"countryCode\":`FM`},{\"code\":`FO`,\"label\":`Faroe Islands`,\"group\":`Countries`,\"countryCode\":`FO`},{\"code\":`FR`,\"label\":`France`,\"group\":`Countries`,\"countryCode\":`FR`},{\"code\":`GA`,\"label\":`Gabon`,\"group\":`Countries`,\"countryCode\":`GA`},{\"code\":`GB`,\"label\":`United Kingdom`,\"group\":`Countries`,\"countryCode\":`GB`},{\"code\":`GD`,\"label\":`Grenada`,\"group\":`Countries`,\"countryCode\":`GD`},{\"code\":`GE`,\"label\":`Georgia`,\"group\":`Countries`,\"countryCode\":`GE`},{\"code\":`GF`,\"label\":`French Guiana`,\"group\":`Countries`,\"countryCode\":`GF`},{\"code\":`GG`,\"label\":`Guernsey`,\"group\":`Countries`,\"countryCode\":`GG`},{\"code\":`GH`,\"label\":`Ghana`,\"group\":`Countries`,\"countryCode\":`GH`},{\"code\":`GI`,\"label\":`Gibraltar`,\"group\":`Countries`,\"countryCode\":`GI`},{\"code\":`GL`,\"label\":`Greenland`,\"group\":`Countries`,\"countryCode\":`GL`},{\"code\":`GM`,\"label\":`Gambia`,\"group\":`Countries`,\"countryCode\":`GM`},{\"code\":`GN`,\"label\":`Guinea`,\"group\":`Countries`,\"countryCode\":`GN`},{\"code\":`GP`,\"label\":`Guadeloupe`,\"group\":`Countries`,\"countryCode\":`GP`},{\"code\":`GQ`,\"label\":`Equatorial Guinea`,\"group\":`Countries`,\"countryCode\":`GQ`},{\"code\":`GR`,\"label\":`Greece`,\"group\":`Countries`,\"countryCode\":`GR`},{\"code\":`GS`,\"label\":`South Georgia and the South Sandwich Islands`,\"group\":`Countries`,\"countryCode\":`GS`},{\"code\":`GT`,\"label\":`Guatemala`,\"group\":`Countries`,\"countryCode\":`GT`},{\"code\":`GU`,\"label\":`Guam`,\"group\":`Countries`,\"countryCode\":`GU`},{\"code\":`GW`,\"label\":`Guinea-Bissau`,\"group\":`Countries`,\"countryCode\":`GW`},{\"code\":`GY`,\"label\":`Guyana`,\"group\":`Countries`,\"countryCode\":`GY`},{\"code\":`HK`,\"label\":`Hong Kong`,\"group\":`Countries`,\"countryCode\":`HK`},{\"code\":`HM`,\"label\":`Heard Island and McDonald Islands`,\"group\":`Countries`,\"countryCode\":`HM`},{\"code\":`HN`,\"label\":`Honduras`,\"group\":`Countries`,\"countryCode\":`HN`},{\"code\":`HR`,\"label\":`Croatia`,\"group\":`Countries`,\"countryCode\":`HR`},{\"code\":`HT`,\"label\":`Haiti`,\"group\":`Countries`,\"countryCode\":`HT`},{\"code\":`HU`,\"label\":`Hungary`,\"group\":`Countries`,\"countryCode\":`HU`},{\"code\":`ID`,\"label\":`Indonesia`,\"group\":`Countries`,\"countryCode\":`ID`},{\"code\":`IE`,\"label\":`Ireland`,\"group\":`Countries`,\"countryCode\":`IE`},{\"code\":`IL`,\"label\":`Israel`,\"group\":`Countries`,\"countryCode\":`IL`},{\"code\":`IM`,\"label\":`Isle of Man`,\"group\":`Countries`,\"countryCode\":`IM`},{\"code\":`IN`,\"label\":`India`,\"group\":`Countries`,\"countryCode\":`IN`},{\"code\":`IO`,\"label\":`British Indian Ocean Territory`,\"group\":`Countries`,\"countryCode\":`IO`},{\"code\":`IQ`,\"label\":`Iraq`,\"group\":`Countries`,\"countryCode\":`IQ`},{\"code\":`IR`,\"label\":`Iran, Islamic Republic of`,\"group\":`Countries`,\"countryCode\":`IR`},{\"code\":`IS`,\"label\":`Iceland`,\"group\":`Countries`,\"countryCode\":`IS`},{\"code\":`IT`,\"label\":`Italy`,\"group\":`Countries`,\"countryCode\":`IT`},{\"code\":`JE`,\"label\":`Jersey`,\"group\":`Countries`,\"countryCode\":`JE`},{\"code\":`JM`,\"label\":`Jamaica`,\"group\":`Countries`,\"countryCode\":`JM`},{\"code\":`JO`,\"label\":`Jordan`,\"group\":`Countries`,\"countryCode\":`JO`},{\"code\":`JP`,\"label\":`Japan`,\"group\":`Countries`,\"countryCode\":`JP`},{\"code\":`KE`,\"label\":`Kenya`,\"group\":`Countries`,\"countryCode\":`KE`},{\"code\":`KG`,\"label\":`Kyrgyzstan`,\"group\":`Countries`,\"countryCode\":`KG`},{\"code\":`KH`,\"label\":`Cambodia`,\"group\":`Countries`,\"countryCode\":`KH`},{\"code\":`KI`,\"label\":`Kiribati`,\"group\":`Countries`,\"countryCode\":`KI`},{\"code\":`KM`,\"label\":`Comoros`,\"group\":`Countries`,\"countryCode\":`KM`},{\"code\":`KN`,\"label\":`Saint Kitts and Nevis`,\"group\":`Countries`,\"countryCode\":`KN`},{\"code\":`KP`,\"label\":`Korea, Democratic People's Republic of`,\"group\":`Countries`,\"countryCode\":`KP`},{\"code\":`KR`,\"label\":`Korea, Republic of`,\"group\":`Countries`,\"countryCode\":`KR`},{\"code\":`KW`,\"label\":`Kuwait`,\"group\":`Countries`,\"countryCode\":`KW`},{\"code\":`KY`,\"label\":`Cayman Islands`,\"group\":`Countries`,\"countryCode\":`KY`},{\"code\":`KZ`,\"label\":`Kazakhstan`,\"group\":`Countries`,\"countryCode\":`KZ`},{\"code\":`LA`,\"label\":`Lao People's Democratic Republic`,\"group\":`Countries`,\"countryCode\":`LA`},{\"code\":`LB`,\"label\":`Lebanon`,\"group\":`Countries`,\"countryCode\":`LB`},{\"code\":`LC`,\"label\":`Saint Lucia`,\"group\":`Countries`,\"countryCode\":`LC`},{\"code\":`LI`,\"label\":`Liechtenstein`,\"group\":`Countries`,\"countryCode\":`LI`},{\"code\":`LK`,\"label\":`Sri Lanka`,\"group\":`Countries`,\"countryCode\":`LK`},{\"code\":`LR`,\"label\":`Liberia`,\"group\":`Countries`,\"countryCode\":`LR`},{\"code\":`LS`,\"label\":`Lesotho`,\"group\":`Countries`,\"countryCode\":`LS`},{\"code\":`LT`,\"label\":`Lithuania`,\"group\":`Countries`,\"countryCode\":`LT`},{\"code\":`LU`,\"label\":`Luxembourg`,\"group\":`Countries`,\"countryCode\":`LU`},{\"code\":`LV`,\"label\":`Latvia`,\"group\":`Countries`,\"countryCode\":`LV`},{\"code\":`LY`,\"label\":`Libya`,\"group\":`Countries`,\"countryCode\":`LY`},{\"code\":`MA`,\"label\":`Morocco`,\"group\":`Countries`,\"countryCode\":`MA`},{\"code\":`MC`,\"label\":`Monaco`,\"group\":`Countries`,\"countryCode\":`MC`},{\"code\":`MD`,\"label\":`Moldova, Republic of`,\"group\":`Countries`,\"countryCode\":`MD`},{\"code\":`ME`,\"label\":`Montenegro`,\"group\":`Countries`,\"countryCode\":`ME`},{\"code\":`MF`,\"label\":`Saint Martin (French part)`,\"group\":`Countries`,\"countryCode\":`MF`},{\"code\":`MG`,\"label\":`Madagascar`,\"group\":`Countries`,\"countryCode\":`MG`},{\"code\":`MH`,\"label\":`Marshall Islands`,\"group\":`Countries`,\"countryCode\":`MH`},{\"code\":`MK`,\"label\":`Macedonia, the Former Yugoslav Republic of`,\"group\":`Countries`,\"countryCode\":`MK`},{\"code\":`ML`,\"label\":`Mali`,\"group\":`Countries`,\"countryCode\":`ML`},{\"code\":`MM`,\"label\":`Myanmar`,\"group\":`Countries`,\"countryCode\":`MM`},{\"code\":`MN`,\"label\":`Mongolia`,\"group\":`Countries`,\"countryCode\":`MN`},{\"code\":`MO`,\"label\":`Macao`,\"group\":`Countries`,\"countryCode\":`MO`},{\"code\":`MP`,\"label\":`Northern Mariana Islands`,\"group\":`Countries`,\"countryCode\":`MP`},{\"code\":`MQ`,\"label\":`Martinique`,\"group\":`Countries`,\"countryCode\":`MQ`},{\"code\":`MR`,\"label\":`Mauritania`,\"group\":`Countries`,\"countryCode\":`MR`},{\"code\":`MS`,\"label\":`Montserrat`,\"group\":`Countries`,\"countryCode\":`MS`},{\"code\":`MT`,\"label\":`Malta`,\"group\":`Countries`,\"countryCode\":`MT`},{\"code\":`MU`,\"label\":`Mauritius`,\"group\":`Countries`,\"countryCode\":`MU`},{\"code\":`MV`,\"label\":`Maldives`,\"group\":`Countries`,\"countryCode\":`MV`},{\"code\":`MW`,\"label\":`Malawi`,\"group\":`Countries`,\"countryCode\":`MW`},{\"code\":`MX`,\"label\":`Mexico`,\"group\":`Countries`,\"countryCode\":`MX`},{\"code\":`MY`,\"label\":`Malaysia`,\"group\":`Countries`,\"countryCode\":`MY`},{\"code\":`MZ`,\"label\":`Mozambique`,\"group\":`Countries`,\"countryCode\":`MZ`},{\"code\":`NA`,\"label\":`Namibia`,\"group\":`Countries`,\"countryCode\":`NA`},{\"code\":`NC`,\"label\":`New Caledonia`,\"group\":`Countries`,\"countryCode\":`NC`},{\"code\":`NE`,\"label\":`Niger`,\"group\":`Countries`,\"countryCode\":`NE`},{\"code\":`NF`,\"label\":`Norfolk Island`,\"group\":`Countries`,\"countryCode\":`NF`},{\"code\":`NG`,\"label\":`Nigeria`,\"group\":`Countries`,\"countryCode\":`NG`},{\"code\":`NI`,\"label\":`Nicaragua`,\"group\":`Countries`,\"countryCode\":`NI`},{\"code\":`NL`,\"label\":`Netherlands`,\"group\":`Countries`,\"countryCode\":`NL`},{\"code\":`NO`,\"label\":`Norway`,\"group\":`Countries`,\"countryCode\":`NO`},{\"code\":`NP`,\"label\":`Nepal`,\"group\":`Countries`,\"countryCode\":`NP`},{\"code\":`NR`,\"label\":`Nauru`,\"group\":`Countries`,\"countryCode\":`NR`},{\"code\":`NU`,\"label\":`Niue`,\"group\":`Countries`,\"countryCode\":`NU`},{\"code\":`NZ`,\"label\":`New Zealand`,\"group\":`Countries`,\"countryCode\":`NZ`},{\"code\":`OM`,\"label\":`Oman`,\"group\":`Countries`,\"countryCode\":`OM`},{\"code\":`PA`,\"label\":`Panama`,\"group\":`Countries`,\"countryCode\":`PA`},{\"code\":`PE`,\"label\":`Peru`,\"group\":`Countries`,\"countryCode\":`PE`},{\"code\":`PF`,\"label\":`French Polynesia`,\"group\":`Countries`,\"countryCode\":`PF`},{\"code\":`PG`,\"label\":`Papua New Guinea`,\"group\":`Countries`,\"countryCode\":`PG`},{\"code\":`PH`,\"label\":`Philippines`,\"group\":`Countries`,\"countryCode\":`PH`},{\"code\":`PK`,\"label\":`Pakistan`,\"group\":`Countries`,\"countryCode\":`PK`},{\"code\":`PL`,\"label\":`Poland`,\"group\":`Countries`,\"countryCode\":`PL`},{\"code\":`PM`,\"label\":`Saint Pierre and Miquelon`,\"group\":`Countries`,\"countryCode\":`PM`},{\"code\":`PN`,\"label\":`Pitcairn`,\"group\":`Countries`,\"countryCode\":`PN`},{\"code\":`PR`,\"label\":`Puerto Rico`,\"group\":`Countries`,\"countryCode\":`PR`},{\"code\":`PS`,\"label\":`Palestine, State of`,\"group\":`Countries`,\"countryCode\":`PS`},{\"code\":`PT`,\"label\":`Portugal`,\"group\":`Countries`,\"countryCode\":`PT`},{\"code\":`PW`,\"label\":`Palau`,\"group\":`Countries`,\"countryCode\":`PW`},{\"code\":`PY`,\"label\":`Paraguay`,\"group\":`Countries`,\"countryCode\":`PY`},{\"code\":`QA`,\"label\":`Qatar`,\"group\":`Countries`,\"countryCode\":`QA`},{\"code\":`RE`,\"label\":`Reunion`,\"group\":`Countries`,\"countryCode\":`RE`},{\"code\":`RO`,\"label\":`Romania`,\"group\":`Countries`,\"countryCode\":`RO`},{\"code\":`RS`,\"label\":`Serbia`,\"group\":`Countries`,\"countryCode\":`RS`},{\"code\":`RU`,\"label\":`Russian Federation`,\"group\":`Countries`,\"countryCode\":`RU`},{\"code\":`RW`,\"label\":`Rwanda`,\"group\":`Countries`,\"countryCode\":`RW`},{\"code\":`SA`,\"label\":`Saudi Arabia`,\"group\":`Countries`,\"countryCode\":`SA`},{\"code\":`SB`,\"label\":`Solomon Islands`,\"group\":`Countries`,\"countryCode\":`SB`},{\"code\":`SC`,\"label\":`Seychelles`,\"group\":`Countries`,\"countryCode\":`SC`},{\"code\":`SD`,\"label\":`Sudan`,\"group\":`Countries`,\"countryCode\":`SD`},{\"code\":`SE`,\"label\":`Sweden`,\"group\":`Countries`,\"countryCode\":`SE`},{\"code\":`SG`,\"label\":`Singapore`,\"group\":`Countries`,\"countryCode\":`SG`},{\"code\":`SH`,\"label\":`Saint Helena`,\"group\":`Countries`,\"countryCode\":`SH`},{\"code\":`SI`,\"label\":`Slovenia`,\"group\":`Countries`,\"countryCode\":`SI`},{\"code\":`SJ`,\"label\":`Svalbard and Jan Mayen`,\"group\":`Countries`,\"countryCode\":`SJ`},{\"code\":`SK`,\"label\":`Slovakia`,\"group\":`Countries`,\"countryCode\":`SK`},{\"code\":`SL`,\"label\":`Sierra Leone`,\"group\":`Countries`,\"countryCode\":`SL`},{\"code\":`SM`,\"label\":`San Marino`,\"group\":`Countries`,\"countryCode\":`SM`},{\"code\":`SN`,\"label\":`Senegal`,\"group\":`Countries`,\"countryCode\":`SN`},{\"code\":`SO`,\"label\":`Somalia`,\"group\":`Countries`,\"countryCode\":`SO`},{\"code\":`SR`,\"label\":`Suriname`,\"group\":`Countries`,\"countryCode\":`SR`},{\"code\":`SS`,\"label\":`South Sudan`,\"group\":`Countries`,\"countryCode\":`SS`},{\"code\":`ST`,\"label\":`Sao Tome and Principe`,\"group\":`Countries`,\"countryCode\":`ST`},{\"code\":`SV`,\"label\":`El Salvador`,\"group\":`Countries`,\"countryCode\":`SV`},{\"code\":`SX`,\"label\":`Sint Maarten (Dutch part)`,\"group\":`Countries`,\"countryCode\":`SX`},{\"code\":`SY`,\"label\":`Syrian Arab Republic`,\"group\":`Countries`,\"countryCode\":`SY`},{\"code\":`SZ`,\"label\":`Swaziland`,\"group\":`Countries`,\"countryCode\":`SZ`},{\"code\":`TC`,\"label\":`Turks and Caicos Islands`,\"group\":`Countries`,\"countryCode\":`TC`},{\"code\":`TD`,\"label\":`Chad`,\"group\":`Countries`,\"countryCode\":`TD`},{\"code\":`TF`,\"label\":`French Southern Territories`,\"group\":`Countries`,\"countryCode\":`TF`},{\"code\":`TG`,\"label\":`Togo`,\"group\":`Countries`,\"countryCode\":`TG`},{\"code\":`TH`,\"label\":`Thailand`,\"group\":`Countries`,\"countryCode\":`TH`},{\"code\":`TJ`,\"label\":`Tajikistan`,\"group\":`Countries`,\"countryCode\":`TJ`},{\"code\":`TK`,\"label\":`Tokelau`,\"group\":`Countries`,\"countryCode\":`TK`},{\"code\":`TL`,\"label\":`Timor-Leste`,\"group\":`Countries`,\"countryCode\":`TL`},{\"code\":`TM`,\"label\":`Turkmenistan`,\"group\":`Countries`,\"countryCode\":`TM`},{\"code\":`TN`,\"label\":`Tunisia`,\"group\":`Countries`,\"countryCode\":`TN`},{\"code\":`TO`,\"label\":`Tonga`,\"group\":`Countries`,\"countryCode\":`TO`},{\"code\":`TR`,\"label\":`Turkey`,\"group\":`Countries`,\"countryCode\":`TR`},{\"code\":`TT`,\"label\":`Trinidad and Tobago`,\"group\":`Countries`,\"countryCode\":`TT`},{\"code\":`TV`,\"label\":`Tuvalu`,\"group\":`Countries`,\"countryCode\":`TV`},{\"code\":`TW`,\"label\":`Taiwan, Province of China`,\"group\":`Countries`,\"countryCode\":`TW`},{\"code\":`TZ`,\"label\":`United Republic of Tanzania`,\"group\":`Countries`,\"countryCode\":`TZ`},{\"code\":`UA`,\"label\":`Ukraine`,\"group\":`Countries`,\"countryCode\":`UA`},{\"code\":`UG`,\"label\":`Uganda`,\"group\":`Countries`,\"countryCode\":`UG`},{\"code\":`US`,\"label\":`United States`,\"group\":`Countries`,\"countryCode\":`US`},{\"code\":`UY`,\"label\":`Uruguay`,\"group\":`Countries`,\"countryCode\":`UY`},{\"code\":`UZ`,\"label\":`Uzbekistan`,\"group\":`Countries`,\"countryCode\":`UZ`},{\"code\":`VA`,\"label\":`Holy See (Vatican City State)`,\"group\":`Countries`,\"countryCode\":`VA`},{\"code\":`VC`,\"label\":`Saint Vincent and the Grenadines`,\"group\":`Countries`,\"countryCode\":`VC`},{\"code\":`VE`,\"label\":`Venezuela`,\"group\":`Countries`,\"countryCode\":`VE`},{\"code\":`VG`,\"label\":`British Virgin Islands`,\"group\":`Countries`,\"countryCode\":`VG`},{\"code\":`VI`,\"label\":`US Virgin Islands`,\"group\":`Countries`,\"countryCode\":`VI`},{\"code\":`VN`,\"label\":`Vietnam`,\"group\":`Countries`,\"countryCode\":`VN`},{\"code\":`VU`,\"label\":`Vanuatu`,\"group\":`Countries`,\"countryCode\":`VU`},{\"code\":`WF`,\"label\":`Wallis and Futuna`,\"group\":`Countries`,\"countryCode\":`WF`},{\"code\":`WS`,\"label\":`Samoa`,\"group\":`Countries`,\"countryCode\":`WS`},{\"code\":`XK`,\"label\":`Kosovo`,\"group\":`Countries`,\"countryCode\":`XK`},{\"code\":`YE`,\"label\":`Yemen`,\"group\":`Countries`,\"countryCode\":`YE`},{\"code\":`YT`,\"label\":`Mayotte`,\"group\":`Countries`,\"countryCode\":`YT`},{\"code\":`ZA`,\"label\":`South Africa`,\"group\":`Countries`,\"countryCode\":`ZA`},{\"code\":`ZM`,\"label\":`Zambia`,\"group\":`Countries`,\"countryCode\":`ZM`},{\"code\":`ZW`,\"label\":`Zimbabwe`,\"group\":`Countries`,\"countryCode\":`ZW`},{\"code\":`US-AL`,\"label\":`Alabama`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-AK`,\"label\":`Alaska`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-AZ`,\"label\":`Arizona`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-AR`,\"label\":`Arkansas`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-CA`,\"label\":`California`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-CO`,\"label\":`Colorado`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-CT`,\"label\":`Connecticut`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-DE`,\"label\":`Delaware`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-FL`,\"label\":`Florida`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-GA`,\"label\":`Georgia`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-HI`,\"label\":`Hawaii`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-ID`,\"label\":`Idaho`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-IL`,\"label\":`Illinois`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-IN`,\"label\":`Indiana`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-IA`,\"label\":`Iowa`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-KS`,\"label\":`Kansas`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-KY`,\"label\":`Kentucky`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-LA`,\"label\":`Louisiana`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-ME`,\"label\":`Maine`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-MD`,\"label\":`Maryland`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-MA`,\"label\":`Massachusetts`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-MI`,\"label\":`Michigan`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-MN`,\"label\":`Minnesota`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-MS`,\"label\":`Mississippi`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-MO`,\"label\":`Missouri`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-MT`,\"label\":`Montana`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-NE`,\"label\":`Nebraska`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-NV`,\"label\":`Nevada`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-NH`,\"label\":`New Hampshire`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-NJ`,\"label\":`New Jersey`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-NM`,\"label\":`New Mexico`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-NY`,\"label\":`New York`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-NC`,\"label\":`North Carolina`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-ND`,\"label\":`North Dakota`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-OH`,\"label\":`Ohio`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-OK`,\"label\":`Oklahoma`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-OR`,\"label\":`Oregon`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-PA`,\"label\":`Pennsylvania`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-RI`,\"label\":`Rhode Island`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-SC`,\"label\":`South Carolina`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-SD`,\"label\":`South Dakota`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-TN`,\"label\":`Tennessee`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-TX`,\"label\":`Texas`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-UT`,\"label\":`Utah`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-VT`,\"label\":`Vermont`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-VA`,\"label\":`Virginia`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-WA`,\"label\":`Washington`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-WV`,\"label\":`West Virginia`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-WI`,\"label\":`Wisconsin`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`US-WY`,\"label\":`Wyoming`,\"group\":`United States`,\"countryCode\":`US`},{\"code\":`CA-AB`,\"label\":`Alberta`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-BC`,\"label\":`British Columbia`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-MB`,\"label\":`Manitoba`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-NB`,\"label\":`New Brunswick`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-NL`,\"label\":`Newfoundland and Labrador`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-NT`,\"label\":`Northwest Territories`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-NS`,\"label\":`Nova Scotia`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-NU`,\"label\":`Nunavut`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-ON`,\"label\":`Ontario`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-PE`,\"label\":`Prince Edward Island`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-QC`,\"label\":`Quebec`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-SK`,\"label\":`Saskatchewan`,\"group\":`Canada`,\"countryCode\":`CA`},{\"code\":`CA-YT`,\"label\":`Yukon`,\"group\":`Canada`,\"countryCode\":`CA`}];const COUNTRIES=[{\"code\":`AD`,\"label\":`Andorra`,\"phone\":`376`},{\"code\":`AE`,\"label\":`United Arab Emirates`,\"phone\":`971`},{\"code\":`AF`,\"label\":`Afghanistan`,\"phone\":`93`},{\"code\":`AG`,\"label\":`Antigua and Barbuda`,\"phone\":`1-268`},{\"code\":`AI`,\"label\":`Anguilla`,\"phone\":`1-264`},{\"code\":`AL`,\"label\":`Albania`,\"phone\":`355`},{\"code\":`AM`,\"label\":`Armenia`,\"phone\":`374`},{\"code\":`AO`,\"label\":`Angola`,\"phone\":`244`},{\"code\":`AQ`,\"label\":`Antarctica`,\"phone\":`672`},{\"code\":`AR`,\"label\":`Argentina`,\"phone\":`54`},{\"code\":`AS`,\"label\":`American Samoa`,\"phone\":`1-684`},{\"code\":`AT`,\"label\":`Austria`,\"phone\":`43`},{\"code\":`AU`,\"label\":`Australia`,\"phone\":`61`},{\"code\":`AW`,\"label\":`Aruba`,\"phone\":`297`},{\"code\":`AX`,\"label\":`Alland Islands`,\"phone\":`358`},{\"code\":`AZ`,\"label\":`Azerbaijan`,\"phone\":`994`},{\"code\":`BA`,\"label\":`Bosnia and Herzegovina`,\"phone\":`387`},{\"code\":`BB`,\"label\":`Barbados`,\"phone\":`1-246`},{\"code\":`BD`,\"label\":`Bangladesh`,\"phone\":`880`},{\"code\":`BE`,\"label\":`Belgium`,\"phone\":`32`},{\"code\":`BF`,\"label\":`Burkina Faso`,\"phone\":`226`},{\"code\":`BG`,\"label\":`Bulgaria`,\"phone\":`359`},{\"code\":`BH`,\"label\":`Bahrain`,\"phone\":`973`},{\"code\":`BI`,\"label\":`Burundi`,\"phone\":`257`},{\"code\":`BJ`,\"label\":`Benin`,\"phone\":`229`},{\"code\":`BL`,\"label\":`Saint Barthelemy`,\"phone\":`590`},{\"code\":`BM`,\"label\":`Bermuda`,\"phone\":`1-441`},{\"code\":`BN`,\"label\":`Brunei Darussalam`,\"phone\":`673`},{\"code\":`BO`,\"label\":`Bolivia`,\"phone\":`591`},{\"code\":`BR`,\"label\":`Brazil`,\"phone\":`55`},{\"code\":`BS`,\"label\":`Bahamas`,\"phone\":`1-242`},{\"code\":`BT`,\"label\":`Bhutan`,\"phone\":`975`},{\"code\":`BV`,\"label\":`Bouvet Island`,\"phone\":`47`},{\"code\":`BW`,\"label\":`Botswana`,\"phone\":`267`},{\"code\":`BY`,\"label\":`Belarus`,\"phone\":`375`},{\"code\":`BZ`,\"label\":`Belize`,\"phone\":`501`},{\"code\":`CA`,\"label\":`Canada`,\"phone\":`1`},{\"code\":`CC`,\"label\":`Cocos (Keeling) Islands`,\"phone\":`61`},{\"code\":`CD`,\"label\":`Congo, Democratic Republic of the`,\"phone\":`243`},{\"code\":`CF`,\"label\":`Central African Republic`,\"phone\":`236`},{\"code\":`CG`,\"label\":`Congo, Republic of the`,\"phone\":`242`},{\"code\":`CH`,\"label\":`Switzerland`,\"phone\":`41`},{\"code\":`CI`,\"label\":`Cote d'Ivoire`,\"phone\":`225`},{\"code\":`CK`,\"label\":`Cook Islands`,\"phone\":`682`},{\"code\":`CL`,\"label\":`Chile`,\"phone\":`56`},{\"code\":`CM`,\"label\":`Cameroon`,\"phone\":`237`},{\"code\":`CN`,\"label\":`China`,\"phone\":`86`},{\"code\":`CO`,\"label\":`Colombia`,\"phone\":`57`},{\"code\":`CR`,\"label\":`Costa Rica`,\"phone\":`506`},{\"code\":`CU`,\"label\":`Cuba`,\"phone\":`53`},{\"code\":`CV`,\"label\":`Cape Verde`,\"phone\":`238`},{\"code\":`CW`,\"label\":`Curacao`,\"phone\":`599`},{\"code\":`CX`,\"label\":`Christmas Island`,\"phone\":`61`},{\"code\":`CY`,\"label\":`Cyprus`,\"phone\":`357`},{\"code\":`CZ`,\"label\":`Czech Republic`,\"phone\":`420`},{\"code\":`DE`,\"label\":`Germany`,\"phone\":`49`},{\"code\":`DJ`,\"label\":`Djibouti`,\"phone\":`253`},{\"code\":`DK`,\"label\":`Denmark`,\"phone\":`45`},{\"code\":`DM`,\"label\":`Dominica`,\"phone\":`1-767`},{\"code\":`DO`,\"label\":`Dominican Republic`,\"phone\":`1-809`},{\"code\":`DZ`,\"label\":`Algeria`,\"phone\":`213`},{\"code\":`EC`,\"label\":`Ecuador`,\"phone\":`593`},{\"code\":`EE`,\"label\":`Estonia`,\"phone\":`372`},{\"code\":`EG`,\"label\":`Egypt`,\"phone\":`20`},{\"code\":`EH`,\"label\":`Western Sahara`,\"phone\":`212`},{\"code\":`ER`,\"label\":`Eritrea`,\"phone\":`291`},{\"code\":`ES`,\"label\":`Spain`,\"phone\":`34`},{\"code\":`ET`,\"label\":`Ethiopia`,\"phone\":`251`},{\"code\":`FI`,\"label\":`Finland`,\"phone\":`358`},{\"code\":`FJ`,\"label\":`Fiji`,\"phone\":`679`},{\"code\":`FK`,\"label\":`Falkland Islands (Malvinas)`,\"phone\":`500`},{\"code\":`FM`,\"label\":`Micronesia, Federated States of`,\"phone\":`691`},{\"code\":`FO`,\"label\":`Faroe Islands`,\"phone\":`298`},{\"code\":`FR`,\"label\":`France`,\"phone\":`33`},{\"code\":`GA`,\"label\":`Gabon`,\"phone\":`241`},{\"code\":`GB`,\"label\":`United Kingdom`,\"phone\":`44`},{\"code\":`GD`,\"label\":`Grenada`,\"phone\":`1-473`},{\"code\":`GE`,\"label\":`Georgia`,\"phone\":`995`},{\"code\":`GF`,\"label\":`French Guiana`,\"phone\":`594`},{\"code\":`GG`,\"label\":`Guernsey`,\"phone\":`44`},{\"code\":`GH`,\"label\":`Ghana`,\"phone\":`233`},{\"code\":`GI`,\"label\":`Gibraltar`,\"phone\":`350`},{\"code\":`GL`,\"label\":`Greenland`,\"phone\":`299`},{\"code\":`GM`,\"label\":`Gambia`,\"phone\":`220`},{\"code\":`GN`,\"label\":`Guinea`,\"phone\":`224`},{\"code\":`GP`,\"label\":`Guadeloupe`,\"phone\":`590`},{\"code\":`GQ`,\"label\":`Equatorial Guinea`,\"phone\":`240`},{\"code\":`GR`,\"label\":`Greece`,\"phone\":`30`},{\"code\":`GS`,\"label\":`South Georgia and the South Sandwich Islands`,\"phone\":`500`},{\"code\":`GT`,\"label\":`Guatemala`,\"phone\":`502`},{\"code\":`GU`,\"label\":`Guam`,\"phone\":`1-671`},{\"code\":`GW`,\"label\":`Guinea-Bissau`,\"phone\":`245`},{\"code\":`GY`,\"label\":`Guyana`,\"phone\":`592`},{\"code\":`HK`,\"label\":`Hong Kong`,\"phone\":`852`},{\"code\":`HM`,\"label\":`Heard Island and McDonald Islands`,\"phone\":`672`},{\"code\":`HN`,\"label\":`Honduras`,\"phone\":`504`},{\"code\":`HR`,\"label\":`Croatia`,\"phone\":`385`},{\"code\":`HT`,\"label\":`Haiti`,\"phone\":`509`},{\"code\":`HU`,\"label\":`Hungary`,\"phone\":`36`},{\"code\":`ID`,\"label\":`Indonesia`,\"phone\":`62`},{\"code\":`IE`,\"label\":`Ireland`,\"phone\":`353`},{\"code\":`IL`,\"label\":`Israel`,\"phone\":`972`},{\"code\":`IM`,\"label\":`Isle of Man`,\"phone\":`44`},{\"code\":`IN`,\"label\":`India`,\"phone\":`91`},{\"code\":`IO`,\"label\":`British Indian Ocean Territory`,\"phone\":`246`},{\"code\":`IQ`,\"label\":`Iraq`,\"phone\":`964`},{\"code\":`IR`,\"label\":`Iran, Islamic Republic of`,\"phone\":`98`},{\"code\":`IS`,\"label\":`Iceland`,\"phone\":`354`},{\"code\":`IT`,\"label\":`Italy`,\"phone\":`39`},{\"code\":`JE`,\"label\":`Jersey`,\"phone\":`44`},{\"code\":`JM`,\"label\":`Jamaica`,\"phone\":`1-876`},{\"code\":`JO`,\"label\":`Jordan`,\"phone\":`962`},{\"code\":`JP`,\"label\":`Japan`,\"phone\":`81`},{\"code\":`KE`,\"label\":`Kenya`,\"phone\":`254`},{\"code\":`KG`,\"label\":`Kyrgyzstan`,\"phone\":`996`},{\"code\":`KH`,\"label\":`Cambodia`,\"phone\":`855`},{\"code\":`KI`,\"label\":`Kiribati`,\"phone\":`686`},{\"code\":`KM`,\"label\":`Comoros`,\"phone\":`269`},{\"code\":`KN`,\"label\":`Saint Kitts and Nevis`,\"phone\":`1-869`},{\"code\":`KP`,\"label\":`Korea, Democratic People's Republic of`,\"phone\":`850`},{\"code\":`KR`,\"label\":`Korea, Republic of`,\"phone\":`82`},{\"code\":`KW`,\"label\":`Kuwait`,\"phone\":`965`},{\"code\":`KY`,\"label\":`Cayman Islands`,\"phone\":`1-345`},{\"code\":`KZ`,\"label\":`Kazakhstan`,\"phone\":`7`},{\"code\":`LA`,\"label\":`Lao People's Democratic Republic`,\"phone\":`856`},{\"code\":`LB`,\"label\":`Lebanon`,\"phone\":`961`},{\"code\":`LC`,\"label\":`Saint Lucia`,\"phone\":`1-758`},{\"code\":`LI`,\"label\":`Liechtenstein`,\"phone\":`423`},{\"code\":`LK`,\"label\":`Sri Lanka`,\"phone\":`94`},{\"code\":`LR`,\"label\":`Liberia`,\"phone\":`231`},{\"code\":`LS`,\"label\":`Lesotho`,\"phone\":`266`},{\"code\":`LT`,\"label\":`Lithuania`,\"phone\":`370`},{\"code\":`LU`,\"label\":`Luxembourg`,\"phone\":`352`},{\"code\":`LV`,\"label\":`Latvia`,\"phone\":`371`},{\"code\":`LY`,\"label\":`Libya`,\"phone\":`218`},{\"code\":`MA`,\"label\":`Morocco`,\"phone\":`212`},{\"code\":`MC`,\"label\":`Monaco`,\"phone\":`377`},{\"code\":`MD`,\"label\":`Moldova, Republic of`,\"phone\":`373`},{\"code\":`ME`,\"label\":`Montenegro`,\"phone\":`382`},{\"code\":`MF`,\"label\":`Saint Martin (French part)`,\"phone\":`590`},{\"code\":`MG`,\"label\":`Madagascar`,\"phone\":`261`},{\"code\":`MH`,\"label\":`Marshall Islands`,\"phone\":`692`},{\"code\":`MK`,\"label\":`Macedonia, the Former Yugoslav Republic of`,\"phone\":`389`},{\"code\":`ML`,\"label\":`Mali`,\"phone\":`223`},{\"code\":`MM`,\"label\":`Myanmar`,\"phone\":`95`},{\"code\":`MN`,\"label\":`Mongolia`,\"phone\":`976`},{\"code\":`MO`,\"label\":`Macao`,\"phone\":`853`},{\"code\":`MP`,\"label\":`Northern Mariana Islands`,\"phone\":`1-670`},{\"code\":`MQ`,\"label\":`Martinique`,\"phone\":`596`},{\"code\":`MR`,\"label\":`Mauritania`,\"phone\":`222`},{\"code\":`MS`,\"label\":`Montserrat`,\"phone\":`1-664`},{\"code\":`MT`,\"label\":`Malta`,\"phone\":`356`},{\"code\":`MU`,\"label\":`Mauritius`,\"phone\":`230`},{\"code\":`MV`,\"label\":`Maldives`,\"phone\":`960`},{\"code\":`MW`,\"label\":`Malawi`,\"phone\":`265`},{\"code\":`MX`,\"label\":`Mexico`,\"phone\":`52`},{\"code\":`MY`,\"label\":`Malaysia`,\"phone\":`60`},{\"code\":`MZ`,\"label\":`Mozambique`,\"phone\":`258`},{\"code\":`NA`,\"label\":`Namibia`,\"phone\":`264`},{\"code\":`NC`,\"label\":`New Caledonia`,\"phone\":`687`},{\"code\":`NE`,\"label\":`Niger`,\"phone\":`227`},{\"code\":`NF`,\"label\":`Norfolk Island`,\"phone\":`672`},{\"code\":`NG`,\"label\":`Nigeria`,\"phone\":`234`},{\"code\":`NI`,\"label\":`Nicaragua`,\"phone\":`505`},{\"code\":`NL`,\"label\":`Netherlands`,\"phone\":`31`},{\"code\":`NO`,\"label\":`Norway`,\"phone\":`47`},{\"code\":`NP`,\"label\":`Nepal`,\"phone\":`977`},{\"code\":`NR`,\"label\":`Nauru`,\"phone\":`674`},{\"code\":`NU`,\"label\":`Niue`,\"phone\":`683`},{\"code\":`NZ`,\"label\":`New Zealand`,\"phone\":`64`},{\"code\":`OM`,\"label\":`Oman`,\"phone\":`968`},{\"code\":`PA`,\"label\":`Panama`,\"phone\":`507`},{\"code\":`PE`,\"label\":`Peru`,\"phone\":`51`},{\"code\":`PF`,\"label\":`French Polynesia`,\"phone\":`689`},{\"code\":`PG`,\"label\":`Papua New Guinea`,\"phone\":`675`},{\"code\":`PH`,\"label\":`Philippines`,\"phone\":`63`},{\"code\":`PK`,\"label\":`Pakistan`,\"phone\":`92`},{\"code\":`PL`,\"label\":`Poland`,\"phone\":`48`},{\"code\":`PM`,\"label\":`Saint Pierre and Miquelon`,\"phone\":`508`},{\"code\":`PN`,\"label\":`Pitcairn`,\"phone\":`870`},{\"code\":`PR`,\"label\":`Puerto Rico`,\"phone\":`1`},{\"code\":`PS`,\"label\":`Palestine, State of`,\"phone\":`970`},{\"code\":`PT`,\"label\":`Portugal`,\"phone\":`351`},{\"code\":`PW`,\"label\":`Palau`,\"phone\":`680`},{\"code\":`PY`,\"label\":`Paraguay`,\"phone\":`595`},{\"code\":`QA`,\"label\":`Qatar`,\"phone\":`974`},{\"code\":`RE`,\"label\":`Reunion`,\"phone\":`262`},{\"code\":`RO`,\"label\":`Romania`,\"phone\":`40`},{\"code\":`RS`,\"label\":`Serbia`,\"phone\":`381`},{\"code\":`RU`,\"label\":`Russian Federation`,\"phone\":`7`},{\"code\":`RW`,\"label\":`Rwanda`,\"phone\":`250`},{\"code\":`SA`,\"label\":`Saudi Arabia`,\"phone\":`966`},{\"code\":`SB`,\"label\":`Solomon Islands`,\"phone\":`677`},{\"code\":`SC`,\"label\":`Seychelles`,\"phone\":`248`},{\"code\":`SD`,\"label\":`Sudan`,\"phone\":`249`},{\"code\":`SE`,\"label\":`Sweden`,\"phone\":`46`},{\"code\":`SG`,\"label\":`Singapore`,\"phone\":`65`},{\"code\":`SH`,\"label\":`Saint Helena`,\"phone\":`290`},{\"code\":`SI`,\"label\":`Slovenia`,\"phone\":`386`},{\"code\":`SJ`,\"label\":`Svalbard and Jan Mayen`,\"phone\":`47`},{\"code\":`SK`,\"label\":`Slovakia`,\"phone\":`421`},{\"code\":`SL`,\"label\":`Sierra Leone`,\"phone\":`232`},{\"code\":`SM`,\"label\":`San Marino`,\"phone\":`378`},{\"code\":`SN`,\"label\":`Senegal`,\"phone\":`221`},{\"code\":`SO`,\"label\":`Somalia`,\"phone\":`252`},{\"code\":`SR`,\"label\":`Suriname`,\"phone\":`597`},{\"code\":`SS`,\"label\":`South Sudan`,\"phone\":`211`},{\"code\":`ST`,\"label\":`Sao Tome and Principe`,\"phone\":`239`},{\"code\":`SV`,\"label\":`El Salvador`,\"phone\":`503`},{\"code\":`SX`,\"label\":`Sint Maarten (Dutch part)`,\"phone\":`1-721`},{\"code\":`SY`,\"label\":`Syrian Arab Republic`,\"phone\":`963`},{\"code\":`SZ`,\"label\":`Swaziland`,\"phone\":`268`},{\"code\":`TC`,\"label\":`Turks and Caicos Islands`,\"phone\":`1-649`},{\"code\":`TD`,\"label\":`Chad`,\"phone\":`235`},{\"code\":`TF`,\"label\":`French Southern Territories`,\"phone\":`262`},{\"code\":`TG`,\"label\":`Togo`,\"phone\":`228`},{\"code\":`TH`,\"label\":`Thailand`,\"phone\":`66`},{\"code\":`TJ`,\"label\":`Tajikistan`,\"phone\":`992`},{\"code\":`TK`,\"label\":`Tokelau`,\"phone\":`690`},{\"code\":`TL`,\"label\":`Timor-Leste`,\"phone\":`670`},{\"code\":`TM`,\"label\":`Turkmenistan`,\"phone\":`993`},{\"code\":`TN`,\"label\":`Tunisia`,\"phone\":`216`},{\"code\":`TO`,\"label\":`Tonga`,\"phone\":`676`},{\"code\":`TR`,\"label\":`Turkey`,\"phone\":`90`},{\"code\":`TT`,\"label\":`Trinidad and Tobago`,\"phone\":`1-868`},{\"code\":`TV`,\"label\":`Tuvalu`,\"phone\":`688`},{\"code\":`TW`,\"label\":`Taiwan, Province of China`,\"phone\":`886`},{\"code\":`TZ`,\"label\":`United Republic of Tanzania`,\"phone\":`255`},{\"code\":`UA`,\"label\":`Ukraine`,\"phone\":`380`},{\"code\":`UG`,\"label\":`Uganda`,\"phone\":`256`},{\"code\":`US`,\"label\":`United States`,\"phone\":`1`},{\"code\":`UY`,\"label\":`Uruguay`,\"phone\":`598`},{\"code\":`UZ`,\"label\":`Uzbekistan`,\"phone\":`998`},{\"code\":`VA`,\"label\":`Holy See (Vatican City State)`,\"phone\":`379`},{\"code\":`VC`,\"label\":`Saint Vincent and the Grenadines`,\"phone\":`1-784`},{\"code\":`VE`,\"label\":`Venezuela`,\"phone\":`58`},{\"code\":`VG`,\"label\":`British Virgin Islands`,\"phone\":`1-284`},{\"code\":`VI`,\"label\":`US Virgin Islands`,\"phone\":`1-340`},{\"code\":`VN`,\"label\":`Vietnam`,\"phone\":`84`},{\"code\":`VU`,\"label\":`Vanuatu`,\"phone\":`678`},{\"code\":`WF`,\"label\":`Wallis and Futuna`,\"phone\":`681`},{\"code\":`WS`,\"label\":`Samoa`,\"phone\":`685`},{\"code\":`XK`,\"label\":`Kosovo`,\"phone\":`383`},{\"code\":`YE`,\"label\":`Yemen`,\"phone\":`967`},{\"code\":`YT`,\"label\":`Mayotte`,\"phone\":`262`},{\"code\":`ZA`,\"label\":`South Africa`,\"phone\":`27`},{\"code\":`ZM`,\"label\":`Zambia`,\"phone\":`260`},{\"code\":`ZW`,\"label\":`Zimbabwe`,\"phone\":`263`}];const CA_UNIVERSITIES=[{\"id\":`mcgill-university`,\"name\":`McGill University`,\"domain\":`mcgill.ca`,\"country\":`CA`},{\"id\":`university-of-toronto`,\"name\":`University of Toronto`,\"domain\":`utoronto.ca`,\"country\":`CA`},{\"id\":`university-of-british-columbia`,\"name\":`University of British Columbia`,\"domain\":`ubc.ca`,\"country\":`CA`},{\"id\":`university-of-alberta`,\"name\":`University of Alberta`,\"domain\":`ualberta.ca`,\"country\":`CA`},{\"id\":`university-of-calgary`,\"name\":`University of Calgary`,\"domain\":`ucalgary.ca`,\"country\":`CA`},{\"id\":`university-of-montreal`,\"name\":`Université de Montréal`,\"domain\":`umontreal.ca`,\"country\":`CA`},{\"id\":`university-of-ottawa`,\"name\":`University of Ottawa`,\"domain\":`uottawa.ca`,\"country\":`CA`},{\"id\":`university-of-waterloo`,\"name\":`University of Waterloo`,\"domain\":`uwaterloo.ca`,\"country\":`CA`},{\"id\":`western-university`,\"name\":`Western University`,\"domain\":`uwo.ca`,\"country\":`CA`},{\"id\":`mcmaster-university`,\"name\":`McMaster University`,\"domain\":`mcmaster.ca`,\"country\":`CA`},{\"id\":`queens-university`,\"name\":`Queen's University`,\"domain\":`queensu.ca`,\"country\":`CA`},{\"id\":`dalhousie-university`,\"name\":`Dalhousie University`,\"domain\":`dal.ca`,\"country\":`CA`},{\"id\":`laval-university`,\"name\":`Université Laval`,\"domain\":`ulaval.ca`,\"country\":`CA`},{\"id\":`university-of-manitoba`,\"name\":`University of Manitoba`,\"domain\":`umanitoba.ca`,\"country\":`CA`},{\"id\":`university-of-saskatchewan`,\"name\":`University of Saskatchewan`,\"domain\":`usask.ca`,\"country\":`CA`},{\"id\":`york-university`,\"name\":`York University`,\"domain\":`yorku.ca`,\"country\":`CA`},{\"id\":`toronto-metropolitan-university`,\"name\":`Toronto Metropolitan University`,\"domain\":`torontomu.ca`,\"country\":`CA`},{\"id\":`carleton-university`,\"name\":`Carleton University`,\"domain\":`carleton.ca`,\"country\":`CA`},{\"id\":`university-of-guelph`,\"name\":`University of Guelph`,\"domain\":`uoguelph.ca`,\"country\":`CA`},{\"id\":`brock-university`,\"name\":`Brock University`,\"domain\":`brocku.ca`,\"country\":`CA`},{\"id\":`wilfrid-laurier-university`,\"name\":`Wilfrid Laurier University`,\"domain\":`wlu.ca`,\"country\":`CA`},{\"id\":`trent-university`,\"name\":`Trent University`,\"domain\":`trentu.ca`,\"country\":`CA`},{\"id\":`university-of-windsor`,\"name\":`University of Windsor`,\"domain\":`uwindsor.ca`,\"country\":`CA`},{\"id\":`lakehead-university`,\"name\":`Lakehead University`,\"domain\":`lakeheadu.ca`,\"country\":`CA`},{\"id\":`laurentian-university`,\"name\":`Laurentian University`,\"domain\":`laurentian.ca`,\"country\":`CA`},{\"id\":`nipissing-university`,\"name\":`Nipissing University`,\"domain\":`nipissingu.ca`,\"country\":`CA`},{\"id\":`algoma-university`,\"name\":`Algoma University`,\"domain\":`algomau.ca`,\"country\":`CA`},{\"id\":`ocad-university`,\"name\":`OCAD University`,\"domain\":`ocadu.ca`,\"country\":`CA`},{\"id\":`university-of-ontario-institute-of-technology`,\"name\":`Ontario Tech University`,\"domain\":`ontariotechu.ca`,\"country\":`CA`},{\"id\":`redeemer-university`,\"name\":`Redeemer University`,\"domain\":`redeemer.ca`,\"country\":`CA`},{\"id\":`tyndale-university`,\"name\":`Tyndale University`,\"domain\":`tyndale.ca`,\"country\":`CA`},{\"id\":`university-of-st-michaels-college`,\"name\":`University of St. Michael's College`,\"domain\":`utoronto.ca`,\"country\":`CA`},{\"id\":`huron-university-college`,\"name\":`Huron University College`,\"domain\":`huronatwestern.ca`,\"country\":`CA`},{\"id\":`kings-university-college`,\"name\":`King's University College`,\"domain\":`kings.uwo.ca`,\"country\":`CA`},{\"id\":`brescia-university-college`,\"name\":`Brescia University College`,\"domain\":`brescia.uwo.ca`,\"country\":`CA`},{\"id\":`concordia-university`,\"name\":`Concordia University`,\"domain\":`concordia.ca`,\"country\":`CA`},{\"id\":`uqam`,\"name\":`Université du Québec à Montréal`,\"domain\":`uqam.ca`,\"country\":`CA`},{\"id\":`universite-de-sherbrooke`,\"name\":`Université de Sherbrooke`,\"domain\":`usherbrooke.ca`,\"country\":`CA`},{\"id\":`bishops-university`,\"name\":`Bishop's University`,\"domain\":`ubishops.ca`,\"country\":`CA`},{\"id\":`uqtr`,\"name\":`Université du Québec à Trois-Rivières`,\"domain\":`uqtr.ca`,\"country\":`CA`},{\"id\":`uqac`,\"name\":`Université du Québec à Chicoutimi`,\"domain\":`uqac.ca`,\"country\":`CA`},{\"id\":`uqar`,\"name\":`Université du Québec à Rimouski`,\"domain\":`uqar.ca`,\"country\":`CA`},{\"id\":`uqo`,\"name\":`Université du Québec en Outaouais`,\"domain\":`uqo.ca`,\"country\":`CA`},{\"id\":`uqat`,\"name\":`Université du Québec en Abitibi-Témiscamingue`,\"domain\":`uqat.ca`,\"country\":`CA`},{\"id\":`ets-montreal`,\"name\":`École de technologie supérieure`,\"domain\":`etsmtl.ca`,\"country\":`CA`},{\"id\":`hec-montreal`,\"name\":`HEC Montréal`,\"domain\":`hec.ca`,\"country\":`CA`},{\"id\":`polytechnique-montreal`,\"name\":`Polytechnique Montréal`,\"domain\":`polymtl.ca`,\"country\":`CA`},{\"id\":`inrs`,\"name\":`Institut national de la recherche scientifique`,\"domain\":`inrs.ca`,\"country\":`CA`},{\"id\":`tele-universite`,\"name\":`Université TÉLUQ`,\"domain\":`teluq.ca`,\"country\":`CA`},{\"id\":`simon-fraser-university`,\"name\":`Simon Fraser University`,\"domain\":`sfu.ca`,\"country\":`CA`},{\"id\":`university-of-victoria`,\"name\":`University of Victoria`,\"domain\":`uvic.ca`,\"country\":`CA`},{\"id\":`university-of-northern-british-columbia`,\"name\":`University of Northern British Columbia`,\"domain\":`unbc.ca`,\"country\":`CA`},{\"id\":`thompson-rivers-university`,\"name\":`Thompson Rivers University`,\"domain\":`tru.ca`,\"country\":`CA`},{\"id\":`vancouver-island-university`,\"name\":`Vancouver Island University`,\"domain\":`viu.ca`,\"country\":`CA`},{\"id\":`royal-roads-university`,\"name\":`Royal Roads University`,\"domain\":`royalroads.ca`,\"country\":`CA`},{\"id\":`capilano-university`,\"name\":`Capilano University`,\"domain\":`capilanou.ca`,\"country\":`CA`},{\"id\":`kwantlen-polytechnic-university`,\"name\":`Kwantlen Polytechnic University`,\"domain\":`kpu.ca`,\"country\":`CA`},{\"id\":`university-of-the-fraser-valley`,\"name\":`University of the Fraser Valley`,\"domain\":`ufv.ca`,\"country\":`CA`},{\"id\":`emily-carr-university`,\"name\":`Emily Carr University of Art and Design`,\"domain\":`ecuad.ca`,\"country\":`CA`},{\"id\":`trinity-western-university`,\"name\":`Trinity Western University`,\"domain\":`twu.ca`,\"country\":`CA`},{\"id\":`quest-university-canada`,\"name\":`Quest University Canada`,\"domain\":`questu.ca`,\"country\":`CA`},{\"id\":`university-of-lethbridge`,\"name\":`University of Lethbridge`,\"domain\":`uleth.ca`,\"country\":`CA`},{\"id\":`athabasca-university`,\"name\":`Athabasca University`,\"domain\":`athabascau.ca`,\"country\":`CA`},{\"id\":`mount-royal-university`,\"name\":`Mount Royal University`,\"domain\":`mtroyal.ca`,\"country\":`CA`},{\"id\":`macewan-university`,\"name\":`MacEwan University`,\"domain\":`macewan.ca`,\"country\":`CA`},{\"id\":`concordia-university-of-edmonton`,\"name\":`Concordia University of Edmonton`,\"domain\":`concordia.ab.ca`,\"country\":`CA`},{\"id\":`kings-university`,\"name\":`The King's University`,\"domain\":`kingsu.ca`,\"country\":`CA`},{\"id\":`ambrose-university`,\"name\":`Ambrose University`,\"domain\":`ambrose.edu`,\"country\":`CA`},{\"id\":`burman-university`,\"name\":`Burman University`,\"domain\":`burmanu.ca`,\"country\":`CA`},{\"id\":`st-marys-university-calgary`,\"name\":`St. Mary's University`,\"domain\":`stmu.ca`,\"country\":`CA`},{\"id\":`university-of-regina`,\"name\":`University of Regina`,\"domain\":`uregina.ca`,\"country\":`CA`},{\"id\":`first-nations-university-of-canada`,\"name\":`First Nations University of Canada`,\"domain\":`fnuniv.ca`,\"country\":`CA`},{\"id\":`university-of-winnipeg`,\"name\":`University of Winnipeg`,\"domain\":`uwinnipeg.ca`,\"country\":`CA`},{\"id\":`brandon-university`,\"name\":`Brandon University`,\"domain\":`brandonu.ca`,\"country\":`CA`},{\"id\":`university-of-st-boniface`,\"name\":`Université de Saint-Boniface`,\"domain\":`ustboniface.ca`,\"country\":`CA`},{\"id\":`canadian-mennonite-university`,\"name\":`Canadian Mennonite University`,\"domain\":`cmu.ca`,\"country\":`CA`},{\"id\":`booth-university-college`,\"name\":`Booth University College`,\"domain\":`boothuc.ca`,\"country\":`CA`},{\"id\":`providence-university-college`,\"name\":`Providence University College`,\"domain\":`prov.ca`,\"country\":`CA`},{\"id\":`memorial-university`,\"name\":`Memorial University of Newfoundland`,\"domain\":`mun.ca`,\"country\":`CA`},{\"id\":`university-of-new-brunswick`,\"name\":`University of New Brunswick`,\"domain\":`unb.ca`,\"country\":`CA`},{\"id\":`st-thomas-university`,\"name\":`St. Thomas University`,\"domain\":`stu.ca`,\"country\":`CA`},{\"id\":`mount-allison-university`,\"name\":`Mount Allison University`,\"domain\":`mta.ca`,\"country\":`CA`},{\"id\":`universite-de-moncton`,\"name\":`Université de Moncton`,\"domain\":`umoncton.ca`,\"country\":`CA`},{\"id\":`acadia-university`,\"name\":`Acadia University`,\"domain\":`acadiau.ca`,\"country\":`CA`},{\"id\":`st-francis-xavier-university`,\"name\":`St. Francis Xavier University`,\"domain\":`stfx.ca`,\"country\":`CA`},{\"id\":`saint-marys-university`,\"name\":`Saint Mary's University`,\"domain\":`smu.ca`,\"country\":`CA`},{\"id\":`mount-saint-vincent-university`,\"name\":`Mount Saint Vincent University`,\"domain\":`msvu.ca`,\"country\":`CA`},{\"id\":`cape-breton-university`,\"name\":`Cape Breton University`,\"domain\":`cbu.ca`,\"country\":`CA`},{\"id\":`nscad-university`,\"name\":`NSCAD University`,\"domain\":`nscad.ca`,\"country\":`CA`},{\"id\":`university-of-kings-college`,\"name\":`University of King's College`,\"domain\":`ukings.ca`,\"country\":`CA`},{\"id\":`university-of-prince-edward-island`,\"name\":`University of Prince Edward Island`,\"domain\":`upei.ca`,\"country\":`CA`},{\"id\":`atlantic-school-of-theology`,\"name\":`Atlantic School of Theology`,\"domain\":`astheology.ns.ca`,\"country\":`CA`},{\"id\":`seneca-polytechnic`,\"name\":`Seneca Polytechnic`,\"domain\":`senecapolytechnic.ca`,\"country\":`CA`},{\"id\":`humber-college`,\"name\":`Humber College`,\"domain\":`humber.ca`,\"country\":`CA`},{\"id\":`centennial-college`,\"name\":`Centennial College`,\"domain\":`centennialcollege.ca`,\"country\":`CA`},{\"id\":`george-brown-college`,\"name\":`George Brown College`,\"domain\":`georgebrown.ca`,\"country\":`CA`},{\"id\":`sheridan-college`,\"name\":`Sheridan College`,\"domain\":`sheridancollege.ca`,\"country\":`CA`},{\"id\":`algonquin-college`,\"name\":`Algonquin College`,\"domain\":`algonquincollege.com`,\"country\":`CA`},{\"id\":`conestoga-college`,\"name\":`Conestoga College`,\"domain\":`conestogac.on.ca`,\"country\":`CA`},{\"id\":`fanshawe-college`,\"name\":`Fanshawe College`,\"domain\":`fanshawec.ca`,\"country\":`CA`},{\"id\":`mohawk-college`,\"name\":`Mohawk College`,\"domain\":`mohawkcollege.ca`,\"country\":`CA`},{\"id\":`durham-college`,\"name\":`Durham College`,\"domain\":`durhamcollege.ca`,\"country\":`CA`},{\"id\":`st-lawrence-college`,\"name\":`St. Lawrence College`,\"domain\":`stlawrencecollege.ca`,\"country\":`CA`},{\"id\":`cambrian-college`,\"name\":`Cambrian College`,\"domain\":`cambriancollege.ca`,\"country\":`CA`},{\"id\":`canadore-college`,\"name\":`Canadore College`,\"domain\":`canadorecollege.ca`,\"country\":`CA`},{\"id\":`confederation-college`,\"name\":`Confederation College`,\"domain\":`confederationcollege.ca`,\"country\":`CA`},{\"id\":`fleming-college`,\"name\":`Fleming College`,\"domain\":`flemingcollege.ca`,\"country\":`CA`},{\"id\":`georgian-college`,\"name\":`Georgian College`,\"domain\":`georgiancollege.ca`,\"country\":`CA`},{\"id\":`lambton-college`,\"name\":`Lambton College`,\"domain\":`lambtoncollege.ca`,\"country\":`CA`},{\"id\":`loyalist-college`,\"name\":`Loyalist College`,\"domain\":`loyalistcollege.com`,\"country\":`CA`},{\"id\":`niagara-college`,\"name\":`Niagara College`,\"domain\":`niagaracollege.ca`,\"country\":`CA`},{\"id\":`northern-college`,\"name\":`Northern College`,\"domain\":`northernc.on.ca`,\"country\":`CA`},{\"id\":`sault-college`,\"name\":`Sault College`,\"domain\":`saultcollege.ca`,\"country\":`CA`},{\"id\":`st-clair-college`,\"name\":`St. Clair College`,\"domain\":`stclaircollege.ca`,\"country\":`CA`},{\"id\":`la-cite-collegiale`,\"name\":`La Cité`,\"domain\":`collegelacite.ca`,\"country\":`CA`},{\"id\":`college-boreal`,\"name\":`Collège Boréal`,\"domain\":`collegeboreal.ca`,\"country\":`CA`},{\"id\":`dawson-college`,\"name\":`Dawson College`,\"domain\":`dawsoncollege.qc.ca`,\"country\":`CA`},{\"id\":`vanier-college`,\"name\":`Vanier College`,\"domain\":`vaniercollege.qc.ca`,\"country\":`CA`},{\"id\":`john-abbott-college`,\"name\":`John Abbott College`,\"domain\":`johnabbott.qc.ca`,\"country\":`CA`},{\"id\":`champlain-college`,\"name\":`Champlain College`,\"domain\":`champlaincollege.qc.ca`,\"country\":`CA`},{\"id\":`heritage-college`,\"name\":`Heritage College`,\"domain\":`cegep-heritage.qc.ca`,\"country\":`CA`},{\"id\":`marianopolis-college`,\"name\":`Marianopolis College`,\"domain\":`marianopolis.edu`,\"country\":`CA`},{\"id\":`cegep-du-vieux-montreal`,\"name\":`Cégep du Vieux Montréal`,\"domain\":`cvm.qc.ca`,\"country\":`CA`},{\"id\":`cegep-de-sainte-foy`,\"name\":`Cégep de Sainte-Foy`,\"domain\":`csfoy.ca`,\"country\":`CA`},{\"id\":`cegep-de-trois-rivieres`,\"name\":`Cégep de Trois-Rivières`,\"domain\":`cegeptr.qc.ca`,\"country\":`CA`},{\"id\":`cegep-garneau`,\"name\":`Cégep Garneau`,\"domain\":`cegepgarneau.ca`,\"country\":`CA`},{\"id\":`cegep-limoilou`,\"name\":`Cégep Limoilou`,\"domain\":`cegeplimoilou.ca`,\"country\":`CA`},{\"id\":`cegep-de-chicoutimi`,\"name\":`Cégep de Chicoutimi`,\"domain\":`cegepchicoutimi.qc.ca`,\"country\":`CA`},{\"id\":`cegep-de-levis`,\"name\":`Cégep de Lévis`,\"domain\":`cegeplevis.ca`,\"country\":`CA`},{\"id\":`cegep-ahuntsic`,\"name\":`Collège Ahuntsic`,\"domain\":`collegeahuntsic.qc.ca`,\"country\":`CA`},{\"id\":`cegep-marie-victorin`,\"name\":`Collège de Maisonneuve`,\"domain\":`cmaisonneuve.qc.ca`,\"country\":`CA`},{\"id\":`cegep-andre-laurendeau`,\"name\":`Cégep André-Laurendeau`,\"domain\":`claurendeau.qc.ca`,\"country\":`CA`},{\"id\":`cegep-edouard-montpetit`,\"name\":`Cégep Édouard-Montpetit`,\"domain\":`cegepmontpetit.ca`,\"country\":`CA`},{\"id\":`cegep-saint-laurent`,\"name\":`Cégep de Saint-Laurent`,\"domain\":`cegepsl.qc.ca`,\"country\":`CA`},{\"id\":`cegep-rosemont`,\"name\":`Collège de Rosemont`,\"domain\":`crosemont.qc.ca`,\"country\":`CA`},{\"id\":`lasalle-college`,\"name\":`LaSalle College`,\"domain\":`lasallecollege.com`,\"country\":`CA`},{\"id\":`bcit`,\"name\":`British Columbia Institute of Technology`,\"domain\":`bcit.ca`,\"country\":`CA`},{\"id\":`douglas-college`,\"name\":`Douglas College`,\"domain\":`douglascollege.ca`,\"country\":`CA`},{\"id\":`langara-college`,\"name\":`Langara College`,\"domain\":`langara.ca`,\"country\":`CA`},{\"id\":`camosun-college`,\"name\":`Camosun College`,\"domain\":`camosun.ca`,\"country\":`CA`},{\"id\":`okanagan-college`,\"name\":`Okanagan College`,\"domain\":`okanagan.bc.ca`,\"country\":`CA`},{\"id\":`selkirk-college`,\"name\":`Selkirk College`,\"domain\":`selkirk.ca`,\"country\":`CA`},{\"id\":`north-island-college`,\"name\":`North Island College`,\"domain\":`nic.bc.ca`,\"country\":`CA`},{\"id\":`college-of-new-caledonia`,\"name\":`College of New Caledonia`,\"domain\":`cnc.bc.ca`,\"country\":`CA`},{\"id\":`college-of-the-rockies`,\"name\":`College of the Rockies`,\"domain\":`cotr.bc.ca`,\"country\":`CA`},{\"id\":`northern-lights-college`,\"name\":`Northern Lights College`,\"domain\":`nlc.bc.ca`,\"country\":`CA`},{\"id\":`coast-mountain-college`,\"name\":`Coast Mountain College`,\"domain\":`coastmountaincollege.ca`,\"country\":`CA`},{\"id\":`vancouver-community-college`,\"name\":`Vancouver Community College`,\"domain\":`vcc.ca`,\"country\":`CA`},{\"id\":`justice-institute-of-british-columbia`,\"name\":`Justice Institute of British Columbia`,\"domain\":`jibc.ca`,\"country\":`CA`},{\"id\":`nicola-valley-institute-of-technology`,\"name\":`Nicola Valley Institute of Technology`,\"domain\":`nvit.ca`,\"country\":`CA`},{\"id\":`sait`,\"name\":`Southern Alberta Institute of Technology`,\"domain\":`sait.ca`,\"country\":`CA`},{\"id\":`nait`,\"name\":`Northern Alberta Institute of Technology`,\"domain\":`nait.ca`,\"country\":`CA`},{\"id\":`bow-valley-college`,\"name\":`Bow Valley College`,\"domain\":`bowvalleycollege.ca`,\"country\":`CA`},{\"id\":`lethbridge-college`,\"name\":`Lethbridge College`,\"domain\":`lethbridgecollege.ca`,\"country\":`CA`},{\"id\":`red-deer-polytechnic`,\"name\":`Red Deer Polytechnic`,\"domain\":`rdpolytech.ca`,\"country\":`CA`},{\"id\":`medicine-hat-college`,\"name\":`Medicine Hat College`,\"domain\":`mhc.ab.ca`,\"country\":`CA`},{\"id\":`olds-college`,\"name\":`Olds College`,\"domain\":`oldscollege.ca`,\"country\":`CA`},{\"id\":`grande-prairie-regional-college`,\"name\":`Northwestern Polytechnic`,\"domain\":`nwpolytech.ca`,\"country\":`CA`},{\"id\":`keyano-college`,\"name\":`Keyano College`,\"domain\":`keyano.ca`,\"country\":`CA`},{\"id\":`portage-college`,\"name\":`Portage College`,\"domain\":`portagecollege.ca`,\"country\":`CA`},{\"id\":`lakeland-college`,\"name\":`Lakeland College`,\"domain\":`lakelandcollege.ca`,\"country\":`CA`},{\"id\":`norquest-college`,\"name\":`NorQuest College`,\"domain\":`norquest.ca`,\"country\":`CA`},{\"id\":`saskatchewan-polytechnic`,\"name\":`Saskatchewan Polytechnic`,\"domain\":`saskpolytech.ca`,\"country\":`CA`},{\"id\":`great-plains-college`,\"name\":`Great Plains College`,\"domain\":`greatplainscollege.ca`,\"country\":`CA`},{\"id\":`parkland-college`,\"name\":`Parkland College`,\"domain\":`parklandcollege.sk.ca`,\"country\":`CA`},{\"id\":`north-west-college`,\"name\":`North West College`,\"domain\":`northwestcollege.ca`,\"country\":`CA`},{\"id\":`southeast-college`,\"name\":`Southeast College`,\"domain\":`southeastcollege.org`,\"country\":`CA`},{\"id\":`carlton-trail-college`,\"name\":`Carlton Trail College`,\"domain\":`carltontrailcollege.com`,\"country\":`CA`},{\"id\":`cumberland-college`,\"name\":`Cumberland College`,\"domain\":`cumberlandcollege.sk.ca`,\"country\":`CA`},{\"id\":`red-river-college-polytechnic`,\"name\":`Red River College Polytechnic`,\"domain\":`rrc.ca`,\"country\":`CA`},{\"id\":`assiniboine-community-college`,\"name\":`Assiniboine Community College`,\"domain\":`assiniboine.net`,\"country\":`CA`},{\"id\":`university-college-of-the-north`,\"name\":`University College of the North`,\"domain\":`ucn.ca`,\"country\":`CA`},{\"id\":`nova-scotia-community-college`,\"name\":`Nova Scotia Community College`,\"domain\":`nscc.ca`,\"country\":`CA`},{\"id\":`new-brunswick-community-college`,\"name\":`New Brunswick Community College`,\"domain\":`nbcc.ca`,\"country\":`CA`},{\"id\":`ccnb`,\"name\":`Collège communautaire du Nouveau-Brunswick`,\"domain\":`ccnb.ca`,\"country\":`CA`},{\"id\":`holland-college`,\"name\":`Holland College`,\"domain\":`hollandcollege.com`,\"country\":`CA`},{\"id\":`college-of-the-north-atlantic`,\"name\":`College of the North Atlantic`,\"domain\":`cna.nl.ca`,\"country\":`CA`},{\"id\":`marine-institute`,\"name\":`Marine Institute of Memorial University`,\"domain\":`mi.mun.ca`,\"country\":`CA`},{\"id\":`maritime-college-of-forest-technology`,\"name\":`Maritime College of Forest Technology`,\"domain\":`mcft.ca`,\"country\":`CA`},{\"id\":`yukon-university`,\"name\":`Yukon University`,\"domain\":`yukonu.ca`,\"country\":`CA`},{\"id\":`aurora-college`,\"name\":`Aurora College`,\"domain\":`auroracollege.nt.ca`,\"country\":`CA`},{\"id\":`nunavut-arctic-college`,\"name\":`Nunavut Arctic College`,\"domain\":`arcticcollege.ca`,\"country\":`CA`},{\"id\":`dechinta-centre`,\"name\":`Dechinta Centre for Research and Learning`,\"domain\":`dechinta.ca`,\"country\":`CA`},{\"id\":`royal-military-college`,\"name\":`Royal Military College of Canada`,\"domain\":`rmc-cmr.ca`,\"country\":`CA`},{\"id\":`nscad`,\"name\":`Nova Scotia College of Art and Design`,\"domain\":`nscad.ca`,\"country\":`CA`},{\"id\":`banff-centre`,\"name\":`Banff Centre for Arts and Creativity`,\"domain\":`banffcentre.ca`,\"country\":`CA`},{\"id\":`crandall-university`,\"name\":`Crandall University`,\"domain\":`crandallu.ca`,\"country\":`CA`},{\"id\":`kingswood-university`,\"name\":`Kingswood University`,\"domain\":`kingswood.edu`,\"country\":`CA`},{\"id\":`st-stephens-university`,\"name\":`St. Stephen's University`,\"domain\":`ssu.ca`,\"country\":`CA`},{\"id\":`yorkville-university`,\"name\":`Yorkville University`,\"domain\":`yorkvilleu.ca`,\"country\":`CA`},{\"id\":`universite-canada-west`,\"name\":`University Canada West`,\"domain\":`ucanwest.ca`,\"country\":`CA`},{\"id\":`fairleigh-dickinson-vancouver`,\"name\":`Fairleigh Dickinson University Vancouver`,\"domain\":`fdu.edu`,\"country\":`CA`},{\"id\":`northeastern-university-toronto`,\"name\":`Northeastern University Toronto`,\"domain\":`northeastern.edu`,\"country\":`CA`},{\"id\":`alexander-college`,\"name\":`Alexander College`,\"domain\":`alexandercollege.ca`,\"country\":`CA`},{\"id\":`columbia-college-vancouver`,\"name\":`Columbia College`,\"domain\":`columbiacollege.ca`,\"country\":`CA`},{\"id\":`coquitlam-college`,\"name\":`Coquitlam College`,\"domain\":`coquitlamcollege.com`,\"country\":`CA`},{\"id\":`fraser-international-college`,\"name\":`Fraser International College`,\"domain\":`fraseric.ca`,\"country\":`CA`},{\"id\":`university-of-sudbury`,\"name\":`University of Sudbury`,\"domain\":`usudbury.ca`,\"country\":`CA`},{\"id\":`huntington-university`,\"name\":`Huntington University`,\"domain\":`huntingtonu.ca`,\"country\":`CA`},{\"id\":`thorneloe-university`,\"name\":`Thorneloe University`,\"domain\":`thorneloe.ca`,\"country\":`CA`},{\"id\":`universite-de-hearst`,\"name\":`Université de Hearst`,\"domain\":`uhearst.ca`,\"country\":`CA`},{\"id\":`canada-christian-college`,\"name\":`Canada Christian College`,\"domain\":`canadachristiancollege.com`,\"country\":`CA`},{\"id\":`heritage-seminary`,\"name\":`Heritage College and Seminary`,\"domain\":`discoverheritage.ca`,\"country\":`CA`},{\"id\":`master-college-seminary`,\"name\":`The Master's College and Seminary`,\"domain\":`mcs.edu`,\"country\":`CA`},{\"id\":`briercrest-college`,\"name\":`Briercrest College and Seminary`,\"domain\":`briercrest.ca`,\"country\":`CA`},{\"id\":`horizon-college-seminary`,\"name\":`Horizon College and Seminary`,\"domain\":`horizon.edu`,\"country\":`CA`},{\"id\":`eston-college`,\"name\":`Eston College`,\"domain\":`estoncollege.ca`,\"country\":`CA`},{\"id\":`college-universitaire-dominicain`,\"name\":`Dominican University College`,\"domain\":`udominicaine.ca`,\"country\":`CA`},{\"id\":`saint-paul-university`,\"name\":`Saint Paul University`,\"domain\":`ustpaul.ca`,\"country\":`CA`},{\"id\":`universite-de-saint-anne`,\"name\":`Université Sainte-Anne`,\"domain\":`usainteanne.ca`,\"country\":`CA`},{\"id\":`kwantlen-university-college`,\"name\":`Kwantlen Polytechnic University Richmond`,\"domain\":`kpu.ca`,\"country\":`CA`},{\"id\":`collegelalonde`,\"name\":`Collège LaSalle`,\"domain\":`collegelasalle.com`,\"country\":`CA`}];const US_UNIVERSITIES=[{\"id\":`harvard-university`,\"name\":`Harvard University`,\"domain\":`harvard.edu`},{\"id\":`yale-university`,\"name\":`Yale University`,\"domain\":`yale.edu`},{\"id\":`princeton-university`,\"name\":`Princeton University`,\"domain\":`princeton.edu`},{\"id\":`columbia-university`,\"name\":`Columbia University`,\"domain\":`columbia.edu`},{\"id\":`university-of-pennsylvania`,\"name\":`University of Pennsylvania`,\"domain\":`upenn.edu`},{\"id\":`brown-university`,\"name\":`Brown University`,\"domain\":`brown.edu`},{\"id\":`dartmouth-college`,\"name\":`Dartmouth College`,\"domain\":`dartmouth.edu`},{\"id\":`cornell-university`,\"name\":`Cornell University`,\"domain\":`cornell.edu`},{\"id\":`stanford-university`,\"name\":`Stanford University`,\"domain\":`stanford.edu`},{\"id\":`mit`,\"name\":`Massachusetts Institute of Technology`,\"domain\":`mit.edu`},{\"id\":`caltech`,\"name\":`California Institute of Technology`,\"domain\":`caltech.edu`},{\"id\":`duke-university`,\"name\":`Duke University`,\"domain\":`duke.edu`},{\"id\":`northwestern-university`,\"name\":`Northwestern University`,\"domain\":`northwestern.edu`},{\"id\":`university-of-chicago`,\"name\":`University of Chicago`,\"domain\":`uchicago.edu`},{\"id\":`johns-hopkins-university`,\"name\":`Johns Hopkins University`,\"domain\":`jhu.edu`},{\"id\":`vanderbilt-university`,\"name\":`Vanderbilt University`,\"domain\":`vanderbilt.edu`},{\"id\":`rice-university`,\"name\":`Rice University`,\"domain\":`rice.edu`},{\"id\":`washington-university-st-louis`,\"name\":`Washington University in St. Louis`,\"domain\":`wustl.edu`},{\"id\":`emory-university`,\"name\":`Emory University`,\"domain\":`emory.edu`},{\"id\":`georgetown-university`,\"name\":`Georgetown University`,\"domain\":`georgetown.edu`},{\"id\":`carnegie-mellon-university`,\"name\":`Carnegie Mellon University`,\"domain\":`cmu.edu`},{\"id\":`university-of-southern-california`,\"name\":`University of Southern California`,\"domain\":`usc.edu`},{\"id\":`tufts-university`,\"name\":`Tufts University`,\"domain\":`tufts.edu`},{\"id\":`wake-forest-university`,\"name\":`Wake Forest University`,\"domain\":`wfu.edu`},{\"id\":`university-of-notre-dame`,\"name\":`University of Notre Dame`,\"domain\":`nd.edu`},{\"id\":`boston-college`,\"name\":`Boston College`,\"domain\":`bc.edu`},{\"id\":`boston-university`,\"name\":`Boston University`,\"domain\":`bu.edu`},{\"id\":`brandeis-university`,\"name\":`Brandeis University`,\"domain\":`brandeis.edu`},{\"id\":`case-western-reserve-university`,\"name\":`Case Western Reserve University`,\"domain\":`case.edu`},{\"id\":`lehigh-university`,\"name\":`Lehigh University`,\"domain\":`lehigh.edu`},{\"id\":`northeastern-university`,\"name\":`Northeastern University`,\"domain\":`northeastern.edu`},{\"id\":`tulane-university`,\"name\":`Tulane University`,\"domain\":`tulane.edu`},{\"id\":`pepperdine-university`,\"name\":`Pepperdine University`,\"domain\":`pepperdine.edu`},{\"id\":`villanova-university`,\"name\":`Villanova University`,\"domain\":`villanova.edu`},{\"id\":`rensselaer-polytechnic-institute`,\"name\":`Rensselaer Polytechnic Institute`,\"domain\":`rpi.edu`},{\"id\":`george-washington-university`,\"name\":`George Washington University`,\"domain\":`gwu.edu`},{\"id\":`syracuse-university`,\"name\":`Syracuse University`,\"domain\":`syracuse.edu`},{\"id\":`fordham-university`,\"name\":`Fordham University`,\"domain\":`fordham.edu`},{\"id\":`smu`,\"name\":`Southern Methodist University`,\"domain\":`smu.edu`},{\"id\":`santa-clara-university`,\"name\":`Santa Clara University`,\"domain\":`scu.edu`},{\"id\":`loyola-marymount-university`,\"name\":`Loyola Marymount University`,\"domain\":`lmu.edu`},{\"id\":`american-university`,\"name\":`American University`,\"domain\":`american.edu`},{\"id\":`university-of-miami`,\"name\":`University of Miami`,\"domain\":`miami.edu`},{\"id\":`university-of-rochester`,\"name\":`University of Rochester`,\"domain\":`rochester.edu`},{\"id\":`worcester-polytechnic-institute`,\"name\":`Worcester Polytechnic Institute`,\"domain\":`wpi.edu`},{\"id\":`stevens-institute-of-technology`,\"name\":`Stevens Institute of Technology`,\"domain\":`stevens.edu`},{\"id\":`drexel-university`,\"name\":`Drexel University`,\"domain\":`drexel.edu`},{\"id\":`university-of-tulsa`,\"name\":`University of Tulsa`,\"domain\":`utulsa.edu`},{\"id\":`yeshiva-university`,\"name\":`Yeshiva University`,\"domain\":`yu.edu`},{\"id\":`baylor-university`,\"name\":`Baylor University`,\"domain\":`baylor.edu`},{\"id\":`marquette-university`,\"name\":`Marquette University`,\"domain\":`marquette.edu`},{\"id\":`university-of-san-diego`,\"name\":`University of San Diego`,\"domain\":`sandiego.edu`},{\"id\":`university-of-san-francisco`,\"name\":`University of San Francisco`,\"domain\":`usfca.edu`},{\"id\":`gonzaga-university`,\"name\":`Gonzaga University`,\"domain\":`gonzaga.edu`},{\"id\":`loyola-university-chicago`,\"name\":`Loyola University Chicago`,\"domain\":`luc.edu`},{\"id\":`creighton-university`,\"name\":`Creighton University`,\"domain\":`creighton.edu`},{\"id\":`university-of-denver`,\"name\":`University of Denver`,\"domain\":`du.edu`},{\"id\":`university-of-dayton`,\"name\":`University of Dayton`,\"domain\":`udayton.edu`},{\"id\":`seton-hall-university`,\"name\":`Seton Hall University`,\"domain\":`shu.edu`},{\"id\":`depaul-university`,\"name\":`DePaul University`,\"domain\":`depaul.edu`},{\"id\":`university-of-the-pacific`,\"name\":`University of the Pacific`,\"domain\":`pacific.edu`},{\"id\":`howard-university`,\"name\":`Howard University`,\"domain\":`howard.edu`},{\"id\":`catholic-university-of-america`,\"name\":`Catholic University of America`,\"domain\":`cua.edu`},{\"id\":`new-york-university`,\"name\":`New York University`,\"domain\":`nyu.edu`},{\"id\":`university-of-richmond`,\"name\":`University of Richmond`,\"domain\":`richmond.edu`},{\"id\":`elon-university`,\"name\":`Elon University`,\"domain\":`elon.edu`},{\"id\":`fairfield-university`,\"name\":`Fairfield University`,\"domain\":`fairfield.edu`},{\"id\":`university-of-scranton`,\"name\":`University of Scranton`,\"domain\":`scranton.edu`},{\"id\":`quinnipiac-university`,\"name\":`Quinnipiac University`,\"domain\":`quinnipiac.edu`},{\"id\":`bentley-university`,\"name\":`Bentley University`,\"domain\":`bentley.edu`},{\"id\":`hofstra-university`,\"name\":`Hofstra University`,\"domain\":`hofstra.edu`},{\"id\":`adelphi-university`,\"name\":`Adelphi University`,\"domain\":`adelphi.edu`},{\"id\":`chapman-university`,\"name\":`Chapman University`,\"domain\":`chapman.edu`},{\"id\":`university-of-detroit-mercy`,\"name\":`University of Detroit Mercy`,\"domain\":`udmercy.edu`},{\"id\":`st-louis-university`,\"name\":`Saint Louis University`,\"domain\":`slu.edu`},{\"id\":`university-of-st-thomas`,\"name\":`University of St. Thomas`,\"domain\":`stthomas.edu`},{\"id\":`duquesne-university`,\"name\":`Duquesne University`,\"domain\":`duq.edu`},{\"id\":`rowan-university`,\"name\":`Rowan University`,\"domain\":`rowan.edu`},{\"id\":`xavier-university`,\"name\":`Xavier University`,\"domain\":`xavier.edu`},{\"id\":`butler-university`,\"name\":`Butler University`,\"domain\":`butler.edu`},{\"id\":`drake-university`,\"name\":`Drake University`,\"domain\":`drake.edu`},{\"id\":`samford-university`,\"name\":`Samford University`,\"domain\":`samford.edu`},{\"id\":`belmont-university`,\"name\":`Belmont University`,\"domain\":`belmont.edu`},{\"id\":`mercer-university`,\"name\":`Mercer University`,\"domain\":`mercer.edu`},{\"id\":`pacific-university`,\"name\":`Pacific University`,\"domain\":`pacificu.edu`},{\"id\":`university-of-portland`,\"name\":`University of Portland`,\"domain\":`up.edu`},{\"id\":`university-of-alabama`,\"name\":`University of Alabama`,\"domain\":`ua.edu`},{\"id\":`university-of-alabama-birmingham`,\"name\":`University of Alabama at Birmingham`,\"domain\":`uab.edu`},{\"id\":`university-of-alabama-huntsville`,\"name\":`University of Alabama in Huntsville`,\"domain\":`uah.edu`},{\"id\":`auburn-university`,\"name\":`Auburn University`,\"domain\":`auburn.edu`},{\"id\":`troy-university`,\"name\":`Troy University`,\"domain\":`troy.edu`},{\"id\":`university-of-south-alabama`,\"name\":`University of South Alabama`,\"domain\":`southalabama.edu`},{\"id\":`alabama-state-university`,\"name\":`Alabama State University`,\"domain\":`alasu.edu`},{\"id\":`university-of-alaska-fairbanks`,\"name\":`University of Alaska Fairbanks`,\"domain\":`uaf.edu`},{\"id\":`university-of-alaska-anchorage`,\"name\":`University of Alaska Anchorage`,\"domain\":`uaa.alaska.edu`},{\"id\":`university-of-arizona`,\"name\":`University of Arizona`,\"domain\":`arizona.edu`},{\"id\":`arizona-state-university`,\"name\":`Arizona State University`,\"domain\":`asu.edu`},{\"id\":`northern-arizona-university`,\"name\":`Northern Arizona University`,\"domain\":`nau.edu`},{\"id\":`university-of-arkansas`,\"name\":`University of Arkansas`,\"domain\":`uark.edu`},{\"id\":`arkansas-state-university`,\"name\":`Arkansas State University`,\"domain\":`astate.edu`},{\"id\":`university-of-central-arkansas`,\"name\":`University of Central Arkansas`,\"domain\":`uca.edu`},{\"id\":`uc-berkeley`,\"name\":`University of California, Berkeley`,\"domain\":`berkeley.edu`},{\"id\":`ucla`,\"name\":`University of California, Los Angeles`,\"domain\":`ucla.edu`},{\"id\":`uc-san-diego`,\"name\":`University of California, San Diego`,\"domain\":`ucsd.edu`},{\"id\":`uc-san-francisco`,\"name\":`University of California, San Francisco`,\"domain\":`ucsf.edu`},{\"id\":`uc-davis`,\"name\":`University of California, Davis`,\"domain\":`ucdavis.edu`},{\"id\":`uc-irvine`,\"name\":`University of California, Irvine`,\"domain\":`uci.edu`},{\"id\":`uc-santa-barbara`,\"name\":`University of California, Santa Barbara`,\"domain\":`ucsb.edu`},{\"id\":`uc-santa-cruz`,\"name\":`University of California, Santa Cruz`,\"domain\":`ucsc.edu`},{\"id\":`uc-riverside`,\"name\":`University of California, Riverside`,\"domain\":`ucr.edu`},{\"id\":`uc-merced`,\"name\":`University of California, Merced`,\"domain\":`ucmerced.edu`},{\"id\":`san-diego-state-university`,\"name\":`San Diego State University`,\"domain\":`sdsu.edu`},{\"id\":`san-jose-state-university`,\"name\":`San Jose State University`,\"domain\":`sjsu.edu`},{\"id\":`san-francisco-state-university`,\"name\":`San Francisco State University`,\"domain\":`sfsu.edu`},{\"id\":`cal-poly-slo`,\"name\":`California Polytechnic State University, San Luis Obispo`,\"domain\":`calpoly.edu`},{\"id\":`cal-poly-pomona`,\"name\":`California State Polytechnic University, Pomona`,\"domain\":`cpp.edu`},{\"id\":`csu-long-beach`,\"name\":`California State University, Long Beach`,\"domain\":`csulb.edu`},{\"id\":`csu-fullerton`,\"name\":`California State University, Fullerton`,\"domain\":`fullerton.edu`},{\"id\":`csu-northridge`,\"name\":`California State University, Northridge`,\"domain\":`csun.edu`},{\"id\":`csu-sacramento`,\"name\":`California State University, Sacramento`,\"domain\":`csus.edu`},{\"id\":`csu-fresno`,\"name\":`California State University, Fresno`,\"domain\":`fresnostate.edu`},{\"id\":`csu-chico`,\"name\":`California State University, Chico`,\"domain\":`csuchico.edu`},{\"id\":`csu-los-angeles`,\"name\":`California State University, Los Angeles`,\"domain\":`calstatela.edu`},{\"id\":`csu-east-bay`,\"name\":`California State University, East Bay`,\"domain\":`csueastbay.edu`},{\"id\":`csu-bakersfield`,\"name\":`California State University, Bakersfield`,\"domain\":`csub.edu`},{\"id\":`csu-dominguez-hills`,\"name\":`California State University, Dominguez Hills`,\"domain\":`csudh.edu`},{\"id\":`csu-san-bernardino`,\"name\":`California State University, San Bernardino`,\"domain\":`csusb.edu`},{\"id\":`csu-stanislaus`,\"name\":`California State University, Stanislaus`,\"domain\":`csustan.edu`},{\"id\":`csu-monterey-bay`,\"name\":`California State University, Monterey Bay`,\"domain\":`csumb.edu`},{\"id\":`csu-channel-islands`,\"name\":`California State University, Channel Islands`,\"domain\":`csuci.edu`},{\"id\":`csu-san-marcos`,\"name\":`California State University, San Marcos`,\"domain\":`csusm.edu`},{\"id\":`humboldt-state-university`,\"name\":`Cal Poly Humboldt`,\"domain\":`humboldt.edu`},{\"id\":`sonoma-state-university`,\"name\":`Sonoma State University`,\"domain\":`sonoma.edu`},{\"id\":`university-of-colorado-boulder`,\"name\":`University of Colorado Boulder`,\"domain\":`colorado.edu`},{\"id\":`university-of-colorado-denver`,\"name\":`University of Colorado Denver`,\"domain\":`ucdenver.edu`},{\"id\":`colorado-state-university`,\"name\":`Colorado State University`,\"domain\":`colostate.edu`},{\"id\":`colorado-school-of-mines`,\"name\":`Colorado School of Mines`,\"domain\":`mines.edu`},{\"id\":`university-of-northern-colorado`,\"name\":`University of Northern Colorado`,\"domain\":`unco.edu`},{\"id\":`colorado-college`,\"name\":`Colorado College`,\"domain\":`coloradocollege.edu`},{\"id\":`university-of-connecticut`,\"name\":`University of Connecticut`,\"domain\":`uconn.edu`},{\"id\":`connecticut-college`,\"name\":`Connecticut College`,\"domain\":`conncoll.edu`},{\"id\":`university-of-delaware`,\"name\":`University of Delaware`,\"domain\":`udel.edu`},{\"id\":`delaware-state-university`,\"name\":`Delaware State University`,\"domain\":`desu.edu`},{\"id\":`university-of-florida`,\"name\":`University of Florida`,\"domain\":`ufl.edu`},{\"id\":`florida-state-university`,\"name\":`Florida State University`,\"domain\":`fsu.edu`},{\"id\":`university-of-south-florida`,\"name\":`University of South Florida`,\"domain\":`usf.edu`},{\"id\":`university-of-central-florida`,\"name\":`University of Central Florida`,\"domain\":`ucf.edu`},{\"id\":`florida-international-university`,\"name\":`Florida International University`,\"domain\":`fiu.edu`},{\"id\":`florida-atlantic-university`,\"name\":`Florida Atlantic University`,\"domain\":`fau.edu`},{\"id\":`university-of-north-florida`,\"name\":`University of North Florida`,\"domain\":`unf.edu`},{\"id\":`university-of-west-florida`,\"name\":`University of West Florida`,\"domain\":`uwf.edu`},{\"id\":`florida-gulf-coast-university`,\"name\":`Florida Gulf Coast University`,\"domain\":`fgcu.edu`},{\"id\":`florida-am-university`,\"name\":`Florida A\u0026M University`,\"domain\":`famu.edu`},{\"id\":`florida-institute-of-technology`,\"name\":`Florida Institute of Technology`,\"domain\":`fit.edu`},{\"id\":`rollins-college`,\"name\":`Rollins College`,\"domain\":`rollins.edu`},{\"id\":`stetson-university`,\"name\":`Stetson University`,\"domain\":`stetson.edu`},{\"id\":`university-of-georgia`,\"name\":`University of Georgia`,\"domain\":`uga.edu`},{\"id\":`georgia-institute-of-technology`,\"name\":`Georgia Institute of Technology`,\"domain\":`gatech.edu`},{\"id\":`georgia-state-university`,\"name\":`Georgia State University`,\"domain\":`gsu.edu`},{\"id\":`georgia-southern-university`,\"name\":`Georgia Southern University`,\"domain\":`georgiasouthern.edu`},{\"id\":`kennesaw-state-university`,\"name\":`Kennesaw State University`,\"domain\":`kennesaw.edu`},{\"id\":`valdosta-state-university`,\"name\":`Valdosta State University`,\"domain\":`valdosta.edu`},{\"id\":`university-of-west-georgia`,\"name\":`University of West Georgia`,\"domain\":`westga.edu`},{\"id\":`university-of-hawaii-manoa`,\"name\":`University of Hawaii at Manoa`,\"domain\":`hawaii.edu`},{\"id\":`university-of-idaho`,\"name\":`University of Idaho`,\"domain\":`uidaho.edu`},{\"id\":`boise-state-university`,\"name\":`Boise State University`,\"domain\":`boisestate.edu`},{\"id\":`idaho-state-university`,\"name\":`Idaho State University`,\"domain\":`isu.edu`},{\"id\":`university-of-illinois-urbana-champaign`,\"name\":`University of Illinois Urbana-Champaign`,\"domain\":`illinois.edu`},{\"id\":`university-of-illinois-chicago`,\"name\":`University of Illinois Chicago`,\"domain\":`uic.edu`},{\"id\":`illinois-state-university`,\"name\":`Illinois State University`,\"domain\":`ilstu.edu`},{\"id\":`northern-illinois-university`,\"name\":`Northern Illinois University`,\"domain\":`niu.edu`},{\"id\":`southern-illinois-university-carbondale`,\"name\":`Southern Illinois University Carbondale`,\"domain\":`siu.edu`},{\"id\":`southern-illinois-university-edwardsville`,\"name\":`Southern Illinois University Edwardsville`,\"domain\":`siue.edu`},{\"id\":`western-illinois-university`,\"name\":`Western Illinois University`,\"domain\":`wiu.edu`},{\"id\":`eastern-illinois-university`,\"name\":`Eastern Illinois University`,\"domain\":`eiu.edu`},{\"id\":`illinois-institute-of-technology`,\"name\":`Illinois Institute of Technology`,\"domain\":`iit.edu`},{\"id\":`indiana-university-bloomington`,\"name\":`Indiana University Bloomington`,\"domain\":`indiana.edu`},{\"id\":`purdue-university`,\"name\":`Purdue University`,\"domain\":`purdue.edu`},{\"id\":`indiana-university-purdue-university-indianapolis`,\"name\":`Indiana University-Purdue University Indianapolis`,\"domain\":`iupui.edu`},{\"id\":`ball-state-university`,\"name\":`Ball State University`,\"domain\":`bsu.edu`},{\"id\":`indiana-state-university`,\"name\":`Indiana State University`,\"domain\":`indstate.edu`},{\"id\":`valparaiso-university`,\"name\":`Valparaiso University`,\"domain\":`valpo.edu`},{\"id\":`university-of-iowa`,\"name\":`University of Iowa`,\"domain\":`uiowa.edu`},{\"id\":`iowa-state-university`,\"name\":`Iowa State University`,\"domain\":`iastate.edu`},{\"id\":`university-of-northern-iowa`,\"name\":`University of Northern Iowa`,\"domain\":`uni.edu`},{\"id\":`grinnell-college`,\"name\":`Grinnell College`,\"domain\":`grinnell.edu`},{\"id\":`university-of-kansas`,\"name\":`University of Kansas`,\"domain\":`ku.edu`},{\"id\":`kansas-state-university`,\"name\":`Kansas State University`,\"domain\":`k-state.edu`},{\"id\":`wichita-state-university`,\"name\":`Wichita State University`,\"domain\":`wichita.edu`},{\"id\":`university-of-kentucky`,\"name\":`University of Kentucky`,\"domain\":`uky.edu`},{\"id\":`university-of-louisville`,\"name\":`University of Louisville`,\"domain\":`louisville.edu`},{\"id\":`western-kentucky-university`,\"name\":`Western Kentucky University`,\"domain\":`wku.edu`},{\"id\":`eastern-kentucky-university`,\"name\":`Eastern Kentucky University`,\"domain\":`eku.edu`},{\"id\":`murray-state-university`,\"name\":`Murray State University`,\"domain\":`murraystate.edu`},{\"id\":`morehead-state-university`,\"name\":`Morehead State University`,\"domain\":`moreheadstate.edu`},{\"id\":`louisiana-state-university`,\"name\":`Louisiana State University`,\"domain\":`lsu.edu`},{\"id\":`university-of-louisiana-lafayette`,\"name\":`University of Louisiana at Lafayette`,\"domain\":`louisiana.edu`},{\"id\":`university-of-louisiana-monroe`,\"name\":`University of Louisiana at Monroe`,\"domain\":`ulm.edu`},{\"id\":`louisiana-tech-university`,\"name\":`Louisiana Tech University`,\"domain\":`latech.edu`},{\"id\":`tulane-university-la`,\"name\":`Tulane University`,\"domain\":`tulane.edu`},{\"id\":`loyola-university-new-orleans`,\"name\":`Loyola University New Orleans`,\"domain\":`loyno.edu`},{\"id\":`university-of-maine`,\"name\":`University of Maine`,\"domain\":`umaine.edu`},{\"id\":`bowdoin-college`,\"name\":`Bowdoin College`,\"domain\":`bowdoin.edu`},{\"id\":`colby-college`,\"name\":`Colby College`,\"domain\":`colby.edu`},{\"id\":`bates-college`,\"name\":`Bates College`,\"domain\":`bates.edu`},{\"id\":`university-of-maryland-college-park`,\"name\":`University of Maryland, College Park`,\"domain\":`umd.edu`},{\"id\":`university-of-maryland-baltimore-county`,\"name\":`University of Maryland, Baltimore County`,\"domain\":`umbc.edu`},{\"id\":`towson-university`,\"name\":`Towson University`,\"domain\":`towson.edu`},{\"id\":`salisbury-university`,\"name\":`Salisbury University`,\"domain\":`salisbury.edu`},{\"id\":`morgan-state-university`,\"name\":`Morgan State University`,\"domain\":`morgan.edu`},{\"id\":`umass-amherst`,\"name\":`University of Massachusetts Amherst`,\"domain\":`umass.edu`},{\"id\":`umass-boston`,\"name\":`University of Massachusetts Boston`,\"domain\":`umb.edu`},{\"id\":`umass-lowell`,\"name\":`University of Massachusetts Lowell`,\"domain\":`uml.edu`},{\"id\":`umass-dartmouth`,\"name\":`University of Massachusetts Dartmouth`,\"domain\":`umassd.edu`},{\"id\":`williams-college`,\"name\":`Williams College`,\"domain\":`williams.edu`},{\"id\":`amherst-college`,\"name\":`Amherst College`,\"domain\":`amherst.edu`},{\"id\":`wellesley-college`,\"name\":`Wellesley College`,\"domain\":`wellesley.edu`},{\"id\":`smith-college`,\"name\":`Smith College`,\"domain\":`smith.edu`},{\"id\":`mount-holyoke-college`,\"name\":`Mount Holyoke College`,\"domain\":`mtholyoke.edu`},{\"id\":`holy-cross`,\"name\":`College of the Holy Cross`,\"domain\":`holycross.edu`},{\"id\":`clark-university`,\"name\":`Clark University`,\"domain\":`clarku.edu`},{\"id\":`simmons-university`,\"name\":`Simmons University`,\"domain\":`simmons.edu`},{\"id\":`suffolk-university`,\"name\":`Suffolk University`,\"domain\":`suffolk.edu`},{\"id\":`emerson-college`,\"name\":`Emerson College`,\"domain\":`emerson.edu`},{\"id\":`university-of-michigan`,\"name\":`University of Michigan`,\"domain\":`umich.edu`},{\"id\":`michigan-state-university`,\"name\":`Michigan State University`,\"domain\":`msu.edu`},{\"id\":`wayne-state-university`,\"name\":`Wayne State University`,\"domain\":`wayne.edu`},{\"id\":`western-michigan-university`,\"name\":`Western Michigan University`,\"domain\":`wmich.edu`},{\"id\":`central-michigan-university`,\"name\":`Central Michigan University`,\"domain\":`cmich.edu`},{\"id\":`eastern-michigan-university`,\"name\":`Eastern Michigan University`,\"domain\":`emich.edu`},{\"id\":`oakland-university`,\"name\":`Oakland University`,\"domain\":`oakland.edu`},{\"id\":`grand-valley-state-university`,\"name\":`Grand Valley State University`,\"domain\":`gvsu.edu`},{\"id\":`michigan-technological-university`,\"name\":`Michigan Technological University`,\"domain\":`mtu.edu`},{\"id\":`university-of-minnesota-twin-cities`,\"name\":`University of Minnesota, Twin Cities`,\"domain\":`umn.edu`},{\"id\":`university-of-minnesota-duluth`,\"name\":`University of Minnesota Duluth`,\"domain\":`d.umn.edu`},{\"id\":`minnesota-state-university-mankato`,\"name\":`Minnesota State University, Mankato`,\"domain\":`mnsu.edu`},{\"id\":`st-cloud-state-university`,\"name\":`St. Cloud State University`,\"domain\":`stcloudstate.edu`},{\"id\":`carleton-college`,\"name\":`Carleton College`,\"domain\":`carleton.edu`},{\"id\":`macalester-college`,\"name\":`Macalester College`,\"domain\":`macalester.edu`},{\"id\":`st-olaf-college`,\"name\":`St. Olaf College`,\"domain\":`stolaf.edu`},{\"id\":`university-of-mississippi`,\"name\":`University of Mississippi`,\"domain\":`olemiss.edu`},{\"id\":`mississippi-state-university`,\"name\":`Mississippi State University`,\"domain\":`msstate.edu`},{\"id\":`university-of-southern-mississippi`,\"name\":`University of Southern Mississippi`,\"domain\":`usm.edu`},{\"id\":`jackson-state-university`,\"name\":`Jackson State University`,\"domain\":`jsums.edu`},{\"id\":`university-of-missouri`,\"name\":`University of Missouri`,\"domain\":`missouri.edu`},{\"id\":`university-of-missouri-kansas-city`,\"name\":`University of Missouri-Kansas City`,\"domain\":`umkc.edu`},{\"id\":`university-of-missouri-st-louis`,\"name\":`University of Missouri-St. Louis`,\"domain\":`umsl.edu`},{\"id\":`missouri-state-university`,\"name\":`Missouri State University`,\"domain\":`missouristate.edu`},{\"id\":`missouri-university-of-science-technology`,\"name\":`Missouri University of Science and Technology`,\"domain\":`mst.edu`},{\"id\":`university-of-montana`,\"name\":`University of Montana`,\"domain\":`umt.edu`},{\"id\":`montana-state-university`,\"name\":`Montana State University`,\"domain\":`montana.edu`},{\"id\":`university-of-nebraska-lincoln`,\"name\":`University of Nebraska-Lincoln`,\"domain\":`unl.edu`},{\"id\":`university-of-nebraska-omaha`,\"name\":`University of Nebraska at Omaha`,\"domain\":`unomaha.edu`},{\"id\":`creighton-university-ne`,\"name\":`Creighton University`,\"domain\":`creighton.edu`},{\"id\":`university-of-nevada-las-vegas`,\"name\":`University of Nevada, Las Vegas`,\"domain\":`unlv.edu`},{\"id\":`university-of-nevada-reno`,\"name\":`University of Nevada, Reno`,\"domain\":`unr.edu`},{\"id\":`university-of-new-hampshire`,\"name\":`University of New Hampshire`,\"domain\":`unh.edu`},{\"id\":`rutgers-university`,\"name\":`Rutgers University`,\"domain\":`rutgers.edu`},{\"id\":`rutgers-university-newark`,\"name\":`Rutgers University-Newark`,\"domain\":`newark.rutgers.edu`},{\"id\":`new-jersey-institute-of-technology`,\"name\":`New Jersey Institute of Technology`,\"domain\":`njit.edu`},{\"id\":`princeton-university-nj`,\"name\":`Princeton University`,\"domain\":`princeton.edu`},{\"id\":`montclair-state-university`,\"name\":`Montclair State University`,\"domain\":`montclair.edu`},{\"id\":`the-college-of-new-jersey`,\"name\":`The College of New Jersey`,\"domain\":`tcnj.edu`},{\"id\":`rider-university`,\"name\":`Rider University`,\"domain\":`rider.edu`},{\"id\":`university-of-new-mexico`,\"name\":`University of New Mexico`,\"domain\":`unm.edu`},{\"id\":`new-mexico-state-university`,\"name\":`New Mexico State University`,\"domain\":`nmsu.edu`},{\"id\":`new-mexico-institute-of-mining-technology`,\"name\":`New Mexico Institute of Mining and Technology`,\"domain\":`nmt.edu`},{\"id\":`suny-stony-brook`,\"name\":`Stony Brook University`,\"domain\":`stonybrook.edu`},{\"id\":`suny-buffalo`,\"name\":`University at Buffalo`,\"domain\":`buffalo.edu`},{\"id\":`suny-binghamton`,\"name\":`Binghamton University`,\"domain\":`binghamton.edu`},{\"id\":`suny-albany`,\"name\":`University at Albany`,\"domain\":`albany.edu`},{\"id\":`suny-new-paltz`,\"name\":`SUNY New Paltz`,\"domain\":`newpaltz.edu`},{\"id\":`suny-oswego`,\"name\":`SUNY Oswego`,\"domain\":`oswego.edu`},{\"id\":`suny-geneseo`,\"name\":`SUNY Geneseo`,\"domain\":`geneseo.edu`},{\"id\":`suny-purchase`,\"name\":`Purchase College`,\"domain\":`purchase.edu`},{\"id\":`suny-oneonta`,\"name\":`SUNY Oneonta`,\"domain\":`oneonta.edu`},{\"id\":`suny-plattsburgh`,\"name\":`SUNY Plattsburgh`,\"domain\":`plattsburgh.edu`},{\"id\":`suny-cortland`,\"name\":`SUNY Cortland`,\"domain\":`cortland.edu`},{\"id\":`suny-fredonia`,\"name\":`SUNY Fredonia`,\"domain\":`fredonia.edu`},{\"id\":`suny-brockport`,\"name\":`SUNY Brockport`,\"domain\":`brockport.edu`},{\"id\":`suny-potsdam`,\"name\":`SUNY Potsdam`,\"domain\":`potsdam.edu`},{\"id\":`cuny-city-college`,\"name\":`City College of New York`,\"domain\":`ccny.cuny.edu`},{\"id\":`cuny-hunter-college`,\"name\":`Hunter College`,\"domain\":`hunter.cuny.edu`},{\"id\":`cuny-baruch-college`,\"name\":`Baruch College`,\"domain\":`baruch.cuny.edu`},{\"id\":`cuny-brooklyn-college`,\"name\":`Brooklyn College`,\"domain\":`brooklyn.cuny.edu`},{\"id\":`cuny-queens-college`,\"name\":`Queens College`,\"domain\":`qc.cuny.edu`},{\"id\":`cuny-john-jay`,\"name\":`John Jay College of Criminal Justice`,\"domain\":`jjay.cuny.edu`},{\"id\":`cuny-lehman-college`,\"name\":`Lehman College`,\"domain\":`lehman.cuny.edu`},{\"id\":`cuny-graduate-center`,\"name\":`CUNY Graduate Center`,\"domain\":`gc.cuny.edu`},{\"id\":`rochester-institute-of-technology`,\"name\":`Rochester Institute of Technology`,\"domain\":`rit.edu`},{\"id\":`clarkson-university`,\"name\":`Clarkson University`,\"domain\":`clarkson.edu`},{\"id\":`pace-university`,\"name\":`Pace University`,\"domain\":`pace.edu`},{\"id\":`new-school`,\"name\":`The New School`,\"domain\":`newschool.edu`},{\"id\":`marist-college`,\"name\":`Marist College`,\"domain\":`marist.edu`},{\"id\":`iona-university`,\"name\":`Iona University`,\"domain\":`iona.edu`},{\"id\":`st-johns-university`,\"name\":`St. John's University`,\"domain\":`stjohns.edu`},{\"id\":`manhattan-college`,\"name\":`Manhattan College`,\"domain\":`manhattan.edu`},{\"id\":`le-moyne-college`,\"name\":`Le Moyne College`,\"domain\":`lemoyne.edu`},{\"id\":`niagara-university`,\"name\":`Niagara University`,\"domain\":`niagara.edu`},{\"id\":`canisius-university`,\"name\":`Canisius University`,\"domain\":`canisius.edu`},{\"id\":`suny-esf`,\"name\":`SUNY College of Environmental Science and Forestry`,\"domain\":`esf.edu`},{\"id\":`university-of-north-carolina-chapel-hill`,\"name\":`University of North Carolina at Chapel Hill`,\"domain\":`unc.edu`},{\"id\":`nc-state-university`,\"name\":`North Carolina State University`,\"domain\":`ncsu.edu`},{\"id\":`unc-charlotte`,\"name\":`University of North Carolina at Charlotte`,\"domain\":`charlotte.edu`},{\"id\":`unc-greensboro`,\"name\":`University of North Carolina at Greensboro`,\"domain\":`uncg.edu`},{\"id\":`unc-wilmington`,\"name\":`University of North Carolina Wilmington`,\"domain\":`uncw.edu`},{\"id\":`unc-asheville`,\"name\":`University of North Carolina at Asheville`,\"domain\":`unca.edu`},{\"id\":`east-carolina-university`,\"name\":`East Carolina University`,\"domain\":`ecu.edu`},{\"id\":`appalachian-state-university`,\"name\":`Appalachian State University`,\"domain\":`appstate.edu`},{\"id\":`western-carolina-university`,\"name\":`Western Carolina University`,\"domain\":`wcu.edu`},{\"id\":`north-carolina-central-university`,\"name\":`North Carolina Central University`,\"domain\":`nccu.edu`},{\"id\":`north-carolina-at-state-university`,\"name\":`North Carolina A\u0026T State University`,\"domain\":`ncat.edu`},{\"id\":`davidson-college`,\"name\":`Davidson College`,\"domain\":`davidson.edu`},{\"id\":`university-of-north-dakota`,\"name\":`University of North Dakota`,\"domain\":`und.edu`},{\"id\":`north-dakota-state-university`,\"name\":`North Dakota State University`,\"domain\":`ndsu.edu`},{\"id\":`ohio-state-university`,\"name\":`Ohio State University`,\"domain\":`osu.edu`},{\"id\":`university-of-cincinnati`,\"name\":`University of Cincinnati`,\"domain\":`uc.edu`},{\"id\":`ohio-university`,\"name\":`Ohio University`,\"domain\":`ohio.edu`},{\"id\":`miami-university-ohio`,\"name\":`Miami University`,\"domain\":`miamioh.edu`},{\"id\":`kent-state-university`,\"name\":`Kent State University`,\"domain\":`kent.edu`},{\"id\":`university-of-akron`,\"name\":`University of Akron`,\"domain\":`uakron.edu`},{\"id\":`bowling-green-state-university`,\"name\":`Bowling Green State University`,\"domain\":`bgsu.edu`},{\"id\":`university-of-toledo`,\"name\":`University of Toledo`,\"domain\":`utoledo.edu`},{\"id\":`cleveland-state-university`,\"name\":`Cleveland State University`,\"domain\":`csuohio.edu`},{\"id\":`wright-state-university`,\"name\":`Wright State University`,\"domain\":`wright.edu`},{\"id\":`youngstown-state-university`,\"name\":`Youngstown State University`,\"domain\":`ysu.edu`},{\"id\":`oberlin-college`,\"name\":`Oberlin College`,\"domain\":`oberlin.edu`},{\"id\":`kenyon-college`,\"name\":`Kenyon College`,\"domain\":`kenyon.edu`},{\"id\":`denison-university`,\"name\":`Denison University`,\"domain\":`denison.edu`},{\"id\":`college-of-wooster`,\"name\":`College of Wooster`,\"domain\":`wooster.edu`},{\"id\":`university-of-oklahoma`,\"name\":`University of Oklahoma`,\"domain\":`ou.edu`},{\"id\":`oklahoma-state-university`,\"name\":`Oklahoma State University`,\"domain\":`okstate.edu`},{\"id\":`university-of-tulsa-ok`,\"name\":`University of Tulsa`,\"domain\":`utulsa.edu`},{\"id\":`university-of-oregon`,\"name\":`University of Oregon`,\"domain\":`uoregon.edu`},{\"id\":`oregon-state-university`,\"name\":`Oregon State University`,\"domain\":`oregonstate.edu`},{\"id\":`portland-state-university`,\"name\":`Portland State University`,\"domain\":`pdx.edu`},{\"id\":`lewis-and-clark-college`,\"name\":`Lewis \u0026 Clark College`,\"domain\":`lclark.edu`},{\"id\":`reed-college`,\"name\":`Reed College`,\"domain\":`reed.edu`},{\"id\":`willamette-university`,\"name\":`Willamette University`,\"domain\":`willamette.edu`},{\"id\":`penn-state-university`,\"name\":`Pennsylvania State University`,\"domain\":`psu.edu`},{\"id\":`university-of-pittsburgh`,\"name\":`University of Pittsburgh`,\"domain\":`pitt.edu`},{\"id\":`temple-university`,\"name\":`Temple University`,\"domain\":`temple.edu`},{\"id\":`west-chester-university`,\"name\":`West Chester University`,\"domain\":`wcupa.edu`},{\"id\":`indiana-university-of-pennsylvania`,\"name\":`Indiana University of Pennsylvania`,\"domain\":`iup.edu`},{\"id\":`shippensburg-university`,\"name\":`Shippensburg University`,\"domain\":`ship.edu`},{\"id\":`bloomsburg-university`,\"name\":`Bloomsburg University`,\"domain\":`bloomu.edu`},{\"id\":`millersville-university`,\"name\":`Millersville University`,\"domain\":`millersville.edu`},{\"id\":`kutztown-university`,\"name\":`Kutztown University`,\"domain\":`kutztown.edu`},{\"id\":`slippery-rock-university`,\"name\":`Slippery Rock University`,\"domain\":`sru.edu`},{\"id\":`bucknell-university`,\"name\":`Bucknell University`,\"domain\":`bucknell.edu`},{\"id\":`gettysburg-college`,\"name\":`Gettysburg College`,\"domain\":`gettysburg.edu`},{\"id\":`dickinson-college`,\"name\":`Dickinson College`,\"domain\":`dickinson.edu`},{\"id\":`franklin-and-marshall-college`,\"name\":`Franklin \u0026 Marshall College`,\"domain\":`fandm.edu`},{\"id\":`lafayette-college`,\"name\":`Lafayette College`,\"domain\":`lafayette.edu`},{\"id\":`muhlenberg-college`,\"name\":`Muhlenberg College`,\"domain\":`muhlenberg.edu`},{\"id\":`swarthmore-college`,\"name\":`Swarthmore College`,\"domain\":`swarthmore.edu`},{\"id\":`haverford-college`,\"name\":`Haverford College`,\"domain\":`haverford.edu`},{\"id\":`bryn-mawr-college`,\"name\":`Bryn Mawr College`,\"domain\":`brynmawr.edu`},{\"id\":`ursinus-college`,\"name\":`Ursinus College`,\"domain\":`ursinus.edu`},{\"id\":`university-of-rhode-island`,\"name\":`University of Rhode Island`,\"domain\":`uri.edu`},{\"id\":`brown-university-ri`,\"name\":`Brown University`,\"domain\":`brown.edu`},{\"id\":`rhode-island-school-of-design`,\"name\":`Rhode Island School of Design`,\"domain\":`risd.edu`},{\"id\":`providence-college`,\"name\":`Providence College`,\"domain\":`providence.edu`},{\"id\":`bryant-university`,\"name\":`Bryant University`,\"domain\":`bryant.edu`},{\"id\":`university-of-south-carolina`,\"name\":`University of South Carolina`,\"domain\":`sc.edu`},{\"id\":`clemson-university`,\"name\":`Clemson University`,\"domain\":`clemson.edu`},{\"id\":`college-of-charleston`,\"name\":`College of Charleston`,\"domain\":`cofc.edu`},{\"id\":`furman-university`,\"name\":`Furman University`,\"domain\":`furman.edu`},{\"id\":`citadel`,\"name\":`The Citadel`,\"domain\":`citadel.edu`},{\"id\":`south-carolina-state-university`,\"name\":`South Carolina State University`,\"domain\":`scsu.edu`},{\"id\":`coastal-carolina-university`,\"name\":`Coastal Carolina University`,\"domain\":`coastal.edu`},{\"id\":`wofford-college`,\"name\":`Wofford College`,\"domain\":`wofford.edu`},{\"id\":`university-of-south-dakota`,\"name\":`University of South Dakota`,\"domain\":`usd.edu`},{\"id\":`south-dakota-state-university`,\"name\":`South Dakota State University`,\"domain\":`sdstate.edu`},{\"id\":`south-dakota-school-of-mines`,\"name\":`South Dakota School of Mines and Technology`,\"domain\":`sdsmt.edu`},{\"id\":`university-of-tennessee-knoxville`,\"name\":`University of Tennessee, Knoxville`,\"domain\":`utk.edu`},{\"id\":`university-of-tennessee-chattanooga`,\"name\":`University of Tennessee at Chattanooga`,\"domain\":`utc.edu`},{\"id\":`university-of-memphis`,\"name\":`University of Memphis`,\"domain\":`memphis.edu`},{\"id\":`tennessee-state-university`,\"name\":`Tennessee State University`,\"domain\":`tnstate.edu`},{\"id\":`middle-tennessee-state-university`,\"name\":`Middle Tennessee State University`,\"domain\":`mtsu.edu`},{\"id\":`east-tennessee-state-university`,\"name\":`East Tennessee State University`,\"domain\":`etsu.edu`},{\"id\":`tennessee-technological-university`,\"name\":`Tennessee Technological University`,\"domain\":`tntech.edu`},{\"id\":`vanderbilt-university-tn`,\"name\":`Vanderbilt University`,\"domain\":`vanderbilt.edu`},{\"id\":`rhodes-college`,\"name\":`Rhodes College`,\"domain\":`rhodes.edu`},{\"id\":`sewanee`,\"name\":`Sewanee: The University of the South`,\"domain\":`sewanee.edu`},{\"id\":`university-of-texas-austin`,\"name\":`University of Texas at Austin`,\"domain\":`utexas.edu`},{\"id\":`university-of-texas-dallas`,\"name\":`University of Texas at Dallas`,\"domain\":`utdallas.edu`},{\"id\":`university-of-texas-san-antonio`,\"name\":`University of Texas at San Antonio`,\"domain\":`utsa.edu`},{\"id\":`university-of-texas-arlington`,\"name\":`University of Texas at Arlington`,\"domain\":`uta.edu`},{\"id\":`university-of-texas-el-paso`,\"name\":`University of Texas at El Paso`,\"domain\":`utep.edu`},{\"id\":`university-of-texas-rio-grande-valley`,\"name\":`University of Texas Rio Grande Valley`,\"domain\":`utrgv.edu`},{\"id\":`university-of-texas-tyler`,\"name\":`University of Texas at Tyler`,\"domain\":`uttyler.edu`},{\"id\":`texas-am-university`,\"name\":`Texas A\u0026M University`,\"domain\":`tamu.edu`},{\"id\":`texas-tech-university`,\"name\":`Texas Tech University`,\"domain\":`ttu.edu`},{\"id\":`university-of-houston`,\"name\":`University of Houston`,\"domain\":`uh.edu`},{\"id\":`university-of-north-texas`,\"name\":`University of North Texas`,\"domain\":`unt.edu`},{\"id\":`texas-state-university`,\"name\":`Texas State University`,\"domain\":`txstate.edu`},{\"id\":`sam-houston-state-university`,\"name\":`Sam Houston State University`,\"domain\":`shsu.edu`},{\"id\":`stephen-f-austin-state-university`,\"name\":`Stephen F. Austin State University`,\"domain\":`sfasu.edu`},{\"id\":`lamar-university`,\"name\":`Lamar University`,\"domain\":`lamar.edu`},{\"id\":`tarleton-state-university`,\"name\":`Tarleton State University`,\"domain\":`tarleton.edu`},{\"id\":`prairie-view-am-university`,\"name\":`Prairie View A\u0026M University`,\"domain\":`pvamu.edu`},{\"id\":`texas-southern-university`,\"name\":`Texas Southern University`,\"domain\":`tsu.edu`},{\"id\":`texas-womans-university`,\"name\":`Texas Woman's University`,\"domain\":`twu.edu`},{\"id\":`texas-christian-university`,\"name\":`Texas Christian University`,\"domain\":`tcu.edu`},{\"id\":`trinity-university-tx`,\"name\":`Trinity University`,\"domain\":`trinity.edu`},{\"id\":`abilene-christian-university`,\"name\":`Abilene Christian University`,\"domain\":`acu.edu`},{\"id\":`university-of-utah`,\"name\":`University of Utah`,\"domain\":`utah.edu`},{\"id\":`utah-state-university`,\"name\":`Utah State University`,\"domain\":`usu.edu`},{\"id\":`brigham-young-university`,\"name\":`Brigham Young University`,\"domain\":`byu.edu`},{\"id\":`weber-state-university`,\"name\":`Weber State University`,\"domain\":`weber.edu`},{\"id\":`southern-utah-university`,\"name\":`Southern Utah University`,\"domain\":`suu.edu`},{\"id\":`university-of-vermont`,\"name\":`University of Vermont`,\"domain\":`uvm.edu`},{\"id\":`middlebury-college`,\"name\":`Middlebury College`,\"domain\":`middlebury.edu`},{\"id\":`bennington-college`,\"name\":`Bennington College`,\"domain\":`bennington.edu`},{\"id\":`university-of-virginia`,\"name\":`University of Virginia`,\"domain\":`virginia.edu`},{\"id\":`virginia-tech`,\"name\":`Virginia Tech`,\"domain\":`vt.edu`},{\"id\":`virginia-commonwealth-university`,\"name\":`Virginia Commonwealth University`,\"domain\":`vcu.edu`},{\"id\":`george-mason-university`,\"name\":`George Mason University`,\"domain\":`gmu.edu`},{\"id\":`old-dominion-university`,\"name\":`Old Dominion University`,\"domain\":`odu.edu`},{\"id\":`james-madison-university`,\"name\":`James Madison University`,\"domain\":`jmu.edu`},{\"id\":`william-and-mary`,\"name\":`William \u0026 Mary`,\"domain\":`wm.edu`},{\"id\":`virginia-military-institute`,\"name\":`Virginia Military Institute`,\"domain\":`vmi.edu`},{\"id\":`radford-university`,\"name\":`Radford University`,\"domain\":`radford.edu`},{\"id\":`longwood-university`,\"name\":`Longwood University`,\"domain\":`longwood.edu`},{\"id\":`norfolk-state-university`,\"name\":`Norfolk State University`,\"domain\":`nsu.edu`},{\"id\":`virginia-state-university`,\"name\":`Virginia State University`,\"domain\":`vsu.edu`},{\"id\":`hampton-university`,\"name\":`Hampton University`,\"domain\":`hamptonu.edu`},{\"id\":`liberty-university`,\"name\":`Liberty University`,\"domain\":`liberty.edu`},{\"id\":`washington-and-lee-university`,\"name\":`Washington and Lee University`,\"domain\":`wlu.edu`},{\"id\":`university-of-mary-washington`,\"name\":`University of Mary Washington`,\"domain\":`umw.edu`},{\"id\":`sweet-briar-college`,\"name\":`Sweet Briar College`,\"domain\":`sbc.edu`},{\"id\":`university-of-washington`,\"name\":`University of Washington`,\"domain\":`washington.edu`},{\"id\":`washington-state-university`,\"name\":`Washington State University`,\"domain\":`wsu.edu`},{\"id\":`western-washington-university`,\"name\":`Western Washington University`,\"domain\":`wwu.edu`},{\"id\":`eastern-washington-university`,\"name\":`Eastern Washington University`,\"domain\":`ewu.edu`},{\"id\":`central-washington-university`,\"name\":`Central Washington University`,\"domain\":`cwu.edu`},{\"id\":`seattle-university`,\"name\":`Seattle University`,\"domain\":`seattleu.edu`},{\"id\":`seattle-pacific-university`,\"name\":`Seattle Pacific University`,\"domain\":`spu.edu`},{\"id\":`whitman-college`,\"name\":`Whitman College`,\"domain\":`whitman.edu`},{\"id\":`georgetown-university-dc`,\"name\":`Georgetown University`,\"domain\":`georgetown.edu`},{\"id\":`george-washington-university-dc`,\"name\":`George Washington University`,\"domain\":`gwu.edu`},{\"id\":`american-university-dc`,\"name\":`American University`,\"domain\":`american.edu`},{\"id\":`howard-university-dc`,\"name\":`Howard University`,\"domain\":`howard.edu`},{\"id\":`gallaudet-university`,\"name\":`Gallaudet University`,\"domain\":`gallaudet.edu`},{\"id\":`west-virginia-university`,\"name\":`West Virginia University`,\"domain\":`wvu.edu`},{\"id\":`marshall-university`,\"name\":`Marshall University`,\"domain\":`marshall.edu`},{\"id\":`university-of-wisconsin-madison`,\"name\":`University of Wisconsin-Madison`,\"domain\":`wisc.edu`},{\"id\":`university-of-wisconsin-milwaukee`,\"name\":`University of Wisconsin-Milwaukee`,\"domain\":`uwm.edu`},{\"id\":`university-of-wisconsin-green-bay`,\"name\":`University of Wisconsin-Green Bay`,\"domain\":`uwgb.edu`},{\"id\":`university-of-wisconsin-la-crosse`,\"name\":`University of Wisconsin-La Crosse`,\"domain\":`uwlax.edu`},{\"id\":`university-of-wisconsin-eau-claire`,\"name\":`University of Wisconsin-Eau Claire`,\"domain\":`uwec.edu`},{\"id\":`university-of-wisconsin-oshkosh`,\"name\":`University of Wisconsin Oshkosh`,\"domain\":`uwosh.edu`},{\"id\":`university-of-wisconsin-whitewater`,\"name\":`University of Wisconsin-Whitewater`,\"domain\":`uww.edu`},{\"id\":`university-of-wisconsin-stout`,\"name\":`University of Wisconsin-Stout`,\"domain\":`uwstout.edu`},{\"id\":`university-of-wisconsin-stevens-point`,\"name\":`University of Wisconsin-Stevens Point`,\"domain\":`uwsp.edu`},{\"id\":`university-of-wisconsin-platteville`,\"name\":`University of Wisconsin-Platteville`,\"domain\":`uwplatt.edu`},{\"id\":`university-of-wisconsin-river-falls`,\"name\":`University of Wisconsin-River Falls`,\"domain\":`uwrf.edu`},{\"id\":`university-of-wisconsin-superior`,\"name\":`University of Wisconsin-Superior`,\"domain\":`uwsuper.edu`},{\"id\":`university-of-wisconsin-parkside`,\"name\":`University of Wisconsin-Parkside`,\"domain\":`uwp.edu`},{\"id\":`university-of-wyoming`,\"name\":`University of Wyoming`,\"domain\":`uwyo.edu`},{\"id\":`pomona-college`,\"name\":`Pomona College`,\"domain\":`pomona.edu`},{\"id\":`claremont-mckenna-college`,\"name\":`Claremont McKenna College`,\"domain\":`cmc.edu`},{\"id\":`harvey-mudd-college`,\"name\":`Harvey Mudd College`,\"domain\":`hmc.edu`},{\"id\":`scripps-college`,\"name\":`Scripps College`,\"domain\":`scrippscollege.edu`},{\"id\":`pitzer-college`,\"name\":`Pitzer College`,\"domain\":`pitzer.edu`},{\"id\":`vassar-college`,\"name\":`Vassar College`,\"domain\":`vassar.edu`},{\"id\":`wesleyan-university`,\"name\":`Wesleyan University`,\"domain\":`wesleyan.edu`},{\"id\":`hamilton-college`,\"name\":`Hamilton College`,\"domain\":`hamilton.edu`},{\"id\":`colgate-university`,\"name\":`Colgate University`,\"domain\":`colgate.edu`},{\"id\":`barnard-college`,\"name\":`Barnard College`,\"domain\":`barnard.edu`},{\"id\":`sarah-lawrence-college`,\"name\":`Sarah Lawrence College`,\"domain\":`sarahlawrence.edu`},{\"id\":`union-college`,\"name\":`Union College`,\"domain\":`union.edu`},{\"id\":`trinity-college`,\"name\":`Trinity College`,\"domain\":`trincoll.edu`},{\"id\":`bard-college`,\"name\":`Bard College`,\"domain\":`bard.edu`},{\"id\":`skidmore-college`,\"name\":`Skidmore College`,\"domain\":`skidmore.edu`},{\"id\":`colorado-college-la`,\"name\":`Colorado College`,\"domain\":`coloradocollege.edu`},{\"id\":`whitman-college-la`,\"name\":`Whitman College`,\"domain\":`whitman.edu`},{\"id\":`wheaton-college-ma`,\"name\":`Wheaton College (MA)`,\"domain\":`wheatoncollege.edu`},{\"id\":`wheaton-college-il`,\"name\":`Wheaton College (IL)`,\"domain\":`wheaton.edu`},{\"id\":`connecticut-college-la`,\"name\":`Connecticut College`,\"domain\":`conncoll.edu`},{\"id\":`st-lawrence-university`,\"name\":`St. Lawrence University`,\"domain\":`stlawu.edu`},{\"id\":`hobart-william-smith`,\"name\":`Hobart and William Smith Colleges`,\"domain\":`hws.edu`},{\"id\":`sewanee-la`,\"name\":`Sewanee: The University of the South`,\"domain\":`sewanee.edu`},{\"id\":`centre-college`,\"name\":`Centre College`,\"domain\":`centre.edu`},{\"id\":`depauw-university`,\"name\":`DePauw University`,\"domain\":`depauw.edu`},{\"id\":`wabash-college`,\"name\":`Wabash College`,\"domain\":`wabash.edu`},{\"id\":`kalamazoo-college`,\"name\":`Kalamazoo College`,\"domain\":`kzoo.edu`},{\"id\":`hope-college`,\"name\":`Hope College`,\"domain\":`hope.edu`},{\"id\":`albion-college`,\"name\":`Albion College`,\"domain\":`albion.edu`},{\"id\":`beloit-college`,\"name\":`Beloit College`,\"domain\":`beloit.edu`},{\"id\":`knox-college`,\"name\":`Knox College`,\"domain\":`knox.edu`},{\"id\":`lake-forest-college`,\"name\":`Lake Forest College`,\"domain\":`lakeforest.edu`},{\"id\":`augustana-college-il`,\"name\":`Augustana College`,\"domain\":`augustana.edu`},{\"id\":`lawrence-university`,\"name\":`Lawrence University`,\"domain\":`lawrence.edu`},{\"id\":`ripon-college`,\"name\":`Ripon College`,\"domain\":`ripon.edu`},{\"id\":`hampshire-college`,\"name\":`Hampshire College`,\"domain\":`hampshire.edu`},{\"id\":`allegheny-college`,\"name\":`Allegheny College`,\"domain\":`allegheny.edu`},{\"id\":`washington-college`,\"name\":`Washington College`,\"domain\":`washcoll.edu`},{\"id\":`st-marys-college-of-maryland`,\"name\":`St. Mary's College of Maryland`,\"domain\":`smcm.edu`},{\"id\":`goucher-college`,\"name\":`Goucher College`,\"domain\":`goucher.edu`},{\"id\":`agnes-scott-college`,\"name\":`Agnes Scott College`,\"domain\":`agnesscott.edu`},{\"id\":`berry-college`,\"name\":`Berry College`,\"domain\":`berry.edu`},{\"id\":`hendrix-college`,\"name\":`Hendrix College`,\"domain\":`hendrix.edu`},{\"id\":`rhodes-college-la`,\"name\":`Rhodes College`,\"domain\":`rhodes.edu`},{\"id\":`millsaps-college`,\"name\":`Millsaps College`,\"domain\":`millsaps.edu`},{\"id\":`southwestern-university`,\"name\":`Southwestern University`,\"domain\":`southwestern.edu`},{\"id\":`austin-college`,\"name\":`Austin College`,\"domain\":`austincollege.edu`},{\"id\":`occidental-college`,\"name\":`Occidental College`,\"domain\":`oxy.edu`},{\"id\":`whitworth-university`,\"name\":`Whitworth University`,\"domain\":`whitworth.edu`},{\"id\":`university-of-puget-sound`,\"name\":`University of Puget Sound`,\"domain\":`pugetsound.edu`},{\"id\":`linfield-university`,\"name\":`Linfield University`,\"domain\":`linfield.edu`},{\"id\":`lewis-clark-college`,\"name\":`Lewis \u0026 Clark College`,\"domain\":`lclark.edu`},{\"id\":`spelman-college`,\"name\":`Spelman College`,\"domain\":`spelman.edu`},{\"id\":`morehouse-college`,\"name\":`Morehouse College`,\"domain\":`morehouse.edu`},{\"id\":`howard-university-hbcu`,\"name\":`Howard University`,\"domain\":`howard.edu`},{\"id\":`hampton-university-hbcu`,\"name\":`Hampton University`,\"domain\":`hamptonu.edu`},{\"id\":`tuskegee-university`,\"name\":`Tuskegee University`,\"domain\":`tuskegee.edu`},{\"id\":`fisk-university`,\"name\":`Fisk University`,\"domain\":`fisk.edu`},{\"id\":`clark-atlanta-university`,\"name\":`Clark Atlanta University`,\"domain\":`cau.edu`},{\"id\":`xavier-university-louisiana`,\"name\":`Xavier University of Louisiana`,\"domain\":`xula.edu`},{\"id\":`dillard-university`,\"name\":`Dillard University`,\"domain\":`dillard.edu`},{\"id\":`florida-am-university-hbcu`,\"name\":`Florida A\u0026M University`,\"domain\":`famu.edu`},{\"id\":`north-carolina-at-hbcu`,\"name\":`North Carolina A\u0026T State University`,\"domain\":`ncat.edu`},{\"id\":`tennessee-state-university-hbcu`,\"name\":`Tennessee State University`,\"domain\":`tnstate.edu`},{\"id\":`grambling-state-university`,\"name\":`Grambling State University`,\"domain\":`gram.edu`},{\"id\":`southern-university`,\"name\":`Southern University and A\u0026M College`,\"domain\":`subr.edu`},{\"id\":`prairie-view-am-hbcu`,\"name\":`Prairie View A\u0026M University`,\"domain\":`pvamu.edu`},{\"id\":`texas-southern-university-hbcu`,\"name\":`Texas Southern University`,\"domain\":`tsu.edu`},{\"id\":`alcorn-state-university`,\"name\":`Alcorn State University`,\"domain\":`alcorn.edu`},{\"id\":`bethune-cookman-university`,\"name\":`Bethune-Cookman University`,\"domain\":`cookman.edu`},{\"id\":`morgan-state-university-hbcu`,\"name\":`Morgan State University`,\"domain\":`morgan.edu`},{\"id\":`norfolk-state-university-hbcu`,\"name\":`Norfolk State University`,\"domain\":`nsu.edu`},{\"id\":`virginia-state-university-hbcu`,\"name\":`Virginia State University`,\"domain\":`vsu.edu`},{\"id\":`virginia-union-university`,\"name\":`Virginia Union University`,\"domain\":`vuu.edu`},{\"id\":`winston-salem-state-university`,\"name\":`Winston-Salem State University`,\"domain\":`wssu.edu`},{\"id\":`fayetteville-state-university`,\"name\":`Fayetteville State University`,\"domain\":`uncfsu.edu`},{\"id\":`elizabeth-city-state-university`,\"name\":`Elizabeth City State University`,\"domain\":`ecsu.edu`},{\"id\":`bowie-state-university`,\"name\":`Bowie State University`,\"domain\":`bowiestate.edu`},{\"id\":`coppin-state-university`,\"name\":`Coppin State University`,\"domain\":`coppin.edu`},{\"id\":`university-of-maryland-eastern-shore`,\"name\":`University of Maryland Eastern Shore`,\"domain\":`umes.edu`},{\"id\":`south-carolina-state-university-hbcu`,\"name\":`South Carolina State University`,\"domain\":`scsu.edu`},{\"id\":`claflin-university`,\"name\":`Claflin University`,\"domain\":`claflin.edu`},{\"id\":`benedict-college`,\"name\":`Benedict College`,\"domain\":`benedict.edu`},{\"id\":`allen-university`,\"name\":`Allen University`,\"domain\":`allenuniversity.edu`},{\"id\":`savannah-state-university`,\"name\":`Savannah State University`,\"domain\":`savannahstate.edu`},{\"id\":`albany-state-university`,\"name\":`Albany State University`,\"domain\":`asurams.edu`},{\"id\":`fort-valley-state-university`,\"name\":`Fort Valley State University`,\"domain\":`fvsu.edu`},{\"id\":`alabama-am-university`,\"name\":`Alabama A\u0026M University`,\"domain\":`aamu.edu`},{\"id\":`alabama-state-university-hbcu`,\"name\":`Alabama State University`,\"domain\":`alasu.edu`},{\"id\":`miles-college`,\"name\":`Miles College`,\"domain\":`miles.edu`},{\"id\":`stillman-college`,\"name\":`Stillman College`,\"domain\":`stillman.edu`},{\"id\":`talladega-college`,\"name\":`Talladega College`,\"domain\":`talladega.edu`},{\"id\":`jackson-state-university-hbcu`,\"name\":`Jackson State University`,\"domain\":`jsums.edu`},{\"id\":`mississippi-valley-state-university`,\"name\":`Mississippi Valley State University`,\"domain\":`mvsu.edu`},{\"id\":`rust-college`,\"name\":`Rust College`,\"domain\":`rustcollege.edu`},{\"id\":`tougaloo-college`,\"name\":`Tougaloo College`,\"domain\":`tougaloo.edu`},{\"id\":`langston-university`,\"name\":`Langston University`,\"domain\":`langston.edu`},{\"id\":`central-state-university`,\"name\":`Central State University`,\"domain\":`centralstate.edu`},{\"id\":`wilberforce-university`,\"name\":`Wilberforce University`,\"domain\":`wilberforce.edu`},{\"id\":`lincoln-university-pa`,\"name\":`Lincoln University (PA)`,\"domain\":`lincoln.edu`},{\"id\":`cheyney-university`,\"name\":`Cheyney University`,\"domain\":`cheyney.edu`},{\"id\":`delaware-state-university-hbcu`,\"name\":`Delaware State University`,\"domain\":`desu.edu`},{\"id\":`university-of-the-district-of-columbia`,\"name\":`University of the District of Columbia`,\"domain\":`udc.edu`},{\"id\":`university-of-the-virgin-islands`,\"name\":`University of the Virgin Islands`,\"domain\":`uvi.edu`},{\"id\":`harris-stowe-state-university`,\"name\":`Harris-Stowe State University`,\"domain\":`hssu.edu`},{\"id\":`lincoln-university-mo`,\"name\":`Lincoln University (MO)`,\"domain\":`lincolnu.edu`},{\"id\":`kentucky-state-university`,\"name\":`Kentucky State University`,\"domain\":`kysu.edu`},{\"id\":`west-virginia-state-university`,\"name\":`West Virginia State University`,\"domain\":`wvstateu.edu`},{\"id\":`bluefield-state-university`,\"name\":`Bluefield State University`,\"domain\":`bluefieldstate.edu`},{\"id\":`meharry-medical-college`,\"name\":`Meharry Medical College`,\"domain\":`mmc.edu`},{\"id\":`lane-college`,\"name\":`Lane College`,\"domain\":`lanecollege.edu`},{\"id\":`le-moyne-owen-college`,\"name\":`LeMoyne-Owen College`,\"domain\":`loc.edu`},{\"id\":`philander-smith-university`,\"name\":`Philander Smith University`,\"domain\":`philander.edu`},{\"id\":`university-of-arkansas-pine-bluff`,\"name\":`University of Arkansas at Pine Bluff`,\"domain\":`uapb.edu`},{\"id\":`southern-university-new-orleans`,\"name\":`Southern University at New Orleans`,\"domain\":`suno.edu`},{\"id\":`us-military-academy`,\"name\":`United States Military Academy (West Point)`,\"domain\":`westpoint.edu`},{\"id\":`us-naval-academy`,\"name\":`United States Naval Academy`,\"domain\":`usna.edu`},{\"id\":`us-air-force-academy`,\"name\":`United States Air Force Academy`,\"domain\":`usafa.edu`},{\"id\":`us-coast-guard-academy`,\"name\":`United States Coast Guard Academy`,\"domain\":`uscga.edu`},{\"id\":`us-merchant-marine-academy`,\"name\":`United States Merchant Marine Academy`,\"domain\":`usmma.edu`},{\"id\":`norwich-university`,\"name\":`Norwich University`,\"domain\":`norwich.edu`},{\"id\":`risd`,\"name\":`Rhode Island School of Design`,\"domain\":`risd.edu`},{\"id\":`school-of-the-art-institute-of-chicago`,\"name\":`School of the Art Institute of Chicago`,\"domain\":`saic.edu`},{\"id\":`pratt-institute`,\"name\":`Pratt Institute`,\"domain\":`pratt.edu`},{\"id\":`parsons-school-of-design`,\"name\":`Parsons School of Design`,\"domain\":`newschool.edu`},{\"id\":`fashion-institute-of-technology`,\"name\":`Fashion Institute of Technology`,\"domain\":`fitnyc.edu`},{\"id\":`savannah-college-of-art-and-design`,\"name\":`Savannah College of Art and Design`,\"domain\":`scad.edu`},{\"id\":`california-institute-of-the-arts`,\"name\":`California Institute of the Arts`,\"domain\":`calarts.edu`},{\"id\":`maryland-institute-college-of-art`,\"name\":`Maryland Institute College of Art`,\"domain\":`mica.edu`},{\"id\":`school-of-visual-arts`,\"name\":`School of Visual Arts`,\"domain\":`sva.edu`},{\"id\":`otis-college-of-art-and-design`,\"name\":`Otis College of Art and Design`,\"domain\":`otis.edu`},{\"id\":`art-center-college-of-design`,\"name\":`ArtCenter College of Design`,\"domain\":`artcenter.edu`},{\"id\":`ringling-college`,\"name\":`Ringling College of Art and Design`,\"domain\":`ringling.edu`},{\"id\":`columbus-college-of-art-and-design`,\"name\":`Columbus College of Art \u0026 Design`,\"domain\":`ccad.edu`},{\"id\":`cranbrook-academy-of-art`,\"name\":`Cranbrook Academy of Art`,\"domain\":`cranbrook.edu`},{\"id\":`minneapolis-college-of-art-and-design`,\"name\":`Minneapolis College of Art and Design`,\"domain\":`mcad.edu`},{\"id\":`massachusetts-college-of-art`,\"name\":`Massachusetts College of Art and Design`,\"domain\":`massart.edu`},{\"id\":`moore-college-of-art`,\"name\":`Moore College of Art \u0026 Design`,\"domain\":`moore.edu`},{\"id\":`college-for-creative-studies`,\"name\":`College for Creative Studies`,\"domain\":`collegeforcreativestudies.edu`},{\"id\":`california-college-of-the-arts`,\"name\":`California College of the Arts`,\"domain\":`cca.edu`},{\"id\":`pacific-northwest-college-of-art`,\"name\":`Pacific Northwest College of Art`,\"domain\":`pnca.edu`},{\"id\":`cooper-union`,\"name\":`The Cooper Union`,\"domain\":`cooper.edu`},{\"id\":`juilliard-school`,\"name\":`The Juilliard School`,\"domain\":`juilliard.edu`},{\"id\":`berklee-college-of-music`,\"name\":`Berklee College of Music`,\"domain\":`berklee.edu`},{\"id\":`new-england-conservatory`,\"name\":`New England Conservatory`,\"domain\":`necmusic.edu`},{\"id\":`manhattan-school-of-music`,\"name\":`Manhattan School of Music`,\"domain\":`msmnyc.edu`},{\"id\":`peabody-institute`,\"name\":`Peabody Institute`,\"domain\":`peabody.jhu.edu`},{\"id\":`eastman-school-of-music`,\"name\":`Eastman School of Music`,\"domain\":`esm.rochester.edu`},{\"id\":`oberlin-conservatory`,\"name\":`Oberlin Conservatory of Music`,\"domain\":`oberlin.edu`},{\"id\":`curtis-institute-of-music`,\"name\":`Curtis Institute of Music`,\"domain\":`curtis.edu`},{\"id\":`san-francisco-conservatory`,\"name\":`San Francisco Conservatory of Music`,\"domain\":`sfcm.edu`},{\"id\":`mannes-school-of-music`,\"name\":`Mannes School of Music`,\"domain\":`newschool.edu`},{\"id\":`cleveland-institute-of-music`,\"name\":`Cleveland Institute of Music`,\"domain\":`cim.edu`},{\"id\":`colburn-school`,\"name\":`The Colburn School`,\"domain\":`colburnschool.edu`},{\"id\":`american-film-institute`,\"name\":`American Film Institute`,\"domain\":`afi.edu`},{\"id\":`georgia-tech`,\"name\":`Georgia Institute of Technology`,\"domain\":`gatech.edu`},{\"id\":`virginia-tech-eng`,\"name\":`Virginia Tech`,\"domain\":`vt.edu`},{\"id\":`rose-hulman-institute`,\"name\":`Rose-Hulman Institute of Technology`,\"domain\":`rose-hulman.edu`},{\"id\":`clarkson-university-eng`,\"name\":`Clarkson University`,\"domain\":`clarkson.edu`},{\"id\":`colorado-school-of-mines-eng`,\"name\":`Colorado School of Mines`,\"domain\":`mines.edu`},{\"id\":`new-mexico-tech`,\"name\":`New Mexico Institute of Mining and Technology`,\"domain\":`nmt.edu`},{\"id\":`south-dakota-mines`,\"name\":`South Dakota School of Mines and Technology`,\"domain\":`sdsmt.edu`},{\"id\":`kettering-university`,\"name\":`Kettering University`,\"domain\":`kettering.edu`},{\"id\":`olin-college-of-engineering`,\"name\":`Olin College of Engineering`,\"domain\":`olin.edu`},{\"id\":`milwaukee-school-of-engineering`,\"name\":`Milwaukee School of Engineering`,\"domain\":`msoe.edu`},{\"id\":`michigan-tech-eng`,\"name\":`Michigan Technological University`,\"domain\":`mtu.edu`},{\"id\":`rochester-institute-tech`,\"name\":`Rochester Institute of Technology`,\"domain\":`rit.edu`},{\"id\":`wentworth-institute`,\"name\":`Wentworth Institute of Technology`,\"domain\":`wit.edu`},{\"id\":`santa-monica-college`,\"name\":`Santa Monica College`,\"domain\":`smc.edu`},{\"id\":`pasadena-city-college`,\"name\":`Pasadena City College`,\"domain\":`pasadena.edu`},{\"id\":`de-anza-college`,\"name\":`De Anza College`,\"domain\":`deanza.edu`},{\"id\":`foothill-college`,\"name\":`Foothill College`,\"domain\":`foothill.edu`},{\"id\":`diablo-valley-college`,\"name\":`Diablo Valley College`,\"domain\":`dvc.edu`},{\"id\":`orange-coast-college`,\"name\":`Orange Coast College`,\"domain\":`orangecoastcollege.edu`},{\"id\":`el-camino-college`,\"name\":`El Camino College`,\"domain\":`elcamino.edu`},{\"id\":`glendale-community-college`,\"name\":`Glendale Community College`,\"domain\":`glendale.edu`},{\"id\":`mt-san-antonio-college`,\"name\":`Mt. San Antonio College`,\"domain\":`mtsac.edu`},{\"id\":`city-college-of-san-francisco`,\"name\":`City College of San Francisco`,\"domain\":`ccsf.edu`},{\"id\":`los-angeles-city-college`,\"name\":`Los Angeles City College`,\"domain\":`lacitycollege.edu`},{\"id\":`santa-barbara-city-college`,\"name\":`Santa Barbara City College`,\"domain\":`sbcc.edu`},{\"id\":`san-diego-mesa-college`,\"name\":`San Diego Mesa College`,\"domain\":`sdmesa.edu`},{\"id\":`irvine-valley-college`,\"name\":`Irvine Valley College`,\"domain\":`ivc.edu`},{\"id\":`santiago-canyon-college`,\"name\":`Santiago Canyon College`,\"domain\":`sccollege.edu`},{\"id\":`laguardia-community-college`,\"name\":`LaGuardia Community College`,\"domain\":`laguardia.edu`},{\"id\":`borough-of-manhattan-cc`,\"name\":`Borough of Manhattan Community College`,\"domain\":`bmcc.cuny.edu`},{\"id\":`bronx-community-college`,\"name\":`Bronx Community College`,\"domain\":`bcc.cuny.edu`},{\"id\":`kingsborough-community-college`,\"name\":`Kingsborough Community College`,\"domain\":`kbcc.cuny.edu`},{\"id\":`nassau-community-college`,\"name\":`Nassau Community College`,\"domain\":`ncc.edu`},{\"id\":`suffolk-county-community-college`,\"name\":`Suffolk County Community College`,\"domain\":`sunysuffolk.edu`},{\"id\":`westchester-community-college`,\"name\":`Westchester Community College`,\"domain\":`sunywcc.edu`},{\"id\":`austin-community-college`,\"name\":`Austin Community College`,\"domain\":`austincc.edu`},{\"id\":`houston-community-college`,\"name\":`Houston Community College`,\"domain\":`hccs.edu`},{\"id\":`dallas-college`,\"name\":`Dallas College`,\"domain\":`dcccd.edu`},{\"id\":`san-antonio-college`,\"name\":`San Antonio College`,\"domain\":`alamo.edu`},{\"id\":`tarrant-county-college`,\"name\":`Tarrant County College`,\"domain\":`tccd.edu`},{\"id\":`lone-star-college`,\"name\":`Lone Star College`,\"domain\":`lonestar.edu`},{\"id\":`collin-college`,\"name\":`Collin College`,\"domain\":`collin.edu`},{\"id\":`miami-dade-college`,\"name\":`Miami Dade College`,\"domain\":`mdc.edu`},{\"id\":`broward-college`,\"name\":`Broward College`,\"domain\":`broward.edu`},{\"id\":`valencia-college`,\"name\":`Valencia College`,\"domain\":`valenciacollege.edu`},{\"id\":`palm-beach-state-college`,\"name\":`Palm Beach State College`,\"domain\":`palmbeachstate.edu`},{\"id\":`hillsborough-community-college`,\"name\":`Hillsborough Community College`,\"domain\":`hccfl.edu`},{\"id\":`st-petersburg-college`,\"name\":`St. Petersburg College`,\"domain\":`spcollege.edu`},{\"id\":`seminole-state-college`,\"name\":`Seminole State College of Florida`,\"domain\":`seminolestate.edu`},{\"id\":`city-colleges-of-chicago`,\"name\":`City Colleges of Chicago`,\"domain\":`ccc.edu`},{\"id\":`college-of-dupage`,\"name\":`College of DuPage`,\"domain\":`cod.edu`},{\"id\":`harper-college`,\"name\":`Harper College`,\"domain\":`harpercollege.edu`},{\"id\":`moraine-valley-community-college`,\"name\":`Moraine Valley Community College`,\"domain\":`morainevalley.edu`},{\"id\":`elgin-community-college`,\"name\":`Elgin Community College`,\"domain\":`elgin.edu`},{\"id\":`northern-virginia-community-college`,\"name\":`Northern Virginia Community College`,\"domain\":`nvcc.edu`},{\"id\":`tidewater-community-college`,\"name\":`Tidewater Community College`,\"domain\":`tcc.edu`},{\"id\":`maricopa-community-colleges`,\"name\":`Maricopa Community Colleges`,\"domain\":`maricopa.edu`},{\"id\":`pima-community-college`,\"name\":`Pima Community College`,\"domain\":`pima.edu`},{\"id\":`bellevue-college`,\"name\":`Bellevue College`,\"domain\":`bellevuecollege.edu`},{\"id\":`seattle-central-college`,\"name\":`Seattle Central College`,\"domain\":`seattlecentral.edu`},{\"id\":`green-river-college`,\"name\":`Green River College`,\"domain\":`greenriver.edu`},{\"id\":`community-college-of-denver`,\"name\":`Community College of Denver`,\"domain\":`ccd.edu`},{\"id\":`community-college-of-philadelphia`,\"name\":`Community College of Philadelphia`,\"domain\":`ccp.edu`},{\"id\":`montgomery-county-community-college`,\"name\":`Montgomery County Community College`,\"domain\":`mc3.edu`},{\"id\":`bucks-county-community-college`,\"name\":`Bucks County Community College`,\"domain\":`bucks.edu`},{\"id\":`community-college-of-allegheny-county`,\"name\":`Community College of Allegheny County`,\"domain\":`ccac.edu`},{\"id\":`cuyahoga-community-college`,\"name\":`Cuyahoga Community College`,\"domain\":`tri-c.edu`},{\"id\":`columbus-state-community-college`,\"name\":`Columbus State Community College`,\"domain\":`cscc.edu`},{\"id\":`sinclair-community-college`,\"name\":`Sinclair Community College`,\"domain\":`sinclair.edu`},{\"id\":`community-college-of-rhode-island`,\"name\":`Community College of Rhode Island`,\"domain\":`ccri.edu`},{\"id\":`middlesex-community-college`,\"name\":`Middlesex Community College`,\"domain\":`middlesex.mass.edu`},{\"id\":`bunker-hill-community-college`,\"name\":`Bunker Hill Community College`,\"domain\":`bhcc.edu`},{\"id\":`montgomery-college`,\"name\":`Montgomery College`,\"domain\":`montgomerycollege.edu`},{\"id\":`prince-georges-community-college`,\"name\":`Prince George's Community College`,\"domain\":`pgcc.edu`},{\"id\":`anne-arundel-community-college`,\"name\":`Anne Arundel Community College`,\"domain\":`aacc.edu`},{\"id\":`bergen-community-college`,\"name\":`Bergen Community College`,\"domain\":`bergen.edu`},{\"id\":`county-college-of-morris`,\"name\":`County College of Morris`,\"domain\":`ccm.edu`},{\"id\":`raritan-valley-community-college`,\"name\":`Raritan Valley Community College`,\"domain\":`raritanval.edu`},{\"id\":`ivy-tech-community-college`,\"name\":`Ivy Tech Community College`,\"domain\":`ivytech.edu`},{\"id\":`grand-rapids-community-college`,\"name\":`Grand Rapids Community College`,\"domain\":`grcc.edu`},{\"id\":`washtenaw-community-college`,\"name\":`Washtenaw Community College`,\"domain\":`wccnet.edu`},{\"id\":`henry-ford-college`,\"name\":`Henry Ford College`,\"domain\":`hfcc.edu`},{\"id\":`madison-college`,\"name\":`Madison Area Technical College`,\"domain\":`madisoncollege.edu`},{\"id\":`central-piedmont-community-college`,\"name\":`Central Piedmont Community College`,\"domain\":`cpcc.edu`},{\"id\":`wake-technical-community-college`,\"name\":`Wake Technical Community College`,\"domain\":`waketech.edu`},{\"id\":`guilford-technical-community-college`,\"name\":`Guilford Technical Community College`,\"domain\":`gtcc.edu`},{\"id\":`university-of-hartford`,\"name\":`University of Hartford`,\"domain\":`hartford.edu`},{\"id\":`sacred-heart-university`,\"name\":`Sacred Heart University`,\"domain\":`sacredheart.edu`},{\"id\":`university-of-new-haven`,\"name\":`University of New Haven`,\"domain\":`newhaven.edu`},{\"id\":`western-new-england-university`,\"name\":`Western New England University`,\"domain\":`wne.edu`},{\"id\":`university-of-bridgeport`,\"name\":`University of Bridgeport`,\"domain\":`bridgeport.edu`},{\"id\":`roger-williams-university`,\"name\":`Roger Williams University`,\"domain\":`rwu.edu`},{\"id\":`salve-regina-university`,\"name\":`Salve Regina University`,\"domain\":`salve.edu`},{\"id\":`stonehill-college`,\"name\":`Stonehill College`,\"domain\":`stonehill.edu`},{\"id\":`assumption-university`,\"name\":`Assumption University`,\"domain\":`assumption.edu`},{\"id\":`merrimack-college`,\"name\":`Merrimack College`,\"domain\":`merrimack.edu`},{\"id\":`endicott-college`,\"name\":`Endicott College`,\"domain\":`endicott.edu`},{\"id\":`wentworth-institute-of-technology`,\"name\":`Wentworth Institute of Technology`,\"domain\":`wit.edu`},{\"id\":`babson-college`,\"name\":`Babson College`,\"domain\":`babson.edu`},{\"id\":`olin-college`,\"name\":`Olin College of Engineering`,\"domain\":`olin.edu`},{\"id\":`franklin-pierce-university`,\"name\":`Franklin Pierce University`,\"domain\":`franklinpierce.edu`},{\"id\":`university-of-new-england`,\"name\":`University of New England`,\"domain\":`une.edu`},{\"id\":`saint-josephs-university`,\"name\":`Saint Joseph's University`,\"domain\":`sju.edu`},{\"id\":`la-salle-university`,\"name\":`La Salle University`,\"domain\":`lasalle.edu`},{\"id\":`widener-university`,\"name\":`Widener University`,\"domain\":`widener.edu`},{\"id\":`robert-morris-university`,\"name\":`Robert Morris University`,\"domain\":`rmu.edu`},{\"id\":`chatham-university`,\"name\":`Chatham University`,\"domain\":`chatham.edu`},{\"id\":`point-park-university`,\"name\":`Point Park University`,\"domain\":`pointpark.edu`},{\"id\":`gannon-university`,\"name\":`Gannon University`,\"domain\":`gannon.edu`},{\"id\":`mercyhurst-university`,\"name\":`Mercyhurst University`,\"domain\":`mercyhurst.edu`},{\"id\":`james-madison-university-va`,\"name\":`James Madison University`,\"domain\":`jmu.edu`},{\"id\":`christopher-newport-university`,\"name\":`Christopher Newport University`,\"domain\":`cnu.edu`},{\"id\":`regent-university`,\"name\":`Regent University`,\"domain\":`regent.edu`},{\"id\":`lynn-university`,\"name\":`Lynn University`,\"domain\":`lynn.edu`},{\"id\":`nova-southeastern-university`,\"name\":`Nova Southeastern University`,\"domain\":`nova.edu`},{\"id\":`university-of-tampa`,\"name\":`University of Tampa`,\"domain\":`ut.edu`},{\"id\":`embry-riddle-aeronautical-university`,\"name\":`Embry-Riddle Aeronautical University`,\"domain\":`erau.edu`},{\"id\":`jacksonville-university`,\"name\":`Jacksonville University`,\"domain\":`ju.edu`},{\"id\":`flagler-college`,\"name\":`Flagler College`,\"domain\":`flagler.edu`},{\"id\":`barry-university`,\"name\":`Barry University`,\"domain\":`barry.edu`},{\"id\":`oglethorpe-university`,\"name\":`Oglethorpe University`,\"domain\":`oglethorpe.edu`},{\"id\":`university-of-montevallo`,\"name\":`University of Montevallo`,\"domain\":`montevallo.edu`},{\"id\":`spring-hill-college`,\"name\":`Spring Hill College`,\"domain\":`shc.edu`},{\"id\":`birmingham-southern-college`,\"name\":`Birmingham-Southern College`,\"domain\":`bsc.edu`},{\"id\":`mississippi-college`,\"name\":`Mississippi College`,\"domain\":`mc.edu`},{\"id\":`university-of-the-ozarks`,\"name\":`University of the Ozarks`,\"domain\":`ozarks.edu`},{\"id\":`harding-university`,\"name\":`Harding University`,\"domain\":`harding.edu`},{\"id\":`john-brown-university`,\"name\":`John Brown University`,\"domain\":`jbu.edu`},{\"id\":`lipscomb-university`,\"name\":`Lipscomb University`,\"domain\":`lipscomb.edu`},{\"id\":`union-university`,\"name\":`Union University`,\"domain\":`uu.edu`},{\"id\":`lee-university`,\"name\":`Lee University`,\"domain\":`leeuniversity.edu`},{\"id\":`carson-newman-university`,\"name\":`Carson-Newman University`,\"domain\":`cn.edu`},{\"id\":`furman-university-sc`,\"name\":`Furman University`,\"domain\":`furman.edu`},{\"id\":`presbyterian-college`,\"name\":`Presbyterian College`,\"domain\":`presby.edu`},{\"id\":`erskine-college`,\"name\":`Erskine College`,\"domain\":`erskine.edu`},{\"id\":`converse-university`,\"name\":`Converse University`,\"domain\":`converse.edu`},{\"id\":`high-point-university`,\"name\":`High Point University`,\"domain\":`highpoint.edu`},{\"id\":`campbell-university`,\"name\":`Campbell University`,\"domain\":`campbell.edu`},{\"id\":`gardner-webb-university`,\"name\":`Gardner-Webb University`,\"domain\":`gardner-webb.edu`},{\"id\":`elon-university-nc`,\"name\":`Elon University`,\"domain\":`elon.edu`},{\"id\":`meredith-college`,\"name\":`Meredith College`,\"domain\":`meredith.edu`},{\"id\":`guilford-college`,\"name\":`Guilford College`,\"domain\":`guilford.edu`},{\"id\":`lenoir-rhyne-university`,\"name\":`Lenoir-Rhyne University`,\"domain\":`lr.edu`},{\"id\":`lees-mcrae-college`,\"name\":`Lees-McRae College`,\"domain\":`lmc.edu`},{\"id\":`regent-university-va`,\"name\":`Regent University`,\"domain\":`regent.edu`},{\"id\":`shenandoah-university`,\"name\":`Shenandoah University`,\"domain\":`su.edu`},{\"id\":`roanoke-college`,\"name\":`Roanoke College`,\"domain\":`roanoke.edu`},{\"id\":`randolph-macon-college`,\"name\":`Randolph-Macon College`,\"domain\":`rmc.edu`},{\"id\":`hampden-sydney-college`,\"name\":`Hampden-Sydney College`,\"domain\":`hsc.edu`},{\"id\":`bridgewater-college`,\"name\":`Bridgewater College`,\"domain\":`bridgewater.edu`},{\"id\":`mary-baldwin-university`,\"name\":`Mary Baldwin University`,\"domain\":`marybaldwin.edu`},{\"id\":`hollins-university`,\"name\":`Hollins University`,\"domain\":`hollins.edu`},{\"id\":`university-of-lynchburg`,\"name\":`University of Lynchburg`,\"domain\":`lynchburg.edu`},{\"id\":`emory-henry-university`,\"name\":`Emory \u0026 Henry University`,\"domain\":`ehc.edu`},{\"id\":`ferris-state-university`,\"name\":`Ferris State University`,\"domain\":`ferris.edu`},{\"id\":`northern-michigan-university`,\"name\":`Northern Michigan University`,\"domain\":`nmu.edu`},{\"id\":`saginaw-valley-state-university`,\"name\":`Saginaw Valley State University`,\"domain\":`svsu.edu`},{\"id\":`lake-superior-state-university`,\"name\":`Lake Superior State University`,\"domain\":`lssu.edu`},{\"id\":`calvin-university`,\"name\":`Calvin University`,\"domain\":`calvin.edu`},{\"id\":`aquinas-college`,\"name\":`Aquinas College`,\"domain\":`aquinas.edu`},{\"id\":`adrian-college`,\"name\":`Adrian College`,\"domain\":`adrian.edu`},{\"id\":`alma-college`,\"name\":`Alma College`,\"domain\":`alma.edu`},{\"id\":`olivet-college`,\"name\":`Olivet College`,\"domain\":`olivetcollege.edu`},{\"id\":`winona-state-university`,\"name\":`Winona State University`,\"domain\":`winona.edu`},{\"id\":`bemidji-state-university`,\"name\":`Bemidji State University`,\"domain\":`bemidjistate.edu`},{\"id\":`gustavus-adolphus-college`,\"name\":`Gustavus Adolphus College`,\"domain\":`gustavus.edu`},{\"id\":`concordia-college-moorhead`,\"name\":`Concordia College`,\"domain\":`concordiacollege.edu`},{\"id\":`bethel-university-mn`,\"name\":`Bethel University`,\"domain\":`bethel.edu`},{\"id\":`hamline-university`,\"name\":`Hamline University`,\"domain\":`hamline.edu`},{\"id\":`augsburg-university`,\"name\":`Augsburg University`,\"domain\":`augsburg.edu`},{\"id\":`college-of-st-benedict-st-johns`,\"name\":`College of Saint Benedict / Saint John's University`,\"domain\":`csbsju.edu`},{\"id\":`wartburg-college`,\"name\":`Wartburg College`,\"domain\":`wartburg.edu`},{\"id\":`luther-college`,\"name\":`Luther College`,\"domain\":`luther.edu`},{\"id\":`coe-college`,\"name\":`Coe College`,\"domain\":`coe.edu`},{\"id\":`cornell-college-ia`,\"name\":`Cornell College`,\"domain\":`cornellcollege.edu`},{\"id\":`central-college-ia`,\"name\":`Central College`,\"domain\":`central.edu`},{\"id\":`simpson-college`,\"name\":`Simpson College`,\"domain\":`simpson.edu`},{\"id\":`loras-college`,\"name\":`Loras College`,\"domain\":`loras.edu`},{\"id\":`truman-state-university`,\"name\":`Truman State University`,\"domain\":`truman.edu`},{\"id\":`northwest-missouri-state`,\"name\":`Northwest Missouri State University`,\"domain\":`nwmissouri.edu`},{\"id\":`southeast-missouri-state`,\"name\":`Southeast Missouri State University`,\"domain\":`semo.edu`},{\"id\":`missouri-western-state`,\"name\":`Missouri Western State University`,\"domain\":`missouriwestern.edu`},{\"id\":`pittsburg-state-university`,\"name\":`Pittsburg State University`,\"domain\":`pittstate.edu`},{\"id\":`emporia-state-university`,\"name\":`Emporia State University`,\"domain\":`emporia.edu`},{\"id\":`fort-hays-state-university`,\"name\":`Fort Hays State University`,\"domain\":`fhsu.edu`},{\"id\":`washburn-university`,\"name\":`Washburn University`,\"domain\":`washburn.edu`},{\"id\":`baker-university`,\"name\":`Baker University`,\"domain\":`bakeru.edu`},{\"id\":`nebraska-wesleyan-university`,\"name\":`Nebraska Wesleyan University`,\"domain\":`nebrwesleyan.edu`},{\"id\":`hastings-college`,\"name\":`Hastings College`,\"domain\":`hastings.edu`},{\"id\":`doane-university`,\"name\":`Doane University`,\"domain\":`doane.edu`},{\"id\":`augustana-university-sd`,\"name\":`Augustana University`,\"domain\":`augie.edu`},{\"id\":`northern-state-university`,\"name\":`Northern State University`,\"domain\":`northern.edu`},{\"id\":`black-hills-state-university`,\"name\":`Black Hills State University`,\"domain\":`bhsu.edu`},{\"id\":`university-of-mary`,\"name\":`University of Mary`,\"domain\":`umary.edu`},{\"id\":`dickinson-state-university`,\"name\":`Dickinson State University`,\"domain\":`dickinsonstate.edu`},{\"id\":`minot-state-university`,\"name\":`Minot State University`,\"domain\":`minotstateu.edu`},{\"id\":`montana-state-billings`,\"name\":`Montana State University Billings`,\"domain\":`msubillings.edu`},{\"id\":`carroll-college`,\"name\":`Carroll College`,\"domain\":`carroll.edu`},{\"id\":`rocky-mountain-college`,\"name\":`Rocky Mountain College`,\"domain\":`rocky.edu`},{\"id\":`university-of-great-falls`,\"name\":`University of Providence`,\"domain\":`uprovidence.edu`},{\"id\":`boise-state-university-2`,\"name\":`Boise State University`,\"domain\":`boisestate.edu`},{\"id\":`college-of-idaho`,\"name\":`College of Idaho`,\"domain\":`collegeofidaho.edu`},{\"id\":`northwest-nazarene-university`,\"name\":`Northwest Nazarene University`,\"domain\":`nnu.edu`},{\"id\":`utah-valley-university`,\"name\":`Utah Valley University`,\"domain\":`uvu.edu`},{\"id\":`dixie-state-university`,\"name\":`Utah Tech University`,\"domain\":`utahtech.edu`},{\"id\":`westminster-university-ut`,\"name\":`Westminster University`,\"domain\":`westminsteru.edu`},{\"id\":`regis-university`,\"name\":`Regis University`,\"domain\":`regis.edu`},{\"id\":`colorado-mesa-university`,\"name\":`Colorado Mesa University`,\"domain\":`coloradomesa.edu`},{\"id\":`western-colorado-university`,\"name\":`Western Colorado University`,\"domain\":`western.edu`},{\"id\":`adams-state-university`,\"name\":`Adams State University`,\"domain\":`adams.edu`},{\"id\":`colorado-state-pueblo`,\"name\":`Colorado State University Pueblo`,\"domain\":`csupueblo.edu`},{\"id\":`fort-lewis-college`,\"name\":`Fort Lewis College`,\"domain\":`fortlewis.edu`},{\"id\":`university-of-wyoming-2`,\"name\":`University of Wyoming`,\"domain\":`uwyo.edu`},{\"id\":`walla-walla-university`,\"name\":`Walla Walla University`,\"domain\":`wallawalla.edu`},{\"id\":`pacific-lutheran-university`,\"name\":`Pacific Lutheran University`,\"domain\":`plu.edu`},{\"id\":`saint-martins-university`,\"name\":`Saint Martin's University`,\"domain\":`stmartin.edu`},{\"id\":`george-fox-university`,\"name\":`George Fox University`,\"domain\":`georgefox.edu`},{\"id\":`corban-university`,\"name\":`Corban University`,\"domain\":`corban.edu`},{\"id\":`southern-oregon-university`,\"name\":`Southern Oregon University`,\"domain\":`sou.edu`},{\"id\":`western-oregon-university`,\"name\":`Western Oregon University`,\"domain\":`wou.edu`},{\"id\":`eastern-oregon-university`,\"name\":`Eastern Oregon University`,\"domain\":`eou.edu`},{\"id\":`oregon-institute-of-technology`,\"name\":`Oregon Institute of Technology`,\"domain\":`oit.edu`},{\"id\":`university-of-redlands`,\"name\":`University of Redlands`,\"domain\":`redlands.edu`},{\"id\":`university-of-la-verne`,\"name\":`University of La Verne`,\"domain\":`laverne.edu`},{\"id\":`azusa-pacific-university`,\"name\":`Azusa Pacific University`,\"domain\":`apu.edu`},{\"id\":`biola-university`,\"name\":`Biola University`,\"domain\":`biola.edu`},{\"id\":`point-loma-nazarene-university`,\"name\":`Point Loma Nazarene University`,\"domain\":`pointloma.edu`},{\"id\":`university-of-san-diego-2`,\"name\":`University of San Diego`,\"domain\":`sandiego.edu`},{\"id\":`california-lutheran-university`,\"name\":`California Lutheran University`,\"domain\":`callutheran.edu`},{\"id\":`westmont-college`,\"name\":`Westmont College`,\"domain\":`westmont.edu`},{\"id\":`mills-college`,\"name\":`Mills College`,\"domain\":`mills.edu`},{\"id\":`university-of-the-pacific-2`,\"name\":`University of the Pacific`,\"domain\":`pacific.edu`},{\"id\":`saint-marys-college-ca`,\"name\":`Saint Mary's College of California`,\"domain\":`stmarys-ca.edu`},{\"id\":`dominican-university-of-california`,\"name\":`Dominican University of California`,\"domain\":`dominican.edu`},{\"id\":`fresno-pacific-university`,\"name\":`Fresno Pacific University`,\"domain\":`fresno.edu`},{\"id\":`hawaii-pacific-university`,\"name\":`Hawaii Pacific University`,\"domain\":`hpu.edu`},{\"id\":`chaminade-university`,\"name\":`Chaminade University of Honolulu`,\"domain\":`chaminade.edu`},{\"id\":`university-of-alaska-southeast`,\"name\":`University of Alaska Southeast`,\"domain\":`uas.alaska.edu`},{\"id\":`grand-canyon-university`,\"name\":`Grand Canyon University`,\"domain\":`gcu.edu`},{\"id\":`embry-riddle-prescott`,\"name\":`Embry-Riddle Aeronautical University (Prescott)`,\"domain\":`erau.edu`},{\"id\":`new-mexico-highlands-university`,\"name\":`New Mexico Highlands University`,\"domain\":`nmhu.edu`},{\"id\":`western-new-mexico-university`,\"name\":`Western New Mexico University`,\"domain\":`wnmu.edu`},{\"id\":`eastern-new-mexico-university`,\"name\":`Eastern New Mexico University`,\"domain\":`enmu.edu`},{\"id\":`st-edwards-university`,\"name\":`St. Edward's University`,\"domain\":`stedwards.edu`},{\"id\":`university-of-incarnate-word`,\"name\":`University of the Incarnate Word`,\"domain\":`uiw.edu`},{\"id\":`our-lady-of-the-lake-university`,\"name\":`Our Lady of the Lake University`,\"domain\":`ollusa.edu`},{\"id\":`hardin-simmons-university`,\"name\":`Hardin-Simmons University`,\"domain\":`hsutx.edu`},{\"id\":`midwestern-state-university`,\"name\":`Midwestern State University`,\"domain\":`msutexas.edu`},{\"id\":`angelo-state-university`,\"name\":`Angelo State University`,\"domain\":`angelo.edu`},{\"id\":`west-texas-am-university`,\"name\":`West Texas A\u0026M University`,\"domain\":`wtamu.edu`},{\"id\":`texas-am-commerce`,\"name\":`Texas A\u0026M University-Commerce`,\"domain\":`tamuc.edu`},{\"id\":`texas-am-corpus-christi`,\"name\":`Texas A\u0026M University-Corpus Christi`,\"domain\":`tamucc.edu`},{\"id\":`texas-am-kingsville`,\"name\":`Texas A\u0026M University-Kingsville`,\"domain\":`tamuk.edu`},{\"id\":`texas-am-international`,\"name\":`Texas A\u0026M International University`,\"domain\":`tamiu.edu`},{\"id\":`university-of-north-texas-dallas`,\"name\":`University of North Texas at Dallas`,\"domain\":`untdallas.edu`},{\"id\":`southeastern-louisiana-university`,\"name\":`Southeastern Louisiana University`,\"domain\":`southeastern.edu`},{\"id\":`mcneese-state-university`,\"name\":`McNeese State University`,\"domain\":`mcneese.edu`},{\"id\":`northwestern-state-university`,\"name\":`Northwestern State University`,\"domain\":`nsula.edu`},{\"id\":`nicholls-state-university`,\"name\":`Nicholls State University`,\"domain\":`nicholls.edu`},{\"id\":`centenary-college-of-louisiana`,\"name\":`Centenary College of Louisiana`,\"domain\":`centenary.edu`},{\"id\":`hendrix-college-ar`,\"name\":`Hendrix College`,\"domain\":`hendrix.edu`},{\"id\":`ouachita-baptist-university`,\"name\":`Ouachita Baptist University`,\"domain\":`obu.edu`},{\"id\":`lyon-college`,\"name\":`Lyon College`,\"domain\":`lyon.edu`},{\"id\":`university-of-central-oklahoma`,\"name\":`University of Central Oklahoma`,\"domain\":`uco.edu`},{\"id\":`northeastern-state-university`,\"name\":`Northeastern State University`,\"domain\":`nsuok.edu`},{\"id\":`southeastern-oklahoma-state`,\"name\":`Southeastern Oklahoma State University`,\"domain\":`se.edu`},{\"id\":`cameron-university`,\"name\":`Cameron University`,\"domain\":`cameron.edu`},{\"id\":`oral-roberts-university`,\"name\":`Oral Roberts University`,\"domain\":`oru.edu`},{\"id\":`oklahoma-city-university`,\"name\":`Oklahoma City University`,\"domain\":`okcu.edu`},{\"id\":`university-of-science-arts-oklahoma`,\"name\":`University of Science and Arts of Oklahoma`,\"domain\":`usao.edu`},{\"id\":`transylvania-university`,\"name\":`Transylvania University`,\"domain\":`transy.edu`},{\"id\":`berea-college`,\"name\":`Berea College`,\"domain\":`berea.edu`},{\"id\":`centre-college-ky`,\"name\":`Centre College`,\"domain\":`centre.edu`},{\"id\":`northern-kentucky-university`,\"name\":`Northern Kentucky University`,\"domain\":`nku.edu`},{\"id\":`bellarmine-university`,\"name\":`Bellarmine University`,\"domain\":`bellarmine.edu`},{\"id\":`asbury-university`,\"name\":`Asbury University`,\"domain\":`asbury.edu`},{\"id\":`alice-lloyd-college`,\"name\":`Alice Lloyd College`,\"domain\":`alc.edu`},{\"id\":`concord-university`,\"name\":`Concord University`,\"domain\":`concord.edu`},{\"id\":`shepherd-university`,\"name\":`Shepherd University`,\"domain\":`shepherd.edu`},{\"id\":`fairmont-state-university`,\"name\":`Fairmont State University`,\"domain\":`fairmontstate.edu`},{\"id\":`west-liberty-university`,\"name\":`West Liberty University`,\"domain\":`westliberty.edu`},{\"id\":`wheeling-university`,\"name\":`Wheeling University`,\"domain\":`wheeling.edu`},{\"id\":`ohio-northern-university`,\"name\":`Ohio Northern University`,\"domain\":`onu.edu`},{\"id\":`ohio-wesleyan-university`,\"name\":`Ohio Wesleyan University`,\"domain\":`owu.edu`},{\"id\":`wittenberg-university`,\"name\":`Wittenberg University`,\"domain\":`wittenberg.edu`},{\"id\":`otterbein-university`,\"name\":`Otterbein University`,\"domain\":`otterbein.edu`},{\"id\":`capital-university`,\"name\":`Capital University`,\"domain\":`capital.edu`},{\"id\":`baldwin-wallace-university`,\"name\":`Baldwin Wallace University`,\"domain\":`bw.edu`},{\"id\":`john-carroll-university`,\"name\":`John Carroll University`,\"domain\":`jcu.edu`},{\"id\":`university-of-findlay`,\"name\":`University of Findlay`,\"domain\":`findlay.edu`},{\"id\":`heidelberg-university`,\"name\":`Heidelberg University`,\"domain\":`heidelberg.edu`},{\"id\":`marietta-college`,\"name\":`Marietta College`,\"domain\":`marietta.edu`},{\"id\":`muskingum-university`,\"name\":`Muskingum University`,\"domain\":`muskingum.edu`},{\"id\":`hiram-college`,\"name\":`Hiram College`,\"domain\":`hiram.edu`},{\"id\":`earlham-college`,\"name\":`Earlham College`,\"domain\":`earlham.edu`},{\"id\":`hanover-college`,\"name\":`Hanover College`,\"domain\":`hanover.edu`},{\"id\":`franklin-college`,\"name\":`Franklin College`,\"domain\":`franklincollege.edu`},{\"id\":`manchester-university`,\"name\":`Manchester University`,\"domain\":`manchester.edu`},{\"id\":`saint-marys-college-in`,\"name\":`Saint Mary's College`,\"domain\":`saintmarys.edu`},{\"id\":`university-of-evansville`,\"name\":`University of Evansville`,\"domain\":`evansville.edu`},{\"id\":`rose-hulman-in`,\"name\":`Rose-Hulman Institute of Technology`,\"domain\":`rose-hulman.edu`},{\"id\":`purdue-fort-wayne`,\"name\":`Purdue University Fort Wayne`,\"domain\":`pfw.edu`},{\"id\":`purdue-northwest`,\"name\":`Purdue University Northwest`,\"domain\":`pnw.edu`},{\"id\":`university-of-southern-indiana`,\"name\":`University of Southern Indiana`,\"domain\":`usi.edu`},{\"id\":`taylor-university`,\"name\":`Taylor University`,\"domain\":`taylor.edu`},{\"id\":`carthage-college`,\"name\":`Carthage College`,\"domain\":`carthage.edu`},{\"id\":`carroll-university-wi`,\"name\":`Carroll University`,\"domain\":`carrollu.edu`},{\"id\":`edgewood-college`,\"name\":`Edgewood College`,\"domain\":`edgewood.edu`},{\"id\":`concordia-university-wisconsin`,\"name\":`Concordia University Wisconsin`,\"domain\":`cuw.edu`},{\"id\":`alverno-college`,\"name\":`Alverno College`,\"domain\":`alverno.edu`},{\"id\":`st-norbert-college`,\"name\":`St. Norbert College`,\"domain\":`snc.edu`},{\"id\":`college-of-charleston-2`,\"name\":`College of Charleston`,\"domain\":`cofc.edu`},{\"id\":`university-of-new-orleans`,\"name\":`University of New Orleans`,\"domain\":`uno.edu`},{\"id\":`rockefeller-university`,\"name\":`Rockefeller University`,\"domain\":`rockefeller.edu`},{\"id\":`mayo-clinic-graduate-school`,\"name\":`Mayo Clinic College of Medicine`,\"domain\":`mayo.edu`},{\"id\":`icahn-school-of-medicine`,\"name\":`Icahn School of Medicine at Mount Sinai`,\"domain\":`mssm.edu`},{\"id\":`albert-einstein-college-medicine`,\"name\":`Albert Einstein College of Medicine`,\"domain\":`einsteinmed.edu`},{\"id\":`baylor-college-of-medicine`,\"name\":`Baylor College of Medicine`,\"domain\":`bcm.edu`},{\"id\":`medical-college-of-wisconsin`,\"name\":`Medical College of Wisconsin`,\"domain\":`mcw.edu`},{\"id\":`rush-university`,\"name\":`Rush University`,\"domain\":`rushu.rush.edu`},{\"id\":`rosalind-franklin-university`,\"name\":`Rosalind Franklin University`,\"domain\":`rosalindfranklin.edu`},{\"id\":`uniformed-services-university`,\"name\":`Uniformed Services University`,\"domain\":`usuhs.edu`},{\"id\":`suny-college-at-old-westbury`,\"name\":`SUNY College at Old Westbury`,\"domain\":`oldwestbury.edu`},{\"id\":`suny-buffalo-state`,\"name\":`SUNY Buffalo State University`,\"domain\":`buffalostate.edu`},{\"id\":`cuny-college-of-staten-island`,\"name\":`College of Staten Island`,\"domain\":`csi.cuny.edu`},{\"id\":`cuny-york-college`,\"name\":`York College`,\"domain\":`york.cuny.edu`},{\"id\":`cuny-medgar-evers`,\"name\":`Medgar Evers College`,\"domain\":`mec.cuny.edu`},{\"id\":`new-york-institute-of-technology`,\"name\":`New York Institute of Technology`,\"domain\":`nyit.edu`},{\"id\":`long-island-university`,\"name\":`Long Island University`,\"domain\":`liu.edu`},{\"id\":`wagner-college`,\"name\":`Wagner College`,\"domain\":`wagner.edu`},{\"id\":`daemen-university`,\"name\":`Daemen University`,\"domain\":`daemen.edu`},{\"id\":`siena-college`,\"name\":`Siena College`,\"domain\":`siena.edu`},{\"id\":`the-college-of-saint-rose`,\"name\":`The College of Saint Rose`,\"domain\":`strose.edu`},{\"id\":`rpi-eng`,\"name\":`Rensselaer Polytechnic Institute`,\"domain\":`rpi.edu`},{\"id\":`university-of-vermont-2`,\"name\":`University of Vermont`,\"domain\":`uvm.edu`},{\"id\":`norwich-university-vt`,\"name\":`Norwich University`,\"domain\":`norwich.edu`},{\"id\":`champlain-college`,\"name\":`Champlain College`,\"domain\":`champlain.edu`},{\"id\":`saint-michaels-college`,\"name\":`Saint Michael's College`,\"domain\":`smcvt.edu`},{\"id\":`keene-state-college`,\"name\":`Keene State College`,\"domain\":`keene.edu`},{\"id\":`plymouth-state-university`,\"name\":`Plymouth State University`,\"domain\":`plymouth.edu`},{\"id\":`southern-new-hampshire-university`,\"name\":`Southern New Hampshire University`,\"domain\":`snhu.edu`},{\"id\":`saint-anselm-college`,\"name\":`Saint Anselm College`,\"domain\":`anselm.edu`},{\"id\":`colby-sawyer-college`,\"name\":`Colby-Sawyer College`,\"domain\":`colby-sawyer.edu`},{\"id\":`husson-university`,\"name\":`Husson University`,\"domain\":`husson.edu`},{\"id\":`university-of-maine-farmington`,\"name\":`University of Maine at Farmington`,\"domain\":`umf.maine.edu`},{\"id\":`thomas-college`,\"name\":`Thomas College`,\"domain\":`thomas.edu`},{\"id\":`university-of-southern-maine`,\"name\":`University of Southern Maine`,\"domain\":`usm.maine.edu`},{\"id\":`fairleigh-dickinson-university`,\"name\":`Fairleigh Dickinson University`,\"domain\":`fdu.edu`},{\"id\":`stockton-university`,\"name\":`Stockton University`,\"domain\":`stockton.edu`},{\"id\":`kean-university`,\"name\":`Kean University`,\"domain\":`kean.edu`},{\"id\":`william-paterson-university`,\"name\":`William Paterson University`,\"domain\":`wpunj.edu`},{\"id\":`ramapo-college`,\"name\":`Ramapo College of New Jersey`,\"domain\":`ramapo.edu`},{\"id\":`new-jersey-city-university`,\"name\":`New Jersey City University`,\"domain\":`njcu.edu`},{\"id\":`drew-university`,\"name\":`Drew University`,\"domain\":`drew.edu`},{\"id\":`monmouth-university`,\"name\":`Monmouth University`,\"domain\":`monmouth.edu`},{\"id\":`saint-peters-university`,\"name\":`Saint Peter's University`,\"domain\":`saintpeters.edu`},{\"id\":`felician-university`,\"name\":`Felician University`,\"domain\":`felician.edu`},{\"id\":`georgia-college-state-university`,\"name\":`Georgia College \u0026 State University`,\"domain\":`gcsu.edu`},{\"id\":`columbus-state-university`,\"name\":`Columbus State University`,\"domain\":`columbusstate.edu`},{\"id\":`armstrong-state-university`,\"name\":`Georgia Southern University - Armstrong`,\"domain\":`georgiasouthern.edu`},{\"id\":`middle-georgia-state-university`,\"name\":`Middle Georgia State University`,\"domain\":`mga.edu`},{\"id\":`university-of-north-georgia`,\"name\":`University of North Georgia`,\"domain\":`ung.edu`},{\"id\":`gordon-state-college`,\"name\":`Gordon State College`,\"domain\":`gordonstate.edu`},{\"id\":`dalton-state-college`,\"name\":`Dalton State College`,\"domain\":`daltonstate.edu`},{\"id\":`covenant-college`,\"name\":`Covenant College`,\"domain\":`covenant.edu`},{\"id\":`piedmont-university`,\"name\":`Piedmont University`,\"domain\":`piedmont.edu`},{\"id\":`shorter-university`,\"name\":`Shorter University`,\"domain\":`shorter.edu`},{\"id\":`toccoa-falls-college`,\"name\":`Toccoa Falls College`,\"domain\":`tfc.edu`},{\"id\":`young-harris-college`,\"name\":`Young Harris College`,\"domain\":`yhc.edu`},{\"id\":`university-of-wisconsin-parkside-2`,\"name\":`University of Wisconsin-Parkside`,\"domain\":`uwp.edu`},{\"id\":`suny-maritime-college`,\"name\":`SUNY Maritime College`,\"domain\":`sunymaritime.edu`},{\"id\":`webb-institute`,\"name\":`Webb Institute`,\"domain\":`webb.edu`},{\"id\":`thomas-jefferson-university`,\"name\":`Thomas Jefferson University`,\"domain\":`jefferson.edu`},{\"id\":`philadelphia-university`,\"name\":`Thomas Jefferson University (Philadelphia)`,\"domain\":`jefferson.edu`},{\"id\":`university-of-the-sciences`,\"name\":`University of the Sciences`,\"domain\":`usciences.edu`},{\"id\":`salus-university`,\"name\":`Salus University`,\"domain\":`salus.edu`},{\"id\":`arcadia-university`,\"name\":`Arcadia University`,\"domain\":`arcadia.edu`},{\"id\":`elizabethtown-college`,\"name\":`Elizabethtown College`,\"domain\":`etown.edu`},{\"id\":`misericordia-university`,\"name\":`Misericordia University`,\"domain\":`misericordia.edu`},{\"id\":`kings-college-pa`,\"name\":`King's College`,\"domain\":`kings.edu`},{\"id\":`lycoming-college`,\"name\":`Lycoming College`,\"domain\":`lycoming.edu`},{\"id\":`susquehanna-university`,\"name\":`Susquehanna University`,\"domain\":`susqu.edu`},{\"id\":`juniata-college`,\"name\":`Juniata College`,\"domain\":`juniata.edu`},{\"id\":`washington-jefferson-college`,\"name\":`Washington \u0026 Jefferson College`,\"domain\":`washjeff.edu`},{\"id\":`grove-city-college`,\"name\":`Grove City College`,\"domain\":`gcc.edu`},{\"id\":`westminster-college-pa`,\"name\":`Westminster College`,\"domain\":`westminster.edu`},{\"id\":`thiel-college`,\"name\":`Thiel College`,\"domain\":`thiel.edu`},{\"id\":`edinboro-university`,\"name\":`PennWest Edinboro`,\"domain\":`edinboro.edu`},{\"id\":`clarion-university`,\"name\":`PennWest Clarion`,\"domain\":`clarion.edu`},{\"id\":`california-university-pa`,\"name\":`PennWest California`,\"domain\":`calu.edu`},{\"id\":`east-stroudsburg-university`,\"name\":`East Stroudsburg University`,\"domain\":`esu.edu`},{\"id\":`mansfield-university`,\"name\":`Mansfield University`,\"domain\":`mansfield.edu`},{\"id\":`lock-haven-university`,\"name\":`Lock Haven University`,\"domain\":`lockhaven.edu`},{\"id\":`chestnut-hill-college`,\"name\":`Chestnut Hill College`,\"domain\":`chc.edu`},{\"id\":`cabrini-university`,\"name\":`Cabrini University`,\"domain\":`cabrini.edu`},{\"id\":`immaculata-university`,\"name\":`Immaculata University`,\"domain\":`immaculata.edu`},{\"id\":`gwynedd-mercy-university`,\"name\":`Gwynedd Mercy University`,\"domain\":`gmercyu.edu`},{\"id\":`alvernia-university`,\"name\":`Alvernia University`,\"domain\":`alvernia.edu`},{\"id\":`albright-college`,\"name\":`Albright College`,\"domain\":`albright.edu`},{\"id\":`lebanon-valley-college`,\"name\":`Lebanon Valley College`,\"domain\":`lvc.edu`},{\"id\":`messiah-university`,\"name\":`Messiah University`,\"domain\":`messiah.edu`},{\"id\":`york-college-of-pennsylvania`,\"name\":`York College of Pennsylvania`,\"domain\":`ycp.edu`},{\"id\":`waynesburg-university`,\"name\":`Waynesburg University`,\"domain\":`waynesburg.edu`},{\"id\":`university-of-mary-hardin-baylor`,\"name\":`University of Mary Hardin-Baylor`,\"domain\":`umhb.edu`},{\"id\":`houston-baptist-university`,\"name\":`Houston Christian University`,\"domain\":`hbu.edu`},{\"id\":`dallas-baptist-university`,\"name\":`Dallas Baptist University`,\"domain\":`dbu.edu`},{\"id\":`lubbock-christian-university`,\"name\":`Lubbock Christian University`,\"domain\":`lcu.edu`},{\"id\":`howard-payne-university`,\"name\":`Howard Payne University`,\"domain\":`hputx.edu`},{\"id\":`mcmurry-university`,\"name\":`McMurry University`,\"domain\":`mcm.edu`},{\"id\":`schreiner-university`,\"name\":`Schreiner University`,\"domain\":`schreiner.edu`},{\"id\":`texas-lutheran-university`,\"name\":`Texas Lutheran University`,\"domain\":`tlu.edu`},{\"id\":`concordia-university-texas`,\"name\":`Concordia University Texas`,\"domain\":`concordia.edu`},{\"id\":`university-of-st-thomas-tx`,\"name\":`University of St. Thomas (TX)`,\"domain\":`stthom.edu`}];const OPTION_MARKERS={\"country-picker\":[`Andorra`,`United Arab Emirates`,`Afghanistan`,`Antigua and Barbuda`,`Anguilla`,`Albania`,`Armenia`,`Angola`,`Antarctica`,`Argentina`,`American Samoa`,`Austria`,`Australia`,`Aruba`,`Alland Islands`,`Azerbaijan`,`Bosnia and Herzegovina`,`Barbados`,`Bangladesh`,`Belgium`,`Burkina Faso`,`Bulgaria`,`Bahrain`,`Burundi`,`Benin`,`Saint Barthelemy`,`Bermuda`,`Brunei Darussalam`,`Bolivia`,`Brazil`,`Bahamas`,`Bhutan`,`Bouvet Island`,`Botswana`,`Belarus`,`Belize`,`Canada`,`Cocos (Keeling) Islands`,`Congo, Democratic Republic of the`,`Central African Republic`,`Congo, Republic of the`,`Switzerland`,`Cote d'Ivoire`,`Cook Islands`,`Chile`,`Cameroon`,`China`,`Colombia`,`Costa Rica`,`Cuba`,`Cape Verde`,`Curacao`,`Christmas Island`,`Cyprus`,`Czech Republic`,`Germany`,`Djibouti`,`Denmark`,`Dominica`,`Dominican Republic`,`Algeria`,`Ecuador`,`Estonia`,`Egypt`,`Western Sahara`,`Eritrea`,`Spain`,`Ethiopia`,`Finland`,`Fiji`,`Falkland Islands (Malvinas)`,`Micronesia, Federated States of`,`Faroe Islands`,`France`,`Gabon`,`United Kingdom`,`Grenada`,`Georgia`,`French Guiana`,`Guernsey`,`Ghana`,`Gibraltar`,`Greenland`,`Gambia`,`Guinea`,`Guadeloupe`,`Equatorial Guinea`,`Greece`,`South Georgia and the South Sandwich Islands`,`Guatemala`,`Guam`,`Guinea-Bissau`,`Guyana`,`Hong Kong`,`Heard Island and McDonald Islands`,`Honduras`,`Croatia`,`Haiti`,`Hungary`,`Indonesia`,`Ireland`,`Israel`,`Isle of Man`,`India`,`British Indian Ocean Territory`,`Iraq`,`Iran, Islamic Republic of`,`Iceland`,`Italy`,`Jersey`,`Jamaica`,`Jordan`,`Japan`,`Kenya`,`Kyrgyzstan`,`Cambodia`,`Kiribati`,`Comoros`,`Saint Kitts and Nevis`,`Korea, Democratic People's Republic of`,`Korea, Republic of`,`Kuwait`,`Cayman Islands`,`Kazakhstan`,`Lao People's Democratic Republic`,`Lebanon`,`Saint Lucia`,`Liechtenstein`,`Sri Lanka`,`Liberia`,`Lesotho`,`Lithuania`,`Luxembourg`,`Latvia`,`Libya`,`Morocco`,`Monaco`,`Moldova, Republic of`,`Montenegro`,`Saint Martin (French part)`,`Madagascar`,`Marshall Islands`,`Macedonia, the Former Yugoslav Republic of`,`Mali`,`Myanmar`,`Mongolia`,`Macao`,`Northern Mariana Islands`,`Martinique`,`Mauritania`,`Montserrat`,`Malta`,`Mauritius`,`Maldives`,`Malawi`,`Mexico`,`Malaysia`,`Mozambique`,`Namibia`,`New Caledonia`,`Niger`,`Norfolk Island`,`Nigeria`,`Nicaragua`,`Netherlands`,`Norway`,`Nepal`,`Nauru`,`Niue`,`New Zealand`,`Oman`,`Panama`,`Peru`,`French Polynesia`,`Papua New Guinea`,`Philippines`,`Pakistan`,`Poland`,`Saint Pierre and Miquelon`,`Pitcairn`,`Puerto Rico`,`Palestine, State of`,`Portugal`,`Palau`,`Paraguay`,`Qatar`,`Reunion`,`Romania`,`Serbia`,`Russian Federation`,`Rwanda`,`Saudi Arabia`,`Solomon Islands`,`Seychelles`,`Sudan`,`Sweden`,`Singapore`,`Saint Helena`,`Slovenia`,`Svalbard and Jan Mayen`,`Slovakia`,`Sierra Leone`,`San Marino`,`Senegal`,`Somalia`,`Suriname`,`South Sudan`,`Sao Tome and Principe`,`El Salvador`,`Sint Maarten (Dutch part)`,`Syrian Arab Republic`,`Swaziland`,`Turks and Caicos Islands`,`Chad`,`French Southern Territories`,`Togo`,`Thailand`,`Tajikistan`,`Tokelau`,`Timor-Leste`,`Turkmenistan`,`Tunisia`,`Tonga`,`Turkey`,`Trinidad and Tobago`,`Tuvalu`,`Taiwan, Province of China`,`United Republic of Tanzania`,`Ukraine`,`Uganda`,`United States`,`Uruguay`,`Uzbekistan`,`Holy See (Vatican City State)`,`Saint Vincent and the Grenadines`,`Venezuela`,`British Virgin Islands`,`US Virgin Islands`,`Vietnam`,`Vanuatu`,`Wallis and Futuna`,`Samoa`,`Kosovo`,`Yemen`,`Mayotte`,`South Africa`,`Zambia`,`Zimbabwe`]};const INPUT_TYPE_ICONS={\"short-text\":`solar:text-linear`,\"long-text\":`solar:document-text-linear`,\"dropdown\":`solar:alt-arrow-down-linear`,\"multi-select\":`solar:checklist-linear`,\"checkbox\":`solar:check-square-linear`,\"yes-no\":`solar:switch-linear`,\"date\":`solar:calendar-linear`,\"number\":`solar:hashtag-linear`,\"currency\":`solar:dollar-linear`,\"file-upload\":`solar:upload-linear`};const INPUT_TYPE_LABELS={\"short-text\":`Short Text`,\"long-text\":`Long Text`,\"dropdown\":`Dropdown`,\"multi-select\":`Multi-Select`,\"checkbox\":`Checkbox`,\"yes-no\":`Yes/No`,\"date\":`Date`,\"number\":`Number`,\"currency\":`Currency`,\"file-upload\":`File Upload`};const QUESTIONNAIRE_TEMPLATES={\"crypto-vasp\":{\"id\":`crypto-vasp`,\"name\":`Crypto / VASP`,\"sections\":[{\"id\":`account-purpose`,\"name\":`Account Purpose \u0026 Activity`,\"condition\":null,\"questions\":[{\"id\":`cv-q1`,\"text\":`What is the primary purpose of opening this account?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Personal Trading`,`Business/Corporate Trading`,`Institutional Custody`,`OTC Trading`,`Staking/Yield`,`Payment Processing`,`Remittance`,`Other`]},{\"id\":`cv-q2`,\"text\":`If \"Other,\" please describe the purpose of your account.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`cv-q1`,\"value\":`Other`}},{\"id\":`cv-q3`,\"text\":`What type of account are you opening?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Individual`,`Joint`,`Corporate`,`Trust`,`Fund/Investment Vehicle`]},{\"id\":`cv-q4`,\"text\":`Are you opening this account on behalf of another person or entity?`,\"type\":`yes-no`,\"required\":true,\"helpText\":`Beneficial ownership disclosure required if Yes`},{\"id\":`cv-q5`,\"text\":`If yes, provide the full legal name of the person or entity.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`cv-q4`,\"value\":`Yes`}}]},{\"id\":`source-of-funds`,\"name\":`Source of Funds \u0026 Wealth`,\"condition\":null,\"questions\":[{\"id\":`cv-q6`,\"text\":`What is the primary source of funds for your crypto transactions?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Employment/Salary`,`Business Revenue`,`Investment Returns`,`Sale of Property`,`Inheritance`,`Gift`,`Savings`,`Mining/Staking Rewards`,`Crypto Trading Profits`,`Pension/Retirement`,`Legal Settlement`,`Other`]},{\"id\":`cv-q7`,\"text\":`If \"Other,\" please specify the source of funds.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`cv-q6`,\"value\":`Other`}},{\"id\":`cv-q8`,\"text\":`What is the origin of your overall wealth?`,\"type\":`multi-select`,\"required\":true,\"options\":[`Employment Income`,`Business Ownership`,`Investments`,`Real Estate`,`Inheritance`,`Crypto/Digital Assets`,`Other`]},{\"id\":`cv-q9`,\"text\":`Please provide a brief description of your source of wealth.`,\"type\":`long-text`,\"required\":true,\"helpText\":`E.g. \"10 years as a software engineer, savings accumulated over career\"`},{\"id\":`cv-q10`,\"text\":`What is your estimated annual income (fiat)?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $25,000`,`$25,000–$50,000`,`$50,001–$100,000`,`$100,001–$250,000`,`$250,001–$500,000`,`$500,001–$1,000,000`,`Over $1,000,000`]},{\"id\":`cv-q11`,\"text\":`What is your estimated net worth (excluding primary residence)?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $50,000`,`$50,000–$100,000`,`$100,001–$500,000`,`$500,001–$1,000,000`,`$1,000,001–$5,000,000`,`Over $5,000,000`]},{\"id\":`cv-q12`,\"text\":`Can you provide documentation to support your source of funds?`,\"type\":`yes-no`,\"required\":true,\"helpText\":`E.g. pay stubs, tax returns, sale agreements`},{\"id\":`cv-q13`,\"text\":`Upload supporting documentation for source of funds.`,\"type\":`file-upload`,\"required\":false,\"conditional\":{\"field\":`cv-q12`,\"value\":`Yes`},\"helpText\":`Tax returns, bank statements, employment letters`,\"fileOptions\":{\"accept\":`.pdf,.jpg,.png`,\"maxSize\":`10MB`}}]},{\"id\":`expected-activity`,\"name\":`Expected Transaction Activity`,\"condition\":null,\"questions\":[{\"id\":`cv-q14`,\"text\":`What is your expected monthly deposit volume (fiat)?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $1,000`,`$1,000–$5,000`,`$5,001–$25,000`,`$25,001–$100,000`,`$100,001–$500,000`,`Over $500,000`]},{\"id\":`cv-q15`,\"text\":`What is your expected monthly withdrawal volume (fiat)?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $1,000`,`$1,000–$5,000`,`$5,001–$25,000`,`$25,001–$100,000`,`$100,001–$500,000`,`Over $500,000`]},{\"id\":`cv-q16`,\"text\":`What is your expected monthly crypto transaction volume?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $5,000`,`$5,000–$25,000`,`$25,001–$100,000`,`$100,001–$500,000`,`$500,001–$1,000,000`,`Over $1,000,000`]},{\"id\":`cv-q17`,\"text\":`How frequently do you expect to transact?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Daily`,`Several times per week`,`Weekly`,`Several times per month`,`Monthly`,`Rarely/Ad hoc`]},{\"id\":`cv-q18`,\"text\":`Which types of crypto assets do you intend to trade or hold?`,\"type\":`multi-select`,\"required\":true,\"options\":[`Bitcoin (BTC)`,`Ethereum (ETH)`,`Stablecoins (USDT, USDC, DAI)`,`Altcoins (Top 100)`,`DeFi Tokens`,`NFTs`,`Privacy Coins (Monero, Zcash)`,`Meme Coins`,`Security Tokens`,`Other`]},{\"id\":`cv-q19`,\"text\":`Do you intend to use privacy-enhanced cryptocurrencies (e.g. Monero, Zcash)?`,\"type\":`yes-no`,\"required\":true,\"helpText\":`Additional due diligence may be required`},{\"id\":`cv-q20`,\"text\":`Will you be sending or receiving crypto from external wallets?`,\"type\":`yes-no`,\"required\":true},{\"id\":`cv-q21`,\"text\":`Will you be using DeFi protocols, DEXs, or bridges?`,\"type\":`yes-no`,\"required\":true},{\"id\":`cv-q22`,\"text\":`Do you intend to use mixing, tumbling, or coin-join services?`,\"type\":`yes-no`,\"required\":true,\"helpText\":`Use of mixing services may trigger enhanced due diligence`},{\"id\":`cv-q23`,\"text\":`Which countries will you primarily transact with?`,\"type\":`multi-select`,\"required\":true,\"options\":`country-picker`,\"helpText\":`Flag high-risk jurisdictions: Iran, North Korea, Syria, Cuba, Russia, Myanmar`},{\"id\":`cv-q24`,\"text\":`Will you be conducting peer-to-peer (P2P) trades?`,\"type\":`yes-no`,\"required\":true}]},{\"id\":`wallet-history`,\"name\":`Wallet \u0026 Platform History`,\"condition\":null,\"questions\":[{\"id\":`cv-q25`,\"text\":`Do you currently hold crypto assets on other platforms or wallets?`,\"type\":`yes-no`,\"required\":true},{\"id\":`cv-q26`,\"text\":`List all exchanges/platforms where you currently hold accounts.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`cv-q25`,\"value\":`Yes`},\"helpText\":`E.g. Coinbase, Binance, Kraken, self-custody wallets`},{\"id\":`cv-q27`,\"text\":`Will you be transferring existing crypto holdings to this account?`,\"type\":`yes-no`,\"required\":true},{\"id\":`cv-q28`,\"text\":`Estimated value of crypto to be transferred in (USD equivalent).`,\"type\":`currency`,\"required\":false,\"conditional\":{\"field\":`cv-q27`,\"value\":`Yes`}},{\"id\":`cv-q29`,\"text\":`Provide wallet addresses you will use to deposit funds.`,\"type\":`long-text`,\"required\":false,\"helpText\":`Optional at onboarding — can be added later`},{\"id\":`cv-q30`,\"text\":`How long have you been trading or holding crypto assets?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Less than 6 months`,`6 months–1 year`,`1–3 years`,`3–5 years`,`Over 5 years`]}]},{\"id\":`corporate-entity`,\"name\":`Corporate / Entity Information`,\"condition\":{\"field\":`cv-q3`,\"values\":[`Corporate`,`Trust`,`Fund/Investment Vehicle`]},\"questions\":[{\"id\":`cv-q31`,\"text\":`Full legal name of the entity.`,\"type\":`short-text`,\"required\":true},{\"id\":`cv-q32`,\"text\":`Jurisdiction of incorporation/registration.`,\"type\":`dropdown`,\"required\":true,\"options\":`country-picker`},{\"id\":`cv-q33`,\"text\":`Registration/incorporation number.`,\"type\":`short-text`,\"required\":true},{\"id\":`cv-q34`,\"text\":`Date of incorporation.`,\"type\":`date`,\"required\":true},{\"id\":`cv-q35`,\"text\":`Type of entity.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Corporation`,`LLC`,`Partnership`,`Trust`,`Foundation`,`DAO`,`Other`]},{\"id\":`cv-q36`,\"text\":`Nature of business / primary business activity.`,\"type\":`long-text`,\"required\":true},{\"id\":`cv-q37`,\"text\":`Is the entity a regulated financial institution or VASP?`,\"type\":`yes-no`,\"required\":true},{\"id\":`cv-q38`,\"text\":`If regulated, provide license number and issuing authority.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`cv-q37`,\"value\":`Yes`}},{\"id\":`cv-q39`,\"text\":`List all Ultimate Beneficial Owners (UBOs) holding 10%+ ownership.`,\"type\":`long-text`,\"required\":true,\"helpText\":`Full name, percentage ownership, nationality, DOB for each UBO`},{\"id\":`cv-q40`,\"text\":`List all directors and authorized signatories.`,\"type\":`long-text`,\"required\":true},{\"id\":`cv-q41`,\"text\":`Upload corporate documents (certificate of incorporation, articles, corporate structure chart).`,\"type\":`file-upload`,\"required\":true,\"fileOptions\":{\"accept\":`.pdf`,\"maxSize\":`25MB`}},{\"id\":`cv-q42`,\"text\":`Upload UBO identification documents.`,\"type\":`file-upload`,\"required\":true,\"helpText\":`Government-issued ID for each UBO`,\"fileOptions\":{\"accept\":`.pdf,.jpg,.png`,\"maxSize\":`10MB`}}]},{\"id\":`tax-residency`,\"name\":`Tax Residency`,\"condition\":null,\"questions\":[{\"id\":`cv-q43`,\"text\":`Are you a U.S. person (citizen, resident, or green card holder) for tax purposes?`,\"type\":`yes-no`,\"required\":true,\"helpText\":`Required for FATCA compliance`},{\"id\":`cv-q44`,\"text\":`List all countries where you hold tax residency.`,\"type\":`multi-select`,\"required\":true,\"options\":`country-picker`,\"helpText\":`Required for CRS/AEOI reporting`},{\"id\":`cv-q45`,\"text\":`Tax Identification Number (TIN) for each tax residency country.`,\"type\":`short-text`,\"required\":true,\"helpText\":`SSN for U.S., SIN for Canada, etc.`}]},{\"id\":`declarations`,\"name\":`Declarations \u0026 Consent`,\"condition\":null,\"questions\":[{\"id\":`cv-q46`,\"text\":`I confirm that all information provided is true, accurate, and complete.`,\"type\":`checkbox`,\"required\":true},{\"id\":`cv-q47`,\"text\":`I understand that providing false or misleading information may result in account termination and reporting to authorities.`,\"type\":`checkbox`,\"required\":true},{\"id\":`cv-q48`,\"text\":`I consent to ongoing monitoring of my transactions for AML/CFT compliance.`,\"type\":`checkbox`,\"required\":true},{\"id\":`cv-q49`,\"text\":`I agree to promptly update my information if any details change.`,\"type\":`checkbox`,\"required\":true},{\"id\":`cv-q50`,\"text\":`I acknowledge that my account may be suspended pending enhanced due diligence if flagged.`,\"type\":`checkbox`,\"required\":true},{\"id\":`cv-q51`,\"text\":`I consent to the sharing of my information with regulatory bodies and law enforcement as required by applicable law.`,\"type\":`checkbox`,\"required\":true}]}]},\"fintech\":{\"id\":`fintech`,\"name\":`Fintech`,\"sections\":[{\"id\":`account-purpose`,\"name\":`Account Purpose \u0026 Services`,\"condition\":null,\"questions\":[{\"id\":`ft-q1`,\"text\":`What is the primary purpose of this account?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Personal Banking`,`Business Banking`,`Payments/Transfers`,`Lending/Credit`,`Investment`,`Payroll Processing`,`Merchant Services`,`Foreign Exchange`,`Other`]},{\"id\":`ft-q2`,\"text\":`If \"Other,\" please describe.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`ft-q1`,\"value\":`Other`}},{\"id\":`ft-q3`,\"text\":`Which services do you intend to use?`,\"type\":`multi-select`,\"required\":true,\"options\":[`Deposits`,`Withdrawals`,`Domestic Transfers`,`International Wire Transfers`,`Bill Payments`,`Direct Debit`,`Card Payments`,`Mobile Payments`,`Lending`,`Savings`,`Investment Products`]},{\"id\":`ft-q4`,\"text\":`What type of account are you opening?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Individual`,`Joint`,`Sole Proprietorship`,`Corporate`,`Partnership`,`Trust`,`Non-Profit`,`Government Entity`]},{\"id\":`ft-q5`,\"text\":`Are you opening this account on behalf of another person or entity?`,\"type\":`yes-no`,\"required\":true},{\"id\":`ft-q6`,\"text\":`If yes, provide the full legal name of the beneficial account holder.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`ft-q5`,\"value\":`Yes`}}]},{\"id\":`employment-income`,\"name\":`Employment \u0026 Income`,\"condition\":null,\"questions\":[{\"id\":`ft-q7`,\"text\":`Current employment status.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Employed (Full-Time)`,`Employed (Part-Time)`,`Self-Employed`,`Business Owner`,`Retired`,`Student`,`Unemployed`,`Homemaker`]},{\"id\":`ft-q8`,\"text\":`Employer name.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`ft-q7`,\"values\":[`Employed (Full-Time)`,`Employed (Part-Time)`]}},{\"id\":`ft-q9`,\"text\":`Job title / occupation.`,\"type\":`short-text`,\"required\":true},{\"id\":`ft-q10`,\"text\":`Industry / sector.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Agriculture`,`Construction`,`Education`,`Energy`,`Finance`,`Government`,`Healthcare`,`Hospitality`,`IT/Technology`,`Legal`,`Manufacturing`,`Media`,`Mining`,`Real Estate`,`Retail`,`Transportation`,`Other`]},{\"id\":`ft-q11`,\"text\":`Estimated annual income.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $25,000`,`$25,000–$50,000`,`$50,001–$100,000`,`$100,001–$250,000`,`$250,001–$500,000`,`Over $500,000`]},{\"id\":`ft-q12`,\"text\":`Estimated net worth.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $50,000`,`$50,000–$250,000`,`$250,001–$500,000`,`$500,001–$1,000,000`,`$1,000,001–$5,000,000`,`Over $5,000,000`]}]},{\"id\":`source-of-funds`,\"name\":`Source of Funds \u0026 Wealth`,\"condition\":null,\"questions\":[{\"id\":`ft-q13`,\"text\":`Primary source of funds for this account.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Employment/Salary`,`Business Revenue`,`Investment Income`,`Rental Income`,`Pension/Retirement`,`Sale of Assets`,`Inheritance`,`Gift`,`Government Benefits`,`Legal Settlement`,`Other`]},{\"id\":`ft-q14`,\"text\":`If \"Other,\" specify source of funds.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`ft-q13`,\"value\":`Other`}},{\"id\":`ft-q15`,\"text\":`Describe the origin of your overall wealth.`,\"type\":`long-text`,\"required\":true},{\"id\":`ft-q16`,\"text\":`Upload supporting documentation for source of funds.`,\"type\":`file-upload`,\"required\":false,\"helpText\":`Pay stubs, tax returns, business financials`,\"fileOptions\":{\"accept\":`.pdf,.jpg,.png`,\"maxSize\":`10MB`}}]},{\"id\":`expected-activity`,\"name\":`Expected Transaction Activity`,\"condition\":null,\"questions\":[{\"id\":`ft-q17`,\"text\":`Expected monthly deposit volume.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $1,000`,`$1,000–$5,000`,`$5,001–$25,000`,`$25,001–$100,000`,`$100,001–$500,000`,`Over $500,000`]},{\"id\":`ft-q18`,\"text\":`Expected monthly withdrawal volume.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $1,000`,`$1,000–$5,000`,`$5,001–$25,000`,`$25,001–$100,000`,`$100,001–$500,000`,`Over $500,000`]},{\"id\":`ft-q19`,\"text\":`Expected number of transactions per month.`,\"type\":`dropdown`,\"required\":true,\"options\":[`1–5`,`6–20`,`21–50`,`51–100`,`101–500`,`Over 500`]},{\"id\":`ft-q20`,\"text\":`Will you be making international transfers?`,\"type\":`yes-no`,\"required\":true},{\"id\":`ft-q21`,\"text\":`If yes, which countries will you send/receive funds to/from?`,\"type\":`multi-select`,\"required\":false,\"options\":`country-picker`,\"conditional\":{\"field\":`ft-q20`,\"value\":`Yes`}},{\"id\":`ft-q22`,\"text\":`Estimated monthly international transfer volume.`,\"type\":`dropdown`,\"required\":false,\"conditional\":{\"field\":`ft-q20`,\"value\":`Yes`},\"options\":[`Under $1,000`,`$1,000–$10,000`,`$10,001–$50,000`,`$50,001–$250,000`,`Over $250,000`]},{\"id\":`ft-q23`,\"text\":`Purpose of international transfers.`,\"type\":`multi-select`,\"required\":false,\"conditional\":{\"field\":`ft-q20`,\"value\":`Yes`},\"options\":[`Family Support/Remittance`,`Business Payments`,`Investment`,`Tuition/Education`,`Property Purchase`,`Other`]},{\"id\":`ft-q24`,\"text\":`Will you be receiving cash deposits?`,\"type\":`yes-no`,\"required\":true},{\"id\":`ft-q25`,\"text\":`If yes, estimated monthly cash deposit amount.`,\"type\":`currency`,\"required\":false,\"conditional\":{\"field\":`ft-q24`,\"value\":`Yes`}},{\"id\":`ft-q26`,\"text\":`Will third parties be depositing funds into your account?`,\"type\":`yes-no`,\"required\":true},{\"id\":`ft-q27`,\"text\":`If yes, describe the relationship and purpose.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`ft-q26`,\"value\":`Yes`}}]},{\"id\":`business-entity`,\"name\":`Business / Entity Information`,\"condition\":{\"field\":`ft-q4`,\"values\":[`Corporate`,`Partnership`,`Sole Proprietorship`,`Trust`,`Non-Profit`,`Government Entity`]},\"questions\":[{\"id\":`ft-q28`,\"text\":`Full legal name of the business.`,\"type\":`short-text`,\"required\":true},{\"id\":`ft-q29`,\"text\":`Doing Business As (DBA) / trade name.`,\"type\":`short-text`,\"required\":false},{\"id\":`ft-q30`,\"text\":`Country and state/province of incorporation.`,\"type\":`dropdown`,\"required\":true,\"options\":`country-picker`},{\"id\":`ft-q31`,\"text\":`Date of incorporation/registration.`,\"type\":`date`,\"required\":true},{\"id\":`ft-q32`,\"text\":`Business registration/incorporation number.`,\"type\":`short-text`,\"required\":true},{\"id\":`ft-q33`,\"text\":`Business type.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Corporation (C-Corp)`,`Corporation (S-Corp)`,`LLC`,`LLP`,`General Partnership`,`Sole Proprietorship`,`Non-Profit`,`Trust`,`Government Entity`,`Other`]},{\"id\":`ft-q34`,\"text\":`Primary business activity / industry.`,\"type\":`long-text`,\"required\":true},{\"id\":`ft-q35`,\"text\":`Business website.`,\"type\":`short-text`,\"required\":false,\"helpText\":`URL format`},{\"id\":`ft-q36`,\"text\":`Annual business revenue.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $100,000`,`$100,000–$500,000`,`$500,001–$1,000,000`,`$1,000,001–$5,000,000`,`$5,000,001–$25,000,000`,`Over $25,000,000`]},{\"id\":`ft-q37`,\"text\":`Number of employees.`,\"type\":`dropdown`,\"required\":true,\"options\":[`1–5`,`6–25`,`26–100`,`101–500`,`Over 500`]},{\"id\":`ft-q38`,\"text\":`Is the business licensed or regulated?`,\"type\":`yes-no`,\"required\":true},{\"id\":`ft-q39`,\"text\":`If yes, provide license details and regulatory body.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`ft-q38`,\"value\":`Yes`}},{\"id\":`ft-q40`,\"text\":`List all Ultimate Beneficial Owners (UBOs) with 25%+ ownership.`,\"type\":`long-text`,\"required\":true,\"helpText\":`Full name, percentage ownership, nationality, DOB`},{\"id\":`ft-q41`,\"text\":`List all directors and authorized signatories.`,\"type\":`long-text`,\"required\":true},{\"id\":`ft-q42`,\"text\":`Does the business operate as a Money Service Business (MSB) or equivalent?`,\"type\":`yes-no`,\"required\":true},{\"id\":`ft-q43`,\"text\":`Upload corporate documents.`,\"type\":`file-upload`,\"required\":true,\"helpText\":`Articles of incorporation, operating agreement, corporate structure`,\"fileOptions\":{\"accept\":`.pdf`,\"maxSize\":`25MB`}}]},{\"id\":`tax-residency`,\"name\":`Tax Residency`,\"condition\":null,\"questions\":[{\"id\":`ft-q44`,\"text\":`Are you a U.S. person for tax purposes?`,\"type\":`yes-no`,\"required\":true},{\"id\":`ft-q45`,\"text\":`List all countries of tax residency.`,\"type\":`multi-select`,\"required\":true,\"options\":`country-picker`},{\"id\":`ft-q46`,\"text\":`Tax Identification Number (TIN) for each country.`,\"type\":`short-text`,\"required\":true}]},{\"id\":`declarations`,\"name\":`Declarations \u0026 Consent`,\"condition\":null,\"questions\":[{\"id\":`ft-q47`,\"text\":`I confirm all information provided is true, accurate, and complete.`,\"type\":`checkbox`,\"required\":true},{\"id\":`ft-q48`,\"text\":`I understand providing false information may result in account closure and regulatory reporting.`,\"type\":`checkbox`,\"required\":true},{\"id\":`ft-q49`,\"text\":`I consent to ongoing transaction monitoring for AML/CFT compliance.`,\"type\":`checkbox`,\"required\":true},{\"id\":`ft-q50`,\"text\":`I agree to notify the institution of any material changes to my information.`,\"type\":`checkbox`,\"required\":true},{\"id\":`ft-q51`,\"text\":`I consent to information sharing with regulatory authorities as required by law.`,\"type\":`checkbox`,\"required\":true},{\"id\":`ft-q52`,\"text\":`I acknowledge that my account may be subject to enhanced due diligence or restrictions.`,\"type\":`checkbox`,\"required\":true}]}]},\"real-estate\":{\"id\":`real-estate`,\"name\":`Real Estate`,\"sections\":[{\"id\":`transaction-details`,\"name\":`Transaction Details`,\"condition\":null,\"questions\":[{\"id\":`re-q1`,\"text\":`Type of real estate transaction.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Purchase (Residential)`,`Purchase (Commercial)`,`Purchase (Land)`,`Sale`,`Lease`,`Refinance`,`Investment (Rental)`,`Development`,`Other`]},{\"id\":`re-q2`,\"text\":`Property address or location (city/region if not yet identified).`,\"type\":`short-text`,\"required\":true},{\"id\":`re-q3`,\"text\":`Estimated transaction value.`,\"type\":`currency`,\"required\":true},{\"id\":`re-q4`,\"text\":`Purpose of the property.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Primary Residence`,`Secondary/Vacation Home`,`Rental Investment`,`Commercial Investment`,`Development/Flip`,`Agricultural`,`Other`]},{\"id\":`re-q5`,\"text\":`Is this property being purchased in a personal name or through an entity?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Personal Name`,`Corporation`,`LLC`,`Trust`,`Partnership`,`Joint Venture`,`Other`]},{\"id\":`re-q6`,\"text\":`If through an entity, provide the full legal name.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`re-q5`,\"notValue\":`Personal Name`}},{\"id\":`re-q7`,\"text\":`Are you the sole buyer or is there a co-buyer?`,\"type\":`dropdown`,\"required\":true,\"options\":[`Sole Buyer`,`Co-Buyer (Spouse/Partner)`,`Co-Buyer (Business Partner)`,`Multiple Investors`,`Other`]},{\"id\":`re-q8`,\"text\":`If co-buyer, provide their full legal name(s).`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`re-q7`,\"notValue\":`Sole Buyer`}}]},{\"id\":`source-of-funds`,\"name\":`Source of Funds`,\"condition\":null,\"questions\":[{\"id\":`re-q9`,\"text\":`How will this transaction be funded?`,\"type\":`multi-select`,\"required\":true,\"options\":[`Mortgage/Financing`,`Personal Savings`,`Sale of Another Property`,`Business Revenue`,`Investment Liquidation`,`Gift`,`Inheritance`,`Loan (Non-Mortgage)`,`Foreign Funds`,`Cryptocurrency Proceeds`,`Other`]},{\"id\":`re-q10`,\"text\":`What percentage of the purchase is cash (non-financed)?`,\"type\":`dropdown`,\"required\":true,\"options\":[`0% (Fully Financed)`,`1–20%`,`21–50%`,`51–80%`,`81–99%`,`100% (All Cash)`]},{\"id\":`re-q11`,\"text\":`If all or majority cash, describe the source in detail.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`re-q10`,\"values\":[`51–80%`,`81–99%`,`100% (All Cash)`]},\"helpText\":`Detailed explanation of where cash funds originated`},{\"id\":`re-q12`,\"text\":`Are any funds coming from outside the country?`,\"type\":`yes-no`,\"required\":true},{\"id\":`re-q13`,\"text\":`If yes, which country/countries?`,\"type\":`multi-select`,\"required\":false,\"options\":`country-picker`,\"conditional\":{\"field\":`re-q12`,\"value\":`Yes`}},{\"id\":`re-q14`,\"text\":`Estimated amount of foreign-sourced funds.`,\"type\":`currency`,\"required\":false,\"conditional\":{\"field\":`re-q12`,\"value\":`Yes`}},{\"id\":`re-q15`,\"text\":`Is a third party providing any funds for this transaction?`,\"type\":`yes-no`,\"required\":true},{\"id\":`re-q16`,\"text\":`If yes, provide the third party's full name, relationship, and the amount.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`re-q15`,\"value\":`Yes`}},{\"id\":`re-q17`,\"text\":`Are any funds derived from cryptocurrency or digital asset sales?`,\"type\":`yes-no`,\"required\":true},{\"id\":`re-q18`,\"text\":`If yes, provide exchange/platform name, asset type, and amount converted.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`re-q17`,\"value\":`Yes`}},{\"id\":`re-q19`,\"text\":`Upload proof of funds documentation.`,\"type\":`file-upload`,\"required\":true,\"helpText\":`Bank statements, pre-approval letters, gift letters, proof of sale`,\"fileOptions\":{\"accept\":`.pdf,.jpg,.png`,\"maxSize\":`10MB`}}]},{\"id\":`source-of-wealth`,\"name\":`Source of Wealth \u0026 Income`,\"condition\":null,\"questions\":[{\"id\":`re-q20`,\"text\":`Primary source of overall wealth.`,\"type\":`multi-select`,\"required\":true,\"options\":[`Employment Income`,`Business Ownership`,`Investments (Stocks/Bonds)`,`Real Estate Portfolio`,`Inheritance`,`Family Wealth`,`Professional Practice`,`Other`]},{\"id\":`re-q21`,\"text\":`Current occupation / job title.`,\"type\":`short-text`,\"required\":true},{\"id\":`re-q22`,\"text\":`Employer or business name.`,\"type\":`short-text`,\"required\":true},{\"id\":`re-q23`,\"text\":`Estimated annual household income.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $50,000`,`$50,000–$100,000`,`$100,001–$250,000`,`$250,001–$500,000`,`$500,001–$1,000,000`,`Over $1,000,000`]},{\"id\":`re-q24`,\"text\":`Estimated total net worth.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $100,000`,`$100,000–$500,000`,`$500,001–$1,000,000`,`$1,000,001–$5,000,000`,`$5,000,001–$10,000,000`,`Over $10,000,000`]},{\"id\":`re-q25`,\"text\":`Do you own other properties?`,\"type\":`yes-no`,\"required\":true},{\"id\":`re-q26`,\"text\":`If yes, how many and estimated total portfolio value?`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`re-q25`,\"value\":`Yes`}}]},{\"id\":`beneficial-ownership`,\"name\":`Beneficial Ownership \u0026 Entity Details`,\"condition\":{\"field\":`re-q5`,\"notValue\":`Personal Name`},\"questions\":[{\"id\":`re-q27`,\"text\":`List all Ultimate Beneficial Owners (UBOs) of the purchasing entity (25%+).`,\"type\":`long-text`,\"required\":true,\"helpText\":`Full name, percentage ownership, nationality, DOB`},{\"id\":`re-q28`,\"text\":`Is any UBO a foreign national or non-resident?`,\"type\":`yes-no`,\"required\":true},{\"id\":`re-q29`,\"text\":`Jurisdiction of entity incorporation.`,\"type\":`dropdown`,\"required\":true,\"options\":`country-picker`},{\"id\":`re-q30`,\"text\":`Date of entity formation.`,\"type\":`date`,\"required\":true},{\"id\":`re-q31`,\"text\":`Registration/incorporation number.`,\"type\":`short-text`,\"required\":true},{\"id\":`re-q32`,\"text\":`Is the entity a shell company or holding company with no operating business?`,\"type\":`yes-no`,\"required\":true},{\"id\":`re-q33`,\"text\":`Upload entity formation documents and corporate structure chart.`,\"type\":`file-upload`,\"required\":true,\"fileOptions\":{\"accept\":`.pdf`,\"maxSize\":`25MB`}},{\"id\":`re-q34`,\"text\":`Is a trust involved in this transaction?`,\"type\":`yes-no`,\"required\":true},{\"id\":`re-q35`,\"text\":`If yes, provide trust name, trustee(s), settlor, and beneficiaries.`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`re-q34`,\"value\":`Yes`}},{\"id\":`re-q36`,\"text\":`Upload trust deed or declaration of trust.`,\"type\":`file-upload`,\"required\":false,\"conditional\":{\"field\":`re-q34`,\"value\":`Yes`},\"fileOptions\":{\"accept\":`.pdf`,\"maxSize\":`25MB`}}]},{\"id\":`tax-residency`,\"name\":`Tax Residency`,\"condition\":null,\"questions\":[{\"id\":`re-q37`,\"text\":`Are you a U.S. person for tax purposes?`,\"type\":`yes-no`,\"required\":true},{\"id\":`re-q38`,\"text\":`All countries of tax residency.`,\"type\":`multi-select`,\"required\":true,\"options\":`country-picker`},{\"id\":`re-q39`,\"text\":`Tax Identification Number(s).`,\"type\":`short-text`,\"required\":true},{\"id\":`re-q40`,\"text\":`Is this transaction reportable under FinCEN Geographic Targeting Order (GTO)?`,\"type\":`yes-no`,\"required\":true,\"helpText\":`All-cash purchases above threshold in GTO-covered areas`}]},{\"id\":`declarations`,\"name\":`Declarations \u0026 Consent`,\"condition\":null,\"questions\":[{\"id\":`re-q41`,\"text\":`I confirm all information provided is true, accurate, and complete.`,\"type\":`checkbox`,\"required\":true},{\"id\":`re-q42`,\"text\":`I understand providing false information may result in transaction cancellation and regulatory reporting.`,\"type\":`checkbox`,\"required\":true},{\"id\":`re-q43`,\"text\":`I consent to enhanced due diligence if required by the compliance team.`,\"type\":`checkbox`,\"required\":true},{\"id\":`re-q44`,\"text\":`I acknowledge obligations under anti-money laundering regulations applicable to real estate.`,\"type\":`checkbox`,\"required\":true},{\"id\":`re-q45`,\"text\":`I consent to information sharing with regulatory authorities as required by law.`,\"type\":`checkbox`,\"required\":true}]}]},\"higher-education\":{\"id\":`higher-education`,\"name\":`Higher Education`,\"sections\":[{\"id\":`student-info`,\"name\":`Student / Applicant Information`,\"condition\":null,\"questions\":[{\"id\":`he-q1`,\"text\":`Student / applicant relationship to the account.`,\"type\":`dropdown`,\"required\":true,\"options\":[`I am the student`,`Parent/Legal Guardian`,`Sponsor`,`Employer`,`Scholarship Body`,`Government Agency`,`Other`]},{\"id\":`he-q2`,\"text\":`If not the student, provide the student's full legal name.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`he-q1`,\"notValue\":`I am the student`}},{\"id\":`he-q3`,\"text\":`Student's country of citizenship.`,\"type\":`dropdown`,\"required\":true,\"options\":`country-picker`},{\"id\":`he-q4`,\"text\":`Student's country of permanent residence.`,\"type\":`dropdown`,\"required\":true,\"options\":`country-picker`},{\"id\":`he-q5`,\"text\":`Is the student an international student (studying outside country of citizenship)?`,\"type\":`yes-no`,\"required\":true},{\"id\":`he-q6`,\"text\":`Visa/immigration status (if international).`,\"type\":`dropdown`,\"required\":false,\"conditional\":{\"field\":`he-q5`,\"value\":`Yes`},\"options\":[`F-1 (U.S.)`,`J-1 (U.S.)`,`M-1 (U.S.)`,`Student Visa (Canada)`,`Tier 4 (UK)`,`Study Permit`,`Other`,`N/A (Domestic)`]},{\"id\":`he-q7`,\"text\":`Institution name and program of study.`,\"type\":`short-text`,\"required\":true},{\"id\":`he-q8`,\"text\":`Expected program duration.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Less than 1 year`,`1–2 years`,`2–4 years`,`4+ years`]}]},{\"id\":`tuition-funds`,\"name\":`Source of Tuition \u0026 Living Funds`,\"condition\":null,\"questions\":[{\"id\":`he-q9`,\"text\":`Primary source of tuition funding.`,\"type\":`multi-select`,\"required\":true,\"options\":[`Personal Savings`,`Family Support (Parents)`,`Family Support (Other Relative)`,`Employer Sponsorship`,`Government Scholarship`,`Private Scholarship`,`Student Loans (Domestic)`,`Student Loans (International)`,`Education Fund / 529 Plan`,`GI Bill / Military Benefits`,`Crowdfunding`,`Cryptocurrency Proceeds`,`Other`]},{\"id\":`he-q10`,\"text\":`Primary source of living expenses funding.`,\"type\":`multi-select`,\"required\":true,\"options\":[`Family Support`,`Part-Time Employment`,`Savings`,`Scholarship/Stipend`,`Student Loans`,`Other`]},{\"id\":`he-q11`,\"text\":`Estimated total annual tuition and fees.`,\"type\":`currency`,\"required\":true},{\"id\":`he-q12`,\"text\":`Estimated annual living expenses.`,\"type\":`currency`,\"required\":true},{\"id\":`he-q13`,\"text\":`Will any funds be sent from outside the country?`,\"type\":`yes-no`,\"required\":true},{\"id\":`he-q14`,\"text\":`If yes, from which country/countries?`,\"type\":`multi-select`,\"required\":false,\"options\":`country-picker`,\"conditional\":{\"field\":`he-q13`,\"value\":`Yes`}},{\"id\":`he-q15`,\"text\":`Estimated annual amount of international fund transfers.`,\"type\":`currency`,\"required\":false,\"conditional\":{\"field\":`he-q13`,\"value\":`Yes`}},{\"id\":`he-q16`,\"text\":`Who will be sending the international funds?`,\"type\":`dropdown`,\"required\":false,\"conditional\":{\"field\":`he-q13`,\"value\":`Yes`},\"options\":[`Parent/Guardian`,`Other Family Member`,`Employer`,`Government/Scholarship Body`,`Self (from overseas account)`,`Other`]},{\"id\":`he-q17`,\"text\":`Provide the sender's full name and relationship.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`he-q13`,\"value\":`Yes`}}]},{\"id\":`third-party-payer`,\"name\":`Third-Party Payer Information`,\"condition\":null,\"questions\":[{\"id\":`he-q18`,\"text\":`Is a third party (not the student) paying tuition or fees?`,\"type\":`yes-no`,\"required\":true},{\"id\":`he-q19`,\"text\":`Third party's full legal name.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`he-q18`,\"value\":`Yes`}},{\"id\":`he-q20`,\"text\":`Relationship to the student.`,\"type\":`dropdown`,\"required\":false,\"conditional\":{\"field\":`he-q18`,\"value\":`Yes`},\"options\":[`Parent`,`Grandparent`,`Sibling`,`Uncle/Aunt`,`Employer`,`Government Body`,`Scholarship Organization`,`NGO/Charity`,`Family Friend`,`Other`]},{\"id\":`he-q21`,\"text\":`Third party's country of residence.`,\"type\":`dropdown`,\"required\":false,\"conditional\":{\"field\":`he-q18`,\"value\":`Yes`},\"options\":`country-picker`},{\"id\":`he-q22`,\"text\":`Third party's source of funds for the payment.`,\"type\":`dropdown`,\"required\":false,\"conditional\":{\"field\":`he-q18`,\"value\":`Yes`},\"options\":[`Employment/Salary`,`Business Revenue`,`Savings`,`Investments`,`Pension`,`Other`]},{\"id\":`he-q23`,\"text\":`Third party's occupation and employer name.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`he-q18`,\"value\":`Yes`}},{\"id\":`he-q24`,\"text\":`Upload documentation of third-party funding (sponsor letter, affidavit of support, etc.).`,\"type\":`file-upload`,\"required\":false,\"conditional\":{\"field\":`he-q18`,\"value\":`Yes`},\"fileOptions\":{\"accept\":`.pdf,.jpg`,\"maxSize\":`10MB`}}]},{\"id\":`expected-activity`,\"name\":`Expected Account Activity`,\"condition\":null,\"questions\":[{\"id\":`he-q25`,\"text\":`Expected monthly deposits into account.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Under $500`,`$500–$2,000`,`$2,001–$5,000`,`$5,001–$10,000`,`Over $10,000`]},{\"id\":`he-q26`,\"text\":`Expected frequency of international transfers received.`,\"type\":`dropdown`,\"required\":true,\"options\":[`Never`,`Once per semester`,`Monthly`,`Bi-weekly`,`Weekly`,`Other`]},{\"id\":`he-q27`,\"text\":`Will you be sending funds internationally from this account?`,\"type\":`yes-no`,\"required\":true},{\"id\":`he-q28`,\"text\":`If yes, to which countries and for what purpose?`,\"type\":`long-text`,\"required\":false,\"conditional\":{\"field\":`he-q27`,\"value\":`Yes`}},{\"id\":`he-q29`,\"text\":`Will you be receiving income (part-time work, assistantship)?`,\"type\":`yes-no`,\"required\":true},{\"id\":`he-q30`,\"text\":`If yes, estimated monthly income.`,\"type\":`currency`,\"required\":false,\"conditional\":{\"field\":`he-q29`,\"value\":`Yes`}},{\"id\":`he-q31`,\"text\":`Do you plan to use this account for any business or commercial activity?`,\"type\":`yes-no`,\"required\":true}]},{\"id\":`tax-residency`,\"name\":`Tax Residency`,\"condition\":null,\"questions\":[{\"id\":`he-q32`,\"text\":`Is the student funded by any government entity or state-owned enterprise?`,\"type\":`yes-no`,\"required\":true,\"helpText\":`May trigger enhanced due diligence for state-sponsored students`},{\"id\":`he-q33`,\"text\":`If yes, provide the name of the government body/program.`,\"type\":`short-text`,\"required\":false,\"conditional\":{\"field\":`he-q32`,\"value\":`Yes`}},{\"id\":`he-q34`,\"text\":`Are you a U.S. person for tax purposes?`,\"type\":`yes-no`,\"required\":true},{\"id\":`he-q35`,\"text\":`Countries of tax residency.`,\"type\":`multi-select`,\"required\":true,\"options\":`country-picker`},{\"id\":`he-q36`,\"text\":`Tax Identification Number(s).`,\"type\":`short-text`,\"required\":true}]},{\"id\":`declarations`,\"name\":`Declarations \u0026 Consent`,\"condition\":null,\"questions\":[{\"id\":`he-q37`,\"text\":`I confirm all information provided is true, accurate, and complete.`,\"type\":`checkbox`,\"required\":true},{\"id\":`he-q38`,\"text\":`I understand providing false information may result in account closure and reporting to authorities.`,\"type\":`checkbox`,\"required\":true},{\"id\":`he-q39`,\"text\":`I consent to ongoing transaction monitoring.`,\"type\":`checkbox`,\"required\":true},{\"id\":`he-q40`,\"text\":`I agree to update my information if any changes occur (e.g. visa status, funding source).`,\"type\":`checkbox`,\"required\":true},{\"id\":`he-q41`,\"text\":`I consent to information sharing with regulatory authorities as required by law.`,\"type\":`checkbox`,\"required\":true}]}]}};const WORKFLOW_TEMPLATE_COLORS={\"blue\":{\"gradient\":`linear-gradient(135deg, #007AFF, #5AC8FA)`,\"shadow\":`rgba(0, 122, 255, 0.25)`},\"green\":{\"gradient\":`linear-gradient(135deg, #118D57, #36B37E)`,\"shadow\":`rgba(17, 141, 87, 0.25)`},\"brown\":{\"gradient\":`linear-gradient(135deg, #8B6914, #B76E00)`,\"shadow\":`rgba(183, 110, 0, 0.25)`},\"yellow\":{\"gradient\":`linear-gradient(135deg, #D4A017, #F59E0B)`,\"shadow\":`rgba(245, 158, 11, 0.25)`},\"purple\":{\"gradient\":`linear-gradient(135deg, #7635DC, #B066FF)`,\"shadow\":`rgba(118, 53, 220, 0.25)`},\"teal\":{\"gradient\":`linear-gradient(135deg, #00838F, #00BCD4)`,\"shadow\":`rgba(0, 131, 143, 0.25)`},\"rose\":{\"gradient\":`linear-gradient(135deg, #C62828, #E53935)`,\"shadow\":`rgba(198, 40, 40, 0.25)`},\"orange\":{\"gradient\":`linear-gradient(135deg, #F7931A, #FDB84D)`,\"shadow\":`rgba(247, 147, 26, 0.25)`}};const WORKFLOW_TEMPLATES=[{\"id\":`scratch`,\"label\":`Create Your Own`,\"description\":`Build a custom workflow from the ground up`,\"icon\":`solar:cursor-square-bold-duotone`,\"colorCategory\":`blue`,\"features\":[`Full customization`,`Add any services you need`,`Configure each step individually`],\"steps\":[]},{\"id\":`dual-id-verification`,\"label\":`Basic KYC`,\"description\":`Simple identity verification workflow for basic know-your-customer requirements`,\"icon\":`solar:verified-check-bold-duotone`,\"colorCategory\":`blue`,\"features\":[`Easy to set up and configure`,`Linear verification flow`,`Automatic status based on feature results`],\"steps\":[`id-verification`,`face-liveness`,`pep-sanctions`,`adverse-media`],\"meta\":{\"requireSecondaryId\":true}},{\"id\":`fintech-kyc-aml`,\"label\":`Fintech KYC/AML`,\"description\":`Full compliance workflow for financial technology platforms`,\"icon\":`solar:shield-check-bold-duotone`,\"colorCategory\":`green`,\"features\":[`Identity verification`,`PEP/Sanctions screening`,`Bank statement analysis`],\"steps\":[`custom-form`,`id-verification`,`pep-sanctions`,`bank-statement-upload`,`document-upload`]},{\"id\":`loan-origination`,\"label\":`Loan Origination Screening`,\"description\":`End-to-end loan application verification workflow`,\"icon\":`solar:hand-money-bold-duotone`,\"colorCategory\":`green`,\"features\":[`Full identity verification`,`Financial analysis`,`Digital signature collection`],\"steps\":[`custom-form`,`id-verification`,`credit-check`,`bank-statement-upload`,`e-signature`,`document-upload`]},{\"id\":`vehicle-leasing`,\"label\":`Vehicle Leasing`,\"description\":`Comprehensive verification for vehicle leasing applications`,\"icon\":`solar:wheel-bold-duotone`,\"colorCategory\":`green`,\"features\":[`Identity and financial verification`,`Credit assessment`,`E-signature collection`],\"steps\":[`custom-form`,`e-signature`,`id-verification`,`bank-statement-upload`,`credit-check`,`document-upload`]},{\"id\":`crypto-vasp`,\"label\":`Crypto / VASP Onboarding`,\"description\":`AML-compliant onboarding for cryptocurrency and virtual asset platforms`,\"icon\":`mdi:bitcoin`,\"colorCategory\":`green`,\"features\":[`Wallet \u0026 platform history collection`,`Source of funds verification`,`Enhanced transaction monitoring`],\"steps\":[`custom-form`,`id-verification`,`face-liveness`,`pep-sanctions`,`adverse-media`,`document-upload`]},{\"id\":`insurance-underwriting`,\"label\":`Insurance Underwriting`,\"description\":`Identity and risk verification for insurance policy applications`,\"icon\":`solar:shield-plus-bold-duotone`,\"colorCategory\":`green`,\"features\":[`Applicant identity verification`,`Risk questionnaire collection`,`Document submission`],\"steps\":[`custom-form`,`id-verification`,`document-upload`,`e-signature`]},{\"id\":`new-hire-onboarding`,\"label\":`New Hire Onboarding`,\"description\":`Comprehensive employee verification for new hires`,\"icon\":`solar:users-group-rounded-bold-duotone`,\"colorCategory\":`yellow`,\"features\":[`Identity verification`,`Document collection`,`Custom form data`],\"steps\":[`custom-form`,`id-verification`,`document-upload`]},{\"id\":`contractor-verification`,\"label\":`Contractor Verification`,\"description\":`Verify independent contractors and freelancers before engagement`,\"icon\":`solar:case-round-bold-duotone`,\"colorCategory\":`yellow`,\"features\":[`Identity and credential check`,`License and insurance upload`,`E-signature for agreements`],\"steps\":[`custom-form`,`id-verification`,`document-upload`,`e-signature`]},{\"id\":`vulnerable-sector`,\"label\":`Vulnerable Sector Check (Canada Only)`,\"description\":`Enhanced screening for working with vulnerable populations`,\"icon\":`solar:shield-user-bold-duotone`,\"colorCategory\":`yellow`,\"features\":[`Identity verification`,`Custom form collection`,`Enhanced screening`],\"steps\":[`custom-form`,`id-verification`]},{\"id\":`online-gaming`,\"label\":`Online Gaming (18+)`,\"description\":`Age verification workflow for online gaming platforms`,\"icon\":`solar:gamepad-bold-duotone`,\"colorCategory\":`purple`,\"features\":[`Age verification`,`Identity verification`,`Geolocation compliance`],\"steps\":[`id-verification`,`age-estimation`,`custom-form`]},{\"id\":`restricted-content`,\"label\":`Restricted Content`,\"description\":`Age estimation for restricted content access`,\"icon\":`solar:eye-bold-duotone`,\"colorCategory\":`purple`,\"features\":[`AI-based age estimation`,`Quick verification`,`No document upload required`],\"steps\":[`age-estimation`]},{\"id\":`cannabis-dispensary`,\"label\":`Cannabis Dispensary`,\"description\":`Age and identity verification for cannabis retail compliance`,\"icon\":`solar:leaf-bold-duotone`,\"colorCategory\":`purple`,\"features\":[`Age verification (19+/21+)`,`Government ID scan`,`Purchase limit tracking`],\"steps\":[`id-verification`,`age-estimation`,`custom-form`]},{\"id\":`student-enrollment`,\"label\":`Student Enrollment`,\"description\":`Identity and credential verification for higher education admissions`,\"icon\":`solar:square-academic-cap-bold-duotone`,\"colorCategory\":`teal`,\"features\":[`Identity verification`,`Transcript and credential upload`,`International student compliance`],\"steps\":[`custom-form`,`id-verification`,`document-upload`]},{\"id\":`scholarship-application`,\"label\":`Scholarship Application`,\"description\":`Verify applicant identity and financial eligibility for scholarships`,\"icon\":`solar:medal-ribbons-star-bold-duotone`,\"colorCategory\":`teal`,\"features\":[`Financial disclosure form`,`Identity confirmation`,`Supporting document upload`],\"steps\":[`custom-form`,`id-verification`,`document-upload`]},{\"id\":`exam-proctoring`,\"label\":`Exam Proctoring`,\"description\":`Verify test-taker identity before remote examinations`,\"icon\":`solar:monitor-bold-duotone`,\"colorCategory\":`teal`,\"features\":[`Biometric face match`,`Deepfake detection`,`Real-time liveness check`],\"steps\":[`id-verification`,`face-liveness`,`deepfake-detection`]},{\"id\":`online-dating`,\"label\":`Online Dating`,\"description\":`Trust and safety verification for dating and social platforms`,\"icon\":`solar:heart-bold-duotone`,\"colorCategory\":`rose`,\"features\":[`Face liveness verification`,`Deepfake prevention`,`Age confirmation`],\"steps\":[`face-liveness`,`deepfake-detection`,`age-estimation`,`id-verification`]},{\"id\":`marketplace-seller`,\"label\":`Marketplace Seller`,\"description\":`Verify seller identity for online marketplaces and platforms`,\"icon\":`solar:shop-bold-duotone`,\"colorCategory\":`rose`,\"features\":[`Seller identity confirmation`,`Business document upload`,`Agreement e-signature`],\"steps\":[`id-verification`,`custom-form`,`document-upload`,`e-signature`]},{\"id\":`solicitor-kyc`,\"label\":`Solicitor KYC`,\"description\":`Legal sector verification with biometric signatures`,\"icon\":`solar:scale-bold-duotone`,\"colorCategory\":`brown`,\"features\":[`Identity verification`,`Biometric e-signature`,`Secure document transfer`],\"steps\":[`id-verification`,`e-signature`,`document-upload`],\"meta\":{\"biometricEsign\":true}},{\"id\":`realtor-screening`,\"label\":`Realtor Pre-Screening`,\"description\":`Streamlined pre-qualification workflow for real estate transactions`,\"icon\":`solar:home-2-bold-duotone`,\"colorCategory\":`brown`,\"features\":[`Quick client data collection`,`Soft credit pre-qualification`,`Digital agreement signing`],\"steps\":[`custom-form`,`credit-check`,`e-signature`],\"meta\":{\"softCheckOnly\":true}},{\"id\":`notary-verification`,\"label\":`Notary Verification`,\"description\":`Remote online notarization identity verification workflow`,\"icon\":`solar:diploma-bold-duotone`,\"colorCategory\":`brown`,\"features\":[`Biometric identity confirmation`,`Credential-based authentication`,`Tamper-proof e-signature`],\"steps\":[`id-verification`,`face-liveness`,`e-signature`,`document-upload`]},{\"id\":`wallet-verification`,\"label\":`Wallet Verification`,\"description\":`Verify identity and screen connected crypto wallets across chains`,\"icon\":`solar:wallet-bold-duotone`,\"colorCategory\":`orange`,\"features\":[`Multi-chain wallet screening`,`Sanctions, mixer, and darknet exposure`,`Continuous wallet monitoring`],\"steps\":[`id-verification`,`face-liveness`,`crypto-wallet-screening`]},{\"id\":`igaming-compliance`,\"label\":`iGaming Compliance`,\"description\":`Player onboarding with jurisdiction, VPN, injection, and anti-cheat controls`,\"icon\":`solar:gamepad-bold-duotone`,\"colorCategory\":`purple`,\"features\":[`IP jurisdiction enforcement`,`VPN, proxy, and Tor detection`,`Injection and anti-cheat protection`],\"steps\":[`id-verification`,`age-estimation`,`ip-jurisdiction`,`vpn-detection`,`injection-detection`,`anti-cheat`]}];const CANVAS={\"NODE_WIDTH\":280,\"NODE_HEIGHT\":100,\"START_NODE_WIDTH\":120,\"START_NODE_HEIGHT\":50,\"GRID_SIZE\":20,\"MIN_ZOOM\":.15,\"MAX_ZOOM\":2.5,\"ANCHOR_RADIUS\":7,\"MINIMAP_WIDTH\":180,\"MINIMAP_HEIGHT\":130,\"ZOOM_STEP\":.08,\"CORNER_RADIUS\":12,\"ELBOW_GAP\":40,\"ANCHOR_OFFSETS\":[{\"id\":`top`,\"dx\":140,\"dy\":0},{\"id\":`right`,\"dx\":280,\"dy\":50},{\"id\":`bottom`,\"dx\":140,\"dy\":100},{\"id\":`left`,\"dx\":0,\"dy\":50}],\"START_ANCHOR_OFFSETS\":[{\"id\":`bottom`,\"dx\":60,\"dy\":50},{\"id\":`right`,\"dx\":120,\"dy\":25}],\"ANCHOR_DIR\":{\"top\":{\"x\":0,\"y\":-1},\"bottom\":{\"x\":0,\"y\":1},\"left\":{\"x\":-1,\"y\":0},\"right\":{\"x\":1,\"y\":0}}};const WORKFLOW_STEP_TO_SERVICES={\"id-verification\":[`idvVerification`],\"face-liveness\":[`faceliveness`],\"age-estimation\":[`ageEstimation`],\"pep-sanctions\":[`pepSanctions`],\"adverse-media\":[`adverseMedia`],\"bank-statement-upload\":[`bankStatementSync`],\"ai-bank-statement-analysis\":[`aiBankStatementAnalysis`],\"credit-check\":[`creditCheck`],\"deep-doc\":[`deepDoc`],\"document-upload\":[`documentUpload`],\"custom-prompt\":[`customPrompt`],\"custom-form\":[`customForm`],\"deep-sign\":[`deepSign`],\"title-search\":[`titleSearch`],\"phone-verification\":[`phoneVerification`],\"background-check\":[`backgroundCheck`],\"white-label\":[`whiteLabel`],\"address-verification\":[`addressVerification`],\"kyb\":[`kyb`],\"ip-jurisdiction\":[`ipJurisdiction`],\"vpn-detection\":[`vpnDetection`],\"injection-detection\":[`injectionDetection`],\"anti-cheat\":[`antiCheat`]};const SERVICE_REGISTRY={\"idvVerification\":{\"id\":`idvVerification`,\"displayName\":`ID Verification`,\"category\":`identity`,\"defaultCost\":.5,\"unitCost\":.05,\"workflowStepId\":`id-verification`},\"faceliveness\":{\"id\":`faceliveness`,\"displayName\":`Face Liveness`,\"category\":`identity`,\"defaultCost\":.05,\"unitCost\":.005,\"workflowStepId\":`face-liveness`},\"ageEstimation\":{\"id\":`ageEstimation`,\"displayName\":`Age Estimation`,\"category\":`identity`,\"defaultCost\":.05,\"unitCost\":.01,\"workflowStepId\":`age-estimation`},\"pepSanctions\":{\"id\":`pepSanctions`,\"displayName\":`PEP \u0026 Sanctions`,\"category\":`screening`,\"defaultCost\":.4,\"unitCost\":.12,\"workflowStepId\":`pep-sanctions`},\"adverseMedia\":{\"id\":`adverseMedia`,\"displayName\":`Adverse Media`,\"category\":`screening`,\"defaultCost\":.4,\"unitCost\":.12,\"workflowStepId\":`adverse-media`},\"bankStatementSync\":{\"id\":`bankStatementSync`,\"displayName\":`Bank Statement Sync`,\"category\":`financial`,\"defaultCost\":1.1,\"unitCost\":.84,\"workflowStepId\":`bank-statement-upload`},\"aiBankStatementAnalysis\":{\"id\":`aiBankStatementAnalysis`,\"displayName\":`AI Bank Statement Analysis`,\"category\":`financial`,\"defaultCost\":.95,\"unitCost\":.12,\"workflowStepId\":`ai-bank-statement-analysis`},\"creditCheck\":{\"id\":`creditCheck`,\"displayName\":`Credit Check (Hard)`,\"category\":`financial`,\"defaultCost\":10,\"unitCost\":7,\"workflowStepId\":`credit-check`},\"creditCheckSoft\":{\"id\":`creditCheckSoft`,\"displayName\":`Credit Check (Soft)`,\"category\":`financial`,\"defaultCost\":6,\"unitCost\":4,\"workflowStepId\":null},\"deepDoc\":{\"id\":`deepDoc`,\"displayName\":`DeepDoc`,\"category\":`document`,\"defaultCost\":.05,\"unitCost\":.005,\"workflowStepId\":`deep-doc`},\"documentUpload\":{\"id\":`documentUpload`,\"displayName\":`Document Upload`,\"category\":`document`,\"defaultCost\":.05,\"unitCost\":.0025,\"workflowStepId\":`document-upload`},\"customPrompt\":{\"id\":`customPrompt`,\"displayName\":`Custom Prompt`,\"category\":`document`,\"defaultCost\":.05,\"unitCost\":.0025,\"workflowStepId\":`custom-prompt`},\"customForm\":{\"id\":`customForm`,\"displayName\":`Custom Form`,\"category\":`document`,\"defaultCost\":.05,\"unitCost\":.0025,\"workflowStepId\":`custom-form`},\"deepSign\":{\"id\":`deepSign`,\"displayName\":`DeepSign`,\"category\":`signing`,\"defaultCost\":.1,\"unitCost\":.005,\"workflowStepId\":`deep-sign`},\"eSignVerification\":{\"id\":`eSignVerification`,\"displayName\":`E-Sign Verification`,\"category\":`signing`,\"defaultCost\":.3,\"unitCost\":.1,\"workflowStepId\":null},\"titleSearch\":{\"id\":`titleSearch`,\"displayName\":`Title Search`,\"category\":`other`,\"defaultCost\":.8,\"unitCost\":.35,\"workflowStepId\":`title-search`},\"phoneVerification\":{\"id\":`phoneVerification`,\"displayName\":`Phone Verification`,\"category\":`identity`,\"defaultCost\":.4,\"unitCost\":.1,\"workflowStepId\":`phone-verification`},\"documentRiskAnalysis\":{\"id\":`documentRiskAnalysis`,\"displayName\":`Document Risk AI Analysis`,\"category\":`document`,\"defaultCost\":.4,\"unitCost\":.1,\"workflowStepId\":null},\"backgroundCheck\":{\"id\":`backgroundCheck`,\"displayName\":`Background Check`,\"category\":`screening`,\"defaultCost\":25,\"unitCost\":18,\"workflowStepId\":`background-check`},\"whiteLabel\":{\"id\":`whiteLabel`,\"displayName\":`White Label`,\"category\":`other`,\"defaultCost\":.5,\"unitCost\":0,\"workflowStepId\":`white-label`},\"bankStatementReport\":{\"id\":`bankStatementReport`,\"displayName\":`Bank Statement Report`,\"category\":`financial`,\"defaultCost\":.15,\"unitCost\":.05,\"workflowStepId\":null},\"deepfakeDetection\":{\"id\":`deepfakeDetection`,\"displayName\":`Deepfake Detection`,\"category\":`identity`,\"defaultCost\":.6,\"unitCost\":.012,\"workflowStepId\":null},\"addressVerification\":{\"id\":`addressVerification`,\"displayName\":`Address Verification`,\"category\":`identity`,\"defaultCost\":.4,\"unitCost\":.1,\"workflowStepId\":`address-verification`},\"kyb\":{\"id\":`kyb`,\"displayName\":`Know Your Business (KYB)`,\"category\":`screening`,\"defaultCost\":4,\"unitCost\":2,\"workflowStepId\":`kyb`},\"ipJurisdiction\":{\"id\":`ipJurisdiction`,\"displayName\":`IP Jurisdiction`,\"category\":`screening`,\"defaultCost\":.05,\"unitCost\":1e-4,\"workflowStepId\":`ip-jurisdiction`},\"vpnDetection\":{\"id\":`vpnDetection`,\"displayName\":`VPN Detection`,\"category\":`screening`,\"defaultCost\":.05,\"unitCost\":1e-4,\"workflowStepId\":`vpn-detection`},\"injectionDetection\":{\"id\":`injectionDetection`,\"displayName\":`Injection Detection`,\"category\":`identity`,\"defaultCost\":.05,\"unitCost\":1e-4,\"workflowStepId\":`injection-detection`},\"antiCheat\":{\"id\":`antiCheat`,\"displayName\":`Anti-Cheat`,\"category\":`identity`,\"defaultCost\":.1,\"unitCost\":.003,\"workflowStepId\":`anti-cheat`},\"idDocumentScan\":{\"id\":`idDocumentScan`,\"displayName\":`ID Document Scan`,\"category\":`identity`,\"defaultCost\":.01,\"unitCost\":.0025,\"workflowStepId\":null},\"detectFaces\":{\"id\":`detectFaces`,\"displayName\":`Detect Faces`,\"category\":`identity`,\"defaultCost\":.01,\"unitCost\":.001,\"workflowStepId\":null},\"compareFaces\":{\"id\":`compareFaces`,\"displayName\":`Compare Faces`,\"category\":`identity`,\"defaultCost\":.01,\"unitCost\":.001,\"workflowStepId\":null},\"detectText\":{\"id\":`detectText`,\"displayName\":`Detect Text`,\"category\":`identity`,\"defaultCost\":.01,\"unitCost\":.001,\"workflowStepId\":null}};const PROOFCALL_QUESTION_TEMPLATES={\"employment\":[`Can you confirm that [name] was employed at your organization?`,`What was their job title or role?`,`What were the approximate dates of employment?`,`Was this full-time, part-time, or contract?`,`Would you consider this person eligible for rehire?`],\"education\":[`Can you confirm that [name] attended your institution?`,`What degree or program were they enrolled in?`,`What were their approximate dates of attendance?`,`Did they complete the program and graduate?`,`Can you confirm their field of study or major?`],\"reference\":[`How do you know [name] and in what capacity?`,`How long have you known or worked with this person?`,`How would you describe their work ethic and reliability?`,`What are their key strengths in a professional setting?`,`Is there anything else you think we should know?`]};const ESIGN_MAX_SIGNERS=15;const ESIGN_TEMPLATE_DEFAULT_SIGNERS=[`Signer 1`,`Signer 2`,`Signer 3`];const E_SIGNATURE_FIELD_TYPES=[{\"value\":`signature`,\"label\":`Signature`,\"inputType\":`signature`,\"category\":`signature`,\"icon\":`fa7-solid:signature`},{\"value\":`initial`,\"label\":`Initials`,\"inputType\":`initials`,\"category\":`signature`,\"icon\":`fluent:rename-a-20-filled`},{\"value\":`date_signed`,\"label\":`Date Signed`,\"inputType\":`text`,\"category\":`auto_fill`,\"icon\":`solar:calendar-bold-duotone`},{\"value\":`full_name`,\"label\":`Full Name`,\"inputType\":`text`,\"category\":`auto_fill`,\"icon\":`lets-icons:user-box-duotone`},{\"value\":`email`,\"label\":`Email Address`,\"inputType\":`text`,\"category\":`auto_fill`,\"icon\":`solar:letter-bold`},{\"value\":`address`,\"label\":`Address`,\"inputType\":`text`,\"category\":`auto_fill`,\"icon\":`fa6-solid:location-dot`},{\"value\":`company`,\"label\":`Company`,\"inputType\":`text`,\"category\":`auto_fill`,\"icon\":`mingcute:bank-fill`},{\"value\":`title`,\"label\":`Title`,\"inputType\":`text`,\"category\":`auto_fill`,\"icon\":`streamline-flex:bag-suitcase-4-remix`},{\"value\":`textbox`,\"label\":`Text Box`,\"inputType\":`text`,\"category\":`standard`,\"icon\":`ci:font`},{\"value\":`dropdown`,\"label\":`Dropdown`,\"inputType\":`dropdown`,\"category\":`standard`,\"icon\":`solar:double-alt-arrow-down-bold-duotone`},{\"value\":`checkbox`,\"label\":`Checkbox`,\"inputType\":`checkbox`,\"category\":`standard`,\"icon\":`mingcute:checkbox-fill`},{\"value\":`radio`,\"label\":`Radio`,\"inputType\":`radio`,\"category\":`standard`,\"icon\":`icon-park-solid:radio-two`}];const ESIGN_OVERLAY_BASES={\"TEXT\":{\"W\":200,\"H\":36},\"SIGN\":{\"W\":120,\"H\":36},\"INIT\":{\"W\":100,\"H\":36},\"BOX\":18,\"GAP\":24,\"PAD\":4};const ESIGN_OVERLAY_BASE_W=800;const DEEPIDV_COLOR_PALETTE={\"palette\":{\"primary\":{\"box\":`#ebf5fc`,\"boxBorder\":`#e1f0fa`,\"lighter\":`#09b8EF`,\"light\":`#089AEA`,\"main\":`#0781DF`,\"dark\":`#0676CC`,\"darker\":`#002A48`,\"contrastText\":`#FFFFFF`},\"secondary\":{\"lighter\":`#EFD6FF`,\"light\":`#C684FF`,\"main\":`#8E33FF`,\"dark\":`#5119B7`,\"darker\":`#27097A`,\"contrastText\":`#FFFFFF`},\"info\":{\"lighter\":`#CAFDF5`,\"light\":`#61F3F3`,\"main\":`#00B8D9`,\"dark\":`#006C9C`,\"darker\":`#003768`,\"contrastText\":`#FFFFFF`},\"success\":{\"lighter\":`#D3FCD2`,\"light\":`#77ED8B`,\"main\":`#22C55E`,\"dark\":`#118D57`,\"darker\":`#065E49`,\"contrastText\":`#ffffff`},\"warning\":{\"lighter\":`#FFF5CC`,\"light\":`#FFD666`,\"main\":`#FFAB00`,\"dark\":`#B76E00`,\"darker\":`#7A4100`,\"contrastText\":`#1C252E`},\"error\":{\"lighter\":`#FFE9D5`,\"light\":`#FFAC82`,\"main\":`#FF5630`,\"dark\":`#B71D18`,\"darker\":`#7A0916`,\"contrastText\":`#FFFFFF`},\"grey\":{\"50\":`#FCFDFD`,\"100\":`#F9FAFB`,\"200\":`#F4F6F8`,\"300\":`#DFE3E8`,\"400\":`#C4CDD5`,\"500\":`#919EAB`,\"600\":`#637381`,\"700\":`#454F5B`,\"800\":`#1C252E`,\"900\":`#141A21`},\"common\":{\"black\":`#000000`,\"white\":`#FFFFFF`}}};const VERIFY_COLORS={\"primary\":`#0782DF`,\"primaryLight\":`#E8F4FD`,\"primaryDark\":`#0676CC`,\"success\":`#22C55E`,\"successDark\":`#118D57`,\"error\":`#FF5630`,\"bgLight\":`#F3F4F6`,\"textPrimary\":`#1E293B`,\"textSecondary\":`#64748B`,\"textDisabled\":`#94A3B8`};const DEVICE_SIZES={\"mobile\":{\"width\":390,\"height\":760},\"desktop\":{\"width\":700,\"height\":560}};const DEEP_AGE_METHODS=[{\"value\":`intel-quiz`,\"label\":`Knowledge Quiz`,\"hint\":`Age-correlated questions`},{\"value\":`credit-card`,\"label\":`Credit Card Check`,\"hint\":`Card issuance proves 18+`},{\"value\":`parent-connect`,\"label\":`Parent Connect`,\"hint\":`Parental consent for minors`}];const AGE_RESTRICTION_CATEGORIES=[{\"id\":`online-gaming`,\"label\":`Online Gaming / Gambling`,\"dataKey\":`onlineGaming`},{\"id\":`alcohol-tobacco`,\"label\":`Alcohol / Tobacco`,\"dataKey\":`alcoholTobacco`},{\"id\":`adult-content`,\"label\":`Adult Content`,\"dataKey\":`adultContent`}];const AGE_RESTRICTION_COUNTRY_DATA=[{\"country\":`Afghanistan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Albania`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Algeria`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Andorra`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Angola`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Antigua and Barbuda`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Argentina`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Armenia`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Australia`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Austria`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Azerbaijan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Bahamas`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Bahrain`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Bangladesh`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Barbados`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Belarus`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Belgium`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Belize`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Benin`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Bhutan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Bolivia`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Bosnia and Herzegovina`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Botswana`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Brazil`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Brunei`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Bulgaria`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Burkina Faso`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Burundi`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Cabo Verde`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Cambodia`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Cameroon`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Canada`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Central African Republic`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Chad`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Chile`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`China`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Colombia`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Comoros`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Congo (Brazzaville)`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Congo (Kinshasa)`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Costa Rica`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Croatia`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Cuba`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Cyprus`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Czech Republic`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Denmark`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Djibouti`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Dominica`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Dominican Republic`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Ecuador`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Egypt`,\"continent\":`Africa`,\"onlineGaming\":21,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`El Salvador`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Equatorial Guinea`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Eritrea`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Estonia`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Eswatini`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Ethiopia`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Fiji`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Finland`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`France`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Gabon`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Gambia`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Georgia`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Germany`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Ghana`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Greece`,\"continent\":`Europe`,\"onlineGaming\":21,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Grenada`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Guatemala`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Guinea`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Guinea-Bissau`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Guyana`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Haiti`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Honduras`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Hungary`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Iceland`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":20,\"spirits\":20},\"adultContent\":18},{\"country\":`India`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Indonesia`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Iran`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Iraq`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Ireland`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Israel`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Italy`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Ivory Coast`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Jamaica`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Japan`,\"continent\":`Asia`,\"onlineGaming\":20,\"alcoholTobacco\":{\"beer\":20,\"spirits\":20},\"adultContent\":18},{\"country\":`Jordan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Kazakhstan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Kenya`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Kiribati`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Kosovo`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Kuwait`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Kyrgyzstan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Laos`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Latvia`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Lebanon`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Lesotho`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Liberia`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Libya`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Liechtenstein`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Lithuania`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":20,\"spirits\":20},\"adultContent\":18},{\"country\":`Luxembourg`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":16,\"spirits\":16},\"adultContent\":18},{\"country\":`Madagascar`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Malawi`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Malaysia`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Maldives`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Mali`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Malta`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Marshall Islands`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Mauritania`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Mauritius`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Mexico`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Micronesia`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Moldova`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Monaco`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Mongolia`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Montenegro`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Morocco`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Mozambique`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Myanmar`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Namibia`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Nauru`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Nepal`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Netherlands`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`New Zealand`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Nicaragua`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Niger`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Nigeria`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`North Korea`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`North Macedonia`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Norway`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Oman`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Pakistan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Palau`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Palestine`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Panama`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Papua New Guinea`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Paraguay`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":20,\"spirits\":20},\"adultContent\":18},{\"country\":`Peru`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Philippines`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Poland`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Portugal`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Qatar`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Romania`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Russia`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Rwanda`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Saint Kitts and Nevis`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Saint Lucia`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Saint Vincent and the Grenadines`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Samoa`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`San Marino`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Sao Tome and Principe`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Saudi Arabia`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Senegal`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Serbia`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Seychelles`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Sierra Leone`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Singapore`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":21},{\"country\":`Slovakia`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Slovenia`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Solomon Islands`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Somalia`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`South Africa`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`South Korea`,\"continent\":`Asia`,\"onlineGaming\":19,\"alcoholTobacco\":{\"beer\":19,\"spirits\":19},\"adultContent\":19},{\"country\":`South Sudan`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Spain`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Sri Lanka`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Sudan`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Suriname`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Sweden`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Switzerland`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Syria`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Taiwan`,\"continent\":`Asia`,\"onlineGaming\":20,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Tajikistan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Tanzania`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Thailand`,\"continent\":`Asia`,\"onlineGaming\":20,\"alcoholTobacco\":{\"beer\":20,\"spirits\":20},\"adultContent\":20},{\"country\":`Timor-Leste`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Togo`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Tonga`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Trinidad and Tobago`,\"continent\":`North America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Tunisia`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Turkey`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Turkmenistan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Tuvalu`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Uganda`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Ukraine`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`United Arab Emirates`,\"continent\":`Asia`,\"onlineGaming\":21,\"alcoholTobacco\":null,\"adultContent\":21},{\"country\":`United Kingdom`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`United States`,\"continent\":`North America`,\"onlineGaming\":21,\"alcoholTobacco\":{\"beer\":21,\"spirits\":21},\"adultContent\":18},{\"country\":`Uruguay`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Uzbekistan`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":20,\"spirits\":20},\"adultContent\":18},{\"country\":`Vanuatu`,\"continent\":`Oceania`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Vatican City`,\"continent\":`Europe`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Venezuela`,\"continent\":`South America`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Vietnam`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Yemen`,\"continent\":`Asia`,\"onlineGaming\":18,\"alcoholTobacco\":null,\"adultContent\":18},{\"country\":`Zambia`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18},{\"country\":`Zimbabwe`,\"continent\":`Africa`,\"onlineGaming\":18,\"alcoholTobacco\":{\"beer\":18,\"spirits\":18},\"adultContent\":18}];const CUSTOM_FORM_MAX_OPTIONS=10;const CUSTOM_FORM_FIELD_TYPE_DEFAULT=`short-text`;const CUSTOM_FORM_FIELD_TYPES=[{\"id\":`short-text`,\"label\":`Short Text`,\"icon\":`solar:text-field-bold`,\"hasOptions\":false},{\"id\":`dropdown`,\"label\":`Dropdown Select`,\"icon\":`solar:alt-arrow-down-bold`,\"hasOptions\":true,\"maxOptions\":10},{\"id\":`checkbox`,\"label\":`Checkbox Select`,\"icon\":`solar:check-square-bold`,\"hasOptions\":true,\"maxOptions\":10},{\"id\":`yes-no`,\"label\":`Yes/No Select`,\"icon\":`solar:check-circle-bold`,\"hasOptions\":false},{\"id\":`date`,\"label\":`Date Select`,\"icon\":`solar:calendar-bold`,\"hasOptions\":false},{\"id\":`number`,\"label\":`Number Input`,\"icon\":`solar:hashtag-bold`,\"hasOptions\":false}];const STEP_ICON_GRADIENTS={\"id-verification\":`linear-gradient(135deg, #007AFF, #5AC8FA)`,\"face-liveness\":`linear-gradient(135deg, #AF52DE, #DA8FFF)`,\"deepfake-detection\":`linear-gradient(135deg, #FF2D55, #FF6961)`,\"age-estimation\":`linear-gradient(135deg, #FF9500, #FFBD44)`,\"pep-sanctions\":`linear-gradient(135deg, #34C759, #63E888)`,\"adverse-media\":`linear-gradient(135deg, #FF3B30, #FF6B6B)`,\"bank-statement-upload\":`linear-gradient(135deg, #FF9500, #FFBD44)`,\"ai-bank-statement-analysis\":`linear-gradient(135deg, #FF9500, #FFBD44)`,\"nfc-verification\":`linear-gradient(135deg, #5856D6, #8B89E0)`,\"passport-nfc-scanner\":`linear-gradient(135deg, #5856D6, #8B89E0)`,\"custom-prompt\":`linear-gradient(135deg, #FF2D55, #FF6B81)`,\"custom-form\":`linear-gradient(135deg, #FF2D55, #FF6B81)`,\"document-upload\":`linear-gradient(135deg, #00C7BE, #63E6D4)`,\"title-search\":`linear-gradient(135deg, #5856D6, #8B89E0)`,\"e-signature\":`linear-gradient(135deg, #30B0C7, #64D2FF)`,\"consent\":`linear-gradient(135deg, #34C759, #63E888)`,\"credit-check\":`linear-gradient(135deg, #FF9F0A, #FFBD44)`,\"criminal-background-check\":`linear-gradient(135deg, #5856D6, #8B89E0)`,\"vulnerable-sector-check\":`linear-gradient(135deg, #AF52DE, #DA8FFF)`,\"financial-crime-check\":`linear-gradient(135deg, #FF3B30, #FF6B6B)`,\"phone-verification\":`linear-gradient(135deg, #7C3AED, #A78BFA)`,\"proofcall\":`linear-gradient(135deg, #6D4C2A, #A0744F)`,\"education-confirmation\":`linear-gradient(135deg, #E91E63, #F48FB1)`,\"kyb\":`linear-gradient(135deg, #8B6914, #C49B2A)`,\"white-label\":`linear-gradient(135deg, #5856D6, #AF52DE)`,\"address-verification\":`linear-gradient(135deg, #0781DF, #36A3F7)`,\"crypto-wallet-screening\":`linear-gradient(135deg, #F7931A, #FDB84D)`,\"phone-trust-check\":`linear-gradient(135deg, #30B0C7, #5AC8FA)`,\"carrier-age-gate\":`linear-gradient(135deg, #34C759, #63E888)`,\"phone-ownership-match\":`linear-gradient(135deg, #5856D6, #8B89E0)`,\"ip-jurisdiction\":`linear-gradient(135deg, #00838F, #00BCD4)`,\"vpn-detection\":`linear-gradient(135deg, #5856D6, #7D7BFF)`,\"vpn-check\":`linear-gradient(135deg, #5856D6, #7D7BFF)`,\"ip-geo-check\":`linear-gradient(135deg, #00838F, #00BCD4)`,\"injection-detection\":`linear-gradient(135deg, #FF3B30, #FF6961)`,\"anti-cheat\":`linear-gradient(135deg, #AF52DE, #DA8FFF)`,\"deep-age\":`linear-gradient(135deg, #FF6B00, #FFA347)`};const SERVICE_TYPES={\"ID_VERIFICATION\":`ID_VERIFICATION`,\"PEP_SANCTIONS\":`PEP_SANCTIONS`,\"FACELIVENESS\":`FACELIVENESS`,\"AML_STATUS\":`AML_STATUS`,\"DEEP_SIGN\":`DEEP_SIGN`,\"DEEP_DOC\":`DEEP_DOC`,\"AGE_ESTIMATION\":`AGE_ESTIMATION`,\"WHITE_LABEL\":`WHITE_LABEL`,\"CUSTOM_DOMAIN\":`CUSTOM_DOMAIN`,\"BANK_STATEMENT_SYNC\":`BANK_STATEMENT_SYNC`,\"AI_BANK_STATEMENT_ANALYSIS\":`AI_BANK_STATEMENT_ANALYSIS`,\"ADVERSE_MEDIA\":`ADVERSE_MEDIA`,\"CUSTOM_PROMPT\":`CUSTOM_PROMPT`,\"DOCUMENT_UPLOAD\":`DOCUMENT_UPLOAD`,\"CUSTOM_FORM\":`CUSTOM_FORM`,\"E_SIGNATURE\":`E_SIGNATURE`,\"CONSENT\":`CONSENT`,\"CREDIT_CHECK\":`CREDIT_CHECK`,\"PHONE_VERIFICATION\":`PHONE_VERIFICATION`,\"TITLE_SEARCH\":`TITLE_SEARCH`,\"ADDRESS_VERIFICATION\":`ADDRESS_VERIFICATION`};const SERVICE_COSTS={\"ID_VERIFICATION\":.5,\"PEP_SANCTIONS\":.4,\"ADVERSE_MEDIA\":.4,\"FACELIVENESS\":.05,\"AML_STATUS\":.25,\"DEEP_SIGN\":.1,\"DEEP_DOC\":.05,\"AGE_ESTIMATION\":.05,\"WHITE_LABEL\":.25,\"BANK_STATEMENT_SYNC\":1.1,\"AI_BANK_STATEMENT_ANALYSIS\":.95,\"CUSTOM_PROMPT\":.05,\"DOCUMENT_UPLOAD\":.05,\"DOCUMENT_RISK_AI_ANALYSIS\":.4,\"CUSTOM_FORM\":.05,\"E_SIGNATURE\":.1,\"CONSENT\":.05,\"CREDIT_CHECK\":10,\"CRIMINAL_BACKGROUND_CHECK\":18,\"VULNERABLE_SECTOR_CHECK\":22,\"BACKGROUND_CHECK\":3.5,\"FINANCIAL_CRIME_CHECK\":1.25,\"PHONE_VERIFICATION\":1,\"TITLE_SEARCH\":.8,\"ADDRESS_VERIFICATION\":.5};const WORKFLOW_STEP_TO_SERVICE_MAP={\"id-verification\":`ID_VERIFICATION`,\"pep-sanctions\":`PEP_SANCTIONS`,\"face-liveness\":`FACELIVENESS`,\"deepfake-detection\":`DEEPFAKE_DETECTION`,\"age-estimation\":`AGE_ESTIMATION`,\"bank-statement-upload\":`BANK_STATEMENT_SYNC`,\"ai-bank-statement-analysis\":`AI_BANK_STATEMENT_ANALYSIS`,\"custom-prompt\":`CUSTOM_PROMPT`,\"document-upload\":`DOCUMENT_UPLOAD`,\"adverse-media\":`ADVERSE_MEDIA`,\"custom-form\":`CUSTOM_FORM`,\"e-signature\":`E_SIGNATURE`,\"consent\":`CONSENT`,\"credit-check\":`CREDIT_CHECK`,\"criminal-background-check\":`CRIMINAL_BACKGROUND_CHECK`,\"vulnerable-sector-check\":`VULNERABLE_SECTOR_CHECK`,\"financial-crime-check\":`FINANCIAL_CRIME_CHECK`,\"phone-verification\":`PHONE_VERIFICATION`,\"title-search\":`TITLE_SEARCH`,\"proofcall\":`PROOFCALL`,\"education-confirmation\":`EDUCATION_CONFIRMATION`,\"kyb\":`KYB`,\"white-label\":`WHITE_LABEL`,\"passport-nfc-scanner\":`PASSPORT_NFC_SCANNER`,\"address-verification\":`ADDRESS_VERIFICATION`};const WORKFLOW_STEP_DESCRIPTION_I18N_KEYS={\"id-verification\":`stepDescIdVerification`,\"face-liveness\":`stepDescFaceLiveness`,\"deepfake-detection\":`stepDescDeepfakeDetection`,\"address-verification\":`stepDescAddressVerification`,\"phone-verification\":`stepDescPhoneVerification`,\"age-estimation\":`stepDescAgeEstimation`,\"pep-sanctions\":`stepDescPepSanctions`,\"adverse-media\":`stepDescAdverseMedia`,\"bank-statement-upload\":`stepDescBankStatementUpload`,\"ai-bank-statement-analysis\":`stepDescAiBankStatementAnalysis`,\"nfc-verification\":`stepDescNfcVerification`,\"passport-nfc-scanner\":`stepDescPassportNfcScanner`,\"custom-prompt\":`stepDescCustomPrompt`,\"document-upload\":`stepDescDocumentUpload`,\"title-search\":`stepDescTitleSearch`,\"e-signature\":`stepDescESignature`,\"custom-form\":`stepDescCustomForm`,\"consent\":`stepDescConsent`,\"credit-check\":`stepDescCreditCheck`,\"criminal-background-check\":`stepDescCriminalBackgroundCheck`,\"vulnerable-sector-check\":`stepDescVulnerableSectorCheck`,\"financial-crime-check\":`stepDescFinancialCrimeCheck`,\"education-confirmation\":`stepDescEducationConfirmation`,\"kyb\":`stepDescKyb`,\"white-label\":`stepDescWhiteLabel`,\"ip-jurisdiction\":`stepDescIpJurisdiction`,\"vpn-detection\":`stepDescVpnDetection`,\"injection-detection\":`stepDescInjectionDetection`,\"anti-cheat\":`stepDescAntiCheat`};const WORKFLOW_STEP_I18N_KEYS={\"start-session\":`stepStartSession`,\"end-session\":`stepEndSession`,\"id-verification\":`stepIdVerification`,\"face-liveness\":`stepFaceLiveness`,\"deepfake-detection\":`stepDeepfakeDetection`,\"address-verification\":`stepAddressVerification`,\"phone-verification\":`stepPhoneVerification`,\"age-estimation\":`stepAgeEstimation`,\"pep-sanctions\":`stepPepSanctions`,\"adverse-media\":`stepAdverseMedia`,\"bank-statement-upload\":`stepBankStatementUpload`,\"ai-bank-statement-analysis\":`stepAiBankStatementAnalysis`,\"nfc-verification\":`stepNfcVerification`,\"passport-nfc-scanner\":`stepPassportNfcScanner`,\"custom-prompt\":`stepCustomPrompt`,\"document-upload\":`stepDocumentUpload`,\"title-search\":`stepTitleSearch`,\"e-signature\":`stepESignature`,\"custom-form\":`stepCustomForm`,\"consent\":`stepConsent`,\"credit-check\":`stepCreditCheck`,\"background-check\":`stepBackgroundCheck`,\"criminal-background-check\":`stepCriminalBackgroundCheck`,\"vulnerable-sector-check\":`stepVulnerableSectorCheck`,\"financial-crime-check\":`stepFinancialCrimeCheck`,\"education-confirmation\":`stepEducationConfirmation`,\"kyb\":`stepKyb`,\"white-label\":`stepWhiteLabel`,\"ip-jurisdiction\":`stepIpJurisdiction`,\"vpn-detection\":`stepVpnDetection`,\"injection-detection\":`stepInjectionDetection`,\"anti-cheat\":`stepAntiCheat`,\"master-verification\":`stepMasterVerification`};const COUPLED_PROPERTY_OVERRIDES={\"background-check\":{\"id-verification\":{\"id-scan-settings\":{\"require-secondary-id\":{\"value\":true,\"locked\":true}},\"valid-id-types-settings\":{\"valid-id-types\":{\"value\":{\"driver-license-ca\":true,\"passport-ca\":true,\"pr-card-ca\":false,\"military-id-ca\":false,\"firearm-license-ca\":false,\"nexus-card-ca\":false,\"driver-license-us\":true,\"passport-us\":true,\"pr-card-us\":false,\"military-id-us\":false,\"firearm-license-us\":false,\"nexus-card-us\":false,\"driver-license-mx\":true,\"passport-mx\":true,\"national-id-mx\":false,\"passport-eu\":true,\"driver-license-eu\":true,\"national-id-eu\":false,\"residence-permit-eu\":false,\"military-id-eu\":false,\"passport-sa\":true,\"driver-license-sa\":true,\"national-id-sa\":false,\"passport-as\":true,\"driver-license-as\":true,\"national-id-as\":false,\"aadhaar-in\":false,\"pan-card-in\":false,\"passport-af\":true,\"driver-license-af\":true,\"national-id-af\":false,\"passport-oc\":true,\"driver-license-oc\":true,\"national-id-oc\":false,\"medicare-card-au\":false},\"locked\":true}}}}};const COUPLED_STEPS={\"bank-statement-upload\":[`ai-bank-statement-analysis`],\"ai-bank-statement-analysis\":[`bank-statement-upload`],\"background-check\":[`id-verification`],\"criminal-background-check\":[`id-verification`],\"credit-check\":[`id-verification`]};const BOTTOM_PINNED_STEP_IDS=[`bank-statement-upload`,`ai-bank-statement-analysis`,`credit-check`,`background-check`,`criminal-background-check`];const WORKFLOW_MIN_STEPS=1;const WORKFLOW_STEPS_DISABLED={\"start-session\":true,\"end-session\":true,\"add-step\":true};const WORKFLOW_STEPS_OPTIONS=[{\"id\":`id-verification`,\"label\":`ID Verification`,\"description\":`Verify government-issued identity documents`,\"icon\":`solar:user-id-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[{\"groupId\":`fraud-analysis-settings`,\"groupName\":`Fraud Analysis`,\"groupTooltip\":`Activate our fraud prevention to ensure identification is authentic.`,\"properties\":[{\"id\":`enable-fraud-analysis`,\"label\":`Enable Fraud Analysis`,\"sublabel\":`Activate our fraud prevention to ensure identification is authentic. (This will add $0.60 to the session cost)`,\"type\":`boolean`,\"value\":false}]},{\"groupId\":`fraud-analysis-escalation`,\"groupName\":`Escalation`,\"groupTooltip\":`Trigger an extra verification action when Fraud Analysis returns a high-risk result.`,\"parentToggle\":`enable-fraud-analysis`,\"properties\":[{\"id\":`escalation-type`,\"label\":`Escalation type`,\"type\":`select`,\"value\":`none`,\"options\":[{\"value\":`none`,\"label\":`None`},{\"value\":`nfc-passport`,\"label\":`Passport NFC Scan`},{\"value\":`address-verification`,\"label\":`Address Verification Quiz`}]},{\"id\":`escalation-risk-threshold`,\"label\":`Trigger when risk is at or above`,\"type\":`slider`,\"value\":60,\"min\":0,\"max\":100,\"step\":5,\"unit\":`%`,\"marks\":[{\"value\":0,\"label\":`0%`},{\"value\":25,\"label\":`25%`},{\"value\":50,\"label\":`50%`},{\"value\":60,\"label\":`60%`},{\"value\":75,\"label\":`75%`},{\"value\":100,\"label\":`100%`}],\"requirement\":{\"id\":`escalation-type`,\"notEquals\":`none`}}]},{\"groupId\":`id-scan-settings`,\"groupName\":`Additional Required Documents`,\"groupTooltip\":`Enable the requesting of additional documents.`,\"properties\":[{\"id\":`require-secondary-id`,\"label\":`Require Secondary ID`,\"type\":`boolean`,\"value\":false},{\"id\":`require-tertiary-id`,\"label\":`Require Tertiary ID`,\"type\":`boolean`,\"value\":false,\"requirement\":`require-secondary-id`}]},{\"groupId\":`id-scan-face-settings`,\"groupName\":`Required ID Faces`,\"groupTooltip\":`Select which faces of the ID document(s) are required for verification.`,\"properties\":[{\"id\":`require-front-only`,\"label\":`Require Front Only`,\"type\":`boolean`,\"value\":false,\"disabled\":false}]},{\"groupId\":`face-scan-settings`,\"groupName\":`Face Photos`,\"groupTooltip\":`Specify which face photos are required.`,\"properties\":[{\"id\":`face-front-photo-only`,\"label\":`Front Photo Only`,\"type\":`boolean`,\"value\":true}]},{\"groupId\":`age-restriction-settings`,\"groupName\":`Age Restriction`,\"groupTooltip\":`Set age requirements for this verification step.`,\"properties\":[{\"id\":`age-restriction-mode`,\"label\":`Mode`,\"type\":`hidden`,\"value\":`slider`},{\"id\":`minimum-age`,\"label\":`Minimum Age`,\"type\":`range`,\"value\":[18,100],\"min\":0,\"max\":100,\"lowerLabel\":`Too young`,\"upperLabel\":`Too old`},{\"id\":`country-category-restrictions`,\"label\":`Country \u0026 Category Rules`,\"type\":`age-restriction-country-category`,\"value\":[]},{\"id\":`country-category-minimum-age`,\"label\":`Overall Minimum Age`,\"type\":`hidden`,\"value\":null}]},{\"groupId\":`expiry-date-settings`,\"groupName\":`Minimum ID Validity`,\"groupTooltip\":`Set the minimum number of days an ID must remain valid after the date of submission.`,\"properties\":[{\"id\":`expiry-date`,\"label\":`Expiry Date`,\"type\":`slider`,\"value\":2,\"marks\":[{\"value\":0,\"label\":`None`},{\"value\":1,\"label\":`30 days`},{\"value\":2,\"label\":`60 days`},{\"value\":3,\"label\":`180 days`},{\"value\":4,\"label\":`1 year`}],\"min\":0,\"max\":4,\"step\":1}]},{\"groupId\":`valid-countries-settings`,\"groupName\":`Valid Countries`,\"groupTooltip\":`Choose which countries are accepted for ID verification.`,\"properties\":[{\"id\":`accept-all-countries`,\"label\":`Accept All Countries`,\"type\":`boolean`,\"value\":true},{\"id\":`valid-countries`,\"type\":`country-customize`,\"label\":`Customize Countries`,\"value\":{},\"countries\":[{\"id\":`na-countries`,\"category\":`North America`,\"description\":`North American countries`,\"categoryOptions\":[{\"id\":`CA`,\"name\":`Canada`},{\"id\":`US`,\"name\":`United States`},{\"id\":`MX`,\"name\":`Mexico`},{\"id\":`GT`,\"name\":`Guatemala`},{\"id\":`BZ`,\"name\":`Belize`},{\"id\":`HN`,\"name\":`Honduras`},{\"id\":`SV`,\"name\":`El Salvador`},{\"id\":`NI`,\"name\":`Nicaragua`},{\"id\":`CR`,\"name\":`Costa Rica`},{\"id\":`PA`,\"name\":`Panama`},{\"id\":`CU`,\"name\":`Cuba`},{\"id\":`JM`,\"name\":`Jamaica`},{\"id\":`HT`,\"name\":`Haiti`},{\"id\":`DO`,\"name\":`Dominican Republic`},{\"id\":`TT`,\"name\":`Trinidad and Tobago`},{\"id\":`BS`,\"name\":`Bahamas`},{\"id\":`BB`,\"name\":`Barbados`},{\"id\":`PR`,\"name\":`Puerto Rico`}]},{\"id\":`eu-countries`,\"category\":`Europe`,\"description\":`European countries`,\"categoryOptions\":[{\"id\":`GB`,\"name\":`United Kingdom`},{\"id\":`DE`,\"name\":`Germany`},{\"id\":`FR`,\"name\":`France`},{\"id\":`IT`,\"name\":`Italy`},{\"id\":`ES`,\"name\":`Spain`},{\"id\":`PT`,\"name\":`Portugal`},{\"id\":`NL`,\"name\":`Netherlands`},{\"id\":`BE`,\"name\":`Belgium`},{\"id\":`CH`,\"name\":`Switzerland`},{\"id\":`AT`,\"name\":`Austria`},{\"id\":`SE`,\"name\":`Sweden`},{\"id\":`NO`,\"name\":`Norway`},{\"id\":`DK`,\"name\":`Denmark`},{\"id\":`FI`,\"name\":`Finland`},{\"id\":`IE`,\"name\":`Ireland`},{\"id\":`PL`,\"name\":`Poland`},{\"id\":`CZ`,\"name\":`Czech Republic`},{\"id\":`RO`,\"name\":`Romania`},{\"id\":`GR`,\"name\":`Greece`},{\"id\":`HU`,\"name\":`Hungary`},{\"id\":`BG`,\"name\":`Bulgaria`},{\"id\":`HR`,\"name\":`Croatia`},{\"id\":`SK`,\"name\":`Slovakia`},{\"id\":`SI`,\"name\":`Slovenia`},{\"id\":`LT`,\"name\":`Lithuania`},{\"id\":`LV`,\"name\":`Latvia`},{\"id\":`EE`,\"name\":`Estonia`},{\"id\":`LU`,\"name\":`Luxembourg`},{\"id\":`MT`,\"name\":`Malta`},{\"id\":`CY`,\"name\":`Cyprus`},{\"id\":`IS`,\"name\":`Iceland`},{\"id\":`UA`,\"name\":`Ukraine`},{\"id\":`RS`,\"name\":`Serbia`},{\"id\":`BA`,\"name\":`Bosnia and Herzegovina`},{\"id\":`AL`,\"name\":`Albania`},{\"id\":`MK`,\"name\":`North Macedonia`},{\"id\":`ME`,\"name\":`Montenegro`},{\"id\":`MD`,\"name\":`Moldova`},{\"id\":`GE`,\"name\":`Georgia`},{\"id\":`AM`,\"name\":`Armenia`},{\"id\":`RU`,\"name\":`Russia`},{\"id\":`TR`,\"name\":`Turkey`}]},{\"id\":`sa-countries`,\"category\":`South America`,\"description\":`South American countries`,\"categoryOptions\":[{\"id\":`BR`,\"name\":`Brazil`},{\"id\":`AR`,\"name\":`Argentina`},{\"id\":`CO`,\"name\":`Colombia`},{\"id\":`CL`,\"name\":`Chile`},{\"id\":`PE`,\"name\":`Peru`},{\"id\":`VE`,\"name\":`Venezuela`},{\"id\":`EC`,\"name\":`Ecuador`},{\"id\":`BO`,\"name\":`Bolivia`},{\"id\":`PY`,\"name\":`Paraguay`},{\"id\":`UY`,\"name\":`Uruguay`},{\"id\":`GY`,\"name\":`Guyana`},{\"id\":`SR`,\"name\":`Suriname`}]},{\"id\":`as-countries`,\"category\":`Asia`,\"description\":`Asian countries`,\"categoryOptions\":[{\"id\":`CN`,\"name\":`China`},{\"id\":`JP`,\"name\":`Japan`},{\"id\":`KR`,\"name\":`South Korea`},{\"id\":`IN`,\"name\":`India`},{\"id\":`ID`,\"name\":`Indonesia`},{\"id\":`TH`,\"name\":`Thailand`},{\"id\":`VN`,\"name\":`Vietnam`},{\"id\":`PH`,\"name\":`Philippines`},{\"id\":`MY`,\"name\":`Malaysia`},{\"id\":`SG`,\"name\":`Singapore`},{\"id\":`PK`,\"name\":`Pakistan`},{\"id\":`BD`,\"name\":`Bangladesh`},{\"id\":`LK`,\"name\":`Sri Lanka`},{\"id\":`NP`,\"name\":`Nepal`},{\"id\":`MM`,\"name\":`Myanmar`},{\"id\":`KH`,\"name\":`Cambodia`},{\"id\":`LA`,\"name\":`Laos`},{\"id\":`MN`,\"name\":`Mongolia`},{\"id\":`TW`,\"name\":`Taiwan`},{\"id\":`HK`,\"name\":`Hong Kong`},{\"id\":`SA`,\"name\":`Saudi Arabia`},{\"id\":`AE`,\"name\":`United Arab Emirates`},{\"id\":`QA`,\"name\":`Qatar`},{\"id\":`KW`,\"name\":`Kuwait`},{\"id\":`BH`,\"name\":`Bahrain`},{\"id\":`OM`,\"name\":`Oman`},{\"id\":`JO`,\"name\":`Jordan`},{\"id\":`LB`,\"name\":`Lebanon`},{\"id\":`IL`,\"name\":`Israel`},{\"id\":`IQ`,\"name\":`Iraq`},{\"id\":`IR`,\"name\":`Iran`},{\"id\":`AF`,\"name\":`Afghanistan`},{\"id\":`UZ`,\"name\":`Uzbekistan`},{\"id\":`KZ`,\"name\":`Kazakhstan`},{\"id\":`AZ`,\"name\":`Azerbaijan`}]},{\"id\":`af-countries`,\"category\":`Africa`,\"description\":`African countries`,\"categoryOptions\":[{\"id\":`ZA`,\"name\":`South Africa`},{\"id\":`NG`,\"name\":`Nigeria`},{\"id\":`KE`,\"name\":`Kenya`},{\"id\":`EG`,\"name\":`Egypt`},{\"id\":`ET`,\"name\":`Ethiopia`},{\"id\":`GH`,\"name\":`Ghana`},{\"id\":`TZ`,\"name\":`Tanzania`},{\"id\":`UG`,\"name\":`Uganda`},{\"id\":`RW`,\"name\":`Rwanda`},{\"id\":`SN`,\"name\":`Senegal`},{\"id\":`CI`,\"name\":`Cote d'Ivoire`},{\"id\":`CM`,\"name\":`Cameroon`},{\"id\":`MA`,\"name\":`Morocco`},{\"id\":`TN`,\"name\":`Tunisia`},{\"id\":`DZ`,\"name\":`Algeria`},{\"id\":`AO`,\"name\":`Angola`},{\"id\":`MZ`,\"name\":`Mozambique`},{\"id\":`MG`,\"name\":`Madagascar`},{\"id\":`ZM`,\"name\":`Zambia`},{\"id\":`ZW`,\"name\":`Zimbabwe`},{\"id\":`BW`,\"name\":`Botswana`},{\"id\":`MW`,\"name\":`Malawi`},{\"id\":`NA`,\"name\":`Namibia`},{\"id\":`LY`,\"name\":`Libya`},{\"id\":`SD`,\"name\":`Sudan`},{\"id\":`CD`,\"name\":`DR Congo`},{\"id\":`CG`,\"name\":`Congo`},{\"id\":`ML`,\"name\":`Mali`},{\"id\":`BF`,\"name\":`Burkina Faso`},{\"id\":`NE`,\"name\":`Niger`}]},{\"id\":`oc-countries`,\"category\":`Oceania`,\"description\":`Oceanian countries`,\"categoryOptions\":[{\"id\":`AU`,\"name\":`Australia`},{\"id\":`NZ`,\"name\":`New Zealand`},{\"id\":`FJ`,\"name\":`Fiji`},{\"id\":`PG`,\"name\":`Papua New Guinea`},{\"id\":`WS`,\"name\":`Samoa`},{\"id\":`TO`,\"name\":`Tonga`},{\"id\":`VU`,\"name\":`Vanuatu`},{\"id\":`SB`,\"name\":`Solomon Islands`}]}]}]},{\"groupId\":`valid-states-settings`,\"groupName\":`Valid States / Provinces`,\"groupTooltip\":`Choose which states and provinces ID documents are allowed from.`,\"properties\":[{\"id\":`valid-states`,\"label\":`Valid States / Provinces`,\"type\":`multiselect-table`,\"categoryLabel\":`Country`,\"optionLabel\":`state / province`,\"value\":{\"AB\":true,\"BC\":true,\"MB\":true,\"NB\":true,\"NL\":true,\"NT\":true,\"NS\":true,\"NU\":true,\"ON\":true,\"PE\":true,\"QC\":true,\"SK\":true,\"YT\":true,\"AL\":true,\"AK\":true,\"AZ\":true,\"AR\":true,\"CA\":true,\"CO\":true,\"CT\":true,\"DE\":true,\"FL\":true,\"GA\":true,\"HI\":true,\"ID\":true,\"IL\":true,\"IN\":true,\"IA\":true,\"KS\":true,\"KY\":true,\"LA\":true,\"ME\":true,\"MD\":true,\"MA\":true,\"MI\":true,\"MN\":true,\"MS\":true,\"MO\":true,\"MT\":true,\"NE\":true,\"NV\":true,\"NH\":true,\"NJ\":true,\"NM\":true,\"NY\":true,\"NC\":true,\"ND\":true,\"OH\":true,\"OK\":true,\"OR\":true,\"PA\":true,\"RI\":true,\"SC\":true,\"SD\":true,\"TN\":true,\"TX\":true,\"UT\":true,\"VT\":true,\"VA\":true,\"WA\":true,\"WV\":true,\"WI\":true,\"WY\":true},\"options\":[{\"id\":`canada`,\"category\":`Canada`,\"description\":`Canadian provinces and territories`,\"categoryOptions\":[{\"id\":`AB`,\"name\":`Alberta`},{\"id\":`BC`,\"name\":`British Columbia`},{\"id\":`MB`,\"name\":`Manitoba`},{\"id\":`NB`,\"name\":`New Brunswick`},{\"id\":`NL`,\"name\":`Newfoundland and Labrador`},{\"id\":`NT`,\"name\":`Northwest Territories`},{\"id\":`NS`,\"name\":`Nova Scotia`},{\"id\":`NU`,\"name\":`Nunavut`},{\"id\":`ON`,\"name\":`Ontario`},{\"id\":`PE`,\"name\":`Prince Edward Island`},{\"id\":`QC`,\"name\":`Quebec`},{\"id\":`SK`,\"name\":`Saskatchewan`},{\"id\":`YT`,\"name\":`Yukon`}]},{\"id\":`united-states`,\"category\":`United States`,\"description\":`States in the United States`,\"categoryOptions\":[{\"id\":`AL`,\"name\":`Alabama`},{\"id\":`AK`,\"name\":`Alaska`},{\"id\":`AZ`,\"name\":`Arizona`},{\"id\":`AR`,\"name\":`Arkansas`},{\"id\":`CA`,\"name\":`California`},{\"id\":`CO`,\"name\":`Colorado`},{\"id\":`CT`,\"name\":`Connecticut`},{\"id\":`DE`,\"name\":`Delaware`},{\"id\":`FL`,\"name\":`Florida`},{\"id\":`GA`,\"name\":`Georgia`},{\"id\":`HI`,\"name\":`Hawaii`},{\"id\":`ID`,\"name\":`Idaho`},{\"id\":`IL`,\"name\":`Illinois`},{\"id\":`IN`,\"name\":`Indiana`},{\"id\":`IA`,\"name\":`Iowa`},{\"id\":`KS`,\"name\":`Kansas`},{\"id\":`KY`,\"name\":`Kentucky`},{\"id\":`LA`,\"name\":`Louisiana`},{\"id\":`ME`,\"name\":`Maine`},{\"id\":`MD`,\"name\":`Maryland`},{\"id\":`MA`,\"name\":`Massachusetts`},{\"id\":`MI`,\"name\":`Michigan`},{\"id\":`MN`,\"name\":`Minnesota`},{\"id\":`MS`,\"name\":`Mississippi`},{\"id\":`MO`,\"name\":`Missouri`},{\"id\":`MT`,\"name\":`Montana`},{\"id\":`NE`,\"name\":`Nebraska`},{\"id\":`NV`,\"name\":`Nevada`},{\"id\":`NH`,\"name\":`New Hampshire`},{\"id\":`NJ`,\"name\":`New Jersey`},{\"id\":`NM`,\"name\":`New Mexico`},{\"id\":`NY`,\"name\":`New York`},{\"id\":`NC`,\"name\":`North Carolina`},{\"id\":`ND`,\"name\":`North Dakota`},{\"id\":`OH`,\"name\":`Ohio`},{\"id\":`OK`,\"name\":`Oklahoma`},{\"id\":`OR`,\"name\":`Oregon`},{\"id\":`PA`,\"name\":`Pennsylvania`},{\"id\":`RI`,\"name\":`Rhode Island`},{\"id\":`SC`,\"name\":`South Carolina`},{\"id\":`SD`,\"name\":`South Dakota`},{\"id\":`TN`,\"name\":`Tennessee`},{\"id\":`TX`,\"name\":`Texas`},{\"id\":`UT`,\"name\":`Utah`},{\"id\":`VT`,\"name\":`Vermont`},{\"id\":`VA`,\"name\":`Virginia`},{\"id\":`WA`,\"name\":`Washington`},{\"id\":`WV`,\"name\":`West Virginia`},{\"id\":`WI`,\"name\":`Wisconsin`},{\"id\":`WY`,\"name\":`Wyoming`}]}]}]},{\"groupId\":`valid-id-types-settings`,\"groupName\":`Valid ID Types`,\"groupTooltip\":`Choose which ID types are allowed for verification.`,\"properties\":[{\"id\":`id-confidence-threshold-enabled`,\"label\":`Enforce ID Confidence Threshold`,\"type\":`boolean`,\"value\":false},{\"id\":`id-confidence-threshold`,\"label\":`Minimum confidence`,\"type\":`slider`,\"value\":80,\"min\":0,\"max\":100,\"step\":5,\"unit\":`%`,\"marks\":[{\"value\":0,\"label\":`0%`},{\"value\":25,\"label\":`25%`},{\"value\":50,\"label\":`50%`},{\"value\":75,\"label\":`75%`},{\"value\":100,\"label\":`100%`}],\"requirement\":`id-confidence-threshold-enabled`},{\"id\":`valid-id-types`,\"label\":`Valid ID Types`,\"type\":`multiselect-table`,\"categoryLabel\":`Continent`,\"optionLabel\":`ID Type`,\"value\":{\"driver-license-ca\":true,\"passport-ca\":true,\"pr-card-ca\":true,\"military-id-ca\":true,\"firearm-license-ca\":true,\"nexus-card-ca\":true,\"driver-license-us\":true,\"passport-us\":true,\"pr-card-us\":true,\"military-id-us\":true,\"firearm-license-us\":true,\"nexus-card-us\":true,\"driver-license-mx\":true,\"passport-mx\":true,\"national-id-mx\":true,\"passport-eu\":true,\"driver-license-eu\":true,\"national-id-eu\":true,\"residence-permit-eu\":true,\"military-id-eu\":true,\"passport-sa\":true,\"driver-license-sa\":true,\"national-id-sa\":true,\"passport-as\":true,\"driver-license-as\":true,\"national-id-as\":true,\"aadhaar-in\":true,\"pan-card-in\":true,\"passport-af\":true,\"driver-license-af\":true,\"national-id-af\":true,\"passport-oc\":true,\"driver-license-oc\":true,\"national-id-oc\":true,\"medicare-card-au\":true},\"options\":[{\"id\":`north-america`,\"category\":`North America`,\"description\":`North American ID types`,\"categoryOptions\":[{\"id\":`driver-license-ca`,\"name\":`Driver's License (CA)`},{\"id\":`passport-ca`,\"name\":`Passport (CA)`},{\"id\":`pr-card-ca`,\"name\":`PR Card (CA)`},{\"id\":`military-id-ca`,\"name\":`Military ID (CA)`},{\"id\":`firearm-license-ca`,\"name\":`Firearms License (CA)`},{\"id\":`nexus-card-ca`,\"name\":`Nexus Card (CA)`},{\"id\":`driver-license-us`,\"name\":`Driver's License (US)`},{\"id\":`passport-us`,\"name\":`Passport (US)`},{\"id\":`pr-card-us`,\"name\":`Green Card (US)`},{\"id\":`military-id-us`,\"name\":`Military ID (US)`},{\"id\":`firearm-license-us`,\"name\":`Firearms License (US)`},{\"id\":`nexus-card-us`,\"name\":`Nexus Card (US)`},{\"id\":`driver-license-mx`,\"name\":`Driver's License (MX)`},{\"id\":`passport-mx`,\"name\":`Passport (MX)`},{\"id\":`national-id-mx`,\"name\":`INE / National ID (MX)`}]},{\"id\":`europe`,\"category\":`Europe`,\"description\":`European ID types`,\"categoryOptions\":[{\"id\":`passport-eu`,\"name\":`Passport`},{\"id\":`driver-license-eu`,\"name\":`Driver's License`},{\"id\":`national-id-eu`,\"name\":`National ID Card`},{\"id\":`residence-permit-eu`,\"name\":`Residence Permit`},{\"id\":`military-id-eu`,\"name\":`Military ID Card`}]},{\"id\":`south-america`,\"category\":`South America`,\"description\":`South American ID types`,\"categoryOptions\":[{\"id\":`passport-sa`,\"name\":`Passport`},{\"id\":`driver-license-sa`,\"name\":`Driver's License`},{\"id\":`national-id-sa`,\"name\":`National ID Card`}]},{\"id\":`asia`,\"category\":`Asia`,\"description\":`Asian ID types`,\"categoryOptions\":[{\"id\":`passport-as`,\"name\":`Passport`},{\"id\":`driver-license-as`,\"name\":`Driver's License`},{\"id\":`national-id-as`,\"name\":`National ID Card`},{\"id\":`aadhaar-in`,\"name\":`Aadhaar Card`},{\"id\":`pan-card-in`,\"name\":`PAN Card`}]},{\"id\":`africa`,\"category\":`Africa`,\"description\":`African ID types`,\"categoryOptions\":[{\"id\":`passport-af`,\"name\":`Passport`},{\"id\":`driver-license-af`,\"name\":`Driver's License`},{\"id\":`national-id-af`,\"name\":`National ID Card`}]},{\"id\":`oceania`,\"category\":`Oceania`,\"description\":`Oceanian ID types`,\"categoryOptions\":[{\"id\":`passport-oc`,\"name\":`Passport`},{\"id\":`driver-license-oc`,\"name\":`Driver's License`},{\"id\":`national-id-oc`,\"name\":`National ID Card`},{\"id\":`medicare-card-au`,\"name\":`Medicare Card`}]}]},{\"id\":`valid-id-types-by-country`,\"label\":`Valid ID Types by Country`,\"type\":`country-id-table`,\"categoryLabel\":`Continent`,\"value\":{},\"options\":[{\"id\":`africa`,\"category\":`Africa`,\"description\":`African country-specific ID documents`,\"countries\":[{\"id\":`DZ`,\"name\":`Algeria`,\"idTypes\":[{\"id\":`cid-dz`,\"name\":`Biometric National Identity Card`,\"localName\":`Carte Nationale d'Identité Biométrique Électronique (CNIBE)`,\"authority\":`Ministry of Interior`,\"format\":`18-digit NIN`,\"notes\":`Chip-based; mandatory for citizens`}]},{\"id\":`AO`,\"name\":`Angola`,\"idTypes\":[{\"id\":`cid-ao`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Ministry of Justice / DNIC`,\"format\":`Alphanumeric BI number`,\"notes\":`Mandatory from age 6`}]},{\"id\":`BJ`,\"name\":`Benin`,\"idTypes\":[{\"id\":`cid-bj`,\"name\":`Biometric National ID Card`,\"localName\":`Carte Nationale d'Identité Biométrique / CIP`,\"authority\":`ANIP`,\"format\":`10-digit NPI (Numéro Personnel d'Identification)`,\"notes\":`CIP certificate also used for KYC`}]},{\"id\":`BW`,\"name\":`Botswana`,\"idTypes\":[{\"id\":`cid-bw`,\"name\":`National Identity Card`,\"localName\":`Omang`,\"authority\":`Dept. of National Registration`,\"format\":`9-digit Omang number`,\"notes\":`Citizens only; mandatory from 16`}]},{\"id\":`BF`,\"name\":`Burkina Faso`,\"idTypes\":[{\"id\":`cid-bf`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité Burkinabè (CNIB)`,\"authority\":`ONI`,\"format\":`CNIB number`,\"notes\":`Biometric`}]},{\"id\":`BI`,\"name\":`Burundi`,\"idTypes\":[{\"id\":`cid-bi`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`,\"notes\":`Biometric rollout in progress`}]},{\"id\":`CV`,\"name\":`Cabo Verde`,\"idTypes\":[{\"id\":`cid-cv`,\"name\":`National Identification Card`,\"localName\":`Cartão Nacional de Identificação (CNI)`,\"authority\":`Ministry of Justice`,\"format\":`NIC number`,\"notes\":`Smart card; replaced older BI`}]},{\"id\":`CM`,\"name\":`Cameroon`,\"idTypes\":[{\"id\":`cid-cm`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`DGSN (National Police)`,\"format\":`CNI number`,\"notes\":`Biometric since 2016`}]},{\"id\":`CF`,\"name\":`Central African Republic`,\"idTypes\":[{\"id\":`cid-cf`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`,\"notes\":`Coverage limited; voter card often used in practice`}]},{\"id\":`TD`,\"name\":`Chad`,\"idTypes\":[{\"id\":`cid-td`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`ANATS`,\"format\":`NNI (national identification number)`,\"notes\":`Biometric`}]},{\"id\":`KM`,\"name\":`Comoros`,\"idTypes\":[{\"id\":`cid-km`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`}]},{\"id\":`CG`,\"name\":`Congo (Rep.)`,\"idTypes\":[{\"id\":`cid-cg`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`}]},{\"id\":`CD`,\"name\":`Congo (DRC)`,\"idTypes\":[{\"id\":`cid-cd`,\"name\":`National Identity Card`,\"localName\":`Carte d'Identité Nationale`,\"authority\":`ONIP`,\"format\":`National ID number`,\"notes\":`Rollout began 2023; voter card (carte d'électeur) still the de facto ID`}]},{\"id\":`CI`,\"name\":`Côte d'Ivoire`,\"idTypes\":[{\"id\":`cid-ci`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`ONECI`,\"format\":`NNI (Numéro National d'Identification)`,\"notes\":`Biometric; RNPP registry`}]},{\"id\":`DJ`,\"name\":`Djibouti`,\"idTypes\":[{\"id\":`cid-dj`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`}]},{\"id\":`EG`,\"name\":`Egypt`,\"idTypes\":[{\"id\":`cid-eg`,\"name\":`National ID Card`,\"localName\":`Bitaqat Tahqiq Al-Shakhsiya (بطاقة الرقم القومي)`,\"authority\":`Civil Status Organization (Ministry of Interior)`,\"format\":`14-digit National Number (encodes DOB + governorate)`,\"notes\":`Mandatory from 16`}]},{\"id\":`GQ`,\"name\":`Equatorial Guinea`,\"idTypes\":[{\"id\":`cid-gq`,\"name\":`Personal Identity Document`,\"localName\":`Documento de Identidad Personal (DIP)`,\"authority\":`Ministry of National Security`,\"format\":`DIP number`}]},{\"id\":`ER`,\"name\":`Eritrea`,\"idTypes\":[{\"id\":`cid-er`,\"name\":`National Identity Card`,\"localName\":`Mennesa Werket`,\"authority\":`Ministry of Interior`,\"format\":`ID number`}]},{\"id\":`SZ`,\"name\":`Eswatini`,\"idTypes\":[{\"id\":`cid-sz`,\"name\":`National Identity Card`,\"localName\":`Umazisi / National ID`,\"authority\":`Ministry of Home Affairs`,\"format\":`13-digit PIN (Personal Identification Number)`}]},{\"id\":`ET`,\"name\":`Ethiopia`,\"idTypes\":[{\"id\":`cid-et`,\"name\":`National Digital ID`,\"localName\":`Fayda`,\"authority\":`National ID Program (NIDP)`,\"format\":`12-digit FIN (Fayda Identification Number)`,\"notes\":`Fayda replacing regional kebele ID cards; mandated for banking KYC`}]},{\"id\":`GA`,\"name\":`Gabon`,\"idTypes\":[{\"id\":`cid-ga`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`DGDI`,\"format\":`NIP number`,\"notes\":`Biometric`}]},{\"id\":`GM`,\"name\":`Gambia`,\"idTypes\":[{\"id\":`cid-gm`,\"name\":`National Identity Card`,\"localName\":`National ID Card`,\"authority\":`GID / Immigration Dept.`,\"format\":`NIN`,\"notes\":`Biometric ECOWAS-format card`}]},{\"id\":`GH`,\"name\":`Ghana`,\"idTypes\":[{\"id\":`cid-gh`,\"name\":`Ghana Card`,\"localName\":`Ghana Card`,\"authority\":`National Identification Authority (NIA)`,\"format\":`GHA-XXXXXXXXX-X (PIN)`,\"notes\":`Sole ID for banking/SIM/tax since 2022; ECOWAS card`}]},{\"id\":`GN`,\"name\":`Guinea`,\"idTypes\":[{\"id\":`cid-gn`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Security`,\"format\":`CNI number`,\"notes\":`Biometric rollout`}]},{\"id\":`GW`,\"name\":`Guinea-Bissau`,\"idTypes\":[{\"id\":`cid-gw`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Ministry of Justice`,\"format\":`BI number`}]},{\"id\":`KE`,\"name\":`Kenya`,\"idTypes\":[{\"id\":`cid-ke`,\"name\":`National Identity Card`,\"localName\":`Kitambulisho / Maisha Card`,\"authority\":`National Registration Bureau (Interior Ministry)`,\"format\":`8-digit ID No.; Maisha Namba (UPI) on new cards`,\"notes\":`3rd-gen Maisha Card rolling out from 2023; legacy 2nd-gen cards remain valid`}]},{\"id\":`LS`,\"name\":`Lesotho`,\"idTypes\":[{\"id\":`cid-ls`,\"name\":`National Identity Card`,\"localName\":`Lengolo la Boitsebiso`,\"authority\":`Ministry of Home Affairs (NICR)`,\"format\":`ID number`}]},{\"id\":`LR`,\"name\":`Liberia`,\"idTypes\":[{\"id\":`cid-lr`,\"name\":`National Identification Card`,\"localName\":`NIR National ID Card`,\"authority\":`National Identification Registry (NIR)`,\"format\":`NIN`,\"notes\":`Biometric; required for bank KYC`}]},{\"id\":`LY`,\"name\":`Libya`,\"idTypes\":[{\"id\":`cid-ly`,\"name\":`National ID Number \u0026 Card`,\"localName\":`الرقم الوطني (National Number)`,\"authority\":`Civil Registry Authority`,\"format\":`12-digit National Number`,\"notes\":`Number is primary; card issuance uneven`}]},{\"id\":`MG`,\"name\":`Madagascar`,\"idTypes\":[{\"id\":`cid-mg`,\"name\":`National Identity Card`,\"localName\":`Kara-panondrom-pirenena / CIN`,\"authority\":`Ministry of Interior`,\"format\":`12-digit CIN number`,\"notes\":`Mandatory from 18`}]},{\"id\":`MW`,\"name\":`Malawi`,\"idTypes\":[{\"id\":`cid-mw`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`National Registration Bureau (NRB)`,\"format\":`8-character alphanumeric`,\"notes\":`Biometric; mandatory for banking KYC`}]},{\"id\":`ML`,\"name\":`Mali`,\"idTypes\":[{\"id\":`cid-ml`,\"name\":`Biometric National ID Card`,\"localName\":`Carte NINA / Carte d'Identité Biométrique`,\"authority\":`Ministry of Security / CTDEC`,\"format\":`14-15 char NINA number`,\"notes\":`NINA = Numéro d'Identification Nationale`}]},{\"id\":`MR`,\"name\":`Mauritania`,\"idTypes\":[{\"id\":`cid-mr`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`ANRPTS`,\"format\":`10-digit NNI`,\"notes\":`Biometric`}]},{\"id\":`MU`,\"name\":`Mauritius`,\"idTypes\":[{\"id\":`cid-mu`,\"name\":`National Identity Card`,\"localName\":`Smart National Identity Card`,\"authority\":`Civil Status Division (PMO)`,\"format\":`14-char NIC number (encodes DOB)`,\"notes\":`Smart card; mandatory from 18`}]},{\"id\":`MA`,\"name\":`Morocco`,\"idTypes\":[{\"id\":`cid-ma`,\"name\":`Electronic National Identity Card`,\"localName\":`Carte Nationale d'Identité Électronique (CNIE)`,\"authority\":`DGSN`,\"format\":`CIN (1-2 letters + digits)`,\"notes\":`CNIE 2.0 chip card; mandatory from 18`}]},{\"id\":`MZ`,\"name\":`Mozambique`,\"idTypes\":[{\"id\":`cid-mz`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Civil Identification Directorate (Ministry of Interior)`,\"format\":`13-char BI number`,\"notes\":`Mandatory`}]},{\"id\":`NA`,\"name\":`Namibia`,\"idTypes\":[{\"id\":`cid-na`,\"name\":`National Identity Card`,\"localName\":`Namibian ID Card`,\"authority\":`Ministry of Home Affairs, Immigration, Safety \u0026 Security`,\"format\":`11-digit ID number (encodes DOB)`,\"notes\":`Citizens \u0026 permanent residents`}]},{\"id\":`NE`,\"name\":`Niger`,\"idTypes\":[{\"id\":`cid-ne`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité (CNI)`,\"authority\":`Ministry of Interior`,\"format\":`CNI number`,\"notes\":`Biometric rollout`}]},{\"id\":`NG`,\"name\":`Nigeria`,\"idTypes\":[{\"id\":`cid-ng`,\"name\":`National Identification Number \u0026 NIN Slip / Card`,\"localName\":`NIN / National e-ID Card`,\"authority\":`NIMC (National Identity Management Commission)`,\"format\":`11-digit NIN`,\"notes\":`NIN mandatory for bank accounts (BVN also used by banks); NIMC MobileID / improved NIN slip accepted`}]},{\"id\":`RW`,\"name\":`Rwanda`,\"idTypes\":[{\"id\":`cid-rw`,\"name\":`National Identity Card`,\"localName\":`Indangamuntu`,\"authority\":`NIDA (National Identification Agency)`,\"format\":`16-digit NID number`,\"notes\":`Mandatory from 16; digital ID (e-ID) rollout underway`}]},{\"id\":`ST`,\"name\":`São Tomé \u0026 Príncipe`,\"idTypes\":[{\"id\":`cid-st`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Ministry of Justice`,\"format\":`BI number`}]},{\"id\":`SN`,\"name\":`Senegal`,\"idTypes\":[{\"id\":`cid-sn`,\"name\":`Biometric National ID Card`,\"localName\":`Carte Nationale d'Identité CEDEAO`,\"authority\":`DAF (Ministry of Interior)`,\"format\":`NIN (encodes DOB)`,\"notes\":`ECOWAS-format biometric card; doubles as voter card`}]},{\"id\":`SC`,\"name\":`Seychelles`,\"idTypes\":[{\"id\":`cid-sc`,\"name\":`National Identity Card`,\"localName\":`National ID Card`,\"authority\":`Civil Status Office`,\"format\":`NIN`}]},{\"id\":`SL`,\"name\":`Sierra Leone`,\"idTypes\":[{\"id\":`cid-sl`,\"name\":`National Identity Card`,\"localName\":`National ID Card`,\"authority\":`NCRA`,\"format\":`9-digit NIN`,\"notes\":`Biometric; required for bank KYC`}]},{\"id\":`SO`,\"name\":`Somalia`,\"idTypes\":[{\"id\":`cid-so`,\"name\":`National Identity Card`,\"localName\":`Aqoonsiga Qaranka / National ID`,\"authority\":`NIRA Somalia`,\"format\":`NIN`,\"notes\":`New biometric system launched 2023-24; rollout ongoing`}]},{\"id\":`ZA`,\"name\":`South Africa`,\"idTypes\":[{\"id\":`cid-za`,\"name\":`Smart ID Card`,\"localName\":`Smart ID Card (green barcoded ID book being phased out)`,\"authority\":`Department of Home Affairs (DHA)`,\"format\":`13-digit ID number (encodes DOB, gender, citizenship)`,\"notes\":`ID number is the KYC backbone (FICA)`}]},{\"id\":`SS`,\"name\":`South Sudan`,\"idTypes\":[{\"id\":`cid-ss`,\"name\":`National Identity Card`,\"localName\":`National ID Card`,\"authority\":`Directorate of Nationality, Passports \u0026 Immigration`,\"format\":`National number`,\"notes\":`Coverage limited`}]},{\"id\":`SD`,\"name\":`Sudan`,\"idTypes\":[{\"id\":`cid-sd`,\"name\":`National Identity Card`,\"localName\":`National Number Card (الرقم الوطني)`,\"authority\":`Civil Registry`,\"format\":`11-digit National Number`}]},{\"id\":`TZ`,\"name\":`Tanzania`,\"idTypes\":[{\"id\":`cid-tz`,\"name\":`National Identity Card`,\"localName\":`Kitambulisho cha Taifa`,\"authority\":`NIDA (National Identification Authority)`,\"format\":`20-digit NIN`,\"notes\":`Mandatory for banking \u0026 SIM registration`}]},{\"id\":`TG`,\"name\":`Togo`,\"idTypes\":[{\"id\":`cid-tg`,\"name\":`National Identity Card / e-ID`,\"localName\":`Carte Nationale d'Identité; e-ID Togo`,\"authority\":`DGDN / ANID`,\"format\":`NIU (unique ID number)`,\"notes\":`WURI biometric e-ID rollout ongoing`}]},{\"id\":`TN`,\"name\":`Tunisia`,\"idTypes\":[{\"id\":`cid-tn`,\"name\":`National Identity Card`,\"localName\":`Carte d'Identité Nationale (CIN)`,\"authority\":`Ministry of Interior`,\"format\":`8-digit CIN number`,\"notes\":`Mandatory from 18`}]},{\"id\":`UG`,\"name\":`Uganda`,\"idTypes\":[{\"id\":`cid-ug`,\"name\":`National Identity Card`,\"localName\":`Ndaga Muntu`,\"authority\":`NIRA`,\"format\":`14-char NIN`,\"notes\":`Mandatory for bank KYC; renewal/upgrade cycle from 2024`}]},{\"id\":`ZM`,\"name\":`Zambia`,\"idTypes\":[{\"id\":`cid-zm`,\"name\":`National Registration Card`,\"localName\":`NRC`,\"authority\":`Department of National Registration`,\"format\":`9-digit NRC (XXXXXX/XX/X)`,\"notes\":`Biometric e-NRC rollout`}]},{\"id\":`ZW`,\"name\":`Zimbabwe`,\"idTypes\":[{\"id\":`cid-zw`,\"name\":`National Registration Card`,\"localName\":`National ID / Chitupa`,\"authority\":`Civil Registry Department`,\"format\":`ID number (XX-XXXXXX-Y-XX)`,\"notes\":`Plastic/polythene ID; mandatory from 16`}]}]},{\"id\":`americas`,\"category\":`Americas`,\"description\":`ID documents across North, Central \u0026 South America`,\"countries\":[{\"id\":`AG`,\"name\":`Antigua \u0026 Barbuda`,\"idTypes\":[{\"id\":`cid-ag`,\"name\":`National Identification Card`,\"localName\":`Voter ID / National ID Card`,\"authority\":`Electoral Commission`,\"format\":`ID number`,\"notes\":`Multipurpose voter/national ID`}]},{\"id\":`AR`,\"name\":`Argentina`,\"idTypes\":[{\"id\":`cid-ar`,\"name\":`National Identity Document`,\"localName\":`Documento Nacional de Identidad (DNI)`,\"authority\":`RENAPER`,\"format\":`7-8 digit DNI number`,\"notes\":`Card + digital DNI in Mi Argentina app`}]},{\"id\":`BS`,\"name\":`Bahamas`,\"idTypes\":[{\"id\":`cid-bs`,\"name\":`National Insurance Card / Voter's Card`,\"localName\":`NIB Smart Card`,\"authority\":`National Insurance Board / Parliamentary Registration Dept.`,\"format\":`NIB number`,\"notes\":`No single national ID; NIB card + voter's card fill the role`}]},{\"id\":`BB`,\"name\":`Barbados`,\"idTypes\":[{\"id\":`cid-bb`,\"name\":`Barbados National ID Card`,\"localName\":`Trident ID Card`,\"authority\":`Electoral \u0026 Boundaries Commission`,\"format\":`National Registration Number`,\"notes\":`New Trident smart ID replaced laminated ID from 2023`}]},{\"id\":`BZ`,\"name\":`Belize`,\"idTypes\":[{\"id\":`cid-bz`,\"name\":`Social Security Card`,\"localName\":`SSB Card`,\"authority\":`Social Security Board`,\"format\":`SSN`,\"notes\":`De facto ID for banking; voter ID also used`}]},{\"id\":`BO`,\"name\":`Bolivia`,\"idTypes\":[{\"id\":`cid-bo`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad (CI)`,\"authority\":`SEGIP`,\"format\":`CI number`,\"notes\":`Mandatory`}]},{\"id\":`BR`,\"name\":`Brazil`,\"idTypes\":[{\"id\":`cid-br`,\"name\":`National Identity Card`,\"localName\":`Carteira de Identidade Nacional (CIN) / RG`,\"authority\":`State civil ID bureaus (SSP) on CPF base`,\"format\":`CPF (11 digits) is the unified number on new CIN`,\"notes\":`New CIN (2022+) uses CPF as sole number; legacy RG cards remain valid; CPF itself essential for all KYC`}]},{\"id\":`CA`,\"name\":`Canada`,\"idTypes\":[{\"id\":`cid-ca`,\"name\":`Provincial Photo ID Cards (non-driver)`,\"authority\":`Provincial/territorial governments (e.g., Ontario Photo Card, BC Services Card)`,\"format\":`Varies by province`,\"notes\":`No federal ID card; SIN is a number only (not an ID document)`}]},{\"id\":`CL`,\"name\":`Chile`,\"idTypes\":[{\"id\":`cid-cl`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad`,\"authority\":`Registro Civil e Identificación`,\"format\":`RUN/RUT (7-8 digits + check digit)`,\"notes\":`RUN number used across all KYC`}]},{\"id\":`CO`,\"name\":`Colombia`,\"idTypes\":[{\"id\":`cid-co`,\"name\":`Citizenship Card`,\"localName\":`Cédula de Ciudadanía`,\"authority\":`Registraduría Nacional`,\"format\":`10-digit NUIP`,\"notes\":`Digital cédula also valid`}]},{\"id\":`CR`,\"name\":`Costa Rica`,\"idTypes\":[{\"id\":`cid-cr`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad`,\"authority\":`Tribunal Supremo de Elecciones (TSE)`,\"format\":`9-digit cédula number`,\"notes\":`Mandatory from 18`}]},{\"id\":`CU`,\"name\":`Cuba`,\"idTypes\":[{\"id\":`cid-cu`,\"name\":`Identity Card`,\"localName\":`Carné de Identidad`,\"authority\":`Ministry of Interior`,\"format\":`11-digit number (encodes DOB)`}]},{\"id\":`DM`,\"name\":`Dominica`,\"idTypes\":[{\"id\":`cid-dm`,\"name\":`National ID Card`,\"localName\":`National Identification Card`,\"authority\":`Electoral Office`,\"format\":`ID number`,\"notes\":`Multipurpose voter/national ID`}]},{\"id\":`DO`,\"name\":`Dominican Republic`,\"idTypes\":[{\"id\":`cid-do`,\"name\":`Identity \u0026 Electoral Card`,\"localName\":`Cédula de Identidad y Electoral`,\"authority\":`Junta Central Electoral (JCE)`,\"format\":`11-digit cédula number`,\"notes\":`Mandatory from 18`}]},{\"id\":`EC`,\"name\":`Ecuador`,\"idTypes\":[{\"id\":`cid-ec`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad / Ciudadanía`,\"authority\":`Registro Civil`,\"format\":`10-digit cédula number`,\"notes\":`Mandatory`}]},{\"id\":`SV`,\"name\":`El Salvador`,\"idTypes\":[{\"id\":`cid-sv`,\"name\":`Unique Identity Document`,\"localName\":`Documento Único de Identidad (DUI)`,\"authority\":`RNPN`,\"format\":`9-digit DUI number`,\"notes\":`Mandatory from 18`}]},{\"id\":`GD`,\"name\":`Grenada`,\"idTypes\":[{\"id\":`cid-gd`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`Parliamentary Elections Office`,\"format\":`ID number`,\"notes\":`Voter-based national ID`}]},{\"id\":`GT`,\"name\":`Guatemala`,\"idTypes\":[{\"id\":`cid-gt`,\"name\":`Personal Identification Document`,\"localName\":`Documento Personal de Identificación (DPI)`,\"authority\":`RENAP`,\"format\":`13-digit CUI`,\"notes\":`Mandatory from 18`}]},{\"id\":`GY`,\"name\":`Guyana`,\"idTypes\":[{\"id\":`cid-gy`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`GECOM / General Register Office`,\"format\":`ID number`,\"notes\":`New e-ID card project underway`}]},{\"id\":`HT`,\"name\":`Haiti`,\"idTypes\":[{\"id\":`cid-ht`,\"name\":`National Identification Card`,\"localName\":`Carte d'Identification Nationale Unique (CINU)`,\"authority\":`ONI (Office National d'Identification)`,\"format\":`NIU (10 digits)`,\"notes\":`CINU (Dermalog) replaced older CIN from 2020`}]},{\"id\":`HN`,\"name\":`Honduras`,\"idTypes\":[{\"id\":`cid-hn`,\"name\":`National Identity Document`,\"localName\":`Documento Nacional de Identificación (DNI)`,\"authority\":`RNP`,\"format\":`13-digit DNI number`,\"notes\":`Replaced Tarjeta de Identidad in 2021`}]},{\"id\":`JM`,\"name\":`Jamaica`,\"idTypes\":[{\"id\":`cid-jm`,\"name\":`National Identification Card (NIDS)`,\"localName\":`NIDS National ID; TRN card`,\"authority\":`NIRA (NIDS) / TAJ (TRN)`,\"format\":`9-digit NIN (NIDS); 9-digit TRN`,\"notes\":`NIDS voluntary rollout from 2023; TRN card + voter ID widely used for KYC`}]},{\"id\":`MX`,\"name\":`Mexico`,\"idTypes\":[{\"id\":`cid-mx`,\"name\":`Voter Credential (de facto national ID)`,\"localName\":`Credencial para Votar (INE)`,\"authority\":`Instituto Nacional Electoral (INE)`,\"format\":`18-char CURP + OCR/CIC numbers`,\"notes\":`INE card is the universal KYC ID; CURP is the national number; CURP biométrica rollout announced 2025`}]},{\"id\":`NI`,\"name\":`Nicaragua`,\"idTypes\":[{\"id\":`cid-ni`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad`,\"authority\":`Consejo Supremo Electoral`,\"format\":`14-char cédula number`,\"notes\":`Mandatory from 16`}]},{\"id\":`PA`,\"name\":`Panama`,\"idTypes\":[{\"id\":`cid-pa`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad Personal`,\"authority\":`Tribunal Electoral`,\"format\":`Cédula number (province-coded)`,\"notes\":`Mandatory from 18`}]},{\"id\":`PY`,\"name\":`Paraguay`,\"idTypes\":[{\"id\":`cid-py`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad Civil`,\"authority\":`Departamento de Identificaciones (Policía Nacional)`,\"format\":`7-digit CI number`,\"notes\":`Mandatory`}]},{\"id\":`PE`,\"name\":`Peru`,\"idTypes\":[{\"id\":`cid-pe`,\"name\":`National Identity Document`,\"localName\":`Documento Nacional de Identidad (DNI)`,\"authority\":`RENIEC`,\"format\":`8-digit DNI number`,\"notes\":`DNI electrónico (DNIe) chip card; mandatory`}]},{\"id\":`KN`,\"name\":`St. Kitts \u0026 Nevis`,\"idTypes\":[{\"id\":`cid-kn`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`Electoral Office`,\"format\":`ID number`}]},{\"id\":`LC`,\"name\":`St. Lucia`,\"idTypes\":[{\"id\":`cid-lc`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`Electoral Department`,\"format\":`ID number`}]},{\"id\":`VC`,\"name\":`St. Vincent \u0026 the Grenadines`,\"idTypes\":[{\"id\":`cid-vc`,\"name\":`National Identification Card`,\"localName\":`Voter ID Card`,\"authority\":`Electoral Office`,\"format\":`ID number`}]},{\"id\":`SR`,\"name\":`Suriname`,\"idTypes\":[{\"id\":`cid-sr`,\"name\":`Identity Card`,\"localName\":`Identiteitskaart (ID-kaart)`,\"authority\":`CBB (Central Civil Registry)`,\"format\":`ID number`,\"notes\":`e-ID rollout in progress`}]},{\"id\":`TT`,\"name\":`Trinidad \u0026 Tobago`,\"idTypes\":[{\"id\":`cid-tt`,\"name\":`National Identification Card`,\"localName\":`National ID Card`,\"authority\":`Elections \u0026 Boundaries Commission (EBC)`,\"format\":`ID number`,\"notes\":`Standard KYC document`}]},{\"id\":`US`,\"name\":`United States`,\"idTypes\":[{\"id\":`cid-us`,\"name\":`State ID Card (non-driver) / Social Security Number`,\"authority\":`State DMVs (ID cards); SSA (SSN)`,\"format\":`SSN: 9 digits (number only, not photo ID)`,\"notes\":`No federal ID card; REAL ID-compliant state IDs are the standard; SSN/ITIN used as the KYC number`}]},{\"id\":`UY`,\"name\":`Uruguay`,\"idTypes\":[{\"id\":`cid-uy`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad (CI)`,\"authority\":`DNIC (Ministry of Interior)`,\"format\":`8-digit CI number`,\"notes\":`eID chip card; mandatory`}]},{\"id\":`VE`,\"name\":`Venezuela`,\"idTypes\":[{\"id\":`cid-ve`,\"name\":`Identity Card`,\"localName\":`Cédula de Identidad`,\"authority\":`SAIME`,\"format\":`7-9 digit cédula number (V-/E- prefix)`,\"notes\":`Mandatory from 9`}]}]},{\"id\":`asia`,\"category\":`Asia`,\"description\":`Asian country-specific ID documents`,\"countries\":[{\"id\":`AF`,\"name\":`Afghanistan`,\"idTypes\":[{\"id\":`cid-af`,\"name\":`National Identity Card`,\"localName\":`Tazkira / e-Tazkira`,\"authority\":`NSIA`,\"format\":`Tazkira number`,\"notes\":`e-Tazkira biometric card; paper Tazkira still circulating`}]},{\"id\":`AM`,\"name\":`Armenia`,\"idTypes\":[{\"id\":`cid-am`,\"name\":`Identification Card`,\"localName\":`Nuynakanacman kart (ID card)`,\"authority\":`Police / Migration \u0026 Citizenship Service`,\"format\":`PSN (public services number)`,\"notes\":`Biometric ID card 2024+`}]},{\"id\":`AZ`,\"name\":`Azerbaijan`,\"idTypes\":[{\"id\":`cid-az`,\"name\":`Identity Card`,\"localName\":`Shəxsiyyət vəsiqəsi`,\"authority\":`State Migration / ASAN`,\"format\":`PIN (7-char FIN)`,\"notes\":`Chip-based new-generation card`}]},{\"id\":`BH`,\"name\":`Bahrain`,\"idTypes\":[{\"id\":`cid-bh`,\"name\":`Identity Card`,\"localName\":`Bahraini ID Card (CPR Card)`,\"authority\":`Information \u0026 eGovernment Authority (iGA)`,\"format\":`9-digit CPR number (encodes DOB)`,\"notes\":`Covers citizens \u0026 residents; core KYC document`}]},{\"id\":`BD`,\"name\":`Bangladesh`,\"idTypes\":[{\"id\":`cid-bd`,\"name\":`National Identity Card`,\"localName\":`NID / Smart NID Card`,\"authority\":`Election Commission (NID Wing)`,\"format\":`10-digit NID (17-digit legacy)`,\"notes\":`Smart NID chip card; mandatory for bank accounts`}]},{\"id\":`BT`,\"name\":`Bhutan`,\"idTypes\":[{\"id\":`cid-bt`,\"name\":`Citizenship Identity Card`,\"localName\":`CID Card`,\"authority\":`Department of Civil Registration \u0026 Census`,\"format\":`11-digit CID number`,\"notes\":`Bhutan NDI (digital ID) launched 2023`}]},{\"id\":`BN`,\"name\":`Brunei`,\"idTypes\":[{\"id\":`cid-bn`,\"name\":`Identity Card`,\"localName\":`Kad Pengenalan (Smart IC)`,\"authority\":`Immigration \u0026 National Registration Dept.`,\"format\":`IC number (colour-coded by status)`,\"notes\":`Yellow IC = citizens`}]},{\"id\":`KH`,\"name\":`Cambodia`,\"idTypes\":[{\"id\":`cid-kh`,\"name\":`Khmer Identity Card`,\"localName\":`Attasannheanabann Khmer`,\"authority\":`General Dept. of Identification (Ministry of Interior)`,\"format\":`9-digit ID number`,\"notes\":`Mandatory from 15`}]},{\"id\":`CN`,\"name\":`China`,\"idTypes\":[{\"id\":`cid-cn`,\"name\":`Resident Identity Card`,\"localName\":`居民身份证 (Jūmín Shēnfènzhèng)`,\"authority\":`Ministry of Public Security (local PSBs)`,\"format\":`18-digit citizen ID (encodes region, DOB, check digit)`,\"notes\":`Universal KYC document; mandatory`}]},{\"id\":`GE`,\"name\":`Georgia`,\"idTypes\":[{\"id\":`cid-ge`,\"name\":`Identity Card`,\"localName\":`Pirad0ba mowmoba (eID)`,\"authority\":`Public Service Development Agency`,\"format\":`11-digit personal number`,\"notes\":`Chip eID card`}]},{\"id\":`HK`,\"name\":`Hong Kong SAR`,\"idTypes\":[{\"id\":`cid-hk`,\"name\":`Hong Kong Identity Card`,\"localName\":`HKID (香港身份證)`,\"authority\":`Immigration Department`,\"format\":`1-2 letters + 6 digits + check digit`,\"notes\":`Smart HKID; mandatory from 11; universal KYC doc`}]},{\"id\":`MO`,\"name\":`Macau SAR`,\"idTypes\":[{\"id\":`cid-mo`,\"name\":`Macau Resident Identity Card`,\"localName\":`Bilhete de Identidade de Residente (BIR)`,\"authority\":`DSI (Identification Services Bureau)`,\"format\":`7-digit BIR number + check digit`,\"notes\":`Smart BIR; permanent vs non-permanent resident versions`}]},{\"id\":`IN`,\"name\":`India`,\"idTypes\":[{\"id\":`cid-in`,\"name\":`Aadhaar`,\"localName\":`Aadhaar (आधार)`,\"authority\":`UIDAI`,\"format\":`12-digit Aadhaar number`,\"notes\":`Primary e-KYC rail (offline XML / DigiLocker); PAN (tax) and Voter ID (EPIC) are the other country-specific IDs banks accept`}]},{\"id\":`ID`,\"name\":`Indonesia`,\"idTypes\":[{\"id\":`cid-id`,\"name\":`Resident Identity Card`,\"localName\":`Kartu Tanda Penduduk elektronik (e-KTP)`,\"authority\":`Dukcapil (Ministry of Home Affairs)`,\"format\":`16-digit NIK`,\"notes\":`Mandatory from 17; NIK is the universal KYC number; IKD digital ID rollout`}]},{\"id\":`IR`,\"name\":`Iran`,\"idTypes\":[{\"id\":`cid-ir`,\"name\":`National Card`,\"localName\":`Kart-e Melli (کارت ملی)`,\"authority\":`National Organization for Civil Registration`,\"format\":`10-digit Code Melli`,\"notes\":`Smart national card; mandatory`}]},{\"id\":`IQ`,\"name\":`Iraq`,\"idTypes\":[{\"id\":`cid-iq`,\"name\":`Unified National Card`,\"localName\":`Al-Bitaqa Al-Wataniya (البطاقة الوطنية الموحدة)`,\"authority\":`Ministry of Interior (Civil Affairs)`,\"format\":`12-digit number`,\"notes\":`Replaced Civil Status ID + Nationality Certificate`}]},{\"id\":`IL`,\"name\":`Israel`,\"idTypes\":[{\"id\":`cid-il`,\"name\":`Identity Card`,\"localName\":`Teudat Zehut (תעודת זהות)`,\"authority\":`Population \u0026 Immigration Authority`,\"format\":`9-digit ID number (with check digit)`,\"notes\":`Biometric smart card; mandatory from 16`}]},{\"id\":`JP`,\"name\":`Japan`,\"idTypes\":[{\"id\":`cid-jp`,\"name\":`Individual Number Card`,\"localName\":`My Number Card (マイナンバーカード)`,\"authority\":`Municipalities / J-LIS`,\"format\":`12-digit Individual Number (My Number)`,\"notes\":`Voluntary card but now the standard KYC/eKYC document; Juminhyo (residence record) also used`}]},{\"id\":`JO`,\"name\":`Jordan`,\"idTypes\":[{\"id\":`cid-jo`,\"name\":`National Identity Card`,\"localName\":`Bitaqat Al-Ahwal Al-Madaniya`,\"authority\":`Civil Status \u0026 Passports Dept.`,\"format\":`10-digit National Number`,\"notes\":`Smart ID card`}]},{\"id\":`KZ`,\"name\":`Kazakhstan`,\"idTypes\":[{\"id\":`cid-kz`,\"name\":`Identity Card`,\"localName\":`Udostoverenie lichnosti / Жеке куәлік`,\"authority\":`Ministry of Internal Affairs`,\"format\":`12-digit IIN (encodes DOB)`,\"notes\":`Chip card; mandatory from 16`}]},{\"id\":`KW`,\"name\":`Kuwait`,\"idTypes\":[{\"id\":`cid-kw`,\"name\":`Civil ID`,\"localName\":`Al-Bitaqa Al-Madaniya (Civil ID)`,\"authority\":`PACI`,\"format\":`12-digit Civil Number (encodes DOB)`,\"notes\":`Citizens \u0026 residents; core KYC document`}]},{\"id\":`KG`,\"name\":`Kyrgyzstan`,\"idTypes\":[{\"id\":`cid-kg`,\"name\":`Identity Card`,\"localName\":`ID Card (2017 series)`,\"authority\":`State Registration Service`,\"format\":`14-digit PIN`,\"notes\":`Chip eID`}]},{\"id\":`LA`,\"name\":`Laos`,\"idTypes\":[{\"id\":`cid-la`,\"name\":`National Identity Card`,\"localName\":`Bat Pachamtua`,\"authority\":`Ministry of Public Security`,\"format\":`ID number`,\"notes\":`Rollout expanding; family book also used`}]},{\"id\":`LB`,\"name\":`Lebanon`,\"idTypes\":[{\"id\":`cid-lb`,\"name\":`National Identity Card`,\"localName\":`Bitaqat Al-Hawiya (بطاقة الهوية)`,\"authority\":`Directorate General of Personal Status`,\"format\":`ID number`,\"notes\":`Ikhraj Qaid (civil extract) also widely used in KYC`}]},{\"id\":`MY`,\"name\":`Malaysia`,\"idTypes\":[{\"id\":`cid-my`,\"name\":`National Identity Card`,\"localName\":`MyKad`,\"authority\":`JPN (National Registration Department)`,\"format\":`12-digit NRIC (encodes DOB + state)`,\"notes\":`Smart chip card; mandatory from 12; universal KYC doc`}]},{\"id\":`MV`,\"name\":`Maldives`,\"idTypes\":[{\"id\":`cid-mv`,\"name\":`National Identity Card`,\"localName\":`Dhivehi Rayyithunge Kaadu`,\"authority\":`Department of National Registration`,\"format\":`A-prefixed ID number`,\"notes\":`Mandatory from 10`}]},{\"id\":`MN`,\"name\":`Mongolia`,\"idTypes\":[{\"id\":`cid-mn`,\"name\":`National Identity Card`,\"localName\":`Irgenii ünemlekh`,\"authority\":`General Authority for State Registration`,\"format\":`10-char registration number (ur, encodes DOB)`,\"notes\":`Chip eID card`}]},{\"id\":`MM`,\"name\":`Myanmar`,\"idTypes\":[{\"id\":`cid-mm`,\"name\":`Citizenship Scrutiny Card`,\"localName\":`NRC / CSC (မှတ်ပုံတင်)`,\"authority\":`Ministry of Immigration \u0026 Population`,\"format\":`NRC number (state/township-coded)`,\"notes\":`Card colour denotes citizenship class`}]},{\"id\":`NP`,\"name\":`Nepal`,\"idTypes\":[{\"id\":`cid-np`,\"name\":`National Identity Card`,\"localName\":`Rastriya Parichaya Patra (NID)`,\"authority\":`Department of National ID \u0026 Civil Registration`,\"format\":`NIN`,\"notes\":`NID replacing Citizenship Certificate as KYC standard; Citizenship Certificate still widely accepted`}]},{\"id\":`KP`,\"name\":`North Korea`,\"idTypes\":[{\"id\":`cid-kp`,\"name\":`Citizen's Certificate`,\"localName\":`Kongminŭng`,\"authority\":`Ministry of People's Security`,\"format\":`ID number`,\"notes\":`Internal document; not usable for remote KYC`}]},{\"id\":`OM`,\"name\":`Oman`,\"idTypes\":[{\"id\":`cid-om`,\"name\":`National ID Card`,\"localName\":`Al-Bitaqa Al-Shakhsiya`,\"authority\":`Royal Oman Police (Civil Status)`,\"format\":`Civil Number`,\"notes\":`Citizens; resident card is the parallel for expats`}]},{\"id\":`PK`,\"name\":`Pakistan`,\"idTypes\":[{\"id\":`cid-pk`,\"name\":`Computerized National Identity Card`,\"localName\":`CNIC / Smart NIC (SNIC)`,\"authority\":`NADRA`,\"format\":`13-digit CNIC (XXXXX-XXXXXXX-X)`,\"notes\":`Universal KYC document; NICOP for overseas Pakistanis`}]},{\"id\":`PS`,\"name\":`Palestine`,\"idTypes\":[{\"id\":`cid-ps`,\"name\":`Identity Card`,\"localName\":`Hawiya / Palestinian ID`,\"authority\":`Palestinian Civil Affairs Authority`,\"format\":`9-digit ID number`}]},{\"id\":`PH`,\"name\":`Philippines`,\"idTypes\":[{\"id\":`cid-ph`,\"name\":`Philippine Identification (National ID)`,\"localName\":`PhilID / ePhilID`,\"authority\":`PSA (PhilSys)`,\"format\":`12-digit PSN / PCN`,\"notes\":`PhilID + digital National ID accepted as sole KYC ID; UMID, TIN card, voter's ID are other country-specific fallbacks`}]},{\"id\":`QA`,\"name\":`Qatar`,\"idTypes\":[{\"id\":`cid-qa`,\"name\":`Qatar ID Card`,\"localName\":`QID (البطاقة الشخصية)`,\"authority\":`Ministry of Interior`,\"format\":`11-digit QID (encodes birth year + nationality)`,\"notes\":`Citizens \u0026 residents; core KYC document`}]},{\"id\":`SA`,\"name\":`Saudi Arabia`,\"idTypes\":[{\"id\":`cid-sa`,\"name\":`National Identity Card`,\"localName\":`Bitaqat Al-Hawiya Al-Wataniya`,\"authority\":`Ministry of Interior (Ahwal / Absher)`,\"format\":`10-digit National ID number`,\"notes\":`Citizens; Absher digital ID for eKYC`}]},{\"id\":`SG`,\"name\":`Singapore`,\"idTypes\":[{\"id\":`cid-sg`,\"name\":`National Registration Identity Card`,\"localName\":`NRIC`,\"authority\":`ICA`,\"format\":`NRIC number (S/T + 7 digits + letter)`,\"notes\":`Physical NRIC + Singpass/MyInfo for digital KYC`}]},{\"id\":`KR`,\"name\":`South Korea`,\"idTypes\":[{\"id\":`cid-kr`,\"name\":`Resident Registration Card`,\"localName\":`Jumin-deungnok-jeung (주민등록증)`,\"authority\":`Ministry of Interior \u0026 Safety`,\"format\":`13-digit RRN (encodes DOB + gender)`,\"notes\":`Mandatory from 17; mobile ID version live`}]},{\"id\":`LK`,\"name\":`Sri Lanka`,\"idTypes\":[{\"id\":`cid-lk`,\"name\":`National Identity Card`,\"localName\":`NIC`,\"authority\":`Department for Registration of Persons`,\"format\":`12-digit NIC (new) / 9+letter (old)`,\"notes\":`Mandatory from 15`}]},{\"id\":`SY`,\"name\":`Syria`,\"idTypes\":[{\"id\":`cid-sy`,\"name\":`National Identity Card`,\"localName\":`Bitaqa Shakhsiya`,\"authority\":`Civil Affairs Directorate`,\"format\":`11-digit National Number`}]},{\"id\":`TW`,\"name\":`Taiwan`,\"idTypes\":[{\"id\":`cid-tw`,\"name\":`National Identification Card`,\"localName\":`國民身分證 (Guomin Shenfenzheng)`,\"authority\":`Ministry of the Interior (Household Registration)`,\"format\":`1 letter + 9 digits`,\"notes\":`Citizens with household registration`}]},{\"id\":`TJ`,\"name\":`Tajikistan`,\"idTypes\":[{\"id\":`cid-tj`,\"name\":`Identity Card / Internal Passport`,\"localName\":`Shinosnoma (internal passport); new ID card`,\"authority\":`Ministry of Internal Affairs`,\"format\":`INN / personal number`,\"notes\":`Transitioning from internal passport to ID card`}]},{\"id\":`TH`,\"name\":`Thailand`,\"idTypes\":[{\"id\":`cid-th`,\"name\":`National Identity Card`,\"localName\":`Bat Prachachon (บัตรประจำตัวประชาชน)`,\"authority\":`Department of Provincial Administration (DOPA)`,\"format\":`13-digit ID number`,\"notes\":`Smart card; mandatory from 7; universal KYC doc`}]},{\"id\":`TL`,\"name\":`Timor-Leste`,\"idTypes\":[{\"id\":`cid-tl`,\"name\":`Identity Card`,\"localName\":`Bilhete de Identidade (BI)`,\"authority\":`Ministry of Justice`,\"format\":`BI number`,\"notes\":`Electoral card also widely used`}]},{\"id\":`TM`,\"name\":`Turkmenistan`,\"idTypes\":[{\"id\":`cid-tm`,\"name\":`Internal Passport`,\"localName\":`Içerki pasport`,\"authority\":`State Migration Service`,\"format\":`Passport number`,\"notes\":`Internal passport serves as the national ID (distinct from travel passport)`}]},{\"id\":`AE`,\"name\":`United Arab Emirates`,\"idTypes\":[{\"id\":`cid-ae`,\"name\":`Emirates ID`,\"localName\":`بطاقة الهوية الإماراتية`,\"authority\":`ICP (Federal Authority for Identity \u0026 Citizenship)`,\"format\":`15-digit IDN (784-YYYY-XXXXXXX-X)`,\"notes\":`Citizens \u0026 residents; universal KYC document; UAE Pass for digital`}]},{\"id\":`UZ`,\"name\":`Uzbekistan`,\"idTypes\":[{\"id\":`cid-uz`,\"name\":`Identity Card`,\"localName\":`ID-karta`,\"authority\":`Ministry of Internal Affairs`,\"format\":`14-digit PINFL (JShShIR)`,\"notes\":`ID card replacing biometric internal passport since 2021`}]},{\"id\":`VN`,\"name\":`Vietnam`,\"idTypes\":[{\"id\":`cid-vn`,\"name\":`Citizen Identity Card`,\"localName\":`Căn cước công dân (CCCD) / Căn cước`,\"authority\":`Ministry of Public Security (C06)`,\"format\":`12-digit personal ID number`,\"notes\":`Chip CCCD; VNeID digital identity app; mandatory from 14`}]},{\"id\":`YE`,\"name\":`Yemen`,\"idTypes\":[{\"id\":`cid-ye`,\"name\":`National Identity Card`,\"localName\":`Bitaqa Shakhsiya`,\"authority\":`Civil Status \u0026 Civil Registration Authority`,\"format\":`ID number`}]}]},{\"id\":`europe`,\"category\":`Europe`,\"description\":`European country-specific ID documents`,\"countries\":[{\"id\":`AL`,\"name\":`Albania`,\"idTypes\":[{\"id\":`cid-al`,\"name\":`Identity Card`,\"localName\":`Letërnjoftim`,\"authority\":`Ministry of Interior (IDEMIA-produced)`,\"format\":`10-char NID (encodes DOB)`,\"notes\":`Chip eID; mandatory from 16`}]},{\"id\":`AD`,\"name\":`Andorra`,\"idTypes\":[{\"id\":`cid-ad`,\"name\":`Passport is sole national doc; census registration`,\"authority\":`Govern d'Andorra`,\"format\":`—`,\"notes\":`No ID card issued; banks rely on passport + census certificate (excluded docs aside, no card exists)`}]},{\"id\":`AT`,\"name\":`Austria`,\"idTypes\":[{\"id\":`cid-at`,\"name\":`Identity Card`,\"localName\":`Personalausweis; ID Austria (digital)`,\"authority\":`BMI / municipalities`,\"format\":`Card number; bPK for digital`,\"notes\":`ID Austria digital identity for eKYC`}]},{\"id\":`BY`,\"name\":`Belarus`,\"idTypes\":[{\"id\":`cid-by`,\"name\":`Identity Card`,\"localName\":`ID-karta`,\"authority\":`Ministry of Internal Affairs`,\"format\":`14-char personal number`,\"notes\":`Biometric ID card since 2021; internal passport still circulating`}]},{\"id\":`BE`,\"name\":`Belgium`,\"idTypes\":[{\"id\":`cid-be`,\"name\":`Electronic Identity Card`,\"localName\":`eID / Carte d'identité / Identiteitskaart`,\"authority\":`FPS Interior (municipalities)`,\"format\":`11-digit National Register Number`,\"notes\":`Mandatory from 12 (carry from 15); itsme app for eKYC`}]},{\"id\":`BA`,\"name\":`Bosnia \u0026 Herzegovina`,\"idTypes\":[{\"id\":`cid-ba`,\"name\":`Identity Card`,\"localName\":`Lična karta / Osobna iskaznica`,\"authority\":`IDDEEA`,\"format\":`13-digit JMBG`,\"notes\":`Mandatory from 18`}]},{\"id\":`BG`,\"name\":`Bulgaria`,\"idTypes\":[{\"id\":`cid-bg`,\"name\":`Identity Card`,\"localName\":`Лична карта (Lichna karta)`,\"authority\":`Ministry of Interior`,\"format\":`10-digit EGN (encodes DOB)`,\"notes\":`Mandatory from 14`}]},{\"id\":`HR`,\"name\":`Croatia`,\"idTypes\":[{\"id\":`cid-hr`,\"name\":`Identity Card`,\"localName\":`Osobna iskaznica`,\"authority\":`Ministry of Interior`,\"format\":`11-digit OIB (tax/personal number)`,\"notes\":`eOI chip card; mandatory`}]},{\"id\":`CY`,\"name\":`Cyprus`,\"idTypes\":[{\"id\":`cid-cy`,\"name\":`Identity Card`,\"localName\":`Δελτίο Ταυτότητας`,\"authority\":`Civil Registry \u0026 Migration Dept.`,\"format\":`ID number`,\"notes\":`Biometric card since 2020`}]},{\"id\":`CZ`,\"name\":`Czechia`,\"idTypes\":[{\"id\":`cid-cz`,\"name\":`Identity Card`,\"localName\":`Občanský průkaz`,\"authority\":`Ministry of Interior (municipalities)`,\"format\":`Card number; rodné číslo (birth number)`,\"notes\":`Mandatory from 15; eDoklady digital ID app`}]},{\"id\":`DK`,\"name\":`Denmark`,\"idTypes\":[{\"id\":`cid-dk`,\"name\":`CPR number + MitID (digital)`,\"authority\":`CPR Office; MitID (Digitaliseringsstyrelsen/FinansDanmark)`,\"format\":`10-digit CPR (encodes DOB)`,\"notes\":`No physical national ID; CPR + MitID is the KYC standard; new optional ID card for citizens announced`}]},{\"id\":`EE`,\"name\":`Estonia`,\"idTypes\":[{\"id\":`cid-ee`,\"name\":`Identity Card`,\"localName\":`ID-kaart`,\"authority\":`Police \u0026 Border Guard Board`,\"format\":`11-digit isikukood`,\"notes\":`Mandatory; e-Residency card for foreigners; Smart-ID/Mobile-ID for eKYC`}]},{\"id\":`FI`,\"name\":`Finland`,\"idTypes\":[{\"id\":`cid-fi`,\"name\":`Identity Card`,\"localName\":`Henkilökortti`,\"authority\":`Police`,\"format\":`11-char henkilötunnus (personal identity code)`,\"notes\":`Voluntary card; bank credentials (Tupas/FTN) dominate eKYC`}]},{\"id\":`FR`,\"name\":`France`,\"idTypes\":[{\"id\":`cid-fr`,\"name\":`National Identity Card`,\"localName\":`Carte Nationale d'Identité électronique (CNIe)`,\"authority\":`Ministry of Interior (ANTS)`,\"format\":`12-char card number; NIR (social security number) separate`,\"notes\":`New credit-card-format CNIe since 2021; France Identité app`}]},{\"id\":`DE`,\"name\":`Germany`,\"idTypes\":[{\"id\":`cid-de`,\"name\":`Identity Card`,\"localName\":`Personalausweis`,\"authority\":`BMI (local Bürgerämter)`,\"format\":`9-char card number (no lifetime personal number)`,\"notes\":`Mandatory from 16; eID online function (AusweisApp) for eKYC`}]},{\"id\":`GR`,\"name\":`Greece`,\"idTypes\":[{\"id\":`cid-gr`,\"name\":`Identity Card`,\"localName\":`Δελτίο Αστυνομικής Ταυτότητας (new EU-format)`,\"authority\":`Hellenic Police`,\"format\":`New card number; AMKA/AFM separate numbers`,\"notes\":`New biometric EU-format cards since 2023; Gov.gr Wallet digital ID`}]},{\"id\":`HU`,\"name\":`Hungary`,\"idTypes\":[{\"id\":`cid-hu`,\"name\":`Identity Card`,\"localName\":`Személyazonosító igazolvány (eSzemélyi)`,\"authority\":`Ministry of Interior`,\"format\":`Card number; személyi szám (personal number)`,\"notes\":`Chip eID; mandatory`}]},{\"id\":`IS`,\"name\":`Iceland`,\"idTypes\":[{\"id\":`cid-is`,\"name\":`Identity Card`,\"localName\":`Nafnskírteini`,\"authority\":`Registers Iceland (Þjóðskrá)`,\"format\":`10-digit kennitala (encodes DOB)`,\"notes\":`New EU/EEA-compliant nafnskírteini since 2024; kennitala + electronic ID (Auðkenni) drive KYC`}]},{\"id\":`IE`,\"name\":`Ireland`,\"idTypes\":[{\"id\":`cid-ie`,\"name\":`Public Services Card (PSC) + PPS Number`,\"authority\":`Department of Social Protection`,\"format\":`PPSN (7 digits + 1-2 letters)`,\"notes\":`No national ID; PSC/MyGovID used for public services; banks typically rely on excluded docs + PPSN`}]},{\"id\":`IT`,\"name\":`Italy`,\"idTypes\":[{\"id\":`cid-it`,\"name\":`Electronic Identity Card`,\"localName\":`Carta d'Identità Elettronica (CIE)`,\"authority\":`Ministry of Interior (municipalities)`,\"format\":`Card number; Codice Fiscale (16-char) separate`,\"notes\":`CIE 3.0 + SPID digital identity for eKYC`}]},{\"id\":`XK`,\"name\":`Kosovo`,\"idTypes\":[{\"id\":`cid-xk`,\"name\":`Identity Card`,\"localName\":`Letërnjoftim / Lična karta`,\"authority\":`Ministry of Internal Affairs`,\"format\":`10-digit personal number`,\"notes\":`Mandatory from 16`}]},{\"id\":`LV`,\"name\":`Latvia`,\"idTypes\":[{\"id\":`cid-lv`,\"name\":`Identity Card`,\"localName\":`eID karte`,\"authority\":`PMLP (Office of Citizenship \u0026 Migration Affairs)`,\"format\":`11-digit personas kods`,\"notes\":`Mandatory since 2023 (from 15)`}]},{\"id\":`LI`,\"name\":`Liechtenstein`,\"idTypes\":[{\"id\":`cid-li`,\"name\":`Identity Card`,\"localName\":`Identitätskarte`,\"authority\":`Migration \u0026 Passport Office`,\"format\":`Card number`,\"notes\":`Voluntary`}]},{\"id\":`LT`,\"name\":`Lithuania`,\"idTypes\":[{\"id\":`cid-lt`,\"name\":`Identity Card`,\"localName\":`Asmens tapatybės kortelė`,\"authority\":`Migration Department`,\"format\":`11-digit asmens kodas`,\"notes\":`Chip eID; Smart-ID widely used for eKYC`}]},{\"id\":`LU`,\"name\":`Luxembourg`,\"idTypes\":[{\"id\":`cid-lu`,\"name\":`Identity Card`,\"localName\":`Carte d'identité`,\"authority\":`Ministry of Home Affairs (communes)`,\"format\":`13-digit national ID number (matricule)`,\"notes\":`Mandatory from 15; LuxTrust for eKYC`}]},{\"id\":`MT`,\"name\":`Malta`,\"idTypes\":[{\"id\":`cid-mt`,\"name\":`Identity Card`,\"localName\":`Karta tal-Identità`,\"authority\":`Identità (Identity Malta)`,\"format\":`ID number (digits + M/G/A/P/L letter)`,\"notes\":`Mandatory from 14`}]},{\"id\":`MD`,\"name\":`Moldova`,\"idTypes\":[{\"id\":`cid-md`,\"name\":`Identity Card`,\"localName\":`Buletin de identitate`,\"authority\":`Public Services Agency (ASP)`,\"format\":`13-digit IDNP`,\"notes\":`Mandatory`}]},{\"id\":`MC`,\"name\":`Monaco`,\"idTypes\":[{\"id\":`cid-mc`,\"name\":`Identity Card`,\"localName\":`Carte d'identité monégasque`,\"authority\":`Mairie de Monaco`,\"format\":`Card number`,\"notes\":`Citizens; residents hold carte de séjour (excluded as PR-type)`}]},{\"id\":`ME`,\"name\":`Montenegro`,\"idTypes\":[{\"id\":`cid-me`,\"name\":`Identity Card`,\"localName\":`Lična karta`,\"authority\":`Ministry of Interior`,\"format\":`13-digit JMBG`,\"notes\":`Mandatory from 18`}]},{\"id\":`NL`,\"name\":`Netherlands`,\"idTypes\":[{\"id\":`cid-nl`,\"name\":`Identity Card`,\"localName\":`Nederlandse identiteitskaart (NIK)`,\"authority\":`Municipalities (RvIG)`,\"format\":`9-digit BSN (citizen service number)`,\"notes\":`BSN is the KYC number; iDIN (bank-based) + DigiD for eKYC`}]},{\"id\":`MK`,\"name\":`North Macedonia`,\"idTypes\":[{\"id\":`cid-mk`,\"name\":`Identity Card`,\"localName\":`Лична карта (Lichna karta)`,\"authority\":`Ministry of Interior`,\"format\":`13-digit EMBG`,\"notes\":`Mandatory from 18`}]},{\"id\":`NO`,\"name\":`Norway`,\"idTypes\":[{\"id\":`cid-no`,\"name\":`National Identity Card`,\"localName\":`Nasjonalt ID-kort`,\"authority\":`Police`,\"format\":`11-digit fødselsnummer (encodes DOB)`,\"notes\":`Card launched 2020; BankID is the dominant eKYC rail`}]},{\"id\":`PL`,\"name\":`Poland`,\"idTypes\":[{\"id\":`cid-pl`,\"name\":`Identity Card`,\"localName\":`Dowód osobisty`,\"authority\":`Ministry of Interior (gminas)`,\"format\":`11-digit PESEL (encodes DOB)`,\"notes\":`e-Dowód chip card; mObywatel digital ID; mandatory from 18`}]},{\"id\":`PT`,\"name\":`Portugal`,\"idTypes\":[{\"id\":`cid-pt`,\"name\":`Citizen Card`,\"localName\":`Cartão de Cidadão`,\"authority\":`IRN (Instituto dos Registos e do Notariado)`,\"format\":`Civil ID number; also bundles NIF (tax), NISS, health no.`,\"notes\":`Single card unifying civil, tax \u0026 social security numbers; Chave Móvel Digital for eKYC`}]},{\"id\":`RO`,\"name\":`Romania`,\"idTypes\":[{\"id\":`cid-ro`,\"name\":`Identity Card`,\"localName\":`Carte de identitate (CI / new CEI)`,\"authority\":`MAI (DEPABD)`,\"format\":`13-digit CNP (encodes DOB)`,\"notes\":`Electronic CEI rollout from 2021; mandatory from 14`}]},{\"id\":`RU`,\"name\":`Russia`,\"idTypes\":[{\"id\":`cid-ru`,\"name\":`Internal Passport`,\"localName\":`Внутренний паспорт (vnutrenniy pasport)`,\"authority\":`Ministry of Internal Affairs`,\"format\":`Series + number; SNILS \u0026 INN as numbers`,\"notes\":`Internal passport IS the national ID (distinct from travel passport); mandatory from 14`}]},{\"id\":`SM`,\"name\":`San Marino`,\"idTypes\":[{\"id\":`cid-sm`,\"name\":`Identity Card`,\"localName\":`Carta d'identità`,\"authority\":`Ufficio Stato Civile`,\"format\":`Card number`,\"notes\":`ISS number for services`}]},{\"id\":`RS`,\"name\":`Serbia`,\"idTypes\":[{\"id\":`cid-rs`,\"name\":`Identity Card`,\"localName\":`Lična karta (Лична карта)`,\"authority\":`Ministry of Interior`,\"format\":`13-digit JMBG`,\"notes\":`Chip card; mandatory from 16`}]},{\"id\":`SK`,\"name\":`Slovakia`,\"idTypes\":[{\"id\":`cid-sk`,\"name\":`Identity Card`,\"localName\":`Občiansky preukaz`,\"authority\":`Ministry of Interior`,\"format\":`Rodné číslo (birth number)`,\"notes\":`eID chip card; mandatory from 15`}]},{\"id\":`SI`,\"name\":`Slovenia`,\"idTypes\":[{\"id\":`cid-si`,\"name\":`Identity Card`,\"localName\":`Osebna izkaznica`,\"authority\":`Administrative units (MNZ)`,\"format\":`13-digit EMŠO`,\"notes\":`Biometric card since 2022`}]},{\"id\":`ES`,\"name\":`Spain`,\"idTypes\":[{\"id\":`cid-es`,\"name\":`National Identity Document`,\"localName\":`Documento Nacional de Identidad (DNI / DNIe)`,\"authority\":`Policía Nacional`,\"format\":`8 digits + letter (NIF)`,\"notes\":`Mandatory from 14; DNIe chip; NIE for foreigners is the parallel number`}]},{\"id\":`SE`,\"name\":`Sweden`,\"idTypes\":[{\"id\":`cid-se`,\"name\":`National Identity Card`,\"localName\":`Nationellt identitetskort; Skatteverket ID-kort`,\"authority\":`Police (national ID card); Tax Agency (ID-kort)`,\"format\":`10/12-digit personnummer`,\"notes\":`BankID dominates eKYC; personnummer is the KYC backbone`}]},{\"id\":`CH`,\"name\":`Switzerland`,\"idTypes\":[{\"id\":`cid-ch`,\"name\":`Identity Card`,\"localName\":`Identitätskarte / Carte d'identité (IDK)`,\"authority\":`Cantonal passport offices (fedpol)`,\"format\":`Card number; AHV number (756.xxxx) separate`,\"notes\":`Voluntary; widely held`}]},{\"id\":`UA`,\"name\":`Ukraine`,\"idTypes\":[{\"id\":`cid-ua`,\"name\":`Identity Card`,\"localName\":`ID-картка (plastic ID card)`,\"authority\":`State Migration Service`,\"format\":`13-digit UNZR + 10-digit RNTRC (tax)`,\"notes\":`Replaced booklet internal passport from 2016; Diia app digital ID legally equivalent`}]},{\"id\":`GB`,\"name\":`United Kingdom`,\"idTypes\":[{\"id\":`cid-gb`,\"name\":`(digital ID scheme announced; not yet issued)`,\"authority\":`— (Home Office for future digital ID)`,\"format\":`NINo (National Insurance number) is a number only`,\"notes\":`No national ID card; banks rely on excluded docs + electronic checks; PASS proof-of-age cards exist but limited KYC acceptance`}]},{\"id\":`VA`,\"name\":`Vatican City`,\"idTypes\":[{\"id\":`cid-va`,\"name\":`Vatican Identity Card`,\"localName\":`Carta d'identità vaticana`,\"authority\":`Governorate of Vatican City State`,\"format\":`Card number`,\"notes\":`Citizens/officials only`}]}]},{\"id\":`oceania`,\"category\":`Oceania`,\"description\":`Oceanian country-specific ID documents`,\"countries\":[{\"id\":`AU`,\"name\":`Australia`,\"idTypes\":[{\"id\":`cid-au`,\"name\":`State/Territory Photo Card (non-driver); Digital ID (myID)`,\"authority\":`State transport/registry agencies; ATO (myID)`,\"format\":`Varies; TFN is a number only`,\"notes\":`No national ID; NSW/VIC/QLD etc. Photo Cards are the country-specific card; Document Verification Service (DVS) underpins eKYC`}]},{\"id\":`FJ`,\"name\":`Fiji`,\"idTypes\":[{\"id\":`cid-fj`,\"name\":`(No single national ID)`,\"localName\":`FNPF/Voter Joint ID Card`,\"authority\":`Fiji National Provident Fund / Elections Office`,\"format\":`FNPF number`,\"notes\":`Joint FNPF-voter card is the de facto national ID`}]},{\"id\":`KI`,\"name\":`Kiribati`,\"idTypes\":[{\"id\":`cid-ki`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Civil Registration Office`,\"format\":`ID number`,\"notes\":`Rollout ongoing`}]},{\"id\":`MH`,\"name\":`Marshall Islands`,\"idTypes\":[{\"id\":`cid-mh`,\"name\":`Social Security Card`,\"authority\":`MISSA`,\"format\":`SSN`,\"notes\":`Limited domestic ID infrastructure`}]},{\"id\":`FM`,\"name\":`Micronesia`,\"idTypes\":[{\"id\":`cid-fm`,\"name\":`Voter ID / SSN Card`,\"authority\":`National \u0026 state offices`,\"format\":`SSN`,\"notes\":`Limited domestic ID infrastructure`}]},{\"id\":`NR`,\"name\":`Nauru`,\"idTypes\":[{\"id\":`cid-nr`,\"name\":`National ID (none issued)`,\"authority\":`—`,\"format\":`—`,\"notes\":`Birth certificate + excluded docs used`}]},{\"id\":`NZ`,\"name\":`New Zealand`,\"idTypes\":[{\"id\":`cid-nz`,\"name\":`Kiwi Access Card (18+); RealMe (digital)`,\"authority\":`Hospitality NZ (Kiwi Access); DIA (RealMe)`,\"format\":`—`,\"notes\":`No national ID; Kiwi Access is the country-specific photo card; RealMe verified identity for eKYC`}]},{\"id\":`PW`,\"name\":`Palau`,\"idTypes\":[{\"id\":`cid-pw`,\"name\":`Social Security Card`,\"authority\":`Palau SSA`,\"format\":`SSN`}]},{\"id\":`PG`,\"name\":`Papua New Guinea`,\"idTypes\":[{\"id\":`cid-pg`,\"name\":`National Identity Card`,\"localName\":`NID Card`,\"authority\":`PNG Civil \u0026 Identity Registry`,\"format\":`NID number`,\"notes\":`Rollout ongoing; coverage still partial`}]},{\"id\":`WS`,\"name\":`Samoa`,\"idTypes\":[{\"id\":`cid-ws`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Samoa Bureau of Statistics (SNID)`,\"format\":`National ID number`,\"notes\":`National Digital ID program launched 2023+`}]},{\"id\":`SB`,\"name\":`Solomon Islands`,\"idTypes\":[{\"id\":`cid-sb`,\"name\":`Voter ID Card`,\"authority\":`Electoral Commission`,\"format\":`Voter number`,\"notes\":`National ID planned`}]},{\"id\":`TO`,\"name\":`Tonga`,\"idTypes\":[{\"id\":`cid-to`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Civil Registration Unit (MIA)`,\"format\":`NIN`,\"notes\":`National ID Act 2010`}]},{\"id\":`TV`,\"name\":`Tuvalu`,\"idTypes\":[{\"id\":`cid-tv`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Civil Registry`,\"format\":`ID number`,\"notes\":`Digital ID work underway (Future Now project)`}]},{\"id\":`VU`,\"name\":`Vanuatu`,\"idTypes\":[{\"id\":`cid-vu`,\"name\":`National Identity Card`,\"localName\":`National ID`,\"authority\":`Civil Registration \u0026 Vital Statistics (CRVS)`,\"format\":`NIN`,\"notes\":`Card doubles as voter ID`}]}]}]}]}]},{\"id\":`face-liveness`,\"label\":`Face Liveness`,\"description\":`Real-time liveness detection to prevent spoofing`,\"icon\":`solar:face-scan-circle-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[{\"groupId\":`face-liveness-settings`,\"groupName\":`Face Liveness Settings`,\"groupTooltip\":`Settings for face liveness.`,\"properties\":[{\"id\":`preferred-liveness-method`,\"label\":`Preferred Liveness Method`,\"type\":`select`,\"options\":[{\"value\":`FaceMovementChallenge`,\"label\":`Face Movement`},{\"value\":`FaceMovementAndLightChallenge`,\"label\":`Flashing Lights`}],\"value\":`FaceMovementChallenge`}]},{\"groupId\":`face-liveness-confidence-settings`,\"groupName\":`Face Liveness Confidence`,\"groupTooltip\":`Settings for face liveness confidence.`,\"properties\":[{\"id\":`confidence-threshold`,\"label\":`Confidence Threshold`,\"type\":`slider`,\"value\":70,\"min\":0,\"max\":100,\"step\":1}]}]},{\"id\":`deepfake-detection`,\"label\":`Deepfake Detection`,\"description\":`Real-time detection to prevent swapping`,\"icon\":`solar:shield-network-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[{\"groupId\":`deepfake-detection-settings`,\"groupName\":`Deepfake Detection Settings`,\"groupTooltip\":`Settings for verification.`,\"properties\":[{\"id\":`mesh-visuals`,\"label\":`Mesh Visuals`,\"type\":`select`,\"options\":[{\"value\":`3d-ar-mesh`,\"label\":`3D AR Mesh`},{\"value\":`no-mesh`,\"label\":`No Mesh Visuals`}],\"value\":`3d-ar-mesh`},{\"id\":`use-custom-word`,\"label\":`Use Custom Challenge Word`,\"type\":`boolean`,\"value\":false},{\"id\":`challenge-word`,\"label\":`Challenge Word`,\"type\":`text`,\"value\":``,\"requirement\":`use-custom-word`}]},{\"groupId\":`deepfake-confidence-settings`,\"groupName\":`Deepfake Confidence`,\"groupTooltip\":`Settings for deepfake detection confidence.`,\"properties\":[{\"id\":`confidence-threshold`,\"label\":`Confidence Threshold`,\"type\":`slider`,\"value\":70,\"min\":0,\"max\":100,\"step\":1}]},{\"groupId\":`background-fraud-prevention`,\"groupName\":`Background Fraud Prevention`,\"groupTooltip\":`Additional security layers that run alongside the face scan to detect injected sessions, emulated devices, and manipulated environments.`,\"collapsible\":true,\"defaultExpanded\":true,\"properties\":[{\"id\":`bfp-enabled`,\"label\":`Enable Background Fraud Prevention`,\"type\":`boolean`,\"value\":true}]},{\"groupId\":`bfp-device-integrity`,\"groupName\":`Device Integrity`,\"groupTooltip\":`Detects virtual machines, emulators, and headless browsers by fingerprinting the runtime environment. Runs once before camera access is granted.`,\"parentToggle\":`bfp-enabled`,\"properties\":[{\"id\":`device-integrity-enabled`,\"label\":`Enable Device Integrity Check`,\"type\":`boolean`,\"value\":true},{\"id\":`block-emulators`,\"label\":`Block Emulators`,\"type\":`boolean`,\"value\":true,\"requirement\":`device-integrity-enabled`},{\"id\":`block-headless-browsers`,\"label\":`Block Headless Browsers`,\"type\":`boolean`,\"value\":true,\"requirement\":`device-integrity-enabled`},{\"id\":`soft-signal-sensitivity`,\"label\":`Soft Signal Sensitivity`,\"type\":`slider`,\"value\":.65,\"min\":0,\"max\":1,\"step\":.05,\"requirement\":`device-integrity-enabled`}]},{\"groupId\":`bfp-media-source`,\"groupName\":`Media Source Validation`,\"groupTooltip\":`Validates the video feed source to detect virtual cameras, video injection, and replay attacks.`,\"parentToggle\":`bfp-enabled`,\"properties\":[{\"id\":`media-source-enabled`,\"label\":`Enable Media Source Validation`,\"type\":`boolean`,\"value\":true},{\"id\":`block-virtual-cameras`,\"label\":`Block Virtual Cameras`,\"type\":`boolean`,\"value\":true,\"requirement\":`media-source-enabled`},{\"id\":`enable-challenge-response`,\"label\":`Enable Challenge-Response Verification`,\"type\":`boolean`,\"value\":true,\"requirement\":`media-source-enabled`},{\"id\":`frame-timing-sensitivity`,\"label\":`Frame Timing Sensitivity (ms)`,\"type\":`slider`,\"value\":.3,\"min\":.1,\"max\":2,\"step\":.1,\"requirement\":`media-source-enabled`},{\"id\":`challenge-pass-threshold`,\"label\":`Challenge Pass Threshold`,\"type\":`select`,\"value\":`2-of-3`,\"options\":[{\"value\":`2-of-3`,\"label\":`2 of 3`},{\"value\":`3-of-3`,\"label\":`3 of 3`}],\"requirement\":`media-source-enabled`}]},{\"groupId\":`bfp-environment-analysis`,\"groupName\":`Environment Analysis`,\"groupTooltip\":`Analyzes video frames for background manipulation, lighting inconsistencies, and compositing artifacts.`,\"parentToggle\":`bfp-enabled`,\"properties\":[{\"id\":`environment-enabled`,\"label\":`Enable Environment Analysis`,\"type\":`boolean`,\"value\":true},{\"id\":`edge-consistency-weight`,\"label\":`Edge Consistency Weight`,\"type\":`slider`,\"value\":40,\"min\":0,\"max\":100,\"step\":5,\"unit\":`%`,\"linkedGroup\":`env-weights`,\"requirement\":`environment-enabled`},{\"id\":`lighting-coherence-weight`,\"label\":`Lighting Coherence Weight`,\"type\":`slider`,\"value\":35,\"min\":0,\"max\":100,\"step\":5,\"unit\":`%`,\"linkedGroup\":`env-weights`,\"requirement\":`environment-enabled`},{\"id\":`compression-artifact-weight`,\"label\":`Compression Artifact Weight`,\"type\":`slider`,\"value\":25,\"min\":0,\"max\":100,\"step\":5,\"unit\":`%`,\"linkedGroup\":`env-weights`,\"requirement\":`environment-enabled`},{\"id\":`analysis-frequency`,\"label\":`Analysis Frequency`,\"type\":`select`,\"value\":`every-5th`,\"options\":[{\"value\":`every-frame`,\"label\":`Every Frame`},{\"value\":`every-3rd`,\"label\":`Every 3rd Frame`},{\"value\":`every-5th`,\"label\":`Every 5th Frame`},{\"value\":`every-10th`,\"label\":`Every 10th Frame`}],\"requirement\":`environment-enabled`}]},{\"groupId\":`bfp-verdict-thresholds`,\"groupName\":`Verdict Thresholds`,\"groupTooltip\":`Configure the score thresholds for automatic verdict determination.`,\"parentToggle\":`bfp-enabled`,\"properties\":[{\"id\":`verdict-thresholds`,\"label\":`Verdict Thresholds`,\"type\":`range`,\"value\":[65,78],\"min\":0,\"max\":100,\"step\":1,\"lowerColor\":`#FF5630`,\"middleColor\":`#FFAB00`,\"upperColor\":`#22C55E`,\"lowerLabel\":`Auto Reject`,\"middleLabel\":`Manual Review`,\"upperLabel\":`Auto Pass`},{\"id\":`weight-display`,\"type\":`weight-display`,\"value\":null}]}]},{\"id\":`face-liveness-consent-settings`,\"label\":`Face Liveness Consent Settings`,\"description\":`Collect applicant consent before specific verification steps`,\"icon\":`solar:document-add-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[{\"groupId\":`consent-steps`,\"groupName\":`Step Consent`,\"groupTooltip\":`Choose which steps require consent before proceeding.`,\"properties\":[{\"id\":`face-liveness`,\"label\":`Face Liveness`,\"sublabel\":`Prompt the applicant for consent before performing face liveness.`,\"type\":`boolean`,\"value\":false},{\"id\":`face-liveness-require-signature`,\"label\":`Require Signature`,\"sublabel\":`Require the applicant to provide a signature along with consent.`,\"type\":`boolean`,\"value\":false,\"requirement\":`face-liveness`}]}]},{\"id\":`address-verification`,\"label\":`Address Verification`,\"description\":`Verify applicant address through location-based quiz`,\"icon\":`solar:map-point-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[{\"groupId\":`address-verification-settings`,\"groupName\":`Address Verification Settings`,\"groupTooltip\":`Configure the address verification quiz options.`,\"properties\":[{\"id\":`num-questions`,\"label\":`Number of Questions`,\"type\":`select`,\"value\":`3`,\"options\":[{\"value\":`3`,\"label\":`3`},{\"value\":`4`,\"label\":`4`},{\"value\":`5`,\"label\":`5`},{\"value\":`6`,\"label\":`6`},{\"value\":`7`,\"label\":`7`},{\"value\":`8`,\"label\":`8`},{\"value\":`9`,\"label\":`9`},{\"value\":`10`,\"label\":`10`}]}]},{\"groupId\":`address-verification-escalation`,\"groupName\":`Escalation`,\"groupIcon\":`solar:shield-warning-bold-duotone`,\"groupTooltip\":`When the address quiz result is inconclusive, require the applicant to upload a proof-of-address document.`,\"properties\":[{\"id\":`enable-address-escalation`,\"label\":`Escalate to Document Upload on Failure`,\"sublabel\":`If the address quiz does not pass, the applicant will be asked to upload a document showing their name and address.`,\"type\":`boolean`,\"value\":false}]}]},{\"id\":`phone-verification`,\"label\":`Phone Verification`,\"description\":`Verify identity through a spoken prompt over phone`,\"icon\":`solar:phone-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[{\"groupId\":`phone-verification-settings`,\"groupName\":`Phone Verification Settings`,\"groupTooltip\":`Configure the verification prompt the user must say during the phone call.`,\"properties\":[{\"id\":`verification-prompt`,\"label\":`Verification Prompt`,\"type\":`text`,\"required\":true,\"maxLength\":60,\"value\":``}]}]},{\"id\":`proofcall`,\"label\":`Background Verification`,\"description\":`AI-powered phone call to confirm employment, education, or references`,\"icon\":`solar:phone-calling-bold-duotone`,\"category\":`Verify`,\"costLabel\":`$0.50/min`,\"propertyGroups\":[{\"groupId\":`proofcall-template`,\"groupName\":`Call Template`,\"groupTooltip\":`Select a pre-built question template or create your own custom questions.`,\"properties\":[{\"id\":`proofcall-template-type`,\"label\":`Template`,\"type\":`select`,\"value\":`employment`,\"fullWidth\":true,\"options\":[{\"value\":`employment`,\"label\":`Employment Confirmation`},{\"value\":`education`,\"label\":`Education Confirmation`},{\"value\":`reference`,\"label\":`Reference Confirmation`},{\"value\":`custom`,\"label\":`Custom`}]},{\"id\":`proofcall-questions`,\"label\":`Questions`,\"type\":`proofcall-questions`,\"value\":[]}]},{\"groupId\":`proofcall-voice`,\"groupName\":`AI Voice`,\"groupTooltip\":`Select the AI voice that will conduct the verification call.`,\"properties\":[{\"id\":`proofcall-voice-id`,\"label\":`Voice`,\"type\":`select`,\"value\":`ara`,\"options\":[{\"value\":`ara`,\"label\":`Claire — Warm \u0026 friendly`},{\"value\":`eve`,\"label\":`Andrea — Energetic \u0026 upbeat`}]}]},{\"groupId\":`proofcall-retries`,\"groupName\":`Call Settings`,\"groupTooltip\":`Configure retry behavior when the recipient does not answer.`,\"properties\":[{\"id\":`proofcall-max-retries`,\"label\":`Retries if no answer`,\"type\":`select`,\"value\":`2`,\"options\":[{\"value\":`0`,\"label\":`0 — No retries`},{\"value\":`1`,\"label\":`1 retry`},{\"value\":`2`,\"label\":`2 retries`},{\"value\":`3`,\"label\":`3 retries`}]}]}]},{\"id\":`age-estimation`,\"label\":`Age Estimation`,\"description\":`AI-based age verification without document upload`,\"icon\":`solar:user-bold-duotone`,\"category\":`Screen`,\"propertyGroups\":[{\"groupId\":`age-restriction-settings`,\"groupName\":`Age Restriction`,\"groupTooltip\":`Set age requirements for this verification step.`,\"properties\":[{\"id\":`age-restriction-mode`,\"label\":`Mode`,\"type\":`hidden`,\"value\":`slider`},{\"id\":`minimum-age`,\"label\":`Minimum Age`,\"type\":`range`,\"value\":[18,100],\"min\":0,\"max\":100,\"lowerLabel\":`Too young`,\"upperLabel\":`Too old`},{\"id\":`country-category-restrictions`,\"label\":`Country \u0026 Category Rules`,\"type\":`age-restriction-country-category`,\"value\":[]},{\"id\":`country-category-minimum-age`,\"label\":`Overall Minimum Age`,\"type\":`hidden`,\"value\":null}]}]},{\"id\":`deep-age`,\"label\":`Age Verification`,\"description\":`Verify age without an ID document — quiz, card check, or parental consent`,\"icon\":`solar:user-check-bold-duotone`,\"category\":`Screen`,\"propertyGroups\":[{\"groupId\":`deep-age-settings`,\"groupName\":`Verification Method`,\"groupTooltip\":`Choose how the applicant proves their age.`,\"properties\":[{\"id\":`method`,\"label\":`Method`,\"type\":`select`,\"value\":`intel-quiz`,\"options\":[{\"value\":`intel-quiz`,\"label\":`Knowledge Quiz`,\"hint\":`Age-correlated questions`},{\"value\":`credit-card`,\"label\":`Credit Card Check`,\"hint\":`Card issuance proves 18+`},{\"value\":`parent-connect`,\"label\":`Parent Connect`,\"hint\":`Parental consent for minors`}]}]}]},{\"id\":`pep-sanctions`,\"label\":`PEP/Sanctions`,\"description\":`Check against global PEP and sanctions lists`,\"icon\":`solar:shield-check-bold-duotone`,\"category\":`Screen`},{\"id\":`adverse-media`,\"label\":`Adverse Media`,\"description\":`Search for negative news and media mentions`,\"icon\":`solar:document-text-bold-duotone`,\"category\":`Screen`},{\"id\":`vpn-check`,\"label\":`VPN Check`,\"description\":`Detect VPNs, proxies, Tor, and hosting-provider IPs`,\"icon\":`solar:shield-keyhole-bold-duotone`,\"category\":`Screen`,\"advancedOnly\":true},{\"id\":`ip-geo-check`,\"label\":`IP Geo Check`,\"description\":`Validate the request IP against an allowed-country list`,\"icon\":`solar:map-point-bold-duotone`,\"category\":`Screen`,\"advancedOnly\":true},{\"id\":`bank-statement-upload`,\"label\":`Bank Statement`,\"description\":`Retrieve and analyze bank statements`,\"icon\":`solar:document-text-bold-duotone`,\"category\":`Docs`,\"propertyGroups\":[{\"groupId\":`bank-statement-settings`,\"groupName\":`Statement Upload Settings`,\"groupTooltip\":`Settings for bank statement upload step.`,\"properties\":[{\"id\":`account-type`,\"label\":`Account Type`,\"type\":`select`,\"options\":[{\"value\":`checking`,\"label\":`Checking`},{\"value\":`savings`,\"label\":`Savings`}],\"value\":`checking`},{\"id\":`statement-period`,\"label\":`Statement Period`,\"type\":`select`,\"options\":[{\"value\":`3`,\"label\":`3 Months`},{\"value\":`6`,\"label\":`6 Months`},{\"value\":`12`,\"label\":`12 Months`}],\"value\":`12`},{\"id\":`country`,\"label\":`Country`,\"type\":`select`,\"options\":[{\"value\":`canada`,\"label\":`Canada`},{\"value\":`usa`,\"label\":`United States of America`}],\"value\":`canada`,\"helperText\":`Contact sales for additional country availability.`}]},{\"groupId\":`analysis-types`,\"groupName\":`Analysis Types`,\"groupTooltip\":`Select one or more AI analyses to run on the bank statement. Multiple can be enabled.`,\"properties\":[{\"id\":`transaction-categorization`,\"label\":`Transaction Categorization`,\"type\":`boolean`,\"value\":false,\"tooltip\":`AI classifies each transaction into spending categories`},{\"id\":`net-worth-assessment`,\"label\":`Net Worth Assessment`,\"type\":`boolean`,\"value\":false,\"tooltip\":`12-month analysis to estimate approximate net worth`},{\"id\":`mortgage-qualification-report`,\"label\":`Mortgage Qualification Report`,\"type\":`boolean`,\"value\":false,\"tooltip\":`Monthly income vs. expenses for mortgage underwriters`},{\"id\":`tenant-financial-screening`,\"label\":`Tenant Financial Screening`,\"type\":`boolean`,\"value\":false,\"tooltip\":`Landlord/PropTech rent-readiness score`},{\"id\":`fraud-anomaly-detection`,\"label\":`Fraud \u0026 Anomaly Detection`,\"type\":`boolean`,\"value\":false,\"tooltip\":`Flag suspicious patterns across statements`}]}]},{\"id\":`ai-bank-statement-analysis`,\"label\":`Bank Statement Analysis`,\"description\":`AI-powered analysis of bank statements`,\"icon\":`solar:document-text-bold-duotone`,\"category\":`Docs`,\"coupled\":true},{\"id\":`passport-nfc-scanner`,\"label\":`Passport NFC Scanner`,\"description\":`Scan and verify passport NFC chip data`,\"icon\":`solar:card-transfer-bold-duotone`,\"category\":`Verify`,\"devOnly\":true},{\"id\":`custom-prompt`,\"label\":`Custom Prompts`,\"description\":`Add custom instructions for the applicant`,\"icon\":`solar:text-field-bold`,\"category\":`Verify`,\"propertyGroups\":[{\"groupId\":`custom-instructions`,\"groupName\":``,\"groupTooltip\":``,\"properties\":[{\"id\":`custom-prompts-list`,\"label\":`Custom Prompt`,\"type\":`text-list`,\"value\":[{\"text\":``}]}]}]},{\"id\":`document-upload`,\"label\":`Document Upload`,\"description\":`Upload and verify arbitrary documents`,\"icon\":`solar:file-bold-duotone`,\"category\":`Docs`,\"propertyGroups\":[{\"groupId\":`document-upload-instructions`,\"groupName\":``,\"groupTooltip\":``,\"properties\":[{\"id\":`document-upload-list`,\"label\":`Document Upload`,\"type\":`doc-upload`,\"value\":{\"document1\":``}},{\"id\":`document-optional-flags`,\"type\":`hidden`,\"value\":{}},{\"id\":`minimum-optional-uploads`,\"type\":`hidden`,\"value\":0}]},{\"groupId\":`document-analysis-settings`,\"groupName\":`Document Analysis`,\"groupTooltip\":`AI-powered analysis scans uploaded documents for fraud indicators, metadata inconsistencies, and tampering signals (+$0.40/session)`,\"properties\":[{\"id\":`enable-document-risk-analysis`,\"label\":`Document Fraud Analysis`,\"type\":`boolean`,\"value\":true},{\"id\":`document-risk-threshold`,\"label\":`Fail when risk is at or above`,\"type\":`slider`,\"value\":50,\"min\":0,\"max\":100,\"step\":5,\"unit\":`%`,\"marks\":[{\"value\":0,\"label\":`0%`},{\"value\":25,\"label\":`25%`},{\"value\":50,\"label\":`50%`},{\"value\":75,\"label\":`75%`},{\"value\":100,\"label\":`100%`}],\"requirement\":`enable-document-risk-analysis`}]},{\"groupId\":`data-extraction-settings`,\"groupName\":`Data Extraction`,\"groupTooltip\":`Configure AI-powered data extraction to pull specific values from uploaded documents`,\"properties\":[{\"id\":`data-extraction-config`,\"label\":`Data Extraction`,\"type\":`data-extraction`,\"value\":{}}]}]},{\"id\":`title-search`,\"label\":`Title Search`,\"description\":`Retrieve title information about a residential address`,\"icon\":`solar:home-angle-bold-duotone`,\"category\":`Screen`,\"devOnly\":false,\"propertyGroups\":[{\"groupId\":`title-search-settings`,\"groupName\":`Title Search Settings`,\"groupTooltip\":`Configure the title search options.`,\"properties\":[{\"id\":`title-search-country`,\"label\":`Country`,\"type\":`select`,\"value\":`usa`,\"options\":[{\"value\":`usa`,\"label\":`United States of America`,\"flag\":`us`}]},{\"id\":`enhanced-title-search`,\"label\":`Enhanced Title Search`,\"sublabel\":`Adds deeper ownership history and lien analysis. Adds $5.00 to the report cost.`,\"type\":`boolean`,\"value\":false}]},{\"groupId\":`title-search-location-info`,\"groupName\":`Detailed Location Info`,\"groupTooltip\":`Select which location details to include in the title search results.`,\"properties\":[{\"id\":`location-info-fields`,\"label\":`Location Information Fields`,\"type\":`multiselect-table`,\"categoryLabel\":`Category`,\"optionLabel\":`field`,\"options\":[{\"id\":`location-fields`,\"category\":`Location Fields`,\"description\":`Address and geographic location details`,\"categoryOptions\":[{\"id\":`Subdivision`,\"name\":`Subdivision`},{\"id\":`Latitude`,\"name\":`Latitude`},{\"id\":`Longitude`,\"name\":`Longitude`},{\"id\":`CountyFips`,\"name\":`County FIPS`},{\"id\":`TownshipRangeSection`,\"name\":`Township Range Section`},{\"id\":`MunicipalityTownship`,\"name\":`Municipality Township`},{\"id\":`CensusTract`,\"name\":`Census Tract`},{\"id\":`CensusBlock`,\"name\":`Census Block`},{\"id\":`TractNumber`,\"name\":`Tract Number`},{\"id\":`LegalBookPage`,\"name\":`Legal Book Page`},{\"id\":`LegalLot`,\"name\":`Legal Lot`},{\"id\":`LegalBlock`,\"name\":`Legal Block`},{\"id\":`MapReferenceOne`,\"name\":`Map Reference One`},{\"id\":`MapReferenceTwo`,\"name\":`Map Reference Two`},{\"id\":`NeighborhoodName`,\"name\":`Neighborhood Name`}]}],\"value\":{\"Subdivision\":true,\"Latitude\":true,\"Longitude\":true,\"CountyFips\":true,\"TownshipRangeSection\":true,\"MunicipalityTownship\":true,\"CensusTract\":true,\"CensusBlock\":true,\"TractNumber\":true,\"LegalBookPage\":true,\"LegalLot\":true,\"LegalBlock\":true,\"MapReferenceOne\":true,\"MapReferenceTwo\":true,\"NeighborhoodName\":true}}]}]},{\"id\":`e-signature`,\"label\":`E-Signature`,\"description\":`Collect legally binding electronic signatures from applicants and signers`,\"icon\":`solar:pen-new-square-linear`,\"category\":`Docs`,\"propertyGroups\":[{\"groupId\":`e-signature-settings`,\"groupName\":`E-Signature Internal Settings`,\"groupTooltip\":`Internal workflow e-sign compatibility settings.`,\"properties\":[{\"id\":`source-mode`,\"type\":`hidden`,\"value\":`template`},{\"id\":`template-id`,\"type\":`hidden`,\"value\":``},{\"id\":`template-name`,\"type\":`hidden`,\"value\":``},{\"id\":`template-signer-count`,\"type\":`hidden`,\"value\":0},{\"id\":`include-sender-as-signer`,\"type\":`hidden`,\"value\":false},{\"id\":`sender-role`,\"type\":`hidden`,\"value\":``},{\"id\":`allow-typed-signature`,\"type\":`hidden`,\"value\":true},{\"id\":`workflow-template-managed`,\"type\":`hidden`,\"value\":false},{\"id\":`workflow-template-source-signature`,\"type\":`hidden`,\"value\":``}]},{\"groupId\":`esign-template`,\"groupName\":`Template`,\"groupTooltip\":`Use an existing template with pre-configured documents and signature fields.`,\"properties\":[{\"id\":`template-id`,\"label\":`Select Template`,\"type\":`esign-template-select`,\"value\":``,\"options\":[]}]},{\"groupId\":`esign-document-setup`,\"groupName\":`Document Setup`,\"groupTooltip\":`Upload documents (up to 25) and configure signature fields for sender and recipient.`,\"properties\":[{\"id\":`documents`,\"label\":`Documents \u0026 Fields`,\"type\":`esign-document-setup`,\"value\":{\"files\":[]}}]},{\"groupId\":`esign-signature-method`,\"groupName\":`Signature Method`,\"groupTooltip\":`Control how the recipient can sign the document.`,\"properties\":[{\"id\":`allow-typed-signature`,\"label\":`Allow Typed Signature`,\"type\":`boolean`,\"value\":true}]}]},{\"id\":`custom-form`,\"label\":`Custom Form`,\"description\":`AML questionnaires and custom compliance forms`,\"icon\":`solar:clipboard-list-linear`,\"category\":`Docs`,\"propertyGroups\":[{\"groupId\":`custom-form-templates`,\"groupName\":`AML Questionnaire Templates`,\"groupTooltip\":`Toggle on a pre-built questionnaire for your industry. Sections can be individually enabled and customized.`,\"properties\":[{\"id\":`questionnaire-templates`,\"type\":`questionnaire-template-toggles`,\"value\":{}}]},{\"groupId\":`form-fields`,\"groupName\":`Custom Form Fields`,\"groupTooltip\":`Define additional custom fields for the applicant to fill in.`,\"properties\":[{\"id\":`form-fields-list`,\"label\":`Form Field`,\"type\":`object`,\"value\":{}}]}]},{\"id\":`consent`,\"label\":`Consent`,\"description\":`Collect user consent for data processing and checks`,\"icon\":`solar:check-circle-bold-duotone`,\"category\":`Docs`,\"propertyGroups\":[{\"groupId\":`consent-settings`,\"groupName\":`Consent Settings`,\"groupTooltip\":`Configure what the user needs to consent to.`,\"properties\":[{\"id\":`consent-text`,\"label\":`Consent Text`,\"type\":`text`,\"value\":``},{\"id\":`require-signature`,\"label\":`Require Signature`,\"type\":`boolean`,\"value\":false}]}]},{\"id\":`credit-check`,\"label\":`Credit Check`,\"description\":`Run a soft or hard credit inquiry on an applicant to assess financial risk`,\"icon\":`solar:chart-bold-duotone`,\"category\":`Screen`,\"costLabel\":`Varies`,\"propertyGroups\":[{\"groupId\":`credit-check-settings`,\"groupName\":`Credit Check Settings`,\"groupTooltip\":`Configure the credit check options.`,\"properties\":[{\"id\":`credit-check-type`,\"label\":`Type`,\"type\":`select`,\"value\":`consumer`,\"options\":[{\"value\":`consumer`,\"label\":`Consumer`},{\"value\":`commercial`,\"label\":`Commercial`,\"disabled\":true,\"hint\":`Talk to sales`}]},{\"id\":`credit-check-inquiry-type`,\"label\":`Credit Type`,\"sublabel\":`Soft checks do not affect the applicant's credit score. Hard checks may impact their score.`,\"type\":`select`,\"value\":`hard`,\"options\":[{\"value\":`soft`,\"label\":`Soft Check ($6.00)`},{\"value\":`hard`,\"label\":`Hard Check ($19.00)`}]},{\"id\":`credit-check-country`,\"label\":`Country`,\"type\":`select`,\"value\":`canada`,\"options\":[{\"value\":`canada`,\"label\":`Canada`},{\"value\":`usa`,\"label\":`United States of America`,\"disabled\":true,\"hint\":`Talk to sales`}]},{\"id\":`inquiryType`,\"type\":`hidden`,\"value\":`hard`},{\"id\":`sinMandatory`,\"type\":`hidden`,\"value\":true}]}]},{\"id\":`criminal-background-check`,\"label\":`Criminal Background Check`,\"description\":`Run a criminal background check on an applicant`,\"icon\":`solar:shield-warning-bold-duotone`,\"category\":`Screen`,\"costLabel\":`Varies`,\"devOnly\":true,\"propertyGroups\":[{\"groupId\":`criminal-background-check-settings`,\"groupName\":`Criminal Background Check Settings`,\"groupTooltip\":`Select the country for the background check. Pricing varies by country.`,\"properties\":[{\"id\":`criminal-background-check-country`,\"label\":`Country`,\"sublabel\":`Canada — $25.00/session | USA — $10.00/session`,\"type\":`select`,\"value\":`usa`,\"options\":[{\"value\":`usa`,\"label\":`USA ($10.00)`,\"flag\":`us`},{\"value\":`canada`,\"label\":`Canada ($25.00)`,\"flag\":`ca`}]}]}]},{\"id\":`vulnerable-sector-check`,\"label\":`Vulnerable Sector Check`,\"description\":`Run a vulnerable sector check for positions working with vulnerable populations`,\"icon\":`solar:shield-user-bold-duotone`,\"category\":`Screen`,\"costLabel\":`$25.00`,\"devOnly\":true,\"propertyGroups\":[{\"groupId\":`vulnerable-sector-check-settings`,\"groupName\":`Vulnerable Sector Check Settings`,\"groupTooltip\":`Configure the vulnerable sector check options.`,\"properties\":[{\"id\":`vulnerable-sector-check-country`,\"label\":`Country`,\"type\":`select`,\"value\":`canada`,\"options\":[{\"value\":`canada`,\"label\":`Canada`},{\"value\":`usa`,\"label\":`USA`}]}]}]},{\"id\":`background-check`,\"label\":`Background Check`,\"description\":`Run a standard background check on an applicant`,\"icon\":`solar:user-check-bold-duotone`,\"category\":`Screen`,\"propertyGroups\":[{\"groupId\":`background-check-settings`,\"groupName\":`Background Check Settings`,\"groupTooltip\":`Configure the background check options.`,\"properties\":[{\"id\":`background-check-country`,\"label\":`Country`,\"type\":`select`,\"value\":`canada`,\"options\":[{\"value\":`canada`,\"label\":`Canada`}]}]}]},{\"id\":`financial-crime-check`,\"label\":`Financial Crime Check`,\"description\":`Screen for financial crimes and fraud history`,\"icon\":`solar:wallet-money-bold-duotone`,\"category\":`Screen`,\"costLabel\":`$3.85`,\"devOnly\":true,\"gated\":true,\"propertyGroups\":[{\"groupId\":`financial-crime-check-settings`,\"groupName\":`Financial Crime Check Settings`,\"groupTooltip\":`Configure the financial crime check options.`,\"properties\":[{\"id\":`financial-crime-check-country`,\"label\":`Country`,\"type\":`select`,\"value\":`canada`,\"options\":[{\"value\":`canada`,\"label\":`Canada`},{\"value\":`usa`,\"label\":`USA`}]}]}]},{\"id\":`education-confirmation`,\"label\":`Education Confirmation`,\"description\":`Verify applicant education credentials against institutional records`,\"icon\":`solar:square-academic-cap-bold-duotone`,\"category\":`Screen`,\"costLabel\":`$10.00`,\"devOnly\":true,\"gated\":true,\"propertyGroups\":[{\"groupId\":`education-confirmation-settings`,\"groupName\":`Education Confirmation Settings`,\"groupTooltip\":`Configure institution selection and auto-decline behavior.`,\"properties\":[{\"id\":`education-institutions`,\"label\":`Select Institutions`,\"type\":`education-institution-picker`,\"value\":{}},{\"id\":`education-auto-decline`,\"label\":`Auto-Decline`,\"sublabel\":`Automatically reject an application if the applicant's listed education does not match their verified records`,\"type\":`boolean`,\"value\":false}]}]},{\"id\":`kyb`,\"label\":`KYB`,\"description\":`Know Your Business — verify corporate entities, ownership structures, and beneficial owners`,\"icon\":`solar:buildings-3-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[{\"groupId\":`kyb-data-sources`,\"groupName\":`Data Source \u0026 Provider Selection`,\"groupTooltip\":`Configure which data sources feed into the KYB workflow — government registries, commercial providers, sanctions lists, and PEP databases.`,\"properties\":[{\"id\":`kyb-government-registries`,\"label\":`Government Registries`,\"type\":`boolean`,\"value\":true},{\"id\":`kyb-sanctions-lists`,\"label\":`Sanctions Lists (OFAC, EU, UN, HMT)`,\"type\":`boolean`,\"value\":true},{\"id\":`kyb-pep-databases`,\"label\":`PEP Databases`,\"type\":`boolean`,\"value\":true}]},{\"groupId\":`kyb-approval-logic`,\"groupName\":`Approval \u0026 Escalation Logic`,\"groupTooltip\":`Configure auto-approve thresholds, escalation triggers, assignment routing, and SLA timers.`,\"properties\":[{\"id\":`kyb-escalate-pep-hit`,\"label\":`Escalate on PEP Hit`,\"type\":`boolean`,\"value\":true},{\"id\":`kyb-escalate-sanctions-match`,\"label\":`Escalate on Sanctions Match`,\"type\":`boolean`,\"value\":true},{\"id\":`kyb-escalate-adverse-media`,\"label\":`Escalate on Adverse Media Flag`,\"type\":`boolean`,\"value\":true}]},{\"groupId\":`kyb-document-matrix`,\"groupName\":`Document Requirements Matrix`,\"groupTooltip\":`Documents set to Required or Optional will appear as upload fields for the user to submit. Documents set to Not Required will be hidden.`,\"properties\":[{\"id\":`kyb-doc-certificate-incorporation`,\"label\":`Articles of Incorporation`,\"type\":`select`,\"value\":`required`,\"options\":[{\"label\":`Required`,\"value\":`required`},{\"label\":`Optional`,\"value\":`optional`},{\"label\":`Not Required`,\"value\":`none`}]},{\"id\":`kyb-doc-good-standing`,\"label\":`Certificate of Good Standing`,\"sublabel\":`Typically optional for domestic, required for foreign entities`,\"type\":`select`,\"value\":`optional`,\"options\":[{\"label\":`Required`,\"value\":`required`},{\"label\":`Optional`,\"value\":`optional`},{\"label\":`Not Required`,\"value\":`none`}]},{\"id\":`kyb-doc-shareholder-register`,\"label\":`Shareholder Register`,\"sublabel\":`Required above a certain ownership threshold`,\"type\":`select`,\"value\":`optional`,\"options\":[{\"label\":`Required`,\"value\":`required`},{\"label\":`Optional`,\"value\":`optional`},{\"label\":`Not Required`,\"value\":`none`}]},{\"id\":`kyb-doc-board-resolutions`,\"label\":`Board Resolutions`,\"sublabel\":`Conditional on entity complexity`,\"type\":`select`,\"value\":`optional`,\"options\":[{\"label\":`Required`,\"value\":`required`},{\"label\":`Optional`,\"value\":`optional`},{\"label\":`Not Required`,\"value\":`none`}]},{\"id\":`kyb-doc-ubo-declaration`,\"label\":`UBO Declaration`,\"type\":`select`,\"value\":`optional`,\"options\":[{\"label\":`Required`,\"value\":`required`},{\"label\":`Optional`,\"value\":`optional`},{\"label\":`Not Required`,\"value\":`none`}]},{\"id\":`kyb-doc-financial-statements`,\"label\":`Financial Statements`,\"type\":`select`,\"value\":`optional`,\"options\":[{\"label\":`Required`,\"value\":`required`},{\"label\":`Optional`,\"value\":`optional`},{\"label\":`Not Required`,\"value\":`none`}]}]}],\"devOnly\":false},{\"id\":`white-label`,\"label\":`White Label`,\"description\":`Apply white-labeling to this workflow session`,\"icon\":`solar:palette-bold-duotone`,\"category\":`Screen`},{\"id\":`crypto-wallet-screening`,\"label\":`Wallet Verification`,\"description\":`Screen connected crypto wallets across chains and exchanges`,\"icon\":`solar:wallet-bold-duotone`,\"category\":`Crypto`,\"devOnly\":true,\"propertyGroups\":[{\"groupId\":`crypto-networks-scanned`,\"groupName\":`Networks Scanned`,\"groupTooltip\":`Chains screened for sanctions, mixer, and privacy-coin exposure.`,\"properties\":[{\"id\":`networks-scanned`,\"label\":`Networks Scanned`,\"type\":`multiselect-table`,\"categoryLabel\":`Chain`,\"optionLabel\":`Network`,\"options\":[{\"id\":`all-networks`,\"category\":`All Networks`,\"categoryOptions\":[{\"id\":`bitcoin`,\"name\":`Bitcoin`},{\"id\":`ethereum`,\"name\":`Ethereum`},{\"id\":`tron`,\"name\":`Tron`},{\"id\":`solana`,\"name\":`Solana`},{\"id\":`bsc`,\"name\":`BNB Smart Chain`},{\"id\":`arbitrum`,\"name\":`Arbitrum`},{\"id\":`base`,\"name\":`Base`},{\"id\":`polygon`,\"name\":`Polygon`},{\"id\":`litecoin`,\"name\":`Litecoin`},{\"id\":`ripple`,\"name\":`Ripple`},{\"id\":`monero`,\"name\":`Monero`},{\"id\":`zcash`,\"name\":`Zcash`},{\"id\":`dash`,\"name\":`Dash`}]}],\"value\":{\"bitcoin\":true,\"ethereum\":true,\"tron\":true,\"solana\":true,\"bsc\":true,\"arbitrum\":true,\"base\":true,\"polygon\":true,\"litecoin\":true,\"ripple\":true,\"monero\":true,\"zcash\":true,\"dash\":true}}]},{\"groupId\":`crypto-exchanges-allowed`,\"groupName\":`Exchanges Allowed to Connect`,\"groupTooltip\":`Exchange connect-flow available to the applicant.`,\"properties\":[{\"id\":`exchanges-allowed`,\"label\":`Exchanges Allowed`,\"type\":`multiselect-table`,\"categoryLabel\":`Provider`,\"optionLabel\":`Exchange`,\"options\":[{\"id\":`all-exchanges`,\"category\":`All Exchanges`,\"categoryOptions\":[{\"id\":`binance`,\"name\":`Binance`},{\"id\":`coinbase`,\"name\":`Coinbase`}]}],\"value\":{\"binance\":true,\"coinbase\":false}}]},{\"groupId\":`crypto-scan-categories`,\"groupName\":`What to Scan For`,\"groupTooltip\":`Risk categories evaluated per screen.`,\"properties\":[{\"id\":`scan-sanctions`,\"label\":`Sanctions`,\"type\":`boolean`,\"value\":true},{\"id\":`scan-mixers`,\"label\":`Mixers`,\"type\":`boolean`,\"value\":true},{\"id\":`scan-privacy-coins`,\"label\":`Privacy Coins`,\"type\":`boolean`,\"value\":true},{\"id\":`scan-darknet`,\"label\":`Darknet Markets`,\"type\":`boolean`,\"value\":false,\"disabled\":true,\"sublabel\":`Not yet available`},{\"id\":`scan-scam`,\"label\":`Known Scams`,\"type\":`boolean`,\"value\":false,\"disabled\":true,\"sublabel\":`Not yet available`},{\"id\":`scan-gambling`,\"label\":`Gambling`,\"type\":`boolean`,\"value\":false,\"disabled\":true,\"sublabel\":`Not yet available`},{\"id\":`scan-high-risk-exchange`,\"label\":`High-Risk Exchange`,\"type\":`boolean`,\"value\":false,\"disabled\":true,\"sublabel\":`Pending vendor decision`}]},{\"groupId\":`crypto-actions`,\"groupName\":`Action per Category`,\"groupTooltip\":`Response taken per matched category. Informational only today - backend returns a single verdict, not a per-category action yet.`,\"properties\":[{\"id\":`action-sanctions`,\"label\":`Sanctions Match Action`,\"type\":`select`,\"options\":[{\"value\":`allow`,\"label\":`Allow`},{\"value\":`flag`,\"label\":`Flag`},{\"value\":`step-up`,\"label\":`Step-up`},{\"value\":`block`,\"label\":`Block`}],\"value\":`block`},{\"id\":`action-mixers`,\"label\":`Mixer Exposure Action`,\"type\":`select`,\"options\":[{\"value\":`allow`,\"label\":`Allow`},{\"value\":`flag`,\"label\":`Flag`},{\"value\":`step-up`,\"label\":`Step-up`},{\"value\":`block`,\"label\":`Block`}],\"value\":`flag`}]},{\"groupId\":`crypto-privacy-coin-handling`,\"groupName\":`Privacy-Coin Handling`,\"groupTooltip\":`Privacy coins are flag-only by design - detected, never traced.`,\"properties\":[{\"id\":`privacy-coin-action`,\"label\":`Privacy-Coin Exposure Action`,\"type\":`select`,\"options\":[{\"value\":`allow`,\"label\":`Allow`},{\"value\":`flag`,\"label\":`Flag`},{\"value\":`step-up`,\"label\":`Step-up`}],\"value\":`flag`}]},{\"groupId\":`crypto-risk-settings`,\"groupName\":`Risk Settings`,\"groupTooltip\":`Thresholds applied during screening.`,\"properties\":[{\"id\":`risk-threshold`,\"label\":`Risk Threshold`,\"type\":`slider`,\"value\":50,\"min\":0,\"max\":100,\"step\":5,\"unit\":`%`,\"marks\":[{\"value\":0,\"label\":`0%`},{\"value\":25,\"label\":`25%`},{\"value\":50,\"label\":`50%`},{\"value\":75,\"label\":`75%`},{\"value\":100,\"label\":`100%`}]},{\"id\":`proximity-hop-depth`,\"label\":`Proximity Hop Depth`,\"type\":`select`,\"options\":[{\"value\":1,\"label\":`1 hop`},{\"value\":2,\"label\":`2 hops`},{\"value\":3,\"label\":`3 hops`}],\"value\":2}]},{\"groupId\":`crypto-commercial-feed`,\"groupName\":`Commercial Feed Augmentation`,\"groupTooltip\":`Third-party exchange-risk data. Pending vendor decision - not yet available.`,\"properties\":[{\"id\":`commercial-feed-enabled`,\"label\":`Enable Commercial Feed Augmentation`,\"type\":`boolean`,\"value\":false,\"disabled\":true,\"sublabel\":`Pending vendor decision`}]},{\"groupId\":`crypto-continuous-monitoring`,\"groupName\":`Continuous Monitoring`,\"groupTooltip\":`Re-screen connected wallets on a schedule via Arbiter Monitoring. Arbiter Monitoring (DIDV-710) is not yet built - this configures the setting for when it ships, it does not run active re-screening today.`,\"properties\":[{\"id\":`continuous-monitoring-enabled`,\"label\":`Enable Continuous Monitoring`,\"type\":`boolean`,\"value\":false,\"disabled\":true,\"sublabel\":`Arbiter Monitoring not yet available`},{\"id\":`continuous-monitoring-frequency`,\"label\":`Frequency`,\"type\":`select`,\"options\":[{\"value\":`hourly`,\"label\":`Hourly`},{\"value\":`daily`,\"label\":`Daily`},{\"value\":`weekly`,\"label\":`Weekly`}],\"value\":`daily`,\"disabled\":true},{\"id\":`continuous-monitoring-scope`,\"label\":`Scope`,\"type\":`select`,\"options\":[{\"value\":`connected`,\"label\":`Connected Wallets`},{\"value\":`all`,\"label\":`All Screened`}],\"value\":`connected`,\"disabled\":true}]}]},{\"id\":`ip-jurisdiction`,\"label\":`IP Jurisdiction`,\"description\":`Enforce allowed jurisdictions and IP reputation rules`,\"icon\":`solar:map-point-bold-duotone`,\"category\":`Gaming`,\"devOnly\":true,\"propertyGroups\":[{\"groupId\":`ip-jurisdiction-settings`,\"groupName\":`IP Jurisdiction Settings`,\"groupTooltip\":`Configure which jurisdictions are allowed or blocked based on the applicant IP address.`,\"properties\":[{\"id\":`allowed-jurisdictions`,\"label\":`Allowed Jurisdictions (empty = all allowed)`,\"type\":`jurisdiction-picker`,\"value\":[]},{\"id\":`blocked-jurisdictions`,\"label\":`Blocked Jurisdictions`,\"type\":`jurisdiction-picker`,\"value\":[]},{\"id\":`out-of-jurisdiction-action`,\"label\":`Out-of-Jurisdiction Action`,\"type\":`select`,\"options\":[{\"value\":`allow`,\"label\":`Allow`},{\"value\":`flag`,\"label\":`Flag`},{\"value\":`step-up`,\"label\":`Step-up`},{\"value\":`block`,\"label\":`Block`}],\"value\":`block`},{\"id\":`datacenter-ip-action`,\"label\":`Datacenter IP Action`,\"type\":`select`,\"options\":[{\"value\":`allow`,\"label\":`Allow`},{\"value\":`flag`,\"label\":`Flag`},{\"value\":`block`,\"label\":`Block`}],\"value\":`flag`},{\"id\":`trusted-ip-list`,\"label\":`Trusted IPs / ASNs`,\"type\":`text`,\"value\":``}]},{\"groupId\":`ip-jurisdiction-escalation`,\"groupName\":`Escalation`,\"groupTooltip\":`Optional step-up verification to run when jurisdiction or reputation checks require additional assurance.`,\"properties\":[{\"id\":`escalation-type`,\"label\":`Escalation Type`,\"type\":`select`,\"options\":[{\"value\":`none`,\"label\":`None`},{\"value\":`nfc-passport`,\"label\":`Passport NFC Scan`},{\"value\":`address-verification`,\"label\":`Address Verification Quiz`}],\"value\":`none`}]}]},{\"id\":`vpn-detection`,\"label\":`VPN Detection`,\"description\":`Detect VPNs, proxies, and Tor and act on confidence`,\"icon\":`solar:shield-keyhole-bold-duotone`,\"category\":`Gaming`,\"devOnly\":true,\"propertyGroups\":[{\"groupId\":`vpn-detection-settings`,\"groupName\":`VPN / Proxy / Tor Settings`,\"groupTooltip\":`Configure detection and enforcement for VPNs, datacenter proxies, and Tor exit nodes.`,\"properties\":[{\"id\":`vpn-enabled`,\"label\":`Detect VPNs`,\"type\":`boolean`,\"value\":true},{\"id\":`vpn-action`,\"label\":`VPN Action`,\"type\":`select`,\"options\":[{\"value\":`allow`,\"label\":`Allow`},{\"value\":`flag`,\"label\":`Flag`},{\"value\":`step-up`,\"label\":`Step-up`},{\"value\":`block`,\"label\":`Block`}],\"value\":`block`,\"requirement\":`vpn-enabled`},{\"id\":`datacenter-enabled`,\"label\":`Detect Datacenter Proxies`,\"type\":`boolean`,\"value\":true},{\"id\":`datacenter-action`,\"label\":`Datacenter Proxy Action`,\"type\":`select`,\"options\":[{\"value\":`allow`,\"label\":`Allow`},{\"value\":`flag`,\"label\":`Flag`},{\"value\":`step-up`,\"label\":`Step-up`},{\"value\":`block`,\"label\":`Block`}],\"value\":`block`,\"requirement\":`datacenter-enabled`},{\"id\":`tor-enabled`,\"label\":`Detect Tor`,\"type\":`boolean`,\"value\":true},{\"id\":`tor-action`,\"label\":`Tor Action`,\"type\":`select`,\"options\":[{\"value\":`allow`,\"label\":`Allow`},{\"value\":`flag`,\"label\":`Flag`},{\"value\":`step-up`,\"label\":`Step-up`},{\"value\":`block`,\"label\":`Block`}],\"value\":`block`,\"requirement\":`tor-enabled`},{\"id\":`confidence-threshold`,\"label\":`Confidence Threshold`,\"type\":`slider`,\"value\":70,\"min\":0,\"max\":100,\"step\":5},{\"id\":`trusted-asn-list`,\"label\":`Trusted ASNs`,\"type\":`text`,\"value\":``},{\"id\":`trusted-ip-list`,\"label\":`Trusted IPs`,\"type\":`text`,\"value\":``}]},{\"groupId\":`vpn-detection-escalation`,\"groupName\":`Escalation`,\"groupTooltip\":`Optional step-up verification to run when VPN, proxy, or Tor detection requires additional assurance.`,\"properties\":[{\"id\":`escalation-type`,\"label\":`Escalation Type`,\"type\":`select`,\"options\":[{\"value\":`none`,\"label\":`None`},{\"value\":`nfc-passport`,\"label\":`Passport NFC Scan`},{\"value\":`address-verification`,\"label\":`Address Verification Quiz`}],\"value\":`none`}]}]},{\"id\":`injection-detection`,\"label\":`Injection Detection`,\"description\":`Detect biometric and session injection attacks`,\"icon\":`solar:danger-triangle-bold-duotone`,\"category\":`Gaming`,\"devOnly\":true,\"propertyGroups\":[{\"groupId\":`injection-detection-settings`,\"groupName\":`Injection Detection Settings`,\"groupTooltip\":`Detect injected/replayed biometric feeds and automated clients during capture.`,\"properties\":[{\"id\":`action-on-detection`,\"label\":`Action on Detection`,\"type\":`select`,\"options\":[{\"value\":`flag`,\"label\":`Flag`},{\"value\":`step-up`,\"label\":`Step-up`},{\"value\":`block`,\"label\":`Block`}],\"value\":`block`},{\"id\":`automation-handling`,\"label\":`Automation Handling`,\"type\":`select`,\"options\":[{\"value\":`ignore`,\"label\":`Ignore`},{\"value\":`flag`,\"label\":`Flag`},{\"value\":`block`,\"label\":`Block`}],\"value\":`block`},{\"id\":`confidence-threshold`,\"label\":`Confidence Threshold`,\"type\":`slider`,\"value\":70,\"min\":0,\"max\":100,\"step\":5}]},{\"groupId\":`injection-detection-escalation`,\"groupName\":`Escalation`,\"groupTooltip\":`Optional step-up verification to run when Action on Detection is Step-up.`,\"properties\":[{\"id\":`escalation-type`,\"label\":`Escalation Type`,\"type\":`select`,\"options\":[{\"value\":`none`,\"label\":`None`},{\"value\":`nfc-passport`,\"label\":`Passport NFC Scan`},{\"value\":`address-verification`,\"label\":`Address Verification Quiz`}],\"value\":`none`}]}]},{\"id\":`anti-cheat`,\"label\":`Anti-Cheat`,\"description\":`Detect multi-accounting and enforce self-exclusion`,\"icon\":`solar:users-group-two-rounded-bold-duotone`,\"category\":`Gaming`,\"devOnly\":true,\"propertyGroups\":[{\"groupId\":`anti-cheat-duplicate`,\"groupName\":`Multi-Accounting / Duplicate Detection`,\"groupTooltip\":`Detect applicants whose face already exists in your collection.`,\"properties\":[{\"id\":`duplicate-enabled`,\"label\":`Enable Duplicate Detection`,\"type\":`boolean`,\"value\":true},{\"id\":`match-threshold`,\"label\":`Match Threshold`,\"type\":`slider`,\"value\":85,\"min\":0,\"max\":100,\"step\":1},{\"id\":`action-on-duplicate`,\"label\":`Action on Duplicate`,\"type\":`select`,\"options\":[{\"value\":`flag`,\"label\":`Flag`},{\"value\":`manual-review`,\"label\":`Manual Review`},{\"value\":`block`,\"label\":`Block`}],\"value\":`flag`}]},{\"groupId\":`anti-cheat-self-exclusion`,\"groupName\":`Self-Exclusion`,\"groupTooltip\":`Block applicants on the operator self-exclusion list (by document number or flagged face). Self-exclusion hits always block.`,\"properties\":[{\"id\":`enabled`,\"label\":`Enforce Self-Exclusion`,\"type\":`boolean`,\"value\":true}]},{\"groupId\":`anti-cheat-multi-accounting`,\"groupName\":`Multi-Accounting (Session Linkage)`,\"groupTooltip\":`Flag applicants whose session links to existing accounts by shared signals (IP, biometric, document number, name + date of birth, device fingerprint). Complements duplicate detection; records the linked sessions for review.`,\"properties\":[{\"id\":`multi-account-enabled`,\"label\":`Enable Multi-Accounting Detection`,\"type\":`boolean`,\"value\":true},{\"id\":`signal-ip-enabled`,\"label\":`Enable IP Signal`,\"type\":`boolean`,\"value\":true},{\"id\":`signal-ip-weight`,\"label\":`IP Signal Weight`,\"type\":`slider`,\"value\":.2,\"min\":0,\"max\":1,\"step\":.05},{\"id\":`signal-biometric-enabled`,\"label\":`Enable Biometric Signal`,\"type\":`boolean`,\"value\":true},{\"id\":`signal-biometric-weight`,\"label\":`Biometric Signal Weight`,\"type\":`slider`,\"value\":1,\"min\":0,\"max\":1,\"step\":.05},{\"id\":`signal-document-enabled`,\"label\":`Enable Document Number Signal`,\"type\":`boolean`,\"value\":true},{\"id\":`signal-document-weight`,\"label\":`Document Number Signal Weight`,\"type\":`slider`,\"value\":.9,\"min\":0,\"max\":1,\"step\":.05},{\"id\":`signal-namedob-enabled`,\"label\":`Enable Name + Date of Birth Signal`,\"type\":`boolean`,\"value\":true},{\"id\":`signal-namedob-weight`,\"label\":`Name + Date of Birth Signal Weight`,\"type\":`slider`,\"value\":.1,\"min\":0,\"max\":1,\"step\":.05},{\"id\":`signal-device-enabled`,\"label\":`Enable Device Fingerprint Signal`,\"type\":`boolean`,\"value\":true},{\"id\":`signal-device-weight`,\"label\":`Device Fingerprint Signal Weight`,\"type\":`slider`,\"value\":.5,\"min\":0,\"max\":1,\"step\":.05},{\"id\":`link-sensitivity`,\"label\":`Link Sensitivity`,\"type\":`slider`,\"value\":2,\"min\":1,\"max\":5,\"step\":1},{\"id\":`action-on-multi-account`,\"label\":`Action on Linked Accounts`,\"type\":`select`,\"options\":[{\"value\":`flag`,\"label\":`Flag`},{\"value\":`manual-review`,\"label\":`Manual Review`},{\"value\":`block`,\"label\":`Block`}],\"value\":`flag`}]}]},{\"id\":`phone-trust-check`,\"label\":`Phone Trust Check`,\"description\":`Checks recent SIM changes and call forwarding before a code is sent`,\"icon\":`solar:shield-keyhole-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[]},{\"id\":`carrier-age-gate`,\"label\":`Carrier Age Gate`,\"description\":`Asks the carrier to confirm the person meets the minimum age`,\"icon\":`solar:user-check-rounded-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[]},{\"id\":`phone-ownership-match`,\"label\":`Phone Ownership Match`,\"description\":`Matches the name and date of birth on the phone subscription`,\"icon\":`solar:phone-calling-rounded-bold-duotone`,\"category\":`Verify`,\"propertyGroups\":[]}];const makeWB=generated=>{const g=generated||{};const stepUp=list=>Array.isArray(list)?list:[];return{...WB_LOCAL,WORKFLOW_STEPS_OPTIONS:stepUp(g.WORKFLOW_STEPS_OPTIONS),WORKFLOW_STEPS_DISABLED:g.WORKFLOW_STEPS_DISABLED||{},WORKFLOW_MIN_STEPS:g.WORKFLOW_MIN_STEPS||1,BOTTOM_PINNED_STEPS:stepUp(g.BOTTOM_PINNED_STEP_IDS),COUPLED_STEPS:g.COUPLED_STEPS||{},COUPLED_PROPERTY_OVERRIDES:g.COUPLED_PROPERTY_OVERRIDES||{},WORKFLOW_STEP_I18N_KEYS:g.WORKFLOW_STEP_I18N_KEYS||{},WORKFLOW_STEP_DESCRIPTION_I18N_KEYS:g.WORKFLOW_STEP_DESCRIPTION_I18N_KEYS||{},WORKFLOW_STEP_TO_SERVICE_MAP:g.WORKFLOW_STEP_TO_SERVICE_MAP||{},WORKFLOW_STEP_TO_SERVICES:g.WORKFLOW_STEP_TO_SERVICES||{},SERVICE_REGISTRY:g.SERVICE_REGISTRY||{},SERVICE_COSTS:g.SERVICE_COSTS||{},SERVICE_TYPES:g.SERVICE_TYPES||{},STEP_ICON_GRADIENTS:g.STEP_ICON_GRADIENTS||{},CUSTOM_FORM_FIELD_TYPES:stepUp(g.CUSTOM_FORM_FIELD_TYPES),CUSTOM_FORM_FIELD_TYPE_DEFAULT:g.CUSTOM_FORM_FIELD_TYPE_DEFAULT||`short-text`,MAX_OPTIONS:g.CUSTOM_FORM_MAX_OPTIONS||10,AGE_RESTRICTION_COUNTRY_DATA:stepUp(g.AGE_RESTRICTION_COUNTRY_DATA),AGE_RESTRICTION_CATEGORIES:stepUp(g.AGE_RESTRICTION_CATEGORIES),DEEP_AGE_METHODS:stepUp(g.DEEP_AGE_METHODS),DEVICE_SIZES:g.DEVICE_SIZES||{mobile:{width:390,height:760},desktop:{width:700,height:560}},VERIFY_COLORS:g.VERIFY_COLORS||{},PALETTE:g.DEEPIDV_COLOR_PALETTE\u0026\u0026g.DEEPIDV_COLOR_PALETTE.palette||{},ESIGN:{OVERLAY_BASE_W:g.ESIGN_OVERLAY_BASE_W||800,OVERLAY_BASES:g.ESIGN_OVERLAY_BASES||{},FIELD_TYPES:stepUp(g.E_SIGNATURE_FIELD_TYPES),DEFAULT_SIGNERS:stepUp(g.ESIGN_TEMPLATE_DEFAULT_SIGNERS),MAX_SIGNERS:g.ESIGN_MAX_SIGNERS||15},PROOFCALL_QUESTION_TEMPLATES:g.PROOFCALL_QUESTION_TEMPLATES||{},CANVAS:{...WB_LOCAL.CANVAS_EXTRA,...g.CANVAS||{}},WORKFLOW_TEMPLATES:stepUp(g.WORKFLOW_TEMPLATES),WORKFLOW_TEMPLATE_COLORS:g.WORKFLOW_TEMPLATE_COLORS||{},QUESTIONNAIRE_TEMPLATES:g.QUESTIONNAIRE_TEMPLATES||{},INPUT_TYPE_LABELS:g.INPUT_TYPE_LABELS||{},INPUT_TYPE_ICONS:g.INPUT_TYPE_ICONS||{},OPTION_MARKERS:g.OPTION_MARKERS||{},US_UNIVERSITIES:stepUp(g.US_UNIVERSITIES),CA_UNIVERSITIES:stepUp(g.CA_UNIVERSITIES),COUNTRIES:stepUp(g.COUNTRIES),JURISDICTIONS:stepUp(g.JURISDICTIONS),COUNTRY_ID_TYPES_OPTIONS:stepUp(g.COUNTRY_ID_TYPES_OPTIONS),COUNTRY_ID_TYPES_DEFAULT_VALUE:g.COUNTRY_ID_TYPES_DEFAULT_VALUE||{},I18N:g.I18N_EN||{}}};const WB_LOCAL={START_NODE_ID:`__start__`,CATEGORY_TABS:[`All`,`Verify`,`Docs`,`Screen`,`Crypto`,`Gaming`],SYSTEM_STEPS:[`add-step`,`start-session`,`end-session`],STEP_UP_GUARD_STEPS:[`ip-jurisdiction`,`vpn-detection`,`injection-detection`],REMOVED_PROPERTY_GROUPS:[`id-classification-settings`],EXCLUDED_FROM_PREVIEW:[`ai-bank-statement-analysis`,`white-label`,`ip-jurisdiction`,`vpn-detection`],TOP_ALIGNED_STEP_IDS:[`custom-form`,`kyb`,`proofcall`,`credit-check`],MASTER_CAMERA_SUB_STEP_IDS:[`id-verification`,`face-liveness`,`deepfake-detection`,`age-estimation`,`pep-sanctions`,`adverse-media`,`passport-nfc-scanner`,`custom-prompt`],HIDDEN_STEP_IDS:[`crypto-wallet-screening`,`phone-trust-check`,`carrier-age-gate`,`phone-ownership-match`,`e-signature`],STEP_COST_OVERRIDES:{\"deepfake-detection\":.6,\"e-signature\":.25},MAX_FIELDS_PER_PAGE:5,PANEL:{WIDTH:350,WIDTH_EXPANDED:600,PALETTE_WIDTH:300},CANVAS_EXTRA:{ROW_GAP:140,FIT_PADDING:80,FIT_MAX_ZOOM:1.5,ANCHOR_HIT_RADIUS:20},BRAND:{primary:`#0781DF`,light:`#089AEA`,dark:`#0676CC`},ICONS:{fallback:`solar:widget-bold-duotone`,emptyCanvas:`solar:widget-add-bold-duotone`,play:`solar:play-bold`,copy:`solar:copy-bold`,download:`solar:download-bold`},IS_DEV:false};const WB_CSS=`\n/* 1. Design tokens — deepidv backoffice palette (DEEPIDV_COLOR_PALETTE) + Inter\n ============================================================ */\n:root, .wb-root {\n --wb-font: 'Inter Variable', 'Inter', ui-sans-serif, system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;\n\n --wb-primary: #0781DF;\n --wb-primary-light: #089AEA;\n --wb-primary-lighter: #09b8EF;\n --wb-primary-dark: #0676CC;\n --wb-primary-darker: #002A48;\n --wb-primary-rgb: 7, 129, 223;\n --wb-primary-a06: rgba(7, 129, 223, 0.06);\n --wb-primary-a08: rgba(7, 129, 223, 0.08);\n --wb-primary-a10: rgba(7, 129, 223, 0.10);\n --wb-primary-a12: rgba(7, 129, 223, 0.12);\n --wb-primary-a15: rgba(7, 129, 223, 0.15);\n --wb-primary-a24: rgba(7, 129, 223, 0.24);\n --wb-primary-a30: rgba(7, 129, 223, 0.30);\n --wb-primary-a32: rgba(7, 129, 223, 0.32);\n --wb-primary-a40: rgba(7, 129, 223, 0.40);\n --wb-primary-a48: rgba(7, 129, 223, 0.48);\n --wb-gradient: linear-gradient(135deg, #0781DF 0%, #36A3F7 100%);\n --wb-gradient-hover: linear-gradient(135deg, #0560A8 0%, #0781DF 100%);\n --wb-gradient-shadow: 0 4px 14px 0 rgba(7, 129, 223, 0.4);\n --wb-gradient-shadow-hover: 0 6px 20px 0 rgba(7, 129, 223, 0.5);\n\n --wb-secondary: #8E33FF;\n --wb-success: #22C55E;\n --wb-success-light: #77ED8B;\n --wb-success-dark: #118D57;\n --wb-success-a08: rgba(34, 197, 94, 0.08);\n --wb-success-a15: rgba(34, 197, 94, 0.15);\n --wb-success-a16: rgba(34, 197, 94, 0.16);\n --wb-success-a32: rgba(34, 197, 94, 0.32);\n --wb-success-a30: rgba(34, 197, 94, 0.30);\n --wb-success-a40: rgba(34, 197, 94, 0.40);\n --wb-warning: #FFAB00;\n --wb-warning-light: #FFD666;\n --wb-warning-dark: #B76E00;\n --wb-warning-a16: rgba(255, 171, 0, 0.16);\n --wb-error: #FF5630;\n --wb-error-light: #FFAC82;\n --wb-error-dark: #B71D18;\n --wb-error-a08: rgba(255, 86, 48, 0.08);\n --wb-error-a16: rgba(255, 86, 48, 0.16);\n --wb-info: #00B8D9;\n --wb-info-dark: #006C9C;\n --wb-info-a16: rgba(0, 184, 217, 0.16);\n\n --wb-grey-50: #FCFDFD;\n --wb-grey-100: #F9FAFB;\n --wb-grey-200: #F4F6F8;\n --wb-grey-300: #DFE3E8;\n --wb-grey-400: #C4CDD5;\n --wb-grey-500: #919EAB;\n --wb-grey-600: #637381;\n --wb-grey-700: #454F5B;\n --wb-grey-800: #1C252E;\n --wb-grey-900: #141A21;\n --wb-grey-rgb: 145, 158, 171;\n --wb-grey-a05: rgba(145, 158, 171, 0.05);\n --wb-grey-a08: rgba(145, 158, 171, 0.08);\n --wb-grey-a10: rgba(145, 158, 171, 0.10);\n --wb-grey-a12: rgba(145, 158, 171, 0.12);\n --wb-grey-a16: rgba(145, 158, 171, 0.16);\n --wb-grey-a20: rgba(145, 158, 171, 0.20);\n --wb-grey-a22: rgba(145, 158, 171, 0.22);\n --wb-grey-a24: rgba(145, 158, 171, 0.24);\n --wb-grey-a32: rgba(145, 158, 171, 0.32);\n --wb-grey-a40: rgba(145, 158, 171, 0.40);\n --wb-grey-a48: rgba(145, 158, 171, 0.48);\n\n --wb-paper: #FFFFFF;\n --wb-paper-rgb: 255, 255, 255;\n --wb-bg: #FFFFFF;\n --wb-neutral: #f8fafc;\n --wb-canvas-bg: #f8fafc;\n --wb-paper-2: #F9FAFB;\n --wb-text: #181d26;\n --wb-text-secondary: #637381;\n --wb-text-disabled: #919EAB;\n --wb-divider: #e0e2e6;\n --wb-border: #e0e2e6;\n --wb-dot: rgba(145, 158, 171, 0.22);\n --wb-connector: #E2E8F0;\n --wb-conn-stroke: #919EAB;\n --wb-tooltip-bg: #1C252E;\n --wb-tooltip-fg: #FFFFFF;\n --wb-action-hover: rgba(145, 158, 171, 0.08);\n --wb-action-selected: rgba(145, 158, 171, 0.16);\n --wb-action-disabled-bg: rgba(145, 158, 171, 0.24);\n\n --wb-z1: 0 1px 2px 0 rgba(145, 158, 171, 0.16);\n --wb-z4: 0 4px 8px 0 rgba(145, 158, 171, 0.16);\n --wb-z8: 0 8px 16px 0 rgba(145, 158, 171, 0.16);\n --wb-z12: 0 12px 24px -4px rgba(145, 158, 171, 0.16);\n --wb-z16: 0 16px 32px -4px rgba(145, 158, 171, 0.16);\n --wb-z20: 0 20px 40px -4px rgba(145, 158, 171, 0.16);\n --wb-z24: 0 24px 48px 0 rgba(145, 158, 171, 0.16);\n --wb-card-shadow: rgba(15, 48, 106, 0.05) 0px 0px 20px;\n --wb-dialog-shadow: 0 24px 48px 0 rgba(145, 158, 171, 0.24);\n --wb-shadow-1: var(--wb-z1);\n --wb-shadow-2: var(--wb-z4);\n --wb-shadow-3: var(--wb-z8);\n --wb-shadow-8: var(--wb-z8);\n --wb-shadow-24: var(--wb-z24);\n --wb-ring: 0 0 0 3px var(--wb-primary-a15);\n\n --wb-radius-sm: 6px;\n --wb-radius: 8px;\n --wb-radius-md: 12px;\n --wb-radius-lg: 16px;\n --wb-z-overlay: 4;\n --wb-z-toggle: 20;\n --wb-z-menu: 1200;\n --wb-z-dialog: 1300;\n}\n\n/* 1b. Dark tokens — \u003chtml class=\"dark\">\n ------------------------------------------------------------ */\n.dark, .dark .wb-root {\n --wb-paper: #1C252E;\n --wb-paper-rgb: 28, 37, 46;\n --wb-bg: #141A21;\n --wb-neutral: #28323D;\n --wb-canvas-bg: #28323D;\n --wb-paper-2: #212B36;\n --wb-text: #FFFFFF;\n --wb-text-secondary: #919EAB;\n --wb-text-disabled: #637381;\n --wb-divider: rgba(145, 158, 171, 0.2);\n --wb-border: rgba(145, 158, 171, 0.2);\n --wb-connector: #2F3A46;\n --wb-tooltip-bg: #454F5B;\n --wb-z1: 0 1px 2px 0 rgba(0, 0, 0, 0.16);\n --wb-z4: 0 4px 8px 0 rgba(0, 0, 0, 0.16);\n --wb-z8: 0 8px 16px 0 rgba(0, 0, 0, 0.16);\n --wb-z12: 0 12px 24px -4px rgba(0, 0, 0, 0.16);\n --wb-z16: 0 16px 32px -4px rgba(0, 0, 0, 0.16);\n --wb-z20: 0 20px 40px -4px rgba(0, 0, 0, 0.16);\n --wb-z24: 0 24px 48px 0 rgba(0, 0, 0, 0.16);\n --wb-card-shadow: rgba(0, 0, 0, 0.2) 0px 0px 20px;\n --wb-dialog-shadow: 0 24px 48px 0 rgba(0, 0, 0, 0.24);\n}\n\n/* 2. Root + base resets (scoped to the builder)\n ============================================================ */\n.wb-root {\n position: relative;\n display: flex;\n flex-direction: column;\n width: 100%;\n min-height: 480px;\n overflow: hidden;\n background: var(--wb-paper);\n color: var(--wb-text);\n font-family: var(--wb-font);\n font-size: 14px;\n line-height: 1.5;\n letter-spacing: 0.011em;\n -webkit-font-smoothing: antialiased;\n text-align: left;\n}\n.wb-root *, .wb-root *::before, .wb-root *::after,\n.wb-dialog-overlay *, .wb-dnd-overlay *, .wb-menu-pop * { box-sizing: border-box; }\n.wb-dialog-overlay, .wb-dnd-overlay, .wb-menu-pop { font-family: var(--wb-font); color: var(--wb-text); font-size: 14px; line-height: 1.5; }\n:where(.wb-root, .wb-dialog) :where(h1, h2, h3, h4, h5, h6, p, ul, ol, pre, figure) { margin: 0; }\n:where(.wb-root, .wb-dialog) :where(ul, ol) { padding: 0; list-style: none; }\n:where(.wb-root, .wb-dialog, .wb-menu-pop, .wb-dnd-overlay) button {\n font: inherit; color: inherit; background: none; border: 0; padding: 0; margin: 0;\n cursor: pointer; text-align: inherit; line-height: inherit; -webkit-tap-highlight-color: transparent;\n}\n:where(.wb-root, .wb-dialog) button:disabled { cursor: not-allowed; }\n:where(.wb-root, .wb-dialog) input, :where(.wb-root, .wb-dialog) textarea, :where(.wb-root, .wb-dialog) select { font: inherit; color: inherit; margin: 0; }\n:where(.wb-root) img { display: inline-block; max-width: none; vertical-align: middle; }\n:where(.wb-root) svg { vertical-align: middle; }\n:where(.wb-root) a { color: var(--wb-primary); text-decoration: none; }\n.wb-root [hidden], .wb-dialog [hidden] { display: none !important; }\n.wb-root code, .wb-root pre, .wb-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; }\n\n.wb-root :focus { outline: none; }\n.wb-root :focus-visible, .wb-dialog :focus-visible {\n outline: 2px solid var(--wb-primary);\n outline-offset: 2px;\n border-radius: 4px;\n}\n.wb-root .wb-input:focus-visible, .wb-dialog .wb-input:focus-visible,\n.wb-root .wb-slider:focus-visible, .wb-root .wb-range-input:focus-visible, .wb-root .wb-mf-input:focus-visible { outline: none; }\n\n.wb-root, .wb-root *, .wb-dialog, .wb-dialog * { scrollbar-width: thin; scrollbar-color: var(--wb-grey-a40) transparent; }\n.wb-root ::-webkit-scrollbar, .wb-dialog ::-webkit-scrollbar { width: 6px; height: 6px; }\n.wb-root ::-webkit-scrollbar-track, .wb-dialog ::-webkit-scrollbar-track { background: transparent; }\n.wb-root ::-webkit-scrollbar-thumb, .wb-dialog ::-webkit-scrollbar-thumb { background: var(--wb-grey-a40); border-radius: 3px; }\n.wb-scroll { overflow: auto; min-height: 0; }\n.wb-scroll-y { overflow-x: hidden; overflow-y: auto; min-height: 0; }\n\n.wb-dotgrid {\n background-color: var(--wb-neutral);\n background-image: radial-gradient(var(--wb-grey-a20) 1px, transparent 1px);\n background-size: 20px 20px;\n}\n\n.wb-h6 { font-size: 16px; font-weight: 500; line-height: 1.4; letter-spacing: 0.01em; }\n.wb-subtitle1 { font-size: 16px; font-weight: 500; line-height: 1.45; letter-spacing: 0.008em; }\n.wb-subtitle2 { font-size: 14px; font-weight: 500; line-height: 1.45; letter-spacing: 0.008em; }\n.wb-body1 { font-size: 15px; font-weight: 400; line-height: 1.5; letter-spacing: 0.011em; }\n.wb-body2 { font-size: 14px; font-weight: 400; line-height: 1.5; letter-spacing: 0.011em; }\n.wb-caption { font-size: 12px; font-weight: 400; line-height: 1.4; letter-spacing: 0.01em; }\n.wb-sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }\n.wb-boot-error { padding: 24px; color: var(--wb-error); }\n\n/* 3. Shell — WorkflowBuilderRedesign root, header, toggles, StyledCanvas\n ============================================================ */\n.wb-shell { position: relative; height: calc(97vh - 64px); display: flex; flex-direction: column; overflow: hidden; width: 100%; max-width: 92rem; margin: 0 auto; box-sizing: border-box; border-left: 1px solid var(--wb-divider); border-right: 1px solid var(--wb-divider); }\n@media (max-width: 92rem) { .wb-shell { border-left: 0; border-right: 0; } }\n.wb-hd {\n display: flex; align-items: center; justify-content: space-between; gap: 16px;\n padding: 12px 24px; flex-shrink: 0;\n border-bottom: 1px solid var(--wb-divider); background: var(--wb-paper);\n}\n.wb-hd-group { display: flex; align-items: center; gap: 24px; min-width: 0; }\n.wb-hd-costwrap { display: flex; align-items: center; gap: 8px; }\n.wb-hd-cost { font-size: 1rem; font-weight: 700; line-height: 1.45; color: var(--wb-primary); white-space: nowrap; }\n.wb-hd-info { color: var(--wb-text-disabled); display: inline-flex; }\n\n.wb-mbtn {\n display: inline-flex; align-items: center; justify-content: center; gap: 8px;\n min-width: 64px; height: 36px; padding: 6px 12px;\n border-radius: 12px; border: 0;\n font-size: 0.875rem; font-weight: 500; line-height: 1.25; letter-spacing: 0.005em;\n white-space: nowrap; cursor: pointer; user-select: none; color: var(--wb-text);\n transition: background-color 0.15s ease, box-shadow 0.15s ease, color 0.15s ease, border-color 0.15s ease;\n}\n.wb-mbtn:disabled { cursor: not-allowed; color: var(--wb-text-disabled); }\n.wb-mbtn-text { padding: 6px 8px; background: transparent; }\n.wb-mbtn-text:hover { background: var(--wb-action-hover); }\n.wb-mbtn-text.wb-mbtn-nohover:hover { background: transparent; }\n.wb-mbtn-outlined { background: transparent; border: 1px solid var(--wb-grey-a32); color: var(--wb-text); }\n.wb-mbtn-outlined:hover { background: var(--wb-action-hover); border-color: currentColor; box-shadow: 0 0 0 0.75px currentColor; }\n.wb-mbtn-contained { background: var(--wb-grey-800); color: #FFFFFF; }\n.wb-mbtn-contained:hover { background: var(--wb-grey-700); box-shadow: var(--wb-z8); }\n.wb-mbtn-contained:disabled { background: var(--wb-action-disabled-bg); color: var(--wb-text-disabled); box-shadow: none; }\n.dark .wb-mbtn-contained { background: #FFFFFF; color: var(--wb-grey-800); }\n.dark .wb-mbtn-contained:hover { background: var(--wb-grey-400); }\n.wb-mbtn-gradient, .wb-mbtn-contained.wb-mbtn-gradient {\n background: var(--wb-gradient); color: #FFFFFF; box-shadow: var(--wb-gradient-shadow);\n}\n.wb-mbtn-gradient:hover, .wb-mbtn-contained.wb-mbtn-gradient:hover { background: var(--wb-gradient-hover); box-shadow: var(--wb-gradient-shadow-hover); }\n.wb-mbtn-gradient:disabled { opacity: 0.6; }\n.wb-mbtn-save { padding: 8px 24px; border-radius: 8px; }\n.wb-mbtn-back { color: var(--wb-text); font-weight: 500; }\n.wb-mbtn-start { margin-left: -4px; margin-right: 4px; display: inline-flex; }\n.wb-mbtn-loading { position: relative; color: transparent !important; }\n.wb-mbtn-loading .wb-spin { position: absolute; left: 50%; top: 50%; margin: -8px 0 0 -8px; }\n\n.wb-micon {\n display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;\n border-radius: 50%; border: 0; background: transparent; color: var(--wb-text-secondary); cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n.wb-micon:hover { background: var(--wb-action-hover); }\n.wb-micon:disabled { color: var(--wb-text-disabled); cursor: default; background: transparent; }\n.wb-micon-sm { padding: 5px; }\n.wb-micon-md { padding: 8px; }\n\n.wb-mf { position: relative; display: inline-flex; flex-direction: column; min-width: 0; vertical-align: top; }\n.wb-mf-full { display: flex; width: 100%; }\n.wb-mf-ctrl {\n position: relative; display: flex; align-items: center; width: 100%;\n border-radius: 12px; background: transparent; color: var(--wb-text);\n}\n.wb-mf-input {\n width: 100%; min-width: 0; height: 40px; padding: 8.5px 14px; margin: 0;\n border: 0; outline: 0; background: transparent; color: var(--wb-text);\n font: inherit; font-size: 0.9375rem; line-height: 1.4375em; letter-spacing: 0.011em;\n}\n.wb-mf-input::placeholder { color: var(--wb-text-disabled); opacity: 1; }\n.wb-mf-input.wb-mf-has-start { padding-left: 0; }\n.wb-mf-start { display: inline-flex; align-items: center; margin-left: 14px; margin-right: 8px; color: var(--wb-text-disabled); flex-shrink: 0; }\n.wb-mf-end { display: inline-flex; align-items: center; margin-right: 10px; color: var(--wb-text-secondary); flex-shrink: 0; pointer-events: none; }\n.wb-mf-outline {\n position: absolute; inset: -5px 0 0 0; margin: 0; padding: 0 8px; pointer-events: none;\n border: 1px solid var(--wb-divider); border-radius: inherit; min-width: 0; overflow: hidden;\n transition: border-color 0.15s ease;\n}\n.wb-mf-ctrl:hover .wb-mf-outline { border-color: var(--wb-text); }\n.wb-mf-ctrl:focus-within .wb-mf-outline { border-color: var(--wb-primary); }\n.wb-mf-error .wb-mf-outline { border-color: var(--wb-error) !important; }\n.wb-mf-outline legend { float: unset; width: auto; padding: 0; height: 11px; font-size: 0.75em; visibility: hidden; max-width: 0.01px; transition: max-width 50ms; white-space: nowrap; }\n.wb-mf-outline legend > span { padding: 0 5px; display: inline-block; opacity: 0; visibility: visible; }\n.wb-mf-shrunk .wb-mf-outline legend { max-width: 100%; }\n.wb-mf-label {\n position: absolute; left: 0; top: 0; z-index: 1; pointer-events: none;\n transform-origin: top left; transform: translate(14px, 9px) scale(1);\n max-width: calc(100% - 24px); overflow: hidden; text-overflow: ellipsis; white-space: nowrap;\n color: var(--wb-text-secondary); font-size: 0.9375rem; line-height: 1.4375em; letter-spacing: 0.011em;\n transition: transform 0.15s ease, color 0.15s ease, max-width 0.15s ease;\n}\n.wb-mf-shrunk .wb-mf-label { transform: translate(14px, -9px) scale(0.75); max-width: calc(133% - 32px); }\n.wb-mf-ctrl:focus-within ~ .wb-mf-label, .wb-mf:focus-within .wb-mf-label { color: var(--wb-primary); }\n.wb-mf-error .wb-mf-label { color: var(--wb-error) !important; }\n.wb-mf-helper { margin: 3px 14px 0; font-size: 0.75rem; line-height: 1.66; color: var(--wb-text-secondary); }\n.wb-mf-error .wb-mf-helper { color: var(--wb-error); }\n.wb-mf-disabled .wb-mf-input { color: var(--wb-text-disabled); }\n.wb-mf-disabled .wb-mf-outline { border-color: var(--wb-action-disabled-bg) !important; }\n.wb-mf-select { cursor: pointer; }\n.wb-mf-select .wb-mf-input { cursor: pointer; display: flex; align-items: center; gap: 12px; padding-right: 32px; user-select: none; text-align: left; }\n.wb-mf-select .wb-mf-input.wb-mf-placeholder { color: var(--wb-text-disabled); }\n.wb-mf-caret { position: absolute; right: 7px; top: 50%; transform: translateY(-50%); pointer-events: none; color: var(--wb-text-secondary); display: inline-flex; }\n.wb-mf-select-open .wb-mf-outline { border-color: var(--wb-primary); }\n\n.wb-menu-pop {\n position: fixed; z-index: var(--wb-z-menu);\n background: var(--wb-paper); color: var(--wb-text);\n border-radius: 10px; box-shadow: var(--wb-z20); border: 1px solid var(--wb-divider);\n padding: 4px; min-width: 160px; max-height: 320px; overflow-y: auto;\n animation: wb-pop 0.12s ease-out;\n}\n.wb-menu-item {\n display: flex; align-items: center; gap: 12px; width: 100%;\n padding: 8px 8px; border-radius: 6px; margin: 0 0 2px;\n font-size: 0.875rem; line-height: 1.57; color: var(--wb-text); cursor: pointer; text-align: left; white-space: nowrap;\n}\n.wb-menu-item:hover { background: var(--wb-action-hover); }\n.wb-menu-item[aria-selected=\"true\"] { background: var(--wb-action-selected); }\n.wb-menu-item-icon { display: inline-flex; flex-shrink: 0; }\n.wb-menu-item-hint { font-size: 12px; font-style: italic; color: var(--wb-text-disabled); }\n.wb-menu-item-cost { margin-left: auto; font-size: 12px; font-weight: 600; color: var(--wb-primary); }\n.wb-menu-item-flag { width: 20px; height: 14px; border-radius: 2px; object-fit: cover; flex-shrink: 0; }\n.wb-menu-item[aria-disabled=\"true\"] { opacity: 0.48; cursor: not-allowed; }\n\n\n.wb-tip { position: relative; display: inline-flex; }\n.wb-tip[data-tip]:hover::after {\n content: attr(data-tip); position: absolute; left: 50%; top: calc(100% + 8px); transform: translateX(-50%);\n background: var(--wb-tooltip-bg); color: var(--wb-tooltip-fg); font-size: 12px; font-weight: 500; line-height: 1.4;\n padding: 6px 8px; border-radius: 6px; white-space: nowrap; pointer-events: none; z-index: 1500;\n animation: wb-fade 0.12s ease-out;\n}\n\n.wb-main { display: flex; flex-direction: row; flex: 1 1 auto; min-height: 0; min-width: 0; overflow: hidden; }\n\n.wb-stage {\n position: relative; flex: 1 1 auto; min-width: 0; height: 100%;\n display: flex; flex-direction: column; align-items: center;\n padding: 32px 32px 80px;\n overflow-y: auto; overflow-x: hidden;\n background-color: var(--wb-neutral);\n background-image: radial-gradient(var(--wb-grey-a20) 1px, transparent 1px);\n background-size: 20px 20px;\n}\n.wb-stage-content { padding-top: 0; display: flex; flex-direction: column; flex: 1 1 auto; width: 100%; }\n\n\n\n.wb-spin { display: inline-block; width: 16px; height: 16px; border: 2px solid rgba(255,255,255,0.35); border-top-color: currentColor; border-radius: 50%; animation: wb-spin 0.8s linear infinite; }\n\n@keyframes wb-spin { to { transform: rotate(360deg); } }\n@keyframes wb-fade { from { opacity: 0; } to { opacity: 1; } }\n@keyframes wb-pop { from { opacity: 0; transform: translateY(6px) scale(0.98); } to { opacity: 1; transform: none; } }\n\n/* 4. Palette — ServicePaletteCard / CanvasPaletteCard\n ============================================================ */\n.wb-pal { width: 300px; flex: 0 0 300px; display: flex; flex-direction: column; min-height: 0; border-right: 1px solid var(--wb-divider); background: var(--wb-paper); z-index: 2; }\n.wb-pal-head { padding: 16px; flex-shrink: 0; }\n.wb-pal-title { margin: 0 0 16px; font-size: 16px; font-weight: 500; line-height: 1.4; letter-spacing: 0.01em; color: var(--wb-text); }\n.wb-pal-tabs { display: flex; align-items: center; min-height: 40px; padding: 0 16px; overflow-x: auto; scrollbar-width: none; flex-shrink: 0; }\n.wb-pal-tabs::-webkit-scrollbar { display: none; }\n.wb-pal-tab {\n flex-shrink: 0; min-width: auto; min-height: 32px; padding: 4px 12px; margin-right: 8px; border-radius: 8px;\n font-size: 0.875rem; font-weight: 500; line-height: 1.5; letter-spacing: 0.008em; color: var(--wb-text-secondary);\n background: transparent; cursor: pointer; white-space: nowrap; text-transform: none;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n.wb-pal-tab[aria-selected=\"true\"] { background: var(--wb-primary-a10); color: var(--wb-primary); }\n.wb-pal-list { flex: 1 1 auto; min-height: 0; overflow-y: auto; overflow-x: hidden; padding: 0 16px 32px; display: flex; flex-direction: column; gap: 12px; }\n.wb-pal-list-canvas { padding-bottom: 16px; }\n.wb-pal-card {\n position: relative; display: flex; align-items: center; gap: 12px;\n padding: 12px 16px; border-radius: 16px;\n background: var(--wb-paper); border: 1px solid var(--wb-divider); box-shadow: none;\n cursor: grab; user-select: none; -webkit-user-select: none;\n transition: all 0.2s;\n}\n.wb-pal-card:hover { background: rgba(248, 250, 252, 0.1); border-color: var(--wb-primary-light); }\n.dark .wb-pal-card:hover { background: rgba(40, 50, 61, 0.1); }\n.wb-pal-card[data-dragging=\"true\"] { opacity: 0.3; }\n.wb-pal-card[data-disabled=\"true\"] { opacity: 0.5; cursor: default; }\n.wb-pal-card:active { cursor: grabbing; }\n.wb-tile {\n display: flex; align-items: center; justify-content: center; flex-shrink: 0;\n width: 36px; height: 36px; border-radius: 22%; color: #FFFFFF;\n}\n.wb-tile-shadow { box-shadow: 0 2px 8px 0 rgba(0, 0, 0, 0.12); }\n.wb-tile-44 { width: 44px; height: 44px; }\n.wb-tile-50 { width: 50px; height: 50px; }\n.wb-pal-body { flex: 1 1 auto; min-width: 0; }\n.wb-pal-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; min-width: 0; }\n.wb-pal-name { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 0.85rem; font-weight: 600; line-height: 1.45; letter-spacing: 0.008em; color: var(--wb-text); }\n.wb-pal-card:hover .wb-pal-name { text-overflow: clip; }\n.wb-pal-right { display: flex; align-items: center; gap: 4px; flex-shrink: 0; max-width: 200px; overflow: hidden; opacity: 1; transition: max-width 0.3s ease, opacity 0.25s ease; }\n.wb-pal-card:hover .wb-pal-right { max-width: 0; opacity: 0; }\n.wb-pal-cost { font-size: 12px; font-weight: 700; line-height: 1.4; color: #22C55E; white-space: nowrap; }\n.wb-pal-cost[data-covered=\"true\"] { color: var(--wb-text-disabled); text-decoration: line-through; }\n.wb-pal-included { font-size: 0.65rem; font-weight: 600; font-style: italic; color: var(--wb-text-disabled); white-space: nowrap; }\n.wb-pal-included-covered { font-size: 0.65rem; font-weight: 600; color: var(--wb-success); font-style: normal; }\n.wb-pal-desc { display: block; margin-top: 1.6px; font-size: 0.75rem; line-height: 1.3; color: var(--wb-text-secondary); }\n\n/* 5. List mode — DroppableCanvas / SortableStepNode / DragPreview\n ============================================================ */\n.wb-drop { width: 100%; min-height: 100%; flex: 1 1 auto; display: flex; flex-direction: column; align-items: center; border-radius: 16px; padding-top: 32px; background: transparent; transition: background-color 0.2s; }\n.wb-drop[data-over=\"true\"] { background: rgba(24, 144, 255, 0.05); }\n.wb-chain { display: flex; flex-direction: column; align-items: center; width: 100%; max-width: 700px; gap: 32px; }\n.wb-chain-connector { width: 2px; height: 24px; background: #E2E8F0; flex-shrink: 0; }\n.dark .wb-chain-connector { background: #2F3A46; }\n.wb-chain-empty { display: flex; flex: 1 1 auto; align-items: center; justify-content: center; flex-direction: column; min-height: 400px; }\n.wb-chain-empty-art { position: relative; width: 100px; height: 100px; margin-bottom: 16px; }\n.wb-chain-empty-ring { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 1px solid #E2E8F0; border-radius: 50%; opacity: 0.5; }\n.wb-chain-empty-core { position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 40px; height: 40px; border-radius: 50%; border: 2px dashed #CBD5E1; display: flex; align-items: center; justify-content: center; color: #94A3B8; }\n.wb-chain-empty-text { font-size: 15px; line-height: 1.5; letter-spacing: 0.011em; color: var(--wb-text-secondary); text-align: center; white-space: pre-line; }\n.wb-sort { width: 100%; transition: transform 0.2s ease, opacity 0.15s ease; }\n.wb-sort[data-dragging=\"true\"] { opacity: 0; }\n.wb-sort[data-disabled=\"true\"] { opacity: 0.6; }\n.wb-snode {\n position: relative; overflow: visible; padding: 20px 24px; border-radius: 16px;\n border: 1px solid var(--wb-divider); background: var(--wb-paper); cursor: pointer;\n transition: all 0.2s; box-shadow: none;\n}\n.wb-snode:hover { border-color: var(--wb-primary-light); }\n.wb-snode[data-active=\"true\"] { border: 2px solid var(--wb-primary); box-shadow: var(--wb-z8); padding: 19px 23px; }\n.wb-snode[data-active=\"true\"]:hover { border-color: var(--wb-primary); }\n.wb-snode[data-disabled=\"true\"] { cursor: not-allowed; }\n.wb-snode-num {\n position: absolute; left: -10px; top: -10px; z-index: 1; width: 24px; height: 24px; border-radius: 50%;\n background: var(--wb-text); color: var(--wb-paper); display: flex; align-items: center; justify-content: center;\n font-size: 10px; font-weight: 700; border: 3px solid var(--wb-neutral);\n}\n.wb-snode-row { display: flex; align-items: center; gap: 20px; min-width: 0; cursor: grab; }\n.wb-snode-row:active { cursor: grabbing; }\n.wb-snode-text { flex: 1 1 auto; min-width: 0; }\n.wb-snode-title { font-size: 1rem; font-weight: 500; line-height: 1.45; letter-spacing: 0.008em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--wb-text); }\n.wb-snode-desc { display: block; font-size: 0.875rem; line-height: 1.4; color: var(--wb-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.wb-snode-right { display: flex; align-items: center; gap: 16px; flex-shrink: 0; }\n.wb-snode-costwrap { display: flex; align-items: center; gap: 4px; }\n.wb-snode-cost { font-size: 14px; font-weight: 700; line-height: 1.45; color: #22C55E; white-space: nowrap; }\n.wb-snode-cost[data-covered=\"true\"] { color: var(--wb-text-disabled); text-decoration: line-through; }\n.wb-snode-cost-struck { font-size: 0.75rem; font-weight: 700; color: var(--wb-text-disabled); text-decoration: line-through; white-space: nowrap; }\n.wb-snode-included { font-size: 0.7rem; font-weight: 600; font-style: italic; color: var(--wb-text-disabled); }\n.wb-snode-del { padding: 5px; border-radius: 50%; display: inline-flex; color: var(--wb-text-disabled); cursor: pointer; transition: background-color 0.15s ease, color 0.15s ease; }\n.wb-snode-del:hover { background: var(--wb-action-hover); color: var(--wb-error); }\n.wb-dragprev-chart { padding: 20px 24px; border-radius: 16px; border: 2px solid var(--wb-primary); background: var(--wb-paper); width: 100%; max-width: 700px; box-shadow: var(--wb-z24); display: flex; align-items: center; gap: 16px; }\n.wb-dragprev-chart .wb-dragprev-label { font-size: 1rem; font-weight: 700; line-height: 1.45; color: var(--wb-text); }\n.wb-dragprev-pal { padding: 12px 16px; border-radius: 16px; border: 2px solid var(--wb-primary); background: var(--wb-paper); width: 260px; box-shadow: var(--wb-z24); display: flex; align-items: center; gap: 12px; }\n.wb-dragprev-pal .wb-dragprev-label { font-size: 0.85rem; font-weight: 600; line-height: 1.45; color: var(--wb-text); }\n.wb-skel { border-radius: 8px; background: var(--wb-grey-a16); animation: wb-pulse 1.5s ease-in-out infinite; }\n@keyframes wb-pulse { 0% { opacity: 1; } 50% { opacity: 0.4; } 100% { opacity: 1; } }\n\n/* 8. Right config panel (spec §7)\n ============================================================ */\n.wb-panel-body { flex: 1 1 auto; min-height: 0; overflow-x: hidden; overflow-y: auto; padding: 24px 0; }\n.wb-panel-expand {\n position: absolute; left: 0; top: 50%; z-index: 2;\n transform: translate(-100%, -50%);\n display: inline-flex; align-items: center; justify-content: center;\n width: 28px; height: 48px;\n border-radius: 10px 0 0 10px;\n background: var(--wb-paper);\n border: 1px solid var(--wb-divider); border-right: 0;\n box-shadow: -4px 0 12px -6px rgba(22, 28, 36, 0.24);\n color: var(--wb-text-secondary); cursor: pointer;\n transition: background-color 0.15s ease, color 0.15s ease;\n}\n.wb-panel-expand:hover { background: var(--wb-grey-a08); color: var(--wb-primary); }\n.wb-panel-empty {\n display: flex; flex-direction: column; align-items: center; justify-content: center;\n flex: 1 1 auto; min-height: 320px; padding: 32px 24px; text-align: center;\n color: var(--wb-text-secondary);\n}\n.wb-panel-empty-icon { color: var(--wb-text-disabled); margin-bottom: 16px; display: inline-flex; }\n.wb-panel-empty-title { font-size: 16px; font-weight: 600; color: var(--wb-text); margin-bottom: 4px; }\n.wb-panel-empty-hint { font-size: 14px; white-space: pre-line; line-height: 1.6; }\n\n.wb-panel-header { display: flex; align-items: center; gap: 12px; padding: 0 24px 16px; }\n.wb-panel-tile {\n display: flex; align-items: center; justify-content: center; flex-shrink: 0;\n width: 50px; height: 50px; border-radius: 12px;\n color: #FFFFFF;\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.22), 0 4px 10px -2px rgba(0, 0, 0, 0.18);\n}\n.wb-panel-header-text { min-width: 0; display: flex; flex-direction: column; }\n.wb-panel-step-label { font-size: 12px; font-weight: 600; color: var(--wb-text-secondary); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.wb-panel-heading { font-size: 18px; font-weight: 700; line-height: 1.5; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.wb-panel-alert { margin: 0 24px 16px; }\n.wb-panel-nogroups { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 48px 24px; text-align: center; color: var(--wb-text-secondary); gap: 8px; }\n\n.wb-group { padding: 16px 24px; border-bottom: 1px dashed var(--wb-divider); }\n.wb-group:last-child { border-bottom: 0; }\n.wb-group-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; }\n.wb-group-title { display: inline-flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 700; min-width: 0; }\n.wb-group-icon { display: inline-flex; color: var(--wb-text-secondary); }\n.wb-group-tooltip { display: inline-flex; color: var(--wb-text-disabled); cursor: help; }\n.wb-group-body { display: flex; flex-direction: column; gap: 12px; }\n.wb-group-collapsed .wb-group-body { display: none; }\n\n.wb-field { position: relative; transition: opacity 0.15s ease; }\n.wb-field.disabled, .wb-field[data-disabled=\"true\"] { opacity: 0.5; }\n.wb-field.disabled *, .wb-field[data-disabled=\"true\"] * { cursor: not-allowed; }\n.wb-field-label { display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 600; margin-bottom: 6px; }\n.wb-field-sublabel { font-size: 12px; color: var(--wb-text-secondary); line-height: 1.45; }\n.wb-field-help { font-size: 12px; color: var(--wb-text-secondary); margin-top: 6px; line-height: 1.45; }\n.wb-field-lock { display: inline-flex; color: var(--wb-text-disabled); }\n.wb-field-flag { font-size: 14px; line-height: 1; }\n.wb-field-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; }\n.wb-field-cost { font-size: 12px; font-weight: 700; color: var(--wb-primary); font-variant-numeric: tabular-nums; }\n\n/* 9. Field controls (ui primitives)\n ============================================================ */\n.wb-textfield { display: flex; flex-direction: column; gap: 6px; min-width: 0; }\n.wb-textfield-full { width: 100%; }\n.wb-label { font-size: 12px; font-weight: 600; color: var(--wb-text-secondary); line-height: 1.4; }\n.wb-label-required::after { content: \" *\"; color: var(--wb-error); }\n.wb-input-wrap { position: relative; display: flex; align-items: center; min-width: 0; }\n.wb-input-wrap .wb-input-icon { position: absolute; left: 12px; display: inline-flex; color: var(--wb-text-disabled); pointer-events: none; }\n.wb-input-wrap .wb-input-icon + .wb-input, .wb-input-wrap.has-icon .wb-input { padding-left: 36px; }\n.wb-input-wrap .wb-input-end { position: absolute; right: 8px; display: inline-flex; align-items: center; gap: 4px; }\n.wb-input {\n display: block; width: 100%; min-width: 0;\n height: 40px; padding: 0 12px;\n border-radius: var(--wb-radius);\n border: 1px solid var(--wb-border);\n background: var(--wb-paper);\n color: var(--wb-text);\n font-size: 14px; line-height: 1.5;\n transition: border-color 0.15s ease, box-shadow 0.15s ease, background-color 0.15s ease;\n appearance: none; -webkit-appearance: none;\n}\n.wb-input::placeholder { color: var(--wb-text-disabled); opacity: 1; }\n.wb-input:hover { border-color: var(--wb-text); }\n.wb-input:focus, .wb-input:focus-visible { border-color: var(--wb-primary); box-shadow: var(--wb-ring); outline: none; }\n.wb-input:disabled, .wb-input[readonly].disabled { background: var(--wb-grey-a08); color: var(--wb-text-disabled); border-color: var(--wb-divider); cursor: not-allowed; }\n.wb-input-sm { height: 36px; padding: 0 10px; font-size: 13px; border-radius: 6px; }\n.wb-input-xs { height: 30px; padding: 0 8px; font-size: 12px; border-radius: 6px; }\ntextarea.wb-input { height: auto; min-height: 80px; padding: 10px 12px; resize: vertical; line-height: 1.5; }\ntextarea.wb-input.wb-input-sm { min-height: 64px; padding: 8px 10px; }\n.wb-input.error, .wb-input[aria-invalid=\"true\"] { border-color: var(--wb-error); }\n.wb-input.error:focus, .wb-input[aria-invalid=\"true\"]:focus { box-shadow: 0 0 0 3px var(--wb-error-a16); }\n.wb-helper { font-size: 12px; color: var(--wb-text-secondary); line-height: 1.4; margin-top: 2px; }\n.wb-helper-error, .wb-helper.error { color: var(--wb-error); }\n.wb-input-mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 13px; }\n.wb-input-number { width: 88px; text-align: right; font-variant-numeric: tabular-nums; }\n\n.wb-select-wrap { position: relative; display: block; min-width: 0; }\nselect.wb-input, .wb-select {\n display: block; width: 100%; height: 40px; padding: 0 36px 0 12px;\n border-radius: var(--wb-radius); border: 1px solid var(--wb-border);\n background-color: var(--wb-paper); color: var(--wb-text);\n font-size: 14px; line-height: 1.5; cursor: pointer;\n appearance: none; -webkit-appearance: none;\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23637381' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");\n background-repeat: no-repeat; background-position: right 12px center; background-size: 16px 16px;\n transition: border-color 0.15s ease, box-shadow 0.15s ease;\n}\nselect.wb-input:hover, .wb-select:hover { border-color: var(--wb-text); }\nselect.wb-input:focus, .wb-select:focus { border-color: var(--wb-primary); box-shadow: var(--wb-ring); outline: none; }\nselect.wb-input:disabled, .wb-select:disabled { background-color: var(--wb-grey-a08); color: var(--wb-text-disabled); cursor: not-allowed; }\nselect.wb-input.wb-input-sm, .wb-select.wb-select-sm { height: 36px; padding: 0 32px 0 10px; font-size: 13px; border-radius: 6px; }\nselect.wb-input option, .wb-select option { color: #1C252E; background: #FFFFFF; }\n.dark select.wb-input option, .dark .wb-select option { color: #FFFFFF; background: #1C252E; }\n.dark select.wb-input, .dark .wb-select {\n background-image: url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23919EAB' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E\");\n}\n\n.wb-checkbox, .wb-radio { width: 18px; height: 18px; margin: 0; accent-color: var(--wb-primary); cursor: pointer; flex-shrink: 0; }\n.wb-checkbox:disabled, .wb-radio:disabled { cursor: not-allowed; opacity: 0.6; }\n.wb-check-row { display: flex; align-items: center; gap: 10px; font-size: 14px; cursor: pointer; }\n.wb-check-row.disabled { cursor: not-allowed; opacity: 0.5; }\n\n.wb-switch { display: inline-flex; align-items: center; gap: 12px; cursor: pointer; user-select: none; min-width: 0; }\n.wb-switch.wb-switch-start { flex-direction: row-reverse; justify-content: space-between; width: 100%; }\n.wb-switch.disabled, .wb-switch[data-disabled=\"true\"], .wb-switch[aria-disabled=\"true\"] { cursor: not-allowed; opacity: 0.6; }\n.wb-switch input[type=\"checkbox\"] { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; opacity: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }\n.wb-switch-track {\n position: relative; display: inline-block; flex-shrink: 0;\n width: 34px; height: 20px; border-radius: 10px;\n background: var(--wb-grey-a40);\n transition: background-color 0.18s ease, box-shadow 0.15s ease;\n}\n.wb-switch-thumb, .wb-switch-track::after {\n content: \"\"; position: absolute; top: 2px; left: 2px;\n width: 16px; height: 16px; border-radius: 50%;\n background: #FFFFFF;\n box-shadow: 0 1px 3px rgba(0, 0, 0, 0.3);\n transition: transform 0.18s ease;\n}\n.wb-switch-track.checked, .wb-switch-track[data-checked=\"true\"],\n.wb-switch input:checked + .wb-switch-track, .wb-switch.checked .wb-switch-track, .wb-switch[data-checked=\"true\"] .wb-switch-track,\n.wb-switch[aria-checked=\"true\"] .wb-switch-track { background: var(--wb-primary); }\n.wb-switch-track.checked::after, .wb-switch-track[data-checked=\"true\"]::after,\n.wb-switch input:checked + .wb-switch-track::after, .wb-switch.checked .wb-switch-track::after, .wb-switch[data-checked=\"true\"] .wb-switch-track::after,\n.wb-switch[aria-checked=\"true\"] .wb-switch-track::after,\n.wb-switch-track.checked .wb-switch-thumb, .wb-switch-track[data-checked=\"true\"] .wb-switch-thumb { transform: translateX(14px); }\n.wb-switch-track:has(.wb-switch-thumb)::after { display: none; }\n.wb-switch input:focus-visible + .wb-switch-track, .wb-switch:focus-visible .wb-switch-track { box-shadow: 0 0 0 3px var(--wb-primary-a24); }\n.wb-switch-text { display: flex; flex-direction: column; min-width: 0; gap: 1px; }\n.wb-switch-label { font-size: 14px; font-weight: 500; line-height: 1.4; display: inline-flex; align-items: center; gap: 6px; }\n.wb-switch-sublabel { font-size: 12px; color: var(--wb-text-secondary); line-height: 1.4; }\n.wb-switch-row {\n display: flex; align-items: center; justify-content: space-between; gap: 12px;\n padding: 10px 12px; border-radius: var(--wb-radius);\n background: var(--wb-grey-a08);\n transition: background-color 0.15s ease;\n}\n.wb-switch-row:hover { background: var(--wb-grey-a12); }\n.wb-switch-row.checked, .wb-switch-row[data-checked=\"true\"] { background: var(--wb-primary-a08); }\n\n.wb-slider-wrap { display: flex; flex-direction: column; gap: 6px; }\n.wb-slider-row { display: flex; align-items: center; gap: 12px; min-width: 0; }\n.wb-slider-row .wb-slider { flex: 1 1 auto; }\n.wb-slider {\n --wb-fill: 0%;\n display: block; width: 100%; height: 20px; margin: 0; padding: 0;\n background: transparent; cursor: pointer;\n appearance: none; -webkit-appearance: none;\n}\n.wb-slider:disabled { cursor: not-allowed; opacity: 0.5; }\n.wb-slider::-webkit-slider-runnable-track {\n height: 4px; border-radius: 2px;\n background: linear-gradient(to right, var(--wb-primary) 0%, var(--wb-primary) var(--wb-fill), var(--wb-grey-a24) var(--wb-fill), var(--wb-grey-a24) 100%);\n}\n.wb-slider::-moz-range-track { height: 4px; border-radius: 2px; background: var(--wb-grey-a24); }\n.wb-slider::-moz-range-progress { height: 4px; border-radius: 2px; background: var(--wb-primary); }\n.wb-slider::-webkit-slider-thumb {\n appearance: none; -webkit-appearance: none;\n width: 16px; height: 16px; margin-top: -6px; border-radius: 50%;\n background: var(--wb-primary); border: 2px solid #FFFFFF;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.24);\n transition: box-shadow 0.15s ease, transform 0.1s ease;\n}\n.wb-slider::-moz-range-thumb {\n width: 16px; height: 16px; border-radius: 50%;\n background: var(--wb-primary); border: 2px solid #FFFFFF;\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.24);\n}\n.wb-slider:hover::-webkit-slider-thumb, .wb-slider:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 6px var(--wb-primary-a15), 0 1px 4px rgba(0, 0, 0, 0.24); }\n.wb-slider:active::-webkit-slider-thumb { transform: scale(1.1); box-shadow: 0 0 0 8px var(--wb-primary-a24); }\n.wb-slider:hover::-moz-range-thumb, .wb-slider:focus-visible::-moz-range-thumb { box-shadow: 0 0 0 6px var(--wb-primary-a15); }\n.wb-slider-value {\n flex-shrink: 0; min-width: 44px; height: 24px; padding: 0 8px;\n display: inline-flex; align-items: center; justify-content: center;\n border-radius: 6px; background: var(--wb-primary-a08); color: var(--wb-primary);\n font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums;\n}\n.wb-slider-marks { position: relative; display: flex; justify-content: space-between; padding: 0 7px; font-size: 11px; color: var(--wb-text-disabled); font-variant-numeric: tabular-nums; }\n.wb-slider-mark { position: relative; text-align: center; min-width: 0; }\n.wb-slider-mark.active { color: var(--wb-primary); font-weight: 700; }\n.wb-slider-mark-abs { position: absolute; top: 0; transform: translateX(-50%); white-space: nowrap; }\n\n.wb-range { display: flex; flex-direction: column; gap: 8px; }\n.wb-range-track { position: relative; height: 24px; }\n.wb-range-rail { position: absolute; left: 8px; right: 8px; top: 10px; height: 4px; border-radius: 2px; overflow: hidden; display: flex; background: var(--wb-grey-a24); }\n.wb-range-rail-seg { height: 100%; }\n.wb-range-input {\n position: absolute; inset: 0; width: 100%; height: 24px; margin: 0; padding: 0;\n background: transparent; appearance: none; -webkit-appearance: none;\n pointer-events: none; cursor: pointer;\n}\n.wb-range-input::-webkit-slider-runnable-track { height: 4px; background: transparent; }\n.wb-range-input::-moz-range-track { height: 4px; background: transparent; }\n.wb-range-input::-webkit-slider-thumb {\n appearance: none; -webkit-appearance: none; pointer-events: auto;\n width: 16px; height: 16px; margin-top: -6px; border-radius: 50%;\n background: var(--wb-paper); border: 2px solid var(--wb-primary);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.24);\n}\n.wb-range-input::-moz-range-thumb {\n pointer-events: auto; width: 16px; height: 16px; border-radius: 50%;\n background: var(--wb-paper); border: 2px solid var(--wb-primary);\n box-shadow: 0 1px 4px rgba(0, 0, 0, 0.24);\n}\n.wb-range-input:hover::-webkit-slider-thumb, .wb-range-input:focus-visible::-webkit-slider-thumb { box-shadow: 0 0 0 6px var(--wb-primary-a15); }\n.wb-range-labels { display: flex; justify-content: space-between; font-size: 11px; color: var(--wb-text-secondary); }\n.wb-range-chips { display: flex; gap: 8px; flex-wrap: wrap; }\n.wb-range-chip {\n display: inline-flex; align-items: center; gap: 6px; flex: 1 1 0; min-width: 0;\n height: 28px; padding: 0 10px; border-radius: 8px;\n font-size: 12px; font-weight: 700; white-space: nowrap;\n color: #FFFFFF; background: var(--wb-chip-color, var(--wb-primary));\n font-variant-numeric: tabular-nums;\n}\n.wb-range-chip-dot { width: 8px; height: 8px; border-radius: 50%; background: rgba(255, 255, 255, 0.8); flex-shrink: 0; }\n\n.wb-tabs { display: inline-flex; align-items: center; gap: 4px; padding: 4px; border-radius: 10px; background: var(--wb-grey-a08); max-width: 100%; }\n.wb-tabs-full { display: flex; width: 100%; }\n.wb-tabs-full .wb-tab { flex: 1 1 0; justify-content: center; }\n.wb-tab {\n display: inline-flex; align-items: center; justify-content: center; gap: 6px;\n height: 28px; padding: 0 12px; border-radius: 8px;\n font-size: 13px; font-weight: 600; color: var(--wb-text-secondary);\n white-space: nowrap; cursor: pointer; user-select: none;\n transition: background-color 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;\n}\n.wb-tab:hover { color: var(--wb-text); }\n.wb-tab.active, .wb-tab[aria-selected=\"true\"], .wb-tab[data-active=\"true\"] { background: var(--wb-paper); color: var(--wb-text); box-shadow: var(--wb-shadow-1); }\n.wb-tab:disabled { opacity: 0.5; cursor: not-allowed; }\n.wb-tab-count { font-size: 11px; font-weight: 700; color: var(--wb-text-disabled); }\n.wb-tabs-underline { display: flex; gap: 20px; padding: 0; border-radius: 0; background: transparent; border-bottom: 1px solid var(--wb-divider); }\n.wb-tabs-underline .wb-tab { height: 40px; padding: 0 2px; border-radius: 0; box-shadow: none; background: transparent; border-bottom: 2px solid transparent; margin-bottom: -1px; }\n.wb-tabs-underline .wb-tab.active, .wb-tabs-underline .wb-tab[aria-selected=\"true\"] { background: transparent; box-shadow: none; color: var(--wb-text); border-bottom-color: var(--wb-text); }\n.wb-tabpanel { padding-top: 16px; }\n\n.wb-chip {\n display: inline-flex; align-items: center; gap: 4px; flex-shrink: 0;\n height: 24px; padding: 0 8px; border-radius: 6px;\n font-size: 12px; font-weight: 700; line-height: 1; white-space: nowrap;\n background: var(--wb-grey-a16); color: var(--wb-text);\n font-variant-numeric: tabular-nums;\n}\n.wb-chip-sm { height: 20px; padding: 0 6px; font-size: 11px; }\n.wb-chip-primary { background: var(--wb-primary-a12); color: var(--wb-primary); }\n.wb-chip-success { background: var(--wb-success-a16); color: var(--wb-success-dark); }\n.wb-chip-warning { background: var(--wb-warning-a16); color: var(--wb-warning-dark); }\n.wb-chip-error { background: var(--wb-error-a16); color: var(--wb-error-dark); }\n.wb-chip-info { background: var(--wb-info-a16); color: var(--wb-info-dark); }\n.wb-chip-outlined { background: transparent; border: 1px solid var(--wb-border); }\n.wb-chip-clickable { cursor: pointer; transition: filter 0.15s ease; }\n.wb-chip-clickable:hover { filter: brightness(0.96); }\n.wb-chip-delete { display: inline-flex; margin-right: -2px; border-radius: 50%; opacity: 0.7; cursor: pointer; }\n.wb-chip-delete:hover { opacity: 1; }\n.wb-chips { display: flex; flex-wrap: wrap; gap: 6px; }\n\n.wb-alert {\n display: flex; align-items: flex-start; gap: 12px;\n padding: 12px 16px; border-radius: var(--wb-radius);\n font-size: 13px; line-height: 1.5;\n background: var(--wb-info-a16); color: var(--wb-info-dark);\n}\n.wb-alert-icon { display: inline-flex; flex-shrink: 0; margin-top: 1px; }\n.wb-alert-body { min-width: 0; flex: 1 1 auto; }\n.wb-alert-title { font-weight: 700; margin-bottom: 2px; }\n.wb-alert-info { background: var(--wb-info-a16); color: var(--wb-info-dark); }\n.wb-alert-success { background: var(--wb-success-a16); color: var(--wb-success-dark); }\n.wb-alert-warning { background: var(--wb-warning-a16); color: var(--wb-warning-dark); }\n.wb-alert-error { background: var(--wb-error-a16); color: var(--wb-error-dark); }\n.wb-alert-outlined { background: transparent; border: 1px solid currentColor; }\n\n.wb-divider { height: 1px; width: 100%; background: var(--wb-divider); border: 0; margin: 16px 0; flex-shrink: 0; }\n.wb-divider-tight { margin: 8px 0; }\n.wb-divider-dashed { height: 0; background: transparent; border-top: 1px dashed var(--wb-divider); }\n.wb-divider-vertical { width: 1px; height: auto; align-self: stretch; background: var(--wb-divider); margin: 0 8px; }\n.wb-divider-text { display: flex; align-items: center; gap: 12px; font-size: 11px; font-weight: 700; color: var(--wb-text-disabled); text-transform: uppercase; letter-spacing: 0.06em; margin: 16px 0; }\n.wb-divider-text::before, .wb-divider-text::after { content: \"\"; flex: 1 1 auto; height: 1px; background: var(--wb-divider); }\n\n.wb-tooltip { position: relative; display: inline-flex; }\n.wb-tooltip-bubble {\n position: absolute; left: 50%; bottom: calc(100% + 6px); z-index: var(--wb-z-menu);\n transform: translateX(-50%) translateY(2px);\n max-width: 240px; padding: 6px 8px; border-radius: 6px;\n background: var(--wb-tooltip-bg); color: var(--wb-tooltip-fg);\n font-size: 12px; font-weight: 500; line-height: 1.4; white-space: normal; text-align: center;\n box-shadow: var(--wb-shadow-2);\n opacity: 0; pointer-events: none;\n transition: opacity 0.12s ease, transform 0.12s ease;\n}\n.wb-tooltip-bubble.nowrap { white-space: nowrap; }\n.wb-tooltip-bubble::after { content: \"\"; position: absolute; top: 100%; left: 50%; transform: translateX(-50%); border: 5px solid transparent; border-top-color: var(--wb-tooltip-bg); }\n.wb-tooltip-bottom .wb-tooltip-bubble { bottom: auto; top: calc(100% + 6px); transform: translateX(-50%) translateY(-2px); }\n.wb-tooltip-bottom .wb-tooltip-bubble::after { top: auto; bottom: 100%; border-top-color: transparent; border-bottom-color: var(--wb-tooltip-bg); }\n.wb-tooltip:hover .wb-tooltip-bubble, .wb-tooltip:focus-within .wb-tooltip-bubble,\n.wb-tooltip-bubble.visible, .wb-tooltip-bubble[data-visible=\"true\"] { opacity: 1; transform: translateX(-50%) translateY(0); }\n\n.wb-menu-anchor { position: relative; display: inline-flex; }\n.wb-menu {\n position: absolute; top: calc(100% + 4px); right: 0; z-index: var(--wb-z-menu);\n min-width: 180px; max-height: 320px; overflow-y: auto;\n padding: 4px; border-radius: 10px;\n background: var(--wb-paper); border: 1px solid var(--wb-divider);\n box-shadow: var(--wb-shadow-24);\n animation: wb-fade-in 0.12s ease;\n}\n.wb-menu-left { right: auto; left: 0; }\n.wb-menu-item {\n display: flex; align-items: center; gap: 10px; width: 100%;\n padding: 8px 10px; border-radius: 6px;\n font-size: 13px; font-weight: 500; color: var(--wb-text); text-align: left;\n cursor: pointer; white-space: nowrap;\n}\n.wb-menu-item:hover { background: var(--wb-grey-a08); }\n.wb-menu-item.active, .wb-menu-item[aria-selected=\"true\"] { background: var(--wb-primary-a08); color: var(--wb-primary); font-weight: 600; }\n.wb-menu-item:disabled { opacity: 0.5; cursor: not-allowed; }\n.wb-menu-item.danger { color: var(--wb-error); }\n.wb-menu-sep { height: 1px; background: var(--wb-divider); margin: 4px 0; }\n\n.wb-table-wrap { width: 100%; overflow-x: auto; border: 1px solid var(--wb-divider); border-radius: var(--wb-radius); }\n.wb-table { width: 100%; border-collapse: collapse; font-size: 13px; }\n.wb-table th { text-align: left; padding: 8px 12px; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.04em; color: var(--wb-text-secondary); background: var(--wb-grey-a08); border-bottom: 1px solid var(--wb-divider); white-space: nowrap; }\n.wb-table td { padding: 8px 12px; border-bottom: 1px solid var(--wb-divider); vertical-align: middle; }\n.wb-table tr:last-child td { border-bottom: 0; }\n.wb-table tbody tr { transition: background-color 0.12s ease; }\n.wb-table tbody tr:hover { background: var(--wb-grey-a08); }\n.wb-table tbody tr.selected, .wb-table tbody tr[data-selected=\"true\"] { background: var(--wb-primary-a08); }\n.wb-table tbody tr.clickable { cursor: pointer; }\n.wb-table td.num, .wb-table th.num { text-align: right; font-variant-numeric: tabular-nums; }\n.wb-table-empty { padding: 24px; text-align: center; color: var(--wb-text-secondary); font-size: 13px; }\n\n.wb-card { background: var(--wb-paper); border: 1px solid var(--wb-divider); border-radius: var(--wb-radius-md); padding: 16px; }\n.wb-card-sm { padding: 12px; border-radius: var(--wb-radius); }\n.wb-card-tint { background: var(--wb-grey-a08); border-color: transparent; }\n.wb-card-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; }\n.wb-card-title { font-size: 13px; font-weight: 700; display: inline-flex; align-items: center; gap: 6px; }\n.wb-editor-list { display: flex; flex-direction: column; gap: 8px; }\n.wb-editor-row { display: flex; align-items: center; gap: 8px; min-width: 0; }\n.wb-editor-row > .wb-input, .wb-editor-row > .wb-textfield, .wb-editor-row > .wb-select-wrap, .wb-editor-row > .wb-grow { flex: 1 1 auto; min-width: 0; }\n.wb-editor-index {\n display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0;\n width: 24px; height: 24px; border-radius: 50%;\n background: var(--wb-grey-a16); color: var(--wb-text-secondary);\n font-size: 11px; font-weight: 700;\n}\n.wb-editor-block { border: 1px solid var(--wb-divider); border-radius: var(--wb-radius); padding: 12px; display: flex; flex-direction: column; gap: 10px; background: var(--wb-paper); }\n.wb-editor-block.active, .wb-editor-block[data-active=\"true\"] { border-color: var(--wb-primary-a32); background: var(--wb-primary-a08); }\n.wb-editor-footer { display: flex; align-items: center; justify-content: space-between; gap: 8px; font-size: 12px; color: var(--wb-text-secondary); }\n.wb-page-tab { font-size: 12px; font-weight: 700; }\n.wb-kv { display: grid; grid-template-columns: auto 1fr; gap: 4px 12px; font-size: 13px; }\n.wb-kv dt { color: var(--wb-text-secondary); font-weight: 500; }\n.wb-kv dd { margin: 0; font-weight: 600; }\n\n.wb-weight-list { display: flex; flex-direction: column; gap: 8px; }\n.wb-weight-row { display: flex; align-items: center; gap: 10px; font-size: 12px; }\n.wb-weight-name { width: 64px; flex-shrink: 0; color: var(--wb-text-secondary); font-weight: 600; }\n.wb-weight-bar { flex: 1 1 auto; height: 8px; border-radius: 4px; background: var(--wb-grey-a16); overflow: hidden; }\n.wb-weight-fill { height: 100%; border-radius: 4px; background: var(--wb-gradient); transition: width 0.25s ease; }\n.wb-weight-value { width: 36px; text-align: right; font-weight: 700; font-variant-numeric: tabular-nums; }\n.wb-weight-total { font-size: 12px; font-weight: 700; color: var(--wb-text-secondary); text-align: right; }\n.wb-weight-total.ok { color: var(--wb-success-dark); }\n.wb-weight-total.bad { color: var(--wb-error); }\n.wb-estimate { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border-radius: var(--wb-radius); background: var(--wb-primary-a08); color: var(--wb-primary); font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums; }\n.wb-estimate-label { font-weight: 500; color: var(--wb-text-secondary); }\n\n.wb-country-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px; }\n.wb-country-item { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 6px; font-size: 13px; cursor: pointer; min-width: 0; }\n.wb-country-item:hover { background: var(--wb-grey-a08); }\n.wb-country-item.selected, .wb-country-item[data-selected=\"true\"] { background: var(--wb-primary-a08); }\n.wb-country-name { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.wb-country-code { font-size: 11px; font-weight: 700; color: var(--wb-text-disabled); font-variant-numeric: tabular-nums; }\n.wb-flag { font-size: 16px; line-height: 1; flex-shrink: 0; }\n.wb-picker-list { max-height: 320px; overflow-y: auto; border: 1px solid var(--wb-divider); border-radius: var(--wb-radius); padding: 4px; display: flex; flex-direction: column; gap: 2px; }\n.wb-picker-toolbar { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; font-size: 12px; color: var(--wb-text-secondary); }\n.wb-option-row { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 8px 10px; border-radius: 8px; border: 1px solid var(--wb-divider); font-size: 13px; }\n.wb-option-row.selected, .wb-option-row[data-selected=\"true\"] { border-color: var(--wb-primary-a32); background: var(--wb-primary-a08); }\n.wb-option-hint { font-size: 12px; color: var(--wb-text-secondary); font-style: italic; }\n.wb-option-cost { font-size: 12px; font-weight: 700; color: var(--wb-primary); font-variant-numeric: tabular-nums; }\n\n.wb-esign-doc { position: relative; aspect-ratio: 8.5 / 11; width: 100%; max-width: 320px; margin: 0 auto; background: #FFFFFF; border: 1px solid var(--wb-border); border-radius: 6px; box-shadow: var(--wb-shadow-2); overflow: hidden; color: #1C252E; }\n.wb-esign-line { height: 6px; border-radius: 3px; background: rgba(145, 158, 171, 0.24); margin: 0 16px; }\n.wb-esign-field { position: absolute; display: inline-flex; align-items: center; gap: 4px; padding: 2px 6px; border-radius: 4px; border: 1px dashed var(--wb-primary); background: var(--wb-primary-a12); color: var(--wb-primary); font-size: 10px; font-weight: 700; cursor: move; white-space: nowrap; }\n.wb-esign-field.selected, .wb-esign-field[data-selected=\"true\"] { border-style: solid; box-shadow: 0 0 0 2px var(--wb-primary-a24); }\n.wb-esign-template { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: var(--wb-radius); border: 1px solid var(--wb-divider); cursor: pointer; }\n.wb-esign-template:hover { border-color: var(--wb-border); background: var(--wb-grey-a08); }\n.wb-esign-template.selected, .wb-esign-template[data-selected=\"true\"] { border-color: var(--wb-primary); background: var(--wb-primary-a08); }\n.wb-esign-thumb { width: 36px; height: 46px; border-radius: 4px; background: #FFFFFF; border: 1px solid var(--wb-border); flex-shrink: 0; display: flex; flex-direction: column; gap: 4px; padding: 6px 5px; }\n.wb-esign-thumb span { display: block; height: 3px; border-radius: 2px; background: rgba(145, 158, 171, 0.4); }\n\n\n/* 10. MUI-style primitives (wb-m-*) and settings panel (wb-sp-*)\n ============================================================ */\n.wb-m-flag { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }\n.wb-m-flag img { width: 100%; height: 100%; object-fit: contain; }\n\n.wb-m-switch { display: inline-flex; padding: 9px; border: 0; background: none; cursor: pointer; flex-shrink: 0; border-radius: 20px; }\n.wb-m-switch-small { padding: 7px; }\n.wb-m-switch-track { position: relative; display: block; width: 33px; height: 20px; border-radius: 10px; background: var(--wb-grey-a48); transition: background-color 0.15s ease; }\n.wb-m-switch-small .wb-m-switch-track { width: 26px; height: 16px; }\n.wb-m-switch-thumb { position: absolute; top: 3px; left: 3px; width: 14px; height: 14px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(0,0,0,0.2); transition: transform 0.15s ease; }\n.wb-m-switch-small .wb-m-switch-thumb { width: 10px; height: 10px; }\n.wb-m-switch-on .wb-m-switch-thumb { transform: translateX(13px); }\n.wb-m-switch-small.wb-m-switch-on .wb-m-switch-thumb { transform: translateX(10px); }\n.wb-m-switch-on .wb-m-switch-track { background: var(--wb-primary); }\n.wb-m-switch-success.wb-m-switch-on .wb-m-switch-track { background: var(--wb-success); }\n.wb-m-switch-disabled { cursor: default; }\n.wb-m-switch-disabled .wb-m-switch-track { opacity: 0.48; }\n.wb-m-switch:focus-visible { outline: 2px solid var(--wb-primary); outline-offset: -4px; }\n\n.wb-m-check { display: inline-flex; align-items: center; justify-content: center; padding: 9px; border: 0; background: none; cursor: pointer; border-radius: 50%; color: var(--wb-text-secondary); flex-shrink: 0; }\n.wb-m-check-small { padding: 6px; }\n.wb-m-check:hover { background: var(--wb-action-hover); }\n.wb-m-check-box { width: 18px; height: 18px; border-radius: 4px; border: 2px solid currentColor; display: inline-flex; align-items: center; justify-content: center; box-sizing: border-box; transition: background-color 0.12s ease, border-color 0.12s ease; color: inherit; }\n.wb-m-check-on .wb-m-check-box, .wb-m-check-mixed .wb-m-check-box { background: var(--wb-primary); border-color: var(--wb-primary); color: #fff; }\n.wb-m-check-dash { width: 10px; height: 2px; background: #fff; border-radius: 1px; }\n.wb-m-check:disabled { cursor: default; opacity: 0.48; }\n\n.wb-m-chip { display: inline-flex; align-items: center; gap: 6px; height: 24px; padding: 0 8px; border-radius: 8px; font-size: 0.75rem; font-weight: 500; line-height: 1; white-space: nowrap; max-width: 100%; border: 1px solid transparent; box-sizing: border-box; color: var(--wb-text); vertical-align: middle; }\n.wb-m-chip-medium { height: 32px; padding: 0 12px; font-size: 0.8125rem; }\n.wb-m-chip-label { overflow: hidden; text-overflow: ellipsis; }\n.wb-m-chip-icon { display: inline-flex; margin-left: -2px; }\n.wb-m-chip-click { cursor: pointer; }\n.wb-m-chip-click:hover { filter: brightness(0.96); }\n.wb-m-chip-soft.wb-m-chip-default { background: var(--wb-grey-a16); color: var(--wb-text); }\n.wb-m-chip-soft.wb-m-chip-primary { background: var(--wb-primary-a16, rgba(7,129,223,0.16)); color: var(--wb-primary-dark); }\n.wb-m-chip-soft.wb-m-chip-info { background: var(--wb-info-a16); color: var(--wb-info-dark); }\n.wb-m-chip-soft.wb-m-chip-success { background: var(--wb-success-a16); color: var(--wb-success-dark); }\n.wb-m-chip-soft.wb-m-chip-warning { background: var(--wb-warning-a16); color: var(--wb-warning-dark); }\n.wb-m-chip-soft.wb-m-chip-error { background: var(--wb-error-a16); color: var(--wb-error-dark); }\n.wb-m-chip-filled.wb-m-chip-primary { background: var(--wb-primary); color: #fff; }\n.wb-m-chip-filled.wb-m-chip-default { background: var(--wb-grey-a16); color: var(--wb-text); }\n.wb-m-chip-outlined { background: transparent; border-color: var(--wb-grey-a32); color: var(--wb-text); }\n.wb-m-chip-outlined.wb-m-chip-warning { border-color: var(--wb-warning); color: var(--wb-warning-dark); }\n.wb-m-chip-paper { background: var(--wb-paper); color: var(--wb-text); }\n.wb-m-chip-del { display: inline-flex; margin-right: -4px; color: inherit; opacity: 0.7; cursor: pointer; }\n.wb-m-chip-del:hover { opacity: 1; }\n.dark .wb-m-chip-soft.wb-m-chip-primary { color: var(--wb-primary-lighter); }\n.dark .wb-m-chip-soft.wb-m-chip-success { color: var(--wb-success-light); }\n.dark .wb-m-chip-soft.wb-m-chip-warning { color: var(--wb-warning-light); }\n.dark .wb-m-chip-soft.wb-m-chip-error { color: var(--wb-error-light); }\n\n.wb-m-alert { display: flex; align-items: flex-start; gap: 12px; padding: 6px 16px; border-radius: 8px; font-size: 0.875rem; line-height: 1.5; min-height: 48px; box-sizing: border-box; }\n.wb-m-alert-icon { display: inline-flex; padding: 7px 0; flex-shrink: 0; }\n.wb-m-alert-msg { flex: 1; min-width: 0; padding: 8px 0; }\n.wb-m-alert-action { display: inline-flex; align-items: center; padding: 6px 0; }\n.wb-m-alert-standard.wb-m-alert-info { background: var(--wb-info-a16); color: var(--wb-info-dark); }\n.wb-m-alert-standard.wb-m-alert-warning { background: var(--wb-warning-a16); color: var(--wb-warning-dark); }\n.wb-m-alert-standard.wb-m-alert-error { background: var(--wb-error-a16); color: var(--wb-error-dark); }\n.wb-m-alert-standard.wb-m-alert-success { background: var(--wb-success-a16); color: var(--wb-success-dark); }\n.wb-m-alert-soft { background: var(--wb-grey-a16); color: var(--wb-text); }\n.wb-m-alert-soft.wb-m-alert-info { background: var(--wb-info-a16); color: var(--wb-info-dark); }\n.wb-m-alert-soft.wb-m-alert-warning { background: var(--wb-warning-a16); color: var(--wb-warning-dark); }\n.wb-m-alert-soft.wb-m-alert-error { background: var(--wb-error-a16); color: var(--wb-error-dark); }\n.wb-m-alert-soft.wb-m-alert-success { background: var(--wb-success-a16); color: var(--wb-success-dark); }\n.wb-m-alert-outlined { background: transparent; border: 1px solid; color: var(--wb-text); }\n.wb-m-alert-outlined.wb-m-alert-info { border-color: rgba(0,184,217,0.48); }\n.wb-m-alert-outlined.wb-m-alert-info .wb-m-alert-icon { color: var(--wb-info); }\n.wb-m-alert-outlined.wb-m-alert-warning { border-color: rgba(255,171,0,0.48); }\n.wb-m-alert-outlined.wb-m-alert-warning .wb-m-alert-icon { color: var(--wb-warning); }\n.wb-m-alert-outlined.wb-m-alert-error { border-color: rgba(255,86,48,0.48); }\n.wb-m-alert-outlined.wb-m-alert-error .wb-m-alert-icon { color: var(--wb-error); }\n.wb-m-alert-outlined.wb-m-alert-success { border-color: rgba(34,197,94,0.48); }\n.wb-m-alert-outlined.wb-m-alert-success .wb-m-alert-icon { color: var(--wb-success); }\n.dark .wb-m-alert-standard, .dark .wb-m-alert-soft { color: var(--wb-text); }\n\n.wb-m-backdrop { position: fixed; inset: 0; z-index: var(--wb-z-dialog); background: rgba(22, 28, 36, 0.48); display: flex; align-items: center; justify-content: center; padding: 32px; box-sizing: border-box; animation: wb-fade 0.15s ease-out; font-family: var(--wb-font); }\n.wb-m-paper { background: var(--wb-paper); color: var(--wb-text); border-radius: 16px; box-shadow: var(--wb-dialog-shadow); display: flex; flex-direction: column; max-height: calc(100vh - 64px); animation: wb-pop 0.18s ease-out; font-size: 14px; line-height: 1.5; text-align: left; }\n.wb-m-dialog-title { padding: 24px 24px 8px; }\n.wb-m-dialog-title-row { display: flex; align-items: center; gap: 12px; }\n.wb-m-dialog-title-icon { display: inline-flex; flex-shrink: 0; }\n.wb-m-dialog-title-text { font-size: 1rem; font-weight: 700; line-height: 1.2; }\n.wb-m-dialog-subtitle { font-size: 12px; color: var(--wb-text-secondary); margin-top: 2px; }\n.wb-m-dialog-content { padding: 0 24px; overflow-y: auto; min-height: 0; flex: 1 1 auto; }\n.wb-m-dialog-dividers { border-top: 1px solid var(--wb-divider); border-bottom: 1px solid var(--wb-divider); padding-top: 16px; padding-bottom: 16px; }\n.wb-m-dialog-actions { display: flex; justify-content: flex-end; align-items: center; gap: 8px; padding: 16px 24px 24px; }\n\n.wb-m-slider { position: relative; width: 100%; padding: 6px 0 4px; --wb-m-slider-color: var(--wb-primary); }\n.wb-m-slider-rail { position: relative; height: 9px; border-radius: 6px; background: var(--wb-neutral); cursor: pointer; touch-action: none; }\n.wb-m-slider-track { position: absolute; left: 0; top: -0.5px; height: 10px; border-radius: 6px; background: var(--wb-m-slider-color); pointer-events: none; }\n.wb-m-slider-mark { position: absolute; top: 50%; width: 2px; height: 2px; margin-left: -1px; margin-top: -1px; border-radius: 50%; background: var(--wb-grey-a48); pointer-events: none; }\n.wb-m-slider-thumb { position: absolute; top: 50%; width: 25px; height: 20px; margin-left: -12.5px; margin-top: -10px; border-radius: 8px; background: var(--wb-m-slider-color); border: 1px solid #a0a0a06a; cursor: grab; box-sizing: border-box; touch-action: none; }\n.wb-m-slider-thumb:active { cursor: grabbing; }\n.wb-m-slider-thumb:focus-visible { outline: 2px solid var(--wb-primary); outline-offset: 2px; }\n.wb-m-slider-thumb-paper { background: var(--wb-paper); }\n.wb-m-slider-marks { position: relative; height: 26px; }\n.wb-m-slider-marklabel { position: absolute; top: 6px; transform: translateX(-50%); font-size: 0.75rem; font-weight: 500; color: var(--wb-text); border: 1.5px solid #a0a0a06a; padding: 2px 6px; border-radius: 8px; background: var(--wb-paper); white-space: nowrap; }\n.wb-m-slider-disabled { opacity: 0.6; pointer-events: none; }\n\n.wb-m-toggle-group { display: inline-flex; border-radius: 8px; }\n.wb-m-toggle-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 2px 12px; min-height: 26px; border: 1px solid var(--wb-grey-a20); margin-left: -1px; font-size: 0.7rem; font-weight: 600; color: var(--wb-text-secondary); background: transparent; cursor: pointer; text-transform: none; transition: background-color 0.15s ease, color 0.15s ease; }\n.wb-m-toggle-btn:first-child { border-radius: 8px 0 0 8px; margin-left: 0; }\n.wb-m-toggle-btn:last-child { border-radius: 0 8px 8px 0; }\n.wb-m-toggle-btn:hover { background: var(--wb-action-hover); }\n.wb-m-toggle-selected { background: var(--wb-primary-a08); color: var(--wb-primary); border-color: var(--wb-primary-a30); position: relative; z-index: 1; }\n.wb-m-toggle-segmented { gap: 2px; padding: 2px; border-radius: 12px; background: var(--wb-paper); border: 1px solid var(--wb-divider); }\n.wb-m-toggle-segmented .wb-m-toggle-btn { border: 0; margin: 0; border-radius: 8px; padding: 4px 12px; font-size: 0.8125rem; font-weight: 500; color: var(--wb-text-secondary); }\n.wb-m-toggle-segmented .wb-m-toggle-btn:hover { background: var(--wb-neutral); color: var(--wb-text); }\n.wb-m-toggle-segmented .wb-m-toggle-selected { font-weight: 600; background: var(--wb-primary-a16, rgba(7,129,223,0.16)); color: var(--wb-primary-dark); }\n.wb-m-toggle-segmented .wb-m-toggle-selected.wb-m-toggle-success { background: var(--wb-success-a16); color: var(--wb-success-dark); }\n.wb-m-toggle-segmented .wb-m-toggle-selected.wb-m-toggle-warning { background: var(--wb-warning-a16); color: var(--wb-warning-dark); }\n.wb-m-toggle-segmented .wb-m-toggle-selected.wb-m-toggle-error { background: var(--wb-error-a16); color: var(--wb-error-dark); }\n.wb-m-toggle-segmented .wb-m-toggle-selected.wb-m-toggle-neutral { background: var(--wb-grey-a16); color: var(--wb-text); }\n.wb-m-toggle-btn:disabled { opacity: 0.48; cursor: default; }\n\n.wb-m-tabs { display: flex; gap: 40px; border-bottom: 1px solid var(--wb-divider); }\n.wb-m-tab { position: relative; padding: 8px 0; min-height: 44px; font-size: 0.875rem; font-weight: 500; color: var(--wb-text-secondary); cursor: pointer; background: transparent; border: 0; }\n.wb-m-tab[aria-selected=\"true\"] { color: var(--wb-text); }\n.wb-m-tab[aria-selected=\"true\"]::after { content: \"\"; position: absolute; left: 0; right: 0; bottom: -1px; height: 2px; background: currentColor; }\n\n.wb-m-divider { border: 0; border-top: 1px solid var(--wb-divider); margin: 0; width: 100%; }\n.wb-m-divider-dashed { border-top-style: dashed; }\n.wb-m-divider-text { display: flex; align-items: center; gap: 12px; width: 100%; }\n.wb-m-divider-text::before, .wb-m-divider-text::after { content: \"\"; flex: 1; border-top: 1px solid var(--wb-divider); }\n.wb-m-divider-text.wb-m-divider-dashed::before, .wb-m-divider-text.wb-m-divider-dashed::after { border-top-style: dashed; }\n\n.wb-m-numbadge { display: inline-flex; align-items: center; justify-content: center; width: 20px; height: 20px; border-radius: 4px; font-size: 10px; font-weight: 600; flex-shrink: 0; }\n.wb-m-numbadge-round { border-radius: 50%; font-size: 0.7rem; font-weight: 700; }\n.wb-m-numbadge-info { background: var(--wb-info); color: #fff; }\n.wb-m-numbadge-infoLight { background: #CAFDF5; color: var(--wb-info-dark); }\n.wb-m-numbadge-warning { background: var(--wb-warning); color: #1C252E; }\n.wb-m-numbadge-primary { background: var(--wb-primary); color: #fff; }\n\n.wb-m-ibtn { display: inline-flex; align-items: center; justify-content: center; padding: 2px; border-radius: 50%; color: var(--wb-text-disabled); cursor: pointer; background: transparent; border: 0; flex-shrink: 0; transition: color 0.15s ease, background-color 0.15s ease; }\n.wb-m-ibtn:hover { background: var(--wb-action-hover); color: var(--wb-text); }\n.wb-m-ibtn-danger:hover { color: var(--wb-error); }\n.wb-m-ibtn:disabled { opacity: 0.48; cursor: default; pointer-events: none; }\n.wb-m-spinner { display: inline-block; border: 2.5px solid var(--wb-primary-a24); border-top-color: var(--wb-primary); border-radius: 50%; animation: wb-spin 0.8s linear infinite; }\n.wb-mf-end .wb-m-ibtn, .wb-mf-end .wb-mbtn { pointer-events: auto; }\n.wb-mf-end { pointer-events: auto; }\n.wb-mbtn-sm { height: 30px; padding: 4px 8px; font-size: 0.8125rem; }\n.wb-mbtn-sm.wb-mbtn-text { padding: 4px 4px; }\n.wb-mbtn-full { width: 100%; }\n\n.wb-panel { position: relative; display: flex; flex-direction: column; flex: 0 0 auto; min-height: 0; border-left: 1px solid var(--wb-divider); background: var(--wb-paper); overflow: visible; transition: width 0.25s ease; z-index: 5; }\n.wb-sp-body { padding: 24px 0; flex: 1 1 auto; overflow-y: auto; min-height: 0; }\n.wb-sp-expand { position: absolute; top: 50%; left: 0; transform: translate(-100%, -50%); z-index: 10; width: 28px; height: 48px; border-radius: 10px 0 0 10px; background: var(--wb-paper); border: 1px solid var(--wb-divider); border-right: 0; display: flex; align-items: center; justify-content: center; cursor: pointer; box-shadow: -2px 0 8px rgba(0,0,0,0.06); transition: all 0.15s ease; color: var(--wb-text); }\n.wb-sp-expand:hover { background: var(--wb-action-hover); width: 32px; }\n.wb-sp-empty { display: flex; height: 100%; align-items: center; justify-content: center; flex-direction: column; text-align: center; padding: 0 24px; }\n.wb-sp-noopts { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; height: 100%; padding: 0 24px; }\n.wb-sp-header { display: flex; align-items: center; gap: 16px; padding: 0 24px; }\n.wb-sp-group { display: flex; flex-direction: column; gap: 16px; padding: 8px 24px; }\n.wb-sp-h6 { font-size: 16px; font-weight: 500; line-height: 1.4; letter-spacing: 0.01em; }\n.wb-sp-subtitle1 { font-size: 16px; font-weight: 500; line-height: 1.45; letter-spacing: 0.008em; }\n.wb-sp-subtitle2 { font-size: 14px; font-weight: 500; line-height: 1.45; letter-spacing: 0.008em; }\n.wb-sp-body1 { font-size: 15px; line-height: 1.5; }\n.wb-sp-body2 { font-size: 14px; line-height: 1.5; letter-spacing: 0.011em; }\n.wb-sp-caption { font-size: 12px; line-height: 1.4; letter-spacing: 0.01em; }\n.wb-sp-overline { font-size: 12px; font-weight: 700; letter-spacing: 0.5px; text-transform: uppercase; color: var(--wb-text-secondary); }\n.wb-sp-secondary { color: var(--wb-text-secondary); }\n.wb-sp-disabled { color: var(--wb-text-disabled); }\n.wb-sp-primarytext { color: var(--wb-text); }\n.wb-sp-bold { font-weight: 700; }\n.wb-sp-semibold { font-weight: 600; }\n.wb-sp-nowrap { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }\n.wb-sp-stack4 { display: flex; flex-direction: column; gap: 4px; }\n.wb-sp-stack6 { display: flex; flex-direction: column; gap: 6px; }\n.wb-sp-stack8 { display: flex; flex-direction: column; gap: 8px; }\n.wb-sp-stack10 { display: flex; flex-direction: column; gap: 10px; }\n.wb-sp-stack12 { display: flex; flex-direction: column; gap: 12px; }\n.wb-sp-stack16 { display: flex; flex-direction: column; gap: 16px; }\n.wb-sp-stack20 { display: flex; flex-direction: column; gap: 20px; }\n.wb-sp-stack24 { display: flex; flex-direction: column; gap: 24px; }\n.wb-sp-row4 { display: flex; gap: 4px; }\n.wb-sp-row6 { display: flex; gap: 6px; }\n.wb-sp-row8 { display: flex; gap: 8px; }\n.wb-sp-row12 { display: flex; gap: 12px; }\n.wb-sp-row16 { display: flex; gap: 16px; }\n.wb-sp-row16 > * { flex: 1; }\n.wb-sp-between { display: flex; align-items: center; justify-content: space-between; width: 100%; }\n.wb-sp-grid2 { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }\n.wb-sp-chips { display: flex; flex-wrap: wrap; gap: 4px; }\n.wb-sp-chip-sq { border-radius: 8px; font-size: 0.72rem; font-weight: 500; cursor: pointer; }\n.wb-sp-chip-xs { height: 24px; font-size: 0.7rem; }\n.wb-sp-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex-shrink: 0; }\n.wb-sp-dialog-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; }\n.wb-sp-dialog-h6 { font-size: 1.0625rem; font-weight: 700; line-height: 1.4; }\n.wb-sp-agetoggle .wb-m-toggle-btn { padding: 2px 12px; }\n.wb-sp-boolrow { display: flex; justify-content: space-between; align-items: center; padding: 4px; border-radius: 8px; background: var(--wb-grey-a08); transition: background-color 0.15s ease; }\n.wb-sp-boolrow:hover { background: var(--wb-grey-a12); }\n.wb-sp-boollabel { flex: 1; margin-left: 8px; font-size: 14px; line-height: 1.5; letter-spacing: 0.011em; cursor: default; }\n.wb-sp-checkrow { display: flex; align-items: center; gap: 0; margin-left: -6px; cursor: pointer; }\n.wb-sp-disabledrow { opacity: 0.5; pointer-events: none; }\n.wb-sp-minage { align-items: center; padding: 12px; border-radius: 8px; background: rgba(34,197,94,0.1); }\n.wb-sp-rangerow { display: flex; align-items: center; gap: 8px; padding: 12px; border-radius: 8px; }\n.wb-sp-weightbox { padding: 12px; border-radius: 8px; background: var(--wb-grey-a08); }\n.wb-sp-neutralbox { padding: 16px; border-radius: 12px; background: var(--wb-neutral); }\n.wb-sp-note { display: flex; gap: 8px; padding: 12px; border-radius: 12px; background: var(--wb-neutral); color: var(--wb-text-secondary); }\n.wb-sp-tplq { padding: 12px; border-radius: 8px; background: var(--wb-grey-a06, rgba(145,158,171,0.06)); border: 1px solid var(--wb-divider); }\n.wb-sp-extbox { padding: 12px; border-radius: 8px; background: rgba(145,158,171,0.06); border: 1px solid var(--wb-grey-a12); }\n.wb-sp-ffield { display: flex; flex-direction: column; gap: 12px; padding: 12px; border-radius: 8px; background: var(--wb-neutral); border: 1px solid var(--wb-divider); }\n.wb-sp-pagefields { padding-left: 12px; border-left: 2px solid var(--wb-warning); }\n.wb-sp-reqopt { display: flex; width: 100%; border-radius: 8px; overflow: hidden; border: 1px solid var(--wb-divider); }\n.wb-sp-reqopt-btn { flex: 1; padding: 6px 0; text-align: center; font-size: 12px; font-weight: 600; color: var(--wb-text-disabled); background: transparent; cursor: pointer; transition: all 0.2s; }\n.wb-sp-reqopt-btn:hover { background: var(--wb-action-hover); }\n.wb-sp-reqopt-on, .wb-sp-reqopt-on:hover { background: var(--wb-text); color: var(--wb-paper); }\n.wb-sp-spinner { display: flex; align-items: center; border: 1px solid var(--wb-divider); border-radius: 8px; overflow: hidden; }\n.wb-sp-spinner-btn { display: inline-flex; align-items: center; justify-content: center; padding: 5px 12px; color: var(--wb-text-secondary); cursor: pointer; }\n.wb-sp-spinner-btn:disabled { color: var(--wb-text-disabled); cursor: default; }\n.wb-sp-spinner-val { flex: 1; text-align: center; padding: 6px 0; border-left: 1px solid var(--wb-divider); border-right: 1px solid var(--wb-divider); font-size: 14px; font-weight: 500; user-select: none; }\n.wb-sp-soft { border-radius: 12px; font-weight: 700; }\n.wb-sp-soft-primary { background: var(--wb-primary-a16, rgba(7,129,223,0.16)); color: var(--wb-primary-dark); }\n.wb-sp-soft-primary:hover { background: var(--wb-primary-a32); }\n.wb-sp-soft-info { background: var(--wb-info-a16); color: var(--wb-info-dark); }\n.wb-sp-soft-info:hover { background: rgba(0,184,217,0.32); }\n.wb-sp-soft-warning { background: var(--wb-warning-a16); color: var(--wb-warning-dark); }\n.wb-sp-soft-warning:hover { background: rgba(255,171,0,0.32); }\n.wb-sp-soft-inherit { background: var(--wb-grey-a08); color: var(--wb-text); }\n.wb-sp-soft-inherit:hover { background: var(--wb-grey-a16); }\n.wb-sp-soft:disabled { opacity: 0.48; }\n.wb-sp-gbtn { border-radius: 12px; }\n.wb-sp-gbtn:disabled { background: var(--wb-action-disabled-bg); box-shadow: none; opacity: 1; }\n.wb-sp-obtn { border-radius: 12px; font-weight: 600; border-color: var(--wb-divider); color: var(--wb-text-secondary); }\n.wb-sp-obtn:hover { border-color: var(--wb-primary); color: var(--wb-primary); box-shadow: none; background: transparent; }\n.wb-sp-obtn-dashed { border-style: dashed; border-color: var(--wb-grey-a32); }\n.wb-sp-obtn-dashed:hover { border-style: dashed; }\n.wb-sp-tinybtn { font-size: 0.7rem; padding: 2px 8px; height: auto; min-width: 0; white-space: nowrap; border-radius: 8px; }\n.wb-sp-cancel-outlined { border-radius: 8px; font-weight: 600; color: var(--wb-text-secondary); border-color: var(--wb-divider); }\n.wb-sp-esign-link { justify-content: flex-start; text-align: left; padding: 9px 12px; height: auto; border-radius: 14px; white-space: normal; line-height: 1.25; text-decoration: none; width: 100%; }\n.wb-sp-esign-link-outlined { font-weight: 600; color: var(--wb-text); border-color: var(--wb-grey-a20); background: rgba(145,158,171,0.04); }\n.wb-sp-esign-link-outlined:hover { border-color: var(--wb-grey-a32); background: var(--wb-grey-a08); box-shadow: none; }\n.wb-sp-esign-link-refresh { font-weight: 600; color: var(--wb-text-secondary); border-color: rgba(145,158,171,0.18); }\n.wb-sp-esign-filerow { display: flex; align-items: center; gap: 8px; padding: 10px; border-radius: 12px; border: 1px solid var(--wb-grey-a16); background: rgba(145,158,171,0.04); }\n.wb-sp-esign-fieldrow { display: flex; align-items: center; gap: 8px; padding: 8px; border-radius: 8px; border: 1px solid var(--wb-grey-a16); background: rgba(145,158,171,0.04); }\n.wb-sp-plainselect { flex: 1; border: 0; background: transparent; font: inherit; font-size: 0.8125rem; color: var(--wb-text); outline: none; cursor: pointer; }\n.wb-sp-esign-editor { display: flex; gap: 20px; min-height: 560px; }\n.wb-sp-esign-side { width: 280px; flex-shrink: 0; display: flex; flex-direction: column; gap: 16px; }\n.wb-sp-esign-stage { flex: 1; min-width: 0; border-radius: 16px; border: 1px solid var(--wb-grey-a16); background: rgba(145,158,171,0.03); padding: 16px; overflow: hidden; }\n.wb-sp-esign-stage-empty { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; min-height: 420px; color: var(--wb-text-secondary); }\n.wb-sp-esign-palette-item { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 8px; border: 1px solid var(--wb-divider); background: var(--wb-paper); font-size: 13px; color: var(--wb-text); cursor: pointer; }\n.wb-sp-esign-palette-item:hover { border-color: var(--wb-primary); color: var(--wb-primary); }\n.wb-sp-qrow { display: flex; align-items: flex-start; gap: 12px; padding: 16px; border-bottom: 1px solid var(--wb-grey-a12); }\n.wb-sp-qrow:hover { background: rgba(145,158,171,0.04); }\n.wb-sp-qmove { display: flex; flex-direction: column; gap: 4px; padding-top: 4px; }\n.wb-sp-small-input .wb-mf-input { font-size: 0.8125rem; }\n.wb-sp-qt-head { display: flex; align-items: center; justify-content: space-between; padding: 8px; border-radius: 12px; background: rgba(145,158,171,0.06); border: 1px solid var(--wb-grey-a12); transition: all 0.2s; }\n.wb-sp-qt-head-on { border-radius: 12px 12px 0 0; background: var(--wb-primary-a06); border-color: rgba(7,129,223,0.2); border-bottom: none; }\n.wb-sp-qt-body { border: 1px solid rgba(7,129,223,0.2); border-top: none; border-radius: 0 0 12px 12px; overflow: hidden; }\n.wb-sp-qt-sec { display: flex; align-items: center; justify-content: space-between; padding: 6px 12px; }\n.wb-sp-qt-sec-on { background: rgba(7,129,223,0.03); }\n.wb-sp-unilogo { width: 18px; height: 18px; border-radius: 50%; object-fit: contain; flex-shrink: 0; }\n.wb-sp-unilogo-fallback { width: 18px; height: 18px; border-radius: 50%; background: var(--wb-grey-a16); display: inline-flex; align-items: center; justify-content: center; color: var(--wb-text-disabled); flex-shrink: 0; }\n.wb-sp-table { border-radius: 8px; overflow: hidden; }\n.wb-sp-table-head { display: flex; align-items: center; gap: 4px; padding: 6px 8px; background: var(--wb-neutral); color: var(--wb-text-secondary); font-size: 14px; font-weight: 600; }\n.wb-sp-table-headcell { flex: 1; }\n.wb-sp-table-row { border-bottom: 1px dashed var(--wb-divider); }\n.wb-sp-table-primary { display: flex; align-items: center; gap: 4px; padding: 6px 8px; cursor: pointer; }\n.wb-sp-table-primary:hover { background: var(--wb-action-hover); }\n.wb-sp-table-secondary { margin: 0 8px 12px; border-radius: 8px; background: var(--wb-neutral); }\n.wb-sp-table-option { display: flex; align-items: center; gap: 12px; padding: 8px 12px; }\n.wb-sp-table-option:not(:last-of-type) { border-bottom: 1px solid var(--wb-divider); }\n.wb-sp-cid-group { border-radius: 8px; background: var(--wb-neutral); }\n.wb-sp-cid-grouphead { display: flex; align-items: center; gap: 8px; padding: 4px 8px; }\n.wb-sp-cid-country { margin-left: 16px; border-left: 1px solid var(--wb-divider); }\n.wb-sp-autocomplete { position: relative; }\n.wb-sp-autocomplete-field { position: relative; display: flex; align-items: center; gap: 8px; min-height: 40px; padding: 6px 9px 6px 14px; border: 1px solid var(--wb-divider); border-radius: 12px; cursor: text; transition: border-color 0.15s ease; }\n.wb-sp-autocomplete-field:hover { border-color: var(--wb-text); }\n.wb-sp-autocomplete:focus-within .wb-sp-autocomplete-field { border-color: var(--wb-primary); }\n.wb-sp-autocomplete-label { position: absolute; top: -9px; left: 9px; padding: 0 5px; background: var(--wb-paper); font-size: 0.75rem; color: var(--wb-text-secondary); line-height: 1.4; }\n.wb-sp-autocomplete:focus-within .wb-sp-autocomplete-label { color: var(--wb-primary); }\n.wb-sp-autocomplete-input { flex: 1; min-width: 60px; border: 0; outline: 0; background: transparent; font: inherit; font-size: 0.9375rem; color: var(--wb-text); padding: 2px 0; }\n.wb-sp-autocomplete-input::placeholder { color: var(--wb-text-disabled); }\n.wb-sp-autocomplete-menu { position: absolute; left: 0; right: 0; top: calc(100% + 4px); z-index: 30; max-height: 280px; overflow-y: auto; background: var(--wb-paper); border-radius: 10px; border: 1px solid var(--wb-divider); box-shadow: var(--wb-z20); padding: 4px; }\n.wb-sp-autocomplete-group { padding: 8px 12px 4px; font-size: 12px; font-weight: 700; color: var(--wb-text-secondary); text-transform: uppercase; letter-spacing: 0.04em; position: sticky; top: 0; background: var(--wb-paper); }\n.wb-sp-autocomplete-option { display: flex; align-items: center; gap: 8px; padding: 6px 8px; border-radius: 6px; cursor: pointer; }\n.wb-sp-autocomplete-option:hover { background: var(--wb-action-hover); }\n.wb-sp-autocomplete-option-sel { background: var(--wb-action-selected); }\n.wb-sp-covtable { width: 100%; border-collapse: collapse; font-size: 14px; }\n.wb-sp-covtable th { text-align: left; font-weight: 600; padding: 12px 8px; background: var(--wb-neutral); color: var(--wb-text-secondary); font-size: 14px; }\n.wb-sp-covtable th:first-child { border-radius: 8px 0 0 8px; }\n.wb-sp-covtable th:last-child { border-radius: 0 8px 8px 0; }\n.wb-sp-covtable td { padding: 8px; border-bottom: 1px dashed var(--wb-divider); }\n\n\n/* 11. Save flow — validation dialog, Save Custom Workflow, integration guide (wb-sd-*)\n ============================================================ */\n.wb-sd-h6 { font-size: 1.0625rem; font-weight: 700; line-height: 1.4; }\n.wb-sd-body2 { font-size: 14px; line-height: 1.5; }\n.wb-sd-caption { font-size: 12px; line-height: 1.4; }\n.wb-sd-muted { color: var(--wb-text-secondary); }\n.wb-sd-semibold { font-weight: 600; }\n.wb-sd-stack10 { display: flex; flex-direction: column; gap: 10px; }\n.wb-sd-stack16 { display: flex; flex-direction: column; gap: 16px; }\n.wb-sd-row8 { display: flex; gap: 8px; align-items: center; }\n.wb-sd-vtitle { display: flex; align-items: center; gap: 12px; }\n.wb-sd-vicon { width: 36px; height: 36px; border-radius: 50%; background: #FFF5CC; color: var(--wb-warning); display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }\n.wb-sd-vrow { display: flex; gap: 10px; align-items: flex-start; }\n.wb-sd-vdot { width: 6px; height: 6px; border-radius: 50%; background: var(--wb-warning); flex-shrink: 0; margin-top: 8px; }\n.wb-sd-ititle { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; }\n.wb-sd-ititle code, .wb-sd-body2 code, .wb-sd-caption code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.85em; background: var(--wb-grey-a12); padding: 1px 5px; border-radius: 4px; }\n.wb-sd-endpoint { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }\n.wb-sd-method { font-size: 11px; font-weight: 700; letter-spacing: 0.04em; padding: 3px 8px; border-radius: 6px; color: #fff; background: var(--wb-primary); }\n.wb-sd-method-get { background: var(--wb-success); }\n.wb-sd-path { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; font-weight: 600; color: var(--wb-text); }\n.wb-sd-doclink { display: inline-flex; align-items: center; gap: 2px; font-size: 12px; font-weight: 600; color: var(--wb-primary); text-decoration: none; margin-left: auto; }\n.wb-sd-doclink:hover { text-decoration: underline; }\n.wb-sd-table { width: 100%; border-collapse: collapse; font-size: 13px; }\n.wb-sd-table th { text-align: left; font-weight: 600; color: var(--wb-text-secondary); padding: 8px; background: var(--wb-neutral); }\n.wb-sd-table th:first-child { border-radius: 8px 0 0 8px; }\n.wb-sd-table th:last-child { border-radius: 0 8px 8px 0; }\n.wb-sd-table td { padding: 8px; border-bottom: 1px dashed var(--wb-divider); vertical-align: top; }\n.wb-sd-table code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; white-space: nowrap; }\n.wb-sd-code { border-radius: 10px; overflow: hidden; background: #0F1722; color: #D7E1EE; }\n.wb-sd-code-bar { display: flex; align-items: center; justify-content: space-between; padding: 6px 8px 6px 12px; background: rgba(255,255,255,0.06); font-size: 11px; font-weight: 600; color: #9AA4B2; letter-spacing: 0.04em; text-transform: uppercase; }\n.wb-sd-code-bar .wb-m-ibtn { color: #9AA4B2; }\n.wb-sd-code-bar .wb-m-ibtn:hover { color: #fff; background: rgba(255,255,255,0.1); }\n.wb-sd-pre { margin: 0; padding: 12px 14px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; line-height: 1.55; white-space: pre; overflow: auto; max-height: 360px; }\n.wb-sd-pre-inline { background: transparent; padding: 6px 0 0; color: inherit; max-height: 200px; white-space: pre-wrap; }\n.wb-sd-codegroup-tabs { display: flex; gap: 4px; margin-bottom: 6px; }\n.wb-sd-codegroup-tab { padding: 4px 10px; border-radius: 6px; font-size: 12px; font-weight: 600; color: var(--wb-text-secondary); cursor: pointer; }\n.wb-sd-codegroup-tab:hover { background: var(--wb-action-hover); }\n.wb-sd-codegroup-tab-on { background: var(--wb-primary-a10); color: var(--wb-primary); }\n.wb-sd-details { border: 1px solid var(--wb-divider); border-radius: 10px; padding: 8px 12px; }\n.wb-sd-details summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--wb-text-secondary); padding: 4px 0; }\n.wb-sd-details[open] summary { margin-bottom: 8px; }\n.wb-sd-send { display: flex; flex-direction: column; gap: 8px; padding: 12px; border-radius: 12px; background: var(--wb-neutral); }\n.wb-sd-card { display: flex; flex-direction: column; gap: 12px; padding: 16px; border-radius: 16px; border: 1px solid var(--wb-divider); }\n.wb-sd-cardhead { display: flex; align-items: center; gap: 10px; font-size: 14px; }\n.wb-sd-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }\n`;function _createMdxContent(props){const{_MdxComponentBoundary}={..._provideComponents(),...props.components};if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsx(_MdxComponentBoundary,{name:`WorkflowBuilderApp`,children:_jsx(WorkflowBuilderApp,{deps:{WB_CSS,WB_LOCAL,makeWB,generated:{WORKFLOW_STEPS_OPTIONS,WORKFLOW_STEPS_DISABLED,WORKFLOW_MIN_STEPS,BOTTOM_PINNED_STEP_IDS,COUPLED_STEPS,COUPLED_PROPERTY_OVERRIDES,WORKFLOW_STEP_I18N_KEYS,WORKFLOW_STEP_DESCRIPTION_I18N_KEYS,WORKFLOW_STEP_TO_SERVICE_MAP,SERVICE_COSTS,SERVICE_TYPES,STEP_ICON_GRADIENTS,CUSTOM_FORM_FIELD_TYPES,CUSTOM_FORM_FIELD_TYPE_DEFAULT,CUSTOM_FORM_MAX_OPTIONS,AGE_RESTRICTION_COUNTRY_DATA,AGE_RESTRICTION_CATEGORIES,DEEP_AGE_METHODS,DEVICE_SIZES,VERIFY_COLORS,DEEPIDV_COLOR_PALETTE,ESIGN_OVERLAY_BASE_W,ESIGN_OVERLAY_BASES,E_SIGNATURE_FIELD_TYPES,ESIGN_TEMPLATE_DEFAULT_SIGNERS,ESIGN_MAX_SIGNERS,PROOFCALL_QUESTION_TEMPLATES,SERVICE_REGISTRY,WORKFLOW_STEP_TO_SERVICES,CANVAS,WORKFLOW_TEMPLATES,WORKFLOW_TEMPLATE_COLORS,QUESTIONNAIRE_TEMPLATES,INPUT_TYPE_LABELS,INPUT_TYPE_ICONS,OPTION_MARKERS,US_UNIVERSITIES,CA_UNIVERSITIES,COUNTRIES,JURISDICTIONS,COUNTRY_ID_TYPES_OPTIONS,COUNTRY_ID_TYPES_DEFAULT_VALUE,I18N_EN},makeUi,makeUtils,makeGeometry,makeStore,makePalette,makeListMode,makeMui,makeConfigPanel,makeSaveDialog,makeDnd,makeApp}})})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{WorkflowBuilderApp,makeApp,makeDnd,makeSaveDialog,makeConfigPanel,makeMui,makeListMode,makePalette,makeStore,makeGeometry,makeUtils,makeUi,I18N_EN,COUNTRY_ID_TYPES_DEFAULT_VALUE,COUNTRY_ID_TYPES_OPTIONS,JURISDICTIONS,COUNTRIES,CA_UNIVERSITIES,US_UNIVERSITIES,OPTION_MARKERS,INPUT_TYPE_ICONS,INPUT_TYPE_LABELS,QUESTIONNAIRE_TEMPLATES,WORKFLOW_TEMPLATE_COLORS,WORKFLOW_TEMPLATES,CANVAS,WORKFLOW_STEP_TO_SERVICES,SERVICE_REGISTRY,PROOFCALL_QUESTION_TEMPLATES,ESIGN_MAX_SIGNERS,ESIGN_TEMPLATE_DEFAULT_SIGNERS,E_SIGNATURE_FIELD_TYPES,ESIGN_OVERLAY_BASES,ESIGN_OVERLAY_BASE_W,DEEPIDV_COLOR_PALETTE,VERIFY_COLORS,DEVICE_SIZES,DEEP_AGE_METHODS,AGE_RESTRICTION_CATEGORIES,AGE_RESTRICTION_COUNTRY_DATA,CUSTOM_FORM_MAX_OPTIONS,CUSTOM_FORM_FIELD_TYPE_DEFAULT,CUSTOM_FORM_FIELD_TYPES,STEP_ICON_GRADIENTS,SERVICE_TYPES,SERVICE_COSTS,WORKFLOW_STEP_TO_SERVICE_MAP,WORKFLOW_STEP_DESCRIPTION_I18N_KEYS,WORKFLOW_STEP_I18N_KEYS,COUPLED_PROPERTY_OVERRIDES,COUPLED_STEPS,BOTTOM_PINNED_STEP_IDS,WORKFLOW_MIN_STEPS,WORKFLOW_STEPS_DISABLED,WORKFLOW_STEPS_OPTIONS,makeWB,WB_LOCAL,WB_CSS,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Workflow Builder","description":"Build a deepidv verification workflow visually — drag services in, order them, configure each step, and get the API calls needed to run it in your own integration","mode":"custom","href":"/workflow-builder"}}},"mdxSourceWithNoJs":{"compiledSource":"\"use strict\";const{jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];const WorkflowBuilderApp=()=>null;const makeApp=()=>null;const makeDnd=()=>null;const makeSaveDialog=()=>null;const makeConfigPanel=()=>null;const makeMui=()=>null;const makeListMode=()=>null;const makePalette=()=>null;const makeStore=()=>null;const makeGeometry=()=>null;const makeUtils=()=>null;const makeUi=()=>null;const I18N_EN=undefined;const COUNTRY_ID_TYPES_DEFAULT_VALUE=undefined;const COUNTRY_ID_TYPES_OPTIONS=undefined;const JURISDICTIONS=undefined;const COUNTRIES=undefined;const CA_UNIVERSITIES=undefined;const US_UNIVERSITIES=undefined;const OPTION_MARKERS=undefined;const INPUT_TYPE_ICONS=undefined;const INPUT_TYPE_LABELS=undefined;const QUESTIONNAIRE_TEMPLATES=undefined;const WORKFLOW_TEMPLATE_COLORS=undefined;const WORKFLOW_TEMPLATES=undefined;const CANVAS=undefined;const WORKFLOW_STEP_TO_SERVICES=undefined;const SERVICE_REGISTRY=undefined;const PROOFCALL_QUESTION_TEMPLATES=undefined;const ESIGN_MAX_SIGNERS=undefined;const ESIGN_TEMPLATE_DEFAULT_SIGNERS=undefined;const E_SIGNATURE_FIELD_TYPES=undefined;const ESIGN_OVERLAY_BASES=undefined;const ESIGN_OVERLAY_BASE_W=undefined;const DEEPIDV_COLOR_PALETTE=undefined;const VERIFY_COLORS=undefined;const DEVICE_SIZES=undefined;const DEEP_AGE_METHODS=undefined;const AGE_RESTRICTION_CATEGORIES=undefined;const AGE_RESTRICTION_COUNTRY_DATA=undefined;const CUSTOM_FORM_MAX_OPTIONS=undefined;const CUSTOM_FORM_FIELD_TYPE_DEFAULT=undefined;const CUSTOM_FORM_FIELD_TYPES=undefined;const STEP_ICON_GRADIENTS=undefined;const SERVICE_TYPES=undefined;const SERVICE_COSTS=undefined;const WORKFLOW_STEP_TO_SERVICE_MAP=undefined;const WORKFLOW_STEP_DESCRIPTION_I18N_KEYS=undefined;const WORKFLOW_STEP_I18N_KEYS=undefined;const COUPLED_PROPERTY_OVERRIDES=undefined;const COUPLED_STEPS=undefined;const BOTTOM_PINNED_STEP_IDS=undefined;const WORKFLOW_MIN_STEPS=undefined;const WORKFLOW_STEPS_DISABLED=undefined;const WORKFLOW_STEPS_OPTIONS=undefined;const makeWB=()=>null;const WB_LOCAL=undefined;const WB_CSS=undefined;function _createMdxContent(props){const{_MdxComponentBoundary}={..._provideComponents(),...props.components};if(!_MdxComponentBoundary)_missingMdxReference(`_MdxComponentBoundary`,true);return _jsx(_MdxComponentBoundary,{name:`WorkflowBuilderApp`,children:_jsx(WorkflowBuilderApp,{})})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{WorkflowBuilderApp,makeApp,makeDnd,makeSaveDialog,makeConfigPanel,makeMui,makeListMode,makePalette,makeStore,makeGeometry,makeUtils,makeUi,I18N_EN,COUNTRY_ID_TYPES_DEFAULT_VALUE,COUNTRY_ID_TYPES_OPTIONS,JURISDICTIONS,COUNTRIES,CA_UNIVERSITIES,US_UNIVERSITIES,OPTION_MARKERS,INPUT_TYPE_ICONS,INPUT_TYPE_LABELS,QUESTIONNAIRE_TEMPLATES,WORKFLOW_TEMPLATE_COLORS,WORKFLOW_TEMPLATES,CANVAS,WORKFLOW_STEP_TO_SERVICES,SERVICE_REGISTRY,PROOFCALL_QUESTION_TEMPLATES,ESIGN_MAX_SIGNERS,ESIGN_TEMPLATE_DEFAULT_SIGNERS,E_SIGNATURE_FIELD_TYPES,ESIGN_OVERLAY_BASES,ESIGN_OVERLAY_BASE_W,DEEPIDV_COLOR_PALETTE,VERIFY_COLORS,DEVICE_SIZES,DEEP_AGE_METHODS,AGE_RESTRICTION_CATEGORIES,AGE_RESTRICTION_COUNTRY_DATA,CUSTOM_FORM_MAX_OPTIONS,CUSTOM_FORM_FIELD_TYPE_DEFAULT,CUSTOM_FORM_FIELD_TYPES,STEP_ICON_GRADIENTS,SERVICE_TYPES,SERVICE_COSTS,WORKFLOW_STEP_TO_SERVICE_MAP,WORKFLOW_STEP_DESCRIPTION_I18N_KEYS,WORKFLOW_STEP_I18N_KEYS,COUPLED_PROPERTY_OVERRIDES,COUPLED_STEPS,BOTTOM_PINNED_STEP_IDS,WORKFLOW_MIN_STEPS,WORKFLOW_STEPS_DISABLED,WORKFLOW_STEPS_OPTIONS,makeWB,WB_LOCAL,WB_CSS,default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Workflow Builder","description":"Build a deepidv verification workflow visually — drag services in, order them, configure each step, and get the API calls needed to run it in your own integration","mode":"custom","href":"/workflow-builder"}}}},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"subdomain":"deep-identity-inc","siteName":"deepidv","title":"Workflow Builder - deepidv","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-13T18:16:24.461Z","originalFileLocation":"workflow-builder.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Build a deepidv verification workflow visually — drag services in, order them, configure each step, and get the API calls needed to run it in your own integration\">\u003cmeta data-mint-head name=\"application-name\" content=\"deepidv\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Workflow Builder - deepidv\">\u003cmeta data-mint-head property=\"og:description\" content=\"Build a deepidv verification workflow visually — drag services in, order them, configure each step, and get the API calls needed to run it in your own integration\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"deepidv\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.deepidv.com/workflow-builder\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://deep-identity-inc.mintlify.app/_mintlify/api/og/v2?division=Builder\u0026amp;title=Workflow+Builder\u0026amp;description=Build+a+deepidv+verification+workflow+visually+%E2%80%94+drag+services+in%2C+order+them%2C+configure+each+step%2C+and+get+the+API+calls+needed+to+run+it+in+your+own+integrati\u0026amp;theme=cec04f7f2a750fd70cf03541\u0026amp;signature=6ded295d7e9fce8d6f4f0054e1bf411115edc73f35dc0f08dac037adc13febcf\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Workflow Builder - deepidv\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Build a deepidv verification workflow visually — drag services in, order them, configure each step, and get the API calls needed to run it in your own integration\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://deep-identity-inc.mintlify.app/_mintlify/api/og/v2?division=Builder\u0026amp;title=Workflow+Builder\u0026amp;description=Build+a+deepidv+verification+workflow+visually+%E2%80%94+drag+services+in%2C+order+them%2C+configure+each+step%2C+and+get+the+API+calls+needed+to+run+it+in+your+own+integrati\u0026amp;theme=cec04f7f2a750fd70cf03541\u0026amp;signature=6ded295d7e9fce8d6f4f0054e1bf411115edc73f35dc0f08dac037adc13febcf\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/deep-identity-inc/VE_UqkkNisu8ZSTI/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"deepidv\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#1E7FE0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.deepidv.com/workflow-builder\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/workflow-builder.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.deepidv.com/#organization\",\"name\":\"deepidv\",\"url\":\"https://docs.deepidv.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/deep-identity-inc/iEa1biN40aTilpTP/logo/logo-full-black.svg?fit=max\u0026auto=format\u0026n=iEa1biN40aTilpTP\u0026q=85\u0026s=a577cb0e581db37558215bbd72f08dc6\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.deepidv.com#website\",\"name\":\"deepidv\",\"url\":\"https://docs.deepidv.com\",\"publisher\":{\"@id\":\"https://docs.deepidv.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.deepidv.com/workflow-builder#webpage\",\"url\":\"https://docs.deepidv.com/workflow-builder\",\"name\":\"Workflow Builder\",\"description\":\"Build a deepidv verification workflow visually — drag services in, order them, configure each step, and get the API calls needed to run it in your own integration\",\"dateModified\":\"2026-10-13T18:16:24.461Z\",\"isPartOf\":{\"@id\":\"https://docs.deepidv.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.deepidv.com/workflow-builder#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.deepidv.com/workflow-builder#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"deepidv\",\"item\":\"https://docs.deepidv.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Workflow Builder\",\"item\":\"https://docs.deepidv.com/workflow-builder\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.deepidv.com/workflow-builder#article\",\"headline\":\"Workflow Builder\",\"name\":\"Workflow Builder\",\"description\":\"Build a deepidv verification workflow visually — drag services in, order them, configure each step, and get the API calls needed to run it in your own integration\",\"url\":\"https://docs.deepidv.com/workflow-builder\",\"mainEntityOfPage\":{\"@id\":\"https://docs.deepidv.com/workflow-builder#webpage\"},\"dateModified\":\"2026-10-13T18:16:24.461Z\",\"publisher\":{\"@id\":\"https://docs.deepidv.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.deepidv.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"deepidv\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"deepidv","nav":{"global":{"anchors":[{"anchor":"API Reference","icon":"code","href":"/api-reference/sessions/create-session"},{"anchor":"Admin Console","icon":"layout-grid","href":"https://app.deepidv.com"},{"anchor":"Agent Skills","icon":"bot","href":"https://github.com/Deep-Identity-Inc/agent-skills"}]},"tabs":[{"tab":"Get Started","pages":[{"title":"Get Started","href":"/introduction"}]},{"tab":"API Reference","pages":[{"title":"API Reference","href":"/api-reference/openapi-spec"}]},{"tab":"Integrate / SDKs","pages":[{"title":"Integrate / SDKs","href":"/integrate/ai-agent-integration"}]},{"tab":"Chain Layer","pages":[{"title":"Chain Layer","href":"/chain-layer/overview"}]},{"tab":"Workflow Builder","groups":[{"group":"Builder","pages":[{"title":"Workflow Builder","mode":"custom","href":"/workflow-builder"}]}]}]},"title":"Workflow Builder - deepidv","buildId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","deploymentId":"dpl_849ArpqvBiCczQiT1Y1stNGpbqHT","dynamics":[],"chunks":[]}