@authme/engine 2.8.41 → 2.8.44
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.
- package/assets/engine-worker.js +1 -1
- package/assets/ml_engine_web.js +7464 -14
- package/assets/ml_engine_web.simd.js +7464 -14
- package/assets/ml_engine_web.simd.wasm +0 -0
- package/assets/ml_engine_web.wasm +0 -0
- package/assets/ml_engine_web_version.txt +1 -1
- package/index.cjs.d.ts +1 -0
- package/{index.cjs → index.cjs.js} +300 -332
- package/index.esm.d.ts +1 -0
- package/{index.js → index.esm.js} +301 -331
- package/package.json +6 -10
- package/src/index.d.ts +4 -4
- package/src/lib/api.d.ts +1 -1
- package/src/lib/engine.d.ts +60 -60
- package/src/lib/enum/auth.enum.d.ts +3 -3
- package/src/lib/enum/fas-recognition.enum.d.ts +49 -49
- package/src/lib/enum/id-recognition.enum.d.ts +85 -81
- package/src/lib/enum/index.d.ts +4 -4
- package/src/lib/enum/module.enum.d.ts +9 -9
- package/src/lib/interface/basic-type.interface.d.ts +22 -22
- package/src/lib/interface/config.interface.d.ts +9 -9
- package/src/lib/interface/index.d.ts +3 -3
- package/src/lib/interface/worker-command.interface.d.ts +7 -7
- package/src/lib/version.d.ts +1 -1
package/assets/engine-worker.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(()=>{let r=!1,a=!1,t={get TD1(){return self.EngineLib.EAuthMeMRZType.TD1},get TD3(){return self.EngineLib.EAuthMeMRZType.TD3}};function s(e){return{MRZService:"MRZService",MRZResidentCardService:"MRZService",MRZPassportService:"MRZService"}[e]||e}async function n({engineJsContent:n,engineWasmContent:s}){return new Promise(function(i,e){var t;r||a?i(!0):(a=!0,self.Module={},self.Module={locateFile:(e,t)=>t+"/"+e,print:e=>{postMessage({module:"DEBUG",command:"DEBUG",id:null,value:e})}},t=URL.createObjectURL(new Blob([n],{type:"text/javascript"})),importScripts(t),URL.revokeObjectURL(t),async function t(){try{var e=await AuthmeMLEngineLib({wasmBinary:s,print:e=>{console.log(e),postMessage({module:"DEBUG",command:"DEBUG",id:null,value:e})}});(self.EngineLib=e).FS.mkdir("/model"),r=!0,a=!1,i(!0)}catch(e){console.warn("init Authme EngineLib error:",e," Try after 3 second."),n=3e3,await new Promise(e=>{setTimeout(()=>{e(!0)},n)}),await t()}var n}())})}let o={MRZService:e=>self.EngineLib.MRZService.getModelVersion(t.TD3),MRZResidentCardService:e=>self.EngineLib.MRZService.getModelVersion(t.TD1),MRZPassportService:e=>self.EngineLib.MRZService.getModelVersion(t.TD3),default:e=>self.EngineLib[s(e)].getModelVersion()},e={async setOption({key:e,value:t}){return this.instance?.setOption(e,t)},_getLoadedModelKey({modelVersion:{name:e,version:t}}){return e+"#"+t},_getModelVersions(e){var t=(o[e]||o.default)(e),n=[];for(let s=0;s<t.size();s++){var i=t.get(s);n.push({name:""+i.szName,version:""+i.szVersion})}return n},_getNoLoadedModelVersions(e){return this._getModelVersions(e).filter(e=>!this._loadedSessions[this._getLoadedModelKey({modelVersion:e})])},loadSession({modelVersion:{name:e,version:t},modelArrayBuffer:n}){let i=!1;try{var s=self.EngineLib.FS;s.mkdir(`/${e}-${t}/`),s.mount(s.filesystems.WORKERFS,{blobs:[{name:e+"-"+t,data:new Blob([n],{type:"application/octet-stream"})}]},`/${e}-${t}/`),i=!0}catch(e){if(20!==e?.errno)throw e;i=!0}if(i){s=this._getLoadedModelKey({modelVersion:{name:e,version:t}});if(this._loadedSessions[s])throw new Error("should be undefined here.");this._loadedSessions[s]=self.EngineLib.createInferenceSession(e,`/${e}-${t}/${e}-`+t)}},async _init(e){var t,n,i=new self.EngineLib[s(e)];return"EAuthMeEngineReturnCode_eAuthMe_Engine_Failed"==(await i.initial(...this._getModelVersions(e).map(e=>this._loadedSessions[this._getLoadedModelKey({modelVersion:e})]))).constructor.name?(console.error("model loading error,please ask server to check the model"),!1):((n=(t=i).getUIParams()).previewPosition.fLeft=0,n.previewPosition.fTop=0,n.previewPosition.fRight=1,n.previewPosition.fBottom=1,t.setUIParams(n),this.instance=i,!0)},start(){return this.instance?.start()},stop(){return this.instance?.stop()},setPublicKeyForJson(e){return self.EngineLib.setPublicKeyForJson(e)},_setFrameSize(e){var t,n;if(c.frame.width=Math.floor(e.width),c.frame.height=Math.floor(e.height),this.instance)return(n=(t=this.instance).getUIParams()).analyzeSize.iHeight=c.frame.height,n.analyzeSize.iWidth=c.frame.width,t.setUIParams(n),!0},setFrameSize(e){return this._setFrameSize(e)},_recognition(e){var t=this.instance;if(t)try{var n=l(e.data),i=t.run(n.byteOffset,n.length,c.frame.width,c.frame.height);return self.EngineLib._free(n.dataPtr),i}catch(e){return null}console.warn("engine not initialized")},recognition(e){return this._recognition(e)},getParams(){return this.instance.getParams()},getUIParams(){return this.instance.getUIParams()},setParams(e){return this.instance.setParams(e.params)},setUIParams(e){return this.instance.setUIParams(e)},getDebugImage(e){var t=l(e.data);let n;var i=this.instance.getDebugImage(t.byteOffset,t.length,c.frame.width,c.frame.height);return self.EngineLib._free(t.dataPtr),i&&(n=self.EngineLib.HEAPU8.slice(i,i+c.frame.width*c.frame.height*4),self.EngineLib._free(i)),n},destroy(){this.instance&&(this.instance.delete(),this.instance=null);for(var e of Object.values(this._loadedSessions))self.EngineLib.deleteSession(e);this._loadedSessions={}},getJsonReport(){return this.instance?.getJsonReport()},encryptString({string:e,key:t}){return self.EngineLib.encryptString(e,t)},encryptBlob({uint8Array:e,key:t}){var n=new self.EngineLib.VectorUChar;for(let i=0;i<e.length;i++)n.push_back(e[i]);return self.EngineLib.encryptBlob(n,t)},_decryptString({string:e,key:t}){return self.EngineLib.decryptString(e,t)}};function i(n){return{instance:null,_loadedSessions:{},...e,getNoLoadedModelVersions(){return this._getNoLoadedModelVersions(n)},init(){return this._init(n)},toJson(e){return Object.getPrototypeOf(this.instance).constructor.toJson(e)},recognition(e){var t=this._recognition(e);return t&&(t.eStatus=t.eStatus.constructor.name,t.tField=JSON.parse(self[n].toJson(t.tField)),0<t.pointer)&&(t.imageData=self.EngineLib.HEAPU8.slice(t.pointer,t.pointer+t.iHeight*t.iWidth*4),self.EngineLib._free(t.pointer)),t},setMaskPosition(e){var t=e.positions;return self[n].instance?.setMatchROI(t[0][0],t[0][1],t[1][0],t[1][1],t[2][0],t[2][1],t[3][0],t[3][1])},getFinalResult(){return this.instance.getFinalResult()}}}self.MRZPassportService=i("MRZPassportService"),self.MRZResidentCardService=i("MRZResidentCardService"),self.CardOCR={instance:null,_loadedSessions:{},...e,setParams(e){return this.instance.setParams({...e,eTargetCardType:self.EngineLib.EAuthMeCardClass[e.type.replace(/^EAuthMeCardClass_/,"")]})},getNoLoadedModelVersions(){return this._getNoLoadedModelVersions("CardOCR")},init(){return this._init("CardOCR")},recognition(e){var t=this._recognition(e);return t&&(0<t.pointer&&(t.imageData=self.EngineLib.HEAPU8.slice(t.pointer,t.pointer+t.iHeight*t.iWidth*4),self.EngineLib._free(t.pointer)),t.eStatus=t.eStatus.constructor.name,t.info.cardClass.eClass=t.info.cardClass.eClass.constructor.name),t},setType({type:e}){var t,n=this.instance;return!!n&&((t=n.getParams()).eTargetCardType=self.EngineLib.EAuthMeCardClass[e.replace(/^EAuthMeCardClass_/,"")],n.setParams({...t}),!0)},setMaskPosition(e){var t=e.positions;return this.instance?.setCardMatchROI(t[0][0],t[0][1],t[1][0],t[1][1],t[2][0],t[2][1],t[3][0],t[3][1])}},self.IdCardAntiFraud={instance:null,_loadedSessions:{},...e,getNoLoadedModelVersions(){return this._getNoLoadedModelVersions("IdCardAntiFraudService")},async init(){var e,t;if(await this._init("IdCardAntiFraudService"),this.instance)return(t=(e=this.instance).getParams()).timeoutSec=52,e.setParams(t),!0},recognition(e){var t=this._recognition(e);return t&&(t.eStatus=t.eStatus.constructor.name,t.eStage=t.eStage.constructor.name,t.info.eCardMatchStatus=t.info.eCardMatchStatus.constructor.name,t.info.cardClass.eClass=t.info.cardClass.eClass.constructor.name,t.info.metalTag.aeStatus=t.info.metalTag.aeStatus.map(e=>e.constructor.name)),t},setMaskPosition(e){var t=e.positions;return this.instance?.setFrontalCardVertices(t[0][0],t[0][1],t[1][0],t[1][1],t[2][0],t[2][1],t[3][0],t[3][1])},setStage(e){if(this.instance){var t,n=new self.EngineLib.FraudStageList;for(t of e)n.push_back(self.EngineLib.EAuthMeIDCardAntiFraudStage[t]);this.instance.setStage(n)}},getCardMatchROI(){if(!this.instance)throw new Error("instance not initialized");var e=[],t=this.instance.getCardMatchROI();for(let i=0;i<t.size();i++){var n=t.get(i);e.push(n)}return e}},self.Fas={instance:null,_loadedSessions:{},...e,getNoLoadedModelVersions(){return this._getNoLoadedModelVersions("CFASService")},init(){return this._init("CFASService")},setFrameSize(e){if(this._setFrameSize(e),1<=c.frame.width/c.frame.height){let e=this.instance.getParams();e.fFaceRoiPreviewRatioW=.3,this.instance.setParams(e)}},setStage(e){if(this.instance){var t,n=new self.EngineLib.FASStageList;for(t of e.stageList)n.push_back(self.EngineLib.EAuthMeFASServiceStage[t]);this.instance.setStage(n)}},getStageParams({stageIndex:e}){return this.instance.getStageParams(e)},setStageParams({stageIndex:e,value:t}){this.instance.setStageParams(t,e)},recognition(e){var t=this._recognition(e);return t&&(t.eStatus=t.eStatus.constructor.name,t.eStage=t.eStage.constructor.name,t.info.eye.eStatus=t.info.eye.eStatus.constructor.name,t.info.fas.eStatus=t.info.fas.eStatus.constructor.name,t.info.mouth.eStatus=t.info.mouth.eStatus.constructor.name,t.info.pose.ePose=t.info.pose.ePose.constructor.name,t.info.miniFAS=t.info.miniFAS.constructor.name),t},async getNormalizedFaceROI(){var e=await this.instance.getNormalizedFaceROI();return{height:e.height,width:e.width,x:e.x,y:e.y}}},self.Core={async setConfig(e){return self.config={...self.config,...e},!0},async loadEngine({engineJsContent:e,engineWasmContent:t}){return n({engineJsContent:e,engineWasmContent:t})},async verify(e){for(let t=0;t<20;t++)if(self.EngineLib)return self.EngineLib.verifySDK(e.cert,e.authToken).constructor.name;return!1},checkEnumConsistency(e){var t,n,i=[];for([t,n]of Object.entries(e)){var s,r,a=self.EngineLib[t]?.values??{},o=Object.fromEntries(Object.values(a).map(e=>[e.constructor.name,e.value]));for([s,r]of Object.entries(n))void 0===o[r]&&i.push({enumName:t,key:s,engineKey:r,actualEnumMap:o})}return i}},addEventListener("message",(async function({data:t}){try{var e,{module:n,command:i,id:s,value:r}=t,a=self[n][i];a&&(e=await a.call(self[n],r),postMessage({module:n,command:i,id:s,value:e}))}catch(e){var{module:a,command:r,id:n}=t;throw postMessage({module:a,command:r,id:n,value:{error:!0,cause:JSON.parse(JSON.stringify(e))}}),e}}).bind(self));let c={scriptPath:"assets",apiBaseUrl:"/",frame:{width:0,height:0}};function l(e){var t=self.EngineLib,n=new Uint8Array(e),i=n.length*n.BYTES_PER_ELEMENT,s=t._malloc(i),i=new Uint8Array(t.HEAPU8.buffer,s,i);return i.set(n),{byteOffset:i.byteOffset,length:n.length,dataPtr:s,dataOnHeap:i,Module:t}}})();
|
|
1
|
+
(()=>{let n=!1,r=!1;function o(t){return new Promise(e=>setTimeout(()=>e(!0),t))}let h={scriptPath:"assets",apiBaseUrl:"/",frame:{width:0,height:0}},t="";async function i({engineJsContent:a,engineWasmContent:s}){return new Promise(function(i,e){var t;n||r?i(!0):(r=!0,self.Module={},self.Module={locateFile:(e,t)=>t+"/"+e,print:e=>{postMessage({module:"DEBUG",command:"DEBUG",id:null,value:e})}},t=URL.createObjectURL(new Blob([a],{type:"text/javascript"})),importScripts(t),URL.revokeObjectURL(t),async function t(){try{var e=await AuthmeMLEngineLib({wasmBinary:s,print:e=>{console.log(e),postMessage({module:"DEBUG",command:"DEBUG",id:null,value:e})}});self.EngineLib=e,n=!0,r=!1,i(!0)}catch(e){console.warn("init Authme EngineLib error:",e," Try after 3 second."),await o(3e3),await t()}}())})}function l(e){return self.EngineLib.new_buffer(e)}function c(e){e&&self.EngineLib.delete_buffer(e)}function _(e,t){self.EngineLib.HEAPU8.set(t,e)}function f(e){return self.EngineLib.getValue(e,"i32")}function u(e){return self.EngineLib.authme_engine_get_size(e)}let g={_loadedModels:{},loadModel({modelVersion:{name:e,version:t},modelArrayBuffer:i}){var a=e;if(void 0!==this._loadedModels[a])return this._loadedModels[a];var s=new Uint8Array(i),n=l(s.length),r=(_(n,s),l(4)),s=self.EngineLib.authme_inference_init_binary(r,e,n,s.length),o=f(r);if(c(r),c(n),0!==s||o<0)throw console.error(`Failed to load model: ${e}-${t}, returnValue: ${s}, contextId: `+o),new Error(`Failed to load model: ${e}-`+t);return this._loadedModels[a]=o},getModelContextId(e){return this._loadedModels[e]},hasModel(e){return void 0!==this._loadedModels[e]},clearModels(){this._loadedModels={}}};function d(e,t,i,a=4){let s;var n=t*i*a,n=((s=!(e instanceof Uint8ClampedArray||e instanceof Uint8Array)&&e.buffer?new Uint8Array(e.buffer,e.byteOffset||0,e.byteLength||e.length):new Uint8Array(e)).length!==n&&console.warn(`[createAuthmeImage] Data size mismatch: got ${s.length}, expected ${n} (${t}x${i}x${a})`),l(s.length)),r=(_(n,s),self.EngineLib.create_AuthmeImg()),o=self.EngineLib.create_EnumImgType();return r.width=t,r.height=i,r.channels=a,r.step=t*a,r.data=n,r.type=o.IMAGE_TYPE_RGBA,{image:r,dataPtr:n}}function a(){return{_serviceContextId:null,_loadedModelContextIds:{},_initialized:!1,_getLoadedModelKey({name:e}){return e},loadSession({modelVersion:e,modelArrayBuffer:t}){var i=g.loadModel({modelVersion:e,modelArrayBuffer:t});this._loadedModelContextIds[e.name]=i},start(){return!0},stop(){return!0},setOption({}){return!0},getJsonReport(){return"{}"},encryptString({string:e,key:t}){return"function"!=typeof self.EngineLib.encryptString?(console.warn("[Engine] encryptString is not available in this version"),null):self.EngineLib.encryptString(e,t)},encryptBlob({uint8Array:e,key:t}){if("function"!=typeof self.EngineLib.encryptBlob||"function"!=typeof self.EngineLib.VectorUChar)return console.warn("[Engine] encryptBlob is not available in this version"),null;var i=new self.EngineLib.VectorUChar;for(let a=0;a<e.length;a++)i.push_back(e[a]);return self.EngineLib.encryptBlob(i,t)},_decryptString({string:e,key:t}){return"function"!=typeof self.EngineLib.decryptString?(console.warn("[Engine] decryptString is not available in this version"),null):self.EngineLib.decryptString(e,t)}}}function e(e,t){return{...a(),_mrzType:t,_lastSuccessfulResult:null,getNoLoadedModelVersions(){var e=l(u("MRZModelVersion")),t=l(4),i="TD1"===this._mrzType?0:1,a=(self.EngineLib.mrz_service_get_version(e,t,i),f(t)),s=self.EngineLib.parse_MRZModelVersion(e),n=(c(e),c(t),[]);for(let _=0;_<a;_++){var r=s.models[_].name,o=s.models[_].version;g.hasModel(r)||n.push({name:r,version:o})}return n},async init(){null!==this._serviceContextId&&0<=this._serviceContextId&&(self.EngineLib.mrz_service_free(this._serviceContextId),this._serviceContextId=null);var e=self.EngineLib.create_MRZModels(),t=(e.OCR_00=g.getModelContextId("OCR_00")??this._loadedModelContextIds.OCR_00??-1,e.OCR_01=g.getModelContextId("OCR_01")??this._loadedModelContextIds.OCR_01??-1,e.OCR_01_FB=g.getModelContextId("OCR_01_FB")??this._loadedModelContextIds.OCR_01_FB??-1,e.OCR_03=g.getModelContextId("OCR_03")??this._loadedModelContextIds.OCR_03??-1,e.MRZ_00=g.getModelContextId("MRZ_00")??this._loadedModelContextIds.MRZ_00??-1,e.MRZ_01=g.getModelContextId("MRZ_01")??this._loadedModelContextIds.MRZ_01??-1,self.EngineLib.create_ServiceUIParams()),i=(t.is_mirror=0,t.size.width=h.frame.width||640,t.size.height=h.frame.height||480,t.rect.x=0,t.rect.y=0,t.rect.width=1,t.rect.height=1,self.EngineLib.create_ServiceROI());if(i.point_number=4,this._maskPositions&&4===this._maskPositions.length){var a=this._maskPositions.every(([e,t])=>e<=1&&t<=1),s=h.frame.width||640,n=h.frame.height||480;for(let e=0;e<4;e++)a?(i.points[e].x=this._maskPositions[e][0],i.points[e].y=this._maskPositions[e][1]):(i.points[e].x=this._maskPositions[e][0]/s,i.points[e].y=this._maskPositions[e][1]/n)}else i.points[0].x=0,i.points[0].y=0,i.points[1].x=1,i.points[1].y=0,i.points[2].x=1,i.points[2].y=1,i.points[3].x=0,i.points[3].y=1;var r=l(4),e=self.EngineLib.mrz_service_init(r,e,t,i);return this._serviceContextId=f(r),c(r),0!==e||this._serviceContextId<0?(console.error("[MRZ] service init failed:","returnValue:",e,"contextId:",this._serviceContextId),!1):this._initialized=!0},setFrameSize({width:e,height:t}){var i=Math.floor(e),a=Math.floor(t),s=h.frame.width!==i||h.frame.height!==a;return h.frame.width=i,h.frame.height=a,s&&null!==this._serviceContextId&&0<=this._serviceContextId&&(this._needReinit=!0),!0},async recognition({data:e}){if(this._needReinit&&(this._needReinit=!1,await this.init()),null===this._serviceContextId||this._serviceContextId<0)return console.warn("MRZ service not initialized"),null;try{var{image:t,dataPtr:i}=d(e,h.frame.width,h.frame.height),a=l(u("MRZResult")),s=(self.EngineLib.mrz_service_exec(this._serviceContextId,t,a),self.EngineLib.parse_MRZResult(a));return s&&0<s.pointer&&0<s.iWidth&&0<s.iHeight&&(s.imageData=self.EngineLib.HEAPU8.slice(s.pointer,s.pointer+s.iHeight*s.iWidth*4),self.EngineLib._free(s.pointer)),c(i),c(a),s&&(s.eStatus=this._mapStatusEnum(s.status),s.field&&(s.tField=s.field),7===s.status)&&(this._lastSuccessfulResult=s.field),s}catch(e){return console.error("MRZ recognition error:",e),null}},_mapStatusEnum(e){return{0:"EAuthMeMRZServiceStatus_NotFound",1:"EAuthMeMRZServiceStatus_NotAligned",2:"EAuthMeMRZServiceStatus_Reflective",3:"EAuthMeMRZServiceStatus_Blur",4:"EAuthMeMRZServiceStatus_WrongCardType",5:"EAuthMeMRZServiceStatus_MRZNotFound",6:"EAuthMeMRZServiceStatus_RecogFailed",7:"EAuthMeMRZServiceStatus_Success",8:"EAuthMeMRZServiceStatus_Error"}[e]||"EAuthMeMRZServiceStatus_Unknown_"+e},toJson(e){return JSON.stringify(e)},setMaskPosition({positions:e}){return this._maskPositions=e,!(null!==this._serviceContextId&&0<=this._serviceContextId)||this.init()},getParams(){return(null===this._serviceContextId||this._serviceContextId<0)&&console.warn("[MRZ] getParams: service not initialized, returning empty object"),{}},setParams({params:e}){null===this._serviceContextId||this._serviceContextId<0?console.warn("[MRZ] setParams: service not initialized"):e||console.warn("[MRZ] setParams: params is undefined")},getUIParams(){return{analyzeSize:{iWidth:h.frame.width,iHeight:h.frame.height},previewPosition:{fLeft:0,fTop:0,fRight:1,fBottom:1}}},setUIParams(e){},getDebugImage({data:e}){return e instanceof Uint8ClampedArray?new Uint8Array(e):e},getFinalResult(){return null===this._serviceContextId||this._serviceContextId<0?null:this._lastSuccessfulResult},destroy(){null!==this._serviceContextId&&0<=this._serviceContextId&&(self.EngineLib.mrz_service_free(this._serviceContextId),this._serviceContextId=null),this._loadedModelContextIds={},this._initialized=!1,this._lastSuccessfulResult=null}}}self.Fas={...a(),getNoLoadedModelVersions(){var e=l(u("FASModelVersion")),t=l(4),i=(self.EngineLib.fas_service_get_version(e,t),f(t)),a=self.EngineLib.parse_FASModelVersion(e),s=(c(e),c(t),[]);for(let o=0;o<i;o++){var n=a.models[o].name,r=a.models[o].version;g.hasModel(n)||s.push({name:n,version:r})}return s},async init(){var e=self.EngineLib.create_FASModels(),t=(e.FACE_00=g.getModelContextId("FACE_00")??this._loadedModelContextIds.FACE_00??-1,e.FACE_01=g.getModelContextId("FACE_01")??this._loadedModelContextIds.FACE_01??-1,e.FACE_02=g.getModelContextId("FACE_02")??this._loadedModelContextIds.FACE_02??-1,g.getModelContextId("FACE_03")??this._loadedModelContextIds.FACE_03),t=(void 0!==t&&(e.FACE_03=t),self.EngineLib.create_ServiceUIParams()),i=(t.is_mirror=h.isMobile?1:0,t.size.width=h.frame.width||640,t.size.height=h.frame.height||480,t.rect.x=0,t.rect.y=0,t.rect.width=1,t.rect.height=1,self.EngineLib.create_FASStageSetting()),a=self.EngineLib.create_EnumFASStage(),a=(i.stage_num=1,i.stages[0]=a.FAS_Stage_Passive,i.is_setting_params[0]=!1,l(4)),e=self.EngineLib.fas_service_init(a,e,t,i);return this._serviceContextId=f(a),c(a),0!==e||this._serviceContextId<0?(console.error("FAS service init failed:",e,this._serviceContextId),!1):this._initialized=!0},setFrameSize({width:e,height:t}){var i=Math.floor(e),a=Math.floor(t);if(null!==this._serviceContextId&&0<=this._serviceContextId){if(h.frame.width!==i||h.frame.height!==a){self.EngineLib.fas_service_free(this._serviceContextId),this._serviceContextId=null,h.frame.width=i,h.frame.height=a;var s=self.EngineLib.create_FASModels(),n=(s.FACE_00=g.getModelContextId("FACE_00")??this._loadedModelContextIds.FACE_00??-1,s.FACE_01=g.getModelContextId("FACE_01")??this._loadedModelContextIds.FACE_01??-1,s.FACE_02=g.getModelContextId("FACE_02")??this._loadedModelContextIds.FACE_02??-1,g.getModelContextId("FACE_03")??this._loadedModelContextIds.FACE_03),n=(void 0!==n&&(s.FACE_03=n),self.EngineLib.create_ServiceUIParams()),r=(n.is_mirror=h.isMobile?1:0,n.size.width=i,n.size.height=a,n.rect.x=0,n.rect.y=0,n.rect.width=1,n.rect.height=1,self.EngineLib.create_FASStageSetting()),o=self.EngineLib.create_EnumFASStage();r.stage_num=this._stageList?.length||1;for(let e=0;e<r.stage_num;e++)r.stages[e]=void 0!==this._stageList?.[e]?this._mapStageNameToEnum(this._stageList[e],o):o.FAS_Stage_Passive,r.is_setting_params[e]=!1;var _=l(4),s=self.EngineLib.fas_service_init(_,s,n,r);if(this._serviceContextId=f(_),c(_),0!==s||this._serviceContextId<0)return console.error("[FAS setFrameSize] Reinit failed:",s,this._serviceContextId),!1}}else h.frame.width=i,h.frame.height=a;return!0},_mapStageNameToEnum(e,t){return{EAuthMeFASServiceStage_Passive:t.FAS_Stage_Passive,EAuthMeFASServiceStage_OpenMouth:t.FAS_Stage_OpenMouth,EAuthMeFASServiceStage_CloseMouth:t.FAS_Stage_CloseMouth,EAuthMeFASServiceStage_Smile:t.FAS_Stage_Smile,EAuthMeFASServiceStage_FaceScale:t.FAS_Stage_FaceScale}[e]??t.FAS_Stage_Passive},recognition({data:e}){if(null===this._serviceContextId||this._serviceContextId<0)return console.warn("FAS service not initialized"),null;try{var{image:t,dataPtr:i}=d(e,h.frame.width,h.frame.height),a=l(u("FASResult")),s=(self.EngineLib.fas_service_exec(this._serviceContextId,t,a),self.EngineLib.parse_FASResult(a));return c(i),c(a),s&&(s.eStatus=this._mapStatusEnum(s.status),s.eStage=this._mapStageEnum(s.stage),s.iIsKeyFrame=s.is_key_frame,s.info||(s.info={}),s.info.face=s.info.faceInfo?{fScore:s.info.faceInfo.score??0,fMask:s.info.faceInfo.classes?.[0]??0,box:s.info.faceInfo.box??{x:0,y:0,width:0,height:0},afLandmark:s.info.faceInfo.landmark??[]}:{fScore:0,fMask:0,box:{x:0,y:0,width:0,height:0},afLandmark:[]},s.info.eye=s.info.eyeInfo?{fScore:s.info.eyeInfo.score??0,eStatus:this._mapEyeStatusEnum(s.info.eyeInfo.status)}:{fScore:0,eStatus:this._mapEyeStatusEnum(void 0)},s.info.mouth=s.info.mouthInfo?{fScore:s.info.mouthInfo.score??0,eStatus:this._mapMouthStatusEnum(s.info.mouthInfo.status)}:{fScore:0,eStatus:this._mapMouthStatusEnum(void 0)},s.info.fas=s.info.fasInfo?{fScore:s.info.fasInfo.score??0,eStatus:this._mapFasStatusEnum(s.info.fasInfo.status)}:{fScore:0,eStatus:this._mapFasStatusEnum(void 0)},s.info.pose=s.info.poseInfo?{ePose:this._mapPoseEnum(s.info.poseInfo.pose)}:{ePose:this._mapPoseEnum(void 0)},s.info.miniFAS=void 0!==s.info.miniFASInfo?this._mapMiniFasEnum(s.info.miniFASInfo):this._mapMiniFasEnum(void 0)),s}catch(e){return console.error("FAS recognition error:",e),null}},_mapStatusEnum(e){return null==e?"EAuthMeFASServiceStatus_Failed":{0:"EAuthMeFASServiceStatus_Failed",1:"EAuthMeFASServiceStatus_NoFace",2:"EAuthMeFASServiceStatus_FaceNotAtCenter",3:"EAuthMeFASServiceStatus_FaceTooSmall",4:"EAuthMeFASServiceStatus_FaceTooLarge",5:"EAuthMeFASServiceStatus_NeedFaceToCamera",6:"EAuthMeFASServiceStatus_FaceMasked",7:"EAuthMeFASServiceStatus_NeedOpenMouth",8:"EAuthMeFASServiceStatus_NeedCloseMouth",9:"EAuthMeFASServiceStatus_NeedOpenEyes",10:"EAuthMeFASServiceStatus_NeedSmile",11:"EAuthMeFASServiceStatus_DepthFake",12:"EAuthMeFASServiceStatus_NeedMoreFrame",13:"EAuthMeFASServiceStatus_Pass",14:"EAuthMeFASServiceStatus_Error",15:"EAuthMeFASServiceStatus_Motion"}[e]??"EAuthMeFASServiceStatus_Unknown_"+e},_mapStageEnum(e){return null==e?"EAuthMeFASServiceStage_Passive":{0:"EAuthMeFASServiceStage_Passive",1:"EAuthMeFASServiceStage_OpenMouth",2:"EAuthMeFASServiceStage_CloseMouth",3:"EAuthMeFASServiceStage_Smile",4:"EAuthMeFASServiceStage_FaceScale",5:"EAuthMeFASServiceStage_Done"}[e]??"EAuthMeFASServiceStage_Unknown_"+e},_mapEyeStatusEnum(e){return null==e?"EAuthMeEyeStatus_Eye_Close":{0:"EAuthMeEyeStatus_Eye_Close",1:"EAuthMeEyeStatus_Eye_Open"}[e]??"EAuthMeEyeStatus_Unknown_"+e},_mapMouthStatusEnum(e){return null==e?"EAuthMeMouthStatus_Mouth_Close":{0:"EAuthMeMouthStatus_Mouth_Close",1:"EAuthMeMouthStatus_Mouth_Open"}[e]??"EAuthMeMouthStatus_Unknown_"+e},_mapFasStatusEnum(e){return null==e?"EAuthMeFaceAntiSpoofingStatus_FrameNotEnough":{0:"EAuthMeFaceAntiSpoofingStatus_FrameNotEnough",1:"EAuthMeFaceAntiSpoofingStatus_Real",2:"EAuthMeFaceAntiSpoofingStatus_Spoof"}[e]??"EAuthMeFaceAntiSpoofingStatus_Unknown_"+e},_mapPoseEnum(e){return null==e?"EAuthMeFacePose_Unknown":{0:"EAuthMeFacePose_Unknown",1:"EAuthMeFacePose_LeftProfile",2:"EAuthMeFacePose_LeftFrontal",3:"EAuthMeFacePose_Frontal",4:"EAuthMeFacePose_RightFrontal",5:"EAuthMeFacePose_RightProfile",6:"EAuthMeFacePose_UpFrontal",7:"EAuthMeFacePose_DownFrontal"}[e]??"EAuthMeFacePose_Unknown_"+e},_mapMiniFasEnum(e){return null==e?"EAuthMeFaceAntiSpoofingStatus_FrameNotEnough":{0:"EAuthMeFaceAntiSpoofingStatus_FrameNotEnough",1:"EAuthMeFaceAntiSpoofingStatus_Real",2:"EAuthMeFaceAntiSpoofingStatus_Spoof"}[e]??"EAuthMeFaceAntiSpoofingStatus_Unknown_"+e},setStage({stageList:t}){if(this._stageList=t,!(null===this._serviceContextId||this._serviceContextId<0)){self.EngineLib.fas_service_free(this._serviceContextId),this._serviceContextId=null;var i=self.EngineLib.create_FASModels(),a=(i.FACE_00=g.getModelContextId("FACE_00")??this._loadedModelContextIds.FACE_00??-1,i.FACE_01=g.getModelContextId("FACE_01")??this._loadedModelContextIds.FACE_01??-1,i.FACE_02=g.getModelContextId("FACE_02")??this._loadedModelContextIds.FACE_02??-1,g.getModelContextId("FACE_03")??this._loadedModelContextIds.FACE_03),a=(void 0!==a&&(i.FACE_03=a),self.EngineLib.create_ServiceUIParams()),s=(a.is_mirror=h.isMobile?1:0,a.size.width=h.frame.width||640,a.size.height=h.frame.height||480,a.rect.x=0,a.rect.y=0,a.rect.width=1,a.rect.height=1,self.EngineLib.create_FASStageSetting()),n=self.EngineLib.create_EnumFASStage(),r=(s.stage_num=t.length,{Passive:n.FAS_Stage_Passive,OpenMouth:n.FAS_Stage_OpenMouth,CloseMouth:n.FAS_Stage_CloseMouth,Smile:n.FAS_Stage_Smile,FaceScale:n.FAS_Stage_FaceScale});for(let e=0;e<t.length;e++){var o=t[e];s.stages[e]=r[o]??n.FAS_Stage_Passive,s.is_setting_params[e]=!1}var _=l(4),i=self.EngineLib.fas_service_init(_,i,a,s);this._serviceContextId=f(_),c(_),(0!==i||this._serviceContextId<0)&&console.error("FAS service reinit failed:",i,this._serviceContextId)}},getStageParams({}){return null===this._serviceContextId||this._serviceContextId<0?null:{}},setStageParams({}){null!==this._serviceContextId&&this._serviceContextId},getParams(){var e,t;return null===this._serviceContextId||this._serviceContextId<0?(console.warn("[FAS] getParams: service not initialized, returning default params"),{faceROI:{fLeft:.15,fTop:.255,fRight:.85,fBottom:.745},timeoutSec:30,fFASTh:.5}):(e=self.EngineLib.create_FASParams(this._serviceContextId))?(t={fLeft:e.face_roi?.x??.15,fTop:e.face_roi?.y??.255,fRight:(e.face_roi?.x??.15)+(e.face_roi?.width??.7),fBottom:(e.face_roi?.y??.255)+(e.face_roi?.height??.49)},{...e,faceROI:t,timeoutSec:e.timeout_sec,fFASTh:e.fas_th}):(console.warn("[FAS] getParams: create_FASParams returned undefined, returning default params"),{faceROI:{fLeft:.15,fTop:.255,fRight:.85,fBottom:.745},timeoutSec:30,fFASTh:.5})},setParams({params:e}){var t;null===this._serviceContextId||this._serviceContextId<0?console.warn("[FAS] setParams: service not initialized"):e?(t=self.EngineLib.create_FASParams(this._serviceContextId))?(e.faceROI&&(t.face_roi.x=e.faceROI.fLeft,t.face_roi.y=e.faceROI.fTop,t.face_roi.width=e.faceROI.fRight-e.faceROI.fLeft,t.face_roi.height=e.faceROI.fBottom-e.faceROI.fTop),void 0!==e.timeoutSec&&(t.timeout_sec=e.timeoutSec),void 0!==e.fFASTh&&(t.fas_th=e.fFASTh),void 0!==e.face_detect_th&&(t.face_detect_th=e.face_detect_th),void 0!==e.mask_th&&(t.mask_th=e.mask_th),void 0!==e.eye_th&&(t.eye_th=e.eye_th),void 0!==e.mouth_th&&(t.mouth_th=e.mouth_th),void 0!==e.fas_th&&(t.fas_th=e.fas_th),void 0!==e.mini_fas_th&&(t.mini_fas_th=e.mini_fas_th),void 0!==e.fas_accumulative_num&&(t.fas_accumulative_num=e.fas_accumulative_num),void 0!==e.fas_timeout_sec&&(t.fas_timeout_sec=e.fas_timeout_sec),void 0!==e.not_at_center_th&&(t.not_at_center_th=e.not_at_center_th),void 0!==e.face_too_small_th&&(t.face_too_small_th=e.face_too_small_th),void 0!==e.face_too_large_th&&(t.face_too_large_th=e.face_too_large_th),self.EngineLib.fas_service_set_param(this._serviceContextId,t)):console.warn("[FAS] setParams: create_FASParams returned undefined"):console.warn("[FAS] setParams: params is undefined")},getUIParams(){return null===this._serviceContextId||this._serviceContextId<0?null:{analyzeSize:{iWidth:h.frame.width,iHeight:h.frame.height},previewPosition:{fLeft:0,fTop:0,fRight:1,fBottom:1}}},setUIParams(e){null!==this._serviceContextId&&this._serviceContextId},async getNormalizedFaceROI(){return null!==this._serviceContextId&&this._serviceContextId,{height:0,width:0,x:0,y:0}},setPublicKeyForJson(e){return t=e||"",self.EngineLib.authme_engine_set_report_key(e)},start(){return null===this._serviceContextId||this._serviceContextId<0?(console.warn("[FAS start] service not initialized"),!1):("function"==typeof self.EngineLib.fas_service_set_option&&self.EngineLib.fas_service_set_option(this._serviceContextId,"algo_log","enable"),"function"!=typeof self.EngineLib.fas_service_start||0===self.EngineLib.fas_service_start(this._serviceContextId))},stop(){return null===this._serviceContextId||this._serviceContextId<0?(console.warn("[FAS stop] service not initialized"),!1):"function"!=typeof self.EngineLib.fas_service_stop||0===self.EngineLib.fas_service_stop(this._serviceContextId)},setOption({key:e,value:t}){return null===this._serviceContextId||this._serviceContextId<0?(console.warn("[FAS setOption] service not initialized"),!1):"function"!=typeof self.EngineLib.fas_service_set_option||0===self.EngineLib.fas_service_set_option(this._serviceContextId,e,t)},destroy(){null!==this._serviceContextId&&0<=this._serviceContextId&&(self.EngineLib.fas_service_free(this._serviceContextId),this._serviceContextId=null),this._loadedModelContextIds={},this._initialized=!1},getJsonReport(){var e,t,i;return null===this._serviceContextId||this._serviceContextId<0?(console.warn("[FAS getJsonReport] Invalid serviceContextId"),"{}"):(e=l(5e5),self.EngineLib.HEAPU8.fill(0,e,e+5e5),"function"!=typeof self.EngineLib.fas_service_get_info?(console.error("[FAS getJsonReport] fas_service_get_info not available"),c(e),"{}"):0!==(i=self.EngineLib.fas_service_get_info(this._serviceContextId,5e5,e))?(console.error("[FAS getJsonReport] failed with code:",i),c(e),"{}"):(t=0<(t=(i=self.EngineLib.HEAPU8.slice(e,e+5e5)).indexOf(0))?t:5e5,i=new TextDecoder("utf-8").decode(i.slice(0,t)),c(e),i))}},self.CardOCR={...a(),_cardType:"Invalid",_getCardImageViaDebugInfo(){if(null===this._serviceContextId||this._serviceContextId<0)return null;if("function"!=typeof self.EngineLib.card_ocr_service_get_debug_info)return null;if("function"!=typeof self.EngineLib.create_CardOCRServiceDebugInfoSetting)return null;let t=null,a=null;try{t=l(1094400);var e=self.EngineLib.create_CardOCRServiceDebugInfoSetting(),i=(e.is_output_card_image=!0,e.card_image.width=760,e.card_image.height=480,e.card_image.channels=3,e.card_image.step=2280,e.card_image.data=t,u("CardOCRServiceDebugInfo")),s=(a=l(i),self.EngineLib.card_ocr_service_get_debug_info(this._serviceContextId,e,a));if(0!==s);else{var n=e.card_image.width||760,r=e.card_image.height||480,o=e.card_image.channels||3;if(0<n&&0<r){var _=n*r*o,d=self.EngineLib.HEAPU8.slice(t,t+_);let i;if(3===o){i=new Uint8Array(n*r*4);for(let e=0,t=0;e<_;e+=3,t+=4)i[t]=d[e+2],i[t+1]=d[e+1],i[t+2]=d[e],i[t+3]=255}else i=new Uint8Array(d);return c(t),c(a),{data:i,width:n,height:r}}}return c(t),c(a),null}catch(e){throw t&&c(t),a&&c(a),e}},getNoLoadedModelVersions(){var e=l(u("CardOCRModelVersion")),t=l(4),i=(self.EngineLib.card_ocr_service_get_version(e,t),f(t)),a=self.EngineLib.parse_CardOCRModelVersion(e),s=(c(e),c(t),[]);for(let o=0;o<i;o++){var n=a.models[o].name,r=a.models[o].version;g.hasModel(n)||s.push({name:n,version:r})}return s},async init(){null!==this._serviceContextId&&0<=this._serviceContextId&&(self.EngineLib.card_ocr_service_free(this._serviceContextId),this._serviceContextId=null);var e=self.EngineLib.create_CardOCRModels(),t=(e.OCR_00=g.getModelContextId("OCR_00")??this._loadedModelContextIds.OCR_00??-1,e.OCR_01=g.getModelContextId("OCR_01")??this._loadedModelContextIds.OCR_01??-1,e.OCR_01_FB=g.getModelContextId("OCR_01_FB")??this._loadedModelContextIds.OCR_01_FB??-1,e.OCR_03=g.getModelContextId("OCR_03")??this._loadedModelContextIds.OCR_03??-1,self.EngineLib.create_ServiceUIParams()),i=(t.is_mirror=0,t.size.width=h.frame.width||640,t.size.height=h.frame.height||480,t.rect.x=0,t.rect.y=0,t.rect.width=1,t.rect.height=1,self.EngineLib.create_ServiceROI());if(i.point_number=4,this._maskPositions&&4===this._maskPositions.length){var a=this._maskPositions.every(([e,t])=>e<=1&&t<=1),s=h.frame.width||640,n=h.frame.height||480;for(let e=0;e<4;e++)a?(i.points[e].x=this._maskPositions[e][0],i.points[e].y=this._maskPositions[e][1]):(i.points[e].x=this._maskPositions[e][0]/s,i.points[e].y=this._maskPositions[e][1]/n)}else i.points[0].x=0,i.points[0].y=0,i.points[1].x=1,i.points[1].y=0,i.points[2].x=1,i.points[2].y=1,i.points[3].x=0,i.points[3].y=1;var r=this._cardType||"TWN_IDCard_Front",o=l(4),e=self.EngineLib.card_ocr_service_init(o,e,t,i,r);return this._serviceContextId=f(o),c(o),0!==e||this._serviceContextId<0?(console.error("CardOCR service init failed:",e,this._serviceContextId),!1):this._initialized=!0},setFrameSize({width:e,height:t}){var i=Math.floor(e),a=Math.floor(t),s=h.frame.width!==i||h.frame.height!==a;return h.frame.width=i,h.frame.height=a,s&&null!==this._serviceContextId&&0<=this._serviceContextId&&(this._needReinit=!0),!0},setType({type:e}){let t=e;e&&e.startsWith("EAuthMeCardClass_")&&(t=e.replace("EAuthMeCardClass_",""));var i=this._cardType!==t;return this._cardType=t,i&&null!==this._serviceContextId&&0<=this._serviceContextId&&(this._needReinit=!0),!0},async setParams(e){var t=e;if(this._needReinit&&(this._needReinit=!1,await this.init()),!(null===this._serviceContextId||this._serviceContextId<0)&&t&&0!==Object.keys(t).length){var i=self.EngineLib.create_CardOCRParams(this._serviceContextId);if(i){t.eTargetCardType&&(i.card_type=t.eTargetCardType);var a,s;Object.assign(i,t);for([a,s]of Object.entries({fCardMatchTh:"card_match_th",fImageBlurTh:"image_blur_th",fImageReflectiveTriggerTh:"image_reflective_trigger_th",fImageReflectiveMaskTh:"image_reflective_mask_th",fCardClassificationTh:"card_classification_th",fIdCardColorTh:"idcard_color_th"}))void 0!==t[a]&&(i[s]=t[a]);this._currentParams={card_match_th:i.card_match_th,card_classification_th:i.card_classification_th,image_blur_th:i.image_blur_th},self.EngineLib.card_ocr_service_set_param(this._serviceContextId,i)}}},async recognition({data:e}){if(this._needReinit&&(this._needReinit=!1,await this.init()),null===this._serviceContextId||this._serviceContextId<0)return null;try{var{image:t,dataPtr:i}=d(e,h.frame.width,h.frame.height),a=l(u("CardOCRResult")),s=(self.EngineLib.card_ocr_service_exec(this._serviceContextId,t,a),self.EngineLib.parse_CardOCRResult(a));if(s&&6===s.status)try{var n=this._getCardImageViaDebugInfo();n&&(s.imageData=n.data,s.iWidth=n.width,s.iHeight=n.height)}catch(e){s&&0<s.pointer&&0<s.iWidth&&0<s.iHeight&&(s.imageData=self.EngineLib.HEAPU8.slice(s.pointer,s.pointer+s.iHeight*s.iWidth*4),self.EngineLib._free(s.pointer))}else s&&0<s.pointer&&0<s.iWidth&&0<s.iHeight&&(s.imageData=self.EngineLib.HEAPU8.slice(s.pointer,s.pointer+s.iHeight*s.iWidth*4),self.EngineLib._free(s.pointer));return c(i),c(a),s&&(s.eStatus=this._mapStatusEnum(s.status),s.info)&&s.info.cardClass&&(s.info.cardClass.eClass=this._mapCardClassEnum(s.info.cardClass.class)),s}catch(e){return console.error("CardOCR recognition error:",e),null}},_mapStatusEnum(e){return{0:"EAuthMeCardOCRStatus_NoCard",1:"EAuthMeCardOCRStatus_WrongCardType",2:"EAuthMeCardOCRStatus_PositionNotMatch",3:"EAuthMeCardOCRStatus_Reflective",4:"EAuthMeCardOCRStatus_Gray",5:"EAuthMeCardOCRStatus_Blur",6:"EAuthMeCardOCRStatus_Pass",7:"EAuthMeCardOCRStatus_Error",8:"EAuthMeCardOCRStatus_Motion"}[e]||"EAuthMeCardOCRStatus_Unknown_"+e},_mapCardClassEnum(e){return{0:"EAuthMeCardClass_Invalid",1:"EAuthMeCardClass_UnknownCard",2:"EAuthMeCardClass_Passport",3:"EAuthMeCardClass_TWN_IDCard_Front",4:"EAuthMeCardClass_TWN_IDCard_Back",5:"EAuthMeCardClass_TWN_DriverLicense_Front",6:"EAuthMeCardClass_TWN_DriverLicense_Back",7:"EAuthMeCardClass_TWN_ResidentCard_Front",8:"EAuthMeCardClass_TWN_ResidentCard_Back",9:"EAuthMeCardClass_TWN_HealthCard_Front",10:"EAuthMeCardClass_TWN_VehiclesLicense_Front"}[e]||"EAuthMeCardClass_Unknown_"+e},setMaskPosition({positions:e}){return this._maskPositions=e,null!==this._serviceContextId&&0<=this._serviceContextId&&(this._needReinit=!0),!0},async getParams(){return this._needReinit&&(this._needReinit=!1,await this.init()),!(null===this._serviceContextId||this._serviceContextId<0)&&self.EngineLib.create_CardOCRParams(this._serviceContextId)||{}},getUIParams(){return{analyzeSize:{iWidth:h.frame.width,iHeight:h.frame.height},previewPosition:{fLeft:0,fTop:0,fRight:1,fBottom:1}}},setUIParams(e){},destroy(){null!==this._serviceContextId&&0<=this._serviceContextId&&(self.EngineLib.card_ocr_service_free(this._serviceContextId),this._serviceContextId=null),this._loadedModelContextIds={},this._initialized=!1}},self.MRZPassportService=e(0,"TD3"),self.MRZResidentCardService=e(0,"TD1"),self.IdCardAntiFraud={...a(),_finalResult:null,_savedParams:null,getJsonReport(){if(!this._finalResult)return console.warn("[IdCardAntiFraud] getJsonReport: no final result available"),"";try{var e=JSON.stringify(this._finalResult);return t?"function"==typeof self.EngineLib.encryptString&&self.EngineLib.encryptString(e,t)||"":btoa(unescape(encodeURIComponent(e)))}catch(e){return console.error("[IdCardAntiFraud] getJsonReport: error:",e),""}},getNoLoadedModelVersions(){var e=l(u("IDCardAntiFraudModelVersion")),t=l(4),i=(self.EngineLib.idcard_antifraud_service_get_version(e,t),f(t)),a=self.EngineLib.parse_IDCardAntiFraudModelVersion(e),s=(c(e),c(t),[]);for(let o=0;o<i;o++){var n=a.models[o].name,r=a.models[o].version;g.hasModel(n)||s.push({name:n,version:r})}return s},async init(){(this._finalResult=null)!==this._serviceContextId&&0<=this._serviceContextId&&(self.EngineLib.idcard_antifraud_service_free(this._serviceContextId),this._serviceContextId=null);var e=self.EngineLib.create_IDCardAntiFraudModels(),t=(e.OCR_00=g.getModelContextId("OCR_00")??this._loadedModelContextIds.OCR_00??-1,e.OCR_01=g.getModelContextId("OCR_01")??this._loadedModelContextIds.OCR_01??-1,e.OCR_01_FB=g.getModelContextId("OCR_01_FB")??this._loadedModelContextIds.OCR_01_FB??-1,e.IDCardAntiFraud_00=g.getModelContextId("IDCardAntiFraud_00")??this._loadedModelContextIds.IDCardAntiFraud_00??-1,e.OCR_03=g.getModelContextId("OCR_03")??this._loadedModelContextIds.OCR_03??-1,self.EngineLib.create_ServiceUIParams()),i=(t.is_mirror=0,t.size.width=h.frame.width||640,t.size.height=h.frame.height||480,t.rect.x=0,t.rect.y=0,t.rect.width=1,t.rect.height=1,self.EngineLib.create_ServiceROI());i.point_number=4;let a=h.frame.width||640,s=h.frame.height||480,n=[[0,0],[1,0],[1,1],[0,1]];this._maskPositions&&4===this._maskPositions.length&&(d=this._maskPositions.every(([e,t])=>e<=1&&t<=1),n=d?this._maskPositions:this._maskPositions.map(([e,t])=>[e/a,t/s]));for(let u=0;u<4;u++)i.points[u]&&(i.points[u].x=n[u][0],i.points[u].y=n[u][1]);var r=self.EngineLib.create_IDCardAntiFraudStageSetting(),o=self.EngineLib.create_EnumIDCardAntiFraudStage();if(this._stageList&&0<this._stageList.length){r.stage_num=this._stageList.length;for(let e=0;e<this._stageList.length;e++){var _=this._mapStageNameToEnum(this._stageList[e],o);r.stages[e]=_}}else r.stage_num=1,r.stages[0]=o.IDCardFraud_Stage_Frontal;var d=l(4),e=self.EngineLib.idcard_antifraud_service_init(d,e,t,i,r);return this._serviceContextId=f(d),c(d),0!==e||this._serviceContextId<0?(console.error("IdCardAntiFraud service init failed:",e,this._serviceContextId),!1):((t=self.EngineLib.create_IDCardAntiFraudParams(this._serviceContextId)).timeout_sec=52,this._savedParams&&(void 0!==this._savedParams.timeout_sec&&(t.timeout_sec=this._savedParams.timeout_sec),Object.assign(t,this._savedParams)),self.EngineLib.idcard_antifraud_service_set_param(this._serviceContextId,t),this._initialized=!0)},setFrameSize({width:e,height:t}){var i=Math.floor(e),a=Math.floor(t),s=h.frame.width!==i||h.frame.height!==a;return h.frame.width=i,h.frame.height=a,s&&null!==this._serviceContextId&&0<=this._serviceContextId&&(this._needReinit=!0),!0},async recognition({data:e}){if(this._needReinit&&(this._needReinit=!1,await this.init()),null===this._serviceContextId||this._serviceContextId<0)return null;try{var{image:t,dataPtr:i}=d(e,h.frame.width,h.frame.height),a=l(u("IDCardAntiFraudResult")),s=(self.EngineLib.idcard_antifraud_service_exec(this._serviceContextId,t,a),self.EngineLib.parse_IDCardAntiFraudResult(a));return c(i),c(a),s&&(s.eStatus=this._mapStatusEnum(s.status),s.eStage=this._mapStageEnum(s.stage),this._currentStage=s.eStage,s.info&&(s.info.eCardMatchStatus=this._mapCardMatchStatusEnum(s.info.cardMatchStatus),s.info.cardClass&&(s.info.cardClass.eClass=this._mapCardClassEnum(s.info.cardClass.class)),s.info.metalTag)&&s.info.metalTag.aeStatus&&(s.info.metalTag.aeStatus=s.info.metalTag.aeStatus.map(e=>this._mapMetalTagStatusEnum(e))),0!==s.status&&1!==s.status||(this._finalResult={status:s.status,eStatus:s.eStatus,stage:s.stage,eStage:s.eStage,pass:0===s.status,info:s.info,timestamp:Date.now()})),s}catch(e){return console.error("[IdCardAntiFraud] recognition exception:",e),null}},_mapStatusEnum(e){return{0:"EAuthMeIDCardAntiFraudStatus_Pass",1:"EAuthMeIDCardAntiFraudStatus_Failed",2:"EAuthMeIDCardAntiFraudStatus_NoCard",3:"EAuthMeIDCardAntiFraudStatus_WrongCardType",4:"EAuthMeIDCardAntiFraudStatus_CardCutByCamera",5:"EAuthMeIDCardAntiFraudStatus_CardThicknessFailed",6:"EAuthMeIDCardAntiFraudStatus_Reflective",7:"EAuthMeIDCardAntiFraudStatus_Blur",8:"EAuthMeIDCardAntiFraudStatus_CardNotInROI",9:"EAuthMeIDCardAntiFraudStatus_CardTooSmall",10:"EAuthMeIDCardAntiFraudStatus_NeedDeformationFrontal",11:"EAuthMeIDCardAntiFraudStatus_NeedDeformationLeft",12:"EAuthMeIDCardAntiFraudStatus_NeedDeformationRight",13:"EAuthMeIDCardAntiFraudStatus_NeedDeformationUp",14:"EAuthMeIDCardAntiFraudStatus_NeedDeformationDown",15:"EAuthMeIDCardAntiFraudStatus_NeedHoldCard",16:"EAuthMeIDCardAntiFraudStatus_StagePass",17:"EAuthMeIDCardAntiFraudStatus_NeedMoreFrame",18:"EAuthMeIDCardAntiFraudStatus_Undefined",19:"EAuthMeIDCardAntiFraudStatus_Error",20:"EAuthMeIDCardAntiFraudStatus_Gray",21:"EAuthMeIDCardAntiFraudStatus_AntiFraudFeatureDetect",22:"EAuthMeIDCardAntiFraudStatus_PositionNotMatch"}[e]||"EAuthMeIDCardAntiFraudStatus_Unknown_"+e},_mapStageEnum(e){return{0:"EAuthMeIDCardAntiFraudStage_Frontal",1:"EAuthMeIDCardAntiFraudStage_Up",2:"EAuthMeIDCardAntiFraudStage_Down",3:"EAuthMeIDCardAntiFraudStage_Left",4:"EAuthMeIDCardAntiFraudStage_Right",5:"EAuthMeIDCardAntiFraudStage_IgnoreCardMatch",6:"EAuthMeIDCardAntiFraudStage_Done"}[e]||"EAuthMeIDCardAntiFraudStage_Unknown_"+e},_mapCardMatchStatusEnum(e){return{0:"EAuthMeCardMatchStatus_None",1:"EAuthMeCardMatchStatus_Mismatch",2:"EAuthMeCardMatchStatus_NeedMoreFrame",3:"EAuthMeCardMatchStatus_Match"}[e]||"EAuthMeCardMatchStatus_Unknown_"+e},_mapCardClassEnum(e){return{0:"EAuthMeCardClass_Invalid",1:"EAuthMeCardClass_UnknownCard",2:"EAuthMeCardClass_Passport",3:"EAuthMeCardClass_TWN_IDCard_Front",4:"EAuthMeCardClass_TWN_IDCard_Back"}[e]||"EAuthMeCardClass_Unknown_"+e},_mapMetalTagStatusEnum(e){return{0:"EAuthMeIDCardMetalTagStatus_NotFound",1:"EAuthMeIDCardMetalTagStatus_Bright",2:"EAuthMeIDCardMetalTagStatus_Dark"}[e]||"EAuthMeIDCardMetalTagStatus_Unknown_"+e},_mapStageNameToEnum(e,t){return{EAuthMeIDCardAntiFraudStage_Frontal:t.IDCardFraud_Stage_Frontal,EAuthMeIDCardAntiFraudStage_Up:t.IDCardFraud_Stage_Up,EAuthMeIDCardAntiFraudStage_Down:t.IDCardFraud_Stage_Down,EAuthMeIDCardAntiFraudStage_Left:t.IDCardFraud_Stage_Left,EAuthMeIDCardAntiFraudStage_Right:t.IDCardFraud_Stage_Right,EAuthMeIDCardAntiFraudStage_IgnoreCardMatch:t.IDCardFraud_Stage_IgnoreCardMatch}[e]??{Frontal:t.IDCardFraud_Stage_Frontal,Up:t.IDCardFraud_Stage_Up,Down:t.IDCardFraud_Stage_Down,Left:t.IDCardFraud_Stage_Left,Right:t.IDCardFraud_Stage_Right,IgnoreCardMatch:t.IDCardFraud_Stage_IgnoreCardMatch}[e]??t.IDCardFraud_Stage_Frontal},setStage(e){var t;return(this._stageList=e)&&0<e.length&&((t=e[0]).startsWith("EAuthMeIDCardAntiFraudStage_")?this._currentStage=t:this._currentStage="EAuthMeIDCardAntiFraudStage_"+t),!(null!==this._serviceContextId&&0<=this._serviceContextId)||this.init()},setMaskPosition({positions:e}){return this._maskPositions=e,null!==this._serviceContextId&&0<=this._serviceContextId&&(this._needReinit=!0),!0},getCardMatchROI(e){let t;t=this._maskPositions&&4===this._maskPositions.length?this._maskPositions.map(([e,t])=>({x:e,y:t})):[{x:0,y:0},{x:1,y:0},{x:1,y:1},{x:0,y:1}];var i=e&&e.stage?e.stage:this._currentStage,a=.03;let s=t;return"EAuthMeIDCardAntiFraudStage_Left"===i?s=[{x:t[0].x,y:t[0].y+a},{x:t[1].x,y:t[1].y-a},{x:t[2].x,y:t[2].y+a},{x:t[3].x,y:t[3].y-a}]:"EAuthMeIDCardAntiFraudStage_Right"===i?s=[{x:t[0].x,y:t[0].y-a},{x:t[1].x,y:t[1].y+a},{x:t[2].x,y:t[2].y-a},{x:t[3].x,y:t[3].y+a}]:"EAuthMeIDCardAntiFraudStage_Up"===i?s=[{x:t[0].x+a,y:t[0].y},{x:t[1].x-a,y:t[1].y},{x:t[2].x+a,y:t[2].y},{x:t[3].x-a,y:t[3].y}]:"EAuthMeIDCardAntiFraudStage_Down"===i&&(s=[{x:t[0].x-a,y:t[0].y},{x:t[1].x+a,y:t[1].y},{x:t[2].x-a,y:t[2].y},{x:t[3].x+a,y:t[3].y}]),s},getParams(){return!(null===this._serviceContextId||this._serviceContextId<0)&&self.EngineLib.create_IDCardAntiFraudParams(this._serviceContextId)||{}},setParams({params:e}){var t,i={...e};void 0!==e.timeoutSec&&(i.timeout_sec=e.timeoutSec,delete i.timeoutSec),this._savedParams={...this._savedParams,...i},null===this._serviceContextId||this._serviceContextId<0||e&&(t=self.EngineLib.create_IDCardAntiFraudParams(this._serviceContextId))&&(Object.assign(t,i),self.EngineLib.idcard_antifraud_service_set_param(this._serviceContextId,t))},getUIParams(){return{analyzeSize:{iWidth:h.frame.width,iHeight:h.frame.height},previewPosition:{fLeft:0,fTop:0,fRight:1,fBottom:1}}},setUIParams(e){},destroy(){null!==this._serviceContextId&&0<=this._serviceContextId&&(self.EngineLib.idcard_antifraud_service_free(this._serviceContextId),this._serviceContextId=null),this._loadedModelContextIds={},this._initialized=!1,this._finalResult=null,this._savedParams=null}},self.Core={async setConfig(e){return h={...h,...e},!0},async loadEngine({engineJsContent:e,engineWasmContent:t}){return i({engineJsContent:e,engineWasmContent:t})},async verify(e){for(let i=0;i<20;i++){var t;if(self.EngineLib)return{0:"EAuthMeEngineReturnCode_eAuthMe_Engine_Success",1:"EAuthMeEngineReturnCode_eAuthMe_Engine_Failed",3:"EAuthMeEngineReturnCode_eAuthMe_Engine_Authorization_Pass",4:"EAuthMeEngineReturnCode_eAuthMe_Engine_Authorization_Failed"}[t=self.EngineLib.authme_engine_verify(e.cert,e.authToken)]||"EAuthMeEngineReturnCode_Unknown_"+t;await o(100)}return"EAuthMeEngineReturnCode_eAuthMe_Engine_Failed"},checkEnumConsistency(e){return[]}},addEventListener("message",(async function({data:t}){try{var{module:e,command:i,id:a,value:s}=t,n=self[e]?.[i];n?(r=await n.call(self[e],s),postMessage({module:e,command:i,id:a,value:r})):(console.warn(`Unknown command: ${e}.`+i),postMessage({module:e,command:i,id:a,value:null}))}catch(e){var{module:n,command:s,id:r}=t;throw console.error(`Worker error in ${n}.${s}:`,e),postMessage({module:n,command:s,id:r,value:{error:!0,cause:JSON.parse(JSON.stringify(e,Object.getOwnPropertyNames(e)))}}),e}}).bind(self))})();
|