capacitor-plugin-camera-forked 3.0.96 → 3.0.99
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/README.md +76 -7
- package/android/src/main/java/com/tonyxlh/capacitor/camera/CameraPreviewPlugin.java +58 -0
- package/dist/docs.json +5 -5
- package/dist/esm/definitions.d.ts +3 -0
- package/dist/esm/definitions.js.map +1 -1
- package/dist/esm/web.d.ts +8 -0
- package/dist/esm/web.js +65 -2
- package/dist/esm/web.js.map +1 -1
- package/dist/plugin.cjs.js +65 -2
- package/dist/plugin.cjs.js.map +1 -1
- package/dist/plugin.js +65 -2
- package/dist/plugin.js.map +1 -1
- package/ios/Plugin/CameraPreviewPlugin.swift +247 -72
- package/package.json +1 -1
package/dist/plugin.cjs.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var EnumResolution;\n(function (EnumResolution) {\n EnumResolution[EnumResolution[\"RESOLUTION_AUTO\"] = 0] = \"RESOLUTION_AUTO\";\n EnumResolution[EnumResolution[\"RESOLUTION_480P\"] = 1] = \"RESOLUTION_480P\";\n EnumResolution[EnumResolution[\"RESOLUTION_720P\"] = 2] = \"RESOLUTION_720P\";\n EnumResolution[EnumResolution[\"RESOLUTION_1080P\"] = 3] = \"RESOLUTION_1080P\";\n EnumResolution[EnumResolution[\"RESOLUTION_2K\"] = 4] = \"RESOLUTION_2K\";\n EnumResolution[EnumResolution[\"RESOLUTION_4K\"] = 5] = \"RESOLUTION_4K\";\n})(EnumResolution || (EnumResolution = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst CameraPreview = registerPlugin('CameraPreview', {\n web: () => import('./web').then(m => new m.CameraPreviewWeb()),\n});\nexport * from './definitions';\nexport { CameraPreview };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer } from 'dynamsoft-camera-enhancer';\nimport { EnumResolution } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\nexport class CameraPreviewWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.hasMicrophone = false;\n this.desiredJpegQuality = 0.95; // Default to high quality (0.0-1.0)\n }\n async setDefaultUIElementURL(url) {\n CameraEnhancer.defaultUIElementURL = url;\n }\n async setElement(ele) {\n this.container = ele;\n }\n saveFrame() {\n throw new Error('Method not implemented.');\n }\n async getOrientation() {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return { orientation: \"PORTRAIT\" };\n }\n else {\n return { orientation: \"LANDSCAPE\" };\n }\n }\n async initialize(options) {\n // Get quality parameter from initialization, default to 95% if not specified\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);\n }\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo) => {\n this.notifyListeners(\"onPlayed\", { resolution: playCallBackInfo.width + \"x\" + playCallBackInfo.height });\n try {\n let canvas = this.camera.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n }\n catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }\n else {\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n });\n }\n async getResolution() {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution = rsl[0] + \"x\" + rsl[1];\n return { resolution: resolution };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setResolution(options) {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P) {\n width = 640;\n height = 480;\n }\n else if (res == EnumResolution.RESOLUTION_720P) {\n width = 1280;\n height = 720;\n }\n else if (res == EnumResolution.RESOLUTION_1080P) {\n width = 1920;\n height = 1080;\n }\n else if (res == EnumResolution.RESOLUTION_2K) {\n width = 2560;\n height = 1440;\n }\n else if (res == EnumResolution.RESOLUTION_4K) {\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width, height);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getAllCameras() {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return { cameras: labels };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getSelectedCamera() {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return { selectedCamera: cameraInfo.label };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async selectCamera(options) {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setScanRegion(options) {\n if (this.camera) {\n this.region = options.region;\n this.applyScanRegion();\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n applyScanRegion() {\n if (this.camera && this.region) {\n this.camera.setScanRegion({\n regionLeft: this.region.left,\n regionTop: this.region.top,\n regionRight: this.region.right,\n regionBottom: this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n async setZoom(options) {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setFocus(options) {\n if (this.camera) {\n this.camera.setFocus({\n mode: \"manual\",\n area: {\n centerPoint: { x: options.x.toString(), y: options.y.toString() }\n }\n });\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async toggleTorch(options) {\n if (this.camera) {\n try {\n if (options[\"on\"]) {\n await this.camera.turnOnTorch();\n }\n else {\n await this.camera.turnOffTorch();\n }\n }\n catch (e) {\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n async startCamera() {\n var _a;\n if (this.camera) {\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n var _a, _b;\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));\n await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));\n };\n setTimeout(resetZoom, 500);\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n isSafari() {\n const u = navigator.userAgent.toLowerCase();\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }\n else {\n return false;\n }\n }\n async stopCamera() {\n if (this.camera) {\n this.camera.close(true);\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async isOpen() {\n if (this.camera) {\n return { isOpen: this.camera.isOpen() };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot(options) {\n if (this.camera) {\n let desiredQuality = this.desiredJpegQuality;\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n }\n let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\", \"\");\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot2(options) {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength / width * height;\n scaleRatio = options.maxLength / width;\n }\n else {\n targetHeight = options.maxLength;\n targetWidth = options.maxLength / height * width;\n scaleRatio = options.maxLength / height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n return { scaleRatio: scaleRatio };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n drawFullFrame(canvas) {\n var _a;\n let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n async takePhoto(_options) {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream = video.srcObject;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return { blob: blob };\n }\n catch (error) {\n console.log(error);\n }\n }\n else {\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion({\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n });\n let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL(\"image/jpeg\", this.desiredJpegQuality));\n this.applyScanRegion();\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n removeDataURLHead(dataURL) {\n return dataURL.substring(dataURL.indexOf(\",\") + 1, dataURL.length);\n }\n async requestCameraPermission() {\n const constraints = { video: true, audio: false };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n async requestMicroPhonePermission() {\n try {\n const constraints = { video: false, audio: true };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n }\n catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n async startRecording() {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject, {\n type: 'video'\n });\n this.recorder.startRecording();\n }\n else {\n throw new Error(\"camera not initialized\");\n }\n }\n async stopRecording() {\n return new Promise((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder.getBlob();\n this.recorder.destroy();\n this.recorder = null;\n resolve({ blob });\n };\n this.recorder.stopRecording(stopRecordingCallback);\n }\n else {\n reject(\"recorder not initialized\");\n }\n });\n }\n async setLayout(options) {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }\n else {\n throw new Error(\"Camera not initialized\");\n }\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["EnumResolution","registerPlugin","CameraEnhancer","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.cjs.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var EnumResolution;\n(function (EnumResolution) {\n EnumResolution[EnumResolution[\"RESOLUTION_AUTO\"] = 0] = \"RESOLUTION_AUTO\";\n EnumResolution[EnumResolution[\"RESOLUTION_480P\"] = 1] = \"RESOLUTION_480P\";\n EnumResolution[EnumResolution[\"RESOLUTION_720P\"] = 2] = \"RESOLUTION_720P\";\n EnumResolution[EnumResolution[\"RESOLUTION_1080P\"] = 3] = \"RESOLUTION_1080P\";\n EnumResolution[EnumResolution[\"RESOLUTION_2K\"] = 4] = \"RESOLUTION_2K\";\n EnumResolution[EnumResolution[\"RESOLUTION_4K\"] = 5] = \"RESOLUTION_4K\";\n})(EnumResolution || (EnumResolution = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst CameraPreview = registerPlugin('CameraPreview', {\n web: () => import('./web').then(m => new m.CameraPreviewWeb()),\n});\nexport * from './definitions';\nexport { CameraPreview };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer } from 'dynamsoft-camera-enhancer';\nimport { EnumResolution } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\nexport class CameraPreviewWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.hasMicrophone = false;\n this.desiredJpegQuality = 0.95; // Default to high quality (0.0-1.0)\n }\n async setDefaultUIElementURL(url) {\n CameraEnhancer.defaultUIElementURL = url;\n }\n async setElement(ele) {\n this.container = ele;\n }\n saveFrame() {\n throw new Error('Method not implemented.');\n }\n async getOrientation() {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return { orientation: \"PORTRAIT\" };\n }\n else {\n return { orientation: \"LANDSCAPE\" };\n }\n }\n async initialize(options) {\n // Get quality parameter from initialization, default to 95% if not specified\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);\n }\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo) => {\n this.notifyListeners(\"onPlayed\", { resolution: playCallBackInfo.width + \"x\" + playCallBackInfo.height });\n try {\n let canvas = this.camera.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n }\n catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }\n else {\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n });\n }\n async getResolution() {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution = rsl[0] + \"x\" + rsl[1];\n return { resolution: resolution };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setResolution(options) {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P) {\n width = 640;\n height = 480;\n }\n else if (res == EnumResolution.RESOLUTION_720P) {\n width = 1280;\n height = 720;\n }\n else if (res == EnumResolution.RESOLUTION_1080P) {\n width = 1920;\n height = 1080;\n }\n else if (res == EnumResolution.RESOLUTION_2K) {\n width = 2560;\n height = 1440;\n }\n else if (res == EnumResolution.RESOLUTION_4K) {\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width, height);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getAllCameras() {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return { cameras: labels };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getSelectedCamera() {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return { selectedCamera: cameraInfo.label };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async selectCamera(options) {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setScanRegion(options) {\n if (this.camera) {\n this.region = options.region;\n this.applyScanRegion();\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n applyScanRegion() {\n if (this.camera && this.region) {\n this.camera.setScanRegion({\n regionLeft: this.region.left,\n regionTop: this.region.top,\n regionRight: this.region.right,\n regionBottom: this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n async setZoom(options) {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setFocus(options) {\n if (this.camera) {\n this.camera.setFocus({\n mode: \"manual\",\n area: {\n centerPoint: { x: options.x.toString(), y: options.y.toString() }\n }\n });\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async toggleTorch(options) {\n if (this.camera) {\n try {\n if (options[\"on\"]) {\n await this.camera.turnOnTorch();\n }\n else {\n await this.camera.turnOffTorch();\n }\n }\n catch (e) {\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n async startCamera() {\n var _a;\n if (this.camera) {\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n var _a, _b;\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));\n await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));\n };\n setTimeout(resetZoom, 500);\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n isSafari() {\n const u = navigator.userAgent.toLowerCase();\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }\n else {\n return false;\n }\n }\n async stopCamera() {\n if (this.camera) {\n this.camera.close(true);\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async isOpen() {\n if (this.camera) {\n return { isOpen: this.camera.isOpen() };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot(options) {\n if (this.camera) {\n let desiredQuality = this.desiredJpegQuality;\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n }\n let canvas = this.camera.getFrame().toCanvas();\n let dataURL = canvas.toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\", \"\");\n // Only perform blur detection if checkBlur option is true\n if ((options === null || options === void 0 ? void 0 : options.checkBlur) === true) {\n const ctx = canvas.getContext('2d');\n if (ctx) {\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const blurResult = this.detectBlurWeb(imageData, canvas.width, canvas.height);\n return {\n base64: base64,\n blurScore: blurResult.blurScore\n };\n }\n }\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot2(options) {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength / width * height;\n scaleRatio = options.maxLength / width;\n }\n else {\n targetHeight = options.maxLength;\n targetWidth = options.maxLength / height * width;\n scaleRatio = options.maxLength / height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n return { scaleRatio: scaleRatio };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n drawFullFrame(canvas) {\n var _a;\n let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n async takePhoto(_options) {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream = video.srcObject;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return { blob: blob };\n }\n catch (error) {\n console.log(error);\n }\n }\n else {\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion({\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n });\n let canvas = this.camera.getFrame().toCanvas();\n let base64 = this.removeDataURLHead(canvas.toDataURL(\"image/jpeg\", this.desiredJpegQuality));\n this.applyScanRegion();\n // Add blur detection if base64 is included\n if (_options === null || _options === void 0 ? void 0 : _options.includeBase64) {\n const ctx = canvas.getContext('2d');\n if (ctx) {\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const blurResult = this.detectBlurWeb(imageData, canvas.width, canvas.height);\n return {\n base64: base64,\n blurScore: blurResult.blurScore\n };\n }\n }\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n removeDataURLHead(dataURL) {\n return dataURL.substring(dataURL.indexOf(\",\") + 1, dataURL.length);\n }\n async requestCameraPermission() {\n const constraints = { video: true, audio: false };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n async requestMicroPhonePermission() {\n try {\n const constraints = { video: false, audio: true };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n }\n catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n async startRecording() {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject, {\n type: 'video'\n });\n this.recorder.startRecording();\n }\n else {\n throw new Error(\"camera not initialized\");\n }\n }\n async stopRecording() {\n return new Promise((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder.getBlob();\n this.recorder.destroy();\n this.recorder = null;\n resolve({ blob });\n };\n this.recorder.stopRecording(stopRecordingCallback);\n }\n else {\n reject(\"recorder not initialized\");\n }\n });\n }\n async setLayout(options) {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }\n else {\n throw new Error(\"Camera not initialized\");\n }\n }\n /**\n * Detect blur using Laplacian variance algorithm (same as iOS/Android)\n * Higher values indicate sharper images\n */\n detectBlurWeb(imageData, width, height) {\n const data = imageData.data;\n let variance = 0;\n let count = 0;\n // Sample every 4th pixel for performance (similar to Android implementation)\n const step = 4;\n for (let y = step; y < height - step; y += step) {\n for (let x = step; x < width - step; x += step) {\n const idx = (y * width + x) * 4;\n // Convert to grayscale using same formula as Android\n const gray = 0.299 * data[idx] + 0.587 * data[idx + 1] + 0.114 * data[idx + 2];\n // Calculate neighbors for 3x3 Laplacian kernel\n const neighbors = [\n 0.299 * data[((y - 1) * width + (x - 1)) * 4] + 0.587 * data[((y - 1) * width + (x - 1)) * 4 + 1] + 0.114 * data[((y - 1) * width + (x - 1)) * 4 + 2],\n 0.299 * data[((y - 1) * width + x) * 4] + 0.587 * data[((y - 1) * width + x) * 4 + 1] + 0.114 * data[((y - 1) * width + x) * 4 + 2],\n 0.299 * data[((y - 1) * width + (x + 1)) * 4] + 0.587 * data[((y - 1) * width + (x + 1)) * 4 + 1] + 0.114 * data[((y - 1) * width + (x + 1)) * 4 + 2],\n 0.299 * data[(y * width + (x - 1)) * 4] + 0.587 * data[(y * width + (x - 1)) * 4 + 1] + 0.114 * data[(y * width + (x - 1)) * 4 + 2],\n 0.299 * data[(y * width + (x + 1)) * 4] + 0.587 * data[(y * width + (x + 1)) * 4 + 1] + 0.114 * data[(y * width + (x + 1)) * 4 + 2],\n 0.299 * data[((y + 1) * width + (x - 1)) * 4] + 0.587 * data[((y + 1) * width + (x - 1)) * 4 + 1] + 0.114 * data[((y + 1) * width + (x - 1)) * 4 + 2],\n 0.299 * data[((y + 1) * width + x) * 4] + 0.587 * data[((y + 1) * width + x) * 4 + 1] + 0.114 * data[((y + 1) * width + x) * 4 + 2],\n 0.299 * data[((y + 1) * width + (x + 1)) * 4] + 0.587 * data[((y + 1) * width + (x + 1)) * 4 + 1] + 0.114 * data[((y + 1) * width + (x + 1)) * 4 + 2]\n ];\n // Apply 3x3 Laplacian kernel (matches Android implementation)\n const laplacian = -neighbors[0] - neighbors[1] - neighbors[2] +\n -neighbors[3] + 8 * gray - neighbors[4] +\n -neighbors[5] - neighbors[6] - neighbors[7];\n variance += laplacian * laplacian;\n count++;\n }\n }\n const blurScore = count > 0 ? variance / count : 0;\n return { blurScore };\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["EnumResolution","registerPlugin","CameraEnhancer","WebPlugin"],"mappings":";;;;;;AAAWA;AACX,CAAC,UAAU,cAAc,EAAE;AAC3B,IAAI,cAAc,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB;AAC7E,IAAI,cAAc,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB;AAC7E,IAAI,cAAc,CAAC,cAAc,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC,GAAG,iBAAiB;AAC7E,IAAI,cAAc,CAAC,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,GAAG,kBAAkB;AAC/E,IAAI,cAAc,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe;AACzE,IAAI,cAAc,CAAC,cAAc,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,GAAG,eAAe;AACzE,CAAC,EAAEA,sBAAc,KAAKA,sBAAc,GAAG,EAAE,CAAC,CAAC;;ACPtC,MAAC,aAAa,GAAGC,mBAAc,CAAC,eAAe,EAAE;AACtD,IAAI,GAAG,EAAE,MAAM,mDAAe,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,gBAAgB,EAAE,CAAC;AAClE,CAAC;;ACCDC,sCAAc,CAAC,mBAAmB,GAAG,+EAA+E;AAC7G,MAAM,gBAAgB,SAASC,cAAS,CAAC;AAChD,IAAI,WAAW,GAAG;AAClB,QAAQ,KAAK,CAAC,GAAG,SAAS,CAAC;AAC3B,QAAQ,IAAI,CAAC,aAAa,GAAG,KAAK;AAClC,QAAQ,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;AACvC;AACA,IAAI,MAAM,sBAAsB,CAAC,GAAG,EAAE;AACtC,QAAQD,sCAAc,CAAC,mBAAmB,GAAG,GAAG;AAChD;AACA,IAAI,MAAM,UAAU,CAAC,GAAG,EAAE;AAC1B,QAAQ,IAAI,CAAC,SAAS,GAAG,GAAG;AAC5B;AACA,IAAI,SAAS,GAAG;AAChB,QAAQ,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC;AAClD;AACA,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC;AACnE,QAAQ,IAAI,QAAQ,CAAC,OAAO,EAAE;AAC9B,YAAY,OAAO,EAAE,WAAW,EAAE,UAAU,EAAE;AAC9C;AACA,aAAa;AACb,YAAY,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE;AAC/C;AACA;AACA,IAAI,MAAM,UAAU,CAAC,OAAO,EAAE;AAC9B;AACA,QAAQ,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,MAAM,SAAS,EAAE;AAC/F,YAAY,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACzF,YAAY,OAAO,CAAC,GAAG,CAAC,CAAC,sCAAsC,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;AAC3F;AACA,QAAQ,IAAI,CAAC,MAAM,GAAG,MAAMA,sCAAc,CAAC,cAAc,EAAE;AAC3D,QAAQ,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,gBAAgB,KAAK;AACvD,YAAY,IAAI,CAAC,eAAe,CAAC,UAAU,EAAE,EAAE,UAAU,EAAE,gBAAgB,CAAC,KAAK,GAAG,GAAG,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC;AACpH,YAAY,IAAI;AAChB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,sBAAsB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;AAC1I,gBAAgB,IAAI,MAAM,EAAE;AAC5B,oBAAoB,MAAM,CAAC,MAAM,EAAE;AACnC;AACA;AACA,YAAY,OAAO,KAAK,EAAE;AAC1B,gBAAgB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAClC;AACA,SAAS,CAAC;AACV,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE;AAC5B,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;AAC1D;AACA,aAAa;AACb,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAACA,sCAAc,CAAC,mBAAmB,CAAC;AAC9E,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,sBAAsB,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC1F,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,sBAAsB,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC3F,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,sBAAsB,CAAC,oBAAoB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC/F,YAAY,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,sBAAsB,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE;AAC9F;AACA,QAAQ,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,OAAO,CAAC;AACxC,QAAQ,IAAI,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC,yBAAyB,CAAC;AACnE,QAAQ,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM;AAClD,YAAY,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,IAAI,CAAC;AAC9D,SAAS,CAAC;AACV;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AACjD,YAAY,IAAI,UAAU,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC;AAClD,YAAY,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE;AAC7C;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,GAAG,GAAG,OAAO,CAAC,UAAU;AACxC,YAAY,IAAI,KAAK,GAAG,IAAI;AAC5B,YAAY,IAAI,MAAM,GAAG,GAAG;AAC5B,YAAY,IAAI,GAAG,IAAIF,sBAAc,CAAC,eAAe,EAAE;AACvD,gBAAgB,KAAK,GAAG,GAAG;AAC3B,gBAAgB,MAAM,GAAG,GAAG;AAC5B;AACA,iBAAiB,IAAI,GAAG,IAAIA,sBAAc,CAAC,eAAe,EAAE;AAC5D,gBAAgB,KAAK,GAAG,IAAI;AAC5B,gBAAgB,MAAM,GAAG,GAAG;AAC5B;AACA,iBAAiB,IAAI,GAAG,IAAIA,sBAAc,CAAC,gBAAgB,EAAE;AAC7D,gBAAgB,KAAK,GAAG,IAAI;AAC5B,gBAAgB,MAAM,GAAG,IAAI;AAC7B;AACA,iBAAiB,IAAI,GAAG,IAAIA,sBAAc,CAAC,aAAa,EAAE;AAC1D,gBAAgB,KAAK,GAAG,IAAI;AAC5B,gBAAgB,MAAM,GAAG,IAAI;AAC7B;AACA,iBAAiB,IAAI,GAAG,IAAIA,sBAAc,CAAC,aAAa,EAAE;AAC1D,gBAAgB,KAAK,GAAG,IAAI;AAC5B,gBAAgB,MAAM,GAAG,IAAI;AAC7B;AACA,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC;AAC1D,YAAY;AACZ;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3D,YAAY,IAAI,MAAM,GAAG,EAAE;AAC3B,YAAY,OAAO,CAAC,OAAO,CAAC,MAAM,IAAI;AACtC,gBAAgB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;AACzC,aAAa,CAAC;AACd,YAAY,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE;AACtC;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,iBAAiB,GAAG;AAC9B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;AAC5D,YAAY,OAAO,EAAE,cAAc,EAAE,UAAU,CAAC,KAAK,EAAE;AACvD;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;AAC3D,YAAY,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;AACjE,gBAAgB,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC;AAC7C,gBAAgB,IAAI,MAAM,CAAC,KAAK,KAAK,OAAO,CAAC,QAAQ,EAAE;AACvD,oBAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;AAC1D,oBAAoB;AACpB;AACA;AACA;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AACxC,YAAY,IAAI,CAAC,eAAe,EAAE;AAClC;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,eAAe,GAAG;AACtB,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE;AACxC,YAAY,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AACtC,gBAAgB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;AAC5C,gBAAgB,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,GAAG;AAC1C,gBAAgB,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;AAC9C,gBAAgB,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM;AAChD,gBAAgB,0BAA0B,EAAE,IAAI,CAAC,MAAM,CAAC;AACxD,aAAa,CAAC;AACd;AACA;AACA,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE;AAC3B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;AACrD,YAAY;AACZ;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,QAAQ,CAAC,OAAO,EAAE;AAC5B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;AACjC,gBAAgB,IAAI,EAAE,QAAQ;AAC9B,gBAAgB,IAAI,EAAE;AACtB,oBAAoB,WAAW,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,EAAE;AACnF;AACA,aAAa,CAAC;AACd;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,WAAW,CAAC,OAAO,EAAE;AAC/B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI;AAChB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,EAAE;AACnC,oBAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;AACnD;AACA,qBAAqB;AACrB,oBAAoB,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AACpD;AACA;AACA,YAAY,OAAO,CAAC,EAAE;AACtB,gBAAgB,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC;AACpD;AACA;AACA;AACA,IAAI,MAAM,WAAW,GAAG;AACxB,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACzF,YAAY,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;AAC5D,gBAAgB,MAAM,SAAS,GAAG,YAAY;AAC9C,oBAAoB,IAAI,EAAE,EAAE,EAAE;AAC9B,oBAAoB,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AACrG,oBAAoB,OAAO,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;AACnG,iBAAiB;AACjB,gBAAgB,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC;AAC1C;AACA;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,QAAQ,GAAG;AACf,QAAQ,MAAM,CAAC,GAAG,SAAS,CAAC,SAAS,CAAC,WAAW,EAAE;AACnD,QAAQ,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE;AACpE,YAAY,OAAO,IAAI;AACvB;AACA,aAAa;AACb,YAAY,OAAO,KAAK;AACxB;AACA;AACA,IAAI,MAAM,UAAU,GAAG;AACvB,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;AACnC;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,MAAM,GAAG;AACnB,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE;AACnD;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,YAAY,CAAC,OAAO,EAAE;AAChC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,cAAc,GAAG,IAAI,CAAC,kBAAkB;AACxD,YAAY,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,OAAO,MAAM,SAAS,EAAE;AACnG,gBAAgB,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,KAAK;AACpF;AACA,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;AAC1D,YAAY,IAAI,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,cAAc,CAAC;AACxE,YAAY,IAAI,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC;AACvE;AACA,YAAY,IAAI,CAAC,OAAO,KAAK,IAAI,IAAI,OAAO,KAAK,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC,SAAS,MAAM,IAAI,EAAE;AAChG,gBAAgB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACnD,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AACzF,oBAAoB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AACjG,oBAAoB,OAAO;AAC3B,wBAAwB,MAAM,EAAE,MAAM;AACtC,wBAAwB,SAAS,EAAE,UAAU,CAAC;AAC9C,qBAAqB;AACrB;AACA;AACA,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AACrC;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,aAAa,CAAC,OAAO,EAAE;AACjC,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM;AACvC,YAAY,IAAI,UAAU,GAAG,GAAG;AAChC,YAAY,IAAI,OAAO,IAAI,OAAO,CAAC,SAAS,EAAE;AAC9C,gBAAgB,IAAI,GAAG,GAAG,CAAC,MAAM,IAAI,CAAC,aAAa,EAAE,EAAE,UAAU;AACjE,gBAAgB,IAAI,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvD,gBAAgB,IAAI,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACxD,gBAAgB,IAAI,WAAW,GAAG,KAAK;AACvC,gBAAgB,IAAI,YAAY,GAAG,MAAM;AACzC,gBAAgB,IAAI,KAAK,GAAG,OAAO,CAAC,SAAS,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,EAAE;AAC7E,oBAAoB,IAAI,KAAK,GAAG,MAAM,EAAE;AACxC,wBAAwB,WAAW,GAAG,OAAO,CAAC,SAAS;AACvD,wBAAwB,YAAY,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK,GAAG,MAAM;AACzE,wBAAwB,UAAU,GAAG,OAAO,CAAC,SAAS,GAAG,KAAK;AAC9D;AACA,yBAAyB;AACzB,wBAAwB,YAAY,GAAG,OAAO,CAAC,SAAS;AACxD,wBAAwB,WAAW,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM,GAAG,KAAK;AACxE,wBAAwB,UAAU,GAAG,OAAO,CAAC,SAAS,GAAG,MAAM;AAC/D;AACA,oBAAoB,MAAM,CAAC,KAAK,GAAG,WAAW;AAC9C,oBAAoB,MAAM,CAAC,MAAM,GAAG,YAAY;AAChD,oBAAoB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC3F,oBAAoB,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACrD,oBAAoB,IAAI,GAAG,EAAE;AAC7B,wBAAwB,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,WAAW,EAAE,YAAY,CAAC;AAC7E;AACA;AACA,qBAAqB;AACrB,oBAAoB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC9C;AACA;AACA,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC;AAC1C;AACA,YAAY,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE;AAC7C;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,aAAa,CAAC,MAAM,EAAE;AAC1B,QAAQ,IAAI,EAAE;AACd,QAAQ,IAAI,KAAK,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,IAAI,EAAE,KAAK,MAAM,GAAG,MAAM,GAAG,EAAE,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AAC9H,QAAQ,IAAI,KAAK,EAAE;AACnB,YAAY,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC,UAAU;AAC3C,YAAY,MAAM,CAAC,MAAM,GAAG,KAAK,CAAC,WAAW;AAC7C,YAAY,IAAI,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAC7C,YAAY,IAAI,GAAG,EAAE;AACrB,gBAAgB,GAAG,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AACvE;AACA;AACA,QAAQ,OAAO,MAAM;AACrB;AACA,IAAI,MAAM,SAAS,CAAC,QAAQ,EAAE;AAC9B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnF,YAAY,IAAI,WAAW,GAAG,KAAK,CAAC,SAAS;AAC7C,YAAY,IAAI,WAAW,EAAE;AAC7B,gBAAgB,IAAI,cAAc,IAAI,MAAM,EAAE;AAC9C,oBAAoB,IAAI;AACxB;AACA,wBAAwB,IAAI,YAAY,GAAG,MAAM,CAAC,cAAc,CAAC;AACjE,wBAAwB,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;AAC7D,wBAAwB,MAAM,KAAK,GAAG,WAAW,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;AACrE,wBAAwB,IAAI,YAAY,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC;AAClE,wBAAwB,IAAI,IAAI,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE;AACjE,wBAAwB,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE;AAC7C;AACA,oBAAoB,OAAO,KAAK,EAAE;AAClC,wBAAwB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC;AAC1C;AACA;AACA,qBAAqB;AACrB,oBAAoB,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC;AAC7D;AACA;AACA,YAAY,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;AACtC,gBAAgB,UAAU,EAAE,CAAC;AAC7B,gBAAgB,SAAS,EAAE,CAAC;AAC5B,gBAAgB,YAAY,EAAE,GAAG;AACjC,gBAAgB,WAAW,EAAE,GAAG;AAChC,gBAAgB,0BAA0B,EAAE;AAC5C,aAAa,CAAC;AACd,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;AAC1D,YAAY,IAAI,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,CAAC,kBAAkB,CAAC,CAAC;AACxG,YAAY,IAAI,CAAC,eAAe,EAAE;AAClC;AACA,YAAY,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC,aAAa,EAAE;AAC5F,gBAAgB,MAAM,GAAG,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AACnD,gBAAgB,IAAI,GAAG,EAAE;AACzB,oBAAoB,MAAM,SAAS,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AACzF,oBAAoB,MAAM,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;AACjG,oBAAoB,OAAO;AAC3B,wBAAwB,MAAM,EAAE,MAAM;AACtC,wBAAwB,SAAS,EAAE,UAAU,CAAC;AAC9C,qBAAqB;AACrB;AACA;AACA,YAAY,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE;AACrC;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,iBAAiB,CAAC,OAAO,EAAE;AAC/B,QAAQ,OAAO,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC;AAC1E;AACA,IAAI,MAAM,uBAAuB,GAAG;AACpC,QAAQ,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE;AACzD,QAAQ,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC;AAC7E,QAAQ,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AACzC,QAAQ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AAChD,YAAY,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACnC,YAAY,KAAK,CAAC,IAAI,EAAE,CAAC;AACzB;AACA;AACA,IAAI,MAAM,2BAA2B,GAAG;AACxC,QAAQ,IAAI;AACZ,YAAY,MAAM,WAAW,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE;AAC7D,YAAY,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC,WAAW,CAAC;AACjF,YAAY,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,EAAE;AAC7C,YAAY,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACpD,gBAAgB,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;AACvC,gBAAgB,KAAK,CAAC,IAAI,EAAE,CAAC;AAC7B;AACA,YAAY,IAAI,CAAC,aAAa,GAAG,IAAI;AACrC;AACA,QAAQ,OAAO,KAAK,EAAE;AACtB,YAAY,IAAI,CAAC,aAAa,GAAG,KAAK;AACtC,YAAY,MAAM,KAAK;AACvB;AACA;AACA,IAAI,MAAM,cAAc,GAAG;AAC3B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,IAAI,CAAC,aAAa,EAAE;AACpC,gBAAgB,IAAI,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;AAC7D,gBAAgB,QAAQ,CAAC,KAAK,GAAG,IAAI;AACrC,gBAAgB,MAAM,IAAI,CAAC,MAAM,CAAC,mBAAmB,CAAC,QAAQ,CAAC;AAC/D;AACA,YAAY,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;AACnF,YAAY,IAAI,CAAC,QAAQ,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,SAAS,EAAE;AAC3D,gBAAgB,IAAI,EAAE;AACtB,aAAa,CAAC;AACd,YAAY,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE;AAC1C;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA,IAAI,MAAM,aAAa,GAAG;AAC1B,QAAQ,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK;AAChD,YAAY,IAAI,IAAI,CAAC,QAAQ,EAAE;AAC/B,gBAAgB,MAAM,qBAAqB,GAAG,MAAM;AACpD,oBAAoB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AACtD,oBAAoB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;AAC3C,oBAAoB,IAAI,CAAC,QAAQ,GAAG,IAAI;AACxC,oBAAoB,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC;AACrC,iBAAiB;AACjB,gBAAgB,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,qBAAqB,CAAC;AAClE;AACA,iBAAiB;AACjB,gBAAgB,MAAM,CAAC,0BAA0B,CAAC;AAClD;AACA,SAAS,CAAC;AACV;AACA,IAAI,MAAM,SAAS,CAAC,OAAO,EAAE;AAC7B,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;AACzB,YAAY,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE;AAChD,YAAY,IAAI,OAAO,CAAC,GAAG,EAAE;AAC7B,gBAAgB,GAAG,CAAC,KAAK,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG;AAC3C;AACA,YAAY,IAAI,OAAO,CAAC,IAAI,EAAE;AAC9B,gBAAgB,GAAG,CAAC,KAAK,CAAC,IAAI,GAAG,OAAO,CAAC,IAAI;AAC7C;AACA,YAAY,IAAI,OAAO,CAAC,KAAK,EAAE;AAC/B,gBAAgB,GAAG,CAAC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,KAAK;AAC/C;AACA,YAAY,IAAI,OAAO,CAAC,MAAM,EAAE;AAChC,gBAAgB,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM;AACjD;AACA,YAAY,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,UAAU;AAC3C;AACA,aAAa;AACb,YAAY,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,aAAa,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE;AAC5C,QAAQ,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI;AACnC,QAAQ,IAAI,QAAQ,GAAG,CAAC;AACxB,QAAQ,IAAI,KAAK,GAAG,CAAC;AACrB;AACA,QAAQ,MAAM,IAAI,GAAG,CAAC;AACtB,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE;AACzD,YAAY,KAAK,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,KAAK,GAAG,IAAI,EAAE,CAAC,IAAI,IAAI,EAAE;AAC5D,gBAAgB,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC;AAC/C;AACA,gBAAgB,MAAM,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;AAC9F;AACA,gBAAgB,MAAM,SAAS,GAAG;AAClC,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzK,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvJ,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzK,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvJ,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvJ,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzK,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACvJ,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;AACxK,iBAAiB;AACjB;AACA,gBAAgB,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC7E,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;AAC3D,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;AAC/D,gBAAgB,QAAQ,IAAI,SAAS,GAAG,SAAS;AACjD,gBAAgB,KAAK,EAAE;AACvB;AACA;AACA,QAAQ,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,QAAQ,GAAG,KAAK,GAAG,CAAC;AAC1D,QAAQ,OAAO,EAAE,SAAS,EAAE;AAC5B;AACA;;;;;;;;;"}
|
package/dist/plugin.js
CHANGED
|
@@ -259,8 +259,21 @@ var capacitorCameraPreview = (function (exports, core, dynamsoftCameraEnhancer,
|
|
|
259
259
|
if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {
|
|
260
260
|
desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;
|
|
261
261
|
}
|
|
262
|
-
let
|
|
262
|
+
let canvas = this.camera.getFrame().toCanvas();
|
|
263
|
+
let dataURL = canvas.toDataURL('image/jpeg', desiredQuality);
|
|
263
264
|
let base64 = dataURL.replace("data:image/jpeg;base64,", "");
|
|
265
|
+
// Only perform blur detection if checkBlur option is true
|
|
266
|
+
if ((options === null || options === void 0 ? void 0 : options.checkBlur) === true) {
|
|
267
|
+
const ctx = canvas.getContext('2d');
|
|
268
|
+
if (ctx) {
|
|
269
|
+
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
270
|
+
const blurResult = this.detectBlurWeb(imageData, canvas.width, canvas.height);
|
|
271
|
+
return {
|
|
272
|
+
base64: base64,
|
|
273
|
+
blurScore: blurResult.blurScore
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
}
|
|
264
277
|
return { base64: base64 };
|
|
265
278
|
}
|
|
266
279
|
else {
|
|
@@ -352,8 +365,21 @@ var capacitorCameraPreview = (function (exports, core, dynamsoftCameraEnhancer,
|
|
|
352
365
|
regionRight: 100,
|
|
353
366
|
regionMeasuredByPercentage: 1
|
|
354
367
|
});
|
|
355
|
-
let
|
|
368
|
+
let canvas = this.camera.getFrame().toCanvas();
|
|
369
|
+
let base64 = this.removeDataURLHead(canvas.toDataURL("image/jpeg", this.desiredJpegQuality));
|
|
356
370
|
this.applyScanRegion();
|
|
371
|
+
// Add blur detection if base64 is included
|
|
372
|
+
if (_options === null || _options === void 0 ? void 0 : _options.includeBase64) {
|
|
373
|
+
const ctx = canvas.getContext('2d');
|
|
374
|
+
if (ctx) {
|
|
375
|
+
const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
|
|
376
|
+
const blurResult = this.detectBlurWeb(imageData, canvas.width, canvas.height);
|
|
377
|
+
return {
|
|
378
|
+
base64: base64,
|
|
379
|
+
blurScore: blurResult.blurScore
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
}
|
|
357
383
|
return { base64: base64 };
|
|
358
384
|
}
|
|
359
385
|
else {
|
|
@@ -442,6 +468,43 @@ var capacitorCameraPreview = (function (exports, core, dynamsoftCameraEnhancer,
|
|
|
442
468
|
throw new Error("Camera not initialized");
|
|
443
469
|
}
|
|
444
470
|
}
|
|
471
|
+
/**
|
|
472
|
+
* Detect blur using Laplacian variance algorithm (same as iOS/Android)
|
|
473
|
+
* Higher values indicate sharper images
|
|
474
|
+
*/
|
|
475
|
+
detectBlurWeb(imageData, width, height) {
|
|
476
|
+
const data = imageData.data;
|
|
477
|
+
let variance = 0;
|
|
478
|
+
let count = 0;
|
|
479
|
+
// Sample every 4th pixel for performance (similar to Android implementation)
|
|
480
|
+
const step = 4;
|
|
481
|
+
for (let y = step; y < height - step; y += step) {
|
|
482
|
+
for (let x = step; x < width - step; x += step) {
|
|
483
|
+
const idx = (y * width + x) * 4;
|
|
484
|
+
// Convert to grayscale using same formula as Android
|
|
485
|
+
const gray = 0.299 * data[idx] + 0.587 * data[idx + 1] + 0.114 * data[idx + 2];
|
|
486
|
+
// Calculate neighbors for 3x3 Laplacian kernel
|
|
487
|
+
const neighbors = [
|
|
488
|
+
0.299 * data[((y - 1) * width + (x - 1)) * 4] + 0.587 * data[((y - 1) * width + (x - 1)) * 4 + 1] + 0.114 * data[((y - 1) * width + (x - 1)) * 4 + 2],
|
|
489
|
+
0.299 * data[((y - 1) * width + x) * 4] + 0.587 * data[((y - 1) * width + x) * 4 + 1] + 0.114 * data[((y - 1) * width + x) * 4 + 2],
|
|
490
|
+
0.299 * data[((y - 1) * width + (x + 1)) * 4] + 0.587 * data[((y - 1) * width + (x + 1)) * 4 + 1] + 0.114 * data[((y - 1) * width + (x + 1)) * 4 + 2],
|
|
491
|
+
0.299 * data[(y * width + (x - 1)) * 4] + 0.587 * data[(y * width + (x - 1)) * 4 + 1] + 0.114 * data[(y * width + (x - 1)) * 4 + 2],
|
|
492
|
+
0.299 * data[(y * width + (x + 1)) * 4] + 0.587 * data[(y * width + (x + 1)) * 4 + 1] + 0.114 * data[(y * width + (x + 1)) * 4 + 2],
|
|
493
|
+
0.299 * data[((y + 1) * width + (x - 1)) * 4] + 0.587 * data[((y + 1) * width + (x - 1)) * 4 + 1] + 0.114 * data[((y + 1) * width + (x - 1)) * 4 + 2],
|
|
494
|
+
0.299 * data[((y + 1) * width + x) * 4] + 0.587 * data[((y + 1) * width + x) * 4 + 1] + 0.114 * data[((y + 1) * width + x) * 4 + 2],
|
|
495
|
+
0.299 * data[((y + 1) * width + (x + 1)) * 4] + 0.587 * data[((y + 1) * width + (x + 1)) * 4 + 1] + 0.114 * data[((y + 1) * width + (x + 1)) * 4 + 2]
|
|
496
|
+
];
|
|
497
|
+
// Apply 3x3 Laplacian kernel (matches Android implementation)
|
|
498
|
+
const laplacian = -neighbors[0] - neighbors[1] - neighbors[2] +
|
|
499
|
+
-neighbors[3] + 8 * gray - neighbors[4] +
|
|
500
|
+
-neighbors[5] - neighbors[6] - neighbors[7];
|
|
501
|
+
variance += laplacian * laplacian;
|
|
502
|
+
count++;
|
|
503
|
+
}
|
|
504
|
+
}
|
|
505
|
+
const blurScore = count > 0 ? variance / count : 0;
|
|
506
|
+
return { blurScore };
|
|
507
|
+
}
|
|
445
508
|
}
|
|
446
509
|
|
|
447
510
|
var web = /*#__PURE__*/Object.freeze({
|
package/dist/plugin.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var EnumResolution;\n(function (EnumResolution) {\n EnumResolution[EnumResolution[\"RESOLUTION_AUTO\"] = 0] = \"RESOLUTION_AUTO\";\n EnumResolution[EnumResolution[\"RESOLUTION_480P\"] = 1] = \"RESOLUTION_480P\";\n EnumResolution[EnumResolution[\"RESOLUTION_720P\"] = 2] = \"RESOLUTION_720P\";\n EnumResolution[EnumResolution[\"RESOLUTION_1080P\"] = 3] = \"RESOLUTION_1080P\";\n EnumResolution[EnumResolution[\"RESOLUTION_2K\"] = 4] = \"RESOLUTION_2K\";\n EnumResolution[EnumResolution[\"RESOLUTION_4K\"] = 5] = \"RESOLUTION_4K\";\n})(EnumResolution || (EnumResolution = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst CameraPreview = registerPlugin('CameraPreview', {\n web: () => import('./web').then(m => new m.CameraPreviewWeb()),\n});\nexport * from './definitions';\nexport { CameraPreview };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer } from 'dynamsoft-camera-enhancer';\nimport { EnumResolution } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\nexport class CameraPreviewWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.hasMicrophone = false;\n this.desiredJpegQuality = 0.95; // Default to high quality (0.0-1.0)\n }\n async setDefaultUIElementURL(url) {\n CameraEnhancer.defaultUIElementURL = url;\n }\n async setElement(ele) {\n this.container = ele;\n }\n saveFrame() {\n throw new Error('Method not implemented.');\n }\n async getOrientation() {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return { orientation: \"PORTRAIT\" };\n }\n else {\n return { orientation: \"LANDSCAPE\" };\n }\n }\n async initialize(options) {\n // Get quality parameter from initialization, default to 95% if not specified\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);\n }\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo) => {\n this.notifyListeners(\"onPlayed\", { resolution: playCallBackInfo.width + \"x\" + playCallBackInfo.height });\n try {\n let canvas = this.camera.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n }\n catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }\n else {\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n });\n }\n async getResolution() {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution = rsl[0] + \"x\" + rsl[1];\n return { resolution: resolution };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setResolution(options) {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P) {\n width = 640;\n height = 480;\n }\n else if (res == EnumResolution.RESOLUTION_720P) {\n width = 1280;\n height = 720;\n }\n else if (res == EnumResolution.RESOLUTION_1080P) {\n width = 1920;\n height = 1080;\n }\n else if (res == EnumResolution.RESOLUTION_2K) {\n width = 2560;\n height = 1440;\n }\n else if (res == EnumResolution.RESOLUTION_4K) {\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width, height);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getAllCameras() {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return { cameras: labels };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getSelectedCamera() {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return { selectedCamera: cameraInfo.label };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async selectCamera(options) {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setScanRegion(options) {\n if (this.camera) {\n this.region = options.region;\n this.applyScanRegion();\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n applyScanRegion() {\n if (this.camera && this.region) {\n this.camera.setScanRegion({\n regionLeft: this.region.left,\n regionTop: this.region.top,\n regionRight: this.region.right,\n regionBottom: this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n async setZoom(options) {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setFocus(options) {\n if (this.camera) {\n this.camera.setFocus({\n mode: \"manual\",\n area: {\n centerPoint: { x: options.x.toString(), y: options.y.toString() }\n }\n });\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async toggleTorch(options) {\n if (this.camera) {\n try {\n if (options[\"on\"]) {\n await this.camera.turnOnTorch();\n }\n else {\n await this.camera.turnOffTorch();\n }\n }\n catch (e) {\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n async startCamera() {\n var _a;\n if (this.camera) {\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n var _a, _b;\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));\n await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));\n };\n setTimeout(resetZoom, 500);\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n isSafari() {\n const u = navigator.userAgent.toLowerCase();\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }\n else {\n return false;\n }\n }\n async stopCamera() {\n if (this.camera) {\n this.camera.close(true);\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async isOpen() {\n if (this.camera) {\n return { isOpen: this.camera.isOpen() };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot(options) {\n if (this.camera) {\n let desiredQuality = this.desiredJpegQuality;\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n }\n let dataURL = this.camera.getFrame().toCanvas().toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\", \"\");\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot2(options) {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength / width * height;\n scaleRatio = options.maxLength / width;\n }\n else {\n targetHeight = options.maxLength;\n targetWidth = options.maxLength / height * width;\n scaleRatio = options.maxLength / height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n return { scaleRatio: scaleRatio };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n drawFullFrame(canvas) {\n var _a;\n let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n async takePhoto(_options) {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream = video.srcObject;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return { blob: blob };\n }\n catch (error) {\n console.log(error);\n }\n }\n else {\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion({\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n });\n let base64 = this.removeDataURLHead(this.camera.getFrame().toCanvas().toDataURL(\"image/jpeg\", this.desiredJpegQuality));\n this.applyScanRegion();\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n removeDataURLHead(dataURL) {\n return dataURL.substring(dataURL.indexOf(\",\") + 1, dataURL.length);\n }\n async requestCameraPermission() {\n const constraints = { video: true, audio: false };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n async requestMicroPhonePermission() {\n try {\n const constraints = { video: false, audio: true };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n }\n catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n async startRecording() {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject, {\n type: 'video'\n });\n this.recorder.startRecording();\n }\n else {\n throw new Error(\"camera not initialized\");\n }\n }\n async stopRecording() {\n return new Promise((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder.getBlob();\n this.recorder.destroy();\n this.recorder = null;\n resolve({ blob });\n };\n this.recorder.stopRecording(stopRecordingCallback);\n }\n else {\n reject(\"recorder not initialized\");\n }\n });\n }\n async setLayout(options) {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }\n else {\n throw new Error(\"Camera not initialized\");\n }\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["EnumResolution","registerPlugin","CameraEnhancer","WebPlugin"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"plugin.js","sources":["esm/definitions.js","esm/index.js","esm/web.js"],"sourcesContent":["export var EnumResolution;\n(function (EnumResolution) {\n EnumResolution[EnumResolution[\"RESOLUTION_AUTO\"] = 0] = \"RESOLUTION_AUTO\";\n EnumResolution[EnumResolution[\"RESOLUTION_480P\"] = 1] = \"RESOLUTION_480P\";\n EnumResolution[EnumResolution[\"RESOLUTION_720P\"] = 2] = \"RESOLUTION_720P\";\n EnumResolution[EnumResolution[\"RESOLUTION_1080P\"] = 3] = \"RESOLUTION_1080P\";\n EnumResolution[EnumResolution[\"RESOLUTION_2K\"] = 4] = \"RESOLUTION_2K\";\n EnumResolution[EnumResolution[\"RESOLUTION_4K\"] = 5] = \"RESOLUTION_4K\";\n})(EnumResolution || (EnumResolution = {}));\n//# sourceMappingURL=definitions.js.map","import { registerPlugin } from '@capacitor/core';\nconst CameraPreview = registerPlugin('CameraPreview', {\n web: () => import('./web').then(m => new m.CameraPreviewWeb()),\n});\nexport * from './definitions';\nexport { CameraPreview };\n//# sourceMappingURL=index.js.map","import { WebPlugin } from '@capacitor/core';\nimport { CameraEnhancer } from 'dynamsoft-camera-enhancer';\nimport { EnumResolution } from './definitions';\nimport RecordRTC from 'recordrtc';\nCameraEnhancer.defaultUIElementURL = \"https://cdn.jsdelivr.net/npm/dynamsoft-camera-enhancer@3.3.9/dist/dce.ui.html\";\nexport class CameraPreviewWeb extends WebPlugin {\n constructor() {\n super(...arguments);\n this.hasMicrophone = false;\n this.desiredJpegQuality = 0.95; // Default to high quality (0.0-1.0)\n }\n async setDefaultUIElementURL(url) {\n CameraEnhancer.defaultUIElementURL = url;\n }\n async setElement(ele) {\n this.container = ele;\n }\n saveFrame() {\n throw new Error('Method not implemented.');\n }\n async getOrientation() {\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n if (portrait.matches) {\n return { orientation: \"PORTRAIT\" };\n }\n else {\n return { orientation: \"LANDSCAPE\" };\n }\n }\n async initialize(options) {\n // Get quality parameter from initialization, default to 95% if not specified\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n this.desiredJpegQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n console.log(`Camera initialized with JPEG quality: ${this.desiredJpegQuality}`);\n }\n this.camera = await CameraEnhancer.createInstance();\n this.camera.on(\"played\", (playCallBackInfo) => {\n this.notifyListeners(\"onPlayed\", { resolution: playCallBackInfo.width + \"x\" + playCallBackInfo.height });\n try {\n let canvas = this.camera.getUIElement().getElementsByClassName(\"dce-video-container\")[0].getElementsByTagName(\"canvas\")[0];\n if (canvas) {\n canvas.remove();\n }\n }\n catch (error) {\n console.log(error);\n }\n });\n if (this.container) {\n await this.camera.setUIElement(this.container);\n }\n else {\n await this.camera.setUIElement(CameraEnhancer.defaultUIElementURL);\n this.camera.getUIElement().getElementsByClassName(\"dce-btn-close\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-camera\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-sel-resolution\")[0].remove();\n this.camera.getUIElement().getElementsByClassName(\"dce-msg-poweredby\")[0].remove();\n }\n this.camera.setVideoFit(\"cover\");\n let portrait = window.matchMedia(\"(orientation: portrait)\");\n portrait.addEventListener(\"change\", () => {\n this.notifyListeners(\"onOrientationChanged\", null);\n });\n }\n async getResolution() {\n if (this.camera) {\n let rsl = this.camera.getResolution();\n let resolution = rsl[0] + \"x\" + rsl[1];\n return { resolution: resolution };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setResolution(options) {\n if (this.camera) {\n let res = options.resolution;\n let width = 1280;\n let height = 720;\n if (res == EnumResolution.RESOLUTION_480P) {\n width = 640;\n height = 480;\n }\n else if (res == EnumResolution.RESOLUTION_720P) {\n width = 1280;\n height = 720;\n }\n else if (res == EnumResolution.RESOLUTION_1080P) {\n width = 1920;\n height = 1080;\n }\n else if (res == EnumResolution.RESOLUTION_2K) {\n width = 2560;\n height = 1440;\n }\n else if (res == EnumResolution.RESOLUTION_4K) {\n width = 3840;\n height = 2160;\n }\n await this.camera.setResolution(width, height);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getAllCameras() {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n let labels = [];\n cameras.forEach(camera => {\n labels.push(camera.label);\n });\n return { cameras: labels };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async getSelectedCamera() {\n if (this.camera) {\n let cameraInfo = this.camera.getSelectedCamera();\n return { selectedCamera: cameraInfo.label };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async selectCamera(options) {\n if (this.camera) {\n let cameras = await this.camera.getAllCameras();\n for (let index = 0; index < cameras.length; index++) {\n const camera = cameras[index];\n if (camera.label === options.cameraID) {\n await this.camera.selectCamera(camera);\n return;\n }\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setScanRegion(options) {\n if (this.camera) {\n this.region = options.region;\n this.applyScanRegion();\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n applyScanRegion() {\n if (this.camera && this.region) {\n this.camera.setScanRegion({\n regionLeft: this.region.left,\n regionTop: this.region.top,\n regionRight: this.region.right,\n regionBottom: this.region.bottom,\n regionMeasuredByPercentage: this.region.measuredByPercentage\n });\n }\n }\n async setZoom(options) {\n if (this.camera) {\n await this.camera.setZoom(options.factor);\n return;\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async setFocus(options) {\n if (this.camera) {\n this.camera.setFocus({\n mode: \"manual\",\n area: {\n centerPoint: { x: options.x.toString(), y: options.y.toString() }\n }\n });\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async toggleTorch(options) {\n if (this.camera) {\n try {\n if (options[\"on\"]) {\n await this.camera.turnOnTorch();\n }\n else {\n await this.camera.turnOffTorch();\n }\n }\n catch (e) {\n throw new Error(\"Torch unsupported\");\n }\n }\n }\n async startCamera() {\n var _a;\n if (this.camera) {\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.open(true));\n if (this.container && this.isSafari() === true) {\n const resetZoom = async () => {\n var _a, _b;\n await ((_a = this.camera) === null || _a === void 0 ? void 0 : _a.setZoom(1.001));\n await ((_b = this.camera) === null || _b === void 0 ? void 0 : _b.setZoom(1.0));\n };\n setTimeout(resetZoom, 500);\n }\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n isSafari() {\n const u = navigator.userAgent.toLowerCase();\n if (u.indexOf('safari') > -1 && u.indexOf('chrome') === -1) {\n return true;\n }\n else {\n return false;\n }\n }\n async stopCamera() {\n if (this.camera) {\n this.camera.close(true);\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async isOpen() {\n if (this.camera) {\n return { isOpen: this.camera.isOpen() };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot(options) {\n if (this.camera) {\n let desiredQuality = this.desiredJpegQuality;\n if ((options === null || options === void 0 ? void 0 : options.quality) !== undefined) {\n desiredQuality = Math.max(1, Math.min(100, options.quality)) / 100.0;\n }\n let canvas = this.camera.getFrame().toCanvas();\n let dataURL = canvas.toDataURL('image/jpeg', desiredQuality);\n let base64 = dataURL.replace(\"data:image/jpeg;base64,\", \"\");\n // Only perform blur detection if checkBlur option is true\n if ((options === null || options === void 0 ? void 0 : options.checkBlur) === true) {\n const ctx = canvas.getContext('2d');\n if (ctx) {\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const blurResult = this.detectBlurWeb(imageData, canvas.width, canvas.height);\n return {\n base64: base64,\n blurScore: blurResult.blurScore\n };\n }\n }\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n async takeSnapshot2(options) {\n if (this.camera) {\n let canvas = options.canvas;\n let scaleRatio = 1.0;\n if (options && options.maxLength) {\n let res = (await this.getResolution()).resolution;\n let width = parseInt(res.split(\"x\")[0]);\n let height = parseInt(res.split(\"x\")[1]);\n let targetWidth = width;\n let targetHeight = height;\n if (width > options.maxLength || height > options.maxLength) {\n if (width > height) {\n targetWidth = options.maxLength;\n targetHeight = options.maxLength / width * height;\n scaleRatio = options.maxLength / width;\n }\n else {\n targetHeight = options.maxLength;\n targetWidth = options.maxLength / height * width;\n scaleRatio = options.maxLength / height;\n }\n canvas.width = targetWidth;\n canvas.height = targetHeight;\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, targetWidth, targetHeight);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n }\n else {\n this.drawFullFrame(canvas);\n }\n return { scaleRatio: scaleRatio };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n drawFullFrame(canvas) {\n var _a;\n let video = (_a = this.camera) === null || _a === void 0 ? void 0 : _a.getUIElement().getElementsByTagName(\"video\")[0];\n if (video) {\n canvas.width = video.videoWidth;\n canvas.height = video.videoHeight;\n let ctx = canvas.getContext('2d');\n if (ctx) {\n ctx.drawImage(video, 0, 0, canvas.width, canvas.height);\n }\n }\n return canvas;\n }\n async takePhoto(_options) {\n if (this.camera) {\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n let localStream = video.srcObject;\n if (localStream) {\n if (\"ImageCapture\" in window) {\n try {\n //@ts-ignore \n let ImageCapture = window[\"ImageCapture\"];\n console.log(\"ImageCapture supported\");\n const track = localStream.getVideoTracks()[0];\n let imageCapture = new ImageCapture(track);\n let blob = await imageCapture.takePhoto();\n return { blob: blob };\n }\n catch (error) {\n console.log(error);\n }\n }\n else {\n console.log(\"ImageCapture not supported\");\n }\n }\n this.camera.setScanRegion({\n regionLeft: 0,\n regionTop: 0,\n regionBottom: 100,\n regionRight: 100,\n regionMeasuredByPercentage: 1\n });\n let canvas = this.camera.getFrame().toCanvas();\n let base64 = this.removeDataURLHead(canvas.toDataURL(\"image/jpeg\", this.desiredJpegQuality));\n this.applyScanRegion();\n // Add blur detection if base64 is included\n if (_options === null || _options === void 0 ? void 0 : _options.includeBase64) {\n const ctx = canvas.getContext('2d');\n if (ctx) {\n const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);\n const blurResult = this.detectBlurWeb(imageData, canvas.width, canvas.height);\n return {\n base64: base64,\n blurScore: blurResult.blurScore\n };\n }\n }\n return { base64: base64 };\n }\n else {\n throw new Error('Camera not initialized');\n }\n }\n removeDataURLHead(dataURL) {\n return dataURL.substring(dataURL.indexOf(\",\") + 1, dataURL.length);\n }\n async requestCameraPermission() {\n const constraints = { video: true, audio: false };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n }\n async requestMicroPhonePermission() {\n try {\n const constraints = { video: false, audio: true };\n const stream = await navigator.mediaDevices.getUserMedia(constraints);\n const tracks = stream.getTracks();\n for (let i = 0; i < tracks.length; i++) {\n const track = tracks[i];\n track.stop(); // stop the opened tracks\n }\n this.hasMicrophone = true;\n }\n catch (error) {\n this.hasMicrophone = false;\n throw error;\n }\n }\n async startRecording() {\n if (this.camera) {\n if (this.hasMicrophone) {\n let settings = this.camera.getVideoSettings();\n settings.audio = true;\n await this.camera.updateVideoSettings(settings);\n }\n let video = this.camera.getUIElement().getElementsByTagName(\"video\")[0];\n this.recorder = new RecordRTC(video.srcObject, {\n type: 'video'\n });\n this.recorder.startRecording();\n }\n else {\n throw new Error(\"camera not initialized\");\n }\n }\n async stopRecording() {\n return new Promise((resolve, reject) => {\n if (this.recorder) {\n const stopRecordingCallback = () => {\n let blob = this.recorder.getBlob();\n this.recorder.destroy();\n this.recorder = null;\n resolve({ blob });\n };\n this.recorder.stopRecording(stopRecordingCallback);\n }\n else {\n reject(\"recorder not initialized\");\n }\n });\n }\n async setLayout(options) {\n if (this.camera) {\n let ele = this.camera.getUIElement();\n if (options.top) {\n ele.style.top = options.top;\n }\n if (options.left) {\n ele.style.left = options.left;\n }\n if (options.width) {\n ele.style.width = options.width;\n }\n if (options.height) {\n ele.style.height = options.height;\n }\n ele.style.position = \"absolute\";\n }\n else {\n throw new Error(\"Camera not initialized\");\n }\n }\n /**\n * Detect blur using Laplacian variance algorithm (same as iOS/Android)\n * Higher values indicate sharper images\n */\n detectBlurWeb(imageData, width, height) {\n const data = imageData.data;\n let variance = 0;\n let count = 0;\n // Sample every 4th pixel for performance (similar to Android implementation)\n const step = 4;\n for (let y = step; y < height - step; y += step) {\n for (let x = step; x < width - step; x += step) {\n const idx = (y * width + x) * 4;\n // Convert to grayscale using same formula as Android\n const gray = 0.299 * data[idx] + 0.587 * data[idx + 1] + 0.114 * data[idx + 2];\n // Calculate neighbors for 3x3 Laplacian kernel\n const neighbors = [\n 0.299 * data[((y - 1) * width + (x - 1)) * 4] + 0.587 * data[((y - 1) * width + (x - 1)) * 4 + 1] + 0.114 * data[((y - 1) * width + (x - 1)) * 4 + 2],\n 0.299 * data[((y - 1) * width + x) * 4] + 0.587 * data[((y - 1) * width + x) * 4 + 1] + 0.114 * data[((y - 1) * width + x) * 4 + 2],\n 0.299 * data[((y - 1) * width + (x + 1)) * 4] + 0.587 * data[((y - 1) * width + (x + 1)) * 4 + 1] + 0.114 * data[((y - 1) * width + (x + 1)) * 4 + 2],\n 0.299 * data[(y * width + (x - 1)) * 4] + 0.587 * data[(y * width + (x - 1)) * 4 + 1] + 0.114 * data[(y * width + (x - 1)) * 4 + 2],\n 0.299 * data[(y * width + (x + 1)) * 4] + 0.587 * data[(y * width + (x + 1)) * 4 + 1] + 0.114 * data[(y * width + (x + 1)) * 4 + 2],\n 0.299 * data[((y + 1) * width + (x - 1)) * 4] + 0.587 * data[((y + 1) * width + (x - 1)) * 4 + 1] + 0.114 * data[((y + 1) * width + (x - 1)) * 4 + 2],\n 0.299 * data[((y + 1) * width + x) * 4] + 0.587 * data[((y + 1) * width + x) * 4 + 1] + 0.114 * data[((y + 1) * width + x) * 4 + 2],\n 0.299 * data[((y + 1) * width + (x + 1)) * 4] + 0.587 * data[((y + 1) * width + (x + 1)) * 4 + 1] + 0.114 * data[((y + 1) * width + (x + 1)) * 4 + 2]\n ];\n // Apply 3x3 Laplacian kernel (matches Android implementation)\n const laplacian = -neighbors[0] - neighbors[1] - neighbors[2] +\n -neighbors[3] + 8 * gray - neighbors[4] +\n -neighbors[5] - neighbors[6] - neighbors[7];\n variance += laplacian * laplacian;\n count++;\n }\n }\n const blurScore = count > 0 ? variance / count : 0;\n return { blurScore };\n }\n}\n//# sourceMappingURL=web.js.map"],"names":["EnumResolution","registerPlugin","CameraEnhancer","WebPlugin"],"mappings":"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AG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzK,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvJ,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzK,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvJ,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvJ,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACzK,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACvJ,oBAAoB,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;IACxK,iBAAiB;IACjB;IACA,gBAAgB,MAAM,SAAS,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAC7E,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC;IAC3D,oBAAoB,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,CAAC,CAAC;IAC/D,gBAAgB,QAAQ,IAAI,SAAS,GAAG,SAAS;IACjD,gBAAgB,KAAK,EAAE;IACvB;IACA;IACA,QAAQ,MAAM,SAAS,GAAG,KAAK,GAAG,CAAC,GAAG,QAAQ,GAAG,KAAK,GAAG,CAAC;IAC1D,QAAQ,OAAO,EAAE,SAAS,EAAE;IAC5B;IACA;;;;;;;;;;;;;;;"}
|