idmission-web-sdk 1.0.20 → 1.0.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,2 +1,2 @@
1
- "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var tslib=require("tslib"),React=require("react"),ReactDOM=require("react-dom/client"),Sentry=require("@sentry/react"),i18n=require("i18next"),reactI18next=require("react-i18next"),LanguageDetector=require("i18next-browser-languagedetector"),styled=require("styled-components"),Ladda=require("ladda"),tf=require("@tensorflow/tfjs"),useResizeObserver=require("use-resize-observer"),tasksVision=require("@mediapipe/tasks-vision"),SignatureCanvas=require("react-signature-canvas");function _interopDefaultLegacy(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var n=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,n.get?n:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}var SubmissionAction,SubmissionStatus,React__default=_interopDefaultLegacy(React),React__namespace=_interopNamespace(React),ReactDOM__namespace=_interopNamespace(ReactDOM),Sentry__namespace=_interopNamespace(Sentry),i18n__default=_interopDefaultLegacy(i18n),LanguageDetector__default=_interopDefaultLegacy(LanguageDetector),styled__default=_interopDefaultLegacy(styled),Ladda__namespace=_interopNamespace(Ladda),tf__namespace=_interopNamespace(tf),useResizeObserver__default=_interopDefaultLegacy(useResizeObserver),SignatureCanvas__default=_interopDefaultLegacy(SignatureCanvas),webSdkVersion="1.0.20";function getPlatform(){return window.platform}!function(e){e.NONE="NONE",e.ENROLL="ENROLL",e.IDENTIFY="IDENTIFY",e.VALIDATE="VALIDATE",e.VERIFY="VERIFY"}(SubmissionAction||(SubmissionAction={})),function(e){e.READY="READY",e.SUBMITTING="SUBMITTING",e.SUBMITTED="SUBMITTED",e.FAILED="FAILED"}(SubmissionStatus||(SubmissionStatus={}));var submissionHosts={prod:"https://api.idmission.com",demo:"https://apidemo.idmission.com"},SubmissionContext=React.createContext({submit:function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(e){return[2,null]}))}))},submissionStatus:SubmissionStatus.READY,submissionRequest:null,submissionResponse:null,submissionError:null,submissionEnvironment:"prod",idFrontImage:null,idBackImage:null,passportImage:null,selfieImage:null,signatureData:null,signatureVideo:null,additionalDocuments:null,setIdFrontImage:function(){return null},setIdBackImage:function(){return null},setPassportImage:function(){return null},setSelfieImage:function(){return null},setSignatureData:function(){return null},setSignatureVideo:function(){return null},setAdditionalDocuments:function(){return null},logIdFrontCaptureAttempt:function(){return null},logIdBackCaptureAttempt:function(){return null},logSelfieCaptureAttempt:function(){return null},checkLiveness:function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(e){throw new Error("checkLiveness is not implemented")}))}))},retryLocationAccess:function(){return null}});function parseJwt(e){var t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),a=decodeURIComponent(window.atob(t).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""));return JSON.parse(a)}function determineSubmissionHost(e,t){if(t)switch(parseJwt(t).iss){case"https://auth.idmission.com/auth/realms/identity":return submissionHosts.prod;case"https://demoauth.idmission.com/auth/realms/identity":return submissionHosts.demo}var a=submissionHosts[e];if(!a)throw new Error("unrecognized SubmissionEnvironment ".concat(e));return a}function determineSubmissionEndpoint(e,t,a,n){var r=n?"v4":"v3";switch(e){case SubmissionAction.ENROLL:return"/".concat(r,t?"/customer/enroll":"/customer/enroll-biometrics");case SubmissionAction.IDENTIFY:return"/".concat(r,"/customer/identify");case SubmissionAction.VALIDATE:return"/".concat(r,a?"/customer/validate-id-match-face":"/customer/validate-id");case SubmissionAction.VERIFY:return"/".concat(r,"/customer/verify");default:throw new Error("unrecognized SubmissionAction ".concat(e))}}function liveCheckEndpoint(e){return"/".concat(e?"v4":"v3","/customer/live-check")}function apiHeaders(e){var t={"Content-Type":"application/json",Origin:"*"};return e&&(t.Authorization="Bearer ".concat(e)),t}function attachMetadataToRequest(e,t){var a=t.geolocationResult,n={selfie:t.selfieCaptureAttempts,front:t.idFrontCaptureAttempts,back:t.idBackCaptureAttempts,isRealIDCheckRequired:"false",sdkVersion:"WebSDK_".concat(webSdkVersion),Resolution:"".concat(window.innerWidth," x ").concat(window.innerHeight)},r=getPlatform();r&&(n.os=r.os.family,n.osVersion=r.os.version,n.browserVersion="".concat(r.name," ").concat(r.version)),a&&(n.GeoLocation=JSON.stringify(a)),e.additionalData.metadata=JSON.stringify(n)}function dataUrlToBase64(e){return tslib.__awaiter(this,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return[2,e.replace(/^data:image\/(png|jpeg);base64,/,"")]}))}))}function dataUrlToBase64Sync(e){return e.replace(/^data:.*;base64,/,"")}function contentDispositionFromDataUrl(e){var t,a;return null!==(a=null===(t=e.match(/^(data:.*;base64),/))||void 0===t?void 0:t[1])&&void 0!==a?a:""}var templateObject_1$c,PageContainerDiv=styled__default.default.div(templateObject_1$c||(templateObject_1$c=tslib.__makeTemplateObject(["\n position: fixed;\n top: 0;\n left: 0;\n width: var(--app-width);\n height: calc(\n var(--app-height) - ","px\n );\n overflow-x: hidden;\n overflow-y: auto;\n font-family:\n Inter,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Roboto,\n Oxygen,\n Ubuntu,\n Cantarell,\n Fira Sans,\n Droid Sans,\n Helvetica Neue,\n sans-serif;\n\n &.flex {\n display: flex;\n }\n\n &.padded {\n box-sizing: border-box;\n padding: 16px 24px;\n }\n"],["\n position: fixed;\n top: 0;\n left: 0;\n width: var(--app-width);\n height: calc(\n var(--app-height) - ","px\n );\n overflow-x: hidden;\n overflow-y: auto;\n font-family:\n Inter,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Roboto,\n Oxygen,\n Ubuntu,\n Cantarell,\n Fira Sans,\n Droid Sans,\n Helvetica Neue,\n sans-serif;\n\n &.flex {\n display: flex;\n }\n\n &.padded {\n box-sizing: border-box;\n padding: 16px 24px;\n }\n"])),(function(e){var t=e.$heightOffset;return null!=t?t:0})),PageContainer=React.forwardRef((function(e,t){var a=e.children,n=e.className,r=e.heightOffset,o=void 0===r?0:r,i=e.style,s=e.onClick,l=React.useState(!1),c=l[0],u=l[1];return React.useEffect((function(){u(!1);var e=function(){var e=document.documentElement;e.style.setProperty("--app-width","".concat(window.innerWidth,"px")),e.style.setProperty("--app-height","".concat(window.innerHeight,"px"))};return window.addEventListener("resize",e),e(),u(!0),function(){window.removeEventListener("resize",e)}}),[]),React__default.default.createElement(PageContainerDiv,{ref:t,style:i,onClick:s,className:n,$heightOffset:o},c&&a)}));PageContainer.displayName="PageContainer";var templateObject_1$b,templateObject_2$4,templateObject_3$3,templateObject_4$2,templateObject_1$a,DocumentType,documentDetectionModel,OverlayContainer=styled__default.default(PageContainer)(templateObject_1$b||(templateObject_1$b=tslib.__makeTemplateObject(["\n background: white;\n z-index: 10000;\n"],["\n background: white;\n z-index: 10000;\n"]))),OverlayInner=styled__default.default.div(templateObject_2$4||(templateObject_2$4=tslib.__makeTemplateObject(["\n text-align: center;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n padding: 25px;\n max-height: var(--app-height);\n height: 100%;\n box-sizing: border-box;\n"],["\n text-align: center;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n padding: 25px;\n max-height: var(--app-height);\n height: 100%;\n box-sizing: border-box;\n"]))),OverlayImageWrapper=styled__default.default.div(templateObject_3$3||(templateObject_3$3=tslib.__makeTemplateObject(["\n position: relative;\n display: flex;\n flex-grow: 1;\n padding-bottom: 25px;\n max-width: var(--app-width);\n max-height: var(--app-height);\n overflow: hidden;\n\n & > img {\n margin: 0 auto;\n width: max-content;\n max-width: 100%;\n max-height: 100%;\n aspect-ratio: initial;\n object-fit: contain;\n display: block;\n }\n"],["\n position: relative;\n display: flex;\n flex-grow: 1;\n padding-bottom: 25px;\n max-width: var(--app-width);\n max-height: var(--app-height);\n overflow: hidden;\n\n & > img {\n margin: 0 auto;\n width: max-content;\n max-width: 100%;\n max-height: 100%;\n aspect-ratio: initial;\n object-fit: contain;\n display: block;\n }\n"]))),OverlayImageMultiContainer=styled__default.default.div(templateObject_4$2||(templateObject_4$2=tslib.__makeTemplateObject(["\n display: flex;\n margin: auto;\n\n & > div {\n max-height: calc(100vh - 320px);\n\n & > img {\n width: 100%;\n max-height: 100%;\n height: auto;\n object-fit: contain;\n }\n }\n"],["\n display: flex;\n margin: auto;\n\n & > div {\n max-height: calc(100vh - 320px);\n\n & > img {\n width: 100%;\n max-height: 100%;\n height: auto;\n object-fit: contain;\n }\n }\n"]))),LoaderButton=function(e){var t=e.children,a=e.colors,n=void 0===a?{}:a,r=e.disabled,o=e.finished,i=e.onClick,s=e.style,l=React.useRef(null),c=React.useRef(null);return n.backgroundColor||(n.backgroundColor="#16a085"),n.textColor||(n.textColor="white"),n.loadingBackgroundColor||(n.loadingBackgroundColor="gray"),n.loadingTextColor||(n.loadingTextColor="white"),React.useEffect((function(){if(l.current){c.current=Ladda__namespace.create(l.current),c.current.start();var e=0,t=setInterval((function(){var t;e<.9&&(e+=.1),null===(t=c.current)||void 0===t||t.setProgress(e)}),250);return function(){var e;null===(e=c.current)||void 0===e||e.remove(),clearInterval(t)}}}),[]),React.useEffect((function(){var e;o&&(null===(e=c.current)||void 0===e||e.stop())}),[o]),React__default.default.createElement(StyledButton,{className:"ladda-button","data-style":"expand-right",disabled:r,ref:l,onClick:i,$backgroundColor:n.backgroundColor,$textColor:n.textColor,$disabledBackgroundColor:n.loadingBackgroundColor,$disabledTextColor:n.loadingTextColor,style:s},React__default.default.createElement("span",{className:"ladda-label"},t))},StyledButton=styled__default.default.button(templateObject_1$a||(templateObject_1$a=tslib.__makeTemplateObject(["\n border-radius: 0;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n text-transform: none;\n -webkit-appearance: button;\n\n &:not(:disabled),\n &[type='button']:not(:disabled),\n &[type='reset']:not(:disabled),\n &[type='submit']:not(:disabled) {\n cursor: pointer;\n }\n\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15),\n 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem\n rgba(var(--bs-btn-focus-shadow-rgb), 0.5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n transition:\n color 0.15s ease-in-out,\n background-color 0.15s ease-in-out,\n border-color 0.15s ease-in-out,\n box-shadow 0.15s ease-in-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &:hover {\n filter: brightness(1.15);\n }\n\n &:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n }\n\n &:disabled,\n &.disabled,\n fieldset:disabled & {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n }\n\n --bs-btn-color: ",";\n --bs-btn-bg: ",";\n --bs-btn-border-color: ",";\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: ",";\n --bs-btn-disabled-bg: ",";\n --bs-btn-disabled-border-color: ",";\n\n --bs-btn-padding-y: 14px;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 18px;\n --bs-btn-border-radius: 4px;\n"],["\n border-radius: 0;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n text-transform: none;\n -webkit-appearance: button;\n\n &:not(:disabled),\n &[type='button']:not(:disabled),\n &[type='reset']:not(:disabled),\n &[type='submit']:not(:disabled) {\n cursor: pointer;\n }\n\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15),\n 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem\n rgba(var(--bs-btn-focus-shadow-rgb), 0.5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n transition:\n color 0.15s ease-in-out,\n background-color 0.15s ease-in-out,\n border-color 0.15s ease-in-out,\n box-shadow 0.15s ease-in-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &:hover {\n filter: brightness(1.15);\n }\n\n &:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n }\n\n &:disabled,\n &.disabled,\n fieldset:disabled & {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n }\n\n --bs-btn-color: ",";\n --bs-btn-bg: ",";\n --bs-btn-border-color: ",";\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: ",";\n --bs-btn-disabled-bg: ",";\n --bs-btn-disabled-border-color: ",";\n\n --bs-btn-padding-y: 14px;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 18px;\n --bs-btn-border-radius: 4px;\n"])),(function(e){var t=e.$textColor;return null!=t?t:"#fff"}),(function(e){var t=e.$backgroundColor;return null!=t?t:"#0d6efd"}),(function(e){var t=e.$backgroundColor;return null!=t?t:"#0d6efd"}),(function(e){var t=e.$disabledTextColor;return null!=t?t:"#fff"}),(function(e){var t=e.$disabledBackgroundColor;return null!=t?t:"#0d6efd"}),(function(e){var t=e.$disabledBackgroundColor;return null!=t?t:"#0d6efd"})),GeolocationAccessDeniedOverlay=function(e){var t=e.accessBlockedImageUrl,a=reactI18next.useTranslation().t,n=React.useContext(SubmissionContext).retryLocationAccess;return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement("div",{style:{display:"flex",height:"100%"}},React__default.default.createElement(OverlayInner,{style:{maxWidth:500,height:"auto",margin:"auto"}},React__default.default.createElement(OverlayImageWrapper,{style:{flexGrow:0}},React__default.default.createElement("img",{src:t,alt:""})),React__default.default.createElement("h3",null,a("Your location access is disabled")),React__default.default.createElement("p",{style:{lineHeight:1.5,marginBottom:50}},a("This application requires access to your location to continue. Please accept the permission once prompted by the browser. If the browser does not prompt for location permissions, you must go to settings and provide location access to the current browser.")),React__default.default.createElement(LoaderButton,{onClick:n,style:{width:200,marginLeft:"auto",marginRight:"auto"},finished:!0},a("Retry")))))},SubmissionError=function(e){function t(t){var a=e.call(this,t.statusMessage)||this;return a.status=t,a}return tslib.__extends(t,e),t}(Error),NetworkError=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return tslib.__extends(t,e),t}(Error),SubmissionErrorOverlay=function(e){var t=e.error;return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,{style:{justifyContent:"center"}},t instanceof NetworkError?React__default.default.createElement(NetworkErrorContent,{error:t,onRetry:e.onRetry}):React__default.default.createElement(SubmissionErrorContent,{error:t})))},SubmissionErrorContent=function(e){var t=e.error,a=(0,reactI18next.useTranslation().t)("We're sorry, an unexpected error has occurred.");return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("h3",{style:{marginBottom:8}},a),t.status.statusCode&&React__default.default.createElement("p",{style:{marginBottom:0}},React__default.default.createElement("code",null,"Status: ",t.status.statusCode)),React__default.default.createElement("p",{style:{marginBottom:0}},"Message: ",React__default.default.createElement("code",null,t.message)),t.status.errorData&&React__default.default.createElement("p",{style:{marginBottom:0}},"Data: ",React__default.default.createElement("code",null,t.status.errorData)))},NetworkErrorContent=function(e){var t=e.onRetry,a=reactI18next.useTranslation().t,n=a("Network unreachable"),r=a("We're having trouble reaching our services, please check your connection and try again."),o=a("Retry");return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("h3",{style:{marginBottom:8}},n),React__default.default.createElement("p",{style:{marginBottom:0}},r),t&&React__default.default.createElement("div",{style:{marginTop:32}},React__default.default.createElement(LoaderButton,{colors:{backgroundColor:"#ea8557"},finished:!0,onClick:t},o)))},SubmissionProvider=function(e){var t=e.action,a=e.children,n=e.url,r=e.environment,o=void 0===r?"prod":r,i=e.token,s=e.companyId,l=e.enrollmentId,c=e.personalData,u=e.cardData,d=e.manualReviewRequired,f=void 0!==d&&d,m=e.verifyIdWithExternalDatabases,p=void 0!==m&&m,g=e.deduplicationEnabled,h=void 0!==g&&g,b=e.deduplicationSynchronous,v=void 0!==b&&b,_=e.geolocationEnabled,y=void 0===_||_,R=e.geolocationRequired,C=void 0!==R&&R,S=e.webhooksEnabled,E=void 0!==S&&S,T=e.webhooksClientTraceId,w=e.webhooksStripSpecialCharacters,x=void 0===w||w,I=e.onBeforeSubmit,k=e.onResponseReceived,D=e.onRequestFailure,A=React.useState(SubmissionStatus.READY),M=A[0],F=A[1],B=React.useState(null),O=B[0],N=B[1],L=React.useState(null),P=L[0],U=L[1],G=React.useState(null),$=G[0],V=G[1],j=React.useState(null),z=j[0],q=j[1],W=React.useState(null),H=W[0],K=W[1],Y=React.useState(null),X=Y[0],J=Y[1],Z=React.useState(null),Q=Z[0],ee=Z[1],te=React.useState(null),ae=te[0],ne=te[1],re=React.useState(null),oe=re[0],ie=re[1],se=React.useState(null),le=se[0],ce=se[1],ue=React.useState(null),de=ue[0],fe=ue[1],me=React.useState(null),pe=me[0],ge=me[1],he=React.useState(0),be=he[0],ve=he[1],_e=React.useState(!1),ye=_e[0],Re=_e[1],Ce=React.useState([]),Se=Ce[0],Ee=Ce[1],Te=React.useState([]),we=Te[0],xe=Te[1],Ie=React.useState([]),ke=Ie[0],De=Ie[1],Ae=React.useCallback((function(e){Ee((function(t){return tslib.__spreadArray(tslib.__spreadArray([],t,!0),[e],!1)}))}),[]),Me=React.useCallback((function(e){xe((function(t){return tslib.__spreadArray(tslib.__spreadArray([],t,!0),[e],!1)}))}),[]),Fe=React.useCallback((function(e){De((function(t){return tslib.__spreadArray(tslib.__spreadArray([],t,!0),[e],!1)}))}),[]),Be=React.useCallback((function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){var e,a,r,d,m,g,b,_,y,R,C,S;return tslib.__generator(this,(function(w){switch(w.label){case 0:if(t===SubmissionAction.NONE)return e={status:{statusCode:"000"},resultData:{}},F(SubmissionStatus.SUBMITTED),U(e),[2,e];F(SubmissionStatus.SUBMITTING),w.label=1;case 1:return w.trys.push([1,8,,9]),a={securityData:{userName:"",password:"",merchantId:0},customerData:{idData:{idType:"NSP",idCountry:"NSP",idState:""}},additionalData:{uniqueRequestId:(new Date).getTime().toString(),manualReviewRequired:f?"Y":"N",bypassAgeValidation:"N",deDuplicationRequired:h?"Y":"N",bypassNameMatching:"Y",postDataAPIRequired:E?"Y":"N",sendInputImagesInPost:"N",sendProcessedImagesInPost:"N",needImmediateResponse:"N",deduplicationSynchronous:v?"Y":"N",verifyDataWithHost:p?"Y":"N",idBackImageRequired:"N",stripSpecialCharacters:x?"Y":"N",idImageResolutionCheck:"Y"}},H&&(a.customerData.idData.idImageFront=H),X&&(a.customerData.idData.idImageBack=X),Q&&(a.customerData.idData.idImageFront=Q),ae&&(t===SubmissionAction.IDENTIFY?a.biometricData={selfie:ae}:a.customerData.biometricData={selfie:ae}),s&&(a.employee={companyId:s}),c&&(a.customerData.personalData=c),u&&(a.customerData.cardData=u),l&&((S=a.customerData).personalData||(S.personalData={}),a.customerData.personalData.uniqueNumber=l),T&&(a.additionalData.clientTraceId=T),oe&&(a.customerData.signatureData={signatureImage:JSON.stringify(oe)}),de&&(a.customerData.additionalDocuments=de.map((function(e){return tslib.__assign(tslib.__assign({},e),{additionalDocument:JSON.stringify(tslib.__assign(tslib.__assign({},e.additionalDocument),{uniqueId:a.additionalData.uniqueRequestId}))})}))),attachMetadataToRequest(a,{selfieCaptureAttempts:ke,idFrontCaptureAttempts:Se,idBackCaptureAttempts:we,geolocationResult:pe}),I?[4,I(a)]:[3,3];case 2:(r=w.sent())&&(a=r),w.label=3;case 3:return d=n||determineSubmissionHost(o,i),m=determineSubmissionEndpoint(t,!!(H||X||Q),!!ae,!!i),[4,fetch(d+m,{method:"POST",headers:apiHeaders(i),body:JSON.stringify(a)}).catch((function(e){throw new NetworkError(e.message)}))];case 4:return(g=w.sent())&&g.ok?[3,6]:[4,null==g?void 0:g.text()];case 5:if(!(b=w.sent())||"Load failed"===b)throw new NetworkError(b);throw new SubmissionError({statusCode:null!==(C=null==g?void 0:g.statusText)&&void 0!==C?C:"???",statusMessage:b});case 6:return[4,g.json()];case 7:if("000"!==(_=w.sent()).status.statusCode)throw new SubmissionError(_.status);return N(a),U(_),F(SubmissionStatus.SUBMITTED),null==k||k(_),[2,_];case 8:throw y=w.sent(),R=y,F(SubmissionStatus.FAILED),V(y instanceof SubmissionError||y instanceof NetworkError?y:"Load failed"===R.message?new NetworkError:new SubmissionError({statusCode:"",statusMessage:R.message})),q((function(){return["VERIFY","IDENTIFY"].includes(t)?function(){return null}:Be})),null==D||D(R),R;case 9:return[2]}}))}))}),[t,de,u,s,h,v,l,o,pe,we,X,Se,H,f,I,D,k,Q,c,ke,ae,oe,i,n,p,T,E,x]),Oe=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t,a,r,s,l,c,u,d,f,m,p;return tslib.__generator(this,(function(g){switch(g.label){case 0:return g.trys.push([0,6,,7]),f={securityData:{userName:"",password:"",merchantId:0}},m={},p={},[4,dataUrlToBase64(e)];case 1:return f.customerData=(m.biometricData=(p.selfie=g.sent(),p),m),f.additionalData={uniqueRequestId:(new Date).getTime().toString(),stripSpecialCharacters:"Y",estimateAge:"N",predictGender:"N"},attachMetadataToRequest(t=f,{selfieCaptureAttempts:ke,idFrontCaptureAttempts:Se,idBackCaptureAttempts:we,geolocationResult:pe}),a=n||determineSubmissionHost(o,i),r=liveCheckEndpoint(!!i),[4,fetch(a+r,{method:"POST",headers:apiHeaders(i),body:JSON.stringify(t)}).catch((function(e){throw new NetworkError(e.message)}))];case 2:return(s=g.sent()).ok?[3,4]:[4,s.text()];case 3:if(!(l=g.sent())||"Load failed"===l)throw new NetworkError(l);throw new SubmissionError({statusCode:s.statusText,statusMessage:l});case 4:return[4,s.json()];case 5:if("000"!==(c=g.sent()).status.statusCode)throw new SubmissionError(c.status);return U(c),[2,c];case 6:throw u=g.sent(),d=u,F(SubmissionStatus.FAILED),V(u instanceof SubmissionError||u instanceof NetworkError?u:"Load failed"===d.message?new NetworkError:new SubmissionError({statusCode:"",statusMessage:d.message})),q((function(){return function(){return null}})),null==D||D(d),d;case 7:return[2]}}))}))}),[o,pe,we,Se,D,ke,i,n]),Ne=React.useCallback((function(){ve((function(e){return e+1}))}),[]);React.useEffect((function(){y&&(console.log("making geolocation attempt",be),navigator.geolocation.getCurrentPosition((function(e){ge(e),Re(!1)}),(function(e){if(1!==e.code)throw new Error(e.message);Re(!0)})))}),[be,y,C]);var Le=React.useCallback((function(){z&&(V(null),F(SubmissionStatus.READY),z())}),[z]);return React__default.default.createElement(SubmissionContext.Provider,{value:{submit:Be,submissionStatus:M,submissionRequest:O,submissionResponse:P,submissionError:$,submissionEnvironment:o,idFrontImage:H,idBackImage:X,passportImage:Q,selfieImage:ae,signatureData:oe,signatureVideo:le,additionalDocuments:de,setIdFrontImage:K,setIdBackImage:J,setPassportImage:ee,setSelfieImage:ne,setSignatureData:ie,setSignatureVideo:ce,setAdditionalDocuments:fe,logIdFrontCaptureAttempt:Ae,logIdBackCaptureAttempt:Me,logSelfieCaptureAttempt:Fe,checkLiveness:Oe,retryLocationAccess:Ne}},C&&ye?React__default.default.createElement(GeolocationAccessDeniedOverlay,null):a,$&&React__default.default.createElement(SubmissionErrorOverlay,{error:$,onRetry:Le}))};function loadDocumentDetectionModel(e){return tslib.__awaiter(this,void 0,void 0,(function(){var t,a,n,r,o,i;return tslib.__generator(this,(function(s){switch(s.label){case 0:return documentDetectionModel?[2,documentDetectionModel]:[4,tf__namespace.loadGraphModel(e)];case 1:return documentDetectionModel=s.sent(),[4,tf__namespace.ready()];case 2:return s.sent(),t=tf__namespace.zeros([448,448,3]),a=tf__namespace.cast(t,"int32"),n=tf__namespace.tensor4d(Array.from(a.dataSync()),[1,448,448,3]),r=tf__namespace.cast(n,"int32"),i=(o=tf__namespace).dispose,[4,documentDetectionModel.executeAsync(r)];case 3:return i.apply(o,[s.sent()]),a.dispose(),r.dispose(),n.dispose(),tf__namespace.dispose(t),[2,documentDetectionModel]}}))}))}function unloadDocumentDetectionModel(){documentDetectionModel=null}!function(e){e.NONE="NONE",e.ID_CARD="ID_CARD",e.ID_CARD_FRONT="ID_CARD_FRONT",e.ID_CARD_BACK="ID_CARD_BACK",e.PASSPORT="PASSPORT"}(DocumentType||(DocumentType={}));var labelMap={1:"Document",2:"MRZ",3:"PDF417",4:"Primary face",5:"Secondary face",6:"Glare",7:"Punch Hole",8:"Passport Page"};function bboxToDetectedObjectUnscaled(e,t,a){var n=e[0],r=e[1];return{score:t,bbox:[r,n,e[3]-r,e[2]-n],label:labelMap[a]}}window.OffscreenCanvas||(window.OffscreenCanvas=function(e,t){var a=this;return this.canvas=document.createElement("canvas"),this.canvas.width=e,this.canvas.height=t,this.canvas.convertToBlob=function(){return new Promise((function(e){a.canvas.toBlob(e)}))},this.canvas});var GuideOrientationContext=React.createContext({orientation:"landscape",wrapperWidth:1,wrapperHeight:1,wrapperAspectRatio:0,imageAspectRatio:0,wrapperRef:null,setDimensions:function(){return null},onImageLoaded:function(){return null}});function _isNavigatorDefined(){return"undefined"!=typeof navigator&&null!=navigator}let isMobileMockValue;function isMobile(e){if(void 0!==isMobileMockValue)return isMobileMockValue;if(e||_isNavigatorDefined()){if(e||(e=navigator),"ReactNative"===e.product)return!0;const t=e.userAgent||e.vendor||("undefined"!=typeof window?window.opera:"");if(!t){return e.userAgentData&&e.userAgentData.mobile}return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))}return!1}function isBrowser(){return"undefined"!=typeof window&&null!=window.document||"undefined"!=typeof WorkerGlobalScope}var DocumentCaptureGuideOverlay=function(e){var t=e.width,a=void 0===t?0:t,n=e.height,r=void 0===n?0:n,o=e.padding,i=void 0===o?isMobile()?0:50:o,s=e.borderWidth,l=void 0===s?4:s,c=e.borderColor,u=void 0===c?"white":c,d=e.isMirrored,f=void 0!==d&&d,m=e.instruction,p=void 0===m?"":m,g=e.portraitGuidesImageUrl,h=e.landscapeGuidesImageUrl,b=e.onClick,v=React.useContext(GuideOrientationContext),_=v.orientation,y=v.wrapperRef,R=v.wrapperWidth,C=v.wrapperHeight,S=v.imageAspectRatio,E=v.wrapperAspectRatio,T=v.onImageLoaded,w=v.setDimensions;0==a&&(a=R),0==r&&(r=C),React.useEffect((function(){w({width:a,height:r})}),[r,w,a]);var x={height:C-2*i-2*l};return S>=E&&(x={width:R-2*i-2*l}),React__default.default.createElement(PageContainer,{ref:y,onClick:b,style:{zIndex:1e3}},React__default.default.createElement("div",{style:{display:"flex",flexFlow:"column nowrap",height:"100%"}},React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},""!==p&&React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12}},p)),React__default.default.createElement("div",{style:{position:"relative",display:"flex",flexFlow:"row nowrap",alignItems:"center",justifyItems:"center",maxWidth:"calc(100%)",maxHeight:"calc(100% - ".concat(2*i,"px - ").concat(2*l,"px)")}},React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",minWidth:i,flexGrow:1}}),React__default.default.createElement("div",{style:{transform:f?"scaleX(-1)":"",border:"".concat(l,"px solid ").concat(u),maxWidth:"calc(100% - ".concat(2*i,"px - ").concat(2*l,"px)"),maxHeight:r-2*i-2*l}},React__default.default.createElement("img",{src:"portrait"===_?g:h,alt:"",onLoad:T,style:tslib.__assign({},x)})),React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",minWidth:i,flexGrow:1}})),React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},""!==p&&React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12,opacity:0}},p))))};function getNativeBarcodeReaderResult(e){return tslib.__awaiter(this,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return"BarcodeDetector"in window?(t=new BarcodeDetector({formats:["pdf417"]}),console.log("this is a real native result!"),[4,t.detect(e)]):[2,[]];case 1:return[2,a.sent()]}}))}))}function getZxingBarcodeReaderResult(e,t){return void 0===t&&(t=!1),tslib.__awaiter(this,void 0,void 0,(function(){var a,n,r,o,i,s,l,c,u;return tslib.__generator(this,(function(d){switch(d.label){case 0:return[4,new Promise((function(i){if(r=e.naturalWidth,o=e.naturalHeight,a=document.createElement("canvas"),!(n=a.getContext("2d")))return[];if(t){console.log("rotating!!"),a.width=o,a.height=r,n.setTransform(0,1,-1,0,a.width,0),n.drawImage(e,0,0,r,o);var s=new Image;s.width=a.width,s.height=a.height,s.onload=function(){i(s)},a.toBlob((function(e){e&&(s.src=URL.createObjectURL(e))}))}else n.drawImage(e,0,0,a.width,a.height),i(e)}))];case 1:return i=d.sent(),s=new ZXing.BitmapLuminanceSource(n,i),l=new ZXing.Common.HybridBinarizer(s),c=new ZXing.BinaryBitmap(l),u=ZXing.PDF417.PDF417Reader.decode(c,null,!1),n.clearRect(0,0,a.width,a.height),a.remove(),[2,u]}}))}))}function supportsNativeBarcodeScanning(){return"BarcodeDetector"in window}function scanBarcode(e,t){var a=this;return new Promise((function(n){var r=new Image;r.onload=function(){return tslib.__awaiter(a,void 0,void 0,(function(){var e,a,o,i;return tslib.__generator(this,(function(s){switch(s.label){case 0:return supportsNativeBarcodeScanning()?[4,getNativeBarcodeReaderResult(r)]:[3,2];case 1:return a=s.sent(),console.log("native result",a,"".concat(r.width,"x").concat(r.height)),n(a.length>0?tslib.__assign(tslib.__assign({},a[0]),{Source:"native"}):null),[3,4];case 2:return e=(null!==(o=null==t?void 0:t[2])&&void 0!==o?o:0)<(null!==(i=null==t?void 0:t[3])&&void 0!==i?i:0),[4,getZxingBarcodeReaderResult(r,e)];case 3:a=s.sent(),console.log("zxing result",a),n(a.length>0?tslib.__assign(tslib.__assign({},a[0]),{Source:"zxing"}):null),s.label=4;case 4:return[2]}}))}))},r.src=URL.createObjectURL(e)}))}function getBlobDimensions(e){return new Promise((function(t){var a=new Image;a.onload=function(){t([a.naturalWidth,a.naturalHeight])},a.src=URL.createObjectURL(e)}))}function iOS(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}function wideAngleIsBetter(){if(!iOS())return!1;var e=smallerSideIos(),t=window.screen.width*window.devicePixelRatio,a=window.screen.height*window.devicePixelRatio;return 1179==t&&2556==a||1290==t&&2796==a&&(393==e||430==e)}function smallerSideIos(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height}function listAvailableCameras(e){return tslib.__awaiter(this,void 0,void 0,(function(){var t,a;return tslib.__generator(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,navigator.mediaDevices.getUserMedia({video:{facingMode:{exact:e}},audio:!1})];case 1:return t=n.sent(),[3,3];case 2:return n.sent(),[2,[]];case 3:return[4,navigator.mediaDevices.enumerateDevices()];case 4:return a=n.sent().filter((function(e){return"videoinput"===e.kind})),t.getVideoTracks().forEach((function(e){e.enabled=!1,e.stop()})),t=null,[2,a]}}))}))}var currentCamera,frontLabels=["front","avant","anteriore","cameraaanvoorzijde","kamerapåframsidan","forsidekamera","kamerapåforsiden","aparatprzedni","etukamera","kameradepan","ÖnKamera","cameramặttrước","camerăfață","prednákamera","prednjakamera","előlapikamera","přednífotoaparát","μπροστινήκάμερα","переднякамера","передняякамера","преднакамера","алдыңғыкамера","מצלמה קדמית","الكاميرا الأمامية","फ़्रंटकैमरा","前置相机","前置鏡頭","前面カメラ","전면카메라","กล้องด้านหน้า"].map((function(e){return e.toLocaleLowerCase().split(" ").join("")})),rearLabels=["back","rear","posterior","trasera","traseira","arrière","rückkamera","fotocamera(posteriore)","cameraaanachterzijde","kamerapåbaksidan","kamerapåbaksiden","bagsidekamera","aparattylny","takakamera","arkakamera","kamerabelakang","cameramặtsau","camerăspate","stražnjakamera","zadnákamera","hátoldalikamera","zadnífotoaparát","πίσωκάμερα","заднякамера","Задняякамера","заднакамера","артқыкамера","מצלמה אחורית","الكاميرا الخلفية","बैककैमरा","后置相机","後置鏡頭","背面カメラ","후면카메라","กล้องด้านหลัง"].map((function(e){return e.toLocaleLowerCase().split(" ").join("")})),backUltraWideLabels=["backultrawidecamera","ultraampliaposterior","ultra-angulartraseira","ultragrandeangulartraseira","ultragrandangle","ultragranangular","ultra-weitwinkelkamera","ultra-grandangolo","ultrabredecameraaanachterzijde","ultravidvinkelkamerapåbaksidan","ultravidvinkelkameraetpåbagsiden","ultravidvinkelkamerabak","ultragenişkameraarkayüzü","ultralaajakulmainentakakamera","tylnyaparatultraszerokokątny","cameracựcrộngmặtsau","camerăcuobiectivultra‑superangularspate","ultraszéleslátószögűkamera","kameraultralebarbelakang","stražnjaultraširokakamera","zadníultraširokoúhlýfotoaparát","ultraširokouhlá","πίσωυπερευρείακάμερα","заднянадширококутнакамера","Задняясверхширокоугольнаякамера","Задна свръх широкоъгълна камера","артқыультракеңбұрыштыкамера","מצלמה אולטרה רחבה אחורית","كاميرا خلفية عريضة جدًا","बैकअल्ट्रावाइडकैमरा","后置超广角相机","後置超廣角鏡頭相機","背面超広角カメラ","후면울트라와이드카메라","กล้องด้านหลังอัลตร้าไวด์"].map((function(e){return e.toLocaleLowerCase().split(" ").join("")})),labelMatches=function(e,t){var a=e instanceof MediaDeviceInfo?getDeviceLabel(e):e;return("string"==typeof t?[t]:t).some((function(e){return a.includes(e)}))},getDeviceLabel=function(e){return e.label.toLocaleLowerCase().split(" ").join("")};function obtainCameraAccess(e,t,a){releaseCameraAccess(),console.log("obtaining camera access...");var n=e.getVideoTracks()[0].getSettings(),r=n.width,o=n.height,i=t.toLocaleLowerCase().split(" ").join(""),s=labelMatches(i,tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray([],rearLabels,!0),backUltraWideLabels,!0),["iphone"],!1));return r||(r=0),o||(o=0),currentCamera={label:t,stream:e,width:r,height:o,isRearFacing:s,release:function(){e.getTracks().forEach((function(e){e.enabled=!1,e.stop()})),a&&(a.pause(),a.srcObject=null,a.src="")}},a&&(a.srcObject=e),currentCamera}function releaseCameraAccess(){currentCamera&&(console.log("releasing camera access..."),currentCamera.release(),currentCamera=void 0)}var focusModel,useHighestResCaptureDevice=function(e){var t=void 0===e?{preferFrontFacingCamera:!1,preferContinuityCamera:!0,requestMicrophoneAccess:!1}:e,a=t.preferFrontFacingCamera,n=void 0!==a&&a,r=t.preferContinuityCamera,o=void 0===r||r,i=t.requestMicrophoneAccess,s=void 0!==i&&i,l=React.useRef(null),c=React.useRef(null),u=React.useState(null),d=u[0],f=u[1],m=React.useState(!1),p=m[0],g=m[1],h=React.useState(null),b=h[0],v=h[1],_=React.useState(!1),y=_[0],R=_[1],C=React.useState(o),S=C[0],E=C[1],T=React.useState(!1),w=T[0],x=T[1],I=React.useState(!1),k=I[0],D=I[1];React.useEffect((function(){console.log("iphone continuity camera allowed changed",S),releaseCameraAccess(),c.current=null,g(!1)}),[S]);var A=React.useCallback((function(){D(!1)}),[]);React.useEffect((function(){k||listAvailableCameras().then((function(e){var t,a=getPlatform();if(!(w||a&&"OS X"!==a.os.family)){var r=e.find((function(e){return labelMatches(e,"iphone")}));R(!!r),r&&S&&(t=r)}n&&(t=e.find((function(e){return labelMatches(e,frontLabels)}))),wideAngleIsBetter()?t||(t=e.find((function(e){return labelMatches(e,backUltraWideLabels)}))):t||(t=e.find((function(e){return labelMatches(e,rearLabels)&&!labelMatches(e,backUltraWideLabels)}))),t||(t=e.find((function(e){return labelMatches(e,rearLabels)}))),!n&&"iOS"===(null==a?void 0:a.os.family)&&e.length>0&&(t||(t=e[1])),t||(t=e[0]),f(t)})).catch((function(e){if("NotAllowedError"!==e.name)throw e;console.error("camera access has been blocked by the user",e),D(!0)}))}),[k,S,w,n]),React.useEffect((function(){var e;if(d){var t=function(){releaseCameraAccess(),c.current=null,g(!1)};return(null===(e=navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia)?(tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a;return tslib.__generator(this,(function(n){switch(n.label){case 0:e=null,n.label=1;case 1:return n.trys.push([1,3,,4]),[4,navigator.mediaDevices.getUserMedia({audio:s,video:{deviceId:{exact:d.deviceId},width:{ideal:1920},aspectRatio:1.777777778}})];case 2:return e=n.sent(),[3,4];case 3:return"NotAllowedError"===n.sent().name?(S?(R(!1),x(!0)):D(!0),[2]):[3,4];case 4:if(e)return[3,8];n.label=5;case 5:return n.trys.push([5,7,,8]),[4,navigator.mediaDevices.getUserMedia({audio:!1,video:!0})];case 6:return e=n.sent(),console.log("opened stream with no width and height constraints"),[3,8];case 7:return n.sent(),console.log("cannot open stream at all"),[3,8];case 8:if(!e)throw new Error("failed to open camera");return t=function(){y&&S?(console.log("someone unplugged the continuity camera"),releaseCameraAccess(),c.current=null,R(!1),x(!0),v(null),f(null)):(console.log("someone unplugged the webcam"),releaseCameraAccess(),c.current=null,g(!1),D(!0),v(null))},null===(a=l.current)||void 0===a||a.addEventListener("ended",t),e.getVideoTracks().forEach((function(e){e.onended=t})),c.current=obtainCameraAccess(e,d.label,l.current),[2]}}))})),t):t}}),[S,y,s,d]),React.useEffect((function(){v(null),p&&tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a,n;return tslib.__generator(this,(function(r){return(e=(null!==(n=null===(a=null===(t=c.current)||void 0===t?void 0:t.stream)||void 0===a?void 0:a.getVideoTracks())&&void 0!==n?n:[])[0])?(v(new ImageCapture(e)),[2]):[2]}))}))}),[p]);var M=React.useCallback((function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(e){switch(e.label){case 0:return b?[4,b.grabFrame()]:[2,null];case 1:return[2,e.sent()]}}))}))}),[b]),F=React.useCallback((function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a,n,r;return tslib.__generator(this,(function(o){switch(o.label){case 0:return e=document.createElement("canvas"),(t=e.getContext("2d"))&&c.current&&l.current?(e.width=null===(n=l.current)||void 0===n?void 0:n.videoWidth,e.height=null===(r=l.current)||void 0===r?void 0:r.videoHeight,t.drawImage(l.current,0,0,e.width,e.height),a=e.toDataURL("image/jpeg",.98),[4,fetch(a)]):[2,null];case 1:return[4,o.sent().blob()];case 2:return[2,o.sent()]}}))}))}),[]);return{videoRef:l,videoDevice:d,videoLoaded:p,setVideoLoaded:g,cameraRef:c,cameraAccessDenied:k,retryCameraAccess:A,releaseCameraAccess:releaseCameraAccess,iphoneContinuityCameraAvailable:y,iphoneContinuityCameraAllowed:S,setIphoneContinuityCameraAllowed:E,captureDevice:b,grabFrame:M,takePhoto:F}},CameraStateContext=React.createContext({videoRef:{current:null},videoLoaded:!1,cameraRef:{current:null},cameraReady:!1,cameraAccessDenied:!1,retryCameraAccess:function(){return null},releaseCameraAccess:function(){return null},iphoneContinuityCameraAvailable:!1,iphoneContinuityCameraAllowed:!0,setIphoneContinuityCameraAllowed:function(){return null},grabFrame:function(){return Promise.resolve(null)},takePhoto:function(){return Promise.resolve(null)},setVideoLoaded:function(){return null}}),CameraProvider=function(e){var t=e.children,a=e.preferFrontFacingCamera,n=e.preferContinuityCamera,r=e.requestMicrophoneAccess,o=useHighestResCaptureDevice({preferFrontFacingCamera:void 0!==a&&a,preferContinuityCamera:void 0===n||n,requestMicrophoneAccess:void 0!==r&&r}),i=o.videoRef,s=o.videoLoaded,l=o.setVideoLoaded,c=o.cameraRef,u=o.cameraAccessDenied,d=o.retryCameraAccess,f=o.releaseCameraAccess,m=o.iphoneContinuityCameraAvailable,p=o.iphoneContinuityCameraAllowed,g=o.setIphoneContinuityCameraAllowed,h=o.grabFrame,b=o.takePhoto,v=o.captureDevice,_=React.useState(!1),y=_[0],R=_[1];return React.useEffect((function(){R(!1),v&&R(!0)}),[v]),React.useEffect((function(){return function(){f()}}),[f]),React__default.default.createElement(CameraStateContext.Provider,{value:{videoRef:i,videoLoaded:s,setVideoLoaded:l,cameraRef:c,cameraReady:y,cameraAccessDenied:u,releaseCameraAccess:f,retryCameraAccess:d,iphoneContinuityCameraAvailable:m,iphoneContinuityCameraAllowed:p,setIphoneContinuityCameraAllowed:g,grabFrame:h,takePhoto:b}},t)};function loadFocusModel(e){return tslib.__awaiter(this,void 0,void 0,(function(){var t,a,n,r,o,i,s,l,c;return tslib.__generator(this,(function(u){switch(u.label){case 0:return focusModel?[2,focusModel]:[4,tf__namespace.loadLayersModel(e)];case 1:return focusModel=u.sent(),[4,tf__namespace.ready()];case 2:return u.sent(),t=tf__namespace.zeros([448,448,3]),a=tf__namespace.cast(t,"int32"),o=(r=tf__namespace).tensor4d,s=(i=Array).from,[4,a.data()];case 3:return n=o.apply(r,[s.apply(i,[u.sent()]),[1,448,448,3]]),l=tf__namespace.cast(n,"int32"),[4,focusModel.predict(l)];case 4:return[4,(c=u.sent()).data()];case 5:return u.sent(),tf__namespace.dispose(c),a.dispose(),l.dispose(),n.dispose(),tf__namespace.dispose(t),[2,focusModel]}}))}))}function unloadFocusModel(){focusModel=null}const EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4;class KernelBackend{refCount(e){return notYetImplemented("refCount")}incRef(e){return notYetImplemented("incRef")}timerAvailable(){return!0}time(e){return notYetImplemented("time")}read(e){return notYetImplemented("read")}readSync(e){return notYetImplemented("readSync")}readToGPU(e,t){return notYetImplemented("readToGPU")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(e,t){return notYetImplemented("disposeData")}write(e,t,a){return notYetImplemented("write")}move(e,t,a,n,r){return notYetImplemented("move")}createTensorFromGPUData(e,t,a){return notYetImplemented("createTensorFromGPUData")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}dispose(){return notYetImplemented("dispose")}}function notYetImplemented(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function assert(e,t){if(!e)throw new Error("string"==typeof t?t:t())}function sizeFromShape(e){if(0===e.length)return 1;let t=e[0];for(let a=1;a<e.length;a++)t*=e[a];return t}function arraysEqual(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(let a=0;a<e.length;a++)if(e[a]!==t[a])return!1;return!0}function rightPad(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}function getArrayFromDType(e,t){let a=null;if(null==e||"float32"===e)a=new Float32Array(t);else if("int32"===e)a=new Int32Array(t);else if("bool"===e)a=new Uint8Array(t);else{if("string"!==e)throw new Error(`Unknown data type ${e}`);a=new Array(t)}return a}function checkConversionForErrors(e,t){for(let a=0;a<e.length;a++){const n=e[a];if(isNaN(n)||!isFinite(n))throw Error(`A tensor of type ${t} being uploaded contains ${n}.`)}}function isValidDtype(e){return"bool"===e||"complex64"===e||"float32"===e||"int32"===e||"string"===e}function bytesPerElement(e){if("float32"===e||"int32"===e)return 4;if("complex64"===e)return 8;if("bool"===e)return 1;throw new Error(`Unknown dtype ${e}`)}function bytesFromStringArray(e){if(null==e)return 0;let t=0;return e.forEach((e=>t+=e.length)),t}function isString(e){return"string"==typeof e||e instanceof String}function isBoolean(e){return"boolean"==typeof e}function isNumber(e){return"number"==typeof e}function inferDtype(e){return Array.isArray(e)?inferDtype(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":isNumber(e)?"float32":isString(e)?"string":isBoolean(e)?"bool":"float32"}function isFunction(e){return!!(e&&e.constructor&&e.call&&e.apply)}function computeStrides(e){const t=e.length;if(t<2)return[];const a=new Array(t-1);a[t-2]=e[t-1];for(let n=t-3;n>=0;--n)a[n]=a[n+1]*e[n+1];return a}function createNestedArray(e,t,a,n=!1){const r=new Array;if(1===t.length){const o=t[0]*(n?2:1);for(let t=0;t<o;t++)r[t]=a[e+t]}else{const o=t[0],i=t.slice(1),s=i.reduce(((e,t)=>e*t))*(n?2:1);for(let t=0;t<o;t++)r[t]=createNestedArray(e+t*s,i,a,n)}return r}function toNestedArray(e,t,a=!1){if(0===e.length)return t[0];const n=e.reduce(((e,t)=>e*t))*(a?2:1);if(0===n)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${a?" for a complex tensor":""}.`);return createNestedArray(0,e,t,a)}function makeOnesTypedArray(e,t){const a=makeZerosTypedArray(e,t);for(let e=0;e<a.length;e++)a[e]=1;return a}function makeZerosTypedArray(e,t){if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return new Int32Array(e);if("bool"===t)return new Uint8Array(e);throw new Error(`Unknown data type ${t}`)}function assertNonNegativeIntegerDimensions(e){e.forEach((t=>{assert(Number.isInteger(t)&&t>=0,(()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`))}))}function isPromise(e){return e&&e.then&&"function"==typeof e.then}const TENSORFLOWJS_FLAGS_PREFIX="tfjsflags";class Environment{constructor(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.getQueryParams=getQueryParams,this.populateURLFlags()}setPlatform(e,t){null!=this.platform&&(env().getBool("IS_TEST")||env().getBool("PROD")||console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${e}.`)),this.platformName=e,this.platform=t}registerFlag(e,t,a){if(this.flagRegistry[e]={evaluationFn:t,setHook:a},null!=this.urlFlags[e]){const t=this.urlFlags[e];env().getBool("IS_TEST")||env().getBool("PROD")||console.warn(`Setting feature override from URL ${e}: ${t}.`),this.set(e,t)}}async getAsync(e){return e in this.flags||(this.flags[e]=await this.evaluateFlag(e)),this.flags[e]}get(e){if(e in this.flags)return this.flags[e];const t=this.evaluateFlag(e);if(isPromise(t))throw new Error(`Flag ${e} cannot be synchronously evaluated. Please use getAsync() instead.`);return this.flags[e]=t,this.flags[e]}getNumber(e){return this.get(e)}getBool(e){return this.get(e)}getString(e){return this.get(e)}getFlags(){return this.flags}get features(){return this.flags}set(e,t){if(null==this.flagRegistry[e])throw new Error(`Cannot set flag ${e} as it has not been registered.`);this.flags[e]=t,null!=this.flagRegistry[e].setHook&&this.flagRegistry[e].setHook(t)}evaluateFlag(e){if(null==this.flagRegistry[e])throw new Error(`Cannot evaluate flag '${e}': no evaluation function found.`);return this.flagRegistry[e].evaluationFn()}setFlags(e){this.flags=Object.assign({},e)}reset(){this.flags={},this.urlFlags={},this.populateURLFlags()}populateURLFlags(){if(void 0===this.global||void 0===this.global.location||void 0===this.global.location.search)return;const e=this.getQueryParams(this.global.location.search);if("tfjsflags"in e){e.tfjsflags.split(",").forEach((e=>{const[t,a]=e.split(":");this.urlFlags[t]=parseValue(t,a)}))}}}function getQueryParams(e){const t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,((e,...a)=>(decodeParam(t,a[0],a[1]),a.join("=")))),t}function decodeParam(e,t,a){e[decodeURIComponent(t)]=decodeURIComponent(a||"")}function parseValue(e,t){const a=t.toLowerCase();return"true"===a||"false"===a?"true"===a:""+ +a===a?+a:t}function env(){return ENV$1}let globalNameSpace,ENV$1=null;function setEnvironmentGlobal(e){ENV$1=e}function getGlobalNamespace(){if(null==globalNameSpace){let e;if("undefined"!=typeof window)e=window;else if("undefined"!=typeof global)e=global;else if("undefined"!=typeof process)e=process;else{if("undefined"==typeof self)throw new Error("Could not find a global object");e=self}globalNameSpace=e}return globalNameSpace}function getGlobalMap(){const e=getGlobalNamespace();return null==e._tfGlobals&&(e._tfGlobals=new Map),e._tfGlobals}function getGlobal(e,t){const a=getGlobalMap();if(a.has(e))return a.get(e);{const n=t();return a.set(e,n),a.get(e)}}const Abs="Abs",Add="Add",Cast="Cast",ComplexAbs="ComplexAbs",RealDiv="RealDiv",Fill="Fill",FloorDiv="FloorDiv",Identity="Identity",Maximum="Maximum",Multiply="Multiply",Pow="Pow",Sqrt="Sqrt",Sub="Sub",ZerosLike="ZerosLike";function warn(...e){env().getBool("IS_TEST")||env().getBool("PROD")||console.warn(...e)}const kernelRegistry=getGlobal("kernelRegistry",(()=>new Map)),gradRegistry=getGlobal("gradRegistry",(()=>new Map));function getKernel(e,t){const a=makeKey(e,t);return kernelRegistry.get(a)}function getGradient(e){return gradRegistry.get(e)}function getKernelsForBackend(e){const t=kernelRegistry.entries(),a=[];for(;;){const{done:n,value:r}=t.next();if(n)break;const[o,i]=r,[s]=o.split("_");s===e&&a.push(i)}return a}function makeKey(e,t){return`${t}_${e}`}function isTypedArrayBrowser(e){return e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray}function noConversionNeeded(e,t){return e instanceof Float32Array&&"float32"===t||e instanceof Int32Array&&"int32"===t||e instanceof Uint8Array&&"bool"===t}function toTypedArray(e,t){if("string"===t)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=flatten(e)),env().getBool("DEBUG")&&checkConversionForErrors(e,t),noConversionNeeded(e,t))return e;if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return new Int32Array(e);if("bool"===t){const t=new Uint8Array(e.length);for(let a=0;a<t.length;++a)0!==Math.round(e[a])&&(t[a]=1);return t}throw new Error(`Unknown data type ${t}`)}function now(){return env().platform.now()}function encodeString(e,t="utf-8"){return t=t||"utf-8",env().platform.encode(e,t)}function decodeString(e,t="utf-8"){return t=t||"utf-8",env().platform.decode(e,t)}function isTypedArray(e){return null!=env().platform.isTypedArray?env().platform.isTypedArray(e):isTypedArrayBrowser(e)}function flatten(e,t=[],a=!1){if(null==t&&(t=[]),"boolean"==typeof e||"number"==typeof e||"string"==typeof e||isPromise(e)||null==e||isTypedArray(e)&&a)t.push(e);else if(Array.isArray(e)||isTypedArray(e))for(let n=0;n<e.length;++n)flatten(e[n],t,a);else{let n=-1;for(const t of Object.keys(e))/^([1-9]+[0-9]*|0)$/.test(t)&&(n=Math.max(n,Number(t)));for(let r=0;r<=n;r++)flatten(e[r],t,a)}return t}class Profiler{constructor(e,t){this.backendTimer=e,this.logger=t,null==t&&(this.logger=new Logger)}profileKernel(e,t,a){let n;const r=()=>{n=a()};let o;const i=now();if(this.backendTimer.timerAvailable())o=this.backendTimer.time(r);else{r();for(const e of n)e.dataSync();o=Promise.resolve({kernelMs:now()-i})}if(env().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let t=0;t<n.length;t++){const a=n[t];a.data().then((t=>{checkComputationForErrors(t,a.dtype,e)}))}return{kernelName:e,outputs:n,inputs:t,timeMs:o.then((e=>e.kernelMs)),extraInfo:o.then((e=>null!=e.getExtraProfileInfo?e.getExtraProfileInfo():""))}}logKernelProfile(e){const{kernelName:t,outputs:a,timeMs:n,inputs:r,extraInfo:o}=e;a.forEach((e=>{Promise.all([e.data(),n,o]).then((a=>{this.logger.logKernelProfile(t,e,a[0],a[1],r,a[2])}))}))}}function checkComputationForErrors(e,t,a){if("float32"!==t)return!1;for(let t=0;t<e.length;t++){const n=e[t];if(isNaN(n)||!isFinite(n))return console.warn(`Found ${n} in the result of '${a}'`),!0}return!1}class Logger{logKernelProfile(e,t,a,n,r,o){const i="number"==typeof n?rightPad(`${n}ms`,9):n.error,s=rightPad(e,25),l=t.rank,c=t.size,u=rightPad(t.shape.toString(),14);let d="";for(const e in r){const a=r[e];if(null!=a){const n=a.shape||t.shape,r=n.length;d+=`${e}: ${r}D ${r>0?n:""} `}}console.log(`%c${s}\t%c${i}\t%c${l}D ${u}\t%c${c}\t%c${d}\t%c${o}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}}function getFilteredNodesXToY(e,t,a){const n={},r={};for(let e=0;e<t.length;e++)n[t[e].id]=!0;for(let a=0;a<e.length;a++){const o=e[a],i=o.inputs;for(const e in i){const a=i[e];let s=!1;for(let e=0;e<t.length;e++)if(n[a.id]){o.outputs.forEach((e=>n[e.id]=!0)),s=!0,r[o.id]=!0;break}if(s)break}}const o={};o[a.id]=!0;const i={};for(let t=e.length-1;t>=0;t--){const a=e[t],n=a.inputs;for(let e=0;e<a.outputs.length;e++)if(o[a.outputs[e].id]){for(const e in n)o[n[e].id]=!0,i[a.id]=!0;break}}const s=[];for(let t=0;t<e.length;t++){const a=e[t];if(r[a.id]&&i[a.id]){const e={};for(const t in a.inputs){const r=a.inputs[t];n[r.id]&&(e[t]=r)}const t=Object.assign({},a);t.inputs=e,t.outputs=a.outputs,s.push(t)}}return s}function backpropagateGradients(e,t,a,n){for(let r=t.length-1;r>=0;r--){const o=t[r],i=[];if(o.outputs.forEach((t=>{const a=e[t.id];i.push(null!=a?a:null)})),null==o.gradient)throw new Error(`Cannot compute gradient: gradient function not found for ${o.kernelName}.`);const s=o.gradient(i);for(const t in o.inputs){if(!(t in s))throw new Error(`Cannot backprop through input ${t}. Available gradients found: ${Object.keys(s)}.`);const r=a((()=>s[t]()));if("float32"!==r.dtype)throw new Error(`Error in gradient for op ${o.kernelName}. The gradient of input ${t} must have 'float32' dtype, but has '${r.dtype}'`);const i=o.inputs[t];if(!arraysEqual(r.shape,i.shape))throw new Error(`Error in gradient for op ${o.kernelName}. The gradient of input '${t}' has shape '${r.shape}', which does not match the shape of the input '${i.shape}'`);if(null==e[i.id])e[i.id]=r;else{const t=e[i.id];e[i.id]=n(t,r),t.dispose()}}}}const FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(e,t,a,n){const r=computeStrides(t),o=computeMaxSizePerColumn(e,t,a,r),i=t.length,s=subTensorToString(e,t,a,r,o),l=["Tensor"];return n&&(l.push(` dtype: ${a}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(s.map((e=>" "+e)).join("\n")),l.join("\n")}function computeMaxSizePerColumn(e,t,a,n){const r=sizeFromShape(t),o=n[n.length-1],i=new Array(o).fill(0),s=t.length,l="complex64"===a?createComplexTuples(e):e;if(s>1)for(let e=0;e<r/o;e++){const t=e*o;for(let e=0;e<o;e++)i[e]=Math.max(i[e],valToString(l[t+e],0,a).length)}return i}function valToString(e,t,a){let n;return n=Array.isArray(e)?`${parseFloat(e[0].toFixed(FORMAT_NUM_SIG_DIGITS))} + ${parseFloat(e[1].toFixed(FORMAT_NUM_SIG_DIGITS))}j`:isString(e)?`'${e}'`:"bool"===a?boolNumToString(e):parseFloat(e.toFixed(FORMAT_NUM_SIG_DIGITS)).toString(),rightPad(n,t)}function boolNumToString(e){return 0===e?"false":"true"}function subTensorToString(e,t,a,n,r,o=!0){const i="complex64"===a?2:1,s=t[0],l=t.length;if(0===l){if("complex64"===a){return[valToString(createComplexTuples(e)[0],0,a)]}return"bool"===a?[boolNumToString(e[0])]:[e[0].toString()]}if(1===l){if(s>FORMAT_LIMIT_NUM_VALS){let t=Array.from(e.slice(0,FORMAT_NUM_FIRST_LAST_VALS*i)),n=Array.from(e.slice((s-FORMAT_NUM_FIRST_LAST_VALS)*i,s*i));return"complex64"===a&&(t=createComplexTuples(t),n=createComplexTuples(n)),["["+t.map(((e,t)=>valToString(e,r[t],a))).join(", ")+", ..., "+n.map(((e,t)=>valToString(e,r[s-FORMAT_NUM_FIRST_LAST_VALS+t],a))).join(", ")+"]"]}return["["+("complex64"===a?createComplexTuples(e):Array.from(e)).map(((e,t)=>valToString(e,r[t],a))).join(", ")+"]"]}const c=t.slice(1),u=n.slice(1),d=n[0]*i,f=[];if(s>FORMAT_LIMIT_NUM_VALS){for(let t=0;t<FORMAT_NUM_FIRST_LAST_VALS;t++){const n=t*d;f.push(...subTensorToString(e.slice(n,n+d),c,a,u,r,!1))}f.push("...");for(let t=s-FORMAT_NUM_FIRST_LAST_VALS;t<s;t++){const n=t*d;f.push(...subTensorToString(e.slice(n,n+d),c,a,u,r,t===s-1))}}else for(let t=0;t<s;t++){const n=t*d;f.push(...subTensorToString(e.slice(n,n+d),c,a,u,r,t===s-1))}const m=2===l?",":"";f[0]="["+(s>0?f[0]+m:"");for(let e=1;e<f.length-1;e++)f[e]=" "+f[e]+m;let p=",\n";for(let e=2;e<l;e++)p+="\n";return f[f.length-1]=" "+f[f.length-1]+"]"+(o?"":p),f}function createComplexTuples(e){const t=[];for(let a=0;a<e.length;a+=2)t.push([e[a],e[a+1]]);return t}class TensorBuffer{constructor(e,t,a){if(this.dtype=t,this.shape=e.slice(),this.size=sizeFromShape(e),null!=a){const e=a.length;assert(e===this.size,(()=>`Length of values '${e}' does not match the size inferred by the shape '${this.size}'.`))}if("complex64"===t)throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=a||getArrayFromDType(t,this.size),this.strides=computeStrides(e)}set(e,...t){0===t.length&&(t=[0]),assert(t.length===this.rank,(()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`));const a=this.locToIndex(t);this.values[a]=e}get(...e){0===e.length&&(e=[0]);let t=0;for(const a of e){if(a<0||a>=this.shape[t]){throw new Error(`Requested out of range element at ${e}. Buffer shape=${this.shape}`)}t++}let a=e[e.length-1];for(let t=0;t<e.length-1;++t)a+=this.strides[t]*e[t];return this.values[a]}locToIndex(e){if(0===this.rank)return 0;if(1===this.rank)return e[0];let t=e[e.length-1];for(let a=0;a<e.length-1;++a)t+=this.strides[a]*e[a];return t}indexToLoc(e){if(0===this.rank)return[];if(1===this.rank)return[e];const t=new Array(this.shape.length);for(let a=0;a<t.length-1;++a)t[a]=Math.floor(e/this.strides[a]),e-=t[a]*this.strides[a];return t[t.length-1]=e,t}get rank(){return this.shape.length}toTensor(){return trackerFn().makeTensor(this.values,this.shape,this.dtype)}}let trackerFn=null,opHandler$1=null;function setTensorTracker(e){trackerFn=e}function setOpHandler(e){opHandler$1=e}class Tensor{constructor(e,t,a,n){this.kept=!1,this.isDisposedInternal=!1,this.shape=e.slice(),this.dtype=t||"float32",this.size=sizeFromShape(e),this.strides=computeStrides(e),this.dataId=a,this.id=n,this.rankType=this.rank<5?this.rank.toString():"higher"}get rank(){return this.shape.length}async buffer(){const e=await this.data();return opHandler$1.buffer(this.shape,this.dtype,e)}bufferSync(){return opHandler$1.buffer(this.shape,this.dtype,this.dataSync())}async array(){const e=await this.data();return toNestedArray(this.shape,e,"complex64"===this.dtype)}arraySync(){return toNestedArray(this.shape,this.dataSync(),"complex64"===this.dtype)}async data(){this.throwIfDisposed();const e=trackerFn().read(this.dataId);if("string"===this.dtype){const t=await e;try{return t.map((e=>decodeString(e)))}catch(e){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataToGPU(e){return this.throwIfDisposed(),trackerFn().readToGPU(this.dataId,e)}dataSync(){this.throwIfDisposed();const e=trackerFn().readSync(this.dataId);if("string"===this.dtype)try{return e.map((e=>decodeString(e)))}catch(e){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();const e=await trackerFn().read(this.dataId);return"string"===this.dtype?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(trackerFn().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return opHandler$1.print(this,e)}clone(){return this.throwIfDisposed(),opHandler$1.clone(this)}toString(e=!1){return tensorToString(this.dataSync(),this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),opHandler$1.cast(this,e)}variable(e=!0,t,a){return this.throwIfDisposed(),trackerFn().makeVariable(this,e,t,a)}}function getGlobalTensorClass(){return getGlobal("Tensor",(()=>Tensor))}Object.defineProperty(Tensor,Symbol.hasInstance,{value:e=>!!e&&null!=e.data&&null!=e.dataSync&&null!=e.throwIfDisposed}),getGlobalTensorClass();class Variable extends Tensor{constructor(e,t,a,n){super(e.shape,e.dtype,e.dataId,n),this.trainable=t,this.name=a}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=e.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}}var Rank,UpcastInt32AndMap,UpcastBoolAndMap,UpcastFloat32AndMap,UpcastComplex64AndMap;Object.defineProperty(Variable,Symbol.hasInstance,{value:e=>e instanceof Tensor&&null!=e.assign&&e.assign instanceof Function}),function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"}(Rank||(Rank={})),function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"}(UpcastInt32AndMap||(UpcastInt32AndMap={})),function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"}(UpcastBoolAndMap||(UpcastBoolAndMap={})),function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"}(UpcastFloat32AndMap||(UpcastFloat32AndMap={})),function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"}(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));const upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(e,t){if("string"===e||"string"===t){if("string"===e&&"string"===t)return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return upcastTypeMap[e][t]}function isWebGLData(e){return null!=e&&"object"==typeof e&&"texture"in e&&e.texture instanceof WebGLTexture}function isWebGPUData(e){return"undefined"!=typeof GPUBuffer&&null!=e&&"object"==typeof e&&"buffer"in e&&e.buffer instanceof GPUBuffer}function makeTypesMatch(e,t){if(e.dtype===t.dtype)return[e,t];const a=upcastType(e.dtype,t.dtype);return[e.cast(a),t.cast(a)]}function getTensorsInContainer(e){const t=[];return walkTensorContainer(e,t,new Set),t}function walkTensorContainer(e,t,a){if(null==e)return;if(e instanceof Tensor)return void t.push(e);if(!isIterable(e))return;const n=e;for(const e in n){const r=n[e];a.has(r)||(a.add(r),walkTensorContainer(r,t,a))}}function isIterable(e){return Array.isArray(e)||"object"==typeof e}function isRegisteredKernelInvocation(e){return null!=e.kernelName}class EngineState{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map((e=>e.name))))}}}dispose(){for(const e in this.registeredVariables)this.registeredVariables[e].dispose()}}class Engine{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(null!=this.pendingBackendInit)return this.pendingBackendInit.then((()=>{}));if(null!=this.backendInstance)return;const e=this.getSortedBackends();for(let t=0;t<e.length;t++){const a=e[t];if(await this.initializeBackend(a).success)return void await this.setBackend(a)}throw new Error("Could not initialize any backends, all backend initializations failed.")}get backend(){if(null!=this.pendingBackendInit)throw new Error(`Backend '${this.backendName}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`);if(null==this.backendInstance){const{name:e,asyncInit:t}=this.initializeBackendsAndReturnBest();if(t)throw new Error(`The highest priority backend '${e}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`);this.setBackend(e)}return this.backendInstance}backendNames(){return Object.keys(this.registryFactory)}findBackend(e){if(!(e in this.registry)){if(!(e in this.registryFactory))return null;{const{asyncInit:t}=this.initializeBackend(e);if(t)return null}}return this.registry[e]}findBackendFactory(e){return e in this.registryFactory?this.registryFactory[e].factory:null}registerBackend(e,t,a=1){return e in this.registryFactory?(warn(`${e} backend was already registered. Reusing existing backend factory.`),!1):(this.registryFactory[e]={factory:t,priority:a},!0)}async setBackend(e){if(null==this.registryFactory[e])throw new Error(`Backend name '${e}' not found in registry`);if(this.backendName=e,null==this.registry[e]){this.backendInstance=null;const{success:t,asyncInit:a}=this.initializeBackend(e);if(!(a?await t:t))return!1}return this.backendInstance=this.registry[e],this.setupRegisteredKernels(),this.profiler=new Profiler(this.backendInstance),!0}setupRegisteredKernels(){getKernelsForBackend(this.backendName).forEach((e=>{null!=e.setupFunc&&e.setupFunc(this.backendInstance)}))}disposeRegisteredKernels(e){getKernelsForBackend(e).forEach((t=>{null!=t.disposeFunc&&t.disposeFunc(this.registry[e])}))}initializeBackend(e){const t=this.registryFactory[e];if(null==t)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{const a=t.factory();if(!a||a instanceof KernelBackend||"function"!=typeof a.then)return this.registry[e]=a,{success:!0,asyncInit:!1};{const t=++this.pendingBackendInitId,n=a.then((a=>!(t<this.pendingBackendInitId)&&(this.registry[e]=a,this.pendingBackendInit=null,!0))).catch((a=>(t<this.pendingBackendInitId||(this.pendingBackendInit=null,warn(`Initialization of backend ${e} failed`),warn(a.stack||a.message)),!1)));return this.pendingBackendInit=n,{success:n,asyncInit:!0}}}catch(t){return warn(`Initialization of backend ${e} failed`),warn(t.stack||t.message),{success:!1,asyncInit:!1}}}removeBackend(e){if(!(e in this.registryFactory))throw new Error(`${e} backend not found in registry`);this.backendName===e&&null!=this.pendingBackendInit&&this.pendingBackendInitId++,e in this.registry&&(this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e]),delete this.registryFactory[e],this.backendName===e&&(this.pendingBackendInit=null,this.backendName=null,this.backendInstance=null)}getSortedBackends(){if(0===Object.keys(this.registryFactory).length)throw new Error("No backend found in registry.");return Object.keys(this.registryFactory).sort(((e,t)=>this.registryFactory[t].priority-this.registryFactory[e].priority))}initializeBackendsAndReturnBest(){const e=this.getSortedBackends();for(let t=0;t<e.length;t++){const a=e[t],{success:n,asyncInit:r}=this.initializeBackend(a);if(r||n)return{name:a,asyncInit:r}}throw new Error("Could not initialize any backends, all backend initializations failed.")}moveData(e,t){const a=this.state.tensorInfo.get(t),n=a.backend,r=this.readSync(t),o=n.refCount(t);n.disposeData(t,!0),a.backend=e,e.move(t,r,a.shape,a.dtype,o),this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack[this.state.numDataMovesStack.length-1]++}tidy(e,t){let a,n=null;if(null==t){if("function"!=typeof e)throw new Error("Please provide a function to tidy()");t=e}else{if("string"!=typeof e&&!(e instanceof String))throw new Error("When calling with two arguments, the first argument to tidy() must be a string");if("function"!=typeof t)throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function");n=e}return this.scopedRun((()=>this.startScope(n)),(()=>this.endScope(a)),(()=>(a=t(),a instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),a)))}scopedRun(e,t,a){e();try{const e=a();return t(),e}catch(e){throw t(),e}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(e){const t=ENGINE.runKernel(Identity,{x:e});return this.addTapeNode(this.state.activeScope.name,{x:e},[t],(e=>({x:()=>ENGINE.runKernel(Cast,{x:e},{dtype:"float32"})})),[],{}),t}runKernel(e,t,a){if(!(null!=getKernel(e,this.backendName)))throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:a})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,a){const n=this.backend.numDataIds();let r=0;a.forEach((e=>{r+="complex64"===e.dtype?3:1}));const o=n-t-r-this.state.numDataMovesStack[this.state.numDataMovesStack.length-1];if(o>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${o} data ids) after running '${e}'`)}runKernelFunc(e){let t,a=[];const n=this.isTapeOn(),r=this.state.numBytes,o=this.state.numTensors;let i,s;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);const l=isRegisteredKernelInvocation(e)?e.kernelName:null!=this.state.activeScope?this.state.activeScope.name:"";if(isRegisteredKernelInvocation(e)){const{kernelName:t,inputs:r,attrs:o}=e,l=getKernel(t,this.backendName);assert(null!=l,(()=>`Cannot find registered kernel '${t}' for backend '${this.backendName}'`)),i=()=>{const e=this.backend.numDataIds();s=l.kernelFunc({inputs:r,attrs:o,backend:this.backend});const i=Array.isArray(s)?s:[s];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(t,e,i);const c=i.map((e=>null!=e.rank?e:this.makeTensorFromTensorInfo(e)));if(n){const e=this.getTensorsForGradient(t,r,c);a=this.saveTensorsForBackwardMode(e)}return c}}else{const{forwardFunc:t}=e,r=e=>{n&&(a=e.map((e=>this.keep(this.clone(e)))))};i=()=>{const e=this.backend.numDataIds();s=this.tidy((()=>t(this.backend,r)));const a=Array.isArray(s)?s:[s];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,e,a),a}}const{inputs:c,attrs:u}=e,d=isRegisteredKernelInvocation(e)?null:e.backwardsFunc;let f;return this.scopedRun((()=>this.state.kernelDepth++),(()=>this.state.kernelDepth--),(()=>{this.ENV.getBool("DEBUG")||this.state.profiling?(f=this.profiler.profileKernel(l,c,(()=>i())),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(f),t=f.outputs):t=i()})),n&&this.addTapeNode(l,c,t,d,a,u),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-r,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-o,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(c).map((e=>null!=c[e]?c[e].shape:null)),outputShapes:t.map((e=>e.shape)),kernelTimeMs:f.timeMs,extraInfo:f.extraInfo}),Array.isArray(s)?t:t[0]}saveTensorsForBackwardMode(e){return e.map((e=>this.keep(this.clone(e))))}getTensorsForGradient(e,t,a){const n=getGradient(e);if(null!=n){const e=n.inputsToSave||[],r=n.outputsToSave||[];let o;n.saveAllInputs?(assert(Array.isArray(t),(()=>"saveAllInputs is true, expected inputs to be an array.")),o=Object.keys(t).map((e=>t[e]))):o=e.map((e=>t[e]));const i=a.filter(((e,t)=>r[t]));return o.concat(i)}return[]}makeTensor(e,t,a,n){if(null==e)throw new Error("Values passed to engine.makeTensor() are null");n=n||this.backend;let r=e;"string"===(a=a||"float32")&&isString(e[0])&&(r=e.map((e=>encodeString(e))));const o=n.write(r,t,a),i=new Tensor(t,a,o,this.nextTensorId());if(this.trackTensor(i,n),"string"===a){const e=this.state.tensorInfo.get(o),t=bytesFromStringArray(r);this.state.numBytes+=t-e.bytes,e.bytes=t}return i}makeTensorFromDataId(e,t,a,n){return this.makeTensorFromTensorInfo({dataId:e,shape:t,dtype:a=a||"float32"},n)}makeTensorFromTensorInfo(e,t){const{dataId:a,shape:n,dtype:r}=e,o=new Tensor(n,r,a,this.nextTensorId());return this.trackTensor(o,t),o}makeVariable(e,t=!0,a,n){a=a||this.nextVariableId().toString(),null!=n&&n!==e.dtype&&(e=e.cast(n));const r=new Variable(e,t,a,this.nextTensorId());if(null!=this.state.registeredVariables[r.name])throw new Error(`Variable with name ${r.name} was already registered`);return this.state.registeredVariables[r.name]=r,this.incRef(r,this.backend),r}trackTensor(e,t){this.state.numTensors++,"string"===e.dtype&&this.state.numStringTensors++;let a=0;"complex64"!==e.dtype&&"string"!==e.dtype&&(a=e.size*bytesPerElement(e.dtype)),this.state.numBytes+=a,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:a})),e instanceof Variable||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;const t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,"string"===e.dtype&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),"complex64"!==e.dtype&&"string"!==e.dtype){const t=e.size*bytesPerElement(e.dtype);this.state.numBytes-=t}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(const e in this.state.registeredVariables){this.disposeVariable(this.state.registeredVariables[e])}}disposeVariable(e){this.disposeTensor(e),null!=this.state.registeredVariables[e.name]&&delete this.state.registeredVariables[e.name]}memory(){const e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,null==e.reasons&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;const t=this.state.numBytes,a=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map((e=>e.totalBytesSnapshot))),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-a;for(const e of this.state.activeProfile.kernels)e.kernelTimeMs=await e.kernelTimeMs,e.extraInfo=await e.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&0===this.state.kernelDepth}addTapeNode(e,t,a,n,r,o){const i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:a,saved:r},s=getGradient(e);null!=s&&(n=s.gradFunc),null!=n&&(i.gradient=e=>(e=e.map(((e,t)=>{if(null==e){const e=a[t],n=makeZerosTypedArray(e.size,e.dtype);return this.makeTensor(n,e.shape,e.dtype)}return e})),n(e.length>1?e:e[0],r,o))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){const t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){const t=getTensorsInContainer(e),a=new Set(t.map((e=>e.id)));for(let e=0;e<this.state.activeScope.track.length;e++){const t=this.state.activeScope.track[e];t.kept||a.has(t.id)||t.dispose()}const n=this.state.scopeStack.pop();this.state.activeScope=0===this.state.scopeStack.length?null:this.state.scopeStack[this.state.scopeStack.length-1],t.forEach((e=>{e.kept||e.scopeId!==n.id||this.track(e)}))}gradients(e,t,a,n=!1){if(assert(t.length>0,(()=>"gradients() received an empty list of xs.")),null!=a&&"float32"!==a.dtype)throw new Error(`dy must have 'float32' dtype, but has '${a.dtype}'`);const r=this.scopedRun((()=>this.startTape()),(()=>this.endTape()),(()=>this.tidy("forward",e)));assert(r instanceof Tensor,(()=>"The result y returned by f() must be a tensor."));const o=getFilteredNodesXToY(this.state.activeTape,t,r);if(!n&&0===o.length&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",(()=>{const e={};e[r.id]=null==a?ones(r.shape):a,backpropagateGradients(e,o,(e=>this.tidy(e)),add$1);const n=t.map((t=>e[t.id]));return 0===this.state.gradientDepth&&(this.state.activeTape.forEach((e=>{for(const t of e.saved)t.dispose()})),this.state.activeTape=null),{value:r,grads:n}}))}customGrad(e){return assert(isFunction(e),(()=>"The f passed in customGrad(f) must be a function.")),(...t)=>{let a;assert(t.every((e=>e instanceof Tensor)),(()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors"));const n={};t.forEach(((e,t)=>{n[t]=e}));return this.runKernelFunc({forwardFunc:(n,r)=>(a=e(...t,r),assert(a.value instanceof Tensor,(()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor")),assert(isFunction(a.gradFunc),(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function.")),a.value),backwardsFunc:(e,n)=>{const r=a.gradFunc(e,n),o=Array.isArray(r)?r:[r];assert(o.length===t.length,(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...).")),assert(o.every((e=>e instanceof Tensor)),(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."));const i={};return o.forEach(((e,t)=>{i[t]=()=>e})),i},inputs:n})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}readToGPU(e,t){return this.state.tensorInfo.get(e).backend.readToGPU(e,t)}async time(e){const t=now(),a=await this.backend.time(e);return a.wallMs=now()-t,a}track(e){return null!=this.state.activeScope&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(const e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}}function ones(e){const t=makeOnesTypedArray(sizeFromShape(e),"float32");return ENGINE.makeTensor(t,e,"float32")}function getOrMakeEngine(){const e=getGlobalNamespace();if(null==e._tfengine){const t=new Environment(e);e._tfengine=new Engine(t)}return setEnvironmentGlobal(e._tfengine.ENV),setTensorTracker((()=>e._tfengine)),e._tfengine}Engine.nextTensorId=0,Engine.nextVariableId=0;const ENGINE=getOrMakeEngine();function add$1(e,t){return ENGINE.runKernel(Add,{a:e,b:t})}const ENV=env();function inferShape(e,t){let a=e;if(isTypedArray(e))return"string"===t?[]:[e.length];if(isWebGLData(e)){return[e.height,e.width*(e.channels||"RGBA").length]}if(isWebGPUData(e))return[e.buffer.size/(null==t?4:bytesPerElement(t))];if(!Array.isArray(e))return[];const n=[];for(;Array.isArray(a)||isTypedArray(a)&&"string"!==t;)n.push(a.length),a=a[0];return Array.isArray(e)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(e,n,[]),n}function deepAssertShapeConsistency(e,t,a){if(a=a||[],!Array.isArray(e)&&!isTypedArray(e))return void assert(0===t.length,(()=>`Element arr[${a.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`));assert(t.length>0,(()=>`Element arr[${a.join("][")}] should be a primitive, but is an array of ${e.length} elements`)),assert(e.length===t[0],(()=>`Element arr[${a.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`));const n=t.slice(1);for(let t=0;t<e.length;++t)deepAssertShapeConsistency(e[t],n,a.concat(t))}function assertDtype(e,t,a,n){if("string_or_numeric"!==e){if(null==e)throw new Error("Expected dtype cannot be null.");if("numeric"!==e&&e!==t||"numeric"===e&&"string"===t)throw new Error(`Argument '${a}' passed to '${n}' must be ${e} tensor, but got ${t} tensor`)}}function convertToTensor(e,t,a,n="numeric"){if(e instanceof Tensor)return assertDtype(n,e.dtype,t,a),e;let r=inferDtype(e);if("string"!==r&&["bool","int32","float32"].indexOf(n)>=0&&(r=n),assertDtype(n,r,t,a),null==e||!isTypedArray(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e){throw new Error(`Argument '${t}' passed to '${a}' must be a Tensor or TensorLike, but got '${null==e?"null":e.constructor.name}'`)}const o=inferShape(e,r);isTypedArray(e)||Array.isArray(e)||(e=[e]);const i="string"!==r?toTypedArray(e,r):flatten(e,[],!0);return ENGINE.makeTensor(i,o,r)}ENV.registerFlag("DEBUG",(()=>!1),(e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")})),ENV.registerFlag("IS_BROWSER",(()=>isBrowser())),ENV.registerFlag("IS_NODE",(()=>"undefined"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.node)),ENV.registerFlag("IS_CHROME",(()=>"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor))),ENV.registerFlag("IS_SAFARI",(()=>"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor))),ENV.registerFlag("PROD",(()=>!1)),ENV.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",(()=>ENV.getBool("DEBUG"))),ENV.registerFlag("DEPRECATION_WARNINGS_ENABLED",(()=>!0)),ENV.registerFlag("IS_TEST",(()=>!1)),ENV.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",(()=>ENV.getBool("DEBUG"))),ENV.registerFlag("WRAP_TO_IMAGEBITMAP",(()=>!1)),ENV.registerFlag("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU",(()=>!1)),ENV.registerFlag("USE_SETTIMEOUTCUSTOM",(()=>!1));const OP_SCOPE_SUFFIX="__op";function op(e){const t=Object.keys(e);if(1!==t.length)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let a=t[0];const n=e[a];a.endsWith("_")&&(a=a.substring(0,a.length-1)),a+="__op";const r=(...e)=>{ENGINE.startScope(a);try{const t=n(...e);return isPromise(t)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(t),t}catch(e){throw ENGINE.endScope(null),e}};return Object.defineProperty(r,"name",{value:a,configurable:!0}),r}function makeTensor(e,t,a,n){if(null==n)n=inferDtype(e);else if("complex64"===n)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(isWebGPUData(e)||isWebGLData(e)){if("float32"!==n&&"int32"!==n)throw new Error(`Creating tensor from GPU data only supports 'float32'|'int32' dtype, while the dtype is ${n}.`);return ENGINE.backend.createTensorFromGPUData(e,t||a,n)}if(!isTypedArray(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e)throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(null!=t){assertNonNegativeIntegerDimensions(t);const e=sizeFromShape(t),n=sizeFromShape(a);assert(e===n,(()=>`Based on the provided shape, [${t}], the tensor should have ${e} values but has ${n}`));for(let e=0;e<a.length;++e){const n=e!==a.length-1||a[e]!==sizeFromShape(t.slice(e));assert(a[e]===t[e]||!n,(()=>`Error creating a new Tensor. Inferred shape (${a}) does not match the provided shape (${t}). `))}}return isTypedArray(e)||Array.isArray(e)||(e=[e]),t=t||a,e="string"!==n?toTypedArray(e,n):flatten(e,[],!0),ENGINE.makeTensor(e,t,n)}class CompositeArrayBuffer{static join(e){return new CompositeArrayBuffer(e).slice()}constructor(e){if(this.shards=[],this.previousShardIndex=0,null==e)return;if(e instanceof Array||(e=[e]),0===(e=e.map((e=>isTypedArray(e)?e.buffer:e))).length)return;this.bufferUniformSize=e[0].byteLength;let t=0;for(let a=0;a<e.length;a++){const n=e[a];a!==e.length-1&&n.byteLength!==this.bufferUniformSize&&(this.bufferUniformSize=void 0);const r=t+n.byteLength;this.shards.push({buffer:n,start:t,end:r}),t=r}0===this.shards.length&&(this.byteLength=0),this.byteLength=this.shards[this.shards.length-1].end}slice(e=0,t=this.byteLength){if(0===this.shards.length)return new ArrayBuffer(0);if(e=isNaN(Number(e))?0:e,t=isNaN(Number(t))?0:t,e=Math.max(0,e),(t=Math.min(this.byteLength,t))<=e)return new ArrayBuffer(0);const a=this.findShardForByte(e);if(-1===a)throw new Error(`Could not find start shard for byte ${e}`);const n=new ArrayBuffer(t-e),r=new Uint8Array(n);let o=0;for(let n=a;n<this.shards.length;n++){const a=this.shards[n],i=e+o-a.start,s=o,l=Math.min(t,a.end),c=new Uint8Array(a.buffer,i,l-a.start-i);if(r.set(c,s),o+=c.length,t<a.end)break}return n}findShardForByte(e){if(0===this.shards.length||e<0||e>=this.byteLength)return-1;if(null!=this.bufferUniformSize)return this.previousShardIndex=Math.floor(e/this.bufferUniformSize),this.previousShardIndex;function t(t){return e<t.start?-1:e>=t.end?1:0}if(0===t(this.shards[this.previousShardIndex]))return this.previousShardIndex;const a=search(this.shards,t);return-1===a?-1:(this.previousShardIndex=a,this.previousShardIndex)}}function search(e,t){let a=0,n=e.length;for(;a<=n;){const r=Math.floor((n-a)/2)+a,o=t(e[r]);if(0===o)return r;o<0?n=r:a=r+1}return-1}const useNodeBuffer="undefined"!=typeof Buffer&&("undefined"==typeof Blob||"undefined"==typeof atob||"undefined"==typeof btoa);function stringByteLength(e){return useNodeBuffer?Buffer.byteLength(e,"utf8"):new Blob([e]).size}function arrayBufferToBase64String(e){if(useNodeBuffer)return Buffer.from(e).toString("base64");const t=new Uint8Array(e);let a="";for(let e=0,n=t.length;e<n;e++)a+=String.fromCharCode(t[e]);return btoa(a)}function base64StringToArrayBuffer(e){if(useNodeBuffer){const t=Buffer.from(e,"base64");return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}const t=atob(e),a=new Uint8Array(t.length);for(let e=0;e<t.length;++e)a.set([t.charCodeAt(e)],e);return a.buffer}function getModelArtifactsInfoForJSON(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:null==e.modelTopology?0:stringByteLength(JSON.stringify(e.modelTopology)),weightSpecsBytes:null==e.weightSpecs?0:stringByteLength(JSON.stringify(e.weightSpecs)),weightDataBytes:null==e.weightData?0:new CompositeArrayBuffer(e.weightData).byteLength}}class IORouterRegistry{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return null==IORouterRegistry.instance&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(e){IORouterRegistry.getInstance().saveRouters.push(e)}static registerLoadRouter(e){IORouterRegistry.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return IORouterRegistry.getHandlers(e,"save")}static getLoadHandlers(e,t){return IORouterRegistry.getHandlers(e,"load",t)}static getHandlers(e,t,a){const n=[];return("load"===t?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters).forEach((t=>{const r=t(e,a);null!==r&&n.push(r)})),n}}const DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");const e="undefined"==typeof window?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function setUpDatabase(e){const t=e.result;t.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),t.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}class BrowserIndexedDB{constructor(e){if(this.indexedDB=getIndexedDBFactory(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise(((e,a)=>{const n=this.indexedDB.open(DATABASE_NAME,1);n.onupgradeneeded=()=>setUpDatabase(n),n.onsuccess=()=>{const r=n.result;if(null==t){const t=r.transaction(MODEL_STORE_NAME,"readonly"),n=t.objectStore(MODEL_STORE_NAME).get(this.modelPath);n.onsuccess=()=>{if(null==n.result)return r.close(),a(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));e(n.result.modelArtifacts)},n.onerror=e=>(r.close(),a(n.error)),t.oncomplete=()=>r.close()}else{const n=getModelArtifactsInfoForJSON(t),o=r.transaction(INFO_STORE_NAME,"readwrite");let i,s,l=o.objectStore(INFO_STORE_NAME);try{i=l.put({modelPath:this.modelPath,modelArtifactsInfo:n})}catch(e){return a(e)}i.onsuccess=()=>{s=r.transaction(MODEL_STORE_NAME,"readwrite");const i=s.objectStore(MODEL_STORE_NAME);let c;try{c=i.put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:n})}catch(e){return a(e)}c.onsuccess=()=>e({modelArtifactsInfo:n}),c.onerror=e=>{l=o.objectStore(INFO_STORE_NAME);const t=l.delete(this.modelPath);t.onsuccess=()=>(r.close(),a(c.error)),t.onerror=e=>(r.close(),a(c.error))}},i.onerror=e=>(r.close(),a(i.error)),o.oncomplete=()=>{null==s?r.close():s.oncomplete=()=>r.close()}}},n.onerror=e=>a(n.error)}))}}BrowserIndexedDB.URL_SCHEME="indexeddb://";const indexedDBRouter=e=>env().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(e.slice(BrowserIndexedDB.URL_SCHEME.length)):null;function browserIndexedDB(e){return new BrowserIndexedDB(e)}function maybeStripScheme$1(e){return e.startsWith(BrowserIndexedDB.URL_SCHEME)?e.slice(BrowserIndexedDB.URL_SCHEME.length):e}IORouterRegistry.registerSaveRouter(indexedDBRouter),IORouterRegistry.registerLoadRouter(indexedDBRouter);class BrowserIndexedDBManager{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise(((e,t)=>{const a=this.indexedDB.open(DATABASE_NAME,1);a.onupgradeneeded=()=>setUpDatabase(a),a.onsuccess=()=>{const n=a.result,r=n.transaction(INFO_STORE_NAME,"readonly"),o=r.objectStore(INFO_STORE_NAME).getAll();o.onsuccess=()=>{const t={};for(const e of o.result)t[e.modelPath]=e.modelArtifactsInfo;e(t)},o.onerror=e=>(n.close(),t(o.error)),r.oncomplete=()=>n.close()},a.onerror=e=>t(a.error)}))}async removeModel(e){return e=maybeStripScheme$1(e),new Promise(((t,a)=>{const n=this.indexedDB.open(DATABASE_NAME,1);n.onupgradeneeded=()=>setUpDatabase(n),n.onsuccess=()=>{const r=n.result,o=r.transaction(INFO_STORE_NAME,"readwrite"),i=o.objectStore(INFO_STORE_NAME),s=i.get(e);let l;s.onsuccess=()=>{if(null==s.result)return r.close(),a(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{const n=i.delete(e),o=()=>{l=r.transaction(MODEL_STORE_NAME,"readwrite");const n=l.objectStore(MODEL_STORE_NAME).delete(e);n.onsuccess=()=>t(s.result.modelArtifactsInfo),n.onerror=e=>a(s.error)};n.onsuccess=o,n.onerror=e=>(o(),r.close(),a(s.error))}},s.onerror=e=>(r.close(),a(s.error)),o.oncomplete=()=>{null==l?r.close():l.oncomplete=()=>r.close()}},n.onerror=e=>a(n.error)}))}}const PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(e){return{info:[PATH_PREFIX,e,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,e,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,e,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,e,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,e,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function removeItems(e){for(const t of Object.values(e))window.localStorage.removeItem(t)}function getModelPathFromKey(e){const t=e.split(PATH_SEPARATOR);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(PATH_SEPARATOR)}function maybeStripScheme(e){return e.startsWith(BrowserLocalStorage.URL_SCHEME)?e.slice(BrowserLocalStorage.URL_SCHEME.length):e}class BrowserLocalStorage{constructor(e){if(!env().getBool("IS_BROWSER")||"undefined"==typeof window||void 0===window.localStorage)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==e||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=getModelKeys(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{const t=JSON.stringify(e.modelTopology),a=JSON.stringify(e.weightSpecs),n=getModelArtifactsInfoForJSON(e),r=CompositeArrayBuffer.join(e.weightData);try{this.LS.setItem(this.keys.info,JSON.stringify(n)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,a),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(r));return this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,signature:null!=e.signature?e.signature:void 0,userDefinedMetadata:null!=e.userDefinedMetadata?e.userDefinedMetadata:void 0,modelInitializer:null!=e.modelInitializer?e.modelInitializer:void 0,initializerSignature:null!=e.initializerSignature?e.initializerSignature:void 0,trainingConfig:null!=e.trainingConfig?e.trainingConfig:void 0})),{modelArtifactsInfo:n}}catch(e){throw removeItems(this.keys),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${n.modelTopologyBytes}, weightSpecsBytes=${n.weightSpecsBytes}, weightDataBytes=${n.weightDataBytes}.`)}}}async load(){const e=JSON.parse(this.LS.getItem(this.keys.info));if(null==e)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if("JSON"!==e.modelTopologyType)throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");const t={},a=JSON.parse(this.LS.getItem(this.keys.topology));if(null==a)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=a;const n=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(null==n)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=n;const r=this.LS.getItem(this.keys.modelMetadata);if(null!=r){const e=JSON.parse(r);t.format=e.format,t.generatedBy=e.generatedBy,t.convertedBy=e.convertedBy,null!=e.signature&&(t.signature=e.signature),null!=e.userDefinedMetadata&&(t.userDefinedMetadata=e.userDefinedMetadata),null!=e.modelInitializer&&(t.modelInitializer=e.modelInitializer),null!=e.initializerSignature&&(t.initializerSignature=e.initializerSignature),null!=e.trainingConfig&&(t.trainingConfig=e.trainingConfig)}const o=this.LS.getItem(this.keys.weightData);if(null==o)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=base64StringToArrayBuffer(o),t}}BrowserLocalStorage.URL_SCHEME="localstorage://";const localStorageRouter=e=>env().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(e.slice(BrowserLocalStorage.URL_SCHEME.length)):null;function browserLocalStorage(e){return new BrowserLocalStorage(e)}IORouterRegistry.registerSaveRouter(localStorageRouter),IORouterRegistry.registerLoadRouter(localStorageRouter);class BrowserLocalStorageManager{constructor(){assert(env().getBool("IS_BROWSER"),(()=>"Current environment is not a web browser")),assert("undefined"==typeof window||void 0!==window.localStorage,(()=>"Current browser does not appear to support localStorage")),this.LS=window.localStorage}async listModels(){const e={},t=PATH_PREFIX+PATH_SEPARATOR,a=PATH_SEPARATOR+INFO_SUFFIX;for(let n=0;n<this.LS.length;++n){const r=this.LS.key(n);if(r.startsWith(t)&&r.endsWith(a)){e[getModelPathFromKey(r)]=JSON.parse(this.LS.getItem(r))}}return e}async removeModel(e){const t=getModelKeys(e=maybeStripScheme(e));if(null==this.LS.getItem(t.info))throw new Error(`Cannot find model at path '${e}'`);const a=JSON.parse(this.LS.getItem(t.info));return removeItems(t),a}}const URL_SCHEME_SUFFIX="://";class ModelStoreManagerRegistry{constructor(){this.managers={}}static getInstance(){return null==ModelStoreManagerRegistry.instance&&(ModelStoreManagerRegistry.instance=new ModelStoreManagerRegistry),ModelStoreManagerRegistry.instance}static registerManager(e,t){assert(null!=e,(()=>"scheme must not be undefined or null.")),e.endsWith("://")&&(e=e.slice(0,e.indexOf("://"))),assert(e.length>0,(()=>"scheme must not be an empty string."));const a=ModelStoreManagerRegistry.getInstance();assert(null==a.managers[e],(()=>`A model store manager is already registered for scheme '${e}'.`)),a.managers[e]=t}static getManager(e){const t=ModelStoreManagerRegistry.getInstance().managers[e];if(null==t)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(ModelStoreManagerRegistry.getInstance().managers)}}class PlatformBrowser{constructor(){this.messageName="setTimeoutCustom",this.functionRefs=[],this.handledMessageCount=0,this.hasEventListener=!1}fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}setTimeoutCustom(e,t){"undefined"!=typeof window&&env().getBool("USE_SETTIMEOUTCUSTOM")?(this.functionRefs.push(e),setTimeout((()=>{window.postMessage({name:this.messageName,index:this.functionRefs.length-1},"*")}),t),this.hasEventListener||(this.hasEventListener=!0,window.addEventListener("message",(e=>{if(e.source===window&&e.data.name===this.messageName){e.stopPropagation();(0,this.functionRefs[e.data.index])(),this.handledMessageCount++,this.handledMessageCount===this.functionRefs.length&&(this.functionRefs=[],this.handledMessageCount=0)}}),!0))):setTimeout(e,t)}isTypedArray(e){return isTypedArrayBrowser(e)}}if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(e){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(e){}}const getNodeFetch={importFetch:()=>require("node-fetch")};let systemFetch;class PlatformNode{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return null!=env().global.fetch?env().global.fetch(e,t):(null==systemFetch&&(systemFetch=getNodeFetch.importFetch()),systemFetch(e,t))}now(){const e=process.hrtime();return 1e3*e[0]+e[1]/1e6}encode(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return 0===e.length?"":new this.util.TextDecoder(t).decode(e)}isTypedArray(e){return this.util.types.isFloat32Array(e)||this.util.types.isInt32Array(e)||this.util.types.isUint8Array(e)||this.util.types.isUint8ClampedArray(e)}}function buffer(e,t="float32",a){return t=t||"float32",assertNonNegativeIntegerDimensions(e),new TensorBuffer(e,t,a)}function cast_(e,t){const a=convertToTensor(e,"x","cast");if(!isValidDtype(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if("string"===t&&"string"!==a.dtype||"string"!==t&&"string"===a.dtype)throw new Error("Only strings can be casted to strings");return ENGINE.runKernel(Cast,{x:a},{dtype:t})}env().get("IS_NODE")&&!env().get("IS_BROWSER")&&env().setPlatform("node",new PlatformNode);const cast=op({cast_:cast_});function clone_(e){const t=convertToTensor(e,"x","clone","string_or_numeric");return ENGINE.runKernel(Identity,{x:t})}const clone=op({clone_:clone_});function print(e,t=!1){console.log(e.toString(t))}getOrMakeEngine();const opHandler={buffer:buffer,cast:cast,clone:clone,print:print};function tidy(e,t){return ENGINE.tidy(e,t)}function dispose(e){getTensorsInContainer(e).forEach((e=>e.dispose()))}function keep(e){return ENGINE.keep(e)}function add_(e,t){let a=convertToTensor(e,"a","add"),n=convertToTensor(t,"b","add");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(Add,{a:a,b:n})}setOpHandler(opHandler);const add=op({add_:add_});function floorDiv_(e,t){let a=convertToTensor(e,"a","floorDiv"),n=convertToTensor(t,"b","floorDiv");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(FloorDiv,{a:a,b:n})}const floorDiv=op({floorDiv_:floorDiv_});function div_(e,t){let a=convertToTensor(e,"a","div"),n=convertToTensor(t,"b","div");if([a,n]=makeTypesMatch(a,n),"int32"===a.dtype&&"int32"===n.dtype)return floorDiv(a,n);return ENGINE.runKernel(RealDiv,{a:a,b:n},{})}const div=op({div_:div_});function mul_(e,t){let a=convertToTensor(e,"a","mul"),n=convertToTensor(t,"b","mul");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(Multiply,{a:a,b:n})}const mul=op({mul_:mul_});function abs_(e){const t=convertToTensor(e,"x","abs");if("complex64"===t.dtype){return ENGINE.runKernel(ComplexAbs,{x:t})}return ENGINE.runKernel(Abs,{x:t})}const abs=op({abs_:abs_});function fill(e,t,a){assertNonNegativeIntegerDimensions(e),a=a||inferDtype(t);return ENGINE.runKernel(Fill,{},{shape:e,value:t,dtype:a})}function assertAndGetBroadcastShape(e,t){const a=Math.max(e.length,t.length),n=new Array(a);for(let r=0;r<a;r++){let o=e[e.length-r-1];null==o&&(o=1);let i=t[t.length-r-1];if(null==i&&(i=1),1===o)n[a-r-1]=i;else if(1===i)n[a-r-1]=o;else{if(o!==i){throw Error(`Operands could not be broadcast together with shapes ${e} and ${t}.`)}n[a-r-1]=o}}return n}function zerosLike_(e){const t=convertToTensor(e,"x","zerosLike");return ENGINE.runKernel(ZerosLike,{x:t})}const zerosLike=op({zerosLike_:zerosLike_});function pow_(e,t){let a=convertToTensor(e,"base","pow"),n=convertToTensor(t,"exp","pow");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(Pow,{a:a,b:n})}const pow=op({pow_:pow_});function scalar(e,t){if((isTypedArray(e)&&"string"!==t||Array.isArray(e))&&"complex64"!==t)throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if("string"===t&&isTypedArray(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return makeTensor(e,[],[],t)}function sqrt_(e){const t=convertToTensor(e,"x","sqrt","float32");return ENGINE.runKernel(Sqrt,{x:t})}const sqrt=op({sqrt_:sqrt_});function square_(e){const t=convertToTensor(e,"x","square");return ENGINE.runKernel("Square",{x:t},{})}const square=op({square_:square_});function variableGrads(e,t){assert(isFunction(e),(()=>"The f passed in variableGrads(f) must be a function")),assert(null==t||Array.isArray(t)&&t.every((e=>e instanceof Variable)),(()=>"The varList passed in variableGrads(f, varList) must be an array of variables"));const a=null!=t;if(!a){t=[];for(const e in ENGINE.registeredVariables)t.push(ENGINE.registeredVariables[e])}const n=a?t.filter((e=>!e.trainable)):null,r=t.length;assert((t=t.filter((e=>e.trainable))).length>0,(()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${r} variables is trainable.`));const{value:o,grads:i}=ENGINE.gradients(e,t,null,!0);assert(i.some((e=>null!=e)),(()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize().")),assert(0===o.rank,(()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${o.rank} tensor`));const s={};return t.forEach(((e,t)=>{null!=i[t]&&(s[e.name]=i[t])})),null!=n&&n.forEach((e=>s[e.name]=null)),{value:o,grads:s}}function sub_(e,t){let a=convertToTensor(e,"a","sub"),n=convertToTensor(t,"b","sub");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(Sub,{a:a,b:n})}const sub=op({sub_:sub_});function maximum_(e,t){let a=convertToTensor(e,"a","maximum"),n=convertToTensor(t,"b","maximum");[a,n]=makeTypesMatch(a,n),"bool"===a.dtype&&(a=cast(a,"int32"),n=cast(n,"int32")),assertAndGetBroadcastShape(a.shape,n.shape);return ENGINE.runKernel(Maximum,{a:a,b:n})}const maximum=op({maximum_:maximum_});class Serializable{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}}class SerializationMap{constructor(){this.classNameMap={}}static getMap(){return null==SerializationMap.instance&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(e){SerializationMap.getMap().classNameMap[e.className]=[e,e.fromConfig]}}function registerClass(e){assert(null!=e.className,(()=>"Class being registered does not have the static className property defined.")),assert("string"==typeof e.className,(()=>"className is required to be a string, but got type "+typeof e.className)),assert(e.className.length>0,(()=>"Class being registered has an empty-string as its className, which is disallowed.")),SerializationMap.register(e)}class Optimizer extends Serializable{minimize(e,t=!1,a){const{value:n,grads:r}=this.computeGradients(e,a);if(null!=a){const e=a.map((e=>({name:e.name,tensor:r[e.name]})));this.applyGradients(e)}else this.applyGradients(r);return dispose(r),t?n:(n.dispose(),null)}get iterations(){return null==this.iterations_&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return variableGrads(e,t)}dispose(){null!=this.iterations_&&dispose(this.iterations_)}async saveIterations(){return null==this.iterations_&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}}Object.defineProperty(Optimizer,Symbol.hasInstance,{value:e=>null!=e.minimize&&null!=e.computeGradients&&null!=e.applyGradients});class AdadeltaOptimizer extends Optimizer{static get className(){return"Adadelta"}constructor(e,t,a=null){super(),this.learningRate=e,this.rho=t,this.epsilon=a,this.accumulatedGrads=[],this.accumulatedUpdates=[],null==a&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=ENGINE.registeredVariables[t];null==this.accumulatedGrads[a]&&(this.accumulatedGrads[a]={originalName:`${t}/accum_grad`,variable:tidy((()=>zerosLike(n).variable(false)))}),null==this.accumulatedUpdates[a]&&(this.accumulatedUpdates[a]={originalName:`${t}/accum_var`,variable:tidy((()=>zerosLike(n).variable(false)))});const r=Array.isArray(e)?e[a].tensor:e[t];if(null==r)return;const o=this.accumulatedGrads[a].variable,i=this.accumulatedUpdates[a].variable;tidy((()=>{const e=add(mul(o,this.rho),mul(square(r),1-this.rho)),t=mul(div(sqrt(add(i,this.epsilon)),sqrt(add(o,this.epsilon))),r),a=add(mul(i,this.rho),mul(square(t),1-this.rho));o.assign(e),i.assign(a);const s=add(mul(t,-this.learningRate),n);n.assign(s)}))})),this.incrementIterations()}dispose(){null!=this.accumulatedUpdates&&(dispose(this.accumulatedGrads.map((e=>e.variable))),dispose(this.accumulatedUpdates.map((e=>e.variable))))}async getWeights(){const e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){const t=(e=await this.extractIterations(e)).length/2;this.accumulatedGrads=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)}))),this.accumulatedUpdates=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}}class AdagradOptimizer extends Optimizer{static get className(){return"Adagrad"}constructor(e,t=.1){super(),this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=ENGINE.registeredVariables[t];if(null==this.accumulatedGrads[a]){const e=!1;this.accumulatedGrads[a]={originalName:`${t}/accumulator`,variable:tidy((()=>fill(n.shape,this.initialAccumulatorValue).variable(e)))}}const r=Array.isArray(e)?e[a].tensor:e[t];if(null==r)return;const o=this.accumulatedGrads[a].variable;tidy((()=>{const e=add(o,square(r));o.assign(e);const t=add(mul(div(r,sqrt(add(e,ENGINE.backend.epsilon()))),-this.learningRate),n);n.assign(t)}))})),this.incrementIterations()}dispose(){null!=this.accumulatedGrads&&dispose(this.accumulatedGrads.map((e=>e.variable)))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e);this.accumulatedGrads=e.map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}}class AdamOptimizer extends Optimizer{static get className(){return"Adam"}constructor(e,t,a,n=null){super(),this.learningRate=e,this.beta1=t,this.beta2=a,this.epsilon=n,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy((()=>{this.accBeta1=scalar(t).variable(),this.accBeta2=scalar(a).variable()})),null==n&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);tidy((()=>{const a=sub(1,this.accBeta1),n=sub(1,this.accBeta2);t.forEach(((t,r)=>{const o=ENGINE.registeredVariables[t];null==this.accumulatedFirstMoment[r]&&(this.accumulatedFirstMoment[r]={originalName:`${t}/m`,variable:tidy((()=>zerosLike(o).variable(false)))}),null==this.accumulatedSecondMoment[r]&&(this.accumulatedSecondMoment[r]={originalName:`${t}/v`,variable:tidy((()=>zerosLike(o).variable(false)))});const i=Array.isArray(e)?e[r].tensor:e[t];if(null==i)return;const s=this.accumulatedFirstMoment[r].variable,l=this.accumulatedSecondMoment[r].variable,c=add(mul(s,this.beta1),mul(i,1-this.beta1)),u=add(mul(l,this.beta2),mul(square(i),1-this.beta2)),d=div(c,a),f=div(u,n);s.assign(c),l.assign(u);const m=add(mul(div(d,add(sqrt(f),this.epsilon)),-this.learningRate),o);o.assign(m)})),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))})),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&dispose(this.accumulatedFirstMoment.map((e=>e.variable))),null!=this.accumulatedSecondMoment&&dispose(this.accumulatedSecondMoment.map((e=>e.variable)))}async getWeights(){const e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e),tidy((()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))}));const t=e.length/2;this.accumulatedFirstMoment=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)}))),this.accumulatedSecondMoment=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}}class AdamaxOptimizer extends Optimizer{static get className(){return"Adamax"}constructor(e,t,a,n=null,r=0){super(),this.learningRate=e,this.beta1=t,this.beta2=a,this.epsilon=n,this.decay=r,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy((()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(t).variable()})),null==n&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);tidy((()=>{const a=sub(1,this.accBeta1),n=div(-this.learningRate,add(mul(this.iteration,this.decay),1));t.forEach(((t,r)=>{const o=ENGINE.registeredVariables[t];null==this.accumulatedFirstMoment[r]&&(this.accumulatedFirstMoment[r]={originalName:`${t}/m`,variable:zerosLike(o).variable(false)}),null==this.accumulatedWeightedInfNorm[r]&&(this.accumulatedWeightedInfNorm[r]={originalName:`${t}/v`,variable:zerosLike(o).variable(false)});const i=Array.isArray(e)?e[r].tensor:e[t];if(null==i)return;const s=this.accumulatedFirstMoment[r].variable,l=this.accumulatedWeightedInfNorm[r].variable,c=add(mul(s,this.beta1),mul(i,1-this.beta1)),u=mul(l,this.beta2),d=abs(i),f=maximum(u,d);s.assign(c),l.assign(f);const m=add(mul(div(n,a),div(c,add(f,this.epsilon))),o);o.assign(m)})),this.iteration.assign(add(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))})),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&dispose(this.accumulatedFirstMoment.map((e=>e.variable))),null!=this.accumulatedWeightedInfNorm&&dispose(this.accumulatedWeightedInfNorm.map((e=>e.variable)))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}}class SGDOptimizer extends Optimizer{static get className(){return"SGD"}constructor(e){super(),this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=Array.isArray(e)?e[a].tensor:e[t];if(null==n)return;const r=ENGINE.registeredVariables[t];tidy((()=>{const e=add(mul(this.c,n),r);r.assign(e)}))})),this.incrementIterations()}setLearningRate(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=keep(scalar(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(0!==(e=await this.extractIterations(e)).length)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}}class MomentumOptimizer extends SGDOptimizer{static get className(){return"Momentum"}constructor(e,t,a=!1){super(e),this.learningRate=e,this.momentum=t,this.useNesterov=a,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=ENGINE.registeredVariables[t];if(null==this.accumulations[a]){const e=!1;this.accumulations[a]={originalName:`${t}/momentum`,variable:tidy((()=>zerosLike(n).variable(e)))}}const r=this.accumulations[a].variable,o=Array.isArray(e)?e[a].tensor:e[t];null!=o&&tidy((()=>{let e;const t=add(mul(this.m,r),o);e=add(mul(this.c,this.useNesterov?add(o,mul(t,this.m)):t),n),r.assign(t),n.assign(e)}))})),this.incrementIterations()}dispose(){this.m.dispose(),null!=this.accumulations&&dispose(this.accumulations.map((e=>e.variable)))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e);this.accumulations=e.map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}}class RMSPropOptimizer extends Optimizer{static get className(){return"RMSProp"}constructor(e,t=.9,a=0,n=null,r=!1){if(super(),this.learningRate=e,this.decay=t,this.momentum=a,this.epsilon=n,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=r,null==n&&(this.epsilon=ENGINE.backend.epsilon()),null==e)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=ENGINE.registeredVariables[t],r=!1;null==this.accumulatedMeanSquares[a]&&(this.accumulatedMeanSquares[a]={originalName:`${t}/rms`,variable:tidy((()=>zerosLike(n).variable(r)))}),null==this.accumulatedMoments[a]&&(this.accumulatedMoments[a]={originalName:`${t}/momentum`,variable:tidy((()=>zerosLike(n).variable(r)))}),null==this.accumulatedMeanGrads[a]&&this.centered&&(this.accumulatedMeanGrads[a]={originalName:`${t}/mg`,variable:tidy((()=>zerosLike(n).variable(r)))});const o=Array.isArray(e)?e[a].tensor:e[t];if(null==o)return;const i=this.accumulatedMeanSquares[a].variable,s=this.accumulatedMoments[a].variable;tidy((()=>{const e=add(mul(i,this.decay),mul(square(o),1-this.decay));if(this.centered){const t=this.accumulatedMeanGrads[a].variable,r=add(mul(t,this.decay),mul(o,1-this.decay)),l=div(mul(o,this.learningRate),sqrt(sub(e,add(square(r),this.epsilon)))),c=add(mul(s,this.momentum),l);i.assign(e),t.assign(r),s.assign(c);const u=sub(n,c);n.assign(u)}else{const e=add(mul(i,this.decay),mul(square(o),1-this.decay)),t=add(mul(s,this.momentum),div(mul(o,this.learningRate),sqrt(add(e,this.epsilon))));i.assign(e),s.assign(t);const a=sub(n,t);n.assign(a)}}))})),this.incrementIterations()}dispose(){null!=this.accumulatedMeanSquares&&dispose(this.accumulatedMeanSquares.map((e=>e.variable))),null!=this.accumulatedMeanGrads&&this.centered&&dispose(this.accumulatedMeanGrads.map((e=>e.variable))),null!=this.accumulatedMoments&&dispose(this.accumulatedMoments.map((e=>e.variable)))}async getWeights(){const e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e);const t=this.centered?e.length/3:e.length/2,a=!1;this.accumulatedMeanSquares=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(a)}))),this.accumulatedMoments=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(a)}))),this.centered&&(this.accumulatedMeanGrads=e.slice(2*t,3*t).map((e=>({originalName:e.name,variable:e.tensor.variable(a)}))))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}}const OPTIMIZERS=[AdadeltaOptimizer,AdagradOptimizer,AdamOptimizer,AdamaxOptimizer,MomentumOptimizer,RMSPropOptimizer,SGDOptimizer];function registerOptimizers(){for(const e of OPTIMIZERS)registerClass(e)}registerOptimizers();const contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function clearWebGLContext(e){delete contexts[e]}function getWebGLContext(e,t){if(!(e in contexts)||null!=t){const a=getWebGLRenderingContext(e,t);if(null===a)return console.log("Could not get context for WebGL version",e),null;contexts[e]=a}const a=contexts[e];return null==a||a.isContextLost()?(delete contexts[e],getWebGLContext(e)):(a.disable(a.DEPTH_TEST),a.disable(a.STENCIL_TEST),a.disable(a.BLEND),a.disable(a.DITHER),a.disable(a.POLYGON_OFFSET_FILL),a.disable(a.SAMPLE_COVERAGE),a.enable(a.SCISSOR_TEST),a.enable(a.CULL_FACE),a.cullFace(a.BACK),contexts[e])}function createCanvas(e){if(env().getBool("IS_SAFARI")||"undefined"==typeof OffscreenCanvas||2!==e){if("undefined"!=typeof document)return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}return new OffscreenCanvas(300,150)}function getWebGLRenderingContext(e,t){if(1!==e&&2!==e)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");const a=null==t?createCanvas(e):t;return a.addEventListener("webglcontextlost",(t=>{t.preventDefault(),delete contexts[e]}),!1),env().getBool("SOFTWARE_WEBGL_ENABLED")&&(WEBGL_ATTRIBUTES.failIfMajorPerformanceCaveat=!1),1===e?a.getContext("webgl",WEBGL_ATTRIBUTES)||a.getContext("experimental-webgl",WEBGL_ATTRIBUTES):a.getContext("webgl2",WEBGL_ATTRIBUTES)}var DEFAULT_CDN_URL="https://websdk-cdn-dev.idmission.com/assets";function getFrameDimensions(e){var t=e.width,a=e.height;return e instanceof HTMLVideoElement&&(t=e.videoWidth,a=e.videoHeight),[t,a]}var templateObject_1$9,InvisibleCanvas=styled__default.default.canvas(templateObject_1$9||(templateObject_1$9=tslib.__makeTemplateObject(["\n display: none;\n"],["\n display: none;\n"])));function drawToCanvas(e,t,a,n){if(e){var r=e.getContext("2d");if(r){if(!a||!n){var o=getFrameDimensions(t);a||(a=o[0]),n||(n=o[1])}e.width=a,e.height=n,r.drawImage(t,0,0,a,n)}}}function clearCanvas(e){if(e){var t=e.getContext("2d");t&&t.clearRect(0,0,e.width,e.height)}}function cropToShoulders(e,t,a,n){if(!e||!t)return"";var r=e.getContext("2d"),o=t.getContext("2d");if(!r||!o)throw new Error("could not get 2d context");e.width=a.width,e.height=a.height,r.putImageData(a,0,0);var i=n.box,s=i.width,l=.6*a.height-s,c=Math.max(0,i.xMin-l/2);isMobile()?(t.width=a.width,t.height=a.height,o.drawImage(e,0,0,t.width,t.height)):(t.width=s+l,t.height=a.height,o.drawImage(e,c,0,t.width,t.height,0,0,t.width,t.height));var u=t.toDataURL("image/jpeg",.92);return clearCanvas(e),clearCanvas(t),u}function cropToBoundingBox(e,t){var a=document.createElement("canvas"),n=a.getContext("2d");if(!n)throw new Error("could not get 2d context");var r=getFrameDimensions(e),o=r[0],i=r[1],s=t[0],l=t[1],c=t[2],u=t[3];return a.width=c*o,a.height=u*i,n.drawImage(e,s*o,l*i,c*o,u*i,0,0,c*o,u*i),a}var PREDICTION_POSITIONS={boxes:0,scores:7,labels:4},IdCaptureModelsContext=React.createContext({ready:!1,working:{current:!1},error:null,thresholds:{},setThresholds:function(){return null},makePrediction:function(){return null},onPredictionMade:function(){return null},detectionTime:0,focusPredictionTime:0,getBestFrame:function(){return Promise.resolve(null)},resetBestFrame:function(){return null}}),defaultDocumentDetectionModelUrl="".concat(DEFAULT_CDN_URL,"/models/documentdetection448/model.json"),defaultFocusModelUrl="".concat(DEFAULT_CDN_URL,"/models/focus/model.json"),IdCaptureModelsProvider=function(e){var t=e.children,a=e.documentDetectionModelUrl,n=e.focusModelUrl,r=e.logPredictions,o=void 0!==r&&r,i=React.useState(!1),s=i[0],l=i[1],c=React.useState(0),u=c[0],d=c[1],f=React.useState(0),m=f[0],p=f[1],g=React.useState(0),h=g[0],b=g[1],v=React.useState(0),_=v[0],y=v[1],R=React.useState(0),C=R[0],S=R[1],E=React.useRef(!1),T=React.useRef(),w=React.useRef(null),x=React.useState(0),I=x[0],k=x[1],D=React.useState(0),A=D[0],M=D[1],F=React.useState(null),B=F[0],O=F[1];React.useEffect((function(){l(!1);var e=a||defaultDocumentDetectionModelUrl,t=n||defaultFocusModelUrl;function r(){return tslib.__awaiter(this,void 0,void 0,(function(){return tslib.__generator(this,(function(a){switch(a.label){case 0:return tf__namespace.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",52428800),[4,tf__namespace.setBackend("webgl")];case 1:return a.sent(),[4,tf__namespace.ready()];case 2:return a.sent(),[4,Promise.all([loadDocumentDetectionModel(e),loadFocusModel(t)])];case 3:return a.sent(),[2]}}))}))}function o(){return tslib.__awaiter(this,void 0,void 0,(function(){var a;return tslib.__generator(this,(function(n){switch(n.label){case 0:return l(!1),unloadDocumentDetectionModel(),unloadFocusModel(),clearWebGLContext(2),(a=document.createElement("canvas").getContext("webgl2"))&&e&&t?(tf.setWebGLContext(2,a),disposeTfBackend(),[4,r()]):[3,2];case 1:n.sent(),l(!0),n.label=2;case 2:return[2]}}))}))}r().then((function(){l(!0)})).catch((function(e){O(e)}));var i=getWebGLContext(2).canvas;return i.addEventListener("webglcontextlost",o),function(){var e;null===(e=i.removeEventListener)||void 0===e||e.call(i,"webglcontextlost",o)}}),[a,n]);var N=React.useMemo((function(){return{document:u,passport:m,mrz:h,pdf417:_,focus:C}}),[u,C,h,m,_]),L=React.useCallback((function(e){e.document&&d(e.document),e.passport&&p(e.passport),e.mrz&&b(e.mrz),e.pdf417&&y(e.pdf417),e.focus&&S(e.focus)}),[]),P=React.useState(0),U=P[0],G=P[1],$=React.useRef(null),V=React.useRef(0),j=React.useCallback((function(e){E.current=!0,tslib.__awaiter(void 0,void 0,void 0,(function(){var t,a;return tslib.__generator(this,(function(n){switch(n.label){case 0:return documentDetectionModel&&focusModel&&w.current?[4,makePredictions(e,w.current,N,o)]:[2];case 1:return t=n.sent(),k(t.detectionTime),M(t.focusPredictionTime),V.current<=t.focusScore&&(V.current=t.focusScore,drawToCanvas($.current,e)),t.allZero&&G((function(e){return e+1})),null===(a=T.current)||void 0===a||a.call(T,t),E.current=!1,[2]}}))}))}),[o,N]);React.useEffect((function(){U>=2&&O(new Error("model is returning all zeroes"))}),[U]);var z=React.useCallback((function(e){T.current=e}),[]),q=React.useCallback((function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){var e;return tslib.__generator(this,(function(t){switch(t.label){case 0:return $.current?(e=$.current.toDataURL("image/jpeg",.98),[4,fetch(e)]):[2,null];case 1:return[4,t.sent().blob()];case 2:return[2,t.sent()]}}))}))}),[]),W=React.useCallback((function(){V.current=0,clearCanvas($.current)}),[]),H=React.useMemo((function(){return{ready:s,working:E,thresholds:N,setThresholds:L,makePrediction:j,onPredictionMade:z,detectionTime:I,focusPredictionTime:A,getBestFrame:q,resetBestFrame:W,error:B}}),[I,A,q,B,j,z,s,W,L,N]);return React__default.default.createElement(IdCaptureModelsContext.Provider,{value:H},t,React__default.default.createElement(InvisibleCanvas,{ref:w}),React__default.default.createElement(InvisibleCanvas,{ref:$}))};function makePredictions(e,t,a,n){var r,o,i,s,l,c,u,d,f,m;return void 0===n&&(n=!1),tslib.__awaiter(this,void 0,void 0,(function(){var p,g,h,b,v,_,y,R,C,S,E,T,w,x,I,k,D,A,M,F,B,O,N,L,P,U,G,$,V,j;return tslib.__generator(this,(function(z){switch(z.label){case 0:return p=getFrameDimensions(e),g=p[0],h=p[1],drawToCanvas(t,e),[4,makeDocumentDetectionPredictions(e,n)];case 1:return b=z.sent(),_=b.scores,y=b.labels,R=b.time,C=(v=b.boxes).length>0&&!v.some((function(e){return e.some((function(e){return e>0}))})),S=applyNonMaxSuppression(v.map((function(e,t){return bboxToDetectedObjectUnscaled(e,_[t],y[t])}))),E=S.find((function(e){return"Document"===e.label})),T=S.find((function(e){return"Passport Page"===e.label})),w=null!==(r=null==E?void 0:E.score)&&void 0!==r?r:0,x=null!==(o=null==T?void 0:T.score)&&void 0!==o?o:0,I=x>=(null!==(i=a.passport)&&void 0!==i?i:0),k=w>x?E:T,A=(D=I?x:w)>=(null!==(s=a.document)&&void 0!==s?s:0),M=DocumentType.NONE,I?M=DocumentType.PASSPORT:A&&(M=DocumentType.ID_CARD),F=S.find((function(e){return"MRZ"===e.label})),B=null!==(l=null==F?void 0:F.score)&&void 0!==l?l:0,O=B>=(null!==(c=a.mrz)&&void 0!==c?c:0),N=S.find((function(e){return"PDF417"===e.label})),L=null!==(u=null==N?void 0:N.score)&&void 0!==u?u:0,P=L>=(null!==(d=a.pdf417)&&void 0!==d?d:0),U=null,G=0,$=0,V=!1,A?[4,makeFocusPrediction(e,null==k?void 0:k.bbox,n)]:[3,3];case 2:j=z.sent(),G=j[1],$=null!==(f=null==(U=j[0])?void 0:U[1])&&void 0!==f?f:0,V=$>=(null!==(m=a.focus)&&void 0!==m?m:0),z.label=3;case 3:return[2,{detectedObjects:S,detectionScore:D,detectionTime:R,detectionThresholdMet:A,detectedDocumentType:M,passportDetectionScore:x,passportDetectionThresholdMet:I,mrzDetectionScore:B,mrzDetectionThresholdMet:O,pdf417DetectionScore:L,pdf417DetectionThresholdMet:P,bestDocumentOrPassport:k,bestMrz:F,bestPdf417:N,focusScore:$,focusThresholdMet:V,focusPredictionTime:G,frameWidth:g,frameHeight:h,allZero:C}]}}))}))}function makeDocumentDetectionPredictions(e,t){return void 0===t&&(t=!1),tslib.__awaiter(this,void 0,void 0,(function(){var a,n,r,o,i,s,l,c,u,d,f,m,p,g,h,b,v;return tslib.__generator(this,(function(_){switch(_.label){case 0:if(!documentDetectionModel)throw new Error("document detection model is not loaded");a=new Date,_.label=1;case 1:return _.trys.push([1,7,,8]),n=tf__namespace.browser.fromPixels(e),t&&console.time("resize"),r=tf__namespace.image.resizeBilinear(n,[448,448]),t&&console.timeEnd("resize"),n.dispose(),t&&console.time("convert to int32"),o=tf__namespace.cast(r,"int32"),r.dispose(),l=(s=tf__namespace).tensor4d,u=(c=Array).from,[4,o.data()];case 2:return i=l.apply(s,[u.apply(c,[_.sent()]),[1,448,448,3]]),o.dispose(),d=tf__namespace.cast(i,"int32"),t&&console.timeEnd("convert to int32"),i.dispose(),t&&console.time("predictions"),[4,documentDetectionModel.executeAsync(d)];case 3:return f=_.sent(),t&&console.timeEnd("predictions"),d.dispose(),m=f,t&&console.log("predictions made!",m.map((function(e){return e.arraySync()}))),[4,m[PREDICTION_POSITIONS.boxes].array()];case 4:return p=_.sent()[0],[4,m[PREDICTION_POSITIONS.scores].array()];case 5:return g=_.sent()[0],[4,m[PREDICTION_POSITIONS.labels].array()];case 6:return h=(h=_.sent()[0]).map((function(e){return Math.round(e)})),tf__namespace.dispose(f),b=(new Date).getTime()-a.getTime(),[2,{boxes:p,scores:g,labels:h,time:b}];case 7:return v=_.sent(),console.error("caught error in makeDocumentDetectionPredictions",v),[2,{boxes:[],scores:[],labels:[],time:0}];case 8:return[2]}}))}))}function makeFocusPrediction(e,t,a){return void 0===a&&(a=!1),tslib.__awaiter(this,void 0,void 0,(function(){var n,r,o,i,s,l,c,u,d,f,m,p,g;return tslib.__generator(this,(function(h){switch(h.label){case 0:if(!focusModel)throw new Error("focus model is not loaded");n=new Date,h.label=1;case 1:return h.trys.push([1,5,,6]),r=void 0,r=tf__namespace.browser.fromPixels(t?cropToBoundingBox(e,t):e),o=tf__namespace.image.resizeBilinear(r,[448,448]),r.dispose(),i=tf__namespace.cast(o,"int32"),o.dispose(),c=(l=tf__namespace).tensor4d,d=(u=Array).from,[4,i.data()];case 2:return s=c.apply(l,[d.apply(u,[h.sent()]),[1,448,448,3]]),i.dispose(),f=tf__namespace.cast(s,"int32"),s.dispose(),a&&console.time("focus prediction"),[4,focusModel.predict(f)];case 3:return m=h.sent(),f.dispose(),[4,m.array()];case 4:return p=h.sent()[0],a&&console.timeEnd("focus prediction"),tf__namespace.dispose(m),g=(new Date).getTime()-n.getTime(),[2,[p,g]];case 5:return h.sent(),[2,[[0,0],0]];case 6:return[2]}}))}))}function applyNonMaxSuppression(e){var t={};return e.forEach((function(e,a){e&&(t[e.label]||(t[e.label]=[0,-1]),e.score>t[e.label][0]&&(t[e.label]=[e.score,a]))})),Object.keys(t).map((function(a){return e[t[a][1]]})).filter((function(e){return!!e}))}function disposeTfBackend(){try{tf__namespace.backend().dispose()}catch(e){console.error("failed to dispose backend",e)}}var templateObject_1$8,templateObject_2$3,templateObject_3$2,templateObject_4$1,DebugStatsPane=styled__default.default.span(templateObject_1$8||(templateObject_1$8=tslib.__makeTemplateObject(["\n font-size: 16px;\n font-family: monospace;\n position: absolute;\n left: 20px;\n bottom: 20px;\n color: limegreen;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1001;\n"],["\n font-size: 16px;\n font-family: monospace;\n position: absolute;\n left: 20px;\n bottom: 20px;\n color: limegreen;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1001;\n"]))),ObjectDetectionDebugOverlay=styled__default.default.div(templateObject_2$3||(templateObject_2$3=tslib.__makeTemplateObject(["\n position: absolute;\n z-index: 1001;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n ","\n"],["\n position: absolute;\n z-index: 1001;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n ","\n"])),(function(e){return e.$flipX?"transform: scaleX(-1);":""})),ObjectDetectionDebugBox=styled__default.default.div(templateObject_3$2||(templateObject_3$2=tslib.__makeTemplateObject(["\n font: 10px monospace;\n position: absolute;\n border: 3px solid ",";\n color: ",";\n ","\n"],["\n font: 10px monospace;\n position: absolute;\n border: 3px solid ",";\n color: ",";\n ","\n"])),(function(e){var t=e.$color;return null!=t?t:"green"}),(function(e){var t=e.$color;return null!=t?t:"green"}),(function(e){return e.$flipX?"transform: scaleX(-1);":""})),FaceDetectionKeypointMarker=styled__default.default.div(templateObject_4$1||(templateObject_4$1=tslib.__makeTemplateObject(["\n position: absolute;\n width: 4px;\n height: 4px;\n border: 2px solid ",";\n font: 10px monospace;\n color: ",";\n border-radius: 50%;\n ","\n"],["\n position: absolute;\n width: 4px;\n height: 4px;\n border: 2px solid ",";\n font: 10px monospace;\n color: ",";\n border-radius: 50%;\n ","\n"])),(function(e){var t=e.$color;return null!=t?t:"red"}),(function(e){var t=e.$color;return null!=t?t:"red"}),(function(e){return e.$flipX?"transform: scaleX(-1);":""}));function useDebugScalingDetails(e){var t=e.enabled,a=void 0===t||t,n=e.pageWidth,r=e.pageHeight,o=e.videoWidth,i=e.videoHeight;return React.useMemo((function(){var e=!1,t=0,s=0,l=0,c=0;return a&&((e=n/r<o/i)?l=((t=o*(r/i))-n)/2:c=((s=i*(n/o))-r)/2),{horizontal:e,pageWidth:n,pageHeight:r,videoWidth:o,videoHeight:i,scaledWidth:t,scaledHeight:s,xOffset:l,yOffset:c}}),[a,r,n,i,o])}function IdCaptureDetectedObjectDebugBox(e){var t=e.obj,a=e.color,n=e.scaling,r=n.horizontal,o=n.pageWidth,i=n.pageHeight,s=n.scaledWidth,l=n.scaledHeight;return React__default.default.createElement(ObjectDetectionDebugBox,{$flipX:e.flipX,$color:void 0===a?"green":a,style:{top:t.bbox[1]*(r?i:l-n.yOffset),left:t.bbox[0]*(r?s-n.xOffset:o),width:t.bbox[2]*(r?s:o),height:t.bbox[3]*(r?i:l)}},t.label," (",t.score.toFixed(3),")")}function SelfieCaptureFaceDebugBox(e){var t,a,n,r,o=e.face,i=e.flipX,s=e.color,l=e.scaling,c=l.pageWidth,u=l.pageHeight,d=l.videoWidth,f=l.videoHeight,m=l.scaledWidth,p=l.scaledHeight;return l.horizontal?(t=o.box.yMin/f*u,a=o.box.xMin/d*m-l.xOffset,n=o.box.width/d*m,r=o.box.height/f*u):(t=o.box.yMin/f*p-l.yOffset,a=o.box.xMin/d*c,n=o.box.width/d*c,r=o.box.height/f*p),React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(ObjectDetectionDebugBox,{$flipX:i,$color:void 0===s?"green":s,style:{top:t,left:a,width:n,height:r}}),o.keypoints.map((function(e,t){return React__default.default.createElement(SelfieCaptureFaceKeypoint,{key:t,point:e,scaling:l,flipX:i})})))}function SelfieCaptureFaceKeypoint(e){var t,a,n=e.point,r=e.color,o=e.scaling,i=o.videoWidth,s=o.videoHeight;return o.horizontal?(t=n.x/i*o.scaledWidth-o.xOffset,a=n.y/s*o.pageHeight):(t=n.x/i*o.pageWidth,a=n.y/s*o.scaledHeight-o.yOffset),React__default.default.createElement(FaceDetectionKeypointMarker,{$flipX:e.flipX,$color:void 0===r?"red":r,style:{top:a-=2,left:t-=2}})}var templateObject_1$7,templateObject_1$6,templateObject_1$5,templateObject_2$2,templateObject_3$1,ExitCaptureButton=styled__default.default.button(templateObject_1$7||(templateObject_1$7=tslib.__makeTemplateObject(["\n position: absolute;\n top: 12px;\n right: 12px;\n font-size: 20px;\n width: 32px;\n height: 32px;\n font-family: monospace;\n z-index: 1002;\n border: none;\n border-radius: 4px;\n background: #ccc;\n cursor: pointer;\n\n &:hover {\n background: #ddd;\n }\n"],["\n position: absolute;\n top: 12px;\n right: 12px;\n font-size: 20px;\n width: 32px;\n height: 32px;\n font-family: monospace;\n z-index: 1002;\n border: none;\n border-radius: 4px;\n background: #ccc;\n cursor: pointer;\n\n &:hover {\n background: #ddd;\n }\n"]))),Spinner=styled__default.default.div(templateObject_1$6||(templateObject_1$6=tslib.__makeTemplateObject(["\n display: inline-block;\n width: ","px;\n height: ","px;\n margin: auto;\n\n &:after {\n content: ' ';\n display: block;\n width: ","px;\n height: ","px;\n margin: 8px;\n border-radius: 50%;\n border: ","px solid\n ",";\n border-color: "," transparent\n "," transparent;\n animation: lds-dual-ring 1.2s linear infinite;\n box-sizing: content-box;\n }\n\n @keyframes lds-dual-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n"],["\n display: inline-block;\n width: ","px;\n height: ","px;\n margin: auto;\n\n &:after {\n content: ' ';\n display: block;\n width: ","px;\n height: ","px;\n margin: 8px;\n border-radius: 50%;\n border: ","px solid\n ",";\n border-color: "," transparent\n "," transparent;\n animation: lds-dual-ring 1.2s linear infinite;\n box-sizing: content-box;\n }\n\n @keyframes lds-dual-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n"])),(function(e){var t=e.$size;return null!=t?t:80}),(function(e){var t=e.$size;return null!=t?t:80}),(function(e){var t=e.$size;return(null!=t?t:80)-16}),(function(e){var t=e.$size;return(null!=t?t:80)-16}),(function(e){var t=e.$thickness;return null!=t?t:6}),(function(e){var t=e.$color;return null!=t?t:"#888"}),(function(e){var t=e.$color;return null!=t?t:"#888"}),(function(e){var t=e.$color;return null!=t?t:"#888"})),IdCaptureImagePreview=function(e){var t=e.text,a=e.imageUrl;return React__default.default.createElement(ImagePreviewWrapper,null,t&&React__default.default.createElement(ImagePreviewText,null,t),React__default.default.createElement(ImagePreviewImageWrapper,null,React__default.default.createElement("img",{src:a,alt:""})))},SelfieProgressPreview=function(e){var t=e.imageUrl;return React__default.default.createElement(ImagePreviewWrapper,null,React__default.default.createElement(ImagePreviewText,null,React__default.default.createElement(Spinner,{$size:24,$color:"white",$thickness:3,style:{position:"relative",top:4,left:-3,margin:"0 3px 0 -12px"}}),"Processing..."),React__default.default.createElement(ImagePreviewImageWrapper,null,React__default.default.createElement("img",{src:t,alt:""})))},ImagePreviewWrapper=styled__default.default.div(templateObject_1$5||(templateObject_1$5=tslib.__makeTemplateObject(["\n position: absolute;\n display: flex;\n flex-direction: column;\n height: 33%;\n bottom: 12px;\n right: 12px;\n"],["\n position: absolute;\n display: flex;\n flex-direction: column;\n height: 33%;\n bottom: 12px;\n right: 12px;\n"]))),ImagePreviewText=styled__default.default.div(templateObject_2$2||(templateObject_2$2=tslib.__makeTemplateObject(["\n display: block;\n position: absolute;\n top: -32px;\n font:\n 14px -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n color: white;\n text-align: center;\n margin: 0 auto;\n width: 100%;\n"],["\n display: block;\n position: absolute;\n top: -32px;\n font:\n 14px -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n color: white;\n text-align: center;\n margin: 0 auto;\n width: 100%;\n"]))),ImagePreviewImageWrapper=styled__default.default.div(templateObject_3$1||(templateObject_3$1=tslib.__makeTemplateObject(["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"],["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"]))),enTranslation={},esTranslation={"Use your device camera to capture your ID":"Para capturar la identificación hay que utilizar la cámara del dispositivo.","Use your iPhone as a webcam":"Usar el iPhone como cámara web","Models warming up...":"Cargando modelos...","Camera initializing...":"Inicializando la cámara...","Camera access blocked":"Acceso bloqueado a la cámara","Location access blocked":"Acceso bloqueado a la localización",Continue:"Continuar","Your camera permission is disabled":"El permiso de la cámara está desactivado","This application requires access to your camera to continue. Please accept the permission once prompted by the browser. If the browser does not prompt for camera permissions, you must go to settings and provide camera access to the current browser.":"Esta aplicación requiere el acceso a la cámara para continuar. Hay que aceptar el permiso una vez que se muestre la ventana en el explorador. Si no aparece la ventana para otorgar permisos, entonces hay que dirigirse a Configuración y otorgar el permiso a la cámara en el explorador actual.","Your location permission is disabled":"El permiso de la localización está desactivado","This application requires access to your location to continue. Please accept the permission once prompted by the browser. If the browser does not prompt for location permissions, you must go to settings and provide location access to the current browser.":"Esta aplicación requiere el acceso a la localización para continuar. Hay que aceptar el permiso una vez que se muestre la ventana en el explorador. Si no aparece la ventana para otorgar permisos, entonces hay que dirigirse a Configuración y otorgar el permiso a la localización en el explorador actual.",Retry:"Reintentar","Scan the front of ID":"Escanear el frente de la ID","Scan the back of ID":"Escanear el reverso de la ID","Scan the ID page of passport":"Escanear la página de datos del pasaporte","ID Card Front":"Frente de la ID","ID Card Back":"Reverso de la ID",Passport:"Pasaporte","Document not detected":"No se ha detectado el documento","Document is not centered":"Documento no centrado","Document out of focus – try improving the lighting":"Documento no enfocado - hay que tratar de mejorar la iluminación","Document detected, hold still...":"Se ha detectado el documento, no moverse por favor...","Capturing...":"Capturando...","Capture failed!":"Falló la captura","Please flip your ID card...":"Por favor voltea la identificación...","ID card front captured.":"Se ha capturado el frente de la identificación.","ID Capture Successful":"Captura Exitosa de ID","Verify the entire ID was captured clearly with no glare.":"Hay que verificar que toda la ID se vea completa y sin reflejos.",Submit:"Enviar","Submitting...":"Enviando...","Use your device camera to capture your face":"Hay que utilizar la cámara del dispositivo para capturar el rostro","Remove Sunglasses & Hat":"Hay que quitarse lentes y/o la gorra","Avoid Excessive Backlighting":"Hay que evitar demasiada luz en el fondo","Hold still for a few seconds...":"Hay que permanecer quieto por unos segundos...","Look straight into the camera...":"Hay que mirar directamente a la cámara...","Move back...":"Hay que hacerse hacia atrás..","Move forward...":"Hay que hacerse hacia adelante...","Move to the center...":"Hay que moverse hacia el centro...","Please remove your eye coverings (sunglasses, eye patch, etc.)...":"Hay que quitarse lo que cubre los ojos (lentes, parche, etc.)...","Please remove your head coverings (hat, scarf, etc.)...":"Hay que quitarse lo que cubre la cabeza (gorra, mascada, etc.)...","Please remove your mask...":"Hay que quitarse el cubrebocas...","Live face not detected, please try again":"Rostro vivo no detectado. Por favor hay que intentar de nuevo.",Exit:"Salir","Face liveness has been verified!":"Se ha verificado la Prueba de Vida en rostro!",Done:"Terminar","Customer has been identified!":"¡Se ha identificado al cliente!","Customer not found":"Cliente no encontrado","Additional document capture":"Captura de otro documento",Next:"Siguiente","Please sign the box below":"Por favor, hay que firmar en el recuadro de abajo",Accept:"Aceptar",Clear:"Borrar","Video signature has been successfully captured!":"La video firma ha sido exitosa.","Network unreachable":"No hay conexión a internet.","We're having trouble reaching our services, please check your connection and try again.":"Estamos teniendo problemas para alcanzar nuestros servicios, por favor verificar la conexión a internet e intentar de nuevo.","We're sorry, an unexpected error has occurred.":"Lo sentimos, se ha producido un error inesperado."},resources={en:{translation:enTranslation},es:{translation:esTranslation}},useLanguage=function(e){var t=reactI18next.useTranslation().i18n;React.useEffect((function(){"auto"!==e?t.changeLanguage(e):t.changeLanguage()}),[t,e])};function evaluateVerbiage(e,t,a,n){if("string"==typeof a)return a;if("object"==typeof a){var r=a;if(r[t])return r[t];var o=t.split("-")[0];if(r[o])return r[o]}return e(n)}function useVerbiage(e,t){var a=reactI18next.useTranslation(),n=a.t,r=a.i18n;return React.useMemo((function(){return evaluateVerbiage(n,r.language,e,t)}),[t,r.language,n,e])}function useTranslations(e,t){var a=reactI18next.useTranslation(),n=a.t,r=a.i18n;return React.useMemo((function(){return tslib.__assign(tslib.__assign({},e),Object.keys(t).reduce((function(a,o){var i;return tslib.__assign(tslib.__assign({},a),((i={})[o]=evaluateVerbiage(n,r.language,null==e?void 0:e[o],t[o]),i))}),{}))}),[t,r.language,n,e])}var templateObject_1$4,templateObject_2$1,templateObject_1$3,GuidanceMessageContainer=styled__default.default.div(templateObject_1$4||(templateObject_1$4=tslib.__makeTemplateObject(["\n position: absolute;\n top: calc(",");\n font-weight: bold;\n width: 100%;\n display: flex;\n"],["\n position: absolute;\n top: calc(",");\n font-weight: bold;\n width: 100%;\n display: flex;\n"])),(function(e){var t=e.$top;return null!=t?t:"10vh"})),GuidanceMessage=styled__default.default.div(templateObject_2$1||(templateObject_2$1=tslib.__makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n background: ",";\n color: ",";\n padding: 10px 12px 8px;\n border-radius: 8px;\n"],["\n margin-left: auto;\n margin-right: auto;\n background: ",";\n color: ",";\n padding: 10px 12px 8px;\n border-radius: 8px;\n"])),(function(e){var t=e.$background;return null!=t?t:"#ccc"}),(function(e){var t=e.$textColor;return null!=t?t:"black"})),initialState$5={videoWidth:0,videoHeight:0,captureStartedAt:null,detectedObjects:[],bestDocument:void 0,bestMrz:void 0,bestPdf417:void 0,documentType:DocumentType.NONE,documentInBounds:!1,documentDetectionScore:0,documentDetectionThresholdMet:!1,passportPageDetectionScore:0,passportPageDetectionThresholdMet:!1,mrzDetectionScore:0,mrzDetectionThresholdMet:!1,pdf417DetectionScore:0,pdf417DetectionThresholdMet:!1,focusScore:0,focusThresholdMet:!1,barcodeScanningEnabled:!1,barcodeResult:null,waitingForBarcodeScan:!1,shouldScanBarcode:!1,autoCaptureBarcodeRequired:"mobile",barcodeScanFailedAttempts:0,maxBarcodeScanAttempts:10,isGoodFrame:!1,goodFramesCount:0,goodFramesThreshold:3,goodFramesThresholdMet:!1,lastFrameCapturedAt:null,frameCaptureRate:0,capturing:!1,captured:!1,captureFailed:!1},reducer$5=function(e,t){switch(t.type){case"configure":return tslib.__assign(tslib.__assign(tslib.__assign({},e),t.payload),{goodFramesCount:0,captureStartedAt:new Date,capturing:!1,captured:!1,captureFailed:!1});case"objectsDetected":var a=t.payload.prediction,n=a.detectedObjects,r=a.detectionScore,o=a.detectionThresholdMet,i=a.detectedDocumentType,s=a.passportDetectionScore,l=a.passportDetectionThresholdMet,c=a.mrzDetectionScore,u=a.mrzDetectionThresholdMet,d=a.pdf417DetectionScore,f=a.pdf417DetectionThresholdMet,m=a.bestDocumentOrPassport,p=a.bestMrz,g=a.bestPdf417,h=a.focusScore,b=a.focusThresholdMet,v=a.frameWidth,_=a.frameHeight,y=new Date,R=0,C=e.goodFramesThreshold;e.lastFrameCapturedAt&&(R=1e3/(y.getTime()-e.lastFrameCapturedAt.getTime()))>0&&(C=Math.ceil(3*R));var S=!1;if(m){var E=m.bbox,T=E[0],w=E[1],x=E[2],I=E[3];T*=v,x*=v,S=(w*=_)>20&&w+(I*=_)+20<_&&(T>20||T<20&&T+x>.8*v)&&T+x+20<v}var k=!0===e.autoCaptureBarcodeRequired||"mobile"===e.autoCaptureBarcodeRequired&&isMobile(),D=e.barcodeScanningEnabled&&f&&k,A=D&&!e.barcodeResult,M=o&&S&&b,F=e.goodFramesCount;return M&&(F+=1),tslib.__assign(tslib.__assign({},e),{videoWidth:v,videoHeight:_,detectedObjects:n,bestDocument:m,bestMrz:p,bestPdf417:g,documentType:i,documentInBounds:S,documentDetectionScore:r,documentDetectionThresholdMet:o,mrzDetectionScore:c,mrzDetectionThresholdMet:u,pdf417DetectionScore:d,pdf417DetectionThresholdMet:f,passportPageDetectionScore:s,passportPageDetectionThresholdMet:l,focusScore:h,focusThresholdMet:b,shouldScanBarcode:D,waitingForBarcodeScan:A,isGoodFrame:M,goodFramesCount:F,goodFramesThreshold:C,goodFramesThresholdMet:F>=C,lastFrameCapturedAt:y,frameCaptureRate:R});case"barcodeScanned":return tslib.__assign(tslib.__assign({},e),{barcodeResult:t.payload.result,waitingForBarcodeScan:!1,autoCaptureBarcodeRequired:!1});case"barcodeScanFailed":var B=tslib.__assign(tslib.__assign({},e),{barcodeScanFailedAttempts:e.barcodeScanFailedAttempts+1});return B.barcodeScanFailedAttempts>=B.maxBarcodeScanAttempts&&(B.autoCaptureBarcodeRequired=!1,B.shouldScanBarcode=!1,B.waitingForBarcodeScan=!1),B;case"capturing":return tslib.__assign(tslib.__assign({},e),{capturing:!0,captured:!1,captureFailed:!1});case"captured":return tslib.__assign(tslib.__assign({},e),{capturing:!1,captured:!0,captureFailed:!1});case"captureFailed":return tslib.__assign(tslib.__assign({},e),{capturing:!1,captured:!1,captureFailed:!0});default:return e}},IdCapture=function(e){var t,a,n,r=e.requiredDocumentType,o=e.autoCaptureEnabled,i=void 0===o||o,s=e.autoCaptureScoreThreshold,l=void 0===s?.8:s,c=e.autoCaptureGoodFramesRequired,u=void 0===c?3:c,d=e.autoCaptureBarcodeRequired,f=void 0===d?"mobile":d,m=e.mrzDetectionScoreThreshold,p=void 0===m?.25:m,g=e.passportPageDetectionThreshold,h=void 0===g?.6:g,b=e.pdf417DetectionThreshold,v=void 0===b?.15:b,_=e.focusScoreThreshold,y=void 0===_?.3:_,R=e.barcodeScanningEnabled,C=void 0===R||R,S=e.maxBarcodeScanAttempts,E=void 0===S?10:S,T=e.guidanceMessage,w=e.guidanceSatisfied,x=e.onPrediction,I=e.onBarcodeScanned,k=e.onCapture,D=e.onExit,A=e.processingScreen,M=e.processingDelay,F=void 0===M?0:M,B=e.assets,O=void 0===B?{}:B,N=e.colors,L=void 0===N?{}:N,P=e.verbiage,U=void 0===P?{}:P,G=e.debugMode,$=void 0!==G&&G,V=useResizeObserver__default.default(),j=V.ref,z=V.width,q=void 0===z?1:z,W=V.height,H=void 0===W?1:W,K=React.useReducer(reducer$5,initialState$5),Y=K[0],X=K[1],J=React.useState(""),Z=J[0],Q=J[1],ee=React.useState(!1),te=ee[0],ae=ee[1],ne=React.useContext(CameraStateContext),re=ne.cameraRef,oe=ne.cameraReady,ie=ne.takePhoto,se=ne.videoRef,le=ne.videoLoaded,ce=React.useRef(),ue=React.useContext(IdCaptureModelsContext),de=ue.ready,fe=ue.working,me=ue.setThresholds,pe=ue.makePrediction,ge=ue.onPredictionMade,he=ue.detectionTime,be=ue.focusPredictionTime,ve=ue.getBestFrame,_e=ue.resetBestFrame;React.useEffect((function(){ce.current=new Date}),[]),React.useEffect((function(){X({type:"configure",payload:{requiredDocumentType:r,goodFramesThreshold:u,autoCaptureBarcodeRequired:f,barcodeScanningEnabled:C,maxBarcodeScanAttempts:E}}),_e(),me({document:l,passport:h,mrz:p,pdf417:v,focus:y})}),[r,l,y,p,u,f,C,E,h,v,_e,me]);var ye=React.useRef(0),Re=React.useRef(!1);React.useEffect((function(){Re.current=le&&oe&&de&&!Y.capturing&&!Y.captured}),[oe,Y.captured,Y.capturing,de,le]);var Ce=React.useState(null),Se=Ce[0],Ee=Ce[1];React.useEffect((function(){if(de&&oe&&le)return ye.current=requestAnimationFrame((function e(){return tslib.__awaiter(this,void 0,void 0,(function(){var t,a;return tslib.__generator(this,(function(n){switch(n.label){case 0:if(!Re.current||fe.current)return[3,5];n.label=1;case 1:return n.trys.push([1,4,,5]),Y.shouldScanBarcode?[4,ie()]:[3,3];case 2:if(!(t=n.sent()))return ye.current=requestAnimationFrame(e),[2];Ee(t),n.label=3;case 3:return se.current&&pe(se.current),[3,5];case 4:return a=n.sent(),console.error("error capturing frame",a),[3,5];case 5:return ye.current=requestAnimationFrame(e),[2]}}))}))})),function(){cancelAnimationFrame(ye.current)}}),[oe,pe,de,fe,Y.shouldScanBarcode,ie,le,se]),React.useEffect((function(){ge((function(e){X({type:"objectsDetected",payload:{prediction:e}}),null==x||x(e)}))}),[x,ge]),React.useEffect((function(){tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return Y.shouldScanBarcode&&Se?[4,scanBarcode(Se,null===(t=Y.bestPdf417)||void 0===t?void 0:t.bbox)]:[3,2];case 1:(e=a.sent())?(X({type:"barcodeScanned",payload:{result:e}}),null==I||I(e)):X({type:"barcodeScanFailed"}),a.label=2;case 2:return[2]}}))}))}),[I,Y.shouldScanBarcode,null===(t=Y.bestPdf417)||void 0===t?void 0:t.bbox,ie,Se]);var Te=i&&Y.goodFramesThresholdMet&&!Y.capturing&&!Y.captured&&!Y.waitingForBarcodeScan&&timeSince(Y.captureStartedAt)>=3e3;React.useEffect((function(){tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a,n,r,o,i,s,l;return tslib.__generator(this,(function(c){switch(c.label){case 0:return Te?(X({type:"capturing"}),[4,ve()]):[2];case 1:return(e=c.sent())?(ae(!0),[4,getBlobDimensions(e)]):(console.log("uh oh, i did not get a photo"),X({type:"captureFailed"}),[2]);case 2:return t=c.sent(),a=t[0],n=t[1],(r=document.createElement("canvas")).width=a,r.height=n,[4,createImageBitmap(e)];case 3:if(o=c.sent(),(a>1920&&n>1080||a>1080&&n>1920)&&Y.barcodeResult){if(a>n?(r.width=1920,r.height=n*(1920/a)):(r.height=1920,r.width=a*(1920/n)),!(i=r.getContext("2d")))return[2];i.drawImage(o,0,0,r.width,r.height)}else{if(!(s=r.getContext("bitmaprenderer")))return[2];s.transferFromImageBitmap(o)}return l=r.toDataURL("image/jpeg",.92),Q(l),setTimeout((function(){var e,t=(new Date).getTime()-(null!==(e=ce.current)&&void 0!==e?e:new Date).getTime();null==k||k(l,a,n,{autoCapture:"Y",captureTime:t}),X({type:"captured"}),ae(!1)}),F),[2]}}))}))}),[ve,k,F,Te,Y.barcodeResult]),L.guideBoxUnsatisfiedColor||(L.guideBoxUnsatisfiedColor="white"),L.guideBoxSatisfiedColor||(L.guideBoxSatisfiedColor="green"),L.guidanceMessagesSatisfiedBackgroundColor||(L.guidanceMessagesSatisfiedBackgroundColor="green"),L.guidanceMessagesSatisfiedTextColor||(L.guidanceMessagesSatisfiedTextColor="white");var we=useTranslations(U,{instructionText:"Scan the front of ID",processingIdCardText:"ID card front captured.",capturingText:"Capturing...",captureFailedText:"Capture failed!",guidanceSatisfiedText:"Document detected, hold still...",guidanceTooBlurryText:"Document out of focus – try improving the lighting",guidanceNotCenteredText:"Document is not centered",guidanceNotDetectedText:"Document not detected"}),xe=useDebugScalingDetails({enabled:$,pageWidth:q,pageHeight:H,videoWidth:Y.videoWidth,videoHeight:Y.videoHeight}),Ie=Y.isGoodFrame;return"boolean"==typeof w&&(Ie=w),T||(T=Ie?we.guidanceSatisfiedText:Y.documentDetectionThresholdMet?Y.documentInBounds?Y.focusThresholdMet?"":we.guidanceTooBlurryText:we.guidanceNotCenteredText:we.guidanceNotDetectedText),te?React__default.default.createElement(React__default.default.Fragment,null,A,Z&&React__default.default.createElement(IdCaptureImagePreview,{text:we.processingIdCardText,imageUrl:Z})):""!==Z?React__default.default.createElement("img",{src:Z,alt:"",style:{maxWidth:"100%",maxHeight:"100%"}}):React__default.default.createElement(PageContainer,{ref:j,className:"flex"},React__default.default.createElement(DocumentCaptureGuideOverlay,{width:q,height:H,instruction:Y.captureFailed?we.captureFailedText:Y.capturing?null==we?void 0:we.capturingText:we.instructionText,portraitGuidesImageUrl:O.portraitGuidesImageUrl,landscapeGuidesImageUrl:O.landscapeGuidesImageUrl,isMirrored:!(null===(a=re.current)||void 0===a?void 0:a.isRearFacing),borderColor:Y.isGoodFrame?L.guideBoxSatisfiedColor:L.guideBoxUnsatisfiedColor}),""!==T&&React__default.default.createElement(GuidanceMessageContainer,{$top:"82.5vh"},React__default.default.createElement(GuidanceMessage,{$background:Ie?L.guidanceMessagesSatisfiedBackgroundColor:L.guidanceMessagesUnsatisfiedBackgroundColor,$textColor:Ie?L.guidanceMessagesSatisfiedTextColor:L.guidanceMessagesUnsatisfiedTextColor},T)),$&&Y.detectedObjects.length>0&&React__default.default.createElement(ObjectDetectionDebugOverlay,{$flipX:!(null===(n=re.current)||void 0===n?void 0:n.isRearFacing)},Y.detectedObjects.map((function(e,t){var a;return React__default.default.createElement(IdCaptureDetectedObjectDebugBox,{key:t,obj:e,scaling:xe,flipX:!(null===(a=re.current)||void 0===a?void 0:a.isRearFacing)})}))),$&&React__default.default.createElement(DebugStatsPane,null,re.current?React__default.default.createElement(React__default.default.Fragment,null,"✅ Camera: ",re.current.label," (",re.current.width,"x",re.current.height,")"):"❌ Camera not ready",React__default.default.createElement("br",null),Y.frameCaptureRate>.75?"✅":"👎"," Frame Rate:"," ",Math.round(1e3*(Y.frameCaptureRate+Number.EPSILON))/1e3," ","fps (",he,"ms doc detect, ",be,"ms focus)",React__default.default.createElement("br",null),de?React__default.default.createElement(React__default.default.Fragment,null,Y.documentDetectionThresholdMet?"✅":"❌"," Document Score: ",Y.documentDetectionScore," (",Y.documentType,")",React__default.default.createElement("br",null),Y.documentInBounds?"✅":"❌"," Document In Bounds",React__default.default.createElement("br",null),Y.focusThresholdMet?"✅":"❌"," Focus Score:"," ",Y.focusScore,React__default.default.createElement("br",null),Y.goodFramesThresholdMet?"✅":"❌"," Good Frame Count:"," ",Y.goodFramesCount,"/",Y.goodFramesThreshold,C&&Y.autoCaptureBarcodeRequired?React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("br",null),Y.barcodeResult?"✅":"❌"," Barcode Scanned (",supportsNativeBarcodeScanning()?"Native":"ZXing",","," ",Y.barcodeScanFailedAttempts,"/",Y.maxBarcodeScanAttempts," failed attempts)"):null):React__default.default.createElement(React__default.default.Fragment,null,"❌ Models not ready")),React__default.default.createElement(ExitCaptureButton,{onClick:D},"×"))},timeSince=function(e){return e?Math.abs((new Date).getTime()-e.getTime()):0},CameraAccessDeniedOverlay=function(e){var t,a,n=e.assets,r=void 0===n?{}:n,o=e.colors,i=void 0===o?{}:o,s=e.verbiage,l=void 0===s?{}:s,c=React.useContext(CameraStateContext).retryCameraAccess;r.imageUrl||(r.imageUrl=DEFAULT_CDN_URL+"/camera-disable-icon.png"),i.retryBtn||(i.retryBtn={}),(t=i.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=i.retryBtn).textColor||(a.textColor="white");var u=useTranslations(l,{headingText:"Your camera permission is disabled",descriptionText:"This application requires access to your camera to continue. Please accept the permission once prompted by the browser. If the browser does not prompt for camera permissions, you must go to settings and provide camera access to the current browser.",retryBtnText:"Retry"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement("div",{style:{display:"flex",height:"100%"}},React__default.default.createElement(OverlayInner,{style:{maxWidth:500,height:"auto",margin:"auto"}},React__default.default.createElement(OverlayImageWrapper,{style:{flexGrow:0}},React__default.default.createElement("img",{src:r.imageUrl,alt:""})),React__default.default.createElement("h3",null,u.headingText),React__default.default.createElement("p",{style:{lineHeight:1.5,marginBottom:50}},u.descriptionText),React__default.default.createElement(LoaderButton,{onClick:c,colors:i.retryBtn,style:{width:200,marginLeft:"auto",marginRight:"auto"},finished:!0},u.retryBtnText))))},IdCaptureLoadingOverlay=function(e){var t=e.onDismissed,a=e.assets,n=void 0===a?{}:a,r=e.colors,o=void 0===r?{}:r,i=e.verbiage,s=void 0===i?{}:i,l=React.useContext(IdCaptureModelsContext).ready,c=React.useContext(CameraStateContext),u=c.cameraReady,d=c.cameraAccessDenied,f=c.iphoneContinuityCameraAvailable,m=c.setIphoneContinuityCameraAllowed,p=React.useState(!1),g=p[0],h=p[1];n.instructionImageUrl||(n.instructionImageUrl="".concat(DEFAULT_CDN_URL,"/WebSDK-Instruction-DL-Capture-3-Portrait.png"));var b=useTranslations(s,{headingText:"Use your device camera to capture your ID",useContinuityCameraText:"Use your iPhone as a webcam",modelsWarmingUpText:"Models warming up...",cameraInitializingText:"Camera initializing...",continueText:"Continue"});return React.useEffect((function(){if(l&&u)return function(){return null};var e=setTimeout((function(){h(!1)}),500);return function(){clearTimeout(e)}}),[u,l]),g?React__default.default.createElement(React__default.default.Fragment,null):d?React__default.default.createElement(CameraAccessDeniedOverlay,{assets:n.cameraAccessDenied,colors:o.cameraAccessDenied,verbiage:s.cameraAccessDenied}):React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",null,b.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{pointerEvents:"none"}},React__default.default.createElement("img",{alt:b.headingText,src:n.instructionImageUrl})),React__default.default.createElement("div",{style:{paddingTop:26,height:48,marginTop:-48}},f&&React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("input",{id:"use-continuity-camera",type:"checkbox",defaultChecked:!0,style:{marginRight:8},onChange:function(e){m(e.target.checked)}}),React__default.default.createElement("label",{htmlFor:"use-continuity-camera"},b.useContinuityCameraText))),React__default.default.createElement(LoaderButton,{disabled:!u||!l,finished:l&&u,colors:o.continueBtn,style:{marginTop:8},onClick:function(){h(!0),null==t||t()}},u&&l?b.continueText:l?b.cameraInitializingText:b.modelsWarmingUpText)))},FlipIdPrompt=function(e){var t,a=e.assets,n=void 0===a?{}:a,r=e.verbiage,o=void 0===r?{}:r,i=useResizeObserver__default.default(),s=i.ref,l=i.width,c=void 0===l?1:l,u=i.height,d=void 0===u?1:u,f=React.useContext(CameraStateContext).cameraRef;n.frontPortraitGuidesImageUrl||(n.frontPortraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Portrait-2.svg")),n.frontLandscapeGuidesImageUrl||(n.frontLandscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Landscape-2.svg")),n.backPortraitGuidesImageUrl||(n.backPortraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Portrait-2.svg")),n.backLandscapeGuidesImageUrl||(n.backLandscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Landscape-2.svg"));var m=useVerbiage(o.instructionText,"Please flip your ID card..."),p=isMobile()?0:50,g=!(null===(t=f.current)||void 0===t?void 0:t.isRearFacing),h=React.useContext(GuideOrientationContext),b=h.orientation,v=h.wrapperRef,_=h.wrapperWidth,y=h.wrapperHeight,R=h.imageAspectRatio,C=h.wrapperAspectRatio,S=h.onImageLoaded,E=h.setDimensions;React.useEffect((function(){E({width:c,height:d})}),[d,E,c]);var T={height:y-2*p-8};R>=C&&(T={width:_-2*p-8});var w=React.useState(1),x=w[0],I=w[1],k=React.useState(0),D=k[0],A=k[1],M=["rotateY(".concat(D,"deg)")];g&&M.push("scaleX(-1)");var F=["rotateY(".concat(180-D,"deg)")];return g&&F.push("scaleX(-1)"),React.useEffect((function(){var e=function(){I(1),A(180),setTimeout((function(){I(0),A(0)}),1500)};setTimeout(e,250);var t=setInterval(e,2500);return function(){clearInterval(t)}}),[]),React__default.default.createElement(PageContainer,{ref:s,className:"flex"},React__default.default.createElement("div",{ref:v,style:{position:"absolute",zIndex:1e3,width:"100%",height:"100%"}},React__default.default.createElement("div",{style:{display:"flex",flexFlow:"column nowrap",height:"100%"}},React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12}},m)),React__default.default.createElement("div",{style:{position:"relative",display:"flex",flexFlow:"row nowrap",alignItems:"center",justifyItems:"center",maxWidth:"calc(100%)",maxHeight:"calc(100% - ".concat(2*p,"px - ").concat(8,"px)")}},React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",minWidth:p,flexGrow:1}}),React__default.default.createElement("div",{style:{maxWidth:"calc(100% - ".concat(2*p,"px - ").concat(8,"px)"),maxHeight:d-2*p-8}},React__default.default.createElement("div",{style:{position:"relative",border:"".concat(4,"px solid ").concat("white")}},React__default.default.createElement("img",{src:"portrait"===b?n.frontPortraitGuidesImageUrl:n.frontLandscapeGuidesImageUrl,alt:"",onLoad:S,style:tslib.__assign({backfaceVisibility:"hidden",transition:"transform ".concat(x,"s"),transform:M.join(" "),transformStyle:"preserve-3d",position:"relative",top:0,left:0,display:"block"},T)}),React__default.default.createElement("img",{src:"portrait"===b?n.backPortraitGuidesImageUrl:n.backLandscapeGuidesImageUrl,alt:"",style:tslib.__assign({backfaceVisibility:"hidden",transition:"transform ".concat(x,"s"),transform:F.join(" "),transformStyle:"preserve-3d",position:"absolute",top:0,left:0,display:"block"},T)}))),React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",minWidth:p,flexGrow:1}})),React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12,opacity:0}},m)))))},IdCaptureSuccess=function(e){var t,a,n=e.capturedDocuments,r=e.onSubmitClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l,u=React.useContext(SubmissionContext).submissionStatus,d=n.ID_CARD_FRONT,f=n.ID_CARD_BACK,m=n.PASSPORT;s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var p=useTranslations(c,{headingText:"ID Capture Successful",idCardFrontText:"ID Card Front",idCardBackText:"ID Card Back",passportText:"Passport",instructionText:"Verify the entire ID was captured clearly with no glare.",retryText:"Retry",submittingText:"Submitting...",submitText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h1",null,p.headingText),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement(OverlayImageMultiContainer,{style:{paddingBottom:40}},d&&React__default.default.createElement("div",null,React__default.default.createElement("h3",null,p.idCardFrontText),React__default.default.createElement("img",{src:d.imageData,alt:p.idCardFrontText,width:d.width,height:d.height})),f&&React__default.default.createElement("div",null,React__default.default.createElement("h3",null,p.idCardBackText),React__default.default.createElement("img",{src:f.imageData,alt:p.idCardBackText,width:f.width,height:f.height})),m&&React__default.default.createElement("div",null,React__default.default.createElement("h3",null,p.passportText),React__default.default.createElement("img",{src:m.imageData,alt:p.passportText,width:m.width,height:m.height})))),React__default.default.createElement("p",{style:{fontSize:18}},p.instructionText),React__default.default.createElement("div",{style:{paddingTop:15,textAlign:"center"}},React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,style:{marginRight:15},finished:!0},p.retryText),React__default.default.createElement(LoaderButton,{onClick:r,disabled:u===SubmissionStatus.SUBMITTING,colors:s.doneBtn,finished:!0},u===SubmissionStatus.SUBMITTING?p.submittingText:p.submitText))))},CameraVideoTag=function(){var e,t=React.useContext(CameraStateContext),a=t.videoRef,n=t.setVideoLoaded,r=t.cameraRef;React.useEffect((function(){n(!1)}),[n]),React.useEffect((function(){var e;a.current&&(null===(e=r.current)||void 0===e?void 0:e.stream)&&(a.current.srcObject=r.current.stream)}),[r,a]);var o=React.useCallback((function(){n(!0)}),[n]);return React__default.default.createElement(FullscreenVideoTag,{autoPlay:!0,playsInline:!0,muted:!0,ref:a,onLoadedData:o,$isRearFacing:null===(e=r.current)||void 0===e?void 0:e.isRearFacing})},FullscreenVideoTag=styled__default.default.video(templateObject_1$3||(templateObject_1$3=tslib.__makeTemplateObject(["\n transform: ",";\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n object-fit: cover;\n"],["\n transform: ",";\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n object-fit: cover;\n"])),(function(e){return e.$isRearFacing?"":"scaleX(-1)"}));function useShowSuccessScreen(e,t,a){var n=this,r=React.useState(!1),o=r[0],i=r[1];return React.useEffect((function(){t&&e&&("function"==typeof e?tslib.__awaiter(n,void 0,void 0,(function(){return tslib.__generator(this,(function(t){switch(t.label){case 0:return[4,e()];case 1:return t.sent()?null==a||a():i(!0),[2]}}))})):null==a||a())}),[t,a,e]),!e||o}var CaptureState,IdCaptureFallback=function(e){var t=e.onCapture,a=e.onFinished,n=e.colors,r=void 0===n?{}:n,o=e.verbiage,i=void 0===o?{}:o,s=React.useRef(null),l=React.useState([]),c=l[0],u=l[1];r.captureMoreBtn||(r.captureMoreBtn={backgroundColor:"#666"});var d=useTranslations(i,{headingText:"We're having some trouble.",descriptionText:"On-device capture guidance failed, please capture photos of your ID card or passport manually.",firstInstructionText:"Please capture the front of your ID card, or the ID page of your passport.",secondInstructionText:"Please capture the back of your ID card, or click Done if submitting a passport.",captureBtnText:"Capture",captureMoreBtnText:"Capture back of ID Card",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,{style:{justifyContent:"center"}},React__default.default.createElement("h3",{style:{marginBottom:8}},d.headingText),React__default.default.createElement("p",{style:{marginBottom:8}},d.descriptionText),c.length>0&&React__default.default.createElement(OverlayImageMultiContainer,null,c.map((function(e,t){return React__default.default.createElement("div",{key:t,style:{display:"flex",justifyContent:"center",flexGrow:1,flexBasis:0}},React__default.default.createElement("img",{src:e,alt:""}))}))),c.length<2&&React__default.default.createElement("p",{style:{fontWeight:"bold"}},0===c.length?d.firstInstructionText:d.secondInstructionText),React__default.default.createElement("input",{ref:s,type:"file",accept:"image/*",hidden:!0,onChange:function(e){var a,n=null===(a=e.target.files)||void 0===a?void 0:a[0];if(n){var r=new FileReader;r.addEventListener("load",(function(e){var a,n=null===(a=e.target)||void 0===a?void 0:a.result;u((function(e){return tslib.__spreadArray(tslib.__spreadArray([],e,!0),[n],!1)})),null==t||t(n)})),r.readAsDataURL(n)}}}),React__default.default.createElement("div",{style:{marginTop:32}},c.length<2&&React__default.default.createElement(LoaderButton,{colors:c.length>0?r.captureMoreBtn:r.captureBtn,finished:!0,onClick:function(){var e;null===(e=s.current)||void 0===e||e.click()}},c.length>0?d.captureMoreBtnText:d.captureBtnText),c.length>0&&React__default.default.createElement(LoaderButton,{colors:r.doneBtn,finished:!0,onClick:function(){null==a||a(c)},style:{marginLeft:12}},d.doneBtnText))))};!function(e){e.CAPTURING="CAPTURING",e.COMPLETE="COMPLETE"}(CaptureState||(CaptureState={}));var detector,initialState$4={captureState:CaptureState.CAPTURING,capturedDocuments:{},requestedDocumentType:DocumentType.ID_CARD_FRONT,currentDocumentType:DocumentType.NONE,differentDocumentTypeDetections:0,barcodeResult:null},reducer$4=function(e,t){var a;switch(t.type){case"predictionMade":var n=t.payload.prediction;return(r=tslib.__assign(tslib.__assign({},e),{currentDocumentType:n.detectedDocumentType})).currentDocumentType===e.requestedDocumentType&&(r.differentDocumentTypeDetections=0),"PASSPORT"===n.detectedDocumentType&&"PASSPORT"!==e.requestedDocumentType&&(r.requestedDocumentType=DocumentType.PASSPORT),"PASSPORT"===e.requestedDocumentType&&n.passportDetectionScore<.3&&(r.requestedDocumentType=DocumentType.ID_CARD_FRONT),r;case"barcodeScanned":return tslib.__assign(tslib.__assign({},e),{barcodeResult:t.payload.result});case"imageCaptured":var r=tslib.__assign(tslib.__assign({},e),{capturedDocuments:tslib.__assign(tslib.__assign({},e.capturedDocuments),(a={},a[e.requestedDocumentType]=t.payload,a))});return"ID_CARD_FRONT"!==e.requestedDocumentType||e.capturedDocuments.ID_CARD_BACK?"ID_CARD_BACK"!==e.requestedDocumentType||e.capturedDocuments.ID_CARD_FRONT?r.captureState=CaptureState.COMPLETE:r.requestedDocumentType=DocumentType.ID_CARD_FRONT:r.requestedDocumentType=DocumentType.ID_CARD_BACK,r;case"imageCapturedManually":r=tslib.__assign({},e);var o=tslib.__assign(tslib.__assign({},t.payload),{width:0,height:0});return 0===Object.keys(e.capturedDocuments).length?r.capturedDocuments[DocumentType.PASSPORT]=o:(r.capturedDocuments={},r.capturedDocuments[DocumentType.ID_CARD_FRONT]=e.capturedDocuments[DocumentType.PASSPORT],r.capturedDocuments[DocumentType.ID_CARD_BACK]=o),r;case"reset":return tslib.__assign({},initialState$4)}},IdCaptureWizard=function(e){var t,a,n,r,o,i,s,l,c,u,d=e.onSuccess,f=e.autoCaptureEnabled,m=void 0===f||f,p=e.autoCaptureGoodFramesRequired,g=void 0===p?3:p,h=e.autoCaptureBarcodeRequired,b=void 0===h?"mobile":h,v=e.barcodeScanningEnabled,_=void 0!==v&&v,y=e.idCardAutoCaptureScoreThreshold,R=void 0===y?.8:y,C=e.passportAutoCaptureScoreThreshold,S=void 0===C?.75:C,E=e.mrzDetectionScoreThreshold,T=void 0===E?.25:E,w=e.idCardFocusScoreThreshold,x=void 0===w?.3:w,I=e.passportFocusScoreThreshold,k=void 0===I?.3:I,D=e.skipSuccessScreen,A=void 0!==D&&D,M=e.assets,F=void 0===M?{}:M,B=e.colors,O=void 0===B?{}:B,N=e.verbiage,L=void 0===N?{}:N,P=e.debugMode,U=void 0!==P&&P,G=React.useReducer(reducer$4,initialState$4),$=G[0],V=G[1],j=React.useContext(CameraStateContext).releaseCameraAccess,z=React.useState(!1),q=z[0],W=z[1],H=React.useContext(SubmissionContext),K=H.submissionStatus,Y=H.submissionResponse,X=H.setIdFrontImage,J=H.setIdBackImage,Z=H.setPassportImage,Q=H.logIdFrontCaptureAttempt,ee=H.logIdBackCaptureAttempt,te=React.useContext(IdCaptureModelsContext).error,ae=React.useRef();React.useEffect((function(){ae.current=new Date}),[$.capturedDocuments.length]);var ne=React.useCallback((function(e){var t;e.operationTime=(new Date).getTime()-(null!==(t=ae.current)&&void 0!==t?t:new Date).getTime(),"ID_CARD_BACK"===$.requestedDocumentType?ee(e):Q(e)}),[ee,Q,$.requestedDocumentType]),re=React.useCallback((function(e){V({type:"predictionMade",payload:{prediction:e}})}),[]),oe=React.useCallback((function(e){V({type:"barcodeScanned",payload:{result:e}})}),[]),ie=React.useCallback((function(e,t,a,n){ne(n),V({type:"imageCaptured",payload:{imageData:e,width:t,height:a}})}),[ne]),se=React.useCallback((function(){var e=$.capturedDocuments.ID_CARD_FRONT,t=$.capturedDocuments.ID_CARD_BACK,a=$.capturedDocuments.PASSPORT,n=e&&dataUrlToBase64Sync(e.imageData),r=t&&dataUrlToBase64Sync(t.imageData),o=a&&dataUrlToBase64Sync(a.imageData);X(n),J(r),Z(o),j(),setTimeout((function(){null==d||d({idFrontImage:n,idBackImage:r,passportImage:o})}),0)}),[d,j,J,X,Z,$.capturedDocuments]),le=useShowSuccessScreen(A,$.captureState===CaptureState.COMPLETE,se),ce=React.useCallback((function(){V({type:"reset"})}),[]),ue=React.useState(0),de=ue[0],fe=ue[1],me=React.useCallback((function(){W(!1),fe((function(e){return e+1})),V({type:"reset"})}),[]);React.useEffect((function(){K!==SubmissionStatus.READY&&j()}),[j,K]),F.idCardFront||(F.idCardFront={}),(t=F.idCardFront).portraitGuidesImageUrl||(t.portraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Portrait-2.svg")),(a=F.idCardFront).landscapeGuidesImageUrl||(a.landscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Landscape-2.svg")),F.idCardBack||(F.idCardBack={}),(n=F.idCardBack).portraitGuidesImageUrl||(n.portraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Portrait-2.svg")),(r=F.idCardBack).landscapeGuidesImageUrl||(r.landscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Landscape-2.svg")),F.passport||(F.passport={}),(o=F.passport).portraitGuidesImageUrl||(o.portraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-Passport-Front-SVG-Portrait-2.svg")),(i=F.passport).landscapeGuidesImageUrl||(i.landscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-Passport-Front-SVG-Landscape-2.svg")),F.flipIdPrompt||(F.flipIdPrompt={}),(s=F.flipIdPrompt).frontPortraitGuidesImageUrl||(s.frontPortraitGuidesImageUrl=F.idCardFront.portraitGuidesImageUrl),(l=F.flipIdPrompt).frontLandscapeGuidesImageUrl||(l.frontLandscapeGuidesImageUrl=F.idCardFront.landscapeGuidesImageUrl),(c=F.flipIdPrompt).backPortraitGuidesImageUrl||(c.backPortraitGuidesImageUrl=F.idCardBack.portraitGuidesImageUrl),(u=F.flipIdPrompt).backLandscapeGuidesImageUrl||(u.backLandscapeGuidesImageUrl=F.idCardBack.landscapeGuidesImageUrl);var pe=useTranslations(L.idCardFront,{instructionText:"Scan the front of ID",processingIdCardText:"ID card front captured."}),ge=useTranslations(L.idCardBack,{instructionText:"Scan the back of ID"}),he=useTranslations(L.idCardBack,{instructionText:"Scan the ID page of passport"});return Y?React__default.default.createElement(PageContainer,{className:"padded"},React__default.default.createElement("h1",null,"Submission completed!"),React__default.default.createElement("pre",null,JSON.stringify(Y,null,2))):te?React__default.default.createElement(IdCaptureFallback,{onFinished:se,onCapture:function(e){V({type:"imageCapturedManually",payload:{imageData:e}})},colors:O.fallback,verbiage:L.fallback}):React__default.default.createElement(PageContainer,{className:"flex"},$.captureState!==CaptureState.COMPLETE&&React__default.default.createElement(CameraVideoTag,null),q&&function(){var e=Object.keys($.capturedDocuments).length;switch($.requestedDocumentType){case DocumentType.ID_CARD_FRONT:return React__default.default.createElement(IdCapture,{key:"capture".concat(e),requiredDocumentType:$.requestedDocumentType,autoCaptureEnabled:m,autoCaptureScoreThreshold:R,autoCaptureGoodFramesRequired:g,autoCaptureBarcodeRequired:b,barcodeScanningEnabled:!1,mrzDetectionScoreThreshold:T,focusScoreThreshold:x,onPrediction:re,onCapture:ie,onExit:me,processingDelay:3500,assets:F.idCardFront,colors:O,verbiage:pe,debugMode:U,processingScreen:React__default.default.createElement(FlipIdPrompt,{assets:F.flipIdPrompt,verbiage:L.flipIdPrompt})});case DocumentType.ID_CARD_BACK:return React__default.default.createElement(IdCapture,{key:"capture".concat(e),requiredDocumentType:$.requestedDocumentType,autoCaptureEnabled:m,autoCaptureScoreThreshold:R,autoCaptureGoodFramesRequired:g,autoCaptureBarcodeRequired:b,barcodeScanningEnabled:_,mrzDetectionScoreThreshold:T,focusScoreThreshold:x,onPrediction:re,onBarcodeScanned:oe,onCapture:ie,onExit:me,assets:F.idCardBack,colors:O,verbiage:ge,debugMode:U});case DocumentType.PASSPORT:return React__default.default.createElement(IdCapture,{key:"capture".concat(e),requiredDocumentType:$.requestedDocumentType,autoCaptureEnabled:m,autoCaptureScoreThreshold:S,mrzDetectionScoreThreshold:T,autoCaptureGoodFramesRequired:g,autoCaptureBarcodeRequired:b,barcodeScanningEnabled:!1,focusScoreThreshold:k,onPrediction:re,onBarcodeScanned:oe,onCapture:ie,onExit:me,assets:F.passport,colors:O,verbiage:he,debugMode:U});default:return null}}(),!q&&React__default.default.createElement(IdCaptureLoadingOverlay,{key:de,assets:F.loadingOverlay,colors:O.loadingOverlay,verbiage:L.loadingOverlay,onDismissed:function(){W(!0)}}),$.captureState===CaptureState.COMPLETE&&le&&React__default.default.createElement(IdCaptureSuccess,{capturedDocuments:$.capturedDocuments,barcodeResult:$.barcodeResult,onSubmitClick:se,onRetryClick:ce,colors:O.success,verbiage:L.success}))},FaceCaptureGuideOverlay=function(e){var t=e.borderWidth,a=e.borderColor;return React__default.default.createElement("div",{style:{position:"absolute",zIndex:1e3,width:"100%",height:"100%",display:"flex"}},React__default.default.createElement("div",{style:{borderWidth:void 0===t?3:t,borderColor:void 0===a?"white":a,borderStyle:"solid",borderRadius:"50%",aspectRatio:"1 / 1.618",height:"50%",margin:"auto"}}))},NUM_KEYPOINTS=6,GREEN="#32EEDB",RED="#FF2C35";function drawPath(e,t,a){var n=new Path2D;n.moveTo(t[0][0],t[0][1]);for(var r=1;r<t.length;r++){var o=t[r];n.lineTo(o[0],o[1])}a&&n.closePath(),e.stroke(n)}function drawResults(e,t,a,n){t.forEach((function(t){var r=t.keypoints.map((function(e){return[e.x,e.y]}));if(a){e.strokeStyle=RED,e.lineWidth=1;var o=t.box;drawPath(e,[[o.xMin,o.yMin],[o.xMax,o.yMin],[o.xMax,o.yMax],[o.xMin,o.yMax]],!0)}if(n){e.fillStyle=GREEN;for(var i=0;i<NUM_KEYPOINTS;i++){var s=r[i][0],l=r[i][1];e.beginPath(),e.arc(s,l,3,0,2*Math.PI),e.fill()}}}))}function loadHighPerformanceFaceDetector(){return tslib.__awaiter(this,void 0,void 0,(function(){var e;return tslib.__generator(this,(function(t){switch(t.label){case 0:return detector?[2,detector]:[4,tasksVision.FilesetResolver.forVisionTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.7/wasm")];case 1:return e=t.sent(),[4,tasksVision.FaceDetector.createFromOptions(e,{baseOptions:{modelAssetPath:"https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/1/blaze_face_short_range.tflite",delegate:"GPU"},runningMode:"VIDEO"})];case 2:return[2,detector=t.sent()]}}))}))}var HighPerformanceSelfieGuidanceModelsContext=React.createContext({start:function(){return null},stop:function(){return null},onPredictionMade:function(){return null},canvasRef:{current:null},ready:!1,error:null}),HighPerformanceSelfieGuidanceModelsProvider=function(e){var t=e.autoStart,a=void 0===t||t,n=e.children,r=e.throttleMs,o=React.useContext(CameraStateContext),i=o.videoRef,s=o.videoLoaded,l=o.cameraReady,c=React.useRef(null),u=React.useRef(),d=React.useState(!1),f=d[0],m=d[1],p=React.useState(!1),g=p[0],h=p[1],b=React.useRef(null),v=React.useRef(0),_=React.useRef(0),y=React.useState(null),R=y[0],C=y[1];React.useEffect((function(){tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){switch(a.label){case 0:m(!1),a.label=1;case 1:return a.trys.push([1,3,,4]),e=b,[4,loadHighPerformanceFaceDetector()];case 2:return e.current=a.sent(),[3,4];case 3:return t=a.sent(),C(t),[3,4];case 4:return m(!0),[2]}}))}))}),[]),React.useEffect((function(){if(s&&l&&g&&f){var e;_.current+=1;var t=_.current;return tslib.__awaiter(void 0,void 0,void 0,(function(){var a,n,o,s;return tslib.__generator(this,(function(l){switch(l.label){case 0:return i.current&&b.current?(a=null===(n=c.current)||void 0===n?void 0:n.getContext("2d"),c.current&&(c.current.width=null===(o=i.current)||void 0===o?void 0:o.videoWidth,c.current.height=null===(s=i.current)||void 0===s?void 0:s.videoHeight,null==a||a.translate(i.current.videoWidth,0),null==a||a.scale(-1,1)),[4,function n(){var o;return tslib.__awaiter(this,void 0,void 0,(function(){var s,l,c,d,f;return tslib.__generator(this,(function(m){switch(m.label){case 0:return b.current&&i.current&&t===_.current?i.current.readyState<2?[4,new Promise((function(e){i.current&&(i.current.onloadeddata=function(){e([])})}))]:[3,2]:[2];case 1:m.sent(),m.label=2;case 2:s=i.current.videoWidth,l=i.current.videoHeight,null==a||a.drawImage(i.current,0,0,s,l),m.label=3;case 3:return m.trys.push([3,5,,6]),[4,b.current.detectForVideo(i.current,performance.now())];case 4:return(c=m.sent())&&(d=c.detections.map((function(e){var t,a,n,r,o,i,c,u,d,f,m,p,g,h,b,v;return{keypoints:e.keypoints.map((function(e){var t;return tslib.__assign(tslib.__assign({},e),{x:e.x*s,y:e.y*l,name:null!==(t=e.label)&&void 0!==t?t:""})})),box:{xMin:null!==(a=null===(t=e.boundingBox)||void 0===t?void 0:t.originX)&&void 0!==a?a:0,xMax:(null!==(r=null===(n=e.boundingBox)||void 0===n?void 0:n.originX)&&void 0!==r?r:0)+(null!==(i=null===(o=e.boundingBox)||void 0===o?void 0:o.width)&&void 0!==i?i:0),yMin:null!==(u=null===(c=e.boundingBox)||void 0===c?void 0:c.originY)&&void 0!==u?u:0,yMax:(null!==(f=null===(d=e.boundingBox)||void 0===d?void 0:d.originY)&&void 0!==f?f:0)+(null!==(p=null===(m=e.boundingBox)||void 0===m?void 0:m.height)&&void 0!==p?p:0),width:null!==(h=null===(g=e.boundingBox)||void 0===g?void 0:g.width)&&void 0!==h?h:0,height:null!==(v=null===(b=e.boundingBox)||void 0===b?void 0:b.height)&&void 0!==v?v:0}}})),null===(o=u.current)||void 0===o||o.call(u,d),a&&drawResults(a,d,!0,!0)),[3,6];case 5:return f=m.sent(),console.error("caught face detection error",f),[3,6];case 6:return r?e=setTimeout((function(){v.current=requestAnimationFrame(n)}),r):v.current=requestAnimationFrame(n),[2]}}))}))}()]):[2];case 1:return l.sent(),[2]}}))})),function(){v.current&&cancelAnimationFrame(v.current),e&&clearTimeout(e)}}}),[l,f,g,r,s,i]);var S=React.useCallback((function(){h(!0)}),[]),E=React.useCallback((function(){h(!1)}),[]);React.useEffect((function(){return a&&S(),function(){E()}}),[a,S,E]);var T=React.useCallback((function(e){u.current=e}),[]),w=React.useMemo((function(){return{start:S,stop:E,ready:f,canvasRef:c,onPredictionMade:T,error:R}}),[R,T,f,S,E]);return React__namespace.createElement(HighPerformanceSelfieGuidanceModelsContext.Provider,{value:w},n)},useTimeout=function(e,t,a,n){var r=React.useState(!1),o=r[0],i=r[1],s=React.useState(),l=s[0],c=s[1];return React.useEffect((function(){if(e){c(new Date);var t=setTimeout((function(){i(!0)}),e);return function(){t&&clearTimeout(t)}}}),[e]),React.useEffect((function(){if(o&&!a){if(n){var e=setTimeout((function(){null==t||t()}),12e4);return function(){clearTimeout(e)}}null==t||t()}}),[t,n,o,a]),{timedOut:o,timeoutStartedAt:l}},SelfieCaptureFallback=function(e){var t=e.onFinished,a=e.onCapture,n=e.colors,r=void 0===n?{}:n,o=e.verbiage,i=void 0===o?{}:o,s=React.useState(null),l=s[0],c=s[1],u=React.useRef(null),d=React.useState(!1),f=d[0],m=d[1],p=useTranslations(i,{headingText:"We're having some trouble.",descriptionText:"On-device capture guidance failed, please capture a selfie manually.",captureBtnText:"Capture",doneBtnText:"Done",doneBtnLoadingText:"Verifying..."});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,{style:{justifyContent:"center"}},React__default.default.createElement("h3",{style:{marginBottom:8}},p.headingText),React__default.default.createElement("p",{style:{marginBottom:8}},p.descriptionText),l&&React__default.default.createElement(OverlayImageWrapper,{style:{marginTop:32}},React__default.default.createElement("img",{src:l,alt:""})),React__default.default.createElement("input",{ref:u,type:"file",accept:"image/*",hidden:!0,onChange:function(e){var t,n=null===(t=e.target.files)||void 0===t?void 0:t[0];if(n){var r=new FileReader;r.addEventListener("load",(function(e){var t,n=null===(t=e.target)||void 0===t?void 0:t.result;c(n),null==a||a(n)})),r.readAsDataURL(n)}}}),React__default.default.createElement("div",{style:{marginTop:32}},!l&&React__default.default.createElement(LoaderButton,{colors:r.captureBtn,finished:!0,onClick:function(){var e;null===(e=u.current)||void 0===e||e.click()}},p.captureBtnText),l&&React__default.default.createElement(LoaderButton,{key:f?"loading-btn":"ready-btn",colors:r.doneBtn,finished:!f,onClick:function(){m(!0),null==t||t(l)}},f?p.doneBtnLoadingText:p.doneBtnText))))},initialState$3={videoWidth:0,videoHeight:0,capturing:!1,captured:!1,captureFailed:!1,frame:null,faces:[],faceNotCentered:!1,faceLookingAway:!1,faceTooClose:!1,faceTooFar:!1,faceReady:!1,faceReadyAt:null,goodFramesCount:0,goodFramesThreshold:1,goodFramesThresholdMet:!1},reducer$3=function(e,t){switch(t.type){case"configure":return tslib.__assign(tslib.__assign({},e),{videoWidth:t.payload.videoWidth,videoHeight:t.payload.videoHeight});case"capturing":return tslib.__assign(tslib.__assign({},e),{capturing:!0,captured:!1,captureFailed:!1});case"captured":return tslib.__assign(tslib.__assign({},e),{capturing:!1,captured:!0,captureFailed:!1});case"captureFailed":return tslib.__assign(tslib.__assign({},e),{capturing:!1,captured:!1,captureFailed:!0});case"facesDetected":var a=t.payload.faces,n=a[0],r=!0,o=!1,i=!1,s=!1,l=e.faceReadyAt,c=e.goodFramesCount;if(n){var u=e.videoHeight/2,d=(n.box.xMin+n.box.xMax)/2,f=(n.box.yMin+n.box.yMax)/2,m=.125*e.videoWidth,p=.125*e.videoHeight,g=.2*n.box.width,h=.2*n.box.height,b=n.keypoints[2];b&&(r=Math.abs(e.videoWidth/2-d)>m||Math.abs(u+50-f)>p,o=Math.abs(d-b.x)>g||Math.abs(f-b.y)>h);var v=e.videoWidth<e.videoHeight;i=n.box.width>e.videoWidth/(v?2:4.5),s=n.box.width<e.videoWidth/(v?6:7)}var _=!(r||o||i||s);return _?e.faceReady||(l=new Date):(l=null,c=0),tslib.__assign(tslib.__assign({},e),{faces:a,faceNotCentered:r,faceLookingAway:o,faceTooClose:i,faceTooFar:s,faceReady:_,faceReadyAt:l,goodFramesCount:c})}},SelfieCapture=function(e){var t,a=e.onGuidanceSatisfied,n=e.onGuidanceNotSatisfied,r=e.onSelfieCaptured,o=e.onTimeout,i=e.onExit,s=e.timeoutDurationMs,l=void 0===s?15e3:s,c=e.guidanceMessage,u=e.guidanceSatisfied,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m,g=e.debugMode,h=void 0!==g&&g,b=useResizeObserver__default.default(),v=b.ref,_=b.width,y=void 0===_?1:_,R=b.height,C=void 0===R?1:R,S=React.useReducer(reducer$3,initialState$3),E=S[0],T=S[1],w=React.useRef(null),x=React.useContext(CameraStateContext),I=x.cameraRef,k=x.cameraReady,D=x.videoRef,A=React.useContext(HighPerformanceSelfieGuidanceModelsContext),M=A.onPredictionMade,F=A.error;React.useEffect((function(){k&&D.current&&0!==D.current.videoWidth&&T({type:"configure",payload:{videoWidth:D.current.videoWidth,videoHeight:D.current.videoHeight}})}),[k,D]),React.useEffect((function(){M((function(e){T({type:"facesDetected",payload:{faces:e}})}))}),[M]);var B=React.useState(!1),O=B[0],N=B[1];React.useEffect((function(){var e;return E.faceReady?(null==a||a(),e=setTimeout((function(){N(!0)}),1e3)):null==n||n(),function(){e&&clearTimeout(e)}}),[n,a,E.faceReady]),React.useEffect((function(){tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){if(O&&D.current&&w.current&&E.faces.length>0){if(drawToCanvas(w.current,D.current),!(e=w.current.getContext("2d")))return[2];t=e.getImageData(0,0,D.current.videoWidth,D.current.videoHeight),null==r||r(t,E.faces[0]),clearCanvas(w.current)}return[2]}))}))}),[O,r,E.faces,D]);var L=useTimeout(l,o),P=L.timedOut,U=L.timeoutStartedAt,G=useDebugScalingDetails({enabled:h,pageWidth:y,pageHeight:C,videoWidth:E.videoWidth,videoHeight:E.videoHeight});f.guidesUnsatisfiedColor||(f.guidesUnsatisfiedColor="white"),f.guidesSatisfiedColor||(f.guidesSatisfiedColor="green"),f.guidanceMessagesUnsatisfiedBackgroundColor||(f.guidanceMessagesUnsatisfiedBackgroundColor="red"),f.guidanceMessagesSatisfiedBackgroundColor||(f.guidanceMessagesSatisfiedBackgroundColor="green"),f.guidanceMessagesUnsatisfiedTextColor||(f.guidanceMessagesUnsatisfiedTextColor="white"),f.guidanceMessagesSatisfiedTextColor||(f.guidanceMessagesSatisfiedTextColor="white");var $=useTranslations(p,{guidanceHoldStillText:"Hold still for a few seconds...",guidanceLookStraightText:"Look straight into the camera...",guidanceMoveBackText:"Move back...",guidanceMoveForwardText:"Move forward...",guidanceMoveToCenterText:"Move to the center..."}),V=E.faceReady;return"boolean"==typeof u&&(V=u),c||(c=V?$.guidanceHoldStillText:E.faceLookingAway?$.guidanceLookStraightText:E.faceTooClose?$.guidanceMoveBackText:E.faceTooFar?$.guidanceMoveForwardText:E.faceNotCentered?$.guidanceMoveToCenterText:""),F?React__default.default.createElement(SelfieCaptureFallback,null):React__default.default.createElement(PageContainer,{ref:v,className:"flex"},React__default.default.createElement(InvisibleCanvas,{ref:w}),React__default.default.createElement(CameraVideoTag,null),React__default.default.createElement(FaceCaptureGuideOverlay,{borderColor:V?f.guidesSatisfiedColor:f.guidesUnsatisfiedColor}),""!==c&&React__default.default.createElement(GuidanceMessageContainer,null,React__default.default.createElement(GuidanceMessage,{$background:V?f.guidanceMessagesSatisfiedBackgroundColor:f.guidanceMessagesUnsatisfiedBackgroundColor,$textColor:V?f.guidanceMessagesSatisfiedTextColor:f.guidanceMessagesUnsatisfiedTextColor},c)),h&&E.faces.length>0&&React__default.default.createElement(ObjectDetectionDebugOverlay,{$flipX:!(null===(t=I.current)||void 0===t?void 0:t.isRearFacing)},E.faces.map((function(e,t){var a;return React__default.default.createElement(SelfieCaptureFaceDebugBox,{key:t,face:e,scaling:G,flipX:!(null===(a=I.current)||void 0===a?void 0:a.isRearFacing),color:V?"green":"red"})}))),h&&React__default.default.createElement(DebugStatsPane,null,I.current?React__default.default.createElement(React__default.default.Fragment,null,"✅ Camera: ",I.current.label," (",I.current.width,"x",I.current.height,")"):"❌ Camera not ready",React__default.default.createElement("br",null),E.faceNotCentered?"❌":"✅"," Face Centered",React__default.default.createElement("br",null),E.faceTooClose||E.faceTooFar?"❌":"✅"," Face"," ",E.faceTooClose?"Too Close":E.faceTooFar?"Too Far":"Distance Correct",React__default.default.createElement("br",null),E.faceLookingAway?"❌":"✅"," Face Looking Forward",React__default.default.createElement("br",null),E.goodFramesThresholdMet?"✅":"❌"," ",E.goodFramesCount," ","Good Frames",React__default.default.createElement("br",null),P?"❌":"✅"," Time Remaining:"," ",Math.max(0,l-((new Date).getTime()-(null!=U?U:new Date).getTime())),"ms"),React__default.default.createElement(ExitCaptureButton,{onClick:i},"×"))},initialState$2={frame:null,face:null,requestState:"CAPTURING",requestError:null,imageUrl:null,faceLive:!1,eyeCoveringDetected:!1,maskDetected:!1,headCoveringDetected:!1,phoneDetected:!1,timesLivenessCheckFailed:0},reducer$2=function(e,t){var a,n;switch(t.type){case"livenessReady":return["CAPTURING","FAILED","ERROR"].includes(e.requestState)?tslib.__assign(tslib.__assign({},e),{requestState:"CAPTURED",frame:t.payload.frame,face:t.payload.face}):e;case"livenessChecking":return tslib.__assign(tslib.__assign({},e),{requestState:"IN_PROGRESS"});case"livenessChecked":var r=t.payload.response,o=r.status,i=o.statusMessage,s=o.errorData,l=r.resultData;if("000"!==o.statusCode)return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:new Error("".concat(i,": ").concat(s))});var c="Live Face Detected"===l.verificationResult,u="true"===l.eyeCovering,d="true"===l.faceMask,f="true"===l.headCovering,m="true"===l.cellPhone,p=c&&!u&&!d&&!f,g=p?"PASSED":"FAILED",h=e.timesLivenessCheckFailed;return p?h=0:h+=1,tslib.__assign(tslib.__assign({},e),{frame:null!==(a=t.payload.frame)&&void 0!==a?a:null,face:null!==(n=t.payload.face)&&void 0!==n?n:null,imageUrl:t.payload.imageUrl,requestState:g,faceLive:c,eyeCoveringDetected:u,maskDetected:d,headCoveringDetected:f,phoneDetected:m,timesLivenessCheckFailed:h});case"livenessCheckFailed":return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:t.payload.error});default:return e}},FaceLivenessCapture=function(e){var t=e.onCapture,a=e.onSuccess,n=e.onTimeout,r=e.onExit,o=e.timeoutDurationMs,i=void 0===o?15e3:o,s=e.colors,l=void 0===s?{}:s,c=e.verbiage,u=void 0===c?{}:c,d=e.debugMode,f=React.useContext(SubmissionContext),m=f.checkLiveness,p=f.submissionError,g=React.useContext(HighPerformanceSelfieGuidanceModelsContext).error,h=React.useReducer(reducer$2,initialState$2),b=h[0],v=h[1],_=React.useState(null),y=_[0],R=_[1],C=React.useRef(null),S=React.useRef(null),E=React.useCallback((function(e,a){null==t||t(),v({type:"livenessReady",payload:{frame:e,face:a}})}),[t]),T=b.frame,w=b.face,x="CAPTURED"===b.requestState,I="PASSED"===b.requestState;React.useEffect((function(){T&&w&&x&&!p&&(v({type:"livenessChecking"}),tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a,n;return tslib.__generator(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),e=cropToShoulders(C.current,S.current,T,w),R(e),a=m,[4,dataUrlToBase64(e)];case 1:return[4,a.apply(void 0,[r.sent()])];case 2:return t=r.sent(),v({type:"livenessChecked",payload:{frame:T,face:w,imageUrl:e,response:t}}),[3,4];case 3:return n=r.sent(),v({type:"livenessCheckFailed",payload:{error:n}}),[3,4];case 4:return[2]}}))})))}),[m,w,T,x,p]);var k=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t,a,n;return tslib.__generator(this,(function(r){switch(r.label){case 0:v({type:"livenessChecking"}),r.label=1;case 1:return r.trys.push([1,4,,5]),a=m,[4,dataUrlToBase64(e)];case 2:return[4,a.apply(void 0,[r.sent()])];case 3:return t=r.sent(),v({type:"livenessChecked",payload:{imageUrl:e,response:t}}),[3,5];case 4:return n=r.sent(),v({type:"livenessCheckFailed",payload:{error:n}}),[3,5];case 5:return[2]}}))}))}),[m]);React.useEffect((function(){I&&b.imageUrl&&(null==a||a(b.imageUrl))}),[a,b.imageUrl,I]),React.useEffect((function(){b.timesLivenessCheckFailed>=(g?1:2)&&(null==n||n())}),[g,n,b.timesLivenessCheckFailed]),useTimeout(i,n,"PASSED"===b.requestState||!!g,"IN_PROGRESS"===b.requestState);var D=useTranslations(u,{guidanceRemoveEyeCoveringsText:"Please remove your eye coverings (sunglasses, eye patch, etc.)...",guidanceRemoveHeadCoveringsText:"Please remove your head coverings (hat, scarf, etc.)...",guidanceRemoveMaskText:"Please remove your mask..."}),A=b.eyeCoveringDetected?D.guidanceRemoveEyeCoveringsText:b.headCoveringDetected?D.guidanceRemoveHeadCoveringsText:b.maskDetected?D.guidanceRemoveMaskText:void 0;return g?React__default.default.createElement(SelfieCaptureFallback,{onFinished:k}):React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(InvisibleCanvas,{ref:C}),React__default.default.createElement(InvisibleCanvas,{ref:S}),React__default.default.createElement(SelfieCapture,{onSelfieCaptured:E,onExit:r,timeoutDurationMs:i,guidanceMessage:A,guidanceSatisfied:!A&&void 0,colors:l,verbiage:D,debugMode:d}),y&&React__default.default.createElement(SelfieProgressPreview,{imageUrl:y}))},SelfieCaptureLoadingOverlay=function(e){var t=e.onDismissed,a=e.assets,n=void 0===a?{}:a,r=e.colors,o=void 0===r?{}:r,i=e.verbiage,s=void 0===i?{}:i,l=React.useContext(CameraStateContext),c=l.cameraReady,u=l.cameraAccessDenied,d=React.useContext(HighPerformanceSelfieGuidanceModelsContext).ready;n.instructionImageUrl||(n.instructionImageUrl="".concat(DEFAULT_CDN_URL,"/Selfie-Image-1.png"));var f=useTranslations(s,{headingText:"Use your device camera to capture your face",removeEyeCoveringsText:"Remove Sunglasses & Hat",avoidExcessiveBacklightingText:"Avoid Excessive Backlighting",continueText:"Continue",cameraInitializingText:"Camera initializing...",modelsWarmingUpText:"Models warming up..."}),m=React.useState(!1),p=m[1];return m[0]?React__default.default.createElement(React__default.default.Fragment,null):u?React__default.default.createElement(CameraAccessDeniedOverlay,{assets:n.cameraAccessDenied,colors:o.cameraAccessDenied,verbiage:s.cameraAccessDenied}):React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("div",{style:{flexGrow:0}},React__default.default.createElement("h3",{style:{marginBottom:18}},f.headingText),React__default.default.createElement("div",{style:{background:"#ccc",maxWidth:"280px",margin:"0 auto 12px",borderRadius:8,lineHeight:1.5,padding:"12px 24px"}},f.removeEyeCoveringsText,React__default.default.createElement("br",null),f.avoidExcessiveBacklightingText)),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement("img",{alt:f.headingText,src:n.instructionImageUrl,style:{position:"relative",top:"5%"}})),React__default.default.createElement(LoaderButton,{disabled:!c||!d,finished:c&&d,colors:o.continueBtn,onClick:function(){p(!0),null==t||t()}},c&&d?f.continueText:d?f.cameraInitializingText:f.modelsWarmingUpText),React__default.default.createElement("div",{style:{display:"none"}},React__default.default.createElement(CameraVideoTag,null))))},FaceLivenessSuccess=function(e){var t,a,n=e.imageUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Face liveness has been verified!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},u.headingText),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement("img",{alt:u.headingText,src:n})),React__default.default.createElement("div",null,React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},FaceLivenessFailure=function(e){var t,a,n,r,o=e.canRetry,i=void 0===o||o,s=e.onRetryClick,l=e.onExitClick,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m;u.imageUrl||(u.imageUrl="".concat(DEFAULT_CDN_URL,"/manual_capture.png")),f.retryBtn||(f.retryBtn={}),(t=f.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=f.retryBtn).textColor||(a.textColor="white"),f.exitBtn||(f.exitBtn={}),(n=f.exitBtn).backgroundColor||(n.backgroundColor="#666"),(r=f.exitBtn).textColor||(r.textColor="white");var g=useTranslations(p,{headingText:"Live face not detected, please try again",retryBtnText:"Retry",exitBtnText:"Exit"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},g.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:g.headingText,src:u.imageUrl})),React__default.default.createElement("div",{style:{marginTop:24}},i&&React__default.default.createElement(LoaderButton,{onClick:s,colors:f.retryBtn,style:{marginRight:15},finished:!0},g.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:l,colors:f.exitBtn,finished:!0},g.exitBtnText))))},FaceLivenessWizard=function(e){var t=e.onComplete,a=e.onSuccess,n=e.onTimeout,r=e.onExitAfterFailure,o=e.timeoutDurationMs,i=void 0===o?15e3:o,s=e.maxRetries,l=void 0===s?2:s,c=e.skipSuccessScreen,u=void 0!==c&&c,d=e.assets,f=void 0===d?{}:d,m=e.colors,p=void 0===m?{}:m,g=e.verbiage,h=void 0===g?{}:g,b=e.debugMode,v=void 0!==b&&b,_=React.useContext(SubmissionContext),y=_.submissionResponse,R=_.setSelfieImage,C=_.logSelfieCaptureAttempt,S=React.useContext(CameraStateContext).releaseCameraAccess,E=React.useState(""),T=E[0],w=E[1],x=React.useState(0),I=x[0],k=x[1],D=React.useState("LOADING"),A=D[0],M=D[1],F=React.useRef(),B=React.useRef(),O=React.useRef();React.useEffect((function(){O.current=new Date}),[]),React.useEffect((function(){"CAPTURING"===A&&(F.current=new Date)}),[A]);var N=React.useCallback((function(){B.current=new Date}),[]),L=React.useCallback((function(){var e,t,a;C({autoCapture:"Y",captureTime:(null!==(e=B.current)&&void 0!==e?e:new Date).getTime()-(null!==(t=F.current)&&void 0!==t?t:new Date).getTime(),operationTime:(new Date).getTime()-(null!==(a=O.current)&&void 0!==a?a:new Date).getTime()}),O.current=new Date}),[C]),P=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(n){switch(n.label){case 0:return M("SUCCESS"),w(e),t=R,[4,dataUrlToBase64(e)];case 1:return t.apply(void 0,[n.sent()]),null==a||a(y),[2]}}))}))}),[a,R,y]),U=React.useCallback((function(){M("FAILED"),null==n||n(y)}),[n,y]),G=React.useState(0),$=G[0],V=G[1],j=React.useCallback((function(){V((function(e){return e+1})),M("LOADING")}),[]),z=React.useCallback((function(){L(),S(),setTimeout((function(){null==t||t(y)}),0)}),[L,t,S,y]),q=useShowSuccessScreen(u,"SUCCESS"===A,z);return React__default.default.createElement(React__default.default.Fragment,null,"LOADING"!==A&&function(){switch(A){case"CAPTURING":return React__default.default.createElement(FaceLivenessCapture,{key:"capture".concat($),onCapture:N,onSuccess:P,onTimeout:U,onExit:j,timeoutDurationMs:i,colors:p,verbiage:h,debugMode:v});case"SUCCESS":return q?React__default.default.createElement(FaceLivenessSuccess,{key:"success",imageUrl:T,colors:p.success,verbiage:h.success,onDoneClick:z,onRetryClick:function(){L(),M("CAPTURING")}}):null;case"FAILED":return React__default.default.createElement(FaceLivenessFailure,{key:"failure",assets:f.failure,colors:p.failure,verbiage:h.failure,canRetry:l>-1&&I<l,onRetryClick:function(){L(),k((function(e){return e+1})),M("CAPTURING")},onExitClick:function(){S(),setTimeout((function(){null==r||r(y)}),0)}});default:return null}}(),React__default.default.createElement(SelfieCaptureLoadingOverlay,{key:$,assets:f.loadingOverlay,colors:p.loadingOverlay,verbiage:h.loadingOverlay,onDismissed:function(){M("CAPTURING")}}))},GuideOrientationProvider=function(e){var t=e.children,a=React.useState({width:1,height:1}),n=a[1],r=React.useState(1),o=r[0],i=r[1],s=useResizeObserver__default.default(),l=s.ref,c=s.width,u=void 0===c?1:c,d=s.height,f=void 0===d?1:d,m=u/f,p=React.useCallback((function(e){var t=e.target;i(t.naturalWidth/t.naturalHeight)}),[]);return React__default.default.createElement(GuideOrientationContext.Provider,{value:{orientation:"landscape",wrapperWidth:u,wrapperHeight:f,wrapperAspectRatio:m,imageAspectRatio:o,setDimensions:n,wrapperRef:l,onImageLoaded:p}},t)},SubmissionSuccess=function(){var e=React.useContext(SubmissionContext),t=e.submissionRequest,a=e.submissionResponse,n=React.useState(!1),r=n[0],o=n[1],i=React.useState(!0),s=i[0],l=i[1],c=React.useMemo((function(){var e,a,n,r,o,i,l=JSON.parse(JSON.stringify(t));return s&&((null===(a=null===(e=null==l?void 0:l.customerData)||void 0===e?void 0:e.idData)||void 0===a?void 0:a.idImageFront)&&(l.customerData.idData.idImageFront=truncate(l.customerData.idData.idImageFront,200)),(null===(r=null===(n=null==l?void 0:l.customerData)||void 0===n?void 0:n.idData)||void 0===r?void 0:r.idImageBack)&&(l.customerData.idData.idImageBack=truncate(l.customerData.idData.idImageBack,200)),(null===(i=null===(o=null==l?void 0:l.customerData)||void 0===o?void 0:o.biometricData)||void 0===i?void 0:i.selfie)&&(l.customerData.biometricData.selfie=truncate(l.customerData.biometricData.selfie,200))),JSON.stringify(l,null,2)}),[t,s]);return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("h3",null,"Submission completed!"),React__default.default.createElement("button",{onClick:function(){o(!r)}},r?"Hide":"Show"," request body"),r&&React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("button",{style:{marginLeft:8},onClick:function(){l(!s)}},s?"Display full images":"Truncate images"),React__default.default.createElement("h5",null,"Request Body"),React__default.default.createElement("pre",null,c)),React__default.default.createElement("h5",null,"Response Body"),React__default.default.createElement("pre",null,JSON.stringify(a,null,2)))};function truncate(e,t){var a=e.split("").splice(0,t).join("");return a.length<e.length&&(a+="..."),a}var AdditionalDocumentCapture=function(e){var t=e.document,a=e.onComplete,n=e.verbiage,r=void 0===n?{}:n,o=React.useState(null),i=o[0],s=o[1],l=useTranslations(r,{headingText:"Additional document capture",nextBtnText:"Next"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,{style:{textAlign:"left"}},React__default.default.createElement("h3",{style:{margin:"0 0 8px"}},l.headingText,": ",t.name),t.description&&React__default.default.createElement("p",{style:{margin:"8px 0"}},t.description),React__default.default.createElement("p",{style:{margin:"8px 0"}},React__default.default.createElement("input",{type:"file",accept:"image/*,.pdf",onChange:function(e){var t,a=null===(t=e.target.files)||void 0===t?void 0:t[0];a&&s(a)}})),React__default.default.createElement("p",{style:{margin:"8px 0"}},React__default.default.createElement("button",{disabled:!i,onClick:function(e){if(e.preventDefault(),i){var n=new FileReader;n.onloadend=function(){if(n.result){var e=n.result.toString();null==a||a({documentName:t.name,additionalDocument:{name:i.name,fileContent:dataUrlToBase64Sync(e),type:contentDispositionFromDataUrl(e),fileUploadType:"Y",isImageControlData:"N",fieldId:""}})}},n.readAsDataURL(i)}}},l.nextBtnText))))},AdditionalDocumentCaptureWizard=function(e){var t=e.documents,a=e.onComplete,n=e.verbiage,r=void 0===n?{}:n,o=React.useState([]),i=o[0],s=o[1],l=i.length,c=t[l],u=l>=t.length;return React.useEffect((function(){(null==c?void 0:c.skip)&&tslib.__awaiter(void 0,void 0,void 0,(function(){var e;return tslib.__generator(this,(function(t){switch(t.label){case 0:return[4,null===(e=c.skip)||void 0===e?void 0:e.call(c)];case 1:return t.sent()&&s((function(e){return tslib.__spreadArray(tslib.__spreadArray([],e,!0),[null],!1)})),[2]}}))}))}),[c]),React.useEffect((function(){u&&(null==a||a(i.filter((function(e){return!!e}))))}),[u,a,i]),u?React__default.default.createElement(React__default.default.Fragment,null,"Thanks, your documents have been received."):React__default.default.createElement(AdditionalDocumentCapture,{key:l,document:c,verbiage:r,onComplete:function(e){s((function(t){return tslib.__spreadArray(tslib.__spreadArray([],t,!0),[e],!1)}))}})};function signatureDataToIdmissionFormat(e){var t,a=null!==(t=e.toDataURL())&&void 0!==t?t:null,n={clickX_simple:[],clickY_simple:[],time_simple:[],pressure:"",fileContent:a?dataUrlToBase64Sync(a):""};return e.toData().forEach((function(e){var t=[],a=[],r=[];e.forEach((function(e){t.push(e.x),a.push(e.y),r.push(new Date(e.time).toString())})),n.clickX_simple.push(t),n.clickY_simple.push(a),n.time_simple.push(r)})),n}var templateObject_1$2,templateObject_2,templateObject_3,templateObject_4,templateObject_1$1,templateObject_1,SignatureCanvasContainer=styled__default.default.div(templateObject_1$2||(templateObject_1$2=tslib.__makeTemplateObject(["\n position: absolute;\n top: 25%;\n left: 15%;\n width: 70%;\n height: 50%;\n\n @media (max-width: 800px) {\n top: 15%;\n left: 2%;\n width: 96%;\n height: 70%;\n }\n"],["\n position: absolute;\n top: 25%;\n left: 15%;\n width: 70%;\n height: 50%;\n\n @media (max-width: 800px) {\n top: 15%;\n left: 2%;\n width: 96%;\n height: 70%;\n }\n"]))),SignaturePad=styled__default.default.div(templateObject_2||(templateObject_2=tslib.__makeTemplateObject(["\n position: relative;\n background: rgba(255, 255, 255, 0.5);\n border-radius: 16px;\n flex-grow: 1;\n z-index: 100;\n height: 100%;\n"],["\n position: relative;\n background: rgba(255, 255, 255, 0.5);\n border-radius: 16px;\n flex-grow: 1;\n z-index: 100;\n height: 100%;\n"]))),SignatureButtonsContainer=styled__default.default.div(templateObject_3||(templateObject_3=tslib.__makeTemplateObject(["\n flex-grow: 0;\n padding-top: 12px;\n display: flex;\n z-index: 1000;\n position: relative;\n"],["\n flex-grow: 0;\n padding-top: 12px;\n display: flex;\n z-index: 1000;\n position: relative;\n"]))),SignaturePaperBacking=styled__default.default.div(templateObject_4||(templateObject_4=tslib.__makeTemplateObject(["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background-color: #e5e5f7;\n opacity: 0.8;\n background-image: radial-gradient(#444cf7 0.5px, transparent 0.5px),\n radial-gradient(#444cf7 0.5px, #e5e5f7 0.5px);\n background-size: 20px 20px;\n background-position: 0 0, 10px 10px;\n"],["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background-color: #e5e5f7;\n opacity: 0.8;\n background-image: radial-gradient(#444cf7 0.5px, transparent 0.5px),\n radial-gradient(#444cf7 0.5px, #e5e5f7 0.5px);\n background-size: 20px 20px;\n background-position: 0 0, 10px 10px;\n"]))),SignatureCapture=function(e){var t=e.onAccept,a=e.verbiage,n=void 0===a?{}:a,r=useResizeObserver__default.default(),o=r.ref,i=r.width,s=r.height,l=React.useRef(null),c=useTranslations(n,{headingText:"Please sign the box below",acceptBtnText:"Accept",clearBtnText:"Clear"});return React__default.default.createElement(PageContainer,null,React__default.default.createElement(SignaturePaperBacking,null,React__default.default.createElement(GuidanceMessageContainer,{$top:"5vh"},React__default.default.createElement(GuidanceMessage,null,c.headingText)),React__default.default.createElement(SignatureCanvasContainer,null,React__default.default.createElement(SignaturePad,{ref:o},React__default.default.createElement(SignatureCanvas__default.default,{ref:l,canvasProps:{width:i,height:s}})),React__default.default.createElement(SignatureButtonsContainer,null,React__default.default.createElement("button",{onClick:function(e){var t;e.preventDefault(),null===(t=l.current)||void 0===t||t.clear()}},c.clearBtnText),React__default.default.createElement("button",{style:{marginLeft:"auto"},onClick:function(e){if(e.preventDefault(),l.current){var a=signatureDataToIdmissionFormat(l.current);null==t||t(a,l.current.toDataURL())}}},c.acceptBtnText)))))},useVideoRecorder=function(e){var t=React.useRef(null),a=React.useRef([]),n=React.useState(null),r=n[0],o=n[1],i=React.useState(!1),s=i[0],l=i[1],c=null==e?void 0:e.stream,u=React.useCallback((function(){c&&(a.current=[],l(!0),t.current=new MediaRecorder(c),t.current.ondataavailable=function(e){a.current.push(e.data)},t.current.onstop=function(){var t=new Blob(a.current,{type:"video/mp4"});a.current=[],o(URL.createObjectURL(t)),l(!1),null==e||e.release()},t.current.start())}),[e,c]),d=React.useCallback((function(){var e;null===(e=t.current)||void 0===e||e.stop()}),[]);return{isRecording:s,startRecording:u,stopRecording:d,videoUrl:r}},VideoSignatureCapture=function(e){var t,a,n=e.onVideoCaptured,r=e.onFaceNotDetected,o=e.onExit,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l,u=e.debugMode,d=void 0!==u&&u,f=React.useContext(CameraStateContext),m=f.cameraRef,p=f.videoRef,g=useResizeObserver__default.default(),h=g.ref,b=g.width,v=g.height,_=React.useRef(null),y=React.useRef(null),R=React.useRef([]),C=React.useState(null),S=C[0],E=C[1],T=React.useContext(HighPerformanceSelfieGuidanceModelsContext).onPredictionMade,w=useVideoRecorder(m.current),x=w.isRecording,I=w.startRecording,k=w.stopRecording,D=w.videoUrl,A=React.useState(null),M=A[0],F=A[1],B=React.useState(null),O=B[0],N=B[1],L=React.useState(null),P=L[0],U=L[1];s.guidanceMessageBackgroundColor||(s.guidanceMessageBackgroundColor="#ccc"),s.guidanceMessageTextColor||(s.guidanceMessageTextColor="black");var G=useTranslations(c,{guidanceMessageText:"Please sign the box below",acceptBtnText:"Accept",clearBtnText:"Clear"}),$=React.useRef(null);React.useEffect((function(){setTimeout((function(){if(!x&&!D&&$.current){I();var e=$.current.captureStream(25);y.current=new MediaRecorder(e,{}),y.current.start(),y.current.ondataavailable=function(e){var t;R.current.push(e.data),"recording"===(null===(t=y.current)||void 0===t?void 0:t.state)&&y.current.stop()},y.current.onstop=function(){var e=new Blob(R.current,{type:"video/mp4"});U(e);var t=URL.createObjectURL(e);E(t)}}}),100)}),[x,I,D]),React.useEffect((function(){P&&M&&O&&(null==n||n(P,M,O))}),[n,M,O,P]);var V=React.useRef(0);React.useEffect((function(){var e;if(_.current&&p.current&&$.current&&m.current&&x){var t=[m.current.width,m.current.height],a=t[0],n=t[1],r=window.innerWidth<window.innerHeight;r&&a>n&&(a=(e=[n,a])[0],n=e[1]),$.current.width=a,$.current.height=n;var o=$.current.getContext("2d");if(o)return V.current=requestAnimationFrame((function e(){return tslib.__awaiter(this,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(i){return _.current&&p.current&&$.current?(t=[a*(r?.02:.15),n*(r?.15:.25),a*(r?.96:.7),n*(r?.7:.5)],o.drawImage(p.current,0,0,a,n),o.beginPath(),o.fillStyle="rgba(255,255,255,0.5)",o.roundRect.apply(o,tslib.__spreadArray(tslib.__spreadArray([],t,!1),[16],!1)),o.fill(),o.drawImage.apply(o,tslib.__spreadArray([_.current.getCanvas()],t,!1)),V.current=requestAnimationFrame(e),[2]):(cancelAnimationFrame(V.current),[2])}))}))})),function(){cancelAnimationFrame(V.current)}}}),[m,x,r,p]);var j=React.useState(0),z=j[0],q=j[1];return React.useEffect((function(){T((function(e){q((function(t){return 0===e.length?t+1:0}))}))}),[T]),React.useEffect((function(){z>=2&&(null==r||r())}),[z,r]),!x&&D?React__default.default.createElement(React__default.default.Fragment,null,S&&React__default.default.createElement("video",{src:S,controls:!0,width:"100%"}),O&&React__default.default.createElement("img",{src:O,alt:"signature"}),M&&React__default.default.createElement("textarea",{readOnly:!0,style:{width:"100%",height:500},value:JSON.stringify(M,null,2)})):React__default.default.createElement(PageContainer,{className:"flex"},React__default.default.createElement(CameraVideoTag,null),G.guidanceMessageText&&React__default.default.createElement(GuidanceMessageContainer,{$top:"5vh"},React__default.default.createElement(GuidanceMessage,{$background:s.guidanceMessageBackgroundColor,$textColor:s.guidanceMessageTextColor},G.guidanceMessageText)),React__default.default.createElement(SignatureCanvasContainer,null,React__default.default.createElement(SignaturePad,{ref:h},React__default.default.createElement(SignatureCanvas__default.default,{ref:_,canvasProps:{width:b,height:v}})),React__default.default.createElement(SignatureButtonsContainer,null,React__default.default.createElement("button",{onClick:function(e){var t;e.preventDefault(),null===(t=_.current)||void 0===t||t.clear()}},G.clearBtnText),React__default.default.createElement("button",{style:{marginLeft:"auto"},onClick:function(e){var t;if(e.preventDefault(),_.current){var a=signatureDataToIdmissionFormat(_.current);F(a),N(_.current.toDataURL()),k(),null===(t=y.current)||void 0===t||t.stop()}}},G.acceptBtnText))),d&&React__default.default.createElement(DebugStatsPane,null,"Video: ",null===(t=m.current)||void 0===t?void 0:t.width,"x",null===(a=m.current)||void 0===a?void 0:a.height),React__default.default.createElement(ExitCaptureButton,{onClick:o},"×"),React__default.default.createElement("div",{style:{display:"none"}},React__default.default.createElement("canvas",{ref:$})))},VideoSignatureLoadingOverlay=function(e){var t=e.assets,a=e.verbiage;return React__default.default.createElement(SelfieCaptureLoadingOverlay,{assets:void 0===t?{}:t,verbiage:void 0===a?{}:a,onDismissed:e.onDismissed})},VideoSignatureSuccess=function(e){var t,a,n=e.videoUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Video signature has been successfully captured!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h1",null,u.headingText),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement(StyledVideo$1,{src:n,poster:n+"#t=0.1",controls:!0,preload:"metadata",autoPlay:!0})),React__default.default.createElement("div",null,React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},StyledVideo$1=styled__default.default.video(templateObject_1$1||(templateObject_1$1=tslib.__makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"],["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"]))),VideoSignatureWizard=function(e){var t=e.onComplete,a=e.onVideoCaptured,n=e.onRetryClicked,r=e.skipSuccessScreen,o=void 0!==r&&r,i=e.assets,s=void 0===i?{}:i,l=e.colors,c=void 0===l?{}:l,u=e.verbiage,d=void 0===u?{}:u,f=e.debugMode,m=void 0!==f&&f,p=React.useContext(SubmissionContext),g=p.selfieImage,h=p.signatureVideo,b=p.setSelfieImage,v=p.setSignatureData,_=p.setSignatureVideo,y=p.logSelfieCaptureAttempt,R=React.useState("LOADING"),C=R[0],S=R[1],E=React.useRef(),T=React.useRef(),w=React.useRef();React.useEffect((function(){E.current=new Date}),[]),React.useEffect((function(){"CHECKING_LIVENESS"===C&&(T.current=new Date)}),[C]);var x=React.useCallback((function(){var e,t,a;y({autoCapture:"Y",captureTime:(null!==(e=w.current)&&void 0!==e?e:new Date).getTime()-(null!==(t=T.current)&&void 0!==t?t:new Date).getTime(),operationTime:(new Date).getTime()-(null!==(a=E.current)&&void 0!==a?a:new Date).getTime()}),E.current=new Date}),[y]),I=React.useCallback((function(){S("CHECKING_LIVENESS")}),[]),k=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return S("CAPTURING_SIGNATURE"),x(),g?[3,2]:(t=b,[4,dataUrlToBase64(e)]);case 1:t.apply(void 0,[a.sent()]),a.label=2;case 2:return[2]}}))}))}),[x,g,b]),D=React.useCallback((function(e,t,n){v(t),_(URL.createObjectURL(e)),S("SUCCESS"),null==a||a(e,t,n)}),[a,v,_]),A=React.useCallback((function(){S("CHECKING_LIVENESS")}),[]),M=React.useState(0),F=M[0],B=M[1],O=React.useCallback((function(){B((function(e){return e+1})),S("LOADING")}),[]),N=React.useCallback((function(){null==n||n(),O()}),[O,n]),L=useShowSuccessScreen(o,"SUCCESS"===C,t);return React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,{throttleMs:"CAPTURING_SIGNATURE"===C?250:0},"LOADING"!==C&&function(){switch(C){case"CHECKING_LIVENESS":return React__default.default.createElement(FaceLivenessCapture,{onSuccess:k,onExit:O,colors:c.faceLiveness,verbiage:d.faceLiveness,debugMode:m});case"CAPTURING_SIGNATURE":return React__default.default.createElement(VideoSignatureCapture,{onVideoCaptured:D,onFaceNotDetected:A,onExit:O,colors:c,verbiage:d,debugMode:m});case"SUCCESS":if(!L)return;return React__default.default.createElement(VideoSignatureSuccess,{videoUrl:null!=h?h:"",onDoneClick:t,onRetryClick:N,colors:c.success,verbiage:d.success});default:return null}}(),React__default.default.createElement(VideoSignatureLoadingOverlay,{key:F,onDismissed:I,assets:s.loadingOverlay,verbiage:d.loadingOverlay}))},CompositeWizardComponent=function(e){var t,a,n,r,o,i=e.checks,s=e.idCaptureProps,l=void 0===s?{}:s,c=e.faceLivenessProps,u=void 0===c?{}:c,d=e.signatureCaptureProps,f=void 0===d?{}:d,m=e.videoSignatureCaptureProps,p=void 0===m?{}:m,g=e.additionalDocumentCaptureProps,h=e.captureSignature,b=void 0!==h&&h,v=e.captureSignatureVideo,_=void 0!==v&&v,y=e.debugMode,R=void 0!==y&&y,C=React.useContext(SubmissionContext),S=C.submit,E=C.submissionStatus,T=C.setSignatureData,w=C.setAdditionalDocuments,x=React.useState(0),I=x[0],k=x[1],D=React.useMemo((function(){var e,t,a=tslib.__spreadArray([],i,!0);if(b&&_)throw new Error("captureSignature and captureSignatureVideo cannot be used together");return b&&a.push("SignatureCapture"),_&&(a.push("VideoSignatureCapture"),a.includes("FaceLiveness")&&a.splice(a.indexOf("FaceLiveness"),1)),null!==(t=null===(e=null==g?void 0:g.documents)||void 0===e?void 0:e.length)&&void 0!==t&&t&&a.push("AdditionalDocumentCapture"),a}),[null===(t=null==g?void 0:g.documents)||void 0===t?void 0:t.length,b,_,i]),A=D[I],M=I>=D.length;React.useEffect((function(){"SignatureCapture"===A&&"function"==typeof b?b().then((function(e){e||k((function(e){return e+1}))})):"VideoSignatureCapture"===A&&"function"==typeof _&&_().then((function(e){e||k((function(e){return e+1}))}))}),[b,_,A]),React.useEffect((function(){M&&S()}),[M,S]);var F=l.onSuccess,B=React.useCallback((function(e){null==F||F(e),k((function(e){return e+1}))}),[F]),O=u.onComplete,N=React.useCallback((function(e){null==O||O(e),k((function(e){return e+1}))}),[O]),L=React.useCallback((function(e){T(e),k((function(e){return e+1}))}),[T]),P=p.onComplete,U=React.useCallback((function(){null==P||P(),k((function(e){return e+1}))}),[P]),G=React.useState(0),$=G[0],V=G[1],j=p.onRetryClicked,z=React.useCallback((function(){null==j||j(),V((function(e){return e+1}))}),[j]),q=null==g?void 0:g.onComplete,W=React.useCallback((function(e){w(e),null==q||q(e),k((function(e){return e+1}))}),[q,w]),H=React.useMemo((function(){var e;return null!==(e=null==g?void 0:g.documents)&&void 0!==e?e:[]}),[null==g?void 0:g.documents]);if(M)switch(E){case SubmissionStatus.SUBMITTING:return React__default.default.createElement(PageContainer,{className:"flex"},React__default.default.createElement(Spinner,null));case SubmissionStatus.SUBMITTED:return React__default.default.createElement(SubmissionSuccess,null);case SubmissionStatus.FAILED:return React__default.default.createElement(React__default.default.Fragment,null,"Submission failed!");default:return React__default.default.createElement(React__default.default.Fragment,null,"Complete!!")}switch(D[I]){case"IdCapture":return React__default.default.createElement(IdCaptureModelsProvider,{documentDetectionModelUrl:null!==(n=null===(a=l.assets)||void 0===a?void 0:a.documentDetectionModelUrl)&&void 0!==n?n:"",focusModelUrl:null!==(o=null===(r=l.assets)||void 0===r?void 0:r.focusModelUrl)&&void 0!==o?o:"",logPredictions:R},React__default.default.createElement(CameraProvider,{key:"IdCaptureCamera"},React__default.default.createElement(GuideOrientationProvider,null,React__default.default.createElement(IdCaptureWizard,tslib.__assign({},l,{onSuccess:B})))));case"FaceLiveness":return React__default.default.createElement(CameraProvider,{key:"FaceLivenessCamera",preferFrontFacingCamera:!0,preferContinuityCamera:!1},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(FaceLivenessWizard,tslib.__assign({},u,{onComplete:N}))));case"SignatureCapture":return React__default.default.createElement(SignatureCapture,tslib.__assign({},f,{onAccept:L}));case"VideoSignatureCapture":return React__default.default.createElement(CameraProvider,{key:"SignatureKycCamera-".concat($),preferContinuityCamera:!1,preferFrontFacingCamera:!0},React__default.default.createElement(VideoSignatureWizard,tslib.__assign({},p,{onComplete:U,onRetryClicked:z})));case"AdditionalDocumentCapture":return React__default.default.createElement(AdditionalDocumentCaptureWizard,tslib.__assign({},g,{documents:H,onComplete:W}));default:return React__default.default.createElement(React__default.default.Fragment,null)}},IdValidation=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=void 0===n?"prod":n,o=e.submissionUrl,i=e.companyId,s=e.manualReviewRequired,l=e.verifyIdWithExternalDatabases,c=e.personalData,u=e.cardData,d=e.webhooksEnabled,f=e.webhooksClientTraceId,m=e.webhooksStripSpecialCharacters,p=e.idAutoCaptureEnabled,g=void 0===p||p,h=e.idCardAutoCaptureScoreThreshold,b=void 0===h?.8:h,v=e.passportAutoCaptureScoreThreshold,_=void 0===v?.75:v,y=e.idCardFocusScoreThreshold,R=void 0===y?.3:y,C=e.passportFocusScoreThreshold,S=void 0===C?.3:C,E=e.skipSuccessScreen,T=void 0!==E&&E,w=e.onBeforeSubmit,x=e.onComplete,I=e.onApproved,k=e.onDenied,D=e.assets,A=void 0===D?{}:D,M=e.colors,F=void 0===M?{}:M,B=e.verbiage,O=void 0===B?{}:B,N=e.captureSignature,L=void 0!==N&&N,P=e.captureSignatureVideo,U=void 0!==P&&P,G=e.captureAdditionalDocuments,$=void 0===G?[]:G,V=e.geolocationEnabled,j=void 0===V||V,z=e.geolocationRequired,q=void 0!==z&&z,W=e.debugMode,H=void 0!==W&&W;useLanguage(void 0===t?"auto":t);var K=React.useMemo((function(){return{autoCaptureEnabled:g,idCardAutoCaptureScoreThreshold:b,passportAutoCaptureScoreThreshold:_,mrzDetectionScoreThreshold:.5,idCardFocusScoreThreshold:R,passportFocusScoreThreshold:S,barcodeScanningEnabled:!1,skipSuccessScreen:T,assets:A,colors:F,verbiage:O,debugMode:H}}),[A,F,H,g,b,R,_,S,T,O]),Y=React.useMemo((function(){return{documents:$,verbiage:null==O?void 0:O.additionalDocumentCapture}}),[$,null==O?void 0:O.additionalDocumentCapture]),X=React.useMemo((function(){return{verbiage:null==O?void 0:O.signatureCapture}}),[null==O?void 0:O.signatureCapture]),J=React.useMemo((function(){return{skipSuccessScreen:T,colors:null==F?void 0:F.videoSignatureCapture,verbiage:null==O?void 0:O.videoSignatureCapture,debugMode:H}}),[null==F?void 0:F.videoSignatureCapture,H,T,null==O?void 0:O.videoSignatureCapture]),Z=React.useCallback((function(e){null==x||x(e),"Approved"===e.resultData.verificationResult?null==I||I(e):null==k||k(e)}),[I,x,k]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.VALIDATE,environment:r,url:o,token:a,companyId:i,manualReviewRequired:s,verifyIdWithExternalDatabases:l,personalData:c,cardData:u,webhooksEnabled:d,webhooksClientTraceId:f,webhooksStripSpecialCharacters:m,onBeforeSubmit:w,onResponseReceived:Z,geolocationEnabled:j,geolocationRequired:q},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["IdCapture"]}),[]),idCaptureProps:K,signatureCaptureProps:X,videoSignatureCaptureProps:J,additionalDocumentCaptureProps:Y,captureSignature:L,captureSignatureVideo:U,debugMode:H}))},FaceValidation=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=void 0===n?"prod":n,o=e.submissionUrl,i=e.companyId,s=e.webhooksEnabled,l=e.webhooksClientTraceId,c=e.webhooksStripSpecialCharacters,u=e.timeoutDurationMs,d=void 0===u?15e3:u,f=e.skipSuccessScreen,m=void 0!==f&&f,p=e.onBeforeSubmit,g=e.onComplete,h=e.onApproved,b=e.onDenied,v=e.onExitAfterFailure,_=e.assets,y=e.colors,R=e.verbiage,C=e.geolocationEnabled,S=void 0===C||C,E=e.geolocationRequired,T=void 0!==E&&E,w=e.debugMode,x=void 0!==w&&w;useLanguage(void 0===t?"auto":t);var I=React.useMemo((function(){return{timeoutDurationMs:d,skipSuccessScreen:m,onComplete:g,onSuccess:h,onTimeout:b,onExitAfterFailure:v,assets:_,colors:y,verbiage:R,debugMode:x}}),[_,y,x,h,g,b,v,m,d,R]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.NONE,environment:r,url:o,token:a,companyId:i,webhooksEnabled:s,webhooksClientTraceId:l,webhooksStripSpecialCharacters:c,onBeforeSubmit:p,geolocationEnabled:S,geolocationRequired:T},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["FaceLiveness"]}),[]),faceLivenessProps:I,debugMode:x}))},IdAndFaceValidation=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=void 0===n?"prod":n,o=e.submissionUrl,i=e.companyId,s=e.manualReviewRequired,l=e.verifyIdWithExternalDatabases,c=e.personalData,u=e.cardData,d=e.webhooksEnabled,f=e.webhooksClientTraceId,m=e.webhooksStripSpecialCharacters,p=e.idAutoCaptureEnabled,g=void 0===p||p,h=e.idCardAutoCaptureScoreThreshold,b=void 0===h?.8:h,v=e.mrzDetectionScoreThreshold,_=void 0===v?.5:v,y=e.passportAutoCaptureScoreThreshold,R=void 0===y?.75:y,C=e.idCardFocusScoreThreshold,S=void 0===C?.3:C,E=e.passportFocusScoreThreshold,T=void 0===E?.3:E,w=e.faceLivenessTimeoutDurationMs,x=void 0===w?15e3:w,I=e.skipSuccessScreen,k=void 0!==I&&I,D=e.onBeforeSubmit,A=e.onComplete,M=e.onApproved,F=e.onDenied,B=e.onExitAfterFailure,O=e.captureSignature,N=void 0!==O&&O,L=e.captureSignatureVideo,P=void 0!==L&&L,U=e.captureAdditionalDocuments,G=void 0===U?[]:U,$=e.assets,V=void 0===$?{}:$,j=e.colors,z=void 0===j?{}:j,q=e.verbiage,W=void 0===q?{}:q,H=e.geolocationEnabled,K=void 0===H||H,Y=e.geolocationRequired,X=void 0!==Y&&Y,J=e.debugMode,Z=void 0!==J&&J;useLanguage(void 0===t?"auto":t);var Q=React.useMemo((function(){return{assets:V.idCapture,colors:z.idCapture,verbiage:W.idCapture,autoCaptureEnabled:g,idCardAutoCaptureScoreThreshold:b,passportAutoCaptureScoreThreshold:R,mrzDetectionScoreThreshold:_,idCardFocusScoreThreshold:S,passportFocusScoreThreshold:T,skipSuccessScreen:k,debugMode:Z}}),[V.idCapture,z.idCapture,Z,g,b,S,_,R,T,k,W.idCapture]),ee=React.useMemo((function(){return{timeoutDurationMs:x,onTimeout:F,onExitAfterFailure:B,skipSuccessScreen:k,assets:V.faceLiveness,colors:z.faceLiveness,verbiage:W.faceLiveness,debugMode:Z}}),[V.faceLiveness,z.faceLiveness,Z,x,F,B,k,W.faceLiveness]),te=React.useMemo((function(){return{verbiage:W.signatureCapture}}),[null==W?void 0:W.signatureCapture]),ae=React.useMemo((function(){return{skipSuccessScreen:k,colors:null==z?void 0:z.videoSignatureCapture,verbiage:null==W?void 0:W.videoSignatureCapture,debugMode:Z}}),[null==z?void 0:z.videoSignatureCapture,Z,k,null==W?void 0:W.videoSignatureCapture]),ne=React.useMemo((function(){return{documents:G,verbiage:null==W?void 0:W.additionalDocumentCapture}}),[G,null==W?void 0:W.additionalDocumentCapture]),re=React.useCallback((function(e){null==A||A(e),"Approved"===e.resultData.verificationResult?null==M||M(e):null==F||F(e)}),[M,A,F]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.VALIDATE,environment:r,url:o,token:a,companyId:i,manualReviewRequired:s,verifyIdWithExternalDatabases:l,personalData:c,cardData:u,webhooksEnabled:d,webhooksClientTraceId:f,webhooksStripSpecialCharacters:m,onBeforeSubmit:D,onResponseReceived:re,geolocationEnabled:K,geolocationRequired:X},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["IdCapture","FaceLiveness"]}),[]),idCaptureProps:Q,faceLivenessProps:ee,signatureCaptureProps:te,videoSignatureCaptureProps:ae,additionalDocumentCaptureProps:ne,captureSignature:N,captureSignatureVideo:P,debugMode:Z}))},CustomerIdAndBiometricsEnrollment=function(e){var t=e.enrollmentId,a=e.lang,n=e.submissionToken,r=e.submissionEnvironment,o=void 0===r?"prod":r,i=e.submissionUrl,s=e.companyId,l=e.manualReviewRequired,c=e.verifyIdWithExternalDatabases,u=e.personalData,d=e.cardData,f=e.deduplicationEnabled,m=e.deduplicationSynchronous,p=e.webhooksEnabled,g=e.webhooksClientTraceId,h=e.webhooksStripSpecialCharacters,b=e.idAutoCaptureEnabled,v=void 0===b||b,_=e.idCardAutoCaptureScoreThreshold,y=void 0===_?.8:_,R=e.mrzDetectionScoreThreshold,C=void 0===R?.5:R,S=e.passportAutoCaptureScoreThreshold,E=void 0===S?.75:S,T=e.idCardFocusScoreThreshold,w=void 0===T?.3:T,x=e.passportFocusScoreThreshold,I=void 0===x?.3:x,k=e.faceLivenessTimeoutDurationMs,D=void 0===k?15e3:k,A=e.skipSuccessScreen,M=void 0!==A&&A,F=e.onBeforeSubmit,B=e.onComplete,O=e.onEnrolled,N=e.onDenied,L=e.onExitAfterFailure,P=e.captureAdditionalDocuments,U=void 0===P?[]:P,G=e.captureSignature,$=void 0!==G&&G,V=e.captureSignatureVideo,j=void 0!==V&&V,z=e.assets,q=void 0===z?{}:z,W=e.colors,H=void 0===W?{}:W,K=e.verbiage,Y=void 0===K?{}:K,X=e.geolocationEnabled,J=void 0===X||X,Z=e.geolocationRequired,Q=void 0!==Z&&Z,ee=e.debugMode,te=void 0!==ee&&ee;useLanguage(void 0===a?"auto":a);var ae=React.useMemo((function(){return{assets:q.idCapture,colors:H.idCapture,verbiage:Y.idCapture,autoCaptureEnabled:v,idCardAutoCaptureScoreThreshold:y,passportAutoCaptureScoreThreshold:E,mrzDetectionScoreThreshold:C,idCardFocusScoreThreshold:w,passportFocusScoreThreshold:I,skipSuccessScreen:M,debugMode:te}}),[q.idCapture,H.idCapture,te,v,y,w,C,E,I,M,Y.idCapture]),ne=React.useMemo((function(){return{onExitAfterFailure:L,timeoutDurationMs:D,skipSuccessScreen:M,assets:q.faceLiveness,colors:H.faceLiveness,verbiage:Y.faceLiveness,debugMode:te}}),[q.faceLiveness,H.faceLiveness,te,D,L,M,Y.faceLiveness]),re=React.useMemo((function(){return{documents:U,verbiage:Y.additionalDocumentCapture}}),[U,Y.additionalDocumentCapture]),oe=React.useMemo((function(){return{verbiage:null==Y?void 0:Y.signatureCapture}}),[null==Y?void 0:Y.signatureCapture]),ie=React.useMemo((function(){return{skipSuccessScreen:M,colors:null==H?void 0:H.videoSignatureCapture,verbiage:null==Y?void 0:Y.videoSignatureCapture,debugMode:te}}),[null==H?void 0:H.videoSignatureCapture,te,M,null==Y?void 0:Y.videoSignatureCapture]),se=React.useCallback((function(e){null==B||B(e),"Customer Onboarded"===e.resultData.verificationResult?null==O||O(e):null==N||N(e)}),[O,B,N]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.ENROLL,environment:o,url:i,token:n,companyId:s,enrollmentId:t,manualReviewRequired:l,verifyIdWithExternalDatabases:c,personalData:u,cardData:d,deduplicationEnabled:f,deduplicationSynchronous:m,webhooksEnabled:p,webhooksClientTraceId:g,webhooksStripSpecialCharacters:h,onBeforeSubmit:F,onResponseReceived:se,geolocationEnabled:J,geolocationRequired:Q},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["IdCapture","FaceLiveness"]}),[]),idCaptureProps:ae,faceLivenessProps:ne,additionalDocumentCaptureProps:re,signatureCaptureProps:oe,videoSignatureCaptureProps:ie,captureSignature:$,captureSignatureVideo:j,debugMode:te}))},ALLOWED_RETRIES$3=0,initialState$1={frame:null,face:null,imageUrl:null,requestState:"CAPTURING",requestError:null,unverifiedTimes:0},reducer$1=function(e,t){switch(t.type){case"verificationReady":return["CAPTURING","ERROR"].includes(e.requestState)?tslib.__assign(tslib.__assign({},e),{requestState:"CAPTURED",frame:t.payload.frame,face:t.payload.face}):e;case"verifying":return tslib.__assign(tslib.__assign({},e),{requestState:"VERIFYING",imageUrl:t.payload.imageUrl});case"verificationCompleted":var a=t.payload.response,n=a.status,r=n.statusMessage,o=n.errorData,i=a.resultData;if("000"!==n.statusCode)return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:new Error("".concat(r,": ").concat(o))});var s=e.requestState,l=e.unverifiedTimes;return"00"===i.verificationResultCode?s="VERIFIED":l<ALLOWED_RETRIES$3?(s="CAPTURING",l+=1):s="REJECTED",tslib.__assign(tslib.__assign({},e),{requestState:s,unverifiedTimes:l});case"verificationFailed":return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:t.payload.error});default:return e}},CustomerVerificationCapture=function(e){var t=e.onCustomerMatched,a=e.onCustomerNotMatched,n=e.onCaptureGuidanceTimeout,r=e.onExit,o=e.captureGuidanceTimeoutDurationMs,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l,u=e.debugMode,d=void 0!==u&&u,f=React.useReducer(reducer$1,initialState$1),m=f[0],p=f[1],g=m.frame,h=m.face,b=React.useContext(SubmissionContext),v=b.submit,_=b.submissionResponse,y=b.submissionError,R=b.selfieImage,C=b.setSelfieImage,S=React.useState(null),E=S[0],T=S[1],w=React.useRef(null),x=React.useRef(null),I=React.useCallback((function(e,t){p({type:"verificationReady",payload:{frame:e,face:t}})}),[]),k="CAPTURED"===m.requestState;return React.useEffect((function(){if(g&&h&&!y){var e=cropToShoulders(w.current,x.current,g,h);T(e),dataUrlToBase64(e).then((function(e){C(e)}))}}),[h,g,C,y]),React.useEffect((function(){k&&R&&!y&&tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),p({type:"verifying",payload:{imageUrl:R}}),[4,v()];case 1:if(!(e=a.sent()))throw new Error("submission failed!");return p({type:"verificationCompleted",payload:{response:e}}),[3,3];case 2:return t=a.sent(),p({type:"verificationFailed",payload:{error:t}}),[3,3];case 3:return[2]}}))}))}),[k,t,a,R,m.requestState,y,v]),React.useEffect((function(){_&&("VERIFIED"===m.requestState?null==t||t(_):"REJECTED"===m.requestState&&(null==a||a(_)))}),[t,a,m.requestState,_]),useTimeout(o,n,["VERIFIED","REJECTED"].includes(m.requestState),"VERIFYING"===m.requestState),React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(InvisibleCanvas,{ref:w}),React__default.default.createElement(InvisibleCanvas,{ref:x}),React__default.default.createElement(SelfieCapture,{onSelfieCaptured:I,onExit:r,timeoutDurationMs:o,colors:s,verbiage:c,debugMode:d}),E&&React__default.default.createElement(SelfieProgressPreview,{imageUrl:E}))},CustomerVerificationSuccess=function(e){var t,a,n=e.imageUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;n||(n="".concat(DEFAULT_CDN_URL,"/Selfie-Image-1.png")),s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Customer has been verified!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},u.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:u.headingText,src:n})),React__default.default.createElement("div",{style:{marginTop:24}},React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},CustomerVerificationFailure=function(e){var t,a,n,r,o=e.canRetry,i=void 0===o||o,s=e.onRetryClick,l=e.onExitClick,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m;u.imageUrl||(u.imageUrl="".concat(DEFAULT_CDN_URL,"/manual_capture.png")),f.retryBtn||(f.retryBtn={}),(t=f.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=f.retryBtn).textColor||(a.textColor="white"),f.exitBtn||(f.exitBtn={}),(n=f.exitBtn).backgroundColor||(n.backgroundColor="#666"),(r=f.exitBtn).textColor||(r.textColor="white");var g=useTranslations(p,{headingText:"Customer not verified",retryBtnText:"Retry",exitBtnText:"Exit"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},g.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:g.headingText,src:u.imageUrl})),React__default.default.createElement("div",{style:{marginTop:24}},i&&React__default.default.createElement(LoaderButton,{onClick:s,colors:f.retryBtn,style:{marginRight:15},finished:!0},g.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:l,colors:f.exitBtn,finished:!0},g.exitBtnText))))},ALLOWED_RETRIES$2=2,CustomerVerificationWizard=function(e){var t=e.onComplete,a=e.onCustomerMatched,n=e.onCustomerNotMatched,r=e.onExitAfterFailure,o=e.onCaptureGuidanceTimeout,i=e.captureGuidanceTimeoutDurationMs,s=e.skipSuccessScreen,l=void 0!==s&&s,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m,g=e.debugMode,h=void 0!==g&&g,b=React.useContext(SubmissionContext),v=b.submissionResponse,_=b.selfieImage,y=React.useState("LOADING"),R=y[0],C=y[1],S=React.useContext(CameraStateContext).releaseCameraAccess,E=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return C("MATCHED"),null==a||a(e),[2]}))}))}),[a]),T=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return C("NOT_MATCHED"),null==n||n(e),[2]}))}))}),[n]),w=React.useCallback((function(){C("FAILED"),null==o||o()}),[o]),x=React.useState(0),I=x[0],k=x[1],D=React.useCallback((function(){k((function(e){return e+1})),C("LOADING")}),[]),A=React.useCallback((function(){S(),v&&(null==t||t(v))}),[t,S,v]),M=useShowSuccessScreen(l,"MATCHED"===R,A);return React__default.default.createElement(React__default.default.Fragment,null,"LOADING"!==R&&function(){switch(R){case"CAPTURING":return React__default.default.createElement(CustomerVerificationCapture,{key:"capture".concat(I),onCustomerMatched:E,onCustomerNotMatched:T,onCaptureGuidanceTimeout:w,onExit:D,captureGuidanceTimeoutDurationMs:i,colors:f,verbiage:p,debugMode:h});case"MATCHED":if(!M)return;return React__default.default.createElement(CustomerVerificationSuccess,{imageUrl:"data:image/png;base64, ".concat(_),colors:f.success,verbiage:p.success,onDoneClick:A,onRetryClick:function(){C("CAPTURING"),k(0)}});case"NOT_MATCHED":case"FAILED":return React__default.default.createElement(CustomerVerificationFailure,{assets:u.failure,colors:f.failure,verbiage:p.failure,canRetry:I<ALLOWED_RETRIES$2,onExitClick:function(){S(),null==r||r()},onRetryClick:function(){k((function(e){return e+1}))}});default:return null}}(),React__default.default.createElement(SelfieCaptureLoadingOverlay,{key:I,assets:u.loadingOverlay,colors:f.loadingOverlay,verbiage:p.loadingOverlay,onDismissed:function(){C("CAPTURING")}}))},CustomerVerification=function(e){var t=e.lang,a=e.enrollmentId,n=e.submissionToken,r=e.submissionEnvironment,o=void 0===r?"prod":r,i=e.submissionUrl,s=e.companyId,l=e.webhooksEnabled,c=e.webhooksClientTraceId,u=e.webhooksStripSpecialCharacters,d=e.timeoutDurationMs,f=void 0===d?15e3:d,m=e.skipSuccessScreen,p=void 0!==m&&m,g=e.assets,h=e.colors,b=e.verbiage,v=e.onBeforeSubmit,_=e.onComplete,y=e.onCustomerMatched,R=e.onCustomerNotMatched,C=e.onExitAfterFailure,S=e.geolocationEnabled,E=void 0===S||S,T=e.geolocationRequired,w=void 0!==T&&T,x=e.debugMode,I=void 0!==x&&x;return useLanguage(void 0===t?"auto":t),React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.VERIFY,environment:o,url:i,token:n,companyId:s,enrollmentId:a,webhooksEnabled:l,webhooksClientTraceId:c,webhooksStripSpecialCharacters:u,onBeforeSubmit:v,geolocationEnabled:E,geolocationRequired:w},React__default.default.createElement(CameraProvider,{preferFrontFacingCamera:!0},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(CustomerVerificationWizard,{onComplete:_,onCustomerMatched:y,onCustomerNotMatched:R,onExitAfterFailure:C,captureGuidanceTimeoutDurationMs:f,skipSuccessScreen:p,assets:g,colors:h,verbiage:b,debugMode:I}))))},ALLOWED_RETRIES$1=0,initialState={frame:null,face:null,imageUrl:null,requestState:"CAPTURING",requestError:null,notFoundTimes:0},reducer=function(e,t){switch(t.type){case"identificationReady":return["CAPTURING","ERROR"].includes(e.requestState)?tslib.__assign(tslib.__assign({},e),{requestState:"CAPTURED",frame:t.payload.frame,face:t.payload.face}):e;case"identifying":return tslib.__assign(tslib.__assign({},e),{requestState:"IDENTIFYING",imageUrl:t.payload.imageUrl});case"identificationCompleted":var a=t.payload.response,n=a.status,r=n.statusMessage,o=n.errorData,i=a.resultData;if("000"!==n.statusCode)return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:new Error("".concat(r,": ").concat(o))});var s=e.requestState,l=e.notFoundTimes;return"46"===i.verificationResultCode?s="FOUND":l<ALLOWED_RETRIES$1?(s="CAPTURING",l+=1):s="NOT_FOUND",tslib.__assign(tslib.__assign({},e),{requestState:s,notFoundTimes:l});case"identificationFailed":return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:t.payload.error});default:return e}},CustomerIdentificationCapture=function(e){var t=e.onCustomerMatched,a=e.onCustomerNotMatched,n=e.onCaptureGuidanceTimeout,r=e.onExit,o=e.captureGuidanceTimeoutDurationMs,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l,u=e.debugMode,d=void 0!==u&&u,f=React.useReducer(reducer,initialState),m=f[0],p=f[1],g=React.useContext(SubmissionContext),h=g.submit,b=g.submissionResponse,v=g.submissionError,_=g.selfieImage,y=g.setSelfieImage,R=React.useState(null),C=R[0],S=R[1],E=React.useRef(null),T=React.useRef(null),w=React.useCallback((function(e,t){p({type:"identificationReady",payload:{frame:e,face:t}})}),[]),x=m.frame,I=m.face,k="CAPTURED"===m.requestState;return React.useEffect((function(){if(x&&I&&!v){var e=cropToShoulders(E.current,T.current,x,I);S(e),dataUrlToBase64(e).then((function(e){y(e)}))}}),[I,x,y,v]),React.useEffect((function(){k&&_&&!v&&tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),p({type:"identifying",payload:{imageUrl:_}}),[4,h()];case 1:if(!(e=a.sent()))throw new Error("submission failed!");return p({type:"identificationCompleted",payload:{response:e}}),[3,3];case 2:return t=a.sent(),p({type:"identificationFailed",payload:{error:t}}),[3,3];case 3:return[2]}}))}))}),[k,t,a,_,m.requestState,v,h]),React.useEffect((function(){b&&("FOUND"===m.requestState?null==t||t(b):"NOT_FOUND"===m.requestState&&(null==a||a(b)))}),[t,a,m.requestState,b]),useTimeout(o,n,["FOUND","NOT_FOUND"].includes(m.requestState),"IDENTIFYING"===m.requestState),React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(InvisibleCanvas,{ref:E}),React__default.default.createElement(InvisibleCanvas,{ref:T}),React__default.default.createElement(SelfieCapture,{onSelfieCaptured:w,onExit:r,timeoutDurationMs:o,colors:s,verbiage:c,debugMode:d}),C&&React__default.default.createElement(SelfieProgressPreview,{imageUrl:C}))},CustomerIdentificationSuccess=function(e){var t,a,n=e.imageUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;n||(n="".concat(DEFAULT_CDN_URL,"/Selfie-Image-1.png")),s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Customer has been identified!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},u.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:u.headingText,src:n})),React__default.default.createElement("div",{style:{marginTop:24}},React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},CustomerIdentificationFailure=function(e){var t,a,n,r,o=e.canRetry,i=void 0===o||o,s=e.onRetryClick,l=e.onExitClick,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m;u.imageUrl||(u.imageUrl="".concat(DEFAULT_CDN_URL,"/manual_capture.png")),f.retryBtn||(f.retryBtn={}),(t=f.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=f.retryBtn).textColor||(a.textColor="white"),f.exitBtn||(f.exitBtn={}),(n=f.exitBtn).backgroundColor||(n.backgroundColor="#666"),(r=f.exitBtn).textColor||(r.textColor="white");var g=useTranslations(p,{headingText:"Customer not found",retryBtnText:"Retry",exitBtnText:"Exit"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},g.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:g.headingText,src:u.imageUrl})),React__default.default.createElement("div",{style:{marginTop:24}},i&&React__default.default.createElement(LoaderButton,{onClick:s,colors:f.retryBtn,style:{marginRight:15},finished:!0},g.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:l,colors:f.exitBtn,finished:!0},g.exitBtnText))))},ALLOWED_RETRIES=2,CustomerIdentificationWizard=function(e){var t=e.onComplete,a=e.onCustomerMatched,n=e.onCustomerNotMatched,r=e.onExitAfterFailure,o=e.onCaptureGuidanceTimeout,i=e.captureGuidanceTimeoutDurationMs,s=e.skipSuccessScreen,l=void 0!==s&&s,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m,g=e.debugMode,h=void 0!==g&&g,b=React.useContext(SubmissionContext),v=b.submissionResponse,_=b.selfieImage,y=React.useState("LOADING"),R=y[0],C=y[1],S=React.useContext(CameraStateContext).releaseCameraAccess,E=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return C("FOUND"),null==a||a(e),[2]}))}))}),[a]),T=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return C("NOT_FOUND"),null==n||n(e),[2]}))}))}),[n]),w=React.useCallback((function(){C("FAILED"),null==o||o()}),[o]),x=React.useState(0),I=x[0],k=x[1],D=React.useCallback((function(){k((function(e){return e+1})),C("LOADING")}),[]),A=React.useCallback((function(){S(),v&&(null==t||t(v))}),[t,S,v]),M=useShowSuccessScreen(l,"FOUND"===R,A);return React__default.default.createElement(React__default.default.Fragment,null,"LOADING"!==R&&function(){switch(R){case"CAPTURING":return React__default.default.createElement(CustomerIdentificationCapture,{key:"capture".concat(I),onCustomerMatched:E,onCustomerNotMatched:T,onCaptureGuidanceTimeout:w,onExit:D,captureGuidanceTimeoutDurationMs:i,colors:f,verbiage:p,debugMode:h});case"FOUND":if(!M)return;return React__default.default.createElement(CustomerIdentificationSuccess,{imageUrl:"data:image/png;base64, ".concat(_),colors:f.success,verbiage:p.success,onDoneClick:A,onRetryClick:function(){C("CAPTURING"),k(0)}});case"NOT_FOUND":case"FAILED":return React__default.default.createElement(CustomerIdentificationFailure,{assets:u.failure,colors:f.failure,verbiage:p.failure,canRetry:I<ALLOWED_RETRIES,onExitClick:function(){S(),null==r||r()},onRetryClick:function(){k((function(e){return e+1}))}});default:return null}}(),React__default.default.createElement(SelfieCaptureLoadingOverlay,{key:I,assets:u.loadingOverlay,colors:f.loadingOverlay,verbiage:p.loadingOverlay,onDismissed:function(){C("CAPTURING")}}))},CustomerIdentification=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=void 0===n?"prod":n,o=e.submissionUrl,i=e.companyId,s=e.webhooksEnabled,l=e.webhooksClientTraceId,c=e.webhooksStripSpecialCharacters,u=e.timeoutDurationMs,d=void 0===u?15e3:u,f=e.skipSuccessScreen,m=void 0!==f&&f,p=e.onBeforeSubmit,g=e.onComplete,h=e.onCustomerMatched,b=e.onCustomerNotMatched,v=e.onCaptureGuidanceTimeout,_=e.onExitAfterFailure,y=e.assets,R=e.colors,C=e.verbiage,S=e.geolocationEnabled,E=e.geolocationRequired,T=void 0!==E&&E,w=e.debugMode,x=void 0!==w&&w;return useLanguage(void 0===t?"auto":t),React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.IDENTIFY,environment:r,url:o,token:a,companyId:i,webhooksEnabled:s,webhooksClientTraceId:l,webhooksStripSpecialCharacters:c,onBeforeSubmit:p,geolocationEnabled:S,geolocationRequired:T},React__default.default.createElement(CameraProvider,{preferFrontFacingCamera:!0},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(CustomerIdentificationWizard,{onComplete:g,onCustomerMatched:h,onCustomerNotMatched:b,onExitAfterFailure:_,onCaptureGuidanceTimeout:v,captureGuidanceTimeoutDurationMs:d,skipSuccessScreen:m,assets:y,colors:R,verbiage:C,debugMode:x}))))},SignatureKYC=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=e.submissionUrl,o=e.onBeforeSubmit,i=e.onComplete,s=e.skipSuccessScreen,l=void 0!==s&&s,c=e.colors,u=e.verbiage,d=e.geolocationEnabled,f=e.geolocationRequired,m=e.debugMode;useLanguage(void 0===t?"auto":t);var p=React.useState(0),g=p[1];return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.NONE,environment:n,url:r,token:a,onBeforeSubmit:o,onResponseReceived:i,geolocationEnabled:d,geolocationRequired:f},React__default.default.createElement(CameraProvider,{key:p[0],preferContinuityCamera:!1,preferFrontFacingCamera:!0},React__default.default.createElement(VideoSignatureWizard,{skipSuccessScreen:l,colors:c,debugMode:m,verbiage:u,onRetryClicked:function(){g((function(e){return e+1}))}})))},IdVideoCaptureFlipIdPrompt=function(e){var t,a=e.style,n=void 0===a?{}:a,r=e.assets,o=void 0===r?{}:r,i=e.verbiage,s=void 0===i?{}:i,l=useResizeObserver__default.default(),c=l.ref,u=l.width,d=void 0===u?1:u,f=l.height,m=void 0===f?1:f,p=React.useContext(CameraStateContext).cameraRef;o.frontImageUrl||(o.frontImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Landscape-2.svg")),o.backImageUrl||(o.backImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Landscape-2.svg"));var g,h=useVerbiage(s.instructionText,"Please flip your ID card..."),b=!(null===(t=p.current)||void 0===t?void 0:t.isRearFacing);g={width:d-0-8};var v=React.useState(1),_=v[0],y=v[1],R=React.useState(0),C=R[0],S=R[1],E=["rotateY(".concat(C,"deg)")];b&&E.push("scaleX(-1)");var T=["rotateY(".concat(180-C,"deg)")];return b&&T.push("scaleX(-1)"),React.useEffect((function(){var e=function(){y(1),S(180),setTimeout((function(){y(0),S(0)}),1500)};setTimeout(e,250);var t=setInterval(e,2500);return function(){clearInterval(t)}}),[]),React__default.default.createElement("div",{ref:c,style:tslib.__assign(tslib.__assign({},n),{position:"relative"})},React__default.default.createElement("div",{style:{display:"flex",flexFlow:"column nowrap",height:"100%"}},React__default.default.createElement("div",{style:{width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12}},h)),React__default.default.createElement("div",{style:{position:"relative",display:"flex",flexFlow:"row nowrap",alignItems:"center",justifyItems:"center",maxWidth:"calc(100%)",maxHeight:"calc(100% - ".concat(0,"px - ").concat(8,"px)")}},React__default.default.createElement("div",{style:{width:"100%",height:"100%",minWidth:0,flexGrow:1}}),React__default.default.createElement("div",{style:{maxWidth:"calc(100% - ".concat(0,"px - ").concat(8,"px)"),maxHeight:m-0-8}},React__default.default.createElement("div",{style:{position:"relative",border:"".concat(4,"px solid ").concat("white")}},React__default.default.createElement("img",{src:o.frontImageUrl,alt:"",style:tslib.__assign({backfaceVisibility:"hidden",transition:"transform ".concat(_,"s"),transform:E.join(" "),transformStyle:"preserve-3d",position:"relative",top:0,left:0,display:"block"},g)}),React__default.default.createElement("img",{src:o.backImageUrl,alt:"",style:tslib.__assign({backfaceVisibility:"hidden",transition:"transform ".concat(_,"s"),transform:T.join(" "),transformStyle:"preserve-3d",position:"absolute",top:0,left:0,display:"block"},g)}))),React__default.default.createElement("div",{style:{width:"100%",height:"100%",minWidth:0,flexGrow:1}})),React__default.default.createElement("div",{style:{width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12,opacity:0}},h))))},IdVideoCaptureGuides=function(e){var t=e.instructionText,a=e.borderWidth,n=void 0===a?3:a,r=e.borderColor,o=void 0===r?"white":r,i=e.guideImageUrl,s=void 0===i?"".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Landscape-2.svg"):i,l=e.flipping,c=void 0!==l&&l;return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("div",{style:{position:"absolute",zIndex:1e3,width:"100%",height:"100%",display:"flex",flexDirection:"column"}},React__default.default.createElement("div",{style:{borderWidth:n,borderColor:o,borderStyle:"solid",borderRadius:"50%",aspectRatio:"1 / 1.618",height:"100%",margin:"4% auto auto"}}),c?React__default.default.createElement(IdVideoCaptureFlipIdPrompt,{style:{width:"30%",margin:"2% auto 2%"}}):React__default.default.createElement("div",{style:{width:"30%",margin:"2% auto 2%",display:"flex",flexFlow:"column nowrap"}},React__default.default.createElement("div",{style:{width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12}},t)),React__default.default.createElement("div",{style:{border:"4px solid white"}},React__default.default.createElement("img",{src:s,alt:"",style:{width:"100%"}})),React__default.default.createElement("div",{style:{width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12,opacity:0}},t)))))},IdVideoCapture=function(e){var t,a,n,r,o,i,s=e.onComplete,l=e.onFaceNotDetected,c=e.idDetectionThreshold,u=void 0===c?.6:c,d=e.idFocusThreshold,f=void 0===d?.25:d,m=e.goodFramesThreshold,p=void 0===m?3:m,g=e.verbiage,h=void 0===g?{}:g,b=e.debugMode,v=void 0!==b&&b,_=useResizeObserver__default.default(),y=_.ref,R=_.width,C=void 0===R?1:R,S=_.height,E=void 0===S?1:S,T=React.useContext(CameraStateContext),w=T.cameraRef,x=T.videoRef,I=T.videoLoaded,k=T.cameraReady,D=React.useState([]),A=D[0],M=D[1],F=React.useState([]),B=F[0],O=F[1],N=React.useContext(IdCaptureModelsContext),L=N.ready,P=N.working,U=N.makePrediction,G=N.onPredictionMade,$=N.setThresholds,V=React.useContext(HighPerformanceSelfieGuidanceModelsContext).onPredictionMade,j=useVideoRecorder(w.current),z=j.isRecording,q=j.startRecording,W=j.stopRecording,H=j.videoUrl;React.useEffect((function(){z||H||q(),H&&(null==s||s(H))}),[z,s,q,H]);var K=React.useRef(0),Y=React.useRef(!1);React.useEffect((function(){Y.current=I&&k&&L}),[k,L,I]),React.useEffect((function(){if(L&&k&&I)return K.current=requestAnimationFrame((function e(){return tslib.__awaiter(this,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return Y.current&&!P.current&&x.current&&U(x.current),K.current=requestAnimationFrame(e),[2]}))}))})),function(){cancelAnimationFrame(K.current)}}),[k,L,P,U,I,x]),React.useEffect((function(){$({document:u,passport:1,focus:f})}),[u,f,$]);var X=React.useState(DocumentType.ID_CARD_FRONT),J=X[0],Z=X[1],Q=React.useState(!1),ee=Q[0],te=Q[1],ae=React.useState(0),ne=ae[0],re=ae[1],oe=ne>=p;React.useEffect((function(){G((function(e){M(e.detectedObjects),re(e.detectionThresholdMet&&e.focusThresholdMet?function(e){return e+1}:0)}))}),[u,G]),React.useEffect((function(){oe&&(J==DocumentType.ID_CARD_FRONT?(te(!0),setTimeout((function(){te(!1),Z(DocumentType.ID_CARD_BACK)}),3500)):W())}),[oe,s,J,W]);var ie=React.useState(0),se=ie[0],le=ie[1];React.useEffect((function(){V((function(e){O(e),le((function(t){return 0===e.length?t+1:0}))}))}),[V]),React.useEffect((function(){se>=2&&(null==l||l())}),[se,l]);var ce=useTranslations(h,{idFrontInstructionText:"Display the front of your ID card...",idBackInstructionText:"Display the back of your ID card..."}),ue=useDebugScalingDetails({enabled:v,pageWidth:C,pageHeight:E,videoWidth:null!==(a=null===(t=x.current)||void 0===t?void 0:t.videoWidth)&&void 0!==a?a:0,videoHeight:null!==(r=null===(n=x.current)||void 0===n?void 0:n.videoHeight)&&void 0!==r?r:0});return React__default.default.createElement(PageContainer,{ref:y,className:"flex"},React__default.default.createElement(CameraVideoTag,null),React__default.default.createElement(IdVideoCaptureGuides,{instructionText:J===DocumentType.ID_CARD_FRONT?ce.idFrontInstructionText:ce.idBackInstructionText,guideImageUrl:"".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-").concat(J===DocumentType.ID_CARD_FRONT?"Front":"Back","-SVG-Landscape-2.svg"),flipping:ee}),v&&A.length>0&&React__default.default.createElement(ObjectDetectionDebugOverlay,{$flipX:!(null===(o=w.current)||void 0===o?void 0:o.isRearFacing)},A.map((function(e,t){var a;return React__default.default.createElement(IdCaptureDetectedObjectDebugBox,{key:t,obj:e,scaling:ue,color:"blue",flipX:!(null===(a=w.current)||void 0===a?void 0:a.isRearFacing)})}))),v&&B.length>0&&React__default.default.createElement(ObjectDetectionDebugOverlay,{$flipX:!(null===(i=w.current)||void 0===i?void 0:i.isRearFacing)},B.map((function(e,t){var a;return React__default.default.createElement(SelfieCaptureFaceDebugBox,{key:t,face:e,scaling:ue,flipX:!(null===(a=w.current)||void 0===a?void 0:a.isRearFacing)})}))),v&&React__default.default.createElement(DebugStatsPane,null,w.current?React__default.default.createElement(React__default.default.Fragment,null,"✅ Camera: ",w.current.label," (",w.current.width,"x",w.current.height,")"):"❌ Camera not ready",React__default.default.createElement("br",null),oe?"✅":"❌"," Good Frame Count:"," ",ne,"/",p))},IdVideoCaptureSuccess=function(e){var t,a,n=e.videoUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Video ID has been successfully captured!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h1",null,u.headingText),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement(StyledVideo,{src:n,poster:n+"#t=0.1",controls:!0,preload:"metadata",autoPlay:!0})),React__default.default.createElement("div",null,React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},StyledVideo=styled__default.default.video(templateObject_1||(templateObject_1=tslib.__makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"],["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"]))),VideoIdWizard=function(e){var t=e.idCaptureProps,a=void 0===t?{}:t,n=e.assets,r=void 0===n?{}:n,o=e.colors,i=void 0===o?{}:o,s=e.verbiage,l=void 0===s?{}:s,c=e.debugMode,u=void 0!==c&&c,d=React.useContext(SubmissionContext),f=d.selfieImage,m=d.setSelfieImage,p=d.logSelfieCaptureAttempt,g=React.useState("CAPTURING_ID"),h=g[0],b=g[1],v=React.useState(null),_=v[0],y=v[1],R=React.useRef(),C=React.useRef(),S=React.useRef();React.useEffect((function(){R.current=new Date}),[]),React.useEffect((function(){"CHECKING_LIVENESS"===h&&(C.current=new Date)}),[h]);var E=React.useCallback((function(){var e,t,a;p({autoCapture:"Y",captureTime:(null!==(e=S.current)&&void 0!==e?e:new Date).getTime()-(null!==(t=C.current)&&void 0!==t?t:new Date).getTime(),operationTime:(new Date).getTime()-(null!==(a=R.current)&&void 0!==a?a:new Date).getTime()}),R.current=new Date}),[p]),T=a.onSuccess,w=React.useCallback((function(e){null==T||T(e),b("CHECKING_LIVENESS")}),[T]),x=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return b("CAPTURING_VIDEO"),E(),f?[3,2]:(t=m,[4,dataUrlToBase64(e)]);case 1:t.apply(void 0,[a.sent()]),a.label=2;case 2:return[2]}}))}))}),[E,f,m]),I=React.useCallback((function(e){y(e),b("SUCCESS")}),[]),k=React.useCallback((function(){b("CHECKING_LIVENESS")}),[]),D=React.useCallback((function(){b("LOADING")}),[]);return React__default.default.createElement(React__default.default.Fragment,null,"LOADING"!==h&&function(){var e,t,n,o,s,c,d,f;switch(h){case"CAPTURING_ID":return React__default.default.createElement(IdCaptureModelsProvider,{documentDetectionModelUrl:null!==(t=null===(e=a.assets)||void 0===e?void 0:e.documentDetectionModelUrl)&&void 0!==t?t:"",focusModelUrl:null!==(o=null===(n=a.assets)||void 0===n?void 0:n.focusModelUrl)&&void 0!==o?o:"",logPredictions:u},React__default.default.createElement(CameraProvider,{key:"IdCaptureCamera"},React__default.default.createElement(GuideOrientationProvider,null,React__default.default.createElement(IdCaptureWizard,tslib.__assign({},a,{assets:r.idCapture,colors:i.idCapture,verbiage:l.idCapture,onSuccess:w,skipSuccessScreen:!0})))));case"CHECKING_LIVENESS":return React__default.default.createElement(CameraProvider,{key:"FaceLivenessCamera",preferFrontFacingCamera:!0,preferContinuityCamera:!1},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(FaceLivenessCapture,{onSuccess:x,onExit:D,colors:i.faceLiveness,verbiage:l.faceLiveness,debugMode:u})));case"CAPTURING_VIDEO":return React__default.default.createElement(CameraProvider,{key:"FaceLivenessCamera",preferFrontFacingCamera:!0,preferContinuityCamera:!1},React__default.default.createElement(IdCaptureModelsProvider,{documentDetectionModelUrl:null!==(c=null===(s=a.assets)||void 0===s?void 0:s.documentDetectionModelUrl)&&void 0!==c?c:"",focusModelUrl:null!==(f=null===(d=a.assets)||void 0===d?void 0:d.focusModelUrl)&&void 0!==f?f:"",logPredictions:u},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(IdVideoCapture,{onComplete:I,onFaceNotDetected:k,debugMode:u}))));case"SUCCESS":return React__default.default.createElement(IdVideoCaptureSuccess,{videoUrl:null!=_?_:""});default:return null}}())},VideoIdValidation=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=e.submissionUrl,o=e.onBeforeSubmit,i=e.onComplete,s=e.skipSuccessScreen,l=void 0!==s&&s,c=e.geolocationEnabled,u=e.geolocationRequired,d=e.debugMode,f=void 0!==d&&d;return useLanguage(void 0===t?"auto":t),React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.NONE,environment:n,url:r,token:a,onBeforeSubmit:o,onResponseReceived:i,geolocationEnabled:c,geolocationRequired:u},React__default.default.createElement(VideoIdWizard,{skipSuccessScreen:l,debugMode:f}))},preloadModels=function(e){var t=e.documentDetectionModel,a=void 0===t?"".concat(DEFAULT_CDN_URL,"/models/documentdetection448/model.json"):t,n=e.focusModel,r=void 0===n?"".concat(DEFAULT_CDN_URL,"/models/focus/model.json"):n,o=e.skipFaceDetectionModel,i=void 0!==o&&o;return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(e){switch(e.label){case 0:return a?[4,loadDocumentDetectionModel(a)]:[3,2];case 1:e.sent(),e.label=2;case 2:return r?[4,loadFocusModel(r)]:[3,4];case 3:e.sent(),e.label=4;case 4:return i?[3,6]:[4,loadHighPerformanceFaceDetector()];case 5:e.sent(),e.label=6;case 6:return[2]}}))}))},CustomerBiometricsEnrollment=function(e){var t=e.enrollmentId,a=e.lang,n=e.submissionToken,r=e.submissionEnvironment,o=void 0===r?"prod":r,i=e.submissionUrl,s=e.companyId,l=e.deduplicationEnabled,c=e.deduplicationSynchronous,u=e.webhooksEnabled,d=e.webhooksClientTraceId,f=e.webhooksStripSpecialCharacters,m=e.timeoutDurationMs,p=void 0===m?15e3:m,g=e.skipSuccessScreen,h=void 0!==g&&g,b=e.onBeforeSubmit,v=e.onComplete,_=e.onEnrolled,y=e.onDenied,R=e.onExitAfterFailure,C=e.captureAdditionalDocuments,S=void 0===C?[]:C,E=e.captureSignature,T=void 0!==E&&E,w=e.captureSignatureVideo,x=void 0!==w&&w,I=e.assets,k=void 0===I?{}:I,D=e.colors,A=void 0===D?{}:D,M=e.verbiage,F=void 0===M?{}:M,B=e.geolocationEnabled,O=void 0===B||B,N=e.geolocationRequired,L=void 0!==N&&N,P=e.debugMode,U=void 0!==P&&P;useLanguage(void 0===a?"auto":a);var G=React.useMemo((function(){return{onExitAfterFailure:R,timeoutDurationMs:p,skipSuccessScreen:h,assets:k.faceLiveness,colors:A.faceLiveness,verbiage:F.faceLiveness,debugMode:U}}),[k.faceLiveness,A.faceLiveness,U,R,h,p,F.faceLiveness]),$=React.useMemo((function(){return{documents:S,verbiage:F.additionalDocumentCapture}}),[S,F.additionalDocumentCapture]),V=React.useMemo((function(){return{verbiage:F.signatureCapture}}),[F.signatureCapture]),j=React.useMemo((function(){return{skipSuccessScreen:h,colors:null==A?void 0:A.videoSignatureCapture,verbiage:null==F?void 0:F.videoSignatureCapture,debugMode:U}}),[null==A?void 0:A.videoSignatureCapture,U,h,null==F?void 0:F.videoSignatureCapture]),z=React.useCallback((function(e){null==v||v(e),"Customer Onboarded"===e.resultData.verificationResult?null==_||_(e):null==y||y(e)}),[_,v,y]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.ENROLL,environment:o,url:i,token:n,companyId:s,enrollmentId:t,deduplicationEnabled:l,deduplicationSynchronous:c,webhooksEnabled:u,webhooksClientTraceId:d,webhooksStripSpecialCharacters:f,onBeforeSubmit:b,onResponseReceived:z,geolocationEnabled:O,geolocationRequired:L},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["FaceLiveness"]}),[]),faceLivenessProps:G,additionalDocumentCaptureProps:$,signatureCaptureProps:V,videoSignatureCaptureProps:j,captureSignature:T,captureSignatureVideo:x,debugMode:U}))};function renderElement(e,t){if("string"==typeof t){var a=document.querySelector(t);if(!a)throw new Error("targetElement ".concat(t," not found"));t=a}else t||(t=document.createElement("div"),document.body.append(t));var n=React__default.default.createElement(OverlayContainer,{ref:React.createRef()},e);return ReactDOM__namespace.createRoot(t).render(n),t}function renderComponent(e,t,a){return a||(a=t,t=void 0),renderElement(React__default.default.createElement(e,tslib.__assign({},a)),t)}i18n__default.default.use(LanguageDetector__default.default).use(reactI18next.initReactI18next).init({resources:resources,detection:{caches:[]},fallbackLng:"en",debug:!1,interpolation:{escapeValue:!1}}),void 0!==Sentry__namespace&&Sentry__namespace.init&&Sentry__namespace.init({dsn:"https://0a8e0e8df645473abe217b60b50fbcb1@o4505120557367296.ingest.sentry.io/4505120582008832",tracesSampleRate:1,debug:!0});var renderIdValidation=function(e,t){return renderComponent(IdValidation,e,t)},renderFaceValidation=function(e,t){return renderComponent(FaceValidation,e,t)},renderIdAndFaceValidation=function(e,t){return renderComponent(IdAndFaceValidation,e,t)},renderCustomerIdAndBiometricsEnrollment=function(e,t){return renderComponent(CustomerIdAndBiometricsEnrollment,e,t)},renderCustomerBiometricsEnrollment=function(e,t){return renderComponent(CustomerBiometricsEnrollment,e,t)},renderCustomerVerification=function(e,t){return renderComponent(CustomerVerification,e,t)},renderCustomerIdentification=function(e,t){return renderComponent(CustomerIdentification,e,t)},renderSignatureKYC=function(e,t){return renderComponent(SignatureKYC,e,t)},renderVideoIdValidation=function(e,t){return renderComponent(VideoIdValidation,e,t)};globalThis.IDmissionSDK={renderIdValidation:renderIdValidation,renderFaceValidation:renderFaceValidation,renderIdAndFaceValidation:renderIdAndFaceValidation,renderCustomerIdAndBiometricsEnrollment:renderCustomerIdAndBiometricsEnrollment,renderCustomerBiometricsEnrollment:renderCustomerBiometricsEnrollment,renderCustomerVerification:renderCustomerVerification,renderCustomerIdentification:renderCustomerIdentification,renderSignatureKYC:renderSignatureKYC,renderVideoIdValidation:renderVideoIdValidation,preloadModels:preloadModels,version:webSdkVersion,ready:!0},exports.CustomerBiometricsEnrollment=CustomerBiometricsEnrollment,exports.CustomerIdAndBiometricsEnrollment=CustomerIdAndBiometricsEnrollment,exports.CustomerIdentification=CustomerIdentification,exports.CustomerVerification=CustomerVerification,exports.FaceValidation=FaceValidation,exports.IdAndFaceValidation=IdAndFaceValidation,exports.IdValidation=IdValidation,exports.SignatureKYC=SignatureKYC,exports.VideoIdValidation=VideoIdValidation,exports.preloadModels=preloadModels,exports.renderCustomerBiometricsEnrollment=renderCustomerBiometricsEnrollment,exports.renderCustomerIdAndBiometricsEnrollment=renderCustomerIdAndBiometricsEnrollment,exports.renderCustomerIdentification=renderCustomerIdentification,exports.renderCustomerVerification=renderCustomerVerification,exports.renderFaceValidation=renderFaceValidation,exports.renderIdAndFaceValidation=renderIdAndFaceValidation,exports.renderIdValidation=renderIdValidation,exports.renderSignatureKYC=renderSignatureKYC,exports.renderVideoIdValidation=renderVideoIdValidation;
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:!0});var tslib=require("tslib"),React=require("react"),ReactDOM=require("react-dom/client"),Sentry=require("@sentry/react"),i18n=require("i18next"),reactI18next=require("react-i18next"),LanguageDetector=require("i18next-browser-languagedetector"),styled=require("styled-components"),Ladda=require("ladda"),tf=require("@tensorflow/tfjs"),useResizeObserver=require("use-resize-observer"),tasksVision=require("@mediapipe/tasks-vision"),SignatureCanvas=require("react-signature-canvas");function _interopDefaultLegacy(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(a){if("default"!==a){var n=Object.getOwnPropertyDescriptor(e,a);Object.defineProperty(t,a,n.get?n:{enumerable:!0,get:function(){return e[a]}})}})),t.default=e,Object.freeze(t)}var SubmissionAction,SubmissionStatus,React__default=_interopDefaultLegacy(React),React__namespace=_interopNamespace(React),ReactDOM__namespace=_interopNamespace(ReactDOM),Sentry__namespace=_interopNamespace(Sentry),i18n__default=_interopDefaultLegacy(i18n),LanguageDetector__default=_interopDefaultLegacy(LanguageDetector),styled__default=_interopDefaultLegacy(styled),Ladda__namespace=_interopNamespace(Ladda),tf__namespace=_interopNamespace(tf),useResizeObserver__default=_interopDefaultLegacy(useResizeObserver),SignatureCanvas__default=_interopDefaultLegacy(SignatureCanvas),webSdkVersion="1.0.21";function getPlatform(){return window.platform}!function(e){e.NONE="NONE",e.ENROLL="ENROLL",e.IDENTIFY="IDENTIFY",e.VALIDATE="VALIDATE",e.VERIFY="VERIFY"}(SubmissionAction||(SubmissionAction={})),function(e){e.READY="READY",e.SUBMITTING="SUBMITTING",e.SUBMITTED="SUBMITTED",e.FAILED="FAILED"}(SubmissionStatus||(SubmissionStatus={}));var submissionHosts={prod:"https://api.idmission.com",demo:"https://apidemo.idmission.com"},SubmissionContext=React.createContext({submit:function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(e){return[2,null]}))}))},submissionStatus:SubmissionStatus.READY,submissionRequest:null,submissionResponse:null,submissionError:null,submissionEnvironment:"prod",idFrontImage:null,idBackImage:null,passportImage:null,selfieImage:null,signatureData:null,signatureVideo:null,additionalDocuments:null,setIdFrontImage:function(){return null},setIdBackImage:function(){return null},setPassportImage:function(){return null},setSelfieImage:function(){return null},setSignatureData:function(){return null},setSignatureVideo:function(){return null},setAdditionalDocuments:function(){return null},logIdFrontCaptureAttempt:function(){return null},logIdBackCaptureAttempt:function(){return null},logSelfieCaptureAttempt:function(){return null},checkLiveness:function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(e){throw new Error("checkLiveness is not implemented")}))}))},retryLocationAccess:function(){return null}});function parseJwt(e){var t=e.split(".")[1].replace(/-/g,"+").replace(/_/g,"/"),a=decodeURIComponent(window.atob(t).split("").map((function(e){return"%"+("00"+e.charCodeAt(0).toString(16)).slice(-2)})).join(""));return JSON.parse(a)}function determineSubmissionHost(e,t){if(t)switch(parseJwt(t).iss){case"https://auth.idmission.com/auth/realms/identity":return submissionHosts.prod;case"https://demoauth.idmission.com/auth/realms/identity":return submissionHosts.demo}var a=submissionHosts[e];if(!a)throw new Error("unrecognized SubmissionEnvironment ".concat(e));return a}function determineSubmissionEndpoint(e,t,a,n){var r=n?"v4":"v3";switch(e){case SubmissionAction.ENROLL:return"/".concat(r,t?"/customer/enroll":"/customer/enroll-biometrics");case SubmissionAction.IDENTIFY:return"/".concat(r,"/customer/identify");case SubmissionAction.VALIDATE:return"/".concat(r,a?"/customer/validate-id-match-face":"/customer/validate-id");case SubmissionAction.VERIFY:return"/".concat(r,"/customer/verify");default:throw new Error("unrecognized SubmissionAction ".concat(e))}}function liveCheckEndpoint(e){return"/".concat(e?"v4":"v3","/customer/live-check")}function apiHeaders(e){var t={"Content-Type":"application/json",Origin:"*"};return e&&(t.Authorization="Bearer ".concat(e)),t}function attachMetadataToRequest(e,t){var a=t.geolocationResult,n={selfie:t.selfieCaptureAttempts,front:t.idFrontCaptureAttempts,back:t.idBackCaptureAttempts,isRealIDCheckRequired:"false",sdkVersion:"WebSDK_".concat(webSdkVersion),Resolution:"".concat(window.innerWidth," x ").concat(window.innerHeight)},r=getPlatform();r&&(n.os=r.os.family,n.osVersion=r.os.version,n.browserVersion="".concat(r.name," ").concat(r.version)),a&&(n.GeoLocation=JSON.stringify(a)),e.additionalData.metadata=JSON.stringify(n)}function dataUrlToBase64(e){return tslib.__awaiter(this,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return[2,e.replace(/^data:image\/(png|jpeg);base64,/,"")]}))}))}function dataUrlToBase64Sync(e){return e.replace(/^data:.*;base64,/,"")}function contentDispositionFromDataUrl(e){var t,a;return null!==(a=null===(t=e.match(/^(data:.*;base64),/))||void 0===t?void 0:t[1])&&void 0!==a?a:""}var templateObject_1$c,PageContainerDiv=styled__default.default.div(templateObject_1$c||(templateObject_1$c=tslib.__makeTemplateObject(["\n position: fixed;\n top: 0;\n left: 0;\n width: var(--app-width);\n height: calc(\n var(--app-height) - ","px\n );\n overflow-x: hidden;\n overflow-y: auto;\n font-family:\n Inter,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Roboto,\n Oxygen,\n Ubuntu,\n Cantarell,\n Fira Sans,\n Droid Sans,\n Helvetica Neue,\n sans-serif;\n\n &.flex {\n display: flex;\n }\n\n &.padded {\n box-sizing: border-box;\n padding: 16px 24px;\n }\n"],["\n position: fixed;\n top: 0;\n left: 0;\n width: var(--app-width);\n height: calc(\n var(--app-height) - ","px\n );\n overflow-x: hidden;\n overflow-y: auto;\n font-family:\n Inter,\n -apple-system,\n BlinkMacSystemFont,\n Segoe UI,\n Roboto,\n Oxygen,\n Ubuntu,\n Cantarell,\n Fira Sans,\n Droid Sans,\n Helvetica Neue,\n sans-serif;\n\n &.flex {\n display: flex;\n }\n\n &.padded {\n box-sizing: border-box;\n padding: 16px 24px;\n }\n"])),(function(e){var t=e.$heightOffset;return null!=t?t:0})),PageContainer=React.forwardRef((function(e,t){var a=e.children,n=e.className,r=e.heightOffset,o=void 0===r?0:r,i=e.style,s=e.onClick,l=React.useState(!1),c=l[0],u=l[1];return React.useEffect((function(){u(!1);var e=function(){var e=document.documentElement;e.style.setProperty("--app-width","".concat(window.innerWidth,"px")),e.style.setProperty("--app-height","".concat(window.innerHeight,"px"))};return window.addEventListener("resize",e),e(),u(!0),function(){window.removeEventListener("resize",e)}}),[]),React__default.default.createElement(PageContainerDiv,{ref:t,style:i,onClick:s,className:n,$heightOffset:o},c&&a)}));PageContainer.displayName="PageContainer";var templateObject_1$b,templateObject_2$4,templateObject_3$3,templateObject_4$2,templateObject_1$a,DocumentType,documentDetectionModel,OverlayContainer=styled__default.default(PageContainer)(templateObject_1$b||(templateObject_1$b=tslib.__makeTemplateObject(["\n background: white;\n z-index: 10000;\n"],["\n background: white;\n z-index: 10000;\n"]))),OverlayInner=styled__default.default.div(templateObject_2$4||(templateObject_2$4=tslib.__makeTemplateObject(["\n text-align: center;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n padding: 25px;\n max-height: var(--app-height);\n height: 100%;\n box-sizing: border-box;\n"],["\n text-align: center;\n display: flex;\n flex-direction: column;\n flex-wrap: nowrap;\n padding: 25px;\n max-height: var(--app-height);\n height: 100%;\n box-sizing: border-box;\n"]))),OverlayImageWrapper=styled__default.default.div(templateObject_3$3||(templateObject_3$3=tslib.__makeTemplateObject(["\n position: relative;\n display: flex;\n flex-grow: 1;\n padding-bottom: 25px;\n max-width: var(--app-width);\n max-height: var(--app-height);\n overflow: hidden;\n\n & > img {\n margin: 0 auto;\n width: max-content;\n max-width: 100%;\n max-height: 100%;\n aspect-ratio: initial;\n object-fit: contain;\n display: block;\n }\n"],["\n position: relative;\n display: flex;\n flex-grow: 1;\n padding-bottom: 25px;\n max-width: var(--app-width);\n max-height: var(--app-height);\n overflow: hidden;\n\n & > img {\n margin: 0 auto;\n width: max-content;\n max-width: 100%;\n max-height: 100%;\n aspect-ratio: initial;\n object-fit: contain;\n display: block;\n }\n"]))),OverlayImageMultiContainer=styled__default.default.div(templateObject_4$2||(templateObject_4$2=tslib.__makeTemplateObject(["\n display: flex;\n margin: auto;\n\n & > div {\n max-height: calc(100vh - 320px);\n\n & > img {\n width: 100%;\n max-height: 100%;\n height: auto;\n object-fit: contain;\n }\n }\n"],["\n display: flex;\n margin: auto;\n\n & > div {\n max-height: calc(100vh - 320px);\n\n & > img {\n width: 100%;\n max-height: 100%;\n height: auto;\n object-fit: contain;\n }\n }\n"]))),LoaderButton=function(e){var t=e.children,a=e.colors,n=void 0===a?{}:a,r=e.disabled,o=e.finished,i=e.onClick,s=e.style,l=React.useRef(null),c=React.useRef(null);return n.backgroundColor||(n.backgroundColor="#16a085"),n.textColor||(n.textColor="white"),n.loadingBackgroundColor||(n.loadingBackgroundColor="gray"),n.loadingTextColor||(n.loadingTextColor="white"),React.useEffect((function(){if(l.current){c.current=Ladda__namespace.create(l.current),c.current.start();var e=0,t=setInterval((function(){var t;e<.9&&(e+=.1),null===(t=c.current)||void 0===t||t.setProgress(e)}),250);return function(){var e;null===(e=c.current)||void 0===e||e.remove(),clearInterval(t)}}}),[]),React.useEffect((function(){var e;o&&(null===(e=c.current)||void 0===e||e.stop())}),[o]),React__default.default.createElement(StyledButton,{className:"ladda-button","data-style":"expand-right",disabled:r,ref:l,onClick:i,$backgroundColor:n.backgroundColor,$textColor:n.textColor,$disabledBackgroundColor:n.loadingBackgroundColor,$disabledTextColor:n.loadingTextColor,style:s},React__default.default.createElement("span",{className:"ladda-label"},t))},StyledButton=styled__default.default.button(templateObject_1$a||(templateObject_1$a=tslib.__makeTemplateObject(["\n border-radius: 0;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n text-transform: none;\n -webkit-appearance: button;\n\n &:not(:disabled),\n &[type='button']:not(:disabled),\n &[type='reset']:not(:disabled),\n &[type='submit']:not(:disabled) {\n cursor: pointer;\n }\n\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15),\n 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem\n rgba(var(--bs-btn-focus-shadow-rgb), 0.5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n transition:\n color 0.15s ease-in-out,\n background-color 0.15s ease-in-out,\n border-color 0.15s ease-in-out,\n box-shadow 0.15s ease-in-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &:hover {\n filter: brightness(1.15);\n }\n\n &:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n }\n\n &:disabled,\n &.disabled,\n fieldset:disabled & {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n }\n\n --bs-btn-color: ",";\n --bs-btn-bg: ",";\n --bs-btn-border-color: ",";\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: ",";\n --bs-btn-disabled-bg: ",";\n --bs-btn-disabled-border-color: ",";\n\n --bs-btn-padding-y: 14px;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 18px;\n --bs-btn-border-radius: 4px;\n"],["\n border-radius: 0;\n margin: 0;\n font-family: inherit;\n font-size: inherit;\n line-height: inherit;\n text-transform: none;\n -webkit-appearance: button;\n\n &:not(:disabled),\n &[type='button']:not(:disabled),\n &[type='reset']:not(:disabled),\n &[type='submit']:not(:disabled) {\n cursor: pointer;\n }\n\n &:focus:not(:focus-visible) {\n outline: 0;\n }\n\n --bs-btn-padding-x: 0.75rem;\n --bs-btn-padding-y: 0.375rem;\n --bs-btn-font-family: ;\n --bs-btn-font-size: 1rem;\n --bs-btn-font-weight: 400;\n --bs-btn-line-height: 1.5;\n --bs-btn-color: var(--bs-body-color);\n --bs-btn-bg: transparent;\n --bs-btn-border-width: var(--bs-border-width);\n --bs-btn-border-color: transparent;\n --bs-btn-border-radius: var(--bs-border-radius);\n --bs-btn-hover-border-color: transparent;\n --bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15),\n 0 1px 1px rgba(0, 0, 0, 0.075);\n --bs-btn-disabled-opacity: 0.65;\n --bs-btn-focus-box-shadow: 0 0 0 0.25rem\n rgba(var(--bs-btn-focus-shadow-rgb), 0.5);\n display: inline-block;\n padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);\n font-family: var(--bs-btn-font-family);\n font-size: var(--bs-btn-font-size);\n font-weight: var(--bs-btn-font-weight);\n line-height: var(--bs-btn-line-height);\n color: var(--bs-btn-color);\n text-align: center;\n text-decoration: none;\n vertical-align: middle;\n cursor: pointer;\n -webkit-user-select: none;\n -moz-user-select: none;\n user-select: none;\n border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);\n border-radius: var(--bs-btn-border-radius);\n background-color: var(--bs-btn-bg);\n transition:\n color 0.15s ease-in-out,\n background-color 0.15s ease-in-out,\n border-color 0.15s ease-in-out,\n box-shadow 0.15s ease-in-out;\n\n @media (prefers-reduced-motion: reduce) {\n transition: none;\n }\n\n &:hover {\n filter: brightness(1.15);\n }\n\n &:focus-visible {\n color: var(--bs-btn-hover-color);\n background-color: var(--bs-btn-hover-bg);\n border-color: var(--bs-btn-hover-border-color);\n outline: 0;\n box-shadow: var(--bs-btn-focus-box-shadow);\n }\n\n &:disabled,\n &.disabled,\n fieldset:disabled & {\n color: var(--bs-btn-disabled-color);\n pointer-events: none;\n background-color: var(--bs-btn-disabled-bg);\n border-color: var(--bs-btn-disabled-border-color);\n opacity: var(--bs-btn-disabled-opacity);\n }\n\n --bs-btn-color: ",";\n --bs-btn-bg: ",";\n --bs-btn-border-color: ",";\n --bs-btn-focus-shadow-rgb: 49, 132, 253;\n --bs-btn-active-color: #fff;\n --bs-btn-active-bg: #0a58ca;\n --bs-btn-active-border-color: #0a53be;\n --bs-btn-active-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);\n --bs-btn-disabled-color: ",";\n --bs-btn-disabled-bg: ",";\n --bs-btn-disabled-border-color: ",";\n\n --bs-btn-padding-y: 14px;\n --bs-btn-padding-x: 1rem;\n --bs-btn-font-size: 18px;\n --bs-btn-border-radius: 4px;\n"])),(function(e){var t=e.$textColor;return null!=t?t:"#fff"}),(function(e){var t=e.$backgroundColor;return null!=t?t:"#0d6efd"}),(function(e){var t=e.$backgroundColor;return null!=t?t:"#0d6efd"}),(function(e){var t=e.$disabledTextColor;return null!=t?t:"#fff"}),(function(e){var t=e.$disabledBackgroundColor;return null!=t?t:"#0d6efd"}),(function(e){var t=e.$disabledBackgroundColor;return null!=t?t:"#0d6efd"})),GeolocationAccessDeniedOverlay=function(e){var t=e.accessBlockedImageUrl,a=reactI18next.useTranslation().t,n=React.useContext(SubmissionContext).retryLocationAccess;return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement("div",{style:{display:"flex",height:"100%"}},React__default.default.createElement(OverlayInner,{style:{maxWidth:500,height:"auto",margin:"auto"}},React__default.default.createElement(OverlayImageWrapper,{style:{flexGrow:0}},React__default.default.createElement("img",{src:t,alt:""})),React__default.default.createElement("h3",null,a("Your location access is disabled")),React__default.default.createElement("p",{style:{lineHeight:1.5,marginBottom:50}},a("This application requires access to your location to continue. Please accept the permission once prompted by the browser. If the browser does not prompt for location permissions, you must go to settings and provide location access to the current browser.")),React__default.default.createElement(LoaderButton,{onClick:n,style:{width:200,marginLeft:"auto",marginRight:"auto"},finished:!0},a("Retry")))))},SubmissionError=function(e){function t(t){var a=e.call(this,t.statusMessage)||this;return a.status=t,a}return tslib.__extends(t,e),t}(Error),NetworkError=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return tslib.__extends(t,e),t}(Error),SubmissionErrorOverlay=function(e){var t=e.error;return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,{style:{justifyContent:"center"}},t instanceof NetworkError?React__default.default.createElement(NetworkErrorContent,{error:t,onRetry:e.onRetry}):React__default.default.createElement(SubmissionErrorContent,{error:t})))},SubmissionErrorContent=function(e){var t=e.error,a=(0,reactI18next.useTranslation().t)("We're sorry, an unexpected error has occurred.");return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("h3",{style:{marginBottom:8}},a),t.status.statusCode&&React__default.default.createElement("p",{style:{marginBottom:0}},React__default.default.createElement("code",null,"Status: ",t.status.statusCode)),React__default.default.createElement("p",{style:{marginBottom:0}},"Message: ",React__default.default.createElement("code",null,t.message)),t.status.errorData&&React__default.default.createElement("p",{style:{marginBottom:0}},"Data: ",React__default.default.createElement("code",null,t.status.errorData)))},NetworkErrorContent=function(e){var t=e.onRetry,a=reactI18next.useTranslation().t,n=a("Network unreachable"),r=a("We're having trouble reaching our services, please check your connection and try again."),o=a("Retry");return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("h3",{style:{marginBottom:8}},n),React__default.default.createElement("p",{style:{marginBottom:0}},r),t&&React__default.default.createElement("div",{style:{marginTop:32}},React__default.default.createElement(LoaderButton,{colors:{backgroundColor:"#ea8557"},finished:!0,onClick:t},o)))},SubmissionProvider=function(e){var t=e.action,a=e.children,n=e.url,r=e.environment,o=void 0===r?"prod":r,i=e.token,s=e.companyId,l=e.enrollmentId,c=e.personalData,u=e.cardData,d=e.manualReviewRequired,f=void 0!==d&&d,m=e.verifyIdWithExternalDatabases,p=void 0!==m&&m,g=e.deduplicationEnabled,h=void 0!==g&&g,b=e.deduplicationSynchronous,v=void 0!==b&&b,_=e.geolocationEnabled,y=void 0===_||_,R=e.geolocationRequired,C=void 0!==R&&R,S=e.webhooksEnabled,E=void 0!==S&&S,T=e.webhooksClientTraceId,w=e.webhooksStripSpecialCharacters,x=void 0===w||w,I=e.onBeforeSubmit,k=e.onResponseReceived,D=e.onRequestFailure,A=React.useState(SubmissionStatus.READY),M=A[0],F=A[1],B=React.useState(null),O=B[0],N=B[1],L=React.useState(null),P=L[0],U=L[1],G=React.useState(null),$=G[0],V=G[1],j=React.useState(null),z=j[0],q=j[1],W=React.useState(null),H=W[0],K=W[1],Y=React.useState(null),X=Y[0],J=Y[1],Z=React.useState(null),Q=Z[0],ee=Z[1],te=React.useState(null),ae=te[0],ne=te[1],re=React.useState(null),oe=re[0],ie=re[1],se=React.useState(null),le=se[0],ce=se[1],ue=React.useState(null),de=ue[0],fe=ue[1],me=React.useState(null),pe=me[0],ge=me[1],he=React.useState(0),be=he[0],ve=he[1],_e=React.useState(!1),ye=_e[0],Re=_e[1],Ce=React.useState([]),Se=Ce[0],Ee=Ce[1],Te=React.useState([]),we=Te[0],xe=Te[1],Ie=React.useState([]),ke=Ie[0],De=Ie[1],Ae=React.useCallback((function(e){Ee((function(t){return tslib.__spreadArray(tslib.__spreadArray([],t,!0),[e],!1)}))}),[]),Me=React.useCallback((function(e){xe((function(t){return tslib.__spreadArray(tslib.__spreadArray([],t,!0),[e],!1)}))}),[]),Fe=React.useCallback((function(e){De((function(t){return tslib.__spreadArray(tslib.__spreadArray([],t,!0),[e],!1)}))}),[]),Be=React.useCallback((function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){var e,a,r,d,m,g,b,_,y,R,C,S;return tslib.__generator(this,(function(w){switch(w.label){case 0:if(t===SubmissionAction.NONE)return e={status:{statusCode:"000"},resultData:{}},F(SubmissionStatus.SUBMITTED),U(e),[2,e];F(SubmissionStatus.SUBMITTING),w.label=1;case 1:return w.trys.push([1,8,,9]),a={securityData:{userName:"",password:"",merchantId:0},customerData:{idData:{idType:"NSP",idCountry:"NSP",idState:""}},additionalData:{uniqueRequestId:(new Date).getTime().toString(),manualReviewRequired:f?"Y":"N",bypassAgeValidation:"N",deDuplicationRequired:h?"Y":"N",bypassNameMatching:"Y",postDataAPIRequired:E?"Y":"N",sendInputImagesInPost:"N",sendProcessedImagesInPost:"N",needImmediateResponse:"N",deduplicationSynchronous:v?"Y":"N",verifyDataWithHost:p?"Y":"N",idBackImageRequired:"N",stripSpecialCharacters:x?"Y":"N",idImageResolutionCheck:"Y"}},H&&(a.customerData.idData.idImageFront=H),X&&(a.customerData.idData.idImageBack=X),Q&&(a.customerData.idData.idImageFront=Q),ae&&(t===SubmissionAction.IDENTIFY?a.biometricData={selfie:ae}:a.customerData.biometricData={selfie:ae}),s&&(a.employee={companyId:s}),c&&(a.customerData.personalData=c),u&&(a.customerData.cardData=u),l&&((S=a.customerData).personalData||(S.personalData={}),a.customerData.personalData.uniqueNumber=l),T&&(a.additionalData.clientTraceId=T),oe&&(a.customerData.signatureData={signatureImage:JSON.stringify(oe)}),de&&(a.customerData.additionalDocuments=de.map((function(e){return tslib.__assign(tslib.__assign({},e),{additionalDocument:JSON.stringify(tslib.__assign(tslib.__assign({},e.additionalDocument),{uniqueId:a.additionalData.uniqueRequestId}))})}))),attachMetadataToRequest(a,{selfieCaptureAttempts:ke,idFrontCaptureAttempts:Se,idBackCaptureAttempts:we,geolocationResult:pe}),I?[4,I(a)]:[3,3];case 2:(r=w.sent())&&(a=r),w.label=3;case 3:return d=n||determineSubmissionHost(o,i),m=determineSubmissionEndpoint(t,!!(H||X||Q),!!ae,!!i),[4,fetch(d+m,{method:"POST",headers:apiHeaders(i),body:JSON.stringify(a)}).catch((function(e){throw new NetworkError(e.message)}))];case 4:return(g=w.sent())&&g.ok?[3,6]:[4,null==g?void 0:g.text()];case 5:if(!(b=w.sent())||"Load failed"===b)throw new NetworkError(b);throw new SubmissionError({statusCode:null!==(C=null==g?void 0:g.statusText)&&void 0!==C?C:"???",statusMessage:b});case 6:return[4,g.json()];case 7:if("000"!==(_=w.sent()).status.statusCode)throw new SubmissionError(_.status);return N(a),U(_),F(SubmissionStatus.SUBMITTED),null==k||k(_),[2,_];case 8:throw y=w.sent(),R=y,F(SubmissionStatus.FAILED),V(y instanceof SubmissionError||y instanceof NetworkError?y:"Load failed"===R.message?new NetworkError:new SubmissionError({statusCode:"",statusMessage:R.message})),q((function(){return["VERIFY","IDENTIFY"].includes(t)?function(){return null}:Be})),null==D||D(R),R;case 9:return[2]}}))}))}),[t,de,u,s,h,v,l,o,pe,we,X,Se,H,f,I,D,k,Q,c,ke,ae,oe,i,n,p,T,E,x]),Oe=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t,a,r,s,l,c,u,d,f,m,p;return tslib.__generator(this,(function(g){switch(g.label){case 0:return g.trys.push([0,6,,7]),f={securityData:{userName:"",password:"",merchantId:0}},m={},p={},[4,dataUrlToBase64(e)];case 1:return f.customerData=(m.biometricData=(p.selfie=g.sent(),p),m),f.additionalData={uniqueRequestId:(new Date).getTime().toString(),stripSpecialCharacters:"Y",estimateAge:"N",predictGender:"N"},attachMetadataToRequest(t=f,{selfieCaptureAttempts:ke,idFrontCaptureAttempts:Se,idBackCaptureAttempts:we,geolocationResult:pe}),a=n||determineSubmissionHost(o,i),r=liveCheckEndpoint(!!i),[4,fetch(a+r,{method:"POST",headers:apiHeaders(i),body:JSON.stringify(t)}).catch((function(e){throw new NetworkError(e.message)}))];case 2:return(s=g.sent()).ok?[3,4]:[4,s.text()];case 3:if(!(l=g.sent())||"Load failed"===l)throw new NetworkError(l);throw new SubmissionError({statusCode:s.statusText,statusMessage:l});case 4:return[4,s.json()];case 5:if("000"!==(c=g.sent()).status.statusCode)throw new SubmissionError(c.status);return U(c),[2,c];case 6:throw u=g.sent(),d=u,F(SubmissionStatus.FAILED),V(u instanceof SubmissionError||u instanceof NetworkError?u:"Load failed"===d.message?new NetworkError:new SubmissionError({statusCode:"",statusMessage:d.message})),q((function(){return function(){return null}})),null==D||D(d),d;case 7:return[2]}}))}))}),[o,pe,we,Se,D,ke,i,n]),Ne=React.useCallback((function(){ve((function(e){return e+1}))}),[]);React.useEffect((function(){y&&(console.log("making geolocation attempt",be),navigator.geolocation.getCurrentPosition((function(e){ge(e),Re(!1)}),(function(e){if(1!==e.code)throw new Error(e.message);Re(!0)})))}),[be,y,C]);var Le=React.useCallback((function(){z&&(V(null),F(SubmissionStatus.READY),z())}),[z]);return React__default.default.createElement(SubmissionContext.Provider,{value:{submit:Be,submissionStatus:M,submissionRequest:O,submissionResponse:P,submissionError:$,submissionEnvironment:o,idFrontImage:H,idBackImage:X,passportImage:Q,selfieImage:ae,signatureData:oe,signatureVideo:le,additionalDocuments:de,setIdFrontImage:K,setIdBackImage:J,setPassportImage:ee,setSelfieImage:ne,setSignatureData:ie,setSignatureVideo:ce,setAdditionalDocuments:fe,logIdFrontCaptureAttempt:Ae,logIdBackCaptureAttempt:Me,logSelfieCaptureAttempt:Fe,checkLiveness:Oe,retryLocationAccess:Ne}},C&&ye?React__default.default.createElement(GeolocationAccessDeniedOverlay,null):a,$&&React__default.default.createElement(SubmissionErrorOverlay,{error:$,onRetry:Le}))};function loadDocumentDetectionModel(e){return tslib.__awaiter(this,void 0,void 0,(function(){var t,a,n,r,o,i;return tslib.__generator(this,(function(s){switch(s.label){case 0:return documentDetectionModel?[2,documentDetectionModel]:[4,tf__namespace.loadGraphModel(e)];case 1:return documentDetectionModel=s.sent(),[4,tf__namespace.ready()];case 2:return s.sent(),t=tf__namespace.zeros([448,448,3]),a=tf__namespace.cast(t,"int32"),n=tf__namespace.tensor4d(Array.from(a.dataSync()),[1,448,448,3]),r=tf__namespace.cast(n,"int32"),i=(o=tf__namespace).dispose,[4,documentDetectionModel.executeAsync(r)];case 3:return i.apply(o,[s.sent()]),a.dispose(),r.dispose(),n.dispose(),tf__namespace.dispose(t),[2,documentDetectionModel]}}))}))}function unloadDocumentDetectionModel(){documentDetectionModel=null}!function(e){e.NONE="NONE",e.ID_CARD="ID_CARD",e.ID_CARD_FRONT="ID_CARD_FRONT",e.ID_CARD_BACK="ID_CARD_BACK",e.PASSPORT="PASSPORT"}(DocumentType||(DocumentType={}));var labelMap={1:"Document",2:"MRZ",3:"PDF417",4:"Primary face",5:"Secondary face",6:"Glare",7:"Punch Hole",8:"Passport Page"};function bboxToDetectedObjectUnscaled(e,t,a){var n=e[0],r=e[1];return{score:t,bbox:[r,n,e[3]-r,e[2]-n],label:labelMap[a]}}window.OffscreenCanvas||(window.OffscreenCanvas=function(e,t){var a=this;return this.canvas=document.createElement("canvas"),this.canvas.width=e,this.canvas.height=t,this.canvas.convertToBlob=function(){return new Promise((function(e){a.canvas.toBlob(e)}))},this.canvas});var GuideOrientationContext=React.createContext({orientation:"landscape",wrapperWidth:1,wrapperHeight:1,wrapperAspectRatio:0,imageAspectRatio:0,wrapperRef:null,setDimensions:function(){return null},onImageLoaded:function(){return null}});function _isNavigatorDefined(){return"undefined"!=typeof navigator&&null!=navigator}let isMobileMockValue;function isMobile(e){if(void 0!==isMobileMockValue)return isMobileMockValue;if(e||_isNavigatorDefined()){if(e||(e=navigator),"ReactNative"===e.product)return!0;const t=e.userAgent||e.vendor||("undefined"!=typeof window?window.opera:"");if(!t){return e.userAgentData&&e.userAgentData.mobile}return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(t)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp( i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac( |\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i.test(t.substr(0,4))}return!1}function isBrowser(){return"undefined"!=typeof window&&null!=window.document||"undefined"!=typeof WorkerGlobalScope}var DocumentCaptureGuideOverlay=function(e){var t=e.width,a=void 0===t?0:t,n=e.height,r=void 0===n?0:n,o=e.padding,i=void 0===o?isMobile()?0:50:o,s=e.borderWidth,l=void 0===s?4:s,c=e.borderColor,u=void 0===c?"white":c,d=e.isMirrored,f=void 0!==d&&d,m=e.instruction,p=void 0===m?"":m,g=e.portraitGuidesImageUrl,h=e.landscapeGuidesImageUrl,b=e.onClick,v=React.useContext(GuideOrientationContext),_=v.orientation,y=v.wrapperRef,R=v.wrapperWidth,C=v.wrapperHeight,S=v.imageAspectRatio,E=v.wrapperAspectRatio,T=v.onImageLoaded,w=v.setDimensions;0==a&&(a=R),0==r&&(r=C),React.useEffect((function(){w({width:a,height:r})}),[r,w,a]);var x={height:C-2*i-2*l};return S>=E&&(x={width:R-2*i-2*l}),React__default.default.createElement(PageContainer,{ref:y,onClick:b,style:{zIndex:1e3}},React__default.default.createElement("div",{style:{display:"flex",flexFlow:"column nowrap",height:"100%"}},React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},""!==p&&React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12}},p)),React__default.default.createElement("div",{style:{position:"relative",display:"flex",flexFlow:"row nowrap",alignItems:"center",justifyItems:"center",maxWidth:"calc(100%)",maxHeight:"calc(100% - ".concat(2*i,"px - ").concat(2*l,"px)")}},React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",minWidth:i,flexGrow:1}}),React__default.default.createElement("div",{style:{transform:f?"scaleX(-1)":"",border:"".concat(l,"px solid ").concat(u),maxWidth:"calc(100% - ".concat(2*i,"px - ").concat(2*l,"px)"),maxHeight:r-2*i-2*l}},React__default.default.createElement("img",{src:"portrait"===_?g:h,alt:"",onLoad:T,style:tslib.__assign({},x)})),React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",minWidth:i,flexGrow:1}})),React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},""!==p&&React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12,opacity:0}},p))))};function getNativeBarcodeReaderResult(e){return tslib.__awaiter(this,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return"BarcodeDetector"in window?(t=new BarcodeDetector({formats:["pdf417"]}),console.log("this is a real native result!"),[4,t.detect(e)]):[2,[]];case 1:return[2,a.sent()]}}))}))}function getZxingBarcodeReaderResult(e,t){return void 0===t&&(t=!1),tslib.__awaiter(this,void 0,void 0,(function(){var a,n,r,o,i,s,l,c,u;return tslib.__generator(this,(function(d){switch(d.label){case 0:return[4,new Promise((function(i){if(r=e.naturalWidth,o=e.naturalHeight,a=document.createElement("canvas"),!(n=a.getContext("2d")))return[];if(t){console.log("rotating!!"),a.width=o,a.height=r,n.setTransform(0,1,-1,0,a.width,0),n.drawImage(e,0,0,r,o);var s=new Image;s.width=a.width,s.height=a.height,s.onload=function(){i(s)},a.toBlob((function(e){e&&(s.src=URL.createObjectURL(e))}))}else n.drawImage(e,0,0,a.width,a.height),i(e)}))];case 1:return i=d.sent(),s=new ZXing.BitmapLuminanceSource(n,i),l=new ZXing.Common.HybridBinarizer(s),c=new ZXing.BinaryBitmap(l),u=ZXing.PDF417.PDF417Reader.decode(c,null,!1),n.clearRect(0,0,a.width,a.height),a.remove(),[2,u]}}))}))}function supportsNativeBarcodeScanning(){return"BarcodeDetector"in window}function scanBarcode(e,t){var a=this;return new Promise((function(n){var r=new Image;r.onload=function(){return tslib.__awaiter(a,void 0,void 0,(function(){var e,a,o,i;return tslib.__generator(this,(function(s){switch(s.label){case 0:return supportsNativeBarcodeScanning()?[4,getNativeBarcodeReaderResult(r)]:[3,2];case 1:return a=s.sent(),console.log("native result",a,"".concat(r.width,"x").concat(r.height)),n(a.length>0?tslib.__assign(tslib.__assign({},a[0]),{Source:"native"}):null),[3,4];case 2:return e=(null!==(o=null==t?void 0:t[2])&&void 0!==o?o:0)<(null!==(i=null==t?void 0:t[3])&&void 0!==i?i:0),[4,getZxingBarcodeReaderResult(r,e)];case 3:a=s.sent(),console.log("zxing result",a),n(a.length>0?tslib.__assign(tslib.__assign({},a[0]),{Source:"zxing"}):null),s.label=4;case 4:return[2]}}))}))},r.src=URL.createObjectURL(e)}))}function getBlobDimensions(e){return new Promise((function(t){var a=new Image;a.onload=function(){t([a.naturalWidth,a.naturalHeight])},a.src=URL.createObjectURL(e)}))}function iOS(){return["iPad Simulator","iPhone Simulator","iPod Simulator","iPad","iPhone","iPod"].includes(navigator.platform)||navigator.userAgent.includes("Mac")&&"ontouchend"in document}function wideAngleIsBetter(){if(!iOS())return!1;var e=smallerSideIos(),t=window.screen.width*window.devicePixelRatio,a=window.screen.height*window.devicePixelRatio;return 1179==t&&2556==a||1290==t&&2796==a&&(393==e||430==e)}function smallerSideIos(){return window.screen.width<window.screen.height?window.screen.width:window.screen.height}function listAvailableCameras(e){return tslib.__awaiter(this,void 0,void 0,(function(){var t,a;return tslib.__generator(this,(function(n){switch(n.label){case 0:return n.trys.push([0,2,,3]),[4,navigator.mediaDevices.getUserMedia({video:{facingMode:{exact:e}},audio:!1})];case 1:return t=n.sent(),[3,3];case 2:return n.sent(),[2,[]];case 3:return[4,navigator.mediaDevices.enumerateDevices()];case 4:return a=n.sent().filter((function(e){return"videoinput"===e.kind})),t.getVideoTracks().forEach((function(e){e.enabled=!1,e.stop()})),t=null,[2,a]}}))}))}var currentCamera,frontLabels=["front","avant","anteriore","cameraaanvoorzijde","kamerapåframsidan","forsidekamera","kamerapåforsiden","aparatprzedni","etukamera","kameradepan","ÖnKamera","cameramặttrước","camerăfață","prednákamera","prednjakamera","előlapikamera","přednífotoaparát","μπροστινήκάμερα","переднякамера","передняякамера","преднакамера","алдыңғыкамера","מצלמה קדמית","الكاميرا الأمامية","फ़्रंटकैमरा","前置相机","前置鏡頭","前面カメラ","전면카메라","กล้องด้านหน้า"].map((function(e){return e.toLocaleLowerCase().split(" ").join("")})),rearLabels=["back","rear","posterior","trasera","traseira","arrière","rückkamera","fotocamera(posteriore)","cameraaanachterzijde","kamerapåbaksidan","kamerapåbaksiden","bagsidekamera","aparattylny","takakamera","arkakamera","kamerabelakang","cameramặtsau","camerăspate","stražnjakamera","zadnákamera","hátoldalikamera","zadnífotoaparát","πίσωκάμερα","заднякамера","Задняякамера","заднакамера","артқыкамера","מצלמה אחורית","الكاميرا الخلفية","बैककैमरा","后置相机","後置鏡頭","背面カメラ","후면카메라","กล้องด้านหลัง"].map((function(e){return e.toLocaleLowerCase().split(" ").join("")})),backUltraWideLabels=["backultrawidecamera","ultraampliaposterior","ultra-angulartraseira","ultragrandeangulartraseira","ultragrandangle","ultragranangular","ultra-weitwinkelkamera","ultra-grandangolo","ultrabredecameraaanachterzijde","ultravidvinkelkamerapåbaksidan","ultravidvinkelkameraetpåbagsiden","ultravidvinkelkamerabak","ultragenişkameraarkayüzü","ultralaajakulmainentakakamera","tylnyaparatultraszerokokątny","cameracựcrộngmặtsau","camerăcuobiectivultra‑superangularspate","ultraszéleslátószögűkamera","kameraultralebarbelakang","stražnjaultraširokakamera","zadníultraširokoúhlýfotoaparát","ultraširokouhlá","πίσωυπερευρείακάμερα","заднянадширококутнакамера","Задняясверхширокоугольнаякамера","Задна свръх широкоъгълна камера","артқыультракеңбұрыштыкамера","מצלמה אולטרה רחבה אחורית","كاميرا خلفية عريضة جدًا","बैकअल्ट्रावाइडकैमरा","后置超广角相机","後置超廣角鏡頭相機","背面超広角カメラ","후면울트라와이드카메라","กล้องด้านหลังอัลตร้าไวด์"].map((function(e){return e.toLocaleLowerCase().split(" ").join("")})),labelMatches=function(e,t){var a=e instanceof MediaDeviceInfo?getDeviceLabel(e):e;return("string"==typeof t?[t]:t).some((function(e){return a.includes(e)}))},getDeviceLabel=function(e){return e.label.toLocaleLowerCase().split(" ").join("")};function obtainCameraAccess(e,t,a){releaseCameraAccess(),console.log("obtaining camera access...");var n=e.getVideoTracks()[0].getSettings(),r=n.width,o=n.height,i=t.toLocaleLowerCase().split(" ").join(""),s=labelMatches(i,tslib.__spreadArray(tslib.__spreadArray(tslib.__spreadArray([],rearLabels,!0),backUltraWideLabels,!0),["iphone"],!1));return r||(r=0),o||(o=0),currentCamera={label:t,stream:e,width:r,height:o,isRearFacing:s,release:function(){e.getTracks().forEach((function(e){e.enabled=!1,e.stop()})),a&&(a.pause(),a.srcObject=null,a.src="")}},a&&(a.srcObject=e),currentCamera}function releaseCameraAccess(){currentCamera&&(console.log("releasing camera access..."),currentCamera.release(),currentCamera=void 0)}var focusModel,useHighestResCaptureDevice=function(e){var t=void 0===e?{preferFrontFacingCamera:!1,preferContinuityCamera:!0,requestMicrophoneAccess:!1}:e,a=t.preferFrontFacingCamera,n=void 0!==a&&a,r=t.preferContinuityCamera,o=void 0===r||r,i=t.requestMicrophoneAccess,s=void 0!==i&&i,l=React.useRef(null),c=React.useRef(null),u=React.useState(null),d=u[0],f=u[1],m=React.useState(!1),p=m[0],g=m[1],h=React.useState(null),b=h[0],v=h[1],_=React.useState(!1),y=_[0],R=_[1],C=React.useState(o),S=C[0],E=C[1],T=React.useState(!1),w=T[0],x=T[1],I=React.useState(!1),k=I[0],D=I[1];React.useEffect((function(){console.log("iphone continuity camera allowed changed",S),releaseCameraAccess(),c.current=null,g(!1)}),[S]);var A=React.useCallback((function(){D(!1)}),[]);React.useEffect((function(){k||listAvailableCameras().then((function(e){var t,a=getPlatform();if(!(w||a&&"OS X"!==a.os.family)){var r=e.find((function(e){return labelMatches(e,"iphone")}));R(!!r),r&&S&&(t=r)}n&&(t=e.find((function(e){return labelMatches(e,frontLabels)}))),wideAngleIsBetter()?t||(t=e.find((function(e){return labelMatches(e,backUltraWideLabels)}))):t||(t=e.find((function(e){return labelMatches(e,rearLabels)&&!labelMatches(e,backUltraWideLabels)}))),t||(t=e.find((function(e){return labelMatches(e,rearLabels)}))),!n&&"iOS"===(null==a?void 0:a.os.family)&&e.length>0&&(t||(t=e[1])),t||(t=e[0]),f(t)})).catch((function(e){if("NotAllowedError"!==e.name)throw e;console.error("camera access has been blocked by the user",e),D(!0)}))}),[k,S,w,n]),React.useEffect((function(){var e;if(d){var t=function(){releaseCameraAccess(),c.current=null,g(!1)};return(null===(e=navigator.mediaDevices)||void 0===e?void 0:e.getUserMedia)?(tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a;return tslib.__generator(this,(function(n){switch(n.label){case 0:e=null,n.label=1;case 1:return n.trys.push([1,3,,4]),[4,navigator.mediaDevices.getUserMedia({audio:s,video:{deviceId:{exact:d.deviceId},width:{ideal:1920},aspectRatio:1.777777778}})];case 2:return e=n.sent(),[3,4];case 3:return"NotAllowedError"===n.sent().name?(S?(R(!1),x(!0)):D(!0),[2]):[3,4];case 4:if(e)return[3,8];n.label=5;case 5:return n.trys.push([5,7,,8]),[4,navigator.mediaDevices.getUserMedia({audio:!1,video:!0})];case 6:return e=n.sent(),console.log("opened stream with no width and height constraints"),[3,8];case 7:return n.sent(),console.log("cannot open stream at all"),[3,8];case 8:if(!e)throw new Error("failed to open camera");return t=function(){y&&S?(console.log("someone unplugged the continuity camera"),releaseCameraAccess(),c.current=null,R(!1),x(!0),v(null),f(null)):(console.log("someone unplugged the webcam"),releaseCameraAccess(),c.current=null,g(!1),D(!0),v(null))},null===(a=l.current)||void 0===a||a.addEventListener("ended",t),e.getVideoTracks().forEach((function(e){e.onended=t})),c.current=obtainCameraAccess(e,d.label,l.current),[2]}}))})),t):t}}),[S,y,s,d]),React.useEffect((function(){v(null),p&&tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a,n;return tslib.__generator(this,(function(r){return(e=(null!==(n=null===(a=null===(t=c.current)||void 0===t?void 0:t.stream)||void 0===a?void 0:a.getVideoTracks())&&void 0!==n?n:[])[0])?(v(new ImageCapture(e)),[2]):[2]}))}))}),[p]);var M=React.useCallback((function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(e){switch(e.label){case 0:return b?[4,b.grabFrame()]:[2,null];case 1:return[2,e.sent()]}}))}))}),[b]),F=React.useCallback((function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a,n,r;return tslib.__generator(this,(function(o){switch(o.label){case 0:return e=document.createElement("canvas"),(t=e.getContext("2d"))&&c.current&&l.current?(e.width=null===(n=l.current)||void 0===n?void 0:n.videoWidth,e.height=null===(r=l.current)||void 0===r?void 0:r.videoHeight,t.drawImage(l.current,0,0,e.width,e.height),a=e.toDataURL("image/jpeg",.98),[4,fetch(a)]):[2,null];case 1:return[4,o.sent().blob()];case 2:return[2,o.sent()]}}))}))}),[]);return{videoRef:l,videoDevice:d,videoLoaded:p,setVideoLoaded:g,cameraRef:c,cameraAccessDenied:k,retryCameraAccess:A,releaseCameraAccess:releaseCameraAccess,iphoneContinuityCameraAvailable:y,iphoneContinuityCameraAllowed:S,setIphoneContinuityCameraAllowed:E,captureDevice:b,grabFrame:M,takePhoto:F}},CameraStateContext=React.createContext({videoRef:{current:null},videoLoaded:!1,cameraRef:{current:null},cameraReady:!1,cameraAccessDenied:!1,retryCameraAccess:function(){return null},releaseCameraAccess:function(){return null},iphoneContinuityCameraAvailable:!1,iphoneContinuityCameraAllowed:!0,setIphoneContinuityCameraAllowed:function(){return null},grabFrame:function(){return Promise.resolve(null)},takePhoto:function(){return Promise.resolve(null)},setVideoLoaded:function(){return null}}),CameraProvider=function(e){var t=e.children,a=e.preferFrontFacingCamera,n=e.preferContinuityCamera,r=e.requestMicrophoneAccess,o=useHighestResCaptureDevice({preferFrontFacingCamera:void 0!==a&&a,preferContinuityCamera:void 0===n||n,requestMicrophoneAccess:void 0!==r&&r}),i=o.videoRef,s=o.videoLoaded,l=o.setVideoLoaded,c=o.cameraRef,u=o.cameraAccessDenied,d=o.retryCameraAccess,f=o.releaseCameraAccess,m=o.iphoneContinuityCameraAvailable,p=o.iphoneContinuityCameraAllowed,g=o.setIphoneContinuityCameraAllowed,h=o.grabFrame,b=o.takePhoto,v=o.captureDevice,_=React.useState(!1),y=_[0],R=_[1];return React.useEffect((function(){R(!1),v&&R(!0)}),[v]),React.useEffect((function(){return function(){f()}}),[f]),React__default.default.createElement(CameraStateContext.Provider,{value:{videoRef:i,videoLoaded:s,setVideoLoaded:l,cameraRef:c,cameraReady:y,cameraAccessDenied:u,releaseCameraAccess:f,retryCameraAccess:d,iphoneContinuityCameraAvailable:m,iphoneContinuityCameraAllowed:p,setIphoneContinuityCameraAllowed:g,grabFrame:h,takePhoto:b}},t)};function loadFocusModel(e){return tslib.__awaiter(this,void 0,void 0,(function(){var t,a,n,r,o,i,s,l,c;return tslib.__generator(this,(function(u){switch(u.label){case 0:return focusModel?[2,focusModel]:[4,tf__namespace.loadLayersModel(e)];case 1:return focusModel=u.sent(),[4,tf__namespace.ready()];case 2:return u.sent(),t=tf__namespace.zeros([448,448,3]),a=tf__namespace.cast(t,"int32"),o=(r=tf__namespace).tensor4d,s=(i=Array).from,[4,a.data()];case 3:return n=o.apply(r,[s.apply(i,[u.sent()]),[1,448,448,3]]),l=tf__namespace.cast(n,"int32"),[4,focusModel.predict(l)];case 4:return[4,(c=u.sent()).data()];case 5:return u.sent(),tf__namespace.dispose(c),a.dispose(),l.dispose(),n.dispose(),tf__namespace.dispose(t),[2,focusModel]}}))}))}function unloadFocusModel(){focusModel=null}const EPSILON_FLOAT32=1e-7,EPSILON_FLOAT16=1e-4;class KernelBackend{refCount(e){return notYetImplemented("refCount")}incRef(e){return notYetImplemented("incRef")}timerAvailable(){return!0}time(e){return notYetImplemented("time")}read(e){return notYetImplemented("read")}readSync(e){return notYetImplemented("readSync")}readToGPU(e,t){return notYetImplemented("readToGPU")}numDataIds(){return notYetImplemented("numDataIds")}disposeData(e,t){return notYetImplemented("disposeData")}write(e,t,a){return notYetImplemented("write")}move(e,t,a,n,r){return notYetImplemented("move")}createTensorFromGPUData(e,t,a){return notYetImplemented("createTensorFromGPUData")}memory(){return notYetImplemented("memory")}floatPrecision(){return notYetImplemented("floatPrecision")}epsilon(){return 32===this.floatPrecision()?1e-7:1e-4}dispose(){return notYetImplemented("dispose")}}function notYetImplemented(e){throw new Error(`'${e}' not yet implemented or not found in the registry. This kernel may not be supported by the tfjs backend you have chosen`)}function assert(e,t){if(!e)throw new Error("string"==typeof t?t:t())}function sizeFromShape(e){if(0===e.length)return 1;let t=e[0];for(let a=1;a<e.length;a++)t*=e[a];return t}function arraysEqual(e,t){if(e===t)return!0;if(null==e||null==t)return!1;if(e.length!==t.length)return!1;for(let a=0;a<e.length;a++)if(e[a]!==t[a])return!1;return!0}function rightPad(e,t){return t<=e.length?e:e+" ".repeat(t-e.length)}function getArrayFromDType(e,t){let a=null;if(null==e||"float32"===e)a=new Float32Array(t);else if("int32"===e)a=new Int32Array(t);else if("bool"===e)a=new Uint8Array(t);else{if("string"!==e)throw new Error(`Unknown data type ${e}`);a=new Array(t)}return a}function checkConversionForErrors(e,t){for(let a=0;a<e.length;a++){const n=e[a];if(isNaN(n)||!isFinite(n))throw Error(`A tensor of type ${t} being uploaded contains ${n}.`)}}function isValidDtype(e){return"bool"===e||"complex64"===e||"float32"===e||"int32"===e||"string"===e}function bytesPerElement(e){if("float32"===e||"int32"===e)return 4;if("complex64"===e)return 8;if("bool"===e)return 1;throw new Error(`Unknown dtype ${e}`)}function bytesFromStringArray(e){if(null==e)return 0;let t=0;return e.forEach((e=>t+=e.length)),t}function isString(e){return"string"==typeof e||e instanceof String}function isBoolean(e){return"boolean"==typeof e}function isNumber(e){return"number"==typeof e}function inferDtype(e){return Array.isArray(e)?inferDtype(e[0]):e instanceof Float32Array?"float32":e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray?"int32":isNumber(e)?"float32":isString(e)?"string":isBoolean(e)?"bool":"float32"}function isFunction(e){return!!(e&&e.constructor&&e.call&&e.apply)}function computeStrides(e){const t=e.length;if(t<2)return[];const a=new Array(t-1);a[t-2]=e[t-1];for(let n=t-3;n>=0;--n)a[n]=a[n+1]*e[n+1];return a}function createNestedArray(e,t,a,n=!1){const r=new Array;if(1===t.length){const o=t[0]*(n?2:1);for(let t=0;t<o;t++)r[t]=a[e+t]}else{const o=t[0],i=t.slice(1),s=i.reduce(((e,t)=>e*t))*(n?2:1);for(let t=0;t<o;t++)r[t]=createNestedArray(e+t*s,i,a,n)}return r}function toNestedArray(e,t,a=!1){if(0===e.length)return t[0];const n=e.reduce(((e,t)=>e*t))*(a?2:1);if(0===n)return[];if(n!==t.length)throw new Error(`[${e}] does not match the input size ${t.length}${a?" for a complex tensor":""}.`);return createNestedArray(0,e,t,a)}function makeOnesTypedArray(e,t){const a=makeZerosTypedArray(e,t);for(let e=0;e<a.length;e++)a[e]=1;return a}function makeZerosTypedArray(e,t){if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return new Int32Array(e);if("bool"===t)return new Uint8Array(e);throw new Error(`Unknown data type ${t}`)}function assertNonNegativeIntegerDimensions(e){e.forEach((t=>{assert(Number.isInteger(t)&&t>=0,(()=>`Tensor must have a shape comprised of positive integers but got shape [${e}].`))}))}function isPromise(e){return e&&e.then&&"function"==typeof e.then}const TENSORFLOWJS_FLAGS_PREFIX="tfjsflags";class Environment{constructor(e){this.global=e,this.flags={},this.flagRegistry={},this.urlFlags={},this.getQueryParams=getQueryParams,this.populateURLFlags()}setPlatform(e,t){null!=this.platform&&(env().getBool("IS_TEST")||env().getBool("PROD")||console.warn(`Platform ${this.platformName} has already been set. Overwriting the platform with ${e}.`)),this.platformName=e,this.platform=t}registerFlag(e,t,a){if(this.flagRegistry[e]={evaluationFn:t,setHook:a},null!=this.urlFlags[e]){const t=this.urlFlags[e];env().getBool("IS_TEST")||env().getBool("PROD")||console.warn(`Setting feature override from URL ${e}: ${t}.`),this.set(e,t)}}async getAsync(e){return e in this.flags||(this.flags[e]=await this.evaluateFlag(e)),this.flags[e]}get(e){if(e in this.flags)return this.flags[e];const t=this.evaluateFlag(e);if(isPromise(t))throw new Error(`Flag ${e} cannot be synchronously evaluated. Please use getAsync() instead.`);return this.flags[e]=t,this.flags[e]}getNumber(e){return this.get(e)}getBool(e){return this.get(e)}getString(e){return this.get(e)}getFlags(){return this.flags}get features(){return this.flags}set(e,t){if(null==this.flagRegistry[e])throw new Error(`Cannot set flag ${e} as it has not been registered.`);this.flags[e]=t,null!=this.flagRegistry[e].setHook&&this.flagRegistry[e].setHook(t)}evaluateFlag(e){if(null==this.flagRegistry[e])throw new Error(`Cannot evaluate flag '${e}': no evaluation function found.`);return this.flagRegistry[e].evaluationFn()}setFlags(e){this.flags=Object.assign({},e)}reset(){this.flags={},this.urlFlags={},this.populateURLFlags()}populateURLFlags(){if(void 0===this.global||void 0===this.global.location||void 0===this.global.location.search)return;const e=this.getQueryParams(this.global.location.search);if("tfjsflags"in e){e.tfjsflags.split(",").forEach((e=>{const[t,a]=e.split(":");this.urlFlags[t]=parseValue(t,a)}))}}}function getQueryParams(e){const t={};return e.replace(/[?&]([^=?&]+)(?:=([^&]*))?/g,((e,...a)=>(decodeParam(t,a[0],a[1]),a.join("=")))),t}function decodeParam(e,t,a){e[decodeURIComponent(t)]=decodeURIComponent(a||"")}function parseValue(e,t){const a=t.toLowerCase();return"true"===a||"false"===a?"true"===a:""+ +a===a?+a:t}function env(){return ENV$1}let globalNameSpace,ENV$1=null;function setEnvironmentGlobal(e){ENV$1=e}function getGlobalNamespace(){if(null==globalNameSpace){let e;if("undefined"!=typeof window)e=window;else if("undefined"!=typeof global)e=global;else if("undefined"!=typeof process)e=process;else{if("undefined"==typeof self)throw new Error("Could not find a global object");e=self}globalNameSpace=e}return globalNameSpace}function getGlobalMap(){const e=getGlobalNamespace();return null==e._tfGlobals&&(e._tfGlobals=new Map),e._tfGlobals}function getGlobal(e,t){const a=getGlobalMap();if(a.has(e))return a.get(e);{const n=t();return a.set(e,n),a.get(e)}}const Abs="Abs",Add="Add",Cast="Cast",ComplexAbs="ComplexAbs",RealDiv="RealDiv",Fill="Fill",FloorDiv="FloorDiv",Identity="Identity",Maximum="Maximum",Multiply="Multiply",Pow="Pow",Sqrt="Sqrt",Sub="Sub",ZerosLike="ZerosLike";function warn(...e){env().getBool("IS_TEST")||env().getBool("PROD")||console.warn(...e)}const kernelRegistry=getGlobal("kernelRegistry",(()=>new Map)),gradRegistry=getGlobal("gradRegistry",(()=>new Map));function getKernel(e,t){const a=makeKey(e,t);return kernelRegistry.get(a)}function getGradient(e){return gradRegistry.get(e)}function getKernelsForBackend(e){const t=kernelRegistry.entries(),a=[];for(;;){const{done:n,value:r}=t.next();if(n)break;const[o,i]=r,[s]=o.split("_");s===e&&a.push(i)}return a}function makeKey(e,t){return`${t}_${e}`}function isTypedArrayBrowser(e){return e instanceof Float32Array||e instanceof Int32Array||e instanceof Uint8Array||e instanceof Uint8ClampedArray}function noConversionNeeded(e,t){return e instanceof Float32Array&&"float32"===t||e instanceof Int32Array&&"int32"===t||e instanceof Uint8Array&&"bool"===t}function toTypedArray(e,t){if("string"===t)throw new Error("Cannot convert a string[] to a TypedArray");if(Array.isArray(e)&&(e=flatten(e)),env().getBool("DEBUG")&&checkConversionForErrors(e,t),noConversionNeeded(e,t))return e;if(null==t||"float32"===t||"complex64"===t)return new Float32Array(e);if("int32"===t)return new Int32Array(e);if("bool"===t){const t=new Uint8Array(e.length);for(let a=0;a<t.length;++a)0!==Math.round(e[a])&&(t[a]=1);return t}throw new Error(`Unknown data type ${t}`)}function now(){return env().platform.now()}function encodeString(e,t="utf-8"){return t=t||"utf-8",env().platform.encode(e,t)}function decodeString(e,t="utf-8"){return t=t||"utf-8",env().platform.decode(e,t)}function isTypedArray(e){return null!=env().platform.isTypedArray?env().platform.isTypedArray(e):isTypedArrayBrowser(e)}function flatten(e,t=[],a=!1){if(null==t&&(t=[]),"boolean"==typeof e||"number"==typeof e||"string"==typeof e||isPromise(e)||null==e||isTypedArray(e)&&a)t.push(e);else if(Array.isArray(e)||isTypedArray(e))for(let n=0;n<e.length;++n)flatten(e[n],t,a);else{let n=-1;for(const t of Object.keys(e))/^([1-9]+[0-9]*|0)$/.test(t)&&(n=Math.max(n,Number(t)));for(let r=0;r<=n;r++)flatten(e[r],t,a)}return t}class Profiler{constructor(e,t){this.backendTimer=e,this.logger=t,null==t&&(this.logger=new Logger)}profileKernel(e,t,a){let n;const r=()=>{n=a()};let o;const i=now();if(this.backendTimer.timerAvailable())o=this.backendTimer.time(r);else{r();for(const e of n)e.dataSync();o=Promise.resolve({kernelMs:now()-i})}if(env().getBool("CHECK_COMPUTATION_FOR_ERRORS"))for(let t=0;t<n.length;t++){const a=n[t];a.data().then((t=>{checkComputationForErrors(t,a.dtype,e)}))}return{kernelName:e,outputs:n,inputs:t,timeMs:o.then((e=>e.kernelMs)),extraInfo:o.then((e=>null!=e.getExtraProfileInfo?e.getExtraProfileInfo():""))}}logKernelProfile(e){const{kernelName:t,outputs:a,timeMs:n,inputs:r,extraInfo:o}=e;a.forEach((e=>{Promise.all([e.data(),n,o]).then((a=>{this.logger.logKernelProfile(t,e,a[0],a[1],r,a[2])}))}))}}function checkComputationForErrors(e,t,a){if("float32"!==t)return!1;for(let t=0;t<e.length;t++){const n=e[t];if(isNaN(n)||!isFinite(n))return console.warn(`Found ${n} in the result of '${a}'`),!0}return!1}class Logger{logKernelProfile(e,t,a,n,r,o){const i="number"==typeof n?rightPad(`${n}ms`,9):n.error,s=rightPad(e,25),l=t.rank,c=t.size,u=rightPad(t.shape.toString(),14);let d="";for(const e in r){const a=r[e];if(null!=a){const n=a.shape||t.shape,r=n.length;d+=`${e}: ${r}D ${r>0?n:""} `}}console.log(`%c${s}\t%c${i}\t%c${l}D ${u}\t%c${c}\t%c${d}\t%c${o}`,"font-weight:bold","color:red","color:blue","color: orange","color: green","color: steelblue")}}function getFilteredNodesXToY(e,t,a){const n={},r={};for(let e=0;e<t.length;e++)n[t[e].id]=!0;for(let a=0;a<e.length;a++){const o=e[a],i=o.inputs;for(const e in i){const a=i[e];let s=!1;for(let e=0;e<t.length;e++)if(n[a.id]){o.outputs.forEach((e=>n[e.id]=!0)),s=!0,r[o.id]=!0;break}if(s)break}}const o={};o[a.id]=!0;const i={};for(let t=e.length-1;t>=0;t--){const a=e[t],n=a.inputs;for(let e=0;e<a.outputs.length;e++)if(o[a.outputs[e].id]){for(const e in n)o[n[e].id]=!0,i[a.id]=!0;break}}const s=[];for(let t=0;t<e.length;t++){const a=e[t];if(r[a.id]&&i[a.id]){const e={};for(const t in a.inputs){const r=a.inputs[t];n[r.id]&&(e[t]=r)}const t=Object.assign({},a);t.inputs=e,t.outputs=a.outputs,s.push(t)}}return s}function backpropagateGradients(e,t,a,n){for(let r=t.length-1;r>=0;r--){const o=t[r],i=[];if(o.outputs.forEach((t=>{const a=e[t.id];i.push(null!=a?a:null)})),null==o.gradient)throw new Error(`Cannot compute gradient: gradient function not found for ${o.kernelName}.`);const s=o.gradient(i);for(const t in o.inputs){if(!(t in s))throw new Error(`Cannot backprop through input ${t}. Available gradients found: ${Object.keys(s)}.`);const r=a((()=>s[t]()));if("float32"!==r.dtype)throw new Error(`Error in gradient for op ${o.kernelName}. The gradient of input ${t} must have 'float32' dtype, but has '${r.dtype}'`);const i=o.inputs[t];if(!arraysEqual(r.shape,i.shape))throw new Error(`Error in gradient for op ${o.kernelName}. The gradient of input '${t}' has shape '${r.shape}', which does not match the shape of the input '${i.shape}'`);if(null==e[i.id])e[i.id]=r;else{const t=e[i.id];e[i.id]=n(t,r),t.dispose()}}}}const FORMAT_LIMIT_NUM_VALS=20,FORMAT_NUM_FIRST_LAST_VALS=3,FORMAT_NUM_SIG_DIGITS=7;function tensorToString(e,t,a,n){const r=computeStrides(t),o=computeMaxSizePerColumn(e,t,a,r),i=t.length,s=subTensorToString(e,t,a,r,o),l=["Tensor"];return n&&(l.push(` dtype: ${a}`),l.push(` rank: ${i}`),l.push(` shape: [${t}]`),l.push(" values:")),l.push(s.map((e=>" "+e)).join("\n")),l.join("\n")}function computeMaxSizePerColumn(e,t,a,n){const r=sizeFromShape(t),o=n[n.length-1],i=new Array(o).fill(0),s=t.length,l="complex64"===a?createComplexTuples(e):e;if(s>1)for(let e=0;e<r/o;e++){const t=e*o;for(let e=0;e<o;e++)i[e]=Math.max(i[e],valToString(l[t+e],0,a).length)}return i}function valToString(e,t,a){let n;return n=Array.isArray(e)?`${parseFloat(e[0].toFixed(FORMAT_NUM_SIG_DIGITS))} + ${parseFloat(e[1].toFixed(FORMAT_NUM_SIG_DIGITS))}j`:isString(e)?`'${e}'`:"bool"===a?boolNumToString(e):parseFloat(e.toFixed(FORMAT_NUM_SIG_DIGITS)).toString(),rightPad(n,t)}function boolNumToString(e){return 0===e?"false":"true"}function subTensorToString(e,t,a,n,r,o=!0){const i="complex64"===a?2:1,s=t[0],l=t.length;if(0===l){if("complex64"===a){return[valToString(createComplexTuples(e)[0],0,a)]}return"bool"===a?[boolNumToString(e[0])]:[e[0].toString()]}if(1===l){if(s>FORMAT_LIMIT_NUM_VALS){let t=Array.from(e.slice(0,FORMAT_NUM_FIRST_LAST_VALS*i)),n=Array.from(e.slice((s-FORMAT_NUM_FIRST_LAST_VALS)*i,s*i));return"complex64"===a&&(t=createComplexTuples(t),n=createComplexTuples(n)),["["+t.map(((e,t)=>valToString(e,r[t],a))).join(", ")+", ..., "+n.map(((e,t)=>valToString(e,r[s-FORMAT_NUM_FIRST_LAST_VALS+t],a))).join(", ")+"]"]}return["["+("complex64"===a?createComplexTuples(e):Array.from(e)).map(((e,t)=>valToString(e,r[t],a))).join(", ")+"]"]}const c=t.slice(1),u=n.slice(1),d=n[0]*i,f=[];if(s>FORMAT_LIMIT_NUM_VALS){for(let t=0;t<FORMAT_NUM_FIRST_LAST_VALS;t++){const n=t*d;f.push(...subTensorToString(e.slice(n,n+d),c,a,u,r,!1))}f.push("...");for(let t=s-FORMAT_NUM_FIRST_LAST_VALS;t<s;t++){const n=t*d;f.push(...subTensorToString(e.slice(n,n+d),c,a,u,r,t===s-1))}}else for(let t=0;t<s;t++){const n=t*d;f.push(...subTensorToString(e.slice(n,n+d),c,a,u,r,t===s-1))}const m=2===l?",":"";f[0]="["+(s>0?f[0]+m:"");for(let e=1;e<f.length-1;e++)f[e]=" "+f[e]+m;let p=",\n";for(let e=2;e<l;e++)p+="\n";return f[f.length-1]=" "+f[f.length-1]+"]"+(o?"":p),f}function createComplexTuples(e){const t=[];for(let a=0;a<e.length;a+=2)t.push([e[a],e[a+1]]);return t}class TensorBuffer{constructor(e,t,a){if(this.dtype=t,this.shape=e.slice(),this.size=sizeFromShape(e),null!=a){const e=a.length;assert(e===this.size,(()=>`Length of values '${e}' does not match the size inferred by the shape '${this.size}'.`))}if("complex64"===t)throw new Error("complex64 dtype TensorBuffers are not supported. Please create a TensorBuffer for the real and imaginary parts separately and call tf.complex(real, imag).");this.values=a||getArrayFromDType(t,this.size),this.strides=computeStrides(e)}set(e,...t){0===t.length&&(t=[0]),assert(t.length===this.rank,(()=>`The number of provided coordinates (${t.length}) must match the rank (${this.rank})`));const a=this.locToIndex(t);this.values[a]=e}get(...e){0===e.length&&(e=[0]);let t=0;for(const a of e){if(a<0||a>=this.shape[t]){throw new Error(`Requested out of range element at ${e}. Buffer shape=${this.shape}`)}t++}let a=e[e.length-1];for(let t=0;t<e.length-1;++t)a+=this.strides[t]*e[t];return this.values[a]}locToIndex(e){if(0===this.rank)return 0;if(1===this.rank)return e[0];let t=e[e.length-1];for(let a=0;a<e.length-1;++a)t+=this.strides[a]*e[a];return t}indexToLoc(e){if(0===this.rank)return[];if(1===this.rank)return[e];const t=new Array(this.shape.length);for(let a=0;a<t.length-1;++a)t[a]=Math.floor(e/this.strides[a]),e-=t[a]*this.strides[a];return t[t.length-1]=e,t}get rank(){return this.shape.length}toTensor(){return trackerFn().makeTensor(this.values,this.shape,this.dtype)}}let trackerFn=null,opHandler$1=null;function setTensorTracker(e){trackerFn=e}function setOpHandler(e){opHandler$1=e}class Tensor{constructor(e,t,a,n){this.kept=!1,this.isDisposedInternal=!1,this.shape=e.slice(),this.dtype=t||"float32",this.size=sizeFromShape(e),this.strides=computeStrides(e),this.dataId=a,this.id=n,this.rankType=this.rank<5?this.rank.toString():"higher"}get rank(){return this.shape.length}async buffer(){const e=await this.data();return opHandler$1.buffer(this.shape,this.dtype,e)}bufferSync(){return opHandler$1.buffer(this.shape,this.dtype,this.dataSync())}async array(){const e=await this.data();return toNestedArray(this.shape,e,"complex64"===this.dtype)}arraySync(){return toNestedArray(this.shape,this.dataSync(),"complex64"===this.dtype)}async data(){this.throwIfDisposed();const e=trackerFn().read(this.dataId);if("string"===this.dtype){const t=await e;try{return t.map((e=>decodeString(e)))}catch(e){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}}return e}dataToGPU(e){return this.throwIfDisposed(),trackerFn().readToGPU(this.dataId,e)}dataSync(){this.throwIfDisposed();const e=trackerFn().readSync(this.dataId);if("string"===this.dtype)try{return e.map((e=>decodeString(e)))}catch(e){throw new Error("Failed to decode the string bytes into utf-8. To get the original bytes, call tensor.bytes().")}return e}async bytes(){this.throwIfDisposed();const e=await trackerFn().read(this.dataId);return"string"===this.dtype?e:new Uint8Array(e.buffer)}dispose(){this.isDisposed||(trackerFn().disposeTensor(this),this.isDisposedInternal=!0)}get isDisposed(){return this.isDisposedInternal}throwIfDisposed(){if(this.isDisposed)throw new Error("Tensor is disposed.")}print(e=!1){return opHandler$1.print(this,e)}clone(){return this.throwIfDisposed(),opHandler$1.clone(this)}toString(e=!1){return tensorToString(this.dataSync(),this.shape,this.dtype,e)}cast(e){return this.throwIfDisposed(),opHandler$1.cast(this,e)}variable(e=!0,t,a){return this.throwIfDisposed(),trackerFn().makeVariable(this,e,t,a)}}function getGlobalTensorClass(){return getGlobal("Tensor",(()=>Tensor))}Object.defineProperty(Tensor,Symbol.hasInstance,{value:e=>!!e&&null!=e.data&&null!=e.dataSync&&null!=e.throwIfDisposed}),getGlobalTensorClass();class Variable extends Tensor{constructor(e,t,a,n){super(e.shape,e.dtype,e.dataId,n),this.trainable=t,this.name=a}assign(e){if(e.dtype!==this.dtype)throw new Error(`dtype of the new value (${e.dtype}) and previous value (${this.dtype}) must match`);if(!arraysEqual(e.shape,this.shape))throw new Error(`shape of the new value (${e.shape}) and previous value (${this.shape}) must match`);trackerFn().disposeTensor(this),this.dataId=e.dataId,trackerFn().incRef(this,null)}dispose(){trackerFn().disposeVariable(this),this.isDisposedInternal=!0}}var Rank,UpcastInt32AndMap,UpcastBoolAndMap,UpcastFloat32AndMap,UpcastComplex64AndMap;Object.defineProperty(Variable,Symbol.hasInstance,{value:e=>e instanceof Tensor&&null!=e.assign&&e.assign instanceof Function}),function(e){e.R0="R0",e.R1="R1",e.R2="R2",e.R3="R3",e.R4="R4",e.R5="R5",e.R6="R6"}(Rank||(Rank={})),function(e){e.float32="float32",e.int32="int32",e.bool="int32",e.complex64="complex64"}(UpcastInt32AndMap||(UpcastInt32AndMap={})),function(e){e.float32="float32",e.int32="int32",e.bool="bool",e.complex64="complex64"}(UpcastBoolAndMap||(UpcastBoolAndMap={})),function(e){e.float32="float32",e.int32="float32",e.bool="float32",e.complex64="complex64"}(UpcastFloat32AndMap||(UpcastFloat32AndMap={})),function(e){e.float32="complex64",e.int32="complex64",e.bool="complex64",e.complex64="complex64"}(UpcastComplex64AndMap||(UpcastComplex64AndMap={}));const upcastTypeMap={float32:UpcastFloat32AndMap,int32:UpcastInt32AndMap,bool:UpcastBoolAndMap,complex64:UpcastComplex64AndMap};function upcastType(e,t){if("string"===e||"string"===t){if("string"===e&&"string"===t)return"string";throw new Error(`Can not upcast ${e} with ${t}`)}return upcastTypeMap[e][t]}function isWebGLData(e){return null!=e&&"object"==typeof e&&"texture"in e&&e.texture instanceof WebGLTexture}function isWebGPUData(e){return"undefined"!=typeof GPUBuffer&&null!=e&&"object"==typeof e&&"buffer"in e&&e.buffer instanceof GPUBuffer}function makeTypesMatch(e,t){if(e.dtype===t.dtype)return[e,t];const a=upcastType(e.dtype,t.dtype);return[e.cast(a),t.cast(a)]}function getTensorsInContainer(e){const t=[];return walkTensorContainer(e,t,new Set),t}function walkTensorContainer(e,t,a){if(null==e)return;if(e instanceof Tensor)return void t.push(e);if(!isIterable(e))return;const n=e;for(const e in n){const r=n[e];a.has(r)||(a.add(r),walkTensorContainer(r,t,a))}}function isIterable(e){return Array.isArray(e)||"object"==typeof e}function isRegisteredKernelInvocation(e){return null!=e.kernelName}class EngineState{constructor(){this.registeredVariables={},this.nextTapeNodeId=0,this.numBytes=0,this.numTensors=0,this.numStringTensors=0,this.numDataBuffers=0,this.gradientDepth=0,this.kernelDepth=0,this.scopeStack=[],this.numDataMovesStack=[],this.nextScopeId=0,this.tensorInfo=new WeakMap,this.profiling=!1,this.activeProfile={newBytes:0,newTensors:0,peakBytes:0,kernels:[],result:null,get kernelNames(){return Array.from(new Set(this.kernels.map((e=>e.name))))}}}dispose(){for(const e in this.registeredVariables)this.registeredVariables[e].dispose()}}class Engine{constructor(e){this.ENV=e,this.registry={},this.registryFactory={},this.pendingBackendInitId=0,this.state=new EngineState}async ready(){if(null!=this.pendingBackendInit)return this.pendingBackendInit.then((()=>{}));if(null!=this.backendInstance)return;const e=this.getSortedBackends();for(let t=0;t<e.length;t++){const a=e[t];if(await this.initializeBackend(a).success)return void await this.setBackend(a)}throw new Error("Could not initialize any backends, all backend initializations failed.")}get backend(){if(null!=this.pendingBackendInit)throw new Error(`Backend '${this.backendName}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`);if(null==this.backendInstance){const{name:e,asyncInit:t}=this.initializeBackendsAndReturnBest();if(t)throw new Error(`The highest priority backend '${e}' has not yet been initialized. Make sure to await tf.ready() or await tf.setBackend() before calling other methods`);this.setBackend(e)}return this.backendInstance}backendNames(){return Object.keys(this.registryFactory)}findBackend(e){if(!(e in this.registry)){if(!(e in this.registryFactory))return null;{const{asyncInit:t}=this.initializeBackend(e);if(t)return null}}return this.registry[e]}findBackendFactory(e){return e in this.registryFactory?this.registryFactory[e].factory:null}registerBackend(e,t,a=1){return e in this.registryFactory?(warn(`${e} backend was already registered. Reusing existing backend factory.`),!1):(this.registryFactory[e]={factory:t,priority:a},!0)}async setBackend(e){if(null==this.registryFactory[e])throw new Error(`Backend name '${e}' not found in registry`);if(this.backendName=e,null==this.registry[e]){this.backendInstance=null;const{success:t,asyncInit:a}=this.initializeBackend(e);if(!(a?await t:t))return!1}return this.backendInstance=this.registry[e],this.setupRegisteredKernels(),this.profiler=new Profiler(this.backendInstance),!0}setupRegisteredKernels(){getKernelsForBackend(this.backendName).forEach((e=>{null!=e.setupFunc&&e.setupFunc(this.backendInstance)}))}disposeRegisteredKernels(e){getKernelsForBackend(e).forEach((t=>{null!=t.disposeFunc&&t.disposeFunc(this.registry[e])}))}initializeBackend(e){const t=this.registryFactory[e];if(null==t)throw new Error(`Cannot initialize backend ${e}, no registration found.`);try{const a=t.factory();if(!a||a instanceof KernelBackend||"function"!=typeof a.then)return this.registry[e]=a,{success:!0,asyncInit:!1};{const t=++this.pendingBackendInitId,n=a.then((a=>!(t<this.pendingBackendInitId)&&(this.registry[e]=a,this.pendingBackendInit=null,!0))).catch((a=>(t<this.pendingBackendInitId||(this.pendingBackendInit=null,warn(`Initialization of backend ${e} failed`),warn(a.stack||a.message)),!1)));return this.pendingBackendInit=n,{success:n,asyncInit:!0}}}catch(t){return warn(`Initialization of backend ${e} failed`),warn(t.stack||t.message),{success:!1,asyncInit:!1}}}removeBackend(e){if(!(e in this.registryFactory))throw new Error(`${e} backend not found in registry`);this.backendName===e&&null!=this.pendingBackendInit&&this.pendingBackendInitId++,e in this.registry&&(this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e]),delete this.registryFactory[e],this.backendName===e&&(this.pendingBackendInit=null,this.backendName=null,this.backendInstance=null)}getSortedBackends(){if(0===Object.keys(this.registryFactory).length)throw new Error("No backend found in registry.");return Object.keys(this.registryFactory).sort(((e,t)=>this.registryFactory[t].priority-this.registryFactory[e].priority))}initializeBackendsAndReturnBest(){const e=this.getSortedBackends();for(let t=0;t<e.length;t++){const a=e[t],{success:n,asyncInit:r}=this.initializeBackend(a);if(r||n)return{name:a,asyncInit:r}}throw new Error("Could not initialize any backends, all backend initializations failed.")}moveData(e,t){const a=this.state.tensorInfo.get(t),n=a.backend,r=this.readSync(t),o=n.refCount(t);n.disposeData(t,!0),a.backend=e,e.move(t,r,a.shape,a.dtype,o),this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack[this.state.numDataMovesStack.length-1]++}tidy(e,t){let a,n=null;if(null==t){if("function"!=typeof e)throw new Error("Please provide a function to tidy()");t=e}else{if("string"!=typeof e&&!(e instanceof String))throw new Error("When calling with two arguments, the first argument to tidy() must be a string");if("function"!=typeof t)throw new Error("When calling with two arguments, the 2nd argument to tidy() must be a function");n=e}return this.scopedRun((()=>this.startScope(n)),(()=>this.endScope(a)),(()=>(a=t(),a instanceof Promise&&console.error("Cannot return a Promise inside of tidy."),a)))}scopedRun(e,t,a){e();try{const e=a();return t(),e}catch(e){throw t(),e}}nextTensorId(){return Engine.nextTensorId++}nextVariableId(){return Engine.nextVariableId++}clone(e){const t=ENGINE.runKernel(Identity,{x:e});return this.addTapeNode(this.state.activeScope.name,{x:e},[t],(e=>({x:()=>ENGINE.runKernel(Cast,{x:e},{dtype:"float32"})})),[],{}),t}runKernel(e,t,a){if(!(null!=getKernel(e,this.backendName)))throw new Error(`Kernel '${e}' not registered for backend '${this.backendName}'`);return this.runKernelFunc({kernelName:e,inputs:t,attrs:a})}shouldCheckForMemLeaks(){return this.ENV.getBool("IS_TEST")}checkKernelForMemLeak(e,t,a){const n=this.backend.numDataIds();let r=0;a.forEach((e=>{r+="complex64"===e.dtype?3:1}));const o=n-t-r-this.state.numDataMovesStack[this.state.numDataMovesStack.length-1];if(o>0)throw new Error(`Backend '${this.backendName}' has an internal memory leak (${o} data ids) after running '${e}'`)}runKernelFunc(e){let t,a=[];const n=this.isTapeOn(),r=this.state.numBytes,o=this.state.numTensors;let i,s;this.shouldCheckForMemLeaks()&&this.state.numDataMovesStack.push(0);const l=isRegisteredKernelInvocation(e)?e.kernelName:null!=this.state.activeScope?this.state.activeScope.name:"";if(isRegisteredKernelInvocation(e)){const{kernelName:t,inputs:r,attrs:o}=e,l=getKernel(t,this.backendName);assert(null!=l,(()=>`Cannot find registered kernel '${t}' for backend '${this.backendName}'`)),i=()=>{const e=this.backend.numDataIds();s=l.kernelFunc({inputs:r,attrs:o,backend:this.backend});const i=Array.isArray(s)?s:[s];this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(t,e,i);const c=i.map((e=>null!=e.rank?e:this.makeTensorFromTensorInfo(e)));if(n){const e=this.getTensorsForGradient(t,r,c);a=this.saveTensorsForBackwardMode(e)}return c}}else{const{forwardFunc:t}=e,r=e=>{n&&(a=e.map((e=>this.keep(this.clone(e)))))};i=()=>{const e=this.backend.numDataIds();s=this.tidy((()=>t(this.backend,r)));const a=Array.isArray(s)?s:[s];return this.shouldCheckForMemLeaks()&&this.checkKernelForMemLeak(l,e,a),a}}const{inputs:c,attrs:u}=e,d=isRegisteredKernelInvocation(e)?null:e.backwardsFunc;let f;return this.scopedRun((()=>this.state.kernelDepth++),(()=>this.state.kernelDepth--),(()=>{this.ENV.getBool("DEBUG")||this.state.profiling?(f=this.profiler.profileKernel(l,c,(()=>i())),this.ENV.getBool("DEBUG")&&this.profiler.logKernelProfile(f),t=f.outputs):t=i()})),n&&this.addTapeNode(l,c,t,d,a,u),this.state.profiling&&this.state.activeProfile.kernels.push({name:l,bytesAdded:this.state.numBytes-r,totalBytesSnapshot:this.state.numBytes,tensorsAdded:this.state.numTensors-o,totalTensorsSnapshot:this.state.numTensors,inputShapes:Object.keys(c).map((e=>null!=c[e]?c[e].shape:null)),outputShapes:t.map((e=>e.shape)),kernelTimeMs:f.timeMs,extraInfo:f.extraInfo}),Array.isArray(s)?t:t[0]}saveTensorsForBackwardMode(e){return e.map((e=>this.keep(this.clone(e))))}getTensorsForGradient(e,t,a){const n=getGradient(e);if(null!=n){const e=n.inputsToSave||[],r=n.outputsToSave||[];let o;n.saveAllInputs?(assert(Array.isArray(t),(()=>"saveAllInputs is true, expected inputs to be an array.")),o=Object.keys(t).map((e=>t[e]))):o=e.map((e=>t[e]));const i=a.filter(((e,t)=>r[t]));return o.concat(i)}return[]}makeTensor(e,t,a,n){if(null==e)throw new Error("Values passed to engine.makeTensor() are null");n=n||this.backend;let r=e;"string"===(a=a||"float32")&&isString(e[0])&&(r=e.map((e=>encodeString(e))));const o=n.write(r,t,a),i=new Tensor(t,a,o,this.nextTensorId());if(this.trackTensor(i,n),"string"===a){const e=this.state.tensorInfo.get(o),t=bytesFromStringArray(r);this.state.numBytes+=t-e.bytes,e.bytes=t}return i}makeTensorFromDataId(e,t,a,n){return this.makeTensorFromTensorInfo({dataId:e,shape:t,dtype:a=a||"float32"},n)}makeTensorFromTensorInfo(e,t){const{dataId:a,shape:n,dtype:r}=e,o=new Tensor(n,r,a,this.nextTensorId());return this.trackTensor(o,t),o}makeVariable(e,t=!0,a,n){a=a||this.nextVariableId().toString(),null!=n&&n!==e.dtype&&(e=e.cast(n));const r=new Variable(e,t,a,this.nextTensorId());if(null!=this.state.registeredVariables[r.name])throw new Error(`Variable with name ${r.name} was already registered`);return this.state.registeredVariables[r.name]=r,this.incRef(r,this.backend),r}trackTensor(e,t){this.state.numTensors++,"string"===e.dtype&&this.state.numStringTensors++;let a=0;"complex64"!==e.dtype&&"string"!==e.dtype&&(a=e.size*bytesPerElement(e.dtype)),this.state.numBytes+=a,this.state.tensorInfo.has(e.dataId)||(this.state.numDataBuffers++,this.state.tensorInfo.set(e.dataId,{backend:t||this.backend,dtype:e.dtype,shape:e.shape,bytes:a})),e instanceof Variable||this.track(e)}incRef(e,t){this.trackTensor(e,t),this.backend.incRef(e.dataId)}removeDataId(e,t){this.state.tensorInfo.has(e)&&this.state.tensorInfo.get(e).backend===t&&(this.state.tensorInfo.delete(e),this.state.numDataBuffers--)}disposeTensor(e){if(!this.state.tensorInfo.has(e.dataId))return;const t=this.state.tensorInfo.get(e.dataId);if(this.state.numTensors--,"string"===e.dtype&&(this.state.numStringTensors--,this.state.numBytes-=t.bytes),"complex64"!==e.dtype&&"string"!==e.dtype){const t=e.size*bytesPerElement(e.dtype);this.state.numBytes-=t}t.backend.disposeData(e.dataId)&&this.removeDataId(e.dataId,t.backend)}disposeVariables(){for(const e in this.state.registeredVariables){this.disposeVariable(this.state.registeredVariables[e])}}disposeVariable(e){this.disposeTensor(e),null!=this.state.registeredVariables[e.name]&&delete this.state.registeredVariables[e.name]}memory(){const e=this.backend.memory();return e.numTensors=this.state.numTensors,e.numDataBuffers=this.state.numDataBuffers,e.numBytes=this.state.numBytes,this.state.numStringTensors>0&&(e.unreliable=!0,null==e.reasons&&(e.reasons=[]),e.reasons.push("Memory usage by string tensors is approximate (2 bytes per character)")),e}async profile(e){this.state.profiling=!0;const t=this.state.numBytes,a=this.state.numTensors;this.state.activeProfile.kernels=[],this.state.activeProfile.result=await e(),this.state.profiling=!1,this.state.activeProfile.peakBytes=Math.max(...this.state.activeProfile.kernels.map((e=>e.totalBytesSnapshot))),this.state.activeProfile.newBytes=this.state.numBytes-t,this.state.activeProfile.newTensors=this.state.numTensors-a;for(const e of this.state.activeProfile.kernels)e.kernelTimeMs=await e.kernelTimeMs,e.extraInfo=await e.extraInfo;return this.state.activeProfile}isTapeOn(){return this.state.gradientDepth>0&&0===this.state.kernelDepth}addTapeNode(e,t,a,n,r,o){const i={id:this.state.nextTapeNodeId++,kernelName:e,inputs:t,outputs:a,saved:r},s=getGradient(e);null!=s&&(n=s.gradFunc),null!=n&&(i.gradient=e=>(e=e.map(((e,t)=>{if(null==e){const e=a[t],n=makeZerosTypedArray(e.size,e.dtype);return this.makeTensor(n,e.shape,e.dtype)}return e})),n(e.length>1?e:e[0],r,o))),this.state.activeTape.push(i)}keep(e){return e.kept=!0,e}startTape(){0===this.state.gradientDepth&&(this.state.activeTape=[]),this.state.gradientDepth++}endTape(){this.state.gradientDepth--}startScope(e){const t={track:[],name:"unnamed scope",id:this.state.nextScopeId++};e&&(t.name=e),this.state.scopeStack.push(t),this.state.activeScope=t}endScope(e){const t=getTensorsInContainer(e),a=new Set(t.map((e=>e.id)));for(let e=0;e<this.state.activeScope.track.length;e++){const t=this.state.activeScope.track[e];t.kept||a.has(t.id)||t.dispose()}const n=this.state.scopeStack.pop();this.state.activeScope=0===this.state.scopeStack.length?null:this.state.scopeStack[this.state.scopeStack.length-1],t.forEach((e=>{e.kept||e.scopeId!==n.id||this.track(e)}))}gradients(e,t,a,n=!1){if(assert(t.length>0,(()=>"gradients() received an empty list of xs.")),null!=a&&"float32"!==a.dtype)throw new Error(`dy must have 'float32' dtype, but has '${a.dtype}'`);const r=this.scopedRun((()=>this.startTape()),(()=>this.endTape()),(()=>this.tidy("forward",e)));assert(r instanceof Tensor,(()=>"The result y returned by f() must be a tensor."));const o=getFilteredNodesXToY(this.state.activeTape,t,r);if(!n&&0===o.length&&t.length>0)throw new Error("Cannot compute gradient of y=f(x) with respect to x. Make sure that the f you passed encloses all operations that lead from x to y.");return this.tidy("backward",(()=>{const e={};e[r.id]=null==a?ones(r.shape):a,backpropagateGradients(e,o,(e=>this.tidy(e)),add$1);const n=t.map((t=>e[t.id]));return 0===this.state.gradientDepth&&(this.state.activeTape.forEach((e=>{for(const t of e.saved)t.dispose()})),this.state.activeTape=null),{value:r,grads:n}}))}customGrad(e){return assert(isFunction(e),(()=>"The f passed in customGrad(f) must be a function.")),(...t)=>{let a;assert(t.every((e=>e instanceof Tensor)),(()=>"The args passed in customGrad(f)(x1, x2,...) must all be tensors"));const n={};t.forEach(((e,t)=>{n[t]=e}));return this.runKernelFunc({forwardFunc:(n,r)=>(a=e(...t,r),assert(a.value instanceof Tensor,(()=>"The function f passed in customGrad(f) must return an object where `obj.value` is a tensor")),assert(isFunction(a.gradFunc),(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function.")),a.value),backwardsFunc:(e,n)=>{const r=a.gradFunc(e,n),o=Array.isArray(r)?r:[r];assert(o.length===t.length,(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns the same number of tensors as inputs passed to f(...).")),assert(o.every((e=>e instanceof Tensor)),(()=>"The function f passed in customGrad(f) must return an object where `obj.gradFunc` is a function that returns a list of only tensors."));const i={};return o.forEach(((e,t)=>{i[t]=()=>e})),i},inputs:n})}}readSync(e){return this.state.tensorInfo.get(e).backend.readSync(e)}read(e){return this.state.tensorInfo.get(e).backend.read(e)}readToGPU(e,t){return this.state.tensorInfo.get(e).backend.readToGPU(e,t)}async time(e){const t=now(),a=await this.backend.time(e);return a.wallMs=now()-t,a}track(e){return null!=this.state.activeScope&&(e.scopeId=this.state.activeScope.id,this.state.activeScope.track.push(e)),e}get registeredVariables(){return this.state.registeredVariables}reset(){this.pendingBackendInitId++,this.state.dispose(),this.ENV.reset(),this.state=new EngineState;for(const e in this.registry)this.disposeRegisteredKernels(e),this.registry[e].dispose(),delete this.registry[e];this.backendName=null,this.backendInstance=null,this.pendingBackendInit=null}}function ones(e){const t=makeOnesTypedArray(sizeFromShape(e),"float32");return ENGINE.makeTensor(t,e,"float32")}function getOrMakeEngine(){const e=getGlobalNamespace();if(null==e._tfengine){const t=new Environment(e);e._tfengine=new Engine(t)}return setEnvironmentGlobal(e._tfengine.ENV),setTensorTracker((()=>e._tfengine)),e._tfengine}Engine.nextTensorId=0,Engine.nextVariableId=0;const ENGINE=getOrMakeEngine();function add$1(e,t){return ENGINE.runKernel(Add,{a:e,b:t})}const ENV=env();function inferShape(e,t){let a=e;if(isTypedArray(e))return"string"===t?[]:[e.length];if(isWebGLData(e)){return[e.height,e.width*(e.channels||"RGBA").length]}if(isWebGPUData(e))return[e.buffer.size/(null==t?4:bytesPerElement(t))];if(!Array.isArray(e))return[];const n=[];for(;Array.isArray(a)||isTypedArray(a)&&"string"!==t;)n.push(a.length),a=a[0];return Array.isArray(e)&&env().getBool("TENSORLIKE_CHECK_SHAPE_CONSISTENCY")&&deepAssertShapeConsistency(e,n,[]),n}function deepAssertShapeConsistency(e,t,a){if(a=a||[],!Array.isArray(e)&&!isTypedArray(e))return void assert(0===t.length,(()=>`Element arr[${a.join("][")}] is a primitive, but should be an array/TypedArray of ${t[0]} elements`));assert(t.length>0,(()=>`Element arr[${a.join("][")}] should be a primitive, but is an array of ${e.length} elements`)),assert(e.length===t[0],(()=>`Element arr[${a.join("][")}] should have ${t[0]} elements, but has ${e.length} elements`));const n=t.slice(1);for(let t=0;t<e.length;++t)deepAssertShapeConsistency(e[t],n,a.concat(t))}function assertDtype(e,t,a,n){if("string_or_numeric"!==e){if(null==e)throw new Error("Expected dtype cannot be null.");if("numeric"!==e&&e!==t||"numeric"===e&&"string"===t)throw new Error(`Argument '${a}' passed to '${n}' must be ${e} tensor, but got ${t} tensor`)}}function convertToTensor(e,t,a,n="numeric"){if(e instanceof Tensor)return assertDtype(n,e.dtype,t,a),e;let r=inferDtype(e);if("string"!==r&&["bool","int32","float32"].indexOf(n)>=0&&(r=n),assertDtype(n,r,t,a),null==e||!isTypedArray(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e){throw new Error(`Argument '${t}' passed to '${a}' must be a Tensor or TensorLike, but got '${null==e?"null":e.constructor.name}'`)}const o=inferShape(e,r);isTypedArray(e)||Array.isArray(e)||(e=[e]);const i="string"!==r?toTypedArray(e,r):flatten(e,[],!0);return ENGINE.makeTensor(i,o,r)}ENV.registerFlag("DEBUG",(()=>!1),(e=>{e&&console.warn("Debugging mode is ON. The output of every math call will be downloaded to CPU and checked for NaNs. This significantly impacts performance.")})),ENV.registerFlag("IS_BROWSER",(()=>isBrowser())),ENV.registerFlag("IS_NODE",(()=>"undefined"!=typeof process&&void 0!==process.versions&&void 0!==process.versions.node)),ENV.registerFlag("IS_CHROME",(()=>"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Chrome/.test(navigator.userAgent)&&/Google Inc/.test(navigator.vendor))),ENV.registerFlag("IS_SAFARI",(()=>"undefined"!=typeof navigator&&null!=navigator&&null!=navigator.userAgent&&/Safari/.test(navigator.userAgent)&&/Apple/.test(navigator.vendor))),ENV.registerFlag("PROD",(()=>!1)),ENV.registerFlag("TENSORLIKE_CHECK_SHAPE_CONSISTENCY",(()=>ENV.getBool("DEBUG"))),ENV.registerFlag("DEPRECATION_WARNINGS_ENABLED",(()=>!0)),ENV.registerFlag("IS_TEST",(()=>!1)),ENV.registerFlag("CHECK_COMPUTATION_FOR_ERRORS",(()=>ENV.getBool("DEBUG"))),ENV.registerFlag("WRAP_TO_IMAGEBITMAP",(()=>!1)),ENV.registerFlag("CANVAS2D_WILL_READ_FREQUENTLY_FOR_GPU",(()=>!1)),ENV.registerFlag("USE_SETTIMEOUTCUSTOM",(()=>!1));const OP_SCOPE_SUFFIX="__op";function op(e){const t=Object.keys(e);if(1!==t.length)throw new Error(`Please provide an object with a single key (operation name) mapping to a function. Got an object with ${t.length} keys.`);let a=t[0];const n=e[a];a.endsWith("_")&&(a=a.substring(0,a.length-1)),a+="__op";const r=(...e)=>{ENGINE.startScope(a);try{const t=n(...e);return isPromise(t)&&console.error("Cannot return a Promise inside of tidy."),ENGINE.endScope(t),t}catch(e){throw ENGINE.endScope(null),e}};return Object.defineProperty(r,"name",{value:a,configurable:!0}),r}function makeTensor(e,t,a,n){if(null==n)n=inferDtype(e);else if("complex64"===n)throw new Error("Cannot construct a complex64 tensor directly. Please use tf.complex(real, imag).");if(isWebGPUData(e)||isWebGLData(e)){if("float32"!==n&&"int32"!==n)throw new Error(`Creating tensor from GPU data only supports 'float32'|'int32' dtype, while the dtype is ${n}.`);return ENGINE.backend.createTensorFromGPUData(e,t||a,n)}if(!isTypedArray(e)&&!Array.isArray(e)&&"number"!=typeof e&&"boolean"!=typeof e&&"string"!=typeof e)throw new Error("values passed to tensor(values) must be a number/boolean/string or an array of numbers/booleans/strings, or a TypedArray");if(null!=t){assertNonNegativeIntegerDimensions(t);const e=sizeFromShape(t),n=sizeFromShape(a);assert(e===n,(()=>`Based on the provided shape, [${t}], the tensor should have ${e} values but has ${n}`));for(let e=0;e<a.length;++e){const n=e!==a.length-1||a[e]!==sizeFromShape(t.slice(e));assert(a[e]===t[e]||!n,(()=>`Error creating a new Tensor. Inferred shape (${a}) does not match the provided shape (${t}). `))}}return isTypedArray(e)||Array.isArray(e)||(e=[e]),t=t||a,e="string"!==n?toTypedArray(e,n):flatten(e,[],!0),ENGINE.makeTensor(e,t,n)}class CompositeArrayBuffer{static join(e){return new CompositeArrayBuffer(e).slice()}constructor(e){if(this.shards=[],this.previousShardIndex=0,null==e)return;if(e instanceof Array||(e=[e]),0===(e=e.map((e=>isTypedArray(e)?e.buffer:e))).length)return;this.bufferUniformSize=e[0].byteLength;let t=0;for(let a=0;a<e.length;a++){const n=e[a];a!==e.length-1&&n.byteLength!==this.bufferUniformSize&&(this.bufferUniformSize=void 0);const r=t+n.byteLength;this.shards.push({buffer:n,start:t,end:r}),t=r}0===this.shards.length&&(this.byteLength=0),this.byteLength=this.shards[this.shards.length-1].end}slice(e=0,t=this.byteLength){if(0===this.shards.length)return new ArrayBuffer(0);if(e=isNaN(Number(e))?0:e,t=isNaN(Number(t))?0:t,e=Math.max(0,e),(t=Math.min(this.byteLength,t))<=e)return new ArrayBuffer(0);const a=this.findShardForByte(e);if(-1===a)throw new Error(`Could not find start shard for byte ${e}`);const n=new ArrayBuffer(t-e),r=new Uint8Array(n);let o=0;for(let n=a;n<this.shards.length;n++){const a=this.shards[n],i=e+o-a.start,s=o,l=Math.min(t,a.end),c=new Uint8Array(a.buffer,i,l-a.start-i);if(r.set(c,s),o+=c.length,t<a.end)break}return n}findShardForByte(e){if(0===this.shards.length||e<0||e>=this.byteLength)return-1;if(null!=this.bufferUniformSize)return this.previousShardIndex=Math.floor(e/this.bufferUniformSize),this.previousShardIndex;function t(t){return e<t.start?-1:e>=t.end?1:0}if(0===t(this.shards[this.previousShardIndex]))return this.previousShardIndex;const a=search(this.shards,t);return-1===a?-1:(this.previousShardIndex=a,this.previousShardIndex)}}function search(e,t){let a=0,n=e.length;for(;a<=n;){const r=Math.floor((n-a)/2)+a,o=t(e[r]);if(0===o)return r;o<0?n=r:a=r+1}return-1}const useNodeBuffer="undefined"!=typeof Buffer&&("undefined"==typeof Blob||"undefined"==typeof atob||"undefined"==typeof btoa);function stringByteLength(e){return useNodeBuffer?Buffer.byteLength(e,"utf8"):new Blob([e]).size}function arrayBufferToBase64String(e){if(useNodeBuffer)return Buffer.from(e).toString("base64");const t=new Uint8Array(e);let a="";for(let e=0,n=t.length;e<n;e++)a+=String.fromCharCode(t[e]);return btoa(a)}function base64StringToArrayBuffer(e){if(useNodeBuffer){const t=Buffer.from(e,"base64");return t.buffer.slice(t.byteOffset,t.byteOffset+t.byteLength)}const t=atob(e),a=new Uint8Array(t.length);for(let e=0;e<t.length;++e)a.set([t.charCodeAt(e)],e);return a.buffer}function getModelArtifactsInfoForJSON(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("Expected JSON model topology, received ArrayBuffer.");return{dateSaved:new Date,modelTopologyType:"JSON",modelTopologyBytes:null==e.modelTopology?0:stringByteLength(JSON.stringify(e.modelTopology)),weightSpecsBytes:null==e.weightSpecs?0:stringByteLength(JSON.stringify(e.weightSpecs)),weightDataBytes:null==e.weightData?0:new CompositeArrayBuffer(e.weightData).byteLength}}class IORouterRegistry{constructor(){this.saveRouters=[],this.loadRouters=[]}static getInstance(){return null==IORouterRegistry.instance&&(IORouterRegistry.instance=new IORouterRegistry),IORouterRegistry.instance}static registerSaveRouter(e){IORouterRegistry.getInstance().saveRouters.push(e)}static registerLoadRouter(e){IORouterRegistry.getInstance().loadRouters.push(e)}static getSaveHandlers(e){return IORouterRegistry.getHandlers(e,"save")}static getLoadHandlers(e,t){return IORouterRegistry.getHandlers(e,"load",t)}static getHandlers(e,t,a){const n=[];return("load"===t?IORouterRegistry.getInstance().loadRouters:IORouterRegistry.getInstance().saveRouters).forEach((t=>{const r=t(e,a);null!==r&&n.push(r)})),n}}const DATABASE_NAME="tensorflowjs",DATABASE_VERSION=1,MODEL_STORE_NAME="models_store",INFO_STORE_NAME="model_info_store";function getIndexedDBFactory(){if(!env().getBool("IS_BROWSER"))throw new Error("Failed to obtain IndexedDB factory because the current environmentis not a web browser.");const e="undefined"==typeof window?self:window,t=e.indexedDB||e.mozIndexedDB||e.webkitIndexedDB||e.msIndexedDB||e.shimIndexedDB;if(null==t)throw new Error("The current browser does not appear to support IndexedDB.");return t}function setUpDatabase(e){const t=e.result;t.createObjectStore(MODEL_STORE_NAME,{keyPath:"modelPath"}),t.createObjectStore(INFO_STORE_NAME,{keyPath:"modelPath"})}class BrowserIndexedDB{constructor(e){if(this.indexedDB=getIndexedDBFactory(),null==e||!e)throw new Error("For IndexedDB, modelPath must not be null, undefined or empty.");this.modelPath=e}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");return this.databaseAction(this.modelPath,e)}async load(){return this.databaseAction(this.modelPath)}databaseAction(e,t){return new Promise(((e,a)=>{const n=this.indexedDB.open(DATABASE_NAME,1);n.onupgradeneeded=()=>setUpDatabase(n),n.onsuccess=()=>{const r=n.result;if(null==t){const t=r.transaction(MODEL_STORE_NAME,"readonly"),n=t.objectStore(MODEL_STORE_NAME).get(this.modelPath);n.onsuccess=()=>{if(null==n.result)return r.close(),a(new Error(`Cannot find model with path '${this.modelPath}' in IndexedDB.`));e(n.result.modelArtifacts)},n.onerror=e=>(r.close(),a(n.error)),t.oncomplete=()=>r.close()}else{const n=getModelArtifactsInfoForJSON(t),o=r.transaction(INFO_STORE_NAME,"readwrite");let i,s,l=o.objectStore(INFO_STORE_NAME);try{i=l.put({modelPath:this.modelPath,modelArtifactsInfo:n})}catch(e){return a(e)}i.onsuccess=()=>{s=r.transaction(MODEL_STORE_NAME,"readwrite");const i=s.objectStore(MODEL_STORE_NAME);let c;try{c=i.put({modelPath:this.modelPath,modelArtifacts:t,modelArtifactsInfo:n})}catch(e){return a(e)}c.onsuccess=()=>e({modelArtifactsInfo:n}),c.onerror=e=>{l=o.objectStore(INFO_STORE_NAME);const t=l.delete(this.modelPath);t.onsuccess=()=>(r.close(),a(c.error)),t.onerror=e=>(r.close(),a(c.error))}},i.onerror=e=>(r.close(),a(i.error)),o.oncomplete=()=>{null==s?r.close():s.oncomplete=()=>r.close()}}},n.onerror=e=>a(n.error)}))}}BrowserIndexedDB.URL_SCHEME="indexeddb://";const indexedDBRouter=e=>env().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(BrowserIndexedDB.URL_SCHEME)?browserIndexedDB(e.slice(BrowserIndexedDB.URL_SCHEME.length)):null;function browserIndexedDB(e){return new BrowserIndexedDB(e)}function maybeStripScheme$1(e){return e.startsWith(BrowserIndexedDB.URL_SCHEME)?e.slice(BrowserIndexedDB.URL_SCHEME.length):e}IORouterRegistry.registerSaveRouter(indexedDBRouter),IORouterRegistry.registerLoadRouter(indexedDBRouter);class BrowserIndexedDBManager{constructor(){this.indexedDB=getIndexedDBFactory()}async listModels(){return new Promise(((e,t)=>{const a=this.indexedDB.open(DATABASE_NAME,1);a.onupgradeneeded=()=>setUpDatabase(a),a.onsuccess=()=>{const n=a.result,r=n.transaction(INFO_STORE_NAME,"readonly"),o=r.objectStore(INFO_STORE_NAME).getAll();o.onsuccess=()=>{const t={};for(const e of o.result)t[e.modelPath]=e.modelArtifactsInfo;e(t)},o.onerror=e=>(n.close(),t(o.error)),r.oncomplete=()=>n.close()},a.onerror=e=>t(a.error)}))}async removeModel(e){return e=maybeStripScheme$1(e),new Promise(((t,a)=>{const n=this.indexedDB.open(DATABASE_NAME,1);n.onupgradeneeded=()=>setUpDatabase(n),n.onsuccess=()=>{const r=n.result,o=r.transaction(INFO_STORE_NAME,"readwrite"),i=o.objectStore(INFO_STORE_NAME),s=i.get(e);let l;s.onsuccess=()=>{if(null==s.result)return r.close(),a(new Error(`Cannot find model with path '${e}' in IndexedDB.`));{const n=i.delete(e),o=()=>{l=r.transaction(MODEL_STORE_NAME,"readwrite");const n=l.objectStore(MODEL_STORE_NAME).delete(e);n.onsuccess=()=>t(s.result.modelArtifactsInfo),n.onerror=e=>a(s.error)};n.onsuccess=o,n.onerror=e=>(o(),r.close(),a(s.error))}},s.onerror=e=>(r.close(),a(s.error)),o.oncomplete=()=>{null==l?r.close():l.oncomplete=()=>r.close()}},n.onerror=e=>a(n.error)}))}}const PATH_SEPARATOR="/",PATH_PREFIX="tensorflowjs_models",INFO_SUFFIX="info",MODEL_TOPOLOGY_SUFFIX="model_topology",WEIGHT_SPECS_SUFFIX="weight_specs",WEIGHT_DATA_SUFFIX="weight_data",MODEL_METADATA_SUFFIX="model_metadata";function getModelKeys(e){return{info:[PATH_PREFIX,e,INFO_SUFFIX].join(PATH_SEPARATOR),topology:[PATH_PREFIX,e,MODEL_TOPOLOGY_SUFFIX].join(PATH_SEPARATOR),weightSpecs:[PATH_PREFIX,e,WEIGHT_SPECS_SUFFIX].join(PATH_SEPARATOR),weightData:[PATH_PREFIX,e,WEIGHT_DATA_SUFFIX].join(PATH_SEPARATOR),modelMetadata:[PATH_PREFIX,e,MODEL_METADATA_SUFFIX].join(PATH_SEPARATOR)}}function removeItems(e){for(const t of Object.values(e))window.localStorage.removeItem(t)}function getModelPathFromKey(e){const t=e.split(PATH_SEPARATOR);if(t.length<3)throw new Error(`Invalid key format: ${e}`);return t.slice(1,t.length-1).join(PATH_SEPARATOR)}function maybeStripScheme(e){return e.startsWith(BrowserLocalStorage.URL_SCHEME)?e.slice(BrowserLocalStorage.URL_SCHEME.length):e}class BrowserLocalStorage{constructor(e){if(!env().getBool("IS_BROWSER")||"undefined"==typeof window||void 0===window.localStorage)throw new Error("The current environment does not support local storage.");if(this.LS=window.localStorage,null==e||!e)throw new Error("For local storage, modelPath must not be null, undefined or empty.");this.modelPath=e,this.keys=getModelKeys(this.modelPath)}async save(e){if(e.modelTopology instanceof ArrayBuffer)throw new Error("BrowserLocalStorage.save() does not support saving model topology in binary formats yet.");{const t=JSON.stringify(e.modelTopology),a=JSON.stringify(e.weightSpecs),n=getModelArtifactsInfoForJSON(e),r=CompositeArrayBuffer.join(e.weightData);try{this.LS.setItem(this.keys.info,JSON.stringify(n)),this.LS.setItem(this.keys.topology,t),this.LS.setItem(this.keys.weightSpecs,a),this.LS.setItem(this.keys.weightData,arrayBufferToBase64String(r));return this.LS.setItem(this.keys.modelMetadata,JSON.stringify({format:e.format,generatedBy:e.generatedBy,convertedBy:e.convertedBy,signature:null!=e.signature?e.signature:void 0,userDefinedMetadata:null!=e.userDefinedMetadata?e.userDefinedMetadata:void 0,modelInitializer:null!=e.modelInitializer?e.modelInitializer:void 0,initializerSignature:null!=e.initializerSignature?e.initializerSignature:void 0,trainingConfig:null!=e.trainingConfig?e.trainingConfig:void 0})),{modelArtifactsInfo:n}}catch(e){throw removeItems(this.keys),new Error(`Failed to save model '${this.modelPath}' to local storage: size quota being exceeded is a possible cause of this failure: modelTopologyBytes=${n.modelTopologyBytes}, weightSpecsBytes=${n.weightSpecsBytes}, weightDataBytes=${n.weightDataBytes}.`)}}}async load(){const e=JSON.parse(this.LS.getItem(this.keys.info));if(null==e)throw new Error(`In local storage, there is no model with name '${this.modelPath}'`);if("JSON"!==e.modelTopologyType)throw new Error("BrowserLocalStorage does not support loading non-JSON model topology yet.");const t={},a=JSON.parse(this.LS.getItem(this.keys.topology));if(null==a)throw new Error(`In local storage, the topology of model '${this.modelPath}' is missing.`);t.modelTopology=a;const n=JSON.parse(this.LS.getItem(this.keys.weightSpecs));if(null==n)throw new Error(`In local storage, the weight specs of model '${this.modelPath}' are missing.`);t.weightSpecs=n;const r=this.LS.getItem(this.keys.modelMetadata);if(null!=r){const e=JSON.parse(r);t.format=e.format,t.generatedBy=e.generatedBy,t.convertedBy=e.convertedBy,null!=e.signature&&(t.signature=e.signature),null!=e.userDefinedMetadata&&(t.userDefinedMetadata=e.userDefinedMetadata),null!=e.modelInitializer&&(t.modelInitializer=e.modelInitializer),null!=e.initializerSignature&&(t.initializerSignature=e.initializerSignature),null!=e.trainingConfig&&(t.trainingConfig=e.trainingConfig)}const o=this.LS.getItem(this.keys.weightData);if(null==o)throw new Error(`In local storage, the binary weight values of model '${this.modelPath}' are missing.`);return t.weightData=base64StringToArrayBuffer(o),t}}BrowserLocalStorage.URL_SCHEME="localstorage://";const localStorageRouter=e=>env().getBool("IS_BROWSER")&&!Array.isArray(e)&&e.startsWith(BrowserLocalStorage.URL_SCHEME)?browserLocalStorage(e.slice(BrowserLocalStorage.URL_SCHEME.length)):null;function browserLocalStorage(e){return new BrowserLocalStorage(e)}IORouterRegistry.registerSaveRouter(localStorageRouter),IORouterRegistry.registerLoadRouter(localStorageRouter);class BrowserLocalStorageManager{constructor(){assert(env().getBool("IS_BROWSER"),(()=>"Current environment is not a web browser")),assert("undefined"==typeof window||void 0!==window.localStorage,(()=>"Current browser does not appear to support localStorage")),this.LS=window.localStorage}async listModels(){const e={},t=PATH_PREFIX+PATH_SEPARATOR,a=PATH_SEPARATOR+INFO_SUFFIX;for(let n=0;n<this.LS.length;++n){const r=this.LS.key(n);if(r.startsWith(t)&&r.endsWith(a)){e[getModelPathFromKey(r)]=JSON.parse(this.LS.getItem(r))}}return e}async removeModel(e){const t=getModelKeys(e=maybeStripScheme(e));if(null==this.LS.getItem(t.info))throw new Error(`Cannot find model at path '${e}'`);const a=JSON.parse(this.LS.getItem(t.info));return removeItems(t),a}}const URL_SCHEME_SUFFIX="://";class ModelStoreManagerRegistry{constructor(){this.managers={}}static getInstance(){return null==ModelStoreManagerRegistry.instance&&(ModelStoreManagerRegistry.instance=new ModelStoreManagerRegistry),ModelStoreManagerRegistry.instance}static registerManager(e,t){assert(null!=e,(()=>"scheme must not be undefined or null.")),e.endsWith("://")&&(e=e.slice(0,e.indexOf("://"))),assert(e.length>0,(()=>"scheme must not be an empty string."));const a=ModelStoreManagerRegistry.getInstance();assert(null==a.managers[e],(()=>`A model store manager is already registered for scheme '${e}'.`)),a.managers[e]=t}static getManager(e){const t=ModelStoreManagerRegistry.getInstance().managers[e];if(null==t)throw new Error(`Cannot find model manager for scheme '${e}'`);return t}static getSchemes(){return Object.keys(ModelStoreManagerRegistry.getInstance().managers)}}class PlatformBrowser{constructor(){this.messageName="setTimeoutCustom",this.functionRefs=[],this.handledMessageCount=0,this.hasEventListener=!1}fetch(e,t){return fetch(e,t)}now(){return performance.now()}encode(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error(`Browser's encoder only supports utf-8, but got ${t}`);return null==this.textEncoder&&(this.textEncoder=new TextEncoder),this.textEncoder.encode(e)}decode(e,t){return new TextDecoder(t).decode(e)}setTimeoutCustom(e,t){"undefined"!=typeof window&&env().getBool("USE_SETTIMEOUTCUSTOM")?(this.functionRefs.push(e),setTimeout((()=>{window.postMessage({name:this.messageName,index:this.functionRefs.length-1},"*")}),t),this.hasEventListener||(this.hasEventListener=!0,window.addEventListener("message",(e=>{if(e.source===window&&e.data.name===this.messageName){e.stopPropagation();(0,this.functionRefs[e.data.index])(),this.handledMessageCount++,this.handledMessageCount===this.functionRefs.length&&(this.functionRefs=[],this.handledMessageCount=0)}}),!0))):setTimeout(e,t)}isTypedArray(e){return isTypedArrayBrowser(e)}}if(env().get("IS_BROWSER")){env().setPlatform("browser",new PlatformBrowser);try{ModelStoreManagerRegistry.registerManager(BrowserLocalStorage.URL_SCHEME,new BrowserLocalStorageManager)}catch(e){}try{ModelStoreManagerRegistry.registerManager(BrowserIndexedDB.URL_SCHEME,new BrowserIndexedDBManager)}catch(e){}}const getNodeFetch={importFetch:()=>require("node-fetch")};let systemFetch;class PlatformNode{constructor(){this.util=require("util"),this.textEncoder=new this.util.TextEncoder}fetch(e,t){return null!=env().global.fetch?env().global.fetch(e,t):(null==systemFetch&&(systemFetch=getNodeFetch.importFetch()),systemFetch(e,t))}now(){const e=process.hrtime();return 1e3*e[0]+e[1]/1e6}encode(e,t){if("utf-8"!==t&&"utf8"!==t)throw new Error(`Node built-in encoder only supports utf-8, but got ${t}`);return this.textEncoder.encode(e)}decode(e,t){return 0===e.length?"":new this.util.TextDecoder(t).decode(e)}isTypedArray(e){return this.util.types.isFloat32Array(e)||this.util.types.isInt32Array(e)||this.util.types.isUint8Array(e)||this.util.types.isUint8ClampedArray(e)}}function buffer(e,t="float32",a){return t=t||"float32",assertNonNegativeIntegerDimensions(e),new TensorBuffer(e,t,a)}function cast_(e,t){const a=convertToTensor(e,"x","cast");if(!isValidDtype(t))throw new Error(`Failed to cast to unknown dtype ${t}`);if("string"===t&&"string"!==a.dtype||"string"!==t&&"string"===a.dtype)throw new Error("Only strings can be casted to strings");return ENGINE.runKernel(Cast,{x:a},{dtype:t})}env().get("IS_NODE")&&!env().get("IS_BROWSER")&&env().setPlatform("node",new PlatformNode);const cast=op({cast_:cast_});function clone_(e){const t=convertToTensor(e,"x","clone","string_or_numeric");return ENGINE.runKernel(Identity,{x:t})}const clone=op({clone_:clone_});function print(e,t=!1){console.log(e.toString(t))}getOrMakeEngine();const opHandler={buffer:buffer,cast:cast,clone:clone,print:print};function tidy(e,t){return ENGINE.tidy(e,t)}function dispose(e){getTensorsInContainer(e).forEach((e=>e.dispose()))}function keep(e){return ENGINE.keep(e)}function add_(e,t){let a=convertToTensor(e,"a","add"),n=convertToTensor(t,"b","add");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(Add,{a:a,b:n})}setOpHandler(opHandler);const add=op({add_:add_});function floorDiv_(e,t){let a=convertToTensor(e,"a","floorDiv"),n=convertToTensor(t,"b","floorDiv");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(FloorDiv,{a:a,b:n})}const floorDiv=op({floorDiv_:floorDiv_});function div_(e,t){let a=convertToTensor(e,"a","div"),n=convertToTensor(t,"b","div");if([a,n]=makeTypesMatch(a,n),"int32"===a.dtype&&"int32"===n.dtype)return floorDiv(a,n);return ENGINE.runKernel(RealDiv,{a:a,b:n},{})}const div=op({div_:div_});function mul_(e,t){let a=convertToTensor(e,"a","mul"),n=convertToTensor(t,"b","mul");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(Multiply,{a:a,b:n})}const mul=op({mul_:mul_});function abs_(e){const t=convertToTensor(e,"x","abs");if("complex64"===t.dtype){return ENGINE.runKernel(ComplexAbs,{x:t})}return ENGINE.runKernel(Abs,{x:t})}const abs=op({abs_:abs_});function fill(e,t,a){assertNonNegativeIntegerDimensions(e),a=a||inferDtype(t);return ENGINE.runKernel(Fill,{},{shape:e,value:t,dtype:a})}function assertAndGetBroadcastShape(e,t){const a=Math.max(e.length,t.length),n=new Array(a);for(let r=0;r<a;r++){let o=e[e.length-r-1];null==o&&(o=1);let i=t[t.length-r-1];if(null==i&&(i=1),1===o)n[a-r-1]=i;else if(1===i)n[a-r-1]=o;else{if(o!==i){throw Error(`Operands could not be broadcast together with shapes ${e} and ${t}.`)}n[a-r-1]=o}}return n}function zerosLike_(e){const t=convertToTensor(e,"x","zerosLike");return ENGINE.runKernel(ZerosLike,{x:t})}const zerosLike=op({zerosLike_:zerosLike_});function pow_(e,t){let a=convertToTensor(e,"base","pow"),n=convertToTensor(t,"exp","pow");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(Pow,{a:a,b:n})}const pow=op({pow_:pow_});function scalar(e,t){if((isTypedArray(e)&&"string"!==t||Array.isArray(e))&&"complex64"!==t)throw new Error("Error creating a new Scalar: value must be a primitive (number|boolean|string)");if("string"===t&&isTypedArray(e)&&!(e instanceof Uint8Array))throw new Error("When making a scalar from encoded string, the value must be `Uint8Array`.");return makeTensor(e,[],[],t)}function sqrt_(e){const t=convertToTensor(e,"x","sqrt","float32");return ENGINE.runKernel(Sqrt,{x:t})}const sqrt=op({sqrt_:sqrt_});function square_(e){const t=convertToTensor(e,"x","square");return ENGINE.runKernel("Square",{x:t},{})}const square=op({square_:square_});function variableGrads(e,t){assert(isFunction(e),(()=>"The f passed in variableGrads(f) must be a function")),assert(null==t||Array.isArray(t)&&t.every((e=>e instanceof Variable)),(()=>"The varList passed in variableGrads(f, varList) must be an array of variables"));const a=null!=t;if(!a){t=[];for(const e in ENGINE.registeredVariables)t.push(ENGINE.registeredVariables[e])}const n=a?t.filter((e=>!e.trainable)):null,r=t.length;assert((t=t.filter((e=>e.trainable))).length>0,(()=>`variableGrads() expects at least one of the input variables to be trainable, but none of the ${r} variables is trainable.`));const{value:o,grads:i}=ENGINE.gradients(e,t,null,!0);assert(i.some((e=>null!=e)),(()=>"Cannot find a connection between any variable and the result of the loss function y=f(x). Please make sure the operations that use variables are inside the function f passed to minimize().")),assert(0===o.rank,(()=>`The f passed in variableGrads(f) must return a scalar, but it returned a rank-${o.rank} tensor`));const s={};return t.forEach(((e,t)=>{null!=i[t]&&(s[e.name]=i[t])})),null!=n&&n.forEach((e=>s[e.name]=null)),{value:o,grads:s}}function sub_(e,t){let a=convertToTensor(e,"a","sub"),n=convertToTensor(t,"b","sub");[a,n]=makeTypesMatch(a,n);return ENGINE.runKernel(Sub,{a:a,b:n})}const sub=op({sub_:sub_});function maximum_(e,t){let a=convertToTensor(e,"a","maximum"),n=convertToTensor(t,"b","maximum");[a,n]=makeTypesMatch(a,n),"bool"===a.dtype&&(a=cast(a,"int32"),n=cast(n,"int32")),assertAndGetBroadcastShape(a.shape,n.shape);return ENGINE.runKernel(Maximum,{a:a,b:n})}const maximum=op({maximum_:maximum_});class Serializable{getClassName(){return this.constructor.className}static fromConfig(e,t){return new e(t)}}class SerializationMap{constructor(){this.classNameMap={}}static getMap(){return null==SerializationMap.instance&&(SerializationMap.instance=new SerializationMap),SerializationMap.instance}static register(e){SerializationMap.getMap().classNameMap[e.className]=[e,e.fromConfig]}}function registerClass(e){assert(null!=e.className,(()=>"Class being registered does not have the static className property defined.")),assert("string"==typeof e.className,(()=>"className is required to be a string, but got type "+typeof e.className)),assert(e.className.length>0,(()=>"Class being registered has an empty-string as its className, which is disallowed.")),SerializationMap.register(e)}class Optimizer extends Serializable{minimize(e,t=!1,a){const{value:n,grads:r}=this.computeGradients(e,a);if(null!=a){const e=a.map((e=>({name:e.name,tensor:r[e.name]})));this.applyGradients(e)}else this.applyGradients(r);return dispose(r),t?n:(n.dispose(),null)}get iterations(){return null==this.iterations_&&(this.iterations_=0),this.iterations_}incrementIterations(){this.iterations_=this.iterations+1}computeGradients(e,t){return variableGrads(e,t)}dispose(){null!=this.iterations_&&dispose(this.iterations_)}async saveIterations(){return null==this.iterations_&&(this.iterations_=0),{name:"iter",tensor:scalar(this.iterations_,"int32")}}async getWeights(){throw new Error("getWeights() is not implemented for this optimizer yet.")}async setWeights(e){throw new Error(`setWeights() is not implemented for this optimizer class ${this.getClassName()}`)}async extractIterations(e){return this.iterations_=(await e[0].tensor.data())[0],e.slice(1)}}Object.defineProperty(Optimizer,Symbol.hasInstance,{value:e=>null!=e.minimize&&null!=e.computeGradients&&null!=e.applyGradients});class AdadeltaOptimizer extends Optimizer{static get className(){return"Adadelta"}constructor(e,t,a=null){super(),this.learningRate=e,this.rho=t,this.epsilon=a,this.accumulatedGrads=[],this.accumulatedUpdates=[],null==a&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=ENGINE.registeredVariables[t];null==this.accumulatedGrads[a]&&(this.accumulatedGrads[a]={originalName:`${t}/accum_grad`,variable:tidy((()=>zerosLike(n).variable(false)))}),null==this.accumulatedUpdates[a]&&(this.accumulatedUpdates[a]={originalName:`${t}/accum_var`,variable:tidy((()=>zerosLike(n).variable(false)))});const r=Array.isArray(e)?e[a].tensor:e[t];if(null==r)return;const o=this.accumulatedGrads[a].variable,i=this.accumulatedUpdates[a].variable;tidy((()=>{const e=add(mul(o,this.rho),mul(square(r),1-this.rho)),t=mul(div(sqrt(add(i,this.epsilon)),sqrt(add(o,this.epsilon))),r),a=add(mul(i,this.rho),mul(square(t),1-this.rho));o.assign(e),i.assign(a);const s=add(mul(t,-this.learningRate),n);n.assign(s)}))})),this.incrementIterations()}dispose(){null!=this.accumulatedUpdates&&(dispose(this.accumulatedGrads.map((e=>e.variable))),dispose(this.accumulatedUpdates.map((e=>e.variable))))}async getWeights(){const e=[...this.accumulatedGrads,...this.accumulatedUpdates];return[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){const t=(e=await this.extractIterations(e)).length/2;this.accumulatedGrads=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)}))),this.accumulatedUpdates=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,rho:this.rho,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.rho,t.epsilon)}}class AdagradOptimizer extends Optimizer{static get className(){return"Adagrad"}constructor(e,t=.1){super(),this.learningRate=e,this.initialAccumulatorValue=t,this.accumulatedGrads=[]}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=ENGINE.registeredVariables[t];if(null==this.accumulatedGrads[a]){const e=!1;this.accumulatedGrads[a]={originalName:`${t}/accumulator`,variable:tidy((()=>fill(n.shape,this.initialAccumulatorValue).variable(e)))}}const r=Array.isArray(e)?e[a].tensor:e[t];if(null==r)return;const o=this.accumulatedGrads[a].variable;tidy((()=>{const e=add(o,square(r));o.assign(e);const t=add(mul(div(r,sqrt(add(e,ENGINE.backend.epsilon()))),-this.learningRate),n);n.assign(t)}))})),this.incrementIterations()}dispose(){null!=this.accumulatedGrads&&dispose(this.accumulatedGrads.map((e=>e.variable)))}async getWeights(){return[await this.saveIterations()].concat(this.accumulatedGrads.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e);this.accumulatedGrads=e.map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,initialAccumulatorValue:this.initialAccumulatorValue}}static fromConfig(e,t){return new e(t.learningRate,t.initialAccumulatorValue)}}class AdamOptimizer extends Optimizer{static get className(){return"Adam"}constructor(e,t,a,n=null){super(),this.learningRate=e,this.beta1=t,this.beta2=a,this.epsilon=n,this.accumulatedFirstMoment=[],this.accumulatedSecondMoment=[],tidy((()=>{this.accBeta1=scalar(t).variable(),this.accBeta2=scalar(a).variable()})),null==n&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);tidy((()=>{const a=sub(1,this.accBeta1),n=sub(1,this.accBeta2);t.forEach(((t,r)=>{const o=ENGINE.registeredVariables[t];null==this.accumulatedFirstMoment[r]&&(this.accumulatedFirstMoment[r]={originalName:`${t}/m`,variable:tidy((()=>zerosLike(o).variable(false)))}),null==this.accumulatedSecondMoment[r]&&(this.accumulatedSecondMoment[r]={originalName:`${t}/v`,variable:tidy((()=>zerosLike(o).variable(false)))});const i=Array.isArray(e)?e[r].tensor:e[t];if(null==i)return;const s=this.accumulatedFirstMoment[r].variable,l=this.accumulatedSecondMoment[r].variable,c=add(mul(s,this.beta1),mul(i,1-this.beta1)),u=add(mul(l,this.beta2),mul(square(i),1-this.beta2)),d=div(c,a),f=div(u,n);s.assign(c),l.assign(u);const m=add(mul(div(d,add(sqrt(f),this.epsilon)),-this.learningRate),o);o.assign(m)})),this.accBeta1.assign(mul(this.accBeta1,this.beta1)),this.accBeta2.assign(mul(this.accBeta2,this.beta2))})),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.accBeta2.dispose(),null!=this.accumulatedFirstMoment&&dispose(this.accumulatedFirstMoment.map((e=>e.variable))),null!=this.accumulatedSecondMoment&&dispose(this.accumulatedSecondMoment.map((e=>e.variable)))}async getWeights(){const e=[...this.accumulatedFirstMoment,...this.accumulatedSecondMoment];return[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e),tidy((()=>{this.accBeta1.assign(pow(this.beta1,this.iterations_+1)),this.accBeta2.assign(pow(this.beta2,this.iterations_+1))}));const t=e.length/2;this.accumulatedFirstMoment=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)}))),this.accumulatedSecondMoment=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon)}}class AdamaxOptimizer extends Optimizer{static get className(){return"Adamax"}constructor(e,t,a,n=null,r=0){super(),this.learningRate=e,this.beta1=t,this.beta2=a,this.epsilon=n,this.decay=r,this.accumulatedFirstMoment=[],this.accumulatedWeightedInfNorm=[],tidy((()=>{this.iteration=scalar(0).variable(),this.accBeta1=scalar(t).variable()})),null==n&&(this.epsilon=ENGINE.backend.epsilon())}applyGradients(e){const t=Array.isArray(e)?e.map((e=>e.name)):Object.keys(e);tidy((()=>{const a=sub(1,this.accBeta1),n=div(-this.learningRate,add(mul(this.iteration,this.decay),1));t.forEach(((t,r)=>{const o=ENGINE.registeredVariables[t];null==this.accumulatedFirstMoment[r]&&(this.accumulatedFirstMoment[r]={originalName:`${t}/m`,variable:zerosLike(o).variable(false)}),null==this.accumulatedWeightedInfNorm[r]&&(this.accumulatedWeightedInfNorm[r]={originalName:`${t}/v`,variable:zerosLike(o).variable(false)});const i=Array.isArray(e)?e[r].tensor:e[t];if(null==i)return;const s=this.accumulatedFirstMoment[r].variable,l=this.accumulatedWeightedInfNorm[r].variable,c=add(mul(s,this.beta1),mul(i,1-this.beta1)),u=mul(l,this.beta2),d=abs(i),f=maximum(u,d);s.assign(c),l.assign(f);const m=add(mul(div(n,a),div(c,add(f,this.epsilon))),o);o.assign(m)})),this.iteration.assign(add(this.iteration,1)),this.accBeta1.assign(mul(this.accBeta1,this.beta1))})),this.incrementIterations()}dispose(){this.accBeta1.dispose(),this.iteration.dispose(),null!=this.accumulatedFirstMoment&&dispose(this.accumulatedFirstMoment.map((e=>e.variable))),null!=this.accumulatedWeightedInfNorm&&dispose(this.accumulatedWeightedInfNorm.map((e=>e.variable)))}async getWeights(){throw new Error("getWeights() is not implemented for Adamax yet.")}async setWeights(e){throw new Error("setWeights() is not implemented for Adamax yet.")}getConfig(){return{learningRate:this.learningRate,beta1:this.beta1,beta2:this.beta2,epsilon:this.epsilon,decay:this.decay}}static fromConfig(e,t){return new e(t.learningRate,t.beta1,t.beta2,t.epsilon,t.decay)}}class SGDOptimizer extends Optimizer{static get className(){return"SGD"}constructor(e){super(),this.learningRate=e,this.setLearningRate(e)}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=Array.isArray(e)?e[a].tensor:e[t];if(null==n)return;const r=ENGINE.registeredVariables[t];tidy((()=>{const e=add(mul(this.c,n),r);r.assign(e)}))})),this.incrementIterations()}setLearningRate(e){this.learningRate=e,null!=this.c&&this.c.dispose(),this.c=keep(scalar(-e))}dispose(){this.c.dispose()}async getWeights(){return[await this.saveIterations()]}async setWeights(e){if(0!==(e=await this.extractIterations(e)).length)throw new Error("SGD optimizer does not have settable weights.")}getConfig(){return{learningRate:this.learningRate}}static fromConfig(e,t){return new e(t.learningRate)}}class MomentumOptimizer extends SGDOptimizer{static get className(){return"Momentum"}constructor(e,t,a=!1){super(e),this.learningRate=e,this.momentum=t,this.useNesterov=a,this.accumulations=[],this.m=scalar(this.momentum)}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=ENGINE.registeredVariables[t];if(null==this.accumulations[a]){const e=!1;this.accumulations[a]={originalName:`${t}/momentum`,variable:tidy((()=>zerosLike(n).variable(e)))}}const r=this.accumulations[a].variable,o=Array.isArray(e)?e[a].tensor:e[t];null!=o&&tidy((()=>{let e;const t=add(mul(this.m,r),o);e=add(mul(this.c,this.useNesterov?add(o,mul(t,this.m)):t),n),r.assign(t),n.assign(e)}))})),this.incrementIterations()}dispose(){this.m.dispose(),null!=this.accumulations&&dispose(this.accumulations.map((e=>e.variable)))}setMomentum(e){this.momentum=e}async getWeights(){return[await this.saveIterations()].concat(this.accumulations.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e);this.accumulations=e.map((e=>({originalName:e.name,variable:e.tensor.variable(false)})))}getConfig(){return{learningRate:this.learningRate,momentum:this.momentum,useNesterov:this.useNesterov}}static fromConfig(e,t){return new e(t.learningRate,t.momentum,t.useNesterov)}}class RMSPropOptimizer extends Optimizer{static get className(){return"RMSProp"}constructor(e,t=.9,a=0,n=null,r=!1){if(super(),this.learningRate=e,this.decay=t,this.momentum=a,this.epsilon=n,this.accumulatedMeanSquares=[],this.accumulatedMoments=[],this.accumulatedMeanGrads=[],this.centered=r,null==n&&(this.epsilon=ENGINE.backend.epsilon()),null==e)throw new Error("learningRate for RMSPropOptimizer must be defined.")}applyGradients(e){(Array.isArray(e)?e.map((e=>e.name)):Object.keys(e)).forEach(((t,a)=>{const n=ENGINE.registeredVariables[t],r=!1;null==this.accumulatedMeanSquares[a]&&(this.accumulatedMeanSquares[a]={originalName:`${t}/rms`,variable:tidy((()=>zerosLike(n).variable(r)))}),null==this.accumulatedMoments[a]&&(this.accumulatedMoments[a]={originalName:`${t}/momentum`,variable:tidy((()=>zerosLike(n).variable(r)))}),null==this.accumulatedMeanGrads[a]&&this.centered&&(this.accumulatedMeanGrads[a]={originalName:`${t}/mg`,variable:tidy((()=>zerosLike(n).variable(r)))});const o=Array.isArray(e)?e[a].tensor:e[t];if(null==o)return;const i=this.accumulatedMeanSquares[a].variable,s=this.accumulatedMoments[a].variable;tidy((()=>{const e=add(mul(i,this.decay),mul(square(o),1-this.decay));if(this.centered){const t=this.accumulatedMeanGrads[a].variable,r=add(mul(t,this.decay),mul(o,1-this.decay)),l=div(mul(o,this.learningRate),sqrt(sub(e,add(square(r),this.epsilon)))),c=add(mul(s,this.momentum),l);i.assign(e),t.assign(r),s.assign(c);const u=sub(n,c);n.assign(u)}else{const e=add(mul(i,this.decay),mul(square(o),1-this.decay)),t=add(mul(s,this.momentum),div(mul(o,this.learningRate),sqrt(add(e,this.epsilon))));i.assign(e),s.assign(t);const a=sub(n,t);n.assign(a)}}))})),this.incrementIterations()}dispose(){null!=this.accumulatedMeanSquares&&dispose(this.accumulatedMeanSquares.map((e=>e.variable))),null!=this.accumulatedMeanGrads&&this.centered&&dispose(this.accumulatedMeanGrads.map((e=>e.variable))),null!=this.accumulatedMoments&&dispose(this.accumulatedMoments.map((e=>e.variable)))}async getWeights(){const e=[...this.accumulatedMeanSquares,...this.accumulatedMoments];return this.centered&&e.push(...this.accumulatedMeanGrads),[await this.saveIterations()].concat(e.map((e=>({name:e.originalName,tensor:e.variable}))))}async setWeights(e){e=await this.extractIterations(e);const t=this.centered?e.length/3:e.length/2,a=!1;this.accumulatedMeanSquares=e.slice(0,t).map((e=>({originalName:e.name,variable:e.tensor.variable(a)}))),this.accumulatedMoments=e.slice(t,2*t).map((e=>({originalName:e.name,variable:e.tensor.variable(a)}))),this.centered&&(this.accumulatedMeanGrads=e.slice(2*t,3*t).map((e=>({originalName:e.name,variable:e.tensor.variable(a)}))))}getConfig(){return{learningRate:this.learningRate,decay:this.decay,momentum:this.momentum,epsilon:this.epsilon,centered:this.centered}}static fromConfig(e,t){return new e(t.learningRate,t.decay,t.momentum,t.epsilon,t.centered)}}const OPTIMIZERS=[AdadeltaOptimizer,AdagradOptimizer,AdamOptimizer,AdamaxOptimizer,MomentumOptimizer,RMSPropOptimizer,SGDOptimizer];function registerOptimizers(){for(const e of OPTIMIZERS)registerClass(e)}registerOptimizers();const contexts={},WEBGL_ATTRIBUTES={alpha:!1,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0};function clearWebGLContext(e){delete contexts[e]}function getWebGLContext(e,t){if(!(e in contexts)||null!=t){const a=getWebGLRenderingContext(e,t);if(null===a)return console.log("Could not get context for WebGL version",e),null;contexts[e]=a}const a=contexts[e];return null==a||a.isContextLost()?(delete contexts[e],getWebGLContext(e)):(a.disable(a.DEPTH_TEST),a.disable(a.STENCIL_TEST),a.disable(a.BLEND),a.disable(a.DITHER),a.disable(a.POLYGON_OFFSET_FILL),a.disable(a.SAMPLE_COVERAGE),a.enable(a.SCISSOR_TEST),a.enable(a.CULL_FACE),a.cullFace(a.BACK),contexts[e])}function createCanvas(e){if(env().getBool("IS_SAFARI")||"undefined"==typeof OffscreenCanvas||2!==e){if("undefined"!=typeof document)return document.createElement("canvas");throw new Error("Cannot create a canvas in this context")}return new OffscreenCanvas(300,150)}function getWebGLRenderingContext(e,t){if(1!==e&&2!==e)throw new Error("Cannot get WebGL rendering context, WebGL is disabled.");const a=null==t?createCanvas(e):t;return a.addEventListener("webglcontextlost",(t=>{t.preventDefault(),delete contexts[e]}),!1),env().getBool("SOFTWARE_WEBGL_ENABLED")&&(WEBGL_ATTRIBUTES.failIfMajorPerformanceCaveat=!1),1===e?a.getContext("webgl",WEBGL_ATTRIBUTES)||a.getContext("experimental-webgl",WEBGL_ATTRIBUTES):a.getContext("webgl2",WEBGL_ATTRIBUTES)}var DEFAULT_CDN_URL="https://websdk-cdn-dev.idmission.com/assets";function getFrameDimensions(e){var t=e.width,a=e.height;return e instanceof HTMLVideoElement&&(t=e.videoWidth,a=e.videoHeight),[t,a]}var templateObject_1$9,InvisibleCanvas=styled__default.default.canvas(templateObject_1$9||(templateObject_1$9=tslib.__makeTemplateObject(["\n display: none;\n"],["\n display: none;\n"])));function drawToCanvas(e,t,a,n){if(e){var r=e.getContext("2d");if(r){if(!a||!n){var o=getFrameDimensions(t);a||(a=o[0]),n||(n=o[1])}e.width=a,e.height=n,r.drawImage(t,0,0,a,n)}}}function clearCanvas(e){if(e){var t=e.getContext("2d");t&&t.clearRect(0,0,e.width,e.height)}}function cropToShoulders(e,t,a,n){if(!e||!t)return"";var r=e.getContext("2d"),o=t.getContext("2d");if(!r||!o)throw new Error("could not get 2d context");e.width=a.width,e.height=a.height,r.putImageData(a,0,0);var i=n.box,s=i.width,l=.6*a.height-s,c=Math.max(0,i.xMin-l/2);isMobile()?(t.width=a.width,t.height=a.height,o.drawImage(e,0,0,t.width,t.height)):(t.width=s+l,t.height=a.height,o.drawImage(e,c,0,t.width,t.height,0,0,t.width,t.height));var u=t.toDataURL("image/jpeg",.92);return clearCanvas(e),clearCanvas(t),u}function cropToBoundingBox(e,t){var a=document.createElement("canvas"),n=a.getContext("2d");if(!n)throw new Error("could not get 2d context");var r=getFrameDimensions(e),o=r[0],i=r[1],s=t[0],l=t[1],c=t[2],u=t[3];return a.width=c*o,a.height=u*i,n.drawImage(e,s*o,l*i,c*o,u*i,0,0,c*o,u*i),a}var PREDICTION_POSITIONS={boxes:0,scores:7,labels:4},IdCaptureModelsContext=React.createContext({ready:!1,working:{current:!1},error:null,thresholds:{},setThresholds:function(){return null},makePrediction:function(){return null},onPredictionMade:function(){return null},detectionTime:0,focusPredictionTime:0,getBestFrame:function(){return Promise.resolve(null)},resetBestFrame:function(){return null}}),defaultDocumentDetectionModelUrl="".concat(DEFAULT_CDN_URL,"/models/documentdetection448/model.json"),defaultFocusModelUrl="".concat(DEFAULT_CDN_URL,"/models/focus/model.json"),IdCaptureModelsProvider=function(e){var t=e.children,a=e.documentDetectionModelUrl,n=e.focusModelUrl,r=e.logPredictions,o=void 0!==r&&r,i=React.useState(!1),s=i[0],l=i[1],c=React.useState(0),u=c[0],d=c[1],f=React.useState(0),m=f[0],p=f[1],g=React.useState(0),h=g[0],b=g[1],v=React.useState(0),_=v[0],y=v[1],R=React.useState(0),C=R[0],S=R[1],E=React.useRef(!1),T=React.useRef(),w=React.useRef(null),x=React.useState(0),I=x[0],k=x[1],D=React.useState(0),A=D[0],M=D[1],F=React.useState(null),B=F[0],O=F[1];React.useEffect((function(){l(!1);var e=a||defaultDocumentDetectionModelUrl,t=n||defaultFocusModelUrl;function r(){return tslib.__awaiter(this,void 0,void 0,(function(){return tslib.__generator(this,(function(a){switch(a.label){case 0:return tf__namespace.ENV.set("WEBGL_DELETE_TEXTURE_THRESHOLD",52428800),[4,tf__namespace.setBackend("webgl")];case 1:return a.sent(),[4,tf__namespace.ready()];case 2:return a.sent(),[4,Promise.all([loadDocumentDetectionModel(e),loadFocusModel(t)])];case 3:return a.sent(),[2]}}))}))}function o(){return tslib.__awaiter(this,void 0,void 0,(function(){var a;return tslib.__generator(this,(function(n){switch(n.label){case 0:return l(!1),unloadDocumentDetectionModel(),unloadFocusModel(),clearWebGLContext(2),(a=document.createElement("canvas").getContext("webgl2"))&&e&&t?(tf.setWebGLContext(2,a),disposeTfBackend(),[4,r()]):[3,2];case 1:n.sent(),l(!0),n.label=2;case 2:return[2]}}))}))}r().then((function(){l(!0)})).catch((function(e){O(e)}));var i=getWebGLContext(2).canvas;return i.addEventListener("webglcontextlost",o),function(){var e;null===(e=i.removeEventListener)||void 0===e||e.call(i,"webglcontextlost",o)}}),[a,n]);var N=React.useMemo((function(){return{document:u,passport:m,mrz:h,pdf417:_,focus:C}}),[u,C,h,m,_]),L=React.useCallback((function(e){e.document&&d(e.document),e.passport&&p(e.passport),e.mrz&&b(e.mrz),e.pdf417&&y(e.pdf417),e.focus&&S(e.focus)}),[]),P=React.useState(0),U=P[0],G=P[1],$=React.useRef(null),V=React.useRef(0),j=React.useCallback((function(e){E.current=!0,tslib.__awaiter(void 0,void 0,void 0,(function(){var t,a;return tslib.__generator(this,(function(n){switch(n.label){case 0:return documentDetectionModel&&focusModel&&w.current?[4,makePredictions(e,w.current,N,o)]:[2];case 1:return t=n.sent(),k(t.detectionTime),M(t.focusPredictionTime),V.current<=t.focusScore&&(V.current=t.focusScore,drawToCanvas($.current,e)),t.allZero&&G((function(e){return e+1})),null===(a=T.current)||void 0===a||a.call(T,t),E.current=!1,[2]}}))}))}),[o,N]);React.useEffect((function(){U>=2&&O(new Error("model is returning all zeroes"))}),[U]);var z=React.useCallback((function(e){T.current=e}),[]),q=React.useCallback((function(){return tslib.__awaiter(void 0,void 0,void 0,(function(){var e;return tslib.__generator(this,(function(t){switch(t.label){case 0:return $.current?(e=$.current.toDataURL("image/jpeg",.98),[4,fetch(e)]):[2,null];case 1:return[4,t.sent().blob()];case 2:return[2,t.sent()]}}))}))}),[]),W=React.useCallback((function(){V.current=0,clearCanvas($.current)}),[]),H=React.useMemo((function(){return{ready:s,working:E,thresholds:N,setThresholds:L,makePrediction:j,onPredictionMade:z,detectionTime:I,focusPredictionTime:A,getBestFrame:q,resetBestFrame:W,error:B}}),[I,A,q,B,j,z,s,W,L,N]);return React__default.default.createElement(IdCaptureModelsContext.Provider,{value:H},t,React__default.default.createElement(InvisibleCanvas,{ref:w}),React__default.default.createElement(InvisibleCanvas,{ref:$}))};function makePredictions(e,t,a,n){var r,o,i,s,l,c,u,d,f,m;return void 0===n&&(n=!1),tslib.__awaiter(this,void 0,void 0,(function(){var p,g,h,b,v,_,y,R,C,S,E,T,w,x,I,k,D,A,M,F,B,O,N,L,P,U,G,$,V,j;return tslib.__generator(this,(function(z){switch(z.label){case 0:return p=getFrameDimensions(e),g=p[0],h=p[1],drawToCanvas(t,e),[4,makeDocumentDetectionPredictions(e,n)];case 1:return b=z.sent(),_=b.scores,y=b.labels,R=b.time,C=(v=b.boxes).length>0&&!v.some((function(e){return e.some((function(e){return e>0}))})),S=applyNonMaxSuppression(v.map((function(e,t){return bboxToDetectedObjectUnscaled(e,_[t],y[t])}))),E=S.find((function(e){return"Document"===e.label})),T=S.find((function(e){return"Passport Page"===e.label})),w=null!==(r=null==E?void 0:E.score)&&void 0!==r?r:0,x=null!==(o=null==T?void 0:T.score)&&void 0!==o?o:0,I=x>=(null!==(i=a.passport)&&void 0!==i?i:0),k=w>x?E:T,A=(D=I?x:w)>=(null!==(s=a.document)&&void 0!==s?s:0),M=DocumentType.NONE,I?M=DocumentType.PASSPORT:A&&(M=DocumentType.ID_CARD),F=S.find((function(e){return"MRZ"===e.label})),B=null!==(l=null==F?void 0:F.score)&&void 0!==l?l:0,O=B>=(null!==(c=a.mrz)&&void 0!==c?c:0),N=S.find((function(e){return"PDF417"===e.label})),L=null!==(u=null==N?void 0:N.score)&&void 0!==u?u:0,P=L>=(null!==(d=a.pdf417)&&void 0!==d?d:0),U=null,G=0,$=0,V=!1,A?[4,makeFocusPrediction(e,null==k?void 0:k.bbox,n)]:[3,3];case 2:j=z.sent(),G=j[1],$=null!==(f=null==(U=j[0])?void 0:U[1])&&void 0!==f?f:0,V=$>=(null!==(m=a.focus)&&void 0!==m?m:0),z.label=3;case 3:return[2,{detectedObjects:S,detectionScore:D,detectionTime:R,detectionThresholdMet:A,detectedDocumentType:M,passportDetectionScore:x,passportDetectionThresholdMet:I,mrzDetectionScore:B,mrzDetectionThresholdMet:O,pdf417DetectionScore:L,pdf417DetectionThresholdMet:P,bestDocumentOrPassport:k,bestMrz:F,bestPdf417:N,focusScore:$,focusThresholdMet:V,focusPredictionTime:G,frameWidth:g,frameHeight:h,allZero:C}]}}))}))}function makeDocumentDetectionPredictions(e,t){return void 0===t&&(t=!1),tslib.__awaiter(this,void 0,void 0,(function(){var a,n,r,o,i,s,l,c,u,d,f,m,p,g,h,b,v;return tslib.__generator(this,(function(_){switch(_.label){case 0:if(!documentDetectionModel)throw new Error("document detection model is not loaded");a=new Date,_.label=1;case 1:return _.trys.push([1,7,,8]),n=tf__namespace.browser.fromPixels(e),t&&console.time("resize"),r=tf__namespace.image.resizeBilinear(n,[448,448]),t&&console.timeEnd("resize"),n.dispose(),t&&console.time("convert to int32"),o=tf__namespace.cast(r,"int32"),r.dispose(),l=(s=tf__namespace).tensor4d,u=(c=Array).from,[4,o.data()];case 2:return i=l.apply(s,[u.apply(c,[_.sent()]),[1,448,448,3]]),o.dispose(),d=tf__namespace.cast(i,"int32"),t&&console.timeEnd("convert to int32"),i.dispose(),t&&console.time("predictions"),[4,documentDetectionModel.executeAsync(d)];case 3:return f=_.sent(),t&&console.timeEnd("predictions"),d.dispose(),m=f,t&&console.log("predictions made!",m.map((function(e){return e.arraySync()}))),[4,m[PREDICTION_POSITIONS.boxes].array()];case 4:return p=_.sent()[0],[4,m[PREDICTION_POSITIONS.scores].array()];case 5:return g=_.sent()[0],[4,m[PREDICTION_POSITIONS.labels].array()];case 6:return h=(h=_.sent()[0]).map((function(e){return Math.round(e)})),tf__namespace.dispose(f),b=(new Date).getTime()-a.getTime(),[2,{boxes:p,scores:g,labels:h,time:b}];case 7:return v=_.sent(),console.error("caught error in makeDocumentDetectionPredictions",v),[2,{boxes:[],scores:[],labels:[],time:0}];case 8:return[2]}}))}))}function makeFocusPrediction(e,t,a){return void 0===a&&(a=!1),tslib.__awaiter(this,void 0,void 0,(function(){var n,r,o,i,s,l,c,u,d,f,m,p,g;return tslib.__generator(this,(function(h){switch(h.label){case 0:if(!focusModel)throw new Error("focus model is not loaded");n=new Date,h.label=1;case 1:return h.trys.push([1,5,,6]),r=void 0,r=tf__namespace.browser.fromPixels(t?cropToBoundingBox(e,t):e),o=tf__namespace.image.resizeBilinear(r,[448,448]),r.dispose(),i=tf__namespace.cast(o,"int32"),o.dispose(),c=(l=tf__namespace).tensor4d,d=(u=Array).from,[4,i.data()];case 2:return s=c.apply(l,[d.apply(u,[h.sent()]),[1,448,448,3]]),i.dispose(),f=tf__namespace.cast(s,"int32"),s.dispose(),a&&console.time("focus prediction"),[4,focusModel.predict(f)];case 3:return m=h.sent(),f.dispose(),[4,m.array()];case 4:return p=h.sent()[0],a&&console.timeEnd("focus prediction"),tf__namespace.dispose(m),g=(new Date).getTime()-n.getTime(),[2,[p,g]];case 5:return h.sent(),[2,[[0,0],0]];case 6:return[2]}}))}))}function applyNonMaxSuppression(e){var t={};return e.forEach((function(e,a){e&&(t[e.label]||(t[e.label]=[0,-1]),e.score>t[e.label][0]&&(t[e.label]=[e.score,a]))})),Object.keys(t).map((function(a){return e[t[a][1]]})).filter((function(e){return!!e}))}function disposeTfBackend(){try{tf__namespace.backend().dispose()}catch(e){console.error("failed to dispose backend",e)}}var templateObject_1$8,templateObject_2$3,templateObject_3$2,templateObject_4$1,DebugStatsPane=styled__default.default.span(templateObject_1$8||(templateObject_1$8=tslib.__makeTemplateObject(["\n font-size: 16px;\n font-family: monospace;\n position: absolute;\n left: 20px;\n bottom: 20px;\n color: limegreen;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1001;\n"],["\n font-size: 16px;\n font-family: monospace;\n position: absolute;\n left: 20px;\n bottom: 20px;\n color: limegreen;\n background: rgba(0, 0, 0, 0.5);\n z-index: 1001;\n"]))),ObjectDetectionDebugOverlay=styled__default.default.div(templateObject_2$3||(templateObject_2$3=tslib.__makeTemplateObject(["\n position: absolute;\n z-index: 1001;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n ","\n"],["\n position: absolute;\n z-index: 1001;\n width: 100%;\n height: 100%;\n max-width: 100%;\n max-height: 100%;\n overflow: hidden;\n ","\n"])),(function(e){return e.$flipX?"transform: scaleX(-1);":""})),ObjectDetectionDebugBox=styled__default.default.div(templateObject_3$2||(templateObject_3$2=tslib.__makeTemplateObject(["\n font: 10px monospace;\n position: absolute;\n border: 3px solid ",";\n color: ",";\n ","\n"],["\n font: 10px monospace;\n position: absolute;\n border: 3px solid ",";\n color: ",";\n ","\n"])),(function(e){var t=e.$color;return null!=t?t:"green"}),(function(e){var t=e.$color;return null!=t?t:"green"}),(function(e){return e.$flipX?"transform: scaleX(-1);":""})),FaceDetectionKeypointMarker=styled__default.default.div(templateObject_4$1||(templateObject_4$1=tslib.__makeTemplateObject(["\n position: absolute;\n width: 4px;\n height: 4px;\n border: 2px solid ",";\n font: 10px monospace;\n color: ",";\n border-radius: 50%;\n ","\n"],["\n position: absolute;\n width: 4px;\n height: 4px;\n border: 2px solid ",";\n font: 10px monospace;\n color: ",";\n border-radius: 50%;\n ","\n"])),(function(e){var t=e.$color;return null!=t?t:"red"}),(function(e){var t=e.$color;return null!=t?t:"red"}),(function(e){return e.$flipX?"transform: scaleX(-1);":""}));function useDebugScalingDetails(e){var t=e.enabled,a=void 0===t||t,n=e.pageWidth,r=e.pageHeight,o=e.videoWidth,i=e.videoHeight;return React.useMemo((function(){var e=!1,t=0,s=0,l=0,c=0;return a&&((e=n/r<o/i)?l=((t=o*(r/i))-n)/2:c=((s=i*(n/o))-r)/2),{horizontal:e,pageWidth:n,pageHeight:r,videoWidth:o,videoHeight:i,scaledWidth:t,scaledHeight:s,xOffset:l,yOffset:c}}),[a,r,n,i,o])}function IdCaptureDetectedObjectDebugBox(e){var t=e.obj,a=e.color,n=e.scaling,r=n.horizontal,o=n.pageWidth,i=n.pageHeight,s=n.scaledWidth,l=n.scaledHeight;return React__default.default.createElement(ObjectDetectionDebugBox,{$flipX:e.flipX,$color:void 0===a?"green":a,style:{top:t.bbox[1]*(r?i:l-n.yOffset),left:t.bbox[0]*(r?s-n.xOffset:o),width:t.bbox[2]*(r?s:o),height:t.bbox[3]*(r?i:l)}},t.label," (",t.score.toFixed(3),")")}function SelfieCaptureFaceDebugBox(e){var t,a,n,r,o=e.face,i=e.flipX,s=e.color,l=e.scaling,c=l.pageWidth,u=l.pageHeight,d=l.videoWidth,f=l.videoHeight,m=l.scaledWidth,p=l.scaledHeight;return l.horizontal?(t=o.box.yMin/f*u,a=o.box.xMin/d*m-l.xOffset,n=o.box.width/d*m,r=o.box.height/f*u):(t=o.box.yMin/f*p-l.yOffset,a=o.box.xMin/d*c,n=o.box.width/d*c,r=o.box.height/f*p),React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(ObjectDetectionDebugBox,{$flipX:i,$color:void 0===s?"green":s,style:{top:t,left:a,width:n,height:r}}),o.keypoints.map((function(e,t){return React__default.default.createElement(SelfieCaptureFaceKeypoint,{key:t,point:e,scaling:l,flipX:i})})))}function SelfieCaptureFaceKeypoint(e){var t,a,n=e.point,r=e.color,o=e.scaling,i=o.videoWidth,s=o.videoHeight;return o.horizontal?(t=n.x/i*o.scaledWidth-o.xOffset,a=n.y/s*o.pageHeight):(t=n.x/i*o.pageWidth,a=n.y/s*o.scaledHeight-o.yOffset),React__default.default.createElement(FaceDetectionKeypointMarker,{$flipX:e.flipX,$color:void 0===r?"red":r,style:{top:a-=2,left:t-=2}})}var templateObject_1$7,templateObject_1$6,templateObject_1$5,templateObject_2$2,templateObject_3$1,ExitCaptureButton=styled__default.default.button(templateObject_1$7||(templateObject_1$7=tslib.__makeTemplateObject(["\n position: absolute;\n top: 12px;\n right: 12px;\n font-size: 20px;\n width: 32px;\n height: 32px;\n font-family: monospace;\n z-index: 1002;\n border: none;\n border-radius: 4px;\n background: #ccc;\n cursor: pointer;\n\n &:hover {\n background: #ddd;\n }\n"],["\n position: absolute;\n top: 12px;\n right: 12px;\n font-size: 20px;\n width: 32px;\n height: 32px;\n font-family: monospace;\n z-index: 1002;\n border: none;\n border-radius: 4px;\n background: #ccc;\n cursor: pointer;\n\n &:hover {\n background: #ddd;\n }\n"]))),Spinner=styled__default.default.div(templateObject_1$6||(templateObject_1$6=tslib.__makeTemplateObject(["\n display: inline-block;\n width: ","px;\n height: ","px;\n margin: auto;\n\n &:after {\n content: ' ';\n display: block;\n width: ","px;\n height: ","px;\n margin: 8px;\n border-radius: 50%;\n border: ","px solid\n ",";\n border-color: "," transparent\n "," transparent;\n animation: lds-dual-ring 1.2s linear infinite;\n box-sizing: content-box;\n }\n\n @keyframes lds-dual-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n"],["\n display: inline-block;\n width: ","px;\n height: ","px;\n margin: auto;\n\n &:after {\n content: ' ';\n display: block;\n width: ","px;\n height: ","px;\n margin: 8px;\n border-radius: 50%;\n border: ","px solid\n ",";\n border-color: "," transparent\n "," transparent;\n animation: lds-dual-ring 1.2s linear infinite;\n box-sizing: content-box;\n }\n\n @keyframes lds-dual-ring {\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n }\n"])),(function(e){var t=e.$size;return null!=t?t:80}),(function(e){var t=e.$size;return null!=t?t:80}),(function(e){var t=e.$size;return(null!=t?t:80)-16}),(function(e){var t=e.$size;return(null!=t?t:80)-16}),(function(e){var t=e.$thickness;return null!=t?t:6}),(function(e){var t=e.$color;return null!=t?t:"#888"}),(function(e){var t=e.$color;return null!=t?t:"#888"}),(function(e){var t=e.$color;return null!=t?t:"#888"})),IdCaptureImagePreview=function(e){var t=e.text,a=e.imageUrl;return React__default.default.createElement(ImagePreviewWrapper,null,t&&React__default.default.createElement(ImagePreviewText,null,t),React__default.default.createElement(ImagePreviewImageWrapper,null,React__default.default.createElement("img",{src:a,alt:""})))},SelfieProgressPreview=function(e){var t=e.imageUrl;return React__default.default.createElement(ImagePreviewWrapper,null,React__default.default.createElement(ImagePreviewText,null,React__default.default.createElement(Spinner,{$size:24,$color:"white",$thickness:3,style:{position:"relative",top:4,left:-3,margin:"0 3px 0 -12px"}}),"Processing..."),React__default.default.createElement(ImagePreviewImageWrapper,null,React__default.default.createElement("img",{src:t,alt:""})))},ImagePreviewWrapper=styled__default.default.div(templateObject_1$5||(templateObject_1$5=tslib.__makeTemplateObject(["\n position: absolute;\n display: flex;\n flex-direction: column;\n height: 33%;\n bottom: 12px;\n right: 12px;\n"],["\n position: absolute;\n display: flex;\n flex-direction: column;\n height: 33%;\n bottom: 12px;\n right: 12px;\n"]))),ImagePreviewText=styled__default.default.div(templateObject_2$2||(templateObject_2$2=tslib.__makeTemplateObject(["\n display: block;\n position: absolute;\n top: -32px;\n font:\n 14px -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n color: white;\n text-align: center;\n margin: 0 auto;\n width: 100%;\n"],["\n display: block;\n position: absolute;\n top: -32px;\n font:\n 14px -apple-system,\n BlinkMacSystemFont,\n 'Segoe UI',\n Roboto,\n Helvetica,\n Arial,\n sans-serif,\n 'Apple Color Emoji',\n 'Segoe UI Emoji',\n 'Segoe UI Symbol';\n color: white;\n text-align: center;\n margin: 0 auto;\n width: 100%;\n"]))),ImagePreviewImageWrapper=styled__default.default.div(templateObject_3$1||(templateObject_3$1=tslib.__makeTemplateObject(["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"],["\n position: relative;\n height: calc(100% - 8px);\n padding: 4px;\n border-radius: 4px;\n background: white;\n\n & > img {\n border-radius: 4px;\n width: auto;\n max-height: 100%;\n }\n"]))),enTranslation={},esTranslation={"Use your device camera to capture your ID":"Para capturar la identificación hay que utilizar la cámara del dispositivo.","Use your iPhone as a webcam":"Usar el iPhone como cámara web","Models warming up...":"Cargando modelos...","Camera initializing...":"Inicializando la cámara...","Camera access blocked":"Acceso bloqueado a la cámara","Location access blocked":"Acceso bloqueado a la localización",Continue:"Continuar","Your camera permission is disabled":"El permiso de la cámara está desactivado","This application requires access to your camera to continue. Please accept the permission once prompted by the browser. If the browser does not prompt for camera permissions, you must go to settings and provide camera access to the current browser.":"Esta aplicación requiere el acceso a la cámara para continuar. Hay que aceptar el permiso una vez que se muestre la ventana en el explorador. Si no aparece la ventana para otorgar permisos, entonces hay que dirigirse a Configuración y otorgar el permiso a la cámara en el explorador actual.","Your location permission is disabled":"El permiso de la localización está desactivado","This application requires access to your location to continue. Please accept the permission once prompted by the browser. If the browser does not prompt for location permissions, you must go to settings and provide location access to the current browser.":"Esta aplicación requiere el acceso a la localización para continuar. Hay que aceptar el permiso una vez que se muestre la ventana en el explorador. Si no aparece la ventana para otorgar permisos, entonces hay que dirigirse a Configuración y otorgar el permiso a la localización en el explorador actual.",Retry:"Reintentar","Scan the front of ID":"Escanear el frente de la ID","Scan the back of ID":"Escanear el reverso de la ID","Scan the ID page of passport":"Escanear la página de datos del pasaporte","ID Card Front":"Frente de la ID","ID Card Back":"Reverso de la ID",Passport:"Pasaporte","Document not detected":"No se ha detectado el documento","Document is not centered":"Documento no centrado","Document out of focus – try improving the lighting":"Documento no enfocado - hay que tratar de mejorar la iluminación","Document detected, hold still...":"Se ha detectado el documento, no moverse por favor...","Capturing...":"Capturando...","Capture failed!":"Falló la captura","Please flip your ID card...":"Por favor voltea la identificación...","ID card front captured.":"Se ha capturado el frente de la identificación.","ID Capture Successful":"Captura Exitosa de ID","Verify the entire ID was captured clearly with no glare.":"Hay que verificar que toda la ID se vea completa y sin reflejos.",Submit:"Enviar","Submitting...":"Enviando...","Use your device camera to capture your face":"Hay que utilizar la cámara del dispositivo para capturar el rostro","Remove Sunglasses & Hat":"Hay que quitarse lentes y/o la gorra","Avoid Excessive Backlighting":"Hay que evitar demasiada luz en el fondo","Hold still for a few seconds...":"Hay que permanecer quieto por unos segundos...","Look straight into the camera...":"Hay que mirar directamente a la cámara...","Move back...":"Hay que hacerse hacia atrás..","Move forward...":"Hay que hacerse hacia adelante...","Move to the center...":"Hay que moverse hacia el centro...","Please remove your eye coverings (sunglasses, eye patch, etc.)...":"Hay que quitarse lo que cubre los ojos (lentes, parche, etc.)...","Please remove your head coverings (hat, scarf, etc.)...":"Hay que quitarse lo que cubre la cabeza (gorra, mascada, etc.)...","Please remove your mask...":"Hay que quitarse el cubrebocas...","Live face not detected, please try again":"Rostro vivo no detectado. Por favor hay que intentar de nuevo.",Exit:"Salir","Face liveness has been verified!":"Se ha verificado la Prueba de Vida en rostro!",Done:"Terminar","Customer has been identified!":"¡Se ha identificado al cliente!","Customer not found":"Cliente no encontrado","Additional document capture":"Captura de otro documento",Next:"Siguiente","Please sign the box below":"Por favor, hay que firmar en el recuadro de abajo",Accept:"Aceptar",Clear:"Borrar","Video signature has been successfully captured!":"La video firma ha sido exitosa.","Network unreachable":"No hay conexión a internet.","We're having trouble reaching our services, please check your connection and try again.":"Estamos teniendo problemas para alcanzar nuestros servicios, por favor verificar la conexión a internet e intentar de nuevo.","We're sorry, an unexpected error has occurred.":"Lo sentimos, se ha producido un error inesperado."},resources={en:{translation:enTranslation},es:{translation:esTranslation}},useLanguage=function(e){var t=reactI18next.useTranslation().i18n;React.useEffect((function(){"auto"!==e?t.changeLanguage(e):t.changeLanguage()}),[t,e])};function evaluateVerbiage(e,t,a,n){if("string"==typeof a)return a;if("object"==typeof a){var r=a;if(r[t])return r[t];var o=t.split("-")[0];if(r[o])return r[o]}return e(n)}function useVerbiage(e,t){var a=reactI18next.useTranslation(),n=a.t,r=a.i18n;return React.useMemo((function(){return evaluateVerbiage(n,r.language,e,t)}),[t,r.language,n,e])}function useTranslations(e,t){var a=reactI18next.useTranslation(),n=a.t,r=a.i18n;return React.useMemo((function(){return tslib.__assign(tslib.__assign({},e),Object.keys(t).reduce((function(a,o){var i;return tslib.__assign(tslib.__assign({},a),((i={})[o]=evaluateVerbiage(n,r.language,null==e?void 0:e[o],t[o]),i))}),{}))}),[t,r.language,n,e])}var templateObject_1$4,templateObject_2$1,templateObject_1$3,GuidanceMessageContainer=styled__default.default.div(templateObject_1$4||(templateObject_1$4=tslib.__makeTemplateObject(["\n position: absolute;\n top: calc(",");\n font-weight: bold;\n width: 100%;\n display: flex;\n"],["\n position: absolute;\n top: calc(",");\n font-weight: bold;\n width: 100%;\n display: flex;\n"])),(function(e){var t=e.$top;return null!=t?t:"10vh"})),GuidanceMessage=styled__default.default.div(templateObject_2$1||(templateObject_2$1=tslib.__makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n background: ",";\n color: ",";\n padding: 10px 12px 8px;\n border-radius: 8px;\n"],["\n margin-left: auto;\n margin-right: auto;\n background: ",";\n color: ",";\n padding: 10px 12px 8px;\n border-radius: 8px;\n"])),(function(e){var t=e.$background;return null!=t?t:"#ccc"}),(function(e){var t=e.$textColor;return null!=t?t:"black"})),initialState$5={videoWidth:0,videoHeight:0,captureStartedAt:null,detectedObjects:[],bestDocument:void 0,bestMrz:void 0,bestPdf417:void 0,documentType:DocumentType.NONE,documentInBounds:!1,documentDetectionScore:0,documentDetectionThresholdMet:!1,passportPageDetectionScore:0,passportPageDetectionThresholdMet:!1,mrzDetectionScore:0,mrzDetectionThresholdMet:!1,pdf417DetectionScore:0,pdf417DetectionThresholdMet:!1,focusScore:0,focusThresholdMet:!1,barcodeScanningEnabled:!1,barcodeResult:null,waitingForBarcodeScan:!1,shouldScanBarcode:!1,autoCaptureBarcodeRequired:"mobile",barcodeScanFailedAttempts:0,maxBarcodeScanAttempts:10,isGoodFrame:!1,goodFramesCount:0,goodFramesThreshold:3,goodFramesThresholdMet:!1,lastFrameCapturedAt:null,frameCaptureRate:0,capturing:!1,captured:!1,captureFailed:!1},reducer$5=function(e,t){switch(t.type){case"configure":return tslib.__assign(tslib.__assign(tslib.__assign({},e),t.payload),{goodFramesCount:0,captureStartedAt:new Date,capturing:!1,captured:!1,captureFailed:!1});case"objectsDetected":var a=t.payload.prediction,n=a.detectedObjects,r=a.detectionScore,o=a.detectionThresholdMet,i=a.detectedDocumentType,s=a.passportDetectionScore,l=a.passportDetectionThresholdMet,c=a.mrzDetectionScore,u=a.mrzDetectionThresholdMet,d=a.pdf417DetectionScore,f=a.pdf417DetectionThresholdMet,m=a.bestDocumentOrPassport,p=a.bestMrz,g=a.bestPdf417,h=a.focusScore,b=a.focusThresholdMet,v=a.frameWidth,_=a.frameHeight,y=new Date,R=0,C=e.goodFramesThreshold;e.lastFrameCapturedAt&&(R=1e3/(y.getTime()-e.lastFrameCapturedAt.getTime()))>0&&(C=Math.ceil(3*R));var S=!1;if(m){var E=m.bbox,T=E[0],w=E[1],x=E[2],I=E[3];T*=v,x*=v,S=(w*=_)>20&&w+(I*=_)+20<_&&(T>20||T<20&&T+x>.8*v)&&T+x+20<v}var k=!0===e.autoCaptureBarcodeRequired||"mobile"===e.autoCaptureBarcodeRequired&&isMobile(),D=e.barcodeScanningEnabled&&f&&k,A=D&&!e.barcodeResult,M=o&&S&&b,F=e.goodFramesCount;return M&&(F+=1),tslib.__assign(tslib.__assign({},e),{videoWidth:v,videoHeight:_,detectedObjects:n,bestDocument:m,bestMrz:p,bestPdf417:g,documentType:i,documentInBounds:S,documentDetectionScore:r,documentDetectionThresholdMet:o,mrzDetectionScore:c,mrzDetectionThresholdMet:u,pdf417DetectionScore:d,pdf417DetectionThresholdMet:f,passportPageDetectionScore:s,passportPageDetectionThresholdMet:l,focusScore:h,focusThresholdMet:b,shouldScanBarcode:D,waitingForBarcodeScan:A,isGoodFrame:M,goodFramesCount:F,goodFramesThreshold:C,goodFramesThresholdMet:F>=C,lastFrameCapturedAt:y,frameCaptureRate:R});case"barcodeScanned":return tslib.__assign(tslib.__assign({},e),{barcodeResult:t.payload.result,waitingForBarcodeScan:!1,autoCaptureBarcodeRequired:!1});case"barcodeScanFailed":var B=tslib.__assign(tslib.__assign({},e),{barcodeScanFailedAttempts:e.barcodeScanFailedAttempts+1});return B.barcodeScanFailedAttempts>=B.maxBarcodeScanAttempts&&(B.autoCaptureBarcodeRequired=!1,B.shouldScanBarcode=!1,B.waitingForBarcodeScan=!1),B;case"capturing":return tslib.__assign(tslib.__assign({},e),{capturing:!0,captured:!1,captureFailed:!1});case"captured":return tslib.__assign(tslib.__assign({},e),{capturing:!1,captured:!0,captureFailed:!1});case"captureFailed":return tslib.__assign(tslib.__assign({},e),{capturing:!1,captured:!1,captureFailed:!0});default:return e}},IdCapture=function(e){var t,a,n,r=e.requiredDocumentType,o=e.autoCaptureEnabled,i=void 0===o||o,s=e.autoCaptureScoreThreshold,l=void 0===s?.8:s,c=e.autoCaptureGoodFramesRequired,u=void 0===c?3:c,d=e.autoCaptureBarcodeRequired,f=void 0===d?"mobile":d,m=e.mrzDetectionScoreThreshold,p=void 0===m?.25:m,g=e.passportPageDetectionThreshold,h=void 0===g?.6:g,b=e.pdf417DetectionThreshold,v=void 0===b?.15:b,_=e.focusScoreThreshold,y=void 0===_?.3:_,R=e.barcodeScanningEnabled,C=void 0===R||R,S=e.maxBarcodeScanAttempts,E=void 0===S?10:S,T=e.guidanceMessage,w=e.guidanceSatisfied,x=e.onPrediction,I=e.onBarcodeScanned,k=e.onCapture,D=e.onExit,A=e.processingScreen,M=e.processingDelay,F=void 0===M?0:M,B=e.assets,O=void 0===B?{}:B,N=e.colors,L=void 0===N?{}:N,P=e.verbiage,U=void 0===P?{}:P,G=e.debugMode,$=void 0!==G&&G,V=useResizeObserver__default.default(),j=V.ref,z=V.width,q=void 0===z?1:z,W=V.height,H=void 0===W?1:W,K=React.useReducer(reducer$5,initialState$5),Y=K[0],X=K[1],J=React.useState(""),Z=J[0],Q=J[1],ee=React.useState(!1),te=ee[0],ae=ee[1],ne=React.useContext(CameraStateContext),re=ne.cameraRef,oe=ne.cameraReady,ie=ne.takePhoto,se=ne.videoRef,le=ne.videoLoaded,ce=React.useRef(),ue=React.useContext(IdCaptureModelsContext),de=ue.ready,fe=ue.working,me=ue.setThresholds,pe=ue.makePrediction,ge=ue.onPredictionMade,he=ue.detectionTime,be=ue.focusPredictionTime,ve=ue.getBestFrame,_e=ue.resetBestFrame;React.useEffect((function(){ce.current=new Date}),[]),React.useEffect((function(){X({type:"configure",payload:{requiredDocumentType:r,goodFramesThreshold:u,autoCaptureBarcodeRequired:f,barcodeScanningEnabled:C,maxBarcodeScanAttempts:E}}),_e(),me({document:l,passport:h,mrz:p,pdf417:v,focus:y})}),[r,l,y,p,u,f,C,E,h,v,_e,me]);var ye=React.useRef(0),Re=React.useRef(!1);React.useEffect((function(){Re.current=le&&oe&&de&&!Y.capturing&&!Y.captured}),[oe,Y.captured,Y.capturing,de,le]);var Ce=React.useState(null),Se=Ce[0],Ee=Ce[1];React.useEffect((function(){if(de&&oe&&le)return ye.current=requestAnimationFrame((function e(){return tslib.__awaiter(this,void 0,void 0,(function(){var t,a;return tslib.__generator(this,(function(n){switch(n.label){case 0:if(!Re.current||fe.current)return[3,5];n.label=1;case 1:return n.trys.push([1,4,,5]),Y.shouldScanBarcode?[4,ie()]:[3,3];case 2:if(!(t=n.sent()))return ye.current=requestAnimationFrame(e),[2];Ee(t),n.label=3;case 3:return se.current&&pe(se.current),[3,5];case 4:return a=n.sent(),console.error("error capturing frame",a),[3,5];case 5:return ye.current=requestAnimationFrame(e),[2]}}))}))})),function(){cancelAnimationFrame(ye.current)}}),[oe,pe,de,fe,Y.shouldScanBarcode,ie,le,se]),React.useEffect((function(){ge((function(e){X({type:"objectsDetected",payload:{prediction:e}}),null==x||x(e)}))}),[x,ge]),React.useEffect((function(){tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return Y.shouldScanBarcode&&Se?[4,scanBarcode(Se,null===(t=Y.bestPdf417)||void 0===t?void 0:t.bbox)]:[3,2];case 1:(e=a.sent())?(X({type:"barcodeScanned",payload:{result:e}}),null==I||I(e)):X({type:"barcodeScanFailed"}),a.label=2;case 2:return[2]}}))}))}),[I,Y.shouldScanBarcode,null===(t=Y.bestPdf417)||void 0===t?void 0:t.bbox,ie,Se]);var Te=i&&Y.goodFramesThresholdMet&&!Y.capturing&&!Y.captured&&!Y.waitingForBarcodeScan&&timeSince(Y.captureStartedAt)>=3e3;React.useEffect((function(){tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a,n,r,o,i,s,l;return tslib.__generator(this,(function(c){switch(c.label){case 0:return Te?(X({type:"capturing"}),[4,ve()]):[2];case 1:return(e=c.sent())?(ae(!0),[4,getBlobDimensions(e)]):(console.log("uh oh, i did not get a photo"),X({type:"captureFailed"}),[2]);case 2:return t=c.sent(),a=t[0],n=t[1],(r=document.createElement("canvas")).width=a,r.height=n,[4,createImageBitmap(e)];case 3:if(o=c.sent(),(a>1920&&n>1080||a>1080&&n>1920)&&Y.barcodeResult){if(a>n?(r.width=1920,r.height=n*(1920/a)):(r.height=1920,r.width=a*(1920/n)),!(i=r.getContext("2d")))return[2];i.drawImage(o,0,0,r.width,r.height)}else{if(!(s=r.getContext("bitmaprenderer")))return[2];s.transferFromImageBitmap(o)}return l=r.toDataURL("image/jpeg",.92),Q(l),setTimeout((function(){var e,t=(new Date).getTime()-(null!==(e=ce.current)&&void 0!==e?e:new Date).getTime();null==k||k(l,a,n,{autoCapture:"Y",captureTime:t}),X({type:"captured"}),ae(!1)}),F),[2]}}))}))}),[ve,k,F,Te,Y.barcodeResult]),L.guideBoxUnsatisfiedColor||(L.guideBoxUnsatisfiedColor="white"),L.guideBoxSatisfiedColor||(L.guideBoxSatisfiedColor="green"),L.guidanceMessagesSatisfiedBackgroundColor||(L.guidanceMessagesSatisfiedBackgroundColor="green"),L.guidanceMessagesSatisfiedTextColor||(L.guidanceMessagesSatisfiedTextColor="white");var we=useTranslations(U,{instructionText:"Scan the front of ID",processingIdCardText:"ID card front captured.",capturingText:"Capturing...",captureFailedText:"Capture failed!",guidanceSatisfiedText:"Document detected, hold still...",guidanceTooBlurryText:"Document out of focus – try improving the lighting",guidanceNotCenteredText:"Document is not centered",guidanceNotDetectedText:"Document not detected"}),xe=useDebugScalingDetails({enabled:$,pageWidth:q,pageHeight:H,videoWidth:Y.videoWidth,videoHeight:Y.videoHeight}),Ie=Y.isGoodFrame;return"boolean"==typeof w&&(Ie=w),T||(T=Ie?we.guidanceSatisfiedText:Y.documentDetectionThresholdMet?Y.documentInBounds?Y.focusThresholdMet?"":we.guidanceTooBlurryText:we.guidanceNotCenteredText:we.guidanceNotDetectedText),te?React__default.default.createElement(React__default.default.Fragment,null,A,Z&&React__default.default.createElement(IdCaptureImagePreview,{text:we.processingIdCardText,imageUrl:Z})):""!==Z?React__default.default.createElement("img",{src:Z,alt:"",style:{maxWidth:"100%",maxHeight:"100%"}}):React__default.default.createElement(PageContainer,{ref:j,className:"flex"},React__default.default.createElement(DocumentCaptureGuideOverlay,{width:q,height:H,instruction:Y.captureFailed?we.captureFailedText:Y.capturing?null==we?void 0:we.capturingText:we.instructionText,portraitGuidesImageUrl:O.portraitGuidesImageUrl,landscapeGuidesImageUrl:O.landscapeGuidesImageUrl,isMirrored:!(null===(a=re.current)||void 0===a?void 0:a.isRearFacing),borderColor:Y.isGoodFrame?L.guideBoxSatisfiedColor:L.guideBoxUnsatisfiedColor}),""!==T&&React__default.default.createElement(GuidanceMessageContainer,{$top:"82.5vh"},React__default.default.createElement(GuidanceMessage,{$background:Ie?L.guidanceMessagesSatisfiedBackgroundColor:L.guidanceMessagesUnsatisfiedBackgroundColor,$textColor:Ie?L.guidanceMessagesSatisfiedTextColor:L.guidanceMessagesUnsatisfiedTextColor},T)),$&&Y.detectedObjects.length>0&&React__default.default.createElement(ObjectDetectionDebugOverlay,{$flipX:!(null===(n=re.current)||void 0===n?void 0:n.isRearFacing)},Y.detectedObjects.map((function(e,t){var a;return React__default.default.createElement(IdCaptureDetectedObjectDebugBox,{key:t,obj:e,scaling:xe,flipX:!(null===(a=re.current)||void 0===a?void 0:a.isRearFacing)})}))),$&&React__default.default.createElement(DebugStatsPane,null,re.current?React__default.default.createElement(React__default.default.Fragment,null,"✅ Camera: ",re.current.label," (",re.current.width,"x",re.current.height,")"):"❌ Camera not ready",React__default.default.createElement("br",null),Y.frameCaptureRate>.75?"✅":"👎"," Frame Rate:"," ",Math.round(1e3*(Y.frameCaptureRate+Number.EPSILON))/1e3," ","fps (",he,"ms doc detect, ",be,"ms focus)",React__default.default.createElement("br",null),de?React__default.default.createElement(React__default.default.Fragment,null,Y.documentDetectionThresholdMet?"✅":"❌"," Document Score: ",Y.documentDetectionScore," (",Y.documentType,")",React__default.default.createElement("br",null),Y.documentInBounds?"✅":"❌"," Document In Bounds",React__default.default.createElement("br",null),Y.focusThresholdMet?"✅":"❌"," Focus Score:"," ",Y.focusScore,React__default.default.createElement("br",null),Y.goodFramesThresholdMet?"✅":"❌"," Good Frame Count:"," ",Y.goodFramesCount,"/",Y.goodFramesThreshold,C&&Y.autoCaptureBarcodeRequired?React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("br",null),Y.barcodeResult?"✅":"❌"," Barcode Scanned (",supportsNativeBarcodeScanning()?"Native":"ZXing",","," ",Y.barcodeScanFailedAttempts,"/",Y.maxBarcodeScanAttempts," failed attempts)"):null):React__default.default.createElement(React__default.default.Fragment,null,"❌ Models not ready")),React__default.default.createElement(ExitCaptureButton,{onClick:D},"×"))},timeSince=function(e){return e?Math.abs((new Date).getTime()-e.getTime()):0},CameraAccessDeniedOverlay=function(e){var t,a,n=e.assets,r=void 0===n?{}:n,o=e.colors,i=void 0===o?{}:o,s=e.verbiage,l=void 0===s?{}:s,c=React.useContext(CameraStateContext).retryCameraAccess;r.imageUrl||(r.imageUrl=DEFAULT_CDN_URL+"/camera-disable-icon.png"),i.retryBtn||(i.retryBtn={}),(t=i.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=i.retryBtn).textColor||(a.textColor="white");var u=useTranslations(l,{headingText:"Your camera permission is disabled",descriptionText:"This application requires access to your camera to continue. Please accept the permission once prompted by the browser. If the browser does not prompt for camera permissions, you must go to settings and provide camera access to the current browser.",retryBtnText:"Retry"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement("div",{style:{display:"flex",height:"100%"}},React__default.default.createElement(OverlayInner,{style:{maxWidth:500,height:"auto",margin:"auto"}},React__default.default.createElement(OverlayImageWrapper,{style:{flexGrow:0}},React__default.default.createElement("img",{src:r.imageUrl,alt:""})),React__default.default.createElement("h3",null,u.headingText),React__default.default.createElement("p",{style:{lineHeight:1.5,marginBottom:50}},u.descriptionText),React__default.default.createElement(LoaderButton,{onClick:c,colors:i.retryBtn,style:{width:200,marginLeft:"auto",marginRight:"auto"},finished:!0},u.retryBtnText))))},IdCaptureLoadingOverlay=function(e){var t=e.onDismissed,a=e.assets,n=void 0===a?{}:a,r=e.colors,o=void 0===r?{}:r,i=e.verbiage,s=void 0===i?{}:i,l=React.useContext(IdCaptureModelsContext).ready,c=React.useContext(CameraStateContext),u=c.cameraReady,d=c.cameraAccessDenied,f=c.iphoneContinuityCameraAvailable,m=c.setIphoneContinuityCameraAllowed,p=React.useState(!1),g=p[0],h=p[1];n.instructionImageUrl||(n.instructionImageUrl="".concat(DEFAULT_CDN_URL,"/WebSDK-Instruction-DL-Capture-3-Portrait.png"));var b=useTranslations(s,{headingText:"Use your device camera to capture your ID",useContinuityCameraText:"Use your iPhone as a webcam",modelsWarmingUpText:"Models warming up...",cameraInitializingText:"Camera initializing...",continueText:"Continue"});return React.useEffect((function(){if(l&&u)return function(){return null};var e=setTimeout((function(){h(!1)}),500);return function(){clearTimeout(e)}}),[u,l]),g?React__default.default.createElement(React__default.default.Fragment,null):d?React__default.default.createElement(CameraAccessDeniedOverlay,{assets:n.cameraAccessDenied,colors:o.cameraAccessDenied,verbiage:s.cameraAccessDenied}):React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",null,b.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{pointerEvents:"none"}},React__default.default.createElement("img",{alt:b.headingText,src:n.instructionImageUrl})),React__default.default.createElement("div",{style:{paddingTop:26,height:48,marginTop:-48}},f&&React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("input",{id:"use-continuity-camera",type:"checkbox",defaultChecked:!0,style:{marginRight:8},onChange:function(e){m(e.target.checked)}}),React__default.default.createElement("label",{htmlFor:"use-continuity-camera"},b.useContinuityCameraText))),React__default.default.createElement(LoaderButton,{disabled:!u||!l,finished:l&&u,colors:o.continueBtn,style:{marginTop:8},onClick:function(){h(!0),null==t||t()}},u&&l?b.continueText:l?b.cameraInitializingText:b.modelsWarmingUpText)))},FlipIdPrompt=function(e){var t,a=e.assets,n=void 0===a?{}:a,r=e.verbiage,o=void 0===r?{}:r,i=useResizeObserver__default.default(),s=i.ref,l=i.width,c=void 0===l?1:l,u=i.height,d=void 0===u?1:u,f=React.useContext(CameraStateContext).cameraRef;n.frontPortraitGuidesImageUrl||(n.frontPortraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Portrait-2.svg")),n.frontLandscapeGuidesImageUrl||(n.frontLandscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Landscape-2.svg")),n.backPortraitGuidesImageUrl||(n.backPortraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Portrait-2.svg")),n.backLandscapeGuidesImageUrl||(n.backLandscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Landscape-2.svg"));var m=useVerbiage(o.instructionText,"Please flip your ID card..."),p=isMobile()?0:50,g=!(null===(t=f.current)||void 0===t?void 0:t.isRearFacing),h=React.useContext(GuideOrientationContext),b=h.orientation,v=h.wrapperRef,_=h.wrapperWidth,y=h.wrapperHeight,R=h.imageAspectRatio,C=h.wrapperAspectRatio,S=h.onImageLoaded,E=h.setDimensions;React.useEffect((function(){E({width:c,height:d})}),[d,E,c]);var T={height:y-2*p-8};R>=C&&(T={width:_-2*p-8});var w=React.useState(1),x=w[0],I=w[1],k=React.useState(0),D=k[0],A=k[1],M=["rotateY(".concat(D,"deg)")];g&&M.push("scaleX(-1)");var F=["rotateY(".concat(180-D,"deg)")];return g&&F.push("scaleX(-1)"),React.useEffect((function(){var e=function(){I(1),A(180),setTimeout((function(){I(0),A(0)}),1500)};setTimeout(e,250);var t=setInterval(e,2500);return function(){clearInterval(t)}}),[]),React__default.default.createElement(PageContainer,{ref:s,className:"flex"},React__default.default.createElement("div",{ref:v,style:{position:"absolute",zIndex:1e3,width:"100%",height:"100%"}},React__default.default.createElement("div",{style:{display:"flex",flexFlow:"column nowrap",height:"100%"}},React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12}},m)),React__default.default.createElement("div",{style:{position:"relative",display:"flex",flexFlow:"row nowrap",alignItems:"center",justifyItems:"center",maxWidth:"calc(100%)",maxHeight:"calc(100% - ".concat(2*p,"px - ").concat(8,"px)")}},React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",minWidth:p,flexGrow:1}}),React__default.default.createElement("div",{style:{maxWidth:"calc(100% - ".concat(2*p,"px - ").concat(8,"px)"),maxHeight:d-2*p-8}},React__default.default.createElement("div",{style:{position:"relative",border:"".concat(4,"px solid ").concat("white")}},React__default.default.createElement("img",{src:"portrait"===b?n.frontPortraitGuidesImageUrl:n.frontLandscapeGuidesImageUrl,alt:"",onLoad:S,style:tslib.__assign({backfaceVisibility:"hidden",transition:"transform ".concat(x,"s"),transform:M.join(" "),transformStyle:"preserve-3d",position:"relative",top:0,left:0,display:"block"},T)}),React__default.default.createElement("img",{src:"portrait"===b?n.backPortraitGuidesImageUrl:n.backLandscapeGuidesImageUrl,alt:"",style:tslib.__assign({backfaceVisibility:"hidden",transition:"transform ".concat(x,"s"),transform:F.join(" "),transformStyle:"preserve-3d",position:"absolute",top:0,left:0,display:"block"},T)}))),React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",minWidth:p,flexGrow:1}})),React__default.default.createElement("div",{style:{background:"rgba(0,0,0,0.5)",width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12,opacity:0}},m)))))},IdCaptureSuccess=function(e){var t,a,n=e.capturedDocuments,r=e.onSubmitClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l,u=React.useContext(SubmissionContext).submissionStatus,d=n.ID_CARD_FRONT,f=n.ID_CARD_BACK,m=n.PASSPORT;s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var p=useTranslations(c,{headingText:"ID Capture Successful",idCardFrontText:"ID Card Front",idCardBackText:"ID Card Back",passportText:"Passport",instructionText:"Verify the entire ID was captured clearly with no glare.",retryText:"Retry",submittingText:"Submitting...",submitText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h1",null,p.headingText),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement(OverlayImageMultiContainer,{style:{paddingBottom:40}},d&&React__default.default.createElement("div",null,React__default.default.createElement("h3",null,p.idCardFrontText),React__default.default.createElement("img",{src:d.imageData,alt:p.idCardFrontText,width:d.width,height:d.height})),f&&React__default.default.createElement("div",null,React__default.default.createElement("h3",null,p.idCardBackText),React__default.default.createElement("img",{src:f.imageData,alt:p.idCardBackText,width:f.width,height:f.height})),m&&React__default.default.createElement("div",null,React__default.default.createElement("h3",null,p.passportText),React__default.default.createElement("img",{src:m.imageData,alt:p.passportText,width:m.width,height:m.height})))),React__default.default.createElement("p",{style:{fontSize:18}},p.instructionText),React__default.default.createElement("div",{style:{paddingTop:15,textAlign:"center"}},React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,style:{marginRight:15},finished:!0},p.retryText),React__default.default.createElement(LoaderButton,{onClick:r,disabled:u===SubmissionStatus.SUBMITTING,colors:s.doneBtn,finished:!0},u===SubmissionStatus.SUBMITTING?p.submittingText:p.submitText))))},CameraVideoTag=function(){var e,t=React.useContext(CameraStateContext),a=t.videoRef,n=t.setVideoLoaded,r=t.cameraRef;React.useEffect((function(){n(!1)}),[n]),React.useEffect((function(){var e;a.current&&(null===(e=r.current)||void 0===e?void 0:e.stream)&&(a.current.srcObject=r.current.stream)}),[r,a]);var o=React.useCallback((function(){n(!0)}),[n]);return React__default.default.createElement(FullscreenVideoTag,{autoPlay:!0,playsInline:!0,muted:!0,ref:a,onLoadedData:o,$isRearFacing:null===(e=r.current)||void 0===e?void 0:e.isRearFacing})},FullscreenVideoTag=styled__default.default.video(templateObject_1$3||(templateObject_1$3=tslib.__makeTemplateObject(["\n transform: ",";\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n object-fit: cover;\n"],["\n transform: ",";\n min-width: 100%;\n min-height: 100%;\n width: auto;\n height: auto;\n object-fit: cover;\n"])),(function(e){return e.$isRearFacing?"":"scaleX(-1)"}));function useShowSuccessScreen(e,t,a){var n=this,r=React.useState(!1),o=r[0],i=r[1];return React.useEffect((function(){t&&e&&("function"==typeof e?tslib.__awaiter(n,void 0,void 0,(function(){return tslib.__generator(this,(function(t){switch(t.label){case 0:return[4,e()];case 1:return t.sent()?null==a||a():i(!0),[2]}}))})):null==a||a())}),[t,a,e]),!e||o}var CaptureState,IdCaptureFallback=function(e){var t=e.onCapture,a=e.onFinished,n=e.colors,r=void 0===n?{}:n,o=e.verbiage,i=void 0===o?{}:o,s=React.useRef(null),l=React.useState([]),c=l[0],u=l[1];r.captureMoreBtn||(r.captureMoreBtn={backgroundColor:"#666"});var d=useTranslations(i,{headingText:"We're having some trouble.",descriptionText:"On-device capture guidance failed, please capture photos of your ID card or passport manually.",firstInstructionText:"Please capture the front of your ID card, or the ID page of your passport.",secondInstructionText:"Please capture the back of your ID card, or click Done if submitting a passport.",captureBtnText:"Capture",captureMoreBtnText:"Capture back of ID Card",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,{style:{justifyContent:"center"}},React__default.default.createElement("h3",{style:{marginBottom:8}},d.headingText),React__default.default.createElement("p",{style:{marginBottom:8}},d.descriptionText),c.length>0&&React__default.default.createElement(OverlayImageMultiContainer,null,c.map((function(e,t){return React__default.default.createElement("div",{key:t,style:{display:"flex",justifyContent:"center",flexGrow:1,flexBasis:0}},React__default.default.createElement("img",{src:e,alt:""}))}))),c.length<2&&React__default.default.createElement("p",{style:{fontWeight:"bold"}},0===c.length?d.firstInstructionText:d.secondInstructionText),React__default.default.createElement("input",{ref:s,type:"file",accept:"image/*",hidden:!0,onChange:function(e){var a,n=null===(a=e.target.files)||void 0===a?void 0:a[0];if(n){var r=new FileReader;r.addEventListener("load",(function(e){var a,n=null===(a=e.target)||void 0===a?void 0:a.result;u((function(e){return tslib.__spreadArray(tslib.__spreadArray([],e,!0),[n],!1)})),null==t||t(n)})),r.readAsDataURL(n)}}}),React__default.default.createElement("div",{style:{marginTop:32}},c.length<2&&React__default.default.createElement(LoaderButton,{colors:c.length>0?r.captureMoreBtn:r.captureBtn,finished:!0,onClick:function(){var e;null===(e=s.current)||void 0===e||e.click()}},c.length>0?d.captureMoreBtnText:d.captureBtnText),c.length>0&&React__default.default.createElement(LoaderButton,{colors:r.doneBtn,finished:!0,onClick:function(){null==a||a(c)},style:{marginLeft:12}},d.doneBtnText))))};!function(e){e.CAPTURING="CAPTURING",e.COMPLETE="COMPLETE"}(CaptureState||(CaptureState={}));var detector,initialState$4={captureState:CaptureState.CAPTURING,capturedDocuments:{},requestedDocumentType:DocumentType.ID_CARD_FRONT,currentDocumentType:DocumentType.NONE,differentDocumentTypeDetections:0,barcodeResult:null},reducer$4=function(e,t){var a;switch(t.type){case"predictionMade":var n=t.payload.prediction;return(r=tslib.__assign(tslib.__assign({},e),{currentDocumentType:n.detectedDocumentType})).currentDocumentType===e.requestedDocumentType&&(r.differentDocumentTypeDetections=0),"PASSPORT"===n.detectedDocumentType&&"PASSPORT"!==e.requestedDocumentType&&(r.requestedDocumentType=DocumentType.PASSPORT),"PASSPORT"===e.requestedDocumentType&&n.passportDetectionScore<.3&&(r.requestedDocumentType=DocumentType.ID_CARD_FRONT),r;case"barcodeScanned":return tslib.__assign(tslib.__assign({},e),{barcodeResult:t.payload.result});case"imageCaptured":var r=tslib.__assign(tslib.__assign({},e),{capturedDocuments:tslib.__assign(tslib.__assign({},e.capturedDocuments),(a={},a[e.requestedDocumentType]=t.payload,a))});return"ID_CARD_FRONT"!==e.requestedDocumentType||e.capturedDocuments.ID_CARD_BACK?"ID_CARD_BACK"!==e.requestedDocumentType||e.capturedDocuments.ID_CARD_FRONT?r.captureState=CaptureState.COMPLETE:r.requestedDocumentType=DocumentType.ID_CARD_FRONT:r.requestedDocumentType=DocumentType.ID_CARD_BACK,r;case"imageCapturedManually":r=tslib.__assign({},e);var o=tslib.__assign(tslib.__assign({},t.payload),{width:0,height:0});return 0===Object.keys(e.capturedDocuments).length?r.capturedDocuments[DocumentType.PASSPORT]=o:(r.capturedDocuments={},r.capturedDocuments[DocumentType.ID_CARD_FRONT]=e.capturedDocuments[DocumentType.PASSPORT],r.capturedDocuments[DocumentType.ID_CARD_BACK]=o),r;case"reset":return tslib.__assign({},initialState$4)}},IdCaptureWizard=function(e){var t,a,n,r,o,i,s,l,c,u,d=e.onSuccess,f=e.autoCaptureEnabled,m=void 0===f||f,p=e.autoCaptureGoodFramesRequired,g=void 0===p?3:p,h=e.autoCaptureBarcodeRequired,b=void 0===h?"mobile":h,v=e.barcodeScanningEnabled,_=void 0!==v&&v,y=e.idCardAutoCaptureScoreThreshold,R=void 0===y?.8:y,C=e.passportAutoCaptureScoreThreshold,S=void 0===C?.75:C,E=e.mrzDetectionScoreThreshold,T=void 0===E?.25:E,w=e.idCardFocusScoreThreshold,x=void 0===w?.3:w,I=e.passportFocusScoreThreshold,k=void 0===I?.3:I,D=e.skipSuccessScreen,A=void 0!==D&&D,M=e.assets,F=void 0===M?{}:M,B=e.colors,O=void 0===B?{}:B,N=e.verbiage,L=void 0===N?{}:N,P=e.debugMode,U=void 0!==P&&P,G=React.useReducer(reducer$4,initialState$4),$=G[0],V=G[1],j=React.useContext(CameraStateContext).releaseCameraAccess,z=React.useState(!1),q=z[0],W=z[1],H=React.useContext(SubmissionContext),K=H.submissionStatus,Y=H.submissionResponse,X=H.setIdFrontImage,J=H.setIdBackImage,Z=H.setPassportImage,Q=H.logIdFrontCaptureAttempt,ee=H.logIdBackCaptureAttempt,te=React.useContext(IdCaptureModelsContext).error,ae=React.useRef();React.useEffect((function(){ae.current=new Date}),[$.capturedDocuments.length]);var ne=React.useCallback((function(e){var t;e.operationTime=(new Date).getTime()-(null!==(t=ae.current)&&void 0!==t?t:new Date).getTime(),"ID_CARD_BACK"===$.requestedDocumentType?ee(e):Q(e)}),[ee,Q,$.requestedDocumentType]),re=React.useCallback((function(e){V({type:"predictionMade",payload:{prediction:e}})}),[]),oe=React.useCallback((function(e){V({type:"barcodeScanned",payload:{result:e}})}),[]),ie=React.useCallback((function(e,t,a,n){ne(n),V({type:"imageCaptured",payload:{imageData:e,width:t,height:a}})}),[ne]),se=React.useCallback((function(){var e=$.capturedDocuments.ID_CARD_FRONT,t=$.capturedDocuments.ID_CARD_BACK,a=$.capturedDocuments.PASSPORT,n=e&&dataUrlToBase64Sync(e.imageData),r=t&&dataUrlToBase64Sync(t.imageData),o=a&&dataUrlToBase64Sync(a.imageData);X(n),J(r),Z(o),j(),setTimeout((function(){null==d||d({idFrontImage:n,idBackImage:r,passportImage:o})}),0)}),[d,j,J,X,Z,$.capturedDocuments]),le=useShowSuccessScreen(A,$.captureState===CaptureState.COMPLETE,se),ce=React.useCallback((function(){V({type:"reset"})}),[]),ue=React.useState(0),de=ue[0],fe=ue[1],me=React.useCallback((function(){W(!1),fe((function(e){return e+1})),V({type:"reset"})}),[]);React.useEffect((function(){K!==SubmissionStatus.READY&&j()}),[j,K]),F.idCardFront||(F.idCardFront={}),(t=F.idCardFront).portraitGuidesImageUrl||(t.portraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Portrait-2.svg")),(a=F.idCardFront).landscapeGuidesImageUrl||(a.landscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Landscape-2.svg")),F.idCardBack||(F.idCardBack={}),(n=F.idCardBack).portraitGuidesImageUrl||(n.portraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Portrait-2.svg")),(r=F.idCardBack).landscapeGuidesImageUrl||(r.landscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Landscape-2.svg")),F.passport||(F.passport={}),(o=F.passport).portraitGuidesImageUrl||(o.portraitGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-Passport-Front-SVG-Portrait-2.svg")),(i=F.passport).landscapeGuidesImageUrl||(i.landscapeGuidesImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-Passport-Front-SVG-Landscape-2.svg")),F.flipIdPrompt||(F.flipIdPrompt={}),(s=F.flipIdPrompt).frontPortraitGuidesImageUrl||(s.frontPortraitGuidesImageUrl=F.idCardFront.portraitGuidesImageUrl),(l=F.flipIdPrompt).frontLandscapeGuidesImageUrl||(l.frontLandscapeGuidesImageUrl=F.idCardFront.landscapeGuidesImageUrl),(c=F.flipIdPrompt).backPortraitGuidesImageUrl||(c.backPortraitGuidesImageUrl=F.idCardBack.portraitGuidesImageUrl),(u=F.flipIdPrompt).backLandscapeGuidesImageUrl||(u.backLandscapeGuidesImageUrl=F.idCardBack.landscapeGuidesImageUrl);var pe=useTranslations(L.idCardFront,{instructionText:"Scan the front of ID",processingIdCardText:"ID card front captured."}),ge=useTranslations(L.idCardBack,{instructionText:"Scan the back of ID"}),he=useTranslations(L.idCardBack,{instructionText:"Scan the ID page of passport"});return Y?React__default.default.createElement(PageContainer,{className:"padded"},React__default.default.createElement("h1",null,"Submission completed!"),React__default.default.createElement("pre",null,JSON.stringify(Y,null,2))):te?React__default.default.createElement(IdCaptureFallback,{onFinished:se,onCapture:function(e){V({type:"imageCapturedManually",payload:{imageData:e}})},colors:O.fallback,verbiage:L.fallback}):React__default.default.createElement(PageContainer,{className:"flex"},$.captureState!==CaptureState.COMPLETE&&React__default.default.createElement(CameraVideoTag,null),q&&function(){var e=Object.keys($.capturedDocuments).length;switch($.requestedDocumentType){case DocumentType.ID_CARD_FRONT:return React__default.default.createElement(IdCapture,{key:"capture".concat(e),requiredDocumentType:$.requestedDocumentType,autoCaptureEnabled:m,autoCaptureScoreThreshold:R,autoCaptureGoodFramesRequired:g,autoCaptureBarcodeRequired:b,barcodeScanningEnabled:!1,mrzDetectionScoreThreshold:T,focusScoreThreshold:x,onPrediction:re,onCapture:ie,onExit:me,processingDelay:3500,assets:F.idCardFront,colors:O,verbiage:pe,debugMode:U,processingScreen:React__default.default.createElement(FlipIdPrompt,{assets:F.flipIdPrompt,verbiage:L.flipIdPrompt})});case DocumentType.ID_CARD_BACK:return React__default.default.createElement(IdCapture,{key:"capture".concat(e),requiredDocumentType:$.requestedDocumentType,autoCaptureEnabled:m,autoCaptureScoreThreshold:R,autoCaptureGoodFramesRequired:g,autoCaptureBarcodeRequired:b,barcodeScanningEnabled:_,mrzDetectionScoreThreshold:T,focusScoreThreshold:x,onPrediction:re,onBarcodeScanned:oe,onCapture:ie,onExit:me,assets:F.idCardBack,colors:O,verbiage:ge,debugMode:U});case DocumentType.PASSPORT:return React__default.default.createElement(IdCapture,{key:"capture".concat(e),requiredDocumentType:$.requestedDocumentType,autoCaptureEnabled:m,autoCaptureScoreThreshold:S,mrzDetectionScoreThreshold:T,autoCaptureGoodFramesRequired:g,autoCaptureBarcodeRequired:b,barcodeScanningEnabled:!1,focusScoreThreshold:k,onPrediction:re,onBarcodeScanned:oe,onCapture:ie,onExit:me,assets:F.passport,colors:O,verbiage:he,debugMode:U});default:return null}}(),!q&&React__default.default.createElement(IdCaptureLoadingOverlay,{key:de,assets:F.loadingOverlay,colors:O.loadingOverlay,verbiage:L.loadingOverlay,onDismissed:function(){W(!0)}}),$.captureState===CaptureState.COMPLETE&&le&&React__default.default.createElement(IdCaptureSuccess,{capturedDocuments:$.capturedDocuments,barcodeResult:$.barcodeResult,onSubmitClick:se,onRetryClick:ce,colors:O.success,verbiage:L.success}))},FaceCaptureGuideOverlay=function(e){var t=e.borderWidth,a=e.borderColor;return React__default.default.createElement("div",{style:{position:"absolute",zIndex:1e3,width:"100%",height:"100%",display:"flex"}},React__default.default.createElement("div",{style:{borderWidth:void 0===t?3:t,borderColor:void 0===a?"white":a,borderStyle:"solid",borderRadius:"50%",aspectRatio:"1 / 1.618",height:"50%",margin:"auto"}}))},NUM_KEYPOINTS=6,GREEN="#32EEDB",RED="#FF2C35";function drawPath(e,t,a){var n=new Path2D;n.moveTo(t[0][0],t[0][1]);for(var r=1;r<t.length;r++){var o=t[r];n.lineTo(o[0],o[1])}a&&n.closePath(),e.stroke(n)}function drawResults(e,t,a,n){t.forEach((function(t){var r=t.keypoints.map((function(e){return[e.x,e.y]}));if(a){e.strokeStyle=RED,e.lineWidth=1;var o=t.box;drawPath(e,[[o.xMin,o.yMin],[o.xMax,o.yMin],[o.xMax,o.yMax],[o.xMin,o.yMax]],!0)}if(n){e.fillStyle=GREEN;for(var i=0;i<NUM_KEYPOINTS;i++){var s=r[i][0],l=r[i][1];e.beginPath(),e.arc(s,l,3,0,2*Math.PI),e.fill()}}}))}function loadHighPerformanceFaceDetector(){return tslib.__awaiter(this,void 0,void 0,(function(){var e;return tslib.__generator(this,(function(t){switch(t.label){case 0:return detector?[2,detector]:[4,tasksVision.FilesetResolver.forVisionTasks("https://cdn.jsdelivr.net/npm/@mediapipe/tasks-vision@0.10.7/wasm")];case 1:return e=t.sent(),[4,tasksVision.FaceDetector.createFromOptions(e,{baseOptions:{modelAssetPath:"https://storage.googleapis.com/mediapipe-models/face_detector/blaze_face_short_range/float16/1/blaze_face_short_range.tflite",delegate:"GPU"},runningMode:"VIDEO"})];case 2:return[2,detector=t.sent()]}}))}))}var HighPerformanceSelfieGuidanceModelsContext=React.createContext({start:function(){return null},stop:function(){return null},onPredictionMade:function(){return null},canvasRef:{current:null},ready:!1,error:null}),HighPerformanceSelfieGuidanceModelsProvider=function(e){var t=e.autoStart,a=void 0===t||t,n=e.children,r=e.throttleMs,o=React.useContext(CameraStateContext),i=o.videoRef,s=o.videoLoaded,l=o.cameraReady,c=React.useRef(null),u=React.useRef(),d=React.useState(!1),f=d[0],m=d[1],p=React.useState(!1),g=p[0],h=p[1],b=React.useRef(null),v=React.useRef(0),_=React.useRef(0),y=React.useState(null),R=y[0],C=y[1];React.useEffect((function(){tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){switch(a.label){case 0:m(!1),a.label=1;case 1:return a.trys.push([1,3,,4]),e=b,[4,loadHighPerformanceFaceDetector()];case 2:return e.current=a.sent(),[3,4];case 3:return t=a.sent(),C(t),[3,4];case 4:return m(!0),[2]}}))}))}),[]),React.useEffect((function(){if(s&&l&&g&&f){var e;_.current+=1;var t=_.current;return tslib.__awaiter(void 0,void 0,void 0,(function(){var a,n,o,s;return tslib.__generator(this,(function(l){switch(l.label){case 0:return i.current&&b.current?(a=null===(n=c.current)||void 0===n?void 0:n.getContext("2d"),c.current&&(c.current.width=null===(o=i.current)||void 0===o?void 0:o.videoWidth,c.current.height=null===(s=i.current)||void 0===s?void 0:s.videoHeight,null==a||a.translate(i.current.videoWidth,0),null==a||a.scale(-1,1)),[4,function n(){var o;return tslib.__awaiter(this,void 0,void 0,(function(){var s,l,c,d,f;return tslib.__generator(this,(function(m){switch(m.label){case 0:return b.current&&i.current&&t===_.current?i.current.readyState<2?[4,new Promise((function(e){i.current&&(i.current.onloadeddata=function(){e([])})}))]:[3,2]:[2];case 1:m.sent(),m.label=2;case 2:s=i.current.videoWidth,l=i.current.videoHeight,null==a||a.drawImage(i.current,0,0,s,l),m.label=3;case 3:return m.trys.push([3,5,,6]),[4,b.current.detectForVideo(i.current,performance.now())];case 4:return(c=m.sent())&&(d=c.detections.map((function(e){var t,a,n,r,o,i,c,u,d,f,m,p,g,h,b,v;return{keypoints:e.keypoints.map((function(e){var t;return tslib.__assign(tslib.__assign({},e),{x:e.x*s,y:e.y*l,name:null!==(t=e.label)&&void 0!==t?t:""})})),box:{xMin:null!==(a=null===(t=e.boundingBox)||void 0===t?void 0:t.originX)&&void 0!==a?a:0,xMax:(null!==(r=null===(n=e.boundingBox)||void 0===n?void 0:n.originX)&&void 0!==r?r:0)+(null!==(i=null===(o=e.boundingBox)||void 0===o?void 0:o.width)&&void 0!==i?i:0),yMin:null!==(u=null===(c=e.boundingBox)||void 0===c?void 0:c.originY)&&void 0!==u?u:0,yMax:(null!==(f=null===(d=e.boundingBox)||void 0===d?void 0:d.originY)&&void 0!==f?f:0)+(null!==(p=null===(m=e.boundingBox)||void 0===m?void 0:m.height)&&void 0!==p?p:0),width:null!==(h=null===(g=e.boundingBox)||void 0===g?void 0:g.width)&&void 0!==h?h:0,height:null!==(v=null===(b=e.boundingBox)||void 0===b?void 0:b.height)&&void 0!==v?v:0}}})),null===(o=u.current)||void 0===o||o.call(u,d),a&&drawResults(a,d,!0,!0)),[3,6];case 5:return f=m.sent(),console.error("caught face detection error",f),[3,6];case 6:return r?e=setTimeout((function(){v.current=requestAnimationFrame(n)}),r):v.current=requestAnimationFrame(n),[2]}}))}))}()]):[2];case 1:return l.sent(),[2]}}))})),function(){v.current&&cancelAnimationFrame(v.current),e&&clearTimeout(e)}}}),[l,f,g,r,s,i]);var S=React.useCallback((function(){h(!0)}),[]),E=React.useCallback((function(){h(!1)}),[]);React.useEffect((function(){return a&&S(),function(){E()}}),[a,S,E]);var T=React.useCallback((function(e){u.current=e}),[]),w=React.useMemo((function(){return{start:S,stop:E,ready:f,canvasRef:c,onPredictionMade:T,error:R}}),[R,T,f,S,E]);return React__namespace.createElement(HighPerformanceSelfieGuidanceModelsContext.Provider,{value:w},n)},useTimeout=function(e,t,a,n){var r=React.useState(!1),o=r[0],i=r[1],s=React.useState(),l=s[0],c=s[1];return React.useEffect((function(){if(e){c(new Date);var t=setTimeout((function(){i(!0)}),e);return function(){t&&clearTimeout(t)}}}),[e]),React.useEffect((function(){if(o&&!a){if(n){var e=setTimeout((function(){null==t||t()}),12e4);return function(){clearTimeout(e)}}null==t||t()}}),[t,n,o,a]),{timedOut:o,timeoutStartedAt:l}},SelfieCaptureFallback=function(e){var t=e.onFinished,a=e.onCapture,n=e.colors,r=void 0===n?{}:n,o=e.verbiage,i=void 0===o?{}:o,s=React.useState(null),l=s[0],c=s[1],u=React.useRef(null),d=React.useState(!1),f=d[0],m=d[1],p=useTranslations(i,{headingText:"We're having some trouble.",descriptionText:"On-device capture guidance failed, please capture a selfie manually.",captureBtnText:"Capture",doneBtnText:"Done",doneBtnLoadingText:"Verifying..."});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,{style:{justifyContent:"center"}},React__default.default.createElement("h3",{style:{marginBottom:8}},p.headingText),React__default.default.createElement("p",{style:{marginBottom:8}},p.descriptionText),l&&React__default.default.createElement(OverlayImageWrapper,{style:{marginTop:32}},React__default.default.createElement("img",{src:l,alt:""})),React__default.default.createElement("input",{ref:u,type:"file",accept:"image/*",hidden:!0,onChange:function(e){var t,n=null===(t=e.target.files)||void 0===t?void 0:t[0];if(n){var r=new FileReader;r.addEventListener("load",(function(e){var t,n=null===(t=e.target)||void 0===t?void 0:t.result;c(n),null==a||a(n)})),r.readAsDataURL(n)}}}),React__default.default.createElement("div",{style:{marginTop:32}},!l&&React__default.default.createElement(LoaderButton,{colors:r.captureBtn,finished:!0,onClick:function(){var e;null===(e=u.current)||void 0===e||e.click()}},p.captureBtnText),l&&React__default.default.createElement(LoaderButton,{key:f?"loading-btn":"ready-btn",colors:r.doneBtn,finished:!f,onClick:function(){m(!0),null==t||t(l)}},f?p.doneBtnLoadingText:p.doneBtnText))))},initialState$3={videoWidth:0,videoHeight:0,capturing:!1,captured:!1,captureFailed:!1,frame:null,faces:[],faceNotCentered:!1,faceLookingAway:!1,faceTooClose:!1,faceTooFar:!1,faceReady:!1,faceReadyAt:null,goodFramesCount:0,goodFramesThreshold:1,goodFramesThresholdMet:!1},reducer$3=function(e,t){switch(t.type){case"configure":return tslib.__assign(tslib.__assign({},e),{videoWidth:t.payload.videoWidth,videoHeight:t.payload.videoHeight});case"capturing":return tslib.__assign(tslib.__assign({},e),{capturing:!0,captured:!1,captureFailed:!1});case"captured":return tslib.__assign(tslib.__assign({},e),{capturing:!1,captured:!0,captureFailed:!1});case"captureFailed":return tslib.__assign(tslib.__assign({},e),{capturing:!1,captured:!1,captureFailed:!0});case"facesDetected":var a=t.payload.faces,n=a[0],r=!0,o=!1,i=!1,s=!1,l=e.faceReadyAt,c=e.goodFramesCount;if(n){var u=e.videoHeight/2,d=(n.box.xMin+n.box.xMax)/2,f=(n.box.yMin+n.box.yMax)/2,m=.125*e.videoWidth,p=.125*e.videoHeight,g=.2*n.box.width,h=.2*n.box.height,b=n.keypoints[2];b&&(r=Math.abs(e.videoWidth/2-d)>m||Math.abs(u+50-f)>p,o=Math.abs(d-b.x)>g||Math.abs(f-b.y)>h);var v=e.videoWidth<e.videoHeight;i=n.box.width>e.videoWidth/(v?2:4.5),s=n.box.width<e.videoWidth/(v?6:7)}var _=!(r||o||i||s);return _?e.faceReady||(l=new Date):(l=null,c=0),tslib.__assign(tslib.__assign({},e),{faces:a,faceNotCentered:r,faceLookingAway:o,faceTooClose:i,faceTooFar:s,faceReady:_,faceReadyAt:l,goodFramesCount:c})}},SelfieCapture=function(e){var t,a=e.onGuidanceSatisfied,n=e.onGuidanceNotSatisfied,r=e.onSelfieCaptured,o=e.onTimeout,i=e.onExit,s=e.timeoutDurationMs,l=void 0===s?15e3:s,c=e.guidanceMessage,u=e.guidanceSatisfied,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m,g=e.debugMode,h=void 0!==g&&g,b=useResizeObserver__default.default(),v=b.ref,_=b.width,y=void 0===_?1:_,R=b.height,C=void 0===R?1:R,S=React.useReducer(reducer$3,initialState$3),E=S[0],T=S[1],w=React.useRef(null),x=React.useContext(CameraStateContext),I=x.cameraRef,k=x.cameraReady,D=x.videoRef,A=React.useContext(HighPerformanceSelfieGuidanceModelsContext),M=A.onPredictionMade,F=A.error;React.useEffect((function(){k&&D.current&&0!==D.current.videoWidth&&T({type:"configure",payload:{videoWidth:D.current.videoWidth,videoHeight:D.current.videoHeight}})}),[k,D]),React.useEffect((function(){M((function(e){T({type:"facesDetected",payload:{faces:e}})}))}),[M]);var B=React.useState(!1),O=B[0],N=B[1];React.useEffect((function(){var e;return E.faceReady?(null==a||a(),e=setTimeout((function(){N(!0)}),1e3)):null==n||n(),function(){e&&clearTimeout(e)}}),[n,a,E.faceReady]),React.useEffect((function(){tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){if(O&&D.current&&w.current&&E.faces.length>0){if(drawToCanvas(w.current,D.current),!(e=w.current.getContext("2d")))return[2];t=e.getImageData(0,0,D.current.videoWidth,D.current.videoHeight),null==r||r(t,E.faces[0]),clearCanvas(w.current)}return[2]}))}))}),[O,r,E.faces,D]);var L=useTimeout(l,o),P=L.timedOut,U=L.timeoutStartedAt,G=useDebugScalingDetails({enabled:h,pageWidth:y,pageHeight:C,videoWidth:E.videoWidth,videoHeight:E.videoHeight});f.guidesUnsatisfiedColor||(f.guidesUnsatisfiedColor="white"),f.guidesSatisfiedColor||(f.guidesSatisfiedColor="green"),f.guidanceMessagesUnsatisfiedBackgroundColor||(f.guidanceMessagesUnsatisfiedBackgroundColor="red"),f.guidanceMessagesSatisfiedBackgroundColor||(f.guidanceMessagesSatisfiedBackgroundColor="green"),f.guidanceMessagesUnsatisfiedTextColor||(f.guidanceMessagesUnsatisfiedTextColor="white"),f.guidanceMessagesSatisfiedTextColor||(f.guidanceMessagesSatisfiedTextColor="white");var $=useTranslations(p,{guidanceHoldStillText:"Hold still for a few seconds...",guidanceLookStraightText:"Look straight into the camera...",guidanceMoveBackText:"Move back...",guidanceMoveForwardText:"Move forward...",guidanceMoveToCenterText:"Move to the center..."}),V=E.faceReady;return"boolean"==typeof u&&(V=u),c||(c=V?$.guidanceHoldStillText:E.faceLookingAway?$.guidanceLookStraightText:E.faceTooClose?$.guidanceMoveBackText:E.faceTooFar?$.guidanceMoveForwardText:E.faceNotCentered?$.guidanceMoveToCenterText:""),F?React__default.default.createElement(SelfieCaptureFallback,null):React__default.default.createElement(PageContainer,{ref:v,className:"flex"},React__default.default.createElement(InvisibleCanvas,{ref:w}),React__default.default.createElement(CameraVideoTag,null),React__default.default.createElement(FaceCaptureGuideOverlay,{borderColor:V?f.guidesSatisfiedColor:f.guidesUnsatisfiedColor}),""!==c&&React__default.default.createElement(GuidanceMessageContainer,null,React__default.default.createElement(GuidanceMessage,{$background:V?f.guidanceMessagesSatisfiedBackgroundColor:f.guidanceMessagesUnsatisfiedBackgroundColor,$textColor:V?f.guidanceMessagesSatisfiedTextColor:f.guidanceMessagesUnsatisfiedTextColor},c)),h&&E.faces.length>0&&React__default.default.createElement(ObjectDetectionDebugOverlay,{$flipX:!(null===(t=I.current)||void 0===t?void 0:t.isRearFacing)},E.faces.map((function(e,t){var a;return React__default.default.createElement(SelfieCaptureFaceDebugBox,{key:t,face:e,scaling:G,flipX:!(null===(a=I.current)||void 0===a?void 0:a.isRearFacing),color:V?"green":"red"})}))),h&&React__default.default.createElement(DebugStatsPane,null,I.current?React__default.default.createElement(React__default.default.Fragment,null,"✅ Camera: ",I.current.label," (",I.current.width,"x",I.current.height,")"):"❌ Camera not ready",React__default.default.createElement("br",null),E.faceNotCentered?"❌":"✅"," Face Centered",React__default.default.createElement("br",null),E.faceTooClose||E.faceTooFar?"❌":"✅"," Face"," ",E.faceTooClose?"Too Close":E.faceTooFar?"Too Far":"Distance Correct",React__default.default.createElement("br",null),E.faceLookingAway?"❌":"✅"," Face Looking Forward",React__default.default.createElement("br",null),E.goodFramesThresholdMet?"✅":"❌"," ",E.goodFramesCount," ","Good Frames",React__default.default.createElement("br",null),P?"❌":"✅"," Time Remaining:"," ",Math.max(0,l-((new Date).getTime()-(null!=U?U:new Date).getTime())),"ms"),React__default.default.createElement(ExitCaptureButton,{onClick:i},"×"))},initialState$2={frame:null,face:null,requestState:"CAPTURING",requestError:null,imageUrl:null,faceLive:!1,eyeCoveringDetected:!1,maskDetected:!1,headCoveringDetected:!1,phoneDetected:!1,timesLivenessCheckFailed:0},reducer$2=function(e,t){var a,n;switch(t.type){case"livenessReady":return["CAPTURING","FAILED","ERROR"].includes(e.requestState)?tslib.__assign(tslib.__assign({},e),{requestState:"CAPTURED",frame:t.payload.frame,face:t.payload.face}):e;case"livenessChecking":return tslib.__assign(tslib.__assign({},e),{requestState:"IN_PROGRESS"});case"livenessChecked":var r=t.payload.response,o=r.status,i=o.statusMessage,s=o.errorData,l=r.resultData;if("000"!==o.statusCode)return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:new Error("".concat(i,": ").concat(s))});var c="Live Face Detected"===l.verificationResult,u="true"===l.eyeCovering,d="true"===l.faceMask,f="true"===l.headCovering,m="true"===l.cellPhone,p=c&&!u&&!d&&!f,g=p?"PASSED":"FAILED",h=e.timesLivenessCheckFailed;return p?h=0:h+=1,tslib.__assign(tslib.__assign({},e),{frame:null!==(a=t.payload.frame)&&void 0!==a?a:null,face:null!==(n=t.payload.face)&&void 0!==n?n:null,imageUrl:t.payload.imageUrl,requestState:g,faceLive:c,eyeCoveringDetected:u,maskDetected:d,headCoveringDetected:f,phoneDetected:m,timesLivenessCheckFailed:h});case"livenessCheckFailed":return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:t.payload.error});default:return e}},FaceLivenessCapture=function(e){var t=e.onCapture,a=e.onSuccess,n=e.onTimeout,r=e.onExit,o=e.timeoutDurationMs,i=void 0===o?15e3:o,s=e.colors,l=void 0===s?{}:s,c=e.verbiage,u=void 0===c?{}:c,d=e.debugMode,f=React.useContext(SubmissionContext),m=f.checkLiveness,p=f.submissionError,g=React.useContext(HighPerformanceSelfieGuidanceModelsContext).error,h=React.useReducer(reducer$2,initialState$2),b=h[0],v=h[1],_=React.useState(null),y=_[0],R=_[1],C=React.useRef(null),S=React.useRef(null),E=React.useCallback((function(e,a){null==t||t(),v({type:"livenessReady",payload:{frame:e,face:a}})}),[t]),T=b.frame,w=b.face,x="CAPTURED"===b.requestState,I="PASSED"===b.requestState;React.useEffect((function(){T&&w&&x&&!p&&(v({type:"livenessChecking"}),tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t,a,n;return tslib.__generator(this,(function(r){switch(r.label){case 0:return r.trys.push([0,3,,4]),e=cropToShoulders(C.current,S.current,T,w),R(e),a=m,[4,dataUrlToBase64(e)];case 1:return[4,a.apply(void 0,[r.sent()])];case 2:return t=r.sent(),v({type:"livenessChecked",payload:{frame:T,face:w,imageUrl:e,response:t}}),[3,4];case 3:return n=r.sent(),v({type:"livenessCheckFailed",payload:{error:n}}),[3,4];case 4:return[2]}}))})))}),[m,w,T,x,p]);var k=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t,a,n;return tslib.__generator(this,(function(r){switch(r.label){case 0:v({type:"livenessChecking"}),r.label=1;case 1:return r.trys.push([1,4,,5]),a=m,[4,dataUrlToBase64(e)];case 2:return[4,a.apply(void 0,[r.sent()])];case 3:return t=r.sent(),v({type:"livenessChecked",payload:{imageUrl:e,response:t}}),[3,5];case 4:return n=r.sent(),v({type:"livenessCheckFailed",payload:{error:n}}),[3,5];case 5:return[2]}}))}))}),[m]);React.useEffect((function(){I&&b.imageUrl&&(null==a||a(b.imageUrl))}),[a,b.imageUrl,I]),React.useEffect((function(){b.timesLivenessCheckFailed>=(g?1:2)&&(null==n||n())}),[g,n,b.timesLivenessCheckFailed]),useTimeout(i,n,"PASSED"===b.requestState||!!g,"IN_PROGRESS"===b.requestState);var D=useTranslations(u,{guidanceRemoveEyeCoveringsText:"Please remove your eye coverings (sunglasses, eye patch, etc.)...",guidanceRemoveHeadCoveringsText:"Please remove your head coverings (hat, scarf, etc.)...",guidanceRemoveMaskText:"Please remove your mask..."}),A=b.eyeCoveringDetected?D.guidanceRemoveEyeCoveringsText:b.headCoveringDetected?D.guidanceRemoveHeadCoveringsText:b.maskDetected?D.guidanceRemoveMaskText:void 0;return g?React__default.default.createElement(SelfieCaptureFallback,{onFinished:k}):React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(InvisibleCanvas,{ref:C}),React__default.default.createElement(InvisibleCanvas,{ref:S}),React__default.default.createElement(SelfieCapture,{onSelfieCaptured:E,onExit:r,timeoutDurationMs:i,guidanceMessage:A,guidanceSatisfied:!A&&void 0,colors:l,verbiage:D,debugMode:d}),y&&React__default.default.createElement(SelfieProgressPreview,{imageUrl:y}))},SelfieCaptureLoadingOverlay=function(e){var t=e.onDismissed,a=e.assets,n=void 0===a?{}:a,r=e.colors,o=void 0===r?{}:r,i=e.verbiage,s=void 0===i?{}:i,l=React.useContext(CameraStateContext),c=l.cameraReady,u=l.cameraAccessDenied,d=React.useContext(HighPerformanceSelfieGuidanceModelsContext).ready;n.instructionImageUrl||(n.instructionImageUrl="".concat(DEFAULT_CDN_URL,"/Selfie-Image-1.png"));var f=useTranslations(s,{headingText:"Use your device camera to capture your face",removeEyeCoveringsText:"Remove Sunglasses & Hat",avoidExcessiveBacklightingText:"Avoid Excessive Backlighting",continueText:"Continue",cameraInitializingText:"Camera initializing...",modelsWarmingUpText:"Models warming up..."}),m=React.useState(!1),p=m[1];return m[0]?React__default.default.createElement(React__default.default.Fragment,null):u?React__default.default.createElement(CameraAccessDeniedOverlay,{assets:n.cameraAccessDenied,colors:o.cameraAccessDenied,verbiage:s.cameraAccessDenied}):React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("div",{style:{flexGrow:0}},React__default.default.createElement("h3",{style:{marginBottom:18}},f.headingText),React__default.default.createElement("div",{style:{background:"#ccc",maxWidth:"280px",margin:"0 auto 12px",borderRadius:8,lineHeight:1.5,padding:"12px 24px"}},f.removeEyeCoveringsText,React__default.default.createElement("br",null),f.avoidExcessiveBacklightingText)),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement("img",{alt:f.headingText,src:n.instructionImageUrl,style:{position:"relative",top:"5%"}})),React__default.default.createElement(LoaderButton,{disabled:!c||!d,finished:c&&d,colors:o.continueBtn,onClick:function(){p(!0),null==t||t()}},c&&d?f.continueText:d?f.cameraInitializingText:f.modelsWarmingUpText),React__default.default.createElement("div",{style:{display:"none"}},React__default.default.createElement(CameraVideoTag,null))))},FaceLivenessSuccess=function(e){var t,a,n=e.imageUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Face liveness has been verified!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},u.headingText),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement("img",{alt:u.headingText,src:n})),React__default.default.createElement("div",null,React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},FaceLivenessFailure=function(e){var t,a,n,r,o=e.canRetry,i=void 0===o||o,s=e.onRetryClick,l=e.onExitClick,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m;u.imageUrl||(u.imageUrl="".concat(DEFAULT_CDN_URL,"/manual_capture.png")),f.retryBtn||(f.retryBtn={}),(t=f.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=f.retryBtn).textColor||(a.textColor="white"),f.exitBtn||(f.exitBtn={}),(n=f.exitBtn).backgroundColor||(n.backgroundColor="#666"),(r=f.exitBtn).textColor||(r.textColor="white");var g=useTranslations(p,{headingText:"Live face not detected, please try again",retryBtnText:"Retry",exitBtnText:"Exit"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},g.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:g.headingText,src:u.imageUrl})),React__default.default.createElement("div",{style:{marginTop:24}},i&&React__default.default.createElement(LoaderButton,{onClick:s,colors:f.retryBtn,style:{marginRight:15},finished:!0},g.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:l,colors:f.exitBtn,finished:!0},g.exitBtnText))))},FaceLivenessWizard=function(e){var t=e.onComplete,a=e.onSuccess,n=e.onTimeout,r=e.onExitAfterFailure,o=e.timeoutDurationMs,i=void 0===o?15e3:o,s=e.maxRetries,l=void 0===s?2:s,c=e.skipSuccessScreen,u=void 0!==c&&c,d=e.assets,f=void 0===d?{}:d,m=e.colors,p=void 0===m?{}:m,g=e.verbiage,h=void 0===g?{}:g,b=e.debugMode,v=void 0!==b&&b,_=React.useContext(SubmissionContext),y=_.submissionResponse,R=_.setSelfieImage,C=_.logSelfieCaptureAttempt,S=React.useContext(CameraStateContext).releaseCameraAccess,E=React.useState(""),T=E[0],w=E[1],x=React.useState(0),I=x[0],k=x[1],D=React.useState("LOADING"),A=D[0],M=D[1],F=React.useRef(),B=React.useRef(),O=React.useRef();React.useEffect((function(){O.current=new Date}),[]),React.useEffect((function(){"CAPTURING"===A&&(F.current=new Date)}),[A]);var N=React.useCallback((function(){B.current=new Date}),[]),L=React.useCallback((function(){var e,t,a;C({autoCapture:"Y",captureTime:(null!==(e=B.current)&&void 0!==e?e:new Date).getTime()-(null!==(t=F.current)&&void 0!==t?t:new Date).getTime(),operationTime:(new Date).getTime()-(null!==(a=O.current)&&void 0!==a?a:new Date).getTime()}),O.current=new Date}),[C]),P=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(n){switch(n.label){case 0:return M("SUCCESS"),w(e),t=R,[4,dataUrlToBase64(e)];case 1:return t.apply(void 0,[n.sent()]),null==a||a(y),[2]}}))}))}),[a,R,y]),U=React.useCallback((function(){M("FAILED"),null==n||n(y)}),[n,y]),G=React.useState(0),$=G[0],V=G[1],j=React.useCallback((function(){V((function(e){return e+1})),M("LOADING")}),[]),z=React.useCallback((function(){L(),S(),setTimeout((function(){null==t||t(y)}),0)}),[L,t,S,y]),q=useShowSuccessScreen(u,"SUCCESS"===A,z);return React__default.default.createElement(React__default.default.Fragment,null,"LOADING"!==A&&function(){switch(A){case"CAPTURING":return React__default.default.createElement(FaceLivenessCapture,{key:"capture".concat($),onCapture:N,onSuccess:P,onTimeout:U,onExit:j,timeoutDurationMs:i,colors:p,verbiage:h,debugMode:v});case"SUCCESS":return q?React__default.default.createElement(FaceLivenessSuccess,{key:"success",imageUrl:T,colors:p.success,verbiage:h.success,onDoneClick:z,onRetryClick:function(){L(),M("CAPTURING")}}):null;case"FAILED":return React__default.default.createElement(FaceLivenessFailure,{key:"failure",assets:f.failure,colors:p.failure,verbiage:h.failure,canRetry:l>-1&&I<l,onRetryClick:function(){L(),k((function(e){return e+1})),M("CAPTURING")},onExitClick:function(){S(),setTimeout((function(){null==r||r(y)}),0)}});default:return null}}(),React__default.default.createElement(SelfieCaptureLoadingOverlay,{key:$,assets:f.loadingOverlay,colors:p.loadingOverlay,verbiage:h.loadingOverlay,onDismissed:function(){M("CAPTURING")}}))},GuideOrientationProvider=function(e){var t=e.children,a=React.useState({width:1,height:1}),n=a[1],r=React.useState(1),o=r[0],i=r[1],s=useResizeObserver__default.default(),l=s.ref,c=s.width,u=void 0===c?1:c,d=s.height,f=void 0===d?1:d,m=u/f,p=React.useCallback((function(e){var t=e.target;i(t.naturalWidth/t.naturalHeight)}),[]);return React__default.default.createElement(GuideOrientationContext.Provider,{value:{orientation:"landscape",wrapperWidth:u,wrapperHeight:f,wrapperAspectRatio:m,imageAspectRatio:o,setDimensions:n,wrapperRef:l,onImageLoaded:p}},t)},SubmissionSuccess=function(){var e=React.useContext(SubmissionContext),t=e.submissionRequest,a=e.submissionResponse,n=React.useState(!1),r=n[0],o=n[1],i=React.useState(!0),s=i[0],l=i[1],c=React.useMemo((function(){var e,a,n,r,o,i,l=JSON.parse(JSON.stringify(t));return s&&((null===(a=null===(e=null==l?void 0:l.customerData)||void 0===e?void 0:e.idData)||void 0===a?void 0:a.idImageFront)&&(l.customerData.idData.idImageFront=truncate(l.customerData.idData.idImageFront,200)),(null===(r=null===(n=null==l?void 0:l.customerData)||void 0===n?void 0:n.idData)||void 0===r?void 0:r.idImageBack)&&(l.customerData.idData.idImageBack=truncate(l.customerData.idData.idImageBack,200)),(null===(i=null===(o=null==l?void 0:l.customerData)||void 0===o?void 0:o.biometricData)||void 0===i?void 0:i.selfie)&&(l.customerData.biometricData.selfie=truncate(l.customerData.biometricData.selfie,200))),JSON.stringify(l,null,2)}),[t,s]);return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("h3",null,"Submission completed!"),React__default.default.createElement("button",{onClick:function(){o(!r)}},r?"Hide":"Show"," request body"),r&&React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("button",{style:{marginLeft:8},onClick:function(){l(!s)}},s?"Display full images":"Truncate images"),React__default.default.createElement("h5",null,"Request Body"),React__default.default.createElement("pre",null,c)),React__default.default.createElement("h5",null,"Response Body"),React__default.default.createElement("pre",null,JSON.stringify(a,null,2)))};function truncate(e,t){var a=e.split("").splice(0,t).join("");return a.length<e.length&&(a+="..."),a}var AdditionalDocumentCapture=function(e){var t=e.document,a=e.onComplete,n=e.verbiage,r=void 0===n?{}:n,o=React.useState(null),i=o[0],s=o[1],l=useTranslations(r,{headingText:"Additional document capture",nextBtnText:"Next"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,{style:{textAlign:"left"}},React__default.default.createElement("h3",{style:{margin:"0 0 8px"}},l.headingText,": ",t.name),t.description&&React__default.default.createElement("p",{style:{margin:"8px 0"}},t.description),React__default.default.createElement("p",{style:{margin:"8px 0"}},React__default.default.createElement("input",{type:"file",accept:"image/*,.pdf",onChange:function(e){var t,a=null===(t=e.target.files)||void 0===t?void 0:t[0];a&&s(a)}})),React__default.default.createElement("p",{style:{margin:"8px 0"}},React__default.default.createElement("button",{disabled:!i,onClick:function(e){if(e.preventDefault(),i){var n=new FileReader;n.onloadend=function(){if(n.result){var e=n.result.toString();null==a||a({documentName:t.name,additionalDocument:{name:i.name,fileContent:dataUrlToBase64Sync(e),type:contentDispositionFromDataUrl(e),fileUploadType:"Y",isImageControlData:"N",fieldId:""}})}},n.readAsDataURL(i)}}},l.nextBtnText))))},AdditionalDocumentCaptureWizard=function(e){var t=e.documents,a=e.onComplete,n=e.verbiage,r=void 0===n?{}:n,o=React.useState([]),i=o[0],s=o[1],l=i.length,c=t[l],u=l>=t.length;return React.useEffect((function(){(null==c?void 0:c.skip)&&tslib.__awaiter(void 0,void 0,void 0,(function(){var e;return tslib.__generator(this,(function(t){switch(t.label){case 0:return[4,null===(e=c.skip)||void 0===e?void 0:e.call(c)];case 1:return t.sent()&&s((function(e){return tslib.__spreadArray(tslib.__spreadArray([],e,!0),[null],!1)})),[2]}}))}))}),[c]),React.useEffect((function(){u&&(null==a||a(i.filter((function(e){return!!e}))))}),[u,a,i]),u?React__default.default.createElement(React__default.default.Fragment,null,"Thanks, your documents have been received."):React__default.default.createElement(AdditionalDocumentCapture,{key:l,document:c,verbiage:r,onComplete:function(e){s((function(t){return tslib.__spreadArray(tslib.__spreadArray([],t,!0),[e],!1)}))}})};function signatureDataToIdmissionFormat(e){var t,a=null!==(t=e.toDataURL())&&void 0!==t?t:null,n={clickX_simple:[],clickY_simple:[],time_simple:[],pressure:"",fileContent:a?dataUrlToBase64Sync(a):""};return e.toData().forEach((function(e){var t=[],a=[],r=[];e.forEach((function(e){t.push(e.x),a.push(e.y),r.push(new Date(e.time).toString())})),n.clickX_simple.push(t),n.clickY_simple.push(a),n.time_simple.push(r)})),n}var templateObject_1$2,templateObject_2,templateObject_3,templateObject_4,templateObject_1$1,templateObject_1,SignatureCanvasContainer=styled__default.default.div(templateObject_1$2||(templateObject_1$2=tslib.__makeTemplateObject(["\n position: absolute;\n top: 25%;\n left: 15%;\n width: 70%;\n height: 50%;\n\n @media (max-width: 800px) {\n top: 15%;\n left: 2%;\n width: 96%;\n height: 70%;\n }\n"],["\n position: absolute;\n top: 25%;\n left: 15%;\n width: 70%;\n height: 50%;\n\n @media (max-width: 800px) {\n top: 15%;\n left: 2%;\n width: 96%;\n height: 70%;\n }\n"]))),SignaturePad=styled__default.default.div(templateObject_2||(templateObject_2=tslib.__makeTemplateObject(["\n position: relative;\n background: rgba(255, 255, 255, 0.5);\n border-radius: 16px;\n flex-grow: 1;\n z-index: 100;\n height: 100%;\n"],["\n position: relative;\n background: rgba(255, 255, 255, 0.5);\n border-radius: 16px;\n flex-grow: 1;\n z-index: 100;\n height: 100%;\n"]))),SignatureButtonsContainer=styled__default.default.div(templateObject_3||(templateObject_3=tslib.__makeTemplateObject(["\n flex-grow: 0;\n padding-top: 12px;\n display: flex;\n z-index: 1000;\n position: relative;\n"],["\n flex-grow: 0;\n padding-top: 12px;\n display: flex;\n z-index: 1000;\n position: relative;\n"]))),SignaturePaperBacking=styled__default.default.div(templateObject_4||(templateObject_4=tslib.__makeTemplateObject(["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background-color: #e5e5f7;\n opacity: 0.8;\n background-image: radial-gradient(#444cf7 0.5px, transparent 0.5px),\n radial-gradient(#444cf7 0.5px, #e5e5f7 0.5px);\n background-size: 20px 20px;\n background-position: 0 0, 10px 10px;\n"],["\n width: 100%;\n height: 100%;\n display: flex;\n flex-direction: column;\n background-color: #e5e5f7;\n opacity: 0.8;\n background-image: radial-gradient(#444cf7 0.5px, transparent 0.5px),\n radial-gradient(#444cf7 0.5px, #e5e5f7 0.5px);\n background-size: 20px 20px;\n background-position: 0 0, 10px 10px;\n"]))),SignatureCapture=function(e){var t=e.onAccept,a=e.verbiage,n=void 0===a?{}:a,r=useResizeObserver__default.default(),o=r.ref,i=r.width,s=r.height,l=React.useRef(null),c=useTranslations(n,{headingText:"Please sign the box below",acceptBtnText:"Accept",clearBtnText:"Clear"});return React__default.default.createElement(PageContainer,null,React__default.default.createElement(SignaturePaperBacking,null,React__default.default.createElement(GuidanceMessageContainer,{$top:"5vh"},React__default.default.createElement(GuidanceMessage,null,c.headingText)),React__default.default.createElement(SignatureCanvasContainer,null,React__default.default.createElement(SignaturePad,{ref:o},React__default.default.createElement(SignatureCanvas__default.default,{ref:l,canvasProps:{width:i,height:s}})),React__default.default.createElement(SignatureButtonsContainer,null,React__default.default.createElement("button",{onClick:function(e){var t;e.preventDefault(),null===(t=l.current)||void 0===t||t.clear()}},c.clearBtnText),React__default.default.createElement("button",{style:{marginLeft:"auto"},onClick:function(e){if(e.preventDefault(),l.current){var a=signatureDataToIdmissionFormat(l.current);null==t||t(a,l.current.toDataURL())}}},c.acceptBtnText)))))},useVideoRecorder=function(e){var t=React.useRef(null),a=React.useRef([]),n=React.useState(null),r=n[0],o=n[1],i=React.useState(!1),s=i[0],l=i[1],c=null==e?void 0:e.stream,u=React.useCallback((function(){c&&(a.current=[],l(!0),t.current=new MediaRecorder(c),t.current.ondataavailable=function(e){a.current.push(e.data)},t.current.onstop=function(){var t=new Blob(a.current,{type:"video/mp4"});a.current=[],o(URL.createObjectURL(t)),l(!1),null==e||e.release()},t.current.start())}),[e,c]),d=React.useCallback((function(){var e;null===(e=t.current)||void 0===e||e.stop()}),[]);return{isRecording:s,startRecording:u,stopRecording:d,videoUrl:r}},VideoSignatureCapture=function(e){var t,a,n=e.onVideoCaptured,r=e.onFaceNotDetected,o=e.onExit,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l,u=e.debugMode,d=void 0!==u&&u,f=React.useContext(CameraStateContext),m=f.cameraRef,p=f.videoRef,g=useResizeObserver__default.default(),h=g.ref,b=g.width,v=g.height,_=React.useRef(null),y=React.useRef(null),R=React.useRef([]),C=React.useState(null),S=C[0],E=C[1],T=React.useContext(HighPerformanceSelfieGuidanceModelsContext).onPredictionMade,w=useVideoRecorder(m.current),x=w.isRecording,I=w.startRecording,k=w.stopRecording,D=w.videoUrl,A=React.useState(null),M=A[0],F=A[1],B=React.useState(null),O=B[0],N=B[1],L=React.useState(null),P=L[0],U=L[1];s.guidanceMessageBackgroundColor||(s.guidanceMessageBackgroundColor="#ccc"),s.guidanceMessageTextColor||(s.guidanceMessageTextColor="black");var G=useTranslations(c,{guidanceMessageText:"Please sign the box below",acceptBtnText:"Accept",clearBtnText:"Clear"}),$=React.useRef(null);React.useEffect((function(){setTimeout((function(){if(!x&&!D&&$.current){I();var e=$.current.captureStream(25);y.current=new MediaRecorder(e,{}),y.current.start(),y.current.ondataavailable=function(e){var t;R.current.push(e.data),"recording"===(null===(t=y.current)||void 0===t?void 0:t.state)&&y.current.stop()},y.current.onstop=function(){var e=new Blob(R.current,{type:"video/mp4"});U(e);var t=URL.createObjectURL(e);E(t)}}}),100)}),[x,I,D]),React.useEffect((function(){P&&M&&O&&(null==n||n(P,M,O))}),[n,M,O,P]);var V=React.useRef(0);React.useEffect((function(){var e;if(_.current&&p.current&&$.current&&m.current&&x){var t=[m.current.width,m.current.height],a=t[0],n=t[1],r=window.innerWidth<window.innerHeight;r&&a>n&&(a=(e=[n,a])[0],n=e[1]),$.current.width=a,$.current.height=n;var o=$.current.getContext("2d");if(o)return V.current=requestAnimationFrame((function e(){return tslib.__awaiter(this,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(i){return _.current&&p.current&&$.current?(t=[a*(r?.02:.15),n*(r?.15:.25),a*(r?.96:.7),n*(r?.7:.5)],o.drawImage(p.current,0,0,a,n),o.beginPath(),o.fillStyle="rgba(255,255,255,0.5)",o.roundRect.apply(o,tslib.__spreadArray(tslib.__spreadArray([],t,!1),[16],!1)),o.fill(),o.drawImage.apply(o,tslib.__spreadArray([_.current.getCanvas()],t,!1)),V.current=requestAnimationFrame(e),[2]):(cancelAnimationFrame(V.current),[2])}))}))})),function(){cancelAnimationFrame(V.current)}}}),[m,x,r,p]);var j=React.useState(0),z=j[0],q=j[1];return React.useEffect((function(){T((function(e){q((function(t){return 0===e.length?t+1:0}))}))}),[T]),React.useEffect((function(){z>=2&&(null==r||r())}),[z,r]),!x&&D?React__default.default.createElement(React__default.default.Fragment,null,S&&React__default.default.createElement("video",{src:S,controls:!0,width:"100%"}),O&&React__default.default.createElement("img",{src:O,alt:"signature"}),M&&React__default.default.createElement("textarea",{readOnly:!0,style:{width:"100%",height:500},value:JSON.stringify(M,null,2)})):React__default.default.createElement(PageContainer,{className:"flex"},React__default.default.createElement(CameraVideoTag,null),G.guidanceMessageText&&React__default.default.createElement(GuidanceMessageContainer,{$top:"5vh"},React__default.default.createElement(GuidanceMessage,{$background:s.guidanceMessageBackgroundColor,$textColor:s.guidanceMessageTextColor},G.guidanceMessageText)),React__default.default.createElement(SignatureCanvasContainer,null,React__default.default.createElement(SignaturePad,{ref:h},React__default.default.createElement(SignatureCanvas__default.default,{ref:_,canvasProps:{width:b,height:v}})),React__default.default.createElement(SignatureButtonsContainer,null,React__default.default.createElement("button",{onClick:function(e){var t;e.preventDefault(),null===(t=_.current)||void 0===t||t.clear()}},G.clearBtnText),React__default.default.createElement("button",{style:{marginLeft:"auto"},onClick:function(e){var t;if(e.preventDefault(),_.current){var a=signatureDataToIdmissionFormat(_.current);F(a),N(_.current.toDataURL()),k(),null===(t=y.current)||void 0===t||t.stop()}}},G.acceptBtnText))),d&&React__default.default.createElement(DebugStatsPane,null,"Video: ",null===(t=m.current)||void 0===t?void 0:t.width,"x",null===(a=m.current)||void 0===a?void 0:a.height),React__default.default.createElement(ExitCaptureButton,{onClick:o},"×"),React__default.default.createElement("div",{style:{display:"none"}},React__default.default.createElement("canvas",{ref:$})))},VideoSignatureLoadingOverlay=function(e){var t=e.assets,a=e.verbiage;return React__default.default.createElement(SelfieCaptureLoadingOverlay,{assets:void 0===t?{}:t,verbiage:void 0===a?{}:a,onDismissed:e.onDismissed})},VideoSignatureSuccess=function(e){var t,a,n=e.videoUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Video signature has been successfully captured!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h1",null,u.headingText),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement(StyledVideo$1,{src:n,poster:n+"#t=0.1",controls:!0,preload:"metadata",autoPlay:!0})),React__default.default.createElement("div",null,React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},StyledVideo$1=styled__default.default.video(templateObject_1$1||(templateObject_1$1=tslib.__makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"],["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"]))),VideoSignatureWizard=function(e){var t=e.onComplete,a=e.onVideoCaptured,n=e.onRetryClicked,r=e.skipSuccessScreen,o=void 0!==r&&r,i=e.assets,s=void 0===i?{}:i,l=e.colors,c=void 0===l?{}:l,u=e.verbiage,d=void 0===u?{}:u,f=e.debugMode,m=void 0!==f&&f,p=React.useContext(SubmissionContext),g=p.selfieImage,h=p.signatureVideo,b=p.setSelfieImage,v=p.setSignatureData,_=p.setSignatureVideo,y=p.logSelfieCaptureAttempt,R=React.useState("LOADING"),C=R[0],S=R[1],E=React.useRef(),T=React.useRef(),w=React.useRef();React.useEffect((function(){E.current=new Date}),[]),React.useEffect((function(){"CHECKING_LIVENESS"===C&&(T.current=new Date)}),[C]);var x=React.useCallback((function(){var e,t,a;y({autoCapture:"Y",captureTime:(null!==(e=w.current)&&void 0!==e?e:new Date).getTime()-(null!==(t=T.current)&&void 0!==t?t:new Date).getTime(),operationTime:(new Date).getTime()-(null!==(a=E.current)&&void 0!==a?a:new Date).getTime()}),E.current=new Date}),[y]),I=React.useCallback((function(){S("CHECKING_LIVENESS")}),[]),k=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return S("CAPTURING_SIGNATURE"),x(),g?[3,2]:(t=b,[4,dataUrlToBase64(e)]);case 1:t.apply(void 0,[a.sent()]),a.label=2;case 2:return[2]}}))}))}),[x,g,b]),D=React.useCallback((function(e,t,n){v(t),_(URL.createObjectURL(e)),S("SUCCESS"),null==a||a(e,t,n)}),[a,v,_]),A=React.useCallback((function(){S("CHECKING_LIVENESS")}),[]),M=React.useState(0),F=M[0],B=M[1],O=React.useCallback((function(){B((function(e){return e+1})),S("LOADING")}),[]),N=React.useCallback((function(){null==n||n(),O()}),[O,n]),L=useShowSuccessScreen(o,"SUCCESS"===C,t);return React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,{throttleMs:"CAPTURING_SIGNATURE"===C?250:0},"LOADING"!==C&&function(){switch(C){case"CHECKING_LIVENESS":return React__default.default.createElement(FaceLivenessCapture,{onSuccess:k,onExit:O,colors:c.faceLiveness,verbiage:d.faceLiveness,debugMode:m});case"CAPTURING_SIGNATURE":return React__default.default.createElement(VideoSignatureCapture,{onVideoCaptured:D,onFaceNotDetected:A,onExit:O,colors:c,verbiage:d,debugMode:m});case"SUCCESS":if(!L)return;return React__default.default.createElement(VideoSignatureSuccess,{videoUrl:null!=h?h:"",onDoneClick:t,onRetryClick:N,colors:c.success,verbiage:d.success});default:return null}}(),React__default.default.createElement(VideoSignatureLoadingOverlay,{key:F,onDismissed:I,assets:s.loadingOverlay,verbiage:d.loadingOverlay}))},CompositeWizardComponent=function(e){var t,a,n,r,o,i=e.checks,s=e.idCaptureProps,l=void 0===s?{}:s,c=e.faceLivenessProps,u=void 0===c?{}:c,d=e.signatureCaptureProps,f=void 0===d?{}:d,m=e.videoSignatureCaptureProps,p=void 0===m?{}:m,g=e.additionalDocumentCaptureProps,h=e.captureSignature,b=void 0!==h&&h,v=e.captureSignatureVideo,_=void 0!==v&&v,y=e.debugMode,R=void 0!==y&&y,C=React.useContext(SubmissionContext),S=C.submit,E=C.submissionStatus,T=C.setSignatureData,w=C.setAdditionalDocuments,x=React.useState(0),I=x[0],k=x[1],D=React.useMemo((function(){var e,t,a=tslib.__spreadArray([],i,!0);if(b&&_)throw new Error("captureSignature and captureSignatureVideo cannot be used together");return b&&a.push("SignatureCapture"),_&&(a.push("VideoSignatureCapture"),a.includes("FaceLiveness")&&a.splice(a.indexOf("FaceLiveness"),1)),null!==(t=null===(e=null==g?void 0:g.documents)||void 0===e?void 0:e.length)&&void 0!==t&&t&&a.push("AdditionalDocumentCapture"),a}),[null===(t=null==g?void 0:g.documents)||void 0===t?void 0:t.length,b,_,i]),A=D[I],M=I>=D.length;React.useEffect((function(){"SignatureCapture"===A&&"function"==typeof b?b().then((function(e){e||k((function(e){return e+1}))})):"VideoSignatureCapture"===A&&"function"==typeof _&&_().then((function(e){e||k((function(e){return e+1}))}))}),[b,_,A]),React.useEffect((function(){M&&S()}),[M,S]);var F=l.onSuccess,B=React.useCallback((function(e){null==F||F(e),k((function(e){return e+1}))}),[F]),O=u.onComplete,N=React.useCallback((function(e){null==O||O(e),k((function(e){return e+1}))}),[O]),L=React.useCallback((function(e){T(e),k((function(e){return e+1}))}),[T]),P=p.onComplete,U=React.useCallback((function(){null==P||P(),k((function(e){return e+1}))}),[P]),G=React.useState(0),$=G[0],V=G[1],j=p.onRetryClicked,z=React.useCallback((function(){null==j||j(),V((function(e){return e+1}))}),[j]),q=null==g?void 0:g.onComplete,W=React.useCallback((function(e){w(e),null==q||q(e),k((function(e){return e+1}))}),[q,w]),H=React.useMemo((function(){var e;return null!==(e=null==g?void 0:g.documents)&&void 0!==e?e:[]}),[null==g?void 0:g.documents]);if(M)switch(E){case SubmissionStatus.SUBMITTING:return React__default.default.createElement(PageContainer,{className:"flex"},React__default.default.createElement(Spinner,null));case SubmissionStatus.SUBMITTED:return React__default.default.createElement(SubmissionSuccess,null);case SubmissionStatus.FAILED:return React__default.default.createElement(React__default.default.Fragment,null,"Submission failed!");default:return React__default.default.createElement(React__default.default.Fragment,null,"Complete!!")}switch(D[I]){case"IdCapture":return React__default.default.createElement(IdCaptureModelsProvider,{documentDetectionModelUrl:null!==(n=null===(a=l.assets)||void 0===a?void 0:a.documentDetectionModelUrl)&&void 0!==n?n:"",focusModelUrl:null!==(o=null===(r=l.assets)||void 0===r?void 0:r.focusModelUrl)&&void 0!==o?o:"",logPredictions:R},React__default.default.createElement(CameraProvider,{key:"IdCaptureCamera"},React__default.default.createElement(GuideOrientationProvider,null,React__default.default.createElement(IdCaptureWizard,tslib.__assign({},l,{onSuccess:B})))));case"FaceLiveness":return React__default.default.createElement(CameraProvider,{key:"FaceLivenessCamera",preferFrontFacingCamera:!0,preferContinuityCamera:!1},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(FaceLivenessWizard,tslib.__assign({},u,{onComplete:N}))));case"SignatureCapture":return React__default.default.createElement(SignatureCapture,tslib.__assign({},f,{onAccept:L}));case"VideoSignatureCapture":return React__default.default.createElement(CameraProvider,{key:"SignatureKycCamera-".concat($),preferContinuityCamera:!1,preferFrontFacingCamera:!0},React__default.default.createElement(VideoSignatureWizard,tslib.__assign({},p,{onComplete:U,onRetryClicked:z})));case"AdditionalDocumentCapture":return React__default.default.createElement(AdditionalDocumentCaptureWizard,tslib.__assign({},g,{documents:H,onComplete:W}));default:return React__default.default.createElement(React__default.default.Fragment,null)}},IdValidation=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=void 0===n?"prod":n,o=e.submissionUrl,i=e.companyId,s=e.manualReviewRequired,l=e.verifyIdWithExternalDatabases,c=e.personalData,u=e.cardData,d=e.webhooksEnabled,f=e.webhooksClientTraceId,m=e.webhooksStripSpecialCharacters,p=e.idAutoCaptureEnabled,g=void 0===p||p,h=e.idCardAutoCaptureScoreThreshold,b=void 0===h?.8:h,v=e.passportAutoCaptureScoreThreshold,_=void 0===v?.75:v,y=e.idCardFocusScoreThreshold,R=void 0===y?.3:y,C=e.passportFocusScoreThreshold,S=void 0===C?.3:C,E=e.skipSuccessScreen,T=void 0!==E&&E,w=e.onBeforeSubmit,x=e.onComplete,I=e.onApproved,k=e.onDenied,D=e.assets,A=void 0===D?{}:D,M=e.colors,F=void 0===M?{}:M,B=e.verbiage,O=void 0===B?{}:B,N=e.captureSignature,L=void 0!==N&&N,P=e.captureSignatureVideo,U=void 0!==P&&P,G=e.captureAdditionalDocuments,$=void 0===G?[]:G,V=e.geolocationEnabled,j=void 0===V||V,z=e.geolocationRequired,q=void 0!==z&&z,W=e.debugMode,H=void 0!==W&&W;useLanguage(void 0===t?"auto":t);var K=React.useMemo((function(){return{autoCaptureEnabled:g,idCardAutoCaptureScoreThreshold:b,passportAutoCaptureScoreThreshold:_,mrzDetectionScoreThreshold:.5,idCardFocusScoreThreshold:R,passportFocusScoreThreshold:S,barcodeScanningEnabled:!1,skipSuccessScreen:T,assets:A,colors:F,verbiage:O,debugMode:H}}),[A,F,H,g,b,R,_,S,T,O]),Y=React.useMemo((function(){return{documents:$,verbiage:null==O?void 0:O.additionalDocumentCapture}}),[$,null==O?void 0:O.additionalDocumentCapture]),X=React.useMemo((function(){return{verbiage:null==O?void 0:O.signatureCapture}}),[null==O?void 0:O.signatureCapture]),J=React.useMemo((function(){return{skipSuccessScreen:T,colors:null==F?void 0:F.videoSignatureCapture,verbiage:null==O?void 0:O.videoSignatureCapture,debugMode:H}}),[null==F?void 0:F.videoSignatureCapture,H,T,null==O?void 0:O.videoSignatureCapture]),Z=React.useCallback((function(e){null==x||x(e),"Approved"===e.resultData.verificationResult?null==I||I(e):null==k||k(e)}),[I,x,k]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.VALIDATE,environment:r,url:o,token:a,companyId:i,manualReviewRequired:s,verifyIdWithExternalDatabases:l,personalData:c,cardData:u,webhooksEnabled:d,webhooksClientTraceId:f,webhooksStripSpecialCharacters:m,onBeforeSubmit:w,onResponseReceived:Z,geolocationEnabled:j,geolocationRequired:q},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["IdCapture"]}),[]),idCaptureProps:K,signatureCaptureProps:X,videoSignatureCaptureProps:J,additionalDocumentCaptureProps:Y,captureSignature:L,captureSignatureVideo:U,debugMode:H}))},FaceValidation=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=void 0===n?"prod":n,o=e.submissionUrl,i=e.companyId,s=e.webhooksEnabled,l=e.webhooksClientTraceId,c=e.webhooksStripSpecialCharacters,u=e.timeoutDurationMs,d=void 0===u?15e3:u,f=e.skipSuccessScreen,m=void 0!==f&&f,p=e.onBeforeSubmit,g=e.onComplete,h=e.onApproved,b=e.onDenied,v=e.onExitAfterFailure,_=e.assets,y=e.colors,R=e.verbiage,C=e.geolocationEnabled,S=void 0===C||C,E=e.geolocationRequired,T=void 0!==E&&E,w=e.debugMode,x=void 0!==w&&w;useLanguage(void 0===t?"auto":t);var I=React.useMemo((function(){return{timeoutDurationMs:d,skipSuccessScreen:m,onComplete:g,onSuccess:h,onTimeout:b,onExitAfterFailure:v,assets:_,colors:y,verbiage:R,debugMode:x}}),[_,y,x,h,g,b,v,m,d,R]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.NONE,environment:r,url:o,token:a,companyId:i,webhooksEnabled:s,webhooksClientTraceId:l,webhooksStripSpecialCharacters:c,onBeforeSubmit:p,geolocationEnabled:S,geolocationRequired:T},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["FaceLiveness"]}),[]),faceLivenessProps:I,debugMode:x}))},IdAndFaceValidation=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=void 0===n?"prod":n,o=e.submissionUrl,i=e.companyId,s=e.manualReviewRequired,l=e.verifyIdWithExternalDatabases,c=e.personalData,u=e.cardData,d=e.webhooksEnabled,f=e.webhooksClientTraceId,m=e.webhooksStripSpecialCharacters,p=e.idAutoCaptureEnabled,g=void 0===p||p,h=e.idCardAutoCaptureScoreThreshold,b=void 0===h?.8:h,v=e.mrzDetectionScoreThreshold,_=void 0===v?.5:v,y=e.passportAutoCaptureScoreThreshold,R=void 0===y?.75:y,C=e.idCardFocusScoreThreshold,S=void 0===C?.3:C,E=e.passportFocusScoreThreshold,T=void 0===E?.3:E,w=e.faceLivenessTimeoutDurationMs,x=void 0===w?15e3:w,I=e.skipSuccessScreen,k=void 0!==I&&I,D=e.onBeforeSubmit,A=e.onComplete,M=e.onApproved,F=e.onDenied,B=e.onExitAfterFailure,O=e.captureSignature,N=void 0!==O&&O,L=e.captureSignatureVideo,P=void 0!==L&&L,U=e.captureAdditionalDocuments,G=void 0===U?[]:U,$=e.assets,V=void 0===$?{}:$,j=e.colors,z=void 0===j?{}:j,q=e.verbiage,W=void 0===q?{}:q,H=e.geolocationEnabled,K=void 0===H||H,Y=e.geolocationRequired,X=void 0!==Y&&Y,J=e.debugMode,Z=void 0!==J&&J;useLanguage(void 0===t?"auto":t);var Q=React.useMemo((function(){return{assets:V.idCapture,colors:z.idCapture,verbiage:W.idCapture,autoCaptureEnabled:g,idCardAutoCaptureScoreThreshold:b,passportAutoCaptureScoreThreshold:R,mrzDetectionScoreThreshold:_,idCardFocusScoreThreshold:S,passportFocusScoreThreshold:T,skipSuccessScreen:k,debugMode:Z}}),[V.idCapture,z.idCapture,Z,g,b,S,_,R,T,k,W.idCapture]),ee=React.useMemo((function(){return{timeoutDurationMs:x,onTimeout:F,onExitAfterFailure:B,skipSuccessScreen:k,assets:V.faceLiveness,colors:z.faceLiveness,verbiage:W.faceLiveness,debugMode:Z}}),[V.faceLiveness,z.faceLiveness,Z,x,F,B,k,W.faceLiveness]),te=React.useMemo((function(){return{verbiage:W.signatureCapture}}),[null==W?void 0:W.signatureCapture]),ae=React.useMemo((function(){return{skipSuccessScreen:k,colors:null==z?void 0:z.videoSignatureCapture,verbiage:null==W?void 0:W.videoSignatureCapture,debugMode:Z}}),[null==z?void 0:z.videoSignatureCapture,Z,k,null==W?void 0:W.videoSignatureCapture]),ne=React.useMemo((function(){return{documents:G,verbiage:null==W?void 0:W.additionalDocumentCapture}}),[G,null==W?void 0:W.additionalDocumentCapture]),re=React.useCallback((function(e){null==A||A(e),"Approved"===e.resultData.verificationResult?null==M||M(e):null==F||F(e)}),[M,A,F]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.VALIDATE,environment:r,url:o,token:a,companyId:i,manualReviewRequired:s,verifyIdWithExternalDatabases:l,personalData:c,cardData:u,webhooksEnabled:d,webhooksClientTraceId:f,webhooksStripSpecialCharacters:m,onBeforeSubmit:D,onResponseReceived:re,geolocationEnabled:K,geolocationRequired:X},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["IdCapture","FaceLiveness"]}),[]),idCaptureProps:Q,faceLivenessProps:ee,signatureCaptureProps:te,videoSignatureCaptureProps:ae,additionalDocumentCaptureProps:ne,captureSignature:N,captureSignatureVideo:P,debugMode:Z}))},CustomerIdAndBiometricsEnrollment=function(e){var t=e.enrollmentId,a=e.lang,n=e.submissionToken,r=e.submissionEnvironment,o=void 0===r?"prod":r,i=e.submissionUrl,s=e.companyId,l=e.manualReviewRequired,c=e.verifyIdWithExternalDatabases,u=e.personalData,d=e.cardData,f=e.deduplicationEnabled,m=e.deduplicationSynchronous,p=e.webhooksEnabled,g=e.webhooksClientTraceId,h=e.webhooksStripSpecialCharacters,b=e.idAutoCaptureEnabled,v=void 0===b||b,_=e.idCardAutoCaptureScoreThreshold,y=void 0===_?.8:_,R=e.mrzDetectionScoreThreshold,C=void 0===R?.5:R,S=e.passportAutoCaptureScoreThreshold,E=void 0===S?.75:S,T=e.idCardFocusScoreThreshold,w=void 0===T?.3:T,x=e.passportFocusScoreThreshold,I=void 0===x?.3:x,k=e.faceLivenessTimeoutDurationMs,D=void 0===k?15e3:k,A=e.skipSuccessScreen,M=void 0!==A&&A,F=e.onBeforeSubmit,B=e.onComplete,O=e.onEnrolled,N=e.onDenied,L=e.onExitAfterFailure,P=e.captureAdditionalDocuments,U=void 0===P?[]:P,G=e.captureSignature,$=void 0!==G&&G,V=e.captureSignatureVideo,j=void 0!==V&&V,z=e.assets,q=void 0===z?{}:z,W=e.colors,H=void 0===W?{}:W,K=e.verbiage,Y=void 0===K?{}:K,X=e.geolocationEnabled,J=void 0===X||X,Z=e.geolocationRequired,Q=void 0!==Z&&Z,ee=e.debugMode,te=void 0!==ee&&ee;useLanguage(void 0===a?"auto":a);var ae=React.useMemo((function(){return{assets:q.idCapture,colors:H.idCapture,verbiage:Y.idCapture,autoCaptureEnabled:v,idCardAutoCaptureScoreThreshold:y,passportAutoCaptureScoreThreshold:E,mrzDetectionScoreThreshold:C,idCardFocusScoreThreshold:w,passportFocusScoreThreshold:I,skipSuccessScreen:M,debugMode:te}}),[q.idCapture,H.idCapture,te,v,y,w,C,E,I,M,Y.idCapture]),ne=React.useMemo((function(){return{onExitAfterFailure:L,timeoutDurationMs:D,skipSuccessScreen:M,assets:q.faceLiveness,colors:H.faceLiveness,verbiage:Y.faceLiveness,debugMode:te}}),[q.faceLiveness,H.faceLiveness,te,D,L,M,Y.faceLiveness]),re=React.useMemo((function(){return{documents:U,verbiage:Y.additionalDocumentCapture}}),[U,Y.additionalDocumentCapture]),oe=React.useMemo((function(){return{verbiage:null==Y?void 0:Y.signatureCapture}}),[null==Y?void 0:Y.signatureCapture]),ie=React.useMemo((function(){return{skipSuccessScreen:M,colors:null==H?void 0:H.videoSignatureCapture,verbiage:null==Y?void 0:Y.videoSignatureCapture,debugMode:te}}),[null==H?void 0:H.videoSignatureCapture,te,M,null==Y?void 0:Y.videoSignatureCapture]),se=React.useCallback((function(e){null==B||B(e),"Customer Onboarded"===e.resultData.verificationResult?null==O||O(e):null==N||N(e)}),[O,B,N]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.ENROLL,environment:o,url:i,token:n,companyId:s,enrollmentId:t,manualReviewRequired:l,verifyIdWithExternalDatabases:c,personalData:u,cardData:d,deduplicationEnabled:f,deduplicationSynchronous:m,webhooksEnabled:p,webhooksClientTraceId:g,webhooksStripSpecialCharacters:h,onBeforeSubmit:F,onResponseReceived:se,geolocationEnabled:J,geolocationRequired:Q},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["IdCapture","FaceLiveness"]}),[]),idCaptureProps:ae,faceLivenessProps:ne,additionalDocumentCaptureProps:re,signatureCaptureProps:oe,videoSignatureCaptureProps:ie,captureSignature:$,captureSignatureVideo:j,debugMode:te}))},ALLOWED_RETRIES$3=0,initialState$1={frame:null,face:null,imageUrl:null,requestState:"CAPTURING",requestError:null,unverifiedTimes:0},reducer$1=function(e,t){switch(t.type){case"verificationReady":return["CAPTURING","ERROR"].includes(e.requestState)?tslib.__assign(tslib.__assign({},e),{requestState:"CAPTURED",frame:t.payload.frame,face:t.payload.face}):e;case"verifying":return tslib.__assign(tslib.__assign({},e),{requestState:"VERIFYING",imageUrl:t.payload.imageUrl});case"verificationCompleted":var a=t.payload.response,n=a.status,r=n.statusMessage,o=n.errorData,i=a.resultData;if("000"!==n.statusCode)return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:new Error("".concat(r,": ").concat(o))});var s=e.requestState,l=e.unverifiedTimes;return"00"===i.verificationResultCode?s="VERIFIED":l<ALLOWED_RETRIES$3?(s="CAPTURING",l+=1):s="REJECTED",tslib.__assign(tslib.__assign({},e),{requestState:s,unverifiedTimes:l});case"verificationFailed":return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:t.payload.error});default:return e}},CustomerVerificationCapture=function(e){var t=e.onCustomerMatched,a=e.onCustomerNotMatched,n=e.onCaptureGuidanceTimeout,r=e.onExit,o=e.captureGuidanceTimeoutDurationMs,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l,u=e.debugMode,d=void 0!==u&&u,f=React.useReducer(reducer$1,initialState$1),m=f[0],p=f[1],g=m.frame,h=m.face,b=React.useContext(SubmissionContext),v=b.submit,_=b.submissionResponse,y=b.submissionError,R=b.selfieImage,C=b.setSelfieImage,S=React.useState(null),E=S[0],T=S[1],w=React.useRef(null),x=React.useRef(null),I=React.useCallback((function(e,t){p({type:"verificationReady",payload:{frame:e,face:t}})}),[]),k="CAPTURED"===m.requestState;return React.useEffect((function(){if(g&&h&&!y){var e=cropToShoulders(w.current,x.current,g,h);T(e),dataUrlToBase64(e).then((function(e){C(e)}))}}),[h,g,C,y]),React.useEffect((function(){k&&R&&!y&&tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),p({type:"verifying",payload:{imageUrl:R}}),[4,v()];case 1:if(!(e=a.sent()))throw new Error("submission failed!");return p({type:"verificationCompleted",payload:{response:e}}),[3,3];case 2:return t=a.sent(),p({type:"verificationFailed",payload:{error:t}}),[3,3];case 3:return[2]}}))}))}),[k,t,a,R,m.requestState,y,v]),React.useEffect((function(){_&&("VERIFIED"===m.requestState?null==t||t(_):"REJECTED"===m.requestState&&(null==a||a(_)))}),[t,a,m.requestState,_]),useTimeout(o,n,["VERIFIED","REJECTED"].includes(m.requestState),"VERIFYING"===m.requestState),React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(InvisibleCanvas,{ref:w}),React__default.default.createElement(InvisibleCanvas,{ref:x}),React__default.default.createElement(SelfieCapture,{onSelfieCaptured:I,onExit:r,timeoutDurationMs:o,colors:s,verbiage:c,debugMode:d}),E&&React__default.default.createElement(SelfieProgressPreview,{imageUrl:E}))},CustomerVerificationSuccess=function(e){var t,a,n=e.imageUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;n||(n="".concat(DEFAULT_CDN_URL,"/Selfie-Image-1.png")),s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Customer has been verified!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},u.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:u.headingText,src:n})),React__default.default.createElement("div",{style:{marginTop:24}},React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},CustomerVerificationFailure=function(e){var t,a,n,r,o=e.canRetry,i=void 0===o||o,s=e.onRetryClick,l=e.onExitClick,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m;u.imageUrl||(u.imageUrl="".concat(DEFAULT_CDN_URL,"/manual_capture.png")),f.retryBtn||(f.retryBtn={}),(t=f.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=f.retryBtn).textColor||(a.textColor="white"),f.exitBtn||(f.exitBtn={}),(n=f.exitBtn).backgroundColor||(n.backgroundColor="#666"),(r=f.exitBtn).textColor||(r.textColor="white");var g=useTranslations(p,{headingText:"Customer not verified",retryBtnText:"Retry",exitBtnText:"Exit"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},g.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:g.headingText,src:u.imageUrl})),React__default.default.createElement("div",{style:{marginTop:24}},i&&React__default.default.createElement(LoaderButton,{onClick:s,colors:f.retryBtn,style:{marginRight:15},finished:!0},g.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:l,colors:f.exitBtn,finished:!0},g.exitBtnText))))},ALLOWED_RETRIES$2=2,CustomerVerificationWizard=function(e){var t=e.onComplete,a=e.onCustomerMatched,n=e.onCustomerNotMatched,r=e.onExitAfterFailure,o=e.onCaptureGuidanceTimeout,i=e.captureGuidanceTimeoutDurationMs,s=e.skipSuccessScreen,l=void 0!==s&&s,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m,g=e.debugMode,h=void 0!==g&&g,b=React.useContext(SubmissionContext),v=b.submissionResponse,_=b.selfieImage,y=React.useState("LOADING"),R=y[0],C=y[1],S=React.useContext(CameraStateContext).releaseCameraAccess,E=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return C("MATCHED"),null==a||a(e),[2]}))}))}),[a]),T=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return C("NOT_MATCHED"),null==n||n(e),[2]}))}))}),[n]),w=React.useCallback((function(){C("FAILED"),null==o||o()}),[o]),x=React.useState(0),I=x[0],k=x[1],D=React.useCallback((function(){k((function(e){return e+1})),C("LOADING")}),[]),A=React.useCallback((function(){S(),v&&(null==t||t(v))}),[t,S,v]),M=useShowSuccessScreen(l,"MATCHED"===R,A);return React__default.default.createElement(React__default.default.Fragment,null,"LOADING"!==R&&function(){switch(R){case"CAPTURING":return React__default.default.createElement(CustomerVerificationCapture,{key:"capture".concat(I),onCustomerMatched:E,onCustomerNotMatched:T,onCaptureGuidanceTimeout:w,onExit:D,captureGuidanceTimeoutDurationMs:i,colors:f,verbiage:p,debugMode:h});case"MATCHED":if(!M)return;return React__default.default.createElement(CustomerVerificationSuccess,{imageUrl:"data:image/png;base64, ".concat(_),colors:f.success,verbiage:p.success,onDoneClick:A,onRetryClick:function(){C("CAPTURING"),k(0)}});case"NOT_MATCHED":case"FAILED":return React__default.default.createElement(CustomerVerificationFailure,{assets:u.failure,colors:f.failure,verbiage:p.failure,canRetry:I<ALLOWED_RETRIES$2,onExitClick:function(){S(),null==r||r()},onRetryClick:function(){k((function(e){return e+1}))}});default:return null}}(),React__default.default.createElement(SelfieCaptureLoadingOverlay,{key:I,assets:u.loadingOverlay,colors:f.loadingOverlay,verbiage:p.loadingOverlay,onDismissed:function(){C("CAPTURING")}}))},CustomerVerification=function(e){var t=e.lang,a=e.enrollmentId,n=e.submissionToken,r=e.submissionEnvironment,o=void 0===r?"prod":r,i=e.submissionUrl,s=e.companyId,l=e.webhooksEnabled,c=e.webhooksClientTraceId,u=e.webhooksStripSpecialCharacters,d=e.timeoutDurationMs,f=void 0===d?15e3:d,m=e.skipSuccessScreen,p=void 0!==m&&m,g=e.assets,h=e.colors,b=e.verbiage,v=e.onBeforeSubmit,_=e.onComplete,y=e.onCustomerMatched,R=e.onCustomerNotMatched,C=e.onExitAfterFailure,S=e.geolocationEnabled,E=void 0===S||S,T=e.geolocationRequired,w=void 0!==T&&T,x=e.debugMode,I=void 0!==x&&x;return useLanguage(void 0===t?"auto":t),React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.VERIFY,environment:o,url:i,token:n,companyId:s,enrollmentId:a,webhooksEnabled:l,webhooksClientTraceId:c,webhooksStripSpecialCharacters:u,onBeforeSubmit:v,geolocationEnabled:E,geolocationRequired:w},React__default.default.createElement(CameraProvider,{preferFrontFacingCamera:!0},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(CustomerVerificationWizard,{onComplete:_,onCustomerMatched:y,onCustomerNotMatched:R,onExitAfterFailure:C,captureGuidanceTimeoutDurationMs:f,skipSuccessScreen:p,assets:g,colors:h,verbiage:b,debugMode:I}))))},ALLOWED_RETRIES$1=0,initialState={frame:null,face:null,imageUrl:null,requestState:"CAPTURING",requestError:null,notFoundTimes:0},reducer=function(e,t){switch(t.type){case"identificationReady":return["CAPTURING","ERROR"].includes(e.requestState)?tslib.__assign(tslib.__assign({},e),{requestState:"CAPTURED",frame:t.payload.frame,face:t.payload.face}):e;case"identifying":return tslib.__assign(tslib.__assign({},e),{requestState:"IDENTIFYING",imageUrl:t.payload.imageUrl});case"identificationCompleted":var a=t.payload.response,n=a.status,r=n.statusMessage,o=n.errorData,i=a.resultData;if("000"!==n.statusCode)return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:new Error("".concat(r,": ").concat(o))});var s=e.requestState,l=e.notFoundTimes;return"46"===i.verificationResultCode?s="FOUND":l<ALLOWED_RETRIES$1?(s="CAPTURING",l+=1):s="NOT_FOUND",tslib.__assign(tslib.__assign({},e),{requestState:s,notFoundTimes:l});case"identificationFailed":return tslib.__assign(tslib.__assign({},e),{requestState:"ERROR",requestError:t.payload.error});default:return e}},CustomerIdentificationCapture=function(e){var t=e.onCustomerMatched,a=e.onCustomerNotMatched,n=e.onCaptureGuidanceTimeout,r=e.onExit,o=e.captureGuidanceTimeoutDurationMs,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l,u=e.debugMode,d=void 0!==u&&u,f=React.useReducer(reducer,initialState),m=f[0],p=f[1],g=React.useContext(SubmissionContext),h=g.submit,b=g.submissionResponse,v=g.submissionError,_=g.selfieImage,y=g.setSelfieImage,R=React.useState(null),C=R[0],S=R[1],E=React.useRef(null),T=React.useRef(null),w=React.useCallback((function(e,t){p({type:"identificationReady",payload:{frame:e,face:t}})}),[]),x=m.frame,I=m.face,k="CAPTURED"===m.requestState;return React.useEffect((function(){if(x&&I&&!v){var e=cropToShoulders(E.current,T.current,x,I);S(e),dataUrlToBase64(e).then((function(e){y(e)}))}}),[I,x,y,v]),React.useEffect((function(){k&&_&&!v&&tslib.__awaiter(void 0,void 0,void 0,(function(){var e,t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return a.trys.push([0,2,,3]),p({type:"identifying",payload:{imageUrl:_}}),[4,h()];case 1:if(!(e=a.sent()))throw new Error("submission failed!");return p({type:"identificationCompleted",payload:{response:e}}),[3,3];case 2:return t=a.sent(),p({type:"identificationFailed",payload:{error:t}}),[3,3];case 3:return[2]}}))}))}),[k,t,a,_,m.requestState,v,h]),React.useEffect((function(){b&&("FOUND"===m.requestState?null==t||t(b):"NOT_FOUND"===m.requestState&&(null==a||a(b)))}),[t,a,m.requestState,b]),useTimeout(o,n,["FOUND","NOT_FOUND"].includes(m.requestState),"IDENTIFYING"===m.requestState),React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement(InvisibleCanvas,{ref:E}),React__default.default.createElement(InvisibleCanvas,{ref:T}),React__default.default.createElement(SelfieCapture,{onSelfieCaptured:w,onExit:r,timeoutDurationMs:o,colors:s,verbiage:c,debugMode:d}),C&&React__default.default.createElement(SelfieProgressPreview,{imageUrl:C}))},CustomerIdentificationSuccess=function(e){var t,a,n=e.imageUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;n||(n="".concat(DEFAULT_CDN_URL,"/Selfie-Image-1.png")),s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Customer has been identified!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},u.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:u.headingText,src:n})),React__default.default.createElement("div",{style:{marginTop:24}},React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},CustomerIdentificationFailure=function(e){var t,a,n,r,o=e.canRetry,i=void 0===o||o,s=e.onRetryClick,l=e.onExitClick,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m;u.imageUrl||(u.imageUrl="".concat(DEFAULT_CDN_URL,"/manual_capture.png")),f.retryBtn||(f.retryBtn={}),(t=f.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=f.retryBtn).textColor||(a.textColor="white"),f.exitBtn||(f.exitBtn={}),(n=f.exitBtn).backgroundColor||(n.backgroundColor="#666"),(r=f.exitBtn).textColor||(r.textColor="white");var g=useTranslations(p,{headingText:"Customer not found",retryBtnText:"Retry",exitBtnText:"Exit"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h3",{style:{marginBottom:24}},g.headingText),React__default.default.createElement(OverlayImageWrapper,{style:{maxHeight:"calc(100vh - 185px)"}},React__default.default.createElement("img",{alt:g.headingText,src:u.imageUrl})),React__default.default.createElement("div",{style:{marginTop:24}},i&&React__default.default.createElement(LoaderButton,{onClick:s,colors:f.retryBtn,style:{marginRight:15},finished:!0},g.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:l,colors:f.exitBtn,finished:!0},g.exitBtnText))))},ALLOWED_RETRIES=2,CustomerIdentificationWizard=function(e){var t=e.onComplete,a=e.onCustomerMatched,n=e.onCustomerNotMatched,r=e.onExitAfterFailure,o=e.onCaptureGuidanceTimeout,i=e.captureGuidanceTimeoutDurationMs,s=e.skipSuccessScreen,l=void 0!==s&&s,c=e.assets,u=void 0===c?{}:c,d=e.colors,f=void 0===d?{}:d,m=e.verbiage,p=void 0===m?{}:m,g=e.debugMode,h=void 0!==g&&g,b=React.useContext(SubmissionContext),v=b.submissionResponse,_=b.selfieImage,y=React.useState("LOADING"),R=y[0],C=y[1],S=React.useContext(CameraStateContext).releaseCameraAccess,E=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return C("FOUND"),null==a||a(e),[2]}))}))}),[a]),T=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return C("NOT_FOUND"),null==n||n(e),[2]}))}))}),[n]),w=React.useCallback((function(){C("FAILED"),null==o||o()}),[o]),x=React.useState(0),I=x[0],k=x[1],D=React.useCallback((function(){k((function(e){return e+1})),C("LOADING")}),[]),A=React.useCallback((function(){S(),v&&(null==t||t(v))}),[t,S,v]),M=useShowSuccessScreen(l,"FOUND"===R,A);return React__default.default.createElement(React__default.default.Fragment,null,"LOADING"!==R&&function(){switch(R){case"CAPTURING":return React__default.default.createElement(CustomerIdentificationCapture,{key:"capture".concat(I),onCustomerMatched:E,onCustomerNotMatched:T,onCaptureGuidanceTimeout:w,onExit:D,captureGuidanceTimeoutDurationMs:i,colors:f,verbiage:p,debugMode:h});case"FOUND":if(!M)return;return React__default.default.createElement(CustomerIdentificationSuccess,{imageUrl:"data:image/png;base64, ".concat(_),colors:f.success,verbiage:p.success,onDoneClick:A,onRetryClick:function(){C("CAPTURING"),k(0)}});case"NOT_FOUND":case"FAILED":return React__default.default.createElement(CustomerIdentificationFailure,{assets:u.failure,colors:f.failure,verbiage:p.failure,canRetry:I<ALLOWED_RETRIES,onExitClick:function(){S(),null==r||r()},onRetryClick:function(){k((function(e){return e+1}))}});default:return null}}(),React__default.default.createElement(SelfieCaptureLoadingOverlay,{key:I,assets:u.loadingOverlay,colors:f.loadingOverlay,verbiage:p.loadingOverlay,onDismissed:function(){C("CAPTURING")}}))},CustomerIdentification=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=void 0===n?"prod":n,o=e.submissionUrl,i=e.companyId,s=e.webhooksEnabled,l=e.webhooksClientTraceId,c=e.webhooksStripSpecialCharacters,u=e.timeoutDurationMs,d=void 0===u?15e3:u,f=e.skipSuccessScreen,m=void 0!==f&&f,p=e.onBeforeSubmit,g=e.onComplete,h=e.onCustomerMatched,b=e.onCustomerNotMatched,v=e.onCaptureGuidanceTimeout,_=e.onExitAfterFailure,y=e.assets,R=e.colors,C=e.verbiage,S=e.geolocationEnabled,E=e.geolocationRequired,T=void 0!==E&&E,w=e.debugMode,x=void 0!==w&&w;return useLanguage(void 0===t?"auto":t),React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.IDENTIFY,environment:r,url:o,token:a,companyId:i,webhooksEnabled:s,webhooksClientTraceId:l,webhooksStripSpecialCharacters:c,onBeforeSubmit:p,geolocationEnabled:S,geolocationRequired:T},React__default.default.createElement(CameraProvider,{preferFrontFacingCamera:!0},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(CustomerIdentificationWizard,{onComplete:g,onCustomerMatched:h,onCustomerNotMatched:b,onExitAfterFailure:_,onCaptureGuidanceTimeout:v,captureGuidanceTimeoutDurationMs:d,skipSuccessScreen:m,assets:y,colors:R,verbiage:C,debugMode:x}))))},SignatureKYC=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=e.submissionUrl,o=e.onBeforeSubmit,i=e.onComplete,s=e.skipSuccessScreen,l=void 0!==s&&s,c=e.colors,u=e.verbiage,d=e.geolocationEnabled,f=e.geolocationRequired,m=e.debugMode;useLanguage(void 0===t?"auto":t);var p=React.useState(0),g=p[1];return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.NONE,environment:n,url:r,token:a,onBeforeSubmit:o,onResponseReceived:i,geolocationEnabled:d,geolocationRequired:f},React__default.default.createElement(CameraProvider,{key:p[0],preferContinuityCamera:!1,preferFrontFacingCamera:!0},React__default.default.createElement(VideoSignatureWizard,{skipSuccessScreen:l,colors:c,debugMode:m,verbiage:u,onRetryClicked:function(){g((function(e){return e+1}))}})))},IdVideoCaptureFlipIdPrompt=function(e){var t,a=e.style,n=void 0===a?{}:a,r=e.assets,o=void 0===r?{}:r,i=e.verbiage,s=void 0===i?{}:i,l=useResizeObserver__default.default(),c=l.ref,u=l.width,d=void 0===u?1:u,f=l.height,m=void 0===f?1:f,p=React.useContext(CameraStateContext).cameraRef;o.frontImageUrl||(o.frontImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Landscape-2.svg")),o.backImageUrl||(o.backImageUrl="".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Back-SVG-Landscape-2.svg"));var g,h=useVerbiage(s.instructionText,"Please flip your ID card..."),b=!(null===(t=p.current)||void 0===t?void 0:t.isRearFacing);g={width:d-0-8};var v=React.useState(1),_=v[0],y=v[1],R=React.useState(0),C=R[0],S=R[1],E=["rotateY(".concat(C,"deg)")];b&&E.push("scaleX(-1)");var T=["rotateY(".concat(180-C,"deg)")];return b&&T.push("scaleX(-1)"),React.useEffect((function(){var e=function(){y(1),S(180),setTimeout((function(){y(0),S(0)}),1500)};setTimeout(e,250);var t=setInterval(e,2500);return function(){clearInterval(t)}}),[]),React__default.default.createElement("div",{ref:c,style:tslib.__assign(tslib.__assign({},n),{position:"relative"})},React__default.default.createElement("div",{style:{display:"flex",flexFlow:"column nowrap",height:"100%"}},React__default.default.createElement("div",{style:{width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12}},h)),React__default.default.createElement("div",{style:{position:"relative",display:"flex",flexFlow:"row nowrap",alignItems:"center",justifyItems:"center",maxWidth:"calc(100%)",maxHeight:"calc(100% - ".concat(0,"px - ").concat(8,"px)")}},React__default.default.createElement("div",{style:{width:"100%",height:"100%",minWidth:0,flexGrow:1}}),React__default.default.createElement("div",{style:{maxWidth:"calc(100% - ".concat(0,"px - ").concat(8,"px)"),maxHeight:m-0-8}},React__default.default.createElement("div",{style:{position:"relative",border:"".concat(4,"px solid ").concat("white")}},React__default.default.createElement("img",{src:o.frontImageUrl,alt:"",style:tslib.__assign({backfaceVisibility:"hidden",transition:"transform ".concat(_,"s"),transform:E.join(" "),transformStyle:"preserve-3d",position:"relative",top:0,left:0,display:"block"},g)}),React__default.default.createElement("img",{src:o.backImageUrl,alt:"",style:tslib.__assign({backfaceVisibility:"hidden",transition:"transform ".concat(_,"s"),transform:T.join(" "),transformStyle:"preserve-3d",position:"absolute",top:0,left:0,display:"block"},g)}))),React__default.default.createElement("div",{style:{width:"100%",height:"100%",minWidth:0,flexGrow:1}})),React__default.default.createElement("div",{style:{width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12,opacity:0}},h))))},IdVideoCaptureGuides=function(e){var t=e.instructionText,a=e.borderWidth,n=void 0===a?3:a,r=e.borderColor,o=void 0===r?"white":r,i=e.guideImageUrl,s=void 0===i?"".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-Front-SVG-Landscape-2.svg"):i,l=e.flipping,c=void 0!==l&&l,u=window.innerWidth>window.innerHeight?"30%":"75%";return React__default.default.createElement(React__default.default.Fragment,null,React__default.default.createElement("div",{style:{position:"absolute",zIndex:1e3,width:"100%",height:"100%",display:"flex",flexDirection:"column"}},React__default.default.createElement("div",{style:{borderWidth:n,borderColor:o,borderStyle:"solid",borderRadius:"50%",aspectRatio:"1 / 1.618",height:"100%",margin:"4% auto auto"}}),c?React__default.default.createElement(IdVideoCaptureFlipIdPrompt,{style:{width:u,margin:"2% auto 2%"}}):React__default.default.createElement("div",{style:{width:u,margin:"2% auto 2%",display:"flex",flexFlow:"column nowrap"}},React__default.default.createElement("div",{style:{width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12}},t)),React__default.default.createElement("div",{style:{border:"4px solid ".concat(o)}},React__default.default.createElement("img",{src:s,alt:"",style:{width:"100%"}})),React__default.default.createElement("div",{style:{width:"100%",height:"100%",flexGrow:1,textAlign:"center",color:"white",display:"flex",flexDirection:"column",justifyContent:"end"}},React__default.default.createElement("span",{style:{alignContent:"center",marginTop:12,marginBottom:12,opacity:0}},t)))))},IdVideoCapture=function(e){var t,a,n,r,o,i,s=e.onComplete,l=e.onFaceNotDetected,c=e.idDetectionThreshold,u=void 0===c?.6:c,d=e.idFocusThreshold,f=void 0===d?.25:d,m=e.goodFramesThreshold,p=void 0===m?3:m,g=e.verbiage,h=void 0===g?{}:g,b=e.debugMode,v=void 0!==b&&b,_=useResizeObserver__default.default(),y=_.ref,R=_.width,C=void 0===R?1:R,S=_.height,E=void 0===S?1:S,T=React.useContext(CameraStateContext),w=T.cameraRef,x=T.videoRef,I=T.videoLoaded,k=T.cameraReady,D=React.useState([]),A=D[0],M=D[1],F=React.useState([]),B=F[0],O=F[1],N=React.useContext(IdCaptureModelsContext),L=N.ready,P=N.working,U=N.makePrediction,G=N.onPredictionMade,$=N.setThresholds,V=React.useContext(HighPerformanceSelfieGuidanceModelsContext).onPredictionMade,j=useVideoRecorder(w.current),z=j.isRecording,q=j.startRecording,W=j.stopRecording,H=j.videoUrl;React.useEffect((function(){z||H||q(),H&&(null==s||s(H))}),[z,s,q,H]);var K=React.useRef(0),Y=React.useRef(!1);React.useEffect((function(){Y.current=I&&k&&L}),[k,L,I]),React.useEffect((function(){if(L&&k&&I)return K.current=requestAnimationFrame((function e(){return tslib.__awaiter(this,void 0,void 0,(function(){return tslib.__generator(this,(function(t){return Y.current&&!P.current&&x.current&&U(x.current),K.current=requestAnimationFrame(e),[2]}))}))})),function(){cancelAnimationFrame(K.current)}}),[k,L,P,U,I,x]),React.useEffect((function(){$({document:u,passport:1,focus:f})}),[u,f,$]);var X=React.useState(DocumentType.ID_CARD_FRONT),J=X[0],Z=X[1],Q=React.useState(!1),ee=Q[0],te=Q[1],ae=React.useState(0),ne=ae[0],re=ae[1],oe=ne>=p;React.useEffect((function(){G((function(e){M(e.detectedObjects),re(e.detectionThresholdMet&&e.focusThresholdMet?function(e){return e+1}:0)}))}),[u,G]),React.useEffect((function(){oe&&(J==DocumentType.ID_CARD_FRONT?(te(!0),setTimeout((function(){te(!1),Z(DocumentType.ID_CARD_BACK)}),3500)):W())}),[oe,s,J,W]);var ie=React.useState(0),se=ie[0],le=ie[1];React.useEffect((function(){V((function(e){O(e),le((function(t){return 0===e.length?t+1:0}))}))}),[V]),React.useEffect((function(){se>=2&&(null==l||l())}),[se,l]);var ce=useTranslations(h,{idFrontInstructionText:"Display the front of your ID card...",idBackInstructionText:"Display the back of your ID card..."}),ue=useDebugScalingDetails({enabled:v,pageWidth:C,pageHeight:E,videoWidth:null!==(a=null===(t=x.current)||void 0===t?void 0:t.videoWidth)&&void 0!==a?a:0,videoHeight:null!==(r=null===(n=x.current)||void 0===n?void 0:n.videoHeight)&&void 0!==r?r:0});return React__default.default.createElement(PageContainer,{ref:y,className:"flex"},React__default.default.createElement(CameraVideoTag,null),React__default.default.createElement(IdVideoCaptureGuides,{instructionText:J===DocumentType.ID_CARD_FRONT?ce.idFrontInstructionText:ce.idBackInstructionText,guideImageUrl:"".concat(DEFAULT_CDN_URL,"/Shieldout-IDCard-").concat(J===DocumentType.ID_CARD_FRONT?"Front":"Back","-SVG-Landscape-2.svg"),borderColor:ne>0?"green":"white",flipping:ee}),v&&A.length>0&&React__default.default.createElement(ObjectDetectionDebugOverlay,{$flipX:!(null===(o=w.current)||void 0===o?void 0:o.isRearFacing)},A.map((function(e,t){var a;return React__default.default.createElement(IdCaptureDetectedObjectDebugBox,{key:t,obj:e,scaling:ue,color:"blue",flipX:!(null===(a=w.current)||void 0===a?void 0:a.isRearFacing)})}))),v&&B.length>0&&React__default.default.createElement(ObjectDetectionDebugOverlay,{$flipX:!(null===(i=w.current)||void 0===i?void 0:i.isRearFacing)},B.map((function(e,t){var a;return React__default.default.createElement(SelfieCaptureFaceDebugBox,{key:t,face:e,scaling:ue,flipX:!(null===(a=w.current)||void 0===a?void 0:a.isRearFacing)})}))),v&&React__default.default.createElement(DebugStatsPane,null,w.current?React__default.default.createElement(React__default.default.Fragment,null,"✅ Camera: ",w.current.label," (",w.current.width,"x",w.current.height,")"):"❌ Camera not ready",React__default.default.createElement("br",null),oe?"✅":"❌"," Good Frame Count:"," ",ne,"/",p))},IdVideoCaptureSuccess=function(e){var t,a,n=e.videoUrl,r=e.onDoneClick,o=e.onRetryClick,i=e.colors,s=void 0===i?{}:i,l=e.verbiage,c=void 0===l?{}:l;s.retryBtn||(s.retryBtn={}),(t=s.retryBtn).backgroundColor||(t.backgroundColor="#ea8557"),(a=s.retryBtn).textColor||(a.textColor="white");var u=useTranslations(c,{headingText:"Video ID has been successfully captured!",retryBtnText:"Retry",doneBtnText:"Done"});return React__default.default.createElement(OverlayContainer,null,React__default.default.createElement(OverlayInner,null,React__default.default.createElement("h1",null,u.headingText),React__default.default.createElement(OverlayImageWrapper,null,React__default.default.createElement(StyledVideo,{src:n,poster:n+"#t=0.1",controls:!0,preload:"metadata",autoPlay:!0})),React__default.default.createElement("div",null,React__default.default.createElement(LoaderButton,{onClick:o,colors:s.retryBtn,finished:!0},u.retryBtnText),React__default.default.createElement(LoaderButton,{onClick:r,colors:s.doneBtn,style:{marginLeft:15},finished:!0},u.doneBtnText))))},StyledVideo=styled__default.default.video(templateObject_1||(templateObject_1=tslib.__makeTemplateObject(["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"],["\n margin-left: auto;\n margin-right: auto;\n max-width: 100%;\n"]))),VideoIdWizard=function(e){var t=e.idCaptureProps,a=void 0===t?{}:t,n=e.assets,r=void 0===n?{}:n,o=e.colors,i=void 0===o?{}:o,s=e.verbiage,l=void 0===s?{}:s,c=e.debugMode,u=void 0!==c&&c,d=React.useContext(SubmissionContext),f=d.selfieImage,m=d.setSelfieImage,p=d.logSelfieCaptureAttempt,g=React.useState("CAPTURING_ID"),h=g[0],b=g[1],v=React.useState(null),_=v[0],y=v[1],R=React.useRef(),C=React.useRef(),S=React.useRef();React.useEffect((function(){R.current=new Date}),[]),React.useEffect((function(){"CHECKING_LIVENESS"===h&&(C.current=new Date)}),[h]);var E=React.useCallback((function(){var e,t,a;p({autoCapture:"Y",captureTime:(null!==(e=S.current)&&void 0!==e?e:new Date).getTime()-(null!==(t=C.current)&&void 0!==t?t:new Date).getTime(),operationTime:(new Date).getTime()-(null!==(a=R.current)&&void 0!==a?a:new Date).getTime()}),R.current=new Date}),[p]),T=a.onSuccess,w=React.useCallback((function(e){null==T||T(e),b("CHECKING_LIVENESS")}),[T]),x=React.useCallback((function(e){return tslib.__awaiter(void 0,void 0,void 0,(function(){var t;return tslib.__generator(this,(function(a){switch(a.label){case 0:return b("CAPTURING_VIDEO"),E(),f?[3,2]:(t=m,[4,dataUrlToBase64(e)]);case 1:t.apply(void 0,[a.sent()]),a.label=2;case 2:return[2]}}))}))}),[E,f,m]),I=React.useCallback((function(e){y(e),b("SUCCESS")}),[]),k=React.useCallback((function(){b("CHECKING_LIVENESS")}),[]),D=React.useCallback((function(){b("LOADING")}),[]);return React__default.default.createElement(React__default.default.Fragment,null,"LOADING"!==h&&function(){var e,t,n,o,s,c,d,f;switch(h){case"CAPTURING_ID":return React__default.default.createElement(IdCaptureModelsProvider,{documentDetectionModelUrl:null!==(t=null===(e=a.assets)||void 0===e?void 0:e.documentDetectionModelUrl)&&void 0!==t?t:"",focusModelUrl:null!==(o=null===(n=a.assets)||void 0===n?void 0:n.focusModelUrl)&&void 0!==o?o:"",logPredictions:u},React__default.default.createElement(CameraProvider,{key:"IdCaptureCamera"},React__default.default.createElement(GuideOrientationProvider,null,React__default.default.createElement(IdCaptureWizard,tslib.__assign({},a,{assets:r.idCapture,colors:i.idCapture,verbiage:l.idCapture,onSuccess:w,skipSuccessScreen:!0})))));case"CHECKING_LIVENESS":return React__default.default.createElement(CameraProvider,{key:"FaceLivenessCamera",preferFrontFacingCamera:!0,preferContinuityCamera:!1},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(FaceLivenessCapture,{onSuccess:x,onExit:D,colors:i.faceLiveness,verbiage:l.faceLiveness,debugMode:u})));case"CAPTURING_VIDEO":return React__default.default.createElement(CameraProvider,{key:"FaceLivenessCamera",preferFrontFacingCamera:!0,preferContinuityCamera:!1},React__default.default.createElement(IdCaptureModelsProvider,{documentDetectionModelUrl:null!==(c=null===(s=a.assets)||void 0===s?void 0:s.documentDetectionModelUrl)&&void 0!==c?c:"",focusModelUrl:null!==(f=null===(d=a.assets)||void 0===d?void 0:d.focusModelUrl)&&void 0!==f?f:"",logPredictions:u},React__default.default.createElement(HighPerformanceSelfieGuidanceModelsProvider,null,React__default.default.createElement(IdVideoCapture,{onComplete:I,onFaceNotDetected:k,debugMode:u}))));case"SUCCESS":return React__default.default.createElement(IdVideoCaptureSuccess,{videoUrl:null!=_?_:""});default:return null}}())},VideoIdValidation=function(e){var t=e.lang,a=e.submissionToken,n=e.submissionEnvironment,r=e.submissionUrl,o=e.onBeforeSubmit,i=e.onComplete,s=e.skipSuccessScreen,l=void 0!==s&&s,c=e.geolocationEnabled,u=e.geolocationRequired,d=e.debugMode,f=void 0!==d&&d;return useLanguage(void 0===t?"auto":t),React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.NONE,environment:n,url:r,token:a,onBeforeSubmit:o,onResponseReceived:i,geolocationEnabled:c,geolocationRequired:u},React__default.default.createElement(VideoIdWizard,{skipSuccessScreen:l,debugMode:f}))},preloadModels=function(e){var t=e.documentDetectionModel,a=void 0===t?"".concat(DEFAULT_CDN_URL,"/models/documentdetection448/model.json"):t,n=e.focusModel,r=void 0===n?"".concat(DEFAULT_CDN_URL,"/models/focus/model.json"):n,o=e.skipFaceDetectionModel,i=void 0!==o&&o;return tslib.__awaiter(void 0,void 0,void 0,(function(){return tslib.__generator(this,(function(e){switch(e.label){case 0:return a?[4,loadDocumentDetectionModel(a)]:[3,2];case 1:e.sent(),e.label=2;case 2:return r?[4,loadFocusModel(r)]:[3,4];case 3:e.sent(),e.label=4;case 4:return i?[3,6]:[4,loadHighPerformanceFaceDetector()];case 5:e.sent(),e.label=6;case 6:return[2]}}))}))},CustomerBiometricsEnrollment=function(e){var t=e.enrollmentId,a=e.lang,n=e.submissionToken,r=e.submissionEnvironment,o=void 0===r?"prod":r,i=e.submissionUrl,s=e.companyId,l=e.deduplicationEnabled,c=e.deduplicationSynchronous,u=e.webhooksEnabled,d=e.webhooksClientTraceId,f=e.webhooksStripSpecialCharacters,m=e.timeoutDurationMs,p=void 0===m?15e3:m,g=e.skipSuccessScreen,h=void 0!==g&&g,b=e.onBeforeSubmit,v=e.onComplete,_=e.onEnrolled,y=e.onDenied,R=e.onExitAfterFailure,C=e.captureAdditionalDocuments,S=void 0===C?[]:C,E=e.captureSignature,T=void 0!==E&&E,w=e.captureSignatureVideo,x=void 0!==w&&w,I=e.assets,k=void 0===I?{}:I,D=e.colors,A=void 0===D?{}:D,M=e.verbiage,F=void 0===M?{}:M,B=e.geolocationEnabled,O=void 0===B||B,N=e.geolocationRequired,L=void 0!==N&&N,P=e.debugMode,U=void 0!==P&&P;useLanguage(void 0===a?"auto":a);var G=React.useMemo((function(){return{onExitAfterFailure:R,timeoutDurationMs:p,skipSuccessScreen:h,assets:k.faceLiveness,colors:A.faceLiveness,verbiage:F.faceLiveness,debugMode:U}}),[k.faceLiveness,A.faceLiveness,U,R,h,p,F.faceLiveness]),$=React.useMemo((function(){return{documents:S,verbiage:F.additionalDocumentCapture}}),[S,F.additionalDocumentCapture]),V=React.useMemo((function(){return{verbiage:F.signatureCapture}}),[F.signatureCapture]),j=React.useMemo((function(){return{skipSuccessScreen:h,colors:null==A?void 0:A.videoSignatureCapture,verbiage:null==F?void 0:F.videoSignatureCapture,debugMode:U}}),[null==A?void 0:A.videoSignatureCapture,U,h,null==F?void 0:F.videoSignatureCapture]),z=React.useCallback((function(e){null==v||v(e),"Customer Onboarded"===e.resultData.verificationResult?null==_||_(e):null==y||y(e)}),[_,v,y]);return React__default.default.createElement(SubmissionProvider,{action:SubmissionAction.ENROLL,environment:o,url:i,token:n,companyId:s,enrollmentId:t,deduplicationEnabled:l,deduplicationSynchronous:c,webhooksEnabled:u,webhooksClientTraceId:d,webhooksStripSpecialCharacters:f,onBeforeSubmit:b,onResponseReceived:z,geolocationEnabled:O,geolocationRequired:L},React__default.default.createElement(CompositeWizardComponent,{checks:React.useMemo((function(){return["FaceLiveness"]}),[]),faceLivenessProps:G,additionalDocumentCaptureProps:$,signatureCaptureProps:V,videoSignatureCaptureProps:j,captureSignature:T,captureSignatureVideo:x,debugMode:U}))};function renderElement(e,t){if("string"==typeof t){var a=document.querySelector(t);if(!a)throw new Error("targetElement ".concat(t," not found"));t=a}else t||(t=document.createElement("div"),document.body.append(t));var n=React__default.default.createElement(OverlayContainer,{ref:React.createRef()},e);return ReactDOM__namespace.createRoot(t).render(n),t}function renderComponent(e,t,a){return a||(a=t,t=void 0),renderElement(React__default.default.createElement(e,tslib.__assign({},a)),t)}i18n__default.default.use(LanguageDetector__default.default).use(reactI18next.initReactI18next).init({resources:resources,detection:{caches:[]},fallbackLng:"en",debug:!1,interpolation:{escapeValue:!1}}),void 0!==Sentry__namespace&&Sentry__namespace.init&&Sentry__namespace.init({dsn:"https://0a8e0e8df645473abe217b60b50fbcb1@o4505120557367296.ingest.sentry.io/4505120582008832",tracesSampleRate:1,debug:!0});var renderIdValidation=function(e,t){return renderComponent(IdValidation,e,t)},renderFaceValidation=function(e,t){return renderComponent(FaceValidation,e,t)},renderIdAndFaceValidation=function(e,t){return renderComponent(IdAndFaceValidation,e,t)},renderCustomerIdAndBiometricsEnrollment=function(e,t){return renderComponent(CustomerIdAndBiometricsEnrollment,e,t)},renderCustomerBiometricsEnrollment=function(e,t){return renderComponent(CustomerBiometricsEnrollment,e,t)},renderCustomerVerification=function(e,t){return renderComponent(CustomerVerification,e,t)},renderCustomerIdentification=function(e,t){return renderComponent(CustomerIdentification,e,t)},renderSignatureKYC=function(e,t){return renderComponent(SignatureKYC,e,t)},renderVideoIdValidation=function(e,t){return renderComponent(VideoIdValidation,e,t)};globalThis.IDmissionSDK={renderIdValidation:renderIdValidation,renderFaceValidation:renderFaceValidation,renderIdAndFaceValidation:renderIdAndFaceValidation,renderCustomerIdAndBiometricsEnrollment:renderCustomerIdAndBiometricsEnrollment,renderCustomerBiometricsEnrollment:renderCustomerBiometricsEnrollment,renderCustomerVerification:renderCustomerVerification,renderCustomerIdentification:renderCustomerIdentification,renderSignatureKYC:renderSignatureKYC,renderVideoIdValidation:renderVideoIdValidation,preloadModels:preloadModels,version:webSdkVersion,ready:!0},exports.CustomerBiometricsEnrollment=CustomerBiometricsEnrollment,exports.CustomerIdAndBiometricsEnrollment=CustomerIdAndBiometricsEnrollment,exports.CustomerIdentification=CustomerIdentification,exports.CustomerVerification=CustomerVerification,exports.FaceValidation=FaceValidation,exports.IdAndFaceValidation=IdAndFaceValidation,exports.IdValidation=IdValidation,exports.SignatureKYC=SignatureKYC,exports.VideoIdValidation=VideoIdValidation,exports.preloadModels=preloadModels,exports.renderCustomerBiometricsEnrollment=renderCustomerBiometricsEnrollment,exports.renderCustomerIdAndBiometricsEnrollment=renderCustomerIdAndBiometricsEnrollment,exports.renderCustomerIdentification=renderCustomerIdentification,exports.renderCustomerVerification=renderCustomerVerification,exports.renderFaceValidation=renderFaceValidation,exports.renderIdAndFaceValidation=renderIdAndFaceValidation,exports.renderIdValidation=renderIdValidation,exports.renderSignatureKYC=renderSignatureKYC,exports.renderVideoIdValidation=renderVideoIdValidation;
2
2
  //# sourceMappingURL=sdk2.cjs.production.js.map