@threedddplus/logoeditor 0.0.100 → 0.0.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"logoeditor.cjs.production.min.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/icon/icon.tsx","../src/components/icon/horizontalFlip.tsx","../src/components/icon/verticalFlip.tsx","../src/components/icon/error.tsx","../src/components/icon/rLogo.tsx","../src/components/icon/myLogo.tsx","../src/components/icon/addText.tsx","../src/components/icon/flipH.tsx","../src/components/icon/flipV.tsx","../src/components/icon/selectAll.tsx","../src/components/icon/copy.tsx","../src/components/icon/sendToBack.tsx","../src/components/icon/sendToFront.tsx","../src/components/icon/sendAboveObject.tsx","../src/components/icon/sendUnderObject.tsx","../src/components/icon/eyedropper.tsx","../src/components/icon/delete.tsx","../src/components/icon/snapToCenter.tsx","../src/components/customToast/customToast.tsx","../src/store/actions/toastMessages.ts","../src/store/actions/index.ts","../src/axios/index.ts","../src/store/lambda/index.ts","../src/store/saveDesign/index.tsx","../src/services/UrlMapping.ts","../src/services/cookies.ts","../src/services/token.ts","../src/services/getDom.ts","../src/services/saveFile.ts","../src/services/restrictSpecialCharacters.ts","../src/store/auth/index.ts","../src/services/sessionStorage.ts","../src/store/history/index.ts","../src/store/fabric/index.ts","../src/loaders/tiffParser.js","../src/data.ts","../src/store/converters/index.ts","../src/store/index.ts","../src/components/button/button.tsx","../src/theme.ts","../src/components/toolTip/toolTip.tsx","../src/components/canvas/canvasButtons.tsx","../src/components/canvas/nudgeButtons.tsx","../src/components/contextMenu/contextMenu.tsx","../src/components/canvas/canvas.tsx","../src/store/fabric/fabricCanvas.ts","../src/components/card/card.tsx","../src/components/card/cardbody.tsx","../src/components/card/cardmedia.tsx","../src/components/card/cardtags.tsx","../src/components/card/cardtitle.tsx","../src/components/uploadLogo/fileuploadButton.tsx","../src/assets/colors/colors.ts","../src/components/colorPallet/colorPalette.tsx","../src/components/colorPallet/color.tsx","../src/components/canvas/popUpCanvas.tsx","../src/store/fabric/Popupcanvas.ts","../src/components/uploadLogo/uploadLogo.tsx","../src/components/searchbar/searchbar.tsx","../src/components/SortByDropdown/sortButton.tsx","../src/components/SortByDropdown/sortByDropdown.tsx","../src/components/myLogo/myLogo.tsx","../src/hooks/debounce/useDebounce.tsx","../src/components/button/iconButton.tsx","../src/components/button/editButton.tsx","../src/components/card/cardcheckmark.tsx","../src/components/card/carddownloadicon.tsx","../src/components/card/cardflag.tsx","../src/components/card/carddescription.tsx","../src/components/input/input.tsx","../src/components/modal/modal.tsx","../src/components/modal/modalButtons.tsx","../src/components/modal/modalDownloadIcon.tsx","../src/components/modal/modalHeading.tsx","../src/components/modal/modalLabel.tsx","../src/components/modal/modalStatusIcon.tsx","../src/components/leftMenu/leftMenu.tsx","../src/services/path-warp.js","../src/components/canvas/errorPopUp.tsx","../src/components/Rightmenu/Rightmenu.tsx","../src/components/loader/loader.tsx","../src/components/addMascot/listDropDown.tsx","../src/components/addMascot/mockData.ts","../src/components/addMascot/addMascot.tsx","../src/components/addMascot/decorationService.ts","../src/components/saveDesign/saveDesignModal.tsx","../src/components/input/customInput.tsx","../src/components/saveDesign/saveDesign.tsx","../src/hooks/outsideAlerter.tsx","../src/components/leftMenu/colorPicker.tsx","../src/components/middleMenu/middleMenu.tsx","../src/index.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\r\nimport { IconContext, IconType } from 'react-icons';\r\nimport { Button, Tooltip, TooltipReference, useTooltipState } from 'reakit';\r\n\r\nexport interface IconButtonProps\r\n extends Exclude<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\r\n icon?: React.ReactElement<IconType>;\r\n label: string;\r\n}\r\nconst Icon = React.forwardRef<HTMLButtonElement, IconButtonProps>(\r\n ({ label, icon, className, ...props }, ref) => {\r\n const tooltip = useTooltipState({ placement: 'top' });\r\n return (\r\n <>\r\n <TooltipReference\r\n ref={ref}\r\n {...props}\r\n {...tooltip}\r\n as={Button}\r\n className={`${className} flex relative items-center justify-center align-middle w-auto text-sm font-semibold h-5 first:rounded-l last:rounded-r focus:outline-none`}\r\n aria-label={label}\r\n >\r\n {icon}\r\n </TooltipReference>\r\n {label && label !== '' && (\r\n <Tooltip\r\n {...tooltip}\r\n className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before:top-[80%] before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[44deg] before:border before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:rounded-none before:border-t-transparent before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af]`}\r\n style={{ zIndex: 10 }}\r\n >\r\n {label}\r\n </Tooltip>\r\n )}\r\n </>\r\n );\r\n }\r\n);\r\n\r\nexport const IconButton = ({\r\n label,\r\n\r\n className,\r\n size = '2rem',\r\n icon = undefined,\r\n ...props\r\n}) => {\r\n return (\r\n <IconContext.Provider\r\n value={{\r\n size: size,\r\n className: 'pointer-events-auto cursor-pointer',\r\n }}\r\n >\r\n <Icon label={label} icon={icon} className={className} {...props} />\r\n </IconContext.Provider>\r\n );\r\n};\r\n\r\n\r\nexport {\r\n IoIosColorPalette,\r\n IoMdCheckmarkCircle,\r\n IoIosArrowForward,\r\n} from 'react-icons/io';\r\nexport { HiOutlineDownload, HiDotsVertical } from 'react-icons/hi';\r\nexport {\r\n FaRegSave,\r\n FaRegShareSquare,\r\n FaPlus,\r\n FaRegListAlt,\r\n FaEye,\r\n FaEyeSlash,\r\n} from 'react-icons/fa';\r\nexport { BiReset, BiAddToQueue } from 'react-icons/bi';\r\nexport { GiBilledCap, GiCardboardBox } from 'react-icons/gi';\r\nexport { TbWindowMinimize } from 'react-icons/tb';\r\nexport { RxCross2 } from 'react-icons/rx';\r\nexport { IoInformationCircleOutline, IoLogInOutline } from 'react-icons/io5';\r\nexport { CgMenuBoxed } from 'react-icons/cg';\r\nexport { IoIosInformationCircleOutline } from 'react-icons/io';\r\nexport { LuFlipHorizontal2, LuFlipVertical2 } from 'react-icons/lu';\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const HorizontalFlip = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '25.969',\r\n height: '22.478',\r\n viewBox: '0 0 25.969 22.478',\r\n },\r\n child: [\r\n // {\r\n // tag: 'defs',\r\n // attr: {},\r\n // child: [\r\n // {\r\n // tag: 'clipPath',\r\n // attr: { id: 'a' },\r\n // child: [\r\n // {\r\n // tag: 'path',\r\n // attr: { fill: '#353535', d: 'M0 0h25.969v22.478H0z' },\r\n // child: [],\r\n // },\r\n // ],\r\n // },\r\n // ],\r\n // },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'm25.969 3.647-10.359 8.46 10.359 8.632Z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M0 3.469v17.276l10.366-8.466L0 3.469m1.719 3.593 5.914 5.218-5.914 4.87Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.151 0h1.683v1.674h-1.683z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.154 3.462h1.677v1.686h-1.677z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.152 6.937h1.68v1.671h-1.68z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.144 10.406h1.679v1.669h-1.679z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.149 13.869h1.686v1.678h-1.686z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.143 17.334h1.686v1.683h-1.686z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.154 20.8h1.668v1.678h-1.668z' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const VerticalFlip = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '45',\r\n height: '45',\r\n viewBox: '0 0 45 45',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { fill: '#fff', stroke: '#ebebeb' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M0 0h45v45H0z',\r\n stroke: 'none',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n d: 'M.5.5h44v44H.5z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n transform: 'rotate(90 12.239 21.239)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'm0 3.647 10.359 8.46L0 20.74Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M25.969 3.469v17.276L15.603 12.28l10.366-8.811M24.25 7.062l-5.914 5.218 5.914 4.87Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.135 0h1.683v1.674h-1.683z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.138 3.462h1.677v1.686h-1.677z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.136 6.937h1.68v1.671h-1.68z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.146 10.406h1.679v1.669h-1.679z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.134 13.869h1.686v1.678h-1.686z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.14 17.334h1.686v1.683H12.14z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.147 20.8h1.668v1.678h-1.668z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const Error = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '30',\r\n height: '30',\r\n viewBox: '0 0 30 30',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { transform: 'translate(-150 -259)' },\r\n child: [\r\n {\r\n tag: 'circle',\r\n attr: {\r\n cx: '15',\r\n cy: '15',\r\n r: '15',\r\n transform: 'translate(150 259)',\r\n fill: '#e11a38',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#fff',\r\n 'stroke-linecap': 'round',\r\n 'stroke-width': '2',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'm160.439 278.488 9.484-9.484' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'm169.922 278.488-9.484-9.484' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const RLogo = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '36.672',\r\n height: '34.349',\r\n viewBox: '0 0 36.672 34.349',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-0.001)\",\r\n d: 'M1.99,0H29.149a1.993,1.993,0,0,1,1.99,1.99V29.011a1.986,1.986,0,0,1-.584,1.4v0A1.985,1.985,0,0,1,29.149,31H1.99A1.993,1.993,0,0,1,0,29.011V1.99A1.983,1.983,0,0,1,.585.587v0A1.985,1.985,0,0,1,1.99,0',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#fff',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-1.117 -1.116)\",\r\n strokeWidth: '2px',\r\n d: 'M2.526,2.442l-.043.043a.875.875,0,0,0-.26.62V30.127a.887.887,0,0,0,.882.882h27.16a.877.877,0,0,0,.58-.219l.043-.043a.876.876,0,0,0,.26-.621V3.105a.887.887,0,0,0-.882-.882H3.105a.876.876,0,0,0-.579.219',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: '#fff',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-3.386 -6.517)\",\r\n d: 'M17.761,19.938a.317.317,0,0,1-.064.191c-.009.011-.018.023-.028.035a28.71,28.71,0,0,0-5.566,10.1.408.408,0,0,1-.425.267c-.479,0-3.211-.01-4.535-.01-.325,0-.353-.273-.242-.526a52.346,52.346,0,0,1,7.018-9.774,2.034,2.034,0,0,1,1.665-.577c.288-.018,1.3-.034,1.86-.019a.317.317,0,0,1,.317.317m11.5,7.6h0a26.686,26.686,0,0,1,1.788,2.517c.172.193.163.475-.13.475H25.887a.593.593,0,0,1-.5-.279c-.041-.059-.084-.118-.128-.178-2.739-4.256-4.547-5.186-8.643-6.328a.289.289,0,0,1-.153-.4,16.3,16.3,0,0,1,.994-1.485.424.424,0,0,1,.243-.113,10.774,10.774,0,0,0,2.58-.144c2.338-.627,2.872-2,2.789-2.969-.021-1.525-1.992-2.28-5.547-2.214-2.524,0-3.5-.036-6.741-.033-1.269.025-2.793-.712-3.965-2.816-.193-.339.02-.591.242-.585,2.812.029,9.023-.022,13.067.079,6.085.309,7.622,2.866,7.7,5.1.041,3.026-2.349,4.423-3.37,5.1a18.519,18.519,0,0,1,4.805,4.272',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const MyLogo = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.381',\r\n height: '23.778',\r\n viewBox: '0 0 26.381 23.778',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n strokeWidth:\"1\",\r\n d: 'M19.698 7.853c.571-.475 1.11-.938 1.664-1.382a22.426 22.426 0 0 1 3.1-2.231 2.543 2.543 0 0 1 .612-.246.621.621 0 0 1 .769.8 4.073 4.073 0 0 1-.4.893 27.867 27.867 0 0 1-2.478 3.343c-.795.962-1.61 1.906-2.411 2.863a.509.509 0 0 0-.111.285 11.208 11.208 0 0 1-4.658 8.872 11.121 11.121 0 0 1-5.4 2.144 10.707 10.707 0 0 1-6.8-1.464 6.79 6.79 0 0 1-2.179-1.877 4.01 4.01 0 0 1-.491-4.3 3.571 3.571 0 0 1 1.06-1.273c.414-.331.841-.646 1.244-.989a1.774 1.774 0 0 0 .645-1.65 1.75 1.75 0 0 0-.635-1.151c-.374-.316-.76-.618-1.149-.914A3.763 3.763 0 0 1 .518 6.224a4.115 4.115 0 0 1 .855-2.262 7.56 7.56 0 0 1 2.733-2.204A11.038 11.038 0 0 1 8.162.542a10.878 10.878 0 0 1 4.744.658 11.321 11.321 0 0 1 4.686 3.2 11.249 11.249 0 0 1 2 3.214c.03.074.064.146.108.245m-.282 5.322c-.092.1-.143.148-.192.2-.958 1.023-1.91 2.052-2.879 3.066a1.725 1.725 0 0 0-.558.945 1.758 1.758 0 0 1-.121.361 4.187 4.187 0 0 1-2.709 2.693 7.042 7.042 0 0 1-4.627-.317.433.433 0 0 1-.291-.515.464.464 0 0 1 .452-.388 1.061 1.061 0 0 0 .994-.853c.161-.6.286-1.213.448-1.814a3.442 3.442 0 0 1 .8-1.513 3.653 3.653 0 0 1 2.092-1.027.823.823 0 0 0 .4-.195c.952-.9 1.884-1.816 2.841-2.707.9-.841 1.83-1.656 2.746-2.483.069-.062.134-.105.087-.231a10.636 10.636 0 0 0-2.107-3.49 10.45 10.45 0 0 0-3.874-2.7 10.109 10.109 0 0 0-4.27-.765 10 10 0 0 0-4.044 1.106 6.858 6.858 0 0 0-2.52 2.016 3.015 3.015 0 0 0 .526 4.236c.338.253.671.514 1 .778a2.9 2.9 0 0 1 1.061 1.408 2.668 2.668 0 0 1-.767 2.935c-.429.393-.9.737-1.362 1.1A2.9 2.9 0 0 0 1.66 18.4a4.238 4.238 0 0 0 1.474 1.875 9.636 9.636 0 0 0 6.836 2.016 10.206 10.206 0 0 0 4.484-1.48 10.431 10.431 0 0 0 4.233-4.893 9.948 9.948 0 0 0 .729-2.745m5.19-7.862-.074-.074a99.034 99.034 0 0 0-10.583 9.169l1.591 1.545a98.291 98.291 0 0 0 9.066-10.64M9.871 19.6a6.541 6.541 0 0 0 2 .118 3.378 3.378 0 0 0 1.869-.76 3.885 3.885 0 0 0 1.183-1.969.286.286 0 0 0-.077-.334c-.441-.431-.87-.874-1.306-1.311-.475-.477-.477-.478-1.117-.271a2.024 2.024 0 0 0-1.338 1.1 12.7 12.7 0 0 0-.425 1.313c-.163.536-.305 1.079-.483 1.611a2.526 2.526 0 0 1-.311.5',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M15.289 10.865a2.043 2.043 0 0 1-1.97-2.233 2.052 2.052 0 1 1 1.97 2.233m1.18-2.029a1.112 1.112 0 0 0-2.224-.01 1.124 1.124 0 0 0 1.123 1.1 1.093 1.093 0 0 0 1.1-1.094',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M5.279 9.17a2.037 2.037 0 1 1 2.036-2.152A2.031 2.031 0 0 1 5.279 9.17m-.011-.939a1.1 1.1 0 1 0-1.109-1.11 1.1 1.1 0 0 0 1.109 1.11',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M8.679 5.605a2.048 2.048 0 1 1 2.064 2.006 2.024 2.024 0 0 1-2.064-2.006m.934-.03a1.115 1.115 0 1 0 1.1-1.1 1.117 1.117 0 0 0-1.1 1.1',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: '#5d5d5d',\r\n\r\n fillRule: 'evenodd',\r\n\r\n transform: 'translate(-78.659 -351.017)',\r\n d: 'M7.895 17.255a2.045 2.045 0 1 1-2.079-2.031 2.032 2.032 0 0 1 2.079 2.031m-.934.021a1.111 1.111 0 1 0-1.131 1.091 1.108 1.108 0 0 0 1.131-1.091',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const AddText = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '21',\r\n height: '21',\r\n viewBox: '0 0 21 21',\r\n },\r\n\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M16 19H2V5h9V3H2a2.006 2.006 0 0 0-2 2v14a2.006 2.006 0 0 0 2 2h14a2.006 2.006 0 0 0 2-2v-9h-2Zm2-16V0h-2v3h-3c.01.01 0 2 0 2h3v2.99c.01.01 2 0 2 0V5h3V3Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M8.438 15.791v-5.365h-.889v.859h-1.8c0-.643-.027-1.281.009-1.914a.841.841 0 0 1 .858-.762q2.725-.01 5.45 0a.841.841 0 0 1 .857.764c.036.634.009 1.271.009 1.919h-1.784v-.862h-.9v5.361Z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const FlipH = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '24',\r\n height: '20.774',\r\n viewBox: '0 0 24 20.774',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'clip-path' },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_336',\r\n 'data-name': 'Rectangle 336',\r\n width: '24',\r\n height: '20.774',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1196',\r\n 'data-name': 'Group 1196',\r\n transform: 'translate(24 20.774) rotate(180)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_577',\r\n 'data-name': 'Group 577',\r\n transform: 'translate(0 0)',\r\n 'clip-path': 'url(#clip-path)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4546',\r\n 'data-name': 'Path 4546',\r\n d: 'M0,15.8,9.574,7.978,0,0Z',\r\n transform: 'translate(0 1.606)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4547',\r\n 'data-name': 'Path 4547',\r\n d: 'M9.58,15.967V0L0,7.824l9.58,8.143M7.991,12.646,2.525,7.823l5.466-4.5Z',\r\n transform: 'translate(14.42 1.601)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_329',\r\n 'data-name': 'Rectangle 329',\r\n width: '1.556',\r\n height: '1.547',\r\n transform: 'translate(11.215 19.227)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_330',\r\n 'data-name': 'Rectangle 330',\r\n width: '1.549',\r\n height: '1.559',\r\n transform: 'translate(11.218 16.016)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_331',\r\n 'data-name': 'Rectangle 331',\r\n width: '1.553',\r\n height: '1.544',\r\n transform: 'translate(11.216 12.818)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_332',\r\n 'data-name': 'Rectangle 332',\r\n width: '1.551',\r\n height: '1.542',\r\n transform: 'translate(11.226 9.615)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_333',\r\n 'data-name': 'Rectangle 333',\r\n width: '1.559',\r\n height: '1.551',\r\n transform: 'translate(11.214 6.405)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_334',\r\n 'data-name': 'Rectangle 334',\r\n width: '1.559',\r\n height: '1.555',\r\n transform: 'translate(11.219 3.198)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_335',\r\n 'data-name': 'Rectangle 335',\r\n width: '1.542',\r\n height: '1.551',\r\n transform: 'translate(11.226 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n// https://www.svgviewer.dev/ use this website to compress and load the paths\r\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\r\nexport const FlipV = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '20.774',\r\n height: '24',\r\n viewBox: '0 0 20.774 24',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'clip-path' },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_336',\r\n 'data-name': 'Rectangle 336',\r\n width: '24',\r\n height: '20.774',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1195',\r\n 'data-name': 'Group 1195',\r\n transform: 'translate(0 24) rotate(-90)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_577',\r\n 'data-name': 'Group 577',\r\n transform: 'translate(0 0)',\r\n 'clip-path': 'url(#clip-path)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4546',\r\n 'data-name': 'Path 4546',\r\n d: 'M0,15.8,9.574,7.978,0,0Z',\r\n transform: 'translate(0 1.606)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4547',\r\n 'data-name': 'Path 4547',\r\n d: 'M9.58,15.967V0L0,7.824l9.58,8.143M7.991,12.646,2.525,7.823l5.466-4.5Z',\r\n transform: 'translate(14.42 1.601)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_329',\r\n 'data-name': 'Rectangle 329',\r\n width: '1.556',\r\n height: '1.547',\r\n transform: 'translate(11.215 19.227)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_330',\r\n 'data-name': 'Rectangle 330',\r\n width: '1.549',\r\n height: '1.559',\r\n transform: 'translate(11.218 16.016)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_331',\r\n 'data-name': 'Rectangle 331',\r\n width: '1.553',\r\n height: '1.544',\r\n transform: 'translate(11.216 12.818)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_332',\r\n 'data-name': 'Rectangle 332',\r\n width: '1.551',\r\n height: '1.542',\r\n transform: 'translate(11.226 9.615)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_333',\r\n 'data-name': 'Rectangle 333',\r\n width: '1.559',\r\n height: '1.551',\r\n transform: 'translate(11.214 6.405)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_334',\r\n 'data-name': 'Rectangle 334',\r\n width: '1.559',\r\n height: '1.555',\r\n transform: 'translate(11.219 3.198)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_335',\r\n 'data-name': 'Rectangle 335',\r\n width: '1.542',\r\n height: '1.551',\r\n transform: 'translate(11.226 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SelectAll = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '18.641',\r\n height: '18.063',\r\n viewBox: '0 0 18.641 18.063',\r\n className: 'group',\r\n ...props,\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { 'data-name': 'Group 1075' },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n strokeWidth: '1',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: { width: '16', height: '16', rx: '4', stroke: 'none' },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n x: '.75',\r\n y: '.75',\r\n width: '14.5',\r\n height: '14.5',\r\n rx: '3.25',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'm7.049 8.602.146-.137 3.2-3.2a.766.766 0 0 1 .5-.267.652.652 0 0 1 .539 1.082c-.03.035-.064.066-.1.1l-3.836 3.829a.664.664 0 0 1-1.1-.068c-.415-.549-.826-1.1-1.24-1.649a.657.657 0 0 1-.083-.755.65.65 0 0 1 1.085-.093c.253.311.486.638.728.959l.151.2',\r\n className: 'group-hover:fill-[#E11A38]',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M5.892 18.063c-.1-.023-.2-.043-.3-.07a1.976 1.976 0 0 1-1.385-1.249h10.599a2.39 2.39 0 0 0 2.327-1.536 2.873 2.873 0 0 0 .177-.988c.013-2.859.008-5.717.008-8.576V3.671a1.652 1.652 0 0 1 .708.43 1.927 1.927 0 0 1 .58 1.124.871.871 0 0 0 .033.114v9.182a1.686 1.686 0 0 0-.031.167 3.713 3.713 0 0 1-2.515 3.16 10.1 10.1 0 0 1-1 .214Z',\r\n className: 'group-hover:fill-[#E11A38]',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const Copy = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'ICONS',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.063',\r\n height: '23.063',\r\n viewBox: '0 0 23.063 23.063',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3956',\r\n 'data-name': 'Path 3956',\r\n d: 'M17.912,5.252a1.2,1.2,0,0,0,.026-.127A5.13,5.13,0,0,0,12.813,0H6.406A6.414,6.414,0,0,0,0,6.406v6.406a5.13,5.13,0,0,0,5.125,5.125,1.192,1.192,0,0,0,.127-.026,6.415,6.415,0,0,0,6.279,5.151h5.125a6.414,6.414,0,0,0,6.406-6.406V11.531a6.415,6.415,0,0,0-5.151-6.279ZM5.125,11.531v3.844a2.565,2.565,0,0,1-2.562-2.562V6.406A3.848,3.848,0,0,1,6.406,2.563h6.406a2.565,2.565,0,0,1,2.563,2.563H11.531a6.414,6.414,0,0,0-6.406,6.406ZM20.5,16.656A3.848,3.848,0,0,1,16.656,20.5H11.531a3.848,3.848,0,0,1-3.844-3.844V11.531a3.848,3.848,0,0,1,3.844-3.844h5.125A3.848,3.848,0,0,1,20.5,11.531Z',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const SendToBack = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.552',\r\n height: '23.495',\r\n viewBox: '0 0 26.552 23.495',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_654',\r\n 'data-name': 'Group 654',\r\n transform: 'translate(-17856.939 13913.36)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4583',\r\n 'data-name': 'Path 4583',\r\n d: 'M0,0H14.069V14.069H0Z',\r\n transform: 'translate(17861.625 -13909.535)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_387',\r\n 'data-name': 'Rectangle 387',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(17857.939 -13912.36)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_388',\r\n 'data-name': 'Rectangle 388',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(17871.771 -13898.529)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const SendToFront = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.551',\r\n height: '23.495',\r\n viewBox: '0 0 26.551 23.495',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_651',\r\n 'data-name': 'Group 651',\r\n transform: 'translate(-1140.036 -318.639)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_647',\r\n 'data-name': 'Group 647',\r\n transform: 'translate(1140.643 319.246)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_646',\r\n 'data-name': 'Group 646',\r\n transform: 'translate(0 0)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_648',\r\n 'data-name': 'Group 648',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_387',\r\n 'data-name': 'Rectangle 387',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(0.393 0.393)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_388',\r\n 'data-name': 'Rectangle 388',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(14.225 14.225)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_390',\r\n 'data-name': 'Rectangle 390',\r\n width: '14.069',\r\n height: '14.069',\r\n transform: 'translate(4.078 3.89)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SendAObject = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.097',\r\n height: '22.481',\r\n viewBox: '0 0 23.097 22.481',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_653',\r\n 'data-name': 'Group 653',\r\n transform: 'translate(-1140.475 -411.367)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_642',\r\n 'data-name': 'Group 642',\r\n transform: 'translate(1127.096 398.368)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_643',\r\n 'data-name': 'Group 643',\r\n transform: 'translate(13.932 13.552)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_383',\r\n 'data-name': 'Rectangle 383',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(0.447 0.447)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_385',\r\n 'data-name': 'Rectangle 385',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(1147.572 417.848)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SendUnderObject = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.097',\r\n height: '22.481',\r\n viewBox: '0 0 23.097 22.481',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_652',\r\n 'data-name': 'Group 652',\r\n transform: 'translate(-1140.475 -369.367)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_386',\r\n 'data-name': 'Rectangle 386',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(1147.572 375.848)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_644',\r\n 'data-name': 'Group 644',\r\n transform: 'translate(1127.096 356.368)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_643',\r\n 'data-name': 'Group 643',\r\n transform: 'translate(13.932 13.552)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_383',\r\n 'data-name': 'Rectangle 383',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(0.447 0.447)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const EyeDropper = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '21.595',\r\n height: '21.61',\r\n viewBox: '0 0 21.595 21.61',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'M0 0h21.595v21.61H0z' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: { 'clip-path': 'url(#a)' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M1.228 21.609a2.184 2.184 0 0 1-1.019-.812.946.946 0 0 1-.009-1.18q.455-.7.922-1.386a3.7 3.7 0 0 0 .667-1.553 5.591 5.591 0 0 0 .054-.608 2.553 2.553 0 0 1 .814-1.771q3.351-3.342 6.7-6.692a2.115 2.115 0 0 1 .222-.168c-.232-.224-.428-.405-.615-.6a.509.509 0 0 1-.008-.81q.925-.938 1.862-1.865a.507.507 0 0 1 .812 0q2.91 2.9 5.813 5.814a.509.509 0 0 1 0 .812q-.926.937-1.864 1.863a.508.508 0 0 1-.81 0c-.2-.192-.381-.393-.58-.6-.06.05-.1.082-.141.119-2.268 2.244-4.543 4.48-6.8 6.737a2.813 2.813 0 0 1-2.027.876 2.969 2.969 0 0 0-1.611.549c-.5.331-.99.667-1.492.99a5.8 5.8 0 0 1-.556.281Zm2.234-3.431a5.564 5.564 0 0 1 1.852-.385.8.8 0 0 0 .473-.228q3.425-3.372 6.836-6.758a.764.764 0 0 1 .128-.091l-1.869-1.881a1.682 1.682 0 0 1-.132.166q-3.233 3.237-6.473 6.466a1.283 1.283 0 0 0-.483 1.1.6.6 0 0 1-.021.188c-.1.47-.206.94-.312 1.422',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M21.595 4.022c-.052.217-.1.436-.157.649a3.645 3.645 0 0 1-.967 1.581q-1.1 1.094-2.191 2.19a.537.537 0 0 1-.9 0l-4.217-4.218a.531.531 0 0 1 0-.885c.806-.8 1.585-1.636 2.429-2.4a3.378 3.378 0 0 1 3.571-.712 3.5 3.5 0 0 1 2.388 2.854c.011.061.029.121.044.181Z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const Delete = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'ICONS',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '18',\r\n height: '18',\r\n viewBox: '0 0 18 18',\r\n ...props,\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3953',\r\n 'data-name': 'Path 3953',\r\n d: 'M7,8A1,1,0,0,0,6,9v4a1,1,0,0,0,2,0V9A1,1,0,0,0,7,8Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3954',\r\n 'data-name': 'Path 3954',\r\n d: 'M11,8a1,1,0,0,0-1,1v4a1,1,0,0,0,2,0V9a1,1,0,0,0-1-1Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3955',\r\n 'data-name': 'Path 3955',\r\n d: 'M17,4H13A4,4,0,1,0,5,4H1A1,1,0,0,0,1,6H2v9a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V6h1a1,1,0,0,0,0-2ZM9,2a2,2,0,0,1,2,2H7A2,2,0,0,1,9,2Zm5,13a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V6H14Z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n// https://www.svgviewer.dev/ use this website to compress and load the paths\r\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\r\nexport const SnapToCenter = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'Group_1194',\r\n 'data-name': 'Group 1194',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '24',\r\n height: '24.006',\r\n viewBox: '0 0 24 24.006',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1196',\r\n 'data-name': 'Group 1196',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4767',\r\n 'data-name': 'Path 4767',\r\n d: 'M0,346.174c.043,0,.085-.008.128-.008H1.519v-1.494h1.5c.008.124,0,.248,0,.371s0,.25,0,.375v.748h1.5v1.5H6.01v1.493c-.251.016-.5.005-.747.007s-.49,0-.737,0c0,.041-.007.068-.007.1q0,.679,0,1.359c0,.019,0,.039,0,.058H0Zm3.013,2.98v-1.476a14.331,14.331,0,0,0-1.485,0v1.473Z',\r\n transform: 'translate(0 -326.668)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4768',\r\n 'data-name': 'Path 4768',\r\n d: 'M0,.006C.047,0,.093,0,.14,0H4.517V1.5H6.009v1.5C5.847,3,5.684,3,5.522,3h-1V4.486c-.05,0-.091.008-.131.008H3.022V5.975a14.076,14.076,0,0,1-1.5,0V4.5c-.042,0-.072-.009-.1-.009H.08A.586.586,0,0,0,0,4.506V.006M1.527,2.987c.175.022,1.4.016,1.485-.007V1.5H1.527Z',\r\n transform: 'translate(0 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4769',\r\n 'data-name': 'Path 4769',\r\n d: 'M346.317,350.672l0-1.371c0-.042,0-.084,0-.138h-1.479c-.026-.1-.034-1.291-.012-1.5.245-.014.493,0,.741-.006s.49,0,.75,0v-1.5h1.5V344.67h1.5c0,.164,0,.327,0,.489s0,.328,0,.492v.507c.13.01.254,0,.376.005s.242,0,.363,0h.741c0,.047.007.081.007.115q0,2.156,0,4.312c0,.027,0,.054-.006.082Zm1.5-3.005v1.476a13.253,13.253,0,0,0,1.483,0c.022-.162.015-1.384-.009-1.472Z',\r\n transform: 'translate(-326.798 -326.666)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4770',\r\n 'data-name': 'Path 4770',\r\n d: 'M350.993,4.5h-1.477V5.98a13.306,13.306,0,0,1-1.5,0V4.5h-1.493V3.014c-.256-.019-.5-.006-.752-.009s-.49,0-.743,0V1.5h1.49V.038l.017-.018s.006-.007.009-.007A.5.5,0,0,1,346.6.007h4.358a.189.189,0,0,1,.039.01Zm-2.977-1.515a14.117,14.117,0,0,0,1.489,0V1.518a13.475,13.475,0,0,0-1.489.01Z',\r\n transform: 'translate(-327 -0.007)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4771',\r\n 'data-name': 'Path 4771',\r\n d: 'M177.4,181.788a4.769,4.769,0,1,1,4.774-4.743,4.768,4.768,0,0,1-4.774,4.743m0-2.386a2.383,2.383,0,1,0-2.378-2.388A2.391,2.391,0,0,0,177.4,179.4',\r\n transform: 'translate(-165.386 -165.023)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4772',\r\n 'data-name': 'Path 4772',\r\n d: 'M172.573,28.8h1.482v1.474c-.088.023-1.322.03-1.471.008-.024-.086-.033-1.236-.011-1.483',\r\n transform: 'translate(-163.546 -27.296)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4773',\r\n 'data-name': 'Path 4773',\r\n d: 'M258.685,28.8h1.482v1.474c-.088.023-1.324.03-1.472.008-.024-.086-.033-1.239-.01-1.483',\r\n transform: 'translate(-245.16 -27.297)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4774',\r\n 'data-name': 'Path 4774',\r\n d: 'M402.37,172.387h1.486v1.472c-.094.024-1.376.026-1.486,0Z',\r\n transform: 'translate(-381.352 -163.382)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4775',\r\n 'data-name': 'Path 4775',\r\n d: 'M30.729,173.749H29.244v-1.49h1.485Z',\r\n transform: 'translate(-27.716 -163.261)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4776',\r\n 'data-name': 'Path 4776',\r\n d: 'M174.28,403.369H172.8V401.9a14.178,14.178,0,0,1,1.483,0Z',\r\n transform: 'translate(-163.771 -380.883)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4777',\r\n 'data-name': 'Path 4777',\r\n d: 'M258.714,402.039h1.466c.023.089.03,1.31.009,1.471a13.52,13.52,0,0,1-1.466.014,14.287,14.287,0,0,1-.009-1.485',\r\n transform: 'translate(-245.186 -381.038)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4778',\r\n 'data-name': 'Path 4778',\r\n d: 'M29.194,259.847V258.38a14.3,14.3,0,0,1,1.487-.006v1.473Z',\r\n transform: 'translate(-27.669 -244.862)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4779',\r\n 'data-name': 'Path 4779',\r\n d: 'M402.241,258.521h1.465c.023.088.028,1.336.007,1.47-.083.024-1.261.033-1.467.012a13.357,13.357,0,0,1-.006-1.482',\r\n transform: 'translate(-381.212 -245.017)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import React from 'react';\r\nimport { toast } from 'react-toastify';\r\nexport interface toastGenProps {\r\n type: 'Error' | 'Info' | 'Warning' | 'Success';\r\n message: string;\r\n}\r\nimport { Error } from '../icon';\r\n\r\nexport function CustomToast(\r\n type: 'info' | 'error' | 'warning' | 'success',\r\n message: string,\r\n toastId: number,\r\n style?: React.CSSProperties\r\n) {\r\n switch (type) {\r\n case 'info':\r\n return toast.info(toastGen({ type: 'Info', message }), {\r\n toastId,\r\n style,\r\n });\r\n case 'error':\r\n return toast.error(toastGen({ type: 'Error', message }), {\r\n toastId,\r\n icon: Error,\r\n style,\r\n });\r\n case 'success':\r\n return toast.success(toastGen({ type: 'Success', message }), {\r\n toastId,\r\n style,\r\n });\r\n case 'warning':\r\n return toast.warning(toastGen({ type: 'Warning', message }), {\r\n toastId,\r\n style,\r\n });\r\n }\r\n}\r\nexport const toastGen = ({ type, message }: toastGenProps) => (\r\n <div>\r\n <div className=\"text-base font-bold leading-[22px]\">{type}</div>\r\n <div className=\"text-sm font-medium leading-[22px]\">{message}</div>\r\n </div>\r\n);\r\n","import { CustomToast as e } from '../../components/customToast';\r\n\r\nexport interface ToastMessages {\r\n deleteLogoSuccess: () => void;\r\n error: (message: string) => void;\r\n saveSuccess: () => void;\r\n somethingWentWrong: () => void;\r\n success: (message: string) => void;\r\n updateLogoSuccess: () => void;\r\n updateSuccess: () => void;\r\n warning: (message: string) => void;\r\n noOfColors: () => void;\r\n noIteminCanvas: () => void;\r\n}\r\n\r\nexport const toastMessages: ToastMessages =\r\n // prettier-ignore\r\n {\r\n deleteLogoSuccess: () => e('success', 'Logo deleted successfully!', 1),\r\n error: (message) => e('success', message, 2),\r\n saveSuccess: () => e('success', 'You have successfully saved your Logo', 3,{ width: '30rem' }), \r\n somethingWentWrong: () => e('error', 'Something Went Wrong', 4),\r\n success: (message) => e('success', message, 5),\r\n updateLogoSuccess: () => e('success', 'Logo updated successfully!', 6),\r\n updateSuccess: () => e('success', 'You have successfully updated your design',7),\r\n warning: (message) => e('success', message, 8),\r\n noOfColors: () => e('error', 'Not more than 8 colors allowed!', 9),\r\n noIteminCanvas: () => e('warning', 'No item in canvas to save', 10),\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { use3dddPlus } from '..';\r\nimport { Design } from '../customize/types';\r\nimport { ToastMessages, toastMessages } from './toastMessages';\r\nexport interface ActionSlice {\r\n displayLoginModal: boolean;\r\n showProductBreakUpModal: { status: boolean; value: any };\r\n loadDesignModal: boolean;\r\n productInfoModal: any;\r\n toastMessages: ToastMessages;\r\n toggleSaveLogo: {\r\n key: string;\r\n status: boolean;\r\n title: string;\r\n details: any;\r\n };\r\n showModalAfterLogin?: void;\r\n changeModel: () => void;\r\n editDesignInfo: () => void;\r\n saveDesignModal: () => void;\r\n setLoadDesignModal: (loadDesign: boolean) => void;\r\n setProductInfoModal: () => any;\r\n clearLayers: () => void;\r\n setToggleSaveLogo: (\r\n key: string,\r\n status: boolean,\r\n title: string,\r\n details: any\r\n ) => void;\r\n share: () => void;\r\n toggleLoginModal: () => void;\r\n confirmDesignModal: { status: boolean; value: string };\r\n setConfirmDesignModal: (status: boolean, value: string) => void;\r\n toggleSuccessfullDesign: boolean;\r\n setToggleSuccessfullDesign: () => void;\r\n selectedDesign: any;\r\n setSelectedDesign: (selected: Design) => void;\r\n saveRackSuccessfulModal: boolean;\r\n setSaveRackSuccessfulModal: () => void;\r\n setShowModalAfterLogin: (toggleAction: any) => void; //Due to current functionality, toggleAction can have callback function of different types\r\n disableUpdate: boolean;\r\n confirmUpdateDesignModal: boolean;\r\n setConfirmUpdateDesignModal: () => void;\r\n designUpdateSuccessfulModal: boolean;\r\n getListFromRack: () => boolean;\r\n toogleShowProductBreakUpModal: (status: boolean, value: any) => void;\r\n productBreakup: any[];\r\n logoSearchText: string;\r\n logoSortBy: string;\r\n logoSortDir: string;\r\n logoPageNo: number;\r\n logoPageSize: number;\r\n showCrossSave: boolean;\r\n}\r\n\r\nconst graphqlSlice: StateCreator<ActionSlice> = (set, get) => {\r\n return {\r\n displayLoginModal: false,\r\n showProductBreakUpModal: {\r\n status: false,\r\n value: {},\r\n },\r\n toastMessages: toastMessages,\r\n loadDesignModal: false,\r\n productInfoModal: false,\r\n toggleSaveLogo: { key: 'save', status: false, title: '', details: {} },\r\n showModalAfterLogin: undefined,\r\n selectedDesign: {},\r\n changeModel: () => {\r\n alert('function not implemented');\r\n },\r\n confirmDesignModal: { status: false, value: '' },\r\n confirmUpdateDesignModal: false,\r\n toggleSuccessfullDesign: false,\r\n designUpdateSuccessfulModal: false,\r\n getListFromRack: () => {\r\n return false;\r\n },\r\n setSelectedDesign: (selected) => {\r\n set({ selectedDesign: selected });\r\n },\r\n setLoadDesignModal: (loadDesign) => {\r\n set({ loadDesignModal: loadDesign });\r\n },\r\n clearLayers: () => use3dddPlus.setState({\r\n storeAllObject: [],\r\n }),\r\n setToggleSaveLogo: (key, status, title, details) => {\r\n set({\r\n toggleSaveLogo: {\r\n key: key,\r\n status: status,\r\n title: title,\r\n details: details,\r\n },\r\n });\r\n },\r\n setConfirmDesignModal: (status, value) => {\r\n set({ confirmDesignModal: { status: status, value: value } });\r\n },\r\n setConfirmUpdateDesignModal: () => {\r\n set((state) => ({\r\n confirmUpdateDesignModal: !state.confirmUpdateDesignModal,\r\n }));\r\n },\r\n setToggleSuccessfullDesign: () => {\r\n set((state) => ({\r\n toggleSuccessfullDesign: !state.toggleSuccessfullDesign,\r\n }));\r\n },\r\n setProductInfoModal: () => {\r\n set((state) => ({ productInfoModal: !state.productInfoModal }));\r\n },\r\n\r\n editDesignInfo: () => {\r\n alert('function not implemented');\r\n },\r\n // rack: () => {\r\n // alert('function not implemented');\r\n // },\r\n\r\n saveDesignModal: () => {\r\n try {\r\n use3dddPlus.setState({ current: 'saveCTA' });\r\n use3dddPlus.getState().navigateTo('savePopUp');\r\n use3dddPlus.setState({ logoName: '' });\r\n use3dddPlus.setState({ designNotes: '' });\r\n use3dddPlus.setState({ logoTag: [] });\r\n let string = '';\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\r\n\r\n for (let i = 0; i < 7; i++) {\r\n string += characters.charAt(\r\n Math.floor(Math.random() * characters.length)\r\n );\r\n }\r\n use3dddPlus.setState({ designNumber: string });\r\n\r\n\r\n if (!use3dddPlus.getState().customerId) {\r\n get().toggleLoginModal();\r\n get().setShowModalAfterLogin(() => {\r\n use3dddPlus\r\n .getState()\r\n .setToggleSaveLogo('save', true, 'Save Your Design', {});\r\n });\r\n return;\r\n }\r\n get().setToggleSaveLogo('save', true, 'Save Your Design', {});\r\n use3dddPlus.setState({ disableSaveButton: false });\r\n } catch {}\r\n },\r\n\r\n \r\n share: () => {\r\n alert('function not implemented');\r\n },\r\n toggleLoginModal: () => {\r\n set((state) => ({ displayLoginModal: !state.displayLoginModal }));\r\n },\r\n\r\n saveRackSuccessfulModal: false,\r\n setSaveRackSuccessfulModal: () => {\r\n set((state) => ({\r\n saveRackSuccessfulModal: !state.saveRackSuccessfulModal,\r\n }));\r\n },\r\n setShowModalAfterLogin: (toggleAction) => {\r\n use3dddPlus.setState({ showModalAfterLogin: toggleAction });\r\n },\r\n toogleShowProductBreakUpModal: (status, value) => {\r\n set({ showProductBreakUpModal: { status: status, value: value } });\r\n },\r\n disableUpdate: false,\r\n productBreakup: [],\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n showCrossSave: false,\r\n };\r\n};\r\n\r\nexport default graphqlSlice;\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\n\r\nexport const baseURL = process.env.REACT_APP_LAMBDA_URL;\r\n\r\n// TODO remove ts-ignore; CreateAxiosDefaults<any> not building npm package. \r\n// @ts-ignore\r\nexport const instance: AxiosInstance = axios.create({\r\n baseURL: baseURL,\r\n timeout: 15000,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'jxnhh7rk7gpjtnp1o1besdaip3pd2560',\r\n },\r\n});\r\n\r\nexport const responseBody = (response: AxiosResponse) => response.data;\r\n\r\nexport const requests = {\r\n get: (url: string) => instance.get(url).then(responseBody),\r\n post: (url: string, body: {}, config?: any) => instance.post(url, body, config).then(responseBody),\r\n put: (url: string, body: {}) => instance.put(url, body).then(responseBody),\r\n delete: (url: string) => instance.delete(url).then(responseBody),\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { requests } from '../../axios/index';\r\nimport { use3dddPlus } from '..';\r\nimport { fabric } from 'fabric';\r\n\r\n// const useSampleResponses = process.env.REACT_APP_USE_SAMPLE_RESPONSES;\r\n\r\n\r\nexport interface LambdaSlice {\r\n\r\n lambdaClient: any;\r\n\r\n loadingLogo: (data: any) => any;\r\n getStockLogos: () => void;\r\n saveLogo: (data: any) => any; \r\n}\r\n\r\nconst lambdaSlice: StateCreator<LambdaSlice> = (_set, _get) => {\r\n return {\r\n lambdaClient: requests,\r\n\r\n loadingLogo: async (_data:any) => {\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n if (!use3dddPlus.getState().customerId)\r\n throw new Error('You need to login');\r\n const response = await requests.get(\r\n `/editor-logo/${use3dddPlus.getState().customerId}?searchText=${\r\n use3dddPlus.getState().logoSearchText\r\n }&sortBy=${use3dddPlus.getState().logoSortBy}&sortDir=${\r\n use3dddPlus.getState().logoSortDir\r\n }&pageSize=${use3dddPlus.getState().logoPageSize}&pageNo=${\r\n use3dddPlus.getState().logoPageNo\r\n }`\r\n );\r\n use3dddPlus.setState({ loading: false });\r\n const res = await response;\r\n use3dddPlus.getState().logoPageNo === 1 &&\r\n use3dddPlus.setState({ retriveLogoDesign: res });\r\n\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n getStockLogos: async () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.get('/mascot-logos');\r\n use3dddPlus.setState({ loading: false });\r\n const res = await response;\r\n use3dddPlus.setState({ stockLogos: res });\r\n return res;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n saveLogo: async (logo) => {\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.post('/editor-logo', logo);\r\n use3dddPlus.setState({ loading: false });\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n };\r\n};\r\n\r\nexport default lambdaSlice;\r\n","import { StateCreator } from 'zustand';\r\nexport interface SaveDesignSlice {\r\n disableSaveButton: boolean;\r\n designNumber: string;\r\n designImageUrl: string;\r\n designProofPdfUrl: string;\r\n logoTag: string[];\r\n logoName: string;\r\n designNotes: string;\r\n designConfig: string;\r\n designId: number;\r\n hasDesignNumber: () => boolean;\r\n showSaveCTA: boolean;\r\n showSaveRackCTA: boolean;\r\n}\r\n\r\nexport const saveDesignSlice: StateCreator<SaveDesignSlice> = (_set, get) => {\r\n return {\r\n disableSaveButton: false,\r\n designNumber: '',\r\n designImageUrl: '',\r\n designProofPdfUrl: '',\r\n logoTag: [],\r\n logoName: '',\r\n designNotes: '',\r\n designConfig: '',\r\n designId: undefined,\r\n hasDesignNumber: () => !!get().designNumber,\r\n showSaveCTA: true,\r\n showSaveRackCTA: true,\r\n };\r\n};\r\n\r\nexport default SaveDesignSlice;\r\n","\r\n// import { Texture } from '../store/customize/types';\r\n\r\nconst _oldURL = process.env.REACT_APP_IMAGE_URL_OLD!;\r\nconst _newURL = process.env.REACT_APP_IMAGE_URL!;\r\nexport const URLMapping = (url: string) => {\r\n // check if th url has old or new url paths\r\n if (url.includes(_oldURL)) {\r\n return url.replace(_oldURL, _newURL);\r\n }\r\n // if it has old then relace to new\r\n else if (url.includes(_newURL)) return url;\r\n // if it doesnot have nay then add new\r\n else {\r\n return _newURL + url;\r\n }\r\n};\r\n\r\n// export const getTextureDataFromId = (id) => {\r\n// const textureData = use3dddPlus.getState().productTextures;\r\n\r\n// // const textureData = [];\r\n// return textureData.filter((texture) => texture.id === id).filter(Boolean)[0];\r\n// };\r\n\r\nexport const constructMappingItem = (texture?: any, item?: any) => {\r\n return {\r\n id: item?.id,\r\n name: item?.name,\r\n path: item?.ProductMedium.Image_URL,\r\n type: item?.__typename,\r\n flipY: texture ? texture.flipY : false,\r\n };\r\n};\r\n\r\nexport const getImageURL = (path: string) => {\r\n return process.env.REACT_APP_IMAGE_URL + path; //item?.ProductMedium?.Image_URL\r\n};\r\n","export function getCookie(cname: string) {\r\n let name = cname + '=';\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n}\r\n\r\nexport function setCookie(cname: string, cvalue: any, exdays: number) {\r\n const d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n let expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n}\r\n\r\nexport const clearCookie = (cname: string, cvalue = '') => {\r\n const d = new Date();\r\n d.setTime(d.getTime());\r\n let expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n};\r\n","import CryptoJS from 'crypto-js';\r\nexport const encryptToken = (data: any) => {\r\n return CryptoJS.AES.encrypt(\r\n JSON.stringify(data),\r\n 'secret key 123'\r\n ).toString();\r\n};\r\nexport const decryptToken = (ciphertext: string) => {\r\n var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n};\r\n\r\nexport const getProjectId = () => {\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n const projectId = urlParams.get('projectId');\r\n return projectId || process.env.REACT_APP_3DDDPLUS_PROJECTID;\r\n};\r\n\r\nexport function parseJwt(token) {\r\n var base64Url = token.split('.')[1];\r\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n var jsonPayload = decodeURIComponent(\r\n window\r\n ?.atob(base64)\r\n ?.split('')\r\n ?.map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join('')\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n}\r\n","//import { use3dddPlus } from '../store';\r\n\r\n// export const getDomImage = () => {\r\n// var strMime = 'image/jpeg';\r\n// const imgData = use3dddPlus.getState().gl.domElement.toDataURL(strMime);\r\n\r\n// return dataURItoBlob(imgData);\r\n// };\r\n\r\nexport function dataURItoBlob(dataURI) {\r\n // convert base64 to raw binary data held in a string\r\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\r\n var byteString = atob(dataURI.split(',')[1]);\r\n\r\n // separate out the mime component\r\n // var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n\r\n // write the bytes of the string to an ArrayBuffer\r\n var ab = new ArrayBuffer(byteString.length);\r\n var ia = new Uint8Array(ab);\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n //Old Code\r\n //write the ArrayBuffer to a blob, and you're done\r\n //var bb = new BlobBuilder();\r\n //bb.append(ab);\r\n //return bb.getBlob(mimeString);\r\n\r\n //New Code\r\n return new File([ab], new Date().getTime() + '_configuration' + '.jpg', {\r\n type: 'image/jpeg',\r\n // lastModified: new Date(),\r\n });\r\n}\r\n","// function called to save image\r\nexport const saveFile = function (strData: string, filename: string) {\r\n let link = document.createElement('a');\r\n document.body.appendChild(link);\r\n link.download = filename;\r\n link.href = strData;\r\n link.click();\r\n document.body.removeChild(link);\r\n};\r\n","// The key code condition we provided refers to the following key ranges:\r\n// 1. `(x >= 97 && x <= 122)`: This condition checks for lowercase alphabets in the ASCII range. Key codes 97 to 122 correspond to the characters 'a' to 'z'.\r\n// 2. `(x >= 48 && x <= 57)`: This condition checks for numeric key codes in the ASCII range. Key codes 48 to 57 correspond to the digits '0' to '9'.\r\n// 3. `(x >= 65 && x <= 90)`: This condition checks for uppercase alphabets in the ASCII range. Key codes 65 to 90 correspond to the characters 'A' to 'Z'.\r\n// 4. `(x >= 32 && x <= 32)`: This condition checks for the spacebar key. The key code 32 represents the space character.\r\n// By using these key code conditions, we are checking if the pressed key falls within the range of lowercase alphabets, numeric digits, uppercase alphabets, or the space character.\r\n\r\n\r\nexport const restrictSpecialCharacters = function (e) {\r\n const x = e.which || e.keycode;\r\n if (\r\n (x >= 97 && x <= 122) ||\r\n (x >= 48 && x <= 57) ||\r\n (x >= 65 && x <= 90) ||\r\n (x >= 32 && x <= 32)\r\n ) {\r\n return true;\r\n } else return e.preventDefault();\r\n};","import { StateCreator } from 'zustand';\r\nimport {\r\n clearCookie,\r\n decryptToken,\r\n encryptToken,\r\n getCookie,\r\n setCookie,\r\n} from '../../services';\r\nimport {\r\n clearSessionStorage,\r\n getSessionStorage,\r\n setSessionStorage,\r\n} from '../../services/sessionStorage';\r\n\r\nexport interface AuthSlice {\r\n authType?: string;\r\n cardCode?: string;\r\n customerEmail?: string;\r\n customerId?: number;\r\n customerType?: string;\r\n priceLevel: string;\r\n token?: string;\r\n clearLoginInfo: () => void;\r\n generateCustomizerToken: (setInCookies?: boolean) => void;\r\n setCustomizerToken: () => void;\r\n isLoggedIn: () => boolean;\r\n customUploadLogoColorList: any[];\r\n defaultColorList: any[];\r\n\r\n}\r\n\r\nexport const authSlice: StateCreator<AuthSlice> = (set, get) => {\r\n return {\r\n customUploadLogoColorList: [],\r\n defaultColorList: [],\r\n priceLevel: '',\r\n token: '',\r\n customerId:117015,\r\n clearLoginInfo: () => {\r\n clearCookie('customizerToken');\r\n clearSessionStorage('customizerToken');\r\n set({\r\n authType: '',\r\n cardCode: '',\r\n customerEmail: '',\r\n customerId: 117015,\r\n customerType: '',\r\n priceLevel: '',\r\n token: '',\r\n });\r\n },\r\n generateCustomizerToken: (setInCookies = true) => {\r\n const authType = get().authType;\r\n const cardCode = get().cardCode;\r\n const customerEmail = get().customerEmail;\r\n const customerId = get().customerId;\r\n const customerType = get().priceLevel;\r\n const token = get().token;\r\n\r\n const customizerToken = encryptToken({\r\n authType,\r\n cardCode,\r\n customerEmail,\r\n customerId,\r\n customerType,\r\n token,\r\n });\r\n if (setInCookies) {\r\n setCookie('customizerToken', customizerToken, 1);\r\n } else {\r\n setSessionStorage('customizerToken', customizerToken);\r\n }\r\n },\r\n setCustomizerToken: () => {\r\n const customizerToken: any =\r\n getSessionStorage('customizerToken') || getCookie('customizerToken');\r\n\r\n if (!customizerToken) return;\r\n const decrypt: any = decryptToken(customizerToken);\r\n\r\n set({\r\n ...decrypt,\r\n });\r\n },\r\n isLoggedIn: () => (!!get().customerId ? true : false),\r\n };\r\n};\r\n\r\nexport default AuthSlice;\r\n","export const clearSessionStorage = (cname: string) => {\r\n sessionStorage.removeItem(cname);\r\n};\r\n\r\nexport const getSessionStorage = (sName: string) => {\r\n return sessionStorage.getItem(sName);\r\n};\r\n\r\nexport const setSessionStorage = (cname: string, cvalue: any) => {\r\n sessionStorage.setItem(cname, cvalue);\r\n};\r\n","import { StateCreator } from 'zustand';\r\n// import { use3dddPlus } from '..';\r\n\r\nexport interface HistorySlice {\r\n history: string[];\r\n current: string;\r\n navigateTo: (page: string) => void;\r\n goBack: () => void;\r\n}\r\n\r\nexport const historySlice: StateCreator<HistorySlice> = (set, _get) => {\r\n return {\r\n history: [],\r\n current: '',\r\n navigateTo: (page: string) => {\r\n set((state) => ({\r\n history: [...state.history, state.current],\r\n current: page,\r\n }));\r\n },\r\n goBack: () => {\r\n set((state) => {\r\n if (state.history.length > 0) {\r\n const previousPage = state.history.pop()!;\r\n return {\r\n history: [...state.history],\r\n current: previousPage,\r\n };\r\n }\r\n return state;\r\n });\r\n },\r\n }\r\n}\r\nexport default HistorySlice;\r\n","import { StateCreator } from 'zustand';\r\nimport { fabric } from 'fabric';\r\nimport { use3dddPlus } from '..';\r\nimport AWS from 'aws-sdk';\r\nexport interface FabricSlice {\r\n availableMascots: any[];\r\n filteredMascots: any[];\r\n loading: Boolean;\r\n selectedStepper?: any;\r\n setSelectedStepper?: (selectedStepper: any) => void;\r\n hasUploadScreen?: any;\r\n setHasUploadScreen?: (hasUploadScreen: boolean) => void;\r\n storeHistory: any;\r\n count: number;\r\n stockLogos: [];\r\n retriveLogoDesign: any[];\r\n fabricCanvas: any;\r\n popupCanv: any;\r\n textInfo: string;\r\n uploadImageModalDisplay: boolean;\r\n currentSelection: string;\r\n activeSelection: any;\r\n selectedAll: boolean;\r\n colorFill: any;\r\n defaultColorFill: any[];\r\n loadedObject: any;\r\n setDefaultColorFill: (dcf: any) => void;\r\n defaultColorFillCopy: any[];\r\n setDefaultColorFillCopy: (dcf: any) => void;\r\n // colorFillPopup : {},\r\n storeAllObject: [];\r\n iconImage: string;\r\n HideControls: any;\r\n showContextMenu: boolean;\r\n forStoringAllObject: (data: any) => void;\r\n forIconCapture: () => void;\r\n duplicateObject: () => void;\r\n deleteButtonControls: () => void;\r\n undo: () => void;\r\n redo: () => void;\r\n moveDown: (element) => void;\r\n moveUp: (element) => void;\r\n moveRight: (element) => void;\r\n moveLeft: (element) => void;\r\n applyColorFill: () => any;\r\n updateModifaction: (saveHistory: boolean) => void;\r\n nameCounter: any;\r\n guid: () => string;\r\n contextMenuCoordinates: { x: number; y: number };\r\n stockLogoHandler: (e: any) => void;\r\n testSVG: (data: any) => void;\r\n myLogoHandler: (logo: any) => void;\r\n loadingRetrivedFiles: (data: any) => void;\r\n allColor: any;\r\n uploadLogoConfig: (jsonConfig: any, customerId: any) => any;\r\n logoData: any;\r\n setLogoData: (logo: any) => void;\r\n setAvailableMascots: (availableMascots: any[]) => void;\r\n setFilteredMascots: (filteredMascots: any[]) => void;\r\n handleMascotObjectFilterValues: (event: any) => void;\r\n filterValue: string;\r\n displayProductColor?: boolean;\r\n setDisplayProductColor?: () => void;\r\n popUpCanvasAllColor: any[];\r\n popupCanvasStoreHistory: any[];\r\n popUpCanvasCount: number;\r\n popUpCanvasApplyColorFill: () => void;\r\n popUpCanvasUpdateModification: (data: any) => void;\r\n popUpCanvasRedo: () => void;\r\n popUpCanvasUndo: () => any;\r\n forPopupCanvasReset: any;\r\n forPopupCanvasColor: any;\r\n imageData: any;\r\n horizontalLine: any;\r\n verticalLine: any;\r\n lastPosition: { top: number; left: number };\r\n setLastPosition: (lastPosition: { top: number; left: number }) => void;\r\n}\r\n\r\nexport const fabricSlice: StateCreator<FabricSlice> = (set, get) => {\r\n return {\r\n popUpCanvasCount: 1,\r\n popupCanvasStoreHistory: [],\r\n availableMascots: [],\r\n filteredMascots: [],\r\n logoData: null,\r\n setLogoData: (logoData) => set({ logoData }),\r\n allColor: [],\r\n loading: false,\r\n selectedStepper: 1,\r\n setSelectedStepper: (selectedStepper) => set({ selectedStepper }),\r\n hasUploadScreen: false,\r\n setHasUploadScreen: (hasUploadScreen) => set({ hasUploadScreen }),\r\n storeHistory: [],\r\n stockLogos: [],\r\n retriveLogoDesign: [],\r\n fabricCanvas: null,\r\n popupCanv: null,\r\n textInfo: 'NEW TEXT',\r\n uploadImageModalDisplay: false,\r\n currentSelection: 'layer',\r\n activeSelection: null,\r\n selectedAll: false,\r\n colorFill: {},\r\n defaultColorFill: [],\r\n loadedObject: [],\r\n defaultColorFillCopy: [],\r\n // colorFillPopup : {},\r\n storeAllObject: [],\r\n iconImage: '',\r\n HideControls: {\r\n tl: true,\r\n tr: true,\r\n bl: true, //false\r\n br: true,\r\n ml: false,\r\n mt: false,\r\n mr: false,\r\n mb: false,\r\n mtr: true,\r\n // 'cornerColor':'yellow'\r\n },\r\n showContextMenu: false,\r\n\r\n forStoringAllObject: (data) => {\r\n //@ts-ignore\r\n get().storeAllObject.unshift(data); //FOR PUSHING THE ARRAY RESERVE\r\n },\r\n forIconCapture: () => {\r\n const activeObject = get().fabricCanvas.getActiveObject();\r\n if (activeObject) {\r\n // const dataURL = get().fabricCanvas.toDataURL({\r\n // left: activeObject.left,\r\n // top: activeObject.top,\r\n // width: activeObject.width * activeObject.scaleX,\r\n // height: activeObject.height * activeObject.scaleY,\r\n // });\r\n\r\n const dataURL = activeObject.toDataURL('image/png');\r\n set({ iconImage: dataURL });\r\n }\r\n },\r\n nameCounter: 0,\r\n guid: () => {\r\n let u =\r\n Date.now().toString(16) + Math.random().toString(16) + '0'.repeat(16);\r\n return [\r\n u.substr(0, 8),\r\n u.substr(8, 4),\r\n '4000-8' + u.substr(13, 3),\r\n u.substr(16, 12),\r\n ].join('-');\r\n },\r\n duplicateObject: () => {\r\n if (get().fabricCanvas.getActiveObject()) {\r\n let activeObj = get().fabricCanvas.getActiveObject();\r\n let clipboard;\r\n get()\r\n .fabricCanvas.getActiveObject()\r\n .clone((cloned) => {\r\n clipboard = cloned;\r\n clipboard.clone((clonedObj) => {\r\n get().fabricCanvas.discardActiveObject();\r\n clonedObj.set({\r\n evented: true,\r\n });\r\n if (clonedObj.type === 'activeSelection') {\r\n clonedObj.canvas = get().fabricCanvas;\r\n clonedObj.forEachObject((obj: any, index: any) => {\r\n obj.colorFill = activeObj._objects[index].colorFill;\r\n // copy all path text data & clone text props as well(text with shapes applied)\r\n // if (obj.type === 'path' && obj.pathData !== undefined) {\r\n if (obj.type === 'path') {\r\n obj.pathData = activeObj._objects[index].pathData;\r\n obj.shapeSize = activeObj._objects[index].shapeSize;\r\n obj.shapeType = activeObj._objects[index].shapeType;\r\n obj.fontFamily = activeObj._objects[index].fontFamily;\r\n obj.fontWeight = activeObj._objects[index].fontWeight;\r\n obj.fontSize = activeObj._objects[index].fontSize;\r\n obj.charSpacing = activeObj._objects[index].charSpacing;\r\n obj.textAlign = activeObj._objects[index].textAlign;\r\n obj.fontStyle = activeObj._objects[index].fontStyle;\r\n obj.text = activeObj._objects[index].text;\r\n }\r\n get().fabricCanvas.add(obj);\r\n });\r\n clonedObj.setCoords();\r\n } else {\r\n clonedObj.colorFill = activeObj.colorFill;\r\n // copy all path text data & clone text props as well(text with shapes applied)\r\n if (\r\n activeObj.type === 'path' &&\r\n activeObj.pathData !== undefined\r\n ) {\r\n clonedObj.pathData = activeObj.pathData;\r\n clonedObj.shapeSize = activeObj.shapeSize;\r\n clonedObj.shapeType = activeObj.shapeType;\r\n clonedObj.fontFamily = activeObj.fontFamily;\r\n clonedObj.fontWeight = activeObj.fontWeight;\r\n clonedObj.fontSize = activeObj.fontSize;\r\n clonedObj.charSpacing = activeObj.charSpacing;\r\n clonedObj.textAlign = activeObj.textAlign;\r\n clonedObj.fontStyle = activeObj.fontStyle;\r\n clonedObj.text = activeObj.text;\r\n }\r\n get().fabricCanvas.add(clonedObj);\r\n }\r\n clipboard.top += 20;\r\n clipboard.left += 20;\r\n if (\r\n activeObj &&\r\n activeObj.shapeType &&\r\n activeObj.shapeType.length > 0\r\n ) {\r\n clonedObj.shapeType = activeObj.shapeType;\r\n clonedObj.shapeSize = activeObj.shapeSize;\r\n }\r\n get().fabricCanvas.setActiveObject(clonedObj);\r\n const brNew = clonedObj.getBoundingRect();\r\n if (\r\n !(\r\n brNew.width + brNew.left + 45 + 20 >=\r\n clonedObj.canvas.width ||\r\n brNew.height + brNew.top + 10 + 20 >= clonedObj.canvas.height\r\n )\r\n ) {\r\n clonedObj.set({\r\n left: clonedObj.left + 20,\r\n top: clonedObj.top + 20,\r\n });\r\n }\r\n // get().fabricCanvas.requestRenderAll();\r\n // clonedObj._objects.map((data) => {\r\n // get().forStoringAllObject(data);\r\n // });\r\n if (\r\n clonedObj &&\r\n clonedObj._objects &&\r\n clonedObj._objects.length > 0 &&\r\n (clonedObj._objects[0].type === 'text' ||\r\n clonedObj._objects[0].type === 'group' ||\r\n (clonedObj._objects[0].type === 'path' &&\r\n clonedObj._objects[0].fontFamily))\r\n ) {\r\n clonedObj._objects.map((data) => {\r\n data.icon = data.toDataURL('image/png');\r\n get().forStoringAllObject(data);\r\n });\r\n } else {\r\n use3dddPlus.getState().forIconCapture();\r\n clonedObj.icon = use3dddPlus.getState().iconImage;\r\n get().forStoringAllObject(clonedObj);\r\n }\r\n });\r\n get().updateModifaction(true);\r\n });\r\n }\r\n },\r\n deleteButtonControls: () => {\r\n // console.log(deleteIcon,'SELECTED......',getObj);\r\n },\r\n count: 1,\r\n skipEvent: false,\r\n undo: () => {\r\n if (get().count <= get().storeHistory.length) {\r\n // if(get().count + 1 !== get().storeHistory.length){\r\n get().fabricCanvas.clear().renderAll();\r\n get().fabricCanvas.loadFromJSON(\r\n get().storeHistory[\r\n get().storeHistory.length -\r\n 1 -\r\n (get().count > 1 ? get().count - 1 : 0)\r\n ]\r\n );\r\n\r\n // Remove lines\r\n get()\r\n .fabricCanvas.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().fabricCanvas.remove(obj);\r\n }\r\n });\r\n\r\n // Add lines\r\n const horizontalLine = new fabric.Line(\r\n [\r\n 0,\r\n get().fabricCanvas.height / 2,\r\n get().fabricCanvas.height,\r\n get().fabricCanvas.height / 2,\r\n ],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [\r\n get().fabricCanvas.width / 2,\r\n 0,\r\n get().fabricCanvas.width / 2,\r\n get().fabricCanvas.width,\r\n ],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n get().fabricCanvas.add(horizontalLine);\r\n get().fabricCanvas.add(verticalLine);\r\n\r\n get().fabricCanvas.sendToBack(horizontalLine);\r\n get().fabricCanvas.sendToBack(verticalLine);\r\n\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n get().fabricCanvas.renderAll();\r\n get().count += 1;\r\n // }\r\n\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasGetobject.forEach((element: any) => {\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n if(element.type === \"text\" || \"path\"){\r\n get().fabricCanvas.setActiveObject(element);\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n element.icon = use3dddPlus.getState().iconImage;\r\n get().fabricCanvas.discardActiveObject();\r\n }\r\n }\r\n });\r\n }\r\n },\r\n redo: () => {\r\n if (get().count > 2) {\r\n get().fabricCanvas.clear().renderAll();\r\n let item = Math.abs(get().count - get().storeHistory.length - 2);\r\n get().fabricCanvas.loadFromJSON(get().storeHistory[item]);\r\n\r\n // Remove lines\r\n get()\r\n .fabricCanvas.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().fabricCanvas.remove(obj);\r\n }\r\n });\r\n\r\n // Add lines\r\n const horizontalLine = new fabric.Line(\r\n [\r\n 0,\r\n get().fabricCanvas.height / 2,\r\n get().fabricCanvas.height,\r\n get().fabricCanvas.height / 2,\r\n ],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [\r\n get().fabricCanvas.width / 2,\r\n 0,\r\n get().fabricCanvas.width / 2,\r\n get().fabricCanvas.width,\r\n ],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n get().fabricCanvas.add(horizontalLine);\r\n get().fabricCanvas.add(verticalLine);\r\n\r\n get().fabricCanvas.sendBackwards(horizontalLine);\r\n get().fabricCanvas.sendBackwards(verticalLine);\r\n\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n get().fabricCanvas.renderAll();\r\n get().count -= 1;\r\n\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasGetobject.forEach((element: any) => {\r\n if(element.type !== \"line\"){\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n if(element.type === \"text\" || \"path\"){\r\n get().fabricCanvas.setActiveObject(element);\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n element.icon = use3dddPlus.getState().iconImage;\r\n get().fabricCanvas.discardActiveObject();\r\n }\r\n }\r\n });\r\n }\r\n },\r\n moveDown: (element) => {\r\n element.top = element.top + 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveUp: (element) => {\r\n element.top = element.top - 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveRight: (element) => {\r\n element.left = element.left + 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveLeft: (element) => {\r\n element.left = element.left - 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n applyColorFill: () => {\r\n const canvasData = get().fabricCanvas.toJSON();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasData.objects.forEach((element: any, index: any) => {\r\n if(canvasGetobject && canvasGetobject.length > 0 && canvasGetobject[index].shapeType){\r\n element.shapeType = canvasGetobject[index].shapeType;\r\n element.shapeSize = canvasGetobject[index].shapeSize;\r\n element.text = canvasGetobject[index].text;\r\n element.textAlign = canvasGetobject[index].textAlign;\r\n element.stroke = canvasGetobject[index].stroke;\r\n element.strokeWidth = canvasGetobject[index].strokeWidth;\r\n element.fontFamily = canvasGetobject[index].fontFamily;\r\n }\r\n element.colorFill = canvasGetobject[index].colorFill;\r\n element.icon = canvasGetobject[index].icon;\r\n element.id = canvasGetobject[index].id;\r\n });\r\n return canvasData;\r\n },\r\n setDefaultColorFill: (dcf: any) => {\r\n use3dddPlus.setState({ defaultColorFill: dcf });\r\n },\r\n setDefaultColorFillCopy: (dcf: any) => {\r\n use3dddPlus.setState({ defaultColorFillCopy: dcf });\r\n },\r\n updateModifaction: (toSet) => {\r\n if (toSet) {\r\n get().storeHistory.push(get().applyColorFill());\r\n }\r\n },\r\n\r\n contextMenuCoordinates: { x: 0, y: 0 },\r\n stockLogoHandler: (e: any) => {\r\n // console.log(e);\r\n // let logos = get().stockLogos[e.target.id];\r\n //@ts-ignore\r\n let logos = e + '?timestamp=' + Date.now();\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n get().testSVG(logos);\r\n },\r\n testSVG: (data) => {\r\n fabric.loadSVGFromURL(data, (objects, options) => {\r\n const loadedObject: any = fabric.util.groupSVGElements(\r\n objects,\r\n options\r\n );\r\n // console.log(svg)\r\n loadedObject.scaleToWidth(200);\r\n loadedObject.scaleToHeight(200);\r\n let objImage = [];\r\n let _Fills = [];\r\n //@ts-ignore\r\n if (loadedObject && loadedObject._objects) {\r\n //@ts-ignore\r\n objImage = loadedObject._objects;\r\n objImage.forEach((ele) => {\r\n ele.set({ strokeWidth: 0 });\r\n use3dddPlus.setState({ fillColor: [...ele.fill] });\r\n _Fills.push(ele.fill);\r\n });\r\n } else {\r\n //@ts-ignore\r\n objImage = loadedObject;\r\n //@ts-ignore\r\n objImage.set({ strokeWidth: 0 });\r\n //@ts-ignore\r\n use3dddPlus.setState({ fillColor: [...objImage.fill] });\r\n _Fills.push(objImage.fill);\r\n }\r\n use3dddPlus.setState({\r\n //@ts-ignore\r\n fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\r\n });\r\n //@ts-ignore\r\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n loadedObject.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n\r\n loadedObject.id = get().guid();\r\n get().fabricCanvas.add(loadedObject).renderAll();\r\n get().fabricCanvas.centerObject(loadedObject);\r\n get().fabricCanvas.setActiveObject(loadedObject);\r\n use3dddPlus.setState({ activeSelection: loadedObject });\r\n use3dddPlus.getState().forStoringAllObject(loadedObject);\r\n get()\r\n .fabricCanvas.getActiveObject()\r\n .toDataURL(function () {});\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n loadedObject.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n },\r\n myLogoHandler: (logo: any) => {\r\n let jsonData = logo.logo_config_url;\r\n var requestOptions = {\r\n method: 'GET',\r\n };\r\n fetch(jsonData, requestOptions)\r\n .then((response) => response.text())\r\n .then((result) => get().loadingRetrivedFiles(result))\r\n .catch((error) => console.log('error', error));\r\n },\r\n\r\n loadingRetrivedFiles: (data: any) => {\r\n let canvas = use3dddPlus.getState().fabricCanvas;\r\n canvas.loadFromJSON(JSON.parse(data), function () {\r\n const horizontalLine = new fabric.Line(\r\n [0, canvas.height / 2, canvas.height, canvas.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canvas.width / 2, 0, canvas.width / 2, canvas.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canvas.add(horizontalLine);\r\n canvas.add(verticalLine);\r\n get().fabricCanvas.sendToBack(horizontalLine);\r\n get().fabricCanvas.sendToBack(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n canvas.renderAll.bind(canvas);\r\n canvas.discardActiveObject();\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n canvas.getObjects().forEach((element) => {\r\n element.id = use3dddPlus.getState().guid();\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n }\r\n canvas.setActiveObject(element);\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n element.icon = use3dddPlus.getState().iconImage;\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n canvas.backgroundColor = '#ffffff';\r\n },\r\n uploadLogoConfig: async (jsonConfig, customerId) => {\r\n const bucketName = process.env.REACT_APP_BUCKET;\r\n const region = process.env.REACT_APP_REGION;\r\n AWS.config.update({\r\n accessKeyId: process.env.REACT_APP_ACCESSKEY,\r\n secretAccessKey: process.env.REACT_APP_SECRET_ACCESSKEY,\r\n });\r\n const S3 = new AWS.S3({\r\n params: { Bucket: bucketName },\r\n region: region,\r\n });\r\n\r\n const microTime = Date.now();\r\n const filePath = `my-logos/logo-config/${customerId}/${microTime}.json`;\r\n const params = {\r\n Bucket: bucketName,\r\n Key: filePath,\r\n Body: jsonConfig,\r\n ContentType: 'application/json',\r\n };\r\n\r\n const s3UrlPath = `https://${bucketName}.s3.${region}.amazonaws.com/${filePath}`;\r\n return new Promise((resolve, reject) => {\r\n S3.putObject(params, function (err: any) {\r\n if (err) {\r\n console.log('Error occurred while connecting S3 bucket!', err);\r\n reject(err);\r\n } else {\r\n resolve(s3UrlPath);\r\n }\r\n });\r\n });\r\n },\r\n setAvailableMascots: (availableMascots) => set({ availableMascots }),\r\n setFilteredMascots: (filteredMascots) => set({ filteredMascots }),\r\n\r\n handleMascotObjectFilterValues: (event) => {\r\n set({\r\n filterValue: event,\r\n });\r\n if (event === 'All') {\r\n get().setFilteredMascots(\r\n get().availableMascots.map((item) => item.thumbnail)\r\n );\r\n } else {\r\n const filteredData = get().availableMascots.filter((item) =>\r\n item.tags.includes(event)\r\n );\r\n get().setFilteredMascots(filteredData.map((item) => item.thumbnail));\r\n }\r\n },\r\n filterValue: '',\r\n displayProductColor: false,\r\n setDisplayProductColor: () => {\r\n set((state) => ({\r\n displayProductColor: !state.displayProductColor,\r\n }));\r\n },\r\n popUpCanvasAllColor: [],\r\n popUpCanvasApplyColorFill: () => {\r\n const popUpCanvasData = get().popupCanv.toJSON();\r\n const popUpCanvasGetobject = get().popupCanv.getObjects();\r\n popUpCanvasData.objects.forEach((element, index) => {\r\n element.colorFill = popUpCanvasGetobject[index].colorFill;\r\n });\r\n return popUpCanvasData;\r\n },\r\n popUpCanvasUpdateModification: (toSet) => {\r\n if (toSet) {\r\n const historyObject = {\r\n colorFill: get().colorFill,\r\n json: get().popUpCanvasApplyColorFill(),\r\n };\r\n set((state) => ({\r\n ...state,\r\n popupCanvasStoreHistory: [\r\n ...state.popupCanvasStoreHistory,\r\n historyObject,\r\n ],\r\n }));\r\n }\r\n },\r\n popUpCanvasUndo: () => {\r\n if (get().popUpCanvasCount <= get().popupCanvasStoreHistory.length) {\r\n const _V =\r\n get().popupCanvasStoreHistory.length - 1 - (get().popUpCanvasCount > 1 ? get().popUpCanvasCount- 1 : 0);\r\n if(get().popupCanvasStoreHistory[_V] && _V>0){\r\n const colors = get().popupCanvasStoreHistory[_V].colorFill;\r\n get().popupCanv.clear().renderAll();\r\n get().popupCanv.loadFromJSON(get().popupCanvasStoreHistory[_V].json);\r\n get().popupCanv.getObjects().forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().popupCanv.remove(obj);\r\n }\r\n });\r\n \r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 15; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n \r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n \r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n const line = new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n \r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n const line = new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n \r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n canvas.add(rect);\r\n canvas.sendToBack(rect);\r\n }\r\n }\r\n \r\n set({ colorFill: colors });\r\n get().popupCanv.renderAll();\r\n get().popUpCanvasCount += 1;\r\n if(_V === 1){\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n get().popUpCanvasCount = 1;\r\n }\r\n return colors;\r\n }else{\r\n return null;\r\n }\r\n }else{\r\n return null;\r\n }\r\n },\r\n popUpCanvasRedo: () => {\r\n if (get().popUpCanvasCount > 0) {\r\n get().popupCanv.clear().renderAll();\r\n get().popupCanv.loadFromJSON(\r\n get().popupCanvasStoreHistory[\r\n get().popupCanvasStoreHistory.length -\r\n 1 -\r\n get().popUpCanvasCount +\r\n 1\r\n ]\r\n );\r\n get().popupCanv.renderAll();\r\n get().popUpCanvasCount -= 1;\r\n }\r\n },\r\n forPopupCanvasReset: null,\r\n forPopupCanvasColor: {},\r\n imageData: null,\r\n horizontalLine: null,\r\n verticalLine: null,\r\n lastPosition: { top: 0, left: 0 },\r\n setLastPosition: (lastPosition) => set({ lastPosition }),\r\n };\r\n};\r\n\r\nexport default FabricSlice;\r\n","/* This Source Code Form is subject to the terms of the Mozilla Public\r\n * License, v. 2.0. If a copy of the MPL was not distributed with this\r\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\r\n\r\n'use strict';\r\n\r\nexport function TIFFParser() {\r\n this.tiffDataView = undefined;\r\n this.littleEndian = undefined;\r\n this.fileDirectories = [];\r\n}\r\n\r\nTIFFParser.prototype = {\r\n isLittleEndian: function () {\r\n // Get byte order mark.\r\n var BOM = this.getBytes(2, 0);\r\n\r\n // Find out the endianness.\r\n if (BOM === 0x4949) {\r\n this.littleEndian = true;\r\n } else if (BOM === 0x4d4d) {\r\n this.littleEndian = false;\r\n } else {\r\n console.log(BOM);\r\n throw TypeError('Invalid byte order value.');\r\n }\r\n\r\n return this.littleEndian;\r\n },\r\n\r\n hasTowel: function () {\r\n // Check for towel.\r\n if (this.getBytes(2, 2) !== 42) {\r\n throw RangeError('You forgot your towel!');\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n getFieldTagName: function (fieldTag) {\r\n // See: http://www.digitizationguidelines.gov/guidelines/TIFF_Metadata_Final.pdf\r\n // See: http://www.digitalpreservation.gov/formats/content/tiff_tags.shtml\r\n var fieldTagNames = {\r\n // TIFF Baseline\r\n 0x013b: 'Artist',\r\n 0x0102: 'BitsPerSample',\r\n 0x0109: 'CellLength',\r\n 0x0108: 'CellWidth',\r\n 0x0140: 'ColorMap',\r\n 0x0103: 'Compression',\r\n 0x8298: 'Copyright',\r\n 0x0132: 'DateTime',\r\n 0x0152: 'ExtraSamples',\r\n 0x010a: 'FillOrder',\r\n 0x0121: 'FreeByteCounts',\r\n 0x0120: 'FreeOffsets',\r\n 0x0123: 'GrayResponseCurve',\r\n 0x0122: 'GrayResponseUnit',\r\n 0x013c: 'HostComputer',\r\n 0x010e: 'ImageDescription',\r\n 0x0101: 'ImageLength',\r\n 0x0100: 'ImageWidth',\r\n 0x010f: 'Make',\r\n 0x0119: 'MaxSampleValue',\r\n 0x0118: 'MinSampleValue',\r\n 0x0110: 'Model',\r\n 0x00fe: 'NewSubfileType',\r\n 0x0112: 'Orientation',\r\n 0x0106: 'PhotometricInterpretation',\r\n 0x011c: 'PlanarConfiguration',\r\n 0x0128: 'ResolutionUnit',\r\n 0x0116: 'RowsPerStrip',\r\n 0x0115: 'SamplesPerPixel',\r\n 0x0131: 'Software',\r\n 0x0117: 'StripByteCounts',\r\n 0x0111: 'StripOffsets',\r\n 0x00ff: 'SubfileType',\r\n 0x0107: 'Threshholding',\r\n 0x011a: 'XResolution',\r\n 0x011b: 'YResolution',\r\n\r\n // TIFF Extended\r\n 0x0146: 'BadFaxLines',\r\n 0x0147: 'CleanFaxData',\r\n 0x0157: 'ClipPath',\r\n 0x0148: 'ConsecutiveBadFaxLines',\r\n 0x01b1: 'Decode',\r\n 0x01b2: 'DefaultImageColor',\r\n 0x010d: 'DocumentName',\r\n 0x0150: 'DotRange',\r\n 0x0141: 'HalftoneHints',\r\n 0x015a: 'Indexed',\r\n 0x015b: 'JPEGTables',\r\n 0x011d: 'PageName',\r\n 0x0129: 'PageNumber',\r\n 0x013d: 'Predictor',\r\n 0x013f: 'PrimaryChromaticities',\r\n 0x0214: 'ReferenceBlackWhite',\r\n 0x0153: 'SampleFormat',\r\n 0x022f: 'StripRowCounts',\r\n 0x014a: 'SubIFDs',\r\n 0x0124: 'T4Options',\r\n 0x0125: 'T6Options',\r\n 0x0145: 'TileByteCounts',\r\n 0x0143: 'TileLength',\r\n 0x0144: 'TileOffsets',\r\n 0x0142: 'TileWidth',\r\n 0x012d: 'TransferFunction',\r\n 0x013e: 'WhitePoint',\r\n 0x0158: 'XClipPathUnits',\r\n 0x011e: 'XPosition',\r\n 0x0211: 'YCbCrCoefficients',\r\n 0x0213: 'YCbCrPositioning',\r\n 0x0212: 'YCbCrSubSampling',\r\n 0x0159: 'YClipPathUnits',\r\n 0x011f: 'YPosition',\r\n\r\n // EXIF\r\n 0x9202: 'ApertureValue',\r\n 0xa001: 'ColorSpace',\r\n 0x9004: 'DateTimeDigitized',\r\n 0x9003: 'DateTimeOriginal',\r\n 0x8769: 'Exif IFD',\r\n 0x9000: 'ExifVersion',\r\n 0x829a: 'ExposureTime',\r\n 0xa300: 'FileSource',\r\n 0x9209: 'Flash',\r\n 0xa000: 'FlashpixVersion',\r\n 0x829d: 'FNumber',\r\n 0xa420: 'ImageUniqueID',\r\n 0x9208: 'LightSource',\r\n 0x927c: 'MakerNote',\r\n 0x9201: 'ShutterSpeedValue',\r\n 0x9286: 'UserComment',\r\n\r\n // IPTC\r\n 0x83bb: 'IPTC',\r\n\r\n // ICC\r\n 0x8773: 'ICC Profile',\r\n\r\n // XMP\r\n 0x02bc: 'XMP',\r\n\r\n // GDAL\r\n 0xa480: 'GDAL_METADATA',\r\n 0xa481: 'GDAL_NODATA',\r\n\r\n // Photoshop\r\n 0x8649: 'Photoshop',\r\n };\r\n\r\n var fieldTagName;\r\n\r\n if (fieldTag in fieldTagNames) {\r\n fieldTagName = fieldTagNames[fieldTag];\r\n } else {\r\n console.log('Unknown Field Tag:', fieldTag);\r\n fieldTagName = 'Tag' + fieldTag;\r\n }\r\n\r\n return fieldTagName;\r\n },\r\n\r\n getFieldTypeName: function (fieldType) {\r\n var fieldTypeNames = {\r\n 0x0001: 'BYTE',\r\n 0x0002: 'ASCII',\r\n 0x0003: 'SHORT',\r\n 0x0004: 'LONG',\r\n 0x0005: 'RATIONAL',\r\n 0x0006: 'SBYTE',\r\n 0x0007: 'UNDEFINED',\r\n 0x0008: 'SSHORT',\r\n 0x0009: 'SLONG',\r\n 0x000a: 'SRATIONAL',\r\n 0x000b: 'FLOAT',\r\n 0x000c: 'DOUBLE',\r\n };\r\n\r\n var fieldTypeName;\r\n\r\n if (fieldType in fieldTypeNames) {\r\n fieldTypeName = fieldTypeNames[fieldType];\r\n }\r\n\r\n return fieldTypeName;\r\n },\r\n\r\n getFieldTypeLength: function (fieldTypeName) {\r\n var fieldTypeLength;\r\n\r\n if (['BYTE', 'ASCII', 'SBYTE', 'UNDEFINED'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 1;\r\n } else if (['SHORT', 'SSHORT'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 2;\r\n } else if (['LONG', 'SLONG', 'FLOAT'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 4;\r\n } else if (\r\n ['RATIONAL', 'SRATIONAL', 'DOUBLE'].indexOf(fieldTypeName) !== -1\r\n ) {\r\n fieldTypeLength = 8;\r\n }\r\n\r\n return fieldTypeLength;\r\n },\r\n\r\n getBits: function (numBits, byteOffset, bitOffset) {\r\n bitOffset = bitOffset || 0;\r\n var extraBytes = Math.floor(bitOffset / 8);\r\n var newByteOffset = byteOffset + extraBytes;\r\n var totalBits = bitOffset + numBits;\r\n var shiftRight = 32 - numBits;\r\n\r\n if (totalBits <= 0) {\r\n console.log(numBits, byteOffset, bitOffset);\r\n throw RangeError('No bits requested');\r\n } else if (totalBits <= 8) {\r\n var shiftLeft = 24 + bitOffset;\r\n var rawBits = this.tiffDataView.getUint8(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else if (totalBits <= 16) {\r\n var shiftLeft = 16 + bitOffset;\r\n var rawBits = this.tiffDataView.getUint16(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else if (totalBits <= 32) {\r\n var shiftLeft = bitOffset;\r\n var rawBits = this.tiffDataView.getUint32(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else {\r\n console.log(numBits, byteOffset, bitOffset);\r\n throw RangeError('Too many bits requested');\r\n }\r\n\r\n var chunkInfo = {\r\n bits: (rawBits << shiftLeft) >>> shiftRight,\r\n byteOffset: newByteOffset + Math.floor(totalBits / 8),\r\n bitOffset: totalBits % 8,\r\n };\r\n\r\n return chunkInfo;\r\n },\r\n\r\n getBytes: function (numBytes, offset) {\r\n if (numBytes <= 0) {\r\n console.log(numBytes, offset);\r\n throw RangeError('No bytes requested');\r\n } else if (numBytes <= 1) {\r\n return this.tiffDataView.getUint8(offset, this.littleEndian);\r\n } else if (numBytes <= 2) {\r\n return this.tiffDataView.getUint16(offset, this.littleEndian);\r\n } else if (numBytes <= 3) {\r\n return this.tiffDataView.getUint32(offset, this.littleEndian) >>> 8;\r\n } else if (numBytes <= 4) {\r\n return this.tiffDataView.getUint32(offset, this.littleEndian);\r\n } else {\r\n console.log(numBytes, offset);\r\n throw RangeError('Too many bytes requested');\r\n }\r\n },\r\n\r\n getFieldValues: function (\r\n fieldTagName,\r\n fieldTypeName,\r\n typeCount,\r\n valueOffset\r\n ) {\r\n var fieldValues = [];\r\n\r\n var fieldTypeLength = this.getFieldTypeLength(fieldTypeName);\r\n var fieldValueSize = fieldTypeLength * typeCount;\r\n\r\n if (fieldValueSize <= 4) {\r\n // The value is stored at the big end of the valueOffset.\r\n if (this.littleEndian === false) {\r\n var value = valueOffset >>> ((4 - fieldTypeLength) * 8);\r\n } else {\r\n var value = valueOffset;\r\n }\r\n\r\n fieldValues.push(value);\r\n } else {\r\n for (var i = 0; i < typeCount; i++) {\r\n var indexOffset = fieldTypeLength * i;\r\n\r\n if (fieldTypeLength >= 8) {\r\n if (['RATIONAL', 'SRATIONAL'].indexOf(fieldTypeName) !== -1) {\r\n // Numerator\r\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset));\r\n // Denominator\r\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset + 4));\r\n //\t\t\t\t\t} else if (['DOUBLE'].indexOf(fieldTypeName) !== -1) {\r\n //\t\t\t\t\t\tfieldValues.push(this.getBytes(4, valueOffset + indexOffset) + this.getBytes(4, valueOffset + indexOffset + 4));\r\n } else {\r\n console.log(fieldTypeName, typeCount, fieldValueSize);\r\n throw TypeError(\"Can't handle this field type or size\");\r\n }\r\n } else {\r\n fieldValues.push(\r\n this.getBytes(fieldTypeLength, valueOffset + indexOffset)\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (fieldTypeName === 'ASCII') {\r\n fieldValues.forEach(function (e, i, a) {\r\n a[i] = String.fromCharCode(e);\r\n });\r\n }\r\n\r\n return fieldValues;\r\n },\r\n\r\n clampColorSample: function (colorSample, bitsPerSample) {\r\n var multiplier = Math.pow(2, 8 - bitsPerSample);\r\n\r\n return Math.floor(colorSample * multiplier + (multiplier - 1));\r\n },\r\n\r\n makeRGBAFillValue: function (r, g, b, a) {\r\n if (typeof a === 'undefined') {\r\n a = 1.0;\r\n }\r\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')';\r\n },\r\n\r\n parseFileDirectory: function (byteOffset) {\r\n var numDirEntries = this.getBytes(2, byteOffset);\r\n\r\n var tiffFields = [];\r\n\r\n for (\r\n var i = byteOffset + 2, entryCount = 0;\r\n entryCount < numDirEntries;\r\n i += 12, entryCount++\r\n ) {\r\n var fieldTag = this.getBytes(2, i);\r\n var fieldType = this.getBytes(2, i + 2);\r\n var typeCount = this.getBytes(4, i + 4);\r\n var valueOffset = this.getBytes(4, i + 8);\r\n\r\n var fieldTagName = this.getFieldTagName(fieldTag);\r\n var fieldTypeName = this.getFieldTypeName(fieldType);\r\n\r\n var fieldValues = this.getFieldValues(\r\n fieldTagName,\r\n fieldTypeName,\r\n typeCount,\r\n valueOffset\r\n );\r\n\r\n tiffFields[fieldTagName] = { type: fieldTypeName, values: fieldValues };\r\n }\r\n\r\n this.fileDirectories.push(tiffFields);\r\n\r\n var nextIFDByteOffset = this.getBytes(4, i);\r\n\r\n if (nextIFDByteOffset === 0x00000000) {\r\n return this.fileDirectories;\r\n } else {\r\n return this.parseFileDirectory(nextIFDByteOffset);\r\n }\r\n },\r\n\r\n parseTIFF: function (tiffArrayBuffer, canvas) {\r\n canvas = canvas || document.createElement('canvas');\r\n\r\n console.log(tiffArrayBuffer);\r\n\r\n this.tiffDataView = new DataView(tiffArrayBuffer);\r\n this.canvas = canvas;\r\n\r\n this.littleEndian = this.isLittleEndian(this.tiffDataView);\r\n\r\n if (!this.hasTowel(this.tiffDataView, this.littleEndian)) {\r\n return;\r\n }\r\n\r\n var firstIFDByteOffset = this.getBytes(4, 4);\r\n\r\n this.fileDirectories = this.parseFileDirectory(firstIFDByteOffset);\r\n\r\n var fileDirectory = this.fileDirectories[0];\r\n\r\n console.log(fileDirectory);\r\n\r\n var imageWidth = fileDirectory.ImageWidth.values[0];\r\n var imageLength = fileDirectory.ImageLength.values[0];\r\n\r\n this.canvas.width = imageWidth;\r\n this.canvas.height = imageLength;\r\n\r\n var strips = [];\r\n\r\n var compression = fileDirectory.Compression\r\n ? fileDirectory.Compression.values[0]\r\n : 1;\r\n\r\n var samplesPerPixel = fileDirectory.SamplesPerPixel.values[0];\r\n\r\n var sampleProperties = [];\r\n\r\n var bitsPerPixel = 0;\r\n var hasBytesPerPixel = false;\r\n\r\n fileDirectory.BitsPerSample.values.forEach(function (\r\n bitsPerSample,\r\n i,\r\n bitsPerSampleValues\r\n ) {\r\n sampleProperties[i] = {\r\n bitsPerSample: bitsPerSample,\r\n hasBytesPerSample: false,\r\n bytesPerSample: undefined,\r\n };\r\n\r\n if (bitsPerSample % 8 === 0) {\r\n sampleProperties[i].hasBytesPerSample = true;\r\n sampleProperties[i].bytesPerSample = bitsPerSample / 8;\r\n }\r\n\r\n bitsPerPixel += bitsPerSample;\r\n },\r\n this);\r\n\r\n if (bitsPerPixel % 8 === 0) {\r\n hasBytesPerPixel = true;\r\n var bytesPerPixel = bitsPerPixel / 8;\r\n }\r\n\r\n var stripOffsetValues = fileDirectory.StripOffsets.values;\r\n var numStripOffsetValues = stripOffsetValues.length;\r\n\r\n // StripByteCounts is supposed to be required, but see if we can recover anyway.\r\n if (fileDirectory.StripByteCounts) {\r\n var stripByteCountValues = fileDirectory.StripByteCounts.values;\r\n } else {\r\n console.log('Missing StripByteCounts!');\r\n\r\n // Infer StripByteCounts, if possible.\r\n if (numStripOffsetValues === 1) {\r\n var stripByteCountValues = [\r\n Math.ceil((imageWidth * imageLength * bitsPerPixel) / 8),\r\n ];\r\n } else {\r\n throw Error('Cannot recover from missing StripByteCounts');\r\n }\r\n }\r\n\r\n // Loop through strips and decompress as necessary.\r\n for (var i = 0; i < numStripOffsetValues; i++) {\r\n var stripOffset = stripOffsetValues[i];\r\n strips[i] = [];\r\n\r\n var stripByteCount = stripByteCountValues[i];\r\n\r\n // Loop through pixels.\r\n for (\r\n var byteOffset = 0,\r\n bitOffset = 0,\r\n jIncrement = 1,\r\n getHeader = true,\r\n pixel = [],\r\n numBytes = 0,\r\n sample = 0,\r\n currentSample = 0;\r\n byteOffset < stripByteCount;\r\n byteOffset += jIncrement\r\n ) {\r\n // Decompress strip.\r\n switch (compression) {\r\n // Uncompressed\r\n case 1:\r\n // Loop through samples (sub-pixels).\r\n for (var m = 0, pixel = []; m < samplesPerPixel; m++) {\r\n if (sampleProperties[m].hasBytesPerSample) {\r\n // XXX: This is wrong!\r\n var sampleOffset = sampleProperties[m].bytesPerSample * m;\r\n\r\n pixel.push(\r\n this.getBytes(\r\n sampleProperties[m].bytesPerSample,\r\n stripOffset + byteOffset + sampleOffset\r\n )\r\n );\r\n } else {\r\n var sampleInfo = this.getBits(\r\n sampleProperties[m].bitsPerSample,\r\n stripOffset + byteOffset,\r\n bitOffset\r\n );\r\n\r\n pixel.push(sampleInfo.bits);\r\n\r\n byteOffset = sampleInfo.byteOffset - stripOffset;\r\n bitOffset = sampleInfo.bitOffset;\r\n\r\n throw RangeError('Cannot handle sub-byte bits per sample');\r\n }\r\n }\r\n\r\n strips[i].push(pixel);\r\n\r\n if (hasBytesPerPixel) {\r\n jIncrement = bytesPerPixel;\r\n } else {\r\n jIncrement = 0;\r\n\r\n throw RangeError('Cannot handle sub-byte bits per pixel');\r\n }\r\n break;\r\n\r\n // CITT Group 3 1-Dimensional Modified Huffman run-length encoding\r\n case 2:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Group 3 Fax\r\n case 3:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Group 4 Fax\r\n case 4:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // LZW\r\n case 5:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Old-style JPEG (TIFF 6.0)\r\n case 6:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // New-style JPEG (TIFF Specification Supplement 2)\r\n case 7:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // PackBits\r\n case 32773:\r\n // Are we ready for a new block?\r\n if (getHeader) {\r\n getHeader = false;\r\n\r\n var blockLength = 1;\r\n var iterations = 1;\r\n\r\n // The header byte is signed.\r\n var header = this.tiffDataView.getInt8(\r\n stripOffset + byteOffset,\r\n this.littleEndian\r\n );\r\n\r\n if (header >= 0 && header <= 127) {\r\n // Normal pixels.\r\n blockLength = header + 1;\r\n } else if (header >= -127 && header <= -1) {\r\n // Collapsed pixels.\r\n iterations = -header + 1;\r\n } /*if (header === -128)*/ else {\r\n // Placeholder byte?\r\n getHeader = true;\r\n }\r\n } else {\r\n var currentByte = this.getBytes(1, stripOffset + byteOffset);\r\n\r\n // Duplicate bytes, if necessary.\r\n for (var m = 0; m < iterations; m++) {\r\n if (sampleProperties[sample].hasBytesPerSample) {\r\n // We're reading one byte at a time, so we need to handle multi-byte samples.\r\n currentSample =\r\n (currentSample << (8 * numBytes)) | currentByte;\r\n numBytes++;\r\n\r\n // Is our sample complete?\r\n if (numBytes === sampleProperties[sample].bytesPerSample) {\r\n pixel.push(currentSample);\r\n currentSample = numBytes = 0;\r\n sample++;\r\n }\r\n } else {\r\n throw RangeError('Cannot handle sub-byte bits per sample');\r\n }\r\n\r\n // Is our pixel complete?\r\n if (sample === samplesPerPixel) {\r\n strips[i].push(pixel);\r\n\r\n pixel = [];\r\n sample = 0;\r\n }\r\n }\r\n\r\n blockLength--;\r\n\r\n // Is our block complete?\r\n if (blockLength === 0) {\r\n getHeader = true;\r\n }\r\n }\r\n\r\n jIncrement = 1;\r\n break;\r\n\r\n // Unknown compression algorithm\r\n default:\r\n // Do not attempt to parse the image data.\r\n break;\r\n }\r\n }\r\n\r\n //\t\t\tconsole.log( strips[i] );\r\n }\r\n\r\n //\t\tconsole.log( strips );\r\n\r\n if (canvas.getContext) {\r\n var ctx = this.canvas.getContext('2d');\r\n\r\n // Set a default fill style.\r\n ctx.fillStyle = this.makeRGBAFillValue(255, 255, 255, 0);\r\n\r\n // If RowsPerStrip is missing, the whole image is in one strip.\r\n if (fileDirectory.RowsPerStrip) {\r\n var rowsPerStrip = fileDirectory.RowsPerStrip.values[0];\r\n } else {\r\n var rowsPerStrip = imageLength;\r\n }\r\n\r\n var numStrips = strips.length;\r\n\r\n var imageLengthModRowsPerStrip = imageLength % rowsPerStrip;\r\n var rowsInLastStrip =\r\n imageLengthModRowsPerStrip === 0\r\n ? rowsPerStrip\r\n : imageLengthModRowsPerStrip;\r\n\r\n var numRowsInStrip = rowsPerStrip;\r\n var numRowsInPreviousStrip = 0;\r\n\r\n var photometricInterpretation =\r\n fileDirectory.PhotometricInterpretation.values[0];\r\n\r\n var extraSamplesValues = [];\r\n var numExtraSamples = 0;\r\n\r\n if (fileDirectory.ExtraSamples) {\r\n extraSamplesValues = fileDirectory.ExtraSamples.values;\r\n numExtraSamples = extraSamplesValues.length;\r\n }\r\n\r\n if (fileDirectory.ColorMap) {\r\n var colorMapValues = fileDirectory.ColorMap.values;\r\n var colorMapSampleSize = Math.pow(2, sampleProperties[0].bitsPerSample);\r\n }\r\n\r\n // Loop through the strips in the image.\r\n for (var i = 0; i < numStrips; i++) {\r\n // The last strip may be short.\r\n if (i + 1 === numStrips) {\r\n numRowsInStrip = rowsInLastStrip;\r\n }\r\n\r\n var numPixels = strips[i].length;\r\n var yPadding = numRowsInPreviousStrip * i;\r\n\r\n // Loop through the rows in the strip.\r\n for (var y = 0, j = 0; y < numRowsInStrip, j < numPixels; y++) {\r\n // Loop through the pixels in the row.\r\n for (var x = 0; x < imageWidth; x++, j++) {\r\n var pixelSamples = strips[i][j];\r\n\r\n var red = 0;\r\n var green = 0;\r\n var blue = 0;\r\n var opacity = 1.0;\r\n\r\n if (numExtraSamples > 0) {\r\n for (var k = 0; k < numExtraSamples; k++) {\r\n if (\r\n extraSamplesValues[k] === 1 ||\r\n extraSamplesValues[k] === 2\r\n ) {\r\n // Clamp opacity to the range [0,1].\r\n opacity = pixelSamples[3 + k] / 256;\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n switch (photometricInterpretation) {\r\n // Bilevel or Grayscale\r\n // WhiteIsZero\r\n case 0:\r\n if (sampleProperties[0].hasBytesPerSample) {\r\n var invertValue = Math.pow(\r\n 0x10,\r\n sampleProperties[0].bytesPerSample * 2\r\n );\r\n }\r\n\r\n // Invert samples.\r\n pixelSamples.forEach(function (sample, index, samples) {\r\n samples[index] = invertValue - sample;\r\n });\r\n\r\n // Bilevel or Grayscale\r\n // BlackIsZero\r\n case 1:\r\n red =\r\n green =\r\n blue =\r\n this.clampColorSample(\r\n pixelSamples[0],\r\n sampleProperties[0].bitsPerSample\r\n );\r\n break;\r\n\r\n // RGB Full Color\r\n case 2:\r\n red = this.clampColorSample(\r\n pixelSamples[0],\r\n sampleProperties[0].bitsPerSample\r\n );\r\n green = this.clampColorSample(\r\n pixelSamples[1],\r\n sampleProperties[1].bitsPerSample\r\n );\r\n blue = this.clampColorSample(\r\n pixelSamples[2],\r\n sampleProperties[2].bitsPerSample\r\n );\r\n break;\r\n\r\n // RGB Color Palette\r\n case 3:\r\n if (colorMapValues === undefined) {\r\n throw Error('Palette image missing color map');\r\n }\r\n\r\n var colorMapIndex = pixelSamples[0];\r\n\r\n red = this.clampColorSample(colorMapValues[colorMapIndex], 16);\r\n green = this.clampColorSample(\r\n colorMapValues[colorMapSampleSize + colorMapIndex],\r\n 16\r\n );\r\n blue = this.clampColorSample(\r\n colorMapValues[2 * colorMapSampleSize + colorMapIndex],\r\n 16\r\n );\r\n break;\r\n\r\n // Transparency mask\r\n case 4:\r\n throw RangeError('Not Yet Implemented: Transparency mask');\r\n break;\r\n\r\n // CMYK\r\n case 5:\r\n throw RangeError('Not Yet Implemented: CMYK');\r\n break;\r\n\r\n // YCbCr\r\n case 6:\r\n throw RangeError('Not Yet Implemented: YCbCr');\r\n break;\r\n\r\n // CIELab\r\n case 8:\r\n throw RangeError('Not Yet Implemented: CIELab');\r\n break;\r\n\r\n // Unknown Photometric Interpretation\r\n default:\r\n throw RangeError(\r\n 'Unknown Photometric Interpretation:',\r\n photometricInterpretation\r\n );\r\n break;\r\n }\r\n\r\n ctx.fillStyle = this.makeRGBAFillValue(red, green, blue, opacity);\r\n ctx.fillRect(x, yPadding + y, 1, 1);\r\n }\r\n }\r\n\r\n numRowsInPreviousStrip = numRowsInStrip;\r\n }\r\n }\r\n\r\n /*\t\tfor (var i = 0, numFileDirectories = this.fileDirectories.length; i < numFileDirectories; i++) {\r\n // Stuff\r\n }*/\r\n\r\n return this.canvas;\r\n },\r\n};\r\n","export const optionpresets = {\r\n\t'default': {\r\n\t\t\t // Tracing\r\n\t\t\t corsenabled : true, // true\r\n\t\t\t ltres : 0.08, // 1\r\n\t\t\t qtres : 0.01, // 1\r\n\t\t\t pathomit : 8, // 8\r\n\t\t\t rightangleenhance : true, // true\r\n\t\t\t \r\n\t\t\t // Color quantization\r\n\t\t\t colorsampling : 0, // 1\r\n\t\t\t numberofcolors :8, // 8\r\n\t\t\t mincolorratio : 0, // 0\r\n\t\t\t colorquantcycles : 3, // 3\r\n\t\t\t \r\n\t\t\t // Layering method\r\n\t\t\t layering : 0, //0\r\n\t\t\t \r\n\t\t\t // SVG rendering\r\n\t\t\t strokewidth : 1, //1\r\n\t\t\t linefilter : false, // false\r\n\t\t\t scale : 1, // 1\r\n\t\t\t roundcoords : 1, //1\r\n\t\t\t viewbox : false, // false\r\n\t\t\t desc : false, // false\r\n\t\t\t lcpr : 0, // 0\r\n\t\t\t qcpr : 0, // 0\r\n\t\t\t \r\n\t\t\t // Blur\r\n\t\t\t blurradius :0, //0\r\n\t\t\t blurdelta : 20 //20\r\n\t\t\r\n\t},\r\n\r\n\t'png': {\r\n // Tracing\r\n corsenabled : true, // true\r\n ltres : 0.08, // 1\r\n qtres : 0.1, // 1 --> FOR PNG 0.1 // FOR JPG 0.01\r\n pathomit : 8, // 8\r\n rightangleenhance : true, // true\r\n \r\n // Color quantization\r\n colorsampling : 10, // 1 -->FOR PNG 10 // FOR JPG 0\r\n numberofcolors :8, // 8\r\n mincolorratio : 0, // 0\r\n colorquantcycles : 3, // 3\r\n \r\n // Layering method\r\n layering : 0, //0\r\n \r\n // SVG rendering\r\n strokewidth : 1, //1\r\n linefilter : false, // false\r\n scale : 1, // 1\r\n roundcoords : 1, //1\r\n viewbox : false, // false\r\n desc : false, // false\r\n lcpr : 0, // 0\r\n qcpr : 0, // 0\r\n \r\n // Blur\r\n blurradius :0, //0\r\n blurdelta : 20 //20 \r\n },\r\n\t\t\r\n\t'jpg': {\r\n // Tracing\r\n\t\t\tcorsenabled : true, // true\r\n\t\t\tltres : 0.08, // 1\r\n\t\t\tqtres : 0.01, // 1\r\n\t\t\tpathomit : 8, // 8\r\n\t\t\trightangleenhance : true, // true\r\n\t\t\t// Color quantization\r\n\t\t\tcolorsampling : 0, // 1\r\n\t\t\tnumberofcolors :8, // 8\r\n\t\t\tmincolorratio : 0, // 0\r\n\t\t\tcolorquantcycles : 3, // 3\r\n\t\t\t// Layering method\r\n\t\t\tlayering : 0, //0\r\n\t\t\t// SVG rendering\r\n\t\t\tstrokewidth : 1, //1\r\n\t\t\tlinefilter : false, // false\r\n\t\t\tscale : 1, // 1\r\n\t\t\troundcoords : 1, //1\r\n\t\t\tviewbox : false, // false\r\n\t\t\tdesc : false, // false\r\n\t\t\tlcpr : 0, // 0\r\n\t\t\tqcpr : 0, // 0\r\n\t\t\t// Blur\r\n\t\t\tblurradius :0, //0\r\n\t\t\tblurdelta : 20 //20\t \r\n\t},\r\n\r\n\t\t'posterized1': { colorsampling:0, numberofcolors:2 },\r\n\t\t\r\n\t\t'posterized2': { numberofcolors:4, blurradius:5 },\r\n\t\t\r\n\t\t'curvy': { ltres:0.01, linefilter:true, rightangleenhance:false },\r\n\t\t\r\n\t\t'sharp': { qtres:0.01, linefilter:false },\r\n\t\t\r\n\t\t'detailed': { pathomit:0, roundcoords:2, ltres:0.5, qtres:0.5, numberofcolors:64 },\r\n\t\t\r\n\t\t'smoothed': { blurradius:5, blurdelta: 64 },\r\n\t\t\r\n\t\t'grayscale': { colorsampling:0, colorquantcycles:1, numberofcolors:7 },\r\n\t\t\r\n\t\t'fixedpalette': { colorsampling:0, colorquantcycles:1, numberofcolors:27 },\r\n\t\t\r\n\t\t'randomsampling1': { colorsampling:1, numberofcolors:8 },\r\n\t\t\r\n\t\t'randomsampling2': { colorsampling:1, numberofcolors:64 },\r\n\t\t\r\n\t\t'artistic1': { colorsampling:0, colorquantcycles:1, pathomit:0, blurradius:5, blurdelta: 64, ltres:0.01, linefilter:true, numberofcolors:16, strokewidth:2 },\r\n\t\t\r\n\t\t'artistic2': { qtres:0.01, colorsampling:0, colorquantcycles:1, numberofcolors:4, strokewidth:0 },\r\n\t\t\r\n\t\t'artistic3': { qtres:10, ltres:10, numberofcolors:8 },\r\n\t\t\r\n\t\t'artistic4': { qtres:10, ltres:10, numberofcolors:64, blurradius:5, blurdelta: 256, strokewidth:2 },\r\n\t\t\r\n\t\t'posterized3': { ltres: 1, qtres: 1, pathomit: 20, rightangleenhance: true, colorsampling: 0, numberofcolors: 3,\r\n\t\t\tmincolorratio: 0, colorquantcycles: 3, blurradius: 3, blurdelta: 20, strokewidth: 0, linefilter: false,\r\n\t\t\troundcoords: 1, pal: [ { r: 0, g: 0, b: 100, a: 255 }, { r: 255, g: 255, b: 255, a: 255 } ] }\r\n\t\t\t\r\n\t}// End of optionpresets","import { StateCreator } from 'zustand';\r\nimport { TIFFParser } from '../../loaders/tiffParser';\r\nimport { use3dddPlus } from '..';\r\nimport { fabric } from 'fabric';\r\nimport ImageTracer from 'imagetracerjs';\r\nimport {optionpresets} from '../../data';\r\n\r\n// import * as pdfjsLib from 'pdfjs-dist/build/pdf';\r\n// pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsLib.version}/pdf.worker.js`;\r\n//@ts-ignore\r\nimport * as pdfjsLib from 'pdfjs-dist/webpack';\r\nimport { requests } from '../../axios/index';\r\n\r\nexport interface ConverterSlice {\r\n fillColor: string[];\r\n pdfConverter: (data: any) => void;\r\n convertPdfToImages: (buffer: any) => any;\r\n tiffConvert: (data: any) => void;\r\n aiConvert: (data: any) => any;\r\n loadImageFromURL: (data: any) => any;\r\n imageToSVG: (data: any, ext: string, isSVG?: boolean, convert?: boolean) => void;\r\n removeDuplicates: (arr: any) => void;\r\n RGBToHex: (rgb: any) => void;\r\n changeSVGColor: (property: any, color: any) => boolean;\r\n setFile: (file: any) => void;\r\n file: any;\r\n addText: () => void;\r\n refreshColor: (colorValue: number) => void;\r\n}\r\n\r\nexport const converterSlice: StateCreator<ConverterSlice> = (set, get) => {\r\n \r\nconst processImage = (svgstr: any, colorValue: number) => {\r\n fabric.loadSVGFromString(\r\n //@ts-ignore\r\n new String(svgstr),\r\n function (objects, options) {\r\n let loadedObject: any = fabric.util.groupSVGElements(objects, options);\r\n loadedObject.scaleToHeight(300);\r\n loadedObject.scaleToWidth(300);\r\n //@ts-ignore\r\n let objImage = loadedObject?._objects;\r\n let _Fills = [];\r\n let fillCounts = {};\r\n if(objImage){\r\n objImage.forEach((ele: any) => {\r\n ele.set({ strokeWidth: 0 });\r\n if(typeof ele.fill === \"string\" && ele.fill !== \"\"){\r\n set({ fillColor: [...ele.fill] }); \r\n let fillColor = ele.fill.toString();\r\n const pixelCount = ele.width * ele.height; \r\n fillCounts[fillColor] = (fillCounts[fillColor] || 0) + pixelCount;\r\n }\r\n });\r\n }\r\n use3dddPlus.setState({ loadedObject: objImage });\r\n const sortedFillColors = Object.keys(fillCounts).sort((a, b) => fillCounts[b] - fillCounts[a]);\r\n const topColors = sortedFillColors.slice(0, colorValue);\r\n topColors.map((e)=>{\r\n if( e.search(\"#\") === -1)\r\n {\r\n let _C = get().RGBToHex(e);\r\n _Fills.push(_C);\r\n }else{\r\n _Fills.push(e);\r\n }\r\n });\r\n //@ts-ignore\r\n set({ fillColor: get().removeDuplicates(_Fills) });\r\n //@ts-ignore\r\n _Fills = get().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n\r\n // Update colors in default color fill\r\n const defaultCF = [];\r\n Object.keys(fillColors).map((cf: any) => {\r\n defaultCF.push({\r\n property: cf,\r\n default: fillColors[cf],\r\n updated: fillColors[cf],\r\n });\r\n });\r\n use3dddPlus.setState({ defaultColorFill: defaultCF});\r\n use3dddPlus.setState({ defaultColorFillCopy: defaultCF});\r\n\r\n function euclideanDistance(color1: string, color2: string): number {\r\n const c1 = new fabric.Color(color1).getSource();\r\n const c2 = new fabric.Color(color2).getSource();\r\n \r\n const diffR = c1[0] - c2[0];\r\n const diffG = c1[1] - c2[1];\r\n const diffB = c1[2] - c2[2];\r\n \r\n return Math.sqrt(diffR ** 2 + diffG ** 2 + diffB ** 2);\r\n }\r\n const colorMap: { [color: string]: string } = {};\r\n sortedFillColors.forEach((color) => {\r\n const closestColor = topColors.reduce((prev, curr) => {\r\n const prevDiff = euclideanDistance(color, prev);\r\n const currDiff = euclideanDistance(color, curr);\r\n return prevDiff < currDiff ? prev : curr;\r\n });\r\n colorMap[color] = closestColor;\r\n });\r\n if(objImage){\r\n objImage.forEach((ele: any) => {\r\n ele.set({ fill: colorMap[ele.fill.toString()] });\r\n });\r\n }\r\n loadedObject.set({\r\n colorFill: fillColors,\r\n //@ts-ignore\r\n setControlVisible: false,\r\n });\r\n loadedObject.id = use3dddPlus.getState().guid();\r\n\r\n // loadedObject = new fabric.Group(objImage, options);\r\n use3dddPlus.getState().popupCanv.clear();\r\n\r\n // use3dddPlus\r\n // .getState()\r\n // .popupCanv.setBackgroundColor(\r\n // {\r\n // source:\r\n // 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/checkerBoxBG.png',\r\n // repeat: 'repeat',\r\n // },\r\n // use3dddPlus\r\n // .getState()\r\n // .popupCanv.renderAll.bind(use3dddPlus.getState().popupCanv),\r\n // {\r\n // backgroundImageOpacity: 1,\r\n // scaleX: 1.1,\r\n // scaleY: 1.1,\r\n // backgroundRepeat: 'repeat',\r\n // }\r\n // ); \r\n\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 15; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n \r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n // backgroundColor:'#ccc',\r\n fill:(isEvenRow && (left/gridSize)%2 === 0) || (!isEvenRow && (left/gridSize)%2 !== 0) ?'#ffffff' : '#dadadac7'\r\n });\r\n return rect;\r\n }\r\n \r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n canvas.add(new fabric.Line([x, 0, x, canvasHeight], { \r\n stroke: '#dadadac7', \r\n selectable: false,\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n type: 'line', }));\r\n }\r\n \r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n canvas.add(new fabric.Line([0, y, canvasWidth, y], { \r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n type: 'line', }));\r\n }\r\n \r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(left, top, gridSize, gridSize, isEvenRow);\r\n canvas.add(rect);\r\n }\r\n }\r\n\r\n use3dddPlus.getState().popupCanv.add(loadedObject).renderAll();\r\n use3dddPlus.getState().popupCanv.centerObject(loadedObject);\r\n use3dddPlus.getState().popupCanv.setActiveObject(loadedObject);\r\n use3dddPlus.setState({ activeSelection: loadedObject });\r\n use3dddPlus.setState({ loading: false });\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n }\r\n );\r\n};\r\n\r\n return {\r\n \r\n fillColor: [],\r\n file: {},\r\n setFile: (file) => {\r\n set({ file });\r\n },\r\n // return new Promise((resolve, reject) => {\r\n // if (data) {\r\n // const reader = new FileReader();\r\n // reader.onload = async () => {\r\n // const buffer = reader.result;\r\n // try {\r\n // const _B = await get().convertPdfToImages(buffer);\r\n // resolve(_B);\r\n // } catch (error) {\r\n // reject(error);\r\n // }\r\n // };\r\n // reader.readAsArrayBuffer(data);\r\n // } else {\r\n // reject(new Error('No data provided.'));\r\n // }\r\n // });\r\n // },\r\n // convertPdfToImages: async (buffer) => {\r\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\r\n // .promise;\r\n // const scale = 2;\r\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\r\n // const page = await pdf.getPage(pageNum);\r\n // const viewport = page.getViewport({ scale });\r\n // const canvasEl = document.createElement('canvas');\r\n // canvasEl.width = viewport.width;\r\n // canvasEl.height = viewport.height;\r\n // const context = canvasEl.getContext('2d');\r\n // await page.render({\r\n // canvasContext: context,\r\n // viewport,\r\n // background: 'rgba(0,0,0,0)',\r\n // }).promise;\r\n // // let objectURL = URL.createObjectURL(canvasEl);\r\n // const imageUrl = canvasEl.toDataURL();\r\n // return imageUrl;\r\n // // svgConverter(imageUrl);\r\n // /* */\r\n // }\r\n // },\r\n tiffConvert: async (data) => {\r\n const tiffParser = new TIFFParser();\r\n const canvasEl = document.createElement('canvas');\r\n canvasEl.width = 800;\r\n canvasEl.height = 800;\r\n // const context = canvasEl.getContext(\"2d\");\r\n const arrayBuffer = await data.arrayBuffer();\r\n var tiffCanvas = tiffParser.parseTIFF(arrayBuffer, canvasEl);\r\n const imageUrl = tiffCanvas.toDataURL();\r\n return imageUrl;\r\n },\r\n aiConvert:async (aiFile)=>{\r\n const formData = new FormData();\r\n formData.append('file', aiFile);\r\n const url = 'https://m2dev.richardsonsports.com/rest/V1/file-conversion';\r\n const config = {\r\n headers: {\r\n 'Authorization' : 'Bearer 6k5hm5dcmdwtd6l4setj4a3aq6liab5u',\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n const response = await requests.post(url, formData,config);\r\n return response;\r\n },\r\n loadImageFromURL:async (url)=>{\r\n console.log(\"---.\",url);\r\n // return await requests.get(url + \"?timestamp=\" + Date.now());\r\n // const response = await fetch(url);\r\n // const blob = await response.text();\r\n // return url;\r\n\r\n },\r\n imageToSVG: (data, ext: string, isSVG = false, convert = true) => {\r\n // use3dddPlus.setState({ uploadImageModalDisplay: true });\r\n use3dddPlus.setState({ loading: true });\r\n if(convert){\r\n if(isSVG){\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n use3dddPlus.setState({ imageData: e.target.result });\r\n processImage(e.target.result, 8);\r\n };\r\n reader.readAsText(data);\r\n }else{\r\n ImageTracer.imageToSVG(\r\n data,\r\n function (svgstr) {\r\n use3dddPlus.setState({ imageData: svgstr });\r\n processImage(svgstr, 8);\r\n }, (ext && (ext.toLowerCase() === \"jpg\" || ext.toLowerCase() === \"jpeg\") ? optionpresets.jpg :\r\n ext.toLowerCase() === \"png\" ? optionpresets.png : optionpresets.default)\r\n );\r\n }\r\n }else{\r\n processImage(data, 8);\r\n }\r\n },\r\n refreshColor: (colorValue: number) => { \r\n processImage(use3dddPlus.getState().imageData, colorValue);\r\n },\r\n removeDuplicates: (arr) => {\r\n return arr.filter((item, index) => arr.indexOf(item) === index);\r\n },\r\n\r\n RGBToHex: (rgb) => {\r\n if(rgb){\r\n if(rgb.indexOf('rgba') >= 0){\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${((1 << 24) + (parseInt(rgba[0]) << 16) + (parseInt(rgba[1]) << 8) + parseInt(rgba[2])).toString(16).slice(1)}`; \r\n }else{ \r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n }else {return '';}\r\n },\r\n changeSVGColor: (property, color) => {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n const fillColor = { ...use3dddPlus.getState().colorFill };\r\n const previousColor = fillColor[property];\r\n //const SelectedObjet = use3dddPlus.getState().activeSelection;\r\n // console.log(\"Color_CHANGING--->\",SelectedObjet.colorFill);\r\n // let _newObj = SelectedObjet.colorFill;\r\n /* Object.entries(_newObj).forEach(([key, value]) => {\r\n if(`${value}` === previousColor){\r\n console.log(`${key}: ${value}` , previousColor);\r\n _newObj[`${key}`] = color;\r\n }\r\n // console.log(`${key}: ${value}`)\r\n});*/\r\n // const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\r\n // popupCanvas: popupCanvas,\r\n // });\r\n\r\n // popupCanvas.setActiveObject(sel);\r\n // popupCanvas.requestRenderAll();\r\n\r\n // let objImage = SelectedObjet._objects;if(use3dddPlus.getState().popupCanv.getActiveObject()){\r\n // if(use3dddPlus.getState().popupCanv.getActiveObject()){\r\n // let objImage = use3dddPlus\r\n // .getState()\r\n // .popupCanv.getActiveObject()._objects;\r\n if(use3dddPlus.getState().loadedObject){\r\n let objImage = use3dddPlus\r\n .getState()\r\n .popupCanv.getObjects();\r\n objImage.forEach((ele) => {\r\n if(typeof ele.fill === \"string\" && ele.fill !== \"\"){\r\n const _C = (ele.fill === 'transparent' || (typeof ele.fill === 'string' && ele.fill.includes('#')) ? ele.fill : get().RGBToHex(ele.fill));\r\n if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n });\r\n }\r\n }\r\n });\r\n use3dddPlus.getState().popupCanv.renderAll();\r\n // fillColor[property] = color;\r\n Object.keys(fillColor).forEach((fc: any) => {\r\n if(fillColor[fc] === previousColor){\r\n fillColor[fc] = color;\r\n }\r\n });\r\n use3dddPlus.setState({ colorFill: fillColor });\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n },\r\n addText: () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n use3dddPlus.getState().fabricCanvas.discardActiveObject();\r\n const text: any = new fabric.Text('NEW TEXT', {\r\n lineHeight: 1,\r\n fill: '#040404',\r\n fontFamily: 'Athletic Block',\r\n fontWeight: 'normal',\r\n top: use3dddPlus.getState().fabricCanvas.height / 2 - 40,\r\n left: use3dddPlus.getState().fabricCanvas.width / 2 - 205,\r\n stroke: '#eb4034',\r\n strokeWidth: 0,\r\n paintFirst: 'stroke',\r\n //charSpacing: 0,\r\n padding: -1,\r\n fontSize: 50,\r\n name: 'text',\r\n charSpacing: 0,\r\n lockScalingFlip: true,\r\n });\r\n const fillColors = { layer0: text.fill };\r\n text.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n text.id = use3dddPlus.getState().guid();\r\n use3dddPlus.getState().fabricCanvas.centerObject(text);\r\n use3dddPlus.getState().fabricCanvas.add(text);\r\n use3dddPlus.getState().fabricCanvas.setActiveObject(text);\r\n use3dddPlus.setState({ currentSelection: 'text' });\r\n //@ts-ignore\r\n use3dddPlus.getState().deleteButtonControls(text);\r\n text.setControlsVisibility(use3dddPlus.getState().HideControls);\r\n use3dddPlus.getState().nameCounter++;\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forStoringAllObject(text); //for pushing the data into array for layers\r\n // use3dddPlus.setState({storeAllObject : });\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n text.icon = use3dddPlus.getState().iconImage;\r\n },\r\n pdfConverter :(data) => {\r\n return new Promise((_resolve, reject) => {\r\n if (data) {\r\n const reader = new FileReader();\r\n reader.onload = async () => {\r\n const buffer = reader.result;\r\n try {\r\n const _B = await get().convertPdfToImages(buffer);\r\n _resolve(_B);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n };\r\n reader.readAsArrayBuffer(data);\r\n } else {\r\n reject(new Error('No data provided.'));\r\n }\r\n });\r\n },\r\n // convertPdfToImages: async (buffer: any) => {\r\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\r\n // .promise;\r\n // const scale = 2;\r\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\r\n // const page = await pdf.getPage(pageNum);\r\n // const viewport = page.getViewport({ scale });\r\n // const canvasEl = document.createElement('canvas');\r\n // canvasEl.width = viewport.width;\r\n // canvasEl.height = viewport.height;\r\n // const context = canvasEl.getContext('2d');\r\n // await page.render({\r\n // canvasContext: context,\r\n // viewport,\r\n // background: 'rgba(0,0,0,0)',\r\n // }).promise;\r\n // const imageUrl = canvasEl.toDataURL();\r\n // return imageUrl;\r\n // }\r\n // return null;\r\n // },\r\n convertPdfToImages: async (file) => {\r\n const pdf = await pdfjsLib.getDocument(file).promise;\r\n const canvas = document.createElement(\"canvas\");\r\n if(pdf.numPages >= 0){\r\n const page = await pdf.getPage(1);\r\n const viewport = page.getViewport({ scale: 1 });\r\n const context = canvas.getContext(\"2d\");\r\n canvas.height = viewport.height;\r\n canvas.width = viewport.width;\r\n await page.render({ canvasContext: context, viewport: viewport }).promise;\r\n }\r\n const imageUrl = canvas.toDataURL();\r\n return imageUrl;\r\n }\r\n };\r\n};\r\nexport default ConverterSlice;\r\n","import { create, StateCreator } from 'zustand';\r\nimport {\r\n // createJSONStorage,\r\n // persist,\r\n subscribeWithSelector,\r\n} from 'zustand/middleware';\r\nimport actionSlice, { ActionSlice } from './actions';\r\nimport lambdaSlice, { LambdaSlice } from './lambda/index';\r\nimport SaveDesignSlice, { saveDesignSlice } from './saveDesign';\r\nimport AuthSlice, { authSlice } from './auth';\r\nimport HistorySlice, { historySlice } from './history';\r\nimport FabricSlice, { fabricSlice } from './fabric';\r\nimport ConverterSlice, { converterSlice} from './converters';\r\nexport type ThreedddPlus = \r\n ActionSlice &\r\n LambdaSlice &\r\n SaveDesignSlice &\r\n AuthSlice &\r\n HistorySlice &\r\n ConverterSlice &\r\n FabricSlice;\r\n\r\nexport const threedddPlusState: StateCreator<ThreedddPlus> = (...args) => {\r\n return {\r\n ...actionSlice(...args),\r\n ...lambdaSlice(...args),\r\n ...saveDesignSlice(...args),\r\n ...authSlice(...args),\r\n ...historySlice(...args),\r\n ...converterSlice(...args),\r\n ...fabricSlice(...args)\r\n };\r\n};\r\n\r\nexport const use3dddPlus = create(\r\n // persist(\r\n subscribeWithSelector<ThreedddPlus>(threedddPlusState)\r\n // , {\r\n // name: 'editor-store', // unique name\r\n // storage: createJSONStorage(() => sessionStorage), // (optional) by default, 'localStorage' is used\r\n // }\r\n // )\r\n);\r\n\r\n(window as any).datasbase = use3dddPlus;\r\n","import React from \"react\";\r\n\r\nexport const Button = ({ label, icons, onClick, className, children }) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex rounded-none gap-3 w-full items-center p-2 m-2 ${className}`}\r\n >\r\n {icons}\r\n {label}\r\n {children}\r\n </button>\r\n );\r\n};\r\n","export const PRIMARY_COLOR = 'text-[#cf132b]'; //rgb(30 58 138);\r\nexport const SECONDARY_COLOR = 'text-[#e11a38]'; //rgb(156 163 175);\r\nexport const BORDER_COLOR = 'border-[#e0e0e0]'; //rgb(156 163 175)\r\nexport const BORDER_COLOR_1 = 'border-[#ecebed]';\r\nexport const BORDER_COLOR_2 = 'border-[#c2c2c2]';\r\nexport const BORDER_COLOR_3 = 'border-[#e11a38]';\r\nexport const SIDEBAR_BG_COLOR = 'bg-[#f7f7f7]';\r\nexport const SELECT_BG_COLOR = 'bg-[#e11a38]'; //rgb(203 213 225)\r\nexport const BG_COLOR_1 = 'bg-[#e11a38]'; //rgb(203 213 225)\r\nexport const SELECT_TEXT_COLOR = 'text-white'\r\nexport const TEXT_SIZE_1 = 'text-xs'; //font-size: 12px (0.75rem)\r\nexport const TEXT_SIZE_2 = 'text-2xl'; //font-size: 24px; (1.5rem)\r\nexport const TEXT_SIZE_3 = 'text-[15px]';\r\nexport const TEXT_SIZE_4 = 'text-[17px]';\r\nexport const TEXT_SIZE_5 = 'text-[28px]';\r\nexport const TEXT_SIZE_6 = 'text-[14px]';\r\nexport const TEXT_SIZE_7 = 'text-[30px]';\r\nexport const TEXT_SIZE_8 = 'text-[21px]';\r\nexport const TEXT_SIZE_9 = 'text-[13px]';\r\nexport const TEXT_SIZE_11 = 'text-[18px]';\r\nexport const TEXT_SIZE_12 = 'text-[11px]';\r\nexport const TEXT_SIZE_13 = 'text-[12px]';\r\nexport const TEXT_SIZE_14 = 'text-[16px]';\r\nexport const TEXT_SIZE_15 = 'text-[25px]';\r\nexport const TEXT_SIZE_16 = 'text-[26px]';\r\nexport const TEXT_SIZE_17 = 'text-[22px]';\r\nexport const TEXT_SIZE_18 = 'text-[16px]';\r\nexport const ACTIVE_BG_COLOR = 'bg-[#cf132b]'; //rgb(30 58 138);\r\nexport const BUTTON_TEXT_COLOR = 'text-white';\r\nexport const BUTTON_BG_COLOR = 'bg-black'; //rgb(0 0 0)\r\nexport const INPUT_BG_COLOR = 'bg-white';\r\nexport const TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const BACKDROP_BLUR = 'backdrop-blur-[45px]';\r\nexport const BACKDROP_BLUR_BG_COLOR = 'bg-[#00000046]';\r\nexport const MODAL_BG_COLOR = 'bg-[#ffffff]';\r\nexport const CARD_BG_COLOR = 'bg-white'; //rgb(255 255 255)\r\nexport const INPUT_TEXT_DISABLE_COLOR = 'text-slate-300'\r\nexport const CHECKBOX_CHECKED_COLOR = '#e11a38'\r\nexport const LOAD_DESIGN_BORDER_COLOR = '#e0e0e0'\r\nexport const LOAD_DESIGN_TEXT_COLOR = 'text-[#e11a38]';\r\nexport const SEARCH_ICON_COLOR = 'text-[#727272]'\r\nexport const SEARCHBAR_BORDER_COLOR = 'border-[#bebebe]'\r\nexport const MY_DESIGN_TEXT_COLOR = 'text-[#353535]'\r\nexport const SEARCH_TEXT_COLOR = 'text-[#353535]'\r\nexport const NO_SEARCHRESULT_TEXT_COLOR_1 = 'text-[#727272]'\r\nexport const NO_SEARCHRESULT_TEXT_COLOR_2 = 'text-[#5d5d5d]'\r\nexport const CANVAS_MENU_TEXT = 'text-[#353535]';\r\nexport const CANVAS_MENU_BORDER = 'border-[#f4f4f4]';\r\nexport const CANVAS_MENU_BG_COLOR = 'bg-white';\r\nexport const CANVAS_MENU_DROPDOWN_BG_COLOR = 'bg-white';\r\nexport const DECORATION_BG_COLOR = 'bg-[#F1F1F1]'\r\nexport const DROPDOWN_BACKGROUND_COLOR = 'bg-[#FCE8EB]'\r\nexport const TAG_BG_COLOR = 'bg-[#FCE8EB]'\r\nexport const TAG_TEXT_COLOR = 'text-[#e11a38]'\r\nexport const CARD_LAST_UPDATE_COLOR = 'text-[#727272]'\r\nexport const CARD_DOWNLAOD_ICON_COLOR = 'text-[#353535]'\r\nexport const CARD_DESCRIPTION_COLOR = 'text-[#353535]'\r\nexport const FOOTER_TEXT_COLOR = 'text-[#ffffff]'\r\nexport const FOOTER_RACK_BG_COLOR = 'bg-[#E21938]'\r\nexport const FOOTER_PRICE_COLOR = 'text-[#353535]'\r\nexport const FOOTER_RACK_COUNT_COLOR = 'text-[#E21938]'\r\nexport const FOOTER_ROSTER_COLOR = 'text-[#353535]'\r\nexport const FOOTER_ROSTER_BORDER_COLOR = 'border-[#353535]'\r\nexport const FOOTER_SUMMARY_BG_COLOR = 'bg-[#353535]'\r\nexport const FOOTER_SUMMARY_TEXT_COLOR = 'text-white'\r\nexport const CONFIRMDESIGN_DISCARD_BORDER_COLOR = 'border-[#707070]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_2 = 'text-[#E11A38]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_3 = 'text-[#353535]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_4 = 'text-[#ffffff]';\r\nexport const CONFIRMDESIGN_SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]';\r\nexport const DESIGNSUCCESS_CLOSE_BORDER_COLOR = 'border-[#707070]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_2 = 'text-[#E21938]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_3 = 'text-[#353535]';\r\n\r\nexport const SAVERACK_BORDER_COLOR = 'border-[#707070]'\r\nexport const SAVERACK_TEXT_COLOR = 'text-[#707070]'\r\nexport const SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]'\r\nexport const TOASTER_SUCCESS_BG_COLOR = 'bg-[#D5F2EA]'\r\nexport const TOASTER_FAILURE_BG_COLOR = 'bg-[#FCE8EB]'\r\nexport const TOASTER_INFO_BG_COLOR = 'bg-[#D5E9FA]'\r\nexport const TOASTER_WARNING_BG_COLOR = 'bg-[#FFF8E7]'\r\nexport const RESET_BUTTON_BG_COLOR = 'text-[#9A9A9A]'\r\nexport const PRODUCTINFO_TEXT_COLOR_1 = 'text-[#353535]'\r\nexport const PRODUCTINFO_TEXT_COLOR_2 = 'text-[#c2c2c2]'\r\nexport const PRODUCTINFO_TEXT_COLOR_3 = 'text-[#e11a38]'\r\nexport const PRODUCTINFO_TEXT_COLOR_4 = 'text-[#5d5d5d]'\r\nexport const UPDATESUCCESS_RACK_BORDER_COLOR = 'border-[#E11938]';\r\nexport const UPDATESUCCESS_TEXT_COLOR_1 = 'text-[#E11938]';\r\nexport const RACK_CARD_BORDER_COLOR = 'border-[#e5e5e5]';\r\nexport const RACK_CARD_TEXT_COLOR_1 = 'text-[#E11A38]';\r\nexport const RACK_CARD_TEXT_COLOR_2 = 'text-[#353535]';\r\nexport const RACK_CARD_TEXT_COLOR_3 = 'text-[#9f9f9f]';\r\nexport const RACK_CARD_MENU_TEXT = 'text-[#353535]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_1 = 'text-[#E11A38]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_2 = 'text-[#727272]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_3 = 'text-[#353535]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_4 = 'text-[#ffffff]';\r\nexport const EDIT_DESIGN_INFO_INPUT_BORDER_COLOR = 'border-[#ECEBED]';\r\nexport const EDIT_DESIGN_INFO_DISABLED_BG_COLOR_1 = 'bg-[#F8F8F8]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_2 = 'bg-[#ffffff]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_3 = 'bg-[#e11a38]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_4 = 'bg-[#fce8eb]';\r\nexport const INPUT_ERROR_BORDER_COLOR = 'border-[#E11A38]';\r\nexport const INPUT_ERROR_TEXT_COLOR = 'text-[#E11A38]';\r\nexport const PRICEBREAKUP_TEXT_COLOR_1 = 'text-[#353535]';\r\nexport const PRICEBREAKUP_TEXT_COLOR_2 = 'text-[#747474]';\r\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_1 = 'border-[#c2c2c2]';\r\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_2 = 'border-[#ebebeb]';","import React from 'react';\r\nimport { Tooltip, TooltipReference, useTooltipState } from 'reakit';\r\n\r\ninterface ToolTipProps {\r\n label: string;\r\n arrowOnTop?: boolean;\r\n className?: string;\r\n children: React.ReactNode | React.ReactNode[];\r\n}\r\nexport const ToolTip = ({\r\n label,\r\n arrowOnTop,\r\n className = '',\r\n children,\r\n}: ToolTipProps) => {\r\n const tooltip = useTooltipState({ placement: arrowOnTop ? 'bottom' : 'top' });\r\n return (\r\n <>\r\n <TooltipReference\r\n {...tooltip}\r\n className={`${className} flex relative items-center justify-center align-middle w-auto text-sm font-semibold first:rounded-l last:rounded-r focus:outline-none`}\r\n aria-label={label}\r\n >\r\n {children}\r\n </TooltipReference>\r\n {\r\n //@ts-ignore\r\n // <div className={styles}>\r\n <Tooltip\r\n {...tooltip}\r\n // className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before: ${SELECT_BG_COLOR} top-[-21%] before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[230deg] before:border before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:rounded-none before:border-t-transparent before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af] `\r\n className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[44deg] before:border ${\r\n arrowOnTop\r\n ? 'before:top-[-21%] before:border-l-[#f3a2af] before:border-t-[#f3a2af] before:border-b-transparent before:border-r-transparent'\r\n : 'before:top-[80%] before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:border-t-transparent'\r\n } before:rounded-none before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af]`}\r\n style={{ zIndex: 3 }}\r\n >\r\n {label}{' '}\r\n </Tooltip>\r\n // </div>\r\n }\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { CANVAS_MENU_TEXT } from '../../theme';\r\nimport { Copy, Delete, IconButton, SelectAll } from '../icon';\r\nimport { MdLayers } from 'react-icons/md';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport { CgRedo, CgUndo } from 'react-icons/cg';\r\nimport { ToolTip } from '../toolTip';\r\nconst ActionButtons = () => {\r\n const [canvas, activeSelection] = use3dddPlus(\r\n (state) => [state.fabricCanvas, state.activeSelection],\r\n shallow\r\n );\r\n const selectAllHandler = () => {\r\n canvas.discardActiveObject();\r\n const sel = new fabric.ActiveSelection(\r\n canvas.getObjects().filter((obj) => obj.type !== 'line'),\r\n {\r\n canvas: canvas,\r\n }\r\n );\r\n canvas.setActiveObject(sel);\r\n canvas.requestRenderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({ selectedAll: true });\r\n use3dddPlus.setState({ currentSelection: 'selectAll' });\r\n const fillColors = {};\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n };\r\n const deleteHandler = () => {\r\n if (activeSelection) {\r\n if (activeSelection.icon) {\r\n canvas.remove(activeSelection);\r\n removeItem(activeSelection);\r\n } else if (activeSelection._objects) {\r\n activeSelection._objects.map((obj) => {\r\n canvas.remove(obj);\r\n removeItem(obj);\r\n });\r\n }\r\n // canvas.remove(activeSelection);\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.requestRenderAll();\r\n use3dddPlus.setState({ selectedAll: false });\r\n canvas.discardActiveObject();\r\n // removeItem(activeSelection);\r\n }\r\n };\r\n const removeItem = (value: any) => {\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(value);\r\n // @ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index === -1 && value && value._objects && value._objects.length > 0) {\r\n var index = use3dddPlus\r\n .getState()\r\n //@ts-ignore\r\n .storeAllObject.indexOf(value._objects[0]);\r\n }\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n };\r\n const canvasActions = [\r\n {\r\n icon: <SelectAll />,\r\n onClick: selectAllHandler,\r\n id: 'select-action',\r\n label: 'Select all',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <Copy />,\r\n onClick: () => {\r\n use3dddPlus.getState().duplicateObject();\r\n },\r\n id: 'duplicate-action',\r\n label: 'Duplicate',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <MdLayers />,\r\n onClick: () => {\r\n use3dddPlus.setState({ currentSelection: 'layer' });\r\n },\r\n id: 'layes-action',\r\n label: 'Layers',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <Delete />,\r\n onClick: deleteHandler,\r\n id: 'delete-action',\r\n label: 'Delete',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <CgUndo />,\r\n onClick: () => {\r\n use3dddPlus.getState().undo();\r\n },\r\n id: 'undo-action',\r\n label: 'Undo',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <CgRedo />,\r\n onClick: () => {\r\n use3dddPlus.getState().redo();\r\n },\r\n id: 'redo-action',\r\n label: 'Redo',\r\n disabled: false,\r\n visible: true,\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <div\r\n className=\"w-100 flex px-3 items-center z-10 h-[40px]\"\r\n style={{\r\n justifyContent: 'flex-end',\r\n }}\r\n >\r\n <div className={`flex`}>\r\n {canvasActions.map(\r\n (item) =>\r\n item?.visible && (\r\n <div\r\n key={item.id}\r\n className={`${\r\n item.disabled\r\n ? 'disableButton'\r\n : `${CANVAS_MENU_TEXT} cursor-pointer hover:text-[#e11a38] hover:underline hover:underline-offset-4 hover:decoration-2`\r\n } flex gap-[5px] items-center pt-[2.5px] font-bold uppercase mr-[30px] lg:mr-[30px] md-[20px] `}\r\n onClick={item.onClick}\r\n >\r\n <ToolTip label={item.label} arrowOnTop={true}>\r\n <span>\r\n <IconButton\r\n label=\"\"\r\n icon={item.icon}\r\n className={`${\r\n item.disabled\r\n ? 'iconDisable'\r\n : 'pointer-events-auto cursor-pointer'\r\n } m-auto`}\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n </span>\r\n </ToolTip>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ActionButtons;\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\n// import { CANVAS_MENU_TEXT } from '../../theme';\r\n// import { Copy, Delete, IconButton, SelectAll } from '../icon';\r\n// import { MdLayers } from 'react-icons/md';\r\n// import { shallow } from 'zustand/shallow';\r\n// import { fabric } from 'fabric';\r\n// import { CgRedo, CgUndo } from 'react-icons/cg';\r\nconst NudgeButtons = () => {\r\n // const [canvas, activeSelection] = use3dddPlus(\r\n // (state) => [state.fabricCanvas, state.activeSelection],\r\n // shallow\r\n // );\r\n // const selectAllHandler = () => {\r\n // canvas.discardActiveObject();\r\n // const sel = new fabric.ActiveSelection(canvas.getObjects(), {\r\n // canvas: canvas,\r\n // });\r\n // canvas.setActiveObject(sel);\r\n // canvas.requestRenderAll();\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // use3dddPlus.setState({ selectedAll: true });\r\n // use3dddPlus.setState({ currentSelection: 'selectAll' });\r\n // const fillColors = {};\r\n // use3dddPlus.setState({ colorFill: fillColors });\r\n // };\r\n // const deleteHandler = () => {\r\n // canvas.remove(activeSelection);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // canvas.requestRenderAll();\r\n // use3dddPlus.setState({ selectedAll: false });\r\n // removeItem(activeSelection);\r\n // };\r\n // const removeItem = (value: any) => {\r\n // //@ts-ignore\r\n // var index = use3dddPlus\r\n // .getState()\r\n // .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n // if (index > -1) {\r\n // use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n // }\r\n // use3dddPlus.setState({\r\n // storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n // });\r\n // };\r\n\r\n const textSelected = use3dddPlus.getState().activeSelection;\r\n // const canvas = use3dddPlus.getState().fabricCanvas;\r\n\r\n const nudgeMove = (e) => {\r\n const brNew = textSelected.getBoundingRect();\r\n if (e.target.id === 'down') {\r\n // if (textSelected.aCoords.br.y > canvas.height - 2) return;\r\n if (brNew.height + brNew.top >= textSelected.canvas.height - 10) return;\r\n use3dddPlus.getState().moveDown(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'up') {\r\n if (textSelected.aCoords.tr.y < 10) return;\r\n use3dddPlus.getState().moveUp(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'right') {\r\n // if (textSelected.aCoords.tr.x > canvas.height - 2) return;\r\n if (brNew.width + brNew.left >= textSelected.canvas.width - 45) return;\r\n use3dddPlus.getState().moveRight(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'left') {\r\n if (textSelected.aCoords.tl.x < 45) return;\r\n use3dddPlus.getState().moveLeft(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className=\"w-full flex items-center justify-center z-10\"\r\n style={{\r\n justifyContent: 'flex-center',\r\n }}\r\n >\r\n <div\r\n className=\"uppercase font-medium text-sm text-red-500 mx-5\"\r\n style={{ marginTop: '0.3rem', marginBottom: '0.3rem' }}\r\n >\r\n Nudge:\r\n </div>\r\n\r\n <button onClick={nudgeMove} id=\"left\">\r\n <div className=\"leftBtn pointer-events-none mx-5\">\r\n <div className=\"leftIcon float-left\">\r\n <svg\r\n transform=\"rotate(270)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Left\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"up\">\r\n <div className=\"upBtn pointer-events-none mx-5\">\r\n <div className=\"upIcon float-left\">\r\n <svg\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Top\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"right\">\r\n <div className=\"rightBtn pointer-events-none mx-5\">\r\n <div className=\"rightIcon float-left\">\r\n <svg\r\n transform=\"rotate(90)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Right\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"down\">\r\n <div className=\"downBtn pointer-events-none mx-5\">\r\n <div className=\"downIcon float-left\">\r\n <svg\r\n transform=\"rotate(180)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n BOTTOM\r\n </span>\r\n </div>\r\n </button>\r\n {/* <button\r\n onClick={nudgeMove}\r\n id=\"up\"\r\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\r\n >\r\n UP\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"left\"\r\n className=\"font-medium text-orange-300 text-teal-500\"\r\n >\r\n LEFT\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"right\"\r\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\r\n >\r\n RIGHT\r\n </button> */}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default NudgeButtons;\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport {\r\n Copy,\r\n IconButton,\r\n // Paste,\r\n SendAObject,\r\n SendToBack,\r\n SendToFront,\r\n SendUnderObject,\r\n FlipH,\r\n FlipV,\r\n SnapToCenter,\r\n} from '../icon';\r\n\r\nexport const ContextMenu = () => {\r\n const [activeObj, canvas] = use3dddPlus(\r\n (state) => [state.activeSelection, state.fabricCanvas],\r\n shallow\r\n );\r\n\r\n const flipX = () => {\r\n activeObj.set({\r\n flipX: !activeObj.flipX,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const flipY = () => {\r\n activeObj.set({\r\n flipY: !activeObj.flipY,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n // activeObj.\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const sendBackwards = () => {\r\n canvas.sendBackwards(activeObj);\r\n //@ts-ignore\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index + 1, 0, activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const bringForward = () => {\r\n canvas.bringForward(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n if (index !== 0) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index - 1, 0, activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const sendToBack = () => {\r\n canvas.sendToBack(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.push(activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const bringToFront = () => {\r\n canvas.bringToFront(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.unshift(activeObj);\r\n\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const snapToCenter = () => {\r\n activeObj.set({\r\n left: canvas.width / 2,\r\n originX: 'center',\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const copy = () => {\r\n use3dddPlus.getState().duplicateObject();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const menu = [\r\n {\r\n id: 1,\r\n name: 'COPY / PASTE ',\r\n onclick: copy,\r\n icon: <Copy />,\r\n },\r\n // {\r\n // id: 2,\r\n // name: 'Paste',\r\n // onclick: copy,\r\n // icon: <Paste />,\r\n // },\r\n {\r\n id: 3,\r\n name: 'Bring to front',\r\n onclick: bringForward,\r\n icon: <SendToFront />,\r\n },\r\n {\r\n id: 4,\r\n name: 'Send to back',\r\n onclick: sendBackwards,\r\n icon: <SendToBack />,\r\n },\r\n {\r\n id: 5,\r\n name: 'Bring above objects',\r\n onclick: bringToFront,\r\n icon: <SendAObject />,\r\n },\r\n {\r\n id: 6,\r\n name: 'Send under objects',\r\n onclick: sendToBack,\r\n icon: <SendUnderObject />,\r\n },\r\n {\r\n id: 7,\r\n name: 'Flip Horizontal',\r\n onclick: flipX,\r\n icon: <FlipH />,\r\n },\r\n {\r\n id: 8,\r\n name: 'Flip Vertical',\r\n onclick: flipY,\r\n icon: <FlipV />,\r\n },\r\n {\r\n id: 9,\r\n name: 'Snap to center',\r\n onclick: snapToCenter,\r\n icon: <SnapToCenter />,\r\n },\r\n ];\r\n return (\r\n <ul>\r\n {menu.map((item, index) => {\r\n return (\r\n <li\r\n className=\"flex cursor-pointer hover:text-[#e11a38] border border-b-[1px] border-[#EBEBEB] px-[30px] py-[14px] \"\r\n onClick={item.onclick}\r\n key={index}\r\n >\r\n <span>\r\n <IconButton\r\n label=\"\"\r\n icon={item.icon}\r\n className=\"pointer-events-auto cursor-pointer m-auto\"\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n </span>\r\n <span className=\" pl-[20px] text-sm font-bold uppercase\">\r\n {item.name}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n};\r\n","import React, { useRef } from 'react';\r\nimport './canvas.css';\r\nimport { use3dddPlus } from '../../store';\r\nimport ActionButtons from './canvasButtons'; //Importing Action button component which is displaying buttons\r\nimport NudgeButtons from './nudgeButtons'; //Importing Nudge button component which is displaying buttons\r\n// import ErrorPopup from './errorPopUp'; //Importing ErrorPopup Panel component which is displaying buttons\r\nimport { initCanvas } from '../../store/fabric/fabricCanvas';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { ContextMenu } from '../contextMenu';\r\nimport { fabric } from 'fabric';\r\n\r\nconst canvas = () => {\r\n const [contextMenuCoordinates, showContextMenu] = use3dddPlus(\r\n (state) => [\r\n state.contextMenuCoordinates,\r\n state.showContextMenu,\r\n state.allColor,\r\n ],\r\n shallow\r\n );\r\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\r\n const resizeCanvas = () => {\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n if (document.getElementById('fabCanvas')) {\r\n const outerCanvasContainer = document.getElementById('fabCanvas');\r\n const containerWidth = outerCanvasContainer.clientWidth;\r\n const scale = containerWidth / canvas.getWidth();\r\n const zoom = canvas.getZoom() * scale;\r\n canvas.setWidth(containerWidth);\r\n //@ts-ignore\r\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\r\n console.log('--->', canvas.getHeight(), canvas.getHeight());\r\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\r\n canvas.renderAll();\r\n }\r\n };\r\n React.useEffect(() => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n const canv = initCanvas();\r\n use3dddPlus.setState({ fabricCanvas: canv });\r\n resizeCanvas();\r\n window.addEventListener('resize', resizeCanvas);\r\n const fontFamilyURL =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/athletic.ttf';\r\n const font = new FontFace('Athletic Block', `url('${fontFamilyURL}')`);\r\n font.load().then((value) => {\r\n //@ts-ignore\r\n document.fonts?.add(value);\r\n document.body.classList.add('fonts-loaded');\r\n });\r\n }, []);\r\n\r\n return (\r\n <div className=\" w-full h-full relative\">\r\n <ActionButtons />\r\n <div\r\n id=\"fabCanvas\"\r\n className=\"bg-[#ffffff]\"\r\n style={{ height: 'calc(100% - 71px)' }}\r\n >\r\n <canvas ref={canvasRef} id=\"canvas\"></canvas>\r\n {showContextMenu && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n zIndex: 1000,\r\n left: contextMenuCoordinates.x - 270,\r\n top: contextMenuCoordinates.y + 55,\r\n backgroundColor: 'white',\r\n border: '1px solid #ccc',\r\n boxShadow: '2px 2px 5px rgba(0,0,0,0.5)',\r\n }}\r\n onBlur={() => {\r\n use3dddPlus.setState({ showContextMenu: false });\r\n }}\r\n >\r\n <ContextMenu />\r\n </div>\r\n )}\r\n </div>\r\n {/* {allColor && allColor.includes('transparent')\r\n ? allColor.length - 1 > 8\r\n : allColor.length > 8 && <ErrorPopup allColor={allColor} />} */}\r\n <NudgeButtons />\r\n </div>\r\n );\r\n};\r\n\r\nexport default canvas;\r\n","import { fabric } from 'fabric';\r\n//@ts-ignore\r\n// import deleteIcon from '../../assets/images/delete.png';\r\n// //@ts-ignore\r\n// import rotateIcon from '../../assets/images/rotate.png';\r\n// //@ts-ignore\r\n// import settingIcon from '../../assets/images/settings.png';\r\nimport { use3dddPlus } from '..';\r\n\r\nexport const initCanvas = () => {\r\n let left1 = 0;\r\n let top1 = 0;\r\n let scale1x = 0;\r\n let scale1y = 0;\r\n let width1 = 0;\r\n let height1 = 0;\r\n\r\n const onObjectSelected = (e) => {\r\n if (e?.selected?.[0]?.colorFill) {\r\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\r\n }\r\n use3dddPlus.setState({\r\n currentSelection: canv.getActiveObject().get('type'),\r\n });\r\n use3dddPlus.setState({ activeSelection: canv.getActiveObject() });\r\n // canv.getActiveObject().viewportCenter();\r\n getAllColors();\r\n };\r\n const onObjectDeselected = () => {\r\n use3dddPlus.setState({ activeSelection: null });\r\n use3dddPlus.setState({ currentSelection: 'none' });\r\n use3dddPlus.setState({ showContextMenu: false });\r\n getAllColors();\r\n };\r\n const onObjectUpdated = (e) => {\r\n // use3dddPlus.setState({colorFill : \"\"})\r\n if (e?.selected?.[0]?.colorFill) {\r\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\r\n }\r\n use3dddPlus.setState({\r\n currentSelection: canv.getActiveObject().get('type'),\r\n });\r\n use3dddPlus.setState({ activeSelection: e.selected[0] });\r\n use3dddPlus.setState({ textInfo: e.selected[0].text });\r\n use3dddPlus.setState({ showContextMenu: false });\r\n getAllColors();\r\n };\r\n const onObjectMoving = (e: any) => {\r\n use3dddPlus.getState().updateModifaction(false);\r\n const obj = e.target;\r\n\r\n if (isNaN(e.pointer.x) || isNaN(e.pointer.y)) {\r\n obj.set({\r\n top: use3dddPlus.getState().lastPosition.top,\r\n left: use3dddPlus.getState().lastPosition.left,\r\n });\r\n return;\r\n }\r\n // if (\r\n // obj.getBoundingRect().width > obj.canvas.height ||\r\n // obj.getBoundingRect().height > obj.canvas.width\r\n // ) {\r\n // return;\r\n // }\r\n\r\n obj.setCoords();\r\n if (obj.getBoundingRect().top < 10 || obj.getBoundingRect().left < 45) {\r\n obj.top = Math.max(obj.top, obj.top - obj.getBoundingRect().top + 10);\r\n obj.left = Math.max(obj.left, obj.left - obj.getBoundingRect().left + 45);\r\n obj.setCoords();\r\n }\r\n if (\r\n obj.getBoundingRect().top + obj.getBoundingRect().height + 10 >\r\n obj.canvas.height ||\r\n obj.getBoundingRect().left + obj.getBoundingRect().width + 45 >\r\n obj.canvas.width\r\n ) {\r\n obj.top = Math.min(\r\n obj.top,\r\n obj.canvas.height -\r\n obj.getBoundingRect().height +\r\n obj.top -\r\n obj.getBoundingRect().top -\r\n 10\r\n );\r\n obj.left = Math.min(\r\n obj.left,\r\n obj.canvas.width -\r\n obj.getBoundingRect().width +\r\n obj.left -\r\n obj.getBoundingRect().left -\r\n 45\r\n );\r\n obj.setCoords();\r\n }\r\n\r\n const brNew = obj.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= obj.canvas.width ||\r\n brNew.height + brNew.top + 10 >= obj.canvas.height ||\r\n brNew.left < 45 ||\r\n brNew.top < 10\r\n ) {\r\n // obj.left = left1;\r\n // obj.top = top1;\r\n // obj.scaleX = scale1x;\r\n // obj.scaleY = scale1y;\r\n // obj.width = width1;\r\n // obj.height = height1;\r\n } else {\r\n left1 = obj.left;\r\n top1 = obj.top;\r\n scale1x = obj.scaleX;\r\n scale1y = obj.scaleY;\r\n width1 = obj.width;\r\n height1 = obj.height;\r\n }\r\n\r\n if (isObjectInCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInHorizontalCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInVerticalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n\r\n use3dddPlus.getState().setLastPosition({ top: obj.top, left: obj.left });\r\n };\r\n\r\n const outerCanvasContainer = document.getElementById('fabCanvas');\r\n\r\n const canv = new fabric.Canvas('canvas', {\r\n centeredScaling: true,\r\n preserveObjectStacking: true,\r\n // backgroundColor: '#ffff00',\r\n stopContextMenu: false,\r\n // width: 500,\r\n // height: 300,\r\n\r\n width: outerCanvasContainer.clientWidth,\r\n height: outerCanvasContainer.clientHeight,\r\n });\r\n\r\n function isObjectInCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterX = canv.width / 2;\r\n var canvasCenterY = canv.height / 2;\r\n var objCenterX = brNew.left + brNew.width / 2;\r\n var objCenterY = brNew.top + brNew.height / 2;\r\n var threshold = 5;\r\n return (\r\n Math.abs(objCenterY - canvasCenterY) < threshold &&\r\n Math.abs(objCenterX - canvasCenterX) < threshold\r\n );\r\n }\r\n\r\n function isObjectInVerticalCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterY = canv.getHeight() / 2;\r\n var scaledObjCenterY = brNew.top + brNew.height / 2;\r\n var threshold = 5;\r\n return Math.abs(scaledObjCenterY - canvasCenterY) < threshold;\r\n }\r\n\r\n function isObjectInHorizontalCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterX = canv.width / 2;\r\n var scaledObjCenterX = brNew.left + brNew.width / 2;\r\n var threshold = 5;\r\n return Math.abs(scaledObjCenterX - canvasCenterX) < threshold;\r\n }\r\n const horizontalLine = new fabric.Line(\r\n [0, canv.height / 2, canv.height, canv.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canv.width / 2, 0, canv.width / 2, canv.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canv.add(horizontalLine);\r\n canv.add(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n // console.log('HISTORY-->',historyInit());\r\n let deleteImg = document.createElement('img');\r\n deleteImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/delete.png';\r\n let rotateImg = document.createElement('img');\r\n rotateImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/rotate.png';\r\n let settingImg = document.createElement('img');\r\n settingImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/settings.png';\r\n fabric.Object.prototype.objectCaching = true;\r\n fabric.Object.prototype.transparentCorners = false;\r\n fabric.Object.prototype.cornerColor = '#14caf7';\r\n fabric.Object.prototype.cornerStrokeColor = '#045791';\r\n fabric.Object.prototype.borderColor = '#14caf7';\r\n fabric.Object.prototype.cornerSize = 16;\r\n // fabric.Object.prototype.padding = 10;\r\n fabric.Object.prototype.cornerStyle = 'circle';\r\n fabric.Object.prototype.borderDashArray = [5, 5];\r\n\r\n function renderIcon(icon) {\r\n return function renderIcon(ctx, left, top, fabricObject) {\r\n var size = this.cornerSize;\r\n ctx.save();\r\n ctx.translate(left, top);\r\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\r\n ctx.drawImage(icon, -size / 2, -size / 2, size, size);\r\n ctx.restore();\r\n };\r\n }\r\n\r\n fabric.Object.prototype.controls.deleteControl = new fabric.Control({\r\n x: 0.53,\r\n y: -0.53,\r\n offsetY: -16,\r\n offsetX: 16,\r\n cursorStyle: 'pointer',\r\n //@ts-ignore\r\n mouseUpHandler: deleteObject,\r\n render: renderIcon(deleteImg),\r\n cornerSize: 28,\r\n });\r\n fabric.Object.prototype.controls.settingControl = new fabric.Control({\r\n x: -0.53,\r\n y: -0.53,\r\n offsetY: -16,\r\n offsetX: -16,\r\n cursorStyle: 'pointer',\r\n //@ts-ignore\r\n mouseUpHandler: function (e) {\r\n use3dddPlus.setState({\r\n showContextMenu: true,\r\n });\r\n\r\n const rect = canv.getElement().getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n // You can add your context menu rendering logic here\r\n // Example: Render a simple alert with the coordinates\r\n use3dddPlus.setState({ contextMenuCoordinates: { x: x, y: y } });\r\n // alert(`Context menu clicked at (${x}, ${y})`);\r\n },\r\n render: renderIcon(settingImg),\r\n cornerSize: 28,\r\n });\r\n //@ts-ignore\r\n function deleteObject(eventData, transform) {\r\n const canvasTarget = transform.target;\r\n const canvas = canvasTarget.canvas;\r\n // if (use3dddPlus.getState().selectedAll || canvasTarget && !canvasTarget.icon) {\r\n // const target = transform.target._objects;\r\n // target.forEach((element) => {\r\n // canvas.remove(element);\r\n // canvas.requestRenderAll();\r\n // removeItem(element);\r\n // });\r\n // use3dddPlus.setState({ selectedAll: false });\r\n // canvas.discardActiveObject().renderAll();\r\n // } else {\r\n // canvas.remove(canvasTarget);\r\n // canvas.requestRenderAll();\r\n // removeItem(canvasTarget);\r\n // }\r\n // use3dddPlus.setState({ defaultColorFill: [] });\r\n const activeSelection = use3dddPlus.getState().activeSelection;\r\n if (activeSelection) {\r\n if (activeSelection.icon) {\r\n canvas.remove(activeSelection);\r\n removeItem(activeSelection);\r\n } else if (activeSelection._objects) {\r\n activeSelection._objects.map((obj) => {\r\n canvas.remove(obj);\r\n removeItem(obj);\r\n });\r\n }\r\n // canvas.remove(activeSelection);\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.requestRenderAll();\r\n use3dddPlus.setState({ selectedAll: false });\r\n canvas.discardActiveObject();\r\n // removeItem(activeSelection);\r\n }\r\n }\r\n const removeItem = (value: any) => {\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index === -1 && value && value._objects && value._objects.length > 0) {\r\n var index = use3dddPlus\r\n .getState()\r\n //@ts-ignore\r\n\r\n .storeAllObject.indexOf(value._objects[0]);\r\n }\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n };\r\n\r\n fabric.Object.prototype.controls.mtr = new fabric.Control({\r\n x: 0,\r\n y: -0.5,\r\n offsetY: -40,\r\n cursorStyle: 'crosshair',\r\n //@ts-ignore\r\n actionHandler: fabric?.controlsUtils.rotationWithSnapping,\r\n actionName: 'rotate',\r\n // mouseover:function hover(eventData,transform){\r\n // let target = transform.target;\r\n // console.log('TARGET-->',target);\r\n // },\r\n render: function renderIcon(ctx, left, top, fabricObject) {\r\n var size = this.cornerSize;\r\n ctx.save();\r\n ctx.translate(left, top);\r\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\r\n ctx.drawImage(rotateImg, -size / 2, -size / 2, size, size);\r\n ctx.restore();\r\n },\r\n //@ts-ignore\r\n cornerSize: 28,\r\n withConnection: true,\r\n });\r\n const getAllColors = () => {\r\n // console.log(\"+++++\",canv?.getObjects());\r\n if (!canv?.getObjects()) {\r\n return;\r\n }\r\n // const allColor = [\r\n // ...new Set(\r\n // canv\r\n // ?.getObjects()\r\n // ?.map((item) => Object.values(item['colorFill']))\r\n // .flat()\r\n // ),\r\n // ];\r\n const allColor = [];\r\n canv\r\n ?.getObjects()\r\n ?.map((item) => item['colorFill'] && Object.values(item['colorFill']))\r\n .flat()\r\n .filter(Boolean)\r\n .forEach((color) => {\r\n if (!allColor.includes(color)) {\r\n allColor.push(color);\r\n }\r\n }); // FOR REMOVING ALL DUPLICATE COLOR CODES\r\n // const allColor =[];\r\n use3dddPlus.setState({ allColor: allColor });\r\n };\r\n canv.on('after:render', getAllColors);\r\n canv.on('selection:created', onObjectSelected);\r\n canv.on('selection:cleared', onObjectDeselected);\r\n canv.on('selection:updated', onObjectUpdated);\r\n canv.on('object:moving', onObjectMoving);\r\n canv.on('object:modified', function (e) {\r\n e.target.lockRotation = false;\r\n use3dddPlus.getState().updateModifaction(true);\r\n if (isObjectInCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInHorizontalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n if (isObjectInVerticalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n });\r\n\r\n canv.on('object:scaling', (e) => {\r\n const obj = e.target;\r\n obj.setCoords();\r\n const brNew = obj.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= obj.canvas.width ||\r\n brNew.height + brNew.top + 10 >= obj.canvas.height ||\r\n brNew.left < 45 ||\r\n brNew.top < 10\r\n ) {\r\n obj.left = left1;\r\n obj.top = top1;\r\n obj.scaleX = scale1x;\r\n obj.scaleY = scale1y;\r\n obj.width = width1;\r\n obj.height = height1;\r\n } else {\r\n left1 = obj.left;\r\n top1 = obj.top;\r\n scale1x = obj.scaleX;\r\n scale1y = obj.scaleY;\r\n width1 = obj.width;\r\n height1 = obj.height;\r\n }\r\n });\r\n canv.on('object:rotating', function (e) {\r\n const obj = e.target;\r\n let brNew = obj.getBoundingRect();\r\n if (obj.getBoundingRect().top - 45 < 0 || obj.getBoundingRect().left < 45) {\r\n obj.top = Math.max(obj.top, obj.top - obj.getBoundingRect().top + 45);\r\n obj.left = Math.max(obj.left, obj.left - obj.getBoundingRect().left + 45);\r\n obj.setCoords();\r\n }\r\n if (\r\n obj.getBoundingRect().top + 45 + obj.getBoundingRect().height >\r\n obj.canvas.height ||\r\n obj.getBoundingRect().left + 45 + obj.getBoundingRect().width >\r\n obj.canvas.width\r\n ) {\r\n if (\r\n obj.getBoundingRect().top - 45 < 0 ||\r\n obj.getBoundingRect().left - 45 < 0\r\n ) {\r\n obj.lockRotation = true;\r\n brNew = obj.getBoundingRect();\r\n while (\r\n Math.ceil(obj.width + obj.left + 45) >\r\n Math.floor(obj.canvas.width - 45) ||\r\n Math.ceil(obj.height + obj.top + 45) >\r\n Math.floor(obj.canvas.height - 45) ||\r\n Math.ceil(obj.left) < 0 ||\r\n Math.ceil(obj.top) < 0\r\n ) {\r\n obj.centeredRotation = true;\r\n if (obj.angle >= 0 && obj.angle <= 180) {\r\n obj.set('angle', obj.angle - 1);\r\n if (Math.ceil(brNew.top) < 45) {\r\n obj.set('top', obj.top + 4);\r\n }\r\n if (Math.ceil(brNew.left) < 45) {\r\n obj.set('left', obj.left + 4);\r\n }\r\n if (\r\n Math.ceil(brNew.width + brNew.left + 45) >\r\n Math.floor(obj.canvas.width - 45)\r\n ) {\r\n obj.set('left', brNew.left - 1);\r\n }\r\n if (\r\n Math.ceil(brNew.height + brNew.top + 45) >\r\n Math.floor(obj.canvas.height - 45)\r\n ) {\r\n obj.set('top', obj.top - 4);\r\n }\r\n } else {\r\n obj.set('angle', obj.angle + 1);\r\n if (Math.ceil(brNew.top) < 45) {\r\n obj.set('top', obj.top + 4);\r\n }\r\n if (Math.ceil(brNew.left) < 45) {\r\n obj.set('left', obj.left - 4);\r\n }\r\n if (\r\n Math.ceil(brNew.width + brNew.left + 45) >\r\n Math.floor(obj.canvas.width - 45)\r\n ) {\r\n obj.set('angle', obj.angle - 1);\r\n obj.set('left', obj.left - 1);\r\n }\r\n if (\r\n Math.ceil(obj.height + obj.top + 45) >\r\n Math.floor(obj.canvas.height - 45)\r\n ) {\r\n obj.set('top', obj.top - 4);\r\n }\r\n }\r\n canv.renderAll();\r\n brNew = obj.getBoundingRect();\r\n }\r\n } else {\r\n obj.top = Math.min(\r\n obj.top,\r\n obj.canvas.height -\r\n obj.getBoundingRect().height +\r\n obj.top -\r\n obj.getBoundingRect().top -\r\n 45\r\n );\r\n obj.left = Math.min(\r\n obj.left,\r\n obj.canvas.width -\r\n obj.getBoundingRect().width +\r\n obj.left -\r\n obj.getBoundingRect().left -\r\n 45\r\n );\r\n obj.setCoords();\r\n }\r\n }\r\n });\r\n return canv;\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardProps {\r\n cardClass?: string;\r\n children?: React.ReactNode;\r\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n style?: React.CSSProperties;\r\n key?:string\r\n \r\n}\r\n\r\nexport const Card = ({ cardClass,children, onClick,style,key }: CardProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`card bg-base-100 relative ${cardClass}`}\r\n onClick={onClick}\r\n style={style}\r\n key={ key}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};","import React from 'react';\r\n\r\nexport interface CardBodyProps {\r\n bodyClass?: string;\r\n children?: React.ReactNode;\r\n}\r\nexport const CardBody = ({ bodyClass, children }: CardBodyProps) => {\r\n return (\r\n <>\r\n <div className={`card-body ${bodyClass}`}>{children}</div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './card.css';\r\n\r\nexport interface CardMediaProps {\r\n alt?: string;\r\n imageClass?: string;\r\n src?: string;\r\n}\r\nexport const CardMedia = ({ alt, imageClass, src }: CardMediaProps) => {\r\n return (\r\n <>\r\n <div\r\n role=\"img\"\r\n aria-label={alt}\r\n className={`cardImage ${imageClass}`}\r\n style={{ backgroundImage: `url('${src}')` }}\r\n ></div>\r\n </>\r\n );\r\n};","import React from 'react';\r\nimport { TAG_TEXT_COLOR } from '../../theme';\r\nexport interface CardTagsProps {\r\n children?: React.ReactNode;\r\n tagsClass?: string;\r\n}\r\nexport const CardTags = ({ children, tagsClass }: CardTagsProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`${tagsClass} flex capitalize rounded px-[11px] py-[5px] text-center items-center align-baseline ${TAG_TEXT_COLOR} font-normal`}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nexport interface CardTitleProps {\r\n name?: string;\r\n titleClass?: string;\r\n}\r\nexport const CardTitle = ({ name, titleClass }: CardTitleProps) => {\r\n return (\r\n <>\r\n <p className={`card-title ${titleClass}`}>{name}</p>\r\n </>\r\n );\r\n};\r\n","import React, { useRef, useState } from 'react';\r\nimport { MdOutlineFileUpload } from 'react-icons/md';\r\nimport { IconButton } from '../icon';\r\ninterface FileUploadButtonProps {\r\n onFileSelect: (file: File) => void;\r\n}\r\n\r\nconst FileUploadButton: React.FC<FileUploadButtonProps> = ({\r\n onFileSelect,\r\n}) => {\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n const [isDragging, setIsDragging] = useState(false);\r\n\r\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const selectedFile = event.target.files?.[0];\r\n\r\n if (selectedFile) {\r\n onFileSelect(selectedFile);\r\n }\r\n fileInputRef.current.value = null;\r\n };\r\n\r\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFile = event.dataTransfer.files[0];\r\n if (droppedFile) {\r\n onFileSelect(droppedFile);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className={`flex items-center justify-center w-full relative h-full ${\r\n isDragging ? 'dragging' : ''\r\n }`}\r\n onDragEnter={handleDragEnter}\r\n onDragLeave={handleDragLeave}\r\n onDragOver={(event) => event.preventDefault()}\r\n onDrop={handleDrop}\r\n >\r\n <label\r\n htmlFor=\"file-upload\"\r\n // className=\"w-[40vw] h-[40vh] flex flex-col items-center justify-center gap-y-[12px] text-center absolute -translate-x-2/4 md:-translate-y-2/4 -translate-y-[30%] left-2/4 2xl:top-2/4 top-[42%] p-[50px] border-2 border-gray-300 border-dashed rounded-lg cursor-pointer bg-gray-50 dark:hover:bg-bray-800 dark:bg-gray-700 hover:bg-gray-100 dark:border-gray-600 dark:hover:border-gray-500 dark:hover:bg-gray-600\"\r\n className=\"w-[40vw] h-[40vh] flex flex-col items-center justify-center gap-y-[12px] text-center absolute -translate-x-2/4 md:-translate-y-2/4 -translate-y-[30%] left-2/4 2xl:top-2/4 top-[42%] p-[50px] border-2 border-gray-300 border-dashed rounded-lg cursor-pointer bg-gray-50\"\r\n >\r\n <div className=\" text-center flex flex-col gap-[8px]\">\r\n <IconButton\r\n label=\"\"\r\n icon={<MdOutlineFileUpload />}\r\n className={\r\n 'pointer-events-auto cursor-pointer m-auto text-[#E11A38] bg-[#FCE8EB] p-[16px] h-[unset] !rounded-full'\r\n }\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n <div className=\"text-[#5D5D5D] text-base font-bold\">\r\n Drag Files To Upload\r\n </div>\r\n <div className=\"text-[#5D5D5D] text-base font-bold\">Or</div>\r\n </div>\r\n <div>\r\n {' '}\r\n <button\r\n onClick={() => fileInputRef.current?.click()}\r\n className=\"text-center py-[11.2px] border border-[#E11A38] text-[#E11A38] font-bold px-[20px] rounded-none hover:bg-[#E11A38] hover:text-white transition-all ease-in-out duration-300 cursor-pointer max-w-[220px]\"\r\n >\r\n BROWSE FILE\r\n </button>\r\n </div>\r\n\r\n <div className=\" text-center text-[#727272] text-sm\">\r\n <p>Max file size: 25M</p>\r\n {/* <p>Supported files types: JPG, JPEG, PNG, GIF, EPS, PDF, SVG, AI</p> */}\r\n <p>Supported files types: JPG, JPEG, PNG, PDF, SVG, AI</p>\r\n </div>\r\n <input\r\n id=\"file-upload\"\r\n ref={fileInputRef}\r\n type=\"file\"\r\n onChange={handleFileSelect}\r\n className=\"hidden\"\r\n accept=\"image/png, image/jpeg , image/gif , image/svg+xml , .eps , .ai , .pdf\"\r\n />\r\n </label>\r\n </div>{' '}\r\n </>\r\n );\r\n};\r\n\r\nexport default FileUploadButton;\r\n","export const defaultColorNames = [\r\n { color: '#040404', name: 'Black' },\r\n { color: '#0B162E', name: 'Navy' },\r\n { color: '#511318', name: 'Maroon' },\r\n { color: '#12242C', name: 'Graphite' },\r\n { color: '#362519', name: 'Mud' },\r\n { color: '#332322', name: 'Dark Walnut' },\r\n { color: '#581C28', name: 'Burgundy' },\r\n { color: '#482925', name: 'Walnut' },\r\n { color: '#5E1B56', name: 'Grape' },\r\n { color: '#48236E', name: 'Purple' },\r\n { color: '#004125', name: 'Dark Pine' },\r\n { color: '#532D23', name: 'Brown' },\r\n { color: '#163959', name: 'Denim' },\r\n { color: '#063E44', name: 'Forest Teal' },\r\n { color: '#7D1523', name: 'Cardinal' },\r\n { color: '#39392A', name: 'Sage' },\r\n { color: '#005028', name: 'Dark Green' },\r\n { color: '#3D471F', name: 'Olive' },\r\n { color: '#454126', name: 'Army Olive' },\r\n { color: '#8E2056', name: 'Violet' },\r\n { color: '#0B5935', name: 'Kelly' },\r\n { color: '#3B4548', name: 'Asphalt' },\r\n { color: '#67451F', name: 'Buck Mesh' },\r\n { color: '#364D44', name: 'Spruce' },\r\n { color: '#5F452F', name: 'Bark' },\r\n { color: '#94321D', name: 'Texas Orange' },\r\n { color: '#59501C', name: 'Army Gold' },\r\n { color: '#00643B', name: 'Irish Green' },\r\n { color: '#824323', name: 'Buck' },\r\n { color: '#624B36', name: 'Medium Brown' },\r\n { color: '#B82026', name: 'Red' },\r\n { color: '#8C4522', name: 'Copper' },\r\n { color: '#4856A6', name: 'Lilac' },\r\n { color: '#0D5EA0', name: 'Royal' },\r\n { color: '#005F9C', name: 'Air Force Blue' },\r\n { color: '#3F7336', name: 'Lime Green' },\r\n { color: '#DD2825', name: 'Red-Orange' },\r\n { color: '#DE1761', name: 'Fuchsia' },\r\n { color: '#007189', name: 'Surf Blue' },\r\n { color: '#5F6162', name: 'Charcoal' },\r\n { color: '#057F88', name: 'Blue Teal' },\r\n { color: '#747C32', name: 'Moss' },\r\n { color: '#E45224', name: 'Orange' },\r\n { color: '#F04D30', name: 'Blaze Orange' },\r\n { color: '#0080C1', name: 'Bright Blue' },\r\n { color: '#C16A27', name: 'Toast' },\r\n { color: '#E64677', name: 'Neon Pink' },\r\n { color: '#766A5B', name: 'Driftwood' },\r\n { color: '#667360', name: 'Mute Green' },\r\n { color: '#AB6B6C', name: 'Dark Rose' },\r\n { color: '#2481B3', name: 'Baltic Blue' },\r\n { color: '#00A34A', name: 'Emerald' },\r\n { color: '#E86432', name: 'Salmon' },\r\n { color: '#F26920', name: 'Neon Orange' },\r\n { color: '#857262', name: 'Desert Brown' },\r\n { color: '#93715B', name: 'Light Brown' },\r\n { color: '#A276B3', name: 'Lavender' },\r\n { color: '#00A84E', name: 'Emerald Maderia' },\r\n { color: '#F3751F', name: 'Gold Orange' },\r\n { color: '#05A17E', name: 'Mint' },\r\n { color: '#1B91D0', name: 'Sky Blue' },\r\n { color: '#53878B', name: 'Bahama Blue' },\r\n { color: '#00A192', name: 'Green Teal' },\r\n { color: '#6C7A89', name: 'Steel Grey' },\r\n { color: '#0A96BD', name: 'Cyan' },\r\n { color: '#CE8A2D', name: 'Mustard' },\r\n { color: '#F5831E', name: 'Tenn. Orange' },\r\n { color: '#81A046', name: 'D Sport Green' },\r\n { color: '#ED9717', name: 'Dark Gold' },\r\n { color: '#867E72', name: 'Putty' },\r\n { color: '#F27D66', name: 'Southern Peach' },\r\n { color: '#F37F95', name: 'Optic Pink' },\r\n { color: '#BEA82F', name: 'Green Gold' },\r\n { color: '#F283B4', name: 'Pink' },\r\n { color: '#89906D', name: 'Light Olive' },\r\n { color: '#85C44B', name: 'Neon Green' },\r\n { color: '#72C164', name: 'Key Lime' },\r\n { color: '#F4B716', name: 'Dark Cal Gold' },\r\n { color: '#B790C2', name: 'Pale Lilac' },\r\n { color: '#C6FF19', name: 'Optic Green' },\r\n { color: '#FCC614', name: 'Yellow' },\r\n { color: '#16B1D1', name: 'Aqua' },\r\n { color: '#CB9E59', name: 'Old Gold' },\r\n { color: '#FDED00', name: 'Lemon' },\r\n { color: '#FFC937', name: 'Gold' },\r\n { color: '#F8ED4D', name: 'Neon Yellow' },\r\n { color: '#F5A2C6', name: 'Cotton Candy' },\r\n { color: '#EEBD5B', name: 'Metallic Gold' },\r\n { color: '#FCAE77', name: 'Light Peach' },\r\n { color: '#C09B7B', name: 'Taupe' },\r\n { color: '#FBB66E', name: 'Honey' },\r\n { color: '#F6D75E', name: 'Lt. Cal Gold' },\r\n { color: '#DEB66A', name: 'Brass' },\r\n { color: '#CE9F9F', name: 'Light Rose' },\r\n { color: '#6AC4CC', name: 'Southern Mint' },\r\n { color: '#F4AC96', name: 'Peach' },\r\n { color: '#84B5B2', name: 'Smoke Blue' },\r\n { color: '#9BA997', name: 'Spring Green' },\r\n { color: '#BFA881', name: 'Beige' },\r\n { color: '#7BBEE8', name: 'Columbia Blue' },\r\n { color: '#EFC78D', name: 'Tan' },\r\n { color: '#8BD6D4', name: 'Aruba Blue' },\r\n { color: '#BDA998', name: 'Camo Stone' },\r\n { color: '#AECBAC', name: 'Willow' },\r\n { color: '#AADAC9', name: 'Light Mint' },\r\n { color: '#CDE4B4', name: 'Patina Green' },\r\n { color: '#F5DDA2', name: 'Vegas Gold' },\r\n { color: '#FFF9B7', name: 'Mellow Yellow' },\r\n { color: '#C2C2B8', name: 'Dark Stone' },\r\n { color: '#BDBDC0', name: 'Silver' },\r\n { color: '#E9D7B7', name: 'Khaki' },\r\n { color: '#C6C8C8', name: 'Heather Grey' },\r\n { color: '#D6D1C3', name: 'Stone' },\r\n { color: '#CFCDCD', name: 'Metallic Silver' },\r\n { color: '#E9E7D9', name: 'Eggshell' },\r\n { color: '#D7DEE2', name: 'Light Silver' },\r\n { color: '#EAE3DC', name: 'Metallic Champagne' },\r\n { color: '#FAF7ED', name: 'Cream' },\r\n { color: '#FFFFFF', name: 'White' },\r\n { color: 'transparent', name: 'Transparent' },\r\n];","import React, { useState } from 'react';\r\nimport { TEXT_SIZE_9 } from '../../theme';\r\nimport './colorPalette.css';\r\nimport { defaultColorNames } from '../../assets/colors/colors';\r\nimport { ToolTip } from '../toolTip';\r\n\r\nexport interface ColorPaletteProps {\r\n previousColor?: string[];\r\n previousClass?: string;\r\n mainIndex?: any;\r\n handleColorChange?: any;\r\n mainClass?: string;\r\n index?: any;\r\n boxWidth?: number;\r\n gap?: number;\r\n style?: any;\r\n}\r\n\r\nexport const ColorPalette = ({\r\n previousColor,\r\n previousClass = '',\r\n mainIndex = '',\r\n handleColorChange,\r\n style = {},\r\n}: // mainClass = '',\r\nColorPaletteProps) => {\r\n const [selectColor, setSelectColor] = useState(null);\r\n const colorList = defaultColorNames;\r\n const handleColorClick = (color, index) => {\r\n setSelectColor(color);\r\n handleColorChange(color, index);\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n id=\"colorPalette\"\r\n className={`colorPalette right-[10.6rem] z-10 max-h-[16.4375rem] border border-[#FCE8EB] before:bg-[#ffffff] shadow-[0px_3px_6px_rgba(0,0,0,0.16)] py-[1.8125rem] px-[1.4063rem] bg-[#fff] mt-[1.875rem] mr-[1rem] absolute h-[300px]`}\r\n style={style}\r\n >\r\n {colorList?.length > 0 && (\r\n <>\r\n <p\r\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem] text-left`}\r\n >\r\n Choose color\r\n </p>\r\n <div\r\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] pb-[2.0938rem] max-h-[10.9rem] overflow-y-auto`}\r\n >\r\n {colorList?.map((color, index) => (\r\n <div\r\n className=\"aspect-square border border-solid border-[#D6D6D6] cursor-pointer relative btn !p-0 !w-[1.875rem] !h-[1.875rem] min-h-[unset] rounded-none\"\r\n key={index + color.name}\r\n >\r\n <ToolTip label={color.name}>\r\n <ColorBox\r\n color={color.color}\r\n index={index}\r\n onClick={() => handleColorClick(color.color, mainIndex)}\r\n boxClass={`w-[1.875rem] h-[1.875rem] ${\r\n selectColor === color.color ? 'border border-[red]' : ''\r\n }`}\r\n />\r\n </ToolTip>\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n )}\r\n {previousColor?.length > 0 && (\r\n <>\r\n <div\r\n className={`flex flex-row gap-x-[0.875rem] pt-[1.3438rem] border-t border-t-[#EBEBEB]`}\r\n >\r\n <p\r\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem]`}\r\n >\r\n Previously used\r\n </p>\r\n <div\r\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] border-b border-b-[#EBEBEB] ${previousClass}`}\r\n >\r\n {previousColor?.map((color, index) => (\r\n <ColorBox\r\n color={color}\r\n index={'previous' + index}\r\n onClick={() =>\r\n handleColorClick(color, mainIndex + 'Choose' + index)\r\n }\r\n boxClass={`w-[1.875rem] h-[1.875rem] ${\r\n selectColor === color ? 'border border-[red]' : ''\r\n }`}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport interface BoxColorProps {\r\n color?: string;\r\n index?: any;\r\n boxClass?: string;\r\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n onChange?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const ColorBox = ({\r\n color,\r\n index,\r\n boxClass = '',\r\n onClick,\r\n onChange,\r\n children,\r\n}: BoxColorProps) => {\r\n return (\r\n <div\r\n key={index}\r\n style={{ backgroundColor: color }}\r\n className={`w-10 h-10 border border-[#D6D6D6] ${boxClass}`}\r\n onClick={onClick}\r\n onChange={onChange}\r\n >\r\n {children}\r\n {color === 'transparent' && (\r\n <div\r\n style={{\r\n width: '2px',\r\n height: '39px',\r\n background: '#FF0000',\r\n transform: 'rotate(-45deg)',\r\n marginLeft: '13px',\r\n marginTop: '-6px',\r\n }}\r\n >\r\n &nbsp;\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { defaultColorNames } from '../../assets/colors/colors';\r\nimport { ToolTip } from '../toolTip';\r\n\r\nexport const ColorImpl = (props) => {\r\n const getLable = (colorCode) => {\r\n const color = defaultColorNames.find((c) => colorCode === c.color);\r\n if (color && color.name) {\r\n return color.name;\r\n } else {\r\n return colorCode;\r\n }\r\n };\r\n\r\n return (\r\n <ToolTip label={getLable(props.color)}>\r\n <div className={props.mClass}>\r\n <div\r\n className={`border border-gray-600 w-[30px] h-[30px] group`}\r\n style={{\r\n background: props.color === 'transparent' ? '#FFFFFF' : props.color,\r\n }}\r\n onClick={(event: any) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n props.setDisplayPallet({\r\n visible: true,\r\n property: props.property,\r\n color: '',\r\n callback: props.callback,\r\n });\r\n props.setPosition({\r\n x: event.clientX,\r\n y:\r\n window.innerHeight < event.clientY + 280\r\n ? event.clientY - 300\r\n : event.clientY,\r\n });\r\n }}\r\n >\r\n {props.color === 'transparent' && (\r\n <div\r\n style={{\r\n width: '2px',\r\n height: '39px',\r\n background: '#FF0000',\r\n transform: 'rotate(-45deg)',\r\n marginLeft: '13px',\r\n marginTop: '-6px',\r\n }}\r\n >\r\n &nbsp;\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </ToolTip>\r\n );\r\n};\r\n","import React, { useEffect, useState, useRef, useMemo } from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport { ColorImpl, ColorPalette } from '../colorPallet';\r\nimport { Initpopup } from '../../store/fabric/Popupcanvas';\r\nimport { CgArrowRight } from 'react-icons/cg';\r\nimport { EyeDropper, IconButton } from '../icon';\r\nimport { GiDrop } from 'react-icons/gi';\r\nimport { MdOutlineCancel } from 'react-icons/md';\r\nimport { ToolTip } from '../toolTip';\r\nimport { defaultColorNames } from '../../assets/colors/colors';\r\n// import { Button } from 'reakit';\r\nexport const PopUpCanvas = () => {\r\n const [\r\n popupCanvas,\r\n canvas,\r\n colorFill,\r\n changeSVGColor,\r\n popUpCanvasUndo,\r\n refreshColor,\r\n defaultColorFill,\r\n setDefaultColorFill,\r\n defaultColorFillCopy,\r\n setDefaultColorFillCopy,\r\n setHasUploadScreen,\r\n // popUpCanvasRedo,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.popupCanv,\r\n state.fabricCanvas,\r\n state.colorFill,\r\n state.changeSVGColor,\r\n state.popUpCanvasUndo,\r\n state.refreshColor,\r\n state.defaultColorFill,\r\n state.setDefaultColorFill,\r\n state.defaultColorFillCopy,\r\n state.setDefaultColorFillCopy,\r\n state.setHasUploadScreen,\r\n //state.popUpCanvasRedo,\r\n ],\r\n shallow\r\n );\r\n const [colorCount, setColorCount] = useState(8);\r\n const [colorFillCount, setColorFillCount] = useState(-1);\r\n // const [defaultColorFill, setDefaultColorFill] = useState([]);\r\n const [isRefresh, setIsRefresh] = useState(false);\r\n const [isNextClicked, setIsNextClicked] = useState(false);\r\n const defaultColorFillRef = useRef([]);\r\n\r\n const [displayPallet, setDisplayPallet] = useState({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n const [position, setPosition] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!displayPallet || !displayPallet.visible) {\r\n setDefaultColorFill(\r\n defaultColorFill.map((cf: any) => ({ ...cf, hasPallet: false }))\r\n );\r\n }\r\n }, [displayPallet]);\r\n\r\n useEffect(() => {\r\n defaultColorFillRef.current = defaultColorFill;\r\n }, [defaultColorFill]);\r\n\r\n useEffect(() => {\r\n if (colorFill && Object.keys(colorFill).length) {\r\n if (colorFillCount === -1) {\r\n setColorFillCount(Object.keys(colorFill).length);\r\n const defaultCF = [];\r\n Object.keys(colorFill).map((cf: any) => {\r\n defaultCF.push({\r\n property: cf,\r\n default: colorFill[cf],\r\n updated: colorFill[cf],\r\n });\r\n });\r\n setDefaultColorFill(defaultCF);\r\n }\r\n\r\n if (isRefresh) {\r\n setIsRefresh(false);\r\n setTimeout(() => {\r\n Object.keys(colorFill).map((cf: any) => {\r\n const dcf = defaultColorFill.find(\r\n (dcf: any) => dcf.property === cf\r\n );\r\n if (dcf && dcf.default !== dcf.updated) {\r\n changeSVGColor(dcf.property, dcf.updated);\r\n }\r\n });\r\n }, 100);\r\n }\r\n }\r\n // setColorFillCount(-1);\r\n }, [colorFill]);\r\n\r\n useEffect(() => {\r\n if (colorFillCount && colorFillCount > 0) {\r\n setColorCount(colorFillCount);\r\n } else {\r\n setColorCount(8);\r\n }\r\n }, [colorFillCount]);\r\n\r\n const onColorUpdate = (property: any, color: any) => {\r\n // const foundIndex = defaultColorFill.findIndex(\r\n // (cf: any) => cf.property === property\r\n // );\r\n // if (foundIndex >= 0) {\r\n // defaultColorFill[foundIndex].updated = color;\r\n // }\r\n\r\n if (changeSVGColor(property, color)) {\r\n setDefaultColorFill(\r\n defaultColorFill.map((c: any) =>\r\n // c.property === property ? { ...c, updated: color } : c\r\n colorFill[property] === c.updated ? { ...c, updated: color } : c\r\n )\r\n );\r\n setDefaultColorFillCopy(\r\n defaultColorFillCopy.map((c: any) =>\r\n // c.property === property ? { ...c, updated: color } : c\r\n colorFill[property] === c.updated ? { ...c, updated: color } : c\r\n )\r\n );\r\n }\r\n };\r\n\r\n // const colors = [\r\n // 'red',\r\n // 'green',\r\n // 'blue',\r\n // 'yellow',\r\n // 'purple',\r\n // 'indigo',\r\n // 'orange',\r\n // 'light green',\r\n // ];\r\n // const selectedColors = colors.slice(0, colorCount);\r\n const handleColorCountChange = (e) => {\r\n setColorCount(Number(e.target.value));\r\n // use3dddPlus.setState({ colorCount: Number(e.target.value) });\r\n refreshColor(Number(e.target.value));\r\n setIsRefresh(true);\r\n };\r\n const resizeCanvas = () => {\r\n if (document.getElementById('imageCanvas')) {\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n const outerCanvasContainer = document.getElementById('imageCanvas');\r\n console.log(outerCanvasContainer);\r\n const containerWidth = outerCanvasContainer.clientWidth;\r\n const scale = containerWidth / canvas.getWidth();\r\n const zoom = canvas.getZoom() * scale;\r\n canvas.setWidth(containerWidth);\r\n //@ts-ignore\r\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\r\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\r\n canvas.renderAll();\r\n }\r\n };\r\n\r\n const removeColorPalatte = () => {\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n fabric.Object.prototype.hasControls = false;\r\n fabric.Object.prototype.hasBorders = false;\r\n setDefaultColorFill([]);\r\n setColorFillCount(-1);\r\n setHasUploadScreen(true);\r\n const popupCanv = Initpopup();\r\n use3dddPlus.setState({ popupCanv: popupCanv });\r\n resizeCanvas();\r\n window.addEventListener('resize', resizeCanvas);\r\n window.addEventListener('click', removeColorPalatte);\r\n //FOR REMOVING COLOR\r\n\r\n popupCanv.on('mouse:down', function (event) {\r\n popupCanv.discardActiveObject();\r\n var mouseClick = popupCanv.getPointer(event.e);\r\n // console.log('MOUSE-CLICK-->',mouseClick);\r\n // Iterate through objects on the canvas and check if any intersect with the mouse click\r\n\r\n let removedColors = [];\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n let color;\r\n popupCanv.forEachObject(function (obj) {\r\n if (obj.type === 'path') {\r\n //@ts-ignore\r\n if (obj.containsPoint(mouseClick) && !color) {\r\n removedColors.push(obj.fill);\r\n popupCanv.remove(obj);\r\n popupCanv.renderAll();\r\n color = obj.fill;\r\n }\r\n }\r\n });\r\n\r\n let defaultColorsCopy = defaultColorFillRef.current;\r\n removedColors.map((rc: any) => {\r\n if (\r\n popupCanv.getObjects().filter((obj: any) => obj.fill === rc).length <\r\n 1\r\n ) {\r\n defaultColorsCopy = defaultColorsCopy.filter(\r\n (dc: any) => dc.updated !== RGBToHex(rc)\r\n );\r\n }\r\n });\r\n setDefaultColorFill(defaultColorsCopy);\r\n\r\n /*\r\n let availableColors = [];\r\n defaultColorFillRef.current.map((dcf: any) => {\r\n let objColorCount = 0;\r\n popupCanv.forEachObject(function (obj) {\r\n if (RGBToHex(obj.fill) === dcf.updated) {\r\n objColorCount += 1;\r\n }\r\n });\r\n if (objColorCount > 0) {\r\n availableColors.push(dcf);\r\n }\r\n });\r\n setDefaultColorFill(availableColors);\r\n */\r\n });\r\n return () => {\r\n setHasUploadScreen(false);\r\n window.removeEventListener('click', removeColorPalatte);\r\n };\r\n }, []);\r\n\r\n const popupCanvasCancel = () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n setDefaultColorFill([]);\r\n use3dddPlus.setState({ uploadImageModalDisplay: false });\r\n popupCanvas.remove(...popupCanvas.getObjects());\r\n use3dddPlus.setState({ colorFill: {} });\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.setState({ popUpCanvasCount: 1 });\r\n };\r\n\r\n const popupCanvasContinue = () => {\r\n if (!conflictColors || conflictColors.length < 1) {\r\n setIsNextClicked(false);\r\n onContinue();\r\n } else {\r\n setIsNextClicked(true);\r\n }\r\n };\r\n\r\n const onContinue = () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n //@ts-ignore\r\n use3dddPlus.setState({ uploadImageModalDisplay: false });\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n popupCanvas.getObjects().forEach((obj) => {\r\n if (obj.type === 'line') {\r\n popupCanvas.remove(obj);\r\n }\r\n });\r\n const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\r\n //@ts-ignore\r\n popupCanvas: popupCanvas,\r\n });\r\n popupCanvas.setActiveObject(sel);\r\n // {\r\n // _objects: sel._objects.filter((obj) => obj.type !== 'line'),\r\n // }\r\n // popupCanvas.remove(...popupCanvas.getObjects());\r\n\r\n popupCanvas.requestRenderAll();\r\n let clipboard;\r\n popupCanvas.getActiveObject().clone(function (cloned) {\r\n clipboard = cloned;\r\n // });\r\n\r\n // if (clipboard.type === 'activeSelection') {\r\n // clipboard.canvas = canvas;\r\n // const objs = [];\r\n // clipboard.forEachObject(function (obj) {\r\n // objs.push(obj);\r\n // });\r\n // const alltogetherObj = new fabric.Group(objs, {});\r\n // canvas.centerObject(alltogetherObj);\r\n // canvas.add(alltogetherObj);\r\n // canvas.setActiveObject(alltogetherObj);\r\n // alltogetherObj.setCoords();\r\n // use3dddPlus.getState().forStoringAllObject(alltogetherObj); //for pushing the data into array for layers\r\n // } else {\r\n // canvas.add(clipboard);\r\n // }\r\n // canvas.requestRenderAll();\r\n // popupCanvas.clear();\r\n if (clipboard && clipboard.type === 'activeSelection') {\r\n clipboard.canvas = canvas;\r\n const objs = [];\r\n clipboard.forEachObject(function (obj) {\r\n objs.push(obj);\r\n });\r\n\r\n const alltogetherObj = new fabric.Group(objs, {});\r\n canvas.centerObject(alltogetherObj);\r\n canvas.add(alltogetherObj);\r\n canvas.setActiveObject(alltogetherObj);\r\n alltogetherObj.set({\r\n //@ts-ignore\r\n colorFill: use3dddPlus.getState().colorFill,\r\n });\r\n alltogetherObj.setCoords();\r\n use3dddPlus.getState().forStoringAllObject(alltogetherObj); //for pushing the data into array for layers\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n alltogetherObj.icon = use3dddPlus.getState().iconImage;\r\n } else {\r\n canvas.add(clipboard);\r\n }\r\n canvas.requestRenderAll();\r\n popupCanvas.clear();\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n };\r\n\r\n const RGBToHex = (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n };\r\n\r\n /*\r\n const resetHandler = () => {\r\n console.log(use3dddPlus.getState().forPopupCanvasReset);\r\n popupCanvas.clear();\r\n popupCanvas.loadFromJSON(\r\n use3dddPlus.getState().forPopupCanvasReset,\r\n function () {\r\n use3dddPlus.setState({\r\n colorFill: { ...use3dddPlus.getState().forPopupCanvasColor },\r\n });\r\n popupCanvas.renderAll();\r\n }\r\n );\r\n };*/\r\n\r\n const resetHandler = () => {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n // refreshColor(colorCount);\r\n // use3dddPlus.getState().popupCanv.clear();\r\n\r\n const colors = use3dddPlus.getState().popupCanvasStoreHistory[0].colorFill;\r\n use3dddPlus\r\n .getState()\r\n .popupCanv.loadFromJSON(\r\n use3dddPlus.getState().popupCanvasStoreHistory[0].json\r\n );\r\n // use3dddPlus.getState().popupCanv.setBackgroundColor(\r\n // {\r\n // source:\r\n // 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/checkerBoxBG.png',\r\n // repeat: 'repeat',\r\n // },\r\n // use3dddPlus\r\n // .getState()\r\n // .popupCanv.renderAll.bind(use3dddPlus.getState().popupCanv),\r\n // {\r\n // backgroundImageOpacity: 1,\r\n // scaleX: 1.1,\r\n // scaleY: 1.1,\r\n // backgroundRepeat: 'repeat',\r\n // }\r\n // );\r\n\r\n popupCanvas.getObjects().forEach((obj) => {\r\n if (obj.type === 'line') {\r\n popupCanvas.remove(obj);\r\n }\r\n });\r\n\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 15; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n\r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n\r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n const line = new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n const line = new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n canvas.add(rect);\r\n canvas.sendToBack(rect);\r\n }\r\n }\r\n\r\n use3dddPlus.setState({ colorFill: colors });\r\n setDefaultColorFill(\r\n defaultColorFill.map((dcf: any) => ({ ...dcf, updated: dcf.default }))\r\n );\r\n // use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n };\r\n\r\n const onSelectColor = (item: any, event: any) => {\r\n setDefaultColorFill(\r\n defaultColorFill.map((cf: any) =>\r\n cf.property === item.property\r\n ? {\r\n ...cf,\r\n hasPallet: true,\r\n position: { x: event.clientX, y: event.clientY },\r\n }\r\n : { ...cf, hasPallet: false }\r\n )\r\n );\r\n setDisplayPallet({\r\n visible: true,\r\n property: item.property,\r\n color: item.updated,\r\n callback: onColorUpdate,\r\n });\r\n setPosition({\r\n x: event.clientX,\r\n y:\r\n window.innerHeight < event.clientY + 280\r\n ? event.clientY - 300\r\n : event.clientY,\r\n });\r\n };\r\n\r\n // const onClosePalette = () => {\r\n // setDefaultColorFill(\r\n // defaultColorFill.map((c: any) => ({ ...c, hasPallet: false }))\r\n // );\r\n // };\r\n\r\n const onPopUpCanvasUndo = () => {\r\n const colors = popUpCanvasUndo();\r\n if (colors !== null) {\r\n let currentColors = defaultColorFill.map((c: any) =>\r\n colors[c.property] && colors[c.property].length > 0\r\n ? { ...c, updated: colors[c.property] }\r\n : c\r\n );\r\n\r\n // Object.keys(colors).forEach((c: any) => {\r\n // if (\r\n // defaultColorFill.filter((dc: any) => dc.updated === colors[c])\r\n // .length < 1\r\n // ) {\r\n // currentColors.push({\r\n // property: c,\r\n // default: colors[c],\r\n // updated: colors[c],\r\n // });\r\n // }\r\n // });\r\n\r\n Object.keys(colors).forEach((c: any) => {\r\n if (\r\n defaultColorFill.filter((dc: any) => dc.updated === colors[c])\r\n .length < 1\r\n ) {\r\n const colorFromDefaultCopy = defaultColorFillCopy.find(\r\n (dcc) => dcc.updated === colors[c]\r\n );\r\n if (colorFromDefaultCopy && colorFromDefaultCopy.updated) {\r\n currentColors.push(colorFromDefaultCopy);\r\n }\r\n }\r\n });\r\n setDefaultColorFill(currentColors);\r\n }\r\n };\r\n\r\n const conflictColors = useMemo(() => {\r\n return defaultColorFill.filter(\r\n (c: any) =>\r\n defaultColorNames.findIndex(\r\n (dc) => dc.color.toLowerCase() === c.updated.toLowerCase()\r\n ) < 0\r\n );\r\n }, [defaultColorFill]);\r\n\r\n return (\r\n <>\r\n {/* <div\r\n className=\"relative z-10\"\r\n aria-labelledby=\"modal-title\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n style={uploadImageModalDisplay ? {} : { display: 'none' }}\r\n > */}\r\n <div className=\"flex z-5 overflow-y-auto h-full\">\r\n <div className=\"flex flex-1 w-full h-full\">\r\n <div className=\"relative w-full overflow-hidden bg-white h-full\">\r\n <div className=\"bg-white h-full\">\r\n <div className=\"flex flex-row h-full\">\r\n <div className=\"flex flex-row text-center w-[70%] h-full\">\r\n <div className=\" w-full h-full relative\">\r\n <div\r\n className=\"btnCont flex flex-wrap h-[40px] bg-[#F7F7F7]\"\r\n style={{\r\n padding: '10px',\r\n justifyContent: 'flex-end',\r\n width: '100%',\r\n }}\r\n >\r\n <div\r\n className=\"undoBtn cursor-pointer mr-4\"\r\n onClick={onPopUpCanvasUndo}\r\n >\r\n <div className=\"undoIcon float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n className=\"cls-1\"\r\n d=\"M6,3.6V0L0,6l6,6V8c6-.27,7.53,3.76,7.88,5.77a.27.27,0,0,0,.53,0C17.08,2.86,6,3.6,6,3.6Z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Undo\r\n </span>\r\n </div>\r\n <div\r\n className=\"resetBtn cursor-pointer\"\r\n onClick={resetHandler}\r\n >\r\n <div className=\"resetBtn float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 1920 1920\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M960 0v213.333c411.627 0 746.667 334.934 746.667 746.667S1371.627 1706.667 960 1706.667 213.333 1371.733 213.333 960c0-197.013 78.4-382.507 213.334-520.747v254.08H640V106.667H53.333V320h191.04C88.64 494.08 0 720.96 0 960c0 529.28 430.613 960 960 960s960-430.72 960-960S1489.387 0 960 0\"\r\n fillRule=\"evenodd\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Reset\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div\r\n id=\"imageCanvas\"\r\n style={{\r\n width: '100%',\r\n height: 'calc(100% - 75px)',\r\n overflow: 'hidden',\r\n }}\r\n >\r\n <canvas className=\"pointer\" id=\"popupCanvas\"></canvas>\r\n </div>\r\n\r\n <div\r\n className=\"flex flex-wrap justify-center w-[100%] pt-[5px] pb-[5px] bg-[#F7F7F7]\"\r\n style={{\r\n alignItems: 'center',\r\n width: '100%',\r\n height: '35px',\r\n }}\r\n >\r\n <span className=\"border border-[#E11A38] p-1 bg-white mr-2 text-[#E11A38] \">\r\n <EyeDropper />\r\n </span>\r\n\r\n <span className=\"text-[#E11A38] text-[13px] font-bold \">\r\n Use the eyedropper tool do clicking on a color you wish\r\n to remove form you image\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"text-left flex-1 h-[100%] px-[25px] pt-[31px] pb-[5px] w-[30%]\">\r\n <div className=\"flex flex-col gap-y-3 h-full\">\r\n <h1 className=\"text-[22px] font-bold\">\r\n Match and Combine colors\r\n </h1>\r\n <p className=\"text-[15px]\">\r\n Select how many colors are in your image\r\n </p>\r\n <select\r\n value={colorCount}\r\n onChange={handleColorCountChange}\r\n className=\"border-[1px] border-[#D7D7D7] p-2\"\r\n >\r\n <option value={1} disabled={colorFillCount < 1}>\r\n 1 Colors\r\n </option>\r\n <option value={2} disabled={colorFillCount < 2}>\r\n 2 Colors\r\n </option>\r\n <option value={3} disabled={colorFillCount < 3}>\r\n 3 Colors\r\n </option>\r\n <option value={4} disabled={colorFillCount < 4}>\r\n 4 Colors\r\n </option>\r\n <option value={5} disabled={colorFillCount < 5}>\r\n 5 Colors\r\n </option>\r\n <option value={6} disabled={colorFillCount < 6}>\r\n 6 Colors\r\n </option>\r\n <option value={7} disabled={colorFillCount < 7}>\r\n 7 Colors\r\n </option>\r\n <option value={8} disabled={colorFillCount < 8}>\r\n 8 Colors\r\n </option>\r\n </select>\r\n {/* {Object.keys(colorFill)?.map((item) => {\r\n return (\r\n <>\r\n <ColorImpl\r\n handleChange={changeSVGColor}\r\n property={item}\r\n color={colorFill[item]}\r\n />\r\n </>\r\n );\r\n })} */}\r\n <div\r\n className={\r\n 'flex flex-col gap-y-3.5 items-center overflow-y-auto py-[5px] 2xl:h-[50vh] sm:h-[42vh] h-[42vh]'\r\n }\r\n >\r\n {defaultColorFill\r\n //@ts-ignore\r\n ?.filter((item, index) => index < colorCount)\r\n .map((item, index) => (\r\n <div\r\n className=\"flex flex-row items-center\"\r\n key={index}\r\n >\r\n <ToolTip label={item.default}>\r\n <div\r\n className=\"w-[30px] h-[30px] m-1 border-[1px] border-[#000000]\"\r\n style={{ background: item.default }}\r\n // title={item.default}\r\n ></div>\r\n </ToolTip>\r\n <div className=\"mx-[10px] text-[#c2c2c2]\">\r\n <CgArrowRight />\r\n </div>\r\n <div className=\"flex flex-row border-[1px] border-[#D6D6D6]\">\r\n <span\r\n className=\" border-r-[1px] border-[#D6D6D6] bg-[#fce8eb]\"\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {item.default === item.updated ? (\r\n item.hasPallet ? (\r\n <ColorImpl\r\n className=\"w-[30px] h-[30px] m-2\"\r\n handleChange={onColorUpdate}\r\n property={item.property}\r\n color={item.updated}\r\n // onClose={onClosePalette}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={onColorUpdate}\r\n />\r\n ) : (\r\n <IconButton\r\n label=\"Select Color\"\r\n icon={<GiDrop />}\r\n onClick={(event: any) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n onSelectColor(item, event);\r\n }}\r\n className={\r\n '!rounded-none pointer-events-auto cursor-pointer flex text-[#E11A38] w-[30px] h-[30px] p-[6px]'\r\n }\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n )\r\n ) : (\r\n <ColorImpl\r\n className=\"w-[30px] h-[30px] m-2\"\r\n handleChange={onColorUpdate}\r\n property={item.property}\r\n color={item.updated}\r\n // onClose={onClosePalette}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={onColorUpdate}\r\n />\r\n )}\r\n </span>\r\n\r\n <span\r\n className=\"py-[5px] pl-[10px] pr-[6px] font-medium text-[13px] bg-[#F1F1F1] cursor-pointer\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n onSelectColor(item, event);\r\n }}\r\n >\r\n Select Color\r\n </span>\r\n </div>\r\n <span className=\"\">\r\n <IconButton\r\n label=\"Delete Color\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n onColorUpdate(item.property, 'transparent');\r\n }}\r\n className={\r\n 'pointer-events-auto cursor-pointer m-autoflex w-[30px] h-[30px] p-[9px] text-[#c2c2c2]'\r\n }\r\n size=\"1rem\"\r\n ></IconButton>\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {isNextClicked &&\r\n conflictColors &&\r\n conflictColors.length > 0 ? (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n backgroundColor: '#FFFFFF',\r\n bottom: 0,\r\n padding: '7px',\r\n }}\r\n >\r\n <IconButton\r\n label=\"Close\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className={''}\r\n size=\"1.5rem\"\r\n style={{\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n fontWeight: 'bold',\r\n right: 10,\r\n top: -7,\r\n color: '#FF0000',\r\n }}\r\n ></IconButton>\r\n\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ fontWeight: 'bold', marginBottom: '3px' }}\r\n >\r\n ERROR: CONFLICT IN COLOR USED\r\n </div>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ marginBottom: '3px' }}\r\n >\r\n Note: The following colors used are not available in\r\n Richardson color palette. Please edit the colors used.\r\n </div>\r\n <div>\r\n {conflictColors.map((c: any, i: number) => {\r\n return (\r\n <div\r\n key={'color-' + i}\r\n style={{\r\n width: '100%',\r\n height: '30px',\r\n lineHeight: '30px',\r\n backgroundColor: c.updated,\r\n textAlign: 'center',\r\n marginBottom: '3px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n mixBlendMode: 'difference',\r\n }}\r\n >\r\n {c.updated}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{\r\n marginTop: '10px',\r\n marginBottom: '5px',\r\n fontWeight: 'bold',\r\n }}\r\n >\r\n Do you want to proceed?\r\n </div>\r\n\r\n <div className=\" flex flex-col content mb-[10px]\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n onContinue();\r\n }}\r\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\r\n >\r\n Yes\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className=\"inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\r\n style={{\r\n marginTop: '10px',\r\n }}\r\n >\r\n No\r\n </button>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className=\" flex flex-col content mb-[5px]\">\r\n <button\r\n type=\"button\"\r\n onClick={popupCanvasContinue}\r\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\r\n >\r\n Continue\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={popupCanvasCancel}\r\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\r\n style={{\r\n marginTop: '10px',\r\n }}\r\n >\r\n Cancel\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {/* </div> */}\r\n {displayPallet && displayPallet.visible && (\r\n <ColorPalette\r\n mainClass={`left-0`}\r\n handleColorChange={(color) => {\r\n displayPallet.callback(displayPallet.property, color);\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n }}\r\n style={\r\n position\r\n ? {\r\n position: 'fixed',\r\n left: position.x - 450,\r\n top: position.y - 5,\r\n width: '450px',\r\n }\r\n : { display: 'none' }\r\n }\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n","import { fabric } from 'fabric';\r\nimport { use3dddPlus } from '..';\r\n\r\nexport const Initpopup = () => {\r\n const onObjectSelected = () => {\r\n if (!popupcanvas.getActiveObject()) {\r\n return;\r\n }\r\n if (popupcanvas.getActiveObject().type !== 'group') {\r\n return;\r\n }\r\n //@ts-ignore\r\n popupcanvas.getActiveObject().toActiveSelection().viewportCenter();\r\n popupcanvas.requestRenderAll();\r\n };\r\n const getAllColorsPopupCanvas = () => {\r\n const popUpCanvasAllColor = [\r\n ...new Set(\r\n popupcanvas\r\n ?.getObjects()\r\n ?.map((item) => item['colorFill'] && Object.values(item['colorFill']))\r\n .flat()\r\n .filter(Boolean)\r\n ),\r\n ]; // FOR REMOVING ALL DUPLICATE COLOR\r\n use3dddPlus.setState({ popUpCanvasAllColor: popUpCanvasAllColor });\r\n };\r\n // const cursorUrl =\r\n // 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/eyedropper.svg';\r\n \r\n const outerCanvasContainer = document.getElementById('imageCanvas');\r\n\r\n const popupcanvas = new fabric.Canvas('popupCanvas', {\r\n centeredScaling: true,\r\n preserveObjectStacking: true,\r\n //backgroundColor: '#F7F7F7',\r\n // defaultCursor: `url(\" ${cursorUrl} \"), auto`,\r\n // hoverCursor: `url(\" ${cursorUrl} \"), auto`,\r\n defaultCursor: 'pointer',\r\n hoverCursor: 'pointer',\r\n // width: 500,\r\n // height: 300,\r\n width: outerCanvasContainer.clientWidth,\r\n height: outerCanvasContainer.clientHeight\r\n }); \r\n popupcanvas.on('after:render',getAllColorsPopupCanvas);\r\n popupcanvas.on('selection:created', onObjectSelected);\r\n return popupcanvas;\r\n};\r\n","import React, { useState } from 'react';\r\n\r\nimport FileUploadButton from './fileuploadButton';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { PopUpCanvas } from '../canvas/popUpCanvas';\r\n\r\nexport const UploadLogo = () => {\r\n const [, setSelectedFile] = useState<File | null>(null);\r\n const [\r\n tiffConvert,\r\n imageToSVG,\r\n setFile,\r\n uploadImageModalDisplay,\r\n // pdfConverter,\r\n aiConvert,\r\n // loadImageFromURL,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.tiffConvert,\r\n state.imageToSVG,\r\n state.setFile,\r\n state.uploadImageModalDisplay,\r\n // state.pdfConverter,\r\n state.aiConvert,\r\n // state.loadImageFromURL,\r\n ],\r\n shallow\r\n );\r\n const handleFileSelect = (file: File) => {\r\n setSelectedFile(file);\r\n setFile(file);\r\n svgConverter(file);\r\n // You can perform further actions with the selected file here.\r\n };\r\n\r\n const svgConverter = async (data) => {\r\n // canvas.discardActiveObject();\r\n const ext = data.name.substring(data.name.lastIndexOf('.') + 1);\r\n use3dddPlus.setState({ uploadImageModalDisplay: true });\r\n if (ext === 'svg') {\r\n imageToSVG(data, ext, true);\r\n }\r\n // else if (ext === 'pdf') {\r\n // let pdfData = await pdfConverter(data);\r\n // imageToSVG(pdfData, ext);\r\n // }\r\n else if (ext === 'tif' || ext === 'tiff') {\r\n const tiffData = await tiffConvert(data);\r\n imageToSVG(tiffData, ext);\r\n } else if (ext === 'ai' || ext === 'pdf') {\r\n // console.log(loadImageFromURL);\r\n use3dddPlus.setState({ loading: true });\r\n let aiToSvg = await aiConvert(data);\r\n // console.log(aiToSvg)\r\n fetch(aiToSvg.s3_file_url + '?timestamp=' + Date.now())\r\n .then((response) => response.text())\r\n .then((svgText) => {\r\n imageToSVG(svgText, ext, false, false);\r\n })\r\n .catch((ex) => {\r\n console.log(ex);\r\n use3dddPlus.setState({ loading: false });\r\n });\r\n } else {\r\n let objectURL = URL.createObjectURL(data);\r\n imageToSVG(objectURL, ext);\r\n }\r\n setSelectedFile(null);\r\n };\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-[5] w-[90%] h-full \">\r\n <div className=\"relative w-full h-full\">\r\n <div className=\"flex justify-center w-full h-full text-center\">\r\n <FileUploadButton onFileSelect={handleFileSelect} />\r\n </div>\r\n <div className=\"absolute md:bottom-[20px] bottom-[10px] px-[80px]\">\r\n <p className=\" text-[#E11A38] text-base font-bold\">\r\n Privacy Notice\r\n </p>\r\n <p className=\"text-[#727272] text-sm font-medium pt-2 pb-2\">\r\n Your uploaded images are safe, secure, and remain your property.\r\n By proceeding you acknowledge that you have full legal rights and\r\n permissions to use the images you upload.We reserve the right to\r\n reject any order.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n {uploadImageModalDisplay && (\r\n <div className=\"bg-[#F7F7F7] absolute z-[5] w-[90%] h-full\">\r\n <PopUpCanvas />\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport {\r\n SEARCHBAR_BORDER_COLOR,\r\n SEARCH_ICON_COLOR,\r\n TEXT_COLOR_1,\r\n TEXT_SIZE_3,\r\n} from '../../theme';\r\n\r\nexport interface SearchBarProps {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onKeyPress?: (e: React.KeyboardEvent<HTMLDivElement>) => void;\r\n onPaste?: (e: React.ClipboardEvent<HTMLInputElement>) => void;\r\n placeholder?: string;\r\n searchBarMainClass?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n}\r\nexport const Searchbar = ({\r\n onChange,\r\n onKeyPress,\r\n onPaste,\r\n placeholder,\r\n searchBarMainClass,\r\n value,\r\n disabled,\r\n}: SearchBarProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`${searchBarMainClass} h-[40px] relative flex w-full flex-wrap items-stretch border border-solid ${SEARCHBAR_BORDER_COLOR} outline-none transition duration-200 ease-in-out focus:z-[3] focus:shadow-[inset_0_0_0_1px_rgb(212,212,212)] focus:outline-none bg-[#FFFFFF]`}\r\n >\r\n <input\r\n type=\"search\"\r\n className={`leading-[20px] relative m-0 -mr-0.5 block w-[1px] min-w-0 focus-visible:outline-0 flex-auto bg-transparent bg-clip-padding px-[15px] py-[10px] ${TEXT_SIZE_3} font-normal ${TEXT_COLOR_1} placeholder:${TEXT_SIZE_3} placeholder:${TEXT_COLOR_1} placeholder:leading-[20px] !border-0`}\r\n placeholder={placeholder}\r\n aria-label=\"Search\"\r\n aria-describedby=\"button-addon3\"\r\n value={value}\r\n onChange={onChange}\r\n onKeyPress={onKeyPress}\r\n disabled={disabled}\r\n onPaste={onPaste}\r\n onClick={(e) => {\r\n e.currentTarget.focus();\r\n }}\r\n />\r\n <span\r\n className={`flex justify-center items-center rounded-none pl-2 pr-[14px]`}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n className={`h-5 w-5 ${SEARCH_ICON_COLOR}`}\r\n >\r\n <path d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const SortAndFilterButton = ({\r\n label,\r\n icons,\r\n onClick,\r\n className,\r\n buttonLabelClass,\r\n}) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex border border-[#EBEBEB] rounded-none gap-[31.5px] items-center p-2 shadow-[0px_7px_64px_rgba(0,0,0,0.07)] bg-[#FFFFFF] ${className}`}\r\n >\r\n <span className={`${buttonLabelClass}`}>{label}</span>\r\n <span>{icons}</span>\r\n </button>\r\n );\r\n};\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { SortAndFilterButton } from './sortButton';\r\nimport { BsSortDown } from 'react-icons/bs';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\n\r\nexport const SortByDropdown = ({ sortOptions }) => {\r\n const [loadingLogo, logoSortBy, logoSortDir] = use3dddPlus(\r\n (state) => [state.loadingLogo, state.logoSortBy, state.logoSortDir],\r\n shallow\r\n );\r\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\r\n const dropdownRef = useRef(null);\r\n\r\n const toggleDropdown = () => {\r\n setIsDropdownOpen(!isDropdownOpen);\r\n };\r\n\r\n const closeDropdown = () => {\r\n setIsDropdownOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n const handleOutsideClick = (event) => {\r\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\r\n closeDropdown();\r\n }\r\n };\r\n\r\n if (isDropdownOpen) {\r\n document.addEventListener('click', handleOutsideClick);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('click', handleOutsideClick);\r\n };\r\n }, [isDropdownOpen]);\r\n\r\n return (\r\n <div className=\"relative\" ref={dropdownRef}>\r\n <SortAndFilterButton\r\n onClick={toggleDropdown}\r\n label=\"Sort by\"\r\n icons={<BsSortDown size={'1.2rem'} />}\r\n buttonLabelClass={`hidden md:block`}\r\n className=\"py-[10px] px-[14.5px] text-[13px] leading-[16px] text-[#5d5d5d] font-bold\"\r\n />\r\n {isDropdownOpen && (\r\n <ul className=\"mt-[14px] shadow-[0px_7px_64px_rgba(0,0,0,0.07)] pt-[10px] dropdown-content w-[210px] md:right-0 bg-[#FFFFFF] flex flex-col absolute z-10 before:content-[''] before:absolute before:top-[-0.3125rem] before:h-[0.75rem] before:w-[0.75rem] before:bg-[white] before:rotate-45 md:before:right-[18px] md:before:left-[unset] before:left-[18px]\">\r\n {sortOptions.map((option) => (\r\n <li\r\n key={option.label}\r\n className={`${\r\n logoSortBy === option.sortBy &&\r\n logoSortDir === option.sortDir\r\n ? 'bg-[#fce8eb] text-[#e11a38]'\r\n : ''\r\n } cursor-pointer flex items-center hover:bg-[#fce8eb] hover:text-[#e11a38] py-[13px] px-[27.85px] border-b-[1px] last:border-b-0 border-[#F4F4F4] text-[14px] leading-[19px] text-[#353535] font-bold`}\r\n onClick={() => {\r\n toggleDropdown();\r\n loadingLogo(option.onClick());\r\n }}\r\n >\r\n {option.label}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Searchbar } from '../searchbar';\r\nimport { Card, CardMedia, CardBody, CardTitle, CardTags } from '../card';\r\nimport { SortByDropdown } from '../SortByDropdown';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\n// import { Loader } from '../loader';\r\nimport {\r\n BORDER_COLOR_3,\r\n SELECT_BG_COLOR,\r\n TAG_BG_COLOR,\r\n TEXT_SIZE_12,\r\n} from '../../theme';\r\nimport { BsCheckLg } from 'react-icons/bs';\r\nimport { useDebounce } from '../../hooks/debounce';\r\nexport interface LogoProps {\r\n logo_id: number;\r\n customer_id: string;\r\n tag: string;\r\n name: string;\r\n logo_config_url: string;\r\n logo_url: string;\r\n logo_svg_url: string;\r\n created_at: string;\r\n}\r\nexport const MyLogo = ({ onApply }) => {\r\n const [logoSelected, setLogoSelected] = React.useState<LogoProps>();\r\n const [scrollEnd, setScrollEnd] = useState(false);\r\n const [morePages, setMorePages] = useState(true);\r\n const myRef = useRef(null);\r\n const [\r\n retriveLogoDesign,\r\n myLogoHandler,\r\n loadingLogo,\r\n\r\n setLogoData,\r\n logoData,\r\n logoSearchText,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.retriveLogoDesign,\r\n state.myLogoHandler,\r\n state.loadingLogo,\r\n\r\n state.setLogoData,\r\n state.logoData,\r\n state.logoSearchText,\r\n ],\r\n shallow\r\n );\r\n const debouncedSearchText = useDebounce(logoSearchText, 300);\r\n const handleSearchChange = (e) => {\r\n use3dddPlus.setState({\r\n logoSearchText: e.currentTarget.value,\r\n logoPageNo: 1,\r\n retriveLogoDesign: [],\r\n });\r\n setMorePages(true);\r\n };\r\n\r\n useEffect(() => {\r\n loadingLogo(debouncedSearchText);\r\n }, [debouncedSearchText]);\r\n\r\n useEffect(() => {\r\n loadingLogo('');\r\n setMorePages(true);\r\n }, []);\r\n\r\n const handleScroll = React.useCallback(() => {\r\n if (!myRef?.current) return;\r\n if (scrollEnd) return;\r\n const scrollY = myRef.current.scrollTop;\r\n const height = myRef.current.clientHeight;\r\n const scrollHeight = myRef.current.scrollHeight;\r\n const tolerance = 10;\r\n if (scrollY + height + tolerance >= scrollHeight) {\r\n setScrollEnd(true);\r\n } else if (scrollY + height + tolerance < scrollHeight) {\r\n setScrollEnd(false);\r\n }\r\n }, [myRef, scrollEnd]);\r\n const fetchData = async () => {\r\n try {\r\n use3dddPlus.setState((state) => ({\r\n logoPageNo: state.logoPageNo + 1,\r\n }));\r\n const result = await loadingLogo('');\r\n if (result.length === 0) {\r\n setScrollEnd(false);\r\n setMorePages(false);\r\n return;\r\n }\r\n if (use3dddPlus.getState().logoPageNo === 1) {\r\n use3dddPlus.setState({\r\n retriveLogoDesign: result,\r\n });\r\n } else if (use3dddPlus.getState().logoPageNo > 1) {\r\n use3dddPlus.setState((state) => {\r\n const updatedState = {\r\n retriveLogoDesign: [...state.retriveLogoDesign, ...result],\r\n };\r\n return updatedState;\r\n });\r\n }\r\n setScrollEnd(false);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n useEffect(() => {\r\n if (scrollEnd && morePages) {\r\n setTimeout(async () => {\r\n await fetchData();\r\n }, 700);\r\n }\r\n }, [scrollEnd]);\r\n const sortOptions = [\r\n {\r\n label: 'NEWEST',\r\n sortBy: 'updated_at',\r\n sortDir: 'DESC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'OLDEST',\r\n sortBy: 'updated_at',\r\n sortDir: 'ASC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'ASC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'A TO Z',\r\n sortBy: 'name',\r\n sortDir: 'ASC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'name',\r\n logoSortDir: 'ASC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'Z TO A',\r\n sortBy: 'name',\r\n sortDir: 'DESC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'name',\r\n logoSortDir: 'DESC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n ];\r\n const handleEditLogo = (logo) => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n if (logo) {\r\n use3dddPlus.setState({\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n });\r\n myLogoHandler(logo);\r\n setLogoSelected(logo);\r\n }\r\n };\r\n const handleApplyLogo = (logo) => {\r\n if (logo) {\r\n use3dddPlus.setState({\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n });\r\n onApply();\r\n setLogoSelected(logo);\r\n }\r\n };\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\r\n <div className=\" w-full flex mt-[50px] flex-row\">\r\n <div className=\"flex gap-4 justify-end w-full md:justify-end \">\r\n <SortByDropdown sortOptions={sortOptions} />\r\n <div className=\" w-full sm:w-[60%] md:w-[65%] lg:w-[50%] xl:w-[40%] \">\r\n <Searchbar\r\n value={logoSearchText}\r\n placeholder={'Search by Logo name or tags'}\r\n searchBarMainClass={`!h-[40px] border border-[#BEBEBE]`}\r\n onChange={handleSearchChange}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className={`flex ml-[33px] mt-[30px] overflow-y-auto h-[60vh] overflow-x-hidden pr-[33px]`}\r\n onScroll={handleScroll}\r\n ref={myRef}\r\n >\r\n <div className=\"max-h-[140px] grid gap-[2vw] grid-cols-3 md:grid-cols-4 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 w-full \">\r\n {retriveLogoDesign.length > 0\r\n ? retriveLogoDesign.map((logo: LogoProps) => (\r\n <>\r\n {/* {logo.logo_svg_url && ( */}\r\n <Card\r\n cardClass={`rounded-none !bg-transparent cursor-pointer max-w-[220px] border ${\r\n logoSelected?.logo_id === logo.logo_id\r\n ? BORDER_COLOR_3\r\n : 'border-none '\r\n }`}\r\n // style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n onClick={() => {\r\n if (logo) {\r\n setLogoData(logo);\r\n setLogoSelected(logo);\r\n }\r\n }}\r\n >\r\n <CardMedia\r\n src={\r\n logo.logo_url\r\n }\r\n imageClass=\"w-full h-[220px] bg-white shadow-md\"\r\n />\r\n\r\n <CardBody bodyClass=\"p-2.5 self-start grow-0\">\r\n <CardTitle\r\n titleClass={`text-[15px] text-[#353535] font-bold uppercase break-all text-left items-left`}\r\n name={logo.name}\r\n />\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {logo?.tag &&\r\n logo?.tag\r\n ?.split(',')\r\n ?.filter(Boolean)\r\n ?.map((item) => (\r\n <CardTags\r\n key={`design-tag-${item}`}\r\n tagsClass={`h-[1.5rem] ${TAG_BG_COLOR}`}\r\n >\r\n <div className={`${TEXT_SIZE_12}`}>\r\n {item}\r\n </div>\r\n </CardTags>\r\n ))}\r\n </div>\r\n\r\n {logoSelected?.logo_id === logo.logo_id && (\r\n <div className=\"w-9 overflow-hidden inline-block absolute left-0 top-0\">\r\n <div\r\n className={`h-16 rotate-45 transform origin-top-right ${SELECT_BG_COLOR}`}\r\n ></div>\r\n <span className=\"absolute top-1 left-1\">\r\n <BsCheckLg\r\n size={15}\r\n color=\"white\"\r\n style={{ strokeWidth: '0.5' }}\r\n />\r\n </span>\r\n </div>\r\n )}\r\n </CardBody>\r\n </Card>\r\n {/* )} */}\r\n </>\r\n ))\r\n : 'No Saved Mascots'}\r\n </div>\r\n </div>\r\n <div className={`flex gap-[24px] h-[48px] mt-[26px] float-right`}>\r\n <button\r\n className={`border border-[#353535] w-[160px] p-3 font-bold ${\r\n !logoSelected && 'opacity-70'\r\n }`}\r\n onClick={() => handleEditLogo(logoData)}\r\n >\r\n Edit\r\n </button>\r\n <button\r\n disabled={!logoSelected}\r\n onClick={() => handleApplyLogo(logoData)}\r\n className={`border p-3 w-[160px] ${\r\n logoSelected\r\n ? 'bg-[#e11a38] border-[#e11a38] text-white font-bold '\r\n : 'bg-[#e11a38] border-[#e11a38] text-white font-bold opacity-70'\r\n }`}\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport const useDebounce = (value: any, milliSeconds: number) => {\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n useEffect(() => {\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, milliSeconds);\r\n\r\n return () => {\r\n clearTimeout(handler);\r\n };\r\n }, [value, milliSeconds]);\r\n\r\n return debouncedValue;\r\n};\r\n","import React from 'react';\r\nimport { Button } from 'reakit';\r\n\r\nexport const IconButtonLabel = ({\r\n icon,\r\n onClick,\r\n className = '',\r\n label = '',\r\n iconPosition = 'left',\r\n ...props\r\n}) => {\r\n return (\r\n <Button\r\n className={`flex items-center gap-2 text-base font-bold flex-1 justify-center focus:outline-none ${className}`}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n {iconPosition === 'left' && (\r\n <>\r\n {icon}\r\n {label}\r\n </>\r\n )}\r\n {iconPosition === 'right' && (\r\n <>\r\n {label}\r\n {icon}\r\n </>\r\n )}\r\n </Button>\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\nexport const EditButton = ({ label, icons, onClick, className, children }) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex rounded-none gap-3 items-center ${className}`}\r\n >\r\n {icons}\r\n {label}\r\n {children}\r\n </button>\r\n );\r\n };","import React from 'react';\r\nimport { TEXT_SIZE_2 } from '../../theme';\r\nimport { IoMdCheckmarkCircle, IconButton } from '../icon';\r\n\r\nexport interface CardCheckMarkProps {\r\n checkMarkClass?: string;\r\n size?: any;\r\n}\r\nexport const CardCheckMark = ({ checkMarkClass, size }: CardCheckMarkProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`absolute top-1/2 left-2/4 ${TEXT_SIZE_2} ${checkMarkClass}`}\r\n style={{ transform: 'translate(-50%, -50%)' }}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<IoMdCheckmarkCircle />}\r\n className={`pointer-events-auto cursor-pointer`}\r\n size={size}\r\n ></IconButton>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { HiOutlineDownload, IconButton } from '../icon';\r\n\r\nexport interface CardDownIconProps {\r\n downloadClass?: string;\r\n downloadIconClass?: string;\r\n iconClass?: string;\r\n pdfUrl?: string;\r\n}\r\nexport const CardDownloadIcon = ({\r\n downloadClass,\r\n downloadIconClass,\r\n iconClass,\r\n pdfUrl,\r\n}: CardDownIconProps) => {\r\n return (\r\n <>\r\n <a\r\n href={pdfUrl}\r\n download={'Design Sheet'}\r\n target=\"_blank\"\r\n className={`flex items-center gap-[0.4375rem] ${downloadIconClass}`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<HiOutlineDownload />}\r\n className={`pointer-events-auto cursor-pointer ${iconClass}`}\r\n size=\"1rem\"\r\n ></IconButton>\r\n\r\n <span className={`${downloadClass}`}>VIEW DESIGN SHEET</span>\r\n </a>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardFlagProps {\r\n flag?: string;\r\n flagClass?: string;\r\n}\r\nexport const CardFlag = ({ flag, flagClass }: CardFlagProps) => {\r\n return (\r\n <>\r\n <div className={`absolute top-0 left-0 ${flagClass}`}>{flag}</div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardDescProps {\r\n children?: React.ReactNode;\r\n descriptionClass?: string;\r\n}\r\nexport const CardDescription = ({ children, descriptionClass }: CardDescProps) => {\r\n return (\r\n <>\r\n <p className={`${descriptionClass}`}>{children}</p>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Input as InputImpl, InputHTMLProps } from 'reakit';\r\n\r\nexport const input = React.forwardRef<HTMLInputElement, InputHTMLProps>(\r\n (props, ref) => {\r\n return (\r\n <InputImpl\r\n // @ts-ignore\r\n ref={ref}\r\n {...props}\r\n className={`${props.className}`}\r\n />\r\n );\r\n }\r\n);\r\n","import React from 'react';\r\nimport { IconButton, RxCross2 } from '../icon';\r\nimport { BACKDROP_BLUR, BACKDROP_BLUR_BG_COLOR, SAVERACK_TEXT_COLOR } from '../../theme';\r\n\r\nexport interface GlobalModalProps {\r\n backdropStyle?: string;\r\n children?: React.ReactNode;\r\n contentStyle?: string;\r\n crossOnClick?: () => void;\r\n modalStyle?: string;\r\n}\r\n\r\nexport const Modal = ({\r\n backdropStyle,\r\n children,\r\n contentStyle,\r\n crossOnClick,\r\n modalStyle,\r\n}: GlobalModalProps) => {\r\n return (\r\n <div>\r\n <div\r\n className={`${backdropStyle} absolute top-0 left-0 h-screen w-full ${BACKDROP_BLUR} ${BACKDROP_BLUR_BG_COLOR}`}\r\n ></div>\r\n\r\n <dialog\r\n open\r\n className={`${contentStyle} absolute shadow-[0 2px 8px rgba(0, 0, 0, 0.26)] ml-[auto] md:mr-[0%] mr-[auto]`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<RxCross2 strokeWidth={1} onClick={crossOnClick} />}\r\n className={\r\n `z-10 pointer-events-auto cursor-pointer ${SAVERACK_TEXT_COLOR} font-bold !absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[1.25rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none`\r\n }\r\n size=\"1.2rem\"\r\n ></IconButton>\r\n <div\r\n className={`flex flex-col justify-center gap-[1.75rem] ${modalStyle}`}\r\n >\r\n {children}\r\n </div>\r\n </dialog>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nexport interface ModalButtonsProps {\r\n buttonMainClass?: string;\r\n buttons?: {\r\n buttonClass?: string;\r\n label?: string;\r\n onClick?: () => void;\r\n style?: React.CSSProperties;\r\n }[];\r\n}\r\nexport const ModalButtons = ({ buttonMainClass, buttons }: ModalButtonsProps) => {\r\n return (\r\n <div\r\n className={`flex flex-col lg:flex-row gap-[1.5625rem] leading-[1.4375rem] font-bold ${buttonMainClass}`}\r\n >\r\n {buttons?.map((button, index) => (\r\n <button\r\n key={index}\r\n onClick={button.onClick}\r\n className={`w-full py-[0.7188rem] rounded-none font-bold uppercase ${button.buttonClass}`}\r\n style={button.style}\r\n >\r\n {button.label}\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\nimport { HiOutlineDownload, IconButton } from '../icon';\r\n\r\nexport interface ModalDownLoadIconProps {\r\n downloadClass?: string;\r\n downloadIconClass?: string;\r\n iconClass?: string;\r\n pdfUrl?: string;\r\n}\r\nexport const ModalDownloadIcon = ({\r\n downloadClass,\r\n downloadIconClass,\r\n iconClass,\r\n pdfUrl,\r\n}: ModalDownLoadIconProps) => {\r\n return (\r\n <>\r\n <div className={`flex justify-center items-center`}>\r\n <a\r\n href={pdfUrl}\r\n download={'Design Sheet'}\r\n target=\"_blank\"\r\n className={`flex items-center cursor-pointer gap-[0.6875rem] font-bold ${downloadIconClass}`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<HiOutlineDownload />}\r\n className={`pointer-events-auto ${iconClass}`}\r\n size=\"1.1rem\"\r\n ></IconButton>\r\n\r\n <span className={`uppercase ${downloadClass}`}>\r\n VIEW DESIGN SHEET\r\n </span>\r\n </a>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface ModalHeadingProps {\r\n children?: React.ReactNode;\r\n headingStyle?: string;\r\n}\r\nexport const ModalHeading = ({ children, headingStyle }: ModalHeadingProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`flex flex-col gap-[1.625rem] justify-center items-center text-center ${headingStyle}`}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\n\r\nexport interface ModalLabelProps {\r\n children?: React.ReactNode;\r\n labelStyle?: string;\r\n}\r\nexport const ModalLabel = ({ children, labelStyle }: ModalLabelProps) => {\r\n return (\r\n <>\r\n <p className={`${labelStyle}`}>{children}</p>\r\n </>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\nimport { IconButton } from '../icon';\r\n\r\nexport interface ModalStatusProps {\r\n icon?: JSX.Element;\r\n onIconClick?: () => void;\r\n children?: React.ReactNode;\r\n iconStyle?: string;\r\n}\r\nexport const ModalStatusIcon = ({\r\n icon,\r\n onIconClick,\r\n iconStyle,\r\n children,\r\n}: ModalStatusProps) => {\r\n return (\r\n <>\r\n <div className={`flex justify-center`} onClick={onIconClick}>\r\n <IconButton\r\n label={''}\r\n icon={icon}\r\n className={`pointer-events-auto cursor-pointer h-[auto] ${iconStyle}`}\r\n size=\"6.3rem\"\r\n ></IconButton>\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React, { useEffect } from 'react';\r\n//import { StepperTypes } from '../../store/actions/types';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport {\r\n SELECT_BG_COLOR,\r\n //BORDER_COLOR,\r\n TEXT_SIZE_1,\r\n TEXT_SIZE_2,\r\n SELECT_TEXT_COLOR,\r\n BUTTON_TEXT_COLOR,\r\n TEXT_COLOR_1,\r\n INPUT_TEXT_DISABLE_COLOR,\r\n} from '../../theme';\r\nimport { AddText, IconButton, MyLogo, RLogo } from '../icon';\r\nimport { MdOutlineFileUpload } from 'react-icons/md';\r\nimport { BiSolidColorFill } from 'react-icons/bi';\r\nimport { FaRegImage } from 'react-icons/fa6';\r\n\r\nexport const LeftMenu = () => {\r\n const [\r\n setSelectedStepper,\r\n selectedStepper,\r\n addText,\r\n getStockLogos,\r\n loadingLogo,\r\n setDisplayProductColor,\r\n hasUploadScreen,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.setSelectedStepper,\r\n state.selectedStepper,\r\n state.addText,\r\n state.getStockLogos,\r\n state.loadingLogo,\r\n state.setDisplayProductColor,\r\n state.hasUploadScreen,\r\n ],\r\n shallow\r\n );\r\n const StepperList = [\r\n {\r\n name: 'Upload File',\r\n icon: <MdOutlineFileUpload />,\r\n id: 1,\r\n display: true,\r\n },\r\n {\r\n name: 'My Logos',\r\n icon: <MyLogo />,\r\n id: 2,\r\n display: true,\r\n },\r\n {\r\n name: 'Add Text',\r\n icon: <AddText />,\r\n id: 3,\r\n display: true,\r\n },\r\n {\r\n name: 'Add Mascots',\r\n icon: <FaRegImage />,\r\n id: 4,\r\n display: true,\r\n },\r\n {\r\n name: 'product Color',\r\n icon: <BiSolidColorFill />,\r\n id: 5,\r\n display: true,\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n return () => {};\r\n }, []);\r\n\r\n return (\r\n <div className=\"flex flex-row md:flex-col\">\r\n <div\r\n className={` flex flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n >\r\n <div\r\n className={`bg-[#CB1732] flex justify-center cursor-pointer px-2.5 py-4 `}\r\n >\r\n <div className=\" flex flex-col items-center justify-center\">\r\n <span className={` ${TEXT_SIZE_2} py-2`}>\r\n <IconButton\r\n label={''}\r\n icon={<RLogo />}\r\n size=\"2rem\"\r\n className={`${TEXT_COLOR_1} pointer-events-auto cursor-pointer m-auto`}\r\n ></IconButton>\r\n </span>\r\n <span\r\n className={`${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`}\r\n >\r\n Logo Designer\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className={` flex h-[100%] flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n >\r\n {StepperList?.map((step) => (\r\n <div\r\n className={\r\n step.id === selectedStepper\r\n ? `${SELECT_BG_COLOR} flex justify-center cursor-pointer px-2.5 py-4 `\r\n : 'flex justify-center px-2.5 py-4 ' +\r\n (hasUploadScreen\r\n ? ''\r\n : 'cursor-pointer group hover:bg-[#e11a38]')\r\n }\r\n key={step.id}\r\n style={!step.display ? { display: 'none' } : {}}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n if (!hasUploadScreen) {\r\n setSelectedStepper(step.id);\r\n if (step.id === 3) {\r\n addText();\r\n }\r\n if (step.id === 4) {\r\n getStockLogos();\r\n }\r\n if (step.id === 2) {\r\n loadingLogo('');\r\n }\r\n if (step.id === 5) {\r\n setDisplayProductColor();\r\n }\r\n }\r\n }}\r\n >\r\n <div\r\n className={`flex flex-col items-center justify-center gap-1 ${\r\n hasUploadScreen ? '' : 'group-hover:bg-[#e11a38]'\r\n }`}\r\n >\r\n <span\r\n className={\r\n step.id === selectedStepper\r\n ? ` ${TEXT_SIZE_2} py-2`\r\n : ` ${TEXT_SIZE_2} py-2`\r\n }\r\n >\r\n <IconButton\r\n label={''}\r\n icon={step.icon}\r\n size=\"2rem\"\r\n className={`${\r\n step.id === selectedStepper\r\n ? BUTTON_TEXT_COLOR\r\n : hasUploadScreen\r\n ? INPUT_TEXT_DISABLE_COLOR\r\n : TEXT_COLOR_1\r\n } pointer-events-auto m-auto group-active:text-white ${\r\n hasUploadScreen\r\n ? ''\r\n : 'cursor-pointer group-hover:text-white'\r\n }`}\r\n ></IconButton>\r\n </span>\r\n <span\r\n className={\r\n step.id === selectedStepper\r\n ? `${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`\r\n : `${\r\n hasUploadScreen\r\n ? INPUT_TEXT_DISABLE_COLOR\r\n : TEXT_COLOR_1\r\n } ${TEXT_SIZE_1} uppercase font-bold text-center ${\r\n hasUploadScreen ? '' : 'group-hover:text-white'\r\n }`\r\n }\r\n >\r\n {step.name}\r\n </span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","! function(t) {\n var s = {};\n\n function i(h) {\n if (s[h]) return s[h].exports;\n var e = s[h] = {\n i: h,\n l: !1,\n exports: {}\n };\n return t[h].call(e.exports, e, e.exports, i), e.l = !0, e.exports\n }\n i.m = t, i.c = s, i.d = function(t, s, h) {\n i.o(t, s) || Object.defineProperty(t, s, {\n configurable: !1,\n enumerable: !0,\n get: h\n })\n }, i.r = function(t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n })\n }, i.n = function(t) {\n var s = t && t.__esModule ? function() {\n return t.default\n } : function() {\n return t\n };\n return i.d(s, \"a\", s), s\n }, i.o = function(t, s) {\n return Object.prototype.hasOwnProperty.call(t, s)\n }, i.p = \"\", i(i.s = 4)\n}([function(t, s, i) {\n var h = i(1),\n e = i(3);\n t.exports = class {\n constructor(t, s) {\n this.source = s, this.A = new h(s.left, s.top), this.B = new h(s.right, s.top), this.C = new h(s.right, s.bottom), this.D = new h(s.left, s.bottom), this.Aleft = new h(s.left, s.top + s.height / 3), this.Atop = new h(s.left + s.width / 3, s.top), this.Btop = new h(s.right - s.width / 3, s.top), this.Bright = new h(s.right, s.top + s.height / 3), this.Cright = new h(s.right, s.bottom - s.height / 3), this.Cbottom = new h(s.right - s.width / 3, s.bottom), this.Dbottom = new h(s.left + s.width / 3, s.bottom), this.Dleft = new h(s.left, s.bottom - s.height / 3), this.ABx = 0, this.ABy = 0, this.CDx = 0, this.CDy = 0, this.BCx = 0, this.BCy = 0, this.ADx = 0, this.ADy = 0, this.STEPS = 10, this.distortX = 0, this.distortY1 = 0, this.distortY2 = 0, this.T1 = 1 / 3, this.T2 = 2 / 3, this.kAB = 0, this.kBC = 0, this.kCD = 0, this.kAD = 0, this.angle, this.sin, this.cos, this.kt, this.applyParameters(t)\n }\n applyParameters(t) {\n var s = this.source,\n i = this._parameters = new e(t);\n this.angle = i.bend * Math.PI / 2, this.sin = Math.sin(this.angle), this.cos = Math.cos(this.angle), this.kt = 1 + Math.pow(i.bend, 4), this.distortX = .5 * i.distortV * s.width;\n var h = .5 * i.distortH * s.height;\n switch (this.distortY1 = h * (1 - i.distortV), this.distortY2 = h * (1 + i.distortV), this.kAB = 1 - i.distortV, this.kBC = 1 + i.distortH, this.kCD = 1 + i.distortV, this.kAD = 1 - i.distortH, this.setAnchors(), i.type) {\n case \"WARP_ARC\":\n this.setArc();\n break;\n case \"WARP_ARC_LOWER\":\n this.setArcLower();\n break;\n case \"WARP_ARC_UPPER\":\n this.setArcUpper();\n break;\n case \"WARP_ARCH\":\n this.setArch();\n break;\n case \"WARP_BULGE\":\n this.setBulge();\n break;\n case \"WARP_FLAG\":\n this.setFlag();\n break;\n case \"WARP_FISH\":\n this.setFish();\n break;\n case \"WARP_RISE\":\n this.setRise();\n break;\n case \"WARP_INFLATE\":\n this.setInflate();\n break;\n case \"WARP_SQUEEZE\":\n this.setSqueeze();\n break;\n case \"WARP_WAVE_LOWER\":\n this.setWaveLower();\n break;\n case \"WARP_WAVE_UPPER\":\n this.setWaveUpper()\n }\n }\n setAnchors() {\n this.A.x = this.source.left + this.distortX, this.B.x = this.source.right - this.distortX, this.C.x = this.source.right + this.distortX, this.D.x = this.source.left - this.distortX, this.A.y = this.source.top + this.distortY1, this.B.y = this.source.top - this.distortY1, this.C.y = this.source.bottom + this.distortY2, this.D.y = this.source.bottom - this.distortY2\n }\n setControls() {\n this.Atop.x = this.A.x + this.ABx, this.Atop.y = this.A.y + this.ABy, this.Btop.x = this.B.x - this.ABx, this.Btop.y = this.B.y - this.ABy, this.Dbottom.x = this.D.x + this.CDx, this.Dbottom.y = this.D.y + this.CDy, this.Cbottom.x = this.C.x - this.CDx, this.Cbottom.y = this.C.y - this.CDy, this.Bright.x = this.B.x + this.BCx, this.Bright.y = this.B.y + this.BCy, this.Cright.x = this.C.x - this.BCx, this.Cright.y = this.C.y - this.BCy, this.Aleft.x = this.A.x + this.ADx, this.Aleft.y = this.A.y + this.ADy, this.Dleft.x = this.D.x - this.ADx, this.Dleft.y = this.D.y - this.ADy\n }\n changeCubic(t, s, i, h) {\n let e = this._changePoint(t),\n o = this._changePoint(h),\n r = this.getPointOn(1 / 3, t, h, s, i),\n n = this.getPointOn(2 / 3, t, h, s, i),\n a = this._changePoint(r),\n y = this._changePoint(n);\n return this.getNewSegment(e, o, a, y)\n }\n changePoint(t) {\n var s = this._changePoint(t);\n return [s.x, s.y]\n }\n _changePoint(t) {\n let s = this.A,\n i = this.Atop,\n e = this.Aleft,\n o = this.B,\n r = this.Btop,\n n = this.Bright,\n a = this.C,\n y = this.Cright,\n x = this.Cbottom,\n c = this.D,\n A = this.Dbottom,\n C = this.Dleft;\n var d = (t.x - this.source.x) / this.source.width,\n b = (t.y - this.source.y) / this.source.height,\n p = 1 - b,\n B = this.getPointOn(b, s, c, e, C),\n l = this.getPointOn(b, o, a, n, y),\n D = new h(i.x * p + A.x * b, i.y * p + A.y * b),\n m = new h(r.x * p + x.x * b, r.y * p + x.y * b),\n k = this.getPointOn(d, B, l, D, m);\n return new h(k.x, k.y)\n }\n getPointOn(t, s, i, e, o) {\n var r = new h,\n n = t * t * t,\n a = t * t;\n return r.x = n * (i.x + 3 * (e.x - o.x) - s.x) + 3 * a * (s.x - 2 * e.x + o.x) + 3 * t * (e.x - s.x) + s.x, r.y = n * (i.y + 3 * (e.y - o.y) - s.y) + 3 * a * (s.y - 2 * e.y + o.y) + 3 * t * (e.y - s.y) + s.y, r\n }\n setArc() {\n var t = this._parameters,\n s = this.source,\n i = 1 - t.distortV;\n t.bend > 0 ? (this.A.x -= i * (s.height - this.distortY1) * this.sin, this.B.x += i * (s.height + this.distortY1) * this.sin, this.A.y += (s.height - this.distortY1) * (1 - this.cos), this.B.y += (s.height + this.distortY1) * (1 - this.cos), this.C.x -= this.distortY2 * this.sin, this.D.x -= this.distortY2 * this.sin, this.C.y += this.distortY2 * (this.cos - 1), this.D.y -= this.distortY2 * (this.cos - 1)) : t.bend < 0 && (this.D.x += i * (s.height - this.distortY2) * this.sin, this.C.x -= i * (s.height + this.distortY2) * this.sin, this.D.y += (s.height - this.distortY2) * (this.cos - 1), this.C.y += (s.height + this.distortY2) * (this.cos - 1), this.A.x += this.distortY1 * this.sin, this.B.x += this.distortY1 * this.sin, this.A.y -= this.distortY1 * (1 - this.cos), this.B.y += this.distortY1 * (1 - this.cos)), this.calculateArms(), this.setControls(), this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y -= this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y -= this.CDx * this.sin * this.kt\n }\n setFish() {\n var t = this._parameters;\n this.calculateArms(), this.setControls(), this.Atop.y -= 2 * t.bend * this.kAB * (2 * this.ADy + this.BCy), this.Btop.y += 2 * t.bend * this.kAB * (this.ADy + 2 * this.BCy), this.Dbottom.y += 2 * t.bend * this.kCD * (2 * this.ADy + this.BCy), this.Cbottom.y -= 2 * t.bend * this.kCD * (this.ADy + 2 * this.BCy)\n }\n setFlag() {\n this.calculateArms(), this.setControls();\n var t = this._parameters;\n this.Atop.y += 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Btop.y -= 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Dbottom.y += 3 * t.bend * this.kCD * (this.ADy + this.BCy), this.Cbottom.y -= 3 * t.bend * this.kCD * (this.ADy + this.BCy)\n }\n setBulge() {\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y += this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y += this.CDx * this.sin * this.kt\n }\n setArch() {\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y -= this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y -= this.CDx * this.sin * this.kt\n }\n setArcLower() {\n this.calculateArms(), this.setControls(), this._parameters, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y += this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y += this.CDx * this.sin * this.kt\n }\n setArcUpper() {\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt\n }\n setSqueeze() {\n this.calculateArms(), this.setControls();\n var t = this._parameters;\n this.Atop.y -= t.bend * this.kAB * this.ADy, this.Btop.y -= t.bend * this.kAB * this.BCy, this.Dbottom.y += t.bend * this.kCD * this.ADy, this.Cbottom.y += t.bend * this.kCD * this.BCy, this.Bright.x -= t.bend * this.kBC * this.ABx, this.Cright.x -= t.bend * this.kBC * this.CDx, this.Aleft.x += t.bend * this.kAD * this.ABx, this.Dleft.x += t.bend * this.kAD * this.CDx\n }\n setInflate() {\n this.calculateArms(), this.setControls();\n var t = this._parameters,\n s = (this.ADy + this.BCy) / 2,\n i = (this.ABx + this.CDx) / 2;\n this.Atop.y -= t.bend * this.kAB * s, this.Btop.y -= t.bend * this.kAB * s, this.Dbottom.y += t.bend * this.kCD * s, this.Cbottom.y += t.bend * this.kCD * s, this.Bright.x += t.bend * this.kBC * i, this.Cright.x += t.bend * this.kBC * i, this.Aleft.x -= t.bend * this.kAD * i, this.Dleft.x -= t.bend * this.kAD * i\n }\n setRise() {\n var t = this._parameters;\n this.A.y += t.bend * this.kAB * source.height, this.D.y += t.bend * this.kCD * source.height, this.B.y -= t.bend * this.kAB * source.height, this.C.y -= t.bend * this.kCD * source.height, this.calculateArms(), this.setControls();\n var s = this.ADy + this.BCy;\n this.Atop.y += t.bend * this.kAB * s, this.Btop.y -= t.bend * this.kAB * s, this.Dbottom.y += t.bend * this.kCD * s, this.Cbottom.y -= t.bend * this.kCD * s\n }\n setWaveUpper() {\n this.calculateArms(), this.setControls();\n var t = this._parameters;\n this.Atop.y += 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Btop.y -= 3 * t.bend * this.kAB * (this.ADy + this.BCy)\n }\n setWaveLower() {\n this.calculateArms(), this.setControls();\n var t = this._parameters;\n this.Dbottom.y += 3 * t.bend * this.kCD * (this.ADy + this.BCy), this.Cbottom.y -= 3 * t.bend * this.kCD * (this.ADy + this.BCy)\n }\n calculateArms() {\n this.ABx = (this.B.x - this.A.x) / 3, this.ABy = (this.B.y - this.A.y) / 3, this.CDx = (this.C.x - this.D.x) / 3, this.CDy = (this.C.y - this.D.y) / 3, this.BCx = (this.C.x - this.B.x) / 3, this.BCy = (this.C.y - this.B.y) / 3, this.ADx = (this.D.x - this.A.x) / 3, this.ADy = (this.D.y - this.A.y) / 3\n }\n getNewSegment(t, s, i, e) {\n var o = this.T1,\n r = o * o * o,\n n = 1 - o,\n a = n * n * n,\n y = this.T2,\n x = y * y * y,\n c = 1 - y,\n A = c * c * c,\n C = 3 * o * n,\n d = {};\n d.x = (i.x - a * t.x - r * s.x) / C, d.y = (i.y - a * t.y - r * s.y) / C;\n var b = 3 * y * c,\n p = {};\n p.x = (e.x - A * t.x - x * s.x) / b, p.y = (e.y - A * t.y - x * s.y) / b;\n var B = {};\n B.x = (y * d.x - o * p.x) / (n * p.x - c * d.x), B.y = (y * d.y - o * p.y) / (n * p.y - c * d.y), isNaN(B.x) && (B.x = 0), isNaN(B.y) && (B.y = 0);\n var l = {},\n D = {};\n D.x = d.x / (n * B.x + o), D.y = d.y / (n * B.y + o), l.x = B.x * D.x, l.y = B.y * D.y;\n var m = new h(l.x, l.y),\n k = new h(D.x, D.y);\n return [m.x, m.y, k.x, k.y, s.x, s.y]\n }\n }\n}, function(t, s) {\n t.exports = class {\n constructor(t = 0, s = 0) {\n if (\"number\" != typeof t || \"number\" != typeof s) throw new Exception(\"Invalid points\");\n let i = t || 0,\n h = s || 0;\n i && (i = parseInt(1e3 * i) / 1e3), h && (h = parseInt(1e3 * h) / 1e3), this._props = [i, h], this[0] = i, this[1] = h\n }\n set x(t) {\n this[0] = t, this._props[0] = t\n }\n set y(t) {\n this[1] = t, this._props[1] = t\n }\n get x() {\n return this._props[0]\n }\n get y() {\n return this._props[1]\n }\n }\n}, function(t, s) {\n t.exports = class {\n constructor(t, s, i, h) {\n this.x = t, this.y = s, this.width = i, this.height = h, this.top = s, this.bottom = s + h, this.left = t, this.right = t + i\n }\n }\n}, function(t, s, i) {\n i(0);\n t.exports = class {\n constructor(t) {\n this.type = t.type || 0, this.bend = t.bend || 0, this.distortV = t.distortV || 0, this.distortH = t.distortH || 0, this.vertical = t.vertical || !1\n }\n }\n}, function(t, s, i) {\n var h = i(1),\n e = i(0),\n o = i(2),\n r = \"C\",\n n = \"Q\",\n a = \"L\",\n y = \"M\",\n x = \"Z\",\n c = class {\n constructor(t) {\n this.data = [], this.commands = [], this.parseString(t)\n }\n parseString(t) {\n var s = [],\n i = [];\n t.match(/[A-Za-z][0-9\\.\\s\\,\\-]+\\d/g).forEach(t => {\n var h = t[0],\n e = t.match(/[\\d\\.\\-]+/g);\n s.push(h), i.push(...e.map(parseFloat))\n }), this.commands = s, this.data = i\n }\n scale(t, s = 0) {\n 0 == s && (s = t);\n const i = this.data;\n for (let h = 0; h < i.length; h += 2) i[h] *= t, i[h + 1] *= s\n }\n warp(t) {\n let s = new e(t, this.calcRectangle()),\n i = this.commands,\n o = this.data,\n n = [],\n a = new h,\n y = new h,\n c = new h,\n A = new h,\n C = 0,\n d = new h;\n for (let t = 0; t < i.length; t++) {\n switch (i[t]) {\n case \"L\":\n i[t] = r, a = new h((2 * A[0] + o[C]) / 3, (2 * A[1] + o[C + 1]) / 3), y = new h((A[0] + 2 * o[C]) / 3, (A[1] + 2 * o[C + 1]) / 3), d = new h(o[C], o[C + 1]), n = n.concat(s.changeCubic(A, a, y, d)), A = d, C += 2;\n break;\n case \"Q\":\n i[t] = r, a = new h((2 * o[C] + A.x) / 3, (2 * o[C + 1] + A.y) / 3), y = new h((2 * o[C] + o[C + 2]) / 3, (2 * o[C + 1] + o[C + 3]) / 3), d = new h(o[C + 2], o[C + 3]), n = n.concat(s.changeCubic(A, a, y, d)), A = d, C += 4;\n break;\n case \"M\":\n A = c = new h(o[C], o[C + 1]), n = n.concat(s.changePoint(A)), C += 2;\n break;\n case \"C\":\n n = n.concat(s.changeCubic(A, new h(o[C], o[C + 1]), new h(o[C + 2], o[C + 3]), new h(o[C + 4], o[C + 5]))), A = new h(o[C + 4], o[C + 5]), C += 6;\n break;\n case x:\n A = c\n }\n }\n this.data = n\n }\n output() {\n var t = [],\n s = this.data.slice();\n for (let i = 0; i < this.commands.length; i++) {\n let h = this.commands[i],\n e = 0;\n switch (h) {\n case \"M\":\n case \"L\":\n e = 2;\n break;\n case \"Q\":\n e = 4;\n break;\n case \"C\":\n e = 6\n }\n t.push(h + s.splice(0, e).join(\" \"))\n }\n return t.join(\" \")\n }\n calcRectangle() {\n let t = this.commands,\n s = this.data;\n for (var i, h, e = {\n xMin: 1 / 0,\n yMin: 1 / 0,\n xMax: -1 / 0,\n yMax: -1 / 0\n }, x = 0, c = 0; c < t.length; c++) {\n switch (t[c]) {\n case y:\n case a:\n i = s[x], h = s[x + 1], x += 2;\n break;\n case n:\n i = s[x + 2], h = s[x + 3], x += 4;\n break;\n case r:\n i = s[x + 4], h = s[x + 5], x += 6\n }\n e.xMin = Math.min(i, e.xMin), e.xMax = Math.max(i, e.xMax), e.yMin = Math.min(h, e.yMin), e.yMax = Math.max(h, e.yMax)\n }\n return e.xMax == -1 / 0 ? null : new o(e.xMin, e.yMin, e.xMax - e.xMin, e.yMax - e.yMin)\n }\n };\n t.exports = c, \"undefined\" != typeof window && (window.Path = c)\n}]);","import React from 'react';\r\n\r\nconst errorPopup = ({ allColor }) => {\r\n return (\r\n <>\r\n <div className=\"errorPanel flex z-[100] w-full py-[20px]\">\r\n <div className=\"text-[#E11A38] text-[16px] font-size-[14px] font-bold flex-col\">\r\n <span className=\"flex\">COLORS IN DESIGN ({allColor.length})</span>\r\n <span className=\"flex\">\r\n MAX COLORS EXCEEDED, REDUCE THE TOTAL COLOR COUNT TO 8 OR FEWER\r\n COLORS PER SIDE.\r\n </span>\r\n {/* <div className=\"flex mt-3\">\r\n {allColor?.map((item) => {\r\n return (\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group mr-[16px]`}\r\n style={{ backgroundColor: item }}\r\n />\r\n );\r\n })} */}\r\n {/*<div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#000000] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#ffffff] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#DE802E] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#D13F42] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#DE802E] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#D13F42] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#010101] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#BBBBBB] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#E4BB30] mr-[16px]`}\r\n /> */}\r\n {/* </div> */}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default errorPopup;\r\n","import { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { useEffect, useMemo, useState } from 'react';\r\nimport { ColorImpl, ColorPalette } from '../colorPallet';\r\nimport React from 'react';\r\nimport { Tab, initTE } from 'tw-elements';\r\nimport {\r\n BORDER_COLOR_1,\r\n INPUT_BG_COLOR,\r\n SELECT_BG_COLOR,\r\n TEXT_COLOR_1,\r\n TEXT_SIZE_3,\r\n // TEXT_SIZE_9,\r\n} from '../../theme';\r\n// import { ImageEdit } from './imageEdit';\r\nimport { IconButton, HorizontalFlip, VerticalFlip } from '../icon';\r\nimport { defaultColorNames } from '../../assets/colors/colors';\r\nimport './rightMenu.css';\r\nimport { FiAlignCenter, FiAlignLeft, FiAlignRight } from 'react-icons/fi';\r\nimport { load } from 'opentype.js';\r\nimport { fabric } from 'fabric';\r\nimport '../../services/path-warp.js';\r\nimport { MdOutlineCancel } from 'react-icons/md';\r\nimport ErrorPopup from '../canvas/errorPopUp'; //Importing ErrorPopup Panel component which is displaying buttons\r\nconst fontFamilies = [\r\n {\r\n name: 'Accel',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/accelerator_richardson.woff',\r\n },\r\n {\r\n name: 'Athletic Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/athletic.ttf',\r\n },\r\n {\r\n name: 'Ballpark',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/ballpark.TTF ',\r\n },\r\n {\r\n name: 'BebasKai',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/BebasKai.otf',\r\n },\r\n {\r\n name: 'Beton CG ExtraBold',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/Beton_CG_ExtraBold_Regular.otf',\r\n },\r\n {\r\n name: 'Brush Script',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/brush-script-3.ttf',\r\n },\r\n {\r\n name: 'Century',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/richcent.woff',\r\n },\r\n {\r\n name: 'City Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/cityb.woff',\r\n },\r\n {\r\n name: 'Condensed Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/aoalpha0.woff',\r\n },\r\n {\r\n name: 'Copper',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/copgothb.woff',\r\n },\r\n {\r\n name: 'Eupo Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/handgotb.woff',\r\n },\r\n {\r\n name: 'Full Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/full_block.woff',\r\n },\r\n {\r\n name: 'Heritage',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/bebaskai-regular.woff',\r\n },\r\n {\r\n name: 'LakesightPersonalUseOnly',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/SocietyEditor_Personal_Use.ttf',\r\n },\r\n {\r\n name: 'Machine',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/machinen.woff',\r\n },\r\n {\r\n name: 'Magento',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/magnetob.woff',\r\n },\r\n {\r\n name: 'Niramit Extrabold',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/Niramit-Bold.ttf',\r\n },\r\n\r\n {\r\n name: 'Plain',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/plain.woff',\r\n },\r\n {\r\n name: 'Pro Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/pro_block.woff',\r\n },\r\n {\r\n name: 'Puff',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/new.woff',\r\n },\r\n {\r\n name: 'SocietyEditorPersonalUse',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/SocietyEditor_Personal_Use.ttf',\r\n },\r\n {\r\n name: 'Square',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/sqr721be.woff',\r\n },\r\n {\r\n name: 'Swiss Condensed',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/swz721bc.woff',\r\n },\r\n {\r\n name: 'Tiffany',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/tiffany.woff',\r\n },\r\n {\r\n name: 'Times',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/timesrich.woff',\r\n },\r\n {\r\n name: 'Uni Script',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/scrpjet2.woff',\r\n },\r\n];\r\n\r\nexport const Rightmenu = () => {\r\n initTE({ Tab });\r\n const textSelected = use3dddPlus.getState().activeSelection;\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n const [\r\n colorFill,\r\n currentSelection,\r\n activeSelection,\r\n textInfo,\r\n activeObj,\r\n storeAllObject,\r\n allColor,\r\n setToggleSaveLogo,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.colorFill,\r\n state.currentSelection,\r\n state.activeSelection,\r\n state.textInfo,\r\n state.activeSelection,\r\n state.storeAllObject,\r\n state.allColor,\r\n state.setToggleSaveLogo,\r\n ],\r\n shallow\r\n );\r\n const [textAlignDisplay, setTextAlignDisplay] = useState(false);\r\n // const [outlineVal, setOutlineVal] = useState(0);\r\n // const [spacingVal, setSpacinglineVal] = useState(1);\r\n // const [sliderValue, setSliderValue] = useState(20);\r\n const [fontStyle, setFontStyle] = useState({\r\n bold: false,\r\n italic: false,\r\n underline: false,\r\n });\r\n const [activeButton, setActiveButton] = useState<string | null>(null);\r\n const [activeTab, setActiveTab] = useState(1);\r\n const [shapeSizeVal, setShapeSizeVal] = useState(50);\r\n const [textLength, setTextLength] = useState(\r\n textSelected && textSelected.text ? textSelected.text.length : 0\r\n );\r\n const [bridgeshapeBendSize, setBridgeShapeBendSize] = useState(-25);\r\n const [bowtieshapeBendSize, setBowtieShapeBendSize] = useState(-12);\r\n const [isNextClicked, setIsNextClicked] = useState(false);\r\n\r\n const [displayPallet, setDisplayPallet] = useState({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n const [position, setPosition] = useState(null);\r\n\r\n const tabs = [\r\n { id: 1, label: 'Properties' },\r\n { id: 2, label: 'Layers' },\r\n ];\r\n const textShapes = [\r\n {\r\n name: 'None',\r\n src: '',\r\n },\r\n {\r\n name: 'Arc',\r\n src: '',\r\n },\r\n {\r\n name: 'Bridge',\r\n src: '',\r\n },\r\n {\r\n name: 'Bowtie',\r\n src: '',\r\n },\r\n {\r\n name: 'Vertical Arch',\r\n src: '',\r\n },\r\n {\r\n name: 'Reverse Vertical Arch',\r\n src: '',\r\n },\r\n ];\r\n useEffect(() => {\r\n if (!activeSelection) return;\r\n use3dddPlus.setState({ textInfo: activeSelection.text });\r\n }, [activeSelection]);\r\n useEffect(() => {\r\n if (\r\n currentSelection === 'text' ||\r\n currentSelection === 'group' ||\r\n currentSelection === 'selectAll' ||\r\n currentSelection === 'none'\r\n ) {\r\n setActiveTab(1);\r\n } else if (\r\n currentSelection === 'layer' ||\r\n currentSelection === 'activeSelection'\r\n ) {\r\n setActiveTab(2);\r\n }\r\n }, [currentSelection]);\r\n const textToPath = async (objects) => {\r\n let promises = [];\r\n let pathObj = null;\r\n objects.forEach((object) => {\r\n promises = [\r\n ...promises,\r\n new Promise((resolve) => {\r\n // console.log(object.type)\r\n if (object.type === 'text') {\r\n // console.log(object.fontFamily);\r\n let fontSource = fontFamilies.filter(\r\n (o) => o.name === object.fontFamily\r\n )[0].src;\r\n // console.log(fontSource);\r\n load(fontSource, (error, font) => {\r\n if (error) {\r\n console.error(error);\r\n }\r\n // console.log(\"font loaded\", font);\r\n const path = font.getPath(object.text, 0, 0, object.fontSize, {\r\n fontSize: object.get('fontSize'),\r\n fill: object.get('fill'),\r\n stroke: object.get('stroke'),\r\n strokeWidth: object.get('strokeWidth'),\r\n });\r\n const fabricPath = new fabric.Path(path.toPathData(20), {});\r\n pathObj = fabricPath;\r\n resolve(pathObj);\r\n });\r\n }\r\n }),\r\n ];\r\n });\r\n //resolve all promises\r\n await Promise.all(promises);\r\n //return it\r\n // console.log(pathObj)\r\n return pathObj;\r\n };\r\n const setShapeSizeOnTextPath = (val) => {\r\n // console.log(textSelected,val);\r\n if (!textSelected || !textSelected['pathData']) {\r\n return;\r\n }\r\n //@ts-ignore\r\n let p = new Path(textSelected['pathData'].toClipPathSVG());\r\n textSelected.shapeSize = val;\r\n switch (textSelected['shapeType']) {\r\n case 'None': {\r\n break;\r\n }\r\n case 'Arc': {\r\n p.warp({\r\n type: 'WARP_ARC',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bridge': {\r\n p.warp({\r\n type: 'WARP_ARC_LOWER',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bowtie': {\r\n p.warp({\r\n type: 'WARP_BULGE',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Vertical Arch': {\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Reverse Vertical Arch': {\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n let newTextPath = new fabric.Path(p.output());\r\n // add new textPath\r\n canvas.add(newTextPath);\r\n newTextPath['pathData'] = textSelected.pathData;\r\n newTextPath['colorFill'] = textSelected.colorFill;\r\n newTextPath['id'] = textSelected.id;\r\n newTextPath['shapeSize'] = val;\r\n newTextPath['shapeType'] = textSelected.shapeType;\r\n // carry forward the text properties over the path for further changes\r\n newTextPath['fill'] = textSelected.fill;\r\n newTextPath['fontFamily'] = textSelected.fontFamily;\r\n newTextPath['fontWeight'] = textSelected.fontWeight;\r\n newTextPath['stroke'] = textSelected.stroke;\r\n newTextPath['strokeWidth'] = textSelected.strokeWidth;\r\n newTextPath['padding'] = textSelected.padding;\r\n newTextPath['fontSize'] = textSelected.fontSize;\r\n newTextPath['charSpacing'] = textSelected.charSpacing;\r\n newTextPath['textAlign'] = textSelected.textAlign;\r\n newTextPath['fontStyle'] = textSelected.fontStyle;\r\n newTextPath['text'] = textSelected.text;\r\n\r\n // Set the same position scale matching with existing text\r\n newTextPath.left = textSelected.left;\r\n newTextPath.top = textSelected.top;\r\n newTextPath.width = textSelected.width;\r\n newTextPath.height = textSelected.height;\r\n newTextPath.scaleX = textSelected.scaleX;\r\n newTextPath.scaleY = textSelected.scaleY;\r\n newTextPath.setCoords();\r\n //@ts-ignore\r\n let dims = newTextPath._calcDimensions();\r\n newTextPath.width = dims.width;\r\n newTextPath.height = dims.height;\r\n\r\n // delete the text object\r\n canvas.remove(textSelected);\r\n // set active object as path text\r\n canvas.setActiveObject(newTextPath);\r\n use3dddPlus.setState({ activeSelection: newTextPath });\r\n\r\n // textSelected.path = newTextPath.path;\r\n textSelected._removeCacheCanvas();\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n newTextPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(newTextPath);\r\n };\r\n\r\n const bridgeShapeChange = () => {\r\n if (textSelected && textSelected.shapeType) {\r\n if (\r\n textSelected &&\r\n textSelected.text &&\r\n textSelected.text.length > textLength\r\n ) {\r\n if (textSelected.shapeType === 'Bridge') {\r\n setBridgeShapeBendSize(bridgeshapeBendSize + 3);\r\n } else {\r\n setBowtieShapeBendSize(bowtieshapeBendSize + 1);\r\n }\r\n } else {\r\n if (textSelected.shapeType === 'Bridge') {\r\n setBridgeShapeBendSize(bridgeshapeBendSize - 2);\r\n } else {\r\n setBowtieShapeBendSize(bowtieshapeBendSize - 1);\r\n }\r\n }\r\n if (textSelected && textSelected.text && textSelected.text.length > 10) {\r\n setBridgeShapeBendSize(-10);\r\n setBowtieShapeBendSize(-5);\r\n }\r\n setTextLength(textSelected.text.length);\r\n }\r\n };\r\n const textShapeChange = async (\r\n e,\r\n textChange = false,\r\n fontSize = null,\r\n charSpacing = null,\r\n strokeWidth = null,\r\n fontWeight = null,\r\n textAlign = null,\r\n fontStyle = null\r\n ) => {\r\n let pathData = null;\r\n let p = null;\r\n let shapeType = e && e.target ? e.target.value : e;\r\n if (!shapeType) {\r\n shapeType = textSelected.shapeType;\r\n }\r\n // setShapeType(shapeType);\r\n // if the selection is a text object then convert the text into path for shape deformation\r\n if (currentSelection === 'text') {\r\n pathData = await textToPath([textSelected]);\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n setBridgeShapeBendSize(-25);\r\n setBowtieShapeBendSize(-12);\r\n setTextLength(textSelected.text.length);\r\n }\r\n // when user changes the text value & text shape is applied\r\n else if (currentSelection === 'path' && textChange) {\r\n if (textSelected.text && textSelected.text.trim() === '') {\r\n textSelected.path = [];\r\n textSelected._removeCacheCanvas();\r\n canvas.renderAll();\r\n return;\r\n }\r\n // create a temp text with same properties & convert to path\r\n const text: any = new fabric.Text(textSelected.text, {\r\n lineHeight: 1,\r\n fill: textSelected.fill,\r\n fontFamily: textSelected.fontFamily,\r\n fontWeight: fontWeight ? fontWeight : textSelected.fontWeight,\r\n top: textSelected.top,\r\n left: textSelected.left,\r\n stroke: textSelected.stroke,\r\n strokeWidth: strokeWidth ? strokeWidth : textSelected.strokeWidth,\r\n fontStyle: fontStyle ? fontStyle : textSelected.fontStyle,\r\n paintFirst: 'stroke',\r\n charSpacing: charSpacing ? charSpacing : textSelected.charSpacing,\r\n padding: textSelected.padding,\r\n fontSize: fontSize ? fontSize : textSelected.fontSize,\r\n textAlign: textAlign ? textAlign : textSelected.textAlign,\r\n name: 'text',\r\n lockScalingFlip: true,\r\n centeredScaling: true,\r\n text: textSelected.text,\r\n width: textSelected.width,\r\n height: textSelected.height,\r\n });\r\n text.set({\r\n //@ts-ignore\r\n colorFill: textSelected.colorFill,\r\n fontWeight: fontWeight,\r\n });\r\n text.left = textSelected.left;\r\n text.top = textSelected.top;\r\n text.width = textSelected.width;\r\n text.height = textSelected.height;\r\n text.scaleX = textSelected.scaleX;\r\n text.scaleY = textSelected.scaleY;\r\n text.id = textSelected.id;\r\n\r\n pathData = await textToPath([text]);\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n }\r\n // when the selection is path but no change in the text string\r\n else if (currentSelection === 'path' && !textChange) {\r\n pathData = textSelected.pathData;\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n } else {\r\n return;\r\n }\r\n // console.log(shapeType)\r\n switch (shapeType) {\r\n case 'None': {\r\n setShapeSizeVal(0);\r\n textSelected.shapeType = 'None';\r\n // revert back to text type object\r\n const text: any = new fabric.Text(textSelected.text, {\r\n lineHeight: 1,\r\n fill: textSelected.fill,\r\n fontFamily: textSelected.fontFamily,\r\n fontWeight: fontWeight ? fontWeight : textSelected.fontWeight,\r\n top: textSelected.top,\r\n left: textSelected.left,\r\n stroke: textSelected.stroke,\r\n strokeWidth: strokeWidth ? strokeWidth : textSelected.strokeWidth,\r\n fontStyle: fontStyle ? fontStyle : textSelected.fontStyle,\r\n paintFirst: 'stroke',\r\n charSpacing: charSpacing ? charSpacing : textSelected.charSpacing,\r\n padding: textSelected.padding,\r\n fontSize: fontSize ? fontSize : textSelected.fontSize,\r\n textAlign: textAlign ? textAlign : textSelected.textAlign,\r\n name: 'text',\r\n lockScalingFlip: true,\r\n centeredScaling: true,\r\n text: textSelected.text,\r\n });\r\n text.set({\r\n //@ts-ignore\r\n colorFill: textSelected.colorFill,\r\n fontWeight: fontWeight,\r\n });\r\n text.left = textSelected.left;\r\n text.top = textSelected.top;\r\n text.width = text.getBoundingRect().width;\r\n text.height = text.getBoundingRect().height;\r\n text.scaleX = textSelected.scaleX;\r\n text.scaleY = textSelected.scaleY;\r\n text.id = textSelected.id;\r\n\r\n // delete the active text object\r\n canvas.remove(textSelected);\r\n textSelected._removeCacheCanvas();\r\n canvas.setActiveObject(null);\r\n canvas.renderAll();\r\n\r\n // Add the text object keeping same properties\r\n canvas.add(text);\r\n text.setCoords();\r\n\r\n // set active object as path text\r\n canvas.setActiveObject(text);\r\n use3dddPlus.setState({ activeSelection: text });\r\n\r\n //@ts-ignore\r\n use3dddPlus.getState().forIconCapture();\r\n text['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(text);\r\n // canvas.setActiveObject(text);\r\n // use3dddPlus.setState({ activeSelection: text });\r\n canvas.renderAll();\r\n // cancel performing further functions & return back from function\r\n return;\r\n }\r\n case 'Arc': {\r\n setShapeSizeVal(50);\r\n textSelected.shapeType = 'Arc';\r\n p.warp({\r\n type: 'WARP_ARC',\r\n bend: 50 / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bridge': {\r\n setShapeSizeVal(-25);\r\n bridgeShapeChange();\r\n textSelected.shapeType = 'Bridge';\r\n p.warp({\r\n type: 'WARP_ARC_LOWER',\r\n bend: bridgeshapeBendSize / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bowtie': {\r\n setShapeSizeVal(-12);\r\n bridgeShapeChange();\r\n textSelected.shapeType = 'Bowtie';\r\n p.warp({\r\n type: 'WARP_BULGE',\r\n bend: bowtieshapeBendSize / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Vertical Arch': {\r\n setShapeSizeVal(35);\r\n textSelected.shapeType = 'Vertical Arch';\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: 35 / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Reverse Vertical Arch': {\r\n setShapeSizeVal(-35);\r\n textSelected.shapeType = 'Reverse Vertical Arch';\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: -35 / 100 || 0,\r\n });\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n // take out the update path with shape type deformation\r\n let fabricPath = new fabric.Path(p.output());\r\n textSelected['pathData'] = pathData;\r\n // add object only when converting from text to path\r\n if (currentSelection === 'text') {\r\n // add the path text object on canvas\r\n canvas.add(fabricPath);\r\n fabricPath['pathData'] = pathData;\r\n fabricPath['colorFill'] = textSelected.colorFill;\r\n fabricPath['shapeSize'] = shapeSizeVal;\r\n fabricPath['shapeType'] = shapeType;\r\n // carry forward the text properties over the path for further changes\r\n fabricPath['fill'] = textSelected.fill;\r\n fabricPath['fontFamily'] = textSelected.fontFamily;\r\n fabricPath['fontWeight'] = textSelected.fontWeight;\r\n fabricPath['stroke'] = textSelected.stroke;\r\n fabricPath['strokeWidth'] = textSelected.strokeWidth;\r\n fabricPath['padding'] = textSelected.padding;\r\n fabricPath['fontSize'] = textSelected.fontSize;\r\n fabricPath['charSpacing'] = textSelected.charSpacing;\r\n fabricPath['textAlign'] = textSelected.textAlign;\r\n fabricPath['fontStyle'] = textSelected.fontStyle;\r\n fabricPath['text'] = textSelected.text;\r\n fabricPath['id'] = textSelected.id;\r\n\r\n // Set the same position scale matching with existing text\r\n fabricPath.left = textSelected.left;\r\n fabricPath.top = textSelected.top;\r\n fabricPath.width = textSelected.width;\r\n fabricPath.height = textSelected.height;\r\n fabricPath.scaleX = textSelected.scaleX;\r\n fabricPath.scaleY = textSelected.scaleY;\r\n fabricPath.setCoords();\r\n //@ts-ignore\r\n let dims = fabricPath._calcDimensions();\r\n fabricPath.width = dims.width;\r\n fabricPath.height = dims.height;\r\n\r\n // var sel = new fabric.ActiveSelection(fabricPath, { canvas: canvas });\r\n // canvas.setActiveObject(sel).requestRenderAll();\r\n // delete the text object\r\n canvas.remove(textSelected);\r\n // set active object as path text\r\n canvas.setActiveObject(fabricPath);\r\n use3dddPlus.setState({ activeSelection: fabricPath });\r\n use3dddPlus.getState().forIconCapture();\r\n fabricPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(fabricPath);\r\n }\r\n // update the text path object with new shape type\r\n else {\r\n // add new textPath\r\n let newTextPath = new fabric.Path(p.output());\r\n newTextPath['pathData'] = textSelected.pathData;\r\n newTextPath['colorFill'] = textSelected.colorFill;\r\n newTextPath['shapeSize'] = textSelected.shapeSize;\r\n newTextPath['shapeType'] = textSelected.shapeType;\r\n newTextPath['fill'] = textSelected.fill;\r\n newTextPath['fontFamily'] = textSelected.fontFamily;\r\n newTextPath['fontWeight'] = textSelected.fontWeight;\r\n newTextPath['stroke'] = textSelected.stroke;\r\n newTextPath['strokeWidth'] = textSelected.strokeWidth;\r\n newTextPath['padding'] = textSelected.padding;\r\n newTextPath['fontSize'] = textSelected.fontSize;\r\n newTextPath['charSpacing'] = textSelected.charSpacing;\r\n newTextPath['textAlign'] = textSelected.textAlign;\r\n newTextPath['fontStyle'] = textSelected.fontStyle;\r\n newTextPath['text'] = textSelected.text;\r\n // set same position & scale\r\n newTextPath['left'] = textSelected.left;\r\n newTextPath['top'] = textSelected.top;\r\n newTextPath['width'] = textSelected.width;\r\n newTextPath['height'] = textSelected.height;\r\n newTextPath['scaleX'] = textSelected.scaleX;\r\n newTextPath['scaleY'] = textSelected.scaleY;\r\n newTextPath['id'] = textSelected.id;\r\n\r\n // delete the active text object\r\n var activeObj = canvas.getActiveObject();\r\n canvas.remove(activeObj);\r\n if (activeObj && activeObj !== null) {\r\n activeObj._removeCacheCanvas();\r\n }\r\n\r\n // add & set active new path text\r\n canvas.add(newTextPath);\r\n canvas.setActiveObject(newTextPath);\r\n use3dddPlus.setState({ activeSelection: newTextPath });\r\n newTextPath.setCoords();\r\n\r\n //@ts-ignore\r\n let dims = newTextPath._calcDimensions();\r\n newTextPath.width = dims.width;\r\n newTextPath.height = dims.height;\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n newTextPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(newTextPath);\r\n }\r\n canvas.renderAll();\r\n let brNew = use3dddPlus.getState().activeSelection.getBoundingRect();\r\n while (\r\n Math.ceil(brNew.width + brNew.left + 45) >= Math.floor(canvas.width) ||\r\n Math.ceil(brNew.height + brNew.top + 10) >= Math.floor(canvas.height) ||\r\n Math.ceil(brNew.left) < 0 ||\r\n Math.ceil(brNew.top) < 0\r\n ) {\r\n textSelected.set('fontSize', textSelected.fontSize - 0.1);\r\n canvas.remove(canvas.getActiveObject());\r\n await textShapeChange(textSelected.shapeType, true);\r\n const activeObj = canvas.getActiveObject();\r\n brNew.left = activeObj.left;\r\n brNew.width = activeObj.width;\r\n brNew.top = activeObj.top;\r\n brNew.height = activeObj.height;\r\n textSelected.setCoords();\r\n canvas.renderAll();\r\n }\r\n };\r\n const updateStoreAllObject = (text) => {\r\n // @ts-ignore\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(textSelected);\r\n // let object = [{ objects: [] }];\r\n // const canvasGetobject = use3dddPlus.getState().fabricCanvas.getObjects();\r\n // canvasGetobject.forEach((element: any) => {\r\n // if (element && element.shapeType) {\r\n // element.type = 'path';\r\n // }\r\n // object[0].objects.push(element);\r\n // });\r\n // use3dddPlus.getState().storeHistory.push(object[0]); // for updateModifaction\r\n use3dddPlus.getState().updateModifaction(true);\r\n\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === textSelected.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index, 0, text);\r\n };\r\n const textShapeSizeHandler = (e) => {\r\n setShapeSizeVal(e.target.valueAsNumber);\r\n textSelected.shapeSize = e.target.valueAsNumber;\r\n console.log(e.target.valueAsNumber);\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n\r\n setShapeSizeOnTextPath(textSelected.shapeSize);\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n };\r\n\r\n const reduceFontSize = async () => {\r\n let brNew = textSelected.getBoundingRect();\r\n let canvasWidth = 0;\r\n let canvasHeight = 0;\r\n if (textSelected && textSelected.canvas && textSelected.canvas.width) {\r\n canvasWidth = textSelected.canvas.width;\r\n canvasHeight = textSelected.canvas.height;\r\n } else {\r\n canvasWidth = canvas.width;\r\n canvasHeight = canvas.height;\r\n }\r\n while (\r\n Math.ceil(brNew.width + brNew.left + 45) > Math.floor(canvasWidth) ||\r\n Math.ceil(brNew.height + brNew.top + 10) > Math.floor(canvasHeight) ||\r\n Math.ceil(brNew.left) < 0 ||\r\n Math.ceil(brNew.top) < 0\r\n ) {\r\n textSelected.set('fontSize', textSelected.fontSize - 0.1);\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n canvas.renderAll();\r\n const activeObj = canvas.getActiveObject();\r\n brNew.left = activeObj.left;\r\n brNew.width = activeObj.width;\r\n brNew.top = activeObj.top;\r\n brNew.height = activeObj.height;\r\n } else {\r\n brNew = textSelected.getBoundingRect();\r\n }\r\n textSelected.setCoords();\r\n // canvas.renderAll();\r\n }\r\n };\r\n\r\n const onTextChange = async (e) => {\r\n const lines = e.target.value.split('\\n');\r\n lines.length == 1 ? setTextAlignDisplay(false) : setTextAlignDisplay(true);\r\n use3dddPlus.setState({ textInfo: e.target.value });\r\n textSelected['text'] = e.target.value;\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n }\r\n // let textWidth = textSelected.width;\r\n // const canvasWidth = canvas.width;\r\n reduceFontSize();\r\n // var newFontSize =\r\n // (canvasWidth / (brNew.width + brNew.left)) * textSelected.fontSize;\r\n // textSelected.set('fontSize', textSelected.fontSize - 3);\r\n textSelected.setCoords();\r\n canvas.renderAll();\r\n reduceFontSize();\r\n canvas.renderAll();\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n };\r\n const textAlignHandler = (e) => {\r\n console.log(e.target.id);\r\n setActiveButton(e.target.id);\r\n textSelected.set('textAlign', e.target.id);\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n // const handleSliderChange = (event) => {\r\n // let fontSize = textSelected.fontSize;\r\n // let toReduceSize = event.target.value - fontSize;\r\n // let dublicateText = textSelected;\r\n // // let brNew;\r\n // dublicateText.set('fontSize', event.target.value);\r\n // // if (currentSelection === 'path') {\r\n // // textShapeChange(dublicateText.shapeType, true);\r\n // // brNew = use3dddPlus.getState().activeSelection.getBoundingRect();\r\n // // } else {\r\n // // brNew = dublicateText.getBoundingRect();\r\n // // }\r\n // const brNew = dublicateText.getBoundingRect();\r\n // if (\r\n // brNew.width + brNew.left + 45 >= textSelected.canvas.width ||\r\n // brNew.height + brNew.top + 10 >= textSelected.canvas.height ||\r\n // brNew.left < 45 ||\r\n // brNew.top < 10\r\n // ) {\r\n // if (currentSelection === 'path') {\r\n // textSelected.set(\r\n // 'fontSize',\r\n // event.target.value - (Math.sign(toReduceSize) >= 0 ? toReduceSize : 1)\r\n // );\r\n // textShapeChange(textSelected.shapeType, true);\r\n // } else {\r\n // if (brNew.left < 0) {\r\n // textSelected.set('left', textSelected.left + 1);\r\n // }\r\n // if (brNew.top < 0) {\r\n // textSelected.set('top', textSelected.top + 1);\r\n // }\r\n // textSelected.set(\r\n // 'fontSize',\r\n // event.target.value - (Math.sign(toReduceSize) >= 0 ? toReduceSize : 1)\r\n // );\r\n // }\r\n // } else {\r\n // if (fontSize > event.target.value) {\r\n // textSelected.set('top', textSelected.top + 1);\r\n // textSelected.set('left', textSelected.left + 1);\r\n // } else {\r\n // textSelected.set('top', textSelected.top - 1);\r\n // textSelected.set('left', textSelected.left - 1);\r\n // }\r\n // textSelected.set('fontSize', event.target.value);\r\n // if (currentSelection === 'path') {\r\n // textShapeChange(textSelected.shapeType, true);\r\n // }\r\n // canvas.renderAll();\r\n // // setSliderValue(event.target.value);\r\n // }\r\n // };\r\n\r\n const reduceLeft = async () => {\r\n const canvasWidth = textSelected.canvas.width;\r\n const canvasHeight = textSelected.canvas.height;\r\n let brNew = textSelected.getBoundingRect();\r\n while (\r\n Math.ceil(brNew.width + brNew.left + 45) >= Math.floor(canvasWidth) ||\r\n Math.ceil(brNew.height + brNew.top + 10) >= Math.floor(canvasHeight) ||\r\n Math.ceil(brNew.left) < 0 ||\r\n Math.ceil(brNew.top) < 0\r\n ) {\r\n textSelected.set('fontSize', textSelected.fontSize - 0.1);\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n canvas.renderAll();\r\n const activeObj = canvas.getActiveObject();\r\n brNew.left = activeObj.left;\r\n brNew.width = activeObj.width;\r\n brNew.top = activeObj.top;\r\n brNew.height = activeObj.height;\r\n } else {\r\n brNew = textSelected.getBoundingRect();\r\n }\r\n textSelected.setCoords();\r\n canvas.renderAll();\r\n }\r\n };\r\n\r\n const fontChange = (e) => {\r\n fontFamilies.map((item) => {\r\n if (item.name == e.target.value) {\r\n const font = new FontFace(item.name, `url('${item.src}')`);\r\n font.load().then((value) => {\r\n //@ts-ignore\r\n document.fonts?.add(value);\r\n document.body.classList.add('fonts-loaded');\r\n textSelected.set('fontFamily', item.name);\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n reduceLeft();\r\n });\r\n }\r\n });\r\n };\r\n const textColorChange = (property, color: any) => {\r\n console.log(property);\r\n textSelected.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n //textSelected.set('fill', color);\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n // const nudgeMove = (e) => {\r\n // if (e.target.id === 'down') {\r\n // if (textSelected.aCoords.br.y > canvas.height - 2) return;\r\n // use3dddPlus.getState().moveDown(textSelected);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // } else if (e.target.id === 'up') {\r\n // if (textSelected.aCoords.tr.y < 5) return;\r\n // use3dddPlus.getState().moveUp(textSelected);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // } else if (e.target.id === 'right') {\r\n // if (textSelected.aCoords.tr.x > canvas.height - 2) return;\r\n // use3dddPlus.getState().moveRight(textSelected);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // } else if (e.target.id === 'left') {\r\n // if (textSelected.aCoords.tl.x < 2) return;\r\n // use3dddPlus.getState().moveLeft(textSelected);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // }\r\n // };\r\n const textOutlineHandler = (e) => {\r\n // setOutlineVal(e.target.valueAsNumber);\r\n textSelected.strokeWidth = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const strokeColorChange = (property, color) => {\r\n console.log(property);\r\n textSelected.set('stroke', color);\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const textSpacingHandler = (e) => {\r\n // setSpacinglineVal(e.target.valueAsNumber);\r\n let dublicateText = textSelected;\r\n let oldCharSpacing = dublicateText.charSpacing;\r\n dublicateText.charSpacing = e.target.valueAsNumber;\r\n const brNew = dublicateText.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= dublicateText.canvas.width ||\r\n brNew.height + brNew.top >= dublicateText.canvas.height ||\r\n brNew.left < 0 ||\r\n brNew.top < 0\r\n ) {\r\n if (textSelected.charSpacing > e.target.valueAsNumber) {\r\n textSelected.charSpacing = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n } else {\r\n textSelected.charSpacing = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n const brNew = textSelected.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= dublicateText.canvas.width ||\r\n brNew.height + brNew.top >= dublicateText.canvas.height ||\r\n brNew.left < 0 ||\r\n brNew.top < 0\r\n ) {\r\n textSelected.charSpacing = oldCharSpacing;\r\n }\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n };\r\n const textStyle = (e: any, key: string, value: any) => {\r\n if (fontStyle[e.target.id]) textSelected.set(key, '');\r\n else textSelected.set(key, value);\r\n setFontStyle((state) => ({ ...state, [e.target.id]: !state[e.target.id] }));\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const layerHandle = (element, index, num) => {\r\n const currentObject = [...use3dddPlus.getState().storeAllObject];\r\n if (num === 'minus') {\r\n canvas.sendBackwards(element);\r\n use3dddPlus.setState({\r\n storeAllObject: changeArr(currentObject, index, index + 1),\r\n });\r\n } else {\r\n canvas.bringForward(element);\r\n use3dddPlus.setState({\r\n storeAllObject: changeArr(currentObject, index, index - 1),\r\n });\r\n }\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const changeArr = (arr, fromIndex, toIndex) => {\r\n const element = arr.splice(fromIndex, 1)[0];\r\n arr.splice(toIndex, 0, element);\r\n return arr;\r\n };\r\n const deleteElement = (item) => {\r\n canvas.remove(item);\r\n canvas.requestRenderAll();\r\n removeItem(item);\r\n };\r\n const removeItem = (value: any) => {\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n };\r\n const changeSVGTextColor = (property, color) => {\r\n const previousColor = property;\r\n canvas.getObjects().map((data) => {\r\n if (data.type === 'text') {\r\n let _C = data.fill;\r\n if (_C === previousColor) {\r\n data.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n }\r\n // canvas.renderAll();\r\n } else if (data.type === 'path') {\r\n let _C = data.fill;\r\n if (_C === previousColor) {\r\n data.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n }\r\n // canvas.renderAll();\r\n } else if (data.type === 'group') {\r\n // console.log(data);\r\n let objImage = data._objects;\r\n objImage.forEach((ele) => {\r\n const _C =\r\n ele.fill === 'transparent' ||\r\n (typeof ele.fill === 'string' && ele.fill.includes('#'))\r\n ? ele.fill\r\n : RGBToHex(ele.fill);\r\n if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n }\r\n });\r\n const colorFill = { ...data.colorFill };\r\n Object.keys(colorFill).forEach((item) => {\r\n if (colorFill[item] === previousColor) {\r\n colorFill[item] = color;\r\n }\r\n });\r\n data.set({\r\n colorFill: colorFill,\r\n });\r\n }\r\n if (data && data.icon) {\r\n data.icon = data.toDataURL('image/png');\r\n } else if (data._objects && data._objects.length) {\r\n data._objects[0].icon = data.toDataURL('image/png');\r\n }\r\n });\r\n canvas.renderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n\r\n const changeSVGColor = (property, color) => {\r\n const fillColor = colorFill;\r\n const previousColor = fillColor[property];\r\n const SelectedObjet = use3dddPlus.getState().activeSelection;\r\n let objImage = SelectedObjet._objects;\r\n objImage.forEach((ele) => {\r\n const _C =\r\n ele.fill === 'transparent' ||\r\n (typeof ele.fill === 'string' && ele.fill.includes('#'))\r\n ? ele.fill\r\n : RGBToHex(ele.fill);\r\n if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n }\r\n });\r\n\r\n const tempColorFill = { ...SelectedObjet.colorFill };\r\n Object.keys(tempColorFill).forEach((item) => {\r\n if (tempColorFill[item] === previousColor) {\r\n tempColorFill[item] = color;\r\n }\r\n });\r\n SelectedObjet.set({\r\n colorFill: tempColorFill,\r\n });\r\n\r\n canvas.renderAll();\r\n // fillColor[property] = color;\r\n // use3dddPlus.setState({ colorFill: fillColor });\r\n use3dddPlus.setState({ colorFill: tempColorFill });\r\n use3dddPlus.getState().forIconCapture();\r\n SelectedObjet.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n\r\n const RGBToHex = (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n };\r\n const flipX = () => {\r\n activeObj.set({\r\n flipX: !activeObj.flipX,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const flipY = () => {\r\n activeObj.set({\r\n flipY: !activeObj.flipY,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n // activeObj.\r\n canvas.renderAll();\r\n };\r\n\r\n const conflictColors = useMemo(() => {\r\n return allColor.filter(\r\n (c: string) =>\r\n defaultColorNames.findIndex(\r\n (dc) => dc.color.toLowerCase() === c.toLowerCase()\r\n ) < 0\r\n );\r\n }, [allColor]);\r\n\r\n const onSave = () => {\r\n canvas.discardActiveObject();\r\n canvas.renderAll();\r\n if (!conflictColors || conflictColors.length < 1) {\r\n setIsNextClicked(false);\r\n use3dddPlus.setState({ showCrossSave: true });\r\n if (canvas.getObjects().length > 0) {\r\n if (allColor.includes('transparent')) {\r\n if (allColor.length - 1 < 9)\r\n setToggleSaveLogo('save', true, 'Save Logo', {});\r\n else use3dddPlus.getState().toastMessages.noOfColors();\r\n } else {\r\n if (allColor.length < 9)\r\n setToggleSaveLogo('save', true, 'Save Logo', {});\r\n else use3dddPlus.getState().toastMessages.noOfColors();\r\n }\r\n } else {\r\n use3dddPlus.getState().toastMessages.noIteminCanvas();\r\n }\r\n } else {\r\n setIsNextClicked(true);\r\n }\r\n };\r\n\r\n const removeColorPalatte = () => {\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener('click', removeColorPalatte);\r\n const unSub = use3dddPlus.subscribe(\r\n (state) => state.colorFill,\r\n (_current, _previous) => {\r\n // console.log(\"_PREVIUS_COLORFIL\" , _previous);\r\n // console.log(\"_CURRENT_COLOR\",_current);\r\n }\r\n );\r\n return () => {\r\n window.removeEventListener('click', removeColorPalatte);\r\n unSub();\r\n };\r\n }, []);\r\n // console.log(\"====>\",activeSelection,currentSelection)\r\n\r\n const mergedColors = useMemo(() => {\r\n // FOR REMOVING ALL DUPLICATE COLOR CODES\r\n if (textSelected && textSelected?.colorFill) {\r\n let tempColors = [];\r\n let uniqueColors = {};\r\n Object.keys(textSelected?.colorFill)?.map((item: string) => {\r\n if (!tempColors.includes(textSelected?.colorFill[item])) {\r\n tempColors.push(textSelected?.colorFill[item]);\r\n uniqueColors[item] = textSelected?.colorFill[item];\r\n }\r\n });\r\n return uniqueColors;\r\n } else {\r\n return [];\r\n }\r\n }, [textSelected?.colorFill]);\r\n return (\r\n <div\r\n className=\"text-left flex-1 h-[100%] px-[25px] pt-[23px] pb-[5px] relative \"\r\n style={{ paddingLeft: '15px' }}\r\n >\r\n <div className=\"flex flex-col \">\r\n <h1 className=\"text-[22px] font-bold\">Edit Design</h1>\r\n\r\n <div className=\"w-full\">\r\n <div className=\"flex my-4 flex-nowrap\">\r\n {tabs.map((tab) => (\r\n <button\r\n key={tab.id}\r\n className={`${\r\n activeTab === tab.id\r\n ? 'bg-[#E11A38] text-white'\r\n : 'bg-[#fff] text-gray-800'\r\n } py-[10px] px-[40px] focus:outline-none uppercase text-[13px] font-bold`}\r\n onClick={() => {\r\n setActiveTab(tab.id);\r\n if (tab.id === 1) {\r\n use3dddPlus.setState({ currentSelection: 'none' });\r\n canvas.discardActiveObject();\r\n canvas.renderAll();\r\n }\r\n if (tab.id === 2) {\r\n use3dddPlus.setState({ currentSelection: 'layer' });\r\n }\r\n }}\r\n >\r\n {tab.label}\r\n </button>\r\n ))}\r\n </div>\r\n <div className=\"bg-gray-100 w-full p-[5px]\">\r\n {activeTab === 1 && (\r\n <div key={activeTab}>\r\n <div\r\n className={\r\n 'overflow-y-auto overflow-x-hidden' +\r\n (!isNextClicked ||\r\n !conflictColors ||\r\n conflictColors.length < 1\r\n ? ' 2xl:h-[60vh] h-[50vh] sm:h-[55vh]'\r\n : '')\r\n }\r\n >\r\n {(currentSelection === 'text' ||\r\n currentSelection === 'path') && (\r\n <div className=\" \">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Enter Text\r\n </div>\r\n <textarea\r\n value={textInfo}\r\n onChange={onTextChange}\r\n className=\"w-[100%] border border-solid-[1px] border-[#9A9A9A] py-[10px] pl-[16px] mb-[16.5px]\"\r\n placeholder=\"LOGO TEXT\"\r\n />\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Select Font\r\n </div>\r\n <select\r\n name=\"FontStyleNumber\"\r\n id=\"FontStyleNumber\"\r\n value={textSelected.fontFamily}\r\n onChange={fontChange}\r\n // className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid\t ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-current focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid\t ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n >\r\n {fontFamilies.map((list) => {\r\n return (\r\n <>\r\n <option value={list.name}>{list.name}</option>\r\n </>\r\n );\r\n })}\r\n </select>\r\n {/* <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n TEXT SIZE\r\n </div>\r\n <input\r\n type=\"range\"\r\n value={textSelected.fontSize}\r\n onChange={handleSliderChange}\r\n className=\" rangeSlider w-full mb-[16.5px]\"\r\n id=\"slider\"\r\n style={{\r\n background: `linear-gradient(to right, #e11a38 0%, #e11a38 ${textSelected.fontSize}%, #fff ${textSelected.fontSize}%, #fff 100%)`,\r\n }}\r\n /> */}\r\n\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Style\r\n </div>\r\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\r\n {' '}\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.fontWeight === 'bold'\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border font-bold border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] font-bold text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'fontWeight', 'bold')}\r\n id=\"bold\"\r\n >\r\n B\r\n </button>\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.fontStyle &&\r\n textSelected.fontStyle === 'italic'\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border italic border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] italic text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'fontStyle', 'italic')}\r\n id=\"italic\"\r\n >\r\n I\r\n </button>\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.underline &&\r\n textSelected.underline === true\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border underline border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] underline text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) =>\r\n textStyle(e, 'underline', !fontStyle.underline)\r\n }\r\n id=\"underline\"\r\n >\r\n U\r\n </button>\r\n </div>\r\n\r\n {textAlignDisplay === true && (\r\n <div className=\"textAlign\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Align\r\n </div>\r\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\r\n <button\r\n type=\"button\"\r\n className={\r\n 'left' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"left\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignLeft\r\n id=\"left\"\r\n onClick={textAlignHandler}\r\n />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={\r\n 'center' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"center\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignCenter\r\n id=\"center\"\r\n onClick={textAlignHandler}\r\n />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={\r\n 'right' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"right\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignRight\r\n id=\"right\"\r\n onClick={textAlignHandler}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Text Color\r\n </div>\r\n <div className=\"relative flex\">\r\n <ColorImpl\r\n mClass={'ml-0'}\r\n handleChange={textColorChange}\r\n property={'backgroundColor'}\r\n name={'backgroundColor'}\r\n color={activeSelection.fill}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={textColorChange}\r\n />\r\n </div>\r\n <div className=\"flex gap-2 mt-4\">\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Outline Size\r\n </div>\r\n <input\r\n type=\"number\"\r\n id=\"outlineSize\"\r\n name=\"outlineSize\"\r\n step=\"0.2\"\r\n value={textSelected.strokeWidth}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textOutlineHandler}\r\n ></input>\r\n </div>\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Outline Color\r\n </div>\r\n <div className=\"relative flex\">\r\n {' '}\r\n <ColorImpl\r\n mClass={'ml-0'}\r\n handleChange={strokeColorChange}\r\n property={'backgroundColor'}\r\n name={'backgroundColor'}\r\n color={activeSelection.stroke}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={strokeColorChange}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"flex gap-2\">\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Letter Spacing\r\n </div>\r\n <input\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n type=\"number\"\r\n id=\"spacing\"\r\n name=\"spacing\"\r\n step=\"10\"\r\n value={textSelected.charSpacing}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textSpacingHandler}\r\n ></input>\r\n </div>\r\n {/* <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Nudge\r\n </div>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"down\"\r\n className=\"font-medium text-orange-400\"\r\n >\r\n DOWN\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"up\"\r\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\r\n >\r\n UP\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"left\"\r\n className=\"font-medium text-orange-300 text-teal-500\"\r\n >\r\n LEFT\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"right\"\r\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\r\n >\r\n RIGHT\r\n </button>\r\n </div> */}\r\n </div>\r\n <div className=\"flex gap-2\">\r\n <div className=\"w-[50%]\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Text Shape\r\n </div>\r\n <select\r\n name=\"textShape\"\r\n id=\"textShape\"\r\n value={\r\n textSelected.shapeType\r\n ? textSelected.shapeType\r\n : 'None'\r\n }\r\n onChange={textShapeChange}\r\n // className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid   ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-current focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid   ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-offset-0 focus:rounded-sm mb-[16.5px] ml-[2px]`}\r\n >\r\n {textShapes.map((list) => {\r\n return (\r\n <>\r\n <option value={list.name}>{list.name}</option>\r\n </>\r\n );\r\n })}\r\n </select>\r\n </div>\r\n <div className=\"w-[50%]\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Shape Size\r\n </div>\r\n <input\r\n type=\"number\"\r\n id=\"shapeSize\"\r\n name=\"shapeSize\"\r\n step=\"10\"\r\n value={shapeSizeVal}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textShapeSizeHandler}\r\n ></input>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n {currentSelection === 'group' && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">\r\n Colors\r\n </div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px]\">\r\n {/* {allColor &&\r\n allColor?.map((item) => {\r\n return (\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={item}\r\n handleChange={changeSVGTextColor}\r\n property={item}\r\n color={item}\r\n />\r\n );\r\n })} */}\r\n {mergedColors &&\r\n Object.keys(mergedColors)?.map((item, i) => {\r\n return (\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGColor}\r\n property={item}\r\n color={activeSelection.colorFill[item]}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGColor}\r\n />\r\n );\r\n })}\r\n </div>\r\n {/*{(allColor && allColor.includes('transparent')\r\n ? allColor.length - 1\r\n : allColor.length) > 8 && (\r\n <ErrorPopup allColor={allColor} />\r\n )} */}\r\n {/* <div>\r\n <div className=\"font-bold uppercase mt-[17px]\">\r\n Flip\r\n </div>\r\n <div className=\"flex gap-x-[1rem] mt-[12px]\">\r\n <IconButton\r\n key={`index`}\r\n label=\"\"\r\n icon={<FlipH />}\r\n onClick={flipX}\r\n className={` bg-[#fff] cursor-pointer border border-[#EBEBEB]`}\r\n size=\"1.8rem\"\r\n ></IconButton>\r\n <IconButton\r\n key={`index`}\r\n label=\"\"\r\n onClick={flipY}\r\n icon={<FlipV />}\r\n className={` bg-[#fff] cursor-pointer border border-[#EBEBEB]`}\r\n size=\"1.8rem\"\r\n ></IconButton>\r\n </div>\r\n </div> */}\r\n <>\r\n <div className=\"my-[24.5px]\">\r\n <p\r\n className={`text-[1rem] text-[#353535] flex text-left leading-[21px] font-bold mb-[12px] uppercase`}\r\n >\r\n Flip\r\n </p>\r\n <div className=\"flex gap-x-[15px]\">\r\n <IconButton\r\n label=\"\"\r\n icon={<HorizontalFlip />}\r\n className={`!w-[5.625rem] !h-[2.625rem] bg-[#fff] cursor-pointer border border-[#EBEBEB] `}\r\n size=\"1.5rem\"\r\n onClick={flipX}\r\n ></IconButton>\r\n <IconButton\r\n key={`index`}\r\n label=\"\"\r\n icon={<VerticalFlip />}\r\n className={`!w-[5.625rem] !h-[2.625rem] bg-[#fff] cursor-pointer border border-[#EBEBEB] `}\r\n size=\"2.5rem\"\r\n onClick={flipY}\r\n ></IconButton>\r\n </div>\r\n </div>\r\n </>\r\n </>\r\n\r\n // <ImageEdit\r\n // flipX={flipX}\r\n // flipY={flipY}\r\n // // changeSVGColor={changeSVGColor}\r\n // changeSVGTextColor={changeSVGTextColor}\r\n // // nudgeMove={nudgeMove}\r\n // // activeSelection={activeSelection}\r\n // allColor={allColor}\r\n // />\r\n )}\r\n {currentSelection === 'selectAll' && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">\r\n Color in Canvas\r\n </div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px] mb-[12px]\">\r\n {allColor?.map((item, i) => {\r\n return (\r\n // <ColorImpl\r\n // mClass={'mb-[10px]'}\r\n // key={'color-' + i}\r\n // handleChange={changeSVGTextColor}\r\n // property={item}\r\n // color={item}\r\n // />\r\n\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGTextColor}\r\n property={item}\r\n color={item}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGTextColor}\r\n />\r\n );\r\n })}\r\n </div>\r\n {(allColor && allColor.includes('transparent')\r\n ? allColor.length - 1\r\n : allColor.length) > 8 && (\r\n <ErrorPopup allColor={allColor} />\r\n )}\r\n {/* {\r\n // console.log(storeAllObject);\r\n storeAllObject.map((item, index) => {\r\n return (\r\n <div className=\"innerLayer bg-slate-300 my-1\">\r\n <img\r\n className=\"rounded-lg w-14 h-8\"\r\n src={item ? item['icon'] : ''}\r\n ></img>\r\n <button\r\n className=\"up mx-1 px-2 border-solid border-2 border-slate-500 \"\r\n onClick={() => layerHandle(item, index, 'plus')}\r\n >\r\n UP\r\n </button>\r\n <button\r\n className=\"down mx-1 px-2 border-solid border-2 border-slate-500\"\r\n onClick={() =>\r\n layerHandle(item, index, 'minus')\r\n }\r\n >\r\n DOWN\r\n </button>\r\n <button\r\n className=\"close mx-1 px-2 border-solid border-2 border-slate-500\"\r\n onClick={() => deleteElement(item)}\r\n >\r\n DELETE\r\n </button>\r\n </div>\r\n );\r\n })\r\n } */}\r\n </>\r\n )}\r\n {currentSelection === 'none' && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">\r\n Color in Canvas\r\n </div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px]\">\r\n {allColor?.map((item, i) => {\r\n return (\r\n // <ColorImpl\r\n // mClass={'mb-[10px]'}\r\n // key={'color-' + i}\r\n // handleChange={changeSVGTextColor}\r\n // property={item}\r\n // color={item}\r\n // />\r\n\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGTextColor}\r\n property={item}\r\n color={item}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGTextColor}\r\n />\r\n );\r\n })}\r\n </div>\r\n {(allColor && allColor.includes('transparent')\r\n ? allColor.length - 1\r\n : allColor.length) > 8 && (\r\n <ErrorPopup allColor={allColor} />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n {isNextClicked &&\r\n conflictColors &&\r\n conflictColors.length > 0 && (\r\n <div\r\n className=\"mb-[10px]\"\r\n style={{\r\n position: 'absolute',\r\n backgroundColor: '#FFFFFF',\r\n bottom: 0,\r\n padding: '7px',\r\n }}\r\n >\r\n <IconButton\r\n label=\"Close\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className={''}\r\n size=\"1.5rem\"\r\n style={{\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n fontWeight: 'bold',\r\n right: 10,\r\n top: -7,\r\n color: '#FF0000',\r\n }}\r\n ></IconButton>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ fontWeight: 'bold', marginBottom: '3px' }}\r\n >\r\n ERROR: CONFLICT IN COLOR USED\r\n </div>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ marginBottom: '3px' }}\r\n >\r\n Note: The following colors used are not available in\r\n Richardson color palette. Please edit the colors used.\r\n </div>\r\n <div>\r\n {conflictColors.map((c: string, i: number) => {\r\n return (\r\n <div\r\n key={'color-' + i}\r\n style={{\r\n width: '100%',\r\n height: '30px',\r\n lineHeight: '30px',\r\n backgroundColor: c,\r\n textAlign: 'center',\r\n marginBottom: '3px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n mixBlendMode: 'difference',\r\n }}\r\n >\r\n {c}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n )}\r\n\r\n <button\r\n type=\"button\"\r\n className=\"mt-3 inline-flex justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 w-full\"\r\n onClick={onSave}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n )}\r\n {activeTab === 2 && (\r\n <div key={activeTab}>\r\n {(currentSelection === 'layer' ||\r\n currentSelection === 'activeSelection') && (\r\n <div className=\"h-[40vh] sm:h-[55vh] 2xl:h-[60vh] overflow-y-auto overflow-x-hidden\">\r\n {storeAllObject.map((item: any, index) => {\r\n return (\r\n <>\r\n <div className=\"innerLayer border border-[#D7D7D7] my-[16px] h-[80px] flex justify-between\">\r\n <div className=\"imgBox border border-r-[#D7D7D7] bg-slate-200 flex w-[80px]\">\r\n <img\r\n className={`rounded-lg ${\r\n item && item.text ? 'object-contain' : ''\r\n }`}\r\n style={{\r\n // paddingTop: '7px',\r\n height: 'auto',\r\n width: 'auto',\r\n display: 'block',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n // objectFit: 'contain',\r\n }}\r\n src={item ? item['icon'] : ''}\r\n ></img>\r\n </div>\r\n <div className=\"delBtnBox flex-auto \">\r\n <button\r\n onClick={() => deleteElement(item)}\r\n className=\"h-full w-full\"\r\n >\r\n <div className=\"delBtn pointer-events-none flex justify-center \">\r\n <div className=\"upIcon m-auto\">\r\n <svg\r\n width=\"25px\"\r\n height=\"25px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M10 11V17\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 11V17\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M4 7H20\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M6 7H12H18V18C18 19.6569 16.6569 21 15 21H9C7.34315 21 6 19.6569 6 18V7Z\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M9 5C9 3.89543 9.89543 3 11 3H13C14.1046 3 15 3.89543 15 5V7H9V5Z\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div className=\"delBox flex flex-col w-[40px] justify-between items-stretch\">\r\n <button\r\n disabled={index === 0}\r\n onClick={() => layerHandle(item, index, 'plus')}\r\n >\r\n <div className=\"upBtn pointer-events-none flex h-[35px] justify-center \">\r\n <div className=\"upIcon m-auto\">\r\n <svg\r\n fill={index === 0 ? '#cfcccc' : '#9a9a9a'}\r\n height=\"25px\"\r\n width=\"25px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n </div>\r\n </button>\r\n\r\n <button\r\n disabled={index === storeAllObject.length - 1}\r\n onClick={() =>\r\n layerHandle(item, index, 'minus')\r\n }\r\n >\r\n <div className=\"downBtn pointer-events-none flex h-[35px] justify-center\">\r\n <div className=\"downIcon m-auto\">\r\n <svg\r\n transform=\"rotate(180)\"\r\n fill={\r\n index === storeAllObject.length - 1\r\n ? '#cfcccc'\r\n : '#9a9a9a'\r\n }\r\n height=\"25px\"\r\n width=\"25px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n })}\r\n </div>\r\n )}\r\n <button\r\n type=\"button\"\r\n className=\"mt-3 inline-flex justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 w-full\"\r\n onClick={onSave}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n {displayPallet && displayPallet.visible && (\r\n <ColorPalette\r\n mainClass={`left-0`}\r\n handleColorChange={(color) => {\r\n displayPallet.callback(displayPallet.property, color);\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n }}\r\n style={\r\n position\r\n ? {\r\n position: 'fixed',\r\n left: position.x - 450,\r\n top: position.y - 5,\r\n width: '450px',\r\n }\r\n : { display: 'none' }\r\n }\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './loader.css';\r\n\r\nexport const Loader = ({ position = 'overlay', height = '100%' }) => {\r\n const loaderRef = React.useRef<any>();\r\n React.useEffect(() => {\r\n if (!loaderRef) return;\r\n loaderRef.current.style.height = height;\r\n }, [loaderRef]);\r\n return (\r\n <section\r\n ref={loaderRef}\r\n id=\"ls\"\r\n style={\r\n position === 'overlay'\r\n ? { position: 'absolute', opacity: 0.8, top: 0 }\r\n : {}\r\n }\r\n className=\"w-full h-full\"\r\n >\r\n <div id=\"l\"></div>\r\n </section>\r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\n// import { CARD_BG_COLOR } from '../../theme';\r\n// import { RiArrowDownSFill } from 'react-icons/ri';\r\nimport Select, { components } from 'react-select';\r\nconst DropdownIndicator = (props) => {\r\n return (\r\n <components.DropdownIndicator {...props}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n className={`h-5 w-5 text-[#727272]`}\r\n >\r\n <path d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" />\r\n </svg>\r\n </components.DropdownIndicator>\r\n );\r\n};\r\nconst style = {\r\n control: (base) => ({\r\n ...base,\r\n border: '1px solid #BEBEBE',\r\n\r\n boxShadow: 'none',\r\n '&:focus': {\r\n border: 0,\r\n },\r\n '&:hover': {\r\n border: '1px solid #BEBEBE',\r\n },\r\n }),\r\n option: (base, { isFocused, isSelected }) => {\r\n return {\r\n ...base,\r\n backgroundColor: isSelected ? '#e11a38' : '#FFFFFF',\r\n fontWeight: isFocused ? 700 : 400,\r\n color: isSelected && '#ffffff',\r\n ':active': {\r\n backgroundColor: isSelected && '#ffffff',\r\n color: isSelected && '#000',\r\n fontWeight: isSelected && 700,\r\n },\r\n };\r\n },\r\n};\r\nconst ListDropdown = (props) => {\r\n const { dropdownData, handleSelected } = props;\r\n const [data, setData] = useState([]);\r\n\r\n useEffect(() => {\r\n let a = [];\r\n dropdownData.forEach((element) => {\r\n a.push({ value: element, label: element });\r\n });\r\n setData(\r\n a.sort((a, b) => {\r\n if (a.label < b.label) {\r\n return -1;\r\n }\r\n if (a.label > b.label) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n );\r\n }, [dropdownData]);\r\n return (\r\n <>\r\n <div className=\"w-full relative\">\r\n <div className=\"w-full z-10 absolute\">\r\n <Select\r\n className=\"basic-single focus:!outline-none !border-0 focus:!border-0 focus:!ring-0 ring-0 \"\r\n defaultValue={{\r\n value: dropdownData[0],\r\n label: dropdownData[0],\r\n }}\r\n onChange={(e) => handleSelected(e.value)}\r\n isSearchable={true}\r\n name=\"categories\"\r\n options={data}\r\n components={{\r\n IndicatorSeparator: () => null,\r\n DropdownIndicator,\r\n }}\r\n styles={style}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\nexport default ListDropdown;\r\n","export const decorationData =\r\n // prettier-ignore\r\n [\r\n {id:1, code:'',name:'Direct Embroidery', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'DirectEmbroidaryIcon',thumbnail:'',tags:''},\r\n {id:2, code:'',name:'Leather', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewLeatherIcon',thumbnail:'',tags:''},\r\n {id:3, code:'',name:'Patch', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewPatchIcon',thumbnail:'',tags:''},\r\n {id:4, code:'',name:'Transfer', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'TransferIcon',thumbnail:'',tags:''},\r\n {id:5, code:'',name:'Applique', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewAppliqueIcon',thumbnail:'',tags:''},\r\n {id:6, code:'',name:'Clip', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'Clip',thumbnail:'',tags:''},\r\n {id:7, code:'91-APPGLHR',name:'Genuine Etched Leather', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'EtchedLeatherIcon',thumbnail:'',tags:''},\r\n {id:8, code:'91-APPGLDB',name:'Genuine Debossed Leather', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'DebossedLeatherIcon',thumbnail:'',tags:''},\r\n {id:9, code:'91-APPFLHR',name:'Faux Etched Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'EtchedLeatherIcon',thumbnail:'',tags:''},\r\n {id:10, code:'91-APPFLDB',name:'Faux Debossed Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'DebossedLeatherIcon',thumbnail:'',tags:''},\r\n// {id:11, code:'',name:'Genuine Thick Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'LeatherIcon',thumbnail:'',tags:''},\r\n {id:12, code:'91-PATCHEMB',name:'Embroidered Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'EmbroideredPatchIcon',thumbnail:'',tags:''},\r\n {id:13, code:'91-PATCHSUB',name:'Sublimated Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'SublimatedPatchIcon',thumbnail:'',tags:''},\r\n {id:14, code:'91-PATCHWOV',name:'Woven Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'WovenPatchIcon',thumbnail:'',tags:''},\r\n {id:15, code:'91-PATCHPVC',name:'Rubber Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'RubberPatchIcon',thumbnail:'',tags:''},\r\n {id:16, code:'91-DIRSILICONE',name:'Silicon Transfers', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'SiliconTransferIcon',thumbnail:'',tags:''},\r\n {id:17, code:'91-RPOLYPRESS',name:'Poly Press Transfers', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'PolyPressTransferIcon',thumbnail:'',tags:''},\r\n {id:18, code:'91-TRANSFC',name:'Full Color Transfer ', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'FullColorTransferIcon',thumbnail:'',tags:''},\r\n {id:19, code:'91-APPFTL',name:'Felt / Twill Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'FeltAppliqueIcon',thumbnail:'',tags:''},\r\n {id:20, code:'91-WOVENFRT',name:'Woven Label Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'WovenLabelAppliqueIcon',thumbnail:'',tags:''},\r\n {id:21, code:'91-APPFTD',name:'Distressed Twill Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'DistressedTwillAppliqueIcon',thumbnail:'',tags:''},\r\n {id:22, code:'91-APPCRK',name:'Genuine Cork Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'CorkAppliqueIcon',thumbnail:'',tags:''},\r\n {id:23, code:'91-CLPLTHR',name:'Natural Leather Clip', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:24, code:'91-CLPLTHR',name:'Faux Leather Clip ', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:25, code:'91-CLPWOVEN',name:'Woven Label Clip ', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:26, code:'',name:'Rust', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G100.jpg',tags:''},\r\n {id:27, code:'',name:'Tan', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G102.jpg',tags:''},\r\n {id:28, code:'',name:'Brown', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G104.jpg',tags:''},\r\n {id:29, code:'',name:'Black', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G106.jpg',tags:''},\r\n {id:30, code:'',name:'Apple Green', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/APPLE-GREEN-thumbnail.jpg',tags:''},\r\n {id:31, code:'',name:'Balsa', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BALSA-thumbnail.jpg',tags:''},\r\n {id:32, code:'',name:'Black', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BLACK-thumbnail.jpg',tags:''},\r\n {id:33, code:'',name:'Buff', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BUFF-thumbnail.jpg',tags:''},\r\n {id:34, code:'',name:'Chili', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CHILI-thumbnail.jpg',tags:''},\r\n {id:35, code:'',name:'Graphite', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/GRAPHITE-thumbnail.jpg',tags:''},\r\n {id:36, code:'',name:'Java ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/JAVA-thumbnail.jpg',tags:''},\r\n {id:37, code:'',name:'Lipstick', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/LIPSTICK-thumbnail.jpg',tags:''},\r\n {id:38, code:'',name:'Ocean', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/OCEAN-thumbnail.jpg',tags:''},\r\n {id:39, code:'',name:'Sage', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/SAGE-thumbnail.jpg',tags:''},\r\n {id:40, code:'',name:'Snow', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/SNOW-thumbnail.jpg',tags:''},\r\n {id:41, code:'',name:'Steel', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/STEEL-thumbnail.jpg',tags:''},\r\n {id:42, code:'',name:'Straw', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/STRAW-thumbnail.jpg',tags:''},\r\n {id:43, code:'',name:'Williamsburg', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/WILLIAMSBURG-thumbnail.jpg',tags:''},\r\n {id:44, code:'',name:'Royal Metallic Silver', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/ROYAL_METALLIC-thumbnail.jpg',tags:''},\r\n {id:45, code:'',name:'Rustic Brown Metallic Silver', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/RUSTIC-BROWN_METALLIC-thumbnail.jpg',tags:''},\r\n {id:46, code:'',name:'Pink ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/PINK-thumbnail.jpg',tags:''},\r\n {id:47, code:'',name:'Turquoise ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/TURQUOISE-thumbnail.jpg',tags:''},\r\n {id:48, code:'',name:'Bamboo ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BAMBOO-thumbnail.jpg',tags:''},\r\n {id:49, code:'',name:'Natural Leather', description:'', type:'decoration-type-color', linkedNodes:[7,11,23], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/NATURAL-thumbnail.jpg',tags:''},\r\n {id:50, code:'',name:'Chestnut Leather', description:'', type:'decoration-type-color', linkedNodes:[7], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CHESTNUT-thumbnail.jpg',tags:''},\r\n {id:51, code:'',name:'Brown', description:'', type:'decoration-ink-option', linkedNodes:[26,27], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CORK-thumbnail.jpg',tags:''},\r\n {id:52, code:'',name:'Black', description:'', type:'decoration-ink-option', linkedNodes:[28,29], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BLACK_METALLIC-thumbnail.jpg',tags:''},\r\n {id:53, code:'',name:'Tonal', description:'', type:'decoration-ink-option', linkedNodes:[28,29], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CORK-thumbnail.jpg',tags:''},\r\n {id:54, code:'',name:'STANDARD SQUARE', description:'(W x H): 1.81 X 1.81', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15,23,24,25], threeD:false,icon:'STANDARDSQUAREICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_square.svg',tags:''},\r\n {id:55, code:'',name:'SMALL SQUARE', description:'(W x H): 1.5 X 1.5', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLSQUAREICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_square.svg',tags:''},\r\n {id:56, code:'',name:'STANDARD RECTANGLE', description:'(W x H): 2.44 X 1.39', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_rectangle.svg',tags:''},\r\n {id:57, code:'',name:'SMALL RECTANGLE', description:'(W x H): 1.97 X 1.97', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_rectangle.svg',tags:''},\r\n {id:58, code:'',name:'ROUNDED RECTANGLE', description:'(W x H): 1.57 X 1.57', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_rectangle.svg',tags:''},\r\n {id:59, code:'',name:'ROUNDED TOP RECTANGLE', description:'(W x H): 3.01 X 1.73', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDTOPRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_top_rectangle.svg',tags:''},\r\n {id:60, code:'',name:'ROUNDED BOTTOM RECTANGLE', description:'(W x H): 2.62 X 1.34', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDBOTTOMRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_bottom_rectangle.svg',tags:''},\r\n {id:61, code:'',name:'STANDARD CIRCLE', description:'(W x H): 3.19 X 2.02', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDCIRCLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_circle.svg',tags:''},\r\n {id:62, code:'',name:'SMALL CIRCLE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLCIRLCEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_cirlce.svg',tags:''},\r\n {id:63, code:'',name:'STANDARD OVAL', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDOVALICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_oval.svg',tags:''},\r\n {id:64, code:'',name:'SMALL OVAL', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLOVALICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_oval.svg',tags:''},\r\n {id:65, code:'',name:'REVERED TRIANGLE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'REVEREDTRIANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/revered_triangle.svg',tags:''},\r\n {id:66, code:'',name:'BADGE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'BADGEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/badge.svg',tags:''},\r\n {id:67, code:'',name:'HEXAGON', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'HEXAGONICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/hexagon.svg',tags:''},\r\n {id:68, code:'',name:'ELONGATED HEXAGON', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ELONGATEDHEXAGONICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/elongated_hexagon.svg',tags:''},\r\n {id:69, code:'',name:'ELONGATED DIAMOND', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ELONGATEDDIAMONDICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/elongated_diamond.svg',tags:''},\r\n {id:70, code:'',name:'Marrowed', description:'', type:'decoration-edge-type', linkedNodes:[12,13,14,15], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:71, code:'',name:'Satin Stitch Edge ', description:'', type:'decoration-edge-type', linkedNodes:[12,13,14,15], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:72, code:'',name:'Custom',description:'', type:'design-type', linkedNodes:[1,2,3,4,5,6], threeD:false,icon:'CustomDecorationIcon',thumbnail:'',tags:''},\r\n {id:73, code:'',name:'Team Decoration',description:'', type:'design-type', linkedNodes:[1], threeD:false,icon:'TeamDecorationIcon',thumbnail:'',tags:''},\r\n {id:74, code:'91-F1',name:'Design Concepts', description:'', type:'design-type', linkedNodes:[1,2,3,4,5,6], threeD:false,icon:'DesignConceptsIcon',thumbnail:'',tags:''},\r\n {id:75, code:'90-ND200',name:'Text (Wordings)', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'WordingDecorationIcon',thumbnail:'',tags:''},\r\n {id:76, code:'90-TL11C',name:'Team Letters', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'LetterDecorationIcon',thumbnail:'',tags:''},\r\n {id:77, code:'90-ND200',name:'Stock Mascots & Objects', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'MascotDecorationIcon',thumbnail:'',tags:''},\r\n {id:78, code:'90-ND200',name:'Team Custom', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'TeamCustomIcon',thumbnail:'',tags:''},\r\n {id:79, code:'91-F1',name:'Custom File Upload', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n// {id:80, code:'',name:'Supporting File Upload', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:81, code:'91-F1',name:'My Logos', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:82, code:'',name:'Athletic - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'AthleticIcon',thumbnail:'',tags:''},\r\n {id:83, code:'',name:'Resort & Golf - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'ResortGolfIcon',thumbnail:'',tags:''},\r\n {id:84, code:'',name:'Outdoor - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'OutdoorIcon',thumbnail:'',tags:''},\r\n {id:85, code:'',name:'ATHLETICBLOCK', description:'ATHLETIC BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:86, code:'',name:'BALLPARK', description:'BALL PARK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:87, code:'',name:'BLADE', description:'BLADE', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:88, code:'',name:'BOLT', description:'BOLT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:89, code:'',name:'CENTURY', description:'CENTURY', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:90, code:'',name:'CITYBLOCK', description:'CITY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:91, code:'',name:'FANCYBLOCK', description:'FANCY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:92, code:'',name:'FORCE', description:'FORCE', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:93, code:'',name:'FULLBLOCK', description:'FULL BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:94, code:'',name:'HARDBALL', description:'HARD BALL', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:95, code:'',name:'JERSEYBLOCK', description:'JERSEY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:96, code:'',name:'OLDENGLISH', description:'OLD ENGLISH', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:97, code:'',name:'PROBLOCK', description:'PRO BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:98, code:'',name:'SPORTSCRIPT', description:'SPORT SCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:99, code:'',name:'TIFFANY', description:'TIFFANY', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:100, code:'',name:'UNISCRIPT', description:'UNISCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n// {id:101, code:'',name:'UNISCRIPT', description:'UNISCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:102, code:'',name:'VELO', description:'VELO', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n\r\n\r\n{id:103, code:'',name:'ARWH001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/ARWH001.svg',tags:'Arrows'},\r\n{id:104, code:'',name:'ARWH002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/ARWH002.svg',tags:'Arrows'},\r\n{id:105, code:'',name:'BASE002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BASE002.svg',tags:'Balls, Baseball'},\r\n {id:106, code:'',name:'BDOG001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG001.svg',tags:'Bulldogs'},\r\n {id:107, code:'',name:'BDOG003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG003.svg',tags:'Bulldogs'},\r\n{id:108, code:'',name:'BDOG004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG004.svg',tags:'Bulldogs'},\r\n {id:109, code:'',name:'BEAR004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BEAR004.svg',tags:'Bears'},\r\n {id:110, code:'',name:'BEAR005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BEAR005.svg',tags:'Bears'},\r\n{id:111, code:'',name:'BJAY001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BJAY001.svg',tags:'Cardinals'},\r\n{id:112, code:'',name:'BOLT002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BOLT002.svg',tags:'Bolts'},\r\n {id:113, code:'',name:'BULL002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BULL002.svg',tags:'Buffalo & Bulls'},\r\n {id:114, code:'',name:'CARD001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD001.svg',tags:'Cardinals'},\r\n{id:115, code:'',name:'CARD002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD002.svg',tags:'Cardinals'},\r\n {id:116, code:'',name:'CARD006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD006.svg',tags:'Cardinals'},\r\n {id:117, code:'',name:'CATS005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CATS005.svg',tags:'Cats'},\r\n {id:118, code:'',name:'CATS012', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CATS012.svg',tags:'Cats'},\r\n{id:119, code:'',name:'CLVR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CLVR001.svg',tags:'Leaves'},\r\n {id:120, code:'',name:'COBR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/COBR001.svg',tags:'Snakes'},\r\n {id:121, code:'',name:'COWB002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/COWB002.svg',tags:'Cowboys & Rebels'},\r\n{id:122, code:'',name:'CRSS001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CRSS001.svg',tags:'Shapes'},\r\n {id:123, code:'',name:'DEVL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/DEVL001.svg',tags:'Devils'},\r\n {id:124, code:'',name:'DRGN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/DRGN001.svg',tags:'Dragons'},\r\n {id:125, code:'',name:'EAGL004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL004.svg',tags:'Eagles'},\r\n {id:126, code:'',name:'EAGL005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL005.svg',tags:'Eagles'},\r\n// {id:127, code:'',name:'EAGL005_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL005_bu.svg',tags:'Eagles'},\r\n{id:128, code:'',name:'FLAG002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLAG002.svg',tags:'Flags'},\r\n// {id:129, code:'',name:'FLAG002_RIGHT', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLAG002_RIGHT.svg',tags:'Flags'},\r\n{id:130, code:'',name:'FLGW002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002.svg',tags:'Flags'},\r\n// {id:131, code:'',name:'FLGW002_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_bu.svg',tags:'Flags'},\r\n// {id:132, code:'',name:'FLGW002_NO_BORDER', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_NO_BORDER.svg',tags:'Flags'},\r\n// {id:133, code:'',name:'FLGW002_RIGHT', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT.svg',tags:'Flags'},\r\n// {id:134, code:'',name:'FLGW002_RIGHT_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT_bu.svg',tags:'Flags'},\r\n// {id:135, code:'',name:'FLGW002_RIGHT_old', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT_old.svg',tags:'Flags'},\r\n{id:136, code:'',name:'FLUR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLUR001.svg',tags:'Shapes'},\r\n{id:137, code:'',name:'FTBL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FTBL001.svg',tags:'Football,Balls'},\r\n// {id:138, code:'',name:'FTBL001_OG', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FTBL001_OG.svg',tags:'Football,Balls'},\r\n {id:139, code:'',name:'GATR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GATR001.svg',tags:'Gators'},\r\n{id:140, code:'',name:'GOLF004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GOLF004.svg',tags:'Balls'},\r\n {id:141, code:'',name:'GRIZ001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GRIZ001.svg',tags:'Bears'},\r\n{id:142, code:'',name:'HATC002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HATC002.svg',tags:'Objects,Shapes'},\r\n {id:143, code:'',name:'HAWK001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK001.svg',tags:'Hawks'},\r\n {id:144, code:'',name:'HAWK003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK003.svg',tags:'Hawks'},\r\n {id:145, code:'',name:'HAWK004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK004.svg',tags:'Hawks'},\r\n {id:146, code:'',name:'HORS002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS002.svg',tags:'Horses'},\r\n {id:147, code:'',name:'HORS003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS003.svg',tags:'Horses'},\r\n {id:148, code:'',name:'HORS006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS006.svg',tags:'Horses'},\r\n {id:149, code:'',name:'HRNT005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HRNT005.svg',tags:'Hornets'},\r\n {id:150, code:'',name:'INDN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/INDN001.svg',tags:'Indians'},\r\n {id:151, code:'',name:'KNGH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH003.svg',tags:'Knights'},\r\n {id:152, code:'',name:'KNGH004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH004.svg',tags:'Knights'},\r\n// {id:153, code:'',name:'KNGH005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH005.svg',tags:'Knights'},\r\n {id:154, code:'',name:'LION003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION003.svg',tags:'Lions'},\r\n {id:155, code:'',name:'LION004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION004.svg',tags:'Lions'},\r\n {id:156, code:'',name:'LION008', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION008.svg',tags:'Lions'},\r\n {id:157, code:'',name:'LNGH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LNGH003.svg',tags:'Buffalo & Bulls'},\r\n{id:158, code:'',name:'LOGR002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LOGR002.svg',tags:'Logger'},\r\n {id:159, code:'',name:'OWLH001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/OWLH001.svg',tags:'Owls'},\r\n {id:160, code:'',name:'PAWP001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PAWP001.svg',tags:'Paws'},\r\n{id:161, code:'',name:'PAWP004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PAWP004.svg',tags:'Paws'},\r\n {id:162, code:'',name:'PRTE005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PRTE005.svg',tags:'Pirates'},\r\n {id:163, code:'',name:'PTFL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PTFL001.svg',tags:'Pirates'},\r\n {id:164, code:'',name:'RAMH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAMH003.svg',tags:'Rams'},\r\n {id:165, code:'',name:'RAMH008', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAMH008.svg',tags:'Rams'},\r\n {id:166, code:'',name:'RAVN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAVN001.svg',tags:'Ravens'},\r\n {id:167, code:'',name:'RAVN002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAVN002.svg',tags:'Ravens'},\r\n {id:168, code:'',name:'RAZR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAZR003.svg',tags:'Boar'},\r\n {id:169, code:'',name:'REBL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/REBL001.svg',tags:'Cowboys & Rebels'},\r\n {id:170, code:'',name:'SKLL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/SKLL001.svg',tags:'Skulls'},\r\n// {id:171, code:'',name:'STAR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/STAR003.svg',tags:'Ravens'},\r\n {id:172, code:'',name:'TIGR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003.svg',tags:'Tigers'},\r\n// {id:173, code:'',name:'TIGR003_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003_bu.svg',tags:'Tigers'},\r\n// {id:174, code:'',name:'TIGR003_original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003_original.svg',tags:'Tigers'},\r\n// {id:175, code:'',name:'TIGR004 - Original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR004 - Original.svg',tags:'Tigers'},\r\n {id:176, code:'',name:'TIGR004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR004.svg',tags:'Tigers'},\r\n{id:177, code:'',name:'TIGR005 - Original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR005 - Original.svg',tags:'Tigers'},\r\n {id:178, code:'',name:'TIGR005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR005.svg',tags:'Tigers'},\r\n {id:179, code:'',name:'TRJN002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN002.svg',tags:'Spartans'},\r\n {id:180, code:'',name:'TRJN004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN004.svg',tags:'Spartans'},\r\n {id:181, code:'',name:'TRJN006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN006.svg',tags:'Spartans'},\r\n {id:182, code:'',name:'TRND003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRND003.svg',tags:'Bolts'},\r\n {id:183, code:'',name:'VIKG001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIKG001.svg',tags:'Cavaliers & Vikings'},\r\n {id:184, code:'',name:'VIKG006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIKG006.svg',tags:'Cavaliers & Vikings'},\r\n{id:185, code:'',name:'VIPR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIPR001.svg',tags:'Snakes'},\r\n{id:186, code:'',name:'WNGF001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WNGF001.svg',tags:'Wings'},\r\n {id:187, code:'',name:'WOLF005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:'Wolves'},\r\n\r\n {id:188, code:'',name:'ATHLETICBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:189, code:'',name:'BALLPARK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:190, code:'',name:'BLADE', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:191, code:'',name:'BOLT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:192, code:'',name:'CENTURY', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:193, code:'',name:'CITYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/cityb.woff',tags:''},\r\n {id:194, code:'',name:'FANCYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:195, code:'',name:'FORCE', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:196, code:'',name:'FULLBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:197, code:'',name:'HARDBALL', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:198, code:'',name:'JERSEYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:199, code:'',name:'OLDENGLISH', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:200, code:'',name:'PROBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/pro_block.woff',tags:''},\r\n {id:201, code:'',name:'SPORTSCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:202, code:'',name:'TIFFANY', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/tiffany.woff',tags:''},\r\n {id:203, code:'',name:'UNISCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:204, code:'',name:'UNISCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:205, code:'',name:'VELO', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:206, code:'',name:'Teamwear', description:'', type:'teamwear', linkedNodes:[], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:207, code:'',name:'Fabric', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:208, code:'',name:'Templates', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:209, code:'',name:'Color', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:210, code:'',name:'Piping', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:211, code:'',name:'Decoration', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:212, code:'',name:'Brand', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:213, code:'',name:'Roster', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:214, code:'',name:'Produra', description:'Premium, Durable, Moisture Wicking, 100% Knitted Polyester with Mechanical Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/PRODURA.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:215, code:'',name:'Protek', description:'Premium, Durable, Moisture Wicking, 100% Knitted Polyester with Mechanical Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/PROTEK.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:216, code:'',name:'Ignite LT', description:'Premium, Durable, Lightweight, Moisture Wicking, Woven 90% Polyester / 10% Elastane with Four-Way Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/IGNITE_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:217, code:'',name:'Matrix Mesh', description:'Premium, Durable, Moisture Wicking, Knitted Pin-Dot Mesh, 90% Polyester / 10% Elastane with Four-Way Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/MATRIX_MESH.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:218, code:'',name:'Dryve LT', description:'Soft, Lightweight, Moisture Wicking, 100% Knitted Polyester Mesh', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/DRYVE_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:219, code:'',name:'FLY LT', description:'Soft, Lightweight, Moisture Wicking, 100% Flat Knit Polyester', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/FLY_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:220, code:'',name:'FLX', description:'Premium, Soft, Four-Way Stretch, 90% Polyester/10% Elastine', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/FLX.png',tags:'SUBLIMATION ONLY'},\r\n {id:221, code:'',name:'PRODURA - DYED (HYPR TWILL DECORATION ONLY)', description:'', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'',tags:'HYPR TWILL'},\r\n {id:222, code:'',name:'PROTEK - DYED (HYPR TWILL DECORATION ONLY)', description:'', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'',tags:'HYPR TWILL'},\r\n {id:223, code:'',name:'Neck Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/dRGF2JCBvodIg0QY21oHbuDfz6twjAVl.png',tags:''},\r\n {id:224, code:'',name:'Center Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/oWpQa0fFddLuG2RJ6lBnITsIS6BcdW7g.png',tags:''},\r\n {id:225, code:'',name:'Yoke Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/5BEjBO66Ei1aNzvVGxE39AJzOOOiN6TT.png',tags:''},\r\n {id:226, code:'',name:'Raglan Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/RG6MuauqiOMWJrOEsCHJ4tC53neMxL7W.png',tags:''},\r\n {id:227, code:'',name:'Sleeve Piping 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/kOMLERHCuUVPWRIRWIhw1FlOvtiy1eBe.png',tags:''},\r\n {id:228, code:'',name:'End of Sleeve Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/lr2zDaP9l792oXHqcq7CmYcuzoIrQhkj.png',tags:''},\r\n {id:229, code:'',name:'Pant', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/BqGJKQ8kJdTUeY9CEGTwwYC45Ar8rvYR.png',tags:''},\r\n {id:230, code:'',name:'Pant Tunnel', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/kFN2ZAjjdJEoIfnkZQThax0bALOdP90l.png',tags:''},\r\n {id:231, code:'',name:'Left Sleeve', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:232, code:'',name:'Back Neck', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:233, code:'',name:'Front Left Hip', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:234, code:'',name:'Back Center Tunnel', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:235, code:'',name:'Pro Select 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:236, code:'',name:'Pro Select 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Neck.png',tags:''},\r\n {id:237, code:'',name:'Pro Select 2 Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Raglan.png',tags:''},\r\n {id:238, code:'',name:'Pro Select 2 Button Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:239, code:'',name:'Pro Select 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Yoke.png',tags:''},\r\n {id:240, code:'',name:'Pro Select Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Center.png',tags:''},\r\n {id:241, code:'',name:'Pro Select Full Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:242, code:'',name:'Pro Select Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Neck.png',tags:''},\r\n {id:243, code:'',name:'Pro Select Full Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Raglan.png',tags:''},\r\n {id:244, code:'',name:'Pro Select Full Button Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:245, code:'',name:'Pro Select Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Yoke.png',tags:''},\r\n {id:246, code:'',name:'Pro Select Sleeveless Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Center.png',tags:''},\r\n {id:247, code:'',name:'Pro Select Sleeveless Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Neck.png',tags:''},\r\n {id:248, code:'',name:'Pro Select Sleeveless Full Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Set%20In.png',tags:''},\r\n {id:249, code:'',name:'Pro Select Sleeveless Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Yoke.png',tags:''},\r\n {id:250, code:'',name:'Pro Select Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Center.png',tags:''},\r\n {id:251, code:'',name:'Pro Select Faux Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:252, code:'',name:'Pro Select Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Neck.png',tags:''},\r\n {id:253, code:'',name:'Pro Select Faux Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Neck.png',tags:''},\r\n {id:254, code:'',name:'Pro Select Faux Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:255, code:'',name:'Pro Select Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Yoke.png',tags:''},\r\n {id:256, code:'',name:'Pro Select Sleeveless Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:257, code:'',name:'Pro Select Sleeveless Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:258, code:'',name:'Pro Select Sleeveless Faux Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:259, code:'',name:'Pro Select Sleeveless Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:260, code:'',name:'Pro Select Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:261, code:'',name:'Pro Select Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:262, code:'',name:'Pro Select Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:263, code:'',name:'Pro Select Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:264, code:'',name:'Pro Select Tapared FL Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:265, code:'',name:'Pro Select Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:266, code:'',name:'Select Crew Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:267, code:'',name:'Select Crew Neck Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:268, code:'',name:'Select Crew Neck Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:269, code:'',name:'Select BSB V Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:270, code:'',name:'Select BSB V Neck Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:271, code:'',name:'Select BSB V Neck Sleeve 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:272, code:'',name:'Select BSB V Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:273, code:'',name:'Select 2 Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:274, code:'',name:'Select 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:275, code:'',name:'Select 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:276, code:'',name:'Select 2 Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:277, code:'',name:'Select 2 Button Sleeve 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:278, code:'',name:'Select 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:279, code:'',name:'Select Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:280, code:'',name:'Select Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:281, code:'',name:'Select Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:282, code:'',name:'Select Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:283, code:'',name:'Select Full Length Tapered Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:284, code:'',name:'Select Full Length Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:285, code:'',name:'Signature BSB V Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:286, code:'',name:'Signature BSB V Neck Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:287, code:'',name:'Signature BSB V Neck Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:288, code:'',name:'Signature BSB V Neck Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:289, code:'',name:'Signature 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:290, code:'',name:'Signature 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:291, code:'',name:'Signature 2 Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:292, code:'',name:'Signature 2 Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:293, code:'',name:'Signature 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:294, code:'',name:'Signature Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:295, code:'',name:'Signature Full Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:296, code:'',name:'Signature Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:297, code:'',name:'Signature Full Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:298, code:'',name:'Signature Full Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:299, code:'',name:'Signature Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:300, code:'',name:'Signature Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:301, code:'',name:'Signature Faux Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:302, code:'',name:'Signature Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:303, code:'',name:'Signature Faux Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:304, code:'',name:'Signature Faux Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:305, code:'',name:'Signature Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:306, code:'',name:'Signature Full Length Open Cuff Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:307, code:'',name:'Signature Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:308, code:'',name:'Signature Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:309, code:'',name:'Signature Knicker Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:310, code:'',name:'Signature Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:311, code:'',name:'Signature Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:312, code:'',name:'Signature Full Length Tapered Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:313, code:'',name:'Signature Full Length Tapered Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:314, code:'',name:'Signature Full Length Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:315, code:'',name:'Patches Custom', description:'', type:'decoration-type-shape', linkedNodes:[3], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:316, code:'',name:'Leather Custom ', description:'', type:'decoration-type-shape', linkedNodes:[2], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:317, code:'',name:'Rust ', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F100.jpg',tags:''},\r\n {id:318, code:'',name:'Tan', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F102.jpg',tags:''},\r\n {id:319, code:'',name:'Brown', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F104.jpg',tags:''},\r\n { id: 320, code: '', name: 'Black', description: '', type: 'decoration-type-color', linkedNodes: [10], threeD: false, icon: '', thumbnail: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F106.jpg', tags: '' },\r\n {id:321, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:322, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n// {id:323, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n// {id:324, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n// {id:325, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n// {id:326, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n// {id:327, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:328, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:329, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:330, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:331, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:332, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:333, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:334, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:335, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:336, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:337, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:338, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:339, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:340, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:341, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:342, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:343, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:344, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:345, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:346, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:347, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:348, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:349, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n { id: 350, code: '', name: 'GF857_Brookside', description: '', type: 'decoration-design-concepts', linkedNodes: [6], threeD: false, icon: '', thumbnail: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg', tags: 'Atheletic' },\r\n {id:351, code:'',name:'BRUSHSCRIPT', description:'BRUSHSCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:352, code:'',name:'UNITED', description:'UNITED', type:'design-style-letters-font', linkedNodes:[76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:353, code:'',name:'My Logos', description:'', type:'design-substyle', linkedNodes:[78], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:354, code:'',name:'Custom File Upload', description:'', type:'design-substyle', linkedNodes:[78], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n];\r\n","import React from 'react';\r\n// import { MdOutlineArrowForwardIos } from 'react-icons/md';\r\n//import { Searchbar } from '../searchbar';\r\nimport { Card, CardMedia, CardBody, CardTitle } from '../card';\r\n// import { Button } from '../button';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { use3dddPlus } from '../../store';\r\nimport { Loader } from '../loader';\r\nimport ListDropdown from './listDropDown';\r\nimport { getDecorationDataByTypeAndParentId } from './decorationService';\r\nimport _ from 'lodash';\r\nexport const AddMascot = () => {\r\n const [\r\n stockLogoHandler,\r\n loading,\r\n handleMascotObjectFilterValues,\r\n availableMascots,\r\n filterValue,\r\n filteredMascots,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.stockLogoHandler,\r\n state.loading,\r\n state.handleMascotObjectFilterValues,\r\n state.availableMascots,\r\n state.filterValue,\r\n state.filteredMascots,\r\n ],\r\n shallow\r\n );\r\n\r\n let dropdownData = Array.from(\r\n new Set(availableMascots.flatMap((mascot) => mascot.tags))\r\n );\r\n // Prepend 'All' to the array\r\n dropdownData.unshift('All');\r\n React.useEffect(() => {\r\n const availableMascots = getDecorationDataByTypeAndParentId(\r\n 'design-style-mascots'\r\n ).map((item) => ({\r\n ...item,\r\n tags: item.tags.split(',').filter(Boolean),\r\n }));\r\n\r\n use3dddPlus.getState().setAvailableMascots(availableMascots);\r\n use3dddPlus\r\n .getState()\r\n .setFilteredMascots(availableMascots.map((item) => item.thumbnail));\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\r\n <div className=\"w-full flex mt-[50px] flex-row \">\r\n <div className=\"w-1/2 flex justify-end\">\r\n <div className=\"text-left mr-[24px] h-[40px]\">\r\n <div className=\"w-[10vw] mb-3 \"></div>\r\n </div>\r\n </div>\r\n <div className=\" flex-1 justify-end\">\r\n <ListDropdown\r\n //placeholder=\"All \"\r\n value={filterValue}\r\n dropdownData={dropdownData}\r\n handleSelected={handleMascotObjectFilterValues}\r\n // label={'Select Stock Mascots & Objects'}\r\n labelClass={`!mb-[14.5px]`}\r\n labelSpan={`uppercase !text-[18px] !text-[#353535] !leading-[24px] !font-bold`}\r\n buttonClass={`!shadow-[0px_7px_64px_rgba(0,0,0,0.07)] border !border-[#ebebeb] text-[15px] font-bold leading-[20px] !py-[11px] !pl-[17px]`}\r\n dropdownClass={`!shadow-[0px_7px_64px_rgba(0,0,0,0.11)] !bg-[#ffffff] !max-h-[31.25rem] pt-[7px] pb-[17px]`}\r\n dropdownLiClass={`!text-[15px] leading-[20px] pl-[16px]`}\r\n />\r\n </div>\r\n </div>\r\n {/* <div className=\"flex flex-row gap-2\"> */}\r\n <div className=\"flex\">\r\n <div className=\"flex mt-[30px] overflow-y-auto overflow-x-hidden h-[65vh] w-full\">\r\n {/* <div className=\"max-h-[140px] grid gap-3.5 grid-cols-3 md:grid-cols-3 lg:grid-cols-4 w-full \"> */}\r\n <div className=\"max-h-[170px] grid gap-[2vw] grid-cols-3 md:grid-cols-5 lg:grid-cols-5 xl:grid-cols-6 2xl:grid-cols-7 w-full p-[30px]\">\r\n {filteredMascots.length > 0\r\n ? filteredMascots.map((logo, index) => (\r\n <Card\r\n key={'logoImage' + index}\r\n // cardClass={`rounded-none bg-white cursor-pointer `}\r\n cardClass={`rounded-none !bg-transparent cursor-pointer min-h-[140px] min-w-[140px] max-w-[140px] `}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n onClick={() => stockLogoHandler(logo)}\r\n >\r\n <CardMedia src={logo} imageClass=\"h-full m-[15px] mb-0\" />\r\n\r\n <CardBody bodyClass=\"p-2.5\">\r\n <CardTitle\r\n titleClass={`text-[11px] uppercase flex justify-center`}\r\n name={availableMascots[index].name}\r\n />\r\n </CardBody>\r\n </Card>\r\n ))\r\n : 'No Stock Logos'}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {loading && <Loader />}\r\n </>\r\n );\r\n};\r\n","import { decorationData } from './mockData';\r\n\r\nexport type DecorationTypes =\r\n | 'decoration-type'\r\n | 'decoration-sub-type'\r\n | 'decoration-type-color'\r\n | 'decoration-ink-option'\r\n | 'decoration-type-shape'\r\n | 'decoration-edge-type'\r\n | 'design-type'\r\n | 'design-style'\r\n | 'design-style-letters-font'\r\n | 'design-style-mascots';\r\n\r\nexport const getDecorationDataById = (id: number) => {\r\n return decorationData.filter((e) => e.id === id)?.[0];\r\n};\r\n\r\nexport const getDecorationDataByName = (name: string) => {\r\n return decorationData.filter((e) => e.name === name)?.[0];\r\n};\r\n\r\nexport const getDecorationDataByTypeAndParentId = (\r\n type: DecorationTypes,\r\n parentId?: number\r\n) => {\r\n return parentId\r\n ? decorationData.filter(\r\n (item) => item.type === type && item.linkedNodes.includes(parentId)\r\n )\r\n : decorationData.filter(\r\n (item) => item.type === type \r\n );\r\n};\r\n\r\nexport const getAllTypes = () => {\r\n return [new Set(decorationData?.map((item) => item.type))];\r\n};\r\n","import React from 'react';\r\n// import { use3dddPlus } from '../../store';\r\nimport { MODAL_BG_COLOR } from '../../theme';\r\n\r\nexport interface ModalProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport const LogoEditorSaveDesignModal = ({\r\n children,\r\n className = '',\r\n}: ModalProps) => {\r\n // const closeDesign = use3dddPlus((state) => state.setToggleSaveLogo);\r\n return (\r\n <>\r\n <div\r\n className={`modal modal-middle modal-open backdrop-blur-[45px] bg-[#00000046]`}\r\n id=\"saveLogoModel\"\r\n >\r\n <div className={`${className} modal-box ${MODAL_BG_COLOR} `}>\r\n {children}\r\n </div>\r\n {/* <form method=\"dialog\" className={`modal-backdrop ${BACKDROP_BLUR}`}>\r\n <button>close</button>\r\n </form> */}\r\n </div>\r\n </>\r\n );\r\n};","import React from 'react';\r\nimport { FloatingLabel } from 'flowbite-react';\r\nimport { EDIT_DESIGN_INFO_INPUT_BORDER_COLOR } from '../../theme';\r\ninterface CustomInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n type: string;\r\n id: string;\r\n name: string;\r\n label: string;\r\n customLabelStyle?: string;\r\n customInputStyle?: string;\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\r\n value?: string | undefined;\r\n onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\r\n}\r\nexport const CustomInput: React.FC<CustomInputProps> = ({\r\n type,\r\n id,\r\n name,\r\n label,\r\n customLabelStyle,\r\n customInputStyle,\r\n onChange,\r\n onBlur,\r\n value,\r\n onKeyDown,\r\n className = '',\r\n}) => {\r\n return (\r\n <div className=\"w-full\">\r\n <FloatingLabel\r\n type={type}\r\n id={id}\r\n value={value}\r\n name={name}\r\n variant=\"outlined\"\r\n label={label}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n onKeyDown={onKeyDown}\r\n theme={{\r\n label: {\r\n default: {\r\n outlined: {\r\n sm: `absolute left-4 top-2 z-10 origin-[0] -translate-y-4 transition-transform bg-white peer-focus:px-[0.125rem] px-[0.125rem] text-[#5D5D5D] duration-300 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-focus:top-2 peer-focus:-translate-y-4 font-medium ${customLabelStyle} ${className}`,\r\n\r\n md: `absolute left-4 top-2 z-10 origin-[0] -translate-y-4 transition-transform bg-white peer-focus:px-[0.125rem] px-[0.125rem] text-[#5D5D5D] duration-300 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-focus:top-2 peer-focus:-translate-y-4 font-medium ${customLabelStyle} ${className}`,\r\n },\r\n },\r\n },\r\n input: {\r\n default: {\r\n outlined: {\r\n sm: `border peer block w-full appearance-none rounded-none border-[#ECEBED] px-4 pb-2.5 pt-4 focus:border-[#ECEBED] focus:outline-none focus:ring-0 w-full h-[3rem] mt-0 ${customInputStyle} ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`,\r\n\r\n md: `border peer block w-full appearance-none rounded-none border-[#ECEBED] px-4 pb-2.5 pt-4 focus:border-[#ECEBED] focus:outline-none focus:ring-0 w-full h-[3rem] mt-0 ${customInputStyle} ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`,\r\n },\r\n },\r\n },\r\n helperText: {\r\n default: 'mt-0 ',\r\n success: 'mt-0 ',\r\n error: 'mt-0',\r\n },\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n BUTTON_TEXT_COLOR,\r\n EDIT_DESIGN_INFO_BG_COLOR_4,\r\n EDIT_DESIGN_INFO_INPUT_BORDER_COLOR,\r\n EDIT_DESIGN_INFO_TEXT_COLOR_1,\r\n EDIT_DESIGN_INFO_TEXT_COLOR_3,\r\n INPUT_ERROR_TEXT_COLOR,\r\n SAVEBUTTON_BG_COLOR,\r\n SECONDARY_COLOR,\r\n TEXT_SIZE_12,\r\n TEXT_SIZE_4,\r\n TEXT_SIZE_5,\r\n TEXT_SIZE_9,\r\n} from '../../theme';\r\nimport { RxCross2 } from 'react-icons/rx';\r\nimport { use3dddPlus } from '../../store';\r\nimport { LogoEditorSaveDesignModal } from './saveDesignModal';\r\nimport './saveDesign.css';\r\nimport { CustomInput } from '../input/customInput';\r\nimport { fabric } from 'fabric';\r\n\r\nexport const SaveDesign = ({ onSaveLogo }) => {\r\n const [designNameValidation, setDesignNameValidation] = useState('');\r\n\r\n const [commaInTagName, setCommaInTagName] = useState(false);\r\n const [tagNameLength, setTagNameLength] = useState(false);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [\r\n canvas,\r\n logoName,\r\n logoTag,\r\n closeModal,\r\n toggleSaveLogo,\r\n disableSaveButton,\r\n saveLogo,\r\n uploadLogoConfig,\r\n setLogoData,\r\n ] = use3dddPlus((state) => [\r\n state.fabricCanvas,\r\n state.logoName,\r\n state.logoTag,\r\n state.setToggleSaveLogo,\r\n state.toggleSaveLogo,\r\n state.disableSaveButton,\r\n state.saveLogo,\r\n state.uploadLogoConfig,\r\n state.setLogoData,\r\n ]);\r\n const [tagName, setTagName] = React.useState('');\r\n\r\n const checkValidations = () => {\r\n const nameValidation = logoName.length >= 1;\r\n if (!nameValidation) {\r\n setDesignNameValidation('length');\r\n return nameValidation;\r\n } else return true;\r\n };\r\n const onSaveHandler = async () => {\r\n if (!isSaving) {\r\n if (!checkValidations()) return;\r\n setIsSaving(true);\r\n const canvasGetobject = canvas.getObjects();\r\n canvasGetobject.forEach((obj) => {\r\n if (obj.type === 'line') {\r\n canvas.remove(obj);\r\n }\r\n });\r\n\r\n // saving all path text data (text with shapes applied)\r\n let pathTextsData = {};\r\n canvasGetobject.forEach((obj) => {\r\n if (obj.type === 'path' && obj.pathData !== undefined) {\r\n pathTextsData[obj.text] = {\r\n width: obj.width,\r\n height: obj.height,\r\n left: obj.left,\r\n top: obj.top,\r\n pathData: obj.pathData,\r\n shapeSize: obj.shapeSize,\r\n shapeType: obj.shapeType,\r\n fontFamily: obj.fontFamily,\r\n fontWeight: obj.fontWeight,\r\n fontSize: obj.fontSize,\r\n charSpacing: obj.charSpacing,\r\n textAlign: obj.textAlign,\r\n fontStyle: obj.fontStyle,\r\n text: obj.text,\r\n };\r\n }\r\n });\r\n\r\n const dataURL = canvas.toDataURL();\r\n const canvasData = use3dddPlus.getState().applyColorFill();\r\n // const canvasGetobject = canvas.getObjects();\r\n // canvasData.objects.forEach((element, index) => {\r\n // element.colorFill = canvasGetobject[index].colorFill;\r\n // });\r\n\r\n // looping through the text shape objects & taking out text data to inject in the canvas json data & save\r\n let pathTextsKeys = Object.keys(pathTextsData);\r\n for (let i = 0; i < pathTextsKeys.length; i++) {\r\n let pathData = pathTextsData[pathTextsKeys[i]];\r\n for (let o = 0; o < canvasData.objects.length; o++) {\r\n const obj = canvasData.objects[o];\r\n if (\r\n obj.type === 'path' &&\r\n obj.left === Math.round(pathData.left * 100) / 100 &&\r\n obj.top === Math.round(pathData.top * 100) / 100 &&\r\n obj.width === Math.round(pathData.width * 100) / 100 &&\r\n obj.height === Math.round(pathData.height * 100) / 100\r\n ) {\r\n Object.assign(canvasData.objects[o], pathData);\r\n }\r\n }\r\n }\r\n\r\n const dataCh = JSON.stringify(canvasData);\r\n const S3UrlPath = await uploadLogoConfig(\r\n dataCh,\r\n use3dddPlus.getState().customerId\r\n );\r\n canvas.backgroundColor = null;\r\n const canvasSvg = canvas.toSVG();\r\n closeModal('', false, '', {});\r\n const raw = JSON.stringify({\r\n customer_id: use3dddPlus.getState().customerId,\r\n tag: logoTag.join(','),\r\n name: logoName,\r\n base64_image: dataURL,\r\n svg_image: canvasSvg,\r\n logo_config_url: S3UrlPath,\r\n });\r\n\r\n const horizontalLine = new fabric.Line(\r\n [0, canvas.height / 2, canvas.height, canvas.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canvas.width / 2, 0, canvas.width / 2, canvas.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canvas.add(horizontalLine);\r\n canvas.add(verticalLine);\r\n canvas.sendBackwards(horizontalLine);\r\n canvas.sendBackwards(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n saveLogo(raw)\r\n .then((data) => {\r\n setIsSaving(false);\r\n onSaveLogo(data);\r\n setLogoData(data);\r\n use3dddPlus.getState().toastMessages.saveSuccess();\r\n })\r\n .catch((ex) => {\r\n setIsSaving(false);\r\n console.log('ERROR in Save Logo:', ex);\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (tagName !== '') {\r\n const reg = /^[a-zA-Z0-9 ]+$/;\r\n const regTest = reg.test(tagName);\r\n\r\n if (!regTest) {\r\n setCommaInTagName(true);\r\n } else if (!!commaInTagName) {\r\n setCommaInTagName(false);\r\n }\r\n } else if (!!commaInTagName) {\r\n setCommaInTagName(false);\r\n }\r\n }, [tagName]);\r\n\r\n // useEffect(() => {\r\n // if (logoName !== '') {\r\n // const reg = /^[a-zA-Z0-9 ]+$/;\r\n // const regTest = reg.test(logoName);\r\n // if (!regTest) {\r\n // setDesignNameValidation('specialCharacter');\r\n // } else if (designNameValidation === 'specialCharacter') {\r\n // setDesignNameValidation('');\r\n // }\r\n // } else if (designNameValidation === 'specialCharacter') {\r\n // setDesignNameValidation('');\r\n // }\r\n // }, [logoName]);\r\n\r\n const handleTagChange = (event: any) => {\r\n if (event?.target?.value !== ' ') {\r\n setTagName(event.target.value);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event: any) => {\r\n if (logoTag.length > 4 && tagName !== '') {\r\n event.preventDefault();\r\n setTagNameLength(true);\r\n setTagName('');\r\n return;\r\n } else {\r\n setTagNameLength(false);\r\n }\r\n\r\n if (\r\n event.key === 'Enter' ||\r\n event.key === 'Tab' ||\r\n (event.keyCode === 188 && tagName !== '') ||\r\n (event.type === 'blur' && tagName !== '')\r\n ) {\r\n event.preventDefault();\r\n\r\n const reg = /^[a-zA-Z0-9 ]+$/;\r\n const regTest = reg.test(tagName);\r\n if (!regTest) {\r\n setCommaInTagName(true);\r\n return;\r\n }\r\n if (!!regTest) {\r\n tagName !== '' && handleAdd();\r\n }\r\n } else if (tagName === '' && event.key === 'Backspace') {\r\n handleBackspace();\r\n }\r\n if (tagName.length !== 0 && (!!commaInTagName || !!tagNameLength)) {\r\n if (event?.type === 'blur' || event?.type === 'keydown') {\r\n setCommaInTagName(false);\r\n setTagNameLength(false);\r\n }\r\n }\r\n };\r\n\r\n const handleNameChange = (value) => {\r\n use3dddPlus.setState({ logoName: value });\r\n if (designNameValidation === 'length') {\r\n setDesignNameValidation('');\r\n }\r\n };\r\n\r\n const handleAdd = () => {\r\n let newList = [...logoTag];\r\n if (!newList.includes(tagName.trim())) {\r\n newList.push(tagName.trim());\r\n }\r\n use3dddPlus.setState({ logoTag: newList.filter(Boolean) });\r\n setTagName('');\r\n };\r\n\r\n const handleBackspace = () => {\r\n let newList = [...logoTag];\r\n newList.pop();\r\n use3dddPlus.setState({ logoTag: newList.filter(Boolean) });\r\n };\r\n\r\n const handleDelete = (e) => {\r\n const newList = logoTag.filter((item) => item !== e);\r\n use3dddPlus.setState({ logoTag: newList });\r\n };\r\n const onCancelHandler = () => {\r\n closeModal('', false, '', {});\r\n };\r\n return (\r\n <LogoEditorSaveDesignModal\r\n className={`md:absolute md:right-30 rounded-none p-0 md:h-auto max-h-screen max-w-[37.125rem] w-[80%] md:w-full m-[auto]\r\n `}\r\n >\r\n <button\r\n className=\"absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[0.75rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none\"\r\n onClick={() => {\r\n use3dddPlus.getState().goBack();\r\n closeModal('', false, '', {});\r\n use3dddPlus.setState({ showCrossSave: false });\r\n \r\n }}\r\n >\r\n <RxCross2 strokeWidth={1} />\r\n </button>\r\n\r\n <div className={`flex h-max w-full`}>\r\n <div\r\n className={`w-full md:px-[112px] md:p-[98px] p-[30px] bg-white h-full flex justify-center`}\r\n >\r\n <div className=\"w-full\">\r\n <span\r\n className={`block mb-6 font-bold text-2xl lh-1 ${SECONDARY_COLOR} uppercase leading-[2.3125rem] font-bold ${EDIT_DESIGN_INFO_TEXT_COLOR_1} ${TEXT_SIZE_5}\r\n `}\r\n >\r\n {toggleSaveLogo.title}\r\n </span>\r\n <div>\r\n <div className=\"\">\r\n <CustomInput\r\n customLabelStyle={`${TEXT_SIZE_9} leading-[1.25rem] border-0 font-medium text-[#727272]`}\r\n value={logoName}\r\n onBlur={(e) =>\r\n handleNameChange(e?.target?.value?.trimStart())\r\n }\r\n type=\"text\"\r\n id=\"logoName\"\r\n name=\"logoName\"\r\n label=\"Design Name\"\r\n onChange={(e) =>\r\n handleNameChange(e?.target?.value?.trimStart())\r\n }\r\n customInputStyle={`${\r\n designNameValidation === 'length'\r\n ? `border border-[#e11a38]`\r\n : `border border-[#ecebed]`\r\n } text-[#727272] ${TEXT_SIZE_9} bg-transparent`}\r\n />\r\n </div>\r\n {designNameValidation === 'length' && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR}`}\r\n >\r\n * Please enter a name with at least 1 character\r\n </div>\r\n )}\r\n {designNameValidation === 'specialCharacter' && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR}`}\r\n >\r\n * Design Name can not have any special characters\r\n </div>\r\n )}\r\n <div\r\n className={`relative flex flex-row py-[0.695rem] border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR} flex-wrap place-content-start mt-5 `}\r\n >\r\n <div className=\"flex flex-row gap-[0.5rem] flex-wrap items-center px-[1rem]\">\r\n {Array.isArray(logoTag) &&\r\n logoTag?.map((el: any, i) => (\r\n <div\r\n key={i}\r\n className={`${TEXT_SIZE_12} leading-[0.8125rem] flex h-[1.5rem] items-center pt-[0.375rem] pb-[0.3125rem] px-[0.5rem] rounded gap-[0.4375rem] ${EDIT_DESIGN_INFO_TEXT_COLOR_1} ${EDIT_DESIGN_INFO_BG_COLOR_4}`}\r\n >\r\n {el}\r\n <button onClick={() => handleDelete(el)}>\r\n <RxCross2\r\n className={`${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-bold`}\r\n />\r\n </button>\r\n </div>\r\n ))}\r\n\r\n <div>\r\n <input\r\n name=\"tags\"\r\n type=\"text\"\r\n placeholder=\" \"\r\n className={` ${EDIT_DESIGN_INFO_TEXT_COLOR_3} font-medium block w-[6.25rem] focus:outline-none !border-0 py-0 focus:border-0 peer focus:ring-0 ring-0 px-4`}\r\n value={tagName}\r\n onChange={handleTagChange}\r\n onKeyDown={handleKeyDown}\r\n onBlur={handleKeyDown}\r\n onClick={(e) => {\r\n e.currentTarget.focus();\r\n }}\r\n />\r\n <label\r\n htmlFor=\"designTags\"\r\n className={` ${\r\n logoTag?.length > 0 || !!commaInTagName\r\n ? 'py-0 !top-0 !font-[13px] !text-[#727272] !bg-white !opacity-1 !left-[1rem]'\r\n : ''\r\n } ${TEXT_SIZE_9} peer-focus:${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-medium leading-[1.25rem] absolute z-10 transition-all top-2 transform -translate-y-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:top-1/2 peer-focus:top-0 peer-focus:font-[13px] peer-focus:!bg-white peer-focus:-translate-y-[10px] peer-focus:opacity-1 peer-placeholder-shown:text-[#727272] left-4 `}\r\n >\r\n Tags\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n {(() => {\r\n switch (true) {\r\n case !!commaInTagName && !!tagNameLength:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters & Maximum\r\n number of tag can be 5\r\n </div>\r\n );\r\n case !!commaInTagName:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters\r\n </div>\r\n );\r\n case !!tagNameLength:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Maximum number of tag can be 5\r\n </div>\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n })()}\r\n {/* {!!commaInTagName && !!tagNameLength && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters & Maximum\r\n number of tag can be 5\r\n </div>\r\n )}\r\n {!!commaInTagName && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters\r\n </div>\r\n )}\r\n {!!tagNameLength && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Maximum number of tag can be 5\r\n </div>\r\n )} */}\r\n\r\n <div\r\n className={`${\r\n !disableSaveButton ? 'flex flex-col lg:flex-row' : ''\r\n } gap-[19px] leading-[23px] font-bold ${TEXT_SIZE_4} mt-5`}\r\n >\r\n {toggleSaveLogo.key === 'save' && (\r\n <>\r\n <button\r\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase active:${SAVEBUTTON_BG_COLOR} ${\r\n isSaving ? 'bg-[#d77382]' : SAVEBUTTON_BG_COLOR\r\n } ${BUTTON_TEXT_COLOR} ${\r\n isSaving ? '' : 'hover:bg-[#E11A38]'\r\n }`}\r\n onClick={() => onSaveHandler()}\r\n disabled={isSaving}\r\n >\r\n SAVE\r\n </button>\r\n <button\r\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase border border-1 border-[#5d5d5d] hover:text-[#ffffff] hover:bg-[#E11A38] hover:border-[#E11A38] justify-center items-center `}\r\n onClick={() => onCancelHandler()}\r\n >\r\n Cancel\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </LogoEditorSaveDesignModal>\r\n );\r\n};\r\n","import React, { useRef, useEffect } from 'react';\r\n/**\r\n * Hook that alerts clicks outside of the passed ref\r\n */\r\nfunction useOutsideAlerter(ref: any, onClick: any) {\r\n useEffect(() => {\r\n /**\r\n * Alert if clicked on outside of element\r\n */\r\n function handleClickOutside(event: any) {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n // alert('You clicked outside of me!');\r\n onClick(event);\r\n }\r\n }\r\n function handleEscape(event: any) {\r\n if (event.key == 'Escape') onClick(event);\r\n }\r\n // Bind the event listener\r\n document.addEventListener('keydown', handleEscape);\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n document.removeEventListener('keydown', handleEscape);\r\n };\r\n }, [ref]);\r\n}\r\n\r\n/**\r\n * Component that alerts if you click outside of it\r\n */\r\nfunction OutsideAlerter(props: any) {\r\n const wrapperRef = useRef(null);\r\n useOutsideAlerter(wrapperRef, props.onClick);\r\n\r\n return <div ref={wrapperRef}>{props.children}</div>;\r\n}\r\n\r\nexport default OutsideAlerter;\r\n","import React, { useState } from 'react';\r\nimport { ChromePicker } from 'react-color';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport OutsideAlerter from '../../hooks/outsideAlerter';\r\nexport const ColorPicker = () => {\r\n const [setDisplayProductColor, displayProductColor] = use3dddPlus(\r\n (state) => [state.setDisplayProductColor, state.displayProductColor],\r\n shallow\r\n );\r\n const [currentColor, setCurrentColor] = useState('#fff');\r\n\r\n const handleOnChange = (color) => {\r\n setCurrentColor(color.hex);\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n canvas.backgroundColor = color.hex;\r\n canvas.renderAll();\r\n };\r\n\r\n return (\r\n <div className=\"absolute\">\r\n {displayProductColor && (\r\n <div className=\"relative top-[25vh] left-5 flex\">\r\n <OutsideAlerter onClick={() => setDisplayProductColor()}>\r\n <ChromePicker\r\n color={currentColor}\r\n onChange={handleOnChange}\r\n // onChangeComplete={handleOnChange}\r\n disableAlpha={true}\r\n onClose={() => setDisplayProductColor()}\r\n />\r\n </OutsideAlerter>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Canvas } from '../canvas';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { UploadLogo } from '../uploadLogo';\r\nimport { Rightmenu } from '../Rightmenu';\r\nimport { AddMascot } from '../addMascot';\r\nimport { MyLogo } from '../myLogo';\r\nimport { SaveDesign } from '../saveDesign';\r\nimport {ColorPicker} from '../leftMenu/colorPicker'\r\nexport const MiddleMenu = ({ onApply, onSaveLogo }) => {\r\n const [selectedStepper, toggleSaveLogo, loadingLogo] = use3dddPlus(\r\n (state) => [state.selectedStepper, state.toggleSaveLogo, state.loadingLogo],\r\n shallow\r\n );\r\n React.useEffect(() => {\r\n if (selectedStepper === 2) loadingLogo('');\r\n }, []);\r\n return (\r\n <>\r\n <div className=\" flex flex-col md:flex-row flex-1 z-0 w-[90%] h-full\">\r\n <div className=\"flex w-[70%] h-[100%]\">\r\n <Canvas />\r\n </div>\r\n {toggleSaveLogo.status && <SaveDesign onSaveLogo={onSaveLogo} />}\r\n <div className=\"flex-1 z-[7] h-[100%] \">\r\n <Rightmenu />\r\n </div>\r\n </div>\r\n {selectedStepper === 1 && <UploadLogo />}\r\n {selectedStepper === 4 && <AddMascot />}\r\n {selectedStepper === 2 && <MyLogo onApply={onApply} />}\r\n {selectedStepper === 5 && <ColorPicker />}\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './index.css';\r\nimport { use3dddPlus } from './store';\r\n// import { createRoot } from 'react-dom/client';\r\nimport * as Components from './components';\r\nimport * as services from './services';\r\nimport { LeftMenu } from './components/leftMenu';\r\nimport { MiddleMenu } from './components/middleMenu';\r\n// import { Modal } from './components';\r\nimport { Loader } from './components/loader';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport { ToastContainer, Bounce } from 'react-toastify';\r\n// Please do not use types off of a default export module or else Storybook Docs will suffer.\r\n// see: https://github.com/storybookjs/storybook/issues/9556\r\n/**\r\n * A custom App component. Neat!\r\n */\r\nconst LogoEditor = ({\r\n stepperId,\r\n onApply,\r\n customLogoColorList,\r\n defaultColorList,\r\n logoData,\r\n customerId,\r\n onSaveLogo,\r\n}) => {\r\n const [setSelectedStepper, myLogoHandler, loading] = use3dddPlus((state) => [\r\n state.setSelectedStepper,\r\n state.myLogoHandler,\r\n state.loading,\r\n ]);\r\n React.useEffect(() => {\r\n setSelectedStepper(stepperId);\r\n if (stepperId == undefined) {\r\n myLogoHandler(logoData);\r\n }\r\n }, [stepperId]);\r\n React.useEffect(() => {\r\n use3dddPlus.setState({ customUploadLogoColorList: customLogoColorList });\r\n }, [customLogoColorList]);\r\n React.useEffect(() => {\r\n use3dddPlus.setState({ defaultColorList: defaultColorList });\r\n }, [defaultColorList]);\r\n React.useEffect(() => {\r\n use3dddPlus.setState({ customerId: customerId });\r\n }, [customerId]);\r\n return (\r\n // <Modal\r\n // backdropStyle={`z-[7]`}\r\n // contentStyle={\r\n // 'top-0 absolute overflow-hidden border-2 border-indigo-600 roboto-bold h-[88vh] m-[auto] z-[7] !mr-[auto] max-w-[73%] w-[100%] md:w-[auto] p-0'\r\n // }\r\n // >\r\n <div className=\" flex flex-col md:flex-row w-full h-[88vh]\">\r\n <ToastContainer\r\n position=\"top-center\"\r\n autoClose={3000}\r\n hideProgressBar={true}\r\n newestOnTop={false}\r\n closeOnClick\r\n rtl={false}\r\n pauseOnFocusLoss\r\n draggable\r\n pauseOnHover\r\n theme=\"colored\"\r\n transition={Bounce}\r\n />\r\n {loading && <Loader />}\r\n <div className=\"lg:w-[10%] h-[100%]\">\r\n <LeftMenu />\r\n </div>\r\n <div className=\" flex h-full w-[90%]\">\r\n <MiddleMenu onApply={onApply} onSaveLogo={onSaveLogo} />\r\n </div>\r\n </div>\r\n // </Modal>\r\n );\r\n};\r\n// const container = document.getElementById('root');\r\n// const root = createRoot(container!); // createRoot(container!) if you use TypeScript\r\n// const [customUploadLogoColorList, defaultColorList] = use3dddPlus((state) => [\r\n// state.customUploadLogoColorList,\r\n// state.defaultColorList,\r\n// ]);\r\n// root.render(\r\n// <LogoEditor\r\n// stepperId={1}\r\n// onApply={''}\r\n// customLogoColorList={customUploadLogoColorList}\r\n// defaultColorList={defaultColorList}\r\n// />\r\n// );\r\n\r\nexport { LogoEditor, Components, use3dddPlus, services };\r\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Icon","React","forwardRef","_ref","label","icon","className","props","_objectWithoutPropertiesLoose","_excluded","tooltip","useTooltipState","placement","TooltipReference","as","Button","Tooltip","zIndex","IconButton","_ref2","_ref2$size","size","_ref2$icon","undefined","_excluded2","IconContext","Provider","value","HorizontalFlip","GenIcon","tag","attr","xmlns","width","height","viewBox","child","d","VerticalFlip","fill","stroke","transform","Error","cx","cy","r","stroke-linecap","stroke-width","RLogo","id","fillRule","strokeWidth","MyLogo","AddText","FlipH","data-name","clip-path","FlipV","SelectAll","_extends","rx","x","y","Copy","SendToBack","stroke-miterlimit","SendToFront","SendAObject","SendUnderObject","EyeDropper","Delete","SnapToCenter","CustomToast","message","toastId","toast","info","toastGen","error","success","warning","toastMessages","deleteLogoSuccess","e","saveSuccess","somethingWentWrong","updateLogoSuccess","updateSuccess","noOfColors","noIteminCanvas","graphqlSlice","set","get","displayLoginModal","showProductBreakUpModal","status","loadDesignModal","productInfoModal","toggleSaveLogo","key","title","details","showModalAfterLogin","selectedDesign","changeModel","alert","confirmDesignModal","confirmUpdateDesignModal","toggleSuccessfullDesign","designUpdateSuccessfulModal","getListFromRack","setSelectedDesign","selected","setLoadDesignModal","loadDesign","clearLayers","use3dddPlus","setState","storeAllObject","setToggleSaveLogo","setConfirmDesignModal","setConfirmUpdateDesignModal","state","setToggleSuccessfullDesign","setProductInfoModal","editDesignInfo","saveDesignModal","current","getState","navigateTo","logoName","designNotes","logoTag","string","characters","i","charAt","Math","floor","random","length","designNumber","customerId","toggleLoginModal","setShowModalAfterLogin","disableSaveButton","_unused","share","saveRackSuccessfulModal","setSaveRackSuccessfulModal","toggleAction","toogleShowProductBreakUpModal","disableUpdate","productBreakup","logoSearchText","logoSortBy","logoSortDir","logoPageNo","logoPageSize","showCrossSave","baseURL","process","env","REACT_APP_LAMBDA_URL","instance","axios","create","timeout","headers","Content-Type","Authorization","responseBody","response","data","requests","url","then","post","body","config","put","delete","lambdaSlice","_set","_get","lambdaClient","loadingLogo","_loadingLogo","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_data","res","wrap","_context","prev","next","loading","sent","retriveLogoDesign","abrupt","t0","console","stop","_x","apply","arguments","getStockLogos","_getStockLogos","_callee2","_context2","fabric","Object","prototype","hasControls","hasBorders","stockLogos","saveLogo","_saveLogo","_callee3","logo","_context3","_x2","saveDesignSlice","designImageUrl","designProofPdfUrl","designConfig","designId","hasDesignNumber","showSaveCTA","showSaveRackCTA","_oldURL","REACT_APP_IMAGE_URL_OLD","_newURL","REACT_APP_IMAGE_URL","getCookie","cname","name","ca","decodeURIComponent","cookie","split","c","substring","indexOf","setCookie","cvalue","exdays","Date","setTime","getTime","expires","toUTCString","clearCookie","encryptToken","CryptoJS","AES","encrypt","JSON","stringify","toString","decryptToken","ciphertext","bytes","decrypt","parse","enc","Utf8","includes","replace","texture","item","path","ProductMedium","Image_URL","__typename","flipY","queryString","window","location","search","URLSearchParams","REACT_APP_3DDDPLUS_PROJECTID","token","base64","jsonPayload","_window","_window$atob","atob","_window$atob$split","map","charCodeAt","slice","join","dataURI","byteString","ab","ArrayBuffer","ia","Uint8Array","File","strData","filename","link","download","href","click","removeChild","which","keycode","preventDefault","authSlice","customUploadLogoColorList","defaultColorList","priceLevel","clearLoginInfo","sessionStorage","removeItem","authType","cardCode","customerEmail","customerType","generateCustomizerToken","setInCookies","customizerToken","setItem","setCustomizerToken","getItem","isLoggedIn","historySlice","history","page","concat","goBack","previousPage","pop","fabricSlice","popUpCanvasCount","popupCanvasStoreHistory","availableMascots","filteredMascots","logoData","setLogoData","allColor","selectedStepper","setSelectedStepper","hasUploadScreen","setHasUploadScreen","storeHistory","fabricCanvas","popupCanv","textInfo","uploadImageModalDisplay","currentSelection","activeSelection","selectedAll","colorFill","defaultColorFill","loadedObject","defaultColorFillCopy","iconImage","HideControls","tl","tr","bl","br","ml","mt","mr","mb","mtr","showContextMenu","forStoringAllObject","unshift","forIconCapture","activeObject","getActiveObject","dataURL","toDataURL","nameCounter","guid","u","now","repeat","substr","duplicateObject","clipboard","activeObj","clone","cloned","clonedObj","discardActiveObject","evented","canvas","forEachObject","obj","index","_objects","pathData","shapeSize","shapeType","fontFamily","fontWeight","fontSize","charSpacing","textAlign","fontStyle","text","add","setCoords","top","left","setActiveObject","brNew","getBoundingRect","updateModifaction","deleteButtonControls","count","skipEvent","undo","clear","renderAll","loadFromJSON","getObjects","forEach","remove","horizontalLine","Line","scaleX","visible","selectable","verticalLine","centerH","sendToBack","element","redo","abs","sendBackwards","moveDown","moveUp","moveRight","moveLeft","applyColorFill","canvasData","toJSON","canvasGetobject","objects","setDefaultColorFill","dcf","setDefaultColorFillCopy","toSet","push","contextMenuCoordinates","stockLogoHandler","logos","testSVG","loadSVGFromURL","options","util","groupSVGElements","scaleToWidth","scaleToHeight","objImage","_Fills","ele","fillColor","removeDuplicates","fillColors","centerObject","myLogoHandler","fetch","logo_config_url","method","result","loadingRetrivedFiles","log","bind","backgroundColor","uploadLogoConfig","_uploadLogoConfig","jsonConfig","bucketName","region","S3","microTime","filePath","params","s3UrlPath","REACT_APP_BUCKET","REACT_APP_REGION","AWS","update","accessKeyId","REACT_APP_ACCESSKEY","secretAccessKey","REACT_APP_SECRET_ACCESSKEY","Bucket","Key","Body","ContentType","Promise","resolve","reject","putObject","err","setAvailableMascots","setFilteredMascots","handleMascotObjectFilterValues","event","filterValue","thumbnail","filteredData","filter","tags","displayProductColor","setDisplayProductColor","popUpCanvasAllColor","popUpCanvasApplyColorFill","popUpCanvasData","popUpCanvasGetobject","popUpCanvasUpdateModification","historyObject","json","popUpCanvasUndo","_V","colors","canvasWidth","canvasHeight","numCols","ceil","numRows","line","lockMovementX","lockMovementY","lockScalingX","lockScalingY","j","rect","Rect","isEvenRow","popUpCanvasRedo","forPopupCanvasReset","forPopupCanvasColor","imageData","lastPosition","setLastPosition","TIFFParser","this","tiffDataView","littleEndian","fileDirectories","isLittleEndian","BOM","getBytes","TypeError","hasTowel","RangeError","getFieldTagName","fieldTag","fieldTagName","fieldTagNames","315","258","265","264","320","259","33432","306","338","266","289","288","291","290","316","270","257","256","271","281","280","272","254","274","262","284","296","278","277","305","279","273","255","263","282","283","326","327","343","328","433","434","269","336","321","346","347","285","297","317","319","532","339","559","330","292","293","325","323","324","322","301","318","344","286","529","531","530","345","287","37378","40961","36868","36867","34665","36864","33434","41728","37385","40960","33437","42016","37384","37500","37377","37510","33723","34675","700","42112","42113","34377","getFieldTypeName","fieldType","fieldTypeName","fieldTypeNames","1","2","3","4","5","6","7","8","9","10","11","12","getFieldTypeLength","fieldTypeLength","getBits","numBits","byteOffset","bitOffset","newByteOffset","totalBits","shiftRight","shiftLeft","rawBits","getUint8","getUint16","getUint32","bits","numBytes","offset","getFieldValues","typeCount","valueOffset","fieldValues","fieldValueSize","indexOffset","a","String","fromCharCode","clampColorSample","colorSample","bitsPerSample","multiplier","pow","makeRGBAFillValue","g","b","parseFileDirectory","numDirEntries","tiffFields","entryCount","values","nextIFDByteOffset","parseTIFF","tiffArrayBuffer","DataView","firstIFDByteOffset","fileDirectory","imageWidth","ImageWidth","imageLength","ImageLength","strips","compression","Compression","samplesPerPixel","SamplesPerPixel","sampleProperties","bitsPerPixel","hasBytesPerPixel","BitsPerSample","bitsPerSampleValues","hasBytesPerSample","bytesPerSample","bytesPerPixel","stripOffsetValues","StripOffsets","numStripOffsetValues","StripByteCounts","stripByteCountValues","stripOffset","stripByteCount","jIncrement","getHeader","pixel","sample","currentSample","m","sampleInfo","blockLength","iterations","header","getInt8","currentByte","getContext","ctx","fillStyle","RowsPerStrip","rowsPerStrip","numStrips","imageLengthModRowsPerStrip","rowsInLastStrip","numRowsInStrip","numRowsInPreviousStrip","photometricInterpretation","PhotometricInterpretation","extraSamplesValues","numExtraSamples","ExtraSamples","ColorMap","colorMapValues","colorMapSampleSize","numPixels","yPadding","pixelSamples","red","green","blue","opacity","k","invertValue","samples","colorMapIndex","fillRect","optionpresets","default","corsenabled","ltres","qtres","pathomit","rightangleenhance","colorsampling","numberofcolors","mincolorratio","colorquantcycles","layering","strokewidth","linefilter","scale","roundcoords","viewbox","desc","lcpr","qcpr","blurradius","blurdelta","png","jpg","posterized1","posterized2","curvy","sharp","detailed","smoothed","grayscale","fixedpalette","randomsampling1","randomsampling2","artistic1","artistic2","artistic3","artistic4","posterized3","pal","converterSlice","_convertPdfToImages","_loadImageFromURL","_aiConvert","_tiffConvert","processImage","svgstr","colorValue","loadSVGFromString","fillCounts","sortedFillColors","keys","sort","topColors","_C","RGBToHex","defaultCF","euclideanDistance","color1","color2","c1","Color","getSource","c2","diffG","diffB","sqrt","cf","property","updated","colorMap","color","closestColor","reduce","curr","setControlVisible","file","setFile","tiffConvert","tiffParser","canvasEl","tiffCanvas","imageUrl","arrayBuffer","aiConvert","aiFile","formData","FormData","append","loadImageFromURL","_x3","imageToSVG","ext","isSVG","convert","reader","FileReader","onload","target","readAsText","ImageTracer","toLowerCase","refreshColor","arr","rgb","rgba","parseInt","sep","changeSVGColor","previousColor","fc","addText","Text","lineHeight","paintFirst","padding","lockScalingFlip","layer0","setControlsVisibility","pdfConverter","_resolve","_callee4","buffer","_context4","convertPdfToImages","readAsArrayBuffer","_callee5","pdf","viewport","context","_context5","pdfjsLib","promise","numPages","getPage","getViewport","render","canvasContext","_x4","subscribeWithSelector","actionSlice","datasbase","ToolTip","arrowOnTop","_ref$className","children","ActionButtons","_use3dddPlus","shallow","findIndex","splice","canvasActions","onClick","sel","ActiveSelection","requestRenderAll","disabled","MdLayers","CgUndo","CgRedo","justifyContent","CANVAS_MENU_TEXT","NudgeButtons","textSelected","nudgeMove","aCoords","marginTop","marginBottom","version","ContextMenu","menu","onclick","bringForward","bringToFront","flipX","originX","canvasRef","useRef","resizeCanvas","getElementById","outerCanvasContainer","containerWidth","clientWidth","getWidth","zoom","getZoom","setWidth","setHeight","clientHeight","getHeight","setViewportTransform","useEffect","canv","left1","top1","scale1x","scale1y","width1","height1","Canvas","centeredScaling","preserveObjectStacking","stopContextMenu","isObjectInCenter","canvasCenterX","objCenterX","isObjectInVerticalCenter","canvasCenterY","isObjectInHorizontalCenter","deleteImg","src","rotateImg","settingImg","renderIcon","fabricObject","cornerSize","save","translate","rotate","degreesToRadians","angle","drawImage","restore","objectCaching","transparentCorners","cornerColor","cornerStrokeColor","borderColor","cornerStyle","borderDashArray","controls","deleteControl","Control","offsetY","offsetX","cursorStyle","mouseUpHandler","eventData","settingControl","getElement","getBoundingClientRect","clientX","clientY","actionHandler","controlsUtils","rotationWithSnapping","actionName","withConnection","getAllColors","_canv$getObjects","flat","Boolean","on","_e$selected","_e$selected$","_e$selected2","_e$selected2$","isNaN","pointer","max","min","scaleY","lockRotation","centeredRotation","initCanvas","addEventListener","FontFace","load","_document$fonts","fonts","classList","position","border","boxShadow","onBlur","Card","cardClass","CardBody","bodyClass","CardMedia","role","alt","imageClass","backgroundImage","CardTags","tagsClass","CardTitle","titleClass","FileUploadButton","onFileSelect","fileInputRef","_useState","useState","setIsDragging","onDragEnter","onDragLeave","onDragOver","onDrop","droppedFile","dataTransfer","files","htmlFor","MdOutlineFileUpload","_fileInputRef$current","onChange","selectedFile","_event$target$files","accept","defaultColorNames","ColorPalette","_ref$previousClass","previousClass","_ref$mainIndex","mainIndex","handleColorChange","_ref$style","selectColor","setSelectColor","colorList","handleColorClick","TEXT_SIZE_9","ColorBox","boxClass","_ref2$boxClass","background","marginLeft","ColorImpl","colorCode","find","mClass","stopPropagation","setDisplayPallet","callback","setPosition","innerHeight","PopUpCanvas","popupCanvas","colorCount","setColorCount","_useState2","colorFillCount","setColorFillCount","_useState3","isRefresh","setIsRefresh","_useState4","isNextClicked","setIsNextClicked","defaultColorFillRef","_useState5","displayPallet","_useState6","hasPallet","setTimeout","onColorUpdate","removeColorPalatte","popupcanvas","defaultCursor","hoverCursor","Set","_popupcanvas$getObjec","toActiveSelection","viewportCenter","mouseClick","getPointer","removedColors","containsPoint","defaultColorsCopy","rc","dc","removeEventListener","onContinue","objs","alltogetherObj","Group","onSelectColor","conflictColors","useMemo","currentColors","colorFromDefaultCopy","dcc","overflow","alignItems","Number","CgArrowRight","cursor","handleChange","GiDrop","MdOutlineCancel","bottom","right","mixBlendMode","mainClass","display","UploadLogo","setSelectedFile","svgConverter","objectURL","lastIndexOf","s3_file_url","svgText","ex","URL","createObjectURL","Searchbar","searchBarMainClass","placeholder","onKeyPress","onPaste","currentTarget","focus","SortAndFilterButton","icons","buttonLabelClass","SortByDropdown","sortOptions","isDropdownOpen","setIsDropdownOpen","dropdownRef","toggleDropdown","handleOutsideClick","contains","BsSortDown","option","sortBy","sortDir","onApply","_React$useState","logoSelected","setLogoSelected","scrollEnd","setScrollEnd","morePages","setMorePages","myRef","debouncedSearchText","milliSeconds","debouncedValue","setDebouncedValue","handler","clearTimeout","useDebounce","handleScroll","useCallback","scrollY","scrollTop","scrollHeight","fetchData","onScroll","_logo$tag","_logo$tag$split","_logo$tag$split$filte","logo_id","logo_url","BsCheckLg","_ref$label","_ref$iconPosition","iconPosition","checkMarkClass","IoMdCheckmarkCircle","downloadClass","iconClass","pdfUrl","downloadIconClass","HiOutlineDownload","flagClass","flag","descriptionClass","InputImpl","contentStyle","crossOnClick","modalStyle","backdropStyle","open","RxCross2","buttons","buttonMainClass","button","buttonClass","headingStyle","labelStyle","onIconClick","iconStyle","LeftMenu","StepperList","FaRegImage","BiSolidColorFill","TEXT_COLOR_1","SELECT_TEXT_COLOR","step","SELECT_BG_COLOR","t","s","h","exports","l","call","o","defineProperty","configurable","enumerable","n","__esModule","hasOwnProperty","p","_class","source","A","B","C","D","Aleft","Atop","Btop","Bright","Cright","Cbottom","Dbottom","Dleft","ABx","ABy","CDx","CDy","BCx","BCy","ADx","ADy","STEPS","distortX","distortY1","distortY2","T1","T2","kAB","kBC","kCD","kAD","applyParameters","_proto","_parameters","bend","PI","sin","cos","kt","distortV","distortH","setAnchors","setArc","setArcLower","setArcUpper","setArch","setBulge","setFlag","setFish","setRise","setInflate","setSqueeze","setWaveLower","setWaveUpper","setControls","changeCubic","_changePoint","getPointOn","getNewSegment","changePoint","calculateArms","_class2","Exception","_props","vertical","commands","parseString","_proto2","match","parseFloat","warp","calcRectangle","output","xMin","yMin","xMax","yMax","Path","errorPopup","fontFamilies","Rightmenu","initTE","Tab","textAlignDisplay","setTextAlignDisplay","bold","italic","underline","setFontStyle","activeButton","setActiveButton","activeTab","setActiveTab","shapeSizeVal","setShapeSizeVal","textLength","setTextLength","_useState7","bridgeshapeBendSize","setBridgeShapeBendSize","_useState8","bowtieshapeBendSize","setBowtieShapeBendSize","_useState9","_useState10","_useState11","textToPath","promises","pathObj","object","fontSource","font","getPath","fabricPath","toPathData","all","bridgeShapeChange","textShapeChange","textChange","_text","dims","newTextPath","_dims","_activeObj","toClipPathSVG","trim","_removeCacheCanvas","updateStoreAllObject","_calcDimensions","_x5","_x6","_x7","_x8","_x9","reduceFontSize","_ref3","_activeObj2","onTextChange","_ref4","lines","_x10","textAlignHandler","reduceLeft","_ref5","_activeObj3","textColorChange","strokeColorChange","textStyle","_extends2","layerHandle","num","currentObject","changeArr","fromIndex","toIndex","changeSVGTextColor","SelectedObjet","tempColorFill","onSave","unSub","subscribe","_current","_previous","mergedColors","_Object$keys","tempColors","uniqueColors","paddingLeft","tab","INPUT_BG_COLOR","list","FiAlignLeft","FiAlignCenter","FiAlignRight","valueAsNumber","dublicateText","oldCharSpacing","val","setShapeSizeOnTextPath","_Object$keys2","ErrorPopup","marginRight","deleteElement","Loader","_ref$position","_ref$height","loaderRef","DropdownIndicator","components","control","base","&:focus","&:hover","isSelected","isFocused",":active","ListDropdown","dropdownData","handleSelected","setData","Select","defaultValue","isSearchable","IndicatorSeparator","styles","decorationData","code","description","linkedNodes","threeD","AddMascot","Array","from","flatMap","mascot","labelClass","labelSpan","dropdownClass","dropdownLiClass","LogoEditorSaveDesignModal","CustomInput","customLabelStyle","customInputStyle","FloatingLabel","variant","onKeyDown","theme","outlined","sm","md","input","helperText","SaveDesign","onSaveLogo","designNameValidation","setDesignNameValidation","commaInTagName","setCommaInTagName","tagNameLength","setTagNameLength","isSaving","setIsSaving","closeModal","tagName","setTagName","onSaveHandler","pathTextsData","pathTextsKeys","dataCh","S3UrlPath","canvasSvg","raw","nameValidation","round","assign","toSVG","customer_id","base64_image","svg_image","test","handleKeyDown","keyCode","regTest","handleAdd","handleBackspace","handleNameChange","newList","_e$target","_e$target$value","trimStart","_e$target2","_e$target2$value","isArray","el","TEXT_SIZE_12","EDIT_DESIGN_INFO_TEXT_COLOR_1","_event$target","OutsideAlerter","wrapperRef","handleClickOutside","handleEscape","ColorPicker","setCurrentColor","ChromePicker","hex","disableAlpha","onClose","MiddleMenu","stepperId","customLogoColorList","ToastContainer","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","transition","Bounce"],"mappings":"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"}
1
+ {"version":3,"file":"logoeditor.cjs.production.min.js","sources":["../node_modules/style-inject/dist/style-inject.es.js","../src/components/icon/icon.tsx","../src/components/icon/horizontalFlip.tsx","../src/components/icon/verticalFlip.tsx","../src/components/icon/error.tsx","../src/components/icon/rLogo.tsx","../src/components/icon/myLogo.tsx","../src/components/icon/addText.tsx","../src/components/icon/flipH.tsx","../src/components/icon/flipV.tsx","../src/components/icon/selectAll.tsx","../src/components/icon/copy.tsx","../src/components/icon/sendToBack.tsx","../src/components/icon/sendToFront.tsx","../src/components/icon/sendAboveObject.tsx","../src/components/icon/sendUnderObject.tsx","../src/components/icon/eyedropper.tsx","../src/components/icon/delete.tsx","../src/components/icon/snapToCenter.tsx","../src/components/customToast/customToast.tsx","../src/store/actions/toastMessages.ts","../src/store/actions/index.ts","../src/axios/index.ts","../src/store/lambda/index.ts","../src/store/saveDesign/index.tsx","../src/services/UrlMapping.ts","../src/services/cookies.ts","../src/services/token.ts","../src/services/getDom.ts","../src/services/saveFile.ts","../src/services/restrictSpecialCharacters.ts","../src/store/auth/index.ts","../src/services/sessionStorage.ts","../src/store/history/index.ts","../src/store/fabric/index.ts","../src/loaders/tiffParser.js","../src/data.ts","../src/store/converters/index.ts","../src/store/index.ts","../src/components/button/button.tsx","../src/theme.ts","../src/components/toolTip/toolTip.tsx","../src/components/canvas/canvasButtons.tsx","../src/components/canvas/nudgeButtons.tsx","../src/components/contextMenu/contextMenu.tsx","../src/components/canvas/canvas.tsx","../src/store/fabric/fabricCanvas.ts","../src/components/card/card.tsx","../src/components/card/cardbody.tsx","../src/components/card/cardmedia.tsx","../src/components/card/cardtags.tsx","../src/components/card/cardtitle.tsx","../src/components/uploadLogo/fileuploadButton.tsx","../src/assets/colors/colors.ts","../src/components/colorPallet/colorPalette.tsx","../src/components/colorPallet/color.tsx","../src/components/canvas/popUpCanvas.tsx","../src/store/fabric/Popupcanvas.ts","../src/components/uploadLogo/uploadLogo.tsx","../src/components/searchbar/searchbar.tsx","../src/components/SortByDropdown/sortButton.tsx","../src/components/SortByDropdown/sortByDropdown.tsx","../src/components/myLogo/myLogo.tsx","../src/hooks/debounce/useDebounce.tsx","../src/components/button/iconButton.tsx","../src/components/button/editButton.tsx","../src/components/card/cardcheckmark.tsx","../src/components/card/carddownloadicon.tsx","../src/components/card/cardflag.tsx","../src/components/card/carddescription.tsx","../src/components/input/input.tsx","../src/components/modal/modal.tsx","../src/components/modal/modalButtons.tsx","../src/components/modal/modalDownloadIcon.tsx","../src/components/modal/modalHeading.tsx","../src/components/modal/modalLabel.tsx","../src/components/modal/modalStatusIcon.tsx","../src/components/leftMenu/leftMenu.tsx","../src/services/path-warp.js","../src/components/canvas/errorPopUp.tsx","../src/components/Rightmenu/Rightmenu.tsx","../src/components/loader/loader.tsx","../src/components/addMascot/listDropDown.tsx","../src/components/addMascot/mockData.ts","../src/components/addMascot/addMascot.tsx","../src/components/addMascot/decorationService.ts","../src/components/saveDesign/saveDesignModal.tsx","../src/components/input/customInput.tsx","../src/components/saveDesign/saveDesign.tsx","../src/hooks/outsideAlerter.tsx","../src/components/leftMenu/colorPicker.tsx","../src/components/middleMenu/middleMenu.tsx","../src/index.tsx"],"sourcesContent":["function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n","import React from 'react';\r\nimport { IconContext, IconType } from 'react-icons';\r\nimport { Button, Tooltip, TooltipReference, useTooltipState } from 'reakit';\r\n\r\nexport interface IconButtonProps\r\n extends Exclude<React.ButtonHTMLAttributes<HTMLButtonElement>, 'children'> {\r\n icon?: React.ReactElement<IconType>;\r\n label: string;\r\n}\r\nconst Icon = React.forwardRef<HTMLButtonElement, IconButtonProps>(\r\n ({ label, icon, className, ...props }, ref) => {\r\n const tooltip = useTooltipState({ placement: 'top' });\r\n return (\r\n <>\r\n <TooltipReference\r\n ref={ref}\r\n {...props}\r\n {...tooltip}\r\n as={Button}\r\n className={`${className} flex relative items-center justify-center align-middle w-auto text-sm font-semibold h-5 first:rounded-l last:rounded-r focus:outline-none`}\r\n aria-label={label}\r\n >\r\n {icon}\r\n </TooltipReference>\r\n {label && label !== '' && (\r\n <Tooltip\r\n {...tooltip}\r\n className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before:top-[80%] before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[44deg] before:border before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:rounded-none before:border-t-transparent before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af]`}\r\n style={{ zIndex: 10 }}\r\n >\r\n {label}\r\n </Tooltip>\r\n )}\r\n </>\r\n );\r\n }\r\n);\r\n\r\nexport const IconButton = ({\r\n label,\r\n\r\n className,\r\n size = '2rem',\r\n icon = undefined,\r\n ...props\r\n}) => {\r\n return (\r\n <IconContext.Provider\r\n value={{\r\n size: size,\r\n className: 'pointer-events-auto cursor-pointer',\r\n }}\r\n >\r\n <Icon label={label} icon={icon} className={className} {...props} />\r\n </IconContext.Provider>\r\n );\r\n};\r\n\r\n\r\nexport {\r\n IoIosColorPalette,\r\n IoMdCheckmarkCircle,\r\n IoIosArrowForward,\r\n} from 'react-icons/io';\r\nexport { HiOutlineDownload, HiDotsVertical } from 'react-icons/hi';\r\nexport {\r\n FaRegSave,\r\n FaRegShareSquare,\r\n FaPlus,\r\n FaRegListAlt,\r\n FaEye,\r\n FaEyeSlash,\r\n} from 'react-icons/fa';\r\nexport { BiReset, BiAddToQueue } from 'react-icons/bi';\r\nexport { GiBilledCap, GiCardboardBox } from 'react-icons/gi';\r\nexport { TbWindowMinimize } from 'react-icons/tb';\r\nexport { RxCross2 } from 'react-icons/rx';\r\nexport { IoInformationCircleOutline, IoLogInOutline } from 'react-icons/io5';\r\nexport { CgMenuBoxed } from 'react-icons/cg';\r\nexport { IoIosInformationCircleOutline } from 'react-icons/io';\r\nexport { LuFlipHorizontal2, LuFlipVertical2 } from 'react-icons/lu';\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const HorizontalFlip = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '25.969',\r\n height: '22.478',\r\n viewBox: '0 0 25.969 22.478',\r\n },\r\n child: [\r\n // {\r\n // tag: 'defs',\r\n // attr: {},\r\n // child: [\r\n // {\r\n // tag: 'clipPath',\r\n // attr: { id: 'a' },\r\n // child: [\r\n // {\r\n // tag: 'path',\r\n // attr: { fill: '#353535', d: 'M0 0h25.969v22.478H0z' },\r\n // child: [],\r\n // },\r\n // ],\r\n // },\r\n // ],\r\n // },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'm25.969 3.647-10.359 8.46 10.359 8.632Z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M0 3.469v17.276l10.366-8.466L0 3.469m1.719 3.593 5.914 5.218-5.914 4.87Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.151 0h1.683v1.674h-1.683z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.154 3.462h1.677v1.686h-1.677z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.152 6.937h1.68v1.671h-1.68z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.144 10.406h1.679v1.669h-1.679z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.149 13.869h1.686v1.678h-1.686z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.143 17.334h1.686v1.683h-1.686z' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'M12.154 20.8h1.668v1.678h-1.668z' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const VerticalFlip = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '45',\r\n height: '45',\r\n viewBox: '0 0 45 45',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { fill: '#fff', stroke: '#ebebeb' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M0 0h45v45H0z',\r\n stroke: 'none',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n d: 'M.5.5h44v44H.5z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n transform: 'rotate(90 12.239 21.239)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'm0 3.647 10.359 8.46L0 20.74Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M25.969 3.469v17.276L15.603 12.28l10.366-8.811M24.25 7.062l-5.914 5.218 5.914 4.87Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.135 0h1.683v1.674h-1.683z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.138 3.462h1.677v1.686h-1.677z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.136 6.937h1.68v1.671h-1.68z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.146 10.406h1.679v1.669h-1.679z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.134 13.869h1.686v1.678h-1.686z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.14 17.334h1.686v1.683H12.14z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M12.147 20.8h1.668v1.678h-1.668z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const Error = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '30',\r\n height: '30',\r\n viewBox: '0 0 30 30',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { transform: 'translate(-150 -259)' },\r\n child: [\r\n {\r\n tag: 'circle',\r\n attr: {\r\n cx: '15',\r\n cy: '15',\r\n r: '15',\r\n transform: 'translate(150 259)',\r\n fill: '#e11a38',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#fff',\r\n 'stroke-linecap': 'round',\r\n 'stroke-width': '2',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'm160.439 278.488 9.484-9.484' },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: { d: 'm169.922 278.488-9.484-9.484' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const RLogo = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '36.672',\r\n height: '34.349',\r\n viewBox: '0 0 36.672 34.349',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-0.001)\",\r\n d: 'M1.99,0H29.149a1.993,1.993,0,0,1,1.99,1.99V29.011a1.986,1.986,0,0,1-.584,1.4v0A1.985,1.985,0,0,1,29.149,31H1.99A1.993,1.993,0,0,1,0,29.011V1.99A1.983,1.983,0,0,1,.585.587v0A1.985,1.985,0,0,1,1.99,0',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#fff',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-1.117 -1.116)\",\r\n strokeWidth: '2px',\r\n d: 'M2.526,2.442l-.043.043a.875.875,0,0,0-.26.62V30.127a.887.887,0,0,0,.882.882h27.16a.877.877,0,0,0,.58-.219l.043-.043a.876.876,0,0,0,.26-.621V3.105a.887.887,0,0,0-.882-.882H3.105a.876.876,0,0,0-.579.219',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: '#fff',\r\n fillRule: 'evenodd',\r\n transform:\"translate(-3.386 -6.517)\",\r\n d: 'M17.761,19.938a.317.317,0,0,1-.064.191c-.009.011-.018.023-.028.035a28.71,28.71,0,0,0-5.566,10.1.408.408,0,0,1-.425.267c-.479,0-3.211-.01-4.535-.01-.325,0-.353-.273-.242-.526a52.346,52.346,0,0,1,7.018-9.774,2.034,2.034,0,0,1,1.665-.577c.288-.018,1.3-.034,1.86-.019a.317.317,0,0,1,.317.317m11.5,7.6h0a26.686,26.686,0,0,1,1.788,2.517c.172.193.163.475-.13.475H25.887a.593.593,0,0,1-.5-.279c-.041-.059-.084-.118-.128-.178-2.739-4.256-4.547-5.186-8.643-6.328a.289.289,0,0,1-.153-.4,16.3,16.3,0,0,1,.994-1.485.424.424,0,0,1,.243-.113,10.774,10.774,0,0,0,2.58-.144c2.338-.627,2.872-2,2.789-2.969-.021-1.525-1.992-2.28-5.547-2.214-2.524,0-3.5-.036-6.741-.033-1.269.025-2.793-.712-3.965-2.816-.193-.339.02-.591.242-.585,2.812.029,9.023-.022,13.067.079,6.085.309,7.622,2.866,7.7,5.1.041,3.026-2.349,4.423-3.37,5.1a18.519,18.519,0,0,1,4.805,4.272',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const MyLogo = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.381',\r\n height: '23.778',\r\n viewBox: '0 0 26.381 23.778',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n strokeWidth:\"1\",\r\n d: 'M19.698 7.853c.571-.475 1.11-.938 1.664-1.382a22.426 22.426 0 0 1 3.1-2.231 2.543 2.543 0 0 1 .612-.246.621.621 0 0 1 .769.8 4.073 4.073 0 0 1-.4.893 27.867 27.867 0 0 1-2.478 3.343c-.795.962-1.61 1.906-2.411 2.863a.509.509 0 0 0-.111.285 11.208 11.208 0 0 1-4.658 8.872 11.121 11.121 0 0 1-5.4 2.144 10.707 10.707 0 0 1-6.8-1.464 6.79 6.79 0 0 1-2.179-1.877 4.01 4.01 0 0 1-.491-4.3 3.571 3.571 0 0 1 1.06-1.273c.414-.331.841-.646 1.244-.989a1.774 1.774 0 0 0 .645-1.65 1.75 1.75 0 0 0-.635-1.151c-.374-.316-.76-.618-1.149-.914A3.763 3.763 0 0 1 .518 6.224a4.115 4.115 0 0 1 .855-2.262 7.56 7.56 0 0 1 2.733-2.204A11.038 11.038 0 0 1 8.162.542a10.878 10.878 0 0 1 4.744.658 11.321 11.321 0 0 1 4.686 3.2 11.249 11.249 0 0 1 2 3.214c.03.074.064.146.108.245m-.282 5.322c-.092.1-.143.148-.192.2-.958 1.023-1.91 2.052-2.879 3.066a1.725 1.725 0 0 0-.558.945 1.758 1.758 0 0 1-.121.361 4.187 4.187 0 0 1-2.709 2.693 7.042 7.042 0 0 1-4.627-.317.433.433 0 0 1-.291-.515.464.464 0 0 1 .452-.388 1.061 1.061 0 0 0 .994-.853c.161-.6.286-1.213.448-1.814a3.442 3.442 0 0 1 .8-1.513 3.653 3.653 0 0 1 2.092-1.027.823.823 0 0 0 .4-.195c.952-.9 1.884-1.816 2.841-2.707.9-.841 1.83-1.656 2.746-2.483.069-.062.134-.105.087-.231a10.636 10.636 0 0 0-2.107-3.49 10.45 10.45 0 0 0-3.874-2.7 10.109 10.109 0 0 0-4.27-.765 10 10 0 0 0-4.044 1.106 6.858 6.858 0 0 0-2.52 2.016 3.015 3.015 0 0 0 .526 4.236c.338.253.671.514 1 .778a2.9 2.9 0 0 1 1.061 1.408 2.668 2.668 0 0 1-.767 2.935c-.429.393-.9.737-1.362 1.1A2.9 2.9 0 0 0 1.66 18.4a4.238 4.238 0 0 0 1.474 1.875 9.636 9.636 0 0 0 6.836 2.016 10.206 10.206 0 0 0 4.484-1.48 10.431 10.431 0 0 0 4.233-4.893 9.948 9.948 0 0 0 .729-2.745m5.19-7.862-.074-.074a99.034 99.034 0 0 0-10.583 9.169l1.591 1.545a98.291 98.291 0 0 0 9.066-10.64M9.871 19.6a6.541 6.541 0 0 0 2 .118 3.378 3.378 0 0 0 1.869-.76 3.885 3.885 0 0 0 1.183-1.969.286.286 0 0 0-.077-.334c-.441-.431-.87-.874-1.306-1.311-.475-.477-.477-.478-1.117-.271a2.024 2.024 0 0 0-1.338 1.1 12.7 12.7 0 0 0-.425 1.313c-.163.536-.305 1.079-.483 1.611a2.526 2.526 0 0 1-.311.5',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M15.289 10.865a2.043 2.043 0 0 1-1.97-2.233 2.052 2.052 0 1 1 1.97 2.233m1.18-2.029a1.112 1.112 0 0 0-2.224-.01 1.124 1.124 0 0 0 1.123 1.1 1.093 1.093 0 0 0 1.1-1.094',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M5.279 9.17a2.037 2.037 0 1 1 2.036-2.152A2.031 2.031 0 0 1 5.279 9.17m-.011-.939a1.1 1.1 0 1 0-1.109-1.11 1.1 1.1 0 0 0 1.109 1.11',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M8.679 5.605a2.048 2.048 0 1 1 2.064 2.006 2.024 2.024 0 0 1-2.064-2.006m.934-.03a1.115 1.115 0 1 0 1.1-1.1 1.117 1.117 0 0 0-1.1 1.1',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n fill: '#5d5d5d',\r\n\r\n fillRule: 'evenodd',\r\n\r\n transform: 'translate(-78.659 -351.017)',\r\n d: 'M7.895 17.255a2.045 2.045 0 1 1-2.079-2.031 2.032 2.032 0 0 1 2.079 2.031m-.934.021a1.111 1.111 0 1 0-1.131 1.091 1.108 1.108 0 0 0 1.131-1.091',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const AddText = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '21',\r\n height: '21',\r\n viewBox: '0 0 21 21',\r\n },\r\n\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M16 19H2V5h9V3H2a2.006 2.006 0 0 0-2 2v14a2.006 2.006 0 0 0 2 2h14a2.006 2.006 0 0 0 2-2v-9h-2Zm2-16V0h-2v3h-3c.01.01 0 2 0 2h3v2.99c.01.01 2 0 2 0V5h3V3Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M8.438 15.791v-5.365h-.889v.859h-1.8c0-.643-.027-1.281.009-1.914a.841.841 0 0 1 .858-.762q2.725-.01 5.45 0a.841.841 0 0 1 .857.764c.036.634.009 1.271.009 1.919h-1.784v-.862h-.9v5.361Z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const FlipH = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '24',\r\n height: '20.774',\r\n viewBox: '0 0 24 20.774',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'clip-path' },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_336',\r\n 'data-name': 'Rectangle 336',\r\n width: '24',\r\n height: '20.774',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1196',\r\n 'data-name': 'Group 1196',\r\n transform: 'translate(24 20.774) rotate(180)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_577',\r\n 'data-name': 'Group 577',\r\n transform: 'translate(0 0)',\r\n 'clip-path': 'url(#clip-path)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4546',\r\n 'data-name': 'Path 4546',\r\n d: 'M0,15.8,9.574,7.978,0,0Z',\r\n transform: 'translate(0 1.606)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4547',\r\n 'data-name': 'Path 4547',\r\n d: 'M9.58,15.967V0L0,7.824l9.58,8.143M7.991,12.646,2.525,7.823l5.466-4.5Z',\r\n transform: 'translate(14.42 1.601)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_329',\r\n 'data-name': 'Rectangle 329',\r\n width: '1.556',\r\n height: '1.547',\r\n transform: 'translate(11.215 19.227)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_330',\r\n 'data-name': 'Rectangle 330',\r\n width: '1.549',\r\n height: '1.559',\r\n transform: 'translate(11.218 16.016)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_331',\r\n 'data-name': 'Rectangle 331',\r\n width: '1.553',\r\n height: '1.544',\r\n transform: 'translate(11.216 12.818)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_332',\r\n 'data-name': 'Rectangle 332',\r\n width: '1.551',\r\n height: '1.542',\r\n transform: 'translate(11.226 9.615)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_333',\r\n 'data-name': 'Rectangle 333',\r\n width: '1.559',\r\n height: '1.551',\r\n transform: 'translate(11.214 6.405)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_334',\r\n 'data-name': 'Rectangle 334',\r\n width: '1.559',\r\n height: '1.555',\r\n transform: 'translate(11.219 3.198)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_335',\r\n 'data-name': 'Rectangle 335',\r\n width: '1.542',\r\n height: '1.551',\r\n transform: 'translate(11.226 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n// https://www.svgviewer.dev/ use this website to compress and load the paths\r\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\r\nexport const FlipV = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '20.774',\r\n height: '24',\r\n viewBox: '0 0 20.774 24',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'clip-path' },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_336',\r\n 'data-name': 'Rectangle 336',\r\n width: '24',\r\n height: '20.774',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1195',\r\n 'data-name': 'Group 1195',\r\n transform: 'translate(0 24) rotate(-90)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_577',\r\n 'data-name': 'Group 577',\r\n transform: 'translate(0 0)',\r\n 'clip-path': 'url(#clip-path)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4546',\r\n 'data-name': 'Path 4546',\r\n d: 'M0,15.8,9.574,7.978,0,0Z',\r\n transform: 'translate(0 1.606)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4547',\r\n 'data-name': 'Path 4547',\r\n d: 'M9.58,15.967V0L0,7.824l9.58,8.143M7.991,12.646,2.525,7.823l5.466-4.5Z',\r\n transform: 'translate(14.42 1.601)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_329',\r\n 'data-name': 'Rectangle 329',\r\n width: '1.556',\r\n height: '1.547',\r\n transform: 'translate(11.215 19.227)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_330',\r\n 'data-name': 'Rectangle 330',\r\n width: '1.549',\r\n height: '1.559',\r\n transform: 'translate(11.218 16.016)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_331',\r\n 'data-name': 'Rectangle 331',\r\n width: '1.553',\r\n height: '1.544',\r\n transform: 'translate(11.216 12.818)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_332',\r\n 'data-name': 'Rectangle 332',\r\n width: '1.551',\r\n height: '1.542',\r\n transform: 'translate(11.226 9.615)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_333',\r\n 'data-name': 'Rectangle 333',\r\n width: '1.559',\r\n height: '1.551',\r\n transform: 'translate(11.214 6.405)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_334',\r\n 'data-name': 'Rectangle 334',\r\n width: '1.559',\r\n height: '1.555',\r\n transform: 'translate(11.219 3.198)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_335',\r\n 'data-name': 'Rectangle 335',\r\n width: '1.542',\r\n height: '1.551',\r\n transform: 'translate(11.226 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SelectAll = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '18.641',\r\n height: '18.063',\r\n viewBox: '0 0 18.641 18.063',\r\n className: 'group',\r\n ...props,\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: { 'data-name': 'Group 1075' },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n strokeWidth: '1',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: { width: '16', height: '16', rx: '4', stroke: 'none' },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n x: '.75',\r\n y: '.75',\r\n width: '14.5',\r\n height: '14.5',\r\n rx: '3.25',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'm7.049 8.602.146-.137 3.2-3.2a.766.766 0 0 1 .5-.267.652.652 0 0 1 .539 1.082c-.03.035-.064.066-.1.1l-3.836 3.829a.664.664 0 0 1-1.1-.068c-.415-.549-.826-1.1-1.24-1.649a.657.657 0 0 1-.083-.755.65.65 0 0 1 1.085-.093c.253.311.486.638.728.959l.151.2',\r\n className: 'group-hover:fill-[#E11A38]',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M5.892 18.063c-.1-.023-.2-.043-.3-.07a1.976 1.976 0 0 1-1.385-1.249h10.599a2.39 2.39 0 0 0 2.327-1.536 2.873 2.873 0 0 0 .177-.988c.013-2.859.008-5.717.008-8.576V3.671a1.652 1.652 0 0 1 .708.43 1.927 1.927 0 0 1 .58 1.124.871.871 0 0 0 .033.114v9.182a1.686 1.686 0 0 0-.031.167 3.713 3.713 0 0 1-2.515 3.16 10.1 10.1 0 0 1-1 .214Z',\r\n className: 'group-hover:fill-[#E11A38]',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const Copy = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'ICONS',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.063',\r\n height: '23.063',\r\n viewBox: '0 0 23.063 23.063',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3956',\r\n 'data-name': 'Path 3956',\r\n d: 'M17.912,5.252a1.2,1.2,0,0,0,.026-.127A5.13,5.13,0,0,0,12.813,0H6.406A6.414,6.414,0,0,0,0,6.406v6.406a5.13,5.13,0,0,0,5.125,5.125,1.192,1.192,0,0,0,.127-.026,6.415,6.415,0,0,0,6.279,5.151h5.125a6.414,6.414,0,0,0,6.406-6.406V11.531a6.415,6.415,0,0,0-5.151-6.279ZM5.125,11.531v3.844a2.565,2.565,0,0,1-2.562-2.562V6.406A3.848,3.848,0,0,1,6.406,2.563h6.406a2.565,2.565,0,0,1,2.563,2.563H11.531a6.414,6.414,0,0,0-6.406,6.406ZM20.5,16.656A3.848,3.848,0,0,1,16.656,20.5H11.531a3.848,3.848,0,0,1-3.844-3.844V11.531a3.848,3.848,0,0,1,3.844-3.844h5.125A3.848,3.848,0,0,1,20.5,11.531Z',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const SendToBack = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.552',\r\n height: '23.495',\r\n viewBox: '0 0 26.552 23.495',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_654',\r\n 'data-name': 'Group 654',\r\n transform: 'translate(-17856.939 13913.36)',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4583',\r\n 'data-name': 'Path 4583',\r\n d: 'M0,0H14.069V14.069H0Z',\r\n transform: 'translate(17861.625 -13909.535)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_387',\r\n 'data-name': 'Rectangle 387',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(17857.939 -13912.36)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_388',\r\n 'data-name': 'Rectangle 388',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(17871.771 -13898.529)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const SendToFront = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '26.551',\r\n height: '23.495',\r\n viewBox: '0 0 26.551 23.495',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_651',\r\n 'data-name': 'Group 651',\r\n transform: 'translate(-1140.036 -318.639)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_647',\r\n 'data-name': 'Group 647',\r\n transform: 'translate(1140.643 319.246)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_646',\r\n 'data-name': 'Group 646',\r\n transform: 'translate(0 0)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_648',\r\n 'data-name': 'Group 648',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_387',\r\n 'data-name': 'Rectangle 387',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(0.393 0.393)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_388',\r\n 'data-name': 'Rectangle 388',\r\n width: '10.72',\r\n height: '7.664',\r\n transform: 'translate(14.225 14.225)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_390',\r\n 'data-name': 'Rectangle 390',\r\n width: '14.069',\r\n height: '14.069',\r\n transform: 'translate(4.078 3.89)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SendAObject = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.097',\r\n height: '22.481',\r\n viewBox: '0 0 23.097 22.481',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_653',\r\n 'data-name': 'Group 653',\r\n transform: 'translate(-1140.475 -411.367)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_642',\r\n 'data-name': 'Group 642',\r\n transform: 'translate(1127.096 398.368)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_643',\r\n 'data-name': 'Group 643',\r\n transform: 'translate(13.932 13.552)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_383',\r\n 'data-name': 'Rectangle 383',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(0.447 0.447)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_385',\r\n 'data-name': 'Rectangle 385',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(1147.572 417.848)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const SendUnderObject = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '23.097',\r\n height: '22.481',\r\n viewBox: '0 0 23.097 22.481',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_652',\r\n 'data-name': 'Group 652',\r\n transform: 'translate(-1140.475 -369.367)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_386',\r\n 'data-name': 'Rectangle 386',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(1147.572 375.848)',\r\n fill: '#cecece',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_644',\r\n 'data-name': 'Group 644',\r\n transform: 'translate(1127.096 356.368)',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_643',\r\n 'data-name': 'Group 643',\r\n transform: 'translate(13.932 13.552)',\r\n },\r\n child: [\r\n {\r\n tag: 'rect',\r\n attr: {\r\n id: 'Rectangle_383',\r\n 'data-name': 'Rectangle 383',\r\n width: '16',\r\n height: '16',\r\n transform: 'translate(0.447 0.447)',\r\n fill: 'none',\r\n stroke: '#5d5d5d',\r\n 'stroke-miterlimit': '10',\r\n 'stroke-width': '2',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n\r\nexport const EyeDropper = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '21.595',\r\n height: '21.61',\r\n viewBox: '0 0 21.595 21.61',\r\n },\r\n child: [\r\n {\r\n tag: 'defs',\r\n attr: {},\r\n child: [\r\n {\r\n tag: 'clipPath',\r\n attr: { id: 'a' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: { d: 'M0 0h21.595v21.61H0z' },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n },\r\n {\r\n tag: 'g',\r\n attr: { 'clip-path': 'url(#a)' },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M1.228 21.609a2.184 2.184 0 0 1-1.019-.812.946.946 0 0 1-.009-1.18q.455-.7.922-1.386a3.7 3.7 0 0 0 .667-1.553 5.591 5.591 0 0 0 .054-.608 2.553 2.553 0 0 1 .814-1.771q3.351-3.342 6.7-6.692a2.115 2.115 0 0 1 .222-.168c-.232-.224-.428-.405-.615-.6a.509.509 0 0 1-.008-.81q.925-.938 1.862-1.865a.507.507 0 0 1 .812 0q2.91 2.9 5.813 5.814a.509.509 0 0 1 0 .812q-.926.937-1.864 1.863a.508.508 0 0 1-.81 0c-.2-.192-.381-.393-.58-.6-.06.05-.1.082-.141.119-2.268 2.244-4.543 4.48-6.8 6.737a2.813 2.813 0 0 1-2.027.876 2.969 2.969 0 0 0-1.611.549c-.5.331-.99.667-1.492.99a5.8 5.8 0 0 1-.556.281Zm2.234-3.431a5.564 5.564 0 0 1 1.852-.385.8.8 0 0 0 .473-.228q3.425-3.372 6.836-6.758a.764.764 0 0 1 .128-.091l-1.869-1.881a1.682 1.682 0 0 1-.132.166q-3.233 3.237-6.473 6.466a1.283 1.283 0 0 0-.483 1.1.6.6 0 0 1-.021.188c-.1.47-.206.94-.312 1.422',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n d: 'M21.595 4.022c-.052.217-.1.436-.157.649a3.645 3.645 0 0 1-.967 1.581q-1.1 1.094-2.191 2.19a.537.537 0 0 1-.9 0l-4.217-4.218a.531.531 0 0 1 0-.885c.806-.8 1.585-1.636 2.429-2.4a3.378 3.378 0 0 1 3.571-.712 3.5 3.5 0 0 1 2.388 2.854c.011.061.029.121.044.181Z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\nexport const Delete = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'ICONS',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '18',\r\n height: '18',\r\n viewBox: '0 0 18 18',\r\n ...props,\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3953',\r\n 'data-name': 'Path 3953',\r\n d: 'M7,8A1,1,0,0,0,6,9v4a1,1,0,0,0,2,0V9A1,1,0,0,0,7,8Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3954',\r\n 'data-name': 'Path 3954',\r\n d: 'M11,8a1,1,0,0,0-1,1v4a1,1,0,0,0,2,0V9a1,1,0,0,0-1-1Z',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_3955',\r\n 'data-name': 'Path 3955',\r\n d: 'M17,4H13A4,4,0,1,0,5,4H1A1,1,0,0,0,1,6H2v9a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V6h1a1,1,0,0,0,0-2ZM9,2a2,2,0,0,1,2,2H7A2,2,0,0,1,9,2Zm5,13a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V6H14Z',\r\n },\r\n child: [],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import { GenIcon } from 'react-icons/lib';\r\n// https://www.svgviewer.dev/ use this website to compress and load the paths\r\n// source: https://raw.githubusercontent.com/alisamar/react-icons-all-files/master/ai/AiFillAccountBook.esm.js\r\nexport const SnapToCenter = (props) => {\r\n return GenIcon({\r\n tag: 'svg',\r\n attr: {\r\n id: 'Group_1194',\r\n 'data-name': 'Group 1194',\r\n xmlns: 'http://www.w3.org/2000/svg',\r\n width: '24',\r\n height: '24.006',\r\n viewBox: '0 0 24 24.006',\r\n },\r\n child: [\r\n {\r\n tag: 'g',\r\n attr: {\r\n id: 'Group_1196',\r\n 'data-name': 'Group 1196',\r\n },\r\n child: [\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4767',\r\n 'data-name': 'Path 4767',\r\n d: 'M0,346.174c.043,0,.085-.008.128-.008H1.519v-1.494h1.5c.008.124,0,.248,0,.371s0,.25,0,.375v.748h1.5v1.5H6.01v1.493c-.251.016-.5.005-.747.007s-.49,0-.737,0c0,.041-.007.068-.007.1q0,.679,0,1.359c0,.019,0,.039,0,.058H0Zm3.013,2.98v-1.476a14.331,14.331,0,0,0-1.485,0v1.473Z',\r\n transform: 'translate(0 -326.668)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4768',\r\n 'data-name': 'Path 4768',\r\n d: 'M0,.006C.047,0,.093,0,.14,0H4.517V1.5H6.009v1.5C5.847,3,5.684,3,5.522,3h-1V4.486c-.05,0-.091.008-.131.008H3.022V5.975a14.076,14.076,0,0,1-1.5,0V4.5c-.042,0-.072-.009-.1-.009H.08A.586.586,0,0,0,0,4.506V.006M1.527,2.987c.175.022,1.4.016,1.485-.007V1.5H1.527Z',\r\n transform: 'translate(0 0)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4769',\r\n 'data-name': 'Path 4769',\r\n d: 'M346.317,350.672l0-1.371c0-.042,0-.084,0-.138h-1.479c-.026-.1-.034-1.291-.012-1.5.245-.014.493,0,.741-.006s.49,0,.75,0v-1.5h1.5V344.67h1.5c0,.164,0,.327,0,.489s0,.328,0,.492v.507c.13.01.254,0,.376.005s.242,0,.363,0h.741c0,.047.007.081.007.115q0,2.156,0,4.312c0,.027,0,.054-.006.082Zm1.5-3.005v1.476a13.253,13.253,0,0,0,1.483,0c.022-.162.015-1.384-.009-1.472Z',\r\n transform: 'translate(-326.798 -326.666)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4770',\r\n 'data-name': 'Path 4770',\r\n d: 'M350.993,4.5h-1.477V5.98a13.306,13.306,0,0,1-1.5,0V4.5h-1.493V3.014c-.256-.019-.5-.006-.752-.009s-.49,0-.743,0V1.5h1.49V.038l.017-.018s.006-.007.009-.007A.5.5,0,0,1,346.6.007h4.358a.189.189,0,0,1,.039.01Zm-2.977-1.515a14.117,14.117,0,0,0,1.489,0V1.518a13.475,13.475,0,0,0-1.489.01Z',\r\n transform: 'translate(-327 -0.007)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4771',\r\n 'data-name': 'Path 4771',\r\n d: 'M177.4,181.788a4.769,4.769,0,1,1,4.774-4.743,4.768,4.768,0,0,1-4.774,4.743m0-2.386a2.383,2.383,0,1,0-2.378-2.388A2.391,2.391,0,0,0,177.4,179.4',\r\n transform: 'translate(-165.386 -165.023)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4772',\r\n 'data-name': 'Path 4772',\r\n d: 'M172.573,28.8h1.482v1.474c-.088.023-1.322.03-1.471.008-.024-.086-.033-1.236-.011-1.483',\r\n transform: 'translate(-163.546 -27.296)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4773',\r\n 'data-name': 'Path 4773',\r\n d: 'M258.685,28.8h1.482v1.474c-.088.023-1.324.03-1.472.008-.024-.086-.033-1.239-.01-1.483',\r\n transform: 'translate(-245.16 -27.297)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4774',\r\n 'data-name': 'Path 4774',\r\n d: 'M402.37,172.387h1.486v1.472c-.094.024-1.376.026-1.486,0Z',\r\n transform: 'translate(-381.352 -163.382)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4775',\r\n 'data-name': 'Path 4775',\r\n d: 'M30.729,173.749H29.244v-1.49h1.485Z',\r\n transform: 'translate(-27.716 -163.261)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4776',\r\n 'data-name': 'Path 4776',\r\n d: 'M174.28,403.369H172.8V401.9a14.178,14.178,0,0,1,1.483,0Z',\r\n transform: 'translate(-163.771 -380.883)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4777',\r\n 'data-name': 'Path 4777',\r\n d: 'M258.714,402.039h1.466c.023.089.03,1.31.009,1.471a13.52,13.52,0,0,1-1.466.014,14.287,14.287,0,0,1-.009-1.485',\r\n transform: 'translate(-245.186 -381.038)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4778',\r\n 'data-name': 'Path 4778',\r\n d: 'M29.194,259.847V258.38a14.3,14.3,0,0,1,1.487-.006v1.473Z',\r\n transform: 'translate(-27.669 -244.862)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n {\r\n tag: 'path',\r\n attr: {\r\n id: 'Path_4779',\r\n 'data-name': 'Path 4779',\r\n d: 'M402.241,258.521h1.465c.023.088.028,1.336.007,1.47-.083.024-1.261.033-1.467.012a13.357,13.357,0,0,1-.006-1.482',\r\n transform: 'translate(-381.212 -245.017)',\r\n fill: '#5d5d5d',\r\n },\r\n child: [],\r\n },\r\n ],\r\n },\r\n ],\r\n })(props);\r\n};\r\n","import React from 'react';\r\nimport { toast } from 'react-toastify';\r\nexport interface toastGenProps {\r\n type: 'Error' | 'Info' | 'Warning' | 'Success';\r\n message: string;\r\n}\r\nimport { Error } from '../icon';\r\n\r\nexport function CustomToast(\r\n type: 'info' | 'error' | 'warning' | 'success',\r\n message: string,\r\n toastId: number,\r\n style?: React.CSSProperties\r\n) {\r\n switch (type) {\r\n case 'info':\r\n return toast.info(toastGen({ type: 'Info', message }), {\r\n toastId,\r\n style,\r\n });\r\n case 'error':\r\n return toast.error(toastGen({ type: 'Error', message }), {\r\n toastId,\r\n icon: Error,\r\n style,\r\n });\r\n case 'success':\r\n return toast.success(toastGen({ type: 'Success', message }), {\r\n toastId,\r\n style,\r\n });\r\n case 'warning':\r\n return toast.warning(toastGen({ type: 'Warning', message }), {\r\n toastId,\r\n style,\r\n });\r\n }\r\n}\r\nexport const toastGen = ({ type, message }: toastGenProps) => (\r\n <div>\r\n <div className=\"text-base font-bold leading-[22px]\">{type}</div>\r\n <div className=\"text-sm font-medium leading-[22px]\">{message}</div>\r\n </div>\r\n);\r\n","import { CustomToast as e } from '../../components/customToast';\r\n\r\nexport interface ToastMessages {\r\n deleteLogoSuccess: () => void;\r\n error: (message: string) => void;\r\n saveSuccess: () => void;\r\n somethingWentWrong: () => void;\r\n success: (message: string) => void;\r\n updateLogoSuccess: () => void;\r\n updateSuccess: () => void;\r\n warning: (message: string) => void;\r\n noOfColors: () => void;\r\n noIteminCanvas: () => void;\r\n}\r\n\r\nexport const toastMessages: ToastMessages =\r\n // prettier-ignore\r\n {\r\n deleteLogoSuccess: () => e('success', 'Logo deleted successfully!', 1),\r\n error: (message) => e('success', message, 2),\r\n saveSuccess: () => e('success', 'You have successfully saved your Logo', 3,{ width: '30rem' }), \r\n somethingWentWrong: () => e('error', 'Something Went Wrong', 4),\r\n success: (message) => e('success', message, 5),\r\n updateLogoSuccess: () => e('success', 'Logo updated successfully!', 6),\r\n updateSuccess: () => e('success', 'You have successfully updated your design',7),\r\n warning: (message) => e('success', message, 8),\r\n noOfColors: () => e('error', 'Not more than 8 colors allowed!', 9),\r\n noIteminCanvas: () => e('warning', 'No item in canvas to save', 10),\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { use3dddPlus } from '..';\r\nimport { Design } from '../customize/types';\r\nimport { ToastMessages, toastMessages } from './toastMessages';\r\nexport interface ActionSlice {\r\n displayLoginModal: boolean;\r\n showProductBreakUpModal: { status: boolean; value: any };\r\n loadDesignModal: boolean;\r\n productInfoModal: any;\r\n toastMessages: ToastMessages;\r\n toggleSaveLogo: {\r\n key: string;\r\n status: boolean;\r\n title: string;\r\n details: any;\r\n };\r\n showModalAfterLogin?: void;\r\n changeModel: () => void;\r\n editDesignInfo: () => void;\r\n saveDesignModal: () => void;\r\n setLoadDesignModal: (loadDesign: boolean) => void;\r\n setProductInfoModal: () => any;\r\n clearLayers: () => void;\r\n setToggleSaveLogo: (\r\n key: string,\r\n status: boolean,\r\n title: string,\r\n details: any\r\n ) => void;\r\n share: () => void;\r\n toggleLoginModal: () => void;\r\n confirmDesignModal: { status: boolean; value: string };\r\n setConfirmDesignModal: (status: boolean, value: string) => void;\r\n toggleSuccessfullDesign: boolean;\r\n setToggleSuccessfullDesign: () => void;\r\n selectedDesign: any;\r\n setSelectedDesign: (selected: Design) => void;\r\n saveRackSuccessfulModal: boolean;\r\n setSaveRackSuccessfulModal: () => void;\r\n setShowModalAfterLogin: (toggleAction: any) => void; //Due to current functionality, toggleAction can have callback function of different types\r\n disableUpdate: boolean;\r\n confirmUpdateDesignModal: boolean;\r\n setConfirmUpdateDesignModal: () => void;\r\n designUpdateSuccessfulModal: boolean;\r\n getListFromRack: () => boolean;\r\n toogleShowProductBreakUpModal: (status: boolean, value: any) => void;\r\n productBreakup: any[];\r\n logoSearchText: string;\r\n logoSortBy: string;\r\n logoSortDir: string;\r\n logoPageNo: number;\r\n logoPageSize: number;\r\n showCrossSave: boolean;\r\n}\r\n\r\nconst graphqlSlice: StateCreator<ActionSlice> = (set, get) => {\r\n return {\r\n displayLoginModal: false,\r\n showProductBreakUpModal: {\r\n status: false,\r\n value: {},\r\n },\r\n toastMessages: toastMessages,\r\n loadDesignModal: false,\r\n productInfoModal: false,\r\n toggleSaveLogo: { key: 'save', status: false, title: '', details: {} },\r\n showModalAfterLogin: undefined,\r\n selectedDesign: {},\r\n changeModel: () => {\r\n alert('function not implemented');\r\n },\r\n confirmDesignModal: { status: false, value: '' },\r\n confirmUpdateDesignModal: false,\r\n toggleSuccessfullDesign: false,\r\n designUpdateSuccessfulModal: false,\r\n getListFromRack: () => {\r\n return false;\r\n },\r\n setSelectedDesign: (selected) => {\r\n set({ selectedDesign: selected });\r\n },\r\n setLoadDesignModal: (loadDesign) => {\r\n set({ loadDesignModal: loadDesign });\r\n },\r\n clearLayers: () => use3dddPlus.setState({\r\n storeAllObject: [],\r\n }),\r\n setToggleSaveLogo: (key, status, title, details) => {\r\n set({\r\n toggleSaveLogo: {\r\n key: key,\r\n status: status,\r\n title: title,\r\n details: details,\r\n },\r\n });\r\n },\r\n setConfirmDesignModal: (status, value) => {\r\n set({ confirmDesignModal: { status: status, value: value } });\r\n },\r\n setConfirmUpdateDesignModal: () => {\r\n set((state) => ({\r\n confirmUpdateDesignModal: !state.confirmUpdateDesignModal,\r\n }));\r\n },\r\n setToggleSuccessfullDesign: () => {\r\n set((state) => ({\r\n toggleSuccessfullDesign: !state.toggleSuccessfullDesign,\r\n }));\r\n },\r\n setProductInfoModal: () => {\r\n set((state) => ({ productInfoModal: !state.productInfoModal }));\r\n },\r\n\r\n editDesignInfo: () => {\r\n alert('function not implemented');\r\n },\r\n // rack: () => {\r\n // alert('function not implemented');\r\n // },\r\n\r\n saveDesignModal: () => {\r\n try {\r\n use3dddPlus.setState({ current: 'saveCTA' });\r\n use3dddPlus.getState().navigateTo('savePopUp');\r\n use3dddPlus.setState({ logoName: '' });\r\n use3dddPlus.setState({ designNotes: '' });\r\n use3dddPlus.setState({ logoTag: [] });\r\n let string = '';\r\n const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';\r\n\r\n for (let i = 0; i < 7; i++) {\r\n string += characters.charAt(\r\n Math.floor(Math.random() * characters.length)\r\n );\r\n }\r\n use3dddPlus.setState({ designNumber: string });\r\n\r\n\r\n if (!use3dddPlus.getState().customerId) {\r\n get().toggleLoginModal();\r\n get().setShowModalAfterLogin(() => {\r\n use3dddPlus\r\n .getState()\r\n .setToggleSaveLogo('save', true, 'Save Your Design', {});\r\n });\r\n return;\r\n }\r\n get().setToggleSaveLogo('save', true, 'Save Your Design', {});\r\n use3dddPlus.setState({ disableSaveButton: false });\r\n } catch {}\r\n },\r\n\r\n \r\n share: () => {\r\n alert('function not implemented');\r\n },\r\n toggleLoginModal: () => {\r\n set((state) => ({ displayLoginModal: !state.displayLoginModal }));\r\n },\r\n\r\n saveRackSuccessfulModal: false,\r\n setSaveRackSuccessfulModal: () => {\r\n set((state) => ({\r\n saveRackSuccessfulModal: !state.saveRackSuccessfulModal,\r\n }));\r\n },\r\n setShowModalAfterLogin: (toggleAction) => {\r\n use3dddPlus.setState({ showModalAfterLogin: toggleAction });\r\n },\r\n toogleShowProductBreakUpModal: (status, value) => {\r\n set({ showProductBreakUpModal: { status: status, value: value } });\r\n },\r\n disableUpdate: false,\r\n productBreakup: [],\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n showCrossSave: false,\r\n };\r\n};\r\n\r\nexport default graphqlSlice;\r\n","import axios, { AxiosInstance, AxiosResponse } from 'axios';\r\n\r\nexport const baseURL = process.env.REACT_APP_LAMBDA_URL;\r\n\r\n// TODO remove ts-ignore; CreateAxiosDefaults<any> not building npm package. \r\n// @ts-ignore\r\nexport const instance: AxiosInstance = axios.create({\r\n baseURL: baseURL,\r\n timeout: 15000,\r\n headers: {\r\n 'Content-Type': 'application/json',\r\n Authorization: 'jxnhh7rk7gpjtnp1o1besdaip3pd2560',\r\n },\r\n});\r\n\r\nexport const responseBody = (response: AxiosResponse) => response.data;\r\n\r\nexport const requests = {\r\n get: (url: string) => instance.get(url).then(responseBody),\r\n post: (url: string, body: {}, config?: any) => instance.post(url, body, config).then(responseBody),\r\n put: (url: string, body: {}) => instance.put(url, body).then(responseBody),\r\n delete: (url: string) => instance.delete(url).then(responseBody),\r\n};\r\n","import { StateCreator } from 'zustand';\r\nimport { requests } from '../../axios/index';\r\nimport { use3dddPlus } from '..';\r\nimport { fabric } from 'fabric';\r\n\r\n// const useSampleResponses = process.env.REACT_APP_USE_SAMPLE_RESPONSES;\r\n\r\n\r\nexport interface LambdaSlice {\r\n\r\n lambdaClient: any;\r\n\r\n loadingLogo: (data: any) => any;\r\n getStockLogos: () => void;\r\n saveLogo: (data: any) => any; \r\n}\r\n\r\nconst lambdaSlice: StateCreator<LambdaSlice> = (_set, _get) => {\r\n return {\r\n lambdaClient: requests,\r\n\r\n loadingLogo: async (_data:any) => {\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n if (!use3dddPlus.getState().customerId)\r\n throw new Error('You need to login');\r\n const response = await requests.get(\r\n `/editor-logo/${use3dddPlus.getState().customerId}?searchText=${\r\n use3dddPlus.getState().logoSearchText\r\n }&sortBy=${use3dddPlus.getState().logoSortBy}&sortDir=${\r\n use3dddPlus.getState().logoSortDir\r\n }&pageSize=${use3dddPlus.getState().logoPageSize}&pageNo=${\r\n use3dddPlus.getState().logoPageNo\r\n }`\r\n );\r\n use3dddPlus.setState({ loading: false });\r\n const res = await response;\r\n use3dddPlus.getState().logoPageNo === 1 &&\r\n use3dddPlus.setState({ retriveLogoDesign: res });\r\n\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n getStockLogos: async () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.get('/mascot-logos');\r\n use3dddPlus.setState({ loading: false });\r\n const res = await response;\r\n use3dddPlus.setState({ stockLogos: res });\r\n return res;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n saveLogo: async (logo) => {\r\n try {\r\n use3dddPlus.setState({ loading: true });\r\n if (!requests) {\r\n throw new Error('lambdaClient Not Found');\r\n }\r\n const response = await requests.post('/editor-logo', logo);\r\n use3dddPlus.setState({ loading: false });\r\n return response;\r\n } catch (error) {\r\n console.error(error);\r\n use3dddPlus.setState({ loading: false });\r\n throw new Error(error);\r\n }\r\n },\r\n };\r\n};\r\n\r\nexport default lambdaSlice;\r\n","import { StateCreator } from 'zustand';\r\nexport interface SaveDesignSlice {\r\n disableSaveButton: boolean;\r\n designNumber: string;\r\n designImageUrl: string;\r\n designProofPdfUrl: string;\r\n logoTag: string[];\r\n logoName: string;\r\n designNotes: string;\r\n designConfig: string;\r\n designId: number;\r\n hasDesignNumber: () => boolean;\r\n showSaveCTA: boolean;\r\n showSaveRackCTA: boolean;\r\n}\r\n\r\nexport const saveDesignSlice: StateCreator<SaveDesignSlice> = (_set, get) => {\r\n return {\r\n disableSaveButton: false,\r\n designNumber: '',\r\n designImageUrl: '',\r\n designProofPdfUrl: '',\r\n logoTag: [],\r\n logoName: '',\r\n designNotes: '',\r\n designConfig: '',\r\n designId: undefined,\r\n hasDesignNumber: () => !!get().designNumber,\r\n showSaveCTA: true,\r\n showSaveRackCTA: true,\r\n };\r\n};\r\n\r\nexport default SaveDesignSlice;\r\n","\r\n// import { Texture } from '../store/customize/types';\r\n\r\nconst _oldURL = process.env.REACT_APP_IMAGE_URL_OLD!;\r\nconst _newURL = process.env.REACT_APP_IMAGE_URL!;\r\nexport const URLMapping = (url: string) => {\r\n // check if th url has old or new url paths\r\n if (url.includes(_oldURL)) {\r\n return url.replace(_oldURL, _newURL);\r\n }\r\n // if it has old then relace to new\r\n else if (url.includes(_newURL)) return url;\r\n // if it doesnot have nay then add new\r\n else {\r\n return _newURL + url;\r\n }\r\n};\r\n\r\n// export const getTextureDataFromId = (id) => {\r\n// const textureData = use3dddPlus.getState().productTextures;\r\n\r\n// // const textureData = [];\r\n// return textureData.filter((texture) => texture.id === id).filter(Boolean)[0];\r\n// };\r\n\r\nexport const constructMappingItem = (texture?: any, item?: any) => {\r\n return {\r\n id: item?.id,\r\n name: item?.name,\r\n path: item?.ProductMedium.Image_URL,\r\n type: item?.__typename,\r\n flipY: texture ? texture.flipY : false,\r\n };\r\n};\r\n\r\nexport const getImageURL = (path: string) => {\r\n return process.env.REACT_APP_IMAGE_URL + path; //item?.ProductMedium?.Image_URL\r\n};\r\n","export function getCookie(cname: string) {\r\n let name = cname + '=';\r\n let decodedCookie = decodeURIComponent(document.cookie);\r\n let ca = decodedCookie.split(';');\r\n for (let i = 0; i < ca.length; i++) {\r\n let c = ca[i];\r\n while (c.charAt(0) == ' ') {\r\n c = c.substring(1);\r\n }\r\n if (c.indexOf(name) == 0) {\r\n return c.substring(name.length, c.length);\r\n }\r\n }\r\n return '';\r\n}\r\n\r\nexport function setCookie(cname: string, cvalue: any, exdays: number) {\r\n const d = new Date();\r\n d.setTime(d.getTime() + exdays * 24 * 60 * 60 * 1000);\r\n let expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n}\r\n\r\nexport const clearCookie = (cname: string, cvalue = '') => {\r\n const d = new Date();\r\n d.setTime(d.getTime());\r\n let expires = 'expires=' + d.toUTCString();\r\n document.cookie = cname + '=' + cvalue + ';' + expires + ';path=/';\r\n};\r\n","import CryptoJS from 'crypto-js';\r\nexport const encryptToken = (data: any) => {\r\n return CryptoJS.AES.encrypt(\r\n JSON.stringify(data),\r\n 'secret key 123'\r\n ).toString();\r\n};\r\nexport const decryptToken = (ciphertext: string) => {\r\n var bytes = CryptoJS.AES.decrypt(ciphertext, 'secret key 123');\r\n return JSON.parse(bytes.toString(CryptoJS.enc.Utf8));\r\n};\r\n\r\nexport const getProjectId = () => {\r\n const queryString = window.location.search;\r\n const urlParams = new URLSearchParams(queryString);\r\n const projectId = urlParams.get('projectId');\r\n return projectId || process.env.REACT_APP_3DDDPLUS_PROJECTID;\r\n};\r\n\r\nexport function parseJwt(token) {\r\n var base64Url = token.split('.')[1];\r\n var base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/');\r\n var jsonPayload = decodeURIComponent(\r\n window\r\n ?.atob(base64)\r\n ?.split('')\r\n ?.map(function (c) {\r\n return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);\r\n })\r\n .join('')\r\n );\r\n\r\n return JSON.parse(jsonPayload);\r\n}\r\n","//import { use3dddPlus } from '../store';\r\n\r\n// export const getDomImage = () => {\r\n// var strMime = 'image/jpeg';\r\n// const imgData = use3dddPlus.getState().gl.domElement.toDataURL(strMime);\r\n\r\n// return dataURItoBlob(imgData);\r\n// };\r\n\r\nexport function dataURItoBlob(dataURI) {\r\n // convert base64 to raw binary data held in a string\r\n // doesn't handle URLEncoded DataURIs - see SO answer #6850276 for code that does this\r\n var byteString = atob(dataURI.split(',')[1]);\r\n\r\n // separate out the mime component\r\n // var mimeString = dataURI.split(',')[0].split(':')[1].split(';')[0];\r\n\r\n // write the bytes of the string to an ArrayBuffer\r\n var ab = new ArrayBuffer(byteString.length);\r\n var ia = new Uint8Array(ab);\r\n for (var i = 0; i < byteString.length; i++) {\r\n ia[i] = byteString.charCodeAt(i);\r\n }\r\n\r\n //Old Code\r\n //write the ArrayBuffer to a blob, and you're done\r\n //var bb = new BlobBuilder();\r\n //bb.append(ab);\r\n //return bb.getBlob(mimeString);\r\n\r\n //New Code\r\n return new File([ab], new Date().getTime() + '_configuration' + '.jpg', {\r\n type: 'image/jpeg',\r\n // lastModified: new Date(),\r\n });\r\n}\r\n","// function called to save image\r\nexport const saveFile = function (strData: string, filename: string) {\r\n let link = document.createElement('a');\r\n document.body.appendChild(link);\r\n link.download = filename;\r\n link.href = strData;\r\n link.click();\r\n document.body.removeChild(link);\r\n};\r\n","// The key code condition we provided refers to the following key ranges:\r\n// 1. `(x >= 97 && x <= 122)`: This condition checks for lowercase alphabets in the ASCII range. Key codes 97 to 122 correspond to the characters 'a' to 'z'.\r\n// 2. `(x >= 48 && x <= 57)`: This condition checks for numeric key codes in the ASCII range. Key codes 48 to 57 correspond to the digits '0' to '9'.\r\n// 3. `(x >= 65 && x <= 90)`: This condition checks for uppercase alphabets in the ASCII range. Key codes 65 to 90 correspond to the characters 'A' to 'Z'.\r\n// 4. `(x >= 32 && x <= 32)`: This condition checks for the spacebar key. The key code 32 represents the space character.\r\n// By using these key code conditions, we are checking if the pressed key falls within the range of lowercase alphabets, numeric digits, uppercase alphabets, or the space character.\r\n\r\n\r\nexport const restrictSpecialCharacters = function (e) {\r\n const x = e.which || e.keycode;\r\n if (\r\n (x >= 97 && x <= 122) ||\r\n (x >= 48 && x <= 57) ||\r\n (x >= 65 && x <= 90) ||\r\n (x >= 32 && x <= 32)\r\n ) {\r\n return true;\r\n } else return e.preventDefault();\r\n};","import { StateCreator } from 'zustand';\r\nimport {\r\n clearCookie,\r\n decryptToken,\r\n encryptToken,\r\n getCookie,\r\n setCookie,\r\n} from '../../services';\r\nimport {\r\n clearSessionStorage,\r\n getSessionStorage,\r\n setSessionStorage,\r\n} from '../../services/sessionStorage';\r\n\r\nexport interface AuthSlice {\r\n authType?: string;\r\n cardCode?: string;\r\n customerEmail?: string;\r\n customerId?: number;\r\n customerType?: string;\r\n priceLevel: string;\r\n token?: string;\r\n clearLoginInfo: () => void;\r\n generateCustomizerToken: (setInCookies?: boolean) => void;\r\n setCustomizerToken: () => void;\r\n isLoggedIn: () => boolean;\r\n customUploadLogoColorList: any[];\r\n defaultColorList: any[];\r\n\r\n}\r\n\r\nexport const authSlice: StateCreator<AuthSlice> = (set, get) => {\r\n return {\r\n customUploadLogoColorList: [],\r\n defaultColorList: [],\r\n priceLevel: '',\r\n token: '',\r\n customerId:117015,\r\n clearLoginInfo: () => {\r\n clearCookie('customizerToken');\r\n clearSessionStorage('customizerToken');\r\n set({\r\n authType: '',\r\n cardCode: '',\r\n customerEmail: '',\r\n customerId: 117015,\r\n customerType: '',\r\n priceLevel: '',\r\n token: '',\r\n });\r\n },\r\n generateCustomizerToken: (setInCookies = true) => {\r\n const authType = get().authType;\r\n const cardCode = get().cardCode;\r\n const customerEmail = get().customerEmail;\r\n const customerId = get().customerId;\r\n const customerType = get().priceLevel;\r\n const token = get().token;\r\n\r\n const customizerToken = encryptToken({\r\n authType,\r\n cardCode,\r\n customerEmail,\r\n customerId,\r\n customerType,\r\n token,\r\n });\r\n if (setInCookies) {\r\n setCookie('customizerToken', customizerToken, 1);\r\n } else {\r\n setSessionStorage('customizerToken', customizerToken);\r\n }\r\n },\r\n setCustomizerToken: () => {\r\n const customizerToken: any =\r\n getSessionStorage('customizerToken') || getCookie('customizerToken');\r\n\r\n if (!customizerToken) return;\r\n const decrypt: any = decryptToken(customizerToken);\r\n\r\n set({\r\n ...decrypt,\r\n });\r\n },\r\n isLoggedIn: () => (!!get().customerId ? true : false),\r\n };\r\n};\r\n\r\nexport default AuthSlice;\r\n","export const clearSessionStorage = (cname: string) => {\r\n sessionStorage.removeItem(cname);\r\n};\r\n\r\nexport const getSessionStorage = (sName: string) => {\r\n return sessionStorage.getItem(sName);\r\n};\r\n\r\nexport const setSessionStorage = (cname: string, cvalue: any) => {\r\n sessionStorage.setItem(cname, cvalue);\r\n};\r\n","import { StateCreator } from 'zustand';\r\n// import { use3dddPlus } from '..';\r\n\r\nexport interface HistorySlice {\r\n history: string[];\r\n current: string;\r\n navigateTo: (page: string) => void;\r\n goBack: () => void;\r\n}\r\n\r\nexport const historySlice: StateCreator<HistorySlice> = (set, _get) => {\r\n return {\r\n history: [],\r\n current: '',\r\n navigateTo: (page: string) => {\r\n set((state) => ({\r\n history: [...state.history, state.current],\r\n current: page,\r\n }));\r\n },\r\n goBack: () => {\r\n set((state) => {\r\n if (state.history.length > 0) {\r\n const previousPage = state.history.pop()!;\r\n return {\r\n history: [...state.history],\r\n current: previousPage,\r\n };\r\n }\r\n return state;\r\n });\r\n },\r\n }\r\n}\r\nexport default HistorySlice;\r\n","import { StateCreator } from 'zustand';\r\nimport { fabric } from 'fabric';\r\nimport { use3dddPlus } from '..';\r\nimport AWS from 'aws-sdk';\r\nexport interface FabricSlice {\r\n availableMascots: any[];\r\n filteredMascots: any[];\r\n loading: Boolean;\r\n selectedStepper?: any;\r\n setSelectedStepper?: (selectedStepper: any) => void;\r\n hasUploadScreen?: any;\r\n setHasUploadScreen?: (hasUploadScreen: boolean) => void;\r\n storeHistory: any;\r\n count: number;\r\n stockLogos: [];\r\n retriveLogoDesign: any[];\r\n fabricCanvas: any;\r\n popupCanv: any;\r\n textInfo: string;\r\n uploadImageModalDisplay: boolean;\r\n currentSelection: string;\r\n activeSelection: any;\r\n selectedAll: boolean;\r\n colorFill: any;\r\n defaultColorFill: any[];\r\n loadedObject: any;\r\n setDefaultColorFill: (dcf: any) => void;\r\n defaultColorFillCopy: any[];\r\n setDefaultColorFillCopy: (dcf: any) => void;\r\n // colorFillPopup : {},\r\n storeAllObject: [];\r\n iconImage: string;\r\n HideControls: any;\r\n showContextMenu: boolean;\r\n forStoringAllObject: (data: any) => void;\r\n forIconCapture: () => void;\r\n duplicateObject: () => void;\r\n deleteButtonControls: () => void;\r\n undo: () => void;\r\n redo: () => void;\r\n moveDown: (element) => void;\r\n moveUp: (element) => void;\r\n moveRight: (element) => void;\r\n moveLeft: (element) => void;\r\n applyColorFill: () => any;\r\n updateModifaction: (saveHistory: boolean) => void;\r\n nameCounter: any;\r\n guid: () => string;\r\n contextMenuCoordinates: { x: number; y: number };\r\n stockLogoHandler: (e: any) => void;\r\n testSVG: (data: any) => void;\r\n myLogoHandler: (logo: any) => void;\r\n loadingRetrivedFiles: (data: any) => void;\r\n allColor: any;\r\n uploadLogoConfig: (jsonConfig: any, customerId: any) => any;\r\n logoData: any;\r\n setLogoData: (logo: any) => void;\r\n setAvailableMascots: (availableMascots: any[]) => void;\r\n setFilteredMascots: (filteredMascots: any[]) => void;\r\n handleMascotObjectFilterValues: (event: any) => void;\r\n filterValue: string;\r\n displayProductColor?: boolean;\r\n setDisplayProductColor?: () => void;\r\n popUpCanvasAllColor: any[];\r\n popupCanvasStoreHistory: any[];\r\n popUpCanvasCount: number;\r\n popUpCanvasApplyColorFill: () => void;\r\n popUpCanvasUpdateModification: (data: any) => void;\r\n popUpCanvasRedo: () => void;\r\n popUpCanvasUndo: () => any;\r\n forPopupCanvasReset: any;\r\n forPopupCanvasColor: any;\r\n imageData: any;\r\n horizontalLine: any;\r\n verticalLine: any;\r\n lastPosition: { top: number; left: number };\r\n setLastPosition: (lastPosition: { top: number; left: number }) => void;\r\n}\r\n\r\nexport const fabricSlice: StateCreator<FabricSlice> = (set, get) => {\r\n return {\r\n popUpCanvasCount: 1,\r\n popupCanvasStoreHistory: [],\r\n availableMascots: [],\r\n filteredMascots: [],\r\n logoData: null,\r\n setLogoData: (logoData) => set({ logoData }),\r\n allColor: [],\r\n loading: false,\r\n selectedStepper: 1,\r\n setSelectedStepper: (selectedStepper) => set({ selectedStepper }),\r\n hasUploadScreen: false,\r\n setHasUploadScreen: (hasUploadScreen) => set({ hasUploadScreen }),\r\n storeHistory: [],\r\n stockLogos: [],\r\n retriveLogoDesign: [],\r\n fabricCanvas: null,\r\n popupCanv: null,\r\n textInfo: 'NEW TEXT',\r\n uploadImageModalDisplay: false,\r\n currentSelection: 'layer',\r\n activeSelection: null,\r\n selectedAll: false,\r\n colorFill: {},\r\n defaultColorFill: [],\r\n loadedObject: [],\r\n defaultColorFillCopy: [],\r\n // colorFillPopup : {},\r\n storeAllObject: [],\r\n iconImage: '',\r\n HideControls: {\r\n tl: true,\r\n tr: true,\r\n bl: true, //false\r\n br: true,\r\n ml: false,\r\n mt: false,\r\n mr: false,\r\n mb: false,\r\n mtr: true,\r\n // 'cornerColor':'yellow'\r\n },\r\n showContextMenu: false,\r\n\r\n forStoringAllObject: (data) => {\r\n //@ts-ignore\r\n get().storeAllObject.unshift(data); //FOR PUSHING THE ARRAY RESERVE\r\n },\r\n forIconCapture: () => {\r\n const activeObject = get().fabricCanvas.getActiveObject();\r\n if (activeObject) {\r\n // const dataURL = get().fabricCanvas.toDataURL({\r\n // left: activeObject.left,\r\n // top: activeObject.top,\r\n // width: activeObject.width * activeObject.scaleX,\r\n // height: activeObject.height * activeObject.scaleY,\r\n // });\r\n\r\n const dataURL = activeObject.toDataURL('image/png');\r\n set({ iconImage: dataURL });\r\n }\r\n },\r\n nameCounter: 0,\r\n guid: () => {\r\n let u =\r\n Date.now().toString(16) + Math.random().toString(16) + '0'.repeat(16);\r\n return [\r\n u.substr(0, 8),\r\n u.substr(8, 4),\r\n '4000-8' + u.substr(13, 3),\r\n u.substr(16, 12),\r\n ].join('-');\r\n },\r\n duplicateObject: () => {\r\n if (get().fabricCanvas.getActiveObject()) {\r\n let activeObj = get().fabricCanvas.getActiveObject();\r\n let clipboard;\r\n get()\r\n .fabricCanvas.getActiveObject()\r\n .clone((cloned) => {\r\n clipboard = cloned;\r\n clipboard.clone((clonedObj) => {\r\n get().fabricCanvas.discardActiveObject();\r\n clonedObj.set({\r\n evented: true,\r\n });\r\n if (clonedObj.type === 'activeSelection') {\r\n clonedObj.canvas = get().fabricCanvas;\r\n clonedObj.forEachObject((obj: any, index: any) => {\r\n obj.colorFill = activeObj._objects[index].colorFill;\r\n // copy all path text data & clone text props as well(text with shapes applied)\r\n // if (obj.type === 'path' && obj.pathData !== undefined) {\r\n if (obj.type === 'path') {\r\n obj.pathData = activeObj._objects[index].pathData;\r\n obj.shapeSize = activeObj._objects[index].shapeSize;\r\n obj.shapeType = activeObj._objects[index].shapeType;\r\n obj.fontFamily = activeObj._objects[index].fontFamily;\r\n obj.fontWeight = activeObj._objects[index].fontWeight;\r\n obj.fontSize = activeObj._objects[index].fontSize;\r\n obj.charSpacing = activeObj._objects[index].charSpacing;\r\n obj.textAlign = activeObj._objects[index].textAlign;\r\n obj.fontStyle = activeObj._objects[index].fontStyle;\r\n obj.text = activeObj._objects[index].text;\r\n }\r\n get().fabricCanvas.add(obj);\r\n });\r\n clonedObj.setCoords();\r\n } else {\r\n clonedObj.colorFill = activeObj.colorFill;\r\n // copy all path text data & clone text props as well(text with shapes applied)\r\n if (\r\n activeObj.type === 'path' &&\r\n activeObj.pathData !== undefined\r\n ) {\r\n clonedObj.pathData = activeObj.pathData;\r\n clonedObj.shapeSize = activeObj.shapeSize;\r\n clonedObj.shapeType = activeObj.shapeType;\r\n clonedObj.fontFamily = activeObj.fontFamily;\r\n clonedObj.fontWeight = activeObj.fontWeight;\r\n clonedObj.fontSize = activeObj.fontSize;\r\n clonedObj.charSpacing = activeObj.charSpacing;\r\n clonedObj.textAlign = activeObj.textAlign;\r\n clonedObj.fontStyle = activeObj.fontStyle;\r\n clonedObj.text = activeObj.text;\r\n }\r\n get().fabricCanvas.add(clonedObj);\r\n }\r\n clipboard.top += 20;\r\n clipboard.left += 20;\r\n if (\r\n activeObj &&\r\n activeObj.shapeType &&\r\n activeObj.shapeType.length > 0\r\n ) {\r\n clonedObj.shapeType = activeObj.shapeType;\r\n clonedObj.shapeSize = activeObj.shapeSize;\r\n }\r\n get().fabricCanvas.setActiveObject(clonedObj);\r\n const brNew = clonedObj.getBoundingRect();\r\n if (\r\n !(\r\n brNew.width + brNew.left + 45 + 20 >=\r\n clonedObj.canvas.width ||\r\n brNew.height + brNew.top + 10 + 20 >= clonedObj.canvas.height\r\n )\r\n ) {\r\n clonedObj.set({\r\n left: clonedObj.left + 20,\r\n top: clonedObj.top + 20,\r\n });\r\n }\r\n // get().fabricCanvas.requestRenderAll();\r\n // clonedObj._objects.map((data) => {\r\n // get().forStoringAllObject(data);\r\n // });\r\n if (\r\n clonedObj &&\r\n clonedObj._objects &&\r\n clonedObj._objects.length > 0 &&\r\n (clonedObj._objects[0].type === 'text' ||\r\n clonedObj._objects[0].type === 'group' ||\r\n (clonedObj._objects[0].type === 'path' &&\r\n clonedObj._objects[0].fontFamily))\r\n ) {\r\n clonedObj._objects.map((data) => {\r\n data.icon = data.toDataURL('image/png');\r\n get().forStoringAllObject(data);\r\n });\r\n } else {\r\n use3dddPlus.getState().forIconCapture();\r\n clonedObj.icon = use3dddPlus.getState().iconImage;\r\n get().forStoringAllObject(clonedObj);\r\n }\r\n });\r\n get().updateModifaction(true);\r\n });\r\n }\r\n },\r\n deleteButtonControls: () => {\r\n // console.log(deleteIcon,'SELECTED......',getObj);\r\n },\r\n count: 1,\r\n skipEvent: false,\r\n undo: () => {\r\n if (get().count <= get().storeHistory.length) {\r\n // if(get().count + 1 !== get().storeHistory.length){\r\n get().fabricCanvas.clear().renderAll();\r\n get().fabricCanvas.loadFromJSON(\r\n get().storeHistory[\r\n get().storeHistory.length -\r\n 1 -\r\n (get().count > 1 ? get().count - 1 : 0)\r\n ]\r\n );\r\n\r\n // Remove lines\r\n get()\r\n .fabricCanvas.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().fabricCanvas.remove(obj);\r\n }\r\n });\r\n\r\n // Add lines\r\n const horizontalLine = new fabric.Line(\r\n [\r\n 0,\r\n get().fabricCanvas.height / 2,\r\n get().fabricCanvas.height,\r\n get().fabricCanvas.height / 2,\r\n ],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [\r\n get().fabricCanvas.width / 2,\r\n 0,\r\n get().fabricCanvas.width / 2,\r\n get().fabricCanvas.width,\r\n ],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n get().fabricCanvas.add(horizontalLine);\r\n get().fabricCanvas.add(verticalLine);\r\n\r\n get().fabricCanvas.sendToBack(horizontalLine);\r\n get().fabricCanvas.sendToBack(verticalLine);\r\n\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n get().fabricCanvas.renderAll();\r\n get().count += 1;\r\n // }\r\n\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasGetobject.forEach((element: any) => {\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n if(element.type === \"text\" || \"path\"){\r\n get().fabricCanvas.setActiveObject(element);\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n element.icon = use3dddPlus.getState().iconImage;\r\n get().fabricCanvas.discardActiveObject();\r\n }\r\n }\r\n });\r\n }\r\n },\r\n redo: () => {\r\n if (get().count > 2) {\r\n get().fabricCanvas.clear().renderAll();\r\n let item = Math.abs(get().count - get().storeHistory.length - 2);\r\n get().fabricCanvas.loadFromJSON(get().storeHistory[item]);\r\n\r\n // Remove lines\r\n get()\r\n .fabricCanvas.getObjects()\r\n .forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().fabricCanvas.remove(obj);\r\n }\r\n });\r\n\r\n // Add lines\r\n const horizontalLine = new fabric.Line(\r\n [\r\n 0,\r\n get().fabricCanvas.height / 2,\r\n get().fabricCanvas.height,\r\n get().fabricCanvas.height / 2,\r\n ],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [\r\n get().fabricCanvas.width / 2,\r\n 0,\r\n get().fabricCanvas.width / 2,\r\n get().fabricCanvas.width,\r\n ],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n get().fabricCanvas.add(horizontalLine);\r\n get().fabricCanvas.add(verticalLine);\r\n\r\n get().fabricCanvas.sendBackwards(horizontalLine);\r\n get().fabricCanvas.sendBackwards(verticalLine);\r\n\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n get().fabricCanvas.renderAll();\r\n get().count -= 1;\r\n\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasGetobject.forEach((element: any) => {\r\n if(element.type !== \"line\"){\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n if(element.type === \"text\" || \"path\"){\r\n get().fabricCanvas.setActiveObject(element);\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n element.icon = use3dddPlus.getState().iconImage;\r\n get().fabricCanvas.discardActiveObject();\r\n }\r\n }\r\n });\r\n }\r\n },\r\n moveDown: (element) => {\r\n element.top = element.top + 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveUp: (element) => {\r\n element.top = element.top - 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveRight: (element) => {\r\n element.left = element.left + 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n moveLeft: (element) => {\r\n element.left = element.left - 2;\r\n get().fabricCanvas.renderAll();\r\n },\r\n applyColorFill: () => {\r\n const canvasData = get().fabricCanvas.toJSON();\r\n const canvasGetobject = get().fabricCanvas.getObjects();\r\n canvasData.objects.forEach((element: any, index: any) => {\r\n if(canvasGetobject && canvasGetobject.length > 0 && canvasGetobject[index].shapeType){\r\n element.shapeType = canvasGetobject[index].shapeType;\r\n element.shapeSize = canvasGetobject[index].shapeSize;\r\n element.text = canvasGetobject[index].text;\r\n element.textAlign = canvasGetobject[index].textAlign;\r\n element.stroke = canvasGetobject[index].stroke;\r\n element.strokeWidth = canvasGetobject[index].strokeWidth;\r\n element.fontFamily = canvasGetobject[index].fontFamily;\r\n }\r\n element.colorFill = canvasGetobject[index].colorFill;\r\n element.icon = canvasGetobject[index].icon;\r\n element.id = canvasGetobject[index].id;\r\n });\r\n return canvasData;\r\n },\r\n setDefaultColorFill: (dcf: any) => {\r\n use3dddPlus.setState({ defaultColorFill: dcf });\r\n },\r\n setDefaultColorFillCopy: (dcf: any) => {\r\n use3dddPlus.setState({ defaultColorFillCopy: dcf });\r\n },\r\n updateModifaction: (toSet) => {\r\n if (toSet) {\r\n get().storeHistory.push(get().applyColorFill());\r\n }\r\n },\r\n\r\n contextMenuCoordinates: { x: 0, y: 0 },\r\n stockLogoHandler: (e: any) => {\r\n // console.log(e);\r\n // let logos = get().stockLogos[e.target.id];\r\n //@ts-ignore\r\n let logos = e + '?timestamp=' + Date.now();\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n get().testSVG(logos);\r\n },\r\n testSVG: (data) => {\r\n fabric.loadSVGFromURL(data, (objects, options) => {\r\n const loadedObject: any = fabric.util.groupSVGElements(\r\n objects,\r\n options\r\n );\r\n // console.log(svg)\r\n loadedObject.scaleToWidth(200);\r\n loadedObject.scaleToHeight(200);\r\n let objImage = [];\r\n let _Fills = [];\r\n //@ts-ignore\r\n if (loadedObject && loadedObject._objects) {\r\n //@ts-ignore\r\n objImage = loadedObject._objects;\r\n objImage.forEach((ele) => {\r\n ele.set({ strokeWidth: 0 });\r\n use3dddPlus.setState({ fillColor: [...ele.fill] });\r\n _Fills.push(ele.fill);\r\n });\r\n } else {\r\n //@ts-ignore\r\n objImage = loadedObject;\r\n //@ts-ignore\r\n objImage.set({ strokeWidth: 0 });\r\n //@ts-ignore\r\n use3dddPlus.setState({ fillColor: [...objImage.fill] });\r\n _Fills.push(objImage.fill);\r\n }\r\n use3dddPlus.setState({\r\n //@ts-ignore\r\n fillColor: use3dddPlus.getState().removeDuplicates(_Fills),\r\n });\r\n //@ts-ignore\r\n _Fills = use3dddPlus.getState().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n loadedObject.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n\r\n loadedObject.id = get().guid();\r\n get().fabricCanvas.add(loadedObject).renderAll();\r\n get().fabricCanvas.centerObject(loadedObject);\r\n get().fabricCanvas.setActiveObject(loadedObject);\r\n use3dddPlus.setState({ activeSelection: loadedObject });\r\n use3dddPlus.getState().forStoringAllObject(loadedObject);\r\n get()\r\n .fabricCanvas.getActiveObject()\r\n .toDataURL(function () {});\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n loadedObject.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n },\r\n myLogoHandler: (logo: any) => {\r\n let jsonData = logo.logo_config_url;\r\n var requestOptions = {\r\n method: 'GET',\r\n };\r\n fetch(jsonData, requestOptions)\r\n .then((response) => response.text())\r\n .then((result) => get().loadingRetrivedFiles(result))\r\n .catch((error) => console.log('error', error));\r\n },\r\n\r\n loadingRetrivedFiles: (data: any) => {\r\n let canvas = use3dddPlus.getState().fabricCanvas;\r\n canvas.loadFromJSON(JSON.parse(data), function () {\r\n const horizontalLine = new fabric.Line(\r\n [0, canvas.height / 2, canvas.height, canvas.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canvas.width / 2, 0, canvas.width / 2, canvas.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canvas.add(horizontalLine);\r\n canvas.add(verticalLine);\r\n get().fabricCanvas.sendToBack(horizontalLine);\r\n get().fabricCanvas.sendToBack(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n canvas.renderAll.bind(canvas);\r\n canvas.discardActiveObject();\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n // Update layers\r\n use3dddPlus.getState().clearLayers();\r\n canvas.getObjects().forEach((element) => {\r\n element.id = use3dddPlus.getState().guid();\r\n if (element.type !== 'line') {\r\n use3dddPlus.getState().forStoringAllObject(element);\r\n }\r\n canvas.setActiveObject(element);\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n element.icon = use3dddPlus.getState().iconImage;\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n canvas.backgroundColor = '#ffffff';\r\n },\r\n uploadLogoConfig: async (jsonConfig, customerId) => {\r\n const bucketName = process.env.REACT_APP_BUCKET;\r\n const region = process.env.REACT_APP_REGION;\r\n AWS.config.update({\r\n accessKeyId: process.env.REACT_APP_ACCESSKEY,\r\n secretAccessKey: process.env.REACT_APP_SECRET_ACCESSKEY,\r\n });\r\n const S3 = new AWS.S3({\r\n params: { Bucket: bucketName },\r\n region: region,\r\n });\r\n\r\n const microTime = Date.now();\r\n const filePath = `my-logos/logo-config/${customerId}/${microTime}.json`;\r\n const params = {\r\n Bucket: bucketName,\r\n Key: filePath,\r\n Body: jsonConfig,\r\n ContentType: 'application/json',\r\n };\r\n\r\n const s3UrlPath = `https://${bucketName}.s3.${region}.amazonaws.com/${filePath}`;\r\n return new Promise((resolve, reject) => {\r\n S3.putObject(params, function (err: any) {\r\n if (err) {\r\n console.log('Error occurred while connecting S3 bucket!', err);\r\n reject(err);\r\n } else {\r\n resolve(s3UrlPath);\r\n }\r\n });\r\n });\r\n },\r\n setAvailableMascots: (availableMascots) => set({ availableMascots }),\r\n setFilteredMascots: (filteredMascots) => set({ filteredMascots }),\r\n\r\n handleMascotObjectFilterValues: (event) => {\r\n set({\r\n filterValue: event,\r\n });\r\n if (event === 'All') {\r\n get().setFilteredMascots(\r\n get().availableMascots.map((item) => item.thumbnail)\r\n );\r\n } else {\r\n const filteredData = get().availableMascots.filter((item) =>\r\n item.tags.includes(event)\r\n );\r\n get().setFilteredMascots(filteredData.map((item) => item.thumbnail));\r\n }\r\n },\r\n filterValue: '',\r\n displayProductColor: false,\r\n setDisplayProductColor: () => {\r\n set((state) => ({\r\n displayProductColor: !state.displayProductColor,\r\n }));\r\n },\r\n popUpCanvasAllColor: [],\r\n popUpCanvasApplyColorFill: () => {\r\n const popUpCanvasData = get().popupCanv.toJSON();\r\n const popUpCanvasGetobject = get().popupCanv.getObjects();\r\n popUpCanvasData.objects.forEach((element, index) => {\r\n element.colorFill = popUpCanvasGetobject[index].colorFill;\r\n });\r\n return popUpCanvasData;\r\n },\r\n popUpCanvasUpdateModification: (toSet) => {\r\n if (toSet) {\r\n const historyObject = {\r\n colorFill: get().colorFill,\r\n json: get().popUpCanvasApplyColorFill(),\r\n };\r\n set((state) => ({\r\n ...state,\r\n popupCanvasStoreHistory: [\r\n ...state.popupCanvasStoreHistory,\r\n historyObject,\r\n ],\r\n }));\r\n }\r\n },\r\n popUpCanvasUndo: () => {\r\n if (get().popUpCanvasCount <= get().popupCanvasStoreHistory.length) {\r\n const _V =\r\n get().popupCanvasStoreHistory.length - 1 - (get().popUpCanvasCount > 1 ? get().popUpCanvasCount- 1 : 0);\r\n if(get().popupCanvasStoreHistory[_V] && _V>0){\r\n const colors = get().popupCanvasStoreHistory[_V].colorFill;\r\n get().popupCanv.clear().renderAll();\r\n get().popupCanv.loadFromJSON(get().popupCanvasStoreHistory[_V].json);\r\n get().popupCanv.getObjects().forEach((obj) => {\r\n if (obj.type === 'line') {\r\n get().popupCanv.remove(obj);\r\n }\r\n });\r\n \r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 15; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n \r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n \r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n const line = new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n \r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n const line = new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n \r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n canvas.add(rect);\r\n canvas.sendToBack(rect);\r\n }\r\n }\r\n \r\n set({ colorFill: colors });\r\n get().popupCanv.renderAll();\r\n get().popUpCanvasCount += 1;\r\n if(_V === 1){\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n get().popUpCanvasCount = 1;\r\n }\r\n return colors;\r\n }else{\r\n return null;\r\n }\r\n }else{\r\n return null;\r\n }\r\n },\r\n popUpCanvasRedo: () => {\r\n if (get().popUpCanvasCount > 0) {\r\n get().popupCanv.clear().renderAll();\r\n get().popupCanv.loadFromJSON(\r\n get().popupCanvasStoreHistory[\r\n get().popupCanvasStoreHistory.length -\r\n 1 -\r\n get().popUpCanvasCount +\r\n 1\r\n ]\r\n );\r\n get().popupCanv.renderAll();\r\n get().popUpCanvasCount -= 1;\r\n }\r\n },\r\n forPopupCanvasReset: null,\r\n forPopupCanvasColor: {},\r\n imageData: null,\r\n horizontalLine: null,\r\n verticalLine: null,\r\n lastPosition: { top: 0, left: 0 },\r\n setLastPosition: (lastPosition) => set({ lastPosition }),\r\n };\r\n};\r\n\r\nexport default FabricSlice;\r\n","/* This Source Code Form is subject to the terms of the Mozilla Public\r\n * License, v. 2.0. If a copy of the MPL was not distributed with this\r\n * file, You can obtain one at http://mozilla.org/MPL/2.0/. */\r\n\r\n'use strict';\r\n\r\nexport function TIFFParser() {\r\n this.tiffDataView = undefined;\r\n this.littleEndian = undefined;\r\n this.fileDirectories = [];\r\n}\r\n\r\nTIFFParser.prototype = {\r\n isLittleEndian: function () {\r\n // Get byte order mark.\r\n var BOM = this.getBytes(2, 0);\r\n\r\n // Find out the endianness.\r\n if (BOM === 0x4949) {\r\n this.littleEndian = true;\r\n } else if (BOM === 0x4d4d) {\r\n this.littleEndian = false;\r\n } else {\r\n console.log(BOM);\r\n throw TypeError('Invalid byte order value.');\r\n }\r\n\r\n return this.littleEndian;\r\n },\r\n\r\n hasTowel: function () {\r\n // Check for towel.\r\n if (this.getBytes(2, 2) !== 42) {\r\n throw RangeError('You forgot your towel!');\r\n return false;\r\n }\r\n\r\n return true;\r\n },\r\n\r\n getFieldTagName: function (fieldTag) {\r\n // See: http://www.digitizationguidelines.gov/guidelines/TIFF_Metadata_Final.pdf\r\n // See: http://www.digitalpreservation.gov/formats/content/tiff_tags.shtml\r\n var fieldTagNames = {\r\n // TIFF Baseline\r\n 0x013b: 'Artist',\r\n 0x0102: 'BitsPerSample',\r\n 0x0109: 'CellLength',\r\n 0x0108: 'CellWidth',\r\n 0x0140: 'ColorMap',\r\n 0x0103: 'Compression',\r\n 0x8298: 'Copyright',\r\n 0x0132: 'DateTime',\r\n 0x0152: 'ExtraSamples',\r\n 0x010a: 'FillOrder',\r\n 0x0121: 'FreeByteCounts',\r\n 0x0120: 'FreeOffsets',\r\n 0x0123: 'GrayResponseCurve',\r\n 0x0122: 'GrayResponseUnit',\r\n 0x013c: 'HostComputer',\r\n 0x010e: 'ImageDescription',\r\n 0x0101: 'ImageLength',\r\n 0x0100: 'ImageWidth',\r\n 0x010f: 'Make',\r\n 0x0119: 'MaxSampleValue',\r\n 0x0118: 'MinSampleValue',\r\n 0x0110: 'Model',\r\n 0x00fe: 'NewSubfileType',\r\n 0x0112: 'Orientation',\r\n 0x0106: 'PhotometricInterpretation',\r\n 0x011c: 'PlanarConfiguration',\r\n 0x0128: 'ResolutionUnit',\r\n 0x0116: 'RowsPerStrip',\r\n 0x0115: 'SamplesPerPixel',\r\n 0x0131: 'Software',\r\n 0x0117: 'StripByteCounts',\r\n 0x0111: 'StripOffsets',\r\n 0x00ff: 'SubfileType',\r\n 0x0107: 'Threshholding',\r\n 0x011a: 'XResolution',\r\n 0x011b: 'YResolution',\r\n\r\n // TIFF Extended\r\n 0x0146: 'BadFaxLines',\r\n 0x0147: 'CleanFaxData',\r\n 0x0157: 'ClipPath',\r\n 0x0148: 'ConsecutiveBadFaxLines',\r\n 0x01b1: 'Decode',\r\n 0x01b2: 'DefaultImageColor',\r\n 0x010d: 'DocumentName',\r\n 0x0150: 'DotRange',\r\n 0x0141: 'HalftoneHints',\r\n 0x015a: 'Indexed',\r\n 0x015b: 'JPEGTables',\r\n 0x011d: 'PageName',\r\n 0x0129: 'PageNumber',\r\n 0x013d: 'Predictor',\r\n 0x013f: 'PrimaryChromaticities',\r\n 0x0214: 'ReferenceBlackWhite',\r\n 0x0153: 'SampleFormat',\r\n 0x022f: 'StripRowCounts',\r\n 0x014a: 'SubIFDs',\r\n 0x0124: 'T4Options',\r\n 0x0125: 'T6Options',\r\n 0x0145: 'TileByteCounts',\r\n 0x0143: 'TileLength',\r\n 0x0144: 'TileOffsets',\r\n 0x0142: 'TileWidth',\r\n 0x012d: 'TransferFunction',\r\n 0x013e: 'WhitePoint',\r\n 0x0158: 'XClipPathUnits',\r\n 0x011e: 'XPosition',\r\n 0x0211: 'YCbCrCoefficients',\r\n 0x0213: 'YCbCrPositioning',\r\n 0x0212: 'YCbCrSubSampling',\r\n 0x0159: 'YClipPathUnits',\r\n 0x011f: 'YPosition',\r\n\r\n // EXIF\r\n 0x9202: 'ApertureValue',\r\n 0xa001: 'ColorSpace',\r\n 0x9004: 'DateTimeDigitized',\r\n 0x9003: 'DateTimeOriginal',\r\n 0x8769: 'Exif IFD',\r\n 0x9000: 'ExifVersion',\r\n 0x829a: 'ExposureTime',\r\n 0xa300: 'FileSource',\r\n 0x9209: 'Flash',\r\n 0xa000: 'FlashpixVersion',\r\n 0x829d: 'FNumber',\r\n 0xa420: 'ImageUniqueID',\r\n 0x9208: 'LightSource',\r\n 0x927c: 'MakerNote',\r\n 0x9201: 'ShutterSpeedValue',\r\n 0x9286: 'UserComment',\r\n\r\n // IPTC\r\n 0x83bb: 'IPTC',\r\n\r\n // ICC\r\n 0x8773: 'ICC Profile',\r\n\r\n // XMP\r\n 0x02bc: 'XMP',\r\n\r\n // GDAL\r\n 0xa480: 'GDAL_METADATA',\r\n 0xa481: 'GDAL_NODATA',\r\n\r\n // Photoshop\r\n 0x8649: 'Photoshop',\r\n };\r\n\r\n var fieldTagName;\r\n\r\n if (fieldTag in fieldTagNames) {\r\n fieldTagName = fieldTagNames[fieldTag];\r\n } else {\r\n console.log('Unknown Field Tag:', fieldTag);\r\n fieldTagName = 'Tag' + fieldTag;\r\n }\r\n\r\n return fieldTagName;\r\n },\r\n\r\n getFieldTypeName: function (fieldType) {\r\n var fieldTypeNames = {\r\n 0x0001: 'BYTE',\r\n 0x0002: 'ASCII',\r\n 0x0003: 'SHORT',\r\n 0x0004: 'LONG',\r\n 0x0005: 'RATIONAL',\r\n 0x0006: 'SBYTE',\r\n 0x0007: 'UNDEFINED',\r\n 0x0008: 'SSHORT',\r\n 0x0009: 'SLONG',\r\n 0x000a: 'SRATIONAL',\r\n 0x000b: 'FLOAT',\r\n 0x000c: 'DOUBLE',\r\n };\r\n\r\n var fieldTypeName;\r\n\r\n if (fieldType in fieldTypeNames) {\r\n fieldTypeName = fieldTypeNames[fieldType];\r\n }\r\n\r\n return fieldTypeName;\r\n },\r\n\r\n getFieldTypeLength: function (fieldTypeName) {\r\n var fieldTypeLength;\r\n\r\n if (['BYTE', 'ASCII', 'SBYTE', 'UNDEFINED'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 1;\r\n } else if (['SHORT', 'SSHORT'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 2;\r\n } else if (['LONG', 'SLONG', 'FLOAT'].indexOf(fieldTypeName) !== -1) {\r\n fieldTypeLength = 4;\r\n } else if (\r\n ['RATIONAL', 'SRATIONAL', 'DOUBLE'].indexOf(fieldTypeName) !== -1\r\n ) {\r\n fieldTypeLength = 8;\r\n }\r\n\r\n return fieldTypeLength;\r\n },\r\n\r\n getBits: function (numBits, byteOffset, bitOffset) {\r\n bitOffset = bitOffset || 0;\r\n var extraBytes = Math.floor(bitOffset / 8);\r\n var newByteOffset = byteOffset + extraBytes;\r\n var totalBits = bitOffset + numBits;\r\n var shiftRight = 32 - numBits;\r\n\r\n if (totalBits <= 0) {\r\n console.log(numBits, byteOffset, bitOffset);\r\n throw RangeError('No bits requested');\r\n } else if (totalBits <= 8) {\r\n var shiftLeft = 24 + bitOffset;\r\n var rawBits = this.tiffDataView.getUint8(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else if (totalBits <= 16) {\r\n var shiftLeft = 16 + bitOffset;\r\n var rawBits = this.tiffDataView.getUint16(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else if (totalBits <= 32) {\r\n var shiftLeft = bitOffset;\r\n var rawBits = this.tiffDataView.getUint32(\r\n newByteOffset,\r\n this.littleEndian\r\n );\r\n } else {\r\n console.log(numBits, byteOffset, bitOffset);\r\n throw RangeError('Too many bits requested');\r\n }\r\n\r\n var chunkInfo = {\r\n bits: (rawBits << shiftLeft) >>> shiftRight,\r\n byteOffset: newByteOffset + Math.floor(totalBits / 8),\r\n bitOffset: totalBits % 8,\r\n };\r\n\r\n return chunkInfo;\r\n },\r\n\r\n getBytes: function (numBytes, offset) {\r\n if (numBytes <= 0) {\r\n console.log(numBytes, offset);\r\n throw RangeError('No bytes requested');\r\n } else if (numBytes <= 1) {\r\n return this.tiffDataView.getUint8(offset, this.littleEndian);\r\n } else if (numBytes <= 2) {\r\n return this.tiffDataView.getUint16(offset, this.littleEndian);\r\n } else if (numBytes <= 3) {\r\n return this.tiffDataView.getUint32(offset, this.littleEndian) >>> 8;\r\n } else if (numBytes <= 4) {\r\n return this.tiffDataView.getUint32(offset, this.littleEndian);\r\n } else {\r\n console.log(numBytes, offset);\r\n throw RangeError('Too many bytes requested');\r\n }\r\n },\r\n\r\n getFieldValues: function (\r\n fieldTagName,\r\n fieldTypeName,\r\n typeCount,\r\n valueOffset\r\n ) {\r\n var fieldValues = [];\r\n\r\n var fieldTypeLength = this.getFieldTypeLength(fieldTypeName);\r\n var fieldValueSize = fieldTypeLength * typeCount;\r\n\r\n if (fieldValueSize <= 4) {\r\n // The value is stored at the big end of the valueOffset.\r\n if (this.littleEndian === false) {\r\n var value = valueOffset >>> ((4 - fieldTypeLength) * 8);\r\n } else {\r\n var value = valueOffset;\r\n }\r\n\r\n fieldValues.push(value);\r\n } else {\r\n for (var i = 0; i < typeCount; i++) {\r\n var indexOffset = fieldTypeLength * i;\r\n\r\n if (fieldTypeLength >= 8) {\r\n if (['RATIONAL', 'SRATIONAL'].indexOf(fieldTypeName) !== -1) {\r\n // Numerator\r\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset));\r\n // Denominator\r\n fieldValues.push(this.getBytes(4, valueOffset + indexOffset + 4));\r\n //\t\t\t\t\t} else if (['DOUBLE'].indexOf(fieldTypeName) !== -1) {\r\n //\t\t\t\t\t\tfieldValues.push(this.getBytes(4, valueOffset + indexOffset) + this.getBytes(4, valueOffset + indexOffset + 4));\r\n } else {\r\n console.log(fieldTypeName, typeCount, fieldValueSize);\r\n throw TypeError(\"Can't handle this field type or size\");\r\n }\r\n } else {\r\n fieldValues.push(\r\n this.getBytes(fieldTypeLength, valueOffset + indexOffset)\r\n );\r\n }\r\n }\r\n }\r\n\r\n if (fieldTypeName === 'ASCII') {\r\n fieldValues.forEach(function (e, i, a) {\r\n a[i] = String.fromCharCode(e);\r\n });\r\n }\r\n\r\n return fieldValues;\r\n },\r\n\r\n clampColorSample: function (colorSample, bitsPerSample) {\r\n var multiplier = Math.pow(2, 8 - bitsPerSample);\r\n\r\n return Math.floor(colorSample * multiplier + (multiplier - 1));\r\n },\r\n\r\n makeRGBAFillValue: function (r, g, b, a) {\r\n if (typeof a === 'undefined') {\r\n a = 1.0;\r\n }\r\n return 'rgba(' + r + ', ' + g + ', ' + b + ', ' + a + ')';\r\n },\r\n\r\n parseFileDirectory: function (byteOffset) {\r\n var numDirEntries = this.getBytes(2, byteOffset);\r\n\r\n var tiffFields = [];\r\n\r\n for (\r\n var i = byteOffset + 2, entryCount = 0;\r\n entryCount < numDirEntries;\r\n i += 12, entryCount++\r\n ) {\r\n var fieldTag = this.getBytes(2, i);\r\n var fieldType = this.getBytes(2, i + 2);\r\n var typeCount = this.getBytes(4, i + 4);\r\n var valueOffset = this.getBytes(4, i + 8);\r\n\r\n var fieldTagName = this.getFieldTagName(fieldTag);\r\n var fieldTypeName = this.getFieldTypeName(fieldType);\r\n\r\n var fieldValues = this.getFieldValues(\r\n fieldTagName,\r\n fieldTypeName,\r\n typeCount,\r\n valueOffset\r\n );\r\n\r\n tiffFields[fieldTagName] = { type: fieldTypeName, values: fieldValues };\r\n }\r\n\r\n this.fileDirectories.push(tiffFields);\r\n\r\n var nextIFDByteOffset = this.getBytes(4, i);\r\n\r\n if (nextIFDByteOffset === 0x00000000) {\r\n return this.fileDirectories;\r\n } else {\r\n return this.parseFileDirectory(nextIFDByteOffset);\r\n }\r\n },\r\n\r\n parseTIFF: function (tiffArrayBuffer, canvas) {\r\n canvas = canvas || document.createElement('canvas');\r\n\r\n console.log(tiffArrayBuffer);\r\n\r\n this.tiffDataView = new DataView(tiffArrayBuffer);\r\n this.canvas = canvas;\r\n\r\n this.littleEndian = this.isLittleEndian(this.tiffDataView);\r\n\r\n if (!this.hasTowel(this.tiffDataView, this.littleEndian)) {\r\n return;\r\n }\r\n\r\n var firstIFDByteOffset = this.getBytes(4, 4);\r\n\r\n this.fileDirectories = this.parseFileDirectory(firstIFDByteOffset);\r\n\r\n var fileDirectory = this.fileDirectories[0];\r\n\r\n console.log(fileDirectory);\r\n\r\n var imageWidth = fileDirectory.ImageWidth.values[0];\r\n var imageLength = fileDirectory.ImageLength.values[0];\r\n\r\n this.canvas.width = imageWidth;\r\n this.canvas.height = imageLength;\r\n\r\n var strips = [];\r\n\r\n var compression = fileDirectory.Compression\r\n ? fileDirectory.Compression.values[0]\r\n : 1;\r\n\r\n var samplesPerPixel = fileDirectory.SamplesPerPixel.values[0];\r\n\r\n var sampleProperties = [];\r\n\r\n var bitsPerPixel = 0;\r\n var hasBytesPerPixel = false;\r\n\r\n fileDirectory.BitsPerSample.values.forEach(function (\r\n bitsPerSample,\r\n i,\r\n bitsPerSampleValues\r\n ) {\r\n sampleProperties[i] = {\r\n bitsPerSample: bitsPerSample,\r\n hasBytesPerSample: false,\r\n bytesPerSample: undefined,\r\n };\r\n\r\n if (bitsPerSample % 8 === 0) {\r\n sampleProperties[i].hasBytesPerSample = true;\r\n sampleProperties[i].bytesPerSample = bitsPerSample / 8;\r\n }\r\n\r\n bitsPerPixel += bitsPerSample;\r\n },\r\n this);\r\n\r\n if (bitsPerPixel % 8 === 0) {\r\n hasBytesPerPixel = true;\r\n var bytesPerPixel = bitsPerPixel / 8;\r\n }\r\n\r\n var stripOffsetValues = fileDirectory.StripOffsets.values;\r\n var numStripOffsetValues = stripOffsetValues.length;\r\n\r\n // StripByteCounts is supposed to be required, but see if we can recover anyway.\r\n if (fileDirectory.StripByteCounts) {\r\n var stripByteCountValues = fileDirectory.StripByteCounts.values;\r\n } else {\r\n console.log('Missing StripByteCounts!');\r\n\r\n // Infer StripByteCounts, if possible.\r\n if (numStripOffsetValues === 1) {\r\n var stripByteCountValues = [\r\n Math.ceil((imageWidth * imageLength * bitsPerPixel) / 8),\r\n ];\r\n } else {\r\n throw Error('Cannot recover from missing StripByteCounts');\r\n }\r\n }\r\n\r\n // Loop through strips and decompress as necessary.\r\n for (var i = 0; i < numStripOffsetValues; i++) {\r\n var stripOffset = stripOffsetValues[i];\r\n strips[i] = [];\r\n\r\n var stripByteCount = stripByteCountValues[i];\r\n\r\n // Loop through pixels.\r\n for (\r\n var byteOffset = 0,\r\n bitOffset = 0,\r\n jIncrement = 1,\r\n getHeader = true,\r\n pixel = [],\r\n numBytes = 0,\r\n sample = 0,\r\n currentSample = 0;\r\n byteOffset < stripByteCount;\r\n byteOffset += jIncrement\r\n ) {\r\n // Decompress strip.\r\n switch (compression) {\r\n // Uncompressed\r\n case 1:\r\n // Loop through samples (sub-pixels).\r\n for (var m = 0, pixel = []; m < samplesPerPixel; m++) {\r\n if (sampleProperties[m].hasBytesPerSample) {\r\n // XXX: This is wrong!\r\n var sampleOffset = sampleProperties[m].bytesPerSample * m;\r\n\r\n pixel.push(\r\n this.getBytes(\r\n sampleProperties[m].bytesPerSample,\r\n stripOffset + byteOffset + sampleOffset\r\n )\r\n );\r\n } else {\r\n var sampleInfo = this.getBits(\r\n sampleProperties[m].bitsPerSample,\r\n stripOffset + byteOffset,\r\n bitOffset\r\n );\r\n\r\n pixel.push(sampleInfo.bits);\r\n\r\n byteOffset = sampleInfo.byteOffset - stripOffset;\r\n bitOffset = sampleInfo.bitOffset;\r\n\r\n throw RangeError('Cannot handle sub-byte bits per sample');\r\n }\r\n }\r\n\r\n strips[i].push(pixel);\r\n\r\n if (hasBytesPerPixel) {\r\n jIncrement = bytesPerPixel;\r\n } else {\r\n jIncrement = 0;\r\n\r\n throw RangeError('Cannot handle sub-byte bits per pixel');\r\n }\r\n break;\r\n\r\n // CITT Group 3 1-Dimensional Modified Huffman run-length encoding\r\n case 2:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Group 3 Fax\r\n case 3:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Group 4 Fax\r\n case 4:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // LZW\r\n case 5:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // Old-style JPEG (TIFF 6.0)\r\n case 6:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // New-style JPEG (TIFF Specification Supplement 2)\r\n case 7:\r\n // XXX: Use PDF.js code?\r\n break;\r\n\r\n // PackBits\r\n case 32773:\r\n // Are we ready for a new block?\r\n if (getHeader) {\r\n getHeader = false;\r\n\r\n var blockLength = 1;\r\n var iterations = 1;\r\n\r\n // The header byte is signed.\r\n var header = this.tiffDataView.getInt8(\r\n stripOffset + byteOffset,\r\n this.littleEndian\r\n );\r\n\r\n if (header >= 0 && header <= 127) {\r\n // Normal pixels.\r\n blockLength = header + 1;\r\n } else if (header >= -127 && header <= -1) {\r\n // Collapsed pixels.\r\n iterations = -header + 1;\r\n } /*if (header === -128)*/ else {\r\n // Placeholder byte?\r\n getHeader = true;\r\n }\r\n } else {\r\n var currentByte = this.getBytes(1, stripOffset + byteOffset);\r\n\r\n // Duplicate bytes, if necessary.\r\n for (var m = 0; m < iterations; m++) {\r\n if (sampleProperties[sample].hasBytesPerSample) {\r\n // We're reading one byte at a time, so we need to handle multi-byte samples.\r\n currentSample =\r\n (currentSample << (8 * numBytes)) | currentByte;\r\n numBytes++;\r\n\r\n // Is our sample complete?\r\n if (numBytes === sampleProperties[sample].bytesPerSample) {\r\n pixel.push(currentSample);\r\n currentSample = numBytes = 0;\r\n sample++;\r\n }\r\n } else {\r\n throw RangeError('Cannot handle sub-byte bits per sample');\r\n }\r\n\r\n // Is our pixel complete?\r\n if (sample === samplesPerPixel) {\r\n strips[i].push(pixel);\r\n\r\n pixel = [];\r\n sample = 0;\r\n }\r\n }\r\n\r\n blockLength--;\r\n\r\n // Is our block complete?\r\n if (blockLength === 0) {\r\n getHeader = true;\r\n }\r\n }\r\n\r\n jIncrement = 1;\r\n break;\r\n\r\n // Unknown compression algorithm\r\n default:\r\n // Do not attempt to parse the image data.\r\n break;\r\n }\r\n }\r\n\r\n //\t\t\tconsole.log( strips[i] );\r\n }\r\n\r\n //\t\tconsole.log( strips );\r\n\r\n if (canvas.getContext) {\r\n var ctx = this.canvas.getContext('2d');\r\n\r\n // Set a default fill style.\r\n ctx.fillStyle = this.makeRGBAFillValue(255, 255, 255, 0);\r\n\r\n // If RowsPerStrip is missing, the whole image is in one strip.\r\n if (fileDirectory.RowsPerStrip) {\r\n var rowsPerStrip = fileDirectory.RowsPerStrip.values[0];\r\n } else {\r\n var rowsPerStrip = imageLength;\r\n }\r\n\r\n var numStrips = strips.length;\r\n\r\n var imageLengthModRowsPerStrip = imageLength % rowsPerStrip;\r\n var rowsInLastStrip =\r\n imageLengthModRowsPerStrip === 0\r\n ? rowsPerStrip\r\n : imageLengthModRowsPerStrip;\r\n\r\n var numRowsInStrip = rowsPerStrip;\r\n var numRowsInPreviousStrip = 0;\r\n\r\n var photometricInterpretation =\r\n fileDirectory.PhotometricInterpretation.values[0];\r\n\r\n var extraSamplesValues = [];\r\n var numExtraSamples = 0;\r\n\r\n if (fileDirectory.ExtraSamples) {\r\n extraSamplesValues = fileDirectory.ExtraSamples.values;\r\n numExtraSamples = extraSamplesValues.length;\r\n }\r\n\r\n if (fileDirectory.ColorMap) {\r\n var colorMapValues = fileDirectory.ColorMap.values;\r\n var colorMapSampleSize = Math.pow(2, sampleProperties[0].bitsPerSample);\r\n }\r\n\r\n // Loop through the strips in the image.\r\n for (var i = 0; i < numStrips; i++) {\r\n // The last strip may be short.\r\n if (i + 1 === numStrips) {\r\n numRowsInStrip = rowsInLastStrip;\r\n }\r\n\r\n var numPixels = strips[i].length;\r\n var yPadding = numRowsInPreviousStrip * i;\r\n\r\n // Loop through the rows in the strip.\r\n for (var y = 0, j = 0; y < numRowsInStrip, j < numPixels; y++) {\r\n // Loop through the pixels in the row.\r\n for (var x = 0; x < imageWidth; x++, j++) {\r\n var pixelSamples = strips[i][j];\r\n\r\n var red = 0;\r\n var green = 0;\r\n var blue = 0;\r\n var opacity = 1.0;\r\n\r\n if (numExtraSamples > 0) {\r\n for (var k = 0; k < numExtraSamples; k++) {\r\n if (\r\n extraSamplesValues[k] === 1 ||\r\n extraSamplesValues[k] === 2\r\n ) {\r\n // Clamp opacity to the range [0,1].\r\n opacity = pixelSamples[3 + k] / 256;\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n switch (photometricInterpretation) {\r\n // Bilevel or Grayscale\r\n // WhiteIsZero\r\n case 0:\r\n if (sampleProperties[0].hasBytesPerSample) {\r\n var invertValue = Math.pow(\r\n 0x10,\r\n sampleProperties[0].bytesPerSample * 2\r\n );\r\n }\r\n\r\n // Invert samples.\r\n pixelSamples.forEach(function (sample, index, samples) {\r\n samples[index] = invertValue - sample;\r\n });\r\n\r\n // Bilevel or Grayscale\r\n // BlackIsZero\r\n case 1:\r\n red =\r\n green =\r\n blue =\r\n this.clampColorSample(\r\n pixelSamples[0],\r\n sampleProperties[0].bitsPerSample\r\n );\r\n break;\r\n\r\n // RGB Full Color\r\n case 2:\r\n red = this.clampColorSample(\r\n pixelSamples[0],\r\n sampleProperties[0].bitsPerSample\r\n );\r\n green = this.clampColorSample(\r\n pixelSamples[1],\r\n sampleProperties[1].bitsPerSample\r\n );\r\n blue = this.clampColorSample(\r\n pixelSamples[2],\r\n sampleProperties[2].bitsPerSample\r\n );\r\n break;\r\n\r\n // RGB Color Palette\r\n case 3:\r\n if (colorMapValues === undefined) {\r\n throw Error('Palette image missing color map');\r\n }\r\n\r\n var colorMapIndex = pixelSamples[0];\r\n\r\n red = this.clampColorSample(colorMapValues[colorMapIndex], 16);\r\n green = this.clampColorSample(\r\n colorMapValues[colorMapSampleSize + colorMapIndex],\r\n 16\r\n );\r\n blue = this.clampColorSample(\r\n colorMapValues[2 * colorMapSampleSize + colorMapIndex],\r\n 16\r\n );\r\n break;\r\n\r\n // Transparency mask\r\n case 4:\r\n throw RangeError('Not Yet Implemented: Transparency mask');\r\n break;\r\n\r\n // CMYK\r\n case 5:\r\n throw RangeError('Not Yet Implemented: CMYK');\r\n break;\r\n\r\n // YCbCr\r\n case 6:\r\n throw RangeError('Not Yet Implemented: YCbCr');\r\n break;\r\n\r\n // CIELab\r\n case 8:\r\n throw RangeError('Not Yet Implemented: CIELab');\r\n break;\r\n\r\n // Unknown Photometric Interpretation\r\n default:\r\n throw RangeError(\r\n 'Unknown Photometric Interpretation:',\r\n photometricInterpretation\r\n );\r\n break;\r\n }\r\n\r\n ctx.fillStyle = this.makeRGBAFillValue(red, green, blue, opacity);\r\n ctx.fillRect(x, yPadding + y, 1, 1);\r\n }\r\n }\r\n\r\n numRowsInPreviousStrip = numRowsInStrip;\r\n }\r\n }\r\n\r\n /*\t\tfor (var i = 0, numFileDirectories = this.fileDirectories.length; i < numFileDirectories; i++) {\r\n // Stuff\r\n }*/\r\n\r\n return this.canvas;\r\n },\r\n};\r\n","export const optionpresets = {\r\n\t'default': {\r\n\t\t\t // Tracing\r\n\t\t\t corsenabled : true, // true\r\n\t\t\t ltres : 0.08, // 1\r\n\t\t\t qtres : 0.01, // 1\r\n\t\t\t pathomit : 8, // 8\r\n\t\t\t rightangleenhance : true, // true\r\n\t\t\t \r\n\t\t\t // Color quantization\r\n\t\t\t colorsampling : 0, // 1\r\n\t\t\t numberofcolors :8, // 8\r\n\t\t\t mincolorratio : 0, // 0\r\n\t\t\t colorquantcycles : 3, // 3\r\n\t\t\t \r\n\t\t\t // Layering method\r\n\t\t\t layering : 0, //0\r\n\t\t\t \r\n\t\t\t // SVG rendering\r\n\t\t\t strokewidth : 1, //1\r\n\t\t\t linefilter : false, // false\r\n\t\t\t scale : 1, // 1\r\n\t\t\t roundcoords : 1, //1\r\n\t\t\t viewbox : false, // false\r\n\t\t\t desc : false, // false\r\n\t\t\t lcpr : 0, // 0\r\n\t\t\t qcpr : 0, // 0\r\n\t\t\t \r\n\t\t\t // Blur\r\n\t\t\t blurradius :0, //0\r\n\t\t\t blurdelta : 20 //20\r\n\t\t\r\n\t},\r\n\r\n\t'png': {\r\n // Tracing\r\n corsenabled : true, // true\r\n ltres : 0.08, // 1\r\n qtres : 0.1, // 1 --> FOR PNG 0.1 // FOR JPG 0.01\r\n pathomit : 8, // 8\r\n rightangleenhance : true, // true\r\n \r\n // Color quantization\r\n colorsampling : 10, // 1 -->FOR PNG 10 // FOR JPG 0\r\n numberofcolors :8, // 8\r\n mincolorratio : 0, // 0\r\n colorquantcycles : 3, // 3\r\n \r\n // Layering method\r\n layering : 0, //0\r\n \r\n // SVG rendering\r\n strokewidth : 1, //1\r\n linefilter : false, // false\r\n scale : 1, // 1\r\n roundcoords : 1, //1\r\n viewbox : false, // false\r\n desc : false, // false\r\n lcpr : 0, // 0\r\n qcpr : 0, // 0\r\n \r\n // Blur\r\n blurradius :0, //0\r\n blurdelta : 20 //20 \r\n },\r\n\t\t\r\n\t'jpg': {\r\n // Tracing\r\n\t\t\tcorsenabled : true, // true\r\n\t\t\tltres : 0.08, // 1\r\n\t\t\tqtres : 0.01, // 1\r\n\t\t\tpathomit : 8, // 8\r\n\t\t\trightangleenhance : true, // true\r\n\t\t\t// Color quantization\r\n\t\t\tcolorsampling : 0, // 1\r\n\t\t\tnumberofcolors :8, // 8\r\n\t\t\tmincolorratio : 0, // 0\r\n\t\t\tcolorquantcycles : 3, // 3\r\n\t\t\t// Layering method\r\n\t\t\tlayering : 0, //0\r\n\t\t\t// SVG rendering\r\n\t\t\tstrokewidth : 1, //1\r\n\t\t\tlinefilter : false, // false\r\n\t\t\tscale : 1, // 1\r\n\t\t\troundcoords : 1, //1\r\n\t\t\tviewbox : false, // false\r\n\t\t\tdesc : false, // false\r\n\t\t\tlcpr : 0, // 0\r\n\t\t\tqcpr : 0, // 0\r\n\t\t\t// Blur\r\n\t\t\tblurradius :0, //0\r\n\t\t\tblurdelta : 20 //20\t \r\n\t},\r\n\r\n\t\t'posterized1': { colorsampling:0, numberofcolors:2 },\r\n\t\t\r\n\t\t'posterized2': { numberofcolors:4, blurradius:5 },\r\n\t\t\r\n\t\t'curvy': { ltres:0.01, linefilter:true, rightangleenhance:false },\r\n\t\t\r\n\t\t'sharp': { qtres:0.01, linefilter:false },\r\n\t\t\r\n\t\t'detailed': { pathomit:0, roundcoords:2, ltres:0.5, qtres:0.5, numberofcolors:64 },\r\n\t\t\r\n\t\t'smoothed': { blurradius:5, blurdelta: 64 },\r\n\t\t\r\n\t\t'grayscale': { colorsampling:0, colorquantcycles:1, numberofcolors:7 },\r\n\t\t\r\n\t\t'fixedpalette': { colorsampling:0, colorquantcycles:1, numberofcolors:27 },\r\n\t\t\r\n\t\t'randomsampling1': { colorsampling:1, numberofcolors:8 },\r\n\t\t\r\n\t\t'randomsampling2': { colorsampling:1, numberofcolors:64 },\r\n\t\t\r\n\t\t'artistic1': { colorsampling:0, colorquantcycles:1, pathomit:0, blurradius:5, blurdelta: 64, ltres:0.01, linefilter:true, numberofcolors:16, strokewidth:2 },\r\n\t\t\r\n\t\t'artistic2': { qtres:0.01, colorsampling:0, colorquantcycles:1, numberofcolors:4, strokewidth:0 },\r\n\t\t\r\n\t\t'artistic3': { qtres:10, ltres:10, numberofcolors:8 },\r\n\t\t\r\n\t\t'artistic4': { qtres:10, ltres:10, numberofcolors:64, blurradius:5, blurdelta: 256, strokewidth:2 },\r\n\t\t\r\n\t\t'posterized3': { ltres: 1, qtres: 1, pathomit: 20, rightangleenhance: true, colorsampling: 0, numberofcolors: 3,\r\n\t\t\tmincolorratio: 0, colorquantcycles: 3, blurradius: 3, blurdelta: 20, strokewidth: 0, linefilter: false,\r\n\t\t\troundcoords: 1, pal: [ { r: 0, g: 0, b: 100, a: 255 }, { r: 255, g: 255, b: 255, a: 255 } ] }\r\n\t\t\t\r\n\t}// End of optionpresets","import { StateCreator } from 'zustand';\r\nimport { TIFFParser } from '../../loaders/tiffParser';\r\nimport { use3dddPlus } from '..';\r\nimport { fabric } from 'fabric';\r\nimport ImageTracer from 'imagetracerjs';\r\nimport {optionpresets} from '../../data';\r\n\r\n// import * as pdfjsLib from 'pdfjs-dist/build/pdf';\r\n// pdfjsLib.GlobalWorkerOptions.workerSrc = `//cdnjs.cloudflare.com/ajax/libs/pdf.js/${pdfjsLib.version}/pdf.worker.js`;\r\n//@ts-ignore\r\nimport * as pdfjsLib from 'pdfjs-dist/webpack';\r\nimport { requests } from '../../axios/index';\r\n\r\nexport interface ConverterSlice {\r\n fillColor: string[];\r\n pdfConverter: (data: any) => void;\r\n convertPdfToImages: (buffer: any) => any;\r\n tiffConvert: (data: any) => void;\r\n aiConvert: (data: any) => any;\r\n loadImageFromURL: (data: any) => any;\r\n imageToSVG: (data: any, ext: string, isSVG?: boolean, convert?: boolean) => void;\r\n removeDuplicates: (arr: any) => void;\r\n RGBToHex: (rgb: any) => void;\r\n changeSVGColor: (property: any, color: any) => boolean;\r\n setFile: (file: any) => void;\r\n file: any;\r\n addText: () => void;\r\n refreshColor: (colorValue: number) => void;\r\n}\r\n\r\nexport const converterSlice: StateCreator<ConverterSlice> = (set, get) => {\r\n \r\nconst processImage = (svgstr: any, colorValue: number) => {\r\n fabric.loadSVGFromString(\r\n //@ts-ignore\r\n new String(svgstr),\r\n function (objects, options) {\r\n let loadedObject: any = fabric.util.groupSVGElements(objects, options);\r\n loadedObject.scaleToHeight(300);\r\n loadedObject.scaleToWidth(300);\r\n //@ts-ignore\r\n let objImage = loadedObject?._objects;\r\n let _Fills = [];\r\n let fillCounts = {};\r\n if(objImage){\r\n objImage.forEach((ele: any) => {\r\n ele.set({ strokeWidth: 0 });\r\n if(typeof ele.fill === \"string\" && ele.fill !== \"\"){\r\n set({ fillColor: [...ele.fill] }); \r\n let fillColor = ele.fill.toString();\r\n const pixelCount = ele.width * ele.height; \r\n fillCounts[fillColor] = (fillCounts[fillColor] || 0) + pixelCount;\r\n }\r\n });\r\n }\r\n use3dddPlus.setState({ loadedObject: objImage });\r\n const sortedFillColors = Object.keys(fillCounts).sort((a, b) => fillCounts[b] - fillCounts[a]);\r\n const topColors = sortedFillColors.slice(0, colorValue);\r\n topColors.map((e)=>{\r\n if( e.search(\"#\") === -1)\r\n {\r\n let _C = get().RGBToHex(e);\r\n _Fills.push(_C);\r\n }else{\r\n _Fills.push(e);\r\n }\r\n });\r\n //@ts-ignore\r\n set({ fillColor: get().removeDuplicates(_Fills) });\r\n //@ts-ignore\r\n _Fills = get().removeDuplicates(_Fills);\r\n const fillColors = {};\r\n _Fills.map((item, index) => {\r\n fillColors['layer' + index] = item;\r\n });\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n\r\n // Update colors in default color fill\r\n const defaultCF = [];\r\n Object.keys(fillColors).map((cf: any) => {\r\n defaultCF.push({\r\n property: cf,\r\n default: fillColors[cf],\r\n updated: fillColors[cf],\r\n });\r\n });\r\n use3dddPlus.setState({ defaultColorFill: defaultCF});\r\n use3dddPlus.setState({ defaultColorFillCopy: defaultCF});\r\n\r\n function euclideanDistance(color1: string, color2: string): number {\r\n const c1 = new fabric.Color(color1).getSource();\r\n const c2 = new fabric.Color(color2).getSource();\r\n \r\n const diffR = c1[0] - c2[0];\r\n const diffG = c1[1] - c2[1];\r\n const diffB = c1[2] - c2[2];\r\n \r\n return Math.sqrt(diffR ** 2 + diffG ** 2 + diffB ** 2);\r\n }\r\n const colorMap: { [color: string]: string } = {};\r\n sortedFillColors.forEach((color) => {\r\n const closestColor = topColors.reduce((prev, curr) => {\r\n const prevDiff = euclideanDistance(color, prev);\r\n const currDiff = euclideanDistance(color, curr);\r\n return prevDiff < currDiff ? prev : curr;\r\n });\r\n colorMap[color] = closestColor;\r\n });\r\n if(objImage){\r\n objImage.forEach((ele: any) => {\r\n ele.set({ fill: colorMap[ele.fill.toString()] });\r\n });\r\n }\r\n loadedObject.set({\r\n colorFill: fillColors,\r\n //@ts-ignore\r\n setControlVisible: false,\r\n });\r\n loadedObject.id = use3dddPlus.getState().guid();\r\n\r\n // loadedObject = new fabric.Group(objImage, options);\r\n use3dddPlus.getState().popupCanv.clear();\r\n\r\n // use3dddPlus\r\n // .getState()\r\n // .popupCanv.setBackgroundColor(\r\n // {\r\n // source:\r\n // 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/checkerBoxBG.png',\r\n // repeat: 'repeat',\r\n // },\r\n // use3dddPlus\r\n // .getState()\r\n // .popupCanv.renderAll.bind(use3dddPlus.getState().popupCanv),\r\n // {\r\n // backgroundImageOpacity: 1,\r\n // scaleX: 1.1,\r\n // scaleY: 1.1,\r\n // backgroundRepeat: 'repeat',\r\n // }\r\n // ); \r\n\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 15; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n \r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n // backgroundColor:'#ccc',\r\n fill:(isEvenRow && (left/gridSize)%2 === 0) || (!isEvenRow && (left/gridSize)%2 !== 0) ?'#ffffff' : '#dadadac7'\r\n });\r\n return rect;\r\n }\r\n \r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n canvas.add(new fabric.Line([x, 0, x, canvasHeight], { \r\n stroke: '#dadadac7', \r\n selectable: false,\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n type: 'line', }));\r\n }\r\n \r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n canvas.add(new fabric.Line([0, y, canvasWidth, y], { \r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n lockMovementX:true,\r\n lockMovementY:true,\r\n lockScalingX:true,\r\n lockScalingY:true,\r\n type: 'line', }));\r\n }\r\n \r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(left, top, gridSize, gridSize, isEvenRow);\r\n canvas.add(rect);\r\n }\r\n }\r\n\r\n use3dddPlus.getState().popupCanv.add(loadedObject).renderAll();\r\n use3dddPlus.getState().popupCanv.centerObject(loadedObject);\r\n use3dddPlus.getState().popupCanv.setActiveObject(loadedObject);\r\n use3dddPlus.setState({ activeSelection: loadedObject });\r\n use3dddPlus.setState({ loading: false });\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n }\r\n );\r\n};\r\n\r\n return {\r\n \r\n fillColor: [],\r\n file: {},\r\n setFile: (file) => {\r\n set({ file });\r\n },\r\n // return new Promise((resolve, reject) => {\r\n // if (data) {\r\n // const reader = new FileReader();\r\n // reader.onload = async () => {\r\n // const buffer = reader.result;\r\n // try {\r\n // const _B = await get().convertPdfToImages(buffer);\r\n // resolve(_B);\r\n // } catch (error) {\r\n // reject(error);\r\n // }\r\n // };\r\n // reader.readAsArrayBuffer(data);\r\n // } else {\r\n // reject(new Error('No data provided.'));\r\n // }\r\n // });\r\n // },\r\n // convertPdfToImages: async (buffer) => {\r\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\r\n // .promise;\r\n // const scale = 2;\r\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\r\n // const page = await pdf.getPage(pageNum);\r\n // const viewport = page.getViewport({ scale });\r\n // const canvasEl = document.createElement('canvas');\r\n // canvasEl.width = viewport.width;\r\n // canvasEl.height = viewport.height;\r\n // const context = canvasEl.getContext('2d');\r\n // await page.render({\r\n // canvasContext: context,\r\n // viewport,\r\n // background: 'rgba(0,0,0,0)',\r\n // }).promise;\r\n // // let objectURL = URL.createObjectURL(canvasEl);\r\n // const imageUrl = canvasEl.toDataURL();\r\n // return imageUrl;\r\n // // svgConverter(imageUrl);\r\n // /* */\r\n // }\r\n // },\r\n tiffConvert: async (data) => {\r\n const tiffParser = new TIFFParser();\r\n const canvasEl = document.createElement('canvas');\r\n canvasEl.width = 800;\r\n canvasEl.height = 800;\r\n // const context = canvasEl.getContext(\"2d\");\r\n const arrayBuffer = await data.arrayBuffer();\r\n var tiffCanvas = tiffParser.parseTIFF(arrayBuffer, canvasEl);\r\n const imageUrl = tiffCanvas.toDataURL();\r\n return imageUrl;\r\n },\r\n aiConvert:async (aiFile)=>{\r\n const formData = new FormData();\r\n formData.append('file', aiFile);\r\n const url = 'https://m2dev.richardsonsports.com/rest/V1/file-conversion';\r\n const config = {\r\n headers: {\r\n 'Authorization' : 'Bearer 6k5hm5dcmdwtd6l4setj4a3aq6liab5u',\r\n 'Content-Type': 'multipart/form-data'\r\n }\r\n }\r\n const response = await requests.post(url, formData,config);\r\n return response;\r\n },\r\n loadImageFromURL:async (url)=>{\r\n console.log(\"---.\",url);\r\n // return await requests.get(url + \"?timestamp=\" + Date.now());\r\n // const response = await fetch(url);\r\n // const blob = await response.text();\r\n // return url;\r\n\r\n },\r\n imageToSVG: (data, ext: string, isSVG = false, convert = true) => {\r\n // use3dddPlus.setState({ uploadImageModalDisplay: true });\r\n use3dddPlus.setState({ loading: true });\r\n if(convert){\r\n if(isSVG){\r\n var reader = new FileReader();\r\n reader.onload = function (e) {\r\n use3dddPlus.setState({ imageData: e.target.result });\r\n processImage(e.target.result, 8);\r\n };\r\n reader.readAsText(data);\r\n }else{\r\n ImageTracer.imageToSVG(\r\n data,\r\n function (svgstr) {\r\n use3dddPlus.setState({ imageData: svgstr });\r\n processImage(svgstr, 8);\r\n }, (ext && (ext.toLowerCase() === \"jpg\" || ext.toLowerCase() === \"jpeg\") ? optionpresets.jpg :\r\n ext.toLowerCase() === \"png\" ? optionpresets.png : optionpresets.default)\r\n );\r\n }\r\n }else{\r\n processImage(data, 8);\r\n }\r\n },\r\n refreshColor: (colorValue: number) => { \r\n processImage(use3dddPlus.getState().imageData, colorValue);\r\n },\r\n removeDuplicates: (arr) => {\r\n return arr.filter((item, index) => arr.indexOf(item) === index);\r\n },\r\n\r\n RGBToHex: (rgb) => {\r\n if(rgb){\r\n if(rgb.indexOf('rgba') >= 0){\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${((1 << 24) + (parseInt(rgba[0]) << 16) + (parseInt(rgba[1]) << 8) + parseInt(rgba[2])).toString(16).slice(1)}`; \r\n }else{ \r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n }else {return '';}\r\n },\r\n changeSVGColor: (property, color) => {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n const fillColor = { ...use3dddPlus.getState().colorFill };\r\n const previousColor = fillColor[property];\r\n //const SelectedObjet = use3dddPlus.getState().activeSelection;\r\n // console.log(\"Color_CHANGING--->\",SelectedObjet.colorFill);\r\n // let _newObj = SelectedObjet.colorFill;\r\n /* Object.entries(_newObj).forEach(([key, value]) => {\r\n if(`${value}` === previousColor){\r\n console.log(`${key}: ${value}` , previousColor);\r\n _newObj[`${key}`] = color;\r\n }\r\n // console.log(`${key}: ${value}`)\r\n});*/\r\n // const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\r\n // popupCanvas: popupCanvas,\r\n // });\r\n\r\n // popupCanvas.setActiveObject(sel);\r\n // popupCanvas.requestRenderAll();\r\n\r\n // let objImage = SelectedObjet._objects;if(use3dddPlus.getState().popupCanv.getActiveObject()){\r\n // if(use3dddPlus.getState().popupCanv.getActiveObject()){\r\n // let objImage = use3dddPlus\r\n // .getState()\r\n // .popupCanv.getActiveObject()._objects;\r\n if(use3dddPlus.getState().loadedObject){\r\n let objImage = use3dddPlus\r\n .getState()\r\n .popupCanv.getObjects();\r\n objImage.forEach((ele) => {\r\n if(typeof ele.fill === \"string\" && ele.fill !== \"\"){\r\n const _C = (ele.fill === 'transparent' || (typeof ele.fill === 'string' && ele.fill.includes('#')) ? ele.fill : get().RGBToHex(ele.fill));\r\n if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n });\r\n }\r\n }\r\n });\r\n use3dddPlus.getState().popupCanv.renderAll();\r\n // fillColor[property] = color;\r\n Object.keys(fillColor).forEach((fc: any) => {\r\n if(fillColor[fc] === previousColor){\r\n fillColor[fc] = color;\r\n }\r\n });\r\n use3dddPlus.setState({ colorFill: fillColor });\r\n return true;\r\n }else{\r\n return false;\r\n }\r\n },\r\n addText: () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n use3dddPlus.getState().fabricCanvas.discardActiveObject();\r\n const text: any = new fabric.Text('NEW TEXT', {\r\n lineHeight: 1,\r\n fill: '#040404',\r\n fontFamily: 'Athletic Block',\r\n fontWeight: 'normal',\r\n top: use3dddPlus.getState().fabricCanvas.height / 2 - 40,\r\n left: use3dddPlus.getState().fabricCanvas.width / 2 - 205,\r\n stroke: '#eb4034',\r\n strokeWidth: 0,\r\n paintFirst: 'stroke',\r\n //charSpacing: 0,\r\n padding: -1,\r\n fontSize: 50,\r\n name: 'text',\r\n charSpacing: 0,\r\n lockScalingFlip: true,\r\n });\r\n const fillColors = { layer0: text.fill };\r\n text.set({\r\n //@ts-ignore\r\n colorFill: fillColors,\r\n });\r\n text.id = use3dddPlus.getState().guid();\r\n use3dddPlus.getState().fabricCanvas.centerObject(text);\r\n use3dddPlus.getState().fabricCanvas.add(text);\r\n use3dddPlus.getState().fabricCanvas.setActiveObject(text);\r\n use3dddPlus.setState({ currentSelection: 'text' });\r\n //@ts-ignore\r\n use3dddPlus.getState().deleteButtonControls(text);\r\n text.setControlsVisibility(use3dddPlus.getState().HideControls);\r\n use3dddPlus.getState().nameCounter++;\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forStoringAllObject(text); //for pushing the data into array for layers\r\n // use3dddPlus.setState({storeAllObject : });\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n text.icon = use3dddPlus.getState().iconImage;\r\n },\r\n pdfConverter :(data) => {\r\n return new Promise((_resolve, reject) => {\r\n if (data) {\r\n const reader = new FileReader();\r\n reader.onload = async () => {\r\n const buffer = reader.result;\r\n try {\r\n const _B = await get().convertPdfToImages(buffer);\r\n _resolve(_B);\r\n } catch (error) {\r\n reject(error);\r\n }\r\n };\r\n reader.readAsArrayBuffer(data);\r\n } else {\r\n reject(new Error('No data provided.'));\r\n }\r\n });\r\n },\r\n // convertPdfToImages: async (buffer: any) => {\r\n // const pdf = await pdfjsLib.getDocument({ data: new Uint8Array(buffer) })\r\n // .promise;\r\n // const scale = 2;\r\n // for (let pageNum = 1; pageNum <= pdf.numPages; pageNum++) {\r\n // const page = await pdf.getPage(pageNum);\r\n // const viewport = page.getViewport({ scale });\r\n // const canvasEl = document.createElement('canvas');\r\n // canvasEl.width = viewport.width;\r\n // canvasEl.height = viewport.height;\r\n // const context = canvasEl.getContext('2d');\r\n // await page.render({\r\n // canvasContext: context,\r\n // viewport,\r\n // background: 'rgba(0,0,0,0)',\r\n // }).promise;\r\n // const imageUrl = canvasEl.toDataURL();\r\n // return imageUrl;\r\n // }\r\n // return null;\r\n // },\r\n convertPdfToImages: async (file) => {\r\n const pdf = await pdfjsLib.getDocument(file).promise;\r\n const canvas = document.createElement(\"canvas\");\r\n if(pdf.numPages >= 0){\r\n const page = await pdf.getPage(1);\r\n const viewport = page.getViewport({ scale: 1 });\r\n const context = canvas.getContext(\"2d\");\r\n canvas.height = viewport.height;\r\n canvas.width = viewport.width;\r\n await page.render({ canvasContext: context, viewport: viewport }).promise;\r\n }\r\n const imageUrl = canvas.toDataURL();\r\n return imageUrl;\r\n }\r\n };\r\n};\r\nexport default ConverterSlice;\r\n","import { create, StateCreator } from 'zustand';\r\nimport {\r\n // createJSONStorage,\r\n // persist,\r\n subscribeWithSelector,\r\n} from 'zustand/middleware';\r\nimport actionSlice, { ActionSlice } from './actions';\r\nimport lambdaSlice, { LambdaSlice } from './lambda/index';\r\nimport SaveDesignSlice, { saveDesignSlice } from './saveDesign';\r\nimport AuthSlice, { authSlice } from './auth';\r\nimport HistorySlice, { historySlice } from './history';\r\nimport FabricSlice, { fabricSlice } from './fabric';\r\nimport ConverterSlice, { converterSlice} from './converters';\r\nexport type ThreedddPlus = \r\n ActionSlice &\r\n LambdaSlice &\r\n SaveDesignSlice &\r\n AuthSlice &\r\n HistorySlice &\r\n ConverterSlice &\r\n FabricSlice;\r\n\r\nexport const threedddPlusState: StateCreator<ThreedddPlus> = (...args) => {\r\n return {\r\n ...actionSlice(...args),\r\n ...lambdaSlice(...args),\r\n ...saveDesignSlice(...args),\r\n ...authSlice(...args),\r\n ...historySlice(...args),\r\n ...converterSlice(...args),\r\n ...fabricSlice(...args)\r\n };\r\n};\r\n\r\nexport const use3dddPlus = create(\r\n // persist(\r\n subscribeWithSelector<ThreedddPlus>(threedddPlusState)\r\n // , {\r\n // name: 'editor-store', // unique name\r\n // storage: createJSONStorage(() => sessionStorage), // (optional) by default, 'localStorage' is used\r\n // }\r\n // )\r\n);\r\n\r\n(window as any).datasbase = use3dddPlus;\r\n","import React from \"react\";\r\n\r\nexport const Button = ({ label, icons, onClick, className, children }) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex rounded-none gap-3 w-full items-center p-2 m-2 ${className}`}\r\n >\r\n {icons}\r\n {label}\r\n {children}\r\n </button>\r\n );\r\n};\r\n","export const PRIMARY_COLOR = 'text-[#cf132b]'; //rgb(30 58 138);\r\nexport const SECONDARY_COLOR = 'text-[#e11a38]'; //rgb(156 163 175);\r\nexport const BORDER_COLOR = 'border-[#e0e0e0]'; //rgb(156 163 175)\r\nexport const BORDER_COLOR_1 = 'border-[#ecebed]';\r\nexport const BORDER_COLOR_2 = 'border-[#c2c2c2]';\r\nexport const BORDER_COLOR_3 = 'border-[#e11a38]';\r\nexport const SIDEBAR_BG_COLOR = 'bg-[#f7f7f7]';\r\nexport const SELECT_BG_COLOR = 'bg-[#e11a38]'; //rgb(203 213 225)\r\nexport const BG_COLOR_1 = 'bg-[#e11a38]'; //rgb(203 213 225)\r\nexport const SELECT_TEXT_COLOR = 'text-white'\r\nexport const TEXT_SIZE_1 = 'text-xs'; //font-size: 12px (0.75rem)\r\nexport const TEXT_SIZE_2 = 'text-2xl'; //font-size: 24px; (1.5rem)\r\nexport const TEXT_SIZE_3 = 'text-[15px]';\r\nexport const TEXT_SIZE_4 = 'text-[17px]';\r\nexport const TEXT_SIZE_5 = 'text-[28px]';\r\nexport const TEXT_SIZE_6 = 'text-[14px]';\r\nexport const TEXT_SIZE_7 = 'text-[30px]';\r\nexport const TEXT_SIZE_8 = 'text-[21px]';\r\nexport const TEXT_SIZE_9 = 'text-[13px]';\r\nexport const TEXT_SIZE_11 = 'text-[18px]';\r\nexport const TEXT_SIZE_12 = 'text-[11px]';\r\nexport const TEXT_SIZE_13 = 'text-[12px]';\r\nexport const TEXT_SIZE_14 = 'text-[16px]';\r\nexport const TEXT_SIZE_15 = 'text-[25px]';\r\nexport const TEXT_SIZE_16 = 'text-[26px]';\r\nexport const TEXT_SIZE_17 = 'text-[22px]';\r\nexport const TEXT_SIZE_18 = 'text-[16px]';\r\nexport const ACTIVE_BG_COLOR = 'bg-[#cf132b]'; //rgb(30 58 138);\r\nexport const BUTTON_TEXT_COLOR = 'text-white';\r\nexport const BUTTON_BG_COLOR = 'bg-black'; //rgb(0 0 0)\r\nexport const INPUT_BG_COLOR = 'bg-white';\r\nexport const TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const BACKDROP_BLUR = 'backdrop-blur-[45px]';\r\nexport const BACKDROP_BLUR_BG_COLOR = 'bg-[#00000046]';\r\nexport const MODAL_BG_COLOR = 'bg-[#ffffff]';\r\nexport const CARD_BG_COLOR = 'bg-white'; //rgb(255 255 255)\r\nexport const INPUT_TEXT_DISABLE_COLOR = 'text-slate-300'\r\nexport const CHECKBOX_CHECKED_COLOR = '#e11a38'\r\nexport const LOAD_DESIGN_BORDER_COLOR = '#e0e0e0'\r\nexport const LOAD_DESIGN_TEXT_COLOR = 'text-[#e11a38]';\r\nexport const SEARCH_ICON_COLOR = 'text-[#727272]'\r\nexport const SEARCHBAR_BORDER_COLOR = 'border-[#bebebe]'\r\nexport const MY_DESIGN_TEXT_COLOR = 'text-[#353535]'\r\nexport const SEARCH_TEXT_COLOR = 'text-[#353535]'\r\nexport const NO_SEARCHRESULT_TEXT_COLOR_1 = 'text-[#727272]'\r\nexport const NO_SEARCHRESULT_TEXT_COLOR_2 = 'text-[#5d5d5d]'\r\nexport const CANVAS_MENU_TEXT = 'text-[#353535]';\r\nexport const CANVAS_MENU_BORDER = 'border-[#f4f4f4]';\r\nexport const CANVAS_MENU_BG_COLOR = 'bg-white';\r\nexport const CANVAS_MENU_DROPDOWN_BG_COLOR = 'bg-white';\r\nexport const DECORATION_BG_COLOR = 'bg-[#F1F1F1]'\r\nexport const DROPDOWN_BACKGROUND_COLOR = 'bg-[#FCE8EB]'\r\nexport const TAG_BG_COLOR = 'bg-[#FCE8EB]'\r\nexport const TAG_TEXT_COLOR = 'text-[#e11a38]'\r\nexport const CARD_LAST_UPDATE_COLOR = 'text-[#727272]'\r\nexport const CARD_DOWNLAOD_ICON_COLOR = 'text-[#353535]'\r\nexport const CARD_DESCRIPTION_COLOR = 'text-[#353535]'\r\nexport const FOOTER_TEXT_COLOR = 'text-[#ffffff]'\r\nexport const FOOTER_RACK_BG_COLOR = 'bg-[#E21938]'\r\nexport const FOOTER_PRICE_COLOR = 'text-[#353535]'\r\nexport const FOOTER_RACK_COUNT_COLOR = 'text-[#E21938]'\r\nexport const FOOTER_ROSTER_COLOR = 'text-[#353535]'\r\nexport const FOOTER_ROSTER_BORDER_COLOR = 'border-[#353535]'\r\nexport const FOOTER_SUMMARY_BG_COLOR = 'bg-[#353535]'\r\nexport const FOOTER_SUMMARY_TEXT_COLOR = 'text-white'\r\nexport const CONFIRMDESIGN_DISCARD_BORDER_COLOR = 'border-[#707070]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_2 = 'text-[#E11A38]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_3 = 'text-[#353535]';\r\nexport const CONFIRMDESIGN_TEXT_COLOR_4 = 'text-[#ffffff]';\r\nexport const CONFIRMDESIGN_SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]';\r\nexport const DESIGNSUCCESS_CLOSE_BORDER_COLOR = 'border-[#707070]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_1 = 'text-[#5d5d5d]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_2 = 'text-[#E21938]';\r\nexport const DESIGNSUCCESS_TEXT_COLOR_3 = 'text-[#353535]';\r\n\r\nexport const SAVERACK_BORDER_COLOR = 'border-[#707070]'\r\nexport const SAVERACK_TEXT_COLOR = 'text-[#707070]'\r\nexport const SAVEBUTTON_BG_COLOR = 'bg-[#E11A38]'\r\nexport const TOASTER_SUCCESS_BG_COLOR = 'bg-[#D5F2EA]'\r\nexport const TOASTER_FAILURE_BG_COLOR = 'bg-[#FCE8EB]'\r\nexport const TOASTER_INFO_BG_COLOR = 'bg-[#D5E9FA]'\r\nexport const TOASTER_WARNING_BG_COLOR = 'bg-[#FFF8E7]'\r\nexport const RESET_BUTTON_BG_COLOR = 'text-[#9A9A9A]'\r\nexport const PRODUCTINFO_TEXT_COLOR_1 = 'text-[#353535]'\r\nexport const PRODUCTINFO_TEXT_COLOR_2 = 'text-[#c2c2c2]'\r\nexport const PRODUCTINFO_TEXT_COLOR_3 = 'text-[#e11a38]'\r\nexport const PRODUCTINFO_TEXT_COLOR_4 = 'text-[#5d5d5d]'\r\nexport const UPDATESUCCESS_RACK_BORDER_COLOR = 'border-[#E11938]';\r\nexport const UPDATESUCCESS_TEXT_COLOR_1 = 'text-[#E11938]';\r\nexport const RACK_CARD_BORDER_COLOR = 'border-[#e5e5e5]';\r\nexport const RACK_CARD_TEXT_COLOR_1 = 'text-[#E11A38]';\r\nexport const RACK_CARD_TEXT_COLOR_2 = 'text-[#353535]';\r\nexport const RACK_CARD_TEXT_COLOR_3 = 'text-[#9f9f9f]';\r\nexport const RACK_CARD_MENU_TEXT = 'text-[#353535]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_1 = 'text-[#E11A38]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_2 = 'text-[#727272]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_3 = 'text-[#353535]';\r\nexport const EDIT_DESIGN_INFO_TEXT_COLOR_4 = 'text-[#ffffff]';\r\nexport const EDIT_DESIGN_INFO_INPUT_BORDER_COLOR = 'border-[#ECEBED]';\r\nexport const EDIT_DESIGN_INFO_DISABLED_BG_COLOR_1 = 'bg-[#F8F8F8]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_2 = 'bg-[#ffffff]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_3 = 'bg-[#e11a38]';\r\nexport const EDIT_DESIGN_INFO_BG_COLOR_4 = 'bg-[#fce8eb]';\r\nexport const INPUT_ERROR_BORDER_COLOR = 'border-[#E11A38]';\r\nexport const INPUT_ERROR_TEXT_COLOR = 'text-[#E11A38]';\r\nexport const PRICEBREAKUP_TEXT_COLOR_1 = 'text-[#353535]';\r\nexport const PRICEBREAKUP_TEXT_COLOR_2 = 'text-[#747474]';\r\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_1 = 'border-[#c2c2c2]';\r\nexport const PRICEBREAKUP_TEXT_BORDER_COLOR_2 = 'border-[#ebebeb]';","import React from 'react';\r\nimport { Tooltip, TooltipReference, useTooltipState } from 'reakit';\r\n\r\ninterface ToolTipProps {\r\n label: string;\r\n arrowOnTop?: boolean;\r\n className?: string;\r\n children: React.ReactNode | React.ReactNode[];\r\n}\r\nexport const ToolTip = ({\r\n label,\r\n arrowOnTop,\r\n className = '',\r\n children,\r\n}: ToolTipProps) => {\r\n const tooltip = useTooltipState({ placement: arrowOnTop ? 'bottom' : 'top' });\r\n return (\r\n <>\r\n <TooltipReference\r\n {...tooltip}\r\n className={`${className} flex relative items-center justify-center align-middle w-auto text-sm font-semibold first:rounded-l last:rounded-r focus:outline-none`}\r\n aria-label={label}\r\n >\r\n {children}\r\n </TooltipReference>\r\n {\r\n //@ts-ignore\r\n // <div className={styles}>\r\n <Tooltip\r\n {...tooltip}\r\n // className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before: ${SELECT_BG_COLOR} top-[-21%] before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[230deg] before:border before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:rounded-none before:border-t-transparent before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af] `\r\n className={`font-[Roboto-Medium] font-medium mb-[5px] text-[13px] capitalize before:content-[''] before:absolute before:left-[calc(50%-7px)] before:bg-[#fce8eb] before:rotate-[44deg] before:border ${\r\n arrowOnTop\r\n ? 'before:top-[-21%] before:border-l-[#f3a2af] before:border-t-[#f3a2af] before:border-b-transparent before:border-r-transparent'\r\n : 'before:top-[80%] before:border-b-[#f3a2af] before:border-r-[#f3a2af] before:border-l-transparent before:border-t-transparent'\r\n } before:rounded-none before:h-[14px] before:w-[14px] !z-[100] inline-block px-3 py-2 text-[#5d5d5d] transition-opacity duration-300 bg-[#fce8eb] shadow-sm border border-[#f3a2af]`}\r\n style={{ zIndex: 3 }}\r\n >\r\n {label}{' '}\r\n </Tooltip>\r\n // </div>\r\n }\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { CANVAS_MENU_TEXT } from '../../theme';\r\nimport { Copy, Delete, IconButton, SelectAll } from '../icon';\r\nimport { MdLayers } from 'react-icons/md';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport { CgRedo, CgUndo } from 'react-icons/cg';\r\nimport { ToolTip } from '../toolTip';\r\nconst ActionButtons = () => {\r\n const [canvas, activeSelection] = use3dddPlus(\r\n (state) => [state.fabricCanvas, state.activeSelection],\r\n shallow\r\n );\r\n const selectAllHandler = () => {\r\n canvas.discardActiveObject();\r\n const sel = new fabric.ActiveSelection(\r\n canvas.getObjects().filter((obj) => obj.type !== 'line'),\r\n {\r\n canvas: canvas,\r\n }\r\n );\r\n canvas.setActiveObject(sel);\r\n canvas.requestRenderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({ selectedAll: true });\r\n use3dddPlus.setState({ currentSelection: 'selectAll' });\r\n const fillColors = {};\r\n use3dddPlus.setState({ colorFill: fillColors });\r\n };\r\n const deleteHandler = () => {\r\n if (activeSelection) {\r\n if (activeSelection.icon) {\r\n canvas.remove(activeSelection);\r\n removeItem(activeSelection);\r\n } else if (activeSelection._objects) {\r\n activeSelection._objects.map((obj) => {\r\n canvas.remove(obj);\r\n removeItem(obj);\r\n });\r\n }\r\n // canvas.remove(activeSelection);\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.requestRenderAll();\r\n use3dddPlus.setState({ selectedAll: false });\r\n canvas.discardActiveObject();\r\n // removeItem(activeSelection);\r\n }\r\n };\r\n const removeItem = (value: any) => {\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(value);\r\n // @ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index === -1 && value && value._objects && value._objects.length > 0) {\r\n var index = use3dddPlus\r\n .getState()\r\n //@ts-ignore\r\n .storeAllObject.indexOf(value._objects[0]);\r\n }\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n };\r\n const canvasActions = [\r\n {\r\n icon: <SelectAll />,\r\n onClick: selectAllHandler,\r\n id: 'select-action',\r\n label: 'Select all',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <Copy />,\r\n onClick: () => {\r\n use3dddPlus.getState().duplicateObject();\r\n },\r\n id: 'duplicate-action',\r\n label: 'Duplicate',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <MdLayers />,\r\n onClick: () => {\r\n use3dddPlus.setState({ currentSelection: 'layer' });\r\n },\r\n id: 'layes-action',\r\n label: 'Layers',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <Delete />,\r\n onClick: deleteHandler,\r\n id: 'delete-action',\r\n label: 'Delete',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <CgUndo />,\r\n onClick: () => {\r\n use3dddPlus.getState().undo();\r\n },\r\n id: 'undo-action',\r\n label: 'Undo',\r\n disabled: false,\r\n visible: true,\r\n },\r\n {\r\n icon: <CgRedo />,\r\n onClick: () => {\r\n use3dddPlus.getState().redo();\r\n },\r\n id: 'redo-action',\r\n label: 'Redo',\r\n disabled: false,\r\n visible: true,\r\n },\r\n ];\r\n\r\n return (\r\n <>\r\n <div\r\n className=\"w-100 flex px-3 items-center z-10 h-[40px]\"\r\n style={{\r\n justifyContent: 'flex-end',\r\n }}\r\n >\r\n <div className={`flex`}>\r\n {canvasActions.map(\r\n (item) =>\r\n item?.visible && (\r\n <div\r\n key={item.id}\r\n className={`${\r\n item.disabled\r\n ? 'disableButton'\r\n : `${CANVAS_MENU_TEXT} cursor-pointer hover:text-[#e11a38] hover:underline hover:underline-offset-4 hover:decoration-2`\r\n } flex gap-[5px] items-center pt-[2.5px] font-bold uppercase mr-[30px] lg:mr-[30px] md-[20px] `}\r\n onClick={item.onClick}\r\n >\r\n <ToolTip label={item.label} arrowOnTop={true}>\r\n <span>\r\n <IconButton\r\n label=\"\"\r\n icon={item.icon}\r\n className={`${\r\n item.disabled\r\n ? 'iconDisable'\r\n : 'pointer-events-auto cursor-pointer'\r\n } m-auto`}\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n </span>\r\n </ToolTip>\r\n </div>\r\n )\r\n )}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default ActionButtons;\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\n// import { CANVAS_MENU_TEXT } from '../../theme';\r\n// import { Copy, Delete, IconButton, SelectAll } from '../icon';\r\n// import { MdLayers } from 'react-icons/md';\r\n// import { shallow } from 'zustand/shallow';\r\n// import { fabric } from 'fabric';\r\n// import { CgRedo, CgUndo } from 'react-icons/cg';\r\nconst NudgeButtons = () => {\r\n // const [canvas, activeSelection] = use3dddPlus(\r\n // (state) => [state.fabricCanvas, state.activeSelection],\r\n // shallow\r\n // );\r\n // const selectAllHandler = () => {\r\n // canvas.discardActiveObject();\r\n // const sel = new fabric.ActiveSelection(canvas.getObjects(), {\r\n // canvas: canvas,\r\n // });\r\n // canvas.setActiveObject(sel);\r\n // canvas.requestRenderAll();\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // use3dddPlus.setState({ selectedAll: true });\r\n // use3dddPlus.setState({ currentSelection: 'selectAll' });\r\n // const fillColors = {};\r\n // use3dddPlus.setState({ colorFill: fillColors });\r\n // };\r\n // const deleteHandler = () => {\r\n // canvas.remove(activeSelection);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // canvas.requestRenderAll();\r\n // use3dddPlus.setState({ selectedAll: false });\r\n // removeItem(activeSelection);\r\n // };\r\n // const removeItem = (value: any) => {\r\n // //@ts-ignore\r\n // var index = use3dddPlus\r\n // .getState()\r\n // .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n // if (index > -1) {\r\n // use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n // }\r\n // use3dddPlus.setState({\r\n // storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n // });\r\n // };\r\n\r\n const textSelected = use3dddPlus.getState().activeSelection;\r\n // const canvas = use3dddPlus.getState().fabricCanvas;\r\n\r\n const nudgeMove = (e) => {\r\n const brNew = textSelected.getBoundingRect();\r\n if (e.target.id === 'down') {\r\n // if (textSelected.aCoords.br.y > canvas.height - 2) return;\r\n if (brNew.height + brNew.top >= textSelected.canvas.height - 10) return;\r\n use3dddPlus.getState().moveDown(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'up') {\r\n if (textSelected.aCoords.tr.y < 10) return;\r\n use3dddPlus.getState().moveUp(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'right') {\r\n // if (textSelected.aCoords.tr.x > canvas.height - 2) return;\r\n if (brNew.width + brNew.left >= textSelected.canvas.width - 45) return;\r\n use3dddPlus.getState().moveRight(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n } else if (e.target.id === 'left') {\r\n if (textSelected.aCoords.tl.x < 45) return;\r\n use3dddPlus.getState().moveLeft(textSelected);\r\n use3dddPlus.getState().updateModifaction(true);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className=\"w-full flex items-center justify-center z-10\"\r\n style={{\r\n justifyContent: 'flex-center',\r\n }}\r\n >\r\n <div\r\n className=\"uppercase font-medium text-sm text-red-500 mx-5\"\r\n style={{ marginTop: '0.3rem', marginBottom: '0.3rem' }}\r\n >\r\n Nudge:\r\n </div>\r\n\r\n <button onClick={nudgeMove} id=\"left\">\r\n <div className=\"leftBtn pointer-events-none mx-5\">\r\n <div className=\"leftIcon float-left\">\r\n <svg\r\n transform=\"rotate(270)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Left\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"up\">\r\n <div className=\"upBtn pointer-events-none mx-5\">\r\n <div className=\"upIcon float-left\">\r\n <svg\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Top\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"right\">\r\n <div className=\"rightBtn pointer-events-none mx-5\">\r\n <div className=\"rightIcon float-left\">\r\n <svg\r\n transform=\"rotate(90)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n Right\r\n </span>\r\n </div>\r\n </button>\r\n\r\n <button onClick={nudgeMove} id=\"down\">\r\n <div className=\"downBtn pointer-events-none mx-5\">\r\n <div className=\"downIcon float-left\">\r\n <svg\r\n transform=\"rotate(180)\"\r\n fill=\"#707070\"\r\n height=\"20px\"\r\n width=\"20px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n <span className=\"pointer-events-none iconLabel float-left text-[#5d5d5d] ml-2 text-[13px] font-medium capitalize\">\r\n BOTTOM\r\n </span>\r\n </div>\r\n </button>\r\n {/* <button\r\n onClick={nudgeMove}\r\n id=\"up\"\r\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\r\n >\r\n UP\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"left\"\r\n className=\"font-medium text-orange-300 text-teal-500\"\r\n >\r\n LEFT\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"right\"\r\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\r\n >\r\n RIGHT\r\n </button> */}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default NudgeButtons;\r\n","import React from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport {\r\n Copy,\r\n IconButton,\r\n // Paste,\r\n SendAObject,\r\n SendToBack,\r\n SendToFront,\r\n SendUnderObject,\r\n FlipH,\r\n FlipV,\r\n SnapToCenter,\r\n} from '../icon';\r\n\r\nexport const ContextMenu = () => {\r\n const [activeObj, canvas] = use3dddPlus(\r\n (state) => [state.activeSelection, state.fabricCanvas],\r\n shallow\r\n );\r\n\r\n const flipX = () => {\r\n activeObj.set({\r\n flipX: !activeObj.flipX,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const flipY = () => {\r\n activeObj.set({\r\n flipY: !activeObj.flipY,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n // activeObj.\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const sendBackwards = () => {\r\n canvas.sendBackwards(activeObj);\r\n //@ts-ignore\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index + 1, 0, activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const bringForward = () => {\r\n canvas.bringForward(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n if (index !== 0) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index - 1, 0, activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const sendToBack = () => {\r\n canvas.sendToBack(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.push(activeObj);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const bringToFront = () => {\r\n canvas.bringToFront(activeObj);\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === activeObj.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.unshift(activeObj);\r\n\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const snapToCenter = () => {\r\n activeObj.set({\r\n left: canvas.width / 2,\r\n originX: 'center',\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.renderAll();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const copy = () => {\r\n use3dddPlus.getState().duplicateObject();\r\n use3dddPlus.setState({\r\n showContextMenu: false,\r\n });\r\n };\r\n const menu = [\r\n {\r\n id: 1,\r\n name: 'COPY / PASTE ',\r\n onclick: copy,\r\n icon: <Copy />,\r\n },\r\n // {\r\n // id: 2,\r\n // name: 'Paste',\r\n // onclick: copy,\r\n // icon: <Paste />,\r\n // },\r\n {\r\n id: 3,\r\n name: 'Bring to front',\r\n onclick: bringForward,\r\n icon: <SendToFront />,\r\n },\r\n {\r\n id: 4,\r\n name: 'Send to back',\r\n onclick: sendBackwards,\r\n icon: <SendToBack />,\r\n },\r\n {\r\n id: 5,\r\n name: 'Bring above objects',\r\n onclick: bringToFront,\r\n icon: <SendAObject />,\r\n },\r\n {\r\n id: 6,\r\n name: 'Send under objects',\r\n onclick: sendToBack,\r\n icon: <SendUnderObject />,\r\n },\r\n {\r\n id: 7,\r\n name: 'Flip Horizontal',\r\n onclick: flipX,\r\n icon: <FlipH />,\r\n },\r\n {\r\n id: 8,\r\n name: 'Flip Vertical',\r\n onclick: flipY,\r\n icon: <FlipV />,\r\n },\r\n {\r\n id: 9,\r\n name: 'Snap to center',\r\n onclick: snapToCenter,\r\n icon: <SnapToCenter />,\r\n },\r\n ];\r\n return (\r\n <ul>\r\n {menu.map((item, index) => {\r\n return (\r\n <li\r\n className=\"flex cursor-pointer hover:text-[#e11a38] border border-b-[1px] border-[#EBEBEB] px-[30px] py-[14px] \"\r\n onClick={item.onclick}\r\n key={index}\r\n >\r\n <span>\r\n <IconButton\r\n label=\"\"\r\n icon={item.icon}\r\n className=\"pointer-events-auto cursor-pointer m-auto\"\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n </span>\r\n <span className=\" pl-[20px] text-sm font-bold uppercase\">\r\n {item.name}\r\n </span>\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n );\r\n};\r\n","import React, { useRef } from 'react';\r\nimport './canvas.css';\r\nimport { use3dddPlus } from '../../store';\r\nimport ActionButtons from './canvasButtons'; //Importing Action button component which is displaying buttons\r\nimport NudgeButtons from './nudgeButtons'; //Importing Nudge button component which is displaying buttons\r\n// import ErrorPopup from './errorPopUp'; //Importing ErrorPopup Panel component which is displaying buttons\r\nimport { initCanvas } from '../../store/fabric/fabricCanvas';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { ContextMenu } from '../contextMenu';\r\nimport { fabric } from 'fabric';\r\n\r\nconst canvas = () => {\r\n const [contextMenuCoordinates, showContextMenu] = use3dddPlus(\r\n (state) => [\r\n state.contextMenuCoordinates,\r\n state.showContextMenu,\r\n state.allColor,\r\n ],\r\n shallow\r\n );\r\n const canvasRef = useRef<HTMLCanvasElement | null>(null);\r\n const resizeCanvas = () => {\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n if (document.getElementById('fabCanvas')) {\r\n const outerCanvasContainer = document.getElementById('fabCanvas');\r\n const containerWidth = outerCanvasContainer.clientWidth;\r\n const scale = containerWidth / canvas.getWidth();\r\n const zoom = canvas.getZoom() * scale;\r\n canvas.setWidth(containerWidth);\r\n //@ts-ignore\r\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\r\n console.log('--->', canvas.getHeight(), canvas.getHeight());\r\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\r\n canvas.renderAll();\r\n }\r\n };\r\n React.useEffect(() => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n const canv = initCanvas();\r\n use3dddPlus.setState({ fabricCanvas: canv });\r\n resizeCanvas();\r\n window.addEventListener('resize', resizeCanvas);\r\n const fontFamilyURL =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/athletic.ttf';\r\n const font = new FontFace('Athletic Block', `url('${fontFamilyURL}')`);\r\n font.load().then((value) => {\r\n //@ts-ignore\r\n document.fonts?.add(value);\r\n document.body.classList.add('fonts-loaded');\r\n });\r\n }, []);\r\n\r\n return (\r\n <div className=\" w-full h-full relative\">\r\n <ActionButtons />\r\n <div\r\n id=\"fabCanvas\"\r\n className=\"bg-[#ffffff]\"\r\n style={{ height: 'calc(100% - 71px)' }}\r\n >\r\n <canvas ref={canvasRef} id=\"canvas\"></canvas>\r\n {showContextMenu && (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n zIndex: 1000,\r\n left: contextMenuCoordinates.x - 270,\r\n top: contextMenuCoordinates.y + 55,\r\n backgroundColor: 'white',\r\n border: '1px solid #ccc',\r\n boxShadow: '2px 2px 5px rgba(0,0,0,0.5)',\r\n }}\r\n onBlur={() => {\r\n use3dddPlus.setState({ showContextMenu: false });\r\n }}\r\n >\r\n <ContextMenu />\r\n </div>\r\n )}\r\n </div>\r\n {/* {allColor && allColor.includes('transparent')\r\n ? allColor.length - 1 > 8\r\n : allColor.length > 8 && <ErrorPopup allColor={allColor} />} */}\r\n <NudgeButtons />\r\n </div>\r\n );\r\n};\r\n\r\nexport default canvas;\r\n","import { fabric } from 'fabric';\r\n//@ts-ignore\r\n// import deleteIcon from '../../assets/images/delete.png';\r\n// //@ts-ignore\r\n// import rotateIcon from '../../assets/images/rotate.png';\r\n// //@ts-ignore\r\n// import settingIcon from '../../assets/images/settings.png';\r\nimport { use3dddPlus } from '..';\r\n\r\nexport const initCanvas = () => {\r\n let left1 = 0;\r\n let top1 = 0;\r\n let scale1x = 0;\r\n let scale1y = 0;\r\n let width1 = 0;\r\n let height1 = 0;\r\n\r\n const onObjectSelected = (e) => {\r\n if (e?.selected?.[0]?.colorFill) {\r\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\r\n }\r\n use3dddPlus.setState({\r\n currentSelection: canv.getActiveObject().get('type'),\r\n });\r\n use3dddPlus.setState({ activeSelection: canv.getActiveObject() });\r\n // canv.getActiveObject().viewportCenter();\r\n getAllColors();\r\n };\r\n const onObjectDeselected = () => {\r\n use3dddPlus.setState({ activeSelection: null });\r\n use3dddPlus.setState({ currentSelection: 'none' });\r\n use3dddPlus.setState({ showContextMenu: false });\r\n getAllColors();\r\n };\r\n const onObjectUpdated = (e) => {\r\n // use3dddPlus.setState({colorFill : \"\"})\r\n if (e?.selected?.[0]?.colorFill) {\r\n use3dddPlus.setState({ colorFill: e.selected[0].colorFill });\r\n }\r\n use3dddPlus.setState({\r\n currentSelection: canv.getActiveObject().get('type'),\r\n });\r\n use3dddPlus.setState({ activeSelection: e.selected[0] });\r\n use3dddPlus.setState({ textInfo: e.selected[0].text });\r\n use3dddPlus.setState({ showContextMenu: false });\r\n getAllColors();\r\n };\r\n const onObjectMoving = (e: any) => {\r\n use3dddPlus.getState().updateModifaction(false);\r\n const obj = e.target;\r\n if (isNaN(e.pointer.x) || isNaN(e.pointer.y)) {\r\n obj.set({\r\n top: use3dddPlus.getState().lastPosition.top,\r\n left: use3dddPlus.getState().lastPosition.left,\r\n });\r\n return;\r\n }\r\n // if (\r\n // obj.getBoundingRect().width > obj.canvas.height ||\r\n // obj.getBoundingRect().height > obj.canvas.width\r\n // ) {\r\n // return;\r\n // }\r\n\r\n obj.setCoords();\r\n if (obj.getBoundingRect().top < 10 || obj.getBoundingRect().left < 45) {\r\n obj.top = Math.max(obj.top, obj.top - obj.getBoundingRect().top + 10);\r\n obj.left = Math.max(obj.left, obj.left - obj.getBoundingRect().left + 45);\r\n obj.setCoords();\r\n }\r\n if (\r\n obj.getBoundingRect().top + obj.getBoundingRect().height + 10 >\r\n obj.canvas.height ||\r\n obj.getBoundingRect().left + obj.getBoundingRect().width + 45 >\r\n obj.canvas.width\r\n ) {\r\n obj.top = Math.min(\r\n obj.top,\r\n obj.canvas.height -\r\n obj.getBoundingRect().height +\r\n obj.top -\r\n obj.getBoundingRect().top -\r\n 10\r\n );\r\n obj.left = Math.min(\r\n obj.left,\r\n obj.canvas.width -\r\n obj.getBoundingRect().width +\r\n obj.left -\r\n obj.getBoundingRect().left -\r\n 45\r\n );\r\n obj.setCoords();\r\n }\r\n\r\n const brNew = obj.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= obj.canvas.width ||\r\n brNew.height + brNew.top + 10 >= obj.canvas.height ||\r\n brNew.left < 45 ||\r\n brNew.top < 10\r\n ) {\r\n // obj.left = left1;\r\n // obj.top = top1;\r\n // obj.scaleX = scale1x;\r\n // obj.scaleY = scale1y;\r\n // obj.width = width1;\r\n // obj.height = height1;\r\n } else {\r\n left1 = obj.left;\r\n top1 = obj.top;\r\n scale1x = obj.scaleX;\r\n scale1y = obj.scaleY;\r\n width1 = obj.width;\r\n height1 = obj.height;\r\n }\r\n\r\n if (isObjectInCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInHorizontalCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInVerticalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n use3dddPlus.getState().setLastPosition({ top: obj.top, left: obj.left });\r\n };\r\n\r\n const outerCanvasContainer = document.getElementById('fabCanvas');\r\n\r\n const canv = new fabric.Canvas('canvas', {\r\n centeredScaling: true,\r\n preserveObjectStacking: true,\r\n // backgroundColor: '#ffff00',\r\n stopContextMenu: false,\r\n // width: 500,\r\n // height: 300,\r\n\r\n width: outerCanvasContainer.clientWidth,\r\n height: outerCanvasContainer.clientHeight,\r\n });\r\n\r\n function isObjectInCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterX = canv.width / 2;\r\n var canvasCenterY = canv.height / 2;\r\n var objCenterX = brNew.left + brNew.width / 2;\r\n var objCenterY = brNew.top + brNew.height / 2;\r\n var threshold = 5;\r\n return (\r\n Math.abs(objCenterY - canvasCenterY) < threshold &&\r\n Math.abs(objCenterX - canvasCenterX) < threshold\r\n );\r\n }\r\n\r\n function isObjectInVerticalCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterY = canv.getHeight() / 2;\r\n var scaledObjCenterY = brNew.top + brNew.height / 2;\r\n var threshold = 5;\r\n return Math.abs(scaledObjCenterY - canvasCenterY) < threshold;\r\n }\r\n\r\n function isObjectInHorizontalCenter(obj) {\r\n const brNew = obj.getBoundingRect();\r\n var canvasCenterX = canv.width / 2;\r\n var scaledObjCenterX = brNew.left + brNew.width / 2;\r\n var threshold = 5;\r\n return Math.abs(scaledObjCenterX - canvasCenterX) < threshold;\r\n }\r\n const horizontalLine = new fabric.Line(\r\n [0, canv.height / 2, canv.height, canv.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canv.width / 2, 0, canv.width / 2, canv.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canv.add(horizontalLine);\r\n canv.add(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n\r\n // console.log('HISTORY-->',historyInit());\r\n let deleteImg = document.createElement('img');\r\n deleteImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/delete.png';\r\n let rotateImg = document.createElement('img');\r\n rotateImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/rotate.png';\r\n let settingImg = document.createElement('img');\r\n settingImg.src =\r\n 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/settings.png';\r\n fabric.Object.prototype.objectCaching = true;\r\n fabric.Object.prototype.transparentCorners = false;\r\n fabric.Object.prototype.cornerColor = '#14caf7';\r\n fabric.Object.prototype.cornerStrokeColor = '#045791';\r\n fabric.Object.prototype.borderColor = '#14caf7';\r\n fabric.Object.prototype.cornerSize = 16;\r\n // fabric.Object.prototype.padding = 10;\r\n fabric.Object.prototype.cornerStyle = 'circle';\r\n fabric.Object.prototype.borderDashArray = [5, 5];\r\n\r\n function renderIcon(icon) {\r\n return function renderIcon(ctx, left, top, fabricObject) {\r\n var size = this.cornerSize;\r\n ctx.save();\r\n ctx.translate(left, top);\r\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\r\n ctx.drawImage(icon, -size / 2, -size / 2, size, size);\r\n ctx.restore();\r\n };\r\n }\r\n\r\n fabric.Object.prototype.controls.deleteControl = new fabric.Control({\r\n x: 0.53,\r\n y: -0.53,\r\n offsetY: -16,\r\n offsetX: 16,\r\n cursorStyle: 'pointer',\r\n //@ts-ignore\r\n mouseUpHandler: deleteObject,\r\n render: renderIcon(deleteImg),\r\n cornerSize: 28,\r\n });\r\n fabric.Object.prototype.controls.settingControl = new fabric.Control({\r\n x: -0.53,\r\n y: -0.53,\r\n offsetY: -16,\r\n offsetX: -16,\r\n cursorStyle: 'pointer',\r\n //@ts-ignore\r\n mouseUpHandler: function (e) {\r\n use3dddPlus.setState({\r\n showContextMenu: true,\r\n });\r\n\r\n const rect = canv.getElement().getBoundingClientRect();\r\n const x = e.clientX - rect.left;\r\n const y = e.clientY - rect.top;\r\n // You can add your context menu rendering logic here\r\n // Example: Render a simple alert with the coordinates\r\n use3dddPlus.setState({ contextMenuCoordinates: { x: x, y: y } });\r\n // alert(`Context menu clicked at (${x}, ${y})`);\r\n },\r\n render: renderIcon(settingImg),\r\n cornerSize: 28,\r\n });\r\n //@ts-ignore\r\n function deleteObject(eventData, transform) {\r\n const canvasTarget = transform.target;\r\n const canvas = canvasTarget.canvas;\r\n // if (use3dddPlus.getState().selectedAll || canvasTarget && !canvasTarget.icon) {\r\n // const target = transform.target._objects;\r\n // target.forEach((element) => {\r\n // canvas.remove(element);\r\n // canvas.requestRenderAll();\r\n // removeItem(element);\r\n // });\r\n // use3dddPlus.setState({ selectedAll: false });\r\n // canvas.discardActiveObject().renderAll();\r\n // } else {\r\n // canvas.remove(canvasTarget);\r\n // canvas.requestRenderAll();\r\n // removeItem(canvasTarget);\r\n // }\r\n // use3dddPlus.setState({ defaultColorFill: [] });\r\n const activeSelection = use3dddPlus.getState().activeSelection;\r\n if (activeSelection) {\r\n if (activeSelection.icon) {\r\n canvas.remove(activeSelection);\r\n removeItem(activeSelection);\r\n } else if (activeSelection._objects) {\r\n activeSelection._objects.map((obj) => {\r\n canvas.remove(obj);\r\n removeItem(obj);\r\n });\r\n }\r\n // canvas.remove(activeSelection);\r\n use3dddPlus.getState().updateModifaction(true);\r\n canvas.requestRenderAll();\r\n use3dddPlus.setState({ selectedAll: false });\r\n canvas.discardActiveObject();\r\n // removeItem(activeSelection);\r\n }\r\n }\r\n const removeItem = (value: any) => {\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index === -1 && value && value._objects && value._objects.length > 0) {\r\n var index = use3dddPlus\r\n .getState()\r\n //@ts-ignore\r\n\r\n .storeAllObject.indexOf(value._objects[0]);\r\n }\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n }\r\n };\r\n\r\n fabric.Object.prototype.controls.mtr = new fabric.Control({\r\n x: 0,\r\n y: -0.5,\r\n offsetY: -40,\r\n cursorStyle: 'crosshair',\r\n //@ts-ignore\r\n actionHandler: fabric?.controlsUtils.rotationWithSnapping,\r\n actionName: 'rotate',\r\n // mouseover:function hover(eventData,transform){\r\n // let target = transform.target;\r\n // console.log('TARGET-->',target);\r\n // },\r\n render: function renderIcon(ctx, left, top, fabricObject) {\r\n var size = this.cornerSize;\r\n ctx.save();\r\n ctx.translate(left, top);\r\n ctx.rotate(fabric.util.degreesToRadians(fabricObject.angle));\r\n ctx.drawImage(rotateImg, -size / 2, -size / 2, size, size);\r\n ctx.restore();\r\n },\r\n //@ts-ignore\r\n cornerSize: 28,\r\n withConnection: true,\r\n });\r\n const getAllColors = () => {\r\n // console.log(\"+++++\",canv?.getObjects());\r\n if (!canv?.getObjects()) {\r\n return;\r\n }\r\n // const allColor = [\r\n // ...new Set(\r\n // canv\r\n // ?.getObjects()\r\n // ?.map((item) => Object.values(item['colorFill']))\r\n // .flat()\r\n // ),\r\n // ];\r\n const allColor = [];\r\n canv\r\n ?.getObjects()\r\n ?.map((item) => item['colorFill'] && Object.values(item['colorFill']))\r\n .flat()\r\n .filter(Boolean)\r\n .forEach((color) => {\r\n if (!allColor.includes(color)) {\r\n allColor.push(color);\r\n }\r\n }); // FOR REMOVING ALL DUPLICATE COLOR CODES\r\n // const allColor =[];\r\n use3dddPlus.setState({ allColor: allColor });\r\n };\r\n canv.on('after:render', getAllColors);\r\n canv.on('selection:created', onObjectSelected);\r\n canv.on('selection:cleared', onObjectDeselected);\r\n canv.on('selection:updated', onObjectUpdated);\r\n canv.on('object:moving', onObjectMoving);\r\n canv.on('object:modified', function (e) {\r\n e.target.lockRotation = false;\r\n use3dddPlus.getState().updateModifaction(true);\r\n if (isObjectInCenter(e.target)) {\r\n use3dddPlus.getState().verticalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().verticalLine.set({ visible: false });\r\n }\r\n if (isObjectInHorizontalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n if (isObjectInVerticalCenter(e.target)) {\r\n use3dddPlus.getState().horizontalLine.set({ visible: true });\r\n } else {\r\n use3dddPlus.getState().horizontalLine.set({ visible: false });\r\n }\r\n });\r\n \r\n canv.on('object:scaling',(e)=>{\r\n const obj = e.target;\r\n obj.setCoords();\r\n if (isNaN(e.pointer.x) || isNaN(e.pointer.y)) {\r\n obj.set({\r\n top: use3dddPlus.getState().lastPosition.top,\r\n left: use3dddPlus.getState().lastPosition.left,\r\n });\r\n return;\r\n }\r\n const brNew = obj.getBoundingRect();\r\n if (((brNew.width+brNew.left + 45 )>=obj.canvas.width) || ((brNew.height+brNew.top + 10)>=obj.canvas.height) || ((brNew.left<45) || (brNew.top<10))) {\r\n obj.left = left1;\r\n obj.top = top1;\r\n obj.scaleX = scale1x;\r\n obj.scaleY = scale1y;\r\n obj.width = width1;\r\n obj.height = height1;\r\n }\r\n else{ \r\n left1 =obj.left;\r\n top1 =obj.top;\r\n scale1x = obj.scaleX;\r\n scale1y=obj.scaleY;\r\n width1=obj.width;\r\n height1=obj.height;\r\n }\r\n use3dddPlus.getState().setLastPosition({ top: obj.top, left: obj.left });\r\n })\r\n canv.on('object:rotating', function(e) {\r\n const obj = e.target;\r\n let brNew = obj.getBoundingRect();\r\n if (obj.getBoundingRect().top - 45 < 0 || obj.getBoundingRect().left < 45) {\r\n obj.top = Math.max(obj.top, obj.top - obj.getBoundingRect().top + 45);\r\n obj.left = Math.max(obj.left, obj.left - obj.getBoundingRect().left + 45);\r\n obj.setCoords();\r\n }\r\n if (\r\n obj.getBoundingRect().top + 45 + obj.getBoundingRect().height >\r\n obj.canvas.height ||\r\n obj.getBoundingRect().left + 45 + obj.getBoundingRect().width >\r\n obj.canvas.width\r\n ) {\r\n if (\r\n obj.getBoundingRect().top - 45 < 0 ||\r\n obj.getBoundingRect().left - 45 < 0\r\n ) {\r\n obj.lockRotation = true;\r\n brNew = obj.getBoundingRect();\r\n while (\r\n Math.ceil(obj.width + obj.left + 45) >\r\n Math.floor(obj.canvas.width - 45) ||\r\n Math.ceil(obj.height + obj.top + 45) >\r\n Math.floor(obj.canvas.height - 45) ||\r\n Math.ceil(obj.left) < 0 ||\r\n Math.ceil(obj.top) < 0\r\n ) {\r\n obj.centeredRotation = true;\r\n if (obj.angle >= 0 && obj.angle <= 180) {\r\n obj.set('angle', obj.angle - 1);\r\n if (Math.ceil(brNew.top) < 45) {\r\n obj.set('top', obj.top + 4);\r\n }\r\n if (Math.ceil(brNew.left) < 45) {\r\n obj.set('left', obj.left + 4);\r\n }\r\n if (\r\n Math.ceil(brNew.width + brNew.left + 45) >\r\n Math.floor(obj.canvas.width - 45)\r\n ) {\r\n obj.set('left', brNew.left - 1);\r\n }\r\n if (\r\n Math.ceil(brNew.height + brNew.top + 45) >\r\n Math.floor(obj.canvas.height - 45)\r\n ) {\r\n obj.set('top', obj.top - 4);\r\n }\r\n } else {\r\n obj.set('angle', obj.angle + 1);\r\n if (Math.ceil(brNew.top) < 45) {\r\n obj.set('top', obj.top + 4);\r\n }\r\n if (Math.ceil(brNew.left) < 45) {\r\n obj.set('left', obj.left - 4);\r\n }\r\n if (\r\n Math.ceil(brNew.width + brNew.left + 45) >\r\n Math.floor(obj.canvas.width - 45)\r\n ) {\r\n obj.set('angle', obj.angle - 1);\r\n obj.set('left', obj.left - 1);\r\n }\r\n if (\r\n Math.ceil(obj.height + obj.top + 45) >\r\n Math.floor(obj.canvas.height - 45)\r\n ) {\r\n obj.set('top', obj.top - 4);\r\n }\r\n }\r\n canv.renderAll();\r\n brNew = obj.getBoundingRect();\r\n }\r\n } else {\r\n obj.top = Math.min(\r\n obj.top,\r\n obj.canvas.height -\r\n obj.getBoundingRect().height +\r\n obj.top -\r\n obj.getBoundingRect().top -\r\n 45\r\n );\r\n obj.left = Math.min(\r\n obj.left,\r\n obj.canvas.width -\r\n obj.getBoundingRect().width +\r\n obj.left -\r\n obj.getBoundingRect().left -\r\n 45\r\n );\r\n obj.setCoords();\r\n }\r\n }\r\n });\r\n return canv;\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardProps {\r\n cardClass?: string;\r\n children?: React.ReactNode;\r\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n style?: React.CSSProperties;\r\n key?:string\r\n \r\n}\r\n\r\nexport const Card = ({ cardClass,children, onClick,style,key }: CardProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`card bg-base-100 relative ${cardClass}`}\r\n onClick={onClick}\r\n style={style}\r\n key={ key}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};","import React from 'react';\r\n\r\nexport interface CardBodyProps {\r\n bodyClass?: string;\r\n children?: React.ReactNode;\r\n}\r\nexport const CardBody = ({ bodyClass, children }: CardBodyProps) => {\r\n return (\r\n <>\r\n <div className={`card-body ${bodyClass}`}>{children}</div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './card.css';\r\n\r\nexport interface CardMediaProps {\r\n alt?: string;\r\n imageClass?: string;\r\n src?: string;\r\n}\r\nexport const CardMedia = ({ alt, imageClass, src }: CardMediaProps) => {\r\n return (\r\n <>\r\n <div\r\n role=\"img\"\r\n aria-label={alt}\r\n className={`cardImage ${imageClass}`}\r\n style={{ backgroundImage: `url('${src}')` }}\r\n ></div>\r\n </>\r\n );\r\n};","import React from 'react';\r\nimport { TAG_TEXT_COLOR } from '../../theme';\r\nexport interface CardTagsProps {\r\n children?: React.ReactNode;\r\n tagsClass?: string;\r\n}\r\nexport const CardTags = ({ children, tagsClass }: CardTagsProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`${tagsClass} flex capitalize rounded px-[11px] py-[5px] text-center items-center align-baseline ${TAG_TEXT_COLOR} font-normal`}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nexport interface CardTitleProps {\r\n name?: string;\r\n titleClass?: string;\r\n}\r\nexport const CardTitle = ({ name, titleClass }: CardTitleProps) => {\r\n return (\r\n <>\r\n <p className={`card-title ${titleClass}`}>{name}</p>\r\n </>\r\n );\r\n};\r\n","import React, { useRef, useState } from 'react';\r\nimport { MdOutlineFileUpload } from 'react-icons/md';\r\nimport { IconButton } from '../icon';\r\ninterface FileUploadButtonProps {\r\n onFileSelect: (file: File) => void;\r\n}\r\n\r\nconst FileUploadButton: React.FC<FileUploadButtonProps> = ({\r\n onFileSelect,\r\n}) => {\r\n const fileInputRef = useRef<HTMLInputElement>(null);\r\n const [isDragging, setIsDragging] = useState(false);\r\n\r\n const handleFileSelect = (event: React.ChangeEvent<HTMLInputElement>) => {\r\n const selectedFile = event.target.files?.[0];\r\n\r\n if (selectedFile) {\r\n onFileSelect(selectedFile);\r\n }\r\n fileInputRef.current.value = null;\r\n };\r\n\r\n const handleDragEnter = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(true);\r\n };\r\n\r\n const handleDragLeave = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(false);\r\n };\r\n\r\n const handleDrop = (event: React.DragEvent<HTMLDivElement>) => {\r\n event.preventDefault();\r\n setIsDragging(false);\r\n\r\n const droppedFile = event.dataTransfer.files[0];\r\n if (droppedFile) {\r\n onFileSelect(droppedFile);\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n className={`flex items-center justify-center w-full relative h-full ${\r\n isDragging ? 'dragging' : ''\r\n }`}\r\n onDragEnter={handleDragEnter}\r\n onDragLeave={handleDragLeave}\r\n onDragOver={(event) => event.preventDefault()}\r\n onDrop={handleDrop}\r\n >\r\n <label\r\n htmlFor=\"file-upload\"\r\n // className=\"w-[40vw] h-[40vh] flex flex-col items-center justify-center gap-y-[12px] text-center absolute -translate-x-2/4 md:-translate-y-2/4 -translate-y-[30%] left-2/4 2xl:top-2/4 top-[42%] p-[50px] border-2 border-gray-300 border-dashed rounded-lg cursor-pointer bg-gray-50 dark:hover:bg-bray-800 dark:bg-gray-700 hover:bg-gray-100 dark:border-gray-600 dark:hover:border-gray-500 dark:hover:bg-gray-600\"\r\n className=\"w-[40vw] h-[40vh] flex flex-col items-center justify-center gap-y-[12px] text-center absolute -translate-x-2/4 md:-translate-y-2/4 -translate-y-[30%] left-2/4 2xl:top-2/4 top-[42%] p-[50px] border-2 border-gray-300 border-dashed rounded-lg cursor-pointer bg-gray-50\"\r\n >\r\n <div className=\" text-center flex flex-col gap-[8px]\">\r\n <IconButton\r\n label=\"\"\r\n icon={<MdOutlineFileUpload />}\r\n className={\r\n 'pointer-events-auto cursor-pointer m-auto text-[#E11A38] bg-[#FCE8EB] p-[16px] h-[unset] !rounded-full'\r\n }\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n <div className=\"text-[#5D5D5D] text-base font-bold\">\r\n Drag Files To Upload\r\n </div>\r\n <div className=\"text-[#5D5D5D] text-base font-bold\">Or</div>\r\n </div>\r\n <div>\r\n {' '}\r\n <button\r\n onClick={() => fileInputRef.current?.click()}\r\n className=\"text-center py-[11.2px] border border-[#E11A38] text-[#E11A38] font-bold px-[20px] rounded-none hover:bg-[#E11A38] hover:text-white transition-all ease-in-out duration-300 cursor-pointer max-w-[220px]\"\r\n >\r\n BROWSE FILE\r\n </button>\r\n </div>\r\n\r\n <div className=\" text-center text-[#727272] text-sm\">\r\n <p>Max file size: 25M</p>\r\n {/* <p>Supported files types: JPG, JPEG, PNG, GIF, EPS, PDF, SVG, AI</p> */}\r\n <p>Supported files types: JPG, JPEG, PNG, PDF, SVG, AI</p>\r\n </div>\r\n <input\r\n id=\"file-upload\"\r\n ref={fileInputRef}\r\n type=\"file\"\r\n onChange={handleFileSelect}\r\n className=\"hidden\"\r\n accept=\"image/png, image/jpeg , image/gif , image/svg+xml , .eps , .ai , .pdf\"\r\n />\r\n </label>\r\n </div>{' '}\r\n </>\r\n );\r\n};\r\n\r\nexport default FileUploadButton;\r\n","export const defaultColorNames = [\r\n { color: '#040404', name: 'Black' },\r\n { color: '#0B162E', name: 'Navy' },\r\n { color: '#511318', name: 'Maroon' },\r\n { color: '#12242C', name: 'Graphite' },\r\n { color: '#362519', name: 'Mud' },\r\n { color: '#332322', name: 'Dark Walnut' },\r\n { color: '#581C28', name: 'Burgundy' },\r\n { color: '#482925', name: 'Walnut' },\r\n { color: '#5E1B56', name: 'Grape' },\r\n { color: '#48236E', name: 'Purple' },\r\n { color: '#004125', name: 'Dark Pine' },\r\n { color: '#532D23', name: 'Brown' },\r\n { color: '#163959', name: 'Denim' },\r\n { color: '#063E44', name: 'Forest Teal' },\r\n { color: '#7D1523', name: 'Cardinal' },\r\n { color: '#39392A', name: 'Sage' },\r\n { color: '#005028', name: 'Dark Green' },\r\n { color: '#3D471F', name: 'Olive' },\r\n { color: '#454126', name: 'Army Olive' },\r\n { color: '#8E2056', name: 'Violet' },\r\n { color: '#0B5935', name: 'Kelly' },\r\n { color: '#3B4548', name: 'Asphalt' },\r\n { color: '#67451F', name: 'Buck Mesh' },\r\n { color: '#364D44', name: 'Spruce' },\r\n { color: '#5F452F', name: 'Bark' },\r\n { color: '#94321D', name: 'Texas Orange' },\r\n { color: '#59501C', name: 'Army Gold' },\r\n { color: '#00643B', name: 'Irish Green' },\r\n { color: '#824323', name: 'Buck' },\r\n { color: '#624B36', name: 'Medium Brown' },\r\n { color: '#B82026', name: 'Red' },\r\n { color: '#8C4522', name: 'Copper' },\r\n { color: '#4856A6', name: 'Lilac' },\r\n { color: '#0D5EA0', name: 'Royal' },\r\n { color: '#005F9C', name: 'Air Force Blue' },\r\n { color: '#3F7336', name: 'Lime Green' },\r\n { color: '#DD2825', name: 'Red-Orange' },\r\n { color: '#DE1761', name: 'Fuchsia' },\r\n { color: '#007189', name: 'Surf Blue' },\r\n { color: '#5F6162', name: 'Charcoal' },\r\n { color: '#057F88', name: 'Blue Teal' },\r\n { color: '#747C32', name: 'Moss' },\r\n { color: '#E45224', name: 'Orange' },\r\n { color: '#F04D30', name: 'Blaze Orange' },\r\n { color: '#0080C1', name: 'Bright Blue' },\r\n { color: '#C16A27', name: 'Toast' },\r\n { color: '#E64677', name: 'Neon Pink' },\r\n { color: '#766A5B', name: 'Driftwood' },\r\n { color: '#667360', name: 'Mute Green' },\r\n { color: '#AB6B6C', name: 'Dark Rose' },\r\n { color: '#2481B3', name: 'Baltic Blue' },\r\n { color: '#00A34A', name: 'Emerald' },\r\n { color: '#E86432', name: 'Salmon' },\r\n { color: '#F26920', name: 'Neon Orange' },\r\n { color: '#857262', name: 'Desert Brown' },\r\n { color: '#93715B', name: 'Light Brown' },\r\n { color: '#A276B3', name: 'Lavender' },\r\n { color: '#00A84E', name: 'Emerald Maderia' },\r\n { color: '#F3751F', name: 'Gold Orange' },\r\n { color: '#05A17E', name: 'Mint' },\r\n { color: '#1B91D0', name: 'Sky Blue' },\r\n { color: '#53878B', name: 'Bahama Blue' },\r\n { color: '#00A192', name: 'Green Teal' },\r\n { color: '#6C7A89', name: 'Steel Grey' },\r\n { color: '#0A96BD', name: 'Cyan' },\r\n { color: '#CE8A2D', name: 'Mustard' },\r\n { color: '#F5831E', name: 'Tenn. Orange' },\r\n { color: '#81A046', name: 'D Sport Green' },\r\n { color: '#ED9717', name: 'Dark Gold' },\r\n { color: '#867E72', name: 'Putty' },\r\n { color: '#F27D66', name: 'Southern Peach' },\r\n { color: '#F37F95', name: 'Optic Pink' },\r\n { color: '#BEA82F', name: 'Green Gold' },\r\n { color: '#F283B4', name: 'Pink' },\r\n { color: '#89906D', name: 'Light Olive' },\r\n { color: '#85C44B', name: 'Neon Green' },\r\n { color: '#72C164', name: 'Key Lime' },\r\n { color: '#F4B716', name: 'Dark Cal Gold' },\r\n { color: '#B790C2', name: 'Pale Lilac' },\r\n { color: '#C6FF19', name: 'Optic Green' },\r\n { color: '#FCC614', name: 'Yellow' },\r\n { color: '#16B1D1', name: 'Aqua' },\r\n { color: '#CB9E59', name: 'Old Gold' },\r\n { color: '#FDED00', name: 'Lemon' },\r\n { color: '#FFC937', name: 'Gold' },\r\n { color: '#F8ED4D', name: 'Neon Yellow' },\r\n { color: '#F5A2C6', name: 'Cotton Candy' },\r\n { color: '#EEBD5B', name: 'Metallic Gold' },\r\n { color: '#FCAE77', name: 'Light Peach' },\r\n { color: '#C09B7B', name: 'Taupe' },\r\n { color: '#FBB66E', name: 'Honey' },\r\n { color: '#F6D75E', name: 'Lt. Cal Gold' },\r\n { color: '#DEB66A', name: 'Brass' },\r\n { color: '#CE9F9F', name: 'Light Rose' },\r\n { color: '#6AC4CC', name: 'Southern Mint' },\r\n { color: '#F4AC96', name: 'Peach' },\r\n { color: '#84B5B2', name: 'Smoke Blue' },\r\n { color: '#9BA997', name: 'Spring Green' },\r\n { color: '#BFA881', name: 'Beige' },\r\n { color: '#7BBEE8', name: 'Columbia Blue' },\r\n { color: '#EFC78D', name: 'Tan' },\r\n { color: '#8BD6D4', name: 'Aruba Blue' },\r\n { color: '#BDA998', name: 'Camo Stone' },\r\n { color: '#AECBAC', name: 'Willow' },\r\n { color: '#AADAC9', name: 'Light Mint' },\r\n { color: '#CDE4B4', name: 'Patina Green' },\r\n { color: '#F5DDA2', name: 'Vegas Gold' },\r\n { color: '#FFF9B7', name: 'Mellow Yellow' },\r\n { color: '#C2C2B8', name: 'Dark Stone' },\r\n { color: '#BDBDC0', name: 'Silver' },\r\n { color: '#E9D7B7', name: 'Khaki' },\r\n { color: '#C6C8C8', name: 'Heather Grey' },\r\n { color: '#D6D1C3', name: 'Stone' },\r\n { color: '#CFCDCD', name: 'Metallic Silver' },\r\n { color: '#E9E7D9', name: 'Eggshell' },\r\n { color: '#D7DEE2', name: 'Light Silver' },\r\n { color: '#EAE3DC', name: 'Metallic Champagne' },\r\n { color: '#FAF7ED', name: 'Cream' },\r\n { color: '#FFFFFF', name: 'White' },\r\n { color: 'transparent', name: 'Transparent' },\r\n];","import React, { useState } from 'react';\r\nimport { TEXT_SIZE_9 } from '../../theme';\r\nimport './colorPalette.css';\r\nimport { defaultColorNames } from '../../assets/colors/colors';\r\nimport { ToolTip } from '../toolTip';\r\n\r\nexport interface ColorPaletteProps {\r\n previousColor?: string[];\r\n previousClass?: string;\r\n mainIndex?: any;\r\n handleColorChange?: any;\r\n mainClass?: string;\r\n index?: any;\r\n boxWidth?: number;\r\n gap?: number;\r\n style?: any;\r\n}\r\n\r\nexport const ColorPalette = ({\r\n previousColor,\r\n previousClass = '',\r\n mainIndex = '',\r\n handleColorChange,\r\n style = {},\r\n}: // mainClass = '',\r\nColorPaletteProps) => {\r\n const [selectColor, setSelectColor] = useState(null);\r\n const colorList = defaultColorNames;\r\n const handleColorClick = (color, index) => {\r\n setSelectColor(color);\r\n handleColorChange(color, index);\r\n };\r\n\r\n return (\r\n <>\r\n <div\r\n id=\"colorPalette\"\r\n className={`colorPalette right-[10.6rem] z-10 max-h-[16.4375rem] border border-[#FCE8EB] before:bg-[#ffffff] shadow-[0px_3px_6px_rgba(0,0,0,0.16)] py-[1.8125rem] px-[1.4063rem] bg-[#fff] mt-[1.875rem] mr-[1rem] absolute h-[300px]`}\r\n style={style}\r\n >\r\n {colorList?.length > 0 && (\r\n <>\r\n <p\r\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem] text-left`}\r\n >\r\n Choose color\r\n </p>\r\n <div\r\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] pb-[2.0938rem] max-h-[10.9rem] overflow-y-auto`}\r\n >\r\n {colorList?.map((color, index) => (\r\n <div\r\n className=\"aspect-square border border-solid border-[#D6D6D6] cursor-pointer relative btn !p-0 !w-[1.875rem] !h-[1.875rem] min-h-[unset] rounded-none\"\r\n key={index + color.name}\r\n >\r\n <ToolTip label={color.name}>\r\n <ColorBox\r\n color={color.color}\r\n index={index}\r\n onClick={() => handleColorClick(color.color, mainIndex)}\r\n boxClass={`w-[1.875rem] h-[1.875rem] ${\r\n selectColor === color.color ? 'border border-[red]' : ''\r\n }`}\r\n />\r\n </ToolTip>\r\n </div>\r\n ))}\r\n </div>\r\n </>\r\n )}\r\n {previousColor?.length > 0 && (\r\n <>\r\n <div\r\n className={`flex flex-row gap-x-[0.875rem] pt-[1.3438rem] border-t border-t-[#EBEBEB]`}\r\n >\r\n <p\r\n className={`${TEXT_SIZE_9} leading-[1.125rem] font-bold pb-[1.125rem]`}\r\n >\r\n Previously used\r\n </p>\r\n <div\r\n className={`flex flex-wrap gap-x-[0.8125rem] gap-y-[0.3125rem] border-b border-b-[#EBEBEB] ${previousClass}`}\r\n >\r\n {previousColor?.map((color, index) => (\r\n <ColorBox\r\n color={color}\r\n index={'previous' + index}\r\n onClick={() =>\r\n handleColorClick(color, mainIndex + 'Choose' + index)\r\n }\r\n boxClass={`w-[1.875rem] h-[1.875rem] ${\r\n selectColor === color ? 'border border-[red]' : ''\r\n }`}\r\n />\r\n ))}\r\n </div>\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport interface BoxColorProps {\r\n color?: string;\r\n index?: any;\r\n boxClass?: string;\r\n onClick?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n onChange?: (e: React.MouseEvent<HTMLDivElement, MouseEvent>) => void;\r\n children?: React.ReactNode;\r\n}\r\n\r\nexport const ColorBox = ({\r\n color,\r\n index,\r\n boxClass = '',\r\n onClick,\r\n onChange,\r\n children,\r\n}: BoxColorProps) => {\r\n return (\r\n <div\r\n key={index}\r\n style={{ backgroundColor: color }}\r\n className={`w-10 h-10 border border-[#D6D6D6] ${boxClass}`}\r\n onClick={onClick}\r\n onChange={onChange}\r\n >\r\n {children}\r\n {color === 'transparent' && (\r\n <div\r\n style={{\r\n width: '2px',\r\n height: '39px',\r\n background: '#FF0000',\r\n transform: 'rotate(-45deg)',\r\n marginLeft: '13px',\r\n marginTop: '-6px',\r\n }}\r\n >\r\n &nbsp;\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { defaultColorNames } from '../../assets/colors/colors';\r\nimport { ToolTip } from '../toolTip';\r\n\r\nexport const ColorImpl = (props) => {\r\n const getLable = (colorCode) => {\r\n const color = defaultColorNames.find((c) => colorCode === c.color);\r\n if (color && color.name) {\r\n return color.name;\r\n } else {\r\n return colorCode;\r\n }\r\n };\r\n\r\n return (\r\n <ToolTip label={getLable(props.color)}>\r\n <div className={props.mClass}>\r\n <div\r\n className={`border border-gray-600 w-[30px] h-[30px] group`}\r\n style={{\r\n background: props.color === 'transparent' ? '#FFFFFF' : props.color,\r\n }}\r\n onClick={(event: any) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n\r\n props.setDisplayPallet({\r\n visible: true,\r\n property: props.property,\r\n color: '',\r\n callback: props.callback,\r\n });\r\n props.setPosition({\r\n x: event.clientX,\r\n y:\r\n window.innerHeight < event.clientY + 280\r\n ? event.clientY - 300\r\n : event.clientY,\r\n });\r\n }}\r\n >\r\n {props.color === 'transparent' && (\r\n <div\r\n style={{\r\n width: '2px',\r\n height: '39px',\r\n background: '#FF0000',\r\n transform: 'rotate(-45deg)',\r\n marginLeft: '13px',\r\n marginTop: '-6px',\r\n }}\r\n >\r\n &nbsp;\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </ToolTip>\r\n );\r\n};\r\n","import React, { useEffect, useState, useRef, useMemo } from 'react';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\nimport { ColorImpl, ColorPalette } from '../colorPallet';\r\nimport { Initpopup } from '../../store/fabric/Popupcanvas';\r\nimport { CgArrowRight } from 'react-icons/cg';\r\nimport { EyeDropper, IconButton } from '../icon';\r\nimport { GiDrop } from 'react-icons/gi';\r\nimport { MdOutlineCancel } from 'react-icons/md';\r\nimport { ToolTip } from '../toolTip';\r\nimport { defaultColorNames } from '../../assets/colors/colors';\r\n// import { Button } from 'reakit';\r\nexport const PopUpCanvas = () => {\r\n const [\r\n popupCanvas,\r\n canvas,\r\n colorFill,\r\n changeSVGColor,\r\n popUpCanvasUndo,\r\n refreshColor,\r\n defaultColorFill,\r\n setDefaultColorFill,\r\n defaultColorFillCopy,\r\n setDefaultColorFillCopy,\r\n setHasUploadScreen,\r\n // popUpCanvasRedo,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.popupCanv,\r\n state.fabricCanvas,\r\n state.colorFill,\r\n state.changeSVGColor,\r\n state.popUpCanvasUndo,\r\n state.refreshColor,\r\n state.defaultColorFill,\r\n state.setDefaultColorFill,\r\n state.defaultColorFillCopy,\r\n state.setDefaultColorFillCopy,\r\n state.setHasUploadScreen,\r\n //state.popUpCanvasRedo,\r\n ],\r\n shallow\r\n );\r\n const [colorCount, setColorCount] = useState(8);\r\n const [colorFillCount, setColorFillCount] = useState(-1);\r\n // const [defaultColorFill, setDefaultColorFill] = useState([]);\r\n const [isRefresh, setIsRefresh] = useState(false);\r\n const [isNextClicked, setIsNextClicked] = useState(false);\r\n const defaultColorFillRef = useRef([]);\r\n\r\n const [displayPallet, setDisplayPallet] = useState({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n const [position, setPosition] = useState(null);\r\n\r\n useEffect(() => {\r\n if (!displayPallet || !displayPallet.visible) {\r\n setDefaultColorFill(\r\n defaultColorFill.map((cf: any) => ({ ...cf, hasPallet: false }))\r\n );\r\n }\r\n }, [displayPallet]);\r\n\r\n useEffect(() => {\r\n defaultColorFillRef.current = defaultColorFill;\r\n }, [defaultColorFill]);\r\n\r\n useEffect(() => {\r\n if (colorFill && Object.keys(colorFill).length) {\r\n if (colorFillCount === -1) {\r\n setColorFillCount(Object.keys(colorFill).length);\r\n const defaultCF = [];\r\n Object.keys(colorFill).map((cf: any) => {\r\n defaultCF.push({\r\n property: cf,\r\n default: colorFill[cf],\r\n updated: colorFill[cf],\r\n });\r\n });\r\n setDefaultColorFill(defaultCF);\r\n }\r\n\r\n if (isRefresh) {\r\n setIsRefresh(false);\r\n setTimeout(() => {\r\n Object.keys(colorFill).map((cf: any) => {\r\n const dcf = defaultColorFill.find(\r\n (dcf: any) => dcf.property === cf\r\n );\r\n if (dcf && dcf.default !== dcf.updated) {\r\n changeSVGColor(dcf.property, dcf.updated);\r\n }\r\n });\r\n }, 100);\r\n }\r\n }\r\n // setColorFillCount(-1);\r\n }, [colorFill]);\r\n\r\n useEffect(() => {\r\n if (colorFillCount && colorFillCount > 0) {\r\n setColorCount(colorFillCount);\r\n } else {\r\n setColorCount(8);\r\n }\r\n }, [colorFillCount]);\r\n\r\n const onColorUpdate = (property: any, color: any) => {\r\n // const foundIndex = defaultColorFill.findIndex(\r\n // (cf: any) => cf.property === property\r\n // );\r\n // if (foundIndex >= 0) {\r\n // defaultColorFill[foundIndex].updated = color;\r\n // }\r\n\r\n if (changeSVGColor(property, color)) {\r\n setDefaultColorFill(\r\n defaultColorFill.map((c: any) =>\r\n // c.property === property ? { ...c, updated: color } : c\r\n colorFill[property] === c.updated ? { ...c, updated: color } : c\r\n )\r\n );\r\n setDefaultColorFillCopy(\r\n defaultColorFillCopy.map((c: any) =>\r\n // c.property === property ? { ...c, updated: color } : c\r\n colorFill[property] === c.updated ? { ...c, updated: color } : c\r\n )\r\n );\r\n }\r\n };\r\n\r\n // const colors = [\r\n // 'red',\r\n // 'green',\r\n // 'blue',\r\n // 'yellow',\r\n // 'purple',\r\n // 'indigo',\r\n // 'orange',\r\n // 'light green',\r\n // ];\r\n // const selectedColors = colors.slice(0, colorCount);\r\n const handleColorCountChange = (e) => {\r\n setColorCount(Number(e.target.value));\r\n // use3dddPlus.setState({ colorCount: Number(e.target.value) });\r\n refreshColor(Number(e.target.value));\r\n setIsRefresh(true);\r\n };\r\n const resizeCanvas = () => {\r\n if (document.getElementById('imageCanvas')) {\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n const outerCanvasContainer = document.getElementById('imageCanvas');\r\n console.log(outerCanvasContainer);\r\n const containerWidth = outerCanvasContainer.clientWidth;\r\n const scale = containerWidth / canvas.getWidth();\r\n const zoom = canvas.getZoom() * scale;\r\n canvas.setWidth(containerWidth);\r\n //@ts-ignore\r\n canvas.setHeight(parseInt(outerCanvasContainer.clientHeight));\r\n canvas.setViewportTransform([zoom, 0, 0, zoom, 0, 0]);\r\n canvas.renderAll();\r\n }\r\n };\r\n\r\n const removeColorPalatte = () => {\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n fabric.Object.prototype.hasControls = false;\r\n fabric.Object.prototype.hasBorders = false;\r\n setDefaultColorFill([]);\r\n setColorFillCount(-1);\r\n setHasUploadScreen(true);\r\n const popupCanv = Initpopup();\r\n use3dddPlus.setState({ popupCanv: popupCanv });\r\n resizeCanvas();\r\n window.addEventListener('resize', resizeCanvas);\r\n window.addEventListener('click', removeColorPalatte);\r\n //FOR REMOVING COLOR\r\n\r\n popupCanv.on('mouse:down', function (event) {\r\n popupCanv.discardActiveObject();\r\n var mouseClick = popupCanv.getPointer(event.e);\r\n // console.log('MOUSE-CLICK-->',mouseClick);\r\n // Iterate through objects on the canvas and check if any intersect with the mouse click\r\n\r\n let removedColors = [];\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n let color;\r\n popupCanv.forEachObject(function (obj) {\r\n if (obj.type === 'path') {\r\n //@ts-ignore\r\n if (obj.containsPoint(mouseClick) && !color) {\r\n removedColors.push(obj.fill);\r\n popupCanv.remove(obj);\r\n popupCanv.renderAll();\r\n color = obj.fill;\r\n }\r\n }\r\n });\r\n\r\n let defaultColorsCopy = defaultColorFillRef.current;\r\n removedColors.map((rc: any) => {\r\n if (\r\n popupCanv.getObjects().filter((obj: any) => obj.fill === rc).length <\r\n 1\r\n ) {\r\n defaultColorsCopy = defaultColorsCopy.filter(\r\n (dc: any) => dc.updated !== RGBToHex(rc)\r\n );\r\n }\r\n });\r\n setDefaultColorFill(defaultColorsCopy);\r\n\r\n /*\r\n let availableColors = [];\r\n defaultColorFillRef.current.map((dcf: any) => {\r\n let objColorCount = 0;\r\n popupCanv.forEachObject(function (obj) {\r\n if (RGBToHex(obj.fill) === dcf.updated) {\r\n objColorCount += 1;\r\n }\r\n });\r\n if (objColorCount > 0) {\r\n availableColors.push(dcf);\r\n }\r\n });\r\n setDefaultColorFill(availableColors);\r\n */\r\n });\r\n return () => {\r\n setHasUploadScreen(false);\r\n window.removeEventListener('click', removeColorPalatte);\r\n };\r\n }, []);\r\n\r\n const popupCanvasCancel = () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n setDefaultColorFill([]);\r\n use3dddPlus.setState({ uploadImageModalDisplay: false });\r\n popupCanvas.remove(...popupCanvas.getObjects());\r\n use3dddPlus.setState({ colorFill: {} });\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.setState({ popUpCanvasCount: 1 });\r\n };\r\n\r\n const popupCanvasContinue = () => {\r\n if (!conflictColors || conflictColors.length < 1) {\r\n setIsNextClicked(false);\r\n onContinue();\r\n } else {\r\n setIsNextClicked(true);\r\n }\r\n };\r\n\r\n const onContinue = () => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n //@ts-ignore\r\n use3dddPlus.setState({ uploadImageModalDisplay: false });\r\n use3dddPlus.setState({ selectedStepper: undefined });\r\n popupCanvas.getObjects().forEach((obj) => {\r\n if (obj.type === 'line') {\r\n popupCanvas.remove(obj);\r\n }\r\n });\r\n const sel = new fabric.ActiveSelection(popupCanvas.getObjects(), {\r\n //@ts-ignore\r\n popupCanvas: popupCanvas,\r\n });\r\n popupCanvas.setActiveObject(sel);\r\n // {\r\n // _objects: sel._objects.filter((obj) => obj.type !== 'line'),\r\n // }\r\n // popupCanvas.remove(...popupCanvas.getObjects());\r\n\r\n popupCanvas.requestRenderAll();\r\n let clipboard;\r\n popupCanvas.getActiveObject().clone(function (cloned) {\r\n clipboard = cloned;\r\n // });\r\n\r\n // if (clipboard.type === 'activeSelection') {\r\n // clipboard.canvas = canvas;\r\n // const objs = [];\r\n // clipboard.forEachObject(function (obj) {\r\n // objs.push(obj);\r\n // });\r\n // const alltogetherObj = new fabric.Group(objs, {});\r\n // canvas.centerObject(alltogetherObj);\r\n // canvas.add(alltogetherObj);\r\n // canvas.setActiveObject(alltogetherObj);\r\n // alltogetherObj.setCoords();\r\n // use3dddPlus.getState().forStoringAllObject(alltogetherObj); //for pushing the data into array for layers\r\n // } else {\r\n // canvas.add(clipboard);\r\n // }\r\n // canvas.requestRenderAll();\r\n // popupCanvas.clear();\r\n if (clipboard && clipboard.type === 'activeSelection') {\r\n clipboard.canvas = canvas;\r\n const objs = [];\r\n clipboard.forEachObject(function (obj) {\r\n objs.push(obj);\r\n });\r\n\r\n const alltogetherObj = new fabric.Group(objs, {});\r\n canvas.centerObject(alltogetherObj);\r\n canvas.add(alltogetherObj);\r\n canvas.setActiveObject(alltogetherObj);\r\n alltogetherObj.set({\r\n //@ts-ignore\r\n colorFill: use3dddPlus.getState().colorFill,\r\n });\r\n alltogetherObj.setCoords();\r\n use3dddPlus.getState().forStoringAllObject(alltogetherObj); //for pushing the data into array for layers\r\n use3dddPlus.getState().forIconCapture();\r\n //@ts-ignore\r\n alltogetherObj.icon = use3dddPlus.getState().iconImage;\r\n } else {\r\n canvas.add(clipboard);\r\n }\r\n canvas.requestRenderAll();\r\n popupCanvas.clear();\r\n use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n use3dddPlus.getState().updateModifaction(true);\r\n });\r\n };\r\n\r\n const RGBToHex = (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n };\r\n\r\n /*\r\n const resetHandler = () => {\r\n console.log(use3dddPlus.getState().forPopupCanvasReset);\r\n popupCanvas.clear();\r\n popupCanvas.loadFromJSON(\r\n use3dddPlus.getState().forPopupCanvasReset,\r\n function () {\r\n use3dddPlus.setState({\r\n colorFill: { ...use3dddPlus.getState().forPopupCanvasColor },\r\n });\r\n popupCanvas.renderAll();\r\n }\r\n );\r\n };*/\r\n\r\n const resetHandler = () => {\r\n use3dddPlus.getState().popUpCanvasUpdateModification(true);\r\n // refreshColor(colorCount);\r\n // use3dddPlus.getState().popupCanv.clear();\r\n\r\n const colors = use3dddPlus.getState().popupCanvasStoreHistory[0].colorFill;\r\n use3dddPlus\r\n .getState()\r\n .popupCanv.loadFromJSON(\r\n use3dddPlus.getState().popupCanvasStoreHistory[0].json\r\n );\r\n // use3dddPlus.getState().popupCanv.setBackgroundColor(\r\n // {\r\n // source:\r\n // 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/checkerBoxBG.png',\r\n // repeat: 'repeat',\r\n // },\r\n // use3dddPlus\r\n // .getState()\r\n // .popupCanv.renderAll.bind(use3dddPlus.getState().popupCanv),\r\n // {\r\n // backgroundImageOpacity: 1,\r\n // scaleX: 1.1,\r\n // scaleY: 1.1,\r\n // backgroundRepeat: 'repeat',\r\n // }\r\n // );\r\n\r\n popupCanvas.getObjects().forEach((obj) => {\r\n if (obj.type === 'line') {\r\n popupCanvas.remove(obj);\r\n }\r\n });\r\n\r\n const canvas = use3dddPlus.getState().popupCanv;\r\n var gridSize = 15; // Size of each grid cell\r\n var canvasWidth = canvas.width;\r\n var canvasHeight = canvas.height;\r\n var numCols = Math.ceil(canvasWidth / gridSize);\r\n var numRows = Math.ceil(canvasHeight / gridSize);\r\n\r\n // Function to create a rectangle with checkerboard pattern\r\n function createCheckerboardRect(left, top, width, height, isEvenRow) {\r\n var rect = new fabric.Rect({\r\n left: left,\r\n top: top,\r\n width: width,\r\n height: height,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n // backgroundColor:'#ccc',\r\n fill:\r\n (isEvenRow && (left / gridSize) % 2 === 0) ||\r\n (!isEvenRow && (left / gridSize) % 2 !== 0)\r\n ? '#ffffff'\r\n : '#dadadac7',\r\n });\r\n return rect;\r\n }\r\n\r\n // Create grid lines\r\n for (var i = 0; i < numCols; i++) {\r\n var x = i * gridSize;\r\n const line = new fabric.Line([x, 0, x, canvasHeight], {\r\n stroke: '#dadadac7',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n for (var j = 0; j < numRows; j++) {\r\n var y = j * gridSize;\r\n const line = new fabric.Line([0, y, canvasWidth, y], {\r\n stroke: '#FFFFFF',\r\n selectable: false,\r\n type: 'line',\r\n lockMovementX: true,\r\n lockMovementY: true,\r\n lockScalingX: true,\r\n lockScalingY: true,\r\n });\r\n canvas.add(line);\r\n canvas.sendToBack(line);\r\n }\r\n\r\n // Fill grid with checkerboard pattern\r\n for (var i = 0; i < numCols; i++) {\r\n for (var j = 0; j < numRows; j++) {\r\n var left = i * gridSize;\r\n var top = j * gridSize;\r\n var isEvenRow = j % 2 === 0;\r\n var rect = createCheckerboardRect(\r\n left,\r\n top,\r\n gridSize,\r\n gridSize,\r\n isEvenRow\r\n );\r\n canvas.add(rect);\r\n canvas.sendToBack(rect);\r\n }\r\n }\r\n\r\n use3dddPlus.setState({ colorFill: colors });\r\n setDefaultColorFill(\r\n defaultColorFill.map((dcf: any) => ({ ...dcf, updated: dcf.default }))\r\n );\r\n // use3dddPlus.setState({ popupCanvasStoreHistory: [] });\r\n };\r\n\r\n const onSelectColor = (item: any, event: any) => {\r\n setDefaultColorFill(\r\n defaultColorFill.map((cf: any) =>\r\n cf.property === item.property\r\n ? {\r\n ...cf,\r\n hasPallet: true,\r\n position: { x: event.clientX, y: event.clientY },\r\n }\r\n : { ...cf, hasPallet: false }\r\n )\r\n );\r\n setDisplayPallet({\r\n visible: true,\r\n property: item.property,\r\n color: item.updated,\r\n callback: onColorUpdate,\r\n });\r\n setPosition({\r\n x: event.clientX,\r\n y:\r\n window.innerHeight < event.clientY + 280\r\n ? event.clientY - 300\r\n : event.clientY,\r\n });\r\n };\r\n\r\n // const onClosePalette = () => {\r\n // setDefaultColorFill(\r\n // defaultColorFill.map((c: any) => ({ ...c, hasPallet: false }))\r\n // );\r\n // };\r\n\r\n const onPopUpCanvasUndo = () => {\r\n const colors = popUpCanvasUndo();\r\n if (colors !== null) {\r\n let currentColors = defaultColorFill.map((c: any) =>\r\n colors[c.property] && colors[c.property].length > 0\r\n ? { ...c, updated: colors[c.property] }\r\n : c\r\n );\r\n\r\n // Object.keys(colors).forEach((c: any) => {\r\n // if (\r\n // defaultColorFill.filter((dc: any) => dc.updated === colors[c])\r\n // .length < 1\r\n // ) {\r\n // currentColors.push({\r\n // property: c,\r\n // default: colors[c],\r\n // updated: colors[c],\r\n // });\r\n // }\r\n // });\r\n\r\n Object.keys(colors).forEach((c: any) => {\r\n if (\r\n defaultColorFill.filter((dc: any) => dc.updated === colors[c])\r\n .length < 1\r\n ) {\r\n const colorFromDefaultCopy = defaultColorFillCopy.find(\r\n (dcc) => dcc.updated === colors[c]\r\n );\r\n if (colorFromDefaultCopy && colorFromDefaultCopy.updated) {\r\n currentColors.push(colorFromDefaultCopy);\r\n }\r\n }\r\n });\r\n setDefaultColorFill(currentColors);\r\n }\r\n };\r\n\r\n const conflictColors = useMemo(() => {\r\n return defaultColorFill.filter(\r\n (c: any) =>\r\n defaultColorNames.findIndex(\r\n (dc) => dc.color.toLowerCase() === c.updated.toLowerCase()\r\n ) < 0\r\n );\r\n }, [defaultColorFill]);\r\n\r\n return (\r\n <>\r\n {/* <div\r\n className=\"relative z-10\"\r\n aria-labelledby=\"modal-title\"\r\n role=\"dialog\"\r\n aria-modal=\"true\"\r\n style={uploadImageModalDisplay ? {} : { display: 'none' }}\r\n > */}\r\n <div className=\"flex z-5 overflow-y-auto h-full\">\r\n <div className=\"flex flex-1 w-full h-full\">\r\n <div className=\"relative w-full overflow-hidden bg-white h-full\">\r\n <div className=\"bg-white h-full\">\r\n <div className=\"flex flex-row h-full\">\r\n <div className=\"flex flex-row text-center w-[70%] h-full\">\r\n <div className=\" w-full h-full relative\">\r\n <div\r\n className=\"btnCont flex flex-wrap h-[40px] bg-[#F7F7F7]\"\r\n style={{\r\n padding: '10px',\r\n justifyContent: 'flex-end',\r\n width: '100%',\r\n }}\r\n >\r\n <div\r\n className=\"undoBtn cursor-pointer mr-4\"\r\n onClick={onPopUpCanvasUndo}\r\n >\r\n <div className=\"undoIcon float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 16 16\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n className=\"cls-1\"\r\n d=\"M6,3.6V0L0,6l6,6V8c6-.27,7.53,3.76,7.88,5.77a.27.27,0,0,0,.53,0C17.08,2.86,6,3.6,6,3.6Z\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Undo\r\n </span>\r\n </div>\r\n <div\r\n className=\"resetBtn cursor-pointer\"\r\n onClick={resetHandler}\r\n >\r\n <div className=\"resetBtn float-left\">\r\n <svg\r\n fill=\"#727272\"\r\n width=\"16px\"\r\n height=\"16px\"\r\n viewBox=\"0 0 1920 1920\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M960 0v213.333c411.627 0 746.667 334.934 746.667 746.667S1371.627 1706.667 960 1706.667 213.333 1371.733 213.333 960c0-197.013 78.4-382.507 213.334-520.747v254.08H640V106.667H53.333V320h191.04C88.64 494.08 0 720.96 0 960c0 529.28 430.613 960 960 960s960-430.72 960-960S1489.387 0 960 0\"\r\n fillRule=\"evenodd\"\r\n />\r\n </svg>\r\n </div>\r\n <span className=\"iconLabel float-left text-[#727272] ml-2 text-[13px] font-bold \">\r\n Reset\r\n </span>\r\n </div>\r\n </div>\r\n\r\n <div\r\n id=\"imageCanvas\"\r\n style={{\r\n width: '100%',\r\n height: 'calc(100% - 75px)',\r\n overflow: 'hidden',\r\n }}\r\n >\r\n <canvas className=\"pointer\" id=\"popupCanvas\"></canvas>\r\n </div>\r\n\r\n <div\r\n className=\"flex flex-wrap justify-center w-[100%] pt-[5px] pb-[5px] bg-[#F7F7F7]\"\r\n style={{\r\n alignItems: 'center',\r\n width: '100%',\r\n height: '35px',\r\n }}\r\n >\r\n <span className=\"border border-[#E11A38] p-1 bg-white mr-2 text-[#E11A38] \">\r\n <EyeDropper />\r\n </span>\r\n\r\n <span className=\"text-[#E11A38] text-[13px] font-bold \">\r\n Use the eyedropper tool do clicking on a color you wish\r\n to remove form you image\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"text-left flex-1 h-[100%] px-[25px] pt-[31px] pb-[5px] w-[30%]\">\r\n <div className=\"flex flex-col gap-y-3 h-full\">\r\n <h1 className=\"text-[22px] font-bold\">\r\n Match and Combine colors\r\n </h1>\r\n <p className=\"text-[15px]\">\r\n Select how many colors are in your image\r\n </p>\r\n <select\r\n value={colorCount}\r\n onChange={handleColorCountChange}\r\n className=\"border-[1px] border-[#D7D7D7] p-2\"\r\n >\r\n <option value={1} disabled={colorFillCount < 1}>\r\n 1 Colors\r\n </option>\r\n <option value={2} disabled={colorFillCount < 2}>\r\n 2 Colors\r\n </option>\r\n <option value={3} disabled={colorFillCount < 3}>\r\n 3 Colors\r\n </option>\r\n <option value={4} disabled={colorFillCount < 4}>\r\n 4 Colors\r\n </option>\r\n <option value={5} disabled={colorFillCount < 5}>\r\n 5 Colors\r\n </option>\r\n <option value={6} disabled={colorFillCount < 6}>\r\n 6 Colors\r\n </option>\r\n <option value={7} disabled={colorFillCount < 7}>\r\n 7 Colors\r\n </option>\r\n <option value={8} disabled={colorFillCount < 8}>\r\n 8 Colors\r\n </option>\r\n </select>\r\n {/* {Object.keys(colorFill)?.map((item) => {\r\n return (\r\n <>\r\n <ColorImpl\r\n handleChange={changeSVGColor}\r\n property={item}\r\n color={colorFill[item]}\r\n />\r\n </>\r\n );\r\n })} */}\r\n <div\r\n className={\r\n 'flex flex-col gap-y-3.5 items-center overflow-y-auto py-[5px] 2xl:h-[50vh] sm:h-[42vh] h-[42vh]'\r\n }\r\n >\r\n {defaultColorFill\r\n //@ts-ignore\r\n ?.filter((item, index) => index < colorCount)\r\n .map((item, index) => (\r\n <div\r\n className=\"flex flex-row items-center\"\r\n key={index}\r\n >\r\n <ToolTip label={item.default}>\r\n <div\r\n className=\"w-[30px] h-[30px] m-1 border-[1px] border-[#000000]\"\r\n style={{ background: item.default }}\r\n // title={item.default}\r\n ></div>\r\n </ToolTip>\r\n <div className=\"mx-[10px] text-[#c2c2c2]\">\r\n <CgArrowRight />\r\n </div>\r\n <div className=\"flex flex-row border-[1px] border-[#D6D6D6]\">\r\n <span\r\n className=\" border-r-[1px] border-[#D6D6D6] bg-[#fce8eb]\"\r\n style={{ cursor: 'pointer' }}\r\n >\r\n {item.default === item.updated ? (\r\n item.hasPallet ? (\r\n <ColorImpl\r\n className=\"w-[30px] h-[30px] m-2\"\r\n handleChange={onColorUpdate}\r\n property={item.property}\r\n color={item.updated}\r\n // onClose={onClosePalette}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={onColorUpdate}\r\n />\r\n ) : (\r\n <IconButton\r\n label=\"Select Color\"\r\n icon={<GiDrop />}\r\n onClick={(event: any) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n onSelectColor(item, event);\r\n }}\r\n className={\r\n '!rounded-none pointer-events-auto cursor-pointer flex text-[#E11A38] w-[30px] h-[30px] p-[6px]'\r\n }\r\n size=\"1.125rem\"\r\n ></IconButton>\r\n )\r\n ) : (\r\n <ColorImpl\r\n className=\"w-[30px] h-[30px] m-2\"\r\n handleChange={onColorUpdate}\r\n property={item.property}\r\n color={item.updated}\r\n // onClose={onClosePalette}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={onColorUpdate}\r\n />\r\n )}\r\n </span>\r\n\r\n <span\r\n className=\"py-[5px] pl-[10px] pr-[6px] font-medium text-[13px] bg-[#F1F1F1] cursor-pointer\"\r\n onClick={(event) => {\r\n event.stopPropagation();\r\n event.preventDefault();\r\n onSelectColor(item, event);\r\n }}\r\n >\r\n Select Color\r\n </span>\r\n </div>\r\n <span className=\"\">\r\n <IconButton\r\n label=\"Delete Color\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n onColorUpdate(item.property, 'transparent');\r\n }}\r\n className={\r\n 'pointer-events-auto cursor-pointer m-autoflex w-[30px] h-[30px] p-[9px] text-[#c2c2c2]'\r\n }\r\n size=\"1rem\"\r\n ></IconButton>\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {isNextClicked &&\r\n conflictColors &&\r\n conflictColors.length > 0 ? (\r\n <div\r\n style={{\r\n position: 'absolute',\r\n backgroundColor: '#FFFFFF',\r\n bottom: 0,\r\n padding: '7px',\r\n }}\r\n >\r\n <IconButton\r\n label=\"Close\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className={''}\r\n size=\"1.5rem\"\r\n style={{\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n fontWeight: 'bold',\r\n right: 10,\r\n top: -7,\r\n color: '#FF0000',\r\n }}\r\n ></IconButton>\r\n\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ fontWeight: 'bold', marginBottom: '3px' }}\r\n >\r\n ERROR: CONFLICT IN COLOR USED\r\n </div>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ marginBottom: '3px' }}\r\n >\r\n Note: The following colors used are not available in\r\n Richardson color palette. Please edit the colors used.\r\n </div>\r\n <div>\r\n {conflictColors.map((c: any, i: number) => {\r\n return (\r\n <div\r\n key={'color-' + i}\r\n style={{\r\n width: '100%',\r\n height: '30px',\r\n lineHeight: '30px',\r\n backgroundColor: c.updated,\r\n textAlign: 'center',\r\n marginBottom: '3px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n mixBlendMode: 'difference',\r\n }}\r\n >\r\n {c.updated}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{\r\n marginTop: '10px',\r\n marginBottom: '5px',\r\n fontWeight: 'bold',\r\n }}\r\n >\r\n Do you want to proceed?\r\n </div>\r\n\r\n <div className=\" flex flex-col content mb-[10px]\">\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n onContinue();\r\n }}\r\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\r\n >\r\n Yes\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className=\"inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\r\n style={{\r\n marginTop: '10px',\r\n }}\r\n >\r\n No\r\n </button>\r\n </div>\r\n </div>\r\n ) : (\r\n <div className=\" flex flex-col content mb-[5px]\">\r\n <button\r\n type=\"button\"\r\n onClick={popupCanvasContinue}\r\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\r\n >\r\n Continue\r\n </button>\r\n <button\r\n type=\"button\"\r\n onClick={popupCanvasCancel}\r\n className=\"mt-3 inline-flex w-full justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 sm:w-auto\"\r\n style={{\r\n marginTop: '10px',\r\n }}\r\n >\r\n Cancel\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {/* </div> */}\r\n {displayPallet && displayPallet.visible && (\r\n <ColorPalette\r\n mainClass={`left-0`}\r\n handleColorChange={(color) => {\r\n displayPallet.callback(displayPallet.property, color);\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n }}\r\n style={\r\n position\r\n ? {\r\n position: 'fixed',\r\n left: position.x - 450,\r\n top: position.y - 5,\r\n width: '450px',\r\n }\r\n : { display: 'none' }\r\n }\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\n","import { fabric } from 'fabric';\r\nimport { use3dddPlus } from '..';\r\n\r\nexport const Initpopup = () => {\r\n const onObjectSelected = () => {\r\n if (!popupcanvas.getActiveObject()) {\r\n return;\r\n }\r\n if (popupcanvas.getActiveObject().type !== 'group') {\r\n return;\r\n }\r\n //@ts-ignore\r\n popupcanvas.getActiveObject().toActiveSelection().viewportCenter();\r\n popupcanvas.requestRenderAll();\r\n };\r\n const getAllColorsPopupCanvas = () => {\r\n const popUpCanvasAllColor = [\r\n ...new Set(\r\n popupcanvas\r\n ?.getObjects()\r\n ?.map((item) => item['colorFill'] && Object.values(item['colorFill']))\r\n .flat()\r\n .filter(Boolean)\r\n ),\r\n ]; // FOR REMOVING ALL DUPLICATE COLOR\r\n use3dddPlus.setState({ popUpCanvasAllColor: popUpCanvasAllColor });\r\n };\r\n // const cursorUrl =\r\n // 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/icons/eyedropper.svg';\r\n \r\n const outerCanvasContainer = document.getElementById('imageCanvas');\r\n\r\n const popupcanvas = new fabric.Canvas('popupCanvas', {\r\n centeredScaling: true,\r\n preserveObjectStacking: true,\r\n //backgroundColor: '#F7F7F7',\r\n // defaultCursor: `url(\" ${cursorUrl} \"), auto`,\r\n // hoverCursor: `url(\" ${cursorUrl} \"), auto`,\r\n defaultCursor: 'pointer',\r\n hoverCursor: 'pointer',\r\n // width: 500,\r\n // height: 300,\r\n width: outerCanvasContainer.clientWidth,\r\n height: outerCanvasContainer.clientHeight\r\n }); \r\n popupcanvas.on('after:render',getAllColorsPopupCanvas);\r\n popupcanvas.on('selection:created', onObjectSelected);\r\n return popupcanvas;\r\n};\r\n","import React, { useState } from 'react';\r\n\r\nimport FileUploadButton from './fileuploadButton';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { PopUpCanvas } from '../canvas/popUpCanvas';\r\n\r\nexport const UploadLogo = () => {\r\n const [, setSelectedFile] = useState<File | null>(null);\r\n const [\r\n tiffConvert,\r\n imageToSVG,\r\n setFile,\r\n uploadImageModalDisplay,\r\n // pdfConverter,\r\n aiConvert,\r\n // loadImageFromURL,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.tiffConvert,\r\n state.imageToSVG,\r\n state.setFile,\r\n state.uploadImageModalDisplay,\r\n // state.pdfConverter,\r\n state.aiConvert,\r\n // state.loadImageFromURL,\r\n ],\r\n shallow\r\n );\r\n const handleFileSelect = (file: File) => {\r\n setSelectedFile(file);\r\n setFile(file);\r\n svgConverter(file);\r\n // You can perform further actions with the selected file here.\r\n };\r\n\r\n const svgConverter = async (data) => {\r\n // canvas.discardActiveObject();\r\n const ext = data.name.substring(data.name.lastIndexOf('.') + 1);\r\n use3dddPlus.setState({ uploadImageModalDisplay: true });\r\n if (ext === 'svg') {\r\n imageToSVG(data, ext, true);\r\n }\r\n // else if (ext === 'pdf') {\r\n // let pdfData = await pdfConverter(data);\r\n // imageToSVG(pdfData, ext);\r\n // }\r\n else if (ext === 'tif' || ext === 'tiff') {\r\n const tiffData = await tiffConvert(data);\r\n imageToSVG(tiffData, ext);\r\n } else if (ext === 'ai' || ext === 'pdf') {\r\n // console.log(loadImageFromURL);\r\n use3dddPlus.setState({ loading: true });\r\n let aiToSvg = await aiConvert(data);\r\n // console.log(aiToSvg)\r\n fetch(aiToSvg.s3_file_url + '?timestamp=' + Date.now())\r\n .then((response) => response.text())\r\n .then((svgText) => {\r\n imageToSVG(svgText, ext, false, false);\r\n })\r\n .catch((ex) => {\r\n console.log(ex);\r\n use3dddPlus.setState({ loading: false });\r\n });\r\n } else {\r\n let objectURL = URL.createObjectURL(data);\r\n imageToSVG(objectURL, ext);\r\n }\r\n setSelectedFile(null);\r\n };\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-[5] w-[90%] h-full \">\r\n <div className=\"relative w-full h-full\">\r\n <div className=\"flex justify-center w-full h-full text-center\">\r\n <FileUploadButton onFileSelect={handleFileSelect} />\r\n </div>\r\n <div className=\"absolute md:bottom-[20px] bottom-[10px] px-[80px]\">\r\n <p className=\" text-[#E11A38] text-base font-bold\">\r\n Privacy Notice\r\n </p>\r\n <p className=\"text-[#727272] text-sm font-medium pt-2 pb-2\">\r\n Your uploaded images are safe, secure, and remain your property.\r\n By proceeding you acknowledge that you have full legal rights and\r\n permissions to use the images you upload.We reserve the right to\r\n reject any order.\r\n </p>\r\n </div>\r\n </div>\r\n </div>\r\n {uploadImageModalDisplay && (\r\n <div className=\"bg-[#F7F7F7] absolute z-[5] w-[90%] h-full\">\r\n <PopUpCanvas />\r\n </div>\r\n )}\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport {\r\n SEARCHBAR_BORDER_COLOR,\r\n SEARCH_ICON_COLOR,\r\n TEXT_COLOR_1,\r\n TEXT_SIZE_3,\r\n} from '../../theme';\r\n\r\nexport interface SearchBarProps {\r\n onChange?: (e: React.ChangeEvent<HTMLInputElement>) => void;\r\n onKeyPress?: (e: React.KeyboardEvent<HTMLDivElement>) => void;\r\n onPaste?: (e: React.ClipboardEvent<HTMLInputElement>) => void;\r\n placeholder?: string;\r\n searchBarMainClass?: string;\r\n value?: string;\r\n disabled?: boolean;\r\n}\r\nexport const Searchbar = ({\r\n onChange,\r\n onKeyPress,\r\n onPaste,\r\n placeholder,\r\n searchBarMainClass,\r\n value,\r\n disabled,\r\n}: SearchBarProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`${searchBarMainClass} h-[40px] relative flex w-full flex-wrap items-stretch border border-solid ${SEARCHBAR_BORDER_COLOR} outline-none transition duration-200 ease-in-out focus:z-[3] focus:shadow-[inset_0_0_0_1px_rgb(212,212,212)] focus:outline-none bg-[#FFFFFF]`}\r\n >\r\n <input\r\n type=\"search\"\r\n className={`leading-[20px] relative m-0 -mr-0.5 block w-[1px] min-w-0 focus-visible:outline-0 flex-auto bg-transparent bg-clip-padding px-[15px] py-[10px] ${TEXT_SIZE_3} font-normal ${TEXT_COLOR_1} placeholder:${TEXT_SIZE_3} placeholder:${TEXT_COLOR_1} placeholder:leading-[20px] !border-0`}\r\n placeholder={placeholder}\r\n aria-label=\"Search\"\r\n aria-describedby=\"button-addon3\"\r\n value={value}\r\n onChange={onChange}\r\n onKeyPress={onKeyPress}\r\n disabled={disabled}\r\n onPaste={onPaste}\r\n onClick={(e) => {\r\n e.currentTarget.focus();\r\n }}\r\n />\r\n <span\r\n className={`flex justify-center items-center rounded-none pl-2 pr-[14px]`}\r\n >\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n className={`h-5 w-5 ${SEARCH_ICON_COLOR}`}\r\n >\r\n <path d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" />\r\n </svg>\r\n </span>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport const SortAndFilterButton = ({\r\n label,\r\n icons,\r\n onClick,\r\n className,\r\n buttonLabelClass,\r\n}) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex border border-[#EBEBEB] rounded-none gap-[31.5px] items-center p-2 shadow-[0px_7px_64px_rgba(0,0,0,0.07)] bg-[#FFFFFF] ${className}`}\r\n >\r\n <span className={`${buttonLabelClass}`}>{label}</span>\r\n <span>{icons}</span>\r\n </button>\r\n );\r\n};\r\n","import React, { useState, useEffect, useRef } from 'react';\r\nimport { SortAndFilterButton } from './sortButton';\r\nimport { BsSortDown } from 'react-icons/bs';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\n\r\nexport const SortByDropdown = ({ sortOptions }) => {\r\n const [loadingLogo, logoSortBy, logoSortDir] = use3dddPlus(\r\n (state) => [state.loadingLogo, state.logoSortBy, state.logoSortDir],\r\n shallow\r\n );\r\n const [isDropdownOpen, setIsDropdownOpen] = useState(false);\r\n const dropdownRef = useRef(null);\r\n\r\n const toggleDropdown = () => {\r\n setIsDropdownOpen(!isDropdownOpen);\r\n };\r\n\r\n const closeDropdown = () => {\r\n setIsDropdownOpen(false);\r\n };\r\n\r\n useEffect(() => {\r\n const handleOutsideClick = (event) => {\r\n if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {\r\n closeDropdown();\r\n }\r\n };\r\n\r\n if (isDropdownOpen) {\r\n document.addEventListener('click', handleOutsideClick);\r\n }\r\n\r\n return () => {\r\n document.removeEventListener('click', handleOutsideClick);\r\n };\r\n }, [isDropdownOpen]);\r\n\r\n return (\r\n <div className=\"relative\" ref={dropdownRef}>\r\n <SortAndFilterButton\r\n onClick={toggleDropdown}\r\n label=\"Sort by\"\r\n icons={<BsSortDown size={'1.2rem'} />}\r\n buttonLabelClass={`hidden md:block`}\r\n className=\"py-[10px] px-[14.5px] text-[13px] leading-[16px] text-[#5d5d5d] font-bold\"\r\n />\r\n {isDropdownOpen && (\r\n <ul className=\"mt-[14px] shadow-[0px_7px_64px_rgba(0,0,0,0.07)] pt-[10px] dropdown-content w-[210px] md:right-0 bg-[#FFFFFF] flex flex-col absolute z-10 before:content-[''] before:absolute before:top-[-0.3125rem] before:h-[0.75rem] before:w-[0.75rem] before:bg-[white] before:rotate-45 md:before:right-[18px] md:before:left-[unset] before:left-[18px]\">\r\n {sortOptions.map((option) => (\r\n <li\r\n key={option.label}\r\n className={`${\r\n logoSortBy === option.sortBy &&\r\n logoSortDir === option.sortDir\r\n ? 'bg-[#fce8eb] text-[#e11a38]'\r\n : ''\r\n } cursor-pointer flex items-center hover:bg-[#fce8eb] hover:text-[#e11a38] py-[13px] px-[27.85px] border-b-[1px] last:border-b-0 border-[#F4F4F4] text-[14px] leading-[19px] text-[#353535] font-bold`}\r\n onClick={() => {\r\n toggleDropdown();\r\n loadingLogo(option.onClick());\r\n }}\r\n >\r\n {option.label}\r\n </li>\r\n ))}\r\n </ul>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React, { useEffect, useState, useRef } from 'react';\r\nimport { Searchbar } from '../searchbar';\r\nimport { Card, CardMedia, CardBody, CardTitle, CardTags } from '../card';\r\nimport { SortByDropdown } from '../SortByDropdown';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { fabric } from 'fabric';\r\n// import { Loader } from '../loader';\r\nimport {\r\n BORDER_COLOR_3,\r\n SELECT_BG_COLOR,\r\n TAG_BG_COLOR,\r\n TEXT_SIZE_12,\r\n} from '../../theme';\r\nimport { BsCheckLg } from 'react-icons/bs';\r\nimport { useDebounce } from '../../hooks/debounce';\r\nexport interface LogoProps {\r\n logo_id: number;\r\n customer_id: string;\r\n tag: string;\r\n name: string;\r\n logo_config_url: string;\r\n logo_url: string;\r\n logo_svg_url: string;\r\n created_at: string;\r\n}\r\nexport const MyLogo = ({ onApply }) => {\r\n const [logoSelected, setLogoSelected] = React.useState<LogoProps>();\r\n const [scrollEnd, setScrollEnd] = useState(false);\r\n const [morePages, setMorePages] = useState(true);\r\n const myRef = useRef(null);\r\n const [\r\n retriveLogoDesign,\r\n myLogoHandler,\r\n loadingLogo,\r\n\r\n setLogoData,\r\n logoData,\r\n logoSearchText,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.retriveLogoDesign,\r\n state.myLogoHandler,\r\n state.loadingLogo,\r\n\r\n state.setLogoData,\r\n state.logoData,\r\n state.logoSearchText,\r\n ],\r\n shallow\r\n );\r\n const debouncedSearchText = useDebounce(logoSearchText, 300);\r\n const handleSearchChange = (e) => {\r\n use3dddPlus.setState({\r\n logoSearchText: e.currentTarget.value,\r\n logoPageNo: 1,\r\n retriveLogoDesign: [],\r\n });\r\n setMorePages(true);\r\n };\r\n\r\n useEffect(() => {\r\n loadingLogo(debouncedSearchText);\r\n }, [debouncedSearchText]);\r\n\r\n useEffect(() => {\r\n loadingLogo('');\r\n setMorePages(true);\r\n }, []);\r\n\r\n const handleScroll = React.useCallback(() => {\r\n if (!myRef?.current) return;\r\n if (scrollEnd) return;\r\n const scrollY = myRef.current.scrollTop;\r\n const height = myRef.current.clientHeight;\r\n const scrollHeight = myRef.current.scrollHeight;\r\n const tolerance = 10;\r\n if (scrollY + height + tolerance >= scrollHeight) {\r\n setScrollEnd(true);\r\n } else if (scrollY + height + tolerance < scrollHeight) {\r\n setScrollEnd(false);\r\n }\r\n }, [myRef, scrollEnd]);\r\n const fetchData = async () => {\r\n try {\r\n use3dddPlus.setState((state) => ({\r\n logoPageNo: state.logoPageNo + 1,\r\n }));\r\n const result = await loadingLogo('');\r\n if (result.length === 0) {\r\n setScrollEnd(false);\r\n setMorePages(false);\r\n return;\r\n }\r\n if (use3dddPlus.getState().logoPageNo === 1) {\r\n use3dddPlus.setState({\r\n retriveLogoDesign: result,\r\n });\r\n } else if (use3dddPlus.getState().logoPageNo > 1) {\r\n use3dddPlus.setState((state) => {\r\n const updatedState = {\r\n retriveLogoDesign: [...state.retriveLogoDesign, ...result],\r\n };\r\n return updatedState;\r\n });\r\n }\r\n setScrollEnd(false);\r\n } catch (err) {\r\n console.error(err);\r\n }\r\n };\r\n useEffect(() => {\r\n if (scrollEnd && morePages) {\r\n setTimeout(async () => {\r\n await fetchData();\r\n }, 700);\r\n }\r\n }, [scrollEnd]);\r\n const sortOptions = [\r\n {\r\n label: 'NEWEST',\r\n sortBy: 'updated_at',\r\n sortDir: 'DESC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'OLDEST',\r\n sortBy: 'updated_at',\r\n sortDir: 'ASC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'ASC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'A TO Z',\r\n sortBy: 'name',\r\n sortDir: 'ASC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'name',\r\n logoSortDir: 'ASC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n {\r\n label: 'Z TO A',\r\n sortBy: 'name',\r\n sortDir: 'DESC',\r\n onClick: () => {\r\n setScrollEnd(false);\r\n use3dddPlus.setState({\r\n logoPageNo: 1,\r\n logoSortBy: 'name',\r\n logoSortDir: 'DESC',\r\n });\r\n setMorePages(true);\r\n },\r\n },\r\n ];\r\n const handleEditLogo = (logo) => {\r\n fabric.Object.prototype.hasControls = true;\r\n fabric.Object.prototype.hasBorders = true;\r\n if (logo) {\r\n use3dddPlus.setState({\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n });\r\n myLogoHandler(logo);\r\n setLogoSelected(logo);\r\n }\r\n };\r\n const handleApplyLogo = (logo) => {\r\n if (logo) {\r\n use3dddPlus.setState({\r\n logoSearchText: '',\r\n logoSortBy: 'updated_at',\r\n logoSortDir: 'DESC',\r\n logoPageNo: 1,\r\n logoPageSize: 14,\r\n });\r\n onApply();\r\n setLogoSelected(logo);\r\n }\r\n };\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\r\n <div className=\" w-full flex mt-[50px] flex-row\">\r\n <div className=\"flex gap-4 justify-end w-full md:justify-end \">\r\n <SortByDropdown sortOptions={sortOptions} />\r\n <div className=\" w-full sm:w-[60%] md:w-[65%] lg:w-[50%] xl:w-[40%] \">\r\n <Searchbar\r\n value={logoSearchText}\r\n placeholder={'Search by Logo name or tags'}\r\n searchBarMainClass={`!h-[40px] border border-[#BEBEBE]`}\r\n onChange={handleSearchChange}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className={`flex ml-[33px] mt-[30px] overflow-y-auto h-[60vh] overflow-x-hidden pr-[33px]`}\r\n onScroll={handleScroll}\r\n ref={myRef}\r\n >\r\n <div className=\"max-h-[140px] grid gap-[2vw] grid-cols-3 md:grid-cols-4 lg:grid-cols-4 xl:grid-cols-5 2xl:grid-cols-6 w-full \">\r\n {retriveLogoDesign.length > 0\r\n ? retriveLogoDesign.map((logo: LogoProps) => (\r\n <>\r\n {/* {logo.logo_svg_url && ( */}\r\n <Card\r\n cardClass={`rounded-none !bg-transparent cursor-pointer max-w-[220px] border ${\r\n logoSelected?.logo_id === logo.logo_id\r\n ? BORDER_COLOR_3\r\n : 'border-none '\r\n }`}\r\n // style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n onClick={() => {\r\n if (logo) {\r\n setLogoData(logo);\r\n setLogoSelected(logo);\r\n }\r\n }}\r\n >\r\n <CardMedia\r\n src={\r\n logo.logo_url\r\n }\r\n imageClass=\"w-full h-[220px] bg-white shadow-md\"\r\n />\r\n\r\n <CardBody bodyClass=\"p-2.5 self-start grow-0\">\r\n <CardTitle\r\n titleClass={`text-[15px] text-[#353535] font-bold uppercase break-all text-left items-left`}\r\n name={logo.name}\r\n />\r\n <div className=\"flex gap-2 flex-wrap\">\r\n {logo?.tag &&\r\n logo?.tag\r\n ?.split(',')\r\n ?.filter(Boolean)\r\n ?.map((item) => (\r\n <CardTags\r\n key={`design-tag-${item}`}\r\n tagsClass={`h-[1.5rem] ${TAG_BG_COLOR}`}\r\n >\r\n <div className={`${TEXT_SIZE_12}`}>\r\n {item}\r\n </div>\r\n </CardTags>\r\n ))}\r\n </div>\r\n\r\n {logoSelected?.logo_id === logo.logo_id && (\r\n <div className=\"w-9 overflow-hidden inline-block absolute left-0 top-0\">\r\n <div\r\n className={`h-16 rotate-45 transform origin-top-right ${SELECT_BG_COLOR}`}\r\n ></div>\r\n <span className=\"absolute top-1 left-1\">\r\n <BsCheckLg\r\n size={15}\r\n color=\"white\"\r\n style={{ strokeWidth: '0.5' }}\r\n />\r\n </span>\r\n </div>\r\n )}\r\n </CardBody>\r\n </Card>\r\n {/* )} */}\r\n </>\r\n ))\r\n : 'No Saved Mascots'}\r\n </div>\r\n </div>\r\n <div className={`flex gap-[24px] h-[48px] mt-[26px] float-right`}>\r\n <button\r\n className={`border border-[#353535] w-[160px] p-3 font-bold ${\r\n !logoSelected && 'opacity-70'\r\n }`}\r\n onClick={() => handleEditLogo(logoData)}\r\n >\r\n Edit\r\n </button>\r\n <button\r\n disabled={!logoSelected}\r\n onClick={() => handleApplyLogo(logoData)}\r\n className={`border p-3 w-[160px] ${\r\n logoSelected\r\n ? 'bg-[#e11a38] border-[#e11a38] text-white font-bold '\r\n : 'bg-[#e11a38] border-[#e11a38] text-white font-bold opacity-70'\r\n }`}\r\n >\r\n Apply\r\n </button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import { useState, useEffect } from 'react';\r\n\r\nexport const useDebounce = (value: any, milliSeconds: number) => {\r\n const [debouncedValue, setDebouncedValue] = useState(value);\r\n\r\n useEffect(() => {\r\n const handler = setTimeout(() => {\r\n setDebouncedValue(value);\r\n }, milliSeconds);\r\n\r\n return () => {\r\n clearTimeout(handler);\r\n };\r\n }, [value, milliSeconds]);\r\n\r\n return debouncedValue;\r\n};\r\n","import React from 'react';\r\nimport { Button } from 'reakit';\r\n\r\nexport const IconButtonLabel = ({\r\n icon,\r\n onClick,\r\n className = '',\r\n label = '',\r\n iconPosition = 'left',\r\n ...props\r\n}) => {\r\n return (\r\n <Button\r\n className={`flex items-center gap-2 text-base font-bold flex-1 justify-center focus:outline-none ${className}`}\r\n onClick={onClick}\r\n {...props}\r\n >\r\n {iconPosition === 'left' && (\r\n <>\r\n {icon}\r\n {label}\r\n </>\r\n )}\r\n {iconPosition === 'right' && (\r\n <>\r\n {label}\r\n {icon}\r\n </>\r\n )}\r\n </Button>\r\n );\r\n};\r\n","import React from \"react\";\r\n\r\nexport const EditButton = ({ label, icons, onClick, className, children }) => {\r\n return (\r\n <button\r\n onClick={onClick}\r\n className={`flex rounded-none gap-3 items-center ${className}`}\r\n >\r\n {icons}\r\n {label}\r\n {children}\r\n </button>\r\n );\r\n };","import React from 'react';\r\nimport { TEXT_SIZE_2 } from '../../theme';\r\nimport { IoMdCheckmarkCircle, IconButton } from '../icon';\r\n\r\nexport interface CardCheckMarkProps {\r\n checkMarkClass?: string;\r\n size?: any;\r\n}\r\nexport const CardCheckMark = ({ checkMarkClass, size }: CardCheckMarkProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`absolute top-1/2 left-2/4 ${TEXT_SIZE_2} ${checkMarkClass}`}\r\n style={{ transform: 'translate(-50%, -50%)' }}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<IoMdCheckmarkCircle />}\r\n className={`pointer-events-auto cursor-pointer`}\r\n size={size}\r\n ></IconButton>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { HiOutlineDownload, IconButton } from '../icon';\r\n\r\nexport interface CardDownIconProps {\r\n downloadClass?: string;\r\n downloadIconClass?: string;\r\n iconClass?: string;\r\n pdfUrl?: string;\r\n}\r\nexport const CardDownloadIcon = ({\r\n downloadClass,\r\n downloadIconClass,\r\n iconClass,\r\n pdfUrl,\r\n}: CardDownIconProps) => {\r\n return (\r\n <>\r\n <a\r\n href={pdfUrl}\r\n download={'Design Sheet'}\r\n target=\"_blank\"\r\n className={`flex items-center gap-[0.4375rem] ${downloadIconClass}`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<HiOutlineDownload />}\r\n className={`pointer-events-auto cursor-pointer ${iconClass}`}\r\n size=\"1rem\"\r\n ></IconButton>\r\n\r\n <span className={`${downloadClass}`}>VIEW DESIGN SHEET</span>\r\n </a>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardFlagProps {\r\n flag?: string;\r\n flagClass?: string;\r\n}\r\nexport const CardFlag = ({ flag, flagClass }: CardFlagProps) => {\r\n return (\r\n <>\r\n <div className={`absolute top-0 left-0 ${flagClass}`}>{flag}</div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface CardDescProps {\r\n children?: React.ReactNode;\r\n descriptionClass?: string;\r\n}\r\nexport const CardDescription = ({ children, descriptionClass }: CardDescProps) => {\r\n return (\r\n <>\r\n <p className={`${descriptionClass}`}>{children}</p>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Input as InputImpl, InputHTMLProps } from 'reakit';\r\n\r\nexport const input = React.forwardRef<HTMLInputElement, InputHTMLProps>(\r\n (props, ref) => {\r\n return (\r\n <InputImpl\r\n // @ts-ignore\r\n ref={ref}\r\n {...props}\r\n className={`${props.className}`}\r\n />\r\n );\r\n }\r\n);\r\n","import React from 'react';\r\nimport { IconButton, RxCross2 } from '../icon';\r\nimport { BACKDROP_BLUR, BACKDROP_BLUR_BG_COLOR, SAVERACK_TEXT_COLOR } from '../../theme';\r\n\r\nexport interface GlobalModalProps {\r\n backdropStyle?: string;\r\n children?: React.ReactNode;\r\n contentStyle?: string;\r\n crossOnClick?: () => void;\r\n modalStyle?: string;\r\n}\r\n\r\nexport const Modal = ({\r\n backdropStyle,\r\n children,\r\n contentStyle,\r\n crossOnClick,\r\n modalStyle,\r\n}: GlobalModalProps) => {\r\n return (\r\n <div>\r\n <div\r\n className={`${backdropStyle} absolute top-0 left-0 h-screen w-full ${BACKDROP_BLUR} ${BACKDROP_BLUR_BG_COLOR}`}\r\n ></div>\r\n\r\n <dialog\r\n open\r\n className={`${contentStyle} absolute shadow-[0 2px 8px rgba(0, 0, 0, 0.26)] ml-[auto] md:mr-[0%] mr-[auto]`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<RxCross2 strokeWidth={1} onClick={crossOnClick} />}\r\n className={\r\n `z-10 pointer-events-auto cursor-pointer ${SAVERACK_TEXT_COLOR} font-bold !absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[1.25rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none`\r\n }\r\n size=\"1.2rem\"\r\n ></IconButton>\r\n <div\r\n className={`flex flex-col justify-center gap-[1.75rem] ${modalStyle}`}\r\n >\r\n {children}\r\n </div>\r\n </dialog>\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nexport interface ModalButtonsProps {\r\n buttonMainClass?: string;\r\n buttons?: {\r\n buttonClass?: string;\r\n label?: string;\r\n onClick?: () => void;\r\n style?: React.CSSProperties;\r\n }[];\r\n}\r\nexport const ModalButtons = ({ buttonMainClass, buttons }: ModalButtonsProps) => {\r\n return (\r\n <div\r\n className={`flex flex-col lg:flex-row gap-[1.5625rem] leading-[1.4375rem] font-bold ${buttonMainClass}`}\r\n >\r\n {buttons?.map((button, index) => (\r\n <button\r\n key={index}\r\n onClick={button.onClick}\r\n className={`w-full py-[0.7188rem] rounded-none font-bold uppercase ${button.buttonClass}`}\r\n style={button.style}\r\n >\r\n {button.label}\r\n </button>\r\n ))}\r\n </div>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\nimport { HiOutlineDownload, IconButton } from '../icon';\r\n\r\nexport interface ModalDownLoadIconProps {\r\n downloadClass?: string;\r\n downloadIconClass?: string;\r\n iconClass?: string;\r\n pdfUrl?: string;\r\n}\r\nexport const ModalDownloadIcon = ({\r\n downloadClass,\r\n downloadIconClass,\r\n iconClass,\r\n pdfUrl,\r\n}: ModalDownLoadIconProps) => {\r\n return (\r\n <>\r\n <div className={`flex justify-center items-center`}>\r\n <a\r\n href={pdfUrl}\r\n download={'Design Sheet'}\r\n target=\"_blank\"\r\n className={`flex items-center cursor-pointer gap-[0.6875rem] font-bold ${downloadIconClass}`}\r\n >\r\n <IconButton\r\n label={''}\r\n icon={<HiOutlineDownload />}\r\n className={`pointer-events-auto ${iconClass}`}\r\n size=\"1.1rem\"\r\n ></IconButton>\r\n\r\n <span className={`uppercase ${downloadClass}`}>\r\n VIEW DESIGN SHEET\r\n </span>\r\n </a>\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\n\r\nexport interface ModalHeadingProps {\r\n children?: React.ReactNode;\r\n headingStyle?: string;\r\n}\r\nexport const ModalHeading = ({ children, headingStyle }: ModalHeadingProps) => {\r\n return (\r\n <>\r\n <div\r\n className={`flex flex-col gap-[1.625rem] justify-center items-center text-center ${headingStyle}`}\r\n >\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\n\r\nexport interface ModalLabelProps {\r\n children?: React.ReactNode;\r\n labelStyle?: string;\r\n}\r\nexport const ModalLabel = ({ children, labelStyle }: ModalLabelProps) => {\r\n return (\r\n <>\r\n <p className={`${labelStyle}`}>{children}</p>\r\n </>\r\n );\r\n};\r\n\r\n","import React from 'react';\r\nimport { IconButton } from '../icon';\r\n\r\nexport interface ModalStatusProps {\r\n icon?: JSX.Element;\r\n onIconClick?: () => void;\r\n children?: React.ReactNode;\r\n iconStyle?: string;\r\n}\r\nexport const ModalStatusIcon = ({\r\n icon,\r\n onIconClick,\r\n iconStyle,\r\n children,\r\n}: ModalStatusProps) => {\r\n return (\r\n <>\r\n <div className={`flex justify-center`} onClick={onIconClick}>\r\n <IconButton\r\n label={''}\r\n icon={icon}\r\n className={`pointer-events-auto cursor-pointer h-[auto] ${iconStyle}`}\r\n size=\"6.3rem\"\r\n ></IconButton>\r\n {children}\r\n </div>\r\n </>\r\n );\r\n};\r\n","import React, { useEffect } from 'react';\r\n//import { StepperTypes } from '../../store/actions/types';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport {\r\n SELECT_BG_COLOR,\r\n //BORDER_COLOR,\r\n TEXT_SIZE_1,\r\n TEXT_SIZE_2,\r\n SELECT_TEXT_COLOR,\r\n BUTTON_TEXT_COLOR,\r\n TEXT_COLOR_1,\r\n INPUT_TEXT_DISABLE_COLOR,\r\n} from '../../theme';\r\nimport { AddText, IconButton, MyLogo, RLogo } from '../icon';\r\nimport { MdOutlineFileUpload } from 'react-icons/md';\r\nimport { BiSolidColorFill } from 'react-icons/bi';\r\nimport { FaRegImage } from 'react-icons/fa6';\r\n\r\nexport const LeftMenu = () => {\r\n const [\r\n setSelectedStepper,\r\n selectedStepper,\r\n addText,\r\n getStockLogos,\r\n loadingLogo,\r\n setDisplayProductColor,\r\n hasUploadScreen,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.setSelectedStepper,\r\n state.selectedStepper,\r\n state.addText,\r\n state.getStockLogos,\r\n state.loadingLogo,\r\n state.setDisplayProductColor,\r\n state.hasUploadScreen,\r\n ],\r\n shallow\r\n );\r\n const StepperList = [\r\n {\r\n name: 'Upload File',\r\n icon: <MdOutlineFileUpload />,\r\n id: 1,\r\n display: true,\r\n },\r\n {\r\n name: 'My Logos',\r\n icon: <MyLogo />,\r\n id: 2,\r\n display: true,\r\n },\r\n {\r\n name: 'Add Text',\r\n icon: <AddText />,\r\n id: 3,\r\n display: true,\r\n },\r\n {\r\n name: 'Add Mascots',\r\n icon: <FaRegImage />,\r\n id: 4,\r\n display: true,\r\n },\r\n {\r\n name: 'product Color',\r\n icon: <BiSolidColorFill />,\r\n id: 5,\r\n display: true,\r\n },\r\n ];\r\n\r\n useEffect(() => {\r\n return () => {};\r\n }, []);\r\n\r\n return (\r\n <div className=\"flex flex-row md:flex-col\">\r\n <div\r\n className={` flex flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n >\r\n <div\r\n className={`bg-[#CB1732] flex justify-center cursor-pointer px-2.5 py-4 `}\r\n >\r\n <div className=\" flex flex-col items-center justify-center\">\r\n <span className={` ${TEXT_SIZE_2} py-2`}>\r\n <IconButton\r\n label={''}\r\n icon={<RLogo />}\r\n size=\"2rem\"\r\n className={`${TEXT_COLOR_1} pointer-events-auto cursor-pointer m-auto`}\r\n ></IconButton>\r\n </span>\r\n <span\r\n className={`${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`}\r\n >\r\n Logo Designer\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n className={` flex h-[100%] flex-row md:flex-col sticky md:relative md:w-[100%] md:max-w-[100%]`}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n >\r\n {StepperList?.map((step) => (\r\n <div\r\n className={\r\n step.id === selectedStepper\r\n ? `${SELECT_BG_COLOR} flex justify-center cursor-pointer px-2.5 py-4 `\r\n : 'flex justify-center px-2.5 py-4 ' +\r\n (hasUploadScreen\r\n ? ''\r\n : 'cursor-pointer group hover:bg-[#e11a38]')\r\n }\r\n key={step.id}\r\n style={!step.display ? { display: 'none' } : {}}\r\n onClick={(e) => {\r\n e.preventDefault();\r\n if (!hasUploadScreen) {\r\n setSelectedStepper(step.id);\r\n if (step.id === 3) {\r\n addText();\r\n }\r\n if (step.id === 4) {\r\n getStockLogos();\r\n }\r\n if (step.id === 2) {\r\n loadingLogo('');\r\n }\r\n if (step.id === 5) {\r\n setDisplayProductColor();\r\n }\r\n }\r\n }}\r\n >\r\n <div\r\n className={`flex flex-col items-center justify-center gap-1 ${\r\n hasUploadScreen ? '' : 'group-hover:bg-[#e11a38]'\r\n }`}\r\n >\r\n <span\r\n className={\r\n step.id === selectedStepper\r\n ? ` ${TEXT_SIZE_2} py-2`\r\n : ` ${TEXT_SIZE_2} py-2`\r\n }\r\n >\r\n <IconButton\r\n label={''}\r\n icon={step.icon}\r\n size=\"2rem\"\r\n className={`${\r\n step.id === selectedStepper\r\n ? BUTTON_TEXT_COLOR\r\n : hasUploadScreen\r\n ? INPUT_TEXT_DISABLE_COLOR\r\n : TEXT_COLOR_1\r\n } pointer-events-auto m-auto group-active:text-white ${\r\n hasUploadScreen\r\n ? ''\r\n : 'cursor-pointer group-hover:text-white'\r\n }`}\r\n ></IconButton>\r\n </span>\r\n <span\r\n className={\r\n step.id === selectedStepper\r\n ? `${SELECT_TEXT_COLOR} ${TEXT_SIZE_1} uppercase font-bold text-center`\r\n : `${\r\n hasUploadScreen\r\n ? INPUT_TEXT_DISABLE_COLOR\r\n : TEXT_COLOR_1\r\n } ${TEXT_SIZE_1} uppercase font-bold text-center ${\r\n hasUploadScreen ? '' : 'group-hover:text-white'\r\n }`\r\n }\r\n >\r\n {step.name}\r\n </span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\n","! function(t) {\n var s = {};\n\n function i(h) {\n if (s[h]) return s[h].exports;\n var e = s[h] = {\n i: h,\n l: !1,\n exports: {}\n };\n return t[h].call(e.exports, e, e.exports, i), e.l = !0, e.exports\n }\n i.m = t, i.c = s, i.d = function(t, s, h) {\n i.o(t, s) || Object.defineProperty(t, s, {\n configurable: !1,\n enumerable: !0,\n get: h\n })\n }, i.r = function(t) {\n Object.defineProperty(t, \"__esModule\", {\n value: !0\n })\n }, i.n = function(t) {\n var s = t && t.__esModule ? function() {\n return t.default\n } : function() {\n return t\n };\n return i.d(s, \"a\", s), s\n }, i.o = function(t, s) {\n return Object.prototype.hasOwnProperty.call(t, s)\n }, i.p = \"\", i(i.s = 4)\n}([function(t, s, i) {\n var h = i(1),\n e = i(3);\n t.exports = class {\n constructor(t, s) {\n this.source = s, this.A = new h(s.left, s.top), this.B = new h(s.right, s.top), this.C = new h(s.right, s.bottom), this.D = new h(s.left, s.bottom), this.Aleft = new h(s.left, s.top + s.height / 3), this.Atop = new h(s.left + s.width / 3, s.top), this.Btop = new h(s.right - s.width / 3, s.top), this.Bright = new h(s.right, s.top + s.height / 3), this.Cright = new h(s.right, s.bottom - s.height / 3), this.Cbottom = new h(s.right - s.width / 3, s.bottom), this.Dbottom = new h(s.left + s.width / 3, s.bottom), this.Dleft = new h(s.left, s.bottom - s.height / 3), this.ABx = 0, this.ABy = 0, this.CDx = 0, this.CDy = 0, this.BCx = 0, this.BCy = 0, this.ADx = 0, this.ADy = 0, this.STEPS = 10, this.distortX = 0, this.distortY1 = 0, this.distortY2 = 0, this.T1 = 1 / 3, this.T2 = 2 / 3, this.kAB = 0, this.kBC = 0, this.kCD = 0, this.kAD = 0, this.angle, this.sin, this.cos, this.kt, this.applyParameters(t)\n }\n applyParameters(t) {\n var s = this.source,\n i = this._parameters = new e(t);\n this.angle = i.bend * Math.PI / 2, this.sin = Math.sin(this.angle), this.cos = Math.cos(this.angle), this.kt = 1 + Math.pow(i.bend, 4), this.distortX = .5 * i.distortV * s.width;\n var h = .5 * i.distortH * s.height;\n switch (this.distortY1 = h * (1 - i.distortV), this.distortY2 = h * (1 + i.distortV), this.kAB = 1 - i.distortV, this.kBC = 1 + i.distortH, this.kCD = 1 + i.distortV, this.kAD = 1 - i.distortH, this.setAnchors(), i.type) {\n case \"WARP_ARC\":\n this.setArc();\n break;\n case \"WARP_ARC_LOWER\":\n this.setArcLower();\n break;\n case \"WARP_ARC_UPPER\":\n this.setArcUpper();\n break;\n case \"WARP_ARCH\":\n this.setArch();\n break;\n case \"WARP_BULGE\":\n this.setBulge();\n break;\n case \"WARP_FLAG\":\n this.setFlag();\n break;\n case \"WARP_FISH\":\n this.setFish();\n break;\n case \"WARP_RISE\":\n this.setRise();\n break;\n case \"WARP_INFLATE\":\n this.setInflate();\n break;\n case \"WARP_SQUEEZE\":\n this.setSqueeze();\n break;\n case \"WARP_WAVE_LOWER\":\n this.setWaveLower();\n break;\n case \"WARP_WAVE_UPPER\":\n this.setWaveUpper()\n }\n }\n setAnchors() {\n this.A.x = this.source.left + this.distortX, this.B.x = this.source.right - this.distortX, this.C.x = this.source.right + this.distortX, this.D.x = this.source.left - this.distortX, this.A.y = this.source.top + this.distortY1, this.B.y = this.source.top - this.distortY1, this.C.y = this.source.bottom + this.distortY2, this.D.y = this.source.bottom - this.distortY2\n }\n setControls() {\n this.Atop.x = this.A.x + this.ABx, this.Atop.y = this.A.y + this.ABy, this.Btop.x = this.B.x - this.ABx, this.Btop.y = this.B.y - this.ABy, this.Dbottom.x = this.D.x + this.CDx, this.Dbottom.y = this.D.y + this.CDy, this.Cbottom.x = this.C.x - this.CDx, this.Cbottom.y = this.C.y - this.CDy, this.Bright.x = this.B.x + this.BCx, this.Bright.y = this.B.y + this.BCy, this.Cright.x = this.C.x - this.BCx, this.Cright.y = this.C.y - this.BCy, this.Aleft.x = this.A.x + this.ADx, this.Aleft.y = this.A.y + this.ADy, this.Dleft.x = this.D.x - this.ADx, this.Dleft.y = this.D.y - this.ADy\n }\n changeCubic(t, s, i, h) {\n let e = this._changePoint(t),\n o = this._changePoint(h),\n r = this.getPointOn(1 / 3, t, h, s, i),\n n = this.getPointOn(2 / 3, t, h, s, i),\n a = this._changePoint(r),\n y = this._changePoint(n);\n return this.getNewSegment(e, o, a, y)\n }\n changePoint(t) {\n var s = this._changePoint(t);\n return [s.x, s.y]\n }\n _changePoint(t) {\n let s = this.A,\n i = this.Atop,\n e = this.Aleft,\n o = this.B,\n r = this.Btop,\n n = this.Bright,\n a = this.C,\n y = this.Cright,\n x = this.Cbottom,\n c = this.D,\n A = this.Dbottom,\n C = this.Dleft;\n var d = (t.x - this.source.x) / this.source.width,\n b = (t.y - this.source.y) / this.source.height,\n p = 1 - b,\n B = this.getPointOn(b, s, c, e, C),\n l = this.getPointOn(b, o, a, n, y),\n D = new h(i.x * p + A.x * b, i.y * p + A.y * b),\n m = new h(r.x * p + x.x * b, r.y * p + x.y * b),\n k = this.getPointOn(d, B, l, D, m);\n return new h(k.x, k.y)\n }\n getPointOn(t, s, i, e, o) {\n var r = new h,\n n = t * t * t,\n a = t * t;\n return r.x = n * (i.x + 3 * (e.x - o.x) - s.x) + 3 * a * (s.x - 2 * e.x + o.x) + 3 * t * (e.x - s.x) + s.x, r.y = n * (i.y + 3 * (e.y - o.y) - s.y) + 3 * a * (s.y - 2 * e.y + o.y) + 3 * t * (e.y - s.y) + s.y, r\n }\n setArc() {\n var t = this._parameters,\n s = this.source,\n i = 1 - t.distortV;\n t.bend > 0 ? (this.A.x -= i * (s.height - this.distortY1) * this.sin, this.B.x += i * (s.height + this.distortY1) * this.sin, this.A.y += (s.height - this.distortY1) * (1 - this.cos), this.B.y += (s.height + this.distortY1) * (1 - this.cos), this.C.x -= this.distortY2 * this.sin, this.D.x -= this.distortY2 * this.sin, this.C.y += this.distortY2 * (this.cos - 1), this.D.y -= this.distortY2 * (this.cos - 1)) : t.bend < 0 && (this.D.x += i * (s.height - this.distortY2) * this.sin, this.C.x -= i * (s.height + this.distortY2) * this.sin, this.D.y += (s.height - this.distortY2) * (this.cos - 1), this.C.y += (s.height + this.distortY2) * (this.cos - 1), this.A.x += this.distortY1 * this.sin, this.B.x += this.distortY1 * this.sin, this.A.y -= this.distortY1 * (1 - this.cos), this.B.y += this.distortY1 * (1 - this.cos)), this.calculateArms(), this.setControls(), this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y -= this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y -= this.CDx * this.sin * this.kt\n }\n setFish() {\n var t = this._parameters;\n this.calculateArms(), this.setControls(), this.Atop.y -= 2 * t.bend * this.kAB * (2 * this.ADy + this.BCy), this.Btop.y += 2 * t.bend * this.kAB * (this.ADy + 2 * this.BCy), this.Dbottom.y += 2 * t.bend * this.kCD * (2 * this.ADy + this.BCy), this.Cbottom.y -= 2 * t.bend * this.kCD * (this.ADy + 2 * this.BCy)\n }\n setFlag() {\n this.calculateArms(), this.setControls();\n var t = this._parameters;\n this.Atop.y += 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Btop.y -= 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Dbottom.y += 3 * t.bend * this.kCD * (this.ADy + this.BCy), this.Cbottom.y -= 3 * t.bend * this.kCD * (this.ADy + this.BCy)\n }\n setBulge() {\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y += this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y += this.CDx * this.sin * this.kt\n }\n setArch() {\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y -= this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y -= this.CDx * this.sin * this.kt\n }\n setArcLower() {\n this.calculateArms(), this.setControls(), this._parameters, this.Dbottom.x += this.CDx * (this.cos * this.kt - 1), this.Dbottom.y += this.CDx * this.sin * this.kt, this.Cbottom.x += this.CDx * (1 - this.cos * this.kt), this.Cbottom.y += this.CDx * this.sin * this.kt\n }\n setArcUpper() {\n this.calculateArms(), this.setControls(), this._parameters, this.Atop.x += this.ABx * (this.cos * this.kt - 1), this.Atop.y -= this.ABx * this.sin * this.kt, this.Btop.x += this.ABx * (1 - this.cos * this.kt), this.Btop.y -= this.ABx * this.sin * this.kt\n }\n setSqueeze() {\n this.calculateArms(), this.setControls();\n var t = this._parameters;\n this.Atop.y -= t.bend * this.kAB * this.ADy, this.Btop.y -= t.bend * this.kAB * this.BCy, this.Dbottom.y += t.bend * this.kCD * this.ADy, this.Cbottom.y += t.bend * this.kCD * this.BCy, this.Bright.x -= t.bend * this.kBC * this.ABx, this.Cright.x -= t.bend * this.kBC * this.CDx, this.Aleft.x += t.bend * this.kAD * this.ABx, this.Dleft.x += t.bend * this.kAD * this.CDx\n }\n setInflate() {\n this.calculateArms(), this.setControls();\n var t = this._parameters,\n s = (this.ADy + this.BCy) / 2,\n i = (this.ABx + this.CDx) / 2;\n this.Atop.y -= t.bend * this.kAB * s, this.Btop.y -= t.bend * this.kAB * s, this.Dbottom.y += t.bend * this.kCD * s, this.Cbottom.y += t.bend * this.kCD * s, this.Bright.x += t.bend * this.kBC * i, this.Cright.x += t.bend * this.kBC * i, this.Aleft.x -= t.bend * this.kAD * i, this.Dleft.x -= t.bend * this.kAD * i\n }\n setRise() {\n var t = this._parameters;\n this.A.y += t.bend * this.kAB * source.height, this.D.y += t.bend * this.kCD * source.height, this.B.y -= t.bend * this.kAB * source.height, this.C.y -= t.bend * this.kCD * source.height, this.calculateArms(), this.setControls();\n var s = this.ADy + this.BCy;\n this.Atop.y += t.bend * this.kAB * s, this.Btop.y -= t.bend * this.kAB * s, this.Dbottom.y += t.bend * this.kCD * s, this.Cbottom.y -= t.bend * this.kCD * s\n }\n setWaveUpper() {\n this.calculateArms(), this.setControls();\n var t = this._parameters;\n this.Atop.y += 3 * t.bend * this.kAB * (this.ADy + this.BCy), this.Btop.y -= 3 * t.bend * this.kAB * (this.ADy + this.BCy)\n }\n setWaveLower() {\n this.calculateArms(), this.setControls();\n var t = this._parameters;\n this.Dbottom.y += 3 * t.bend * this.kCD * (this.ADy + this.BCy), this.Cbottom.y -= 3 * t.bend * this.kCD * (this.ADy + this.BCy)\n }\n calculateArms() {\n this.ABx = (this.B.x - this.A.x) / 3, this.ABy = (this.B.y - this.A.y) / 3, this.CDx = (this.C.x - this.D.x) / 3, this.CDy = (this.C.y - this.D.y) / 3, this.BCx = (this.C.x - this.B.x) / 3, this.BCy = (this.C.y - this.B.y) / 3, this.ADx = (this.D.x - this.A.x) / 3, this.ADy = (this.D.y - this.A.y) / 3\n }\n getNewSegment(t, s, i, e) {\n var o = this.T1,\n r = o * o * o,\n n = 1 - o,\n a = n * n * n,\n y = this.T2,\n x = y * y * y,\n c = 1 - y,\n A = c * c * c,\n C = 3 * o * n,\n d = {};\n d.x = (i.x - a * t.x - r * s.x) / C, d.y = (i.y - a * t.y - r * s.y) / C;\n var b = 3 * y * c,\n p = {};\n p.x = (e.x - A * t.x - x * s.x) / b, p.y = (e.y - A * t.y - x * s.y) / b;\n var B = {};\n B.x = (y * d.x - o * p.x) / (n * p.x - c * d.x), B.y = (y * d.y - o * p.y) / (n * p.y - c * d.y), isNaN(B.x) && (B.x = 0), isNaN(B.y) && (B.y = 0);\n var l = {},\n D = {};\n D.x = d.x / (n * B.x + o), D.y = d.y / (n * B.y + o), l.x = B.x * D.x, l.y = B.y * D.y;\n var m = new h(l.x, l.y),\n k = new h(D.x, D.y);\n return [m.x, m.y, k.x, k.y, s.x, s.y]\n }\n }\n}, function(t, s) {\n t.exports = class {\n constructor(t = 0, s = 0) {\n if (\"number\" != typeof t || \"number\" != typeof s) throw new Exception(\"Invalid points\");\n let i = t || 0,\n h = s || 0;\n i && (i = parseInt(1e3 * i) / 1e3), h && (h = parseInt(1e3 * h) / 1e3), this._props = [i, h], this[0] = i, this[1] = h\n }\n set x(t) {\n this[0] = t, this._props[0] = t\n }\n set y(t) {\n this[1] = t, this._props[1] = t\n }\n get x() {\n return this._props[0]\n }\n get y() {\n return this._props[1]\n }\n }\n}, function(t, s) {\n t.exports = class {\n constructor(t, s, i, h) {\n this.x = t, this.y = s, this.width = i, this.height = h, this.top = s, this.bottom = s + h, this.left = t, this.right = t + i\n }\n }\n}, function(t, s, i) {\n i(0);\n t.exports = class {\n constructor(t) {\n this.type = t.type || 0, this.bend = t.bend || 0, this.distortV = t.distortV || 0, this.distortH = t.distortH || 0, this.vertical = t.vertical || !1\n }\n }\n}, function(t, s, i) {\n var h = i(1),\n e = i(0),\n o = i(2),\n r = \"C\",\n n = \"Q\",\n a = \"L\",\n y = \"M\",\n x = \"Z\",\n c = class {\n constructor(t) {\n this.data = [], this.commands = [], this.parseString(t)\n }\n parseString(t) {\n var s = [],\n i = [];\n t.match(/[A-Za-z][0-9\\.\\s\\,\\-]+\\d/g).forEach(t => {\n var h = t[0],\n e = t.match(/[\\d\\.\\-]+/g);\n s.push(h), i.push(...e.map(parseFloat))\n }), this.commands = s, this.data = i\n }\n scale(t, s = 0) {\n 0 == s && (s = t);\n const i = this.data;\n for (let h = 0; h < i.length; h += 2) i[h] *= t, i[h + 1] *= s\n }\n warp(t) {\n let s = new e(t, this.calcRectangle()),\n i = this.commands,\n o = this.data,\n n = [],\n a = new h,\n y = new h,\n c = new h,\n A = new h,\n C = 0,\n d = new h;\n for (let t = 0; t < i.length; t++) {\n switch (i[t]) {\n case \"L\":\n i[t] = r, a = new h((2 * A[0] + o[C]) / 3, (2 * A[1] + o[C + 1]) / 3), y = new h((A[0] + 2 * o[C]) / 3, (A[1] + 2 * o[C + 1]) / 3), d = new h(o[C], o[C + 1]), n = n.concat(s.changeCubic(A, a, y, d)), A = d, C += 2;\n break;\n case \"Q\":\n i[t] = r, a = new h((2 * o[C] + A.x) / 3, (2 * o[C + 1] + A.y) / 3), y = new h((2 * o[C] + o[C + 2]) / 3, (2 * o[C + 1] + o[C + 3]) / 3), d = new h(o[C + 2], o[C + 3]), n = n.concat(s.changeCubic(A, a, y, d)), A = d, C += 4;\n break;\n case \"M\":\n A = c = new h(o[C], o[C + 1]), n = n.concat(s.changePoint(A)), C += 2;\n break;\n case \"C\":\n n = n.concat(s.changeCubic(A, new h(o[C], o[C + 1]), new h(o[C + 2], o[C + 3]), new h(o[C + 4], o[C + 5]))), A = new h(o[C + 4], o[C + 5]), C += 6;\n break;\n case x:\n A = c\n }\n }\n this.data = n\n }\n output() {\n var t = [],\n s = this.data.slice();\n for (let i = 0; i < this.commands.length; i++) {\n let h = this.commands[i],\n e = 0;\n switch (h) {\n case \"M\":\n case \"L\":\n e = 2;\n break;\n case \"Q\":\n e = 4;\n break;\n case \"C\":\n e = 6\n }\n t.push(h + s.splice(0, e).join(\" \"))\n }\n return t.join(\" \")\n }\n calcRectangle() {\n let t = this.commands,\n s = this.data;\n for (var i, h, e = {\n xMin: 1 / 0,\n yMin: 1 / 0,\n xMax: -1 / 0,\n yMax: -1 / 0\n }, x = 0, c = 0; c < t.length; c++) {\n switch (t[c]) {\n case y:\n case a:\n i = s[x], h = s[x + 1], x += 2;\n break;\n case n:\n i = s[x + 2], h = s[x + 3], x += 4;\n break;\n case r:\n i = s[x + 4], h = s[x + 5], x += 6\n }\n e.xMin = Math.min(i, e.xMin), e.xMax = Math.max(i, e.xMax), e.yMin = Math.min(h, e.yMin), e.yMax = Math.max(h, e.yMax)\n }\n return e.xMax == -1 / 0 ? null : new o(e.xMin, e.yMin, e.xMax - e.xMin, e.yMax - e.yMin)\n }\n };\n t.exports = c, \"undefined\" != typeof window && (window.Path = c)\n}]);","import React from 'react';\r\n\r\nconst errorPopup = ({ allColor }) => {\r\n return (\r\n <>\r\n <div className=\"errorPanel flex z-[100] w-full py-[20px]\">\r\n <div className=\"text-[#E11A38] text-[16px] font-size-[14px] font-bold flex-col\">\r\n <span className=\"flex\">COLORS IN DESIGN ({allColor.length})</span>\r\n <span className=\"flex\">\r\n MAX COLORS EXCEEDED, REDUCE THE TOTAL COLOR COUNT TO 8 OR FEWER\r\n COLORS PER SIDE.\r\n </span>\r\n {/* <div className=\"flex mt-3\">\r\n {allColor?.map((item) => {\r\n return (\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group mr-[16px]`}\r\n style={{ backgroundColor: item }}\r\n />\r\n );\r\n })} */}\r\n {/*<div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#000000] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#ffffff] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#DE802E] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#D13F42] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#DE802E] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#D13F42] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#010101] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#BBBBBB] mr-[16px]`}\r\n />\r\n <div\r\n className={`border border-[#D6D6D6] w-[30px] h-[30px] group bg-[#E4BB30] mr-[16px]`}\r\n /> */}\r\n {/* </div> */}\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default errorPopup;\r\n","import { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { useEffect, useMemo, useState } from 'react';\r\nimport { ColorImpl, ColorPalette } from '../colorPallet';\r\nimport React from 'react';\r\nimport { Tab, initTE } from 'tw-elements';\r\nimport {\r\n BORDER_COLOR_1,\r\n INPUT_BG_COLOR,\r\n SELECT_BG_COLOR,\r\n TEXT_COLOR_1,\r\n TEXT_SIZE_3,\r\n // TEXT_SIZE_9,\r\n} from '../../theme';\r\n// import { ImageEdit } from './imageEdit';\r\nimport { IconButton, HorizontalFlip, VerticalFlip } from '../icon';\r\nimport { defaultColorNames } from '../../assets/colors/colors';\r\nimport './rightMenu.css';\r\nimport { FiAlignCenter, FiAlignLeft, FiAlignRight } from 'react-icons/fi';\r\nimport { load } from 'opentype.js';\r\nimport { fabric } from 'fabric';\r\nimport '../../services/path-warp.js';\r\nimport { MdOutlineCancel } from 'react-icons/md';\r\nimport ErrorPopup from '../canvas/errorPopUp'; //Importing ErrorPopup Panel component which is displaying buttons\r\nconst fontFamilies = [\r\n {\r\n name: 'Accel',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/accelerator_richardson.woff',\r\n },\r\n {\r\n name: 'Athletic Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/athletic.ttf',\r\n },\r\n {\r\n name: 'Ballpark',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/ballpark.TTF ',\r\n },\r\n {\r\n name: 'BebasKai',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/BebasKai.otf',\r\n },\r\n {\r\n name: 'Beton CG ExtraBold',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/Beton_CG_ExtraBold_Regular.otf',\r\n },\r\n {\r\n name: 'Brush Script',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/brush-script-3.ttf',\r\n },\r\n {\r\n name: 'Century',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/richcent.woff',\r\n },\r\n {\r\n name: 'City Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/cityb.woff',\r\n },\r\n {\r\n name: 'Condensed Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/aoalpha0.woff',\r\n },\r\n {\r\n name: 'Copper',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/copgothb.woff',\r\n },\r\n {\r\n name: 'Eupo Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/handgotb.woff',\r\n },\r\n {\r\n name: 'Full Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/full_block.woff',\r\n },\r\n {\r\n name: 'Heritage',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/bebaskai-regular.woff',\r\n },\r\n {\r\n name: 'LakesightPersonalUseOnly',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/SocietyEditor_Personal_Use.ttf',\r\n },\r\n {\r\n name: 'Machine',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/machinen.woff',\r\n },\r\n {\r\n name: 'Magento',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/magnetob.woff',\r\n },\r\n {\r\n name: 'Niramit Extrabold',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/Niramit-Bold.ttf',\r\n },\r\n\r\n {\r\n name: 'Plain',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/plain.woff',\r\n },\r\n {\r\n name: 'Pro Block',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/pro_block.woff',\r\n },\r\n {\r\n name: 'Puff',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/new.woff',\r\n },\r\n {\r\n name: 'SocietyEditorPersonalUse',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/SocietyEditor_Personal_Use.ttf',\r\n },\r\n {\r\n name: 'Square',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/sqr721be.woff',\r\n },\r\n {\r\n name: 'Swiss Condensed',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/swz721bc.woff',\r\n },\r\n {\r\n name: 'Tiffany',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/logoEditor/assets/fonts/tiffany.woff',\r\n },\r\n {\r\n name: 'Times',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/timesrich.woff',\r\n },\r\n {\r\n name: 'Uni Script',\r\n src: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/fonts/scrpjet2.woff',\r\n },\r\n];\r\n\r\nexport const Rightmenu = () => {\r\n initTE({ Tab });\r\n const textSelected = use3dddPlus.getState().activeSelection;\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n const [\r\n colorFill,\r\n currentSelection,\r\n activeSelection,\r\n textInfo,\r\n activeObj,\r\n storeAllObject,\r\n allColor,\r\n setToggleSaveLogo,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.colorFill,\r\n state.currentSelection,\r\n state.activeSelection,\r\n state.textInfo,\r\n state.activeSelection,\r\n state.storeAllObject,\r\n state.allColor,\r\n state.setToggleSaveLogo,\r\n ],\r\n shallow\r\n );\r\n const [textAlignDisplay, setTextAlignDisplay] = useState(false);\r\n // const [outlineVal, setOutlineVal] = useState(0);\r\n // const [spacingVal, setSpacinglineVal] = useState(1);\r\n // const [sliderValue, setSliderValue] = useState(20);\r\n const [fontStyle, setFontStyle] = useState({\r\n bold: false,\r\n italic: false,\r\n underline: false,\r\n });\r\n const [activeButton, setActiveButton] = useState<string | null>(null);\r\n const [activeTab, setActiveTab] = useState(1);\r\n const [shapeSizeVal, setShapeSizeVal] = useState(50);\r\n const [textLength, setTextLength] = useState(\r\n textSelected && textSelected.text ? textSelected.text.length : 0\r\n );\r\n const [bridgeshapeBendSize, setBridgeShapeBendSize] = useState(-25);\r\n const [bowtieshapeBendSize, setBowtieShapeBendSize] = useState(-12);\r\n const [isNextClicked, setIsNextClicked] = useState(false);\r\n\r\n const [displayPallet, setDisplayPallet] = useState({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n const [position, setPosition] = useState(null);\r\n\r\n const tabs = [\r\n { id: 1, label: 'Properties' },\r\n { id: 2, label: 'Layers' },\r\n ];\r\n const textShapes = [\r\n {\r\n name: 'None',\r\n src: '',\r\n },\r\n {\r\n name: 'Arc',\r\n src: '',\r\n },\r\n {\r\n name: 'Bridge',\r\n src: '',\r\n },\r\n {\r\n name: 'Bowtie',\r\n src: '',\r\n },\r\n {\r\n name: 'Vertical Arch',\r\n src: '',\r\n },\r\n {\r\n name: 'Reverse Vertical Arch',\r\n src: '',\r\n },\r\n ];\r\n useEffect(() => {\r\n if (!activeSelection) return;\r\n use3dddPlus.setState({ textInfo: activeSelection.text });\r\n }, [activeSelection]);\r\n useEffect(() => {\r\n if (\r\n currentSelection === 'text' ||\r\n currentSelection === 'group' ||\r\n currentSelection === 'selectAll' ||\r\n currentSelection === 'none'\r\n ) {\r\n setActiveTab(1);\r\n } else if (\r\n currentSelection === 'layer' ||\r\n currentSelection === 'activeSelection'\r\n ) {\r\n setActiveTab(2);\r\n }\r\n }, [currentSelection]);\r\n const textToPath = async (objects) => {\r\n let promises = [];\r\n let pathObj = null;\r\n objects.forEach((object) => {\r\n promises = [\r\n ...promises,\r\n new Promise((resolve) => {\r\n // console.log(object.type)\r\n if (object.type === 'text') {\r\n // console.log(object.fontFamily);\r\n let fontSource = fontFamilies.filter(\r\n (o) => o.name === object.fontFamily\r\n )[0].src;\r\n // console.log(fontSource);\r\n load(fontSource, (error, font) => {\r\n if (error) {\r\n console.error(error);\r\n }\r\n // console.log(\"font loaded\", font);\r\n const path = font.getPath(object.text, 0, 0, object.fontSize, {\r\n fontSize: object.get('fontSize'),\r\n fill: object.get('fill'),\r\n stroke: object.get('stroke'),\r\n strokeWidth: object.get('strokeWidth'),\r\n });\r\n const fabricPath = new fabric.Path(path.toPathData(20), {});\r\n pathObj = fabricPath;\r\n resolve(pathObj);\r\n });\r\n }\r\n }),\r\n ];\r\n });\r\n //resolve all promises\r\n await Promise.all(promises);\r\n //return it\r\n // console.log(pathObj)\r\n return pathObj;\r\n };\r\n const setShapeSizeOnTextPath = (val) => {\r\n // console.log(textSelected,val);\r\n if (!textSelected || !textSelected['pathData']) {\r\n return;\r\n }\r\n //@ts-ignore\r\n let p = new Path(textSelected['pathData'].toClipPathSVG());\r\n textSelected.shapeSize = val;\r\n switch (textSelected['shapeType']) {\r\n case 'None': {\r\n break;\r\n }\r\n case 'Arc': {\r\n p.warp({\r\n type: 'WARP_ARC',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bridge': {\r\n p.warp({\r\n type: 'WARP_ARC_LOWER',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bowtie': {\r\n p.warp({\r\n type: 'WARP_BULGE',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Vertical Arch': {\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Reverse Vertical Arch': {\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: val / 100 || 0,\r\n });\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n let newTextPath = new fabric.Path(p.output());\r\n // add new textPath\r\n canvas.add(newTextPath);\r\n newTextPath['pathData'] = textSelected.pathData;\r\n newTextPath['colorFill'] = textSelected.colorFill;\r\n newTextPath['id'] = textSelected.id;\r\n newTextPath['shapeSize'] = val;\r\n newTextPath['shapeType'] = textSelected.shapeType;\r\n // carry forward the text properties over the path for further changes\r\n newTextPath['fill'] = textSelected.fill;\r\n newTextPath['fontFamily'] = textSelected.fontFamily;\r\n newTextPath['fontWeight'] = textSelected.fontWeight;\r\n newTextPath['stroke'] = textSelected.stroke;\r\n newTextPath['strokeWidth'] = textSelected.strokeWidth;\r\n newTextPath['padding'] = textSelected.padding;\r\n newTextPath['fontSize'] = textSelected.fontSize;\r\n newTextPath['charSpacing'] = textSelected.charSpacing;\r\n newTextPath['textAlign'] = textSelected.textAlign;\r\n newTextPath['fontStyle'] = textSelected.fontStyle;\r\n newTextPath['text'] = textSelected.text;\r\n\r\n // Set the same position scale matching with existing text\r\n newTextPath.left = textSelected.left;\r\n newTextPath.top = textSelected.top;\r\n newTextPath.width = textSelected.width;\r\n newTextPath.height = textSelected.height;\r\n newTextPath.scaleX = textSelected.scaleX;\r\n newTextPath.scaleY = textSelected.scaleY;\r\n newTextPath.setCoords();\r\n //@ts-ignore\r\n let dims = newTextPath._calcDimensions();\r\n newTextPath.width = dims.width;\r\n newTextPath.height = dims.height;\r\n\r\n // delete the text object\r\n canvas.remove(textSelected);\r\n // set active object as path text\r\n canvas.setActiveObject(newTextPath);\r\n use3dddPlus.setState({ activeSelection: newTextPath });\r\n\r\n // textSelected.path = newTextPath.path;\r\n textSelected._removeCacheCanvas();\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n newTextPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(newTextPath);\r\n };\r\n\r\n const bridgeShapeChange = () => {\r\n if (textSelected && textSelected.shapeType) {\r\n if (\r\n textSelected &&\r\n textSelected.text &&\r\n textSelected.text.length > textLength\r\n ) {\r\n if (textSelected.shapeType === 'Bridge') {\r\n setBridgeShapeBendSize(bridgeshapeBendSize + 3);\r\n } else {\r\n setBowtieShapeBendSize(bowtieshapeBendSize + 1);\r\n }\r\n } else {\r\n if (textSelected.shapeType === 'Bridge') {\r\n setBridgeShapeBendSize(bridgeshapeBendSize - 2);\r\n } else {\r\n setBowtieShapeBendSize(bowtieshapeBendSize - 1);\r\n }\r\n }\r\n if (textSelected && textSelected.text && textSelected.text.length > 10) {\r\n setBridgeShapeBendSize(-10);\r\n setBowtieShapeBendSize(-5);\r\n }\r\n setTextLength(textSelected.text.length);\r\n }\r\n };\r\n const textShapeChange = async (\r\n e,\r\n textChange = false,\r\n fontSize = null,\r\n charSpacing = null,\r\n strokeWidth = null,\r\n fontWeight = null,\r\n textAlign = null,\r\n fontStyle = null\r\n ) => {\r\n let pathData = null;\r\n let p = null;\r\n let shapeType = e && e.target ? e.target.value : e;\r\n if (!shapeType) {\r\n shapeType = textSelected.shapeType;\r\n }\r\n // setShapeType(shapeType);\r\n // if the selection is a text object then convert the text into path for shape deformation\r\n if (currentSelection === 'text') {\r\n pathData = await textToPath([textSelected]);\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n setBridgeShapeBendSize(-25);\r\n setBowtieShapeBendSize(-12);\r\n setTextLength(textSelected.text.length);\r\n }\r\n // when user changes the text value & text shape is applied\r\n else if (currentSelection === 'path' && textChange) {\r\n if (textSelected.text && textSelected.text.trim() === '') {\r\n textSelected.path = [];\r\n textSelected._removeCacheCanvas();\r\n canvas.renderAll();\r\n return;\r\n }\r\n // create a temp text with same properties & convert to path\r\n const text: any = new fabric.Text(textSelected.text, {\r\n lineHeight: 1,\r\n fill: textSelected.fill,\r\n fontFamily: textSelected.fontFamily,\r\n fontWeight: fontWeight ? fontWeight : textSelected.fontWeight,\r\n top: textSelected.top,\r\n left: textSelected.left,\r\n stroke: textSelected.stroke,\r\n strokeWidth: strokeWidth ? strokeWidth : textSelected.strokeWidth,\r\n fontStyle: fontStyle ? fontStyle : textSelected.fontStyle,\r\n paintFirst: 'stroke',\r\n charSpacing: charSpacing ? charSpacing : textSelected.charSpacing,\r\n padding: textSelected.padding,\r\n fontSize: fontSize ? fontSize : textSelected.fontSize,\r\n textAlign: textAlign ? textAlign : textSelected.textAlign,\r\n name: 'text',\r\n lockScalingFlip: true,\r\n centeredScaling: true,\r\n text: textSelected.text,\r\n width: textSelected.width,\r\n height: textSelected.height,\r\n });\r\n text.set({\r\n //@ts-ignore\r\n colorFill: textSelected.colorFill,\r\n fontWeight: fontWeight,\r\n });\r\n text.left = textSelected.left;\r\n text.top = textSelected.top;\r\n text.width = textSelected.width;\r\n text.height = textSelected.height;\r\n text.scaleX = textSelected.scaleX;\r\n text.scaleY = textSelected.scaleY;\r\n text.id = textSelected.id;\r\n\r\n pathData = await textToPath([text]);\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n }\r\n // when the selection is path but no change in the text string\r\n else if (currentSelection === 'path' && !textChange) {\r\n pathData = textSelected.pathData;\r\n //@ts-ignore\r\n p = new Path(pathData.toClipPathSVG());\r\n } else {\r\n return;\r\n }\r\n // console.log(shapeType)\r\n switch (shapeType) {\r\n case 'None': {\r\n setShapeSizeVal(0);\r\n textSelected.shapeType = 'None';\r\n // revert back to text type object\r\n const text: any = new fabric.Text(textSelected.text, {\r\n lineHeight: 1,\r\n fill: textSelected.fill,\r\n fontFamily: textSelected.fontFamily,\r\n fontWeight: fontWeight ? fontWeight : textSelected.fontWeight,\r\n top: textSelected.top,\r\n left: textSelected.left,\r\n stroke: textSelected.stroke,\r\n strokeWidth: strokeWidth ? strokeWidth : textSelected.strokeWidth,\r\n fontStyle: fontStyle ? fontStyle : textSelected.fontStyle,\r\n paintFirst: 'stroke',\r\n charSpacing: charSpacing ? charSpacing : textSelected.charSpacing,\r\n padding: textSelected.padding,\r\n fontSize: fontSize ? fontSize : textSelected.fontSize,\r\n textAlign: textAlign ? textAlign : textSelected.textAlign,\r\n name: 'text',\r\n lockScalingFlip: true,\r\n centeredScaling: true,\r\n text: textSelected.text,\r\n });\r\n text.set({\r\n //@ts-ignore\r\n colorFill: textSelected.colorFill,\r\n fontWeight: fontWeight,\r\n });\r\n text.left = textSelected.left;\r\n text.top = textSelected.top;\r\n text.width = text.getBoundingRect().width;\r\n text.height = text.getBoundingRect().height;\r\n text.scaleX = textSelected.scaleX;\r\n text.scaleY = textSelected.scaleY;\r\n text.id = textSelected.id;\r\n\r\n // delete the active text object\r\n canvas.remove(textSelected);\r\n textSelected._removeCacheCanvas();\r\n canvas.setActiveObject(null);\r\n canvas.renderAll();\r\n\r\n // Add the text object keeping same properties\r\n canvas.add(text);\r\n text.setCoords();\r\n\r\n // set active object as path text\r\n canvas.setActiveObject(text);\r\n use3dddPlus.setState({ activeSelection: text });\r\n\r\n //@ts-ignore\r\n use3dddPlus.getState().forIconCapture();\r\n text['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(text);\r\n // canvas.setActiveObject(text);\r\n // use3dddPlus.setState({ activeSelection: text });\r\n canvas.renderAll();\r\n // cancel performing further functions & return back from function\r\n return;\r\n }\r\n case 'Arc': {\r\n setShapeSizeVal(50);\r\n textSelected.shapeType = 'Arc';\r\n p.warp({\r\n type: 'WARP_ARC',\r\n bend: 50 / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bridge': {\r\n setShapeSizeVal(-25);\r\n bridgeShapeChange();\r\n textSelected.shapeType = 'Bridge';\r\n p.warp({\r\n type: 'WARP_ARC_LOWER',\r\n bend: bridgeshapeBendSize / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Bowtie': {\r\n setShapeSizeVal(-12);\r\n bridgeShapeChange();\r\n textSelected.shapeType = 'Bowtie';\r\n p.warp({\r\n type: 'WARP_BULGE',\r\n bend: bowtieshapeBendSize / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Vertical Arch': {\r\n setShapeSizeVal(35);\r\n textSelected.shapeType = 'Vertical Arch';\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: 35 / 100 || 0,\r\n });\r\n break;\r\n }\r\n case 'Reverse Vertical Arch': {\r\n setShapeSizeVal(-35);\r\n textSelected.shapeType = 'Reverse Vertical Arch';\r\n p.warp({\r\n type: 'WARP_ARCH',\r\n bend: -35 / 100 || 0,\r\n });\r\n break;\r\n }\r\n default:\r\n break;\r\n }\r\n // take out the update path with shape type deformation\r\n let fabricPath = new fabric.Path(p.output());\r\n textSelected['pathData'] = pathData;\r\n // add object only when converting from text to path\r\n if (currentSelection === 'text') {\r\n // add the path text object on canvas\r\n canvas.add(fabricPath);\r\n fabricPath['pathData'] = pathData;\r\n fabricPath['colorFill'] = textSelected.colorFill;\r\n fabricPath['shapeSize'] = shapeSizeVal;\r\n fabricPath['shapeType'] = shapeType;\r\n // carry forward the text properties over the path for further changes\r\n fabricPath['fill'] = textSelected.fill;\r\n fabricPath['fontFamily'] = textSelected.fontFamily;\r\n fabricPath['fontWeight'] = textSelected.fontWeight;\r\n fabricPath['stroke'] = textSelected.stroke;\r\n fabricPath['strokeWidth'] = textSelected.strokeWidth;\r\n fabricPath['padding'] = textSelected.padding;\r\n fabricPath['fontSize'] = textSelected.fontSize;\r\n fabricPath['charSpacing'] = textSelected.charSpacing;\r\n fabricPath['textAlign'] = textSelected.textAlign;\r\n fabricPath['fontStyle'] = textSelected.fontStyle;\r\n fabricPath['text'] = textSelected.text;\r\n fabricPath['id'] = textSelected.id;\r\n\r\n // Set the same position scale matching with existing text\r\n fabricPath.left = textSelected.left;\r\n fabricPath.top = textSelected.top;\r\n fabricPath.width = textSelected.width;\r\n fabricPath.height = textSelected.height;\r\n fabricPath.scaleX = textSelected.scaleX;\r\n fabricPath.scaleY = textSelected.scaleY;\r\n fabricPath.setCoords();\r\n //@ts-ignore\r\n let dims = fabricPath._calcDimensions();\r\n fabricPath.width = dims.width;\r\n fabricPath.height = dims.height;\r\n\r\n // var sel = new fabric.ActiveSelection(fabricPath, { canvas: canvas });\r\n // canvas.setActiveObject(sel).requestRenderAll();\r\n // delete the text object\r\n canvas.remove(textSelected);\r\n // set active object as path text\r\n canvas.setActiveObject(fabricPath);\r\n use3dddPlus.setState({ activeSelection: fabricPath });\r\n use3dddPlus.getState().forIconCapture();\r\n fabricPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(fabricPath);\r\n }\r\n // update the text path object with new shape type\r\n else {\r\n // add new textPath\r\n let newTextPath = new fabric.Path(p.output());\r\n newTextPath['pathData'] = textSelected.pathData;\r\n newTextPath['colorFill'] = textSelected.colorFill;\r\n newTextPath['shapeSize'] = textSelected.shapeSize;\r\n newTextPath['shapeType'] = textSelected.shapeType;\r\n newTextPath['fill'] = textSelected.fill;\r\n newTextPath['fontFamily'] = textSelected.fontFamily;\r\n newTextPath['fontWeight'] = textSelected.fontWeight;\r\n newTextPath['stroke'] = textSelected.stroke;\r\n newTextPath['strokeWidth'] = textSelected.strokeWidth;\r\n newTextPath['padding'] = textSelected.padding;\r\n newTextPath['fontSize'] = textSelected.fontSize;\r\n newTextPath['charSpacing'] = textSelected.charSpacing;\r\n newTextPath['textAlign'] = textSelected.textAlign;\r\n newTextPath['fontStyle'] = textSelected.fontStyle;\r\n newTextPath['text'] = textSelected.text;\r\n // set same position & scale\r\n newTextPath['left'] = textSelected.left;\r\n newTextPath['top'] = textSelected.top;\r\n newTextPath['width'] = textSelected.width;\r\n newTextPath['height'] = textSelected.height;\r\n newTextPath['scaleX'] = textSelected.scaleX;\r\n newTextPath['scaleY'] = textSelected.scaleY;\r\n newTextPath['id'] = textSelected.id;\r\n\r\n // delete the active text object\r\n var activeObj = canvas.getActiveObject();\r\n canvas.remove(activeObj);\r\n if (activeObj && activeObj !== null) {\r\n activeObj._removeCacheCanvas();\r\n }\r\n\r\n // add & set active new path text\r\n canvas.add(newTextPath);\r\n canvas.setActiveObject(newTextPath);\r\n use3dddPlus.setState({ activeSelection: newTextPath });\r\n newTextPath.setCoords();\r\n\r\n //@ts-ignore\r\n let dims = newTextPath._calcDimensions();\r\n newTextPath.width = dims.width;\r\n newTextPath.height = dims.height;\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n newTextPath['icon'] = use3dddPlus.getState().iconImage;\r\n updateStoreAllObject(newTextPath);\r\n }\r\n canvas.renderAll();\r\n let brNew = use3dddPlus.getState().activeSelection.getBoundingRect();\r\n while (\r\n Math.ceil(brNew.width + brNew.left + 45) >= Math.floor(canvas.width) ||\r\n Math.ceil(brNew.height + brNew.top + 10) >= Math.floor(canvas.height) ||\r\n Math.ceil(brNew.left) < 0 ||\r\n Math.ceil(brNew.top) < 0\r\n ) {\r\n textSelected.set('fontSize', textSelected.fontSize - 0.1);\r\n canvas.remove(canvas.getActiveObject());\r\n await textShapeChange(textSelected.shapeType, true);\r\n const activeObj = canvas.getActiveObject();\r\n brNew.left = activeObj.left;\r\n brNew.width = activeObj.width;\r\n brNew.top = activeObj.top;\r\n brNew.height = activeObj.height;\r\n textSelected.setCoords();\r\n canvas.renderAll();\r\n }\r\n };\r\n const updateStoreAllObject = (text) => {\r\n // @ts-ignore\r\n // var index = use3dddPlus.getState().storeAllObject.indexOf(textSelected);\r\n // let object = [{ objects: [] }];\r\n // const canvasGetobject = use3dddPlus.getState().fabricCanvas.getObjects();\r\n // canvasGetobject.forEach((element: any) => {\r\n // if (element && element.shapeType) {\r\n // element.type = 'path';\r\n // }\r\n // object[0].objects.push(element);\r\n // });\r\n // use3dddPlus.getState().storeHistory.push(object[0]); // for updateModifaction\r\n use3dddPlus.getState().updateModifaction(true);\r\n\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === textSelected.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n //@ts-ignore\r\n use3dddPlus.getState().storeAllObject.splice(index, 0, text);\r\n };\r\n const textShapeSizeHandler = (e) => {\r\n setShapeSizeVal(e.target.valueAsNumber);\r\n textSelected.shapeSize = e.target.valueAsNumber;\r\n console.log(e.target.valueAsNumber);\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n\r\n setShapeSizeOnTextPath(textSelected.shapeSize);\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n };\r\n\r\n const reduceFontSize = async () => {\r\n let brNew = textSelected.getBoundingRect();\r\n let canvasWidth = 0;\r\n let canvasHeight = 0;\r\n if (textSelected && textSelected.canvas && textSelected.canvas.width) {\r\n canvasWidth = textSelected.canvas.width;\r\n canvasHeight = textSelected.canvas.height;\r\n } else {\r\n canvasWidth = canvas.width;\r\n canvasHeight = canvas.height;\r\n }\r\n while (\r\n Math.ceil(brNew.width + brNew.left + 45) > Math.floor(canvasWidth) ||\r\n Math.ceil(brNew.height + brNew.top + 10) > Math.floor(canvasHeight) ||\r\n Math.ceil(brNew.left) < 0 ||\r\n Math.ceil(brNew.top) < 0\r\n ) {\r\n textSelected.set('fontSize', textSelected.fontSize - 0.1);\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n canvas.renderAll();\r\n const activeObj = canvas.getActiveObject();\r\n brNew.left = activeObj.left;\r\n brNew.width = activeObj.width;\r\n brNew.top = activeObj.top;\r\n brNew.height = activeObj.height;\r\n } else {\r\n brNew = textSelected.getBoundingRect();\r\n }\r\n textSelected.setCoords();\r\n // canvas.renderAll();\r\n }\r\n };\r\n\r\n const onTextChange = async (e) => {\r\n const lines = e.target.value.split('\\n');\r\n lines.length == 1 ? setTextAlignDisplay(false) : setTextAlignDisplay(true);\r\n use3dddPlus.setState({ textInfo: e.target.value });\r\n textSelected['text'] = e.target.value;\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n }\r\n // let textWidth = textSelected.width;\r\n // const canvasWidth = canvas.width;\r\n reduceFontSize();\r\n // var newFontSize =\r\n // (canvasWidth / (brNew.width + brNew.left)) * textSelected.fontSize;\r\n // textSelected.set('fontSize', textSelected.fontSize - 3);\r\n textSelected.setCoords();\r\n canvas.renderAll();\r\n reduceFontSize();\r\n canvas.renderAll();\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n };\r\n const textAlignHandler = (e) => {\r\n console.log(e.target.id);\r\n setActiveButton(e.target.id);\r\n textSelected.set('textAlign', e.target.id);\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n // const handleSliderChange = (event) => {\r\n // let fontSize = textSelected.fontSize;\r\n // let toReduceSize = event.target.value - fontSize;\r\n // let dublicateText = textSelected;\r\n // // let brNew;\r\n // dublicateText.set('fontSize', event.target.value);\r\n // // if (currentSelection === 'path') {\r\n // // textShapeChange(dublicateText.shapeType, true);\r\n // // brNew = use3dddPlus.getState().activeSelection.getBoundingRect();\r\n // // } else {\r\n // // brNew = dublicateText.getBoundingRect();\r\n // // }\r\n // const brNew = dublicateText.getBoundingRect();\r\n // if (\r\n // brNew.width + brNew.left + 45 >= textSelected.canvas.width ||\r\n // brNew.height + brNew.top + 10 >= textSelected.canvas.height ||\r\n // brNew.left < 45 ||\r\n // brNew.top < 10\r\n // ) {\r\n // if (currentSelection === 'path') {\r\n // textSelected.set(\r\n // 'fontSize',\r\n // event.target.value - (Math.sign(toReduceSize) >= 0 ? toReduceSize : 1)\r\n // );\r\n // textShapeChange(textSelected.shapeType, true);\r\n // } else {\r\n // if (brNew.left < 0) {\r\n // textSelected.set('left', textSelected.left + 1);\r\n // }\r\n // if (brNew.top < 0) {\r\n // textSelected.set('top', textSelected.top + 1);\r\n // }\r\n // textSelected.set(\r\n // 'fontSize',\r\n // event.target.value - (Math.sign(toReduceSize) >= 0 ? toReduceSize : 1)\r\n // );\r\n // }\r\n // } else {\r\n // if (fontSize > event.target.value) {\r\n // textSelected.set('top', textSelected.top + 1);\r\n // textSelected.set('left', textSelected.left + 1);\r\n // } else {\r\n // textSelected.set('top', textSelected.top - 1);\r\n // textSelected.set('left', textSelected.left - 1);\r\n // }\r\n // textSelected.set('fontSize', event.target.value);\r\n // if (currentSelection === 'path') {\r\n // textShapeChange(textSelected.shapeType, true);\r\n // }\r\n // canvas.renderAll();\r\n // // setSliderValue(event.target.value);\r\n // }\r\n // };\r\n\r\n const reduceLeft = async () => {\r\n const canvasWidth = textSelected.canvas.width;\r\n const canvasHeight = textSelected.canvas.height;\r\n let brNew = textSelected.getBoundingRect();\r\n while (\r\n Math.ceil(brNew.width + brNew.left + 45) >= Math.floor(canvasWidth) ||\r\n Math.ceil(brNew.height + brNew.top + 10) >= Math.floor(canvasHeight) ||\r\n Math.ceil(brNew.left) < 0 ||\r\n Math.ceil(brNew.top) < 0\r\n ) {\r\n textSelected.set('fontSize', textSelected.fontSize - 0.1);\r\n if (currentSelection === 'path') {\r\n await textShapeChange(textSelected.shapeType, true);\r\n canvas.renderAll();\r\n const activeObj = canvas.getActiveObject();\r\n brNew.left = activeObj.left;\r\n brNew.width = activeObj.width;\r\n brNew.top = activeObj.top;\r\n brNew.height = activeObj.height;\r\n } else {\r\n brNew = textSelected.getBoundingRect();\r\n }\r\n textSelected.setCoords();\r\n canvas.renderAll();\r\n }\r\n };\r\n\r\n const fontChange = (e) => {\r\n fontFamilies.map((item) => {\r\n if (item.name == e.target.value) {\r\n const font = new FontFace(item.name, `url('${item.src}')`);\r\n font.load().then((value) => {\r\n //@ts-ignore\r\n document.fonts?.add(value);\r\n document.body.classList.add('fonts-loaded');\r\n textSelected.set('fontFamily', item.name);\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n canvas.renderAll();\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n reduceLeft();\r\n });\r\n }\r\n });\r\n };\r\n const textColorChange = (property, color: any) => {\r\n console.log(property);\r\n textSelected.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n //textSelected.set('fill', color);\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n // const nudgeMove = (e) => {\r\n // if (e.target.id === 'down') {\r\n // if (textSelected.aCoords.br.y > canvas.height - 2) return;\r\n // use3dddPlus.getState().moveDown(textSelected);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // } else if (e.target.id === 'up') {\r\n // if (textSelected.aCoords.tr.y < 5) return;\r\n // use3dddPlus.getState().moveUp(textSelected);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // } else if (e.target.id === 'right') {\r\n // if (textSelected.aCoords.tr.x > canvas.height - 2) return;\r\n // use3dddPlus.getState().moveRight(textSelected);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // } else if (e.target.id === 'left') {\r\n // if (textSelected.aCoords.tl.x < 2) return;\r\n // use3dddPlus.getState().moveLeft(textSelected);\r\n // use3dddPlus.getState().updateModifaction(true);\r\n // }\r\n // };\r\n const textOutlineHandler = (e) => {\r\n // setOutlineVal(e.target.valueAsNumber);\r\n textSelected.strokeWidth = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const strokeColorChange = (property, color) => {\r\n console.log(property);\r\n textSelected.set('stroke', color);\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const textSpacingHandler = (e) => {\r\n // setSpacinglineVal(e.target.valueAsNumber);\r\n let dublicateText = textSelected;\r\n let oldCharSpacing = dublicateText.charSpacing;\r\n dublicateText.charSpacing = e.target.valueAsNumber;\r\n const brNew = dublicateText.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= dublicateText.canvas.width ||\r\n brNew.height + brNew.top >= dublicateText.canvas.height ||\r\n brNew.left < 0 ||\r\n brNew.top < 0\r\n ) {\r\n if (textSelected.charSpacing > e.target.valueAsNumber) {\r\n textSelected.charSpacing = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n } else {\r\n textSelected.charSpacing = e.target.valueAsNumber;\r\n if (currentSelection === 'path') {\r\n textShapeChange(textSelected.shapeType, true);\r\n }\r\n // use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n const brNew = textSelected.getBoundingRect();\r\n if (\r\n brNew.width + brNew.left + 45 >= dublicateText.canvas.width ||\r\n brNew.height + brNew.top >= dublicateText.canvas.height ||\r\n brNew.left < 0 ||\r\n brNew.top < 0\r\n ) {\r\n textSelected.charSpacing = oldCharSpacing;\r\n }\r\n canvas.renderAll();\r\n if (textSelected.aCoords.tr.x > 480) {\r\n return;\r\n }\r\n }\r\n };\r\n const textStyle = (e: any, key: string, value: any) => {\r\n if (fontStyle[e.target.id]) textSelected.set(key, '');\r\n else textSelected.set(key, value);\r\n setFontStyle((state) => ({ ...state, [e.target.id]: !state[e.target.id] }));\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const layerHandle = (element, index, num) => {\r\n const currentObject = [...use3dddPlus.getState().storeAllObject];\r\n if (num === 'minus') {\r\n canvas.sendBackwards(element);\r\n use3dddPlus.setState({\r\n storeAllObject: changeArr(currentObject, index, index + 1),\r\n });\r\n } else {\r\n canvas.bringForward(element);\r\n use3dddPlus.setState({\r\n storeAllObject: changeArr(currentObject, index, index - 1),\r\n });\r\n }\r\n canvas.sendToBack(use3dddPlus.getState().verticalLine);\r\n canvas.sendToBack(use3dddPlus.getState().horizontalLine);\r\n };\r\n const changeArr = (arr, fromIndex, toIndex) => {\r\n const element = arr.splice(fromIndex, 1)[0];\r\n arr.splice(toIndex, 0, element);\r\n return arr;\r\n };\r\n const deleteElement = (item) => {\r\n canvas.remove(item);\r\n canvas.requestRenderAll();\r\n removeItem(item);\r\n };\r\n const removeItem = (value: any) => {\r\n //@ts-ignore\r\n var index = use3dddPlus\r\n .getState()\r\n .storeAllObject.findIndex((obj: any) => obj.id === value.id);\r\n if (index > -1) {\r\n use3dddPlus.getState().storeAllObject.splice(index, 1);\r\n }\r\n use3dddPlus.setState({\r\n storeAllObject: [...use3dddPlus.getState().storeAllObject],\r\n });\r\n };\r\n const changeSVGTextColor = (property, color) => {\r\n const previousColor = property;\r\n canvas.getObjects().map((data) => {\r\n if (data.type === 'text') {\r\n let _C = data.fill;\r\n if (_C === previousColor) {\r\n data.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n }\r\n // canvas.renderAll();\r\n } else if (data.type === 'path') {\r\n let _C = data.fill;\r\n if (_C === previousColor) {\r\n data.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n }\r\n // canvas.renderAll();\r\n } else if (data.type === 'group') {\r\n // console.log(data);\r\n let objImage = data._objects;\r\n objImage.forEach((ele) => {\r\n const _C =\r\n ele.fill === 'transparent' ||\r\n (typeof ele.fill === 'string' && ele.fill.includes('#'))\r\n ? ele.fill\r\n : RGBToHex(ele.fill);\r\n if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n }\r\n });\r\n const colorFill = { ...data.colorFill };\r\n Object.keys(colorFill).forEach((item) => {\r\n if (colorFill[item] === previousColor) {\r\n colorFill[item] = color;\r\n }\r\n });\r\n data.set({\r\n colorFill: colorFill,\r\n });\r\n }\r\n if (data && data.icon) {\r\n data.icon = data.toDataURL('image/png');\r\n } else if (data._objects && data._objects.length) {\r\n data._objects[0].icon = data.toDataURL('image/png');\r\n }\r\n });\r\n canvas.renderAll();\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n\r\n const changeSVGColor = (property, color) => {\r\n const fillColor = colorFill;\r\n const previousColor = fillColor[property];\r\n const SelectedObjet = use3dddPlus.getState().activeSelection;\r\n let objImage = SelectedObjet._objects;\r\n objImage.forEach((ele) => {\r\n const _C =\r\n ele.fill === 'transparent' ||\r\n (typeof ele.fill === 'string' && ele.fill.includes('#'))\r\n ? ele.fill\r\n : RGBToHex(ele.fill);\r\n if (_C === previousColor) {\r\n ele.set({\r\n fill: color,\r\n colorFill: { layer0: color },\r\n });\r\n }\r\n });\r\n\r\n const tempColorFill = { ...SelectedObjet.colorFill };\r\n Object.keys(tempColorFill).forEach((item) => {\r\n if (tempColorFill[item] === previousColor) {\r\n tempColorFill[item] = color;\r\n }\r\n });\r\n SelectedObjet.set({\r\n colorFill: tempColorFill,\r\n });\r\n\r\n canvas.renderAll();\r\n // fillColor[property] = color;\r\n // use3dddPlus.setState({ colorFill: fillColor });\r\n use3dddPlus.setState({ colorFill: tempColorFill });\r\n use3dddPlus.getState().forIconCapture();\r\n SelectedObjet.icon = use3dddPlus.getState().iconImage;\r\n use3dddPlus.getState().updateModifaction(true);\r\n };\r\n\r\n const RGBToHex = (rgb) => {\r\n if (rgb) {\r\n if (rgb.indexOf('rgba') >= 0) {\r\n const rgba = rgb.replace(/^rgba?\\(|\\s+|\\)$/g, '').split(',');\r\n return `#${(\r\n (1 << 24) +\r\n (parseInt(rgba[0]) << 16) +\r\n (parseInt(rgba[1]) << 8) +\r\n parseInt(rgba[2])\r\n )\r\n .toString(16)\r\n .slice(1)}`;\r\n } else {\r\n let sep = rgb.indexOf(',') > -1 ? ',' : ' ';\r\n rgb = rgb.substr(4).split(')')[0].split(sep);\r\n let r = (+rgb[0]).toString(16),\r\n g = (+rgb[1]).toString(16),\r\n b = (+rgb[2]).toString(16);\r\n\r\n if (r.length == 1) r = '0' + r;\r\n if (g.length == 1) g = '0' + g;\r\n if (b.length == 1) b = '0' + b;\r\n return '#' + r + g + b;\r\n }\r\n } else {\r\n return '';\r\n }\r\n };\r\n const flipX = () => {\r\n activeObj.set({\r\n flipX: !activeObj.flipX,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n canvas.renderAll();\r\n };\r\n const flipY = () => {\r\n activeObj.set({\r\n flipY: !activeObj.flipY,\r\n });\r\n use3dddPlus.getState().updateModifaction(true);\r\n use3dddPlus.getState().forIconCapture();\r\n textSelected.icon = use3dddPlus.getState().iconImage;\r\n // activeObj.\r\n canvas.renderAll();\r\n };\r\n\r\n const conflictColors = useMemo(() => {\r\n return allColor.filter(\r\n (c: string) =>\r\n defaultColorNames.findIndex(\r\n (dc) => dc.color.toLowerCase() === c.toLowerCase()\r\n ) < 0\r\n );\r\n }, [allColor]);\r\n\r\n const onSave = () => {\r\n canvas.discardActiveObject();\r\n canvas.renderAll();\r\n if (!conflictColors || conflictColors.length < 1) {\r\n setIsNextClicked(false);\r\n use3dddPlus.setState({ showCrossSave: true });\r\n if (canvas.getObjects().length > 0) {\r\n if (allColor.includes('transparent')) {\r\n if (allColor.length - 1 < 9)\r\n setToggleSaveLogo('save', true, 'Save Logo', {});\r\n else use3dddPlus.getState().toastMessages.noOfColors();\r\n } else {\r\n if (allColor.length < 9)\r\n setToggleSaveLogo('save', true, 'Save Logo', {});\r\n else use3dddPlus.getState().toastMessages.noOfColors();\r\n }\r\n } else {\r\n use3dddPlus.getState().toastMessages.noIteminCanvas();\r\n }\r\n } else {\r\n setIsNextClicked(true);\r\n }\r\n };\r\n\r\n const removeColorPalatte = () => {\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n };\r\n\r\n useEffect(() => {\r\n window.addEventListener('click', removeColorPalatte);\r\n const unSub = use3dddPlus.subscribe(\r\n (state) => state.colorFill,\r\n (_current, _previous) => {\r\n // console.log(\"_PREVIUS_COLORFIL\" , _previous);\r\n // console.log(\"_CURRENT_COLOR\",_current);\r\n }\r\n );\r\n return () => {\r\n window.removeEventListener('click', removeColorPalatte);\r\n unSub();\r\n };\r\n }, []);\r\n // console.log(\"====>\",activeSelection,currentSelection)\r\n\r\n const mergedColors = useMemo(() => {\r\n // FOR REMOVING ALL DUPLICATE COLOR CODES\r\n if (textSelected && textSelected?.colorFill) {\r\n let tempColors = [];\r\n let uniqueColors = {};\r\n Object.keys(textSelected?.colorFill)?.map((item: string) => {\r\n if (!tempColors.includes(textSelected?.colorFill[item])) {\r\n tempColors.push(textSelected?.colorFill[item]);\r\n uniqueColors[item] = textSelected?.colorFill[item];\r\n }\r\n });\r\n return uniqueColors;\r\n } else {\r\n return [];\r\n }\r\n }, [textSelected?.colorFill]);\r\n return (\r\n <div\r\n className=\"text-left flex-1 h-[100%] px-[25px] pt-[23px] pb-[5px] relative \"\r\n style={{ paddingLeft: '15px' }}\r\n >\r\n <div className=\"flex flex-col \">\r\n <h1 className=\"text-[22px] font-bold\">Edit Design</h1>\r\n\r\n <div className=\"w-full\">\r\n <div className=\"flex my-4 flex-nowrap\">\r\n {tabs.map((tab) => (\r\n <button\r\n key={tab.id}\r\n className={`${\r\n activeTab === tab.id\r\n ? 'bg-[#E11A38] text-white'\r\n : 'bg-[#fff] text-gray-800'\r\n } py-[10px] px-[40px] focus:outline-none uppercase text-[13px] font-bold`}\r\n onClick={() => {\r\n setActiveTab(tab.id);\r\n if (tab.id === 1) {\r\n use3dddPlus.setState({ currentSelection: 'none' });\r\n canvas.discardActiveObject();\r\n canvas.renderAll();\r\n }\r\n if (tab.id === 2) {\r\n use3dddPlus.setState({ currentSelection: 'layer' });\r\n }\r\n }}\r\n >\r\n {tab.label}\r\n </button>\r\n ))}\r\n </div>\r\n <div className=\"bg-gray-100 w-full p-[5px]\">\r\n {activeTab === 1 && (\r\n <div key={activeTab}>\r\n <div\r\n className={\r\n 'overflow-y-auto overflow-x-hidden' +\r\n (!isNextClicked ||\r\n !conflictColors ||\r\n conflictColors.length < 1\r\n ? ' 2xl:h-[60vh] h-[50vh] sm:h-[55vh]'\r\n : '')\r\n }\r\n >\r\n {(currentSelection === 'text' ||\r\n currentSelection === 'path') && (\r\n <div className=\" \">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Enter Text\r\n </div>\r\n <textarea\r\n value={textInfo}\r\n onChange={onTextChange}\r\n className=\"w-[100%] border border-solid-[1px] border-[#9A9A9A] py-[10px] pl-[16px] mb-[16.5px]\"\r\n placeholder=\"LOGO TEXT\"\r\n />\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Select Font\r\n </div>\r\n <select\r\n name=\"FontStyleNumber\"\r\n id=\"FontStyleNumber\"\r\n value={textSelected.fontFamily}\r\n onChange={fontChange}\r\n // className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid\t ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-current focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid\t ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n >\r\n {fontFamilies.map((list) => {\r\n return (\r\n <>\r\n <option value={list.name}>{list.name}</option>\r\n </>\r\n );\r\n })}\r\n </select>\r\n {/* <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n TEXT SIZE\r\n </div>\r\n <input\r\n type=\"range\"\r\n value={textSelected.fontSize}\r\n onChange={handleSliderChange}\r\n className=\" rangeSlider w-full mb-[16.5px]\"\r\n id=\"slider\"\r\n style={{\r\n background: `linear-gradient(to right, #e11a38 0%, #e11a38 ${textSelected.fontSize}%, #fff ${textSelected.fontSize}%, #fff 100%)`,\r\n }}\r\n /> */}\r\n\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Style\r\n </div>\r\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\r\n {' '}\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.fontWeight === 'bold'\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border font-bold border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] font-bold text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'fontWeight', 'bold')}\r\n id=\"bold\"\r\n >\r\n B\r\n </button>\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.fontStyle &&\r\n textSelected.fontStyle === 'italic'\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border italic border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] italic text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) => textStyle(e, 'fontStyle', 'italic')}\r\n id=\"italic\"\r\n >\r\n I\r\n </button>\r\n <button\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n className={\r\n textSelected.underline &&\r\n textSelected.underline === true\r\n ? `${SELECT_BG_COLOR} text-[#fff] text-base cursor-pointer border underline border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] underline text-base cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n style={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n ? {\r\n color: '#cccccc',\r\n cursor: 'default',\r\n backgroundColor: '#ffffff',\r\n }\r\n : {}\r\n }\r\n onClick={(e) =>\r\n textStyle(e, 'underline', !fontStyle.underline)\r\n }\r\n id=\"underline\"\r\n >\r\n U\r\n </button>\r\n </div>\r\n\r\n {textAlignDisplay === true && (\r\n <div className=\"textAlign\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Align\r\n </div>\r\n <div className=\"flex gap-x-[15px] mb-[16.5px]\">\r\n <button\r\n type=\"button\"\r\n className={\r\n 'left' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"left\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignLeft\r\n id=\"left\"\r\n onClick={textAlignHandler}\r\n />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={\r\n 'center' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"center\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignCenter\r\n id=\"center\"\r\n onClick={textAlignHandler}\r\n />\r\n </button>\r\n <button\r\n type=\"button\"\r\n className={\r\n 'right' === activeButton\r\n ? `${SELECT_BG_COLOR} text-[#fff] cursor-pointer border border-[#EBEBEB] y-[7px] px-[25px] `\r\n : 'bg-[#fff] cursor-pointer border border-[#EBEBEB] py-[7px] px-[25px]'\r\n }\r\n id=\"right\"\r\n onClick={textAlignHandler}\r\n >\r\n <FiAlignRight\r\n id=\"right\"\r\n onClick={textAlignHandler}\r\n />\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Text Color\r\n </div>\r\n <div className=\"relative flex\">\r\n <ColorImpl\r\n mClass={'ml-0'}\r\n handleChange={textColorChange}\r\n property={'backgroundColor'}\r\n name={'backgroundColor'}\r\n color={activeSelection.fill}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={textColorChange}\r\n />\r\n </div>\r\n <div className=\"flex gap-2 mt-4\">\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Outline Size\r\n </div>\r\n <input\r\n type=\"number\"\r\n id=\"outlineSize\"\r\n name=\"outlineSize\"\r\n step=\"0.2\"\r\n value={textSelected.strokeWidth}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textOutlineHandler}\r\n ></input>\r\n </div>\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Outline Color\r\n </div>\r\n <div className=\"relative flex\">\r\n {' '}\r\n <ColorImpl\r\n mClass={'ml-0'}\r\n handleChange={strokeColorChange}\r\n property={'backgroundColor'}\r\n name={'backgroundColor'}\r\n color={activeSelection.stroke}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={strokeColorChange}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n <div className=\"flex gap-2\">\r\n <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Letter Spacing\r\n </div>\r\n <input\r\n disabled={\r\n textSelected &&\r\n textSelected.shapeType &&\r\n textSelected.shapeType !== 'none'\r\n }\r\n type=\"number\"\r\n id=\"spacing\"\r\n name=\"spacing\"\r\n step=\"10\"\r\n value={textSelected.charSpacing}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textSpacingHandler}\r\n ></input>\r\n </div>\r\n {/* <div>\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Nudge\r\n </div>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"down\"\r\n className=\"font-medium text-orange-400\"\r\n >\r\n DOWN\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"up\"\r\n className=\"font-medium text-orange-300 text-lime-400 px-1\"\r\n >\r\n UP\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"left\"\r\n className=\"font-medium text-orange-300 text-teal-500\"\r\n >\r\n LEFT\r\n </button>\r\n <button\r\n onClick={nudgeMove}\r\n id=\"right\"\r\n className=\"font-medium text-orange-300 text-violet-600 px-1\"\r\n >\r\n RIGHT\r\n </button>\r\n </div> */}\r\n </div>\r\n <div className=\"flex gap-2\">\r\n <div className=\"w-[50%]\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Text Shape\r\n </div>\r\n <select\r\n name=\"textShape\"\r\n id=\"textShape\"\r\n value={\r\n textSelected.shapeType\r\n ? textSelected.shapeType\r\n : 'None'\r\n }\r\n onChange={textShapeChange}\r\n // className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid   ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-current focus:outline-offset-0 focus:rounded-sm mb-[16.5px]`}\r\n className={`${INPUT_BG_COLOR} font-bold ${TEXT_COLOR_1} ${TEXT_SIZE_3} border border-solid   ${BORDER_COLOR_1} select select-bordered w-full rounded-none focus:outline-offset-0 focus:rounded-sm mb-[16.5px] ml-[2px]`}\r\n >\r\n {textShapes.map((list) => {\r\n return (\r\n <>\r\n <option value={list.name}>{list.name}</option>\r\n </>\r\n );\r\n })}\r\n </select>\r\n </div>\r\n <div className=\"w-[50%]\">\r\n <div className=\"uppercase font-bold text-sm mb-[8.5px]\">\r\n Shape Size\r\n </div>\r\n <input\r\n type=\"number\"\r\n id=\"shapeSize\"\r\n name=\"shapeSize\"\r\n step=\"10\"\r\n value={shapeSizeVal}\r\n className=\"border border-[#EBEBEB] py-[10px] pl-[16px] mb-[16.5px] w-[145px]\"\r\n onChange={textShapeSizeHandler}\r\n ></input>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n {currentSelection === 'group' && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">\r\n Colors\r\n </div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px]\">\r\n {/* {allColor &&\r\n allColor?.map((item) => {\r\n return (\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={item}\r\n handleChange={changeSVGTextColor}\r\n property={item}\r\n color={item}\r\n />\r\n );\r\n })} */}\r\n {mergedColors &&\r\n Object.keys(mergedColors)?.map((item, i) => {\r\n return (\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGColor}\r\n property={item}\r\n color={activeSelection.colorFill[item]}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGColor}\r\n />\r\n );\r\n })}\r\n </div>\r\n {/*{(allColor && allColor.includes('transparent')\r\n ? allColor.length - 1\r\n : allColor.length) > 8 && (\r\n <ErrorPopup allColor={allColor} />\r\n )} */}\r\n {/* <div>\r\n <div className=\"font-bold uppercase mt-[17px]\">\r\n Flip\r\n </div>\r\n <div className=\"flex gap-x-[1rem] mt-[12px]\">\r\n <IconButton\r\n key={`index`}\r\n label=\"\"\r\n icon={<FlipH />}\r\n onClick={flipX}\r\n className={` bg-[#fff] cursor-pointer border border-[#EBEBEB]`}\r\n size=\"1.8rem\"\r\n ></IconButton>\r\n <IconButton\r\n key={`index`}\r\n label=\"\"\r\n onClick={flipY}\r\n icon={<FlipV />}\r\n className={` bg-[#fff] cursor-pointer border border-[#EBEBEB]`}\r\n size=\"1.8rem\"\r\n ></IconButton>\r\n </div>\r\n </div> */}\r\n <>\r\n <div className=\"my-[24.5px]\">\r\n <p\r\n className={`text-[1rem] text-[#353535] flex text-left leading-[21px] font-bold mb-[12px] uppercase`}\r\n >\r\n Flip\r\n </p>\r\n <div className=\"flex gap-x-[15px]\">\r\n <IconButton\r\n label=\"\"\r\n icon={<HorizontalFlip />}\r\n className={`!w-[5.625rem] !h-[2.625rem] bg-[#fff] cursor-pointer border border-[#EBEBEB] `}\r\n size=\"1.5rem\"\r\n onClick={flipX}\r\n ></IconButton>\r\n <IconButton\r\n key={`index`}\r\n label=\"\"\r\n icon={<VerticalFlip />}\r\n className={`!w-[5.625rem] !h-[2.625rem] bg-[#fff] cursor-pointer border border-[#EBEBEB] `}\r\n size=\"2.5rem\"\r\n onClick={flipY}\r\n ></IconButton>\r\n </div>\r\n </div>\r\n </>\r\n </>\r\n\r\n // <ImageEdit\r\n // flipX={flipX}\r\n // flipY={flipY}\r\n // // changeSVGColor={changeSVGColor}\r\n // changeSVGTextColor={changeSVGTextColor}\r\n // // nudgeMove={nudgeMove}\r\n // // activeSelection={activeSelection}\r\n // allColor={allColor}\r\n // />\r\n )}\r\n {currentSelection === 'selectAll' && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">\r\n Color in Canvas\r\n </div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px] mb-[12px]\">\r\n {allColor?.map((item, i) => {\r\n return (\r\n // <ColorImpl\r\n // mClass={'mb-[10px]'}\r\n // key={'color-' + i}\r\n // handleChange={changeSVGTextColor}\r\n // property={item}\r\n // color={item}\r\n // />\r\n\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGTextColor}\r\n property={item}\r\n color={item}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGTextColor}\r\n />\r\n );\r\n })}\r\n </div>\r\n {(allColor && allColor.includes('transparent')\r\n ? allColor.length - 1\r\n : allColor.length) > 8 && (\r\n <ErrorPopup allColor={allColor} />\r\n )}\r\n {/* {\r\n // console.log(storeAllObject);\r\n storeAllObject.map((item, index) => {\r\n return (\r\n <div className=\"innerLayer bg-slate-300 my-1\">\r\n <img\r\n className=\"rounded-lg w-14 h-8\"\r\n src={item ? item['icon'] : ''}\r\n ></img>\r\n <button\r\n className=\"up mx-1 px-2 border-solid border-2 border-slate-500 \"\r\n onClick={() => layerHandle(item, index, 'plus')}\r\n >\r\n UP\r\n </button>\r\n <button\r\n className=\"down mx-1 px-2 border-solid border-2 border-slate-500\"\r\n onClick={() =>\r\n layerHandle(item, index, 'minus')\r\n }\r\n >\r\n DOWN\r\n </button>\r\n <button\r\n className=\"close mx-1 px-2 border-solid border-2 border-slate-500\"\r\n onClick={() => deleteElement(item)}\r\n >\r\n DELETE\r\n </button>\r\n </div>\r\n );\r\n })\r\n } */}\r\n </>\r\n )}\r\n {currentSelection === 'none' && (\r\n <>\r\n <div className=\"uppercase font-bold pt-[17px]\">\r\n Color in Canvas\r\n </div>\r\n <div className=\"flex flex-wrap gap-x-[1rem] mt-[12px]\">\r\n {allColor?.map((item, i) => {\r\n return (\r\n // <ColorImpl\r\n // mClass={'mb-[10px]'}\r\n // key={'color-' + i}\r\n // handleChange={changeSVGTextColor}\r\n // property={item}\r\n // color={item}\r\n // />\r\n\r\n <ColorImpl\r\n mClass={'mb-[10px]'}\r\n key={'color-' + i}\r\n handleChange={changeSVGTextColor}\r\n property={item}\r\n color={item}\r\n setDisplayPallet={setDisplayPallet}\r\n setPosition={setPosition}\r\n callback={changeSVGTextColor}\r\n />\r\n );\r\n })}\r\n </div>\r\n {(allColor && allColor.includes('transparent')\r\n ? allColor.length - 1\r\n : allColor.length) > 8 && (\r\n <ErrorPopup allColor={allColor} />\r\n )}\r\n </>\r\n )}\r\n </div>\r\n {isNextClicked &&\r\n conflictColors &&\r\n conflictColors.length > 0 && (\r\n <div\r\n className=\"mb-[10px]\"\r\n style={{\r\n position: 'absolute',\r\n backgroundColor: '#FFFFFF',\r\n bottom: 0,\r\n padding: '7px',\r\n }}\r\n >\r\n <IconButton\r\n label=\"Close\"\r\n icon={<MdOutlineCancel />}\r\n onClick={() => {\r\n setIsNextClicked(false);\r\n }}\r\n className={''}\r\n size=\"1.5rem\"\r\n style={{\r\n position: 'absolute',\r\n cursor: 'pointer',\r\n fontWeight: 'bold',\r\n right: 10,\r\n top: -7,\r\n color: '#FF0000',\r\n }}\r\n ></IconButton>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ fontWeight: 'bold', marginBottom: '3px' }}\r\n >\r\n ERROR: CONFLICT IN COLOR USED\r\n </div>\r\n <div\r\n className=\"text-[#E11A38]\"\r\n style={{ marginBottom: '3px' }}\r\n >\r\n Note: The following colors used are not available in\r\n Richardson color palette. Please edit the colors used.\r\n </div>\r\n <div>\r\n {conflictColors.map((c: string, i: number) => {\r\n return (\r\n <div\r\n key={'color-' + i}\r\n style={{\r\n width: '100%',\r\n height: '30px',\r\n lineHeight: '30px',\r\n backgroundColor: c,\r\n textAlign: 'center',\r\n marginBottom: '3px',\r\n }}\r\n >\r\n <span\r\n style={{\r\n color: '#ffffff',\r\n mixBlendMode: 'difference',\r\n }}\r\n >\r\n {c}\r\n </span>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n )}\r\n\r\n <button\r\n type=\"button\"\r\n className=\"mt-3 inline-flex justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 w-full\"\r\n onClick={onSave}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n )}\r\n {activeTab === 2 && (\r\n <div key={activeTab}>\r\n {(currentSelection === 'layer' ||\r\n currentSelection === 'activeSelection') && (\r\n <div className=\"h-[40vh] sm:h-[55vh] 2xl:h-[60vh] overflow-y-auto overflow-x-hidden\">\r\n {storeAllObject.map((item: any, index) => {\r\n return (\r\n <>\r\n <div className=\"innerLayer border border-[#D7D7D7] my-[16px] h-[80px] flex justify-between\">\r\n <div className=\"imgBox border border-r-[#D7D7D7] bg-slate-200 flex w-[80px]\">\r\n <img\r\n className={`rounded-lg ${\r\n item && item.text ? 'object-contain' : ''\r\n }`}\r\n style={{\r\n // paddingTop: '7px',\r\n height: 'auto',\r\n width: 'auto',\r\n display: 'block',\r\n marginLeft: 'auto',\r\n marginRight: 'auto',\r\n // objectFit: 'contain',\r\n }}\r\n src={item ? item['icon'] : ''}\r\n ></img>\r\n </div>\r\n <div className=\"delBtnBox flex-auto \">\r\n <button\r\n onClick={() => deleteElement(item)}\r\n className=\"h-full w-full\"\r\n >\r\n <div className=\"delBtn pointer-events-none flex justify-center \">\r\n <div className=\"upIcon m-auto\">\r\n <svg\r\n width=\"25px\"\r\n height=\"25px\"\r\n viewBox=\"0 0 24 24\"\r\n fill=\"none\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n >\r\n <path\r\n d=\"M10 11V17\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M14 11V17\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M4 7H20\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M6 7H12H18V18C18 19.6569 16.6569 21 15 21H9C7.34315 21 6 19.6569 6 18V7Z\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n <path\r\n d=\"M9 5C9 3.89543 9.89543 3 11 3H13C14.1046 3 15 3.89543 15 5V7H9V5Z\"\r\n stroke=\"#9a9a9a\"\r\n stroke-width=\"2\"\r\n stroke-linecap=\"round\"\r\n stroke-linejoin=\"round\"\r\n />\r\n </svg>\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n\r\n <div className=\"delBox flex flex-col w-[40px] justify-between items-stretch\">\r\n <button\r\n disabled={index === 0}\r\n onClick={() => layerHandle(item, index, 'plus')}\r\n >\r\n <div className=\"upBtn pointer-events-none flex h-[35px] justify-center \">\r\n <div className=\"upIcon m-auto\">\r\n <svg\r\n fill={index === 0 ? '#cfcccc' : '#9a9a9a'}\r\n height=\"25px\"\r\n width=\"25px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n </div>\r\n </button>\r\n\r\n <button\r\n disabled={index === storeAllObject.length - 1}\r\n onClick={() =>\r\n layerHandle(item, index, 'minus')\r\n }\r\n >\r\n <div className=\"downBtn pointer-events-none flex h-[35px] justify-center\">\r\n <div className=\"downIcon m-auto\">\r\n <svg\r\n transform=\"rotate(180)\"\r\n fill={\r\n index === storeAllObject.length - 1\r\n ? '#cfcccc'\r\n : '#9a9a9a'\r\n }\r\n height=\"25px\"\r\n width=\"25px\"\r\n version=\"1.1\"\r\n id=\"Layer_1\"\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 512 512\"\r\n >\r\n <g>\r\n <g>\r\n <g>\r\n <path d=\"M0,0v512h512V0H0z M469.333,469.333H42.667V42.667h426.667V469.333z\" />\r\n <path d=\"M121.752,335.085L256,200.837l134.248,134.248c8.331,8.331,21.839,8.331,30.17,0c8.331-8.331,8.331-21.839,0-30.17 L271.085,155.582c-8.331-8.331-21.839-8.331-30.17,0L91.582,304.915c-8.331,8.331-8.331,21.839,0,30.17 S113.42,343.416,121.752,335.085z\" />\r\n </g>\r\n </g>\r\n </g>\r\n </svg>\r\n </div>\r\n </div>\r\n </button>\r\n </div>\r\n </div>\r\n </>\r\n );\r\n })}\r\n </div>\r\n )}\r\n <button\r\n type=\"button\"\r\n className=\"mt-3 inline-flex justify-center bg-white px-[110px] py-2 text-sm font-medium text-[#E11A38] shadow-sm ring-1 ring-inset ring-[#E11A38] hover:bg-gray-50 sm:mt-0 w-full\"\r\n onClick={onSave}\r\n >\r\n Save\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n {displayPallet && displayPallet.visible && (\r\n <ColorPalette\r\n mainClass={`left-0`}\r\n handleColorChange={(color) => {\r\n displayPallet.callback(displayPallet.property, color);\r\n setDisplayPallet({\r\n visible: false,\r\n property: '',\r\n color: '',\r\n callback: null,\r\n });\r\n }}\r\n style={\r\n position\r\n ? {\r\n position: 'fixed',\r\n left: position.x - 450,\r\n top: position.y - 5,\r\n width: '450px',\r\n }\r\n : { display: 'none' }\r\n }\r\n />\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './loader.css';\r\n\r\nexport const Loader = ({ position = 'overlay', height = '100%' }) => {\r\n const loaderRef = React.useRef<any>();\r\n React.useEffect(() => {\r\n if (!loaderRef) return;\r\n loaderRef.current.style.height = height;\r\n }, [loaderRef]);\r\n return (\r\n <section\r\n ref={loaderRef}\r\n id=\"ls\"\r\n style={\r\n position === 'overlay'\r\n ? { position: 'absolute', opacity: 0.8, top: 0 }\r\n : {}\r\n }\r\n className=\"w-full h-full\"\r\n >\r\n <div id=\"l\"></div>\r\n </section>\r\n );\r\n};\r\n","import React, { useEffect, useState } from 'react';\r\n// import { CARD_BG_COLOR } from '../../theme';\r\n// import { RiArrowDownSFill } from 'react-icons/ri';\r\nimport Select, { components } from 'react-select';\r\nconst DropdownIndicator = (props) => {\r\n return (\r\n <components.DropdownIndicator {...props}>\r\n <svg\r\n xmlns=\"http://www.w3.org/2000/svg\"\r\n viewBox=\"0 0 20 20\"\r\n fill=\"currentColor\"\r\n className={`h-5 w-5 text-[#727272]`}\r\n >\r\n <path d=\"M9 3.5a5.5 5.5 0 100 11 5.5 5.5 0 000-11zM2 9a7 7 0 1112.452 4.391l3.328 3.329a.75.75 0 11-1.06 1.06l-3.329-3.328A7 7 0 012 9z\" />\r\n </svg>\r\n </components.DropdownIndicator>\r\n );\r\n};\r\nconst style = {\r\n control: (base) => ({\r\n ...base,\r\n border: '1px solid #BEBEBE',\r\n\r\n boxShadow: 'none',\r\n '&:focus': {\r\n border: 0,\r\n },\r\n '&:hover': {\r\n border: '1px solid #BEBEBE',\r\n },\r\n }),\r\n option: (base, { isFocused, isSelected }) => {\r\n return {\r\n ...base,\r\n backgroundColor: isSelected ? '#e11a38' : '#FFFFFF',\r\n fontWeight: isFocused ? 700 : 400,\r\n color: isSelected && '#ffffff',\r\n ':active': {\r\n backgroundColor: isSelected && '#ffffff',\r\n color: isSelected && '#000',\r\n fontWeight: isSelected && 700,\r\n },\r\n };\r\n },\r\n};\r\nconst ListDropdown = (props) => {\r\n const { dropdownData, handleSelected } = props;\r\n const [data, setData] = useState([]);\r\n\r\n useEffect(() => {\r\n let a = [];\r\n dropdownData.forEach((element) => {\r\n a.push({ value: element, label: element });\r\n });\r\n setData(\r\n a.sort((a, b) => {\r\n if (a.label < b.label) {\r\n return -1;\r\n }\r\n if (a.label > b.label) {\r\n return 1;\r\n }\r\n return 0;\r\n })\r\n );\r\n }, [dropdownData]);\r\n return (\r\n <>\r\n <div className=\"w-full relative\">\r\n <div className=\"w-full z-10 absolute\">\r\n <Select\r\n className=\"basic-single focus:!outline-none !border-0 focus:!border-0 focus:!ring-0 !ring-0 \"\r\n defaultValue={{\r\n value: dropdownData[0],\r\n label: dropdownData[0],\r\n }}\r\n onChange={(e) => handleSelected(e.value)}\r\n isSearchable={true}\r\n name=\"categories\"\r\n options={data}\r\n components={{\r\n IndicatorSeparator: () => null,\r\n DropdownIndicator,\r\n }}\r\n styles={style}\r\n />\r\n </div>\r\n </div>\r\n </>\r\n );\r\n};\r\nexport default ListDropdown;\r\n","export const decorationData =\r\n // prettier-ignore\r\n [\r\n {id:1, code:'',name:'Direct Embroidery', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'DirectEmbroidaryIcon',thumbnail:'',tags:''},\r\n {id:2, code:'',name:'Leather', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewLeatherIcon',thumbnail:'',tags:''},\r\n {id:3, code:'',name:'Patch', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewPatchIcon',thumbnail:'',tags:''},\r\n {id:4, code:'',name:'Transfer', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'TransferIcon',thumbnail:'',tags:''},\r\n {id:5, code:'',name:'Applique', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'NewAppliqueIcon',thumbnail:'',tags:''},\r\n {id:6, code:'',name:'Clip', description:'', type:'decoration-type', linkedNodes:[], threeD:true,icon:'Clip',thumbnail:'',tags:''},\r\n {id:7, code:'91-APPGLHR',name:'Genuine Etched Leather', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'EtchedLeatherIcon',thumbnail:'',tags:''},\r\n {id:8, code:'91-APPGLDB',name:'Genuine Debossed Leather', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'DebossedLeatherIcon',thumbnail:'',tags:''},\r\n {id:9, code:'91-APPFLHR',name:'Faux Etched Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'EtchedLeatherIcon',thumbnail:'',tags:''},\r\n {id:10, code:'91-APPFLDB',name:'Faux Debossed Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'DebossedLeatherIcon',thumbnail:'',tags:''},\r\n// {id:11, code:'',name:'Genuine Thick Leather ', description:'', type:'decoration-sub-type', linkedNodes:[2], threeD:true,icon:'LeatherIcon',thumbnail:'',tags:''},\r\n {id:12, code:'91-PATCHEMB',name:'Embroidered Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'EmbroideredPatchIcon',thumbnail:'',tags:''},\r\n {id:13, code:'91-PATCHSUB',name:'Sublimated Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'SublimatedPatchIcon',thumbnail:'',tags:''},\r\n {id:14, code:'91-PATCHWOV',name:'Woven Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'WovenPatchIcon',thumbnail:'',tags:''},\r\n {id:15, code:'91-PATCHPVC',name:'Rubber Patch', description:'', type:'decoration-sub-type', linkedNodes:[3], threeD:true,icon:'RubberPatchIcon',thumbnail:'',tags:''},\r\n {id:16, code:'91-DIRSILICONE',name:'Silicon Transfers', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'SiliconTransferIcon',thumbnail:'',tags:''},\r\n {id:17, code:'91-RPOLYPRESS',name:'Poly Press Transfers', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'PolyPressTransferIcon',thumbnail:'',tags:''},\r\n {id:18, code:'91-TRANSFC',name:'Full Color Transfer ', description:'', type:'decoration-sub-type', linkedNodes:[4], threeD:true,icon:'FullColorTransferIcon',thumbnail:'',tags:''},\r\n {id:19, code:'91-APPFTL',name:'Felt / Twill Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'FeltAppliqueIcon',thumbnail:'',tags:''},\r\n {id:20, code:'91-WOVENFRT',name:'Woven Label Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'WovenLabelAppliqueIcon',thumbnail:'',tags:''},\r\n {id:21, code:'91-APPFTD',name:'Distressed Twill Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'DistressedTwillAppliqueIcon',thumbnail:'',tags:''},\r\n {id:22, code:'91-APPCRK',name:'Genuine Cork Applique', description:'', type:'decoration-sub-type', linkedNodes:[5], threeD:true,icon:'CorkAppliqueIcon',thumbnail:'',tags:''},\r\n {id:23, code:'91-CLPLTHR',name:'Natural Leather Clip', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:24, code:'91-CLPLTHR',name:'Faux Leather Clip ', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:25, code:'91-CLPWOVEN',name:'Woven Label Clip ', description:'', type:'decoration-sub-type', linkedNodes:[6], threeD:false,icon:'Clip',thumbnail:'',tags:''},\r\n {id:26, code:'',name:'Rust', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G100.jpg',tags:''},\r\n {id:27, code:'',name:'Tan', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G102.jpg',tags:''},\r\n {id:28, code:'',name:'Brown', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G104.jpg',tags:''},\r\n {id:29, code:'',name:'Black', description:'', type:'decoration-type-color', linkedNodes:[8], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/G106.jpg',tags:''},\r\n {id:30, code:'',name:'Apple Green', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/APPLE-GREEN-thumbnail.jpg',tags:''},\r\n {id:31, code:'',name:'Balsa', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BALSA-thumbnail.jpg',tags:''},\r\n {id:32, code:'',name:'Black', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BLACK-thumbnail.jpg',tags:''},\r\n {id:33, code:'',name:'Buff', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BUFF-thumbnail.jpg',tags:''},\r\n {id:34, code:'',name:'Chili', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CHILI-thumbnail.jpg',tags:''},\r\n {id:35, code:'',name:'Graphite', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/GRAPHITE-thumbnail.jpg',tags:''},\r\n {id:36, code:'',name:'Java ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/JAVA-thumbnail.jpg',tags:''},\r\n {id:37, code:'',name:'Lipstick', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/LIPSTICK-thumbnail.jpg',tags:''},\r\n {id:38, code:'',name:'Ocean', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/OCEAN-thumbnail.jpg',tags:''},\r\n {id:39, code:'',name:'Sage', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/SAGE-thumbnail.jpg',tags:''},\r\n {id:40, code:'',name:'Snow', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/SNOW-thumbnail.jpg',tags:''},\r\n {id:41, code:'',name:'Steel', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/STEEL-thumbnail.jpg',tags:''},\r\n {id:42, code:'',name:'Straw', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/STRAW-thumbnail.jpg',tags:''},\r\n {id:43, code:'',name:'Williamsburg', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/WILLIAMSBURG-thumbnail.jpg',tags:''},\r\n {id:44, code:'',name:'Royal Metallic Silver', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/ROYAL_METALLIC-thumbnail.jpg',tags:''},\r\n {id:45, code:'',name:'Rustic Brown Metallic Silver', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/RUSTIC-BROWN_METALLIC-thumbnail.jpg',tags:''},\r\n {id:46, code:'',name:'Pink ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/PINK-thumbnail.jpg',tags:''},\r\n {id:47, code:'',name:'Turquoise ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/TURQUOISE-thumbnail.jpg',tags:''},\r\n {id:48, code:'',name:'Bamboo ', description:'', type:'decoration-type-color', linkedNodes:[9,24], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BAMBOO-thumbnail.jpg',tags:''},\r\n {id:49, code:'',name:'Natural Leather', description:'', type:'decoration-type-color', linkedNodes:[7,11,23], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/NATURAL-thumbnail.jpg',tags:''},\r\n {id:50, code:'',name:'Chestnut Leather', description:'', type:'decoration-type-color', linkedNodes:[7], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CHESTNUT-thumbnail.jpg',tags:''},\r\n {id:51, code:'',name:'Brown', description:'', type:'decoration-ink-option', linkedNodes:[26,27], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CORK-thumbnail.jpg',tags:''},\r\n {id:52, code:'',name:'Black', description:'', type:'decoration-ink-option', linkedNodes:[28,29], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/BLACK_METALLIC-thumbnail.jpg',tags:''},\r\n {id:53, code:'',name:'Tonal', description:'', type:'decoration-ink-option', linkedNodes:[28,29], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/CORK-thumbnail.jpg',tags:''},\r\n {id:54, code:'',name:'STANDARD SQUARE', description:'(W x H): 1.81 X 1.81', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15,23,24,25], threeD:false,icon:'STANDARDSQUAREICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_square.svg',tags:''},\r\n {id:55, code:'',name:'SMALL SQUARE', description:'(W x H): 1.5 X 1.5', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLSQUAREICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_square.svg',tags:''},\r\n {id:56, code:'',name:'STANDARD RECTANGLE', description:'(W x H): 2.44 X 1.39', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_rectangle.svg',tags:''},\r\n {id:57, code:'',name:'SMALL RECTANGLE', description:'(W x H): 1.97 X 1.97', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_rectangle.svg',tags:''},\r\n {id:58, code:'',name:'ROUNDED RECTANGLE', description:'(W x H): 1.57 X 1.57', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_rectangle.svg',tags:''},\r\n {id:59, code:'',name:'ROUNDED TOP RECTANGLE', description:'(W x H): 3.01 X 1.73', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDTOPRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_top_rectangle.svg',tags:''},\r\n {id:60, code:'',name:'ROUNDED BOTTOM RECTANGLE', description:'(W x H): 2.62 X 1.34', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ROUNDEDBOTTOMRECTANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/rounded_bottom_rectangle.svg',tags:''},\r\n {id:61, code:'',name:'STANDARD CIRCLE', description:'(W x H): 3.19 X 2.02', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDCIRCLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_circle.svg',tags:''},\r\n {id:62, code:'',name:'SMALL CIRCLE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLCIRLCEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_cirlce.svg',tags:''},\r\n {id:63, code:'',name:'STANDARD OVAL', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'STANDARDOVALICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/standard_oval.svg',tags:''},\r\n {id:64, code:'',name:'SMALL OVAL', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'SMALLOVALICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/small_oval.svg',tags:''},\r\n {id:65, code:'',name:'REVERED TRIANGLE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'REVEREDTRIANGLEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/revered_triangle.svg',tags:''},\r\n {id:66, code:'',name:'BADGE', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'BADGEICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/badge.svg',tags:''},\r\n {id:67, code:'',name:'HEXAGON', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'HEXAGONICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/hexagon.svg',tags:''},\r\n {id:68, code:'',name:'ELONGATED HEXAGON', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ELONGATEDHEXAGONICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/elongated_hexagon.svg',tags:''},\r\n {id:69, code:'',name:'ELONGATED DIAMOND', description:'(W x H): 2.92 X 2.11', type:'decoration-type-shape', linkedNodes:[7,8,9,10,11,12,13,14,15], threeD:false,icon:'ELONGATEDDIAMONDICON',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/decoration-shapes/elongated_diamond.svg',tags:''},\r\n {id:70, code:'',name:'Marrowed', description:'', type:'decoration-edge-type', linkedNodes:[12,13,14,15], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:71, code:'',name:'Satin Stitch Edge ', description:'', type:'decoration-edge-type', linkedNodes:[12,13,14,15], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:72, code:'',name:'Custom',description:'', type:'design-type', linkedNodes:[1,2,3,4,5,6], threeD:false,icon:'CustomDecorationIcon',thumbnail:'',tags:''},\r\n {id:73, code:'',name:'Team Decoration',description:'', type:'design-type', linkedNodes:[1], threeD:false,icon:'TeamDecorationIcon',thumbnail:'',tags:''},\r\n {id:74, code:'91-F1',name:'Design Concepts', description:'', type:'design-type', linkedNodes:[1,2,3,4,5,6], threeD:false,icon:'DesignConceptsIcon',thumbnail:'',tags:''},\r\n {id:75, code:'90-ND200',name:'Text (Wordings)', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'WordingDecorationIcon',thumbnail:'',tags:''},\r\n {id:76, code:'90-TL11C',name:'Team Letters', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'LetterDecorationIcon',thumbnail:'',tags:''},\r\n {id:77, code:'90-ND200',name:'Stock Mascots & Objects', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'MascotDecorationIcon',thumbnail:'',tags:''},\r\n {id:78, code:'90-ND200',name:'Team Custom', description:'', type:'design-style', linkedNodes:[73], threeD:true,icon:'TeamCustomIcon',thumbnail:'',tags:''},\r\n {id:79, code:'91-F1',name:'Custom File Upload', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n// {id:80, code:'',name:'Supporting File Upload', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:81, code:'91-F1',name:'My Logos', description:'', type:'design-style', linkedNodes:[72], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:82, code:'',name:'Athletic - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'AthleticIcon',thumbnail:'',tags:''},\r\n {id:83, code:'',name:'Resort & Golf - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'ResortGolfIcon',thumbnail:'',tags:''},\r\n {id:84, code:'',name:'Outdoor - Design Concepts ', description:'', type:'design-style', linkedNodes:[74], threeD:false,icon:'OutdoorIcon',thumbnail:'',tags:''},\r\n {id:85, code:'',name:'ATHLETICBLOCK', description:'ATHLETIC BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:86, code:'',name:'BALLPARK', description:'BALL PARK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:87, code:'',name:'BLADE', description:'BLADE', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:88, code:'',name:'BOLT', description:'BOLT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:89, code:'',name:'CENTURY', description:'CENTURY', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:90, code:'',name:'CITYBLOCK', description:'CITY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:91, code:'',name:'FANCYBLOCK', description:'FANCY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:92, code:'',name:'FORCE', description:'FORCE', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:93, code:'',name:'FULLBLOCK', description:'FULL BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:94, code:'',name:'HARDBALL', description:'HARD BALL', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:95, code:'',name:'JERSEYBLOCK', description:'JERSEY BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:96, code:'',name:'OLDENGLISH', description:'OLD ENGLISH', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:97, code:'',name:'PROBLOCK', description:'PRO BLOCK', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:98, code:'',name:'SPORTSCRIPT', description:'SPORT SCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:99, code:'',name:'TIFFANY', description:'TIFFANY', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:100, code:'',name:'UNISCRIPT', description:'UNISCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n// {id:101, code:'',name:'UNISCRIPT', description:'UNISCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:102, code:'',name:'VELO', description:'VELO', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n\r\n\r\n{id:103, code:'',name:'ARWH001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/ARWH001.svg',tags:'Arrows'},\r\n{id:104, code:'',name:'ARWH002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/ARWH002.svg',tags:'Arrows'},\r\n{id:105, code:'',name:'BASE002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BASE002.svg',tags:'Balls, Baseball'},\r\n {id:106, code:'',name:'BDOG001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG001.svg',tags:'Bulldogs'},\r\n {id:107, code:'',name:'BDOG003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG003.svg',tags:'Bulldogs'},\r\n{id:108, code:'',name:'BDOG004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BDOG004.svg',tags:'Bulldogs'},\r\n {id:109, code:'',name:'BEAR004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BEAR004.svg',tags:'Bears'},\r\n {id:110, code:'',name:'BEAR005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BEAR005.svg',tags:'Bears'},\r\n{id:111, code:'',name:'BJAY001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BJAY001.svg',tags:'Cardinals'},\r\n{id:112, code:'',name:'BOLT002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BOLT002.svg',tags:'Bolts'},\r\n {id:113, code:'',name:'BULL002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/BULL002.svg',tags:'Buffalo & Bulls'},\r\n {id:114, code:'',name:'CARD001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD001.svg',tags:'Cardinals'},\r\n{id:115, code:'',name:'CARD002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD002.svg',tags:'Cardinals'},\r\n {id:116, code:'',name:'CARD006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CARD006.svg',tags:'Cardinals'},\r\n {id:117, code:'',name:'CATS005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CATS005.svg',tags:'Cats'},\r\n {id:118, code:'',name:'CATS012', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CATS012.svg',tags:'Cats'},\r\n{id:119, code:'',name:'CLVR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CLVR001.svg',tags:'Leaves'},\r\n {id:120, code:'',name:'COBR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/COBR001.svg',tags:'Snakes'},\r\n {id:121, code:'',name:'COWB002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/COWB002.svg',tags:'Cowboys & Rebels'},\r\n{id:122, code:'',name:'CRSS001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/CRSS001.svg',tags:'Shapes'},\r\n {id:123, code:'',name:'DEVL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/DEVL001.svg',tags:'Devils'},\r\n {id:124, code:'',name:'DRGN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/DRGN001.svg',tags:'Dragons'},\r\n {id:125, code:'',name:'EAGL004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL004.svg',tags:'Eagles'},\r\n {id:126, code:'',name:'EAGL005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL005.svg',tags:'Eagles'},\r\n// {id:127, code:'',name:'EAGL005_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/EAGL005_bu.svg',tags:'Eagles'},\r\n{id:128, code:'',name:'FLAG002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLAG002.svg',tags:'Flags'},\r\n// {id:129, code:'',name:'FLAG002_RIGHT', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLAG002_RIGHT.svg',tags:'Flags'},\r\n{id:130, code:'',name:'FLGW002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002.svg',tags:'Flags'},\r\n// {id:131, code:'',name:'FLGW002_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_bu.svg',tags:'Flags'},\r\n// {id:132, code:'',name:'FLGW002_NO_BORDER', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_NO_BORDER.svg',tags:'Flags'},\r\n// {id:133, code:'',name:'FLGW002_RIGHT', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT.svg',tags:'Flags'},\r\n// {id:134, code:'',name:'FLGW002_RIGHT_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT_bu.svg',tags:'Flags'},\r\n// {id:135, code:'',name:'FLGW002_RIGHT_old', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLGW002_RIGHT_old.svg',tags:'Flags'},\r\n{id:136, code:'',name:'FLUR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FLUR001.svg',tags:'Shapes'},\r\n{id:137, code:'',name:'FTBL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FTBL001.svg',tags:'Football,Balls'},\r\n// {id:138, code:'',name:'FTBL001_OG', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/FTBL001_OG.svg',tags:'Football,Balls'},\r\n {id:139, code:'',name:'GATR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GATR001.svg',tags:'Gators'},\r\n{id:140, code:'',name:'GOLF004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GOLF004.svg',tags:'Balls'},\r\n {id:141, code:'',name:'GRIZ001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/GRIZ001.svg',tags:'Bears'},\r\n{id:142, code:'',name:'HATC002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HATC002.svg',tags:'Objects,Shapes'},\r\n {id:143, code:'',name:'HAWK001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK001.svg',tags:'Hawks'},\r\n {id:144, code:'',name:'HAWK003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK003.svg',tags:'Hawks'},\r\n {id:145, code:'',name:'HAWK004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HAWK004.svg',tags:'Hawks'},\r\n {id:146, code:'',name:'HORS002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS002.svg',tags:'Horses'},\r\n {id:147, code:'',name:'HORS003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS003.svg',tags:'Horses'},\r\n {id:148, code:'',name:'HORS006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HORS006.svg',tags:'Horses'},\r\n {id:149, code:'',name:'HRNT005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/HRNT005.svg',tags:'Hornets'},\r\n {id:150, code:'',name:'INDN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/INDN001.svg',tags:'Indians'},\r\n {id:151, code:'',name:'KNGH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH003.svg',tags:'Knights'},\r\n {id:152, code:'',name:'KNGH004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH004.svg',tags:'Knights'},\r\n// {id:153, code:'',name:'KNGH005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/KNGH005.svg',tags:'Knights'},\r\n {id:154, code:'',name:'LION003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION003.svg',tags:'Lions'},\r\n {id:155, code:'',name:'LION004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION004.svg',tags:'Lions'},\r\n {id:156, code:'',name:'LION008', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LION008.svg',tags:'Lions'},\r\n {id:157, code:'',name:'LNGH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LNGH003.svg',tags:'Buffalo & Bulls'},\r\n{id:158, code:'',name:'LOGR002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/LOGR002.svg',tags:'Logger'},\r\n {id:159, code:'',name:'OWLH001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/OWLH001.svg',tags:'Owls'},\r\n {id:160, code:'',name:'PAWP001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PAWP001.svg',tags:'Paws'},\r\n{id:161, code:'',name:'PAWP004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PAWP004.svg',tags:'Paws'},\r\n {id:162, code:'',name:'PRTE005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PRTE005.svg',tags:'Pirates'},\r\n {id:163, code:'',name:'PTFL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/PTFL001.svg',tags:'Pirates'},\r\n {id:164, code:'',name:'RAMH003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAMH003.svg',tags:'Rams'},\r\n {id:165, code:'',name:'RAMH008', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAMH008.svg',tags:'Rams'},\r\n {id:166, code:'',name:'RAVN001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAVN001.svg',tags:'Ravens'},\r\n {id:167, code:'',name:'RAVN002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAVN002.svg',tags:'Ravens'},\r\n {id:168, code:'',name:'RAZR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/RAZR003.svg',tags:'Boar'},\r\n {id:169, code:'',name:'REBL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/REBL001.svg',tags:'Cowboys & Rebels'},\r\n {id:170, code:'',name:'SKLL001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/SKLL001.svg',tags:'Skulls'},\r\n// {id:171, code:'',name:'STAR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/STAR003.svg',tags:'Ravens'},\r\n {id:172, code:'',name:'TIGR003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003.svg',tags:'Tigers'},\r\n// {id:173, code:'',name:'TIGR003_bu', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003_bu.svg',tags:'Tigers'},\r\n// {id:174, code:'',name:'TIGR003_original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR003_original.svg',tags:'Tigers'},\r\n// {id:175, code:'',name:'TIGR004 - Original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR004 - Original.svg',tags:'Tigers'},\r\n {id:176, code:'',name:'TIGR004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR004.svg',tags:'Tigers'},\r\n{id:177, code:'',name:'TIGR005 - Original', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR005 - Original.svg',tags:'Tigers'},\r\n {id:178, code:'',name:'TIGR005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TIGR005.svg',tags:'Tigers'},\r\n {id:179, code:'',name:'TRJN002', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN002.svg',tags:'Spartans'},\r\n {id:180, code:'',name:'TRJN004', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN004.svg',tags:'Spartans'},\r\n {id:181, code:'',name:'TRJN006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRJN006.svg',tags:'Spartans'},\r\n {id:182, code:'',name:'TRND003', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/TRND003.svg',tags:'Bolts'},\r\n {id:183, code:'',name:'VIKG001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIKG001.svg',tags:'Cavaliers & Vikings'},\r\n {id:184, code:'',name:'VIKG006', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIKG006.svg',tags:'Cavaliers & Vikings'},\r\n{id:185, code:'',name:'VIPR001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/VIPR001.svg',tags:'Snakes'},\r\n{id:186, code:'',name:'WNGF001', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WNGF001.svg',tags:'Wings'},\r\n {id:187, code:'',name:'WOLF005', description:'', type:'design-style-mascots', linkedNodes:[77], threeD:true,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:'Wolves'},\r\n\r\n {id:188, code:'',name:'ATHLETICBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:189, code:'',name:'BALLPARK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:190, code:'',name:'BLADE', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:191, code:'',name:'BOLT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:192, code:'',name:'CENTURY', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:193, code:'',name:'CITYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/cityb.woff',tags:''},\r\n {id:194, code:'',name:'FANCYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:195, code:'',name:'FORCE', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:196, code:'',name:'FULLBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:197, code:'',name:'HARDBALL', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:198, code:'',name:'JERSEYBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:199, code:'',name:'OLDENGLISH', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:200, code:'',name:'PROBLOCK', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/pro_block.woff',tags:''},\r\n {id:201, code:'',name:'SPORTSCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:202, code:'',name:'TIFFANY', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-poc-assets/fonts/tiffany.woff',tags:''},\r\n {id:203, code:'',name:'UNISCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:204, code:'',name:'UNISCRIPT', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:205, code:'',name:'VELO', description:'', type:'design-style-letters-font', linkedNodes:[75], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/mascot/WOLF005.svg',tags:''},\r\n {id:206, code:'',name:'Teamwear', description:'', type:'teamwear', linkedNodes:[], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:207, code:'',name:'Fabric', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:208, code:'',name:'Templates', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:209, code:'',name:'Color', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:210, code:'',name:'Piping', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:211, code:'',name:'Decoration', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:212, code:'',name:'Brand', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:213, code:'',name:'Roster', description:'', type:'teamwear', linkedNodes:[206], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:214, code:'',name:'Produra', description:'Premium, Durable, Moisture Wicking, 100% Knitted Polyester with Mechanical Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/PRODURA.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:215, code:'',name:'Protek', description:'Premium, Durable, Moisture Wicking, 100% Knitted Polyester with Mechanical Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/PROTEK.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:216, code:'',name:'Ignite LT', description:'Premium, Durable, Lightweight, Moisture Wicking, Woven 90% Polyester / 10% Elastane with Four-Way Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/IGNITE_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:217, code:'',name:'Matrix Mesh', description:'Premium, Durable, Moisture Wicking, Knitted Pin-Dot Mesh, 90% Polyester / 10% Elastane with Four-Way Stretch', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/MATRIX_MESH.png',tags:'SUBLIMATION AND HYPR TWILL'},\r\n {id:218, code:'',name:'Dryve LT', description:'Soft, Lightweight, Moisture Wicking, 100% Knitted Polyester Mesh', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/DRYVE_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:219, code:'',name:'FLY LT', description:'Soft, Lightweight, Moisture Wicking, 100% Flat Knit Polyester', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/FLY_LT.png',tags:'SUBLIMATION ONLY'},\r\n {id:220, code:'',name:'FLX', description:'Premium, Soft, Four-Way Stretch, 90% Polyester/10% Elastine', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/fabrics/FLX.png',tags:'SUBLIMATION ONLY'},\r\n {id:221, code:'',name:'PRODURA - DYED (HYPR TWILL DECORATION ONLY)', description:'', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'',tags:'HYPR TWILL'},\r\n {id:222, code:'',name:'PROTEK - DYED (HYPR TWILL DECORATION ONLY)', description:'', type:'fabric-type', linkedNodes:[207], threeD:false,icon:'',thumbnail:'',tags:'HYPR TWILL'},\r\n {id:223, code:'',name:'Neck Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/dRGF2JCBvodIg0QY21oHbuDfz6twjAVl.png',tags:''},\r\n {id:224, code:'',name:'Center Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/oWpQa0fFddLuG2RJ6lBnITsIS6BcdW7g.png',tags:''},\r\n {id:225, code:'',name:'Yoke Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/5BEjBO66Ei1aNzvVGxE39AJzOOOiN6TT.png',tags:''},\r\n {id:226, code:'',name:'Raglan Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/RG6MuauqiOMWJrOEsCHJ4tC53neMxL7W.png',tags:''},\r\n {id:227, code:'',name:'Sleeve Piping 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/kOMLERHCuUVPWRIRWIhw1FlOvtiy1eBe.png',tags:''},\r\n {id:228, code:'',name:'End of Sleeve Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/lr2zDaP9l792oXHqcq7CmYcuzoIrQhkj.png',tags:''},\r\n {id:229, code:'',name:'Pant', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/BqGJKQ8kJdTUeY9CEGTwwYC45Ar8rvYR.png',tags:''},\r\n {id:230, code:'',name:'Pant Tunnel', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://resources.uniform-customizer.io/uploadedfiles/kFN2ZAjjdJEoIfnkZQThax0bALOdP90l.png',tags:''},\r\n {id:231, code:'',name:'Left Sleeve', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:232, code:'',name:'Back Neck', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:233, code:'',name:'Front Left Hip', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:234, code:'',name:'Back Center Tunnel', description:'', type:'brand-type', linkedNodes:[212], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:235, code:'',name:'Pro Select 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:236, code:'',name:'Pro Select 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Neck.png',tags:''},\r\n {id:237, code:'',name:'Pro Select 2 Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Raglan.png',tags:''},\r\n {id:238, code:'',name:'Pro Select 2 Button Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:239, code:'',name:'Pro Select 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8012CU/Pro%20Select%202%20Button%20Yoke.png',tags:''},\r\n {id:240, code:'',name:'Pro Select Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Center.png',tags:''},\r\n {id:241, code:'',name:'Pro Select Full Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:242, code:'',name:'Pro Select Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Neck.png',tags:''},\r\n {id:243, code:'',name:'Pro Select Full Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Raglan.png',tags:''},\r\n {id:244, code:'',name:'Pro Select Full Button Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:245, code:'',name:'Pro Select Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8013CU/Pro%20Select%20Full%20Button%20Yoke.png',tags:''},\r\n {id:246, code:'',name:'Pro Select Sleeveless Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Center.png',tags:''},\r\n {id:247, code:'',name:'Pro Select Sleeveless Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Neck.png',tags:''},\r\n {id:248, code:'',name:'Pro Select Sleeveless Full Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Set%20In.png',tags:''},\r\n {id:249, code:'',name:'Pro Select Sleeveless Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8014CU/Pro%20Select%20Sleeveless%20Full%20Button%20Yoke.png',tags:''},\r\n {id:250, code:'',name:'Pro Select Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Center.png',tags:''},\r\n {id:251, code:'',name:'Pro Select Faux Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20End%20of%20Sleeve.png',tags:''},\r\n {id:252, code:'',name:'Pro Select Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Neck.png',tags:''},\r\n {id:253, code:'',name:'Pro Select Faux Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Neck.png',tags:''},\r\n {id:254, code:'',name:'Pro Select Faux Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Sleeve%201%20Inch%20Up.png',tags:''},\r\n {id:255, code:'',name:'Pro Select Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/piping/PRO%20SELECT/PTS8015CU/Pro%20Select%20Faux%20Button%20Yoke.png',tags:''},\r\n {id:256, code:'',name:'Pro Select Sleeveless Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:257, code:'',name:'Pro Select Sleeveless Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:258, code:'',name:'Pro Select Sleeveless Faux Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:259, code:'',name:'Pro Select Sleeveless Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:260, code:'',name:'Pro Select Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:261, code:'',name:'Pro Select Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:262, code:'',name:'Pro Select Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:263, code:'',name:'Pro Select Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:264, code:'',name:'Pro Select Tapared FL Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:265, code:'',name:'Pro Select Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:266, code:'',name:'Select Crew Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:267, code:'',name:'Select Crew Neck Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:268, code:'',name:'Select Crew Neck Sleeve 1 Inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:269, code:'',name:'Select BSB V Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:270, code:'',name:'Select BSB V Neck Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:271, code:'',name:'Select BSB V Neck Sleeve 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:272, code:'',name:'Select BSB V Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:273, code:'',name:'Select 2 Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:274, code:'',name:'Select 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:275, code:'',name:'Select 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:276, code:'',name:'Select 2 Button Set In', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:277, code:'',name:'Select 2 Button Sleeve 1 inch up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:278, code:'',name:'Select 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:279, code:'',name:'Select Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:280, code:'',name:'Select Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:281, code:'',name:'Select Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:282, code:'',name:'Select Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:283, code:'',name:'Select Full Length Tapered Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:284, code:'',name:'Select Full Length Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:285, code:'',name:'Signature BSB V Neck End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:286, code:'',name:'Signature BSB V Neck Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:287, code:'',name:'Signature BSB V Neck Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:288, code:'',name:'Signature BSB V Neck Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:289, code:'',name:'Signature 2 Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:290, code:'',name:'Signature 2 Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:291, code:'',name:'Signature 2 Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:292, code:'',name:'Signature 2 Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:293, code:'',name:'Signature 2 Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:294, code:'',name:'Signature Full Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:295, code:'',name:'Signature Full Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:296, code:'',name:'Signature Full Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:297, code:'',name:'Signature Full Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:298, code:'',name:'Signature Full Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:299, code:'',name:'Signature Full Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:300, code:'',name:'Signature Faux Button Center', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:301, code:'',name:'Signature Faux Button End of Sleeve', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:302, code:'',name:'Signature Faux Button Neck', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:303, code:'',name:'Signature Faux Button Raglan', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:304, code:'',name:'Signature Faux Button Sleeve 1 Inch Up', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:305, code:'',name:'Signature Faux Button Yoke', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:306, code:'',name:'Signature Full Length Open Cuff Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:307, code:'',name:'Signature Full Length Open Cuff Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:308, code:'',name:'Signature Full Length Open Cuff Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:309, code:'',name:'Signature Knicker Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:310, code:'',name:'Signature Knicker Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:311, code:'',name:'Signature Knicker Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:312, code:'',name:'Signature Full Length Tapered Back Insert Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:313, code:'',name:'Signature Full Length Tapered Pant Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:314, code:'',name:'Signature Full Length Tapered Tunnel Piping', description:'', type:'piping-type', linkedNodes:[210], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:315, code:'',name:'Patches Custom', description:'', type:'decoration-type-shape', linkedNodes:[3], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:316, code:'',name:'Leather Custom ', description:'', type:'decoration-type-shape', linkedNodes:[2], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:317, code:'',name:'Rust ', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F100.jpg',tags:''},\r\n {id:318, code:'',name:'Tan', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F102.jpg',tags:''},\r\n {id:319, code:'',name:'Brown', description:'', type:'decoration-type-color', linkedNodes:[10], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F104.jpg',tags:''},\r\n { id: 320, code: '', name: 'Black', description: '', type: 'decoration-type-color', linkedNodes: [10], threeD: false, icon: '', thumbnail: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/leather/F106.jpg', tags: '' },\r\n {id:321, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:322, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n// {id:323, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n// {id:324, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n// {id:325, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[2], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n// {id:326, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n// {id:327, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:328, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:329, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:330, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[1], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:331, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:332, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:333, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:334, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:335, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[3], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:336, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:337, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:338, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:339, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:340, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[4], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:341, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:342, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:343, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:344, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n {id:345, code:'',name:'GF857_Brookside', description:'', type:'decoration-design-concepts', linkedNodes:[5], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg',tags:'Atheletic'},\r\n {id:346, code:'',name:'GF841_Mammoth', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF841_Mammoth.svg',tags:'Resort & Golf'},\r\n {id:347, code:'',name:'CL223_Backwoods', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL223_Backwoods.svg',tags:'Resort & Golf'},\r\n {id:348, code:'',name:'OD924_Maine2', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/OD924_Maine2.svg',tags:'Atheletic'},\r\n {id:349, code:'',name:'CL165_Frostburg', description:'', type:'decoration-design-concepts', linkedNodes:[6], threeD:false,icon:'',thumbnail:'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/CL165_Frostburg.svg',tags:'Outdoor'},\r\n { id: 350, code: '', name: 'GF857_Brookside', description: '', type: 'decoration-design-concepts', linkedNodes: [6], threeD: false, icon: '', thumbnail: 'https://storage.googleapis.com/3ddplusgcp/richardson-customizer/designs/design_concept/GF857_Brookside.svg', tags: 'Atheletic' },\r\n {id:351, code:'',name:'BRUSHSCRIPT', description:'BRUSHSCRIPT', type:'design-style-letters-font', linkedNodes:[75,76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:352, code:'',name:'UNITED', description:'UNITED', type:'design-style-letters-font', linkedNodes:[76], threeD:false,icon:'',thumbnail:'',tags:''},\r\n {id:353, code:'',name:'My Logos', description:'', type:'design-substyle', linkedNodes:[78], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n {id:354, code:'',name:'Custom File Upload', description:'', type:'design-substyle', linkedNodes:[78], threeD:false,icon:'TeamCustom',thumbnail:'',tags:''},\r\n];\r\n","import React from 'react';\r\n// import { MdOutlineArrowForwardIos } from 'react-icons/md';\r\n//import { Searchbar } from '../searchbar';\r\nimport { Card, CardMedia, CardBody, CardTitle } from '../card';\r\n// import { Button } from '../button';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { use3dddPlus } from '../../store';\r\nimport { Loader } from '../loader';\r\nimport ListDropdown from './listDropDown';\r\nimport { getDecorationDataByTypeAndParentId } from './decorationService';\r\nimport _ from 'lodash';\r\nexport const AddMascot = () => {\r\n const [\r\n stockLogoHandler,\r\n loading,\r\n handleMascotObjectFilterValues,\r\n availableMascots,\r\n filterValue,\r\n filteredMascots,\r\n ] = use3dddPlus(\r\n (state) => [\r\n state.stockLogoHandler,\r\n state.loading,\r\n state.handleMascotObjectFilterValues,\r\n state.availableMascots,\r\n state.filterValue,\r\n state.filteredMascots,\r\n ],\r\n shallow\r\n );\r\n\r\n let dropdownData = Array.from(\r\n new Set(availableMascots.flatMap((mascot) => mascot.tags))\r\n );\r\n // Prepend 'All' to the array\r\n dropdownData.unshift('All');\r\n React.useEffect(() => {\r\n const availableMascots = getDecorationDataByTypeAndParentId(\r\n 'design-style-mascots'\r\n ).map((item) => ({\r\n ...item,\r\n tags: item.tags.split(',').filter(Boolean),\r\n }));\r\n\r\n use3dddPlus.getState().setAvailableMascots(availableMascots);\r\n use3dddPlus\r\n .getState()\r\n .setFilteredMascots(availableMascots.map((item) => item.thumbnail));\r\n }, []);\r\n\r\n return (\r\n <>\r\n <div className=\"bg-[#F7F7F7] absolute z-100 w-[90%] h-full pr-[56px]\">\r\n <div className=\"w-full flex mt-[50px] flex-row \">\r\n <div className=\"w-1/2 flex justify-end\">\r\n <div className=\"text-left mr-[24px] h-[40px]\">\r\n <div className=\"w-[10vw] mb-3 \"></div>\r\n </div>\r\n </div>\r\n <div className=\" flex-1 justify-end\">\r\n <ListDropdown\r\n //placeholder=\"All \"\r\n value={filterValue}\r\n dropdownData={dropdownData}\r\n handleSelected={handleMascotObjectFilterValues}\r\n // label={'Select Stock Mascots & Objects'}\r\n labelClass={`!mb-[14.5px]`}\r\n labelSpan={`uppercase !text-[18px] !text-[#353535] !leading-[24px] !font-bold`}\r\n buttonClass={`!shadow-[0px_7px_64px_rgba(0,0,0,0.07)] border !border-[#ebebeb] text-[15px] font-bold leading-[20px] !py-[11px] !pl-[17px]`}\r\n dropdownClass={`!shadow-[0px_7px_64px_rgba(0,0,0,0.11)] !bg-[#ffffff] !max-h-[31.25rem] pt-[7px] pb-[17px]`}\r\n dropdownLiClass={`!text-[15px] leading-[20px] pl-[16px]`}\r\n />\r\n </div>\r\n </div>\r\n {/* <div className=\"flex flex-row gap-2\"> */}\r\n <div className=\"flex\">\r\n <div className=\"flex mt-[30px] overflow-y-auto overflow-x-hidden h-[65vh] w-full\">\r\n {/* <div className=\"max-h-[140px] grid gap-3.5 grid-cols-3 md:grid-cols-3 lg:grid-cols-4 w-full \"> */}\r\n <div className=\"max-h-[170px] grid gap-[2vw] grid-cols-3 md:grid-cols-5 lg:grid-cols-5 xl:grid-cols-6 2xl:grid-cols-7 w-full p-[30px]\">\r\n {filteredMascots.length > 0\r\n ? filteredMascots.map((logo, index) => (\r\n <Card\r\n key={'logoImage' + index}\r\n // cardClass={`rounded-none bg-white cursor-pointer `}\r\n cardClass={`rounded-none !bg-transparent cursor-pointer min-h-[140px] min-w-[140px] max-w-[140px] `}\r\n style={{ boxShadow: '0px 0px 6px #98989829' }}\r\n onClick={() => stockLogoHandler(logo)}\r\n >\r\n <CardMedia src={logo} imageClass=\"h-full m-[15px] mb-0\" />\r\n\r\n <CardBody bodyClass=\"p-2.5\">\r\n <CardTitle\r\n titleClass={`text-[11px] uppercase flex justify-center`}\r\n name={availableMascots[index].name}\r\n />\r\n </CardBody>\r\n </Card>\r\n ))\r\n : 'No Stock Logos'}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n {loading && <Loader />}\r\n </>\r\n );\r\n};\r\n","import { decorationData } from './mockData';\r\n\r\nexport type DecorationTypes =\r\n | 'decoration-type'\r\n | 'decoration-sub-type'\r\n | 'decoration-type-color'\r\n | 'decoration-ink-option'\r\n | 'decoration-type-shape'\r\n | 'decoration-edge-type'\r\n | 'design-type'\r\n | 'design-style'\r\n | 'design-style-letters-font'\r\n | 'design-style-mascots';\r\n\r\nexport const getDecorationDataById = (id: number) => {\r\n return decorationData.filter((e) => e.id === id)?.[0];\r\n};\r\n\r\nexport const getDecorationDataByName = (name: string) => {\r\n return decorationData.filter((e) => e.name === name)?.[0];\r\n};\r\n\r\nexport const getDecorationDataByTypeAndParentId = (\r\n type: DecorationTypes,\r\n parentId?: number\r\n) => {\r\n return parentId\r\n ? decorationData.filter(\r\n (item) => item.type === type && item.linkedNodes.includes(parentId)\r\n )\r\n : decorationData.filter(\r\n (item) => item.type === type \r\n );\r\n};\r\n\r\nexport const getAllTypes = () => {\r\n return [new Set(decorationData?.map((item) => item.type))];\r\n};\r\n","import React from 'react';\r\n// import { use3dddPlus } from '../../store';\r\nimport { MODAL_BG_COLOR } from '../../theme';\r\n\r\nexport interface ModalProps {\r\n children?: React.ReactNode;\r\n className?: string;\r\n}\r\n\r\nexport const LogoEditorSaveDesignModal = ({\r\n children,\r\n className = '',\r\n}: ModalProps) => {\r\n // const closeDesign = use3dddPlus((state) => state.setToggleSaveLogo);\r\n return (\r\n <>\r\n <div\r\n className={`modal modal-middle modal-open backdrop-blur-[45px] bg-[#00000046]`}\r\n id=\"saveLogoModel\"\r\n >\r\n <div className={`${className} modal-box ${MODAL_BG_COLOR} `}>\r\n {children}\r\n </div>\r\n {/* <form method=\"dialog\" className={`modal-backdrop ${BACKDROP_BLUR}`}>\r\n <button>close</button>\r\n </form> */}\r\n </div>\r\n </>\r\n );\r\n};","import React from 'react';\r\nimport { FloatingLabel } from 'flowbite-react';\r\nimport { EDIT_DESIGN_INFO_INPUT_BORDER_COLOR } from '../../theme';\r\ninterface CustomInputProps extends React.InputHTMLAttributes<HTMLInputElement> {\r\n type: string;\r\n id: string;\r\n name: string;\r\n label: string;\r\n customLabelStyle?: string;\r\n customInputStyle?: string;\r\n onChange?: (event: React.ChangeEvent<HTMLInputElement>) => void;\r\n onBlur?: (event: React.FocusEvent<HTMLInputElement>) => void;\r\n value?: string | undefined;\r\n onKeyDown?: (event: React.KeyboardEvent<HTMLInputElement>) => void;\r\n}\r\nexport const CustomInput: React.FC<CustomInputProps> = ({\r\n type,\r\n id,\r\n name,\r\n label,\r\n customLabelStyle,\r\n customInputStyle,\r\n onChange,\r\n onBlur,\r\n value,\r\n onKeyDown,\r\n className = '',\r\n}) => {\r\n return (\r\n <div className=\"w-full\">\r\n <FloatingLabel\r\n type={type}\r\n id={id}\r\n value={value}\r\n name={name}\r\n variant=\"outlined\"\r\n label={label}\r\n onChange={onChange}\r\n onBlur={onBlur}\r\n onKeyDown={onKeyDown}\r\n theme={{\r\n label: {\r\n default: {\r\n outlined: {\r\n sm: `absolute left-4 top-2 z-10 origin-[0] -translate-y-4 transition-transform bg-white peer-focus:px-[0.125rem] px-[0.125rem] text-[#5D5D5D] duration-300 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-focus:top-2 peer-focus:-translate-y-4 font-medium ${customLabelStyle} ${className}`,\r\n\r\n md: `absolute left-4 top-2 z-10 origin-[0] -translate-y-4 transition-transform bg-white peer-focus:px-[0.125rem] px-[0.125rem] text-[#5D5D5D] duration-300 peer-placeholder-shown:top-1/2 peer-placeholder-shown:-translate-y-1/2 peer-focus:top-2 peer-focus:-translate-y-4 font-medium ${customLabelStyle} ${className}`,\r\n },\r\n },\r\n },\r\n input: {\r\n default: {\r\n outlined: {\r\n sm: `border peer block w-full appearance-none rounded-none border-[#ECEBED] px-4 pb-2.5 pt-4 focus:border-[#ECEBED] focus:outline-none focus:ring-0 w-full h-[3rem] mt-0 ${customInputStyle} ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`,\r\n\r\n md: `border peer block w-full appearance-none rounded-none border-[#ECEBED] px-4 pb-2.5 pt-4 focus:border-[#ECEBED] focus:outline-none focus:ring-0 w-full h-[3rem] mt-0 ${customInputStyle} ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR}`,\r\n },\r\n },\r\n },\r\n helperText: {\r\n default: 'mt-0 ',\r\n success: 'mt-0 ',\r\n error: 'mt-0',\r\n },\r\n }}\r\n />\r\n </div>\r\n );\r\n};\r\n","import React, { useState, useEffect } from 'react';\r\nimport {\r\n BUTTON_TEXT_COLOR,\r\n EDIT_DESIGN_INFO_BG_COLOR_4,\r\n EDIT_DESIGN_INFO_INPUT_BORDER_COLOR,\r\n EDIT_DESIGN_INFO_TEXT_COLOR_1,\r\n EDIT_DESIGN_INFO_TEXT_COLOR_3,\r\n INPUT_ERROR_TEXT_COLOR,\r\n SAVEBUTTON_BG_COLOR,\r\n SECONDARY_COLOR,\r\n TEXT_SIZE_12,\r\n TEXT_SIZE_4,\r\n TEXT_SIZE_5,\r\n TEXT_SIZE_9,\r\n} from '../../theme';\r\nimport { RxCross2 } from 'react-icons/rx';\r\nimport { use3dddPlus } from '../../store';\r\nimport { LogoEditorSaveDesignModal } from './saveDesignModal';\r\nimport './saveDesign.css';\r\nimport { CustomInput } from '../input/customInput';\r\nimport { fabric } from 'fabric';\r\n\r\nexport const SaveDesign = ({ onSaveLogo }) => {\r\n const [designNameValidation, setDesignNameValidation] = useState('');\r\n\r\n const [commaInTagName, setCommaInTagName] = useState(false);\r\n const [tagNameLength, setTagNameLength] = useState(false);\r\n const [isSaving, setIsSaving] = useState(false);\r\n const [\r\n canvas,\r\n logoName,\r\n logoTag,\r\n closeModal,\r\n toggleSaveLogo,\r\n disableSaveButton,\r\n saveLogo,\r\n uploadLogoConfig,\r\n setLogoData,\r\n ] = use3dddPlus((state) => [\r\n state.fabricCanvas,\r\n state.logoName,\r\n state.logoTag,\r\n state.setToggleSaveLogo,\r\n state.toggleSaveLogo,\r\n state.disableSaveButton,\r\n state.saveLogo,\r\n state.uploadLogoConfig,\r\n state.setLogoData,\r\n ]);\r\n const [tagName, setTagName] = React.useState('');\r\n\r\n const checkValidations = () => {\r\n const nameValidation = logoName.length >= 1;\r\n if (!nameValidation) {\r\n setDesignNameValidation('length');\r\n return nameValidation;\r\n } else return true;\r\n };\r\n const onSaveHandler = async () => {\r\n if (!isSaving) {\r\n if (!checkValidations()) return;\r\n setIsSaving(true);\r\n const canvasGetobject = canvas.getObjects();\r\n canvasGetobject.forEach((obj) => {\r\n if (obj.type === 'line') {\r\n canvas.remove(obj);\r\n }\r\n });\r\n\r\n // saving all path text data (text with shapes applied)\r\n let pathTextsData = {};\r\n canvasGetobject.forEach((obj) => {\r\n if (obj.type === 'path' && obj.pathData !== undefined) {\r\n pathTextsData[obj.text] = {\r\n width: obj.width,\r\n height: obj.height,\r\n left: obj.left,\r\n top: obj.top,\r\n pathData: obj.pathData,\r\n shapeSize: obj.shapeSize,\r\n shapeType: obj.shapeType,\r\n fontFamily: obj.fontFamily,\r\n fontWeight: obj.fontWeight,\r\n fontSize: obj.fontSize,\r\n charSpacing: obj.charSpacing,\r\n textAlign: obj.textAlign,\r\n fontStyle: obj.fontStyle,\r\n text: obj.text,\r\n };\r\n }\r\n });\r\n\r\n const dataURL = canvas.toDataURL();\r\n const canvasData = use3dddPlus.getState().applyColorFill();\r\n // const canvasGetobject = canvas.getObjects();\r\n // canvasData.objects.forEach((element, index) => {\r\n // element.colorFill = canvasGetobject[index].colorFill;\r\n // });\r\n\r\n // looping through the text shape objects & taking out text data to inject in the canvas json data & save\r\n let pathTextsKeys = Object.keys(pathTextsData);\r\n for (let i = 0; i < pathTextsKeys.length; i++) {\r\n let pathData = pathTextsData[pathTextsKeys[i]];\r\n for (let o = 0; o < canvasData.objects.length; o++) {\r\n const obj = canvasData.objects[o];\r\n if (\r\n obj.type === 'path' &&\r\n obj.left === Math.round(pathData.left * 100) / 100 &&\r\n obj.top === Math.round(pathData.top * 100) / 100 &&\r\n obj.width === Math.round(pathData.width * 100) / 100 &&\r\n obj.height === Math.round(pathData.height * 100) / 100\r\n ) {\r\n Object.assign(canvasData.objects[o], pathData);\r\n }\r\n }\r\n }\r\n\r\n const dataCh = JSON.stringify(canvasData);\r\n const S3UrlPath = await uploadLogoConfig(\r\n dataCh,\r\n use3dddPlus.getState().customerId\r\n );\r\n canvas.backgroundColor = null;\r\n const canvasSvg = canvas.toSVG();\r\n closeModal('', false, '', {});\r\n const raw = JSON.stringify({\r\n customer_id: use3dddPlus.getState().customerId,\r\n tag: logoTag.join(','),\r\n name: logoName,\r\n base64_image: dataURL,\r\n svg_image: canvasSvg,\r\n logo_config_url: S3UrlPath,\r\n });\r\n\r\n const horizontalLine = new fabric.Line(\r\n [0, canvas.height / 2, canvas.height, canvas.height / 2],\r\n {\r\n stroke: 'red',\r\n scaleX: 11,\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n const verticalLine = new fabric.Line(\r\n [canvas.width / 2, 0, canvas.width / 2, canvas.width],\r\n {\r\n stroke: 'red',\r\n visible: false,\r\n selectable: false,\r\n type: 'line',\r\n }\r\n );\r\n\r\n horizontalLine.centerH();\r\n canvas.add(horizontalLine);\r\n canvas.add(verticalLine);\r\n canvas.sendBackwards(horizontalLine);\r\n canvas.sendBackwards(verticalLine);\r\n use3dddPlus.setState({ horizontalLine: horizontalLine });\r\n use3dddPlus.setState({ verticalLine: verticalLine });\r\n saveLogo(raw)\r\n .then((data) => {\r\n setIsSaving(false);\r\n onSaveLogo(data);\r\n setLogoData(data);\r\n use3dddPlus.getState().toastMessages.saveSuccess();\r\n })\r\n .catch((ex) => {\r\n setIsSaving(false);\r\n console.log('ERROR in Save Logo:', ex);\r\n });\r\n }\r\n };\r\n\r\n useEffect(() => {\r\n if (tagName !== '') {\r\n const reg = /^[a-zA-Z0-9 ]+$/;\r\n const regTest = reg.test(tagName);\r\n\r\n if (!regTest) {\r\n setCommaInTagName(true);\r\n } else if (!!commaInTagName) {\r\n setCommaInTagName(false);\r\n }\r\n } else if (!!commaInTagName) {\r\n setCommaInTagName(false);\r\n }\r\n }, [tagName]);\r\n\r\n // useEffect(() => {\r\n // if (logoName !== '') {\r\n // const reg = /^[a-zA-Z0-9 ]+$/;\r\n // const regTest = reg.test(logoName);\r\n // if (!regTest) {\r\n // setDesignNameValidation('specialCharacter');\r\n // } else if (designNameValidation === 'specialCharacter') {\r\n // setDesignNameValidation('');\r\n // }\r\n // } else if (designNameValidation === 'specialCharacter') {\r\n // setDesignNameValidation('');\r\n // }\r\n // }, [logoName]);\r\n\r\n const handleTagChange = (event: any) => {\r\n if (event?.target?.value !== ' ') {\r\n setTagName(event.target.value);\r\n }\r\n };\r\n\r\n const handleKeyDown = (event: any) => {\r\n if (logoTag.length > 4 && tagName !== '') {\r\n event.preventDefault();\r\n setTagNameLength(true);\r\n setTagName('');\r\n return;\r\n } else {\r\n setTagNameLength(false);\r\n }\r\n\r\n if (\r\n event.key === 'Enter' ||\r\n event.key === 'Tab' ||\r\n (event.keyCode === 188 && tagName !== '') ||\r\n (event.type === 'blur' && tagName !== '')\r\n ) {\r\n event.preventDefault();\r\n\r\n const reg = /^[a-zA-Z0-9 ]+$/;\r\n const regTest = reg.test(tagName);\r\n if (!regTest) {\r\n setCommaInTagName(true);\r\n return;\r\n }\r\n if (!!regTest) {\r\n tagName !== '' && handleAdd();\r\n }\r\n } else if (tagName === '' && event.key === 'Backspace') {\r\n handleBackspace();\r\n }\r\n if (tagName.length !== 0 && (!!commaInTagName || !!tagNameLength)) {\r\n if (event?.type === 'blur' || event?.type === 'keydown') {\r\n setCommaInTagName(false);\r\n setTagNameLength(false);\r\n }\r\n }\r\n };\r\n\r\n const handleNameChange = (value) => {\r\n use3dddPlus.setState({ logoName: value });\r\n if (designNameValidation === 'length') {\r\n setDesignNameValidation('');\r\n }\r\n };\r\n\r\n const handleAdd = () => {\r\n let newList = [...logoTag];\r\n if (!newList.includes(tagName.trim())) {\r\n newList.push(tagName.trim());\r\n }\r\n use3dddPlus.setState({ logoTag: newList.filter(Boolean) });\r\n setTagName('');\r\n };\r\n\r\n const handleBackspace = () => {\r\n let newList = [...logoTag];\r\n newList.pop();\r\n use3dddPlus.setState({ logoTag: newList.filter(Boolean) });\r\n };\r\n\r\n const handleDelete = (e) => {\r\n const newList = logoTag.filter((item) => item !== e);\r\n use3dddPlus.setState({ logoTag: newList });\r\n };\r\n const onCancelHandler = () => {\r\n closeModal('', false, '', {});\r\n };\r\n return (\r\n <LogoEditorSaveDesignModal\r\n className={`md:absolute md:right-30 rounded-none p-0 md:h-auto max-h-screen max-w-[37.125rem] w-[80%] md:w-full m-[auto]\r\n `}\r\n >\r\n <button\r\n className=\"absolute right-[0.6875rem] top-[0.6875rem] px-[0.75rem] py-[0.75rem] hover:bg-[#E11A38] hover:text-[#ffffff] hover:rounded-none\"\r\n onClick={() => {\r\n use3dddPlus.getState().goBack();\r\n closeModal('', false, '', {});\r\n use3dddPlus.setState({ showCrossSave: false });\r\n \r\n }}\r\n >\r\n <RxCross2 strokeWidth={1} />\r\n </button>\r\n\r\n <div className={`flex h-max w-full`}>\r\n <div\r\n className={`w-full md:px-[112px] md:p-[98px] p-[30px] bg-white h-full flex justify-center`}\r\n >\r\n <div className=\"w-full\">\r\n <span\r\n className={`block mb-6 font-bold text-2xl lh-1 ${SECONDARY_COLOR} uppercase leading-[2.3125rem] font-bold ${EDIT_DESIGN_INFO_TEXT_COLOR_1} ${TEXT_SIZE_5}\r\n `}\r\n >\r\n {toggleSaveLogo.title}\r\n </span>\r\n <div>\r\n <div className=\"\">\r\n <CustomInput\r\n customLabelStyle={`${TEXT_SIZE_9} leading-[1.25rem] border-0 font-medium text-[#727272]`}\r\n value={logoName}\r\n onBlur={(e) =>\r\n handleNameChange(e?.target?.value?.trimStart())\r\n }\r\n type=\"text\"\r\n id=\"logoName\"\r\n name=\"logoName\"\r\n label=\"Design Name\"\r\n onChange={(e) =>\r\n handleNameChange(e?.target?.value?.trimStart())\r\n }\r\n customInputStyle={`${\r\n designNameValidation === 'length'\r\n ? `border border-[#e11a38]`\r\n : `border border-[#ecebed]`\r\n } text-[#727272] ${TEXT_SIZE_9} bg-transparent`}\r\n />\r\n </div>\r\n {designNameValidation === 'length' && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR}`}\r\n >\r\n * Please enter a name with at least 1 character\r\n </div>\r\n )}\r\n {designNameValidation === 'specialCharacter' && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR}`}\r\n >\r\n * Design Name can not have any special characters\r\n </div>\r\n )}\r\n <div\r\n className={`relative flex flex-row py-[0.695rem] border ${EDIT_DESIGN_INFO_INPUT_BORDER_COLOR} flex-wrap place-content-start mt-5 `}\r\n >\r\n <div className=\"flex flex-row gap-[0.5rem] flex-wrap items-center px-[1rem]\">\r\n {Array.isArray(logoTag) &&\r\n logoTag?.map((el: any, i) => (\r\n <div\r\n key={i}\r\n className={`${TEXT_SIZE_12} leading-[0.8125rem] flex h-[1.5rem] items-center pt-[0.375rem] pb-[0.3125rem] px-[0.5rem] rounded gap-[0.4375rem] ${EDIT_DESIGN_INFO_TEXT_COLOR_1} ${EDIT_DESIGN_INFO_BG_COLOR_4}`}\r\n >\r\n {el}\r\n <button onClick={() => handleDelete(el)}>\r\n <RxCross2\r\n className={`${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-bold`}\r\n />\r\n </button>\r\n </div>\r\n ))}\r\n\r\n <div>\r\n <input\r\n name=\"tags\"\r\n type=\"text\"\r\n placeholder=\" \"\r\n className={` ${EDIT_DESIGN_INFO_TEXT_COLOR_3} font-medium block w-[6.25rem] focus:outline-none !border-0 py-0 focus:border-0 peer focus:ring-0 ring-0 px-4`}\r\n value={tagName}\r\n onChange={handleTagChange}\r\n onKeyDown={handleKeyDown}\r\n onBlur={handleKeyDown}\r\n onClick={(e) => {\r\n e.currentTarget.focus();\r\n }}\r\n />\r\n <label\r\n htmlFor=\"designTags\"\r\n className={` ${\r\n logoTag?.length > 0 || !!commaInTagName\r\n ? 'py-0 !top-0 !font-[13px] !text-[#727272] !bg-white !opacity-1 !left-[1rem]'\r\n : ''\r\n } ${TEXT_SIZE_9} peer-focus:${EDIT_DESIGN_INFO_TEXT_COLOR_1} font-medium leading-[1.25rem] absolute z-10 transition-all top-2 transform -translate-y-1/2 peer-placeholder-shown:-translate-y-1/2 peer-placeholder-shown:top-1/2 peer-focus:top-0 peer-focus:font-[13px] peer-focus:!bg-white peer-focus:-translate-y-[10px] peer-focus:opacity-1 peer-placeholder-shown:text-[#727272] left-4 `}\r\n >\r\n Tags\r\n </label>\r\n </div>\r\n </div>\r\n </div>\r\n {(() => {\r\n switch (true) {\r\n case !!commaInTagName && !!tagNameLength:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters & Maximum\r\n number of tag can be 5\r\n </div>\r\n );\r\n case !!commaInTagName:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters\r\n </div>\r\n );\r\n case !!tagNameLength:\r\n return (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Maximum number of tag can be 5\r\n </div>\r\n );\r\n\r\n default:\r\n return null;\r\n }\r\n })()}\r\n {/* {!!commaInTagName && !!tagNameLength && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters & Maximum\r\n number of tag can be 5\r\n </div>\r\n )}\r\n {!!commaInTagName && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Tag Name can not have any special characters\r\n </div>\r\n )}\r\n {!!tagNameLength && (\r\n <div\r\n role=\"alert\"\r\n className={`text-sm ${INPUT_ERROR_TEXT_COLOR} mb-5`}\r\n >\r\n * Maximum number of tag can be 5\r\n </div>\r\n )} */}\r\n\r\n <div\r\n className={`${\r\n !disableSaveButton ? 'flex flex-col lg:flex-row' : ''\r\n } gap-[19px] leading-[23px] font-bold ${TEXT_SIZE_4} mt-5`}\r\n >\r\n {toggleSaveLogo.key === 'save' && (\r\n <>\r\n <button\r\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase active:${SAVEBUTTON_BG_COLOR} ${\r\n isSaving ? 'bg-[#d77382]' : SAVEBUTTON_BG_COLOR\r\n } ${BUTTON_TEXT_COLOR} ${\r\n isSaving ? '' : 'hover:bg-[#E11A38]'\r\n }`}\r\n onClick={() => onSaveHandler()}\r\n disabled={isSaving}\r\n >\r\n SAVE\r\n </button>\r\n <button\r\n className={`md:btn-md lg:w-2/5 w-full rounded-none uppercase border border-1 border-[#5d5d5d] hover:text-[#ffffff] hover:bg-[#E11A38] hover:border-[#E11A38] justify-center items-center `}\r\n onClick={() => onCancelHandler()}\r\n >\r\n Cancel\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </LogoEditorSaveDesignModal>\r\n );\r\n};\r\n","import React, { useRef, useEffect } from 'react';\r\n/**\r\n * Hook that alerts clicks outside of the passed ref\r\n */\r\nfunction useOutsideAlerter(ref: any, onClick: any) {\r\n useEffect(() => {\r\n /**\r\n * Alert if clicked on outside of element\r\n */\r\n function handleClickOutside(event: any) {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n // alert('You clicked outside of me!');\r\n onClick(event);\r\n }\r\n }\r\n function handleEscape(event: any) {\r\n if (event.key == 'Escape') onClick(event);\r\n }\r\n // Bind the event listener\r\n document.addEventListener('keydown', handleEscape);\r\n document.addEventListener('mousedown', handleClickOutside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener('mousedown', handleClickOutside);\r\n document.removeEventListener('keydown', handleEscape);\r\n };\r\n }, [ref]);\r\n}\r\n\r\n/**\r\n * Component that alerts if you click outside of it\r\n */\r\nfunction OutsideAlerter(props: any) {\r\n const wrapperRef = useRef(null);\r\n useOutsideAlerter(wrapperRef, props.onClick);\r\n\r\n return <div ref={wrapperRef}>{props.children}</div>;\r\n}\r\n\r\nexport default OutsideAlerter;\r\n","import React, { useState } from 'react';\r\nimport { ChromePicker } from 'react-color';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport OutsideAlerter from '../../hooks/outsideAlerter';\r\nexport const ColorPicker = () => {\r\n const [setDisplayProductColor, displayProductColor] = use3dddPlus(\r\n (state) => [state.setDisplayProductColor, state.displayProductColor],\r\n shallow\r\n );\r\n const [currentColor, setCurrentColor] = useState('#fff');\r\n\r\n const handleOnChange = (color) => {\r\n setCurrentColor(color.hex);\r\n const canvas = use3dddPlus.getState().fabricCanvas;\r\n canvas.backgroundColor = color.hex;\r\n canvas.renderAll();\r\n };\r\n\r\n return (\r\n <div className=\"absolute\">\r\n {displayProductColor && (\r\n <div className=\"relative top-[25vh] left-5 flex\">\r\n <OutsideAlerter onClick={() => setDisplayProductColor()}>\r\n <ChromePicker\r\n color={currentColor}\r\n onChange={handleOnChange}\r\n // onChangeComplete={handleOnChange}\r\n disableAlpha={true}\r\n onClose={() => setDisplayProductColor()}\r\n />\r\n </OutsideAlerter>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n};\r\n","import React from 'react';\r\nimport { Canvas } from '../canvas';\r\nimport { use3dddPlus } from '../../store';\r\nimport { shallow } from 'zustand/shallow';\r\nimport { UploadLogo } from '../uploadLogo';\r\nimport { Rightmenu } from '../Rightmenu';\r\nimport { AddMascot } from '../addMascot';\r\nimport { MyLogo } from '../myLogo';\r\nimport { SaveDesign } from '../saveDesign';\r\nimport {ColorPicker} from '../leftMenu/colorPicker'\r\nexport const MiddleMenu = ({ onApply, onSaveLogo }) => {\r\n const [selectedStepper, toggleSaveLogo, loadingLogo] = use3dddPlus(\r\n (state) => [state.selectedStepper, state.toggleSaveLogo, state.loadingLogo],\r\n shallow\r\n );\r\n React.useEffect(() => {\r\n if (selectedStepper === 2) loadingLogo('');\r\n }, []);\r\n return (\r\n <>\r\n <div className=\" flex flex-col md:flex-row flex-1 z-0 w-[90%] h-full\">\r\n <div className=\"flex w-[70%] h-[100%]\">\r\n <Canvas />\r\n </div>\r\n {toggleSaveLogo.status && <SaveDesign onSaveLogo={onSaveLogo} />}\r\n <div className=\"flex-1 z-[7] h-[100%] \">\r\n <Rightmenu />\r\n </div>\r\n </div>\r\n {selectedStepper === 1 && <UploadLogo />}\r\n {selectedStepper === 4 && <AddMascot />}\r\n {selectedStepper === 2 && <MyLogo onApply={onApply} />}\r\n {selectedStepper === 5 && <ColorPicker />}\r\n </>\r\n );\r\n};\r\n","import React from 'react';\r\nimport './index.css';\r\nimport { use3dddPlus } from './store';\r\n// import { createRoot } from 'react-dom/client';\r\nimport * as Components from './components';\r\nimport * as services from './services';\r\nimport { LeftMenu } from './components/leftMenu';\r\nimport { MiddleMenu } from './components/middleMenu';\r\n// import { Modal } from './components';\r\nimport { Loader } from './components/loader';\r\nimport 'react-toastify/dist/ReactToastify.css';\r\nimport { ToastContainer, Bounce } from 'react-toastify';\r\n// Please do not use types off of a default export module or else Storybook Docs will suffer.\r\n// see: https://github.com/storybookjs/storybook/issues/9556\r\n/**\r\n * A custom App component. Neat!\r\n */\r\nconst LogoEditor = ({\r\n stepperId,\r\n onApply,\r\n customLogoColorList,\r\n defaultColorList,\r\n logoData,\r\n customerId,\r\n onSaveLogo,\r\n}) => {\r\n const [setSelectedStepper, myLogoHandler, loading] = use3dddPlus((state) => [\r\n state.setSelectedStepper,\r\n state.myLogoHandler,\r\n state.loading,\r\n ]);\r\n React.useEffect(() => {\r\n setSelectedStepper(stepperId);\r\n if (stepperId == undefined) {\r\n myLogoHandler(logoData);\r\n }\r\n }, [stepperId]);\r\n React.useEffect(() => {\r\n use3dddPlus.setState({ customUploadLogoColorList: customLogoColorList });\r\n }, [customLogoColorList]);\r\n React.useEffect(() => {\r\n use3dddPlus.setState({ defaultColorList: defaultColorList });\r\n }, [defaultColorList]);\r\n React.useEffect(() => {\r\n use3dddPlus.setState({ customerId: customerId });\r\n }, [customerId]);\r\n return (\r\n // <Modal\r\n // backdropStyle={`z-[7]`}\r\n // contentStyle={\r\n // 'top-0 absolute overflow-hidden border-2 border-indigo-600 roboto-bold h-[88vh] m-[auto] z-[7] !mr-[auto] max-w-[73%] w-[100%] md:w-[auto] p-0'\r\n // }\r\n // >\r\n <div className=\" flex flex-col md:flex-row w-full h-[88vh]\">\r\n <ToastContainer\r\n position=\"top-center\"\r\n autoClose={3000}\r\n hideProgressBar={true}\r\n newestOnTop={false}\r\n closeOnClick\r\n rtl={false}\r\n pauseOnFocusLoss\r\n draggable\r\n pauseOnHover\r\n theme=\"colored\"\r\n transition={Bounce}\r\n />\r\n {loading && <Loader />}\r\n <div className=\"lg:w-[10%] h-[100%]\">\r\n <LeftMenu />\r\n </div>\r\n <div className=\" flex h-full w-[90%]\">\r\n <MiddleMenu onApply={onApply} onSaveLogo={onSaveLogo} />\r\n </div>\r\n </div>\r\n // </Modal>\r\n );\r\n};\r\n// const container = document.getElementById('root');\r\n// const root = createRoot(container!); // createRoot(container!) if you use TypeScript\r\n// const [customUploadLogoColorList, defaultColorList] = use3dddPlus((state) => [\r\n// state.customUploadLogoColorList,\r\n// state.defaultColorList,\r\n// ]);\r\n// root.render(\r\n// <LogoEditor\r\n// stepperId={1}\r\n// onApply={''}\r\n// customLogoColorList={customUploadLogoColorList}\r\n// defaultColorList={defaultColorList}\r\n// />\r\n// );\r\n\r\nexport { LogoEditor, Components, use3dddPlus, services };\r\n"],"names":["styleInject","css","ref","insertAt","document","head","getElementsByTagName","style","createElement","type","firstChild","insertBefore","appendChild","styleSheet","cssText","createTextNode","Icon","React","forwardRef","_ref","label","icon","className","props","_objectWithoutPropertiesLoose","_excluded","tooltip","useTooltipState","placement","TooltipReference","as","Button","Tooltip","zIndex","IconButton","_ref2","_ref2$size","size","_ref2$icon","undefined","_excluded2","IconContext","Provider","value","HorizontalFlip","GenIcon","tag","attr","xmlns","width","height","viewBox","child","d","VerticalFlip","fill","stroke","transform","Error","cx","cy","r","stroke-linecap","stroke-width","RLogo","id","fillRule","strokeWidth","MyLogo","AddText","FlipH","data-name","clip-path","FlipV","SelectAll","_extends","rx","x","y","Copy","SendToBack","stroke-miterlimit","SendToFront","SendAObject","SendUnderObject","EyeDropper","Delete","SnapToCenter","CustomToast","message","toastId","toast","info","toastGen","error","success","warning","toastMessages","deleteLogoSuccess","e","saveSuccess","somethingWentWrong","updateLogoSuccess","updateSuccess","noOfColors","noIteminCanvas","graphqlSlice","set","get","displayLoginModal","showProductBreakUpModal","status","loadDesignModal","productInfoModal","toggleSaveLogo","key","title","details","showModalAfterLogin","selectedDesign","changeModel","alert","confirmDesignModal","confirmUpdateDesignModal","toggleSuccessfullDesign","designUpdateSuccessfulModal","getListFromRack","setSelectedDesign","selected","setLoadDesignModal","loadDesign","clearLayers","use3dddPlus","setState","storeAllObject","setToggleSaveLogo","setConfirmDesignModal","setConfirmUpdateDesignModal","state","setToggleSuccessfullDesign","setProductInfoModal","editDesignInfo","saveDesignModal","current","getState","navigateTo","logoName","designNotes","logoTag","string","characters","i","charAt","Math","floor","random","length","designNumber","customerId","toggleLoginModal","setShowModalAfterLogin","disableSaveButton","_unused","share","saveRackSuccessfulModal","setSaveRackSuccessfulModal","toggleAction","toogleShowProductBreakUpModal","disableUpdate","productBreakup","logoSearchText","logoSortBy","logoSortDir","logoPageNo","logoPageSize","showCrossSave","baseURL","process","env","REACT_APP_LAMBDA_URL","instance","axios","create","timeout","headers","Content-Type","Authorization","responseBody","response","data","requests","url","then","post","body","config","put","delete","lambdaSlice","_set","_get","lambdaClient","loadingLogo","_loadingLogo","_asyncToGenerator","_regeneratorRuntime","mark","_callee","_data","res","wrap","_context","prev","next","loading","sent","retriveLogoDesign","abrupt","t0","console","stop","_x","apply","arguments","getStockLogos","_getStockLogos","_callee2","_context2","fabric","Object","prototype","hasControls","hasBorders","stockLogos","saveLogo","_saveLogo","_callee3","logo","_context3","_x2","saveDesignSlice","designImageUrl","designProofPdfUrl","designConfig","designId","hasDesignNumber","showSaveCTA","showSaveRackCTA","_oldURL","REACT_APP_IMAGE_URL_OLD","_newURL","REACT_APP_IMAGE_URL","getCookie","cname","name","ca","decodeURIComponent","cookie","split","c","substring","indexOf","setCookie","cvalue","exdays","Date","setTime","getTime","expires","toUTCString","clearCookie","encryptToken","CryptoJS","AES","encrypt","JSON","stringify","toString","decryptToken","ciphertext","bytes","decrypt","parse","enc","Utf8","includes","replace","texture","item","path","ProductMedium","Image_URL","__typename","flipY","queryString","window","location","search","URLSearchParams","REACT_APP_3DDDPLUS_PROJECTID","token","base64","jsonPayload","_window","_window$atob","atob","_window$atob$split","map","charCodeAt","slice","join","dataURI","byteString","ab","ArrayBuffer","ia","Uint8Array","File","strData","filename","link","download","href","click","removeChild","which","keycode","preventDefault","authSlice","customUploadLogoColorList","defaultColorList","priceLevel","clearLoginInfo","sessionStorage","removeItem","authType","cardCode","customerEmail","customerType","generateCustomizerToken","setInCookies","customizerToken","setItem","setCustomizerToken","getItem","isLoggedIn","historySlice","history","page","concat","goBack","previousPage","pop","fabricSlice","popUpCanvasCount","popupCanvasStoreHistory","availableMascots","filteredMascots","logoData","setLogoData","allColor","selectedStepper","setSelectedStepper","hasUploadScreen","setHasUploadScreen","storeHistory","fabricCanvas","popupCanv","textInfo","uploadImageModalDisplay","currentSelection","activeSelection","selectedAll","colorFill","defaultColorFill","loadedObject","defaultColorFillCopy","iconImage","HideControls","tl","tr","bl","br","ml","mt","mr","mb","mtr","showContextMenu","forStoringAllObject","unshift","forIconCapture","activeObject","getActiveObject","dataURL","toDataURL","nameCounter","guid","u","now","repeat","substr","duplicateObject","clipboard","activeObj","clone","cloned","clonedObj","discardActiveObject","evented","canvas","forEachObject","obj","index","_objects","pathData","shapeSize","shapeType","fontFamily","fontWeight","fontSize","charSpacing","textAlign","fontStyle","text","add","setCoords","top","left","setActiveObject","brNew","getBoundingRect","updateModifaction","deleteButtonControls","count","skipEvent","undo","clear","renderAll","loadFromJSON","getObjects","forEach","remove","horizontalLine","Line","scaleX","visible","selectable","verticalLine","centerH","sendToBack","element","redo","abs","sendBackwards","moveDown","moveUp","moveRight","moveLeft","applyColorFill","canvasData","toJSON","canvasGetobject","objects","setDefaultColorFill","dcf","setDefaultColorFillCopy","toSet","push","contextMenuCoordinates","stockLogoHandler","logos","testSVG","loadSVGFromURL","options","util","groupSVGElements","scaleToWidth","scaleToHeight","objImage","_Fills","ele","fillColor","removeDuplicates","fillColors","centerObject","myLogoHandler","fetch","logo_config_url","method","result","loadingRetrivedFiles","log","bind","backgroundColor","uploadLogoConfig","_uploadLogoConfig","jsonConfig","bucketName","region","S3","microTime","filePath","params","s3UrlPath","REACT_APP_BUCKET","REACT_APP_REGION","AWS","update","accessKeyId","REACT_APP_ACCESSKEY","secretAccessKey","REACT_APP_SECRET_ACCESSKEY","Bucket","Key","Body","ContentType","Promise","resolve","reject","putObject","err","setAvailableMascots","setFilteredMascots","handleMascotObjectFilterValues","event","filterValue","thumbnail","filteredData","filter","tags","displayProductColor","setDisplayProductColor","popUpCanvasAllColor","popUpCanvasApplyColorFill","popUpCanvasData","popUpCanvasGetobject","popUpCanvasUpdateModification","historyObject","json","popUpCanvasUndo","_V","colors","canvasWidth","canvasHeight","numCols","ceil","numRows","line","lockMovementX","lockMovementY","lockScalingX","lockScalingY","j","rect","Rect","isEvenRow","popUpCanvasRedo","forPopupCanvasReset","forPopupCanvasColor","imageData","lastPosition","setLastPosition","TIFFParser","this","tiffDataView","littleEndian","fileDirectories","isLittleEndian","BOM","getBytes","TypeError","hasTowel","RangeError","getFieldTagName","fieldTag","fieldTagName","fieldTagNames","315","258","265","264","320","259","33432","306","338","266","289","288","291","290","316","270","257","256","271","281","280","272","254","274","262","284","296","278","277","305","279","273","255","263","282","283","326","327","343","328","433","434","269","336","321","346","347","285","297","317","319","532","339","559","330","292","293","325","323","324","322","301","318","344","286","529","531","530","345","287","37378","40961","36868","36867","34665","36864","33434","41728","37385","40960","33437","42016","37384","37500","37377","37510","33723","34675","700","42112","42113","34377","getFieldTypeName","fieldType","fieldTypeName","fieldTypeNames","1","2","3","4","5","6","7","8","9","10","11","12","getFieldTypeLength","fieldTypeLength","getBits","numBits","byteOffset","bitOffset","newByteOffset","totalBits","shiftRight","shiftLeft","rawBits","getUint8","getUint16","getUint32","bits","numBytes","offset","getFieldValues","typeCount","valueOffset","fieldValues","fieldValueSize","indexOffset","a","String","fromCharCode","clampColorSample","colorSample","bitsPerSample","multiplier","pow","makeRGBAFillValue","g","b","parseFileDirectory","numDirEntries","tiffFields","entryCount","values","nextIFDByteOffset","parseTIFF","tiffArrayBuffer","DataView","firstIFDByteOffset","fileDirectory","imageWidth","ImageWidth","imageLength","ImageLength","strips","compression","Compression","samplesPerPixel","SamplesPerPixel","sampleProperties","bitsPerPixel","hasBytesPerPixel","BitsPerSample","bitsPerSampleValues","hasBytesPerSample","bytesPerSample","bytesPerPixel","stripOffsetValues","StripOffsets","numStripOffsetValues","StripByteCounts","stripByteCountValues","stripOffset","stripByteCount","jIncrement","getHeader","pixel","sample","currentSample","m","sampleInfo","blockLength","iterations","header","getInt8","currentByte","getContext","ctx","fillStyle","RowsPerStrip","rowsPerStrip","numStrips","imageLengthModRowsPerStrip","rowsInLastStrip","numRowsInStrip","numRowsInPreviousStrip","photometricInterpretation","PhotometricInterpretation","extraSamplesValues","numExtraSamples","ExtraSamples","ColorMap","colorMapValues","colorMapSampleSize","numPixels","yPadding","pixelSamples","red","green","blue","opacity","k","invertValue","samples","colorMapIndex","fillRect","optionpresets","default","corsenabled","ltres","qtres","pathomit","rightangleenhance","colorsampling","numberofcolors","mincolorratio","colorquantcycles","layering","strokewidth","linefilter","scale","roundcoords","viewbox","desc","lcpr","qcpr","blurradius","blurdelta","png","jpg","posterized1","posterized2","curvy","sharp","detailed","smoothed","grayscale","fixedpalette","randomsampling1","randomsampling2","artistic1","artistic2","artistic3","artistic4","posterized3","pal","converterSlice","_convertPdfToImages","_loadImageFromURL","_aiConvert","_tiffConvert","processImage","svgstr","colorValue","loadSVGFromString","fillCounts","sortedFillColors","keys","sort","topColors","_C","RGBToHex","defaultCF","euclideanDistance","color1","color2","c1","Color","getSource","c2","diffG","diffB","sqrt","cf","property","updated","colorMap","color","closestColor","reduce","curr","setControlVisible","file","setFile","tiffConvert","tiffParser","canvasEl","tiffCanvas","imageUrl","arrayBuffer","aiConvert","aiFile","formData","FormData","append","loadImageFromURL","_x3","imageToSVG","ext","isSVG","convert","reader","FileReader","onload","target","readAsText","ImageTracer","toLowerCase","refreshColor","arr","rgb","rgba","parseInt","sep","changeSVGColor","previousColor","fc","addText","Text","lineHeight","paintFirst","padding","lockScalingFlip","layer0","setControlsVisibility","pdfConverter","_resolve","_callee4","buffer","_context4","convertPdfToImages","readAsArrayBuffer","_callee5","pdf","viewport","context","_context5","pdfjsLib","promise","numPages","getPage","getViewport","render","canvasContext","_x4","subscribeWithSelector","actionSlice","datasbase","ToolTip","arrowOnTop","_ref$className","children","ActionButtons","_use3dddPlus","shallow","findIndex","splice","canvasActions","onClick","sel","ActiveSelection","requestRenderAll","disabled","MdLayers","CgUndo","CgRedo","justifyContent","CANVAS_MENU_TEXT","NudgeButtons","textSelected","nudgeMove","aCoords","marginTop","marginBottom","version","ContextMenu","menu","onclick","bringForward","bringToFront","flipX","originX","canvasRef","useRef","resizeCanvas","getElementById","outerCanvasContainer","containerWidth","clientWidth","getWidth","zoom","getZoom","setWidth","setHeight","clientHeight","getHeight","setViewportTransform","useEffect","canv","left1","top1","scale1x","scale1y","width1","height1","Canvas","centeredScaling","preserveObjectStacking","stopContextMenu","isObjectInCenter","canvasCenterX","objCenterX","isObjectInVerticalCenter","canvasCenterY","isObjectInHorizontalCenter","deleteImg","src","rotateImg","settingImg","renderIcon","fabricObject","cornerSize","save","translate","rotate","degreesToRadians","angle","drawImage","restore","objectCaching","transparentCorners","cornerColor","cornerStrokeColor","borderColor","cornerStyle","borderDashArray","controls","deleteControl","Control","offsetY","offsetX","cursorStyle","mouseUpHandler","eventData","settingControl","getElement","getBoundingClientRect","clientX","clientY","actionHandler","controlsUtils","rotationWithSnapping","actionName","withConnection","getAllColors","_canv$getObjects","flat","Boolean","on","_e$selected","_e$selected$","_e$selected2","_e$selected2$","isNaN","pointer","max","min","scaleY","lockRotation","centeredRotation","initCanvas","addEventListener","FontFace","load","_document$fonts","fonts","classList","position","border","boxShadow","onBlur","Card","cardClass","CardBody","bodyClass","CardMedia","role","alt","imageClass","backgroundImage","CardTags","tagsClass","CardTitle","titleClass","FileUploadButton","onFileSelect","fileInputRef","_useState","useState","setIsDragging","onDragEnter","onDragLeave","onDragOver","onDrop","droppedFile","dataTransfer","files","htmlFor","MdOutlineFileUpload","_fileInputRef$current","onChange","selectedFile","_event$target$files","accept","defaultColorNames","ColorPalette","_ref$previousClass","previousClass","_ref$mainIndex","mainIndex","handleColorChange","_ref$style","selectColor","setSelectColor","colorList","handleColorClick","TEXT_SIZE_9","ColorBox","boxClass","_ref2$boxClass","background","marginLeft","ColorImpl","colorCode","find","mClass","stopPropagation","setDisplayPallet","callback","setPosition","innerHeight","PopUpCanvas","popupCanvas","colorCount","setColorCount","_useState2","colorFillCount","setColorFillCount","_useState3","isRefresh","setIsRefresh","_useState4","isNextClicked","setIsNextClicked","defaultColorFillRef","_useState5","displayPallet","_useState6","hasPallet","setTimeout","onColorUpdate","removeColorPalatte","popupcanvas","defaultCursor","hoverCursor","Set","_popupcanvas$getObjec","toActiveSelection","viewportCenter","mouseClick","getPointer","removedColors","containsPoint","defaultColorsCopy","rc","dc","removeEventListener","onContinue","objs","alltogetherObj","Group","onSelectColor","conflictColors","useMemo","currentColors","colorFromDefaultCopy","dcc","overflow","alignItems","Number","CgArrowRight","cursor","handleChange","GiDrop","MdOutlineCancel","bottom","right","mixBlendMode","mainClass","display","UploadLogo","setSelectedFile","svgConverter","objectURL","lastIndexOf","s3_file_url","svgText","ex","URL","createObjectURL","Searchbar","searchBarMainClass","placeholder","onKeyPress","onPaste","currentTarget","focus","SortAndFilterButton","icons","buttonLabelClass","SortByDropdown","sortOptions","isDropdownOpen","setIsDropdownOpen","dropdownRef","toggleDropdown","handleOutsideClick","contains","BsSortDown","option","sortBy","sortDir","onApply","_React$useState","logoSelected","setLogoSelected","scrollEnd","setScrollEnd","morePages","setMorePages","myRef","debouncedSearchText","milliSeconds","debouncedValue","setDebouncedValue","handler","clearTimeout","useDebounce","handleScroll","useCallback","scrollY","scrollTop","scrollHeight","fetchData","onScroll","_logo$tag","_logo$tag$split","_logo$tag$split$filte","logo_id","logo_url","BsCheckLg","_ref$label","_ref$iconPosition","iconPosition","checkMarkClass","IoMdCheckmarkCircle","downloadClass","iconClass","pdfUrl","downloadIconClass","HiOutlineDownload","flagClass","flag","descriptionClass","InputImpl","contentStyle","crossOnClick","modalStyle","backdropStyle","open","RxCross2","buttons","buttonMainClass","button","buttonClass","headingStyle","labelStyle","onIconClick","iconStyle","LeftMenu","StepperList","FaRegImage","BiSolidColorFill","TEXT_COLOR_1","SELECT_TEXT_COLOR","step","SELECT_BG_COLOR","t","s","h","exports","l","call","o","defineProperty","configurable","enumerable","n","__esModule","hasOwnProperty","p","_class","source","A","B","C","D","Aleft","Atop","Btop","Bright","Cright","Cbottom","Dbottom","Dleft","ABx","ABy","CDx","CDy","BCx","BCy","ADx","ADy","STEPS","distortX","distortY1","distortY2","T1","T2","kAB","kBC","kCD","kAD","applyParameters","_proto","_parameters","bend","PI","sin","cos","kt","distortV","distortH","setAnchors","setArc","setArcLower","setArcUpper","setArch","setBulge","setFlag","setFish","setRise","setInflate","setSqueeze","setWaveLower","setWaveUpper","setControls","changeCubic","_changePoint","getPointOn","getNewSegment","changePoint","calculateArms","_class2","Exception","_props","vertical","commands","parseString","_proto2","match","parseFloat","warp","calcRectangle","output","xMin","yMin","xMax","yMax","Path","errorPopup","fontFamilies","Rightmenu","initTE","Tab","textAlignDisplay","setTextAlignDisplay","bold","italic","underline","setFontStyle","activeButton","setActiveButton","activeTab","setActiveTab","shapeSizeVal","setShapeSizeVal","textLength","setTextLength","_useState7","bridgeshapeBendSize","setBridgeShapeBendSize","_useState8","bowtieshapeBendSize","setBowtieShapeBendSize","_useState9","_useState10","_useState11","textToPath","promises","pathObj","object","fontSource","font","getPath","fabricPath","toPathData","all","bridgeShapeChange","textShapeChange","textChange","_text","dims","newTextPath","_dims","_activeObj","toClipPathSVG","trim","_removeCacheCanvas","updateStoreAllObject","_calcDimensions","_x5","_x6","_x7","_x8","_x9","reduceFontSize","_ref3","_activeObj2","onTextChange","_ref4","lines","_x10","textAlignHandler","reduceLeft","_ref5","_activeObj3","textColorChange","strokeColorChange","textStyle","_extends2","layerHandle","num","currentObject","changeArr","fromIndex","toIndex","changeSVGTextColor","SelectedObjet","tempColorFill","onSave","unSub","subscribe","_current","_previous","mergedColors","_Object$keys","tempColors","uniqueColors","paddingLeft","tab","INPUT_BG_COLOR","list","FiAlignLeft","FiAlignCenter","FiAlignRight","valueAsNumber","dublicateText","oldCharSpacing","val","setShapeSizeOnTextPath","_Object$keys2","ErrorPopup","marginRight","deleteElement","Loader","_ref$position","_ref$height","loaderRef","DropdownIndicator","components","control","base","&:focus","&:hover","isSelected","isFocused",":active","ListDropdown","dropdownData","handleSelected","setData","Select","defaultValue","isSearchable","IndicatorSeparator","styles","decorationData","code","description","linkedNodes","threeD","AddMascot","Array","from","flatMap","mascot","labelClass","labelSpan","dropdownClass","dropdownLiClass","LogoEditorSaveDesignModal","CustomInput","customLabelStyle","customInputStyle","FloatingLabel","variant","onKeyDown","theme","outlined","sm","md","input","helperText","SaveDesign","onSaveLogo","designNameValidation","setDesignNameValidation","commaInTagName","setCommaInTagName","tagNameLength","setTagNameLength","isSaving","setIsSaving","closeModal","tagName","setTagName","onSaveHandler","pathTextsData","pathTextsKeys","dataCh","S3UrlPath","canvasSvg","raw","nameValidation","round","assign","toSVG","customer_id","base64_image","svg_image","test","handleKeyDown","keyCode","regTest","handleAdd","handleBackspace","handleNameChange","newList","_e$target","_e$target$value","trimStart","_e$target2","_e$target2$value","isArray","el","TEXT_SIZE_12","EDIT_DESIGN_INFO_TEXT_COLOR_1","_event$target","OutsideAlerter","wrapperRef","handleClickOutside","handleEscape","ColorPicker","setCurrentColor","ChromePicker","hex","disableAlpha","onClose","MiddleMenu","stepperId","customLogoColorList","ToastContainer","autoClose","hideProgressBar","newestOnTop","closeOnClick","rtl","pauseOnFocusLoss","draggable","pauseOnHover","transition","Bounce"],"mappings":"ohCAAA,SAASA,EAAYC,EAAKC,QACX,IAARA,IAAiBA,EAAM,IAC5B,IAAIC,EAAWD,EAAIC,SAEnB,GAAKF,GAA2B,oBAAbG,SAAnB,CAEA,IAAIC,EAAOD,SAASC,MAAQD,SAASE,qBAAqB,QAAQ,GAC9DC,EAAQH,SAASI,cAAc,SACnCD,EAAME,KAAO,WAEI,QAAbN,GACEE,EAAKK,WACPL,EAAKM,aAAaJ,EAAOF,EAAKK,YAKhCL,EAAKO,YAAYL,GAGfA,EAAMM,WACRN,EAAMM,WAAWC,QAAUb,EAE3BM,EAAMK,YAAYR,SAASW,eAAed,wj6GCdxCe,EAAOC,EAAMC,YACjB,SAAAC,EAAuCjB,OAApCkB,EAAKD,EAALC,MAAOC,EAAIF,EAAJE,KAAMC,EAASH,EAATG,UAAcC,EAAKC,EAAAL,EAAAM,GAC3BC,EAAUC,kBAAgB,CAAEC,UAAW,QAC7C,OACEX,gCACEA,gBAACY,kCACC3B,IAAKA,GACDqB,EACAG,GACJI,GAAIC,SACJT,UAAcA,4JACFF,IAEXC,GAEFD,GAAmB,KAAVA,GACRH,gBAACe,2BACKN,GACJJ,ofACAf,MAAO,CAAE0B,OAAQ,MAEhBb,OAQAc,EAAa,SAAHC,OACrBf,EAAKe,EAALf,MAEAE,EAASa,EAATb,UAASc,EAAAD,EACTE,KAAAA,WAAID,EAAG,OAAMA,EAAAE,EAAAH,EACbd,KAAAA,WAAIiB,OAAGC,EAASD,EACbf,EAAKC,EAAAW,EAAAK,GAER,OACEvB,gBAACwB,cAAYC,UACXC,MAAO,CACLN,KAAMA,EACNf,UAAW,uCAGbL,gBAACD,iBAAKI,MAAOA,EAAOC,KAAMA,EAAMC,UAAWA,GAAeC,MCnDnDqB,EAAiB,SAACrB,GAC5B,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CAkBL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,2CACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,4EAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,iCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,qCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,mCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,sCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,sCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,sCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,oCACXD,MAAO,QA3EVP,CAgFJtB,ICjFO+B,EAAe,SAAC/B,GAC3B,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,aAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEQ,KAAM,OAAQC,OAAQ,WAC9BJ,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,gBACHG,OAAQ,QAEVJ,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,OACNF,EAAG,mBAELD,MAAO,MAIb,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJU,UAAW,4BAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,iCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,uFAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,iCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,qCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,mCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,sCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,sCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,oCAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,oCAELD,MAAO,YA1GlBP,CAmHJtB,ICpHQmC,EAAQ,SAACnC,GACpB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,aAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEU,UAAW,wBACnBL,MAAO,CACL,CACEN,IAAK,SACLC,KAAM,CACJY,GAAI,KACJC,GAAI,KACJC,EAAG,KACHJ,UAAW,qBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJQ,KAAM,OACNC,OAAQ,OACRM,iBAAkB,QAClBC,eAAgB,KAElBX,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,gCACXD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,gCACXD,MAAO,YA7ClBP,CAsDJtB,ICvDQyC,EAAQ,SAACzC,GACpB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEkB,GAAI,KACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,OACNW,SAAU,UACVT,UAAU,oBACVJ,EAAG,yMAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,OACNC,OAAQ,OACRU,SAAU,UACVT,UAAU,2BACVU,YAAa,MACbd,EAAG,4MAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,OACNW,SAAU,UACVT,UAAU,2BACVJ,EAAG,s0BAELD,MAAO,UA/CdP,CAsDJtB,ICvDQ6C,EAAS,SAAC7C,GACrB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEkB,GAAI,KACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJoB,YAAY,IACZd,EAAG,2gEAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,2KAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,uIAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,yIAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJQ,KAAM,UAENW,SAAU,UAEVT,UAAW,8BACXJ,EAAG,mJAELD,MAAO,UAxDdP,CA+DJtB,IChEQ8C,EAAU,SAAC9C,GACtB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,aAGXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,8JAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,2LAELD,MAAO,QA1BVP,CA+BJtB,ICjCQ+C,EAAQ,SAAC/C,GACpB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,KACPC,OAAQ,SACRC,QAAS,iBAEXC,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,WACLC,KAAM,CAAEkB,GAAI,aACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,SACRK,KAAM,WAERH,MAAO,QAMjB,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,aACbd,UAAW,oCAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iBACXe,YAAa,mBAEfpB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2BACHI,UAAW,qBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wEACHI,UAAW,yBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,sBACXF,KAAM,WAERH,MAAO,UAzJdP,CAgKJtB,IC/JQkD,EAAQ,SAAClD,GACpB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,KACRC,QAAS,iBAEXC,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,WACLC,KAAM,CAAEkB,GAAI,aACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,SACRK,KAAM,WAERH,MAAO,QAMjB,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,aACbd,UAAW,+BAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iBACXe,YAAa,mBAEfpB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2BACHI,UAAW,qBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wEACHI,UAAW,yBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,0BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,sBACXF,KAAM,WAERH,MAAO,UAzJdP,CAgKJtB,ICnKQmD,EAAY,SAACnD,GACxB,OAAOsB,UAAQ,CACbC,IAAK,MAELC,KAAI4B,GACF3B,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,oBACT7B,UAAW,SACRC,GAEL6B,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CAAEwB,YAAa,cACrBnB,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJQ,KAAM,OACNC,OAAQ,UACRW,YAAa,KAEff,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CAAEE,MAAO,KAAMC,OAAQ,KAAM0B,GAAI,IAAKpB,OAAQ,QACpDJ,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJ8B,EAAG,MACHC,EAAG,MACH7B,MAAO,OACPC,OAAQ,OACR0B,GAAI,QAENxB,MAAO,MAIb,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,2PACH/B,UAAW,8BAEb8B,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,6UACH/B,UAAW,8BAEb8B,MAAO,QAxDVP,CA6DJtB,IC7DQwD,EAAO,SAACxD,GACnB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJkB,GAAI,QACJjB,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,+jBACHE,KAAM,WAERH,MAAO,MAlBNP,CAqBJtB,ICtBQyD,EAAa,SAACzD,GACzB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,kCAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wBACHI,UAAW,kCACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,iCACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,kCACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,QAxDVP,CA6DJtB,IC9DQ2D,EAAc,SAAC3D,GAC1B,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iCAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,+BAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,kBAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,aAEfnB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,yBACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,QACPC,OAAQ,QACRO,UAAW,2BACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,QAMjB,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,SACPC,OAAQ,SACRO,UAAW,wBACXF,KAAM,WAERH,MAAO,UApFdP,CA2FJtB,IC7FQ4D,GAAc,SAAC5D,GAC1B,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iCAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,+BAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,4BAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,KACRO,UAAW,yBACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,QAMjB,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,KACRO,UAAW,8BACXF,KAAM,WAERH,MAAO,QA9DVP,CAmEJtB,ICpEQ6D,GAAkB,SAAC7D,GAC9B,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,SACRC,QAAS,qBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,iCAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,KACRO,UAAW,8BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,+BAEbL,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACbd,UAAW,4BAEbL,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,gBACJM,YAAa,gBACbtB,MAAO,KACPC,OAAQ,KACRO,UAAW,yBACXF,KAAM,OACNC,OAAQ,UACRyB,oBAAqB,KACrBlB,eAAgB,KAElBX,MAAO,YA1DlBP,CAmEJtB,ICnEQ8D,GAAa,SAAC9D,GACzB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJC,MAAO,6BACPC,MAAO,SACPC,OAAQ,QACRC,QAAS,oBAEXC,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,GACNK,MAAO,CACL,CACEN,IAAK,WACLC,KAAM,CAAEkB,GAAI,KACZb,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CAAEM,EAAG,wBACXD,MAAO,QAMjB,CACEN,IAAK,IACLC,KAAM,CAAEyB,YAAa,WACrBpB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,q0BAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJM,EAAG,oQAELD,MAAO,QA1CVP,CA+CJtB,ICjDQ+D,GAAS,SAAC/D,GACrB,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAI4B,GACFV,GAAI,QACJjB,MAAO,6BACPC,MAAO,KACPC,OAAQ,KACRC,QAAS,aACN5B,GAEL6B,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,uDAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wDAELD,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2KAELD,MAAO,MApCNP,CAuCJtB,ICtCQgE,GAAe,SAAChE,GAC3B,OAAOsB,UAAQ,CACbC,IAAK,MACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,aACbvB,MAAO,6BACPC,MAAO,KACPC,OAAQ,SACRC,QAAS,iBAEXC,MAAO,CACL,CACEN,IAAK,IACLC,KAAM,CACJkB,GAAI,aACJM,YAAa,cAEfnB,MAAO,CACL,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,+QACHI,UAAW,wBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,mQACHI,UAAW,iBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,yWACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,4RACHI,UAAW,yBACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,iJACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,yFACHI,UAAW,8BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,wFACHI,UAAW,6BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2DACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,sCACHI,UAAW,8BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2DACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,+GACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,2DACHI,UAAW,8BACXF,KAAM,WAERH,MAAO,IAET,CACEN,IAAK,OACLC,KAAM,CACJkB,GAAI,YACJM,YAAa,YACblB,EAAG,iHACHI,UAAW,+BACXF,KAAM,WAERH,MAAO,QA/JVP,CAoKJtB,aChKWiE,GACd/E,EACAgF,EACAC,EACAnF,GAEA,OAAQE,GACN,IAAK,OACH,OAAOkF,QAAMC,KAAKC,GAAS,CAAEpF,KAAM,OAAQgF,QAAAA,IAAY,CACrDC,QAAAA,EACAnF,MAAAA,IAEJ,IAAK,QACH,OAAOoF,QAAMG,MAAMD,GAAS,CAAEpF,KAAM,QAASgF,QAAAA,IAAY,CACvDC,QAAAA,EACArE,KAAMqC,EACNnD,MAAAA,IAEJ,IAAK,UACH,OAAOoF,QAAMI,QAAQF,GAAS,CAAEpF,KAAM,UAAWgF,QAAAA,IAAY,CAC3DC,QAAAA,EACAnF,MAAAA,IAEJ,IAAK,UACH,OAAOoF,QAAMK,QAAQH,GAAS,CAAEpF,KAAM,UAAWgF,QAAAA,IAAY,CAC3DC,QAAAA,EACAnF,MAAAA,KAID,IAAMsF,GAAW,SAAH1E,GAAA,IAAYsE,EAAOtE,EAAPsE,QAAO,OACtCxE,2BACEA,uBAAKK,UAAU,sCAFYH,EAAJV,MAGvBQ,uBAAKK,UAAU,sCAAsCmE,KC1B5CQ,GAEX,CACAC,kBAAmB,WAAA,OAAMC,GAAE,UAAW,6BAA8B,IACpEL,MAAO,SAACL,GAAO,OAAKU,GAAE,UAAWV,EAAS,IAC1CW,YAAa,WAAA,OAAMD,GAAE,UAAW,wCAAyC,EAAE,CAAElD,MAAO,WACpFoD,mBAAoB,WAAA,OAAMF,GAAE,QAAS,uBAAwB,IAC7DJ,QAAS,SAACN,GAAO,OAAKU,GAAE,UAAWV,EAAS,IAC5Ca,kBAAmB,WAAA,OAAMH,GAAE,UAAW,6BAA8B,IACpEI,cAAe,WAAA,OAAMJ,GAAE,UAAW,4CAA4C,IAC9EH,QAAS,SAACP,GAAO,OAAKU,GAAE,UAAWV,EAAS,IAC5Ce,WAAY,WAAA,OAAML,GAAE,QAAS,kCAAmC,IAChEM,eAAgB,WAAA,OAAMN,GAAE,UAAW,4BAA6B,MC4B5DO,GAA0C,SAACC,EAAKC,GACpD,MAAO,CACLC,mBAAmB,EACnBC,wBAAyB,CACvBC,QAAQ,EACRpE,MAAO,IAETsD,cAAeA,GACfe,iBAAiB,EACjBC,kBAAkB,EAClBC,eAAgB,CAAEC,IAAK,OAAQJ,QAAQ,EAAOK,MAAO,GAAIC,QAAS,IAClEC,yBAAqB/E,EACrBgF,eAAgB,GAChBC,YAAa,WACXC,MAAM,6BAERC,mBAAoB,CAAEX,QAAQ,EAAOpE,MAAO,IAC5CgF,0BAA0B,EAC1BC,yBAAyB,EACzBC,6BAA6B,EAC7BC,gBAAiB,WACf,OAAO,GAETC,kBAAmB,SAACC,GAClBrB,EAAI,CAAEY,eAAgBS,KAExBC,mBAAoB,SAACC,GACnBvB,EAAI,CAAEK,gBAAiBkB,KAExBC,YAAa,WAAA,OAAOC,GAAYC,SAAS,CACxCC,eAAgB,MAElBC,kBAAmB,SAACpB,EAAKJ,EAAQK,EAAOC,GACtCV,EAAI,CACFO,eAAgB,CACdC,IAAKA,EACLJ,OAAQA,EACRK,MAAOA,EACPC,QAASA,MAIfmB,sBAAuB,SAACzB,EAAQpE,GAC9BgE,EAAI,CAAEe,mBAAoB,CAAEX,OAAQA,EAAQpE,MAAOA,MAErD8F,4BAA6B,WAC3B9B,GAAI,SAAC+B,GAAK,MAAM,CACdf,0BAA2Be,EAAMf,8BAGrCgB,2BAA4B,WAC1BhC,GAAI,SAAC+B,GAAK,MAAM,CACdd,yBAA0Bc,EAAMd,6BAGpCgB,oBAAqB,WACnBjC,GAAI,SAAC+B,GAAK,MAAM,CAAEzB,kBAAmByB,EAAMzB,sBAG7C4B,eAAgB,WACdpB,MAAM,6BAMRqB,gBAAiB,WACf,IACEV,GAAYC,SAAS,CAAEU,QAAS,YAChCX,GAAYY,WAAWC,WAAW,aAClCb,GAAYC,SAAS,CAAEa,SAAU,KACjCd,GAAYC,SAAS,CAAEc,YAAa,KACpCf,GAAYC,SAAS,CAAEe,QAAS,KAIhC,IAHA,IAAIC,EAAS,GACPC,EAAa,uCAEVC,EAAI,EAAGA,EAAI,EAAGA,IACrBF,GAAUC,EAAWE,OACnBC,KAAKC,MAAMD,KAAKE,SAAWL,EAAWM,SAM1C,GAHAxB,GAAYC,SAAS,CAAEwB,aAAcR,KAGhCjB,GAAYY,WAAWc,WAO1B,OANAlD,IAAMmD,wBACNnD,IAAMoD,wBAAuB,WAC3B5B,GACGY,WACAT,kBAAkB,QAAQ,EAAM,mBAAoB,OAI3D3B,IAAM2B,kBAAkB,QAAQ,EAAM,mBAAoB,IAC1DH,GAAYC,SAAS,CAAE4B,mBAAmB,IAC1C,MAAAC,MAIJC,MAAO,WACL1C,MAAM,6BAERsC,iBAAkB,WAChBpD,GAAI,SAAC+B,GAAK,MAAM,CAAE7B,mBAAoB6B,EAAM7B,uBAG9CuD,yBAAyB,EACzBC,2BAA4B,WAC1B1D,GAAI,SAAC+B,GAAK,MAAM,CACd0B,yBAA0B1B,EAAM0B,6BAGpCJ,uBAAwB,SAACM,GACvBlC,GAAYC,SAAS,CAAEf,oBAAqBgD,KAE9CC,8BAA+B,SAACxD,EAAQpE,GACtCgE,EAAI,CAAEG,wBAAyB,CAAEC,OAAQA,EAAQpE,MAAOA,MAE1D6H,eAAe,EACfC,eAAgB,GAChBC,eAAgB,GAChBC,WAAY,aACZC,YAAa,OACbC,WAAY,EACZC,aAAc,GACdC,eAAe,IClLNC,GAAUC,QAAQC,IAAIC,qBAItBC,GAA0BC,EAAMC,OAAO,CAClDN,QAASA,GACTO,QAAS,KACTC,QAAS,CACPC,eAAgB,mBAChBC,cAAe,sCAINC,GAAe,SAACC,GAAuB,OAAKA,EAASC,MAErDC,GAAW,CACtBlF,IAAK,SAACmF,GAAW,OAAKX,GAASxE,IAAImF,GAAKC,KAAKL,KAC7CM,KAAM,SAACF,EAAaG,EAAUC,GAAY,OAAKf,GAASa,KAAKF,EAAKG,EAAMC,GAAQH,KAAKL,KACrFS,IAAK,SAACL,EAAaG,GAAQ,OAAKd,GAASgB,IAAIL,EAAKG,GAAMF,KAAKL,KAC7DU,OAAQ,SAACN,GAAW,OAAKX,UAAgBW,GAAKC,KAAKL,MCJ/CW,GAAyC,SAACC,EAAMC,GACpD,MAAO,CACLC,aAAcX,GAEdY,aAAWC,EAAAC,EAAAC,IAAAC,MAAE,SAAAC,EAAOC,GAAS,IAAApB,EAAAqB,EAAA,OAAAJ,IAAAK,eAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAEe,GAFfF,EAAAC,OAEzBhF,GAAYC,SAAS,CAAEiF,SAAS,IAC3BxB,IAAQqB,EAAAE,OAAA,MAAA,MACL,IAAI3J,MAAM,0BAAyB,OAAA,GAEtC0E,GAAYY,WAAWc,YAAUqD,EAAAE,OAAA,MAAA,MAC9B,IAAI3J,MAAM,qBAAoB,OAAA,OAAAyJ,EAAAE,OACfvB,GAASlF,oBACdwB,GAAYY,WAAWc,0BACrC1B,GAAYY,WAAW0B,0BACdtC,GAAYY,WAAW2B,uBAChCvC,GAAYY,WAAW4B,yBACZxC,GAAYY,WAAW8B,wBAClC1C,GAAYY,WAAW6B,YAE1B,OACwC,OATnCe,EAAQuB,EAAAI,KASdnF,GAAYC,SAAS,CAAEiF,SAAS,IAASH,EAAAE,QACvBzB,EAAQ,QAEyB,OAF7CqB,EAAGE,EAAAI,KAC6B,IAAtCnF,GAAYY,WAAW6B,YACrBzC,GAAYC,SAAS,CAAEmF,kBAAmBP,IAAOE,EAAAM,gBAE5C7B,GAAQ,QAG0B,MAH1BuB,EAAAC,QAAAD,EAAAO,GAAAP,WAEfQ,QAAQ7H,MAAKqH,EAAAO,IACbtF,GAAYC,SAAS,CAAEiF,SAAS,IAC1B,IAAI5J,MAAKyJ,EAAAO,IAAO,QAAA,UAAA,OAAAP,EAAAS,UAAAb,qBAEzB,SAAAc,GAAA,OAAAlB,EAAAmB,WAAAC,aACDC,eAAaC,EAAArB,EAAAC,IAAAC,MAAE,SAAAoB,IAAA,IAAAtC,EAAAqB,EAAA,OAAAJ,IAAAK,eAAAiB,GAAA,cAAAA,EAAAf,KAAAe,EAAAd,MAAA,OAI6B,GAH1Ce,SAAOC,OAAOC,UAAUC,aAAc,EACtCH,SAAOC,OAAOC,UAAUE,YAAa,EAAKL,EAAAf,OAExChF,GAAYC,SAAS,CAAEiF,SAAS,IAC3BxB,IAAQqC,EAAAd,OAAA,MAAA,MACL,IAAI3J,MAAM,0BAAyB,OAAA,OAAAyK,EAAAd,OAEpBvB,GAASlF,IAAI,iBAAgB,OACX,OADnCgF,EAAQuC,EAAAZ,KACdnF,GAAYC,SAAS,CAAEiF,SAAS,IAASa,EAAAd,QACvBzB,EAAQ,QACgB,OAA1CxD,GAAYC,SAAS,CAAEoG,WADjBxB,EAAGkB,EAAAZ,OACiCY,EAAAV,gBACnCR,GAAG,QAG+B,MAH/BkB,EAAAf,QAAAe,EAAAT,GAAAS,WAEVR,QAAQ7H,MAAKqI,EAAAT,IACbtF,GAAYC,SAAS,CAAEiF,SAAS,IAC1B,IAAI5J,MAAKyK,EAAAT,IAAO,QAAA,UAAA,OAAAS,EAAAP,UAAAM,qBAEzB,WAAA,OAAAD,EAAAH,WAAAC,aACDW,UAAQC,EAAA/B,EAAAC,IAAAC,MAAE,SAAA8B,EAAOC,GAAI,IAAAjD,EAAA,OAAAiB,IAAAK,eAAA4B,GAAA,cAAAA,EAAA1B,KAAA0B,EAAAzB,MAAA,OAEuB,GAFvByB,EAAA1B,OAEjBhF,GAAYC,SAAS,CAAEiF,SAAS,IAC3BxB,IAAQgD,EAAAzB,OAAA,MAAA,MACL,IAAI3J,MAAM,0BAAyB,OAAA,OAAAoL,EAAAzB,OAEpBvB,GAASG,KAAK,eAAgB4C,GAAK,OACjB,OADnCjD,EAAQkD,EAAAvB,KACdnF,GAAYC,SAAS,CAAEiF,SAAS,IAASwB,EAAArB,gBAClC7B,GAAQ,QAG0B,MAH1BkD,EAAA1B,QAAA0B,EAAApB,GAAAoB,WAEfnB,QAAQ7H,MAAKgJ,EAAApB,IACbtF,GAAYC,SAAS,CAAEiF,SAAS,IAC1B,IAAI5J,MAAKoL,EAAApB,IAAO,QAAA,UAAA,OAAAoB,EAAAlB,UAAAgB,qBAEzB,SAAAG,GAAA,OAAAJ,EAAAb,WAAAC,kBAdOY,EAnBKV,EA7BFtB,GCLFqC,GAAiD,SAACzC,EAAM3F,GACnE,MAAO,CACLqD,mBAAmB,EACnBJ,aAAc,GACdoF,eAAgB,GAChBC,kBAAmB,GACnB9F,QAAS,GACTF,SAAU,GACVC,YAAa,GACbgG,aAAc,GACdC,cAAU7M,EACV8M,gBAAiB,WAAA,QAAQzI,IAAMiD,cAC/ByF,aAAa,EACbC,iBAAiB,IC1BfC,GAAUvE,QAAQC,IAAIuE,wBACtBC,GAAUzE,QAAQC,IAAIyE,6BCJZC,GAAUC,GAIxB,IAHA,IAAIC,EAAOD,EAAQ,IAEfE,EADgBC,mBAAmB5P,SAAS6P,QACzBC,MAAM,KACpB3G,EAAI,EAAGA,EAAIwG,EAAGnG,OAAQL,IAAK,CAElC,IADA,IAAI4G,EAAIJ,EAAGxG,GACW,KAAf4G,EAAE3G,OAAO,IACd2G,EAAIA,EAAEC,UAAU,GAElB,GAAuB,GAAnBD,EAAEE,QAAQP,GACZ,OAAOK,EAAEC,UAAUN,EAAKlG,OAAQuG,EAAEvG,QAGtC,MAAO,GAGT,SAAgB0G,GAAUT,EAAeU,EAAaC,GACpD,IAAMnN,EAAI,IAAIoN,KACdpN,EAAEqN,QAAQrN,EAAEsN,UAAqB,GAATH,EAAc,GAAK,GAAK,KAChD,IAAII,EAAU,WAAavN,EAAEwN,cAC7BzQ,SAAS6P,OAASJ,EAAQ,IAAMU,EAAS,IAAMK,EAAU,UAG3D,IAAaE,GAAc,SAACjB,EAAeU,YAAAA,IAAAA,EAAS,IAClD,IAAMlN,EAAI,IAAIoN,KACdpN,EAAEqN,QAAQrN,EAAEsN,WACZ,IAAIC,EAAU,WAAavN,EAAEwN,cAC7BzQ,SAAS6P,OAASJ,EAAQ,IAAMU,EAAS,IAAMK,EAAU,WC1B9CG,GAAe,SAAClF,GAC3B,OAAOmF,EAASC,IAAIC,QAClBC,KAAKC,UAAUvF,GACf,kBACAwF,YAESC,GAAe,SAACC,GAC3B,IAAIC,EAAQR,EAASC,IAAIQ,QAAQF,EAAY,kBAC7C,OAAOJ,KAAKO,MAAMF,EAAMH,SAASL,EAASW,IAAIC,sCFJtB,SAAC7F,GAEzB,OAAIA,EAAI8F,SAASrC,IACRzD,EAAI+F,QAAQtC,GAASE,IAGrB3D,EAAI8F,SAASnC,IAAiB3D,EAG9B2D,GAAU3D,wBAWe,SAACgG,EAAeC,GAClD,MAAO,CACL/N,SAAI+N,SAAAA,EAAM/N,GACV6L,WAAMkC,SAAAA,EAAMlC,KACZmC,WAAMD,SAAAA,EAAME,cAAcC,UAC1B1R,WAAMuR,SAAAA,EAAMI,WACZC,QAAON,GAAUA,EAAQM,oBAIF,SAACJ,GAC1B,OAAOhH,QAAQC,IAAIyE,oBAAsBsC,yFExBf,WAC1B,IAAMK,EAAcC,OAAOC,SAASC,OAGpC,OAFkB,IAAIC,gBAAgBJ,GACV1L,IAAI,cACZqE,QAAQC,IAAIyH,gDAGTC,aAEnBC,EADYD,EAAM1C,MAAM,KAAK,GACV4B,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KACpDgB,EAAc9C,0BAAkB+C,EAClCR,gBAAMS,EAAND,EACIE,KAAKJ,YAAOK,EADhBF,EAEI9C,MAAM,YAFVgD,EAGIC,KAAI,SAAUhD,GACd,MAAO,KAAO,KAAOA,EAAEiD,WAAW,GAAG/B,SAAS,KAAKgC,OAAO,MAE3DC,KAAK,KAGV,OAAOnC,KAAKO,MAAMoB,2BCvBUS,GAW5B,IARA,IAAIC,EAAaP,KAAKM,EAAQrD,MAAM,KAAK,IAMrCuD,EAAK,IAAIC,YAAYF,EAAW5J,QAChC+J,EAAK,IAAIC,WAAWH,GACflK,EAAI,EAAGA,EAAIiK,EAAW5J,OAAQL,IACrCoK,EAAGpK,GAAKiK,EAAWJ,WAAW7J,GAUhC,OAAO,IAAIsK,KAAK,CAACJ,IAAK,IAAIhD,MAAOE,UAAX,qBAAkD,CACtElQ,KAAM,yBC/Bc,SAAUqT,EAAiBC,GACjD,IAAIC,EAAO5T,SAASI,cAAc,KAClCJ,SAAS8L,KAAKtL,YAAYoT,GAC1BA,EAAKC,SAAWF,EAChBC,EAAKE,KAAOJ,EACZE,EAAKG,QACL/T,SAAS8L,KAAKkI,YAAYJ,8BCCa,SAAU7N,GACjD,IAAMtB,EAAIsB,EAAEkO,OAASlO,EAAEmO,QACvB,OACGzP,GAAK,IAAMA,GAAK,KAChBA,GAAK,IAAMA,GAAK,IAChBA,GAAK,IAAMA,GAAK,IAChBA,GAAK,IAAMA,GAAK,IAGLsB,EAAEoO,mBCcLC,GAAqC,SAAC7N,EAAKC,GACtD,MAAO,CACL6N,0BAA2B,GAC3BC,iBAAkB,GAClBC,WAAY,GACZ/B,MAAO,GACP9I,WAAW,OACX8K,eAAgB,WACd9D,GAAY,mBCtChB+D,eAAeC,WDuCS,mBACpBnO,EAAI,CACFoO,SAAU,GACVC,SAAU,GACVC,cAAe,GACfnL,WAAY,OACZoL,aAAc,GACdP,WAAY,GACZ/B,MAAO,MAGXuC,wBAAyB,SAACC,YAAAA,IAAAA,GAAe,GACvC,IAAML,EAAWnO,IAAMmO,SACjBC,EAAWpO,IAAMoO,SACjBC,EAAgBrO,IAAMqO,cACtBnL,EAAalD,IAAMkD,WACnBoL,EAAetO,IAAM+N,WACrB/B,EAAQhM,IAAMgM,MAEdyC,EAAkBtE,GAAa,CACnCgE,SAAAA,EACAC,SAAAA,EACAC,cAAAA,EACAnL,WAAAA,EACAoL,aAAAA,EACAtC,MAAAA,IAEEwC,EACF9E,GAAU,kBAAmB+E,EAAiB,GC3DpDR,eAAeS,QD6DS,kBAAmBD,IAGzCE,mBAAoB,WAClB,IAAMF,ECrEHR,eAAeW,QDsEE,oBAAsB5F,GAAU,mBAEpD,GAAKyF,EAAL,CACA,IAAM5D,EAAeH,GAAa+D,GAElC1O,EAAGhC,KACE8M,MAGPgE,WAAY,WAAA,QAAS7O,IAAMkD,cE1ElB4L,GAA2C,SAAC/O,EAAK6F,GAC5D,MAAO,CACLmJ,QAAS,GACT5M,QAAS,GACTE,WAAY,SAAC2M,GACXjP,GAAI,SAAC+B,GAAK,MAAM,CACdiN,WAAOE,OAAMnN,EAAMiN,SAASjN,EAAMK,UAClCA,QAAS6M,OAGbE,OAAQ,WACNnP,GAAI,SAAC+B,GACH,GAAIA,EAAMiN,QAAQ/L,OAAS,EAAG,CAC5B,IAAMmM,EAAerN,EAAMiN,QAAQK,MACnC,MAAO,CACLL,WAAOE,OAAMnN,EAAMiN,SACnB5M,QAASgN,GAGb,OAAOrN,QCkDFuN,GAAyC,SAACtP,EAAKC,GAC1D,MAAO,CACLsP,iBAAkB,EAClBC,wBAAyB,GACzBC,iBAAkB,GAClBC,gBAAiB,GACjBC,SAAU,KACVC,YAAa,SAACD,GAAQ,OAAK3P,EAAI,CAAE2P,SAAAA,KACjCE,SAAU,GACVlJ,SAAS,EACTmJ,gBAAiB,EACjBC,mBAAoB,SAACD,GAAe,OAAK9P,EAAI,CAAE8P,gBAAAA,KAC/CE,iBAAiB,EACjBC,mBAAoB,SAACD,GAAe,OAAKhQ,EAAI,CAAEgQ,gBAAAA,KAC/CE,aAAc,GACdpI,WAAY,GACZjB,kBAAmB,GACnBsJ,aAAc,KACdC,UAAW,KACXC,SAAU,WACVC,yBAAyB,EACzBC,iBAAkB,QAClBC,gBAAiB,KACjBC,aAAa,EACbC,UAAW,GACXC,iBAAkB,GAClBC,aAAc,GACdC,qBAAsB,GAEtBlP,eAAgB,GAChBmP,UAAW,GACXC,aAAc,CACZC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,IAAI,EACJC,KAAK,GAGPC,iBAAiB,EAEjBC,oBAAqB,SAACxM,GAEpBjF,IAAM0B,eAAegQ,QAAQzM,IAE/B0M,eAAgB,WACd,IAAMC,EAAe5R,IAAMkQ,aAAa2B,kBACxC,GAAID,EAAc,CAQhB,IAAME,EAAUF,EAAaG,UAAU,aACvChS,EAAI,CAAE8Q,UAAWiB,MAGrBE,YAAa,EACbC,KAAM,WACJ,IAAIC,EACFrI,KAAKsI,MAAM1H,SAAS,IAAM5H,KAAKE,SAAS0H,SAAS,IAAM,IAAI2H,OAAO,IACpE,MAAO,CACLF,EAAEG,OAAO,EAAG,GACZH,EAAEG,OAAO,EAAG,GACZ,SAAWH,EAAEG,OAAO,GAAI,GACxBH,EAAEG,OAAO,GAAI,KACb3F,KAAK,MAET4F,gBAAiB,WACf,GAAItS,IAAMkQ,aAAa2B,kBAAmB,CACxC,IACIU,EADAC,EAAYxS,IAAMkQ,aAAa2B,kBAEnC7R,IACGkQ,aAAa2B,kBACbY,OAAM,SAACC,IACNH,EAAYG,GACFD,OAAM,SAACE,GACf3S,IAAMkQ,aAAa0C,sBACnBD,EAAU5S,IAAI,CACZ8S,SAAS,IAEY,oBAAnBF,EAAU9Y,MACZ8Y,EAAUG,OAAS9S,IAAMkQ,aACzByC,EAAUI,eAAc,SAACC,EAAUC,GACjCD,EAAIvC,UAAY+B,EAAUU,SAASD,GAAOxC,UAGzB,SAAbuC,EAAInZ,OACNmZ,EAAIG,SAAWX,EAAUU,SAASD,GAAOE,SACzCH,EAAII,UAAYZ,EAAUU,SAASD,GAAOG,UAC1CJ,EAAIK,UAAYb,EAAUU,SAASD,GAAOI,UAC1CL,EAAIM,WAAad,EAAUU,SAASD,GAAOK,WAC3CN,EAAIO,WAAaf,EAAUU,SAASD,GAAOM,WAC3CP,EAAIQ,SAAWhB,EAAUU,SAASD,GAAOO,SACzCR,EAAIS,YAAcjB,EAAUU,SAASD,GAAOQ,YAC5CT,EAAIU,UAAYlB,EAAUU,SAASD,GAAOS,UAC1CV,EAAIW,UAAYnB,EAAUU,SAASD,GAAOU,UAC1CX,EAAIY,KAAOpB,EAAUU,SAASD,GAAOW,MAEvC5T,IAAMkQ,aAAa2D,IAAIb,MAEzBL,EAAUmB,cAEVnB,EAAUlC,UAAY+B,EAAU/B,UAGX,SAAnB+B,EAAU3Y,WACa8B,IAAvB6W,EAAUW,WAEVR,EAAUQ,SAAWX,EAAUW,SAC/BR,EAAUS,UAAYZ,EAAUY,UAChCT,EAAUU,UAAYb,EAAUa,UAChCV,EAAUW,WAAad,EAAUc,WACjCX,EAAUY,WAAaf,EAAUe,WACjCZ,EAAUa,SAAWhB,EAAUgB,SAC/Bb,EAAUc,YAAcjB,EAAUiB,YAClCd,EAAUe,UAAYlB,EAAUkB,UAChCf,EAAUgB,UAAYnB,EAAUmB,UAChChB,EAAUiB,KAAOpB,EAAUoB,MAE7B5T,IAAMkQ,aAAa2D,IAAIlB,IAEzBJ,EAAUwB,KAAO,GACjBxB,EAAUyB,MAAQ,GAEhBxB,GACAA,EAAUa,WACVb,EAAUa,UAAUrQ,OAAS,IAE7B2P,EAAUU,UAAYb,EAAUa,UAChCV,EAAUS,UAAYZ,EAAUY,WAElCpT,IAAMkQ,aAAa+D,gBAAgBtB,GACnC,IAAMuB,EAAQvB,EAAUwB,kBAGpBD,EAAM7X,MAAQ6X,EAAMF,KAAO,GAAK,IAC9BrB,EAAUG,OAAOzW,OACnB6X,EAAM5X,OAAS4X,EAAMH,IAAM,GAAK,IAAMpB,EAAUG,OAAOxW,QAGzDqW,EAAU5S,IAAI,CACZiU,KAAMrB,EAAUqB,KAAO,GACvBD,IAAKpB,EAAUoB,IAAM,KAQvBpB,GACAA,EAAUO,UACVP,EAAUO,SAASlQ,OAAS,IACI,SAA/B2P,EAAUO,SAAS,GAAGrZ,MACU,UAA/B8Y,EAAUO,SAAS,GAAGrZ,MACU,SAA/B8Y,EAAUO,SAAS,GAAGrZ,MACrB8Y,EAAUO,SAAS,GAAGI,YAE1BX,EAAUO,SAAS3G,KAAI,SAACtH,GACtBA,EAAKxK,KAAOwK,EAAK8M,UAAU,aAC3B/R,IAAMyR,oBAAoBxM,OAG5BzD,GAAYY,WAAWuP,iBACvBgB,EAAUlY,KAAO+G,GAAYY,WAAWyO,UACxC7Q,IAAMyR,oBAAoBkB,OAG9B3S,IAAMoU,mBAAkB,QAIhCC,qBAAsB,aAGtBC,MAAO,EACPC,WAAW,EACXC,KAAM,WACJ,GAAIxU,IAAMsU,OAAStU,IAAMiQ,aAAajN,OAAQ,CAE5ChD,IAAMkQ,aAAauE,QAAQC,YAC3B1U,IAAMkQ,aAAayE,aACjB3U,IAAMiQ,aACJjQ,IAAMiQ,aAAajN,OACjB,GACChD,IAAMsU,MAAQ,EAAItU,IAAMsU,MAAQ,EAAI,KAK3CtU,IACGkQ,aAAa0E,aACbC,SAAQ,SAAC7B,GACS,SAAbA,EAAInZ,MACNmG,IAAMkQ,aAAa4E,OAAO9B,MAKhC,IAAM+B,EAAiB,IAAIvN,SAAOwN,KAChC,CACE,EACAhV,IAAMkQ,aAAa5T,OAAS,EAC5B0D,IAAMkQ,aAAa5T,OACnB0D,IAAMkQ,aAAa5T,OAAS,GAE9B,CACEM,OAAQ,MACRqY,OAAQ,GACRC,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIJub,EAAe,IAAI5N,SAAOwN,KAC9B,CACEhV,IAAMkQ,aAAa7T,MAAQ,EAC3B,EACA2D,IAAMkQ,aAAa7T,MAAQ,EAC3B2D,IAAMkQ,aAAa7T,OAErB,CACEO,OAAQ,MACRsY,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIVkb,EAAeM,UACfrV,IAAMkQ,aAAa2D,IAAIkB,GACvB/U,IAAMkQ,aAAa2D,IAAIuB,GAEvBpV,IAAMkQ,aAAaoF,WAAWP,GAC9B/U,IAAMkQ,aAAaoF,WAAWF,GAE9B5T,GAAYC,SAAS,CAAEsT,eAAgBA,IACvCvT,GAAYC,SAAS,CAAE2T,aAAcA,IAErCpV,IAAMkQ,aAAawE,YACnB1U,IAAMsU,OAAS,EAIf9S,GAAYY,WAAWb,cACCvB,IAAMkQ,aAAa0E,aAC3BC,SAAQ,SAACU,GACF,SAAjBA,EAAQ1b,OACV2H,GAAYY,WAAWqP,oBAAoB8D,GAEzCvV,IAAMkQ,aAAa+D,gBAAgBsB,GACnC/T,GAAYY,WAAWuP,iBAEvB4D,EAAQ9a,KAAO+G,GAAYY,WAAWyO,UACtC7Q,IAAMkQ,aAAa0C,4BAM7B4C,KAAM,WACJ,GAAIxV,IAAMsU,MAAQ,EAAG,CACnBtU,IAAMkQ,aAAauE,QAAQC,YAC3B,IAAItJ,EAAOvI,KAAK4S,IAAIzV,IAAMsU,MAAQtU,IAAMiQ,aAAajN,OAAS,GAC9DhD,IAAMkQ,aAAayE,aAAa3U,IAAMiQ,aAAa7E,IAGnDpL,IACGkQ,aAAa0E,aACbC,SAAQ,SAAC7B,GACS,SAAbA,EAAInZ,MACNmG,IAAMkQ,aAAa4E,OAAO9B,MAKhC,IAAM+B,EAAiB,IAAIvN,SAAOwN,KAChC,CACE,EACAhV,IAAMkQ,aAAa5T,OAAS,EAC5B0D,IAAMkQ,aAAa5T,OACnB0D,IAAMkQ,aAAa5T,OAAS,GAE9B,CACEM,OAAQ,MACRqY,OAAQ,GACRC,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIJub,EAAe,IAAI5N,SAAOwN,KAC9B,CACEhV,IAAMkQ,aAAa7T,MAAQ,EAC3B,EACA2D,IAAMkQ,aAAa7T,MAAQ,EAC3B2D,IAAMkQ,aAAa7T,OAErB,CACEO,OAAQ,MACRsY,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIVkb,EAAeM,UACfrV,IAAMkQ,aAAa2D,IAAIkB,GACvB/U,IAAMkQ,aAAa2D,IAAIuB,GAEvBpV,IAAMkQ,aAAawF,cAAcX,GACjC/U,IAAMkQ,aAAawF,cAAcN,GAEjC5T,GAAYC,SAAS,CAAEsT,eAAgBA,IACvCvT,GAAYC,SAAS,CAAE2T,aAAcA,IAErCpV,IAAMkQ,aAAawE,YACnB1U,IAAMsU,OAAS,EAGf9S,GAAYY,WAAWb,cACCvB,IAAMkQ,aAAa0E,aAC3BC,SAAQ,SAACU,GACH,SAAjBA,EAAQ1b,OACP2H,GAAYY,WAAWqP,oBAAoB8D,GAEzCvV,IAAMkQ,aAAa+D,gBAAgBsB,GACnC/T,GAAYY,WAAWuP,iBAEvB4D,EAAQ9a,KAAO+G,GAAYY,WAAWyO,UACtC7Q,IAAMkQ,aAAa0C,4BAM/B+C,SAAU,SAACJ,GACTA,EAAQxB,IAAMwB,EAAQxB,IAAM,EAC5B/T,IAAMkQ,aAAawE,aAErBkB,OAAQ,SAACL,GACPA,EAAQxB,IAAMwB,EAAQxB,IAAM,EAC5B/T,IAAMkQ,aAAawE,aAErBmB,UAAW,SAACN,GACVA,EAAQvB,KAAOuB,EAAQvB,KAAO,EAC9BhU,IAAMkQ,aAAawE,aAErBoB,SAAU,SAACP,GACTA,EAAQvB,KAAOuB,EAAQvB,KAAO,EAC9BhU,IAAMkQ,aAAawE,aAErBqB,eAAgB,WACd,IAAMC,EAAahW,IAAMkQ,aAAa+F,SAChCC,EAAkBlW,IAAMkQ,aAAa0E,aAe3C,OAdAoB,EAAWG,QAAQtB,SAAQ,SAACU,EAActC,GACnCiD,GAAmBA,EAAgBlT,OAAS,GAAKkT,EAAgBjD,GAAOI,YACzEkC,EAAQlC,UAAY6C,EAAgBjD,GAAOI,UAC3CkC,EAAQnC,UAAY8C,EAAgBjD,GAAOG,UAC3CmC,EAAQ3B,KAAOsC,EAAgBjD,GAAOW,KACtC2B,EAAQ7B,UAAYwC,EAAgBjD,GAAOS,UAC3C6B,EAAQ3Y,OAASsZ,EAAgBjD,GAAOrW,OACxC2Y,EAAQhY,YAAc2Y,EAAgBjD,GAAO1V,YAC7CgY,EAAQjC,WAAa4C,EAAgBjD,GAAOK,YAEhDiC,EAAQ9E,UAAYyF,EAAgBjD,GAAOxC,UAC3C8E,EAAQ9a,KAAOyb,EAAgBjD,GAAOxY,KACtC8a,EAAQlY,GAAK6Y,EAAgBjD,GAAO5V,MAE/B2Y,GAETI,oBAAqB,SAACC,GACpB7U,GAAYC,SAAS,CAAEiP,iBAAkB2F,KAE3CC,wBAAyB,SAACD,GACxB7U,GAAYC,SAAS,CAAEmP,qBAAsByF,KAE/CjC,kBAAmB,SAACmC,GACdA,GACFvW,IAAMiQ,aAAauG,KAAKxW,IAAM+V,mBAIlCU,uBAAwB,CAAExY,EAAG,EAAGC,EAAG,GACnCwY,iBAAkB,SAACnX,GAIjB,IAAIoX,EAAQpX,EAAI,cAAgBsK,KAAKsI,MACrC3Q,GAAYC,SAAS,CAAEoO,qBAAiBlU,IACxCqE,IAAM4W,QAAQD,IAEhBC,QAAS,SAAC3R,GACRuC,SAAOqP,eAAe5R,GAAM,SAACkR,EAASW,GACpC,IAAMnG,EAAoBnJ,SAAOuP,KAAKC,iBACpCb,EACAW,GAGFnG,EAAasG,aAAa,KAC1BtG,EAAauG,cAAc,KAC3B,IAAIC,EAAW,GACXC,EAAS,GAETzG,GAAgBA,EAAauC,UAE/BiE,EAAWxG,EAAauC,UACf2B,SAAQ,SAACwC,GAChBA,EAAItX,IAAI,CAAExC,YAAa,IACvBiE,GAAYC,SAAS,CAAE6V,aAASrI,OAAMoI,EAAI1a,QAC1Cya,EAAOZ,KAAKa,EAAI1a,WAIlBwa,EAAWxG,GAEF5Q,IAAI,CAAExC,YAAa,IAE5BiE,GAAYC,SAAS,CAAE6V,aAASrI,OAAMkI,EAASxa,QAC/Cya,EAAOZ,KAAKW,EAASxa,OAEvB6E,GAAYC,SAAS,CAEnB6V,UAAW9V,GAAYY,WAAWmV,iBAAiBH,KAGrDA,EAAS5V,GAAYY,WAAWmV,iBAAiBH,GACjD,IAAMI,EAAa,GACnBJ,EAAO7K,KAAI,SAACnB,EAAM6H,GAChBuE,EAAW,QAAUvE,GAAS7H,KAEhC5J,GAAYC,SAAS,CAAEgP,UAAW+G,IAClC7G,EAAa5Q,IAAI,CAEf0Q,UAAW+G,IAGb7G,EAAatT,GAAK2C,IAAMiS,OACxBjS,IAAMkQ,aAAa2D,IAAIlD,GAAc+D,YACrC1U,IAAMkQ,aAAauH,aAAa9G,GAChC3Q,IAAMkQ,aAAa+D,gBAAgBtD,GACnCnP,GAAYC,SAAS,CAAE8O,gBAAiBI,IACxCnP,GAAYY,WAAWqP,oBAAoBd,GAC3C3Q,IACGkQ,aAAa2B,kBACbE,WAAU,eACbvQ,GAAYY,WAAWuP,iBAEvBhB,EAAalW,KAAO+G,GAAYY,WAAWyO,UAC3CrP,GAAYY,WAAWgS,mBAAkB,OAG7CsD,cAAe,SAACzP,GAKd0P,MAJe1P,EAAK2P,gBACC,CACnBC,OAAQ,QAGPzS,MAAK,SAACJ,GAAQ,OAAKA,EAAS4O,UAC5BxO,MAAK,SAAC0S,GAAM,OAAK9X,IAAM+X,qBAAqBD,aACtC,SAAC5Y,GAAK,OAAK6H,QAAQiR,IAAI,QAAS9Y,OAG3C6Y,qBAAsB,SAAC9S,GACrB,IAAI6N,EAAStR,GAAYY,WAAW8N,aACpC4C,EAAO6B,aAAapK,KAAKO,MAAM7F,IAAO,WACpC,IAAM8P,EAAiB,IAAIvN,SAAOwN,KAChC,CAAC,EAAGlC,EAAOxW,OAAS,EAAGwW,EAAOxW,OAAQwW,EAAOxW,OAAS,GACtD,CACEM,OAAQ,MACRqY,OAAQ,GACRC,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIJub,EAAe,IAAI5N,SAAOwN,KAC9B,CAAClC,EAAOzW,MAAQ,EAAG,EAAGyW,EAAOzW,MAAQ,EAAGyW,EAAOzW,OAC/C,CACEO,OAAQ,MACRsY,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIVkb,EAAeM,UACfvC,EAAOe,IAAIkB,GACXjC,EAAOe,IAAIuB,GACXpV,IAAMkQ,aAAaoF,WAAWP,GAC9B/U,IAAMkQ,aAAaoF,WAAWF,GAC9B5T,GAAYC,SAAS,CAAEsT,eAAgBA,IACvCvT,GAAYC,SAAS,CAAE2T,aAAcA,IACrCtC,EAAO4B,UAAUuD,KAAKnF,GACtBA,EAAOF,sBACPpR,GAAYC,SAAS,CAAEoO,qBAAiBlU,IAExC6F,GAAYY,WAAWb,cACvBuR,EAAO8B,aAAaC,SAAQ,SAACU,GAC3BA,EAAQlY,GAAKmE,GAAYY,WAAW6P,OACf,SAAjBsD,EAAQ1b,MACV2H,GAAYY,WAAWqP,oBAAoB8D,GAE7CzC,EAAOmB,gBAAgBsB,GACvBzC,EAAO4B,YACPlT,GAAYY,WAAWuP,iBACvB4D,EAAQ9a,KAAO+G,GAAYY,WAAWyO,aAExCrP,GAAYY,WAAWgS,mBAAkB,MAE3CtB,EAAOoF,gBAAkB,WAE3BC,kBAAgBC,EAAApS,EAAAC,IAAAC,MAAE,SAAAC,EAAOkS,EAAYnV,GAAU,IAAAoV,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA3S,IAAAK,eAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAqBiC,OApBxE6R,EAAajU,QAAQC,IAAIuU,iBACzBN,EAASlU,QAAQC,IAAIwU,iBAC3BC,EAAIxT,OAAOyT,OAAO,CAChBC,YAAa5U,QAAQC,IAAI4U,oBACzBC,gBAAiB9U,QAAQC,IAAI8U,6BAEzBZ,EAAK,IAAIO,EAAIP,GAAG,CACpBG,OAAQ,CAAEU,OAAQf,GAClBC,OAAQA,IAGJE,EAAY5O,KAAKsI,MAEjBwG,EAAS,CACbU,OAAQf,EACRgB,IAHIZ,0BAAmCxV,MAAcuV,UAIrDc,KAAMlB,EACNmB,YAAa,oBAGTZ,aAAuBN,SAAiBC,oBAAwBG,EAAQnS,EAAAM,gBACvE,IAAI4S,SAAQ,SAACC,EAASC,GAC3BnB,EAAGoB,UAAUjB,GAAQ,SAAUkB,GACzBA,GACF9S,QAAQiR,IAAI,6CAA8C6B,GAC1DF,EAAOE,IAEPH,EAAQd,UAGZ,OAAA,UAAA,OAAArS,EAAAS,UAAAb,OACH,SAAAc,EAAAkB,GAAA,OAAAiQ,EAAAlR,WAAAC,aACD2S,oBAAqB,SAACtK,GAAgB,OAAKzP,EAAI,CAAEyP,iBAAAA,KACjDuK,mBAAoB,SAACtK,GAAe,OAAK1P,EAAI,CAAE0P,gBAAAA,KAE/CuK,+BAAgC,SAACC,GAI/B,GAHAla,EAAI,CACFma,YAAaD,IAED,QAAVA,EACFja,IAAM+Z,mBACJ/Z,IAAMwP,iBAAiBjD,KAAI,SAACnB,GAAI,OAAKA,EAAK+O,kBAEvC,CACL,IAAMC,EAAepa,IAAMwP,iBAAiB6K,QAAO,SAACjP,GAAI,OACtDA,EAAKkP,KAAKrP,SAASgP,MAErBja,IAAM+Z,mBAAmBK,EAAa7N,KAAI,SAACnB,GAAI,OAAKA,EAAK+O,gBAG7DD,YAAa,GACbK,qBAAqB,EACrBC,uBAAwB,WACtBza,GAAI,SAAC+B,GAAK,MAAM,CACdyY,qBAAsBzY,EAAMyY,yBAGhCE,oBAAqB,GACrBC,0BAA2B,WACzB,IAAMC,EAAkB3a,IAAMmQ,UAAU8F,SAClC2E,EAAuB5a,IAAMmQ,UAAUyE,aAI7C,OAHA+F,EAAgBxE,QAAQtB,SAAQ,SAACU,EAAStC,GACxCsC,EAAQ9E,UAAYmK,EAAqB3H,GAAOxC,aAE3CkK,GAETE,8BAA+B,SAACtE,GAC9B,GAAIA,EAAO,CACT,IAAMuE,EAAgB,CACpBrK,UAAWzQ,IAAMyQ,UACjBsK,KAAM/a,IAAM0a,6BAEd3a,GAAI,SAAC+B,GAAK,OAAA/D,KACL+D,GACHyN,2BAAuBN,OAClBnN,EAAMyN,yBACTuL,WAKRE,gBAAiB,WACf,GAAIhb,IAAMsP,kBAAoBtP,IAAMuP,wBAAwBvM,OAAQ,CAClE,IAAMiY,EACJjb,IAAMuP,wBAAwBvM,OAAS,GAAKhD,IAAMsP,iBAAmB,EAAItP,IAAMsP,iBAAkB,EAAI,GACrG,GAAGtP,IAAMuP,wBAAwB0L,IAAOA,EAAG,EAAE,CAiB3C,IAhBMC,EAASlb,IAAMuP,wBAAwB0L,GAAIxK,UACjDzQ,IAAMmQ,UAAUsE,QAAQC,YACxB1U,IAAMmQ,UAAUwE,aAAa3U,IAAMuP,wBAAwB0L,GAAIF,MAC/D/a,IAAMmQ,UAAUyE,aAAaC,SAAQ,SAAC7B,GACnB,SAAbA,EAAInZ,MACNmG,IAAMmQ,UAAU2E,OAAO9B,MAkC3B,IA9BA,IAAMF,EAAStR,GAAYY,WAAW+N,UAElCgL,EAAcrI,EAAOzW,MACrB+e,EAAetI,EAAOxW,OACtB+e,EAAUxY,KAAKyY,KAAKH,EAHT,IAIXI,EAAU1Y,KAAKyY,KAAKF,EAJT,IA6BNzY,EAAI,EAAGA,EAAI0Y,EAAS1Y,IAAK,CAChC,IAAI1E,EA9BS,GA8BL0E,EACF6Y,EAAO,IAAIhU,SAAOwN,KAAK,CAAC/W,EAAG,EAAGA,EAAGmd,GAAe,CACpDxe,OAAQ,YACRuY,YAAY,EACZtb,KAAM,OACN4hB,eAAc,EACdC,eAAc,EACdC,cAAa,EACbC,cAAa,IAEf9I,EAAOe,IAAI2H,GACX1I,EAAOwC,WAAWkG,GAGpB,IAAK,IAAIK,EAAI,EAAGA,EAAIN,EAASM,IAAK,CAChC,IAAI3d,EA7CS,GA6CL2d,EACFL,EAAO,IAAIhU,SAAOwN,KAAK,CAAC,EAAG9W,EAAGid,EAAajd,GAAI,CACnDtB,OAAQ,UACRuY,YAAY,EACZtb,KAAM,OACN4hB,eAAc,EACdC,eAAc,EACdC,cAAa,EACbC,cAAa,IAEf9I,EAAOe,IAAI2H,GACX1I,EAAOwC,WAAWkG,GAIpB,IAAS7Y,EAAI,EAAGA,EAAI0Y,EAAS1Y,IAC3B,IAASkZ,EAAI,EAAGA,EAAIN,EAASM,IAAK,CAChC,IAGIC,EAzDK,IAAItU,SAAOuU,KAAK,CACzB/H,KAF4BA,EAPjB,GA8DArR,EApDXoR,IAVW,GA+DD8H,EApDVxf,MAXW,GAYXC,OAZW,GAaXzC,KAAM,OACN4hB,eAAc,EACdC,eAAc,EACdC,cAAa,EACbC,cAAa,EAEbjf,MAZsDqf,EAyDtCH,EAAI,GAAM,IA5CT7H,EApBN,GAoByB,GAAM,IACtCgI,GAAchI,EArBP,GAqB0B,GAAM,EACrC,UACA,cAiDNlB,EAAOe,IAAIiI,GACXhJ,EAAOwC,WAAWwG,GAYtB,OARA/b,EAAI,CAAE0Q,UAAWyK,IACjBlb,IAAMmQ,UAAUuE,YAChB1U,IAAMsP,kBAAoB,EAChB,IAAP2L,IACDzZ,GAAYC,SAAS,CAAE8N,wBAAyB,KAChD/N,GAAYY,WAAWyY,+BAA8B,GACrD7a,IAAMsP,iBAAmB,GAEpB4L,EAEP,OAAO,KAhFP,IAAgClH,EAA0BgI,EAmF9D,OAAO,MAGXC,gBAAiB,WACXjc,IAAMsP,iBAAmB,IAC3BtP,IAAMmQ,UAAUsE,QAAQC,YACxB1U,IAAMmQ,UAAUwE,aACd3U,IAAMuP,wBACJvP,IAAMuP,wBAAwBvM,OAC5B,EACAhD,IAAMsP,iBACN,IAGNtP,IAAMmQ,UAAUuE,YAChB1U,IAAMsP,kBAAoB,IAG9B4M,oBAAqB,KACrBC,oBAAqB,GACrBC,UAAW,KACXrH,eAAgB,KAChBK,aAAc,KACdiH,aAAc,CAAEtI,IAAK,EAAGC,KAAM,GAC9BsI,gBAAiB,SAACD,GAAY,OAAKtc,EAAI,CAAEsc,aAAAA,UAnNzBjE,GCnlBpB,SAAgBmE,KACdC,KAAKC,kBAAe9gB,EACpB6gB,KAAKE,kBAAe/gB,EACpB6gB,KAAKG,gBAAkB,GAGzBJ,GAAW7U,UAAY,CACrBkV,eAAgB,WAEd,IAAIC,EAAML,KAAKM,SAAS,EAAG,GAG3B,GAAY,QAARD,EACFL,KAAKE,cAAe,MACf,CAAA,GAAY,QAARG,EAIT,MADA9V,QAAQiR,IAAI6E,GACNE,UAAU,6BAHhBP,KAAKE,cAAe,EAMtB,OAAOF,KAAKE,cAGdM,SAAU,WAER,GAA4B,KAAxBR,KAAKM,SAAS,EAAG,GACnB,MAAMG,WAAW,0BAInB,OAAO,GAGTC,gBAAiB,SAAUC,GAGzB,IA8GIC,EA9GAC,EAAgB,CAElBC,IAAQ,SACRC,IAAQ,gBACRC,IAAQ,aACRC,IAAQ,YACRC,IAAQ,WACRC,IAAQ,cACRC,MAAQ,YACRC,IAAQ,WACRC,IAAQ,eACRC,IAAQ,YACRC,IAAQ,iBACRC,IAAQ,cACRC,IAAQ,oBACRC,IAAQ,mBACRC,IAAQ,eACRC,IAAQ,mBACRC,IAAQ,cACRC,IAAQ,aACRC,IAAQ,OACRC,IAAQ,iBACRC,IAAQ,iBACRC,IAAQ,QACRC,IAAQ,iBACRC,IAAQ,cACRC,IAAQ,4BACRC,IAAQ,sBACRC,IAAQ,iBACRC,IAAQ,eACRC,IAAQ,kBACRC,IAAQ,WACRC,IAAQ,kBACRC,IAAQ,eACRC,IAAQ,cACRC,IAAQ,gBACRC,IAAQ,cACRC,IAAQ,cAGRC,IAAQ,cACRC,IAAQ,eACRC,IAAQ,WACRC,IAAQ,yBACRC,IAAQ,SACRC,IAAQ,oBACRC,IAAQ,eACRC,IAAQ,WACRC,IAAQ,gBACRC,IAAQ,UACRC,IAAQ,aACRC,IAAQ,WACRC,IAAQ,aACRC,IAAQ,YACRC,IAAQ,wBACRC,IAAQ,sBACRC,IAAQ,eACRC,IAAQ,iBACRC,IAAQ,UACRC,IAAQ,YACRC,IAAQ,YACRC,IAAQ,iBACRC,IAAQ,aACRC,IAAQ,cACRC,IAAQ,YACRC,IAAQ,mBACRC,IAAQ,aACRC,IAAQ,iBACRC,IAAQ,YACRC,IAAQ,oBACRC,IAAQ,mBACRC,IAAQ,mBACRC,IAAQ,iBACRC,IAAQ,YAGRC,MAAQ,gBACRC,MAAQ,aACRC,MAAQ,oBACRC,MAAQ,mBACRC,MAAQ,WACRC,MAAQ,cACRC,MAAQ,eACRC,MAAQ,aACRC,MAAQ,QACRC,MAAQ,kBACRC,MAAQ,UACRC,MAAQ,gBACRC,MAAQ,cACRC,MAAQ,YACRC,MAAQ,oBACRC,MAAQ,cAGRC,MAAQ,OAGRC,MAAQ,cAGRC,IAAQ,MAGRC,MAAQ,gBACRC,MAAQ,cAGRC,MAAQ,aAYV,OAPI9F,KAAYE,EACdD,EAAeC,EAAcF,IAE7BpW,QAAQiR,IAAI,qBAAsBmF,GAClCC,EAAe,MAAQD,GAGlBC,GAGT8F,iBAAkB,SAAUC,GAC1B,IAeIC,EAfAC,EAAiB,CACnBC,EAAQ,OACRC,EAAQ,QACRC,EAAQ,QACRC,EAAQ,OACRC,EAAQ,WACRC,EAAQ,QACRC,EAAQ,YACRC,EAAQ,SACRC,EAAQ,QACRC,GAAQ,YACRC,GAAQ,QACRC,GAAQ,UASV,OAJId,KAAaE,IACfD,EAAgBC,EAAeF,IAG1BC,GAGTc,mBAAoB,SAAUd,GAC5B,IAAIe,EAcJ,OAZwE,IAApE,CAAC,OAAQ,QAAS,QAAS,aAAa1a,QAAQ2Z,GAClDe,EAAkB,GACuC,IAAhD,CAAC,QAAS,UAAU1a,QAAQ2Z,GACrCe,EAAkB,GAC8C,IAAvD,CAAC,OAAQ,QAAS,SAAS1a,QAAQ2Z,GAC5Ce,EAAkB,GAE8C,IAAhE,CAAC,WAAY,YAAa,UAAU1a,QAAQ2Z,KAE5Ce,EAAkB,GAGbA,GAGTC,QAAS,SAAUC,EAASC,EAAYC,GACtCA,EAAYA,GAAa,EACzB,IACIC,EAAgBF,EADHzhB,KAAKC,MAAMyhB,EAAY,GAEpCE,EAAYF,EAAYF,EACxBK,EAAa,GAAKL,EAEtB,GAAII,GAAa,EAEf,MADA1d,QAAQiR,IAAIqM,EAASC,EAAYC,GAC3BtH,WAAW,qBACZ,GAAIwH,GAAa,EACtB,IAAIE,EAAY,GAAKJ,EACjBK,EAAUpI,KAAKC,aAAaoI,SAC9BL,EACAhI,KAAKE,mBAEF,GAAI+H,GAAa,GAClBE,EAAY,GAAKJ,EACjBK,EAAUpI,KAAKC,aAAaqI,UAC9BN,EACAhI,KAAKE,kBAEF,CAAA,KAAI+H,GAAa,IAQtB,MADA1d,QAAQiR,IAAIqM,EAASC,EAAYC,GAC3BtH,WAAW,2BAPb0H,EAAYJ,EACZK,EAAUpI,KAAKC,aAAasI,UAC9BP,EACAhI,KAAKE,cAaT,MANgB,CACdsI,KAAOJ,GAAWD,IAAeD,EACjCJ,WAAYE,EAAgB3hB,KAAKC,MAAM2hB,EAAY,GACnDF,UAAWE,EAAY,IAM3B3H,SAAU,SAAUmI,EAAUC,GAC5B,GAAID,GAAY,EAEd,MADAle,QAAQiR,IAAIiN,EAAUC,GAChBjI,WAAW,sBACZ,GAAIgI,GAAY,EACrB,OAAOzI,KAAKC,aAAaoI,SAASK,EAAQ1I,KAAKE,cAC1C,GAAIuI,GAAY,EACrB,OAAOzI,KAAKC,aAAaqI,UAAUI,EAAQ1I,KAAKE,cAC3C,GAAIuI,GAAY,EACrB,OAAOzI,KAAKC,aAAasI,UAAUG,EAAQ1I,KAAKE,gBAAkB,EAC7D,GAAIuI,GAAY,EACrB,OAAOzI,KAAKC,aAAasI,UAAUG,EAAQ1I,KAAKE,cAGhD,MADA3V,QAAQiR,IAAIiN,EAAUC,GAChBjI,WAAW,6BAIrBkI,eAAgB,SACd/H,EACAgG,EACAgC,EACAC,GAEA,IAAIC,EAAc,GAEdnB,EAAkB3H,KAAK0H,mBAAmBd,GAC1CmC,EAAiBpB,EAAkBiB,EAEvC,GAAIG,GAAkB,EAAG,CAEvB,IAA0B,IAAtB/I,KAAKE,aACP,IAAI3gB,EAAQspB,IAAyC,GAAvB,EAAIlB,QAE9BpoB,EAAQspB,EAGdC,EAAY9O,KAAKza,QAEjB,IAAK,IAAI4G,EAAI,EAAGA,EAAIyiB,EAAWziB,IAAK,CAClC,IAAI6iB,EAAcrB,EAAkBxhB,EAEpC,GAAIwhB,GAAmB,EAAG,CACxB,IAA0D,IAAtD,CAAC,WAAY,aAAa1a,QAAQ2Z,GASpC,MADArc,QAAQiR,IAAIoL,EAAegC,EAAWG,GAChCxI,UAAU,wCAPhBuI,EAAY9O,KAAKgG,KAAKM,SAAS,EAAGuI,EAAcG,IAEhDF,EAAY9O,KAAKgG,KAAKM,SAAS,EAAGuI,EAAcG,EAAc,SAQhEF,EAAY9O,KACVgG,KAAKM,SAASqH,EAAiBkB,EAAcG,IAYrD,MANsB,UAAlBpC,GACFkC,EAAYzQ,SAAQ,SAAUtV,EAAGoD,EAAG8iB,GAClCA,EAAE9iB,GAAK+iB,OAAOC,aAAapmB,MAIxB+lB,GAGTM,iBAAkB,SAAUC,EAAaC,GACvC,IAAIC,EAAaljB,KAAKmjB,IAAI,EAAG,EAAIF,GAEjC,OAAOjjB,KAAKC,MAAM+iB,EAAcE,GAAcA,EAAa,KAG7DE,kBAAmB,SAAUhpB,EAAGipB,EAAGC,EAAGV,GAIpC,YAHiB,IAANA,IACTA,EAAI,GAEC,QAAUxoB,EAAI,KAAOipB,EAAI,KAAOC,EAAI,KAAOV,EAAI,KAGxDW,mBAAoB,SAAU9B,GAK5B,IAJA,IAAI+B,EAAgB7J,KAAKM,SAAS,EAAGwH,GAEjCgC,EAAa,GAGX3jB,EAAI2hB,EAAa,EAAGiC,EAAa,EACrCA,EAAaF,EACb1jB,GAAK,GAAI4jB,IACT,CACA,IAAIpJ,EAAWX,KAAKM,SAAS,EAAGna,GAC5BwgB,EAAY3G,KAAKM,SAAS,EAAGna,EAAI,GACjCyiB,EAAY5I,KAAKM,SAAS,EAAGna,EAAI,GACjC0iB,EAAc7I,KAAKM,SAAS,EAAGna,EAAI,GAEnCya,EAAeZ,KAAKU,gBAAgBC,GACpCiG,EAAgB5G,KAAK0G,iBAAiBC,GAEtCmC,EAAc9I,KAAK2I,eACrB/H,EACAgG,EACAgC,EACAC,GAGFiB,EAAWlJ,GAAgB,CAAEvjB,KAAMupB,EAAeoD,OAAQlB,GAG5D9I,KAAKG,gBAAgBnG,KAAK8P,GAE1B,IAAIG,EAAoBjK,KAAKM,SAAS,EAAGna,GAEzC,OAA0B,IAAtB8jB,EACKjK,KAAKG,gBAELH,KAAK4J,mBAAmBK,IAInCC,UAAW,SAAUC,EAAiB7T,GAUpC,GATAA,EAASA,GAAUtZ,SAASI,cAAc,UAE1CmN,QAAQiR,IAAI2O,GAEZnK,KAAKC,aAAe,IAAImK,SAASD,GACjCnK,KAAK1J,OAASA,EAEd0J,KAAKE,aAAeF,KAAKI,eAAeJ,KAAKC,cAExCD,KAAKQ,SAASR,KAAKC,aAAcD,KAAKE,cAA3C,CAIA,IAAImK,EAAqBrK,KAAKM,SAAS,EAAG,GAE1CN,KAAKG,gBAAkBH,KAAK4J,mBAAmBS,GAE/C,IAAIC,EAAgBtK,KAAKG,gBAAgB,GAEzC5V,QAAQiR,IAAI8O,GAEZ,IAAIC,EAAaD,EAAcE,WAAWR,OAAO,GAC7CS,EAAcH,EAAcI,YAAYV,OAAO,GAEnDhK,KAAK1J,OAAOzW,MAAQ0qB,EACpBvK,KAAK1J,OAAOxW,OAAS2qB,EAErB,IAAIE,EAAS,GAETC,EAAcN,EAAcO,YAC5BP,EAAcO,YAAYb,OAAO,GACjC,EAEAc,EAAkBR,EAAcS,gBAAgBf,OAAO,GAEvDgB,EAAmB,GAEnBC,EAAe,EACfC,GAAmB,EAsBvB,GApBAZ,EAAca,cAAcnB,OAAO3R,SAAQ,SACzCiR,EACAnjB,EACAilB,GAEAJ,EAAiB7kB,GAAK,CACpBmjB,cAAeA,EACf+B,mBAAmB,EACnBC,oBAAgBnsB,GAGdmqB,EAAgB,GAAM,IACxB0B,EAAiB7kB,GAAGklB,mBAAoB,EACxCL,EAAiB7kB,GAAGmlB,eAAiBhC,EAAgB,GAGvD2B,GAAgB3B,IAElBtJ,MAEIiL,EAAe,GAAM,EAAG,CAC1BC,GAAmB,EACnB,IAAIK,EAAgBN,EAAe,EAGrC,IAAIO,EAAoBlB,EAAcmB,aAAazB,OAC/C0B,EAAuBF,EAAkBhlB,OAG7C,GAAI8jB,EAAcqB,gBAChB,IAAIC,EAAuBtB,EAAcqB,gBAAgB3B,WACpD,CAIL,GAHAzf,QAAQiR,IAAI,4BAGiB,IAAzBkQ,EAKF,MAAMprB,MAAM,+CAJRsrB,EAAuB,CACzBvlB,KAAKyY,KAAMyL,EAAaE,EAAcQ,EAAgB,IAQ5D,IAAK,IAAI9kB,EAAI,EAAGA,EAAIulB,EAAsBvlB,IAAK,CAC7C,IAAI0lB,EAAcL,EAAkBrlB,GACpCwkB,EAAOxkB,GAAK,GAKZ,IAHA,IAAI2lB,EAAiBF,EAAqBzlB,GAIpC2hB,EAAa,EACfC,EAAY,EACZgE,EAAa,EACbC,GAAY,EACZC,EAAQ,GACRxD,EAAW,EACXyD,EAAS,EACTC,EAAgB,EAClBrE,EAAagE,EACbhE,GAAciE,EAGd,OAAQnB,GAEN,KAAK,EAEE,IAAIwB,EAAI,EAAb,IAAgBH,EAAQ,GAAIG,EAAItB,EAAiBsB,IAAK,CACpD,IAAIpB,EAAiBoB,GAAGf,kBAUjB,CACL,IAAIgB,EAAarM,KAAK4H,QACpBoD,EAAiBoB,GAAG9C,cACpBuC,EAAc/D,EACdC,GAQF,MALAkE,EAAMjS,KAAKqS,EAAW7D,MAEtBV,EAAauE,EAAWvE,WAAa+D,EACrC9D,EAAYsE,EAAWtE,UAEjBtH,WAAW,0CAlBjBwL,EAAMjS,KACJgG,KAAKM,SACH0K,EAAiBoB,GAAGd,eACpBO,EAAc/D,EALCkD,EAAiBoB,GAAGd,eAAiBc,IA0B5D,GAFAzB,EAAOxkB,GAAG6T,KAAKiS,IAEXf,EAKF,MAFAa,EAAa,EAEPtL,WAAW,yCAJjBsL,EAAaR,EAMf,MAGF,KAAK,EAKL,KAAK,EAKL,KAAK,EAKL,KAAK,EAKL,KAAK,EAKL,KAAK,EAEH,MAGF,KAAK,MAEH,GAAIS,EAAW,CACbA,GAAY,EAEZ,IAAIM,EAAc,EACdC,EAAa,EAGbC,EAASxM,KAAKC,aAAawM,QAC7BZ,EAAc/D,EACd9H,KAAKE,cAGHsM,GAAU,GAAKA,GAAU,IAE3BF,EAAcE,EAAS,EACdA,IAAW,KAAOA,IAAW,EAEtCD,EAAuB,EAATC,EAGdR,GAAY,MAET,CACL,IAAIU,EAAc1M,KAAKM,SAAS,EAAGuL,EAAc/D,GAGjD,IAASsE,EAAI,EAAGA,EAAIG,EAAYH,IAAK,CACnC,IAAIpB,EAAiBkB,GAAQb,kBAa3B,MAAM5K,WAAW,0CAXjB0L,EACGA,GAAkB,EAAI1D,EAAaiE,IACtCjE,IAGiBuC,EAAiBkB,GAAQZ,iBACxCW,EAAMjS,KAAKmS,GACXA,EAAgB1D,EAAW,EAC3ByD,KAOAA,IAAWpB,IACbH,EAAOxkB,GAAG6T,KAAKiS,GAEfA,EAAQ,GACRC,EAAS,GAOO,KAHpBI,IAIEN,GAAY,GAIhBD,EAAa,GAerB,GAAIzV,EAAOqW,WAAY,CACrB,IAAIC,EAAM5M,KAAK1J,OAAOqW,WAAW,MAMjC,GAHAC,EAAIC,UAAY7M,KAAKyJ,kBAAkB,IAAK,IAAK,IAAK,GAGlDa,EAAcwC,aAChB,IAAIC,EAAezC,EAAcwC,aAAa9C,OAAO,QAEjD+C,EAAetC,EAGrB,IAAIuC,EAAYrC,EAAOnkB,OAEnBymB,EAA6BxC,EAAcsC,EAC3CG,EAC6B,IAA/BD,EACIF,EACAE,EAEFE,EAAiBJ,EACjBK,EAAyB,EAEzBC,EACF/C,EAAcgD,0BAA0BtD,OAAO,GAE7CuD,EAAqB,GACrBC,EAAkB,EAOtB,GALIlD,EAAcmD,eAEhBD,GADAD,EAAqBjD,EAAcmD,aAAazD,QACXxjB,QAGnC8jB,EAAcoD,SAChB,IAAIC,EAAiBrD,EAAcoD,SAAS1D,OACxC4D,EAAqBvnB,KAAKmjB,IAAI,EAAGwB,EAAiB,GAAG1B,eAI3D,IAASnjB,EAAI,EAAGA,EAAI6mB,EAAW7mB,IAAK,CAE9BA,EAAI,IAAM6mB,IACZG,EAAiBD,GAOnB,IAJA,IAAIW,EAAYlD,EAAOxkB,GAAGK,OACtBsnB,EAAWV,EAAyBjnB,EAG/BzE,EAAI,EAAG2d,EAAI,EAAG3d,EAAwBmsB,EAAWnsB,IAExD,IAAK,IAAID,EAAI,EAAGA,EAAI8oB,EAAY9oB,IAAK4d,IAAK,CACxC,IAAI0O,EAAepD,EAAOxkB,GAAGkZ,GAEzB2O,EAAM,EACNC,EAAQ,EACRC,EAAO,EACPC,GAAU,EAEd,GAAIX,EAAkB,EACpB,IAAK,IAAIY,GAAI,EAAGA,GAAIZ,EAAiBY,KACnC,GAC4B,IAA1Bb,EAAmBa,KACO,IAA1Bb,EAAmBa,IACnB,CAEAD,GAAUJ,EAAa,EAAIK,IAAK,IAEhC,MAKN,OAAQf,GAGN,KAAK,EACH,GAAIrC,EAAiB,GAAGK,kBACtB,IAAIgD,GAAchoB,KAAKmjB,IACrB,GACqC,EAArCwB,EAAiB,GAAGM,gBAKxByC,EAAa1V,SAAQ,SAAU6T,EAAQzV,EAAO6X,GAC5CA,EAAQ7X,GAAS4X,GAAcnC,KAKnC,KAAK,EACH8B,EACEC,EACAC,EACElO,KAAKoJ,iBACH2E,EAAa,GACb/C,EAAiB,GAAG1B,eAE1B,MAGF,KAAK,EACH0E,EAAMhO,KAAKoJ,iBACT2E,EAAa,GACb/C,EAAiB,GAAG1B,eAEtB2E,EAAQjO,KAAKoJ,iBACX2E,EAAa,GACb/C,EAAiB,GAAG1B,eAEtB4E,EAAOlO,KAAKoJ,iBACV2E,EAAa,GACb/C,EAAiB,GAAG1B,eAEtB,MAGF,KAAK,EACH,QAAuBnqB,IAAnBwuB,EACF,MAAMrtB,MAAM,mCAGd,IAAIiuB,GAAgBR,EAAa,GAEjCC,EAAMhO,KAAKoJ,iBAAiBuE,EAAeY,IAAgB,IAC3DN,EAAQjO,KAAKoJ,iBACXuE,EAAeC,EAAqBW,IACpC,IAEFL,EAAOlO,KAAKoJ,iBACVuE,EAAe,EAAIC,EAAqBW,IACxC,IAEF,MAGF,KAAK,EACH,MAAM9N,WAAW,0CAInB,KAAK,EACH,MAAMA,WAAW,6BAInB,KAAK,EACH,MAAMA,WAAW,8BAInB,KAAK,EACH,MAAMA,WAAW,+BAInB,QACE,MAAMA,WACJ,sCACA4M,GAKNT,EAAIC,UAAY7M,KAAKyJ,kBAAkBuE,EAAKC,EAAOC,EAAMC,IACzDvB,EAAI4B,SAAS/sB,EAAGqsB,EAAWpsB,EAAG,EAAG,GAIrC0rB,EAAyBD,GAQ7B,OAAOnN,KAAK1J,cCzyBHmY,GAAgB,CAC5BC,QAAW,CAEPC,aAAc,EACdC,MAAQ,IACRC,MAAQ,IACRC,SAAW,EACXC,mBAAoB,EAGpBC,cAAgB,EAChBC,eAAgB,EAChBC,cAAgB,EAChBC,iBAAmB,EAGnBC,SAAW,EAGXC,YAAc,EACdC,YAAa,EACbC,MAAQ,EACRC,YAAc,EACdC,SAAU,EACVC,MAAO,EACPC,KAAO,EACPC,KAAO,EAGPC,WAAY,EACZC,UAAY,IAIhBC,IAAO,CAEIpB,aAAc,EACdC,MAAQ,IACRC,MAAQ,GACRC,SAAW,EACXC,mBAAoB,EAGpBC,cAAgB,GAChBC,eAAgB,EAChBC,cAAgB,EAChBC,iBAAmB,EAGnBC,SAAW,EAGXC,YAAc,EACdC,YAAa,EACbC,MAAQ,EACRC,YAAc,EACdC,SAAU,EACVC,MAAO,EACPC,KAAO,EACPC,KAAO,EAGPC,WAAY,EACZC,UAAY,IAGvBE,IAAO,CAELrB,aAAc,EACdC,MAAQ,IACRC,MAAQ,IACRC,SAAW,EACXC,mBAAoB,EAEpBC,cAAgB,EAChBC,eAAgB,EAChBC,cAAgB,EAChBC,iBAAmB,EAEnBC,SAAW,EAEXC,YAAc,EACdC,YAAa,EACbC,MAAQ,EACRC,YAAc,EACdC,SAAU,EACVC,MAAO,EACPC,KAAO,EACPC,KAAO,EAEPC,WAAY,EACZC,UAAY,IAGbG,YAAe,CAAEjB,cAAc,EAAGC,eAAe,GAEjDiB,YAAe,CAAEjB,eAAe,EAAGY,WAAW,GAE9CM,MAAS,CAAEvB,MAAM,IAAMU,YAAW,EAAMP,mBAAkB,GAE1DqB,MAAS,CAAEvB,MAAM,IAAMS,YAAW,GAElCe,SAAY,CAAEvB,SAAS,EAAGU,YAAY,EAAGZ,MAAM,GAAKC,MAAM,GAAKI,eAAe,IAE9EqB,SAAY,CAAET,WAAW,EAAGC,UAAW,IAEvCS,UAAa,CAAEvB,cAAc,EAAGG,iBAAiB,EAAGF,eAAe,GAEnEuB,aAAgB,CAAExB,cAAc,EAAGG,iBAAiB,EAAGF,eAAe,IAEtEwB,gBAAmB,CAAEzB,cAAc,EAAGC,eAAe,GAErDyB,gBAAmB,CAAE1B,cAAc,EAAGC,eAAe,IAErD0B,UAAa,CAAE3B,cAAc,EAAGG,iBAAiB,EAAGL,SAAS,EAAGe,WAAW,EAAGC,UAAW,GAAIlB,MAAM,IAAMU,YAAW,EAAML,eAAe,GAAII,YAAY,GAEzJuB,UAAa,CAAE/B,MAAM,IAAMG,cAAc,EAAGG,iBAAiB,EAAGF,eAAe,EAAGI,YAAY,GAE9FwB,UAAa,CAAEhC,MAAM,GAAID,MAAM,GAAIK,eAAe,GAElD6B,UAAa,CAAEjC,MAAM,GAAID,MAAM,GAAIK,eAAe,GAAIY,WAAW,EAAGC,UAAW,IAAKT,YAAY,GAEhG0B,YAAe,CAAEnC,MAAO,EAAGC,MAAO,EAAGC,SAAU,GAAIC,mBAAmB,EAAMC,cAAe,EAAGC,eAAgB,EAC7GC,cAAe,EAAGC,iBAAkB,EAAGU,WAAY,EAAGC,UAAW,GAAIT,YAAa,EAAGC,YAAY,EACjGE,YAAa,EAAGwB,IAAK,CAAE,CAAEvwB,EAAG,EAAGipB,EAAG,EAAGC,EAAG,IAAKV,EAAG,KAAO,CAAExoB,EAAG,IAAKipB,EAAG,IAAKC,EAAG,IAAKV,EAAG,QC9F1EgI,GAA+C,SAAC1tB,EAAKC,GAElE,IA+bsB0tB,EAlMHC,EAbNC,EAXEC,EArOTC,EAAe,SAACC,EAAaC,GACjCxmB,SAAOymB,kBAEL,IAAIvI,OAAOqI,IACX,SAAU5X,EAASW,GACjB,IAAInG,EAAoBnJ,SAAOuP,KAAKC,iBAAiBb,EAASW,GAC9DnG,EAAauG,cAAc,KAC3BvG,EAAasG,aAAa,KAE1B,IAAIE,QAAWxG,SAAAA,EAAcuC,SACzBkE,EAAS,GACT8W,EAAa,GACd/W,GACDA,EAAStC,SAAQ,SAACwC,GAEhB,GADAA,EAAItX,IAAI,CAAExC,YAAa,IACA,iBAAb8Z,EAAI1a,MAAkC,KAAb0a,EAAI1a,KAAY,CACnDoD,EAAI,CAAEuX,aAASrI,OAAMoI,EAAI1a,QACzB,IAAI2a,EAAYD,EAAI1a,KAAK8N,WAEzByjB,EAAW5W,IAAc4W,EAAW5W,IAAc,GAD/BD,EAAIhb,MAAQgb,EAAI/a,WAKvCkF,GAAYC,SAAS,CAAEkP,aAAcwG,IACrC,IAAMgX,EAAmB1mB,OAAO2mB,KAAKF,GAAYG,MAAK,SAAC5I,EAAGU,GAAC,OAAK+H,EAAW/H,GAAK+H,EAAWzI,MACrF6I,EAAYH,EAAiB1hB,MAAM,EAAGuhB,GAC5CM,EAAU/hB,KAAI,SAAChN,GACb,IAAuB,IAAnBA,EAAEsM,OAAO,KACb,CACE,IAAI0iB,EAAKvuB,IAAMwuB,SAASjvB,GACxB6X,EAAOZ,KAAK+X,QAEZnX,EAAOZ,KAAKjX,MAIhBQ,EAAI,CAAEuX,UAAWtX,IAAMuX,iBAAiBH,KAExCA,EAASpX,IAAMuX,iBAAiBH,GAChC,IAAMI,EAAa,GACnBJ,EAAO7K,KAAI,SAACnB,EAAM6H,GAChBuE,EAAW,QAAUvE,GAAS7H,KAEhC5J,GAAYC,SAAS,CAAEgP,UAAW+G,IAGlC,IAAMiX,EAAY,GAWlB,SAASC,EAAkBC,EAAgBC,GACzC,IAAMC,EAAK,IAAIrnB,SAAOsnB,MAAMH,GAAQI,YAC9BC,EAAK,IAAIxnB,SAAOsnB,MAAMF,GAAQG,YAG9BE,EAAQJ,EAAG,GAAKG,EAAG,GACnBE,EAAQL,EAAG,GAAKG,EAAG,GAEzB,OAAOnsB,KAAKssB,KAAKtsB,KAAAmjB,IAJH6I,EAAG,GAAKG,EAAG,GAIC,GAACnsB,KAAAmjB,IAAGiJ,EAAS,GAACpsB,KAAAmjB,IAAGkJ,EAAS,IAlBtDznB,OAAO2mB,KAAK5W,GAAYjL,KAAI,SAAC6iB,GAC3BX,EAAUjY,KAAK,CACb6Y,SAAUD,EACVlE,QAAS1T,EAAW4X,GACpBE,QAAS9X,EAAW4X,QAGxB5tB,GAAYC,SAAS,CAAEiP,iBAAkB+d,IACzCjtB,GAAYC,SAAS,CAAEmP,qBAAsB6d,IAY7C,IAAMc,EAAwC,GAC9CpB,EAAiBtZ,SAAQ,SAAC2a,GACxB,IAAMC,EAAenB,EAAUoB,QAAO,SAAClpB,EAAMmpB,GAG3C,OAFiBjB,EAAkBc,EAAOhpB,GACzBkoB,EAAkBc,EAAOG,GACbnpB,EAAOmpB,KAEtCJ,EAASC,GAASC,KAEjBtY,GACDA,EAAStC,SAAQ,SAACwC,GAChBA,EAAItX,IAAI,CAAEpD,KAAM4yB,EAASlY,EAAI1a,KAAK8N,iBAGtCkG,EAAa5Q,IAAI,CACf0Q,UAAW+G,EAEXoY,mBAAmB,IAErBjf,EAAatT,GAAKmE,GAAYY,WAAW6P,OAGzCzQ,GAAYY,WAAW+N,UAAUsE,QA+CjC,IA1BA,IAQgCT,EAA0BgI,EARpDlJ,EAAStR,GAAYY,WAAW+N,UAElCgL,EAAcrI,EAAOzW,MACrB+e,EAAetI,EAAOxW,OACtB+e,EAAUxY,KAAKyY,KAAKH,EAHT,IAIXI,EAAU1Y,KAAKyY,KAAKF,EAJT,IAyBNzY,EAAI,EAAGA,EAAI0Y,EAAS1Y,IAAK,CAC9B,IAAI1E,EA1BO,GA0BH0E,EACRmQ,EAAOe,IAAI,IAAIrM,SAAOwN,KAAK,CAAC/W,EAAG,EAAGA,EAAGmd,GAAe,CACpDxe,OAAQ,YACRuY,YAAY,EACZsG,eAAc,EACdC,eAAc,EACdC,cAAa,EACbC,cAAa,EACb/hB,KAAM,UAGV,IAAK,IAAIgiB,EAAI,EAAGA,EAAIN,EAASM,IAAK,CAC9B,IAAI3d,EAtCO,GAsCH2d,EACR/I,EAAOe,IAAI,IAAIrM,SAAOwN,KAAK,CAAC,EAAG9W,EAAGid,EAAajd,GAAI,CACnDtB,OAAQ,UACRuY,YAAY,EACZsG,eAAc,EACdC,eAAc,EACdC,cAAa,EACbC,cAAa,EACb/hB,KAAM,UAIV,IAAS8I,EAAI,EAAGA,EAAI0Y,EAAS1Y,IACzB,IAASkZ,EAAI,EAAGA,EAAIN,EAASM,IAAK,CAC9B,IAGIC,EA/CG,IAAItU,SAAOuU,KAAK,CACvB/H,KAFwBA,EAPjB,GAoDIrR,EA1CXoR,IAVO,GAqDG8H,EA1CVxf,MAXO,GAYPC,OAZO,GAaPzC,KAAM,OACN4hB,eAAc,EACdC,eAAc,EACdC,cAAa,EACbC,cAAa,EAEbjf,MAZkDqf,EA+ClCH,EAAI,GAAM,IAnCN7H,EAnBb,GAmB4B,GAAM,IAAQgI,GAAchI,EAnBxD,GAmBuE,GAAM,EAAI,UAAa,cAqCrGlB,EAAOe,IAAIiI,GAInBta,GAAYY,WAAW+N,UAAU0D,IAAIlD,GAAc+D,YACnDlT,GAAYY,WAAW+N,UAAUsH,aAAa9G,GAC9CnP,GAAYY,WAAW+N,UAAU8D,gBAAgBtD,GACjDnP,GAAYC,SAAS,CAAE8O,gBAAiBI,IACxCnP,GAAYC,SAAS,CAAEiF,SAAS,IAChClF,GAAYY,WAAWyY,+BAA8B,OAKzD,MAAO,CAELvD,UAAW,GACXuY,KAAM,GACNC,QAAS,SAACD,GACR9vB,EAAI,CAAE8vB,KAAAA,KA2CRE,aAAWlC,EAAA7nB,EAAAC,IAAAC,MAAE,SAAAC,EAAOlB,GAAI,IAAA+qB,EAAAC,EAAAC,EAAAC,EAAA,OAAAlqB,IAAAK,eAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAKtB,OAJMupB,EAAa,IAAIzT,IACjB0T,EAAWz2B,SAASI,cAAc,WAC/ByC,MAAQ,IACjB4zB,EAAS3zB,OAAS,IAClBiK,EAAAE,OAC0BxB,EAAKmrB,cAAa,OAEL,OADnCF,EAAaF,EAAWtJ,UADXngB,EAAAI,KACkCspB,GAC7CE,EAAWD,EAAWne,YAAWxL,EAAAM,gBAChCspB,GAAQ,QAAA,UAAA,OAAA5pB,EAAAS,UAAAb,OAChB,SAAAc,GAAA,OAAA4mB,EAAA3mB,WAAAC,aACDkpB,WAASzC,EAAA5nB,EAAAC,IAAAC,MAAC,SAAAoB,EAAOgpB,GAAM,IAAAC,EAAAhrB,EAAA,OAAAU,IAAAK,eAAAiB,GAAA,cAAAA,EAAAf,KAAAe,EAAAd,MAAA,OASpB,OARK8pB,EAAW,IAAIC,UACZC,OAAO,OAAQH,GAElB/qB,EAAS,CACXX,QAAS,CACNE,cAAkB,0CACjBD,eAAgB,wBAEvB0C,EAAAd,OACsBvB,GAASG,KAPpB,6DAO8BkrB,EAAShrB,GAAO,OAA5C,OAAAgC,EAAAV,gBAAAU,EAAAZ,MACC,OAAA,UAAA,OAAAY,EAAAP,UAAAM,OACjB,SAAAa,GAAA,OAAAylB,EAAA1mB,WAAAC,aACDupB,kBAAgB/C,EAAA3nB,EAAAC,IAAAC,MAAC,SAAA8B,EAAO7C,GAAG,OAAAc,IAAAK,eAAA4B,GAAA,cAAAA,EAAA1B,KAAA0B,EAAAzB,MAAA,OAC1BM,QAAQiR,IAAI,OAAO7S,GAInB,OAAA,UAAA,OAAA+C,EAAAlB,UAAAgB,OAED,SAAA2oB,GAAA,OAAAhD,EAAAzmB,WAAAC,aACCypB,WAAY,SAAC3rB,EAAM4rB,EAAaC,EAAeC,GAG7C,YAH8BD,IAAAA,GAAQ,YAAOC,IAAAA,GAAU,GAEvDvvB,GAAYC,SAAS,CAAEiF,SAAS,IAC7BqqB,EACH,GAAGD,EAAM,CACP,IAAIE,EAAS,IAAIC,WACjBD,EAAOE,OAAS,SAAU3xB,GACxBiC,GAAYC,SAAS,CAAE2a,UAAW7c,EAAE4xB,OAAOrZ,SAC3CgW,EAAavuB,EAAE4xB,OAAOrZ,OAAQ,IAEhCkZ,EAAOI,WAAWnsB,QAElBosB,EAAYT,WACV3rB,GACA,SAAU8oB,GACRvsB,GAAYC,SAAS,CAAE2a,UAAW2R,IAClCD,EAAaC,EAAQ,MACnB8C,GAA8B,QAAtBA,EAAIS,eAAiD,SAAtBT,EAAIS,cACxB,QAAtBT,EAAIS,cAA0BrG,GAAcsB,IAAMtB,WADwBA,GAAcuB,UAK7FsB,EAAa7oB,EAAM,IAGrBssB,aAAc,SAACvD,GACbF,EAAatsB,GAAYY,WAAWga,UAAW4R,IAEjDzW,iBAAkB,SAACia,GACjB,OAAOA,EAAInX,QAAO,SAACjP,EAAM6H,GAAK,OAAKue,EAAI/nB,QAAQ2B,KAAU6H,MAG3Dub,SAAU,SAACiD,GACT,GAAGA,EAAI,CACP,GAAGA,EAAIhoB,QAAQ,SAAW,EAAE,CAC1B,IAAMioB,EAAOD,EAAIvmB,QAAQ,oBAAqB,IAAI5B,MAAM,KACxD,YAAa,GAAK,KAAOqoB,SAASD,EAAK,KAAO,KAAOC,SAASD,EAAK,KAAO,GAAKC,SAASD,EAAK,KAAKjnB,SAAS,IAAIgC,MAAM,GAEvH,IAAImlB,EAAMH,EAAIhoB,QAAQ,MAAQ,EAAI,IAAM,IAEpCxM,KADJw0B,EAAMA,EAAIpf,OAAO,GAAG/I,MAAM,KAAK,GAAGA,MAAMsoB,IAC1B,IAAInnB,SAAS,IACzByb,IAAMuL,EAAI,IAAIhnB,SAAS,IACvB0b,IAAMsL,EAAI,IAAIhnB,SAAS,IAKzB,OAHgB,GAAZxN,EAAE+F,SAAa/F,EAAI,IAAMA,GACb,GAAZipB,EAAEljB,SAAakjB,EAAI,IAAMA,GACb,GAAZC,EAAEnjB,SAAamjB,EAAI,IAAMA,GACtB,IAAMlpB,EAAIipB,EAAIC,EAEhB,MAAO,IAEd0L,eAAgB,SAACxC,EAAUG,GACzBhuB,GAAYY,WAAWyY,+BAA8B,GACrD,IAAMvD,EAASvZ,KAAQyD,GAAYY,WAAWqO,WACxCqhB,EAAgBxa,EAAU+X,GAuBhC,QAAG7tB,GAAYY,WAAWuO,eACXnP,GACZY,WACA+N,UAAUyE,aACJC,SAAQ,SAACwC,GACO,iBAAbA,EAAI1a,MAAkC,KAAb0a,EAAI1a,OACd,gBAAb0a,EAAI1a,MAA+C,iBAAb0a,EAAI1a,MAAqB0a,EAAI1a,KAAKsO,SAAS,KAAQoM,EAAI1a,KAAOqD,IAAMwuB,SAASnX,EAAI1a,SACxHm1B,GACTza,EAAItX,IAAI,CACNpD,KAAM6yB,OAKZhuB,GAAYY,WAAW+N,UAAUuE,YAEjCjN,OAAO2mB,KAAK9W,GAAWzC,SAAQ,SAACkd,GAC3Bza,EAAUya,KAAQD,IACnBxa,EAAUya,GAAMvC,MAGpBhuB,GAAYC,SAAS,CAAEgP,UAAW6G,KAC3B,IAKT0a,QAAS,WACPxqB,SAAOC,OAAOC,UAAUC,aAAc,EACtCH,SAAOC,OAAOC,UAAUE,YAAa,EACrCpG,GAAYY,WAAW8N,aAAa0C,sBACpC,IAAMgB,EAAY,IAAIpM,SAAOyqB,KAAK,WAAY,CAC5CC,WAAY,EACZv1B,KAAM,UACN2W,WAAY,iBACZC,WAAY,SACZQ,IAAKvS,GAAYY,WAAW8N,aAAa5T,OAAS,EAAI,GACtD0X,KAAMxS,GAAYY,WAAW8N,aAAa7T,MAAQ,EAAI,IACtDO,OAAQ,UACRW,YAAa,EACb40B,WAAY,SAEZC,SAAU,EACV5e,SAAU,GACVtK,KAAM,OACNuK,YAAa,EACb4e,iBAAiB,IAGnBze,EAAK7T,IAAI,CAEP0Q,UAHiB,CAAE6hB,OAAQ1e,EAAKjX,QAKlCiX,EAAKvW,GAAKmE,GAAYY,WAAW6P,OACjCzQ,GAAYY,WAAW8N,aAAauH,aAAa7D,GACjDpS,GAAYY,WAAW8N,aAAa2D,IAAID,GACxCpS,GAAYY,WAAW8N,aAAa+D,gBAAgBL,GACpDpS,GAAYC,SAAS,CAAE6O,iBAAkB,SAEzC9O,GAAYY,WAAWiS,qBAAqBT,GAC5CA,EAAK2e,sBAAsB/wB,GAAYY,WAAW0O,cAClDtP,GAAYY,WAAW4P,cACvBxQ,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYY,WAAWqP,oBAAoBmC,GAE3CpS,GAAYY,WAAWuP,iBAEvBiC,EAAKnZ,KAAO+G,GAAYY,WAAWyO,WAEnC2hB,aAAc,SAACvtB,GACf,OAAO,IAAIwU,SAAQ,SAACgZ,EAAU9Y,GAC5B,GAAI1U,EAAM,CACR,IAAM+rB,EAAS,IAAIC,WACnBD,EAAOE,OAAMlrB,EAAAC,IAAAC,MAAG,SAAAwsB,IAAA,IAAAC,EAAA,OAAA1sB,IAAAK,eAAAssB,GAAA,cAAAA,EAAApsB,KAAAosB,EAAAnsB,MAAA,OACc,OAAtBksB,EAAS3B,EAAOlZ,OAAM8a,EAAApsB,OAAAosB,EAAAnsB,OAETzG,IAAM6yB,mBAAmBF,GAAO,OACjDF,EADQG,EAAAjsB,MACKisB,EAAAnsB,QAAA,MAAA,OAAAmsB,EAAApsB,OAAAosB,EAAA9rB,GAAA8rB,WAEbjZ,EAAMiZ,EAAA9rB,IAAQ,QAAA,UAAA,OAAA8rB,EAAA5rB,UAAA0rB,oBAGlB1B,EAAO8B,kBAAkB7tB,QAEzB0U,EAAO,IAAI7c,MAAM,0BAyBvB+1B,oBAAkBnF,EAAA1nB,EAAAC,IAAAC,MAAE,SAAA6sB,EAAOlD,GAAI,IAAAmD,EAAAlgB,EAAA9D,EAAAikB,EAAAC,EAAA/C,EAAA,OAAAlqB,IAAAK,eAAA6sB,GAAA,cAAAA,EAAA3sB,KAAA2sB,EAAA1sB,MAAA,OAAA,OAAA0sB,EAAA1sB,OACX2sB,cAAqBvD,GAAMwD,QAAO,OACL,GADzCL,EAAGG,EAAAxsB,KACHmM,EAAStZ,SAASI,cAAc,YACnCo5B,EAAIM,UAAY,IAACH,EAAA1sB,QAAA,MAAA,OAAA0sB,EAAA1sB,OACCusB,EAAIO,QAAQ,GAAE,OAIH,OAHxBN,GADAjkB,EAAImkB,EAAAxsB,MACY6sB,YAAY,CAAEzH,MAAO,IACrCmH,EAAUpgB,EAAOqW,WAAW,MAClCrW,EAAOxW,OAAS22B,EAAS32B,OACzBwW,EAAOzW,MAAQ42B,EAAS52B,MAAM82B,EAAA1sB,QACxBuI,EAAKykB,OAAO,CAAEC,cAAeR,EAASD,SAAUA,IAAYI,QAAO,QAExC,OAA7BlD,EAAWrd,EAAOf,YAAWohB,EAAAtsB,gBAC5BspB,GAAQ,QAAA,UAAA,OAAAgD,EAAAnsB,UAAA+rB,OAChB,SAAAY,GAAA,OAAAjG,EAAAxmB,WAAAC,eC1cQ3F,GAAckD,SAEzBkvB,yBAd2D,WAC3D,OAAA71B,KACK81B,GAAW3sB,aAAAC,WACXzB,GAAWwB,aAAAC,WACXiB,GAAelB,aAAAC,WACfyG,GAAS1G,aAAAC,WACT2H,GAAY5H,aAAAC,WACZsmB,GAAcvmB,aAAAC,WACdkI,GAAWnI,aAAAC,gBAcjBwE,OAAemoB,UAAYtyB,GC1CrB,mQCDA,ICQMuyB,GAAU,SAAHx5B,OAClBC,EAAKD,EAALC,MACAw5B,EAAUz5B,EAAVy5B,WAAUC,EAAA15B,EACVG,UAAAA,WAASu5B,EAAG,GAAEA,EACdC,EAAQ35B,EAAR25B,SAEMp5B,EAAUC,kBAAgB,CAAEC,UAAWg5B,EAAa,SAAW,QACrE,OACE35B,gCACEA,gBAACY,oCACKH,GACJJ,UAAcA,yJACFF,IAEX05B,GAKD75B,gBAACe,2BACKN,GAEJJ,uMACEs5B,EACI,gIACA,sTAENr6B,MAAO,CAAE0B,OAAQ,KAEhBb,EAAO,OC7BZ25B,GAAgB,WACpB,IAAAC,EAAkC5yB,IAChC,SAACM,GAAK,MAAK,CAACA,EAAMoO,aAAcpO,EAAMyO,mBACtC8jB,WAFKvhB,EAAMshB,KAAE7jB,EAAe6jB,KAuCxBlmB,EAAa,SAACnS,GAMlB,IAAe,KAHXkX,EAAQzR,GACTY,WACAV,eAAe4yB,WAAU,SAACthB,GAAQ,OAAKA,EAAI3V,KAAOtB,EAAMsB,QACvCtB,GAASA,EAAMmX,UAAYnX,EAAMmX,SAASlQ,OAAS,EACrE,IAAIiQ,EAAQzR,GACTY,WAEAV,eAAe+H,QAAQ1N,EAAMmX,SAAS,IAEvCD,GAAS,GACXzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAO,GAEtDzR,GAAYC,SAAS,CACnBC,kBAAcuN,OAAMzN,GAAYY,WAAWV,mBAGzC8yB,EAAgB,CACpB,CACE/5B,KAAMJ,gBAACyD,QACP22B,QAzDqB,WACvB3hB,EAAOF,sBACP,IAAM8hB,EAAM,IAAIltB,SAAOmtB,gBACrB7hB,EAAO8B,aAAayF,QAAO,SAACrH,GAAG,MAAkB,SAAbA,EAAInZ,QACxC,CACEiZ,OAAQA,IAGZA,EAAOmB,gBAAgBygB,GACvB5hB,EAAO8hB,mBACPpzB,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYC,SAAS,CAAE+O,aAAa,IACpChP,GAAYC,SAAS,CAAE6O,iBAAkB,cAEzC9O,GAAYC,SAAS,CAAEgP,UADJ,MA6CjBpT,GAAI,gBACJ7C,MAAO,aACPq6B,UAAU,EACV3f,SAAS,GAEX,CACEza,KAAMJ,gBAAC8D,QACPs2B,QAAS,WACPjzB,GAAYY,WAAWkQ,mBAEzBjV,GAAI,mBACJ7C,MAAO,YACPq6B,UAAU,EACV3f,SAAS,GAEX,CACEza,KAAMJ,gBAACy6B,iBACPL,QAAS,WACPjzB,GAAYC,SAAS,CAAE6O,iBAAkB,WAE3CjT,GAAI,eACJ7C,MAAO,SACPq6B,UAAU,EACV3f,SAAS,GAEX,CACEza,KAAMJ,gBAACqE,SACP+1B,QArEkB,WAChBlkB,IACEA,EAAgB9V,MAClBqY,EAAOgC,OAAOvE,GACdrC,EAAWqC,IACFA,EAAgB2C,UACzB3C,EAAgB2C,SAAS3G,KAAI,SAACyG,GAC5BF,EAAOgC,OAAO9B,GACd9E,EAAW8E,MAIfxR,GAAYY,WAAWgS,mBAAkB,GACzCtB,EAAO8hB,mBACPpzB,GAAYC,SAAS,CAAE+O,aAAa,IACpCsC,EAAOF,wBAuDPvV,GAAI,gBACJ7C,MAAO,SACPq6B,UAAU,EACV3f,SAAS,GAEX,CACEza,KAAMJ,gBAAC06B,eACPN,QAAS,WACPjzB,GAAYY,WAAWoS,QAEzBnX,GAAI,cACJ7C,MAAO,OACPq6B,UAAU,EACV3f,SAAS,GAEX,CACEza,KAAMJ,gBAAC26B,eACPP,QAAS,WACPjzB,GAAYY,WAAWoT,QAEzBnY,GAAI,cACJ7C,MAAO,OACPq6B,UAAU,EACV3f,SAAS,IAIb,OACE7a,gCACEA,uBACEK,UAAU,6CACVf,MAAO,CACLs7B,eAAgB,aAGlB56B,uBAAKK,kBACF85B,EAAcjoB,KACb,SAACnB,GAAI,aACHA,SAAAA,EAAM8J,UACJ7a,uBACEkG,IAAK6K,EAAK/N,GACV3C,WACE0Q,EAAKypB,SACD,gBACGK,qNAETT,QAASrpB,EAAKqpB,SAEdp6B,gBAAC05B,IAAQv5B,MAAO4Q,EAAK5Q,MAAOw5B,YAAY,GACtC35B,4BACEA,gBAACiB,GACCd,MAAM,GACNC,KAAM2Q,EAAK3Q,KACXC,WACE0Q,EAAKypB,SACD,cACA,gDAENp5B,KAAK,uBCtJvB05B,GAAe,WAsCnB,IAAMC,EAAe5zB,GAAYY,WAAWmO,gBAGtC8kB,EAAY,SAAC91B,GACjB,IAAM2U,EAAQkhB,EAAajhB,kBAC3B,GAAoB,SAAhB5U,EAAE4xB,OAAO9zB,GAAe,CAE1B,GAAI6W,EAAM5X,OAAS4X,EAAMH,KAAOqhB,EAAatiB,OAAOxW,OAAS,GAAI,OACjEkF,GAAYY,WAAWuT,SAASyf,GAChC5zB,GAAYY,WAAWgS,mBAAkB,QACpC,GAAoB,OAAhB7U,EAAE4xB,OAAO9zB,GAAa,CAC/B,GAAI+3B,EAAaE,QAAQtkB,GAAG9S,EAAI,GAAI,OACpCsD,GAAYY,WAAWwT,OAAOwf,GAC9B5zB,GAAYY,WAAWgS,mBAAkB,QACpC,GAAoB,UAAhB7U,EAAE4xB,OAAO9zB,GAAgB,CAElC,GAAI6W,EAAM7X,MAAQ6X,EAAMF,MAAQohB,EAAatiB,OAAOzW,MAAQ,GAAI,OAChEmF,GAAYY,WAAWyT,UAAUuf,GACjC5zB,GAAYY,WAAWgS,mBAAkB,QACpC,GAAoB,SAAhB7U,EAAE4xB,OAAO9zB,GAAe,CACjC,GAAI+3B,EAAaE,QAAQvkB,GAAG9S,EAAI,GAAI,OACpCuD,GAAYY,WAAW0T,SAASsf,GAChC5zB,GAAYY,WAAWgS,mBAAkB,KAI7C,OACE/Z,gCACEA,uBACEK,UAAU,+CACVf,MAAO,CACLs7B,eAAgB,gBAGlB56B,uBACEK,UAAU,kDACVf,MAAO,CAAE47B,UAAW,SAAUC,aAAc,qBAK9Cn7B,0BAAQo6B,QAASY,EAAWh4B,GAAG,QAC7BhD,uBAAKK,UAAU,oCACbL,uBAAKK,UAAU,uBACbL,uBACEwC,UAAU,cACVF,KAAK,UACLL,OAAO,OACPD,MAAM,OACNo5B,QAAQ,MACRp4B,GAAG,UACHjB,MAAM,6BACNG,QAAQ,eAERlC,yBACEA,yBACEA,yBACEA,wBAAMoC,EAAE,sEACRpC,wBAAMoC,EAAE,qQAMlBpC,wBAAMK,UAAU,6GAMpBL,0BAAQo6B,QAASY,EAAWh4B,GAAG,MAC7BhD,uBAAKK,UAAU,kCACbL,uBAAKK,UAAU,qBACbL,uBACEsC,KAAK,UACLL,OAAO,OACPD,MAAM,OACNo5B,QAAQ,MACRp4B,GAAG,UACHjB,MAAM,6BACNG,QAAQ,eAERlC,yBACEA,yBACEA,yBACEA,wBAAMoC,EAAE,sEACRpC,wBAAMoC,EAAE,qQAMlBpC,wBAAMK,UAAU,4GAMpBL,0BAAQo6B,QAASY,EAAWh4B,GAAG,SAC7BhD,uBAAKK,UAAU,qCACbL,uBAAKK,UAAU,wBACbL,uBACEwC,UAAU,aACVF,KAAK,UACLL,OAAO,OACPD,MAAM,OACNo5B,QAAQ,MACRp4B,GAAG,UACHjB,MAAM,6BACNG,QAAQ,eAERlC,yBACEA,yBACEA,yBACEA,wBAAMoC,EAAE,sEACRpC,wBAAMoC,EAAE,qQAMlBpC,wBAAMK,UAAU,8GAMpBL,0BAAQo6B,QAASY,EAAWh4B,GAAG,QAC7BhD,uBAAKK,UAAU,oCACbL,uBAAKK,UAAU,uBACbL,uBACEwC,UAAU,cACVF,KAAK,UACLL,OAAO,OACPD,MAAM,OACNo5B,QAAQ,MACRp4B,GAAG,UACHjB,MAAM,6BACNG,QAAQ,eAERlC,yBACEA,yBACEA,yBACEA,wBAAMoC,EAAE,sEACRpC,wBAAMoC,EAAE,qQAMlBpC,wBAAMK,UAAU,kHCpLfg7B,GAAc,WACzB,IAAAtB,EAA4B5yB,IAC1B,SAACM,GAAK,MAAK,CAACA,EAAMyO,gBAAiBzO,EAAMoO,gBACzCmkB,WAFK7hB,EAAS4hB,KAAEthB,EAAMshB,KAgIlBuB,EAAO,CACX,CACEt4B,GAAI,EACJ6L,KAAM,gBACN0sB,QAVS,WACXp0B,GAAYY,WAAWkQ,kBACvB9Q,GAAYC,SAAS,CACnB+P,iBAAiB,KAQjB/W,KAAMJ,gBAAC8D,SAQT,CACEd,GAAI,EACJ6L,KAAM,iBACN0sB,QA/FiB,WACnB9iB,EAAO+iB,aAAarjB,GAEpB,IAAIS,EAAQzR,GACTY,WACAV,eAAe4yB,WAAU,SAACthB,GAAQ,OAAKA,EAAI3V,KAAOmV,EAAUnV,MAC3D4V,GAAS,IACG,IAAVA,IACFzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAO,GAEpDzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAQ,EAAG,EAAGT,IAE7DhR,GAAYC,SAAS,CACnBC,kBAAcuN,OAAMzN,GAAYY,WAAWV,mBAG/CF,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYC,SAAS,CACnB+P,iBAAiB,KA8EjB/W,KAAMJ,gBAACiE,SAET,CACEjB,GAAI,EACJ6L,KAAM,eACN0sB,QA5HkB,WACpB9iB,EAAO4C,cAAclD,GAIrB,IAAIS,EAAQzR,GACTY,WACAV,eAAe4yB,WAAU,SAACthB,GAAQ,OAAKA,EAAI3V,KAAOmV,EAAUnV,MAC3D4V,GAAS,IACXzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAO,GAEpDzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAQ,EAAG,EAAGT,IAE7DhR,GAAYC,SAAS,CACnBC,kBAAcuN,OAAMzN,GAAYY,WAAWV,kBAE7CF,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYC,SAAS,CACnB+P,iBAAiB,IAEnBsB,EAAOwC,WAAW9T,GAAYY,WAAWgT,cACzCtC,EAAOwC,WAAW9T,GAAYY,WAAW2S,iBAwGvCta,KAAMJ,gBAAC+D,SAET,CACEf,GAAI,EACJ6L,KAAM,sBACN0sB,QAjEiB,WACnB9iB,EAAOgjB,aAAatjB,GAEpB,IAAIS,EAAQzR,GACTY,WACAV,eAAe4yB,WAAU,SAACthB,GAAQ,OAAKA,EAAI3V,KAAOmV,EAAUnV,MAC3D4V,GAAS,IACXzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAO,GAEpDzR,GAAYY,WAAWV,eAAegQ,QAAQc,GAE9ChR,GAAYC,SAAS,CACnBC,kBAAcuN,OAAMzN,GAAYY,WAAWV,mBAG/CF,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYC,SAAS,CACnB+P,iBAAiB,KAiDjB/W,KAAMJ,gBAACkE,UAET,CACElB,GAAI,EACJ6L,KAAM,qBACN0sB,QA5Fe,WACjB9iB,EAAOwC,WAAW9C,GAElB,IAAIS,EAAQzR,GACTY,WACAV,eAAe4yB,WAAU,SAACthB,GAAQ,OAAKA,EAAI3V,KAAOmV,EAAUnV,MAC3D4V,GAAS,IACXzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAO,GAEpDzR,GAAYY,WAAWV,eAAe8U,KAAKhE,IAE7ChR,GAAYC,SAAS,CACnBC,kBAAcuN,OAAMzN,GAAYY,WAAWV,kBAE7CF,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYC,SAAS,CACnB+P,iBAAiB,IAEnBsB,EAAOwC,WAAW9T,GAAYY,WAAWgT,cACzCtC,EAAOwC,WAAW9T,GAAYY,WAAW2S,iBA0EvCta,KAAMJ,gBAACmE,UAET,CACEnB,GAAI,EACJ6L,KAAM,kBACN0sB,QAnKU,WACZpjB,EAAUzS,IAAI,CACZg2B,OAAQvjB,EAAUujB,QAEpBv0B,GAAYY,WAAWgS,mBAAkB,GACzCtB,EAAO4B,YACPlT,GAAYC,SAAS,CACnB+P,iBAAiB,KA6JjB/W,KAAMJ,gBAACqD,SAET,CACEL,GAAI,EACJ6L,KAAM,gBACN0sB,QA/JU,WACZpjB,EAAUzS,IAAI,CACZ0L,OAAQ+G,EAAU/G,QAEpBjK,GAAYY,WAAWgS,mBAAkB,GAEzCtB,EAAO4B,YACPlT,GAAYC,SAAS,CACnB+P,iBAAiB,KAwJjB/W,KAAMJ,gBAACwD,SAET,CACER,GAAI,EACJ6L,KAAM,iBACN0sB,QArEiB,WACnBpjB,EAAUzS,IAAI,CACZiU,KAAMlB,EAAOzW,MAAQ,EACrB25B,QAAS,WAEXx0B,GAAYY,WAAWgS,mBAAkB,GACzCtB,EAAO4B,YACPlT,GAAYC,SAAS,CACnB+P,iBAAiB,KA8DjB/W,KAAMJ,gBAACsE,WAGX,OACEtE,0BACGs7B,EAAKppB,KAAI,SAACnB,EAAM6H,GACf,OACE5Y,sBACEK,UAAU,wGACV+5B,QAASrpB,EAAKwqB,QACdr1B,IAAK0S,GAEL5Y,4BACEA,gBAACiB,GACCd,MAAM,GACNC,KAAM2Q,EAAK3Q,KACXC,UAAU,6CACVe,KAAK,cAGTpB,wBAAMK,UAAU,0CACb0Q,EAAKlC,YChNd4J,GAAS,WACb,IAAAshB,EAAkD5yB,IAChD,SAACM,GAAK,MAAK,CACTA,EAAM2U,uBACN3U,EAAM0P,gBACN1P,EAAM8N,YAERykB,WANK5d,EAAsB2d,KAAE5iB,EAAe4iB,KAQxC6B,EAAYC,SAAiC,MAC7CC,EAAe,WACnB,IAAMrjB,EAAStR,GAAYY,WAAW8N,aACtC,GAAI1W,SAAS48B,eAAe,aAAc,CACxC,IAAMC,EAAuB78B,SAAS48B,eAAe,aAC/CE,EAAiBD,EAAqBE,YACtCxK,EAAQuK,EAAiBxjB,EAAO0jB,WAChCC,EAAO3jB,EAAO4jB,UAAY3K,EAChCjZ,EAAO6jB,SAASL,GAEhBxjB,EAAO8jB,UAAUjF,SAAS0E,EAAqBQ,eAC/C9vB,QAAQiR,IAAI,UAAQlF,EAAOgkB,YAAahkB,EAAOgkB,aAC/ChkB,EAAOikB,qBAAqB,CAACN,EAAM,EAAG,EAAGA,EAAM,EAAG,IAClD3jB,EAAO4B,cAoBX,OAjBAra,EAAM28B,WAAU,WACdxvB,SAAOC,OAAOC,UAAUC,aAAc,EACtCH,SAAOC,OAAOC,UAAUE,YAAa,EACrC,IAAMqvB,EC9BgB,WACxB,IAAIC,EAAQ,EACRC,EAAO,EACPC,EAAU,EACVC,EAAU,EACVC,EAAS,EACTC,EAAU,EAwHRlB,EAAuB78B,SAAS48B,eAAe,aAE/Ca,EAAO,IAAIzvB,SAAOgwB,OAAO,SAAU,CACvCC,iBAAiB,EACjBC,wBAAwB,EAExBC,iBAAiB,EAIjBt7B,MAAOg6B,EAAqBE,YAC5Bj6B,OAAQ+5B,EAAqBQ,eAG/B,SAASe,EAAiB5kB,GACxB,IAAMkB,EAAQlB,EAAImB,kBACd0jB,EAAgBZ,EAAK56B,MAAQ,EAE7By7B,EAAa5jB,EAAMF,KAAOE,EAAM7X,MAAQ,EAG5C,OACEwG,KAAK4S,IAHUvB,EAAMH,IAAMG,EAAM5X,OAAS,EAFxB26B,EAAK36B,OAAS,GAGlB,GAGduG,KAAK4S,IAAIqiB,EAAaD,GAHR,EAOlB,SAASE,EAAyB/kB,GAChC,IAAMkB,EAAQlB,EAAImB,kBACd6jB,EAAgBf,EAAKH,YAAc,EAGvC,OAAOj0B,KAAK4S,IAFWvB,EAAMH,IAAMG,EAAM5X,OAAS,EAEf07B,GADnB,EAIlB,SAASC,EAA2BjlB,GAClC,IAAMkB,EAAQlB,EAAImB,kBAIlB,OAAOtR,KAAK4S,IAFWvB,EAAMF,KAAOE,EAAM7X,MAAQ,EAD9B46B,EAAK56B,MAAQ,GAEjB,EAGlB,IAAM0Y,EAAiB,IAAIvN,SAAOwN,KAChC,CAAC,EAAGiiB,EAAK36B,OAAS,EAAG26B,EAAK36B,OAAQ26B,EAAK36B,OAAS,GAChD,CACEM,OAAQ,MACRqY,OAAQ,GACRC,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIJub,EAAe,IAAI5N,SAAOwN,KAC9B,CAACiiB,EAAK56B,MAAQ,EAAG,EAAG46B,EAAK56B,MAAQ,EAAG46B,EAAK56B,OACzC,CACEO,OAAQ,MACRsY,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIVkb,EAAeM,UACf4hB,EAAKpjB,IAAIkB,GACTkiB,EAAKpjB,IAAIuB,GACT5T,GAAYC,SAAS,CAAEsT,eAAgBA,IACvCvT,GAAYC,SAAS,CAAE2T,aAAcA,IAGrC,IAAI8iB,EAAY1+B,SAASI,cAAc,OACvCs+B,EAAUC,IACR,+EACF,IAAIC,EAAY5+B,SAASI,cAAc,OACvCw+B,EAAUD,IACR,+EACF,IAAIE,EAAa7+B,SAASI,cAAc,OAaxC,SAAS0+B,EAAW79B,GAClB,OAAO,SAAoB2uB,EAAKpV,EAAMD,EAAKwkB,GACzC,IAAI98B,EAAO+gB,KAAKgc,WAChBpP,EAAIqP,OACJrP,EAAIsP,UAAU1kB,EAAMD,GACpBqV,EAAIuP,OAAOnxB,SAAOuP,KAAK6hB,iBAAiBL,EAAaM,QACrDzP,EAAI0P,UAAUr+B,GAAOgB,EAAO,GAAIA,EAAO,EAAGA,EAAMA,GAChD2tB,EAAI2P,WAnBRV,EAAWF,IACT,iFACF3wB,SAAOC,OAAOC,UAAUsxB,eAAgB,EACxCxxB,SAAOC,OAAOC,UAAUuxB,oBAAqB,EAC7CzxB,SAAOC,OAAOC,UAAUwxB,YAAc,UACtC1xB,SAAOC,OAAOC,UAAUyxB,kBAAoB,UAC5C3xB,SAAOC,OAAOC,UAAU0xB,YAAc,UACtC5xB,SAAOC,OAAOC,UAAU8wB,WAAa,GAErChxB,SAAOC,OAAOC,UAAU2xB,YAAc,SACtC7xB,SAAOC,OAAOC,UAAU4xB,gBAAkB,CAAC,EAAG,GAa9C9xB,SAAOC,OAAOC,UAAU6xB,SAASC,cAAgB,IAAIhyB,SAAOiyB,QAAQ,CAClEx7B,EAAG,IACHC,GAAI,IACJw7B,SAAU,GACVC,QAAS,GACTC,YAAa,UAEbC,eA4BF,SAAsBC,EAAWj9B,GAC/B,IACMiW,EADejW,EAAUs0B,OACHre,OAgBtBvC,EAAkB/O,GAAYY,WAAWmO,gBAC3CA,IACEA,EAAgB9V,MAClBqY,EAAOgC,OAAOvE,GACdrC,EAAWqC,IACFA,EAAgB2C,UACzB3C,EAAgB2C,SAAS3G,KAAI,SAACyG,GAC5BF,EAAOgC,OAAO9B,GACd9E,EAAW8E,MAIfxR,GAAYY,WAAWgS,mBAAkB,GACzCtB,EAAO8hB,mBACPpzB,GAAYC,SAAS,CAAE+O,aAAa,IACpCsC,EAAOF,wBA5DT6gB,OAAQ6E,EAAWJ,GACnBM,WAAY,KAEdhxB,SAAOC,OAAOC,UAAU6xB,SAASQ,eAAiB,IAAIvyB,SAAOiyB,QAAQ,CACnEx7B,GAAI,IACJC,GAAI,IACJw7B,SAAU,GACVC,SAAU,GACVC,YAAa,UAEbC,eAAgB,SAAUt6B,GACxBiC,GAAYC,SAAS,CACnB+P,iBAAiB,IAGnB,IAAMsK,EAAOmb,EAAK+C,aAAaC,wBAK/Bz4B,GAAYC,SAAS,CAAEgV,uBAAwB,CAAExY,EAJvCsB,EAAE26B,QAAUpe,EAAK9H,KAI4B9V,EAH7CqB,EAAE46B,QAAUre,EAAK/H,QAM7B0f,OAAQ6E,EAAWD,GACnBG,WAAY,KAwCd,IAAMtqB,EAAa,SAACnS,GAKlB,IAAe,KAHXkX,EAAQzR,GACTY,WACAV,eAAe4yB,WAAU,SAACthB,GAAQ,OAAKA,EAAI3V,KAAOtB,EAAMsB,QACvCtB,GAASA,EAAMmX,UAAYnX,EAAMmX,SAASlQ,OAAS,EACrE,IAAIiQ,EAAQzR,GACTY,WAGAV,eAAe+H,QAAQ1N,EAAMmX,SAAS,IAEvCD,GAAS,IACXzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAO,GACpDzR,GAAYC,SAAS,CACnBC,kBAAcuN,OAAMzN,GAAYY,WAAWV,oBAKjD8F,SAAOC,OAAOC,UAAU6xB,SAAShoB,IAAM,IAAI/J,SAAOiyB,QAAQ,CACxDx7B,EAAG,EACHC,GAAI,GACJw7B,SAAU,GACVE,YAAa,YAEbQ,oBAAe5yB,gBAAAA,SAAQ6yB,cAAcC,qBACrCC,WAAY,SAKZ9G,OAAQ,SAAoBrK,EAAKpV,EAAMD,EAAKwkB,GAC1C,IAAI98B,EAAO+gB,KAAKgc,WAChBpP,EAAIqP,OACJrP,EAAIsP,UAAU1kB,EAAMD,GACpBqV,EAAIuP,OAAOnxB,SAAOuP,KAAK6hB,iBAAiBL,EAAaM,QACrDzP,EAAI0P,UAAUV,GAAY38B,EAAO,GAAIA,EAAO,EAAGA,EAAMA,GACrD2tB,EAAI2P,WAGNP,WAAY,GACZgC,gBAAgB,IAElB,IAAMC,EAAe,iBAEnB,SAAKxD,GAAAA,EAAMriB,aAAX,CAWA,IAAMhF,EAAW,SACjBqnB,UAAIyD,EAAJzD,EACIriB,eADJ8lB,EAEInuB,KAAI,SAACnB,GAAI,OAAKA,EAAgB,WAAK3D,OAAO+e,OAAOpb,EAAgB,cAClEuvB,OACAtgB,OAAOugB,SACP/lB,SAAQ,SAAC2a,GACH5f,EAAS3E,SAASukB,IACrB5f,EAAS4G,KAAKgZ,MAIpBhuB,GAAYC,SAAS,CAAEmO,SAAUA,MAuJnC,OArJAqnB,EAAK4D,GAAG,eAAgBJ,GACxBxD,EAAK4D,GAAG,qBA1WiB,SAACt7B,iBACpBA,UAACu7B,EAADv7B,EAAG6B,kBAAQ25B,EAAXD,EAAc,KAAdC,EAAkBtqB,WACpBjP,GAAYC,SAAS,CAAEgP,UAAWlR,EAAE6B,SAAS,GAAGqP,YAElDjP,GAAYC,SAAS,CACnB6O,iBAAkB2mB,EAAKplB,kBAAkB7R,IAAI,UAE/CwB,GAAYC,SAAS,CAAE8O,gBAAiB0mB,EAAKplB,oBAE7C4oB,OAkWFxD,EAAK4D,GAAG,qBAhWmB,WACzBr5B,GAAYC,SAAS,CAAE8O,gBAAiB,OACxC/O,GAAYC,SAAS,CAAE6O,iBAAkB,SACzC9O,GAAYC,SAAS,CAAE+P,iBAAiB,IACxCipB,OA6VFxD,EAAK4D,GAAG,qBA3VgB,SAACt7B,iBAEnBA,UAACy7B,EAADz7B,EAAG6B,kBAAQ65B,EAAXD,EAAc,KAAdC,EAAkBxqB,WACpBjP,GAAYC,SAAS,CAAEgP,UAAWlR,EAAE6B,SAAS,GAAGqP,YAElDjP,GAAYC,SAAS,CACnB6O,iBAAkB2mB,EAAKplB,kBAAkB7R,IAAI,UAE/CwB,GAAYC,SAAS,CAAE8O,gBAAiBhR,EAAE6B,SAAS,KACnDI,GAAYC,SAAS,CAAE2O,SAAU7Q,EAAE6B,SAAS,GAAGwS,OAC/CpS,GAAYC,SAAS,CAAE+P,iBAAiB,IACxCipB,OAiVFxD,EAAK4D,GAAG,iBA/Ue,SAACt7B,GACtBiC,GAAYY,WAAWgS,mBAAkB,GACzC,IAAMpB,EAAMzT,EAAE4xB,OACd,GAAI+J,MAAM37B,EAAE47B,QAAQl9B,IAAMi9B,MAAM37B,EAAE47B,QAAQj9B,GACxC8U,EAAIjT,IAAI,CACNgU,IAAKvS,GAAYY,WAAWia,aAAatI,IACzCC,KAAMxS,GAAYY,WAAWia,aAAarI,WAH9C,CAcAhB,EAAIc,aACAd,EAAImB,kBAAkBJ,IAAM,IAAMf,EAAImB,kBAAkBH,KAAO,MACjEhB,EAAIe,IAAMlR,KAAKu4B,IAAIpoB,EAAIe,IAAKf,EAAIe,IAAMf,EAAImB,kBAAkBJ,IAAM,IAClEf,EAAIgB,KAAOnR,KAAKu4B,IAAIpoB,EAAIgB,KAAMhB,EAAIgB,KAAOhB,EAAImB,kBAAkBH,KAAO,IACtEhB,EAAIc,cAGJd,EAAImB,kBAAkBJ,IAAMf,EAAImB,kBAAkB7X,OAAS,GACzD0W,EAAIF,OAAOxW,QACb0W,EAAImB,kBAAkBH,KAAOhB,EAAImB,kBAAkB9X,MAAQ,GACzD2W,EAAIF,OAAOzW,SAEb2W,EAAIe,IAAMlR,KAAKw4B,IACbroB,EAAIe,IACJf,EAAIF,OAAOxW,OACT0W,EAAImB,kBAAkB7X,OACtB0W,EAAIe,IACJf,EAAImB,kBAAkBJ,IACtB,IAEJf,EAAIgB,KAAOnR,KAAKw4B,IACdroB,EAAIgB,KACJhB,EAAIF,OAAOzW,MACT2W,EAAImB,kBAAkB9X,MACtB2W,EAAIgB,KACJhB,EAAImB,kBAAkBH,KACtB,IAEJhB,EAAIc,aAGN,IAAMI,EAAQlB,EAAImB,kBAEhBD,EAAM7X,MAAQ6X,EAAMF,KAAO,IAAMhB,EAAIF,OAAOzW,OAC5C6X,EAAM5X,OAAS4X,EAAMH,IAAM,IAAMf,EAAIF,OAAOxW,QAC5C4X,EAAMF,KAAO,IACbE,EAAMH,IAAM,KASZmjB,EAAQlkB,EAAIgB,KACZmjB,EAAOnkB,EAAIe,IACXqjB,EAAUpkB,EAAIiC,OACdoiB,EAAUrkB,EAAIsoB,OACdhE,EAAStkB,EAAI3W,MACbk7B,EAAUvkB,EAAI1W,QAGZs7B,EAAiBr4B,EAAE4xB,QACrB3vB,GAAYY,WAAWgT,aAAarV,IAAI,CAAEmV,SAAS,IAEnD1T,GAAYY,WAAWgT,aAAarV,IAAI,CAAEmV,SAAS,IAEjD+iB,EAA2B14B,EAAE4xB,QAC/B3vB,GAAYY,WAAWgT,aAAarV,IAAI,CAAEmV,SAAS,IAEnD1T,GAAYY,WAAWgT,aAAarV,IAAI,CAAEmV,SAAS,IAEjD6iB,EAAyBx4B,EAAE4xB,QAC7B3vB,GAAYY,WAAW2S,eAAehV,IAAI,CAAEmV,SAAS,IAErD1T,GAAYY,WAAW2S,eAAehV,IAAI,CAAEmV,SAAS,IAEvD1T,GAAYY,WAAWka,gBAAgB,CAAEvI,IAAKf,EAAIe,IAAKC,KAAMhB,EAAIgB,WA2PnEijB,EAAK4D,GAAG,mBAAmB,SAAUt7B,GACnCA,EAAE4xB,OAAOoK,cAAe,EACxB/5B,GAAYY,WAAWgS,mBAAkB,GACrCwjB,EAAiBr4B,EAAE4xB,QACrB3vB,GAAYY,WAAWgT,aAAarV,IAAI,CAAEmV,SAAS,IAEnD1T,GAAYY,WAAWgT,aAAarV,IAAI,CAAEmV,SAAS,IAEjD+iB,EAA2B14B,EAAE4xB,QAC/B3vB,GAAYY,WAAW2S,eAAehV,IAAI,CAAEmV,SAAS,IAErD1T,GAAYY,WAAW2S,eAAehV,IAAI,CAAEmV,SAAS,IAEnD6iB,EAAyBx4B,EAAE4xB,QAC7B3vB,GAAYY,WAAW2S,eAAehV,IAAI,CAAEmV,SAAS,IAErD1T,GAAYY,WAAW2S,eAAehV,IAAI,CAAEmV,SAAS,OAIxD+hB,EAAK4D,GAAG,kBAAiB,SAACt7B,GACvB,IAAMyT,EAAMzT,EAAE4xB,OAEf,GADAne,EAAIc,YACAonB,MAAM37B,EAAE47B,QAAQl9B,IAAMi9B,MAAM37B,EAAE47B,QAAQj9B,GACxC8U,EAAIjT,IAAI,CACNgU,IAAKvS,GAAYY,WAAWia,aAAatI,IACzCC,KAAMxS,GAAYY,WAAWia,aAAarI,WAH9C,CAOC,IAAME,EAAQlB,EAAImB,kBACZD,EAAM7X,MAAM6X,EAAMF,KAAO,IAAMhB,EAAIF,OAAOzW,OAAY6X,EAAM5X,OAAO4X,EAAMH,IAAM,IAAKf,EAAIF,OAAOxW,QAAa4X,EAAMF,KAAK,IAAQE,EAAMH,IAAI,IAC7If,EAAIgB,KAAOkjB,EACXlkB,EAAIe,IAAMojB,EACVnkB,EAAIiC,OAASmiB,EACbpkB,EAAIsoB,OAASjE,EACbrkB,EAAI3W,MAAQi7B,EACZtkB,EAAI1W,OAASi7B,IAGbL,EAAOlkB,EAAIgB,KACXmjB,EAAMnkB,EAAIe,IACVqjB,EAAUpkB,EAAIiC,OACdoiB,EAAQrkB,EAAIsoB,OACZhE,EAAOtkB,EAAI3W,MACXk7B,EAAQvkB,EAAI1W,QAEfkF,GAAYY,WAAWka,gBAAgB,CAAEvI,IAAKf,EAAIe,IAAKC,KAAMhB,EAAIgB,WAEpEijB,EAAK4D,GAAG,mBAAmB,SAASt7B,GAChC,IAAMyT,EAAMzT,EAAE4xB,OACVjd,EAAQlB,EAAImB,kBAMlB,IALInB,EAAImB,kBAAkBJ,IAAM,GAAK,GAAKf,EAAImB,kBAAkBH,KAAO,MACrEhB,EAAIe,IAAMlR,KAAKu4B,IAAIpoB,EAAIe,IAAKf,EAAIe,IAAMf,EAAImB,kBAAkBJ,IAAM,IAClEf,EAAIgB,KAAOnR,KAAKu4B,IAAIpoB,EAAIgB,KAAMhB,EAAIgB,KAAOhB,EAAImB,kBAAkBH,KAAO,IACtEhB,EAAIc,aAGJd,EAAImB,kBAAkBJ,IAAM,GAAKf,EAAImB,kBAAkB7X,OACrD0W,EAAIF,OAAOxW,QACb0W,EAAImB,kBAAkBH,KAAO,GAAKhB,EAAImB,kBAAkB9X,MACtD2W,EAAIF,OAAOzW,MAEb,GACE2W,EAAImB,kBAAkBJ,IAAM,GAAK,GACjCf,EAAImB,kBAAkBH,KAAO,GAAK,EAIlC,IAFAhB,EAAIuoB,cAAe,EACnBrnB,EAAQlB,EAAImB,kBAEVtR,KAAKyY,KAAKtI,EAAI3W,MAAQ2W,EAAIgB,KAAO,IAC/BnR,KAAKC,MAAMkQ,EAAIF,OAAOzW,MAAQ,KAChCwG,KAAKyY,KAAKtI,EAAI1W,OAAS0W,EAAIe,IAAM,IAC/BlR,KAAKC,MAAMkQ,EAAIF,OAAOxW,OAAS,KACjCuG,KAAKyY,KAAKtI,EAAIgB,MAAQ,GACtBnR,KAAKyY,KAAKtI,EAAIe,KAAO,GAErBf,EAAIwoB,kBAAmB,EACnBxoB,EAAI6lB,OAAS,GAAK7lB,EAAI6lB,OAAS,KACjC7lB,EAAIjT,IAAI,QAASiT,EAAI6lB,MAAQ,GACzBh2B,KAAKyY,KAAKpH,EAAMH,KAAO,IACzBf,EAAIjT,IAAI,MAAOiT,EAAIe,IAAM,GAEvBlR,KAAKyY,KAAKpH,EAAMF,MAAQ,IAC1BhB,EAAIjT,IAAI,OAAQiT,EAAIgB,KAAO,GAG3BnR,KAAKyY,KAAKpH,EAAM7X,MAAQ6X,EAAMF,KAAO,IACrCnR,KAAKC,MAAMkQ,EAAIF,OAAOzW,MAAQ,KAE9B2W,EAAIjT,IAAI,OAAQmU,EAAMF,KAAO,GAG7BnR,KAAKyY,KAAKpH,EAAM5X,OAAS4X,EAAMH,IAAM,IACrClR,KAAKC,MAAMkQ,EAAIF,OAAOxW,OAAS,KAE/B0W,EAAIjT,IAAI,MAAOiT,EAAIe,IAAM,KAG3Bf,EAAIjT,IAAI,QAASiT,EAAI6lB,MAAQ,GACzBh2B,KAAKyY,KAAKpH,EAAMH,KAAO,IACzBf,EAAIjT,IAAI,MAAOiT,EAAIe,IAAM,GAEvBlR,KAAKyY,KAAKpH,EAAMF,MAAQ,IAC1BhB,EAAIjT,IAAI,OAAQiT,EAAIgB,KAAO,GAG3BnR,KAAKyY,KAAKpH,EAAM7X,MAAQ6X,EAAMF,KAAO,IACrCnR,KAAKC,MAAMkQ,EAAIF,OAAOzW,MAAQ,MAE9B2W,EAAIjT,IAAI,QAASiT,EAAI6lB,MAAQ,GAC7B7lB,EAAIjT,IAAI,OAAQiT,EAAIgB,KAAO,IAG3BnR,KAAKyY,KAAKtI,EAAI1W,OAAS0W,EAAIe,IAAM,IACjClR,KAAKC,MAAMkQ,EAAIF,OAAOxW,OAAS,KAE/B0W,EAAIjT,IAAI,MAAOiT,EAAIe,IAAM,IAG7BkjB,EAAKviB,YACLR,EAAQlB,EAAImB,uBAGdnB,EAAIe,IAAMlR,KAAKw4B,IACbroB,EAAIe,IACJf,EAAIF,OAAOxW,OACT0W,EAAImB,kBAAkB7X,OACtB0W,EAAIe,IACJf,EAAImB,kBAAkBJ,IACtB,IAEJf,EAAIgB,KAAOnR,KAAKw4B,IACdroB,EAAIgB,KACJhB,EAAIF,OAAOzW,MACT2W,EAAImB,kBAAkB9X,MACtB2W,EAAIgB,KACJhB,EAAImB,kBAAkBH,KACtB,IAEJhB,EAAIc,eAIHmjB,EDxeQwE,GACbj6B,GAAYC,SAAS,CAAEyO,aAAc+mB,IACrCd,IACAxqB,OAAO+vB,iBAAiB,SAAUvF,GAGrB,IAAIwF,SAAS,0GACrBC,OAAOx2B,MAAK,SAACrJ,gBAEhB8/B,EAAAriC,SAASsiC,QAATD,EAAgBhoB,IAAI9X,GACpBvC,SAAS8L,KAAKy2B,UAAUloB,IAAI,qBAE7B,IAGDxZ,uBAAKK,UAAU,2BACbL,gBAAC85B,SACD95B,uBACEgD,GAAG,YACH3C,UAAU,eACVf,MAAO,CAAE2C,OAAQ,sBAEjBjC,0BAAQf,IAAK28B,EAAW54B,GAAG,WAC1BmU,GACCnX,uBACEV,MAAO,CACLqiC,SAAU,WACV3gC,OAAQ,IACR2Y,KAAMyC,EAAuBxY,EAAI,IACjC8V,IAAK0C,EAAuBvY,EAAI,GAChCga,gBAAiB,QACjB+jB,OAAQ,iBACRC,UAAW,+BAEbC,OAAQ,WACN36B,GAAYC,SAAS,CAAE+P,iBAAiB,MAG1CnX,gBAACq7B,WAOPr7B,gBAAC86B,WEzEMiH,GAAO,SAAH7hC,GACf,OACEF,gCACEA,uBACEK,uCAJwBH,EAAT8hC,UAKf5H,QAL0Cl6B,EAAPk6B,QAMnC96B,MANgDY,EAALZ,MAO3C4G,IAPoDhG,EAAHgG,KAAhBhG,EAAR25B,YCLpBoI,GAAW,SAAH/hC,GACnB,OACEF,gCACEA,uBAAKK,wBAHyBH,EAATgiC,WAAmBhiC,EAAR25B,yGCE/B,IAAMsI,GAAY,SAAHjiC,GACpB,OACEF,gCACEA,uBACEoiC,KAAK,mBAJkBliC,EAAHmiC,IAMpBhiC,uBANmCH,EAAVoiC,WAOzBhjC,MAAO,CAAEijC,wBAP+BriC,EAAH49B,cCFhC0E,GAAW,SAAHtiC,GACnB,OACEF,gCACEA,uBACEK,UAJsCH,EAATuiC,UAIfA,kHAJaviC,EAAR25B,YCDd6I,GAAY,SAAHxiC,GACpB,OACEF,gCACEA,qBAAGK,wBAHmCH,EAAVyiC,YAAFziC,EAAJ2O,QCEtB+zB,GAAoD,SAApC1iC,OACpB2iC,EAAY3iC,EAAZ2iC,aAEMC,EAAejH,SAAyB,MAC9CkH,EAAoCC,YAAS,GAA1BC,EAAaF,KA+BhC,OACE/iC,gCACEA,uBACEK,sEAlCW0iC,KAmCI,WAAa,IAE5BG,YA1BkB,SAACtjB,GACvBA,EAAMtM,iBACN2vB,GAAc,IAyBVE,YAtBkB,SAACvjB,GACvBA,EAAMtM,iBACN2vB,GAAc,IAqBVG,WAAY,SAACxjB,GAAK,OAAKA,EAAMtM,kBAC7B+vB,OAnBa,SAACzjB,GAClBA,EAAMtM,iBACN2vB,GAAc,GAEd,IAAMK,EAAc1jB,EAAM2jB,aAAaC,MAAM,GACzCF,GACFT,EAAaS,KAeXtjC,yBACEyjC,QAAQ,cAERpjC,UAAU,+QAEVL,uBAAKK,UAAU,wCACbL,gBAACiB,GACCd,MAAM,GACNC,KAAMJ,gBAAC0jC,4BACPrjC,UACE,yGAEFe,KAAK,aAEPpB,uBAAKK,UAAU,+DAGfL,uBAAKK,UAAU,6CAEjBL,2BACG,IACDA,0BACEo6B,QAAS,WAAA,IAAAuJ,EAAA,cAAAA,EAAMb,EAAah7B,gBAAb67B,EAAsBzwB,SACrC7S,UAAU,8NAMdL,uBAAKK,UAAU,uCACbL,+CAEAA,iFAEFA,yBACEgD,GAAG,cACH/D,IAAK6jC,EACLtjC,KAAK,OACLokC,SA9Ee,SAAChkB,SAClBikB,SAAYC,EAAGlkB,EAAMkX,OAAO0M,cAAbM,EAAqB,GAEtCD,GACFhB,EAAagB,GAEff,EAAah7B,QAAQpG,MAAQ,MAyErBrB,UAAU,SACV0jC,OAAO,4EAGN,sEChGAC,GAAoB,CAC/B,CAAE7O,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,YAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,OAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,YAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,aAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,YAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,WAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,aAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,aAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,OAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,kBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,WAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,aAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,YAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,aAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,aAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,aAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,aAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,WAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,YAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,mBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,YAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,WAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,iBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,aAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,kBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,YAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,iBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,YAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,QAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,iBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,eAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,iBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,iBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,OAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,iBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,cAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,UAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,mBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,YAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,gBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,sBAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,UAAWtmB,KAAM,SAC1B,CAAEsmB,MAAO,cAAetmB,KAAM,gBCtGnBo1B,GAAe,SAAH/jC,OACvBu3B,EAAav3B,EAAbu3B,cAAayM,EAAAhkC,EACbikC,cAAAA,WAAaD,EAAG,GAAEA,EAAAE,EAAAlkC,EAClBmkC,UAAAA,WAASD,EAAG,GAAEA,EACdE,EAAiBpkC,EAAjBokC,kBAAiBC,EAAArkC,EACjBZ,MAAAA,WAAKilC,EAAG,GAAEA,EAGVxB,EAAsCC,WAAS,MAAxCwB,EAAWzB,KAAE0B,EAAc1B,KAC5B2B,EAAYV,GACZW,EAAmB,SAACxP,EAAOvc,GAC/B6rB,EAAetP,GACfmP,EAAkBnP,EAAOvc,IAG3B,OACE5Y,gCACEA,uBACEgD,GAAG,eACH3C,sOACAf,MAAOA,UAENolC,SAAAA,EAAW/7B,QAAS,GACnB3I,gCACEA,qBACEK,UAAcukC,oFAIhB5kC,uBACEK,qHAECqkC,SAAAA,EAAWxyB,KAAI,SAACijB,EAAOvc,GAAK,OAC3B5Y,uBACEK,UAAU,6IACV6F,IAAK0S,EAAQuc,EAAMtmB,MAEnB7O,gBAAC05B,IAAQv5B,MAAOg1B,EAAMtmB,MACpB7O,gBAAC6kC,IACC1P,MAAOA,EAAMA,MACbvc,MAAOA,EACPwhB,QAAS,WAAA,OAAMuK,EAAiBxP,EAAMA,MAAOkP,IAC7CS,uCACEN,IAAgBrP,EAAMA,MAAQ,sBAAwB,oBASrEsC,SAAAA,EAAe9uB,QAAS,GACvB3I,gCACEA,uBACEK,uFAEAL,qBACEK,UAAcukC,6EAIhB5kC,uBACEK,4FAA6F8jC,SAE5F1M,SAAAA,EAAevlB,KAAI,SAACijB,EAAOvc,GAAK,OAC/B5Y,gBAAC6kC,IACC1P,MAAOA,EACPvc,MAAO,WAAaA,EACpBwhB,QAAS,WAAA,OACPuK,EAAiBxP,EAAOkP,EAAY,SAAWzrB,IAEjDksB,uCACEN,IAAgBrP,EAAQ,sBAAwB,eAsBzD0P,GAAW,SAAH3jC,OACnBi0B,EAAKj0B,EAALi0B,MACK4P,EAAA7jC,EACL4jC,SAKA,OACE9kC,uBACEkG,IARChF,EAAL0X,MASItZ,MAAO,CAAEue,gBAAiBsX,GAC1B90B,yDATI0kC,EAAG,GAAEA,GAUT3K,QATGl5B,EAAPk5B,QAUIwJ,SATI1iC,EAAR0iC,UACQ1iC,EAAR24B,SAWe,gBAAV1E,GACCn1B,uBACEV,MAAO,CACL0C,MAAO,MACPC,OAAQ,OACR+iC,WAAY,UACZxiC,UAAW,iBACXyiC,WAAY,OACZ/J,UAAW,gBCtIVgK,GAAY,SAAC5kC,GACxB,IAAkB6kC,EACVhQ,EAQR,OACEn1B,gBAAC05B,IAAQv5B,OAVOglC,EAUS7kC,EAAM60B,MATzBA,EAAQ6O,GAAkBoB,MAAK,SAACl2B,GAAC,OAAKi2B,IAAcj2B,EAAEimB,SACxDA,GAASA,EAAMtmB,KACVsmB,EAAMtmB,KAENs2B,IAMPnlC,uBAAKK,UAAWC,EAAM+kC,QACpBrlC,uBACEK,2DACAf,MAAO,CACL0lC,WAA4B,gBAAhB1kC,EAAM60B,MAA0B,UAAY70B,EAAM60B,OAEhEiF,QAAS,SAACxa,GACRA,EAAM0lB,kBACN1lB,EAAMtM,iBAENhT,EAAMilC,iBAAiB,CACrB1qB,SAAS,EACTma,SAAU10B,EAAM00B,SAChBG,MAAO,GACPqQ,SAAUllC,EAAMklC,WAElBllC,EAAMmlC,YAAY,CAChB7hC,EAAGgc,EAAMigB,QACTh8B,EACEyN,OAAOo0B,YAAc9lB,EAAMkgB,QAAU,IACjClgB,EAAMkgB,QAAU,IAChBlgB,EAAMkgB,YAIC,gBAAhBx/B,EAAM60B,OACLn1B,uBACEV,MAAO,CACL0C,MAAO,MACPC,OAAQ,OACR+iC,WAAY,UACZxiC,UAAW,iBACXyiC,WAAY,OACZ/J,UAAW,kBCpCdyK,GAAc,WACzB,IAAA5L,EAaI5yB,IACF,SAACM,GAAK,MAAK,CACTA,EAAMqO,UACNrO,EAAMoO,aACNpO,EAAM2O,UACN3O,EAAM+vB,eACN/vB,EAAMkZ,gBACNlZ,EAAMyvB,aACNzvB,EAAM4O,iBACN5O,EAAMsU,oBACNtU,EAAM8O,qBACN9O,EAAMwU,wBACNxU,EAAMkO,sBAGRqkB,WA3BA4L,EAAW7L,KACXthB,EAAMshB,KACN3jB,EAAS2jB,KACTvC,EAAcuC,KACdpZ,EAAeoZ,KACf7C,EAAY6C,KACZ1jB,EAAgB0jB,KAChBhe,EAAmBge,KACnBxjB,EAAoBwjB,KACpB9d,EAAuB8d,KACvBpkB,EAAkBokB,MAmBpBgJ,EAAoCC,WAAS,GAAtC6C,EAAU9C,KAAE+C,EAAa/C,KAChCgD,EAA4C/C,YAAU,GAA/CgD,EAAcD,KAAEE,EAAiBF,KAExCG,EAAkClD,YAAS,GAApCmD,EAASD,KAAEE,EAAYF,KAC9BG,EAA0CrD,YAAS,GAA5CsD,EAAaD,KAAEE,EAAgBF,KAChCG,EAAsB3K,SAAO,IAEnC4K,EAA0CzD,WAAS,CACjDnoB,SAAS,EACTma,SAAU,GACVG,MAAO,GACPqQ,SAAU,OAJLkB,EAAaD,KAAElB,EAAgBkB,KAMtCE,EAAgC3D,WAAS,MAAlCrB,EAAQgF,KAAElB,EAAWkB,KAE5BhK,aAAU,WACH+J,GAAkBA,EAAc7rB,SACnCkB,EACE1F,EAAiBnE,KAAI,SAAC6iB,GAAO,OAAArxB,KAAWqxB,GAAI6R,WAAW,UAG1D,CAACF,IAEJ/J,aAAU,WACR6J,EAAoB1+B,QAAUuO,IAC7B,CAACA,IAEJsmB,aAAU,WACR,GAAIvmB,GAAahJ,OAAO2mB,KAAK3d,GAAWzN,OAAQ,CAC9C,IAAwB,IAApBq9B,EAAuB,CACzBC,EAAkB74B,OAAO2mB,KAAK3d,GAAWzN,QACzC,IAAMyrB,EAAY,GAClBhnB,OAAO2mB,KAAK3d,GAAWlE,KAAI,SAAC6iB,GAC1BX,EAAUjY,KAAK,CACb6Y,SAAUD,EACVlE,QAASza,EAAU2e,GACnBE,QAAS7e,EAAU2e,QAGvBhZ,EAAoBqY,GAGlB+R,IACFC,GAAa,GACbS,YAAW,WACTz5B,OAAO2mB,KAAK3d,GAAWlE,KAAI,SAAC6iB,GAC1B,IAAM/Y,EAAM3F,EAAiB+uB,MAC3B,SAACppB,GAAQ,OAAKA,EAAIgZ,WAAaD,KAE7B/Y,GAAOA,YAAgBA,EAAIiZ,SAC7BuC,EAAexb,EAAIgZ,SAAUhZ,EAAIiZ,cAGpC,SAIN,CAAC7e,IAEJumB,aAAU,WAENmJ,EADEE,GAAkBA,EAAiB,EACvBA,EAEA,KAEf,CAACA,IAEJ,IAAMc,EAAgB,SAAC9R,EAAeG,GAQhCqC,EAAexC,EAAUG,KAC3BpZ,EACE1F,EAAiBnE,KAAI,SAAChD,GAAM,OAE1BkH,EAAU4e,KAAc9lB,EAAE+lB,QAAOvxB,KAAQwL,GAAG+lB,QAASE,IAAUjmB,MAGnE+M,EACE1F,EAAqBrE,KAAI,SAAChD,GAAM,OAE9BkH,EAAU4e,KAAc9lB,EAAE+lB,QAAOvxB,KAAQwL,GAAG+lB,QAASE,IAAUjmB,QAuBjE4sB,EAAe,WACnB,GAAI38B,SAAS48B,eAAe,eAAgB,CAC1C,IAAMtjB,EAAStR,GAAYY,WAAW+N,UAChCkmB,EAAuB78B,SAAS48B,eAAe,eACrDrvB,QAAQiR,IAAIqe,GACZ,IAAMC,EAAiBD,EAAqBE,YACtCxK,EAAQuK,EAAiBxjB,EAAO0jB,WAChCC,EAAO3jB,EAAO4jB,UAAY3K,EAChCjZ,EAAO6jB,SAASL,GAEhBxjB,EAAO8jB,UAAUjF,SAAS0E,EAAqBQ,eAC/C/jB,EAAOikB,qBAAqB,CAACN,EAAM,EAAG,EAAGA,EAAM,EAAG,IAClD3jB,EAAO4B,cAIL0sB,EAAqB,WACzBxB,EAAiB,CACf1qB,SAAS,EACTma,SAAU,GACVG,MAAO,GACPqQ,SAAU,QAId7I,aAAU,WACRxvB,SAAOC,OAAOC,UAAUC,aAAc,EACtCH,SAAOC,OAAOC,UAAUE,YAAa,EACrCwO,EAAoB,IACpBkqB,GAAmB,GACnBtwB,GAAmB,GACnB,ICzJIqmB,EAEAgL,EDuJElxB,GCzJFkmB,EAAuB78B,SAAS48B,eAAe,gBAE/CiL,EAAc,IAAI75B,SAAOgwB,OAAO,cAAe,CACnDC,iBAAiB,EACjBC,wBAAwB,EAIxB4J,cAAe,UACfC,YAAa,UAGbllC,MAAOg6B,EAAqBE,YAC5Bj6B,OAAQ+5B,EAAqBQ,gBAEnBgE,GAAG,gBA9BiB,iBACxBpgB,KAAmBxL,OACpB,IAAIuyB,UACLH,UAAWI,EAAXJ,EACIzsB,qBADJ6sB,EAEIl1B,KAAI,SAACnB,GAAI,OAAKA,EAAgB,WAAK3D,OAAO+e,OAAOpb,EAAgB,cAClEuvB,OACAtgB,OAAOugB,WAGdp5B,GAAYC,SAAS,CAAEgZ,oBAAqBA,OAqB9C4mB,EAAYxG,GAAG,qBA1CU,WAClBwG,EAAYxvB,mBAG0B,UAAvCwvB,EAAYxvB,kBAAkBhY,OAIlCwnC,EAAYxvB,kBAAkB6vB,oBAAoBC,iBAClDN,EAAYzM,uBAkCPyM,GDiML,OAxDA7/B,GAAYC,SAAS,CAAE0O,UAAWA,IAClCgmB,IACAxqB,OAAO+vB,iBAAiB,SAAUvF,GAClCxqB,OAAO+vB,iBAAiB,QAAS0F,GAGjCjxB,EAAU0qB,GAAG,cAAc,SAAU5gB,GACnC9J,EAAUyC,sBACV,IAMI4c,EANAoS,EAAazxB,EAAU0xB,WAAW5nB,EAAM1a,GAIxCuiC,EAAgB,GACpBtgC,GAAYY,WAAWyY,+BAA8B,GAErD1K,EAAU4C,eAAc,SAAUC,GACf,SAAbA,EAAInZ,MAEFmZ,EAAI+uB,cAAcH,KAAgBpS,IACpCsS,EAActrB,KAAKxD,EAAIrW,MACvBwT,EAAU2E,OAAO9B,GACjB7C,EAAUuE,YACV8a,EAAQxc,EAAIrW,SAKlB,IAAIqlC,EAAoBnB,EAAoB1+B,QAC5C2/B,EAAcv1B,KAAI,SAAC01B,GAEf9xB,EAAUyE,aAAayF,QAAO,SAACrH,GAAQ,OAAKA,EAAIrW,OAASslC,KAAIj/B,OAC7D,IAEAg/B,EAAoBA,EAAkB3nB,QACpC,SAAC6nB,GAAO,OAAKA,EAAG5S,UAAYd,EAASyT,UAI3C7rB,EAAoB4rB,MAkBf,WACLhyB,GAAmB,GACnBrE,OAAOw2B,oBAAoB,QAASf,MAErC,IAEH,IAoBMgB,EAAa,WACjB56B,SAAOC,OAAOC,UAAUC,aAAc,EACtCH,SAAOC,OAAOC,UAAUE,YAAa,EAErCpG,GAAYC,SAAS,CAAE4O,yBAAyB,IAChD7O,GAAYC,SAAS,CAAEoO,qBAAiBlU,IACxCskC,EAAYrrB,aAAaC,SAAQ,SAAC7B,GACf,SAAbA,EAAInZ,MACNomC,EAAYnrB,OAAO9B,MAGvB,IAWIT,EAXEmiB,EAAM,IAAIltB,SAAOmtB,gBAAgBsL,EAAYrrB,aAAc,CAE/DqrB,YAAaA,IAEfA,EAAYhsB,gBAAgBygB,GAM5BuL,EAAYrL,mBAEZqL,EAAYpuB,kBAAkBY,OAAM,SAAUC,GAqB5C,IApBAH,EAAYG,IAoBwB,oBAAnBH,EAAU1Y,KAA4B,CACrD0Y,EAAUO,OAASA,EACnB,IAAMuvB,EAAO,GACb9vB,EAAUQ,eAAc,SAAUC,GAChCqvB,EAAK7rB,KAAKxD,MAGZ,IAAMsvB,EAAiB,IAAI96B,SAAO+6B,MAAMF,EAAM,IAC9CvvB,EAAO2E,aAAa6qB,GACpBxvB,EAAOe,IAAIyuB,GACXxvB,EAAOmB,gBAAgBquB,GACvBA,EAAeviC,IAAI,CAEjB0Q,UAAWjP,GAAYY,WAAWqO,YAEpC6xB,EAAexuB,YACftS,GAAYY,WAAWqP,oBAAoB6wB,GAC3C9gC,GAAYY,WAAWuP,iBAEvB2wB,EAAe7nC,KAAO+G,GAAYY,WAAWyO,eAE7CiC,EAAOe,IAAItB,GAEbO,EAAO8hB,mBACPqL,EAAYxrB,QACZjT,GAAYC,SAAS,CAAE8N,wBAAyB,KAChD/N,GAAYY,WAAWgS,mBAAkB,OAIvCoa,EAAW,SAACiD,GAChB,GAAIA,EAAK,CACP,GAAIA,EAAIhoB,QAAQ,SAAW,EAAG,CAC5B,IAAMioB,EAAOD,EAAIvmB,QAAQ,oBAAqB,IAAI5B,MAAM,KACxD,YACG,GAAK,KACLqoB,SAASD,EAAK,KAAO,KACrBC,SAASD,EAAK,KAAO,GACtBC,SAASD,EAAK,KAEbjnB,SAAS,IACTgC,MAAM,GAET,IAAImlB,EAAMH,EAAIhoB,QAAQ,MAAQ,EAAI,IAAM,IAEpCxM,KADJw0B,EAAMA,EAAIpf,OAAO,GAAG/I,MAAM,KAAK,GAAGA,MAAMsoB,IAC1B,IAAInnB,SAAS,IACzByb,IAAMuL,EAAI,IAAIhnB,SAAS,IACvB0b,IAAMsL,EAAI,IAAIhnB,SAAS,IAKzB,OAHgB,GAAZxN,EAAE+F,SAAa/F,EAAI,IAAMA,GACb,GAAZipB,EAAEljB,SAAakjB,EAAI,IAAMA,GACb,GAAZC,EAAEnjB,SAAamjB,EAAI,IAAMA,GACtB,IAAMlpB,EAAIipB,EAAIC,EAGvB,MAAO,IA0ILqc,EAAgB,SAACp3B,EAAW6O,GAChC7D,EACE1F,EAAiBnE,KAAI,SAAC6iB,GAAO,OACErxB,KAEpBqxB,EAFTA,EAAGC,WAAajkB,EAAKikB,UAGf4R,WAAW,EACXjF,SAAU,CAAE/9B,EAAGgc,EAAMigB,QAASh8B,EAAG+b,EAAMkgB,WAEhC8G,WAAW,QAG5BrB,EAAiB,CACf1qB,SAAS,EACTma,SAAUjkB,EAAKikB,SACfG,MAAOpkB,EAAKkkB,QACZuQ,SAAUsB,IAEZrB,EAAY,CACV7hC,EAAGgc,EAAMigB,QACTh8B,EACEyN,OAAOo0B,YAAc9lB,EAAMkgB,QAAU,IACjClgB,EAAMkgB,QAAU,IAChBlgB,EAAMkgB,WAiDVsI,EAAiBC,WAAQ,WAC7B,OAAOhyB,EAAiB2J,QACtB,SAAC9Q,GAAM,OACL80B,GAAkB/J,WAChB,SAAC4N,GAAE,OAAKA,EAAG1S,MAAM8B,gBAAkB/nB,EAAE+lB,QAAQgC,iBAC3C,OAEP,CAAC5gB,IAEJ,OACErW,gCAQEA,uBAAKK,UAAU,mCACbL,uBAAKK,UAAU,6BACbL,uBAAKK,UAAU,mDACbL,uBAAKK,UAAU,mBACbL,uBAAKK,UAAU,wBACbL,uBAAKK,UAAU,4CACbL,uBAAKK,UAAU,2BACbL,uBACEK,UAAU,+CACVf,MAAO,CACLy4B,QAAS,OACT6C,eAAgB,WAChB54B,MAAO,SAGThC,uBACEK,UAAU,8BACV+5B,QA1EI,WACxB,IAAMvZ,EAASF,IACf,GAAe,OAAXE,EAAiB,CACnB,IAAIynB,EAAgBjyB,EAAiBnE,KAAI,SAAChD,GAAM,OAC9C2R,EAAO3R,EAAE8lB,WAAanU,EAAO3R,EAAE8lB,UAAUrsB,OAAS,EAACjF,KAC1CwL,GAAG+lB,QAASpU,EAAO3R,EAAE8lB,YAC1B9lB,KAgBN9B,OAAO2mB,KAAKlT,GAAQrG,SAAQ,SAACtL,GAC3B,GACEmH,EAAiB2J,QAAO,SAAC6nB,GAAO,OAAKA,EAAG5S,UAAYpU,EAAO3R,MACxDvG,OAAS,EACZ,CACA,IAAM4/B,EAAuBhyB,EAAqB6uB,MAChD,SAACoD,GAAG,OAAKA,EAAIvT,UAAYpU,EAAO3R,MAE9Bq5B,GAAwBA,EAAqBtT,SAC/CqT,EAAcnsB,KAAKosB,OAIzBxsB,EAAoBusB,MAyCFtoC,uBAAKK,UAAU,uBACbL,uBACEsC,KAAK,UACLN,MAAM,OACNC,OAAO,OACPC,QAAQ,YACRH,MAAM,8BAEN/B,wBACEK,UAAU,QACV+B,EAAE,8FAIRpC,wBAAMK,UAAU,4EAIlBL,uBACEK,UAAU,0BACV+5B,QAxPD,WACnBjzB,GAAYY,WAAWyY,+BAA8B,GAIrD,IAAMK,EAAS1Z,GAAYY,WAAWmN,wBAAwB,GAAGkB,UACjEjP,GACGY,WACA+N,UAAUwE,aACTnT,GAAYY,WAAWmN,wBAAwB,GAAGwL,MAmBtDklB,EAAYrrB,aAAaC,SAAQ,SAAC7B,GACf,SAAbA,EAAInZ,MACNomC,EAAYnrB,OAAO9B,MAkCvB,IA9BA,IAQgCgB,EAA0BgI,EARpDlJ,EAAStR,GAAYY,WAAW+N,UAElCgL,EAAcrI,EAAOzW,MACrB+e,EAAetI,EAAOxW,OACtB+e,EAAUxY,KAAKyY,KAAKH,EAHT,IAIXI,EAAU1Y,KAAKyY,KAAKF,EAJT,IA6BNzY,EAAI,EAAGA,EAAI0Y,EAAS1Y,IAAK,CAChC,IAAI1E,EA9BS,GA8BL0E,EACF6Y,EAAO,IAAIhU,SAAOwN,KAAK,CAAC/W,EAAG,EAAGA,EAAGmd,GAAe,CACpDxe,OAAQ,YACRuY,YAAY,EACZtb,KAAM,OACN4hB,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,cAAc,IAEhB9I,EAAOe,IAAI2H,GACX1I,EAAOwC,WAAWkG,GAGpB,IAAK,IAAIK,EAAI,EAAGA,EAAIN,EAASM,IAAK,CAChC,IAAI3d,EA7CS,GA6CL2d,EACFL,EAAO,IAAIhU,SAAOwN,KAAK,CAAC,EAAG9W,EAAGid,EAAajd,GAAI,CACnDtB,OAAQ,UACRuY,YAAY,EACZtb,KAAM,OACN4hB,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,cAAc,IAEhB9I,EAAOe,IAAI2H,GACX1I,EAAOwC,WAAWkG,GAIpB,IAAS7Y,EAAI,EAAGA,EAAI0Y,EAAS1Y,IAC3B,IAASkZ,EAAI,EAAGA,EAAIN,EAASM,IAAK,CAChC,IAGIC,EAzDK,IAAItU,SAAOuU,KAAK,CACzB/H,KAF4BA,EAPjB,GA8DArR,EApDXoR,IAVW,GA+DD8H,EApDVxf,MAXW,GAYXC,OAZW,GAaXzC,KAAM,OACN4hB,eAAe,EACfC,eAAe,EACfC,cAAc,EACdC,cAAc,EAEdjf,MAZsDqf,EAyDtCH,EAAI,GAAM,IA5CT7H,EApBN,GAoByB,GAAM,IACtCgI,GAAchI,EArBP,GAqB0B,GAAM,EACrC,UACA,cAiDNlB,EAAOe,IAAIiI,GACXhJ,EAAOwC,WAAWwG,GAItBta,GAAYC,SAAS,CAAEgP,UAAWyK,IAClC9E,EACE1F,EAAiBnE,KAAI,SAAC8J,GAAQ,OAAAtY,KAAWsY,GAAKiZ,QAASjZ,kBAwIrChc,uBAAKK,UAAU,uBACbL,uBACEsC,KAAK,UACLN,MAAM,OACNC,OAAO,OACPC,QAAQ,gBACRH,MAAM,8BAEN/B,wBACEoC,EAAE,gSACFa,SAAS,cAIfjD,wBAAMK,UAAU,8EAMpBL,uBACEgD,GAAG,cACH1D,MAAO,CACL0C,MAAO,OACPC,OAAQ,oBACRwmC,SAAU,WAGZzoC,0BAAQK,UAAU,UAAU2C,GAAG,iBAGjChD,uBACEK,UAAU,wEACVf,MAAO,CACLopC,WAAY,SACZ1mC,MAAO,OACPC,OAAQ,SAGVjC,wBAAMK,UAAU,6DACdL,gBAACoE,UAGHpE,wBAAMK,UAAU,gIAOtBL,uBAAKK,UAAU,kEACbL,uBAAKK,UAAU,gCACbL,sBAAIK,UAAU,sDAGdL,qBAAGK,UAAU,2DAGbL,0BACE0B,MAAOmkC,EACPjC,SApiBW,SAAC1+B,GAC9B4gC,EAAc6C,OAAOzjC,EAAE4xB,OAAOp1B,QAE9Bw1B,EAAayR,OAAOzjC,EAAE4xB,OAAOp1B,QAC7B0kC,GAAa,IAiiBK/lC,UAAU,qCAEVL,0BAAQ0B,MAAO,EAAG84B,SAAUwL,EAAiB,eAG7ChmC,0BAAQ0B,MAAO,EAAG84B,SAAUwL,EAAiB,eAG7ChmC,0BAAQ0B,MAAO,EAAG84B,SAAUwL,EAAiB,eAG7ChmC,0BAAQ0B,MAAO,EAAG84B,SAAUwL,EAAiB,eAG7ChmC,0BAAQ0B,MAAO,EAAG84B,SAAUwL,EAAiB,eAG7ChmC,0BAAQ0B,MAAO,EAAG84B,SAAUwL,EAAiB,eAG7ChmC,0BAAQ0B,MAAO,EAAG84B,SAAUwL,EAAiB,eAG7ChmC,0BAAQ0B,MAAO,EAAG84B,SAAUwL,EAAiB,gBAe/ChmC,uBACEK,UACE,yGAGDgW,SAAAA,EAEG2J,QAAO,SAACjP,EAAM6H,GAAK,OAAKA,EAAQitB,KACjC3zB,KAAI,SAACnB,EAAM6H,GAAK,OACf5Y,uBACEK,UAAU,6BACV6F,IAAK0S,GAEL5Y,gBAAC05B,IAAQv5B,MAAO4Q,WACd/Q,uBACEK,UAAU,sDACVf,MAAO,CAAE0lC,WAAYj0B,cAIzB/Q,uBAAKK,UAAU,6BACbL,gBAAC4oC,sBAEH5oC,uBAAKK,UAAU,+CACbL,wBACEK,UAAU,gDACVf,MAAO,CAAEupC,OAAQ,YAEhB93B,YAAiBA,EAAKkkB,QACrBlkB,EAAK61B,UACH5mC,gBAACklC,IACC7kC,UAAU,wBACVyoC,aAAchC,EACd9R,SAAUjkB,EAAKikB,SACfG,MAAOpkB,EAAKkkB,QAEZsQ,iBAAkBA,EAClBE,YAAaA,EACbD,SAAUsB,IAGZ9mC,gBAACiB,GACCd,MAAM,eACNC,KAAMJ,gBAAC+oC,eACP3O,QAAS,SAACxa,GACRA,EAAM0lB,kBACN1lB,EAAMtM,iBACN60B,EAAcp3B,EAAM6O,IAEtBvf,UACE,mGAEFe,KAAK,aAITpB,gBAACklC,IACC7kC,UAAU,wBACVyoC,aAAchC,EACd9R,SAAUjkB,EAAKikB,SACfG,MAAOpkB,EAAKkkB,QAEZsQ,iBAAkBA,EAClBE,YAAaA,EACbD,SAAUsB,KAKhB9mC,wBACEK,UAAU,kFACV+5B,QAAS,SAACxa,GACRA,EAAM0lB,kBACN1lB,EAAMtM,iBACN60B,EAAcp3B,EAAM6O,sBAM1B5f,wBAAMK,UAAU,IACdL,gBAACiB,GACCd,MAAM,eACNC,KAAMJ,gBAACgpC,wBACP5O,QAAS,WACP0M,EAAc/1B,EAAKikB,SAAU,gBAE/B30B,UACE,yFAEFe,KAAK,eAOhBklC,GACD8B,GACAA,EAAez/B,OAAS,EACtB3I,uBACEV,MAAO,CACLqiC,SAAU,WACV9jB,gBAAiB,UACjBorB,OAAQ,EACRlR,QAAS,QAGX/3B,gBAACiB,GACCd,MAAM,QACNC,KAAMJ,gBAACgpC,wBACP5O,QAAS,WACPmM,GAAiB,IAEnBlmC,UAAW,GACXe,KAAK,SACL9B,MAAO,CACLqiC,SAAU,WACVkH,OAAQ,UACR3vB,WAAY,OACZgwB,MAAO,GACPxvB,KAAM,EACNyb,MAAO,aAIXn1B,uBACEK,UAAU,iBACVf,MAAO,CAAE4Z,WAAY,OAAQiiB,aAAc,yCAI7Cn7B,uBACEK,UAAU,iBACVf,MAAO,CAAE67B,aAAc,uHAKzBn7B,2BACGooC,EAAel2B,KAAI,SAAChD,EAAQ5G,GAC3B,OACEtI,uBACEkG,IAAK,SAAWoC,EAChBhJ,MAAO,CACL0C,MAAO,OACPC,OAAQ,OACR41B,WAAY,OACZha,gBAAiB3O,EAAE+lB,QACnB5b,UAAW,SACX8hB,aAAc,QAGhBn7B,wBACEV,MAAO,CACL61B,MAAO,UACPgU,aAAc,eAGfj6B,EAAE+lB,cAMbj1B,uBACEK,UAAU,iBACVf,MAAO,CACL47B,UAAW,OACXC,aAAc,MACdjiB,WAAY,oCAMhBlZ,uBAAKK,UAAU,oCACbL,0BACER,KAAK,SACL46B,QAAS,WACPmM,GAAiB,GACjBwB,KAEF1nC,UAAU,2LAIZL,0BACER,KAAK,SACL46B,QAAS,WACPmM,GAAiB,IAEnBlmC,UAAU,8KACVf,MAAO,CACL47B,UAAW,iBAQnBl7B,uBAAKK,UAAU,mCACbL,0BACER,KAAK,SACL46B,QAzqBI,YACrBgO,GAAkBA,EAAez/B,OAAS,GAC7C49B,GAAiB,GACjBwB,KAEAxB,GAAiB,IAqqBGlmC,UAAU,iMAIZL,0BACER,KAAK,SACL46B,QA3rBE,WACxBjtB,SAAOC,OAAOC,UAAUC,aAAc,EACtCH,SAAOC,OAAOC,UAAUE,YAAa,EACrCwO,EAAoB,IACpB5U,GAAYC,SAAS,CAAE4O,yBAAyB,IAChD4vB,EAAYnrB,OAAM5N,MAAlB+4B,EAAsBA,EAAYrrB,cAClCpT,GAAYC,SAAS,CAAEgP,UAAW,KAClCjP,GAAYC,SAAS,CAAE8N,wBAAyB,KAChD/N,GAAYC,SAAS,CAAE6N,iBAAkB,KAorBnB5U,UAAU,qLACVf,MAAO,CACL47B,UAAW,2BAehCwL,GAAiBA,EAAc7rB,SAC9B7a,gBAACikC,IACCmF,mBACA9E,kBAAmB,SAACnP,GAClBuR,EAAclB,SAASkB,EAAc1R,SAAUG,GAC/CoQ,EAAiB,CACf1qB,SAAS,EACTma,SAAU,GACVG,MAAO,GACPqQ,SAAU,QAGdlmC,MACEqiC,EACI,CACEA,SAAU,QACVhoB,KAAMgoB,EAAS/9B,EAAI,IACnB8V,IAAKioB,EAAS99B,EAAI,EAClB7B,MAAO,SAET,CAAEqnC,QAAS,YEh9BdC,GAAa,WACxB,IAASC,EAAmBvG,WAAsB,SAClDjJ,EAQI5yB,IACF,SAACM,GAAK,MAAK,CACTA,EAAMiuB,YACNjuB,EAAM8uB,WACN9uB,EAAMguB,QACNhuB,EAAMuO,wBAENvO,EAAMuuB,aAGRgE,WAjBAtE,EAAWqE,KACXxD,EAAUwD,KACVtE,EAAOsE,KACP/jB,EAAuB+jB,KAEvB/D,EAAS+D,KAqBLyP,aAAY,IAAAtpC,EAAAyL,EAAAC,IAAAC,MAAG,SAAAC,EAAOlB,GAAI,IAAA4rB,EAAAiT,EAAA,OAAA79B,IAAAK,eAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAG0B,GADlDoqB,EAAM5rB,EAAKiE,KAAKM,UAAUvE,EAAKiE,KAAK66B,YAAY,KAAO,GAC7DviC,GAAYC,SAAS,CAAE4O,yBAAyB,IACpC,QAARwgB,GAAatqB,EAAAE,OAAA,MACfmqB,EAAW3rB,EAAM4rB,GAAK,GAAMtqB,EAAAE,QAAA,MAAA,OAAA,GAMb,QAARoqB,GAAyB,SAARA,GAActqB,EAAAE,QAAA,MAAA,OAAAF,EAAAE,OACfspB,EAAY9qB,GAAK,OACxC2rB,EADcrqB,EAAAI,KACOkqB,GAAKtqB,EAAAE,QAAA,MAAA,QAAA,GACT,OAARoqB,GAAwB,QAARA,GAAatqB,EAAAE,QAAA,MAEE,OAAxCjF,GAAYC,SAAS,CAAEiF,SAAS,IAAQH,EAAAE,QACpB4pB,EAAUprB,GAAK,QAEnC0S,MAFWpR,EAAAI,KAEGq9B,YAAc,cAAgBn6B,KAAKsI,OAC9C/M,MAAK,SAACJ,GAAQ,OAAKA,EAAS4O,UAC5BxO,MAAK,SAAC6+B,GACLrT,EAAWqT,EAASpT,GAAK,GAAO,aAE3B,SAACqT,GACNn9B,QAAQiR,IAAIksB,GACZ1iC,GAAYC,SAAS,CAAEiF,SAAS,OAC/BH,EAAAE,QAAA,MAAA,QAEDq9B,EAAYK,IAAIC,gBAAgBn/B,GACpC2rB,EAAWkT,EAAWjT,GAAK,QAE7B+S,EAAgB,MAAM,QAAA,UAAA,OAAAr9B,EAAAS,UAAAb,OACvB,gBAjCiBc,GAAA,OAAA1M,EAAA2M,WAAAC,eAkClB,OACE9M,gCACEA,uBAAKK,UAAU,+CACbL,uBAAKK,UAAU,0BACbL,uBAAKK,UAAU,kDACbL,gBAAC4iC,IAAiBC,aA9CH,SAACrN,GACxB+T,EAAgB/T,GAChBC,EAAQD,GACRgU,EAAahU,OA6CPx1B,uBAAKK,UAAU,qDACbL,qBAAGK,UAAU,0DAGbL,qBAAGK,UAAU,4QASlB2V,GACChW,uBAAKK,UAAU,8CACbL,gBAAC2lC,YC3EEqE,GAAY,SAAH9pC,GASpB,OACEF,gCACEA,uBACEK,UAPYH,EAAlB+pC,mBAOoBA,6OAEdjqC,yBACER,KAAK,SACLa,0RACA6pC,YAbGhqC,EAAXgqC,yBAcmB,4BACM,gBACjBxoC,MAdHxB,EAALwB,MAeQkiC,SApBA1jC,EAAR0jC,SAqBQuG,WApBEjqC,EAAViqC,WAqBQ3P,SAhBAt6B,EAARs6B,SAiBQ4P,QArBDlqC,EAAPkqC,QAsBQhQ,QAAS,SAACl1B,GACRA,EAAEmlC,cAAcC,WAGpBtqC,wBACEK,0EAEAL,uBACE+B,MAAM,6BACNG,QAAQ,YACRI,KAAK,eACLjC,oCAEAL,wBAAMoC,EAAE,wICrDPmoC,GAAsB,SAAHrqC,OAE9BsqC,EAAKtqC,EAALsqC,MAKA,OACExqC,0BACEo6B,QANGl6B,EAAPk6B,QAOI/5B,yIANKH,EAATG,WAQIL,wBAAMK,aAPMH,EAAhBuqC,kBAJKvqC,EAALC,OAYIH,4BAAOwqC,KCTAE,GAAiB,SAAHxqC,OAAMyqC,EAAWzqC,EAAXyqC,YAC/B5Q,EAA+C5yB,IAC7C,SAACM,GAAK,MAAK,CAACA,EAAMgE,YAAahE,EAAMiC,WAAYjC,EAAMkC,eACvDqwB,WAFKvuB,EAAWsuB,KAAErwB,EAAUqwB,KAAEpwB,EAAWowB,KAI3CgJ,EAA4CC,YAAS,GAA9C4H,EAAc7H,KAAE8H,EAAiB9H,KAClC+H,EAAcjP,SAAO,MAErBkP,EAAiB,WACrBF,GAAmBD,IAuBrB,OAhBAjO,aAAU,WACR,IAAMqO,EAAqB,SAACprB,GACtBkrB,EAAYhjC,UAAYgjC,EAAYhjC,QAAQmjC,SAASrrB,EAAMkX,SALjE+T,GAAkB,IAclB,OAJID,GACFzrC,SAASkiC,iBAAiB,QAAS2J,GAG9B,WACL7rC,SAAS2oC,oBAAoB,QAASkD,MAEvC,CAACJ,IAGF5qC,uBAAKK,UAAU,WAAWpB,IAAK6rC,GAC7B9qC,gBAACuqC,IACCnQ,QAAS2Q,EACT5qC,MAAM,UACNqqC,MAAOxqC,gBAACkrC,cAAW9pC,KAAM,WACzBqpC,mCACApqC,UAAU,8EAEXuqC,GACC5qC,sBAAIK,UAAU,mVACXsqC,EAAYz4B,KAAI,SAACi5B,GAAM,OACtBnrC,sBACEkG,IAAKilC,EAAOhrC,MACZE,WACEqJ,IAAeyhC,EAAOC,QACtBzhC,IAAgBwhC,EAAOE,QACnB,8BACA,2MAENjR,QAAS,WACP2Q,IACAt/B,EAAY0/B,EAAO/Q,aAGpB+Q,EAAOhrC,aCrCTgD,GAAS,SAAHjD,OAAMorC,EAAOprC,EAAPorC,QACvBC,EAAwCvrC,EAAMgjC,WAAvCwI,EAAYD,KAAEE,EAAeF,KACpCxI,EAAkCC,YAAS,GAApC0I,EAAS3I,KAAE4I,EAAY5I,KAC9BgD,EAAkC/C,YAAS,GAApC4I,EAAS7F,KAAE8F,EAAY9F,KACxB+F,EAAQjQ,SAAO,MACrB9B,EAQI5yB,IACF,SAACM,GAAK,MAAK,CACTA,EAAM8E,kBACN9E,EAAM4V,cACN5V,EAAMgE,YAENhE,EAAM6N,YACN7N,EAAM4N,SACN5N,EAAMgC,kBAERuwB,WAjBAztB,EAAiBwtB,KACjB1c,EAAa0c,KACbtuB,EAAWsuB,KAEXzkB,EAAWykB,KACX1kB,EAAQ0kB,KACRtwB,EAAcswB,KAaVgS,ECjDmB,SAACrqC,EAAYsqC,GACtC,IAAAjJ,EAA4CC,WAASthC,GAA9CuqC,EAAclJ,KAAEmJ,EAAiBnJ,KAYxC,OAVApG,aAAU,WACR,IAAMwP,EAAUtF,YAAW,WACzBqF,EAAkBxqC,KD4CkC,KCzCtD,OAAO,WACL0qC,aAAaD,MAEd,CAACzqC,EDsCoD,MCpCjDuqC,EDoCqBI,CAAY5iC,GAUxCkzB,aAAU,WACRlxB,EAAYsgC,KACX,CAACA,IAEJpP,aAAU,WACRlxB,EAAY,IACZogC,GAAa,KACZ,IAEH,IAAMS,EAAetsC,EAAMusC,aAAY,WACrC,SAAKT,GAAAA,EAAOhkC,UACR4jC,EAAJ,CACA,IAAMc,EAAUV,EAAMhkC,QAAQ2kC,UACxBxqC,EAAS6pC,EAAMhkC,QAAQ00B,aACvBkQ,EAAeZ,EAAMhkC,QAAQ4kC,aAE/BF,EAAUvqC,EADI,IACkByqC,EAClCf,GAAa,GACJa,EAAUvqC,EAHH,GAGwByqC,GACxCf,GAAa,MAEd,CAACG,EAAOJ,IACLiB,aAAS,IAAAzrC,EAAAyK,EAAAC,IAAAC,MAAG,SAAAC,IAAA,IAAA2R,EAAA,OAAA7R,IAAAK,eAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAIV,OAJUF,EAAAC,OAEdhF,GAAYC,UAAS,SAACK,GAAK,MAAM,CAC/BmC,WAAYnC,EAAMmC,WAAa,MAC7BsC,EAAAE,OACiBX,EAAY,IAAG,OAAxB,GACU,KADhBgS,EAAMvR,EAAAI,MACD3D,QAAYuD,EAAAE,OAAA,MAED,OADpBu/B,GAAa,GACbE,GAAa,GAAO3/B,EAAAM,iBAAA,OAGoB,IAAtCrF,GAAYY,WAAW6B,WACzBzC,GAAYC,SAAS,CACnBmF,kBAAmBkR,IAEZtW,GAAYY,WAAW6B,WAAa,GAC7CzC,GAAYC,UAAS,SAACK,GAIpB,MAHqB,CACnB8E,qBAAiBqI,OAAMnN,EAAM8E,kBAAsBkR,OAKzDkuB,GAAa,GAAOz/B,EAAAE,QAAA,MAAA,QAAAF,EAAAC,QAAAD,EAAAO,GAAAP,WAEpBQ,QAAQ7H,MAAKqH,EAAAO,IAAM,QAAA,UAAA,OAAAP,EAAAS,UAAAb,qBAEtB,kBA3Bc,OAAA5K,EAAA2L,WAAAC,eAyHf,OA7FA6vB,aAAU,WACJ+O,GAAaE,GACf/E,WAAUl7B,EAAAC,IAAAC,MAAC,SAAAoB,IAAA,OAAArB,IAAAK,eAAAiB,GAAA,cAAAA,EAAAf,KAAAe,EAAAd,MAAA,OAAA,OAAAc,EAAAd,OACHugC,IAAW,OAAA,UAAA,OAAAz/B,EAAAP,UAAAM,OAChB,OAEJ,CAACy+B,IAwFF1rC,gCACEA,uBAAKK,UAAU,wDACbL,uBAAKK,UAAU,sCACbL,uBAAKK,UAAU,kDACbL,gBAAC0qC,IAAeC,YA3FN,CAClB,CACExqC,MAAO,SACPirC,OAAQ,aACRC,QAAS,OACTjR,QAAS,WACPuR,GAAa,GACbxkC,GAAYC,SAAS,CACnBwC,WAAY,EACZF,WAAY,aACZC,YAAa,SAEfkiC,GAAa,KAGjB,CACE1rC,MAAO,SACPirC,OAAQ,aACRC,QAAS,MACTjR,QAAS,WACPuR,GAAa,GACbxkC,GAAYC,SAAS,CACnBwC,WAAY,EACZF,WAAY,aACZC,YAAa,QAEfkiC,GAAa,KAGjB,CACE1rC,MAAO,SACPirC,OAAQ,OACRC,QAAS,MACTjR,QAAS,WACPuR,GAAa,GACbxkC,GAAYC,SAAS,CACnBwC,WAAY,EACZF,WAAY,OACZC,YAAa,QAEfkiC,GAAa,KAGjB,CACE1rC,MAAO,SACPirC,OAAQ,OACRC,QAAS,OACTjR,QAAS,WACPuR,GAAa,GACbxkC,GAAYC,SAAS,CACnBwC,WAAY,EACZF,WAAY,OACZC,YAAa,SAEfkiC,GAAa,QAsCT7rC,uBAAKK,UAAU,wDACbL,gBAACgqC,IACCtoC,MAAO+H,EACPygC,YAAa,8BACbD,uDACArG,SAnKa,SAAC1+B,GAC1BiC,GAAYC,SAAS,CACnBqC,eAAgBvE,EAAEmlC,cAAc3oC,MAChCkI,WAAY,EACZ2C,kBAAmB,KAErBs/B,GAAa,SAkKT7rC,uBACEK,2FACAusC,SAAUN,EACVrtC,IAAK6sC,GAEL9rC,uBAAKK,UAAU,iHACZkM,EAAkB5D,OAAS,EACxB4D,EAAkB2F,KAAI,SAACtE,GAAe,IAAAi/B,EAAAC,EAAAC,EAAA,OACpC/sC,gCAEEA,gBAAC+hC,IACCC,uFACEwJ,SAAAA,EAAcwB,WAAYp/B,EAAKo/B,QtBnOzB,mBsBqOF,gBAGN5S,QAAS,WACHxsB,IACF0H,EAAY1H,GACZ69B,EAAgB79B,MAIpB5N,gBAACmiC,IACCrE,IACElwB,EAAKq/B,SAEP3K,WAAW,wCAGbtiC,gBAACiiC,IAASC,UAAU,2BAClBliC,gBAAC0iC,IACCC,2FACA9zB,KAAMjB,EAAKiB,OAEb7O,uBAAKK,UAAU,+BACZuN,SAAAA,EAAM/L,aACL+L,UAAIi/B,EAAJj/B,EAAM/L,aAAGirC,EAATD,EACI59B,MAAM,cAAI89B,EADdD,EAEI9sB,OAAOugB,iBAFXwM,EAGI76B,KAAI,SAACnB,GAAI,OACT/Q,gBAACwiC,IACCt8B,kBAAmB6K,EACnB0xB,qCAEAziC,uBAAKK,UtBtPX,esBuPS0Q,gBAMZy6B,SAAAA,EAAcwB,WAAYp/B,EAAKo/B,SAC9BhtC,uBAAKK,UAAU,0DACbL,uBACEK,qEAEFL,wBAAMK,UAAU,yBACdL,gBAACktC,aACC9rC,KAAM,GACN+zB,MAAM,QACN71B,MAAO,CAAE4D,YAAa,iBAUtC,qBAGRlD,uBAAKK,4DACHL,0BACEK,+DACGmrC,GAAgB,cAEnBpR,QAAS,WAAA,OA5HKxsB,EA4HgByH,EA3HtClI,SAAOC,OAAOC,UAAUC,aAAc,EACtCH,SAAOC,OAAOC,UAAUE,YAAa,OACjCK,IACFzG,GAAYC,SAAS,CACnBqC,eAAgB,GAChBC,WAAY,aACZC,YAAa,OACbC,WAAY,EACZC,aAAc,KAEhBwT,EAAczP,GACd69B,EAAgB79B,KAZG,IAACA,YAgIhB5N,0BACEw6B,UAAWgR,EACXpR,QAAS,WAnHK,IAACxsB,GAAAA,EAmHgByH,KAjHrClO,GAAYC,SAAS,CACnBqC,eAAgB,GAChBC,WAAY,aACZC,YAAa,OACbC,WAAY,EACZC,aAAc,KAEhByhC,IACAG,EAAgB79B,KA0GVvN,mCACEmrC,EACI,sDACA,yGvBpTI,SAAHtrC,GACjB,OACEF,0BACEo6B,QAHwCl6B,EAAPk6B,QAIjC/5B,mEAJmDH,EAATG,WAAXH,EAALsqC,MAAFtqC,EAALC,MAA0CD,EAAR25B,2ByBC5B,SAAH35B,OAC1BE,EAAIF,EAAJE,KACAg6B,EAAOl6B,EAAPk6B,QAAOR,EAAA15B,EACPG,UAAAA,WAASu5B,EAAG,GAAEA,EAAAuT,EAAAjtC,EACdC,MAAAA,WAAKgtC,EAAG,GAAEA,EAAAC,EAAAltC,EACVmtC,aAAAA,WAAYD,EAAG,OAAMA,EAClB9sC,EAAKC,EAAAL,EAAAM,IAER,OACER,gBAACc,wBACCT,mGAAoGA,EACpG+5B,QAASA,GACL95B,GAEc,SAAjB+sC,GACCrtC,gCACGI,EACAD,GAGa,UAAjBktC,GACCrtC,gCACGG,EACAC,gBCxBe,SAAHF,GACnB,OACEF,0BACEo6B,QAH0Cl6B,EAAPk6B,QAInC/5B,oDAJqDH,EAATG,WAAXH,EAALsqC,MAAFtqC,EAALC,MAA0CD,EAAR25B,uDCMlC,SAAH35B,OAAsBkB,EAAIlB,EAAJkB,KAC9C,OACEpB,gCACEA,uBACEK,gDAJsCH,EAAdotC,eAKxBhuC,MAAO,CAAEkD,UAAW,0BAEpBxC,gBAACiB,GACCd,MAAO,GACPC,KAAMJ,gBAACutC,4BACPltC,+CACAe,KAAMA,wBCVgB,SAAHlB,OAC3BstC,EAAattC,EAAbstC,cAEAC,EAASvtC,EAATutC,UAGA,OACEztC,gCACEA,qBACEiT,KALA/S,EAANwtC,OAMM16B,SAAU,eACV8jB,OAAO,SACPz2B,+CAVWH,EAAjBytC,mBAYM3tC,gBAACiB,GACCd,MAAO,GACPC,KAAMJ,gBAAC4tC,0BACPvtC,gDAAiDotC,EACjDrsC,KAAK,SAGPpB,wBAAMK,aAAcmtC,oCCxBJ,SAAHttC,GACnB,OACEF,gCACEA,uBAAKK,mCAH+BH,EAAT2tC,WAAF3tC,EAAJ4tC,8DCAI,SAAH5tC,GAC1B,OACEF,gCACEA,qBAAGK,aAHmDH,EAAhB6tC,kBAAF7tC,EAAR25B,6CCHb75B,EAAMC,YACzB,SAACK,EAAOrB,GACN,OACEe,gBAACguC,uBAEC/uC,IAAKA,GACDqB,GACJD,aAAcC,EAAMD,sBCEP,SAAHH,OAEhB25B,EAAQ35B,EAAR25B,SACAoU,EAAY/tC,EAAZ+tC,aACAC,EAAYhuC,EAAZguC,aACAC,EAAUjuC,EAAViuC,WAEA,OACEnuC,2BACEA,uBACEK,UATOH,EAAbkuC,cASoBA,+EAGhBpuC,0BACEquC,QACAhuC,UAAc4tC,qFAEdjuC,gBAACiB,GACCd,MAAO,GACPC,KAAMJ,gBAACsuC,YAASprC,YAAa,EAAGk3B,QAAS8T,IACzC7tC,8MAGAe,KAAK,WAEPpB,uBACEK,wDAAyD8tC,GAExDtU,mBC9BiB,SAAH35B,OAAuBquC,EAAOruC,EAAPquC,QAC9C,OACEvuC,uBACEK,qFAHwCH,EAAfsuC,uBAKxBD,SAAAA,EAASr8B,KAAI,SAACu8B,EAAQ71B,GAAK,OAC1B5Y,0BACEkG,IAAK0S,EACLwhB,QAASqU,EAAOrU,QAChB/5B,oEAAqEouC,EAAOC,YAC5EpvC,MAAOmvC,EAAOnvC,OAEbmvC,EAAOtuC,8BCbe,SAAHD,OAC5BstC,EAAattC,EAAbstC,cAEAC,EAASvtC,EAATutC,UAGA,OACEztC,gCACEA,uBAAKK,8CACHL,qBACEiT,KANF/S,EAANwtC,OAOQ16B,SAAU,eACV8jB,OAAO,SACPz2B,wEAXSH,EAAjBytC,mBAaQ3tC,gBAACiB,GACCd,MAAO,GACPC,KAAMJ,gBAAC4tC,0BACPvtC,iCAAkCotC,EAClCrsC,KAAK,WAGPpB,wBAAMK,uBAAwBmtC,yCCzBZ,SAAHttC,GACvB,OACEF,gCACEA,uBACEK,kFAJ6CH,EAAZyuC,cAAFzuC,EAAR25B,uBCAL,SAAH35B,GACrB,OACEF,gCACEA,qBAAGK,aAHwCH,EAAV0uC,YAAF1uC,EAAR25B,4BCGE,SAAH35B,OAI1B25B,EAAQ35B,EAAR25B,SAEA,OACE75B,gCACEA,uBAAKK,gCAAkC+5B,QANhCl6B,EAAX2uC,aAOM7uC,gBAACiB,GACCd,MAAO,GACPC,KAVJF,EAAJE,KAWQC,yDATCH,EAAT4uC,UAUQ1tC,KAAK,WAENy4B,gBCLIkV,GAAW,WACtB,IAAAhV,EAQI5yB,IACF,SAACM,GAAK,MAAK,CACTA,EAAMgO,mBACNhO,EAAM+N,gBACN/N,EAAMkwB,QACNlwB,EAAMsF,cACNtF,EAAMgE,YACNhE,EAAM0Y,uBACN1Y,EAAMiO,mBAERskB,WAjBAvkB,EAAkBskB,KAClBvkB,EAAeukB,KACfpC,EAAOoC,KACPhtB,EAAagtB,KACbtuB,EAAWsuB,KACX5Z,EAAsB4Z,KACtBrkB,EAAeqkB,KAaXiV,EAAc,CAClB,CACEngC,KAAM,cACNzO,KAAMJ,gBAAC0jC,4BACP1gC,GAAI,EACJqmC,SAAS,GAEX,CACEx6B,KAAM,WACNzO,KAAMJ,gBAACmD,QACPH,GAAI,EACJqmC,SAAS,GAEX,CACEx6B,KAAM,WACNzO,KAAMJ,gBAACoD,QACPJ,GAAI,EACJqmC,SAAS,GAEX,CACEx6B,KAAM,cACNzO,KAAMJ,gBAACivC,mBACPjsC,GAAI,EACJqmC,SAAS,GAEX,CACEx6B,KAAM,gBACNzO,KAAMJ,gBAACkvC,yBACPlsC,GAAI,EACJqmC,SAAS,IAQb,OAJA1M,aAAU,WACR,OAAO,eACN,IAGD38B,uBAAKK,UAAU,6BACbL,uBACEK,sFACAf,MAAO,CAAEuiC,UAAW,0BAEpB7hC,uBACEK,0EAEAL,uBAAKK,UAAU,8CACbL,wBAAMK,4BACJL,gBAACiB,GACCd,MAAO,GACPC,KAAMJ,gBAAC+C,QACP3B,KAAK,OACLf,UAAc8uC,8DAGlBnvC,wBACEK,UAAc+uC,0EAOtBpvC,uBACEK,+FACAf,MAAO,CAAEuiC,UAAW,gCAEnBmN,SAAAA,EAAa98B,KAAI,SAACm9B,GAAI,OACrBrvC,uBACEK,UACEgvC,EAAKrsC,KAAOwS,EACL85B,+DACH,qCACC55B,EACG,GACA,2CAEVxP,IAAKmpC,EAAKrsC,GACV1D,MAAQ+vC,EAAKhG,QAAgC,GAAtB,CAAEA,QAAS,QAClCjP,QAAS,SAACl1B,GACRA,EAAEoO,iBACGoC,IACHD,EAAmB45B,EAAKrsC,IACR,IAAZqsC,EAAKrsC,IACP20B,IAEc,IAAZ0X,EAAKrsC,IACP+J,IAEc,IAAZsiC,EAAKrsC,IACPyI,EAAY,IAEE,IAAZ4jC,EAAKrsC,IACPmd,OAKNngB,uBACEK,8DACEqV,EAAkB,GAAK,6BAGzB1V,wBACEK,4BAMAL,gBAACiB,GACCd,MAAO,GACPC,KAAMivC,EAAKjvC,KACXgB,KAAK,OACLf,WACEgvC,EAAKrsC,KAAOwS,ErC/HC,aqCiITE,ErCzHgB,iBALZ,0EqCkIRA,EACI,GACA,4CAIV1V,wBACEK,UACEgvC,EAAKrsC,KAAOwS,EACL45B,sDAED15B,ErCxIgB,iBALZ,+DqCiJJA,EAAkB,GAAK,2BAI9B25B,EAAKxgC,kZCpLpB,SAAS0gC,GACP,IAAIC,EAAI,GAER,SAASlnC,EAAEmnC,GACP,GAAID,EAAEC,GAAI,OAAOD,EAAEC,GAAGC,QACtB,IAAIxqC,EAAIsqC,EAAEC,GAAK,CACXnnC,EAAGmnC,EACHE,GAAG,EACHD,QAAS,IAEb,OAAOH,EAAEE,GAAGG,KAAK1qC,EAAEwqC,QAASxqC,EAAGA,EAAEwqC,QAASpnC,GAAIpD,EAAEyqC,GAAI,EAAIzqC,EAAEwqC,QAE9DpnC,EAAEimB,EAAIghB,EAAGjnC,EAAE4G,EAAIsgC,EAAGlnC,EAAElG,EAAI,SAASmtC,EAAGC,EAAGC,GACnCnnC,EAAEunC,EAAEN,EAAGC,IAAMpiC,OAAO0iC,eAAeP,EAAGC,EAAG,CACrCO,cAAc,EACdC,YAAY,EACZrqC,IAAK8pC,KAEVnnC,EAAE1F,EAAI,SAAS2sC,GACdniC,OAAO0iC,eAAeP,EAAG,aAAc,CACnC7tC,OAAO,KAEZ4G,EAAE2nC,EAAI,SAASV,GACd,IAAIC,EAAID,GAAKA,EAAEW,WAAa,WACxB,OAAOX,WACP,WACA,OAAOA,GAEX,OAAOjnC,EAAElG,EAAEotC,EAAG,IAAKA,GAAIA,GACxBlnC,EAAEunC,EAAI,SAASN,EAAGC,GACjB,OAAOpiC,OAAOC,UAAU8iC,eAAeP,KAAKL,EAAGC,IAChDlnC,EAAE8nC,EAAI,GAAI9nC,EAAEA,EAAEknC,EAAI,GA/BvB,CAgCA,CAAC,SAASD,EAAGC,EAAGlnC,GACd,IAAImnC,EAAInnC,EAAE,GACNpD,EAAIoD,EAAE,GACVinC,EAAEG,mBACE,SAAAW,EAAYd,EAAGC,GACXrtB,KAAKmuB,OAASd,EAAGrtB,KAAKouB,EAAI,IAAId,EAAED,EAAE71B,KAAM61B,EAAE91B,KAAMyI,KAAKquB,EAAI,IAAIf,EAAED,EAAEtG,MAAOsG,EAAE91B,KAAMyI,KAAKsuB,EAAI,IAAIhB,EAAED,EAAEtG,MAAOsG,EAAEvG,QAAS9mB,KAAKuuB,EAAI,IAAIjB,EAAED,EAAE71B,KAAM61B,EAAEvG,QAAS9mB,KAAKwuB,MAAQ,IAAIlB,EAAED,EAAE71B,KAAM61B,EAAE91B,IAAM81B,EAAEvtC,OAAS,GAAIkgB,KAAKyuB,KAAO,IAAInB,EAAED,EAAE71B,KAAO61B,EAAExtC,MAAQ,EAAGwtC,EAAE91B,KAAMyI,KAAK0uB,KAAO,IAAIpB,EAAED,EAAEtG,MAAQsG,EAAExtC,MAAQ,EAAGwtC,EAAE91B,KAAMyI,KAAK2uB,OAAS,IAAIrB,EAAED,EAAEtG,MAAOsG,EAAE91B,IAAM81B,EAAEvtC,OAAS,GAAIkgB,KAAK4uB,OAAS,IAAItB,EAAED,EAAEtG,MAAOsG,EAAEvG,OAASuG,EAAEvtC,OAAS,GAAIkgB,KAAK6uB,QAAU,IAAIvB,EAAED,EAAEtG,MAAQsG,EAAExtC,MAAQ,EAAGwtC,EAAEvG,QAAS9mB,KAAK8uB,QAAU,IAAIxB,EAAED,EAAE71B,KAAO61B,EAAExtC,MAAQ,EAAGwtC,EAAEvG,QAAS9mB,KAAK+uB,MAAQ,IAAIzB,EAAED,EAAE71B,KAAM61B,EAAEvG,OAASuG,EAAEvtC,OAAS,GAAIkgB,KAAKgvB,IAAM,EAAGhvB,KAAKivB,IAAM,EAAGjvB,KAAKkvB,IAAM,EAAGlvB,KAAKmvB,IAAM,EAAGnvB,KAAKovB,IAAM,EAAGpvB,KAAKqvB,IAAM,EAAGrvB,KAAKsvB,IAAM,EAAGtvB,KAAKuvB,IAAM,EAAGvvB,KAAKwvB,MAAQ,GAAIxvB,KAAKyvB,SAAW,EAAGzvB,KAAK0vB,UAAY,EAAG1vB,KAAK2vB,UAAY,EAAG3vB,KAAK4vB,GAAK,EAAI,EAAG5vB,KAAK6vB,GAAK,EAAI,EAAG7vB,KAAK8vB,IAAM,EAAG9vB,KAAK+vB,IAAM,EAAG/vB,KAAKgwB,IAAM,EAAGhwB,KAAKiwB,IAAM,EAAGjwB,KAA8CkwB,gBAAgB9C,GAC54B,IAAA+C,EAAAjC,EAAAhjC,UA6KA,OA7KAilC,EACDD,gBAAA,SAAgB9C,GACZ,IAAIC,EAAIrtB,KAAKmuB,OACThoC,EAAI6Z,KAAKowB,YAAc,IAAIrtC,EAAEqqC,GACjCptB,KAAKqc,MAAQl2B,EAAEkqC,KAAOhqC,KAAKiqC,GAAK,EAAGtwB,KAAKuwB,IAAMlqC,KAAKkqC,IAAIvwB,KAAKqc,OAAQrc,KAAKwwB,IAAMnqC,KAAKmqC,IAAIxwB,KAAKqc,OAAQrc,KAAKywB,GAAK,EAAIpqC,KAAKmjB,IAAIrjB,EAAEkqC,KAAM,GAAIrwB,KAAKyvB,SAAW,GAAKtpC,EAAEuqC,SAAWrD,EAAExtC,MAC5K,IAAIytC,EAAI,GAAKnnC,EAAEwqC,SAAWtD,EAAEvtC,OAC5B,OAAQkgB,KAAK0vB,UAAYpC,GAAK,EAAInnC,EAAEuqC,UAAW1wB,KAAK2vB,UAAYrC,GAAK,EAAInnC,EAAEuqC,UAAW1wB,KAAK8vB,IAAM,EAAI3pC,EAAEuqC,SAAU1wB,KAAK+vB,IAAM,EAAI5pC,EAAEwqC,SAAU3wB,KAAKgwB,IAAM,EAAI7pC,EAAEuqC,SAAU1wB,KAAKiwB,IAAM,EAAI9pC,EAAEwqC,SAAU3wB,KAAK4wB,aAAczqC,EAAE9I,MACnN,IAAK,WACD2iB,KAAK6wB,SACL,MACJ,IAAK,iBACD7wB,KAAK8wB,cACL,MACJ,IAAK,iBACD9wB,KAAK+wB,cACL,MACJ,IAAK,YACD/wB,KAAKgxB,UACL,MACJ,IAAK,aACDhxB,KAAKixB,WACL,MACJ,IAAK,YACDjxB,KAAKkxB,UACL,MACJ,IAAK,YACDlxB,KAAKmxB,UACL,MACJ,IAAK,YACDnxB,KAAKoxB,UACL,MACJ,IAAK,eACDpxB,KAAKqxB,aACL,MACJ,IAAK,eACDrxB,KAAKsxB,aACL,MACJ,IAAK,kBACDtxB,KAAKuxB,eACL,MACJ,IAAK,kBACDvxB,KAAKwxB,iBAEhBrB,EACDS,WAAA,WACI5wB,KAAKouB,EAAE3sC,EAAIue,KAAKmuB,OAAO32B,KAAOwI,KAAKyvB,SAAUzvB,KAAKquB,EAAE5sC,EAAIue,KAAKmuB,OAAOpH,MAAQ/mB,KAAKyvB,SAAUzvB,KAAKsuB,EAAE7sC,EAAIue,KAAKmuB,OAAOpH,MAAQ/mB,KAAKyvB,SAAUzvB,KAAKuuB,EAAE9sC,EAAIue,KAAKmuB,OAAO32B,KAAOwI,KAAKyvB,SAAUzvB,KAAKouB,EAAE1sC,EAAIse,KAAKmuB,OAAO52B,IAAMyI,KAAK0vB,UAAW1vB,KAAKquB,EAAE3sC,EAAIse,KAAKmuB,OAAO52B,IAAMyI,KAAK0vB,UAAW1vB,KAAKsuB,EAAE5sC,EAAIse,KAAKmuB,OAAOrH,OAAS9mB,KAAK2vB,UAAW3vB,KAAKuuB,EAAE7sC,EAAIse,KAAKmuB,OAAOrH,OAAS9mB,KAAK2vB,WACxWQ,EACDsB,YAAA,WACIzxB,KAAKyuB,KAAKhtC,EAAIue,KAAKouB,EAAE3sC,EAAIue,KAAKgvB,IAAKhvB,KAAKyuB,KAAK/sC,EAAIse,KAAKouB,EAAE1sC,EAAIse,KAAKivB,IAAKjvB,KAAK0uB,KAAKjtC,EAAIue,KAAKquB,EAAE5sC,EAAIue,KAAKgvB,IAAKhvB,KAAK0uB,KAAKhtC,EAAIse,KAAKquB,EAAE3sC,EAAIse,KAAKivB,IAAKjvB,KAAK8uB,QAAQrtC,EAAIue,KAAKuuB,EAAE9sC,EAAIue,KAAKkvB,IAAKlvB,KAAK8uB,QAAQptC,EAAIse,KAAKuuB,EAAE7sC,EAAIse,KAAKmvB,IAAKnvB,KAAK6uB,QAAQptC,EAAIue,KAAKsuB,EAAE7sC,EAAIue,KAAKkvB,IAAKlvB,KAAK6uB,QAAQntC,EAAIse,KAAKsuB,EAAE5sC,EAAIse,KAAKmvB,IAAKnvB,KAAK2uB,OAAOltC,EAAIue,KAAKquB,EAAE5sC,EAAIue,KAAKovB,IAAKpvB,KAAK2uB,OAAOjtC,EAAIse,KAAKquB,EAAE3sC,EAAIse,KAAKqvB,IAAKrvB,KAAK4uB,OAAOntC,EAAIue,KAAKsuB,EAAE7sC,EAAIue,KAAKovB,IAAKpvB,KAAK4uB,OAAOltC,EAAIse,KAAKsuB,EAAE5sC,EAAIse,KAAKqvB,IAAKrvB,KAAKwuB,MAAM/sC,EAAIue,KAAKouB,EAAE3sC,EAAIue,KAAKsvB,IAAKtvB,KAAKwuB,MAAM9sC,EAAIse,KAAKouB,EAAE1sC,EAAIse,KAAKuvB,IAAKvvB,KAAK+uB,MAAMttC,EAAIue,KAAKuuB,EAAE9sC,EAAIue,KAAKsvB,IAAKtvB,KAAK+uB,MAAMrtC,EAAIse,KAAKuuB,EAAE7sC,EAAIse,KAAKuvB,KACtkBY,EACDuB,YAAA,SAAYtE,EAAGC,EAAGlnC,EAAGmnC,GACjB,IAAIvqC,EAAIid,KAAK2xB,aAAavE,GACtBM,EAAI1tB,KAAK2xB,aAAarE,GACtB7sC,EAAIuf,KAAK4xB,WAAW,EAAI,EAAGxE,EAAGE,EAAGD,EAAGlnC,GACpC2nC,EAAI9tB,KAAK4xB,WAAW,EAAI,EAAGxE,EAAGE,EAAGD,EAAGlnC,GACpC8iB,EAAIjJ,KAAK2xB,aAAalxC,GACtBiB,EAAIse,KAAK2xB,aAAa7D,GAC1B,OAAO9tB,KAAK6xB,cAAc9uC,EAAG2qC,EAAGzkB,EAAGvnB,IACtCyuC,EACD2B,YAAA,SAAY1E,GACR,IAAIC,EAAIrtB,KAAK2xB,aAAavE,GAC1B,MAAO,CAACC,EAAE5rC,EAAG4rC,EAAE3rC,IAClByuC,EACDwB,aAAA,SAAavE,GACT,IACIjnC,EAAI6Z,KAAKyuB,KAETf,EAAI1tB,KAAKquB,EACT5tC,EAAIuf,KAAK0uB,KACTZ,EAAI9tB,KAAK2uB,OACT1lB,EAAIjJ,KAAKsuB,EACT5sC,EAAIse,KAAK4uB,OACTntC,EAAIue,KAAK6uB,QAETT,EAAIpuB,KAAK8uB,QAET7uC,GAAKmtC,EAAE3rC,EAAIue,KAAKmuB,OAAO1sC,GAAKue,KAAKmuB,OAAOtuC,MACxC8pB,GAAKyjB,EAAE1rC,EAAIse,KAAKmuB,OAAOzsC,GAAKse,KAAKmuB,OAAOruC,OACxCmuC,EAAI,EAAItkB,EACR0kB,EAAIruB,KAAK4xB,WAAWjoB,EAfhB3J,KAAKouB,EASLpuB,KAAKuuB,EAPLvuB,KAAKwuB,MASLxuB,KAAK+uB,OAKTvB,EAAIxtB,KAAK4xB,WAAWjoB,EAAG+jB,EAAGzkB,EAAG6kB,EAAGpsC,GAChC6sC,EAAI,IAAIjB,EAAEnnC,EAAE1E,EAAIwsC,EAAIG,EAAE3sC,EAAIkoB,EAAGxjB,EAAEzE,EAAIusC,EAAIG,EAAE1sC,EAAIioB,GAC7CyC,EAAI,IAAIkhB,EAAE7sC,EAAEgB,EAAIwsC,EAAIxsC,EAAEA,EAAIkoB,EAAGlpB,EAAEiB,EAAIusC,EAAIxsC,EAAEC,EAAIioB,GAC7CyE,EAAIpO,KAAK4xB,WAAW3xC,EAAGouC,EAAGb,EAAGe,EAAGniB,GACpC,OAAO,IAAIkhB,EAAElf,EAAE3sB,EAAG2sB,EAAE1sB,IACvByuC,EACDyB,WAAA,SAAWxE,EAAGC,EAAGlnC,EAAGpD,EAAG2qC,GACnB,IAAIjtC,EAAI,IAAI6sC,EACRQ,EAAIV,EAAIA,EAAIA,EACZnkB,EAAImkB,EAAIA,EACZ,OAAO3sC,EAAEgB,EAAIqsC,GAAK3nC,EAAE1E,EAAI,GAAKsB,EAAEtB,EAAIisC,EAAEjsC,GAAK4rC,EAAE5rC,GAAK,EAAIwnB,GAAKokB,EAAE5rC,EAAI,EAAIsB,EAAEtB,EAAIisC,EAAEjsC,GAAK,EAAI2rC,GAAKrqC,EAAEtB,EAAI4rC,EAAE5rC,GAAK4rC,EAAE5rC,EAAGhB,EAAEiB,EAAIosC,GAAK3nC,EAAEzE,EAAI,GAAKqB,EAAErB,EAAIgsC,EAAEhsC,GAAK2rC,EAAE3rC,GAAK,EAAIunB,GAAKokB,EAAE3rC,EAAI,EAAIqB,EAAErB,EAAIgsC,EAAEhsC,GAAK,EAAI0rC,GAAKrqC,EAAErB,EAAI2rC,EAAE3rC,GAAK2rC,EAAE3rC,EAAGjB,GACpN0vC,EACDU,OAAA,WACI,IAAIzD,EAAIptB,KAAKowB,YACT/C,EAAIrtB,KAAKmuB,OACThoC,EAAI,EAAIinC,EAAEsD,SACdtD,EAAEiD,KAAO,GAAKrwB,KAAKouB,EAAE3sC,GAAK0E,GAAKknC,EAAEvtC,OAASkgB,KAAK0vB,WAAa1vB,KAAKuwB,IAAKvwB,KAAKquB,EAAE5sC,GAAK0E,GAAKknC,EAAEvtC,OAASkgB,KAAK0vB,WAAa1vB,KAAKuwB,IAAKvwB,KAAKouB,EAAE1sC,IAAM2rC,EAAEvtC,OAASkgB,KAAK0vB,YAAc,EAAI1vB,KAAKwwB,KAAMxwB,KAAKquB,EAAE3sC,IAAM2rC,EAAEvtC,OAASkgB,KAAK0vB,YAAc,EAAI1vB,KAAKwwB,KAAMxwB,KAAKsuB,EAAE7sC,GAAKue,KAAK2vB,UAAY3vB,KAAKuwB,IAAKvwB,KAAKuuB,EAAE9sC,GAAKue,KAAK2vB,UAAY3vB,KAAKuwB,IAAKvwB,KAAKsuB,EAAE5sC,GAAKse,KAAK2vB,WAAa3vB,KAAKwwB,IAAM,GAAIxwB,KAAKuuB,EAAE7sC,GAAKse,KAAK2vB,WAAa3vB,KAAKwwB,IAAM,IAAMpD,EAAEiD,KAAO,IAAMrwB,KAAKuuB,EAAE9sC,GAAK0E,GAAKknC,EAAEvtC,OAASkgB,KAAK2vB,WAAa3vB,KAAKuwB,IAAKvwB,KAAKsuB,EAAE7sC,GAAK0E,GAAKknC,EAAEvtC,OAASkgB,KAAK2vB,WAAa3vB,KAAKuwB,IAAKvwB,KAAKuuB,EAAE7sC,IAAM2rC,EAAEvtC,OAASkgB,KAAK2vB,YAAc3vB,KAAKwwB,IAAM,GAAIxwB,KAAKsuB,EAAE5sC,IAAM2rC,EAAEvtC,OAASkgB,KAAK2vB,YAAc3vB,KAAKwwB,IAAM,GAAIxwB,KAAKouB,EAAE3sC,GAAKue,KAAK0vB,UAAY1vB,KAAKuwB,IAAKvwB,KAAKquB,EAAE5sC,GAAKue,KAAK0vB,UAAY1vB,KAAKuwB,IAAKvwB,KAAKouB,EAAE1sC,GAAKse,KAAK0vB,WAAa,EAAI1vB,KAAKwwB,KAAMxwB,KAAKquB,EAAE3sC,GAAKse,KAAK0vB,WAAa,EAAI1vB,KAAKwwB,MAAOxwB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAAezxB,KAAKyuB,KAAKhtC,GAAKue,KAAKgvB,KAAOhvB,KAAKwwB,IAAMxwB,KAAKywB,GAAK,GAAIzwB,KAAKyuB,KAAK/sC,GAAKse,KAAKgvB,IAAMhvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK0uB,KAAKjtC,GAAKue,KAAKgvB,KAAO,EAAIhvB,KAAKwwB,IAAMxwB,KAAKywB,IAAKzwB,KAAK0uB,KAAKhtC,GAAKse,KAAKgvB,IAAMhvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK8uB,QAAQrtC,GAAKue,KAAKkvB,KAAOlvB,KAAKwwB,IAAMxwB,KAAKywB,GAAK,GAAIzwB,KAAK8uB,QAAQptC,GAAKse,KAAKkvB,IAAMlvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK6uB,QAAQptC,GAAKue,KAAKkvB,KAAO,EAAIlvB,KAAKwwB,IAAMxwB,KAAKywB,IAAKzwB,KAAK6uB,QAAQntC,GAAKse,KAAKkvB,IAAMlvB,KAAKuwB,IAAMvwB,KAAKywB,IACrvCN,EACDgB,QAAA,WACI,IAAI/D,EAAIptB,KAAKowB,YACbpwB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAAezxB,KAAKyuB,KAAK/sC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAK8vB,KAAO,EAAI9vB,KAAKuvB,IAAMvvB,KAAKqvB,KAAMrvB,KAAK0uB,KAAKhtC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAK8vB,KAAO9vB,KAAKuvB,IAAM,EAAIvvB,KAAKqvB,KAAMrvB,KAAK8uB,QAAQptC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAKgwB,KAAO,EAAIhwB,KAAKuvB,IAAMvvB,KAAKqvB,KAAMrvB,KAAK6uB,QAAQntC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAKgwB,KAAOhwB,KAAKuvB,IAAM,EAAIvvB,KAAKqvB,MACrTc,EACDe,QAAA,WACIlxB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAC3B,IAAIrE,EAAIptB,KAAKowB,YACbpwB,KAAKyuB,KAAK/sC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAK8vB,KAAO9vB,KAAKuvB,IAAMvvB,KAAKqvB,KAAMrvB,KAAK0uB,KAAKhtC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAK8vB,KAAO9vB,KAAKuvB,IAAMvvB,KAAKqvB,KAAMrvB,KAAK8uB,QAAQptC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAKgwB,KAAOhwB,KAAKuvB,IAAMvvB,KAAKqvB,KAAMrvB,KAAK6uB,QAAQntC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAKgwB,KAAOhwB,KAAKuvB,IAAMvvB,KAAKqvB,MAC3Pc,EACDc,SAAA,WACIjxB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAAezxB,KAAuByuB,KAAKhtC,GAAKue,KAAKgvB,KAAOhvB,KAAKwwB,IAAMxwB,KAAKywB,GAAK,GAAIzwB,KAAKyuB,KAAK/sC,GAAKse,KAAKgvB,IAAMhvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK0uB,KAAKjtC,GAAKue,KAAKgvB,KAAO,EAAIhvB,KAAKwwB,IAAMxwB,KAAKywB,IAAKzwB,KAAK0uB,KAAKhtC,GAAKse,KAAKgvB,IAAMhvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK8uB,QAAQrtC,GAAKue,KAAKkvB,KAAOlvB,KAAKwwB,IAAMxwB,KAAKywB,GAAK,GAAIzwB,KAAK8uB,QAAQptC,GAAKse,KAAKkvB,IAAMlvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK6uB,QAAQptC,GAAKue,KAAKkvB,KAAO,EAAIlvB,KAAKwwB,IAAMxwB,KAAKywB,IAAKzwB,KAAK6uB,QAAQntC,GAAKse,KAAKkvB,IAAMlvB,KAAKuwB,IAAMvwB,KAAKywB,IAC/cN,EACDa,QAAA,WACIhxB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAAezxB,KAAuByuB,KAAKhtC,GAAKue,KAAKgvB,KAAOhvB,KAAKwwB,IAAMxwB,KAAKywB,GAAK,GAAIzwB,KAAKyuB,KAAK/sC,GAAKse,KAAKgvB,IAAMhvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK0uB,KAAKjtC,GAAKue,KAAKgvB,KAAO,EAAIhvB,KAAKwwB,IAAMxwB,KAAKywB,IAAKzwB,KAAK0uB,KAAKhtC,GAAKse,KAAKgvB,IAAMhvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK8uB,QAAQrtC,GAAKue,KAAKkvB,KAAOlvB,KAAKwwB,IAAMxwB,KAAKywB,GAAK,GAAIzwB,KAAK8uB,QAAQptC,GAAKse,KAAKkvB,IAAMlvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK6uB,QAAQptC,GAAKue,KAAKkvB,KAAO,EAAIlvB,KAAKwwB,IAAMxwB,KAAKywB,IAAKzwB,KAAK6uB,QAAQntC,GAAKse,KAAKkvB,IAAMlvB,KAAKuwB,IAAMvwB,KAAKywB,IAC/cN,EACDW,YAAA,WACI9wB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAAezxB,KAAuB8uB,QAAQrtC,GAAKue,KAAKkvB,KAAOlvB,KAAKwwB,IAAMxwB,KAAKywB,GAAK,GAAIzwB,KAAK8uB,QAAQptC,GAAKse,KAAKkvB,IAAMlvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK6uB,QAAQptC,GAAKue,KAAKkvB,KAAO,EAAIlvB,KAAKwwB,IAAMxwB,KAAKywB,IAAKzwB,KAAK6uB,QAAQntC,GAAKse,KAAKkvB,IAAMlvB,KAAKuwB,IAAMvwB,KAAKywB,IAC3QN,EACDY,YAAA,WACI/wB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAAezxB,KAAuByuB,KAAKhtC,GAAKue,KAAKgvB,KAAOhvB,KAAKwwB,IAAMxwB,KAAKywB,GAAK,GAAIzwB,KAAKyuB,KAAK/sC,GAAKse,KAAKgvB,IAAMhvB,KAAKuwB,IAAMvwB,KAAKywB,GAAIzwB,KAAK0uB,KAAKjtC,GAAKue,KAAKgvB,KAAO,EAAIhvB,KAAKwwB,IAAMxwB,KAAKywB,IAAKzwB,KAAK0uB,KAAKhtC,GAAKse,KAAKgvB,IAAMhvB,KAAKuwB,IAAMvwB,KAAKywB,IAC/PN,EACDmB,WAAA,WACItxB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAC3B,IAAIrE,EAAIptB,KAAKowB,YACbpwB,KAAKyuB,KAAK/sC,GAAK0rC,EAAEiD,KAAOrwB,KAAK8vB,IAAM9vB,KAAKuvB,IAAKvvB,KAAK0uB,KAAKhtC,GAAK0rC,EAAEiD,KAAOrwB,KAAK8vB,IAAM9vB,KAAKqvB,IAAKrvB,KAAK8uB,QAAQptC,GAAK0rC,EAAEiD,KAAOrwB,KAAKgwB,IAAMhwB,KAAKuvB,IAAKvvB,KAAK6uB,QAAQntC,GAAK0rC,EAAEiD,KAAOrwB,KAAKgwB,IAAMhwB,KAAKqvB,IAAKrvB,KAAK2uB,OAAOltC,GAAK2rC,EAAEiD,KAAOrwB,KAAK+vB,IAAM/vB,KAAKgvB,IAAKhvB,KAAK4uB,OAAOntC,GAAK2rC,EAAEiD,KAAOrwB,KAAK+vB,IAAM/vB,KAAKkvB,IAAKlvB,KAAKwuB,MAAM/sC,GAAK2rC,EAAEiD,KAAOrwB,KAAKiwB,IAAMjwB,KAAKgvB,IAAKhvB,KAAK+uB,MAAMttC,GAAK2rC,EAAEiD,KAAOrwB,KAAKiwB,IAAMjwB,KAAKkvB,KAClXiB,EACDkB,WAAA,WACIrxB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAC3B,IAAIrE,EAAIptB,KAAKowB,YACT/C,GAAKrtB,KAAKuvB,IAAMvvB,KAAKqvB,KAAO,EAC5BlpC,GAAK6Z,KAAKgvB,IAAMhvB,KAAKkvB,KAAO,EAChClvB,KAAKyuB,KAAK/sC,GAAK0rC,EAAEiD,KAAOrwB,KAAK8vB,IAAMzC,EAAGrtB,KAAK0uB,KAAKhtC,GAAK0rC,EAAEiD,KAAOrwB,KAAK8vB,IAAMzC,EAAGrtB,KAAK8uB,QAAQptC,GAAK0rC,EAAEiD,KAAOrwB,KAAKgwB,IAAM3C,EAAGrtB,KAAK6uB,QAAQntC,GAAK0rC,EAAEiD,KAAOrwB,KAAKgwB,IAAM3C,EAAGrtB,KAAK2uB,OAAOltC,GAAK2rC,EAAEiD,KAAOrwB,KAAK+vB,IAAM5pC,EAAG6Z,KAAK4uB,OAAOntC,GAAK2rC,EAAEiD,KAAOrwB,KAAK+vB,IAAM5pC,EAAG6Z,KAAKwuB,MAAM/sC,GAAK2rC,EAAEiD,KAAOrwB,KAAKiwB,IAAM9pC,EAAG6Z,KAAK+uB,MAAMttC,GAAK2rC,EAAEiD,KAAOrwB,KAAKiwB,IAAM9pC,GAC5TgqC,EACDiB,QAAA,WACI,IAAIhE,EAAIptB,KAAKowB,YACbpwB,KAAKouB,EAAE1sC,GAAK0rC,EAAEiD,KAAOrwB,KAAK8vB,IAAM3B,OAAOruC,OAAQkgB,KAAKuuB,EAAE7sC,GAAK0rC,EAAEiD,KAAOrwB,KAAKgwB,IAAM7B,OAAOruC,OAAQkgB,KAAKquB,EAAE3sC,GAAK0rC,EAAEiD,KAAOrwB,KAAK8vB,IAAM3B,OAAOruC,OAAQkgB,KAAKsuB,EAAE5sC,GAAK0rC,EAAEiD,KAAOrwB,KAAKgwB,IAAM7B,OAAOruC,OAAQkgB,KAAK+xB,gBAAiB/xB,KAAKyxB,cACvN,IAAIpE,EAAIrtB,KAAKuvB,IAAMvvB,KAAKqvB,IACxBrvB,KAAKyuB,KAAK/sC,GAAK0rC,EAAEiD,KAAOrwB,KAAK8vB,IAAMzC,EAAGrtB,KAAK0uB,KAAKhtC,GAAK0rC,EAAEiD,KAAOrwB,KAAK8vB,IAAMzC,EAAGrtB,KAAK8uB,QAAQptC,GAAK0rC,EAAEiD,KAAOrwB,KAAKgwB,IAAM3C,EAAGrtB,KAAK6uB,QAAQntC,GAAK0rC,EAAEiD,KAAOrwB,KAAKgwB,IAAM3C,GAC9J8C,EACDqB,aAAA,WACIxxB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAC3B,IAAIrE,EAAIptB,KAAKowB,YACbpwB,KAAKyuB,KAAK/sC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAK8vB,KAAO9vB,KAAKuvB,IAAMvvB,KAAKqvB,KAAMrvB,KAAK0uB,KAAKhtC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAK8vB,KAAO9vB,KAAKuvB,IAAMvvB,KAAKqvB,MACzHc,EACDoB,aAAA,WACIvxB,KAAK+xB,gBAAiB/xB,KAAKyxB,cAC3B,IAAIrE,EAAIptB,KAAKowB,YACbpwB,KAAK8uB,QAAQptC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAKgwB,KAAOhwB,KAAKuvB,IAAMvvB,KAAKqvB,KAAMrvB,KAAK6uB,QAAQntC,GAAK,EAAI0rC,EAAEiD,KAAOrwB,KAAKgwB,KAAOhwB,KAAKuvB,IAAMvvB,KAAKqvB,MAC/Hc,EACD4B,cAAA,WACI/xB,KAAKgvB,KAAOhvB,KAAKquB,EAAE5sC,EAAIue,KAAKouB,EAAE3sC,GAAK,EAAGue,KAAKivB,KAAOjvB,KAAKquB,EAAE3sC,EAAIse,KAAKouB,EAAE1sC,GAAK,EAAGse,KAAKkvB,KAAOlvB,KAAKsuB,EAAE7sC,EAAIue,KAAKuuB,EAAE9sC,GAAK,EAAGue,KAAKmvB,KAAOnvB,KAAKsuB,EAAE5sC,EAAIse,KAAKuuB,EAAE7sC,GAAK,EAAGse,KAAKovB,KAAOpvB,KAAKsuB,EAAE7sC,EAAIue,KAAKquB,EAAE5sC,GAAK,EAAGue,KAAKqvB,KAAOrvB,KAAKsuB,EAAE5sC,EAAIse,KAAKquB,EAAE3sC,GAAK,EAAGse,KAAKsvB,KAAOtvB,KAAKuuB,EAAE9sC,EAAIue,KAAKouB,EAAE3sC,GAAK,EAAGue,KAAKuvB,KAAOvvB,KAAKuuB,EAAE7sC,EAAIse,KAAKouB,EAAE1sC,GAAK,GAChTyuC,EACD0B,cAAA,SAAczE,EAAGC,EAAGlnC,EAAGpD,GACnB,IAAI2qC,EAAI1tB,KAAK4vB,GACTnvC,EAAIitC,EAAIA,EAAIA,EACZI,EAAI,EAAIJ,EACRzkB,EAAI6kB,EAAIA,EAAIA,EACZpsC,EAAIse,KAAK6vB,GACTpuC,EAAIC,EAAIA,EAAIA,EACZqL,EAAI,EAAIrL,EACR0sC,EAAIrhC,EAAIA,EAAIA,EACZuhC,EAAI,EAAIZ,EAAII,EACZ7tC,EAAI,GACRA,EAAEwB,GAAK0E,EAAE1E,EAAIwnB,EAAImkB,EAAE3rC,EAAIhB,EAAI4sC,EAAE5rC,GAAK6sC,EAAGruC,EAAEyB,GAAKyE,EAAEzE,EAAIunB,EAAImkB,EAAE1rC,EAAIjB,EAAI4sC,EAAE3rC,GAAK4sC,EACvE,IAAI3kB,EAAI,EAAIjoB,EAAIqL,EACZkhC,EAAI,GACRA,EAAExsC,GAAKsB,EAAEtB,EAAI2sC,EAAIhB,EAAE3rC,EAAIA,EAAI4rC,EAAE5rC,GAAKkoB,EAAGskB,EAAEvsC,GAAKqB,EAAErB,EAAI0sC,EAAIhB,EAAE1rC,EAAID,EAAI4rC,EAAE3rC,GAAKioB,EACvE,IAAI0kB,EAAI,GACRA,EAAE5sC,GAAKC,EAAIzB,EAAEwB,EAAIisC,EAAIO,EAAExsC,IAAMqsC,EAAIG,EAAExsC,EAAIsL,EAAI9M,EAAEwB,GAAI4sC,EAAE3sC,GAAKA,EAAIzB,EAAEyB,EAAIgsC,EAAIO,EAAEvsC,IAAMosC,EAAIG,EAAEvsC,EAAIqL,EAAI9M,EAAEyB,GAAIg9B,MAAM2P,EAAE5sC,KAAO4sC,EAAE5sC,EAAI,GAAIi9B,MAAM2P,EAAE3sC,KAAO2sC,EAAE3sC,EAAI,GAChJ,IAAI8rC,EAAI,GACJe,EAAI,GACRA,EAAE9sC,EAAIxB,EAAEwB,GAAKqsC,EAAIO,EAAE5sC,EAAIisC,GAAIa,EAAE7sC,EAAIzB,EAAEyB,GAAKosC,EAAIO,EAAE3sC,EAAIgsC,GAAIF,EAAE/rC,EAAI4sC,EAAE5sC,EAAI8sC,EAAE9sC,EAAG+rC,EAAE9rC,EAAI2sC,EAAE3sC,EAAI6sC,EAAE7sC,EACrF,IAAI0qB,EAAI,IAAIkhB,EAAEE,EAAE/rC,EAAG+rC,EAAE9rC,GACjB0sB,EAAI,IAAIkf,EAAEiB,EAAE9sC,EAAG8sC,EAAE7sC,GACrB,MAAO,CAAC0qB,EAAE3qB,EAAG2qB,EAAE1qB,EAAG0sB,EAAE3sB,EAAG2sB,EAAE1sB,EAAG2rC,EAAE5rC,EAAG4rC,EAAE3rC,IACtCwsC,MAEN,SAASd,EAAGC,GACXD,EAAEG,mBACE,SAAAyE,EAAY5E,EAAOC,GACf,YADQD,IAAAA,EAAI,YAAGC,IAAAA,EAAI,GACf,iBAAmBD,GAAK,iBAAmBC,EAAG,MAAM,IAAI4E,UAAU,kBACtE,IAAI9rC,EAAIinC,GAAK,EACTE,EAAID,GAAK,EACblnC,IAAMA,EAAIgvB,SAAS,IAAMhvB,GAAK,KAAMmnC,IAAMA,EAAInY,SAAS,IAAMmY,GAAK,KAAMttB,KAAKkyB,OAAS,CAAC/rC,EAAGmnC,GAAIttB,KAAK,GAAK7Z,EAAG6Z,KAAK,GAAKstB,UAOxH,SANA0E,OAAAjuC,QAAAP,IAOD,WACI,OAAOwc,KAAKkyB,OAAO,IACtB3uC,IARD,SAAM6pC,GACFptB,KAAK,GAAKotB,EAAGptB,KAAKkyB,OAAO,GAAK9E,KACjCrpC,QAAAP,IAOD,WACI,OAAOwc,KAAKkyB,OAAO,IACtB3uC,IARD,SAAM6pC,GACFptB,KAAK,GAAKotB,EAAGptB,KAAKkyB,OAAO,GAAK9E,ogBACjC4E,MAQN,SAAS5E,EAAGC,GACXD,EAAEG,mBAGG,OAFD,SAAYH,EAAGC,EAAGlnC,EAAGmnC,GACjBttB,KAAKve,EAAI2rC,EAAGptB,KAAKte,EAAI2rC,EAAGrtB,KAAKngB,MAAQsG,EAAG6Z,KAAKlgB,OAASwtC,EAAGttB,KAAKzI,IAAM81B,EAAGrtB,KAAK8mB,OAASuG,EAAIC,EAAGttB,KAAKxI,KAAO41B,EAAGptB,KAAK+mB,MAAQqG,EAAIjnC,OAGrI,SAASinC,EAAGC,EAAGlnC,GACdA,EAAE,GACFinC,EAAEG,mBAGG,OAFD,SAAYH,GACRptB,KAAK3iB,KAAO+vC,EAAE/vC,MAAQ,EAAG2iB,KAAKqwB,KAAOjD,EAAEiD,MAAQ,EAAGrwB,KAAK0wB,SAAWtD,EAAEsD,UAAY,EAAG1wB,KAAK2wB,SAAWvD,EAAEuD,UAAY,EAAG3wB,KAAKmyB,SAAW/E,EAAE+E,WAAY,OAG3J,SAAS/E,EAAGC,EAAGlnC,GACd,IAAImnC,EAAInnC,EAAE,GACNpD,EAAIoD,EAAE,GACNunC,EAAIvnC,EAAE,GAMN4G,aACI,SAAAA,EAAYqgC,GACRptB,KAAKvX,KAAO,GAAIuX,KAAKoyB,SAAW,GAAIpyB,KAAKqyB,YAAYjF,GACxD,IAAAkF,EAAAvlC,EAAA7B,UA0FA,OA1FAonC,EACDD,YAAA,SAAYjF,GACR,IAAIC,EAAI,GACJlnC,EAAI,GACRinC,EAAEmF,MAAM,6BAA6Bl6B,SAAQ,SAAA+0B,GACzC,IAAIE,EAAIF,EAAE,GACNrqC,EAAIqqC,EAAEmF,MAAM,cAChBlF,EAAErzB,KAAKszB,GAAInnC,EAAE6T,KAAItP,MAANvE,EAAUpD,EAAEgN,IAAIyiC,gBAC3BxyB,KAAKoyB,SAAW/E,EAAGrtB,KAAKvX,KAAOtC,GACtCmsC,EACD/iB,MAAA,SAAM6d,EAAGC,YAAAA,IAAAA,EAAI,GACT,GAAKA,IAAMA,EAAID,GAEf,IADA,IAAMjnC,EAAI6Z,KAAKvX,KACN6kC,EAAI,EAAGA,EAAInnC,EAAEK,OAAQ8mC,GAAK,EAAGnnC,EAAEmnC,IAAMF,EAAGjnC,EAAEmnC,EAAI,IAAMD,GAChEiF,EACDG,KAAA,SAAKrF,GAWD,IAVA,IAAIC,EAAI,IAAItqC,EAAEqqC,EAAGptB,KAAK0yB,iBAClBvsC,EAAI6Z,KAAKoyB,SACT1E,EAAI1tB,KAAKvX,KACTqlC,EAAI,GACJ7kB,EAAI,IAAIqkB,EACR5rC,EAAI,IAAI4rC,EACRvgC,EAAI,IAAIugC,EACRc,EAAI,IAAId,EACRgB,EAAI,EACJruC,EAAI,IAAIqtC,EACHF,EAAI,EAAGA,EAAIjnC,EAAEK,OAAQ4mC,IAC1B,OAAQjnC,EAAEinC,IACN,IAAK,IACDjnC,EAAEinC,GArClB,IAqC0BnkB,EAAI,IAAIqkB,GAAG,EAAIc,EAAE,GAAKV,EAAEY,IAAM,GAAI,EAAIF,EAAE,GAAKV,EAAEY,EAAI,IAAM,GAAI5sC,EAAI,IAAI4rC,GAAGc,EAAE,GAAK,EAAIV,EAAEY,IAAM,GAAIF,EAAE,GAAK,EAAIV,EAAEY,EAAI,IAAM,GAAIruC,EAAI,IAAIqtC,EAAEI,EAAEY,GAAIZ,EAAEY,EAAI,IAAKR,EAAIA,EAAEr7B,OAAO46B,EAAEqE,YAAYtD,EAAGnlB,EAAGvnB,EAAGzB,IAAKmuC,EAAInuC,EAAGquC,GAAK,EACpN,MACJ,IAAK,IACDnoC,EAAEinC,GAxClB,IAwC0BnkB,EAAI,IAAIqkB,GAAG,EAAII,EAAEY,GAAKF,EAAE3sC,GAAK,GAAI,EAAIisC,EAAEY,EAAI,GAAKF,EAAE1sC,GAAK,GAAIA,EAAI,IAAI4rC,GAAG,EAAII,EAAEY,GAAKZ,EAAEY,EAAI,IAAM,GAAI,EAAIZ,EAAEY,EAAI,GAAKZ,EAAEY,EAAI,IAAM,GAAIruC,EAAI,IAAIqtC,EAAEI,EAAEY,EAAI,GAAIZ,EAAEY,EAAI,IAAKR,EAAIA,EAAEr7B,OAAO46B,EAAEqE,YAAYtD,EAAGnlB,EAAGvnB,EAAGzB,IAAKmuC,EAAInuC,EAAGquC,GAAK,EAC9N,MACJ,IAAK,IACDF,EAAIrhC,EAAI,IAAIugC,EAAEI,EAAEY,GAAIZ,EAAEY,EAAI,IAAKR,EAAIA,EAAEr7B,OAAO46B,EAAEyE,YAAY1D,IAAKE,GAAK,EACpE,MACJ,IAAK,IACDR,EAAIA,EAAEr7B,OAAO46B,EAAEqE,YAAYtD,EAAG,IAAId,EAAEI,EAAEY,GAAIZ,EAAEY,EAAI,IAAK,IAAIhB,EAAEI,EAAEY,EAAI,GAAIZ,EAAEY,EAAI,IAAK,IAAIhB,EAAEI,EAAEY,EAAI,GAAIZ,EAAEY,EAAI,MAAOF,EAAI,IAAId,EAAEI,EAAEY,EAAI,GAAIZ,EAAEY,EAAI,IAAKA,GAAK,EACjJ,MACJ,IA5CZ,IA6CgBF,EAAIrhC,EAGhBiT,KAAKvX,KAAOqlC,GACfwE,EACDK,OAAA,WAGI,IAFA,IAAIvF,EAAI,GACJC,EAAIrtB,KAAKvX,KAAKwH,QACT9J,EAAI,EAAGA,EAAI6Z,KAAKoyB,SAAS5rC,OAAQL,IAAK,CAC3C,IAAImnC,EAAIttB,KAAKoyB,SAASjsC,GAClBpD,EAAI,EACR,OAAQuqC,GACJ,IAAK,IACL,IAAK,IACDvqC,EAAI,EACJ,MACJ,IAAK,IACDA,EAAI,EACJ,MACJ,IAAK,IACDA,EAAI,EAEZqqC,EAAEpzB,KAAKszB,EAAID,EAAEtV,OAAO,EAAGh1B,GAAGmN,KAAK,MAEnC,OAAOk9B,EAAEl9B,KAAK,MACjBoiC,EACDI,cAAA,WAGI,IAFA,IAESvsC,EAAGmnC,EAFRF,EAAIptB,KAAKoyB,SACT/E,EAAIrtB,KAAKvX,KACE1F,EAAI,CACX6vC,KAAM,EAAI,EACVC,KAAM,EAAI,EACVC,MAAO,EAAI,EACXC,MAAO,EAAI,GACZtxC,EAAI,EAAGsL,EAAI,EAAGA,EAAIqgC,EAAE5mC,OAAQuG,IAAK,CACpC,OAAQqgC,EAAErgC,IACN,IAlFZ,IAmFY,IApFZ,IAqFgB5G,EAAIknC,EAAE5rC,GAAI6rC,EAAID,EAAE5rC,EAAI,GAAIA,GAAK,EAC7B,MACJ,IAxFZ,IAyFgB0E,EAAIknC,EAAE5rC,EAAI,GAAI6rC,EAAID,EAAE5rC,EAAI,GAAIA,GAAK,EACjC,MACJ,IA5FZ,IA6FgB0E,EAAIknC,EAAE5rC,EAAI,GAAI6rC,EAAID,EAAE5rC,EAAI,GAAIA,GAAK,EAEzCsB,EAAE6vC,KAAOvsC,KAAKw4B,IAAI14B,EAAGpD,EAAE6vC,MAAO7vC,EAAE+vC,KAAOzsC,KAAKu4B,IAAIz4B,EAAGpD,EAAE+vC,MAAO/vC,EAAE8vC,KAAOxsC,KAAKw4B,IAAIyO,EAAGvqC,EAAE8vC,MAAO9vC,EAAEgwC,KAAO1sC,KAAKu4B,IAAI0O,EAAGvqC,EAAEgwC,MAErH,OAAOhwC,EAAE+vC,OAAS,EAAI,EAAI,KAAO,IAAIpF,EAAE3qC,EAAE6vC,KAAM7vC,EAAE8vC,KAAM9vC,EAAE+vC,KAAO/vC,EAAE6vC,KAAM7vC,EAAEgwC,KAAOhwC,EAAE8vC,OACtF9lC,KAETqgC,EAAEG,QAAUxgC,EAAG,oBAAsBoC,SAAWA,OAAO6jC,KAAOjmC,MC7VlE,IAAMkmC,GAAa,SAAHl1C,GACd,OACEF,gCACEA,uBAAKK,UAAU,4CACbL,uBAAKK,UAAU,kEACbL,wBAAMK,UAAU,6BALIH,EAARqV,SAKuC5M,YACnD3I,wBAAMK,UAAU,gGCgBpBg1C,GAAe,CACnB,CACExmC,KAAM,QACNivB,IAAK,qGAEP,CACEjvB,KAAM,iBACNivB,IAAK,kFAEP,CACEjvB,KAAM,WACNivB,IAAK,mFAEP,CACEjvB,KAAM,WACNivB,IAAK,sFAEP,CACEjvB,KAAM,qBACNivB,IAAK,wGAEP,CACEjvB,KAAM,eACNivB,IAAK,wFAEP,CACEjvB,KAAM,UACNivB,IAAK,uFAEP,CACEjvB,KAAM,aACNivB,IAAK,gFAEP,CACEjvB,KAAM,kBACNivB,IAAK,uFAEP,CACEjvB,KAAM,SACNivB,IAAK,uFAEP,CACEjvB,KAAM,aACNivB,IAAK,uFAEP,CACEjvB,KAAM,aACNivB,IAAK,qFAEP,CACEjvB,KAAM,WACNivB,IAAK,+FAEP,CACEjvB,KAAM,2BACNivB,IAAK,wGAEP,CACEjvB,KAAM,UACNivB,IAAK,uFAEP,CACEjvB,KAAM,UACNivB,IAAK,uFAEP,CACEjvB,KAAM,oBACNivB,IAAK,0FAGP,CACEjvB,KAAM,QACNivB,IAAK,oFAEP,CACEjvB,KAAM,YACNivB,IAAK,oFAEP,CACEjvB,KAAM,OACNivB,IAAK,kFAEP,CACEjvB,KAAM,2BACNivB,IAAK,wGAEP,CACEjvB,KAAM,SACNivB,IAAK,uFAEP,CACEjvB,KAAM,kBACNivB,IAAK,uFAEP,CACEjvB,KAAM,UACNivB,IAAK,kFAEP,CACEjvB,KAAM,QACNivB,IAAK,wFAEP,CACEjvB,KAAM,aACNivB,IAAK,wFAIIwX,GAAY,iBACvBC,SAAO,CAAEC,IAAAA,QACT,IAAMza,EAAe5zB,GAAYY,WAAWmO,gBACtCuC,EAAStR,GAAYY,WAAW8N,aACtCkkB,EASI5yB,IACF,SAACM,GAAK,MAAK,CACTA,EAAM2O,UACN3O,EAAMwO,iBACNxO,EAAMyO,gBACNzO,EAAMsO,SACNtO,EAAMyO,gBACNzO,EAAMJ,eACNI,EAAM8N,SACN9N,EAAMH,qBAER0yB,WAnBA5jB,EAAS2jB,KACT9jB,EAAgB8jB,KAChB7jB,EAAe6jB,KACfhkB,EAAQgkB,KACR5hB,EAAS4hB,KACT1yB,EAAc0yB,KACdxkB,EAAQwkB,KACRzyB,EAAiByyB,KAcnBgJ,EAAgDC,YAAS,GAAlDyS,EAAgB1S,KAAE2S,EAAmB3S,KAI5CgD,EAAkC/C,WAAS,CACzC2S,MAAM,EACNC,QAAQ,EACRC,WAAW,IAHNv8B,EAASysB,KAAE+P,EAAY/P,KAK9BG,EAAwClD,WAAwB,MAAzD+S,EAAY7P,KAAE8P,EAAe9P,KACpCG,EAAkCrD,WAAS,GAApCiT,EAAS5P,KAAE6P,EAAY7P,KAC9BI,EAAwCzD,WAAS,IAA1CmT,EAAY1P,KAAE2P,EAAe3P,KACpCE,EAAoC3D,WAClCjI,GAAgBA,EAAaxhB,KAAOwhB,EAAaxhB,KAAK5Q,OAAS,GAD1D0tC,EAAU1P,KAAE2P,EAAa3P,KAGhC4P,EAAsDvT,YAAU,IAAzDwT,EAAmBD,KAAEE,EAAsBF,KAClDG,EAAsD1T,YAAU,IAAzD2T,EAAmBD,KAAEE,EAAsBF,KAClDG,EAA0C7T,YAAS,GAA5CsD,EAAauQ,KAAEtQ,EAAgBsQ,KAEtCC,EAA0C9T,WAAS,CACjDnoB,SAAS,EACTma,SAAU,GACVG,MAAO,GACPqQ,SAAU,OAJLkB,GAAaoQ,KAAEvR,GAAgBuR,KAMtCC,GAAgC/T,WAAS,MAAlCrB,GAAQoV,MAAEtR,GAAWsR,MAgC5Bpa,aAAU,WACHzmB,GACL/O,GAAYC,SAAS,CAAE2O,SAAUG,EAAgBqD,SAChD,CAACrD,IACJymB,aAAU,WAEe,SAArB1mB,GACqB,UAArBA,GACqB,cAArBA,GACqB,SAArBA,EAEAigC,EAAa,GAEQ,UAArBjgC,GACqB,oBAArBA,GAEAigC,EAAa,KAEd,CAACjgC,IACJ,IAAM+gC,cAAU,IAAA92C,EAAAyL,EAAAC,IAAAC,MAAG,SAAAC,EAAOgQ,GAAO,IAAAm7B,EAAAC,EAAA,OAAAtrC,IAAAK,eAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAiC/B,OAhCI6qC,EAAW,GACXC,EAAU,KACdp7B,EAAQtB,SAAQ,SAAC28B,GACfF,KAAQriC,OACHqiC,GACH,IAAI73B,SAAQ,SAACC,GAEX,GAAoB,SAAhB83B,EAAO33C,KAAiB,CAE1B,IAAI43C,EAAa/B,GAAar1B,QAC5B,SAAC6vB,GAAC,OAAKA,EAAEhhC,OAASsoC,EAAOl+B,cACzB,GAAG6kB,IAELyD,OAAK6V,GAAY,SAACvyC,EAAOwyC,GACnBxyC,GACF6H,QAAQ7H,MAAMA,GAGhB,IAAMmM,EAAOqmC,EAAKC,QAAQH,EAAO59B,KAAM,EAAG,EAAG49B,EAAOh+B,SAAU,CAC5DA,SAAUg+B,EAAOxxC,IAAI,YACrBrD,KAAM60C,EAAOxxC,IAAI,QACjBpD,OAAQ40C,EAAOxxC,IAAI,UACnBzC,YAAai0C,EAAOxxC,IAAI,iBAEpB4xC,EAAa,IAAIpqC,SAAOgoC,KAAKnkC,EAAKwmC,WAAW,IAAK,IAExDn4B,EADA63B,EAAUK,eAOpBrrC,EAAAE,OACMgT,QAAQq4B,IAAIR,GAAS,OAAA,OAAA/qC,EAAAM,gBAGpB0qC,GAAO,OAAA,UAAA,OAAAhrC,EAAAS,UAAAb,OACf,gBAtCec,GAAA,OAAA1M,EAAA2M,WAAAC,eAyIV4qC,GAAoB,WACpB3c,GAAgBA,EAAa/hB,YAE7B+hB,GACAA,EAAaxhB,MACbwhB,EAAaxhB,KAAK5Q,OAAS0tC,EAEI,WAA3Btb,EAAa/hB,UACfy9B,EAAuBD,EAAsB,GAE7CI,EAAuBD,EAAsB,GAGhB,WAA3B5b,EAAa/hB,UACfy9B,EAAuBD,EAAsB,GAE7CI,EAAuBD,EAAsB,GAG7C5b,GAAgBA,EAAaxhB,MAAQwhB,EAAaxhB,KAAK5Q,OAAS,KAClE8tC,GAAwB,IACxBG,GAAwB,IAE1BN,EAAcvb,EAAaxhB,KAAK5Q,UAG9BgvC,cAAe,IAAAz2C,EAAAyK,EAAAC,IAAAC,MAAG,SAAAoB,EACtB/H,EACA0yC,EACAz+B,EACAC,EACAlW,EACAgW,EACAG,EACAC,GAAS,IAAAR,EAAAs3B,EAAAp3B,EAAAO,EAAAs+B,EAAAN,EAAAO,EAAAC,EAAA5/B,EAAA6/B,EAAAn+B,EAAAo+B,EAAA,OAAArsC,IAAAK,eAAAiB,GAAA,cAAAA,EAAAf,KAAAe,EAAAd,MAAA,OAST,YAfAwrC,IAAAA,GAAa,YACbz+B,IAAAA,EAAW,eACXC,IAAAA,EAAc,eACdlW,IAAAA,EAAc,eACdgW,IAAAA,EAAa,eACbG,IAAAA,EAAY,eACZC,IAAAA,EAAY,MAERR,EAAW,KACXs3B,EAAI,MACJp3B,EAAY9T,GAAKA,EAAE4xB,OAAS5xB,EAAE4xB,OAAOp1B,MAAQwD,KAE/C8T,EAAY+hB,EAAa/hB,WAIF,SAArB/C,GAA2B/I,EAAAd,QAAA,MAAA,OAAAc,EAAAd,QACZ4qC,GAAW,CAACjc,IAAc,QAA3CjiB,EAAQ5L,EAAAZ,KAER8jC,EAAI,IAAI+E,KAAKr8B,EAASo/B,iBACtBzB,GAAwB,IACxBG,GAAwB,IACxBN,EAAcvb,EAAaxhB,KAAK5Q,QAAQuE,EAAAd,QAAA,MAAA,QAAA,GAGZ,SAArB6J,IAA+B2hC,GAAU1qC,EAAAd,QAAA,MAAA,IAC5C2uB,EAAaxhB,MAAqC,KAA7BwhB,EAAaxhB,KAAK4+B,QAAajrC,EAAAd,QAAA,MAGnC,OAFnB2uB,EAAa/pB,KAAO,GACpB+pB,EAAaqd,qBACb3/B,EAAO4B,YAAYnN,EAAAV,iBAAA,QAqCK,OAjCpB+M,EAAY,IAAIpM,SAAOyqB,KAAKmD,EAAaxhB,KAAM,CACnDse,WAAY,EACZv1B,KAAMy4B,EAAaz4B,KACnB2W,WAAY8hB,EAAa9hB,WACzBC,WAAYA,GAA0B6hB,EAAa7hB,WACnDQ,IAAKqhB,EAAarhB,IAClBC,KAAMohB,EAAaphB,KACnBpX,OAAQw4B,EAAax4B,OACrBW,YAAaA,GAA4B63B,EAAa73B,YACtDoW,UAAWA,GAAwByhB,EAAazhB,UAChDwe,WAAY,SACZ1e,YAAaA,GAA4B2hB,EAAa3hB,YACtD2e,QAASgD,EAAahD,QACtB5e,SAAUA,GAAsB4hB,EAAa5hB,SAC7CE,UAAWA,GAAwB0hB,EAAa1hB,UAChDxK,KAAM,OACNmpB,iBAAiB,EACjBoF,iBAAiB,EACjB7jB,KAAMwhB,EAAaxhB,KACnBvX,MAAO+4B,EAAa/4B,MACpBC,OAAQ84B,EAAa94B,UAElByD,IAAI,CAEP0Q,UAAW2kB,EAAa3kB,UACxB8C,WAAYA,IAEdK,EAAKI,KAAOohB,EAAaphB,KACzBJ,EAAKG,IAAMqhB,EAAarhB,IACxBH,EAAKvX,MAAQ+4B,EAAa/4B,MAC1BuX,EAAKtX,OAAS84B,EAAa94B,OAC3BsX,EAAKqB,OAASmgB,EAAangB,OAC3BrB,EAAK0nB,OAASlG,EAAakG,OAC3B1nB,EAAKvW,GAAK+3B,EAAa/3B,GAAGkK,EAAAd,QAET4qC,GAAW,CAACz9B,IAAM,QAAnCT,EAAQ5L,EAAAZ,KAER8jC,EAAI,IAAI+E,KAAKr8B,EAASo/B,iBAAiBhrC,EAAAd,QAAA,MAAA,QAAA,GAGX,SAArB6J,GAAgC2hC,GAAU1qC,EAAAd,QAAA,MACjD0M,EAAWiiB,EAAajiB,SAExBs3B,EAAI,IAAI+E,KAAKr8B,EAASo/B,iBAAiBhrC,EAAAd,QAAA,MAAA,QAAA,OAAAc,EAAAV,iBAAA,QAAAU,EAAAT,GAKjCuM,EAAS9L,EAAAd,KACV,SADUc,EAAAT,MA8DV,QA7DMS,EAAAT,MAsEN,WATKS,EAAAT,MAmBL,WAVQS,EAAAT,MAoBR,kBAVQS,EAAAT,MAmBR,0BATeS,EAAAT,SASQ,MAAA,QAzC1B,OAzDA2pC,EAAgB,GAChBrb,EAAa/hB,UAAY,QAEnBO,EAAY,IAAIpM,SAAOyqB,KAAKmD,EAAaxhB,KAAM,CACnDse,WAAY,EACZv1B,KAAMy4B,EAAaz4B,KACnB2W,WAAY8hB,EAAa9hB,WACzBC,WAAYA,GAA0B6hB,EAAa7hB,WACnDQ,IAAKqhB,EAAarhB,IAClBC,KAAMohB,EAAaphB,KACnBpX,OAAQw4B,EAAax4B,OACrBW,YAAaA,GAA4B63B,EAAa73B,YACtDoW,UAAWA,GAAwByhB,EAAazhB,UAChDwe,WAAY,SACZ1e,YAAaA,GAA4B2hB,EAAa3hB,YACtD2e,QAASgD,EAAahD,QACtB5e,SAAUA,GAAsB4hB,EAAa5hB,SAC7CE,UAAWA,GAAwB0hB,EAAa1hB,UAChDxK,KAAM,OACNmpB,iBAAiB,EACjBoF,iBAAiB,EACjB7jB,KAAMwhB,EAAaxhB,QAEhB7T,IAAI,CAEP0Q,UAAW2kB,EAAa3kB,UACxB8C,WAAYA,IAEdK,EAAKI,KAAOohB,EAAaphB,KACzBJ,EAAKG,IAAMqhB,EAAarhB,IACxBH,EAAKvX,MAAQuX,EAAKO,kBAAkB9X,MACpCuX,EAAKtX,OAASsX,EAAKO,kBAAkB7X,OACrCsX,EAAKqB,OAASmgB,EAAangB,OAC3BrB,EAAK0nB,OAASlG,EAAakG,OAC3B1nB,EAAKvW,GAAK+3B,EAAa/3B,GAGvByV,EAAOgC,OAAOsgB,GACdA,EAAaqd,qBACb3/B,EAAOmB,gBAAgB,MACvBnB,EAAO4B,YAGP5B,EAAOe,IAAID,GACXA,EAAKE,YAGLhB,EAAOmB,gBAAgBL,GACvBpS,GAAYC,SAAS,CAAE8O,gBAAiBqD,IAGxCpS,GAAYY,WAAWuP,iBACvBiC,EAAW,KAAIpS,GAAYY,WAAWyO,UACtC6hC,GAAqB9+B,GAGrBd,EAAO4B,YACPnN,EAAAV,iBAAA,QASG,OALH4pC,EAAgB,IAChBrb,EAAa/hB,UAAY,MACzBo3B,EAAEwE,KAAK,CACLp1C,KAAM,WACNgzC,KAAM,KACLtlC,EAAAV,mBAAA,QAUA,OANH4pC,GAAiB,IACjBsB,KACA3c,EAAa/hB,UAAY,SACzBo3B,EAAEwE,KAAK,CACLp1C,KAAM,iBACNgzC,KAAMgE,EAAsB,KAAO,IAClCtpC,EAAAV,mBAAA,QAUA,OANH4pC,GAAiB,IACjBsB,KACA3c,EAAa/hB,UAAY,SACzBo3B,EAAEwE,KAAK,CACLp1C,KAAM,aACNgzC,KAAMmE,EAAsB,KAAO,IAClCzpC,EAAAV,mBAAA,QASA,OALH4pC,EAAgB,IAChBrb,EAAa/hB,UAAY,gBACzBo3B,EAAEwE,KAAK,CACLp1C,KAAM,YACNgzC,KAAM,MACLtlC,EAAAV,mBAAA,QASA,OALH4pC,GAAiB,IACjBrb,EAAa/hB,UAAY,wBACzBo3B,EAAEwE,KAAK,CACLp1C,KAAM,YACNgzC,MAAM,MACLtlC,EAAAV,mBAAA,QAAA,OAAAU,EAAAV,mBAAA,QAOH+qC,EAAa,IAAIpqC,SAAOgoC,KAAK/E,EAAE0E,UACnC/Z,EAAuB,SAAIjiB,EAEF,SAArB7C,GAEFwC,EAAOe,IAAI+9B,GACXA,EAAqB,SAAIz+B,EACzBy+B,EAAsB,UAAIxc,EAAa3kB,UACvCmhC,EAAsB,UAAIpB,EAC1BoB,EAAsB,UAAIv+B,EAE1Bu+B,EAAiB,KAAIxc,EAAaz4B,KAClCi1C,EAAuB,WAAIxc,EAAa9hB,WACxCs+B,EAAuB,WAAIxc,EAAa7hB,WACxCq+B,EAAmB,OAAIxc,EAAax4B,OACpCg1C,EAAwB,YAAIxc,EAAa73B,YACzCq0C,EAAoB,QAAIxc,EAAahD,QACrCwf,EAAqB,SAAIxc,EAAa5hB,SACtCo+B,EAAwB,YAAIxc,EAAa3hB,YACzCm+B,EAAsB,UAAIxc,EAAa1hB,UACvCk+B,EAAsB,UAAIxc,EAAazhB,UACvCi+B,EAAiB,KAAIxc,EAAaxhB,KAClCg+B,EAAe,GAAIxc,EAAa/3B,GAGhCu0C,EAAW59B,KAAOohB,EAAaphB,KAC/B49B,EAAW79B,IAAMqhB,EAAarhB,IAC9B69B,EAAWv1C,MAAQ+4B,EAAa/4B,MAChCu1C,EAAWt1C,OAAS84B,EAAa94B,OACjCs1C,EAAW38B,OAASmgB,EAAangB,OACjC28B,EAAWtW,OAASlG,EAAakG,OACjCsW,EAAW99B,YAEPq+B,EAAOP,EAAWe,kBACtBf,EAAWv1C,MAAQ81C,EAAK91C,MACxBu1C,EAAWt1C,OAAS61C,EAAK71C,OAKzBwW,EAAOgC,OAAOsgB,GAEdtiB,EAAOmB,gBAAgB29B,GACvBpwC,GAAYC,SAAS,CAAE8O,gBAAiBqhC,IACxCpwC,GAAYY,WAAWuP,iBACvBigC,EAAiB,KAAIpwC,GAAYY,WAAWyO,UAC5C6hC,GAAqBd,MAKjBQ,EAAc,IAAI5qC,SAAOgoC,KAAK/E,EAAE0E,WACd,SAAI/Z,EAAajiB,SACvCi/B,EAAuB,UAAIhd,EAAa3kB,UACxC2hC,EAAuB,UAAIhd,EAAahiB,UACxCg/B,EAAuB,UAAIhd,EAAa/hB,UACxC++B,EAAkB,KAAIhd,EAAaz4B,KACnCy1C,EAAwB,WAAIhd,EAAa9hB,WACzC8+B,EAAwB,WAAIhd,EAAa7hB,WACzC6+B,EAAoB,OAAIhd,EAAax4B,OACrCw1C,EAAyB,YAAIhd,EAAa73B,YAC1C60C,EAAqB,QAAIhd,EAAahD,QACtCggB,EAAsB,SAAIhd,EAAa5hB,SACvC4+B,EAAyB,YAAIhd,EAAa3hB,YAC1C2+B,EAAuB,UAAIhd,EAAa1hB,UACxC0+B,EAAuB,UAAIhd,EAAazhB,UACxCy+B,EAAkB,KAAIhd,EAAaxhB,KAEnCw+B,EAAkB,KAAIhd,EAAaphB,KACnCo+B,EAAiB,IAAIhd,EAAarhB,IAClCq+B,EAAmB,MAAIhd,EAAa/4B,MACpC+1C,EAAoB,OAAIhd,EAAa94B,OACrC81C,EAAoB,OAAIhd,EAAangB,OACrCm9B,EAAoB,OAAIhd,EAAakG,OACrC8W,EAAgB,GAAIhd,EAAa/3B,GAG7BmV,EAAYM,EAAOjB,kBACvBiB,EAAOgC,OAAOtC,GACVA,GAA2B,OAAdA,GACfA,EAAUigC,qBAIZ3/B,EAAOe,IAAIu+B,GACXt/B,EAAOmB,gBAAgBm+B,GACvB5wC,GAAYC,SAAS,CAAE8O,gBAAiB6hC,IACxCA,EAAYt+B,YAGRq+B,EAAOC,EAAYO,kBACvBP,EAAY/1C,MAAQ81C,EAAK91C,MACzB+1C,EAAY91C,OAAS61C,EAAK71C,OAC1BwW,EAAO4B,YACPlT,GAAYY,WAAWuP,iBACvBygC,EAAkB,KAAI5wC,GAAYY,WAAWyO,UAC7C6hC,GAAqBN,IAEvBt/B,EAAO4B,YACHR,EAAQ1S,GAAYY,WAAWmO,gBAAgB4D,kBAAiB,SAAA,KAElEtR,KAAKyY,KAAKpH,EAAM7X,MAAQ6X,EAAMF,KAAO,KAAOnR,KAAKC,MAAMgQ,EAAOzW,QAC9DwG,KAAKyY,KAAKpH,EAAM5X,OAAS4X,EAAMH,IAAM,KAAOlR,KAAKC,MAAMgQ,EAAOxW,SAC9DuG,KAAKyY,KAAKpH,EAAMF,MAAQ,GACxBnR,KAAKyY,KAAKpH,EAAMH,KAAO,IAACxM,EAAAd,SAAA,MAGgB,OADxC2uB,EAAar1B,IAAI,WAAYq1B,EAAa5hB,SAAW,IACrDV,EAAOgC,OAAOhC,EAAOjB,mBAAmBtK,EAAAd,SAClCurC,GAAgB5c,EAAa/hB,WAAW,GAAK,SAC7Cb,EAAYM,EAAOjB,kBACzBqC,EAAMF,KAAOxB,EAAUwB,KACvBE,EAAM7X,MAAQmW,EAAUnW,MACxB6X,EAAMH,IAAMvB,EAAUuB,IACtBG,EAAM5X,OAASkW,EAAUlW,OACzB84B,EAAathB,YACbhB,EAAO4B,YAAYnN,EAAAd,SAAA,MAAA,SAAA,UAAA,OAAAc,EAAAP,UAAAM,OAEtB,gBAzToBa,EAAAwoB,EAAAgD,EAAAif,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAAz3C,EAAA2L,WAAAC,eA0TfurC,GAAuB,SAAC9+B,GAY5BpS,GAAYY,WAAWgS,mBAAkB,GAEzC,IAAInB,EAAQzR,GACTY,WACAV,eAAe4yB,WAAU,SAACthB,GAAQ,OAAKA,EAAI3V,KAAO+3B,EAAa/3B,MAC9D4V,GAAS,GACXzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAO,GAGtDzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAO,EAAGW,IAiBnDq/B,cAAc,IAAAC,EAAAltC,EAAAC,IAAAC,MAAG,SAAA8B,IAAA,IAAAkM,EAAAiH,EAAAC,EAAA+3B,EAAA,OAAAltC,IAAAK,eAAA4B,GAAA,cAAAA,EAAA1B,KAAA0B,EAAAzB,MAAA,OACjByN,EAAQkhB,EAAajhB,kBACrBgH,EAAc,EACdC,EAAe,EACfga,GAAgBA,EAAatiB,QAAUsiB,EAAatiB,OAAOzW,OAC7D8e,EAAcia,EAAatiB,OAAOzW,MAClC+e,EAAega,EAAatiB,OAAOxW,SAEnC6e,EAAcrI,EAAOzW,MACrB+e,EAAetI,EAAOxW,QACvB,OAAA,KAECuG,KAAKyY,KAAKpH,EAAM7X,MAAQ6X,EAAMF,KAAO,IAAMnR,KAAKC,MAAMqY,IACtDtY,KAAKyY,KAAKpH,EAAM5X,OAAS4X,EAAMH,IAAM,IAAMlR,KAAKC,MAAMsY,IACtDvY,KAAKyY,KAAKpH,EAAMF,MAAQ,GACxBnR,KAAKyY,KAAKpH,EAAMH,KAAO,IAAC7L,EAAAzB,QAAA,MAEkC,GAA1D2uB,EAAar1B,IAAI,WAAYq1B,EAAa5hB,SAAW,IAC5B,SAArBlD,GAA2BpI,EAAAzB,QAAA,MAAA,OAAAyB,EAAAzB,OACvBurC,GAAgB5c,EAAa/hB,WAAW,GAAK,OACnDP,EAAO4B,YACDlC,EAAYM,EAAOjB,kBACzBqC,EAAMF,KAAOxB,EAAUwB,KACvBE,EAAM7X,MAAQmW,EAAUnW,MACxB6X,EAAMH,IAAMvB,EAAUuB,IACtBG,EAAM5X,OAASkW,EAAUlW,OAAO4L,EAAAzB,QAAA,MAAA,QAEhCyN,EAAQkhB,EAAajhB,kBAAkB,QAEzCihB,EAAathB,YACb5L,EAAAzB,OAAA,MAAA,QAAA,UAAA,OAAAyB,EAAAlB,UAAAgB,OAEH,kBAhCmB,OAAAkrC,EAAAhsC,WAAAC,eAkCdisC,cAAY,IAAAC,EAAArtC,EAAAC,IAAAC,MAAG,SAAAwsB,EAAOnzB,GAAC,IAAA+zC,EAAA,OAAArtC,IAAAK,eAAAssB,GAAA,cAAAA,EAAApsB,KAAAosB,EAAAnsB,MAAA,OAIW,GAHhC6sC,EAAQ/zC,EAAE4xB,OAAOp1B,MAAMuN,MAAM,MACfymC,EAAJ,GAAhBuD,EAAMtwC,QACNxB,GAAYC,SAAS,CAAE2O,SAAU7Q,EAAE4xB,OAAOp1B,QAC1Cq5B,EAAmB,KAAI71B,EAAE4xB,OAAOp1B,MACP,SAArBuU,GAA2BsiB,EAAAnsB,OAAA,MAAA,OAAAmsB,EAAAnsB,OACvBurC,GAAgB5c,EAAa/hB,WAAW,GAAK,OAIrD4/B,KAIA7d,EAAathB,YACbhB,EAAO4B,YACPu+B,KACAngC,EAAO4B,YAEPlT,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAAU,QAAA,UAAA,OAAA+hB,EAAA5rB,UAAA0rB,OACtD,gBArBiB6gB,GAAA,OAAAF,EAAAnsC,WAAAC,eAsBZqsC,GAAmB,SAACj0C,GACxBwH,QAAQiR,IAAIzY,EAAE4xB,OAAO9zB,IACrBgzC,EAAgB9wC,EAAE4xB,OAAO9zB,IACzB+3B,EAAar1B,IAAI,YAAaR,EAAE4xB,OAAO9zB,IACd,SAArBiT,GACF0hC,GAAgB5c,EAAa/hB,WAAW,GAG1C7R,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAC3CiC,EAAO4B,aAwDH++B,cAAU,IAAAC,EAAA1tC,EAAAC,IAAAC,MAAG,SAAA6sB,IAAA,IAAA5X,EAAAC,EAAAlH,EAAAy/B,EAAA,OAAA1tC,IAAAK,eAAA6sB,GAAA,cAAAA,EAAA3sB,KAAA2sB,EAAA1sB,MAAA,OACX0U,EAAcia,EAAatiB,OAAOzW,MAClC+e,EAAega,EAAatiB,OAAOxW,OACrC4X,EAAQkhB,EAAajhB,kBAAiB,OAAA,KAExCtR,KAAKyY,KAAKpH,EAAM7X,MAAQ6X,EAAMF,KAAO,KAAOnR,KAAKC,MAAMqY,IACvDtY,KAAKyY,KAAKpH,EAAM5X,OAAS4X,EAAMH,IAAM,KAAOlR,KAAKC,MAAMsY,IACvDvY,KAAKyY,KAAKpH,EAAMF,MAAQ,GACxBnR,KAAKyY,KAAKpH,EAAMH,KAAO,IAACof,EAAA1sB,QAAA,MAEkC,GAA1D2uB,EAAar1B,IAAI,WAAYq1B,EAAa5hB,SAAW,IAC5B,SAArBlD,GAA2B6iB,EAAA1sB,QAAA,MAAA,OAAA0sB,EAAA1sB,OACvBurC,GAAgB5c,EAAa/hB,WAAW,GAAK,OACnDP,EAAO4B,YACDlC,EAAYM,EAAOjB,kBACzBqC,EAAMF,KAAOxB,EAAUwB,KACvBE,EAAM7X,MAAQmW,EAAUnW,MACxB6X,EAAMH,IAAMvB,EAAUuB,IACtBG,EAAM5X,OAASkW,EAAUlW,OAAO62B,EAAA1sB,QAAA,MAAA,QAEhCyN,EAAQkhB,EAAajhB,kBAAkB,QAEzCihB,EAAathB,YACbhB,EAAO4B,YAAYye,EAAA1sB,OAAA,MAAA,QAAA,UAAA,OAAA0sB,EAAAnsB,UAAA+rB,OAEtB,kBAzBe,OAAA2gB,EAAAxsC,WAAAC,eA+CVysC,GAAkB,SAACvkB,EAAUG,GACjCzoB,QAAQiR,IAAIqX,GACZ+F,EAAar1B,IAAI,CACfpD,KAAM6yB,EACN/e,UAAW,CAAE6hB,OAAQ9C,KAGvBhuB,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAC3CiC,EAAO4B,aAgCHm/B,GAAoB,SAACxkB,EAAUG,GACnCzoB,QAAQiR,IAAIqX,GACZ+F,EAAar1B,IAAI,SAAUyvB,GAC3BhuB,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAC3CiC,EAAO4B,aAkDHo/B,GAAY,SAACv0C,EAAQgB,EAAaxE,GACVq5B,EAAar1B,IAAIQ,EAAzCoT,EAAUpU,EAAE4xB,OAAO9zB,IAA2B,GACvBtB,GAC3Bo0C,GAAa,SAACruC,GAAK,IAAAiyC,EAAA,OAAAh2C,KAAW+D,IAAKiyC,MAAGx0C,EAAE4xB,OAAO9zB,KAAMyE,EAAMvC,EAAE4xB,OAAO9zB,IAAG02C,OACvEvyC,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAC3CiC,EAAO4B,aAEHs/B,GAAc,SAACz+B,EAAStC,EAAOghC,GACnC,IAAMC,KAAajlC,OAAOzN,GAAYY,WAAWV,gBACrC,UAARuyC,GACFnhC,EAAO4C,cAAcH,GACrB/T,GAAYC,SAAS,CACnBC,eAAgByyC,GAAUD,EAAejhC,EAAOA,EAAQ,OAG1DH,EAAO+iB,aAAatgB,GACpB/T,GAAYC,SAAS,CACnBC,eAAgByyC,GAAUD,EAAejhC,EAAOA,EAAQ,MAG5DH,EAAOwC,WAAW9T,GAAYY,WAAWgT,cACzCtC,EAAOwC,WAAW9T,GAAYY,WAAW2S,iBAErCo/B,GAAY,SAAC3iB,EAAK4iB,EAAWC,GACjC,IAAM9+B,EAAUic,EAAI+C,OAAO6f,EAAW,GAAG,GAEzC,OADA5iB,EAAI+C,OAAO8f,EAAS,EAAG9+B,GAChBic,GAmBH8iB,GAAqB,SAACjlB,EAAUG,GACpC,IAAMsC,EAAgBzC,EACtBvc,EAAO8B,aAAarI,KAAI,SAACtH,GACvB,GAAkB,SAAdA,EAAKpL,KACEoL,EAAKtI,OACHm1B,GACT7sB,EAAKlF,IAAI,CACPpD,KAAM6yB,EACN/e,UAAW,CAAE6hB,OAAQ9C,UAIpB,GAAkB,SAAdvqB,EAAKpL,KACLoL,EAAKtI,OACHm1B,GACT7sB,EAAKlF,IAAI,CACPpD,KAAM6yB,EACN/e,UAAW,CAAE6hB,OAAQ9C,UAIpB,GAAkB,UAAdvqB,EAAKpL,KAAkB,CAEjBoL,EAAKiO,SACX2B,SAAQ,SAACwC,IAED,gBAAbA,EAAI1a,MACiB,iBAAb0a,EAAI1a,MAAqB0a,EAAI1a,KAAKsO,SAAS,KAC/CoM,EAAI1a,KACJ6xB,GAASnX,EAAI1a,SACRm1B,GACTza,EAAItX,IAAI,CACNpD,KAAM6yB,EACN/e,UAAW,CAAE6hB,OAAQ9C,QAI3B,IAAM/e,EAAS1S,KAAQkH,EAAKwL,WAC5BhJ,OAAO2mB,KAAK3d,GAAWoE,SAAQ,SAACzJ,GAC1BqF,EAAUrF,KAAU0mB,IACtBrhB,EAAUrF,GAAQokB,MAGtBvqB,EAAKlF,IAAI,CACP0Q,UAAWA,IAGXxL,GAAQA,EAAKxK,KACfwK,EAAKxK,KAAOwK,EAAK8M,UAAU,aAClB9M,EAAKiO,UAAYjO,EAAKiO,SAASlQ,SACxCiC,EAAKiO,SAAS,GAAGzY,KAAOwK,EAAK8M,UAAU,iBAG3Ce,EAAO4B,YACPlT,GAAYY,WAAWgS,mBAAkB,IAGrCyd,GAAiB,SAACxC,EAAUG,GAChC,IACMsC,EADYrhB,EACc4e,GAC1BklB,EAAgB/yC,GAAYY,WAAWmO,gBAC9BgkC,EAAcrhC,SACpB2B,SAAQ,SAACwC,IAED,gBAAbA,EAAI1a,MACiB,iBAAb0a,EAAI1a,MAAqB0a,EAAI1a,KAAKsO,SAAS,KAC/CoM,EAAI1a,KACJ6xB,GAASnX,EAAI1a,SACRm1B,GACTza,EAAItX,IAAI,CACNpD,KAAM6yB,EACN/e,UAAW,CAAE6hB,OAAQ9C,QAK3B,IAAMglB,EAAaz2C,KAAQw2C,EAAc9jC,WACzChJ,OAAO2mB,KAAKomB,GAAe3/B,SAAQ,SAACzJ,GAC9BopC,EAAcppC,KAAU0mB,IAC1B0iB,EAAcppC,GAAQokB,MAG1B+kB,EAAcx0C,IAAI,CAChB0Q,UAAW+jC,IAGb1hC,EAAO4B,YAGPlT,GAAYC,SAAS,CAAEgP,UAAW+jC,IAClChzC,GAAYY,WAAWuP,iBACvB4iC,EAAc95C,KAAO+G,GAAYY,WAAWyO,UAC5CrP,GAAYY,WAAWgS,mBAAkB,IAGrCoa,GAAW,SAACiD,GAChB,GAAIA,EAAK,CACP,GAAIA,EAAIhoB,QAAQ,SAAW,EAAG,CAC5B,IAAMioB,EAAOD,EAAIvmB,QAAQ,oBAAqB,IAAI5B,MAAM,KACxD,YACG,GAAK,KACLqoB,SAASD,EAAK,KAAO,KACrBC,SAASD,EAAK,KAAO,GACtBC,SAASD,EAAK,KAEbjnB,SAAS,IACTgC,MAAM,GAET,IAAImlB,EAAMH,EAAIhoB,QAAQ,MAAQ,EAAI,IAAM,IAEpCxM,KADJw0B,EAAMA,EAAIpf,OAAO,GAAG/I,MAAM,KAAK,GAAGA,MAAMsoB,IAC1B,IAAInnB,SAAS,IACzByb,IAAMuL,EAAI,IAAIhnB,SAAS,IACvB0b,IAAMsL,EAAI,IAAIhnB,SAAS,IAKzB,OAHgB,GAAZxN,EAAE+F,SAAa/F,EAAI,IAAMA,GACb,GAAZipB,EAAEljB,SAAakjB,EAAI,IAAMA,GACb,GAAZC,EAAEnjB,SAAamjB,EAAI,IAAMA,GACtB,IAAMlpB,EAAIipB,EAAIC,EAGvB,MAAO,IAuBLsc,GAAiBC,WAAQ,WAC7B,OAAO9yB,EAASyK,QACd,SAAC9Q,GAAS,OACR80B,GAAkB/J,WAChB,SAAC4N,GAAE,OAAKA,EAAG1S,MAAM8B,gBAAkB/nB,EAAE+nB,iBACnC,OAEP,CAAC1hB,IAEE6kC,GAAS,WACb3hC,EAAOF,sBACPE,EAAO4B,aACF+tB,IAAkBA,GAAez/B,OAAS,GAC7C49B,GAAiB,GACjBp/B,GAAYC,SAAS,CAAE0C,eAAe,IAClC2O,EAAO8B,aAAa5R,OAAS,EAC3B4M,EAAS3E,SAAS,eAChB2E,EAAS5M,OAAS,EAAI,EACxBrB,EAAkB,QAAQ,EAAM,YAAa,IAC1CH,GAAYY,WAAW/C,cAAcO,aAEtCgQ,EAAS5M,OAAS,EACpBrB,EAAkB,QAAQ,EAAM,YAAa,IAC1CH,GAAYY,WAAW/C,cAAcO,aAG5C4B,GAAYY,WAAW/C,cAAcQ,kBAGvC+gC,GAAiB,IAIfQ,GAAqB,WACzBxB,GAAiB,CACf1qB,SAAS,EACTma,SAAU,GACVG,MAAO,GACPqQ,SAAU,QAId7I,aAAU,WACRrrB,OAAO+vB,iBAAiB,QAAS0F,IACjC,IAAMsT,EAAQlzC,GAAYmzC,WACxB,SAAC7yC,GAAK,OAAKA,EAAM2O,aACjB,SAACmkC,EAAUC,OAKb,OAAO,WACLlpC,OAAOw2B,oBAAoB,QAASf,IACpCsT,OAED,IAGH,IAAMI,GAAepS,WAAQ,WAE3B,GAAItN,SAAgBA,GAAAA,EAAc3kB,UAAW,CAAA,IAAAskC,EACvCC,EAAa,GACbC,EAAe,GAOnB,cANAF,EAAAttC,OAAO2mB,WAAKgH,SAAAA,EAAc3kB,aAA1BskC,EAAsCxoC,KAAI,SAACnB,GACpC4pC,EAAW/pC,eAASmqB,SAAAA,EAAc3kB,UAAUrF,MAC/C4pC,EAAWx+B,WAAK4e,SAAAA,EAAc3kB,UAAUrF,IACxC6pC,EAAa7pC,SAAQgqB,SAAAA,EAAc3kB,UAAUrF,OAG1C6pC,EAEP,MAAO,KAER,OAAC7f,SAAAA,EAAc3kB,YAClB,OACEpW,uBACEK,UAAU,mEACVf,MAAO,CAAEu7C,YAAa,SAEtB76C,uBAAKK,UAAU,kBACbL,sBAAIK,UAAU,yCAEdL,uBAAKK,UAAU,UACbL,uBAAKK,UAAU,0BAhlCV,CACX,CAAE2C,GAAI,EAAG7C,MAAO,cAChB,CAAE6C,GAAI,EAAG7C,MAAO,WA+kCF+R,KAAI,SAAC4oC,GAAG,OACZ96C,0BACEkG,IAAK40C,EAAI93C,GACT3C,WACE41C,IAAc6E,EAAI93C,GACd,0BACA,sGAENo3B,QAAS,WACP8b,EAAa4E,EAAI93C,IACF,IAAX83C,EAAI93C,KACNmE,GAAYC,SAAS,CAAE6O,iBAAkB,SACzCwC,EAAOF,sBACPE,EAAO4B,aAEM,IAAXygC,EAAI93C,IACNmE,GAAYC,SAAS,CAAE6O,iBAAkB,YAI5C6kC,EAAI36C,WAIXH,uBAAKK,UAAU,8BACE,IAAd41C,GACCj2C,uBAAKkG,IAAK+vC,GACRj2C,uBACEK,UACE,sCACEimC,IACD8B,IACDA,GAAez/B,OAAS,EACpB,qCACA,MAGiB,SAArBsN,GACqB,SAArBA,IACAjW,uBAAKK,UAAU,KACbL,uBAAKK,UAAU,wDAGfL,4BACE0B,MAAOqU,EACP6tB,SAAUmV,GACV14C,UAAU,sFACV6pC,YAAY,cAEdlqC,uBAAKK,UAAU,yDAGfL,0BACE6O,KAAK,kBACL7L,GAAG,kBACHtB,MAAOq5B,EAAa9hB,WACpB2qB,SAhcH,SAAC1+B,GAClBmwC,GAAanjC,KAAI,SAACnB,GACZA,EAAKlC,MAAQ3J,EAAE4xB,OAAOp1B,OACX,IAAI4/B,SAASvwB,EAAKlC,aAAckC,EAAK+sB,UAC7CyD,OAAOx2B,MAAK,SAACrJ,gBAEhB8/B,EAAAriC,SAASsiC,QAATD,EAAgBhoB,IAAI9X,GACpBvC,SAAS8L,KAAKy2B,UAAUloB,IAAI,gBAC5BuhB,EAAar1B,IAAI,aAAcqL,EAAKlC,MACX,SAArBoH,GACF0hC,GAAgB5c,EAAa/hB,WAAW,GAE1CP,EAAO4B,YACPlT,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAC3C4iC,YAmbc/4C,UAAc06C,wLAEb1F,GAAanjC,KAAI,SAAC8oC,GACjB,OACEh7C,gCACEA,0BAAQ0B,MAAOs5C,EAAKnsC,MAAOmsC,EAAKnsC,WAmBxC7O,uBAAKK,UAAU,mDAGfL,uBAAKK,UAAU,iCACZ,IACDL,0BACEw6B,SACEO,GACAA,EAAa/hB,WACc,SAA3B+hB,EAAa/hB,UAEf3Y,UAC8B,SAA5B06B,EAAa7hB,WACNo2B,2GACH,2FAENhwC,MACEy7B,GACAA,EAAa/hB,WACc,SAA3B+hB,EAAa/hB,UACT,CACEmc,MAAO,UACP0T,OAAQ,UACRhrB,gBAAiB,WAEnB,GAENuc,QAAS,SAACl1B,GAAC,OAAKu0C,GAAUv0C,EAAG,aAAc,SAC3ClC,GAAG,aAILhD,0BACEw6B,SACEO,GACAA,EAAa/hB,WACc,SAA3B+hB,EAAa/hB,UAEf3Y,UACE06B,EAAazhB,WACc,WAA3ByhB,EAAazhB,UACNg2B,wGACH,wFAENhwC,MACEy7B,GACAA,EAAa/hB,WACc,SAA3B+hB,EAAa/hB,UACT,CACEmc,MAAO,UACP0T,OAAQ,UACRhrB,gBAAiB,WAEnB,GAENuc,QAAS,SAACl1B,GAAC,OAAKu0C,GAAUv0C,EAAG,YAAa,WAC1ClC,GAAG,eAILhD,0BACEw6B,SACEO,GACAA,EAAa/hB,WACc,SAA3B+hB,EAAa/hB,UAEf3Y,UACE06B,EAAa8a,YACc,IAA3B9a,EAAa8a,UACNvG,2GACH,2FAENhwC,MACEy7B,GACAA,EAAa/hB,WACc,SAA3B+hB,EAAa/hB,UACT,CACEmc,MAAO,UACP0T,OAAQ,UACRhrB,gBAAiB,WAEnB,GAENuc,QAAS,SAACl1B,GAAC,OACTu0C,GAAUv0C,EAAG,aAAcoU,EAAUu8B,YAEvC7yC,GAAG,oBAMe,IAArByyC,GACCz1C,uBAAKK,UAAU,aACbL,uBAAKK,UAAU,mDAGfL,uBAAKK,UAAU,iCACbL,0BACER,KAAK,SACLa,UACE,SAAW01C,EACJzG,uFACH,uEAENtsC,GAAG,OACHo3B,QAAS+e,IAETn5C,gBAACi7C,eACCj4C,GAAG,OACHo3B,QAAS+e,MAGbn5C,0BACER,KAAK,SACLa,UACE,WAAa01C,EACNzG,sFACH,uEAENtsC,GAAG,SACHo3B,QAAS+e,IAETn5C,gBAACk7C,iBACCl4C,GAAG,SACHo3B,QAAS+e,MAGbn5C,0BACER,KAAK,SACLa,UACE,UAAY01C,EACLzG,sFACH,uEAENtsC,GAAG,QACHo3B,QAAS+e,IAETn5C,gBAACm7C,gBACCn4C,GAAG,QACHo3B,QAAS+e,QAMnBn5C,uBAAKK,UAAU,wDAGfL,uBAAKK,UAAU,iBACbL,gBAACklC,IACCG,OAAQ,OACRyD,aAAcyQ,GACdvkB,SAAU,kBACVnmB,KAAM,kBACNsmB,MAAOjf,EAAgB5T,KACvBijC,iBAAkBA,GAClBE,YAAaA,GACbD,SAAU+T,MAGdv5C,uBAAKK,UAAU,mBACbL,2BACEA,uBAAKK,UAAU,0DAGfL,yBACER,KAAK,SACLwD,GAAG,cACH6L,KAAK,cACLwgC,KAAK,MACL3tC,MAAOq5B,EAAa73B,YACpB7C,UAAU,oEACVujC,SAplBC,SAAC1+B,GAE1B61B,EAAa73B,YAAcgC,EAAE4xB,OAAOskB,cACX,SAArBnlC,GACF0hC,GAAgB5c,EAAa/hB,WAAW,GAG1C7R,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAC3CiC,EAAO4B,gBA8kBara,2BACEA,uBAAKK,UAAU,2DAGfL,uBAAKK,UAAU,iBACZ,IACDL,gBAACklC,IACCG,OAAQ,OACRyD,aAAc0Q,GACdxkB,SAAU,kBACVnmB,KAAM,kBACNsmB,MAAOjf,EAAgB3T,OACvBgjC,iBAAkBA,GAClBE,YAAaA,GACbD,SAAUgU,QAKlBx5C,uBAAKK,UAAU,cACbL,2BACEA,uBAAKK,UAAU,4DAGfL,yBACEw6B,SACEO,GACAA,EAAa/hB,WACc,SAA3B+hB,EAAa/hB,UAEfxZ,KAAK,SACLwD,GAAG,UACH6L,KAAK,UACLwgC,KAAK,KACL3tC,MAAOq5B,EAAa3hB,YACpB/Y,UAAU,oEACVujC,SAxmBC,SAAC1+B,GAE1B,IAAIm2C,EAAgBtgB,EAChBugB,EAAiBD,EAAcjiC,YACnCiiC,EAAcjiC,YAAclU,EAAE4xB,OAAOskB,cACrC,IAAMvhC,EAAQwhC,EAAcvhC,kBAC5B,GACED,EAAM7X,MAAQ6X,EAAMF,KAAO,IAAM0hC,EAAc5iC,OAAOzW,OACtD6X,EAAM5X,OAAS4X,EAAMH,KAAO2hC,EAAc5iC,OAAOxW,QACjD4X,EAAMF,KAAO,GACbE,EAAMH,IAAM,GAEZ,GAAIqhB,EAAa3hB,YAAclU,EAAE4xB,OAAOskB,gBACtCrgB,EAAa3hB,YAAclU,EAAE4xB,OAAOskB,cACX,SAArBnlC,GACF0hC,GAAgB5c,EAAa/hB,WAAW,GAG1C7R,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAC3CiC,EAAO4B,YACH0gB,EAAaE,QAAQtkB,GAAG/S,EAAI,KAC9B,WAGC,CACLm3B,EAAa3hB,YAAclU,EAAE4xB,OAAOskB,cACX,SAArBnlC,GACF0hC,GAAgB5c,EAAa/hB,WAAW,GAG1C7R,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAC3C,IAAMqD,EAAQkhB,EAAajhB,kBAU3B,IARED,EAAM7X,MAAQ6X,EAAMF,KAAO,IAAM0hC,EAAc5iC,OAAOzW,OACtD6X,EAAM5X,OAAS4X,EAAMH,KAAO2hC,EAAc5iC,OAAOxW,QACjD4X,EAAMF,KAAO,GACbE,EAAMH,IAAM,KAEZqhB,EAAa3hB,YAAckiC,GAE7B7iC,EAAO4B,YACH0gB,EAAaE,QAAQtkB,GAAG/S,EAAI,IAC9B,aAimBc5D,uBAAKK,UAAU,cACbL,uBAAKK,UAAU,WACbL,uBAAKK,UAAU,wDAGfL,0BACE6O,KAAK,YACL7L,GAAG,YACHtB,MACEq5B,EAAa/hB,UACT+hB,EAAa/hB,UACb,OAEN4qB,SAAU+T,GAEVt3C,UAAc06C,iMAv6CrB,CACjB,CACElsC,KAAM,OACNivB,IAAK,IAEP,CACEjvB,KAAM,MACNivB,IAAK,IAEP,CACEjvB,KAAM,SACNivB,IAAK,IAEP,CACEjvB,KAAM,SACNivB,IAAK,IAEP,CACEjvB,KAAM,gBACNivB,IAAK,IAEP,CACEjvB,KAAM,wBACNivB,IAAK,KAk5C6B5rB,KAAI,SAAC8oC,GACf,OACEh7C,gCACEA,0BAAQ0B,MAAOs5C,EAAKnsC,MAAOmsC,EAAKnsC,YAM1C7O,uBAAKK,UAAU,WACbL,uBAAKK,UAAU,wDAGfL,yBACER,KAAK,SACLwD,GAAG,YACH6L,KAAK,YACLwgC,KAAK,KACL3tC,MAAOy0C,EACP91C,UAAU,oEACVujC,SA55BG,SAAC1+B,GAC5BkxC,EAAgBlxC,EAAE4xB,OAAOskB,eACzBrgB,EAAahiB,UAAY7T,EAAE4xB,OAAOskB,cAClC1uC,QAAQiR,IAAIzY,EAAE4xB,OAAOskB,eACrBj0C,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAndd,SAAC+kC,GAE9B,GAAKxgB,GAAiBA,EAAuB,SAA7C,CAIA,IAAIqV,EAAI,IAAI+E,KAAKpa,EAAuB,SAAEmd,iBAE1C,OADAnd,EAAahiB,UAAYwiC,EACjBxgB,EAAwB,WAC9B,IAAK,OACH,MAEF,IAAK,MACHqV,EAAEwE,KAAK,CACLp1C,KAAM,WACNgzC,KAAM+I,EAAM,KAAO,IAErB,MAEF,IAAK,SACHnL,EAAEwE,KAAK,CACLp1C,KAAM,iBACNgzC,KAAM+I,EAAM,KAAO,IAErB,MAEF,IAAK,SACHnL,EAAEwE,KAAK,CACLp1C,KAAM,aACNgzC,KAAM+I,EAAM,KAAO,IAErB,MAEF,IAAK,gBAOL,IAAK,wBACHnL,EAAEwE,KAAK,CACLp1C,KAAM,YACNgzC,KAAM+I,EAAM,KAAO,IAOzB,IAAIxD,EAAc,IAAI5qC,SAAOgoC,KAAK/E,EAAE0E,UAEpCr8B,EAAOe,IAAIu+B,GACXA,EAAsB,SAAIhd,EAAajiB,SACvCi/B,EAAuB,UAAIhd,EAAa3kB,UACxC2hC,EAAgB,GAAIhd,EAAa/3B,GACjC+0C,EAAuB,UAAIwD,EAC3BxD,EAAuB,UAAIhd,EAAa/hB,UAExC++B,EAAkB,KAAIhd,EAAaz4B,KACnCy1C,EAAwB,WAAIhd,EAAa9hB,WACzC8+B,EAAwB,WAAIhd,EAAa7hB,WACzC6+B,EAAoB,OAAIhd,EAAax4B,OACrCw1C,EAAyB,YAAIhd,EAAa73B,YAC1C60C,EAAqB,QAAIhd,EAAahD,QACtCggB,EAAsB,SAAIhd,EAAa5hB,SACvC4+B,EAAyB,YAAIhd,EAAa3hB,YAC1C2+B,EAAuB,UAAIhd,EAAa1hB,UACxC0+B,EAAuB,UAAIhd,EAAazhB,UACxCy+B,EAAkB,KAAIhd,EAAaxhB,KAGnCw+B,EAAYp+B,KAAOohB,EAAaphB,KAChCo+B,EAAYr+B,IAAMqhB,EAAarhB,IAC/Bq+B,EAAY/1C,MAAQ+4B,EAAa/4B,MACjC+1C,EAAY91C,OAAS84B,EAAa94B,OAClC81C,EAAYn9B,OAASmgB,EAAangB,OAClCm9B,EAAY9W,OAASlG,EAAakG,OAClC8W,EAAYt+B,YAEZ,IAAIq+B,EAAOC,EAAYO,kBACvBP,EAAY/1C,MAAQ81C,EAAK91C,MACzB+1C,EAAY91C,OAAS61C,EAAK71C,OAG1BwW,EAAOgC,OAAOsgB,GAEdtiB,EAAOmB,gBAAgBm+B,GACvB5wC,GAAYC,SAAS,CAAE8O,gBAAiB6hC,IAGxChd,EAAaqd,qBACb3/B,EAAO4B,YACPlT,GAAYY,WAAWuP,iBACvBygC,EAAkB,KAAI5wC,GAAYY,WAAWyO,UAC7C6hC,GAAqBN,IAsXrByD,CAAuBzgB,EAAahiB,WACpCN,EAAO4B,kBAy5B6B,UAArBpE,GACCjW,gCACEA,uBAAKK,UAAU,2CAGfL,uBAAKK,UAAU,yCAaZo6C,YAAYgB,EACXruC,OAAO2mB,KAAK0mB,YAAZgB,EAA2BvpC,KAAI,SAACnB,EAAMzI,GACpC,OACEtI,gBAACklC,IACCG,OAAQ,YACRn/B,IAAK,SAAWoC,EAChBwgC,aAActR,GACdxC,SAAUjkB,EACVokB,MAAOjf,EAAgBE,UAAUrF,GACjCw0B,iBAAkBA,GAClBE,YAAaA,GACbD,SAAUhO,UAiCpBx3B,gCACEA,uBAAKK,UAAU,eACbL,qBACEK,4GAIFL,uBAAKK,UAAU,qBACbL,gBAACiB,GACCd,MAAM,GACNC,KAAMJ,gBAAC2B,QACPtB,0FACAe,KAAK,SACLg5B,QAziBd,WACZjiB,EAAUzS,IAAI,CACZg2B,OAAQvjB,EAAUujB,QAEpBv0B,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAC3CiC,EAAO4B,eAoiBiBra,gBAACiB,GACCiF,YACA/F,MAAM,GACNC,KAAMJ,gBAACqC,QACPhC,0FACAe,KAAK,SACLg5B,QAxiBd,WACZjiB,EAAUzS,IAAI,CACZ0L,OAAQ+G,EAAU/G,QAEpBjK,GAAYY,WAAWgS,mBAAkB,GACzC5S,GAAYY,WAAWuP,iBACvByjB,EAAa36B,KAAO+G,GAAYY,WAAWyO,UAE3CiC,EAAO4B,mBAijB6B,cAArBpE,GACCjW,gCACEA,uBAAKK,UAAU,oDAGfL,uBAAKK,UAAU,yDACZkV,SAAAA,EAAUrD,KAAI,SAACnB,EAAMzI,GACpB,OASEtI,gBAACklC,IACCG,OAAQ,YACRn/B,IAAK,SAAWoC,EAChBwgC,aAAcmR,GACdjlB,SAAUjkB,EACVokB,MAAOpkB,EACPw0B,iBAAkBA,GAClBE,YAAaA,GACbD,SAAUyU,UAKhB1kC,GAAYA,EAAS3E,SAAS,eAC5B2E,EAAS5M,OAAS,EAClB4M,EAAS5M,QAAU,GACrB3I,gBAAC07C,IAAWnmC,SAAUA,KAqCN,SAArBU,GACCjW,gCACEA,uBAAKK,UAAU,oDAGfL,uBAAKK,UAAU,+CACZkV,SAAAA,EAAUrD,KAAI,SAACnB,EAAMzI,GACpB,OASEtI,gBAACklC,IACCG,OAAQ,YACRn/B,IAAK,SAAWoC,EAChBwgC,aAAcmR,GACdjlB,SAAUjkB,EACVokB,MAAOpkB,EACPw0B,iBAAkBA,GAClBE,YAAaA,GACbD,SAAUyU,UAKhB1kC,GAAYA,EAAS3E,SAAS,eAC5B2E,EAAS5M,OAAS,EAClB4M,EAAS5M,QAAU,GACrB3I,gBAAC07C,IAAWnmC,SAAUA,MAK7B+wB,GACC8B,IACAA,GAAez/B,OAAS,GACtB3I,uBACEK,UAAU,YACVf,MAAO,CACLqiC,SAAU,WACV9jB,gBAAiB,UACjBorB,OAAQ,EACRlR,QAAS,QAGX/3B,gBAACiB,GACCd,MAAM,QACNC,KAAMJ,gBAACgpC,wBACP5O,QAAS,WACPmM,GAAiB,IAEnBlmC,UAAW,GACXe,KAAK,SACL9B,MAAO,CACLqiC,SAAU,WACVkH,OAAQ,UACR3vB,WAAY,OACZgwB,MAAO,GACPxvB,KAAM,EACNyb,MAAO,aAGXn1B,uBACEK,UAAU,iBACVf,MAAO,CAAE4Z,WAAY,OAAQiiB,aAAc,yCAI7Cn7B,uBACEK,UAAU,iBACVf,MAAO,CAAE67B,aAAc,uHAKzBn7B,2BACGooC,GAAel2B,KAAI,SAAChD,EAAW5G,GAC9B,OACEtI,uBACEkG,IAAK,SAAWoC,EAChBhJ,MAAO,CACL0C,MAAO,OACPC,OAAQ,OACR41B,WAAY,OACZha,gBAAiB3O,EACjBmK,UAAW,SACX8hB,aAAc,QAGhBn7B,wBACEV,MAAO,CACL61B,MAAO,UACPgU,aAAc,eAGfj6B,SASjBlP,0BACER,KAAK,SACLa,UAAU,2KACV+5B,QAASggB,aAMA,IAAdnE,GACCj2C,uBAAKkG,IAAK+vC,IACe,UAArBhgC,GACqB,oBAArBA,IACAjW,uBAAKK,UAAU,uEACZgH,EAAe6K,KAAI,SAACnB,EAAW6H,GAC9B,OACE5Y,gCACEA,uBAAKK,UAAU,8EACbL,uBAAKK,UAAU,+DACbL,uBACEK,yBACE0Q,GAAQA,EAAKwI,KAAO,iBAAmB,IAEzCja,MAAO,CAEL2C,OAAQ,OACRD,MAAO,OACPqnC,QAAS,QACTpE,WAAY,OACZ0W,YAAa,QAGf7d,IAAK/sB,EAAOA,EAAW,KAAI,MAG/B/Q,uBAAKK,UAAU,wBACbL,0BACEo6B,QAAS,WAAA,OAp6BjB,SAACrpB,GACrB0H,EAAOgC,OAAO1J,GACd0H,EAAO8hB,mBAGU,SAAC74B,GAElB,IAAIkX,EAAQzR,GACTY,WACAV,eAAe4yB,WAAU,SAACthB,GAAQ,OAAKA,EAAI3V,KAAOtB,EAAMsB,MACvD4V,GAAS,GACXzR,GAAYY,WAAWV,eAAe6yB,OAAOthB,EAAO,GAEtDzR,GAAYC,SAAS,CACnBC,kBAAcuN,OAAMzN,GAAYY,WAAWV,kBAX7CwM,CAAW9C,GAi6BgC6qC,CAAc7qC,IAC7B1Q,UAAU,iBAEVL,uBAAKK,UAAU,mDACbL,uBAAKK,UAAU,iBACbL,uBACEgC,MAAM,OACNC,OAAO,OACPC,QAAQ,YACRI,KAAK,OACLP,MAAM,8BAEN/B,wBACEoC,EAAE,YACFG,OAAO,yBACM,qBACE,0BACC,UAElBvC,wBACEoC,EAAE,YACFG,OAAO,yBACM,qBACE,0BACC,UAElBvC,wBACEoC,EAAE,UACFG,OAAO,yBACM,qBACE,0BACC,UAElBvC,wBACEoC,EAAE,2EACFG,OAAO,yBACM,qBACE,0BACC,UAElBvC,wBACEoC,EAAE,oEACFG,OAAO,yBACM,qBACE,0BACC,eAQ5BvC,uBAAKK,UAAU,+DACbL,0BACEw6B,SAAoB,IAAV5hB,EACVwhB,QAAS,WAAA,OAAMuf,GAAY5oC,EAAM6H,EAAO,UAExC5Y,uBAAKK,UAAU,2DACbL,uBAAKK,UAAU,iBACbL,uBACEsC,KAAgB,IAAVsW,EAAc,UAAY,UAChC3W,OAAO,OACPD,MAAM,OACNo5B,QAAQ,MACRp4B,GAAG,UACHjB,MAAM,6BACNG,QAAQ,eAERlC,yBACEA,yBACEA,yBACEA,wBAAMoC,EAAE,sEACRpC,wBAAMoC,EAAE,uQAStBpC,0BACEw6B,SAAU5hB,IAAUvR,EAAesB,OAAS,EAC5CyxB,QAAS,WAAA,OACPuf,GAAY5oC,EAAM6H,EAAO,WAG3B5Y,uBAAKK,UAAU,6DACbL,uBAAKK,UAAU,mBACbL,uBACEwC,UAAU,cACVF,KACEsW,IAAUvR,EAAesB,OAAS,EAC9B,UACA,UAEN1G,OAAO,OACPD,MAAM,OACNo5B,QAAQ,MACRp4B,GAAG,UACHjB,MAAM,6BACNG,QAAQ,eAERlC,yBACEA,yBACEA,yBACEA,wBAAMoC,EAAE,sEACRpC,wBAAMoC,EAAE,8QAepCpC,0BACER,KAAK,SACLa,UAAU,2KACV+5B,QAASggB,gBASpB1T,IAAiBA,GAAc7rB,SAC9B7a,gBAACikC,IACCmF,mBACA9E,kBAAmB,SAACnP,GAClBuR,GAAclB,SAASkB,GAAc1R,SAAUG,GAC/CoQ,GAAiB,CACf1qB,SAAS,EACTma,SAAU,GACVG,MAAO,GACPqQ,SAAU,QAGdlmC,MACEqiC,GACI,CACEA,SAAU,QACVhoB,KAAMgoB,GAAS/9B,EAAI,IACnB8V,IAAKioB,GAAS99B,EAAI,EAClB7B,MAAO,SAET,CAAEqnC,QAAS,60BCllEpB,IAAMwS,GAAS,SAAH37C,WAAMyhC,SAAAA,WAAQma,EAAG,UAASA,EAAAC,EAAA77C,EAAE+B,OAAAA,WAAM85C,EAAG,OAAMA,EACtDC,EAAYh8C,EAAM67B,SAKxB,OAJA77B,EAAM28B,WAAU,WACTqf,IACLA,EAAUl0C,QAAQxI,MAAM2C,OAASA,KAChC,CAAC+5C,IAEFh8C,2BACEf,IAAK+8C,EACLh5C,GAAG,KACH1D,MACe,YAAbqiC,EACI,CAAEA,SAAU,WAAYrR,QAAS,GAAK5W,IAAK,GAC3C,GAENrZ,UAAU,iBAEVL,uBAAKgD,GAAG,QChBRi5C,GAAoB,SAAC37C,GACzB,OACEN,gBAACk8C,aAAWD,mCAAsB37C,GAChCN,uBACE+B,MAAM,6BACNG,QAAQ,YACRI,KAAK,eACLjC,oCAEAL,wBAAMoC,EAAE,sIAKV9C,GAAQ,CACZ68C,QAAS,SAACC,GAAI,OAAA14C,KACT04C,GACHxa,OAAQ,oBAERC,UAAW,OACXwa,UAAW,CACTza,OAAQ,GAEV0a,UAAW,CACT1a,OAAQ,wBAGZuJ,OAAQ,SAACiR,EAAIl8C,OAAeq8C,EAAUr8C,EAAVq8C,WAC1B,OAAA74C,KACK04C,GACHv+B,gBAAiB0+B,EAAa,UAAY,UAC1CrjC,WAJsBhZ,EAATs8C,UAIW,IAAM,IAC9BrnB,MAAOonB,GAAc,UACrBE,UAAW,CACT5+B,gBAAiB0+B,GAAc,UAC/BpnB,MAAOonB,GAAc,OACrBrjC,WAAYqjC,GAAc,SAK5BG,GAAe,SAACp8C,GACpB,IAAQq8C,EAAiCr8C,EAAjCq8C,aAAcC,EAAmBt8C,EAAnBs8C,eACtB7Z,EAAwBC,WAAS,IAA1Bp4B,EAAIm4B,KAAE8Z,EAAO9Z,KAmBpB,OAjBApG,aAAU,WACR,IAAIvR,EAAI,GACRuxB,EAAaniC,SAAQ,SAACU,GACpBkQ,EAAEjP,KAAK,CAAEza,MAAOwZ,EAAS/a,MAAO+a,OAElC2hC,EACEzxB,EAAE4I,MAAK,SAAC5I,EAAGU,GACT,OAAIV,EAAEjrB,MAAQ2rB,EAAE3rB,OACN,EAENirB,EAAEjrB,MAAQ2rB,EAAE3rB,MACP,EAEF,QAGV,CAACw8C,IAEF38C,gCACEA,uBAAKK,UAAU,mBACbL,uBAAKK,UAAU,wBACbL,gBAAC88C,GACCz8C,UAAU,oFACV08C,aAAc,CACZr7C,MAAOi7C,EAAa,GACpBx8C,MAAOw8C,EAAa,IAEtB/Y,SAAU,SAAC1+B,GAAC,OAAK03C,EAAe13C,EAAExD,QAClCs7C,cAAc,EACdnuC,KAAK,aACL4N,QAAS7R,EACTsxC,WAAY,CACVe,mBAAoB,WAAA,OAAM,MAC1BhB,kBAAAA,IAEFiB,OAAQ59C,SCpFP69C,GAEX,CACD,CAACn6C,GAAG,EAAGo6C,KAAK,GAAGvuC,KAAK,oBAAqBwuC,YAAY,GAAI79C,KAAK,kBAAmB89C,YAAY,GAAIC,QAAO,EAAKn9C,KAAK,uBAAuB0f,UAAU,GAAGG,KAAK,IAC3J,CAACjd,GAAG,EAAGo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,kBAAmB89C,YAAY,GAAIC,QAAO,EAAKn9C,KAAK,iBAAiB0f,UAAU,GAAGG,KAAK,IAC3I,CAACjd,GAAG,EAAGo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,kBAAmB89C,YAAY,GAAIC,QAAO,EAAKn9C,KAAK,eAAe0f,UAAU,GAAGG,KAAK,IACvI,CAACjd,GAAG,EAAGo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,kBAAmB89C,YAAY,GAAIC,QAAO,EAAKn9C,KAAK,eAAe0f,UAAU,GAAGG,KAAK,IAC1I,CAACjd,GAAG,EAAGo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,kBAAmB89C,YAAY,GAAIC,QAAO,EAAKn9C,KAAK,kBAAkB0f,UAAU,GAAGG,KAAK,IAC7I,CAACjd,GAAG,EAAGo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,GAAI79C,KAAK,kBAAmB89C,YAAY,GAAIC,QAAO,EAAKn9C,KAAK,OAAO0f,UAAU,GAAGG,KAAK,IAC9H,CAACjd,GAAG,EAAGo6C,KAAK,aAAavuC,KAAK,yBAA0BwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,oBAAoB0f,UAAU,GAAGG,KAAK,IAC5K,CAACjd,GAAG,EAAGo6C,KAAK,aAAavuC,KAAK,2BAA4BwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,sBAAsB0f,UAAU,GAAGG,KAAK,IAChL,CAACjd,GAAG,EAAGo6C,KAAK,aAAavuC,KAAK,uBAAwBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,oBAAoB0f,UAAU,GAAGG,KAAK,IAC1K,CAACjd,GAAG,GAAIo6C,KAAK,aAAavuC,KAAK,yBAA0BwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,sBAAsB0f,UAAU,GAAGG,KAAK,IAE/K,CAACjd,GAAG,GAAIo6C,KAAK,cAAcvuC,KAAK,oBAAqBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,uBAAuB0f,UAAU,GAAGG,KAAK,IAC5K,CAACjd,GAAG,GAAIo6C,KAAK,cAAcvuC,KAAK,mBAAoBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,sBAAsB0f,UAAU,GAAGG,KAAK,IAC1K,CAACjd,GAAG,GAAIo6C,KAAK,cAAcvuC,KAAK,cAAewuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,iBAAiB0f,UAAU,GAAGG,KAAK,IAChK,CAACjd,GAAG,GAAIo6C,KAAK,cAAcvuC,KAAK,eAAgBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,kBAAkB0f,UAAU,GAAGG,KAAK,IAClK,CAACjd,GAAG,GAAIo6C,KAAK,iBAAiBvuC,KAAK,oBAAqBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,sBAAsB0f,UAAU,GAAGG,KAAK,IAC9K,CAACjd,GAAG,GAAIo6C,KAAK,gBAAgBvuC,KAAK,uBAAwBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,wBAAwB0f,UAAU,GAAGG,KAAK,IAClL,CAACjd,GAAG,GAAIo6C,KAAK,aAAavuC,KAAK,uBAAwBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,wBAAwB0f,UAAU,GAAGG,KAAK,IAC/K,CAACjd,GAAG,GAAIo6C,KAAK,YAAYvuC,KAAK,wBAAyBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,mBAAmB0f,UAAU,GAAGG,KAAK,IAC1K,CAACjd,GAAG,GAAIo6C,KAAK,cAAcvuC,KAAK,uBAAwBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,yBAAyB0f,UAAU,GAAGG,KAAK,IACjL,CAACjd,GAAG,GAAIo6C,KAAK,YAAYvuC,KAAK,4BAA6BwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,8BAA8B0f,UAAU,GAAGG,KAAK,IACzL,CAACjd,GAAG,GAAIo6C,KAAK,YAAYvuC,KAAK,wBAAyBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAKn9C,KAAK,mBAAmB0f,UAAU,GAAGG,KAAK,IAC1K,CAACjd,GAAG,GAAIo6C,KAAK,aAAavuC,KAAK,uBAAwBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,OAAO0f,UAAU,GAAGG,KAAK,IAC/J,CAACjd,GAAG,GAAIo6C,KAAK,aAAavuC,KAAK,qBAAsBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,OAAO0f,UAAU,GAAGG,KAAK,IAC7J,CAACjd,GAAG,GAAIo6C,KAAK,cAAcvuC,KAAK,oBAAqBwuC,YAAY,GAAI79C,KAAK,sBAAuB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,OAAO0f,UAAU,GAAGG,KAAK,IAC7J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,mFAAmFG,KAAK,IACnN,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,MAAOwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,mFAAmFG,KAAK,IAClN,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,mFAAmFG,KAAK,IACpN,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,mFAAmFG,KAAK,IACpN,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,4FAA4FG,KAAK,IACtO,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,sFAAsFG,KAAK,IAC1N,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,sFAAsFG,KAAK,IAC1N,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,qFAAqFG,KAAK,IACxN,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,sFAAsFG,KAAK,IAC1N,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,yFAAyFG,KAAK,IAChO,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,qFAAqFG,KAAK,IACzN,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,yFAAyFG,KAAK,IAChO,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,sFAAsFG,KAAK,IAC1N,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,qFAAqFG,KAAK,IACxN,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,qFAAqFG,KAAK,IACxN,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,sFAAsFG,KAAK,IAC1N,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,sFAAsFG,KAAK,IAC1N,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,eAAgBwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACxO,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,wBAAyBwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,+FAA+FG,KAAK,IACnP,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,+BAAgCwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,sGAAsGG,KAAK,IACjQ,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,qFAAqFG,KAAK,IACzN,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,aAAcwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,0FAA0FG,KAAK,IACnO,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,uFAAuFG,KAAK,IAC7N,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,wFAAwFG,KAAK,IACzO,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,mBAAoBwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,yFAAyFG,KAAK,IACrO,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,qFAAqFG,KAAK,IAC1N,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,+FAA+FG,KAAK,IACpO,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,qFAAqFG,KAAK,IAC1N,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,qBAAqB0f,UAAU,wGAAwGG,KAAK,IACxT,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,eAAgBwuC,YAAY,qBAAsB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,kBAAkB0f,UAAU,qGAAqGG,KAAK,IACpS,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,qBAAsBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,wBAAwB0f,UAAU,2GAA2GG,KAAK,IACxT,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,qBAAqB0f,UAAU,wGAAwGG,KAAK,IAC/S,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,oBAAqBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,uBAAuB0f,UAAU,0GAA0GG,KAAK,IACrT,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,wBAAyBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,0BAA0B0f,UAAU,8GAA8GG,KAAK,IAChU,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,2BAA4BwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,6BAA6B0f,UAAU,iHAAiHG,KAAK,IACzU,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,qBAAqB0f,UAAU,wGAAwGG,KAAK,IAC/S,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,eAAgBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,kBAAkB0f,UAAU,qGAAqGG,KAAK,IACtS,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,mBAAmB0f,UAAU,sGAAsGG,KAAK,IACzS,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,aAAcwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,gBAAgB0f,UAAU,mGAAmGG,KAAK,IAChS,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,mBAAoBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,sBAAsB0f,UAAU,yGAAyGG,KAAK,IAClT,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,YAAY0f,UAAU,8FAA8FG,KAAK,IAClR,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,cAAc0f,UAAU,gGAAgGG,KAAK,IACxR,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,oBAAqBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,uBAAuB0f,UAAU,0GAA0GG,KAAK,IACrT,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,oBAAqBwuC,YAAY,uBAAwB79C,KAAK,wBAAyB89C,YAAY,CAAC,EAAE,EAAE,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,uBAAuB0f,UAAU,0GAA0GG,KAAK,IACrT,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAChJ,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,qBAAsBwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,GAAG,GAAG,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC1J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,SAASwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAIC,QAAO,EAAMn9C,KAAK,uBAAuB0f,UAAU,GAAGG,KAAK,IACxJ,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,kBAAkBwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,qBAAqB0f,UAAU,GAAGG,KAAK,IACrJ,CAACjd,GAAG,GAAIo6C,KAAK,QAAQvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,GAAIC,QAAO,EAAMn9C,KAAK,qBAAqB0f,UAAU,GAAGG,KAAK,IACrK,CAACjd,GAAG,GAAIo6C,KAAK,WAAWvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,eAAgB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,wBAAwB0f,UAAU,GAAGG,KAAK,IAClK,CAACjd,GAAG,GAAIo6C,KAAK,WAAWvuC,KAAK,eAAgBwuC,YAAY,GAAI79C,KAAK,eAAgB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,uBAAuB0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,GAAIo6C,KAAK,WAAWvuC,KAAK,0BAA2BwuC,YAAY,GAAI79C,KAAK,eAAgB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,uBAAuB0f,UAAU,GAAGG,KAAK,IACzK,CAACjd,GAAG,GAAIo6C,KAAK,WAAWvuC,KAAK,cAAewuC,YAAY,GAAI79C,KAAK,eAAgB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,iBAAiB0f,UAAU,GAAGG,KAAK,IACvJ,CAACjd,GAAG,GAAIo6C,KAAK,QAAQvuC,KAAK,qBAAsBwuC,YAAY,GAAI79C,KAAK,eAAgB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,aAAa0f,UAAU,GAAGG,KAAK,IAExJ,CAACjd,GAAG,GAAIo6C,KAAK,QAAQvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,eAAgB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,aAAa0f,UAAU,GAAGG,KAAK,IAC9I,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,8BAA+BwuC,YAAY,GAAI79C,KAAK,eAAgB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,eAAe0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,mCAAoCwuC,YAAY,GAAI79C,KAAK,eAAgB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,iBAAiB0f,UAAU,GAAGG,KAAK,IACrK,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,6BAA8BwuC,YAAY,GAAI79C,KAAK,eAAgB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,cAAc0f,UAAU,GAAGG,KAAK,IAC5J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,iBAAkB79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAClK,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,YAAa79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACxJ,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,QAAS79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACjJ,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,OAAQ79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC/I,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,UAAW79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACrJ,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,aAAc79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC1J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,aAAcwuC,YAAY,cAAe79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC5J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,QAAS79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACjJ,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,aAAc79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC1J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,YAAa79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACxJ,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,eAAgB79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,aAAcwuC,YAAY,cAAe79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC5J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,YAAa79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACxJ,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,eAAgB79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,GAAIo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,UAAW79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACrJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,YAAa79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAE1J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,OAAQ79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAGjJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,mBAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,YAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,YACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,YAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,aAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,mBAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,aACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,aAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,aAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,QAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,QACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,oBACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,WAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAEjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAEhO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAMhO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,kBAE/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,kBAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,WAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,WAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,WAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,WAEhO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,mBACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,QAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,QACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,QAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,WAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,WAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,QAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,QAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,QAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,oBAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAEhO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAIhO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,qBAAsBwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,wGAAwGG,KAAK,UACrP,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,YAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,YAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,YAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,uBAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,uBACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAChO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,SAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,uBAAwB89C,YAAY,CAAC,IAAKC,QAAO,EAAKn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,UAEhO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IAC5O,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACvO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACpO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACnO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACtO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,mFAAmFG,KAAK,IAC9N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,aAAcwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACzO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACpO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACxO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACvO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IAC1O,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,aAAcwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACzO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,uFAAuFG,KAAK,IACjO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IAC1O,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,qFAAqFG,KAAK,IAC9N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACxO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACxO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,GAAI79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACnO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,WAAY89C,YAAY,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC1H,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,SAAUwuC,YAAY,GAAI79C,KAAK,WAAY89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC3H,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,GAAI79C,KAAK,WAAY89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9H,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,WAAY89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC1H,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,SAAUwuC,YAAY,GAAI79C,KAAK,WAAY89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC3H,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,aAAcwuC,YAAY,GAAI79C,KAAK,WAAY89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC/H,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,WAAY89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC1H,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,SAAUwuC,YAAY,GAAI79C,KAAK,WAAY89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC3H,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,UAAWwuC,YAAY,qFAAsF79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,8FAA8FG,KAAK,8BAC5S,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,SAAUwuC,YAAY,qFAAsF79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,8BAC1S,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,4GAA6G79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,gGAAgGG,KAAK,oBACvU,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,+GAAgH79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,kGAAkGG,KAAK,8BAC9U,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,mEAAoE79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,+FAA+FG,KAAK,oBAC5R,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,SAAUwuC,YAAY,gEAAiE79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,oBACrR,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,MAAOwuC,YAAY,8DAA+D79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,0FAA0FG,KAAK,oBAC7Q,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,8CAA+CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,cACnK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,6CAA8CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,cAClK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IAC7N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IAC7N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IAC/N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,0BAA2BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACzO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,uBAAwBwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACtO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,OAAQwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IACtN,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6FAA6FG,KAAK,IAC7N,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,GAAI79C,KAAK,aAAc89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAClI,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,YAAawuC,YAAY,GAAI79C,KAAK,aAAc89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAChI,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,iBAAkBwuC,YAAY,GAAI79C,KAAK,aAAc89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACrI,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,qBAAsBwuC,YAAY,GAAI79C,KAAK,aAAc89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACzI,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,oCAAqCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,0JAA0JG,KAAK,IAChT,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,2BAA4BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6IAA6IG,KAAK,IAC1R,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,6BAA8BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,+IAA+IG,KAAK,IAC9R,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,uCAAwCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,+JAA+JG,KAAK,IACxT,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,2BAA4BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6IAA6IG,KAAK,IAC1R,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gCAAiCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,kJAAkJG,KAAK,IACpS,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,uCAAwCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6JAA6JG,KAAK,IACtT,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,8BAA+BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,gJAAgJG,KAAK,IAChS,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gCAAiCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,kJAAkJG,KAAK,IACpS,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,0CAA2CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,kKAAkKG,KAAK,IAC9T,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,8BAA+BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,gJAAgJG,KAAK,IAChS,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,2CAA4CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,+JAA+JG,KAAK,IAC5T,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,yCAA0CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6JAA6JG,KAAK,IACxT,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,2CAA4CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,iKAAiKG,KAAK,IAC9T,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,yCAA0CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6JAA6JG,KAAK,IACxT,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gCAAiCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,kJAAkJG,KAAK,IACpS,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,uCAAwCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6JAA6JG,KAAK,IACtT,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,8BAA+BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,gJAAgJG,KAAK,IAChS,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gCAAiCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,gJAAgJG,KAAK,IAClS,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,0CAA2CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,kKAAkKG,KAAK,IAC9T,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,8BAA+BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,gJAAgJG,KAAK,IAChS,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,2CAA4CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAChK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,yCAA0CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,2CAA4CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAChK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,yCAA0CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,+CAAgDwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACpK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,iDAAkDwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACtK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,iCAAkCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACtJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,mCAAoCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACxJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,oCAAqCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACzJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,mCAAoCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACxJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,iCAAkCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACtJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,0BAA2BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC/I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,oCAAqCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACzJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kCAAmCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACvJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,2BAA4BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAChJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,qCAAsCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC1J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,oBAAqBwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACzI,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,yBAA0BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gCAAiCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACrJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,uBAAwBwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC5I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,yBAA0BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,mCAAoCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACxJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,uBAAwBwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC5I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,2CAA4CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAChK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,6CAA8CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAClK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,6BAA8BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAClJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,+BAAgCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACpJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,yCAA0CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,2CAA4CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAChK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,qCAAsCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC1J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,4BAA6BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACjJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,8BAA+BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACnJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,wCAAyCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC7J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,mCAAoCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACxJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,0BAA2BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC/I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,4BAA6BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACjJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,sCAAuCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC3J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,0BAA2BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC/I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,+BAAgCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACpJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,sCAAuCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC3J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,6BAA8BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAClJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,+BAAgCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACpJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,yCAA0CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,6BAA8BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAClJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,+BAAgCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACpJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,sCAAuCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC3J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,6BAA8BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAClJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,+BAAgCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACpJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,yCAA0CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,6BAA8BwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAClJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,qDAAsDwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC1K,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,8CAA+CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACnK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gDAAiDwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACrK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,uCAAwCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC5J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gCAAiCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACrJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kCAAmCwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACvJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,mDAAoDwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACxK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,4CAA6CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACjK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,8CAA+CwuC,YAAY,GAAI79C,KAAK,cAAe89C,YAAY,CAAC,KAAMC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACnK,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,iBAAkBwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC/I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,mFAAmFG,KAAK,IACtN,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,MAAOwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,mFAAmFG,KAAK,IACpN,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,QAASwuC,YAAY,GAAI79C,KAAK,wBAAyB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,mFAAmFG,KAAK,IACnN,CAAEjd,GAAI,IAAKo6C,KAAM,GAAIvuC,KAAM,QAASwuC,YAAa,GAAI79C,KAAM,wBAAyB89C,YAAa,CAAC,IAAKC,QAAQ,EAAOn9C,KAAM,GAAI0f,UAAW,mFAAoFG,KAAM,IACvO,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,2GAA2GG,KAAK,iBAC3P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,iBAM9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,eAAgBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,0GAA0GG,KAAK,aACxP,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,WAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,aAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,2GAA2GG,KAAK,iBAC1P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,iBAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,eAAgBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,0GAA0GG,KAAK,aACxP,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,WAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,aAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,2GAA2GG,KAAK,iBAC1P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,iBAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,eAAgBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,0GAA0GG,KAAK,aACxP,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,WAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,aAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,2GAA2GG,KAAK,iBAC1P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,iBAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,eAAgBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,0GAA0GG,KAAK,aACxP,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,WAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,aAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,gBAAiBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,2GAA2GG,KAAK,iBAC1P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,iBAC9P,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,eAAgBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,0GAA0GG,KAAK,aACxP,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,kBAAmBwuC,YAAY,GAAI79C,KAAK,6BAA8B89C,YAAY,CAAC,GAAIC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,6GAA6GG,KAAK,WAC7P,CAAEjd,GAAI,IAAKo6C,KAAM,GAAIvuC,KAAM,kBAAmBwuC,YAAa,GAAI79C,KAAM,6BAA8B89C,YAAa,CAAC,GAAIC,QAAQ,EAAOn9C,KAAM,GAAI0f,UAAW,6GAA8GG,KAAM,aAC9Q,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,cAAewuC,YAAY,cAAe79C,KAAK,4BAA6B89C,YAAY,CAAC,GAAG,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IAC9J,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,SAAUwuC,YAAY,SAAU79C,KAAK,4BAA6B89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,GAAG0f,UAAU,GAAGG,KAAK,IACjJ,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,WAAYwuC,YAAY,GAAI79C,KAAK,kBAAmB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,aAAa0f,UAAU,GAAGG,KAAK,IAC7I,CAACjd,GAAG,IAAKo6C,KAAK,GAAGvuC,KAAK,qBAAsBwuC,YAAY,GAAI79C,KAAK,kBAAmB89C,YAAY,CAAC,IAAKC,QAAO,EAAMn9C,KAAK,aAAa0f,UAAU,GAAGG,KAAK,KC5V3Iu9B,GAAY,WACvB,IAAAzjB,EAOI5yB,IACF,SAACM,GAAK,MAAK,CACTA,EAAM4U,iBACN5U,EAAM4E,QACN5E,EAAMkY,+BACNlY,EAAM0N,iBACN1N,EAAMoY,YACNpY,EAAM2N,mBAER4kB,WAfA3d,EAAgB0d,KAChB1tB,EAAO0tB,KACPpa,EAA8Boa,KAC9B5kB,EAAgB4kB,KAChBla,EAAWka,KACX3kB,EAAe2kB,KAab4iB,EAAec,MAAMC,KACvB,IAAIvW,IAAIhyB,EAAiBwoC,SAAQ,SAACC,GAAM,OAAKA,EAAO39B,UAkBtD,OAfA08B,EAAatlC,QAAQ,OACrBrX,EAAM28B,WAAU,WACd,IAAMxnB,ECVJgoC,GAAen9B,QAIb,SAACjP,GAAI,MDOP,yBCPYA,EAAKvR,QDQjB0S,KAAI,SAACnB,GAAI,OAAArN,KACNqN,GACHkP,KAAMlP,EAAKkP,KAAKhR,MAAM,KAAK+Q,OAAOugB,cAGpCp5B,GAAYY,WAAW0X,oBAAoBtK,GAC3ChO,GACGY,WACA2X,mBAAmBvK,EAAiBjD,KAAI,SAACnB,GAAI,OAAKA,EAAK+O,gBACzD,IAGD9f,gCACEA,uBAAKK,UAAU,wDACbL,uBAAKK,UAAU,sCACbL,uBAAKK,UAAU,0BACbL,uBAAKK,UAAU,gCACbL,uBAAKK,UAAU,qBAGnBL,uBAAKK,UAAU,uBACbL,gBAAC08C,IAECh7C,MAAOme,EACP88B,aAAcA,EACdC,eAAgBj9B,EAEhBk+B,0BACAC,8EACApP,0IACAqP,2GACAC,4DAKNh+C,uBAAKK,UAAU,QACbL,uBAAKK,UAAU,oEAEbL,uBAAKK,UAAU,yHACZ+U,EAAgBzM,OAAS,EACtByM,EAAgBlD,KAAI,SAACtE,EAAMgL,GAAK,OAC9B5Y,gBAAC+hC,IACC77B,IAAK,YAAc0S,EAEnBopB,mGACA1iC,MAAO,CAAEuiC,UAAW,yBACpBzH,QAAS,WAAA,OAAM/d,EAAiBzO,KAEhC5N,gBAACmiC,IAAUrE,IAAKlwB,EAAM00B,WAAW,yBAEjCtiC,gBAACiiC,IAASC,UAAU,SAClBliC,gBAAC0iC,IACCC,uDACA9zB,KAAMsG,EAAiByD,GAAO/J,YAKtC,qBAKXxC,GAAWrM,gBAAC67C,WE9FNoC,GAA4B,SAAH/9C,OAC5B05B,EAAA15B,EACRG,UAGA,OACEL,gCACEA,uBACEK,8EACA2C,GAAG,iBAEHhD,uBAAKK,oBATFu5B,EAAG,GAAEA,GASWv5B,8BAVjBH,EAAR25B,k5CCKK,IAAMqkB,GAA0C,SAA/Bh+C,OAKtBi+C,EAAgBj+C,EAAhBi+C,iBACAC,EAAgBl+C,EAAhBk+C,iBAISxkB,EAAA15B,EACTG,UAAAA,WAASu5B,EAAG,GAAEA,EAEd,OACE55B,uBAAKK,UAAU,UACbL,gBAACq+C,iBACC7+C,KAfFU,EAAJV,KAgBMwD,GAfJ9C,EAAF8C,GAgBMtB,MATDxB,EAALwB,MAUMmN,KAhBF3O,EAAJ2O,KAiBMyvC,QAAQ,WACRn+C,MAjBDD,EAALC,MAkBMyjC,SAfE1jC,EAAR0jC,SAgBM9B,OAfA5hC,EAAN4hC,OAgBMyc,UAdGr+C,EAATq+C,UAeMC,MAAO,CACLr+C,MAAO,CACL0wB,QAAS,CACP4tB,SAAU,CACRC,iSAAkSP,MAAoB99C,EAEtTs+C,8RAA+RR,MAAoB99C,KAIzTu+C,MAAO,CACL/tB,QAAS,CACP4tB,SAAU,CACRC,gLAAiLN,sBAEjLO,+KAAgLP,yBAItLS,WAAY,CACVhuB,QAAS,QACT/rB,QAAS,QACTD,MAAO,aCxCNi6C,GAAa,SAAH5+C,OAAM6+C,EAAU7+C,EAAV6+C,WAC3Bhc,EAAwDC,WAAS,IAA1Dgc,EAAoBjc,KAAEkc,EAAuBlc,KAEpDgD,EAA4C/C,YAAS,GAA9Ckc,EAAcnZ,KAAEoZ,EAAiBpZ,KACxCG,EAA0ClD,YAAS,GAA5Coc,EAAalZ,KAAEmZ,EAAgBnZ,KACtCG,EAAgCrD,YAAS,GAAlCsc,EAAQjZ,KAAEkZ,EAAWlZ,KAC5BtM,EAUI5yB,IAAY,SAACM,GAAK,MAAK,CACzBA,EAAMoO,aACNpO,EAAMQ,SACNR,EAAMU,QACNV,EAAMH,kBACNG,EAAMxB,eACNwB,EAAMuB,kBACNvB,EAAMgG,SACNhG,EAAMqW,iBACNrW,EAAM6N,gBAlBNmD,EAAMshB,KACN9xB,EAAQ8xB,KACR5xB,EAAO4xB,KACPylB,EAAUzlB,KACV9zB,EAAc8zB,KACd/wB,EAAiB+wB,KACjBtsB,EAAQssB,KACRjc,EAAgBic,KAChBzkB,EAAWykB,KAYbwR,EAA8BvrC,EAAMgjC,SAAS,IAAtCyc,EAAOlU,KAAEmU,EAAUnU,KASpBoU,aAAa,IAAAz+C,EAAAyK,EAAAC,IAAAC,MAAG,SAAAC,IAAA,IAAA+P,EAAA+jC,EAAAnoC,EAAAkE,EAAAkkC,EAAAv3C,EAAAwQ,EAAA+2B,EAAAl3B,EAAAmnC,EAAAC,EAAAC,EAAAC,EAAAvlC,EAAAK,EAAA,OAAAnP,IAAAK,eAAAC,GAAA,cAAAA,EAAAC,KAAAD,EAAAE,MAAA,OAAA,GACfkzC,GAAQpzC,EAAAE,QAAA,MAAA,IAPP8zC,EAAiBj4C,EAASU,QAAU,KAExCs2C,EAAwB,UACjBiB,IAKgBh0C,EAAAE,OAAA,MAAA,OAAAF,EAAAM,iBAAA,OAyCvB,IAxCA+yC,GAAY,IACN1jC,EAAkBpD,EAAO8B,cACfC,SAAQ,SAAC7B,GACN,SAAbA,EAAInZ,MACNiZ,EAAOgC,OAAO9B,MAKdinC,EAAgB,GACpB/jC,EAAgBrB,SAAQ,SAAC7B,GACN,SAAbA,EAAInZ,WAAoC8B,IAAjBqX,EAAIG,WAC7B8mC,EAAcjnC,EAAIY,MAAQ,CACxBvX,MAAO2W,EAAI3W,MACXC,OAAQ0W,EAAI1W,OACZ0X,KAAMhB,EAAIgB,KACVD,IAAKf,EAAIe,IACTZ,SAAUH,EAAIG,SACdC,UAAWJ,EAAII,UACfC,UAAWL,EAAIK,UACfC,WAAYN,EAAIM,WAChBC,WAAYP,EAAIO,WAChBC,SAAUR,EAAIQ,SACdC,YAAaT,EAAIS,YACjBC,UAAWV,EAAIU,UACfC,UAAWX,EAAIW,UACfC,KAAMZ,EAAIY,UAKV9B,EAAUgB,EAAOf,YACjBiE,EAAaxU,GAAYY,WAAW2T,iBAOtCmkC,EAAgBzyC,OAAO2mB,KAAK6rB,GACvBt3C,EAAI,EAAGA,EAAIu3C,EAAcl3C,OAAQL,IAExC,IADIwQ,EAAW8mC,EAAcC,EAAcv3C,IAClCunC,EAAI,EAAGA,EAAIl0B,EAAWG,QAAQnT,OAAQknC,IAG9B,UAFTl3B,EAAMgD,EAAWG,QAAQ+zB,IAEzBrwC,MACJmZ,EAAIgB,OAASnR,KAAK23C,MAAsB,IAAhBrnC,EAASa,MAAc,KAC/ChB,EAAIe,MAAQlR,KAAK23C,MAAqB,IAAfrnC,EAASY,KAAa,KAC7Cf,EAAI3W,QAAUwG,KAAK23C,MAAuB,IAAjBrnC,EAAS9W,OAAe,KACjD2W,EAAI1W,SAAWuG,KAAK23C,MAAwB,IAAlBrnC,EAAS7W,QAAgB,KAEnDmL,OAAOgzC,OAAOzkC,EAAWG,QAAQ+zB,GAAI/2B,GAKF,OAAnCgnC,EAAS5vC,KAAKC,UAAUwL,GAAWzP,EAAAE,QACjB0R,EACtBgiC,EACA34C,GAAYY,WAAWc,YACxB,QAHKk3C,EAAS7zC,EAAAI,KAIfmM,EAAOoF,gBAAkB,KACnBmiC,EAAYvnC,EAAO4nC,QACxBb,EAAW,IAAI,EAAO,GAAI,IACpBS,EAAM/vC,KAAKC,UAAU,CACzBmwC,YAAan5C,GAAYY,WAAWc,WACpChH,IAAKsG,EAAQkK,KAAK,KAClBxD,KAAM5G,EACNs4C,aAAc9oC,EACd+oC,UAAWR,EACXziC,gBAAiBwiC,IAGdrlC,EAAiB,IAAIvN,SAAOwN,KAChC,CAAC,EAAGlC,EAAOxW,OAAS,EAAGwW,EAAOxW,OAAQwW,EAAOxW,OAAS,GACtD,CACEM,OAAQ,MACRqY,OAAQ,GACRC,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIHub,EAAe,IAAI5N,SAAOwN,KAC9B,CAAClC,EAAOzW,MAAQ,EAAG,EAAGyW,EAAOzW,MAAQ,EAAGyW,EAAOzW,OAC/C,CACEO,OAAQ,MACRsY,SAAS,EACTC,YAAY,EACZtb,KAAM,SAIXkb,EAAeM,UACfvC,EAAOe,IAAIkB,GACXjC,EAAOe,IAAIuB,GACXtC,EAAO4C,cAAcX,GACrBjC,EAAO4C,cAAcN,GACrB5T,GAAYC,SAAS,CAAEsT,eAAgBA,IACvCvT,GAAYC,SAAS,CAAE2T,aAAcA,IACrCtN,EAASwyC,GACNl1C,MAAK,SAACH,GACL20C,GAAY,GACZR,EAAWn0C,GACX0K,EAAY1K,GACZzD,GAAYY,WAAW/C,cAAcG,wBAEhC,SAAC0kC,GACN0V,GAAY,GACZ7yC,QAAQiR,IAAI,sBAAuBksB,MAClC,QAAA,UAAA,OAAA39B,EAAAS,OAzHgB,IACjBuzC,IAwHCp0C,OAER,kBApHkB,OAAA5K,EAAA2L,WAAAC,eAsHnB6vB,aAAU,WACQ,KAAZ8iB,EACU,kBACQgB,KAAKhB,GAIZP,GACXC,GAAkB,GAFlBA,GAAkB,GAITD,GACXC,GAAkB,KAEnB,CAACM,IAgBJ,IAMMiB,EAAgB,SAAC9gC,GACrB,GAAIzX,EAAQQ,OAAS,GAAiB,KAAZ82C,EAIxB,OAHA7/B,EAAMtM,iBACN+rC,GAAiB,QACjBK,EAAW,IAMb,GAHEL,GAAiB,GAIH,UAAdz/B,EAAM1Z,KACQ,QAAd0Z,EAAM1Z,KACa,MAAlB0Z,EAAM+gC,SAA+B,KAAZlB,GACV,SAAf7/B,EAAMpgB,MAA+B,KAAZigD,EAC1B,CACA7/B,EAAMtM,iBAEN,IACMstC,EADM,kBACQH,KAAKhB,GACzB,IAAKmB,EAEH,YADAzB,GAAkB,GAGdyB,GACQ,KAAZnB,GAAkBoB,QAEC,KAAZpB,GAAgC,cAAd7/B,EAAM1Z,KACjC46C,IAEqB,IAAnBrB,EAAQ92C,SAAmBu2C,GAAoBE,KAC7B,gBAAhBx/B,SAAAA,EAAOpgB,OAAmC,mBAAhBogB,SAAAA,EAAOpgB,QACnC2/C,GAAkB,GAClBE,GAAiB,MAKjB0B,EAAmB,SAACr/C,GACxByF,GAAYC,SAAS,CAAEa,SAAUvG,IACJ,WAAzBs9C,GACFC,EAAwB,KAItB4B,EAAY,WAChB,IAAIG,KAAOpsC,OAAOzM,GACb64C,EAAQpwC,SAAS6uC,EAAQtH,SAC5B6I,EAAQ7kC,KAAKsjC,EAAQtH,QAEvBhxC,GAAYC,SAAS,CAAEe,QAAS64C,EAAQhhC,OAAOugB,WAC/Cmf,EAAW,KAGPoB,EAAkB,WACtB,IAAIE,KAAOpsC,OAAOzM,GAClB64C,EAAQjsC,MACR5N,GAAYC,SAAS,CAAEe,QAAS64C,EAAQhhC,OAAOugB,YAUjD,OACEvgC,gBAACi+C,IACC59C,mIAGAL,0BACEK,UAAU,kIACV+5B,QAAS,WACPjzB,GAAYY,WAAW8M,SACvB2qC,EAAW,IAAI,EAAO,GAAI,IAC1Br4C,GAAYC,SAAS,CAAE0C,eAAe,MAIxC9J,gBAACsuC,YAASprC,YAAa,KAGzBlD,uBAAKK,+BACHL,uBACEK,2FAEAL,uBAAKK,UAAU,UACbL,wBACEK,qJAGC4F,EAAeE,OAElBnG,2BACEA,uBAAKK,UAAU,IACbL,gBAACk+C,IACCC,iBAAqBvZ,oEACrBljC,MAAOuG,EACP65B,OAAQ,SAAC58B,GAAC,IAAA+7C,EAAAC,EAAA,OACRH,QAAiB77C,UAAC+7C,EAAD/7C,EAAG4xB,gBAAMoqB,EAATD,EAAWv/C,cAAXw/C,EAAkBC,cAErC3hD,KAAK,OACLwD,GAAG,WACH6L,KAAK,WACL1O,MAAM,cACNyjC,SAAU,SAAC1+B,GAAC,IAAAk8C,EAAAC,EAAA,OACVN,QAAiB77C,UAACk8C,EAADl8C,EAAG4xB,gBAAMuqB,EAATD,EAAW1/C,cAAX2/C,EAAkBF,cAErC/C,kBAC2B,WAAzBY,uGAMoB,WAAzBA,GACCh/C,uBACEoiC,KAAK,QACL/hC,uFAKsB,qBAAzB2+C,GACCh/C,uBACEoiC,KAAK,QACL/hC,yFAKJL,uBACEK,8GAEAL,uBAAKK,UAAU,+DACZo9C,MAAM6D,QAAQn5C,WACbA,SAAAA,EAAS+J,KAAI,SAACqvC,EAASj5C,GAAC,OACtBtI,uBACEkG,IAAKoC,EACLjI,UAAcmhD,6JAEbD,EACDvhD,0BAAQo6B,QAAS,WAAA,OApFjBl1B,EAoFoCq8C,EAnFlDP,EAAU74C,EAAQ6X,QAAO,SAACjP,GAAI,OAAKA,IAAS7L,UAClDiC,GAAYC,SAAS,CAAEe,QAAS64C,IAFb,IAAC97C,EACd87C,IAoFgBhhD,gBAACsuC,YACCjuC,UAAcohD,mCAMxBzhD,2BACEA,yBACE6O,KAAK,OACLrP,KAAK,OACL0qC,YAAY,IACZ7pC,yIACAqB,MAAO+9C,EACP7b,SArKI,SAAChkB,SACM,aAAzBA,UAAK8hC,EAAL9hC,EAAOkX,eAAP4qB,EAAehgD,QACjBg+C,EAAW9/B,EAAMkX,OAAOp1B,QAoKR68C,UAAWmC,EACX5e,OAAQ4e,EACRtmB,QAAS,SAACl1B,GACRA,EAAEmlC,cAAcC,WAGpBtqC,yBACEyjC,QAAQ,aACRpjC,sBACE8H,SAAAA,EAASQ,QAAS,GAAOu2C,EACrB,6EACA,mYAQZ,WACA,QAAQ,GACN,MAAOA,KAAoBE,EACzB,OACEp/C,uBACEoiC,KAAK,QACL/hC,4HAMN,MAAO6+C,EACL,OACEl/C,uBACEoiC,KAAK,QACL/hC,2FAKN,MAAO++C,EACL,OACEp/C,uBACEoiC,KAAK,QACL/hC,6EAMN,QACE,OAAO,MAhCX,GA6DFL,uBACEK,WACG2I,EAAkD,GAA9B,sFAGC,SAAvB/C,EAAeC,KACdlG,gCACEA,0BACEK,mFACEi/C,EAAW,ehD9XA,gCgDgYXA,EAAW,GAAK,sBAElBllB,QAAS,WAAA,OAAMulB,KACfnlB,SAAU8kB,WAIZt/C,0BACEK,2LACA+5B,QAAS,WAnM3BolB,EAAW,IAAI,EAAO,GAAI,wBCpP9B,SAASmC,GAAerhD,GACtB,IA7ByBrB,EAAUm7B,EA6B7BwnB,EAAa/lB,SAAO,MAG1B,OAhCmCzB,EA8BL95B,EAAM85B,QA7BpCuC,aAAU,WAIR,SAASklB,EAAmBjiC,GACtB3gB,EAAI6I,UAAY7I,EAAI6I,QAAQmjC,SAASrrB,EAAMkX,SAE7CsD,EAAQxa,GAGZ,SAASkiC,EAAaliC,GACH,UAAbA,EAAM1Z,KAAiBk0B,EAAQxa,GAKrC,OAFAzgB,SAASkiC,iBAAiB,UAAWygB,GACrC3iD,SAASkiC,iBAAiB,YAAawgB,GAChC,WAEL1iD,SAAS2oC,oBAAoB,YAAa+Z,GAC1C1iD,SAAS2oC,oBAAoB,UAAWga,MAEzC,CAtBsB7iD,EA8BP2iD,IAEX5hD,uBAAKf,IAAK2iD,GAAathD,EAAMu5B,UC/B/B,IAAMkoB,GAAc,WACzB,IAAAhoB,EAAsD5yB,IACpD,SAACM,GAAK,MAAK,CAACA,EAAM0Y,uBAAwB1Y,EAAMyY,uBAChD8Z,WAFK7Z,EAAsB4Z,KAAE7Z,EAAmB6Z,KAIlDgJ,EAAwCC,WAAS,QAA5Bgf,EAAejf,KASpC,OACE/iC,uBAAKK,UAAU,YACZ6f,GACClgB,uBAAKK,UAAU,mCACbL,gBAAC2hD,IAAevnB,QAAS,WAAA,OAAMja,MAC7BngB,gBAACiiD,gBACC9sB,MAfO4N,KAgBPa,SAdW,SAACzO,GACtB6sB,EAAgB7sB,EAAM+sB,KACtB,IAAMzpC,EAAStR,GAAYY,WAAW8N,aACtC4C,EAAOoF,gBAAkBsX,EAAM+sB,IAC/BzpC,EAAO4B,aAYG8nC,cAAc,EACdC,QAAS,WAAA,OAAMjiC,WCnBhBkiC,GAAa,SAAHniD,OAAMorC,EAAOprC,EAAPorC,QAASyT,EAAU7+C,EAAV6+C,WACpChlB,EAAuD5yB,IACrD,SAACM,GAAK,MAAK,CAACA,EAAM+N,gBAAiB/N,EAAMxB,eAAgBwB,EAAMgE,eAC/DuuB,WAFKxkB,EAAeukB,KAAE9zB,EAAc8zB,KAAEtuB,EAAWsuB,KAOnD,OAHA/5B,EAAM28B,WAAU,WACU,IAApBnnB,GAAuB/J,EAAY,MACtC,IAEDzL,gCACEA,uBAAKK,UAAU,wDACbL,uBAAKK,UAAU,0BACbL,gBAACm9B,UAEFl3B,EAAeH,QAAU9F,gBAAC8+C,IAAWC,WAAYA,IAClD/+C,uBAAKK,UAAU,0BACbL,gBAACs1C,WAGgB,IAApB9/B,GAAyBxV,gBAACspC,SACN,IAApB9zB,GAAyBxV,gBAACw9C,SACN,IAApBhoC,GAAyBxV,gBAACmD,IAAOmoC,QAASA,IACtB,IAApB91B,GAAyBxV,gBAAC+hD,oDCfd,SAAH7hD,OACdoiD,EAASpiD,EAAToiD,UACAhX,EAAOprC,EAAPorC,QACAiX,EAAmBriD,EAAnBqiD,oBACA9uC,EAAgBvT,EAAhBuT,iBACA4B,EAAQnV,EAARmV,SACAxM,EAAU3I,EAAV2I,WACAk2C,EAAU7+C,EAAV6+C,WAEAhlB,EAAqD5yB,IAAY,SAACM,GAAK,MAAK,CAC1EA,EAAMgO,mBACNhO,EAAM4V,cACN5V,EAAM4E,YAHDoJ,EAAkBskB,KAAE1c,EAAa0c,KAAE1tB,EAAO0tB,KAoBjD,OAfA/5B,EAAM28B,WAAU,WACdlnB,EAAmB6sC,GACFhhD,MAAbghD,GACFjlC,EAAchI,KAEf,CAACitC,IACJtiD,EAAM28B,WAAU,WACdx1B,GAAYC,SAAS,CAAEoM,0BAA2B+uC,MACjD,CAACA,IACJviD,EAAM28B,WAAU,WACdx1B,GAAYC,SAAS,CAAEqM,iBAAkBA,MACxC,CAACA,IACJzT,EAAM28B,WAAU,WACdx1B,GAAYC,SAAS,CAAEyB,WAAYA,MAClC,CAACA,IAQF7I,uBAAKK,UAAU,8CACbL,gBAACwiD,kBACC7gB,SAAS,aACT8gB,UAAW,IACXC,iBAAiB,EACjBC,aAAa,EACbC,gBACAC,KAAK,EACLC,oBACAC,aACAC,gBACAxE,MAAM,UACNyE,WAAYC,WAEb72C,GAAWrM,gBAAC67C,SACb77C,uBAAKK,UAAU,uBACbL,gBAAC+uC,UAEH/uC,uBAAKK,UAAU,wBACbL,gBAACqiD,IAAW/W,QAASA,EAASyT,WAAYA"}