zod-ir 1.3.2 → 1.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts","../src/data.ts","../src/utils.ts","../src/constants.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n isMelliCode,\n isShenaseMelli,\n isPassport,\n isCardNumber,\n isIranianMobile,\n isSheba,\n isPostalCode,\n isLandline,\n verifyAndNormalize,\n getBankInfo,\n getMobileOperator,\n} from \"./utils\";\nimport { getMessage, BaseOptions } from \"./constants\";\n\nexport const zMelliCode = (options?: BaseOptions) =>\n z.string().refine((val) => isMelliCode(val), {\n message: getMessage(\"melliCode\", options),\n });\n\nexport const zShenaseMelli = (options?: BaseOptions) =>\n z.string().refine((val) => isShenaseMelli(val), {\n message: getMessage(\"shenaseMelli\", options),\n });\n\nexport const zPassport = (options?: BaseOptions) =>\n z.string().refine((val) => isPassport(val), {\n message: getMessage(\"passport\", options),\n });\n\nexport const zCardNumber = (options?: BaseOptions) =>\n z.string().refine((val) => isCardNumber(val), {\n message: getMessage(\"cardNumber\", options),\n });\n\ninterface MobileOptions extends BaseOptions {\n strictZero?: boolean | \"optional\";\n}\n\nexport const zIranianMobile = (options?: MobileOptions) =>\n z\n .string()\n .refine(\n (val) => isIranianMobile(val, { strictZero: options?.strictZero }),\n {\n message: getMessage(\"mobile\", options),\n }\n );\n\nexport const zSheba = (options?: BaseOptions) =>\n z.string().refine((val) => isSheba(val), {\n message: getMessage(\"sheba\", options),\n });\n\nexport const zPostalCode = (options?: BaseOptions) =>\n z.string().refine((val) => isPostalCode(val), {\n message: getMessage(\"postalCode\", options),\n });\n\nexport const zLandline = (options?: BaseOptions) =>\n z.string().refine((val) => isLandline(val), {\n message: getMessage(\"landline\", options),\n });\n\nexport const preprocessNumber = (schema: z.ZodTypeAny) =>\n z.preprocess((val) => {\n if (typeof val === \"string\") {\n return verifyAndNormalize(val);\n }\n return val;\n }, schema);\n\nexport {\n isMelliCode,\n isShenaseMelli,\n isPassport,\n isCardNumber,\n isIranianMobile,\n isSheba,\n isPostalCode,\n isLandline,\n verifyAndNormalize,\n getBankInfo,\n getMobileOperator,\n};\n","const CDN_BANKS =\n \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks\";\nconst CDN_OPERATORS =\n \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators\";\n\nexport const BANKS = {\n \"603799\": {\n name: \"Melli\",\n label: \"ملی\",\n color: \"#EF3F3E\",\n logo: `${CDN_BANKS}/melli.svg`,\n },\n \"589210\": {\n name: \"Sepah\",\n label: \"سپه\",\n color: \"#FFC600\",\n logo: `${CDN_BANKS}/sepah.svg`,\n },\n \"627648\": {\n name: \"ToseeSaderat\",\n label: \"توسعه صادرات\",\n color: \"#EDB12C\",\n logo: `${CDN_BANKS}/tosee-saderat.svg`,\n },\n \"627961\": {\n name: \"SanatMadar\",\n label: \"صنعت و معدن\",\n color: \"#B3986D\",\n logo: `${CDN_BANKS}/sanat-madan.svg`,\n },\n \"603770\": {\n name: \"Keshavarzi\",\n label: \"کشاورزی\",\n color: \"#4E7A46\",\n logo: `${CDN_BANKS}/keshavarzi.svg`,\n },\n \"628023\": {\n name: \"Maskan\",\n label: \"مسکن\",\n color: \"#F05A23\",\n logo: `${CDN_BANKS}/maskan.svg`,\n },\n \"627760\": {\n name: \"PostBank\",\n label: \"پست بانک\",\n color: \"#00764D\",\n logo: `${CDN_BANKS}/post-bank.svg`,\n },\n \"502908\": {\n name: \"ToseeTaavon\",\n label: \"توسعه تعاون\",\n color: \"#0064A6\",\n logo: `${CDN_BANKS}/tosee-taavon.svg`,\n },\n \"627412\": {\n name: \"EghtesadNovin\",\n label: \"اقتصاد نوین\",\n color: \"#652D86\",\n logo: `${CDN_BANKS}/eghtesad-novin.svg`,\n },\n \"622106\": {\n name: \"Parsian\",\n label: \"پارسیان\",\n color: \"#B3282D\",\n logo: `${CDN_BANKS}/parsian.svg`,\n },\n \"502229\": {\n name: \"Pasargad\",\n label: \"پاسارگاد\",\n color: \"#FFC72C\",\n logo: `${CDN_BANKS}/pasargad.svg`,\n },\n \"627488\": {\n name: \"Karafarin\",\n label: \"کارآفرین\",\n color: \"#3B9C56\",\n logo: `${CDN_BANKS}/karafarin.svg`,\n },\n \"621986\": {\n name: \"Saman\",\n label: \"سامان\",\n color: \"#006DB6\",\n logo: `${CDN_BANKS}/saman.svg`,\n },\n \"639346\": {\n name: \"Sina\",\n label: \"سینا\",\n color: \"#004E8A\",\n logo: `${CDN_BANKS}/sina.svg`,\n },\n \"639607\": {\n name: \"Sarmayeh\",\n label: \"سرمایه\",\n color: \"#0077B6\",\n logo: `${CDN_BANKS}/sarmayeh.svg`,\n },\n \"636214\": {\n name: \"Ayandeh\",\n label: \"آینده\",\n color: \"#8B5F34\",\n logo: `${CDN_BANKS}/ayandeh.svg`,\n },\n \"502806\": {\n name: \"Shahr\",\n label: \"شهر\",\n color: \"#ED3438\",\n logo: `${CDN_BANKS}/shahr.svg`,\n },\n \"502938\": {\n name: \"Day\",\n label: \"دی\",\n color: \"#0099CC\",\n logo: `${CDN_BANKS}/day.svg`,\n },\n \"603769\": {\n name: \"Saderat\",\n label: \"صادرات\",\n color: \"#1A3266\",\n logo: `${CDN_BANKS}/saderat.svg`,\n },\n \"610433\": {\n name: \"Mellat\",\n label: \"ملت\",\n color: \"#D70005\",\n logo: `${CDN_BANKS}/mellat.svg`,\n },\n \"627353\": {\n name: \"Tejarat\",\n label: \"تجارت\",\n color: \"#005696\",\n logo: `${CDN_BANKS}/tejarat.svg`,\n },\n \"585983\": {\n name: \"Tejarat\",\n label: \"تجارت\",\n color: \"#005696\",\n logo: `${CDN_BANKS}/tejarat.svg`,\n },\n \"589463\": {\n name: \"Refah\",\n label: \"رفاه\",\n color: \"#2B3C8E\",\n logo: `${CDN_BANKS}/refah.svg`,\n },\n \"627381\": {\n name: \"Ansar\",\n label: \"انصار\",\n color: \"#F7B500\",\n logo: `${CDN_BANKS}/ansar.svg`,\n },\n \"505785\": {\n name: \"IranZamin\",\n label: \"ایران زمین\",\n color: \"#92278F\",\n logo: `${CDN_BANKS}/iran-zamin.svg`,\n },\n \"505416\": {\n name: \"Gardeshgari\",\n label: \"گردشگری\",\n color: \"#1D3265\",\n logo: `${CDN_BANKS}/gardeshgari.svg`,\n },\n \"636949\": {\n name: \"Hekmat\",\n label: \"حکمت\",\n color: \"#5F2C83\",\n logo: `${CDN_BANKS}/hekmat.svg`,\n },\n \"505801\": {\n name: \"Kosar\",\n label: \"کوثر\",\n color: \"#C62828\",\n logo: `${CDN_BANKS}/kosar.svg`,\n },\n \"606373\": {\n name: \"MehrIran\",\n label: \"مهر ایران\",\n color: \"#359E49\",\n logo: `${CDN_BANKS}/mehr-iran.svg`,\n },\n \"504172\": {\n name: \"Resalat\",\n label: \"رسالت\",\n color: \"#000000\",\n logo: `${CDN_BANKS}/resalat.svg`,\n },\n \"523388\": {\n name: \"Pasargad\",\n label: \"پاسارگاد (ویپاد)\",\n color: \"#FFC72C\",\n logo: `${CDN_BANKS}/pasargad.svg`,\n },\n \"505809\": {\n name: \"Khavarmianeh\",\n label: \"خاورمیانه\",\n color: \"#1F2B5B\",\n logo: `${CDN_BANKS}/khavarmianeh.svg`,\n },\n} as const;\n\nexport const MOBILE_OPERATORS = {\n MCI: {\n label: \"همراه اول\",\n logo: `${CDN_OPERATORS}/mci.svg`,\n prefixes: [\n \"0910\",\n \"0911\",\n \"0912\",\n \"0913\",\n \"0914\",\n \"0915\",\n \"0916\",\n \"0917\",\n \"0918\",\n \"0919\",\n \"0990\",\n \"0991\",\n \"0992\",\n \"0993\",\n \"0994\",\n ],\n },\n Irancell: {\n label: \"ایرانسل\",\n logo: `${CDN_OPERATORS}/irancell.svg`,\n prefixes: [\n \"0930\",\n \"0933\",\n \"0935\",\n \"0936\",\n \"0937\",\n \"0938\",\n \"0939\",\n \"0901\",\n \"0902\",\n \"0903\",\n \"0904\",\n \"0905\",\n \"0941\",\n ],\n },\n Rightel: {\n label: \"رایتل\",\n logo: `${CDN_OPERATORS}/rightel.svg`,\n prefixes: [\"0920\", \"0921\", \"0922\", \"0923\"],\n },\n Shatel: {\n label: \"شاتل موبایل\",\n logo: `${CDN_OPERATORS}/shatel.svg`,\n prefixes: [\"0998\"],\n },\n Taliya: {\n label: \"تالیا\",\n logo: `${CDN_OPERATORS}/taliya.png`,\n prefixes: [\"0932\"],\n },\n} as const;\n","import { BANKS, MOBILE_OPERATORS } from \"./data\";\n\nexport function verifyAndNormalize(value: string): string {\n if (!value) return \"\";\n const PERSIAN_ZERO = 1776;\n const PERSIAN_NINE = 1785;\n const ARABIC_ZERO = 1632;\n const ARABIC_NINE = 1641;\n const ARABIC_YEH = 1610;\n const PERSIAN_YE = 1740;\n const ARABIC_KAF = 1603;\n const PERSIAN_KE = 1705;\n let result = \"\";\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n let char = value[i];\n if (code >= PERSIAN_ZERO && code <= PERSIAN_NINE) {\n char = String(code - PERSIAN_ZERO);\n } else if (code >= ARABIC_ZERO && code <= ARABIC_NINE) {\n char = String(code - ARABIC_ZERO);\n } else if (code === ARABIC_YEH) {\n char = String.fromCharCode(PERSIAN_YE);\n } else if (code === ARABIC_KAF) {\n char = String.fromCharCode(PERSIAN_KE);\n }\n result += char;\n }\n return result;\n}\n\nexport type BankInfo = {\n name: string;\n label: string;\n color: string;\n logo: string;\n formatted: string;\n} | null;\n\nexport function getBankInfo(cardNumber: string): BankInfo {\n const normalized = verifyAndNormalize(cardNumber).replace(/[\\-\\s]/g, \"\");\n if (normalized.length < 6) return null;\n const bin = normalized.substring(0, 6);\n // @ts-ignore\n const bank = BANKS[bin];\n if (!bank) return null;\n return {\n ...bank,\n formatted: normalized.replace(/(\\d{4})(?=\\d)/g, \"$1-\"),\n };\n}\n\nexport type OperatorInfo = {\n name: string;\n label: string;\n logo: string;\n} | null;\n\nexport function getMobileOperator(mobile: string): OperatorInfo {\n const normalized = verifyAndNormalize(mobile);\n\n let prefix = \"\";\n if (normalized.startsWith(\"09\")) {\n prefix = normalized.substring(0, 4);\n } else if (normalized.startsWith(\"9\")) {\n prefix = \"0\" + normalized.substring(0, 3);\n } else if (normalized.startsWith(\"+98\")) {\n prefix = \"0\" + normalized.substring(3, 6);\n }\n\n if (prefix.length !== 4) return null;\n\n for (const [key, op] of Object.entries(MOBILE_OPERATORS)) {\n // @ts-ignore\n if (op.prefixes.includes(prefix)) {\n return {\n name: key,\n label: op.label,\n logo: op.logo,\n };\n }\n }\n\n return null;\n}\n\nexport function isMelliCode(code: string): boolean {\n if (!/^\\d{10}$/.test(code)) return false;\n if (/^(\\d)\\1+$/.test(code)) return false;\n const check = parseInt(code[9]);\n const sum =\n code\n .substring(0, 9)\n .split(\"\")\n .reduce((acc, x, i) => acc + parseInt(x) * (10 - i), 0) % 11;\n return sum < 2 ? check === sum : check === 11 - sum;\n}\nexport function isShenaseMelli(code: string): boolean {\n if (code.length !== 11 || !/^\\d{11}$/.test(code)) return false;\n const tenth = parseInt(code[9]);\n const inputCheck = parseInt(code[10]);\n const coefficients = [29, 27, 23, 19, 17, 29, 27, 23, 19, 17];\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n const digit = parseInt(code[i]);\n sum += (digit + tenth + 2) * coefficients[i];\n }\n const remainder = sum % 11;\n const calculatedCheck = remainder === 10 ? 0 : remainder;\n return calculatedCheck === inputCheck;\n}\nexport function isPassport(code: string): boolean {\n return /^[A-Za-z][0-9]{8,9}$/.test(code);\n}\nexport function isCardNumber(code: string): boolean {\n const sanitized = code.replace(/[\\-\\s]/g, \"\");\n if (!/^\\d{16}$/.test(sanitized)) return false;\n let sum = 0;\n let shouldDouble = false;\n for (let i = sanitized.length - 1; i >= 0; i--) {\n let digit = parseInt(sanitized[i]);\n if (shouldDouble) {\n digit *= 2;\n if (digit > 9) digit -= 9;\n }\n sum += digit;\n shouldDouble = !shouldDouble;\n }\n return sum % 10 === 0;\n}\ninterface MobileValidationOptions {\n strictZero?: boolean | \"optional\";\n}\nexport function isIranianMobile(\n mobile: string,\n { strictZero = \"optional\" }: MobileValidationOptions = {}\n): boolean {\n const corePattern = \"9\\\\d{9}\";\n let pattern = \"\";\n if (strictZero === true) pattern = `^0${corePattern}$`;\n else if (strictZero === false) pattern = `^${corePattern}$`;\n else pattern = `^(?:0|\\\\+98)?${corePattern}$`;\n return new RegExp(pattern).test(mobile);\n}\nexport function isSheba(code: string): boolean {\n const iban = code.toUpperCase().replace(/[\\-\\s]/g, \"\");\n if (iban.length !== 26 || !iban.startsWith(\"IR\")) return false;\n const newStr = iban.substring(4) + iban.substring(0, 4);\n const numericString = newStr\n .split(\"\")\n .map((c) => {\n const code = c.charCodeAt(0);\n return code >= 48 && code <= 57 ? c : (code - 55).toString();\n })\n .join(\"\");\n try {\n return BigInt(numericString) % BigInt(97) === BigInt(1);\n } catch {\n return false;\n }\n}\nexport function isPostalCode(code: string): boolean {\n return /^[1-9]\\d{9}$/.test(code);\n}\nexport function isLandline(code: string): boolean {\n return /^0\\d{2}\\d{8}$/.test(code);\n}\n","export const ERROR_MESSAGES = {\n fa: {\n melliCode: \"کد ملی نامعتبر است\",\n shenaseMelli: \"شناسه ملی نامعتبر است\",\n passport: \"شماره گذرنامه نامعتبر است\",\n cardNumber: \"شماره کارت نامعتبر است\",\n mobile: \"شماره موبایل نامعتبر است\",\n sheba: \"شماره شبا نامعتبر است\",\n postalCode: \"کد پستی نامعتبر است\",\n landline: \"شماره تلفن ثابت نامعتبر است\",\n },\n en: {\n melliCode: \"Invalid national code\",\n shenaseMelli: \"Invalid legal person ID (Shenase Melli)\",\n passport: \"Invalid passport number\",\n cardNumber: \"Invalid card number\",\n mobile: \"Invalid mobile number\",\n sheba: \"Invalid Sheba (IBAN) number\",\n postalCode: \"Invalid postal code\",\n landline: \"Invalid landline number\",\n },\n} as const;\n\nexport type Language = keyof typeof ERROR_MESSAGES;\n\nexport interface BaseOptions {\n message?: string;\n locale?: Language;\n}\n\nexport const getMessage = (\n key: keyof typeof ERROR_MESSAGES[\"fa\"],\n options?: BaseOptions\n): string => {\n if (options?.message) return options.message;\n const lang = options?.locale || \"fa\";\n return ERROR_MESSAGES[lang][key];\n};"],"mappings":"yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iBAAAE,EAAA,sBAAAC,EAAA,iBAAAC,EAAA,oBAAAC,EAAA,eAAAC,EAAA,gBAAAC,EAAA,eAAAC,EAAA,iBAAAC,EAAA,YAAAC,EAAA,mBAAAC,EAAA,qBAAAC,EAAA,uBAAAC,EAAA,gBAAAC,EAAA,mBAAAC,EAAA,cAAAC,EAAA,eAAAC,EAAA,cAAAC,EAAA,gBAAAC,EAAA,WAAAC,EAAA,kBAAAC,IAAA,eAAAC,EAAAtB,GAAA,IAAAuB,EAAkB,eCAlB,IAAMC,EACJ,iEACIC,EACJ,qEAEWC,EAAQ,CACnB,OAAU,CACR,KAAM,QACN,MAAO,qBACP,MAAO,UACP,KAAM,GAAGF,CAAS,YACpB,EACA,OAAU,CACR,KAAM,QACN,MAAO,qBACP,MAAO,UACP,KAAM,GAAGA,CAAS,YACpB,EACA,OAAU,CACR,KAAM,eACN,MAAO,sEACP,MAAO,UACP,KAAM,GAAGA,CAAS,oBACpB,EACA,OAAU,CACR,KAAM,aACN,MAAO,2DACP,MAAO,UACP,KAAM,GAAGA,CAAS,kBACpB,EACA,OAAU,CACR,KAAM,aACN,MAAO,6CACP,MAAO,UACP,KAAM,GAAGA,CAAS,iBACpB,EACA,OAAU,CACR,KAAM,SACN,MAAO,2BACP,MAAO,UACP,KAAM,GAAGA,CAAS,aACpB,EACA,OAAU,CACR,KAAM,WACN,MAAO,8CACP,MAAO,UACP,KAAM,GAAGA,CAAS,gBACpB,EACA,OAAU,CACR,KAAM,cACN,MAAO,gEACP,MAAO,UACP,KAAM,GAAGA,CAAS,mBACpB,EACA,OAAU,CACR,KAAM,gBACN,MAAO,gEACP,MAAO,UACP,KAAM,GAAGA,CAAS,qBACpB,EACA,OAAU,CACR,KAAM,UACN,MAAO,6CACP,MAAO,UACP,KAAM,GAAGA,CAAS,cACpB,EACA,OAAU,CACR,KAAM,WACN,MAAO,mDACP,MAAO,UACP,KAAM,GAAGA,CAAS,eACpB,EACA,OAAU,CACR,KAAM,YACN,MAAO,mDACP,MAAO,UACP,KAAM,GAAGA,CAAS,gBACpB,EACA,OAAU,CACR,KAAM,QACN,MAAO,iCACP,MAAO,UACP,KAAM,GAAGA,CAAS,YACpB,EACA,OAAU,CACR,KAAM,OACN,MAAO,2BACP,MAAO,UACP,KAAM,GAAGA,CAAS,WACpB,EACA,OAAU,CACR,KAAM,WACN,MAAO,uCACP,MAAO,UACP,KAAM,GAAGA,CAAS,eACpB,EACA,OAAU,CACR,KAAM,UACN,MAAO,iCACP,MAAO,UACP,KAAM,GAAGA,CAAS,cACpB,EACA,OAAU,CACR,KAAM,QACN,MAAO,qBACP,MAAO,UACP,KAAM,GAAGA,CAAS,YACpB,EACA,OAAU,CACR,KAAM,MACN,MAAO,eACP,MAAO,UACP,KAAM,GAAGA,CAAS,UACpB,EACA,OAAU,CACR,KAAM,UACN,MAAO,uCACP,MAAO,UACP,KAAM,GAAGA,CAAS,cACpB,EACA,OAAU,CACR,KAAM,SACN,MAAO,qBACP,MAAO,UACP,KAAM,GAAGA,CAAS,aACpB,EACA,OAAU,CACR,KAAM,UACN,MAAO,iCACP,MAAO,UACP,KAAM,GAAGA,CAAS,cACpB,EACA,OAAU,CACR,KAAM,UACN,MAAO,iCACP,MAAO,UACP,KAAM,GAAGA,CAAS,cACpB,EACA,OAAU,CACR,KAAM,QACN,MAAO,2BACP,MAAO,UACP,KAAM,GAAGA,CAAS,YACpB,EACA,OAAU,CACR,KAAM,QACN,MAAO,iCACP,MAAO,UACP,KAAM,GAAGA,CAAS,YACpB,EACA,OAAU,CACR,KAAM,YACN,MAAO,0DACP,MAAO,UACP,KAAM,GAAGA,CAAS,iBACpB,EACA,OAAU,CACR,KAAM,cACN,MAAO,6CACP,MAAO,UACP,KAAM,GAAGA,CAAS,kBACpB,EACA,OAAU,CACR,KAAM,SACN,MAAO,2BACP,MAAO,UACP,KAAM,GAAGA,CAAS,aACpB,EACA,OAAU,CACR,KAAM,QACN,MAAO,2BACP,MAAO,UACP,KAAM,GAAGA,CAAS,YACpB,EACA,OAAU,CACR,KAAM,WACN,MAAO,oDACP,MAAO,UACP,KAAM,GAAGA,CAAS,gBACpB,EACA,OAAU,CACR,KAAM,UACN,MAAO,iCACP,MAAO,UACP,KAAM,GAAGA,CAAS,cACpB,EACA,OAAU,CACR,KAAM,WACN,MAAO,oFACP,MAAO,UACP,KAAM,GAAGA,CAAS,eACpB,EACA,OAAU,CACR,KAAM,eACN,MAAO,yDACP,MAAO,UACP,KAAM,GAAGA,CAAS,mBACpB,CACF,EAEaG,EAAmB,CAC9B,IAAK,CACH,MAAO,oDACP,KAAM,GAAGF,CAAa,WACtB,SAAU,CACR,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACF,CACF,EACA,SAAU,CACR,MAAO,6CACP,KAAM,GAAGA,CAAa,gBACtB,SAAU,CACR,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,OACA,MACF,CACF,EACA,QAAS,CACP,MAAO,iCACP,KAAM,GAAGA,CAAa,eACtB,SAAU,CAAC,OAAQ,OAAQ,OAAQ,MAAM,CAC3C,EACA,OAAQ,CACN,MAAO,gEACP,KAAM,GAAGA,CAAa,cACtB,SAAU,CAAC,MAAM,CACnB,EACA,OAAQ,CACN,MAAO,iCACP,KAAM,GAAGA,CAAa,cACtB,SAAU,CAAC,MAAM,CACnB,CACF,EC9PO,SAASG,EAAmBC,EAAuB,CACxD,GAAI,CAACA,EAAO,MAAO,GACnB,IAAMC,EAAe,KACfC,EAAe,KACfC,EAAc,KACdC,EAAc,KACdC,EAAa,KACbC,EAAa,KACbC,EAAa,KACbC,EAAa,KACfC,EAAS,GACb,QAASC,EAAI,EAAGA,EAAIV,EAAM,OAAQU,IAAK,CACrC,IAAMC,EAAOX,EAAM,WAAWU,CAAC,EAC3BE,EAAOZ,EAAMU,CAAC,EACdC,GAAQV,GAAgBU,GAAQT,EAClCU,EAAO,OAAOD,EAAOV,CAAY,EACxBU,GAAQR,GAAeQ,GAAQP,EACxCQ,EAAO,OAAOD,EAAOR,CAAW,EACvBQ,IAASN,EAClBO,EAAO,OAAO,aAAaN,CAAU,EAC5BK,IAASJ,IAClBK,EAAO,OAAO,aAAaJ,CAAU,GAEvCC,GAAUG,CACZ,CACA,OAAOH,CACT,CAUO,SAASI,EAAYC,EAA8B,CACxD,IAAMC,EAAahB,EAAmBe,CAAU,EAAE,QAAQ,UAAW,EAAE,EACvE,GAAIC,EAAW,OAAS,EAAG,OAAO,KAClC,IAAMC,EAAMD,EAAW,UAAU,EAAG,CAAC,EAE/BE,EAAOC,EAAMF,CAAG,EACtB,OAAKC,EACE,CACL,GAAGA,EACH,UAAWF,EAAW,QAAQ,iBAAkB,KAAK,CACvD,EAJkB,IAKpB,CAQO,SAASI,EAAkBC,EAA8B,CAC9D,IAAML,EAAahB,EAAmBqB,CAAM,EAExCC,EAAS,GASb,GARIN,EAAW,WAAW,IAAI,EAC5BM,EAASN,EAAW,UAAU,EAAG,CAAC,EACzBA,EAAW,WAAW,GAAG,EAClCM,EAAS,IAAMN,EAAW,UAAU,EAAG,CAAC,EAC/BA,EAAW,WAAW,KAAK,IACpCM,EAAS,IAAMN,EAAW,UAAU,EAAG,CAAC,GAGtCM,EAAO,SAAW,EAAG,OAAO,KAEhC,OAAW,CAACC,EAAKC,CAAE,IAAK,OAAO,QAAQC,CAAgB,EAErD,GAAID,EAAG,SAAS,SAASF,CAAM,EAC7B,MAAO,CACL,KAAMC,EACN,MAAOC,EAAG,MACV,KAAMA,EAAG,IACX,EAIJ,OAAO,IACT,CAEO,SAASE,EAAYd,EAAuB,CAEjD,GADI,CAAC,WAAW,KAAKA,CAAI,GACrB,YAAY,KAAKA,CAAI,EAAG,MAAO,GACnC,IAAMe,EAAQ,SAASf,EAAK,CAAC,CAAC,EACxBgB,EACJhB,EACG,UAAU,EAAG,CAAC,EACd,MAAM,EAAE,EACR,OAAO,CAACiB,EAAKC,EAAGnB,IAAMkB,EAAM,SAASC,CAAC,GAAK,GAAKnB,GAAI,CAAC,EAAI,GAC9D,OAAOiB,EAAM,EAAID,IAAUC,EAAMD,IAAU,GAAKC,CAClD,CACO,SAASG,EAAenB,EAAuB,CACpD,GAAIA,EAAK,SAAW,IAAM,CAAC,WAAW,KAAKA,CAAI,EAAG,MAAO,GACzD,IAAMoB,EAAQ,SAASpB,EAAK,CAAC,CAAC,EACxBqB,EAAa,SAASrB,EAAK,EAAE,CAAC,EAC9BsB,EAAe,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EACxDN,EAAM,EACV,QAASjB,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3B,IAAMwB,EAAQ,SAASvB,EAAKD,CAAC,CAAC,EAC9BiB,IAAQO,EAAQH,EAAQ,GAAKE,EAAavB,CAAC,CAC7C,CACA,IAAMyB,EAAYR,EAAM,GAExB,OADwBQ,IAAc,GAAK,EAAIA,KACpBH,CAC7B,CACO,SAASI,EAAWzB,EAAuB,CAChD,MAAO,uBAAuB,KAAKA,CAAI,CACzC,CACO,SAAS0B,EAAa1B,EAAuB,CAClD,IAAM2B,EAAY3B,EAAK,QAAQ,UAAW,EAAE,EAC5C,GAAI,CAAC,WAAW,KAAK2B,CAAS,EAAG,MAAO,GACxC,IAAIX,EAAM,EACNY,EAAe,GACnB,QAAS7B,EAAI4B,EAAU,OAAS,EAAG5B,GAAK,EAAGA,IAAK,CAC9C,IAAIwB,EAAQ,SAASI,EAAU5B,CAAC,CAAC,EAC7B6B,IACFL,GAAS,EACLA,EAAQ,IAAGA,GAAS,IAE1BP,GAAOO,EACPK,EAAe,CAACA,CAClB,CACA,OAAOZ,EAAM,KAAO,CACtB,CAIO,SAASa,EACdpB,EACA,CAAE,WAAAqB,EAAa,UAAW,EAA6B,CAAC,EAC/C,CACT,IAAMC,EAAc,UAChBC,EAAU,GACd,OAAIF,IAAe,GAAME,EAAU,KAAKD,CAAW,IAC1CD,IAAe,GAAOE,EAAU,IAAID,CAAW,IACnDC,EAAU,gBAAgBD,CAAW,IACnC,IAAI,OAAOC,CAAO,EAAE,KAAKvB,CAAM,CACxC,CACO,SAASwB,EAAQjC,EAAuB,CAC7C,IAAMkC,EAAOlC,EAAK,YAAY,EAAE,QAAQ,UAAW,EAAE,EACrD,GAAIkC,EAAK,SAAW,IAAM,CAACA,EAAK,WAAW,IAAI,EAAG,MAAO,GAEzD,IAAMC,GADSD,EAAK,UAAU,CAAC,EAAIA,EAAK,UAAU,EAAG,CAAC,GAEnD,MAAM,EAAE,EACR,IAAKE,GAAM,CACV,IAAMpC,EAAOoC,EAAE,WAAW,CAAC,EAC3B,OAAOpC,GAAQ,IAAMA,GAAQ,GAAKoC,GAAKpC,EAAO,IAAI,SAAS,CAC7D,CAAC,EACA,KAAK,EAAE,EACV,GAAI,CACF,OAAO,OAAOmC,CAAa,EAAI,OAAO,EAAE,IAAM,OAAO,CAAC,CACxD,MAAQ,CACN,MAAO,EACT,CACF,CACO,SAASE,EAAarC,EAAuB,CAClD,MAAO,eAAe,KAAKA,CAAI,CACjC,CACO,SAASsC,EAAWtC,EAAuB,CAChD,MAAO,gBAAgB,KAAKA,CAAI,CAClC,CCrKO,IAAMuC,EAAiB,CAC5B,GAAI,CACF,UAAW,gGACX,aAAc,kHACd,SAAU,0IACV,WAAY,wHACZ,OAAQ,oIACR,MAAO,kHACP,WAAY,sGACZ,SAAU,gJACZ,EACA,GAAI,CACF,UAAW,wBACX,aAAc,0CACd,SAAU,0BACV,WAAY,sBACZ,OAAQ,wBACR,MAAO,8BACP,WAAY,sBACZ,SAAU,yBACZ,CACF,EASaC,EAAa,CACxBC,EACAC,IACW,CACX,GAAIA,GAAS,QAAS,OAAOA,EAAQ,QACrC,IAAMC,EAAOD,GAAS,QAAU,KAChC,OAAOH,EAAeI,CAAI,EAAEF,CAAG,CACjC,EHrBO,IAAMG,EAAcC,GACzB,IAAE,OAAO,EAAE,OAAQC,GAAQC,EAAYD,CAAG,EAAG,CAC3C,QAASE,EAAW,YAAaH,CAAO,CAC1C,CAAC,EAEUI,EAAiBJ,GAC5B,IAAE,OAAO,EAAE,OAAQC,GAAQI,EAAeJ,CAAG,EAAG,CAC9C,QAASE,EAAW,eAAgBH,CAAO,CAC7C,CAAC,EAEUM,EAAaN,GACxB,IAAE,OAAO,EAAE,OAAQC,GAAQM,EAAWN,CAAG,EAAG,CAC1C,QAASE,EAAW,WAAYH,CAAO,CACzC,CAAC,EAEUQ,EAAeR,GAC1B,IAAE,OAAO,EAAE,OAAQC,GAAQQ,EAAaR,CAAG,EAAG,CAC5C,QAASE,EAAW,aAAcH,CAAO,CAC3C,CAAC,EAMUU,EAAkBV,GAC7B,IACG,OAAO,EACP,OACEC,GAAQU,EAAgBV,EAAK,CAAE,WAAYD,GAAS,UAAW,CAAC,EACjE,CACE,QAASG,EAAW,SAAUH,CAAO,CACvC,CACF,EAESY,EAAUZ,GACrB,IAAE,OAAO,EAAE,OAAQC,GAAQY,EAAQZ,CAAG,EAAG,CACvC,QAASE,EAAW,QAASH,CAAO,CACtC,CAAC,EAEUc,EAAed,GAC1B,IAAE,OAAO,EAAE,OAAQC,GAAQc,EAAad,CAAG,EAAG,CAC5C,QAASE,EAAW,aAAcH,CAAO,CAC3C,CAAC,EAEUgB,EAAahB,GACxB,IAAE,OAAO,EAAE,OAAQC,GAAQgB,EAAWhB,CAAG,EAAG,CAC1C,QAASE,EAAW,WAAYH,CAAO,CACzC,CAAC,EAEUkB,EAAoBC,GAC/B,IAAE,WAAYlB,GACR,OAAOA,GAAQ,SACVmB,EAAmBnB,CAAG,EAExBA,EACNkB,CAAM","names":["index_exports","__export","getBankInfo","getMobileOperator","isCardNumber","isIranianMobile","isLandline","isMelliCode","isPassport","isPostalCode","isSheba","isShenaseMelli","preprocessNumber","verifyAndNormalize","zCardNumber","zIranianMobile","zLandline","zMelliCode","zPassport","zPostalCode","zSheba","zShenaseMelli","__toCommonJS","import_zod","CDN_BANKS","CDN_OPERATORS","BANKS","MOBILE_OPERATORS","verifyAndNormalize","value","PERSIAN_ZERO","PERSIAN_NINE","ARABIC_ZERO","ARABIC_NINE","ARABIC_YEH","PERSIAN_YE","ARABIC_KAF","PERSIAN_KE","result","i","code","char","getBankInfo","cardNumber","normalized","bin","bank","BANKS","getMobileOperator","mobile","prefix","key","op","MOBILE_OPERATORS","isMelliCode","check","sum","acc","x","isShenaseMelli","tenth","inputCheck","coefficients","digit","remainder","isPassport","isCardNumber","sanitized","shouldDouble","isIranianMobile","strictZero","corePattern","pattern","isSheba","iban","numericString","c","isPostalCode","isLandline","ERROR_MESSAGES","getMessage","key","options","lang","zMelliCode","options","val","isMelliCode","getMessage","zShenaseMelli","isShenaseMelli","zPassport","isPassport","zCardNumber","isCardNumber","zIranianMobile","isIranianMobile","zSheba","isSheba","zPostalCode","isPostalCode","zLandline","isLandline","preprocessNumber","schema","verifyAndNormalize"]}
1
+ {"version":3,"sources":["../src/index.ts","../src/data.ts","../src/pelak-city-codes.ts","../src/utils.ts","../src/constants.ts"],"sourcesContent":["import { z } from \"zod\";\nimport {\n isMelliCode,\n isShenaseMelli,\n isPassport,\n isCardNumber,\n isIranianMobile,\n isSheba,\n isPostalCode,\n isLandline,\n isBillIdValid,\n isPaymentIdValid,\n isPlateNumber,\n verifyAndNormalize,\n getBankInfo,\n getMobileOperator,\n getBillInfo,\n getPlateInfo,\n type BankInfo,\n type OperatorInfo,\n type BillInfo,\n type PlateInfo,\n} from \"./utils\";\nimport { getMessage, BaseOptions } from \"./constants\";\n\nexport const zMelliCode = (options?: BaseOptions) =>\n z.string().refine((val) => isMelliCode(val), {\n message: getMessage(\"melliCode\", options),\n });\n\nexport const zShenaseMelli = (options?: BaseOptions) =>\n z.string().refine((val) => isShenaseMelli(val), {\n message: getMessage(\"shenaseMelli\", options),\n });\n\nexport const zPassport = (options?: BaseOptions) =>\n z.string().refine((val) => isPassport(val), {\n message: getMessage(\"passport\", options),\n });\n\nexport const zCardNumber = (options?: BaseOptions) =>\n z.string().refine((val) => isCardNumber(val), {\n message: getMessage(\"cardNumber\", options),\n });\n\ninterface MobileOptions extends BaseOptions {\n strictZero?: boolean | \"optional\";\n}\n\nexport const zIranianMobile = (options?: MobileOptions) =>\n z\n .string()\n .refine(\n (val) => isIranianMobile(val, { strictZero: options?.strictZero }),\n {\n message: getMessage(\"mobile\", options),\n }\n );\n\nexport const zSheba = (options?: BaseOptions) =>\n z.string().refine((val) => isSheba(val), {\n message: getMessage(\"sheba\", options),\n });\n\nexport const zPostalCode = (options?: BaseOptions) =>\n z.string().refine((val) => isPostalCode(val), {\n message: getMessage(\"postalCode\", options),\n });\n\nexport const zLandline = (options?: BaseOptions) =>\n z.string().refine((val) => isLandline(val), {\n message: getMessage(\"landline\", options),\n });\n\nexport const zBillId = (options?: BaseOptions) =>\n z.string().refine((val) => isBillIdValid(val), {\n message: getMessage(\"billId\", options),\n });\n\nexport const zPaymentId = (options?: BaseOptions) =>\n z.string().refine((val) => val.length >= 6 && val.length <= 13, {\n message: getMessage(\"paymentId\", options),\n });\n\nexport const zPlateNumber = (options?: BaseOptions) =>\n z.string().refine((val) => isPlateNumber(val), {\n message: getMessage(\"plateNumber\", options),\n });\n\nexport const preprocessNumber = (schema: z.ZodTypeAny) =>\n z.preprocess((val) => {\n if (typeof val === \"string\") {\n return verifyAndNormalize(val);\n }\n return val;\n }, schema);\n\nexport {\n isMelliCode,\n isShenaseMelli,\n isPassport,\n isCardNumber,\n isIranianMobile,\n isSheba,\n isPostalCode,\n isLandline,\n isBillIdValid,\n isPaymentIdValid,\n isPlateNumber,\n verifyAndNormalize,\n getBankInfo,\n getMobileOperator,\n getBillInfo,\n getPlateInfo,\n type BankInfo,\n type OperatorInfo,\n type BillInfo,\n type PlateInfo,\n type BaseOptions,\n};\n","const CDN_BANKS = \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks\";\nconst CDN_OPERATORS = \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators\";\nconst CDN_BILLS = \"https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/bills\"; \n\nexport const BANKS = {\n \"603799\": { name: \"Melli\", label: \"ملی\", color: \"#EF3F3E\", logo: `${CDN_BANKS}/melli.svg` },\n \"589210\": { name: \"Sepah\", label: \"سپه\", color: \"#FFC600\", logo: `${CDN_BANKS}/sepah.svg` },\n \"627648\": { name: \"ToseeSaderat\", label: \"توسعه صادرات\", color: \"#EDB12C\", logo: `${CDN_BANKS}/tosee-saderat.svg` },\n \"627961\": { name: \"SanatMadar\", label: \"صنعت و معدن\", color: \"#B3986D\", logo: `${CDN_BANKS}/sanat-madan.svg` },\n \"603770\": { name: \"Keshavarzi\", label: \"کشاورزی\", color: \"#4E7A46\", logo: `${CDN_BANKS}/keshavarzi.svg` },\n \"628023\": { name: \"Maskan\", label: \"مسکن\", color: \"#F05A23\", logo: `${CDN_BANKS}/maskan.svg` },\n \"627760\": { name: \"PostBank\", label: \"پست بانک\", color: \"#00764D\", logo: `${CDN_BANKS}/post-bank.svg` },\n \"502908\": { name: \"ToseeTaavon\", label: \"توسعه تعاون\", color: \"#0064A6\", logo: `${CDN_BANKS}/tosee-taavon.svg` },\n \"627412\": { name: \"EghtesadNovin\", label: \"اقتصاد نوین\", color: \"#652D86\", logo: `${CDN_BANKS}/eghtesad-novin.svg` },\n \"622106\": { name: \"Parsian\", label: \"پارسیان\", color: \"#B3282D\", logo: `${CDN_BANKS}/parsian.svg` },\n \"502229\": { name: \"Pasargad\", label: \"پاسارگاد\", color: \"#FFC72C\", logo: `${CDN_BANKS}/pasargad.svg` },\n \"627488\": { name: \"Karafarin\", label: \"کارآفرین\", color: \"#3B9C56\", logo: `${CDN_BANKS}/karafarin.svg` },\n \"621986\": { name: \"Saman\", label: \"سامان\", color: \"#006DB6\", logo: `${CDN_BANKS}/saman.svg` },\n \"639346\": { name: \"Sina\", label: \"سینا\", color: \"#004E8A\", logo: `${CDN_BANKS}/sina.svg` },\n \"639607\": { name: \"Sarmayeh\", label: \"سرمایه\", color: \"#0077B6\", logo: `${CDN_BANKS}/sarmayeh.svg` },\n \"636214\": { name: \"Ayandeh\", label: \"آینده\", color: \"#8B5F34\", logo: `${CDN_BANKS}/ayandeh.svg` },\n \"502806\": { name: \"Shahr\", label: \"شهر\", color: \"#ED3438\", logo: `${CDN_BANKS}/shahr.svg` },\n \"502938\": { name: \"Day\", label: \"دی\", color: \"#0099CC\", logo: `${CDN_BANKS}/day.svg` },\n \"603769\": { name: \"Saderat\", label: \"صادرات\", color: \"#1A3266\", logo: `${CDN_BANKS}/saderat.svg` },\n \"610433\": { name: \"Mellat\", label: \"ملت\", color: \"#D70005\", logo: `${CDN_BANKS}/mellat.svg` },\n \"627353\": { name: \"Tejarat\", label: \"تجارت\", color: \"#005696\", logo: `${CDN_BANKS}/tejarat.svg` },\n \"585983\": { name: \"Tejarat\", label: \"تجارت\", color: \"#005696\", logo: `${CDN_BANKS}/tejarat.svg` },\n \"589463\": { name: \"Refah\", label: \"رفاه\", color: \"#2B3C8E\", logo: `${CDN_BANKS}/refah.svg` },\n \"627381\": { name: \"Ansar\", label: \"انصار\", color: \"#F7B500\", logo: `${CDN_BANKS}/ansar.svg` },\n \"505785\": { name: \"IranZamin\", label: \"ایران زمین\", color: \"#92278F\", logo: `${CDN_BANKS}/iran-zamin.svg` },\n \"505416\": { name: \"Gardeshgari\", label: \"گردشگری\", color: \"#1D3265\", logo: `${CDN_BANKS}/gardeshgari.svg` },\n \"636949\": { name: \"Hekmat\", label: \"حکمت\", color: \"#5F2C83\", logo: `${CDN_BANKS}/hekmat.svg` },\n \"505801\": { name: \"Kosar\", label: \"کوثر\", color: \"#C62828\", logo: `${CDN_BANKS}/kosar.svg` },\n \"606373\": { name: \"MehrIran\", label: \"مهر ایران\", color: \"#359E49\", logo: `${CDN_BANKS}/mehr-iran.svg` },\n \"504172\": { name: \"Resalat\", label: \"رسالت\", color: \"#000000\", logo: `${CDN_BANKS}/resalat.svg` },\n \"523388\": { name: \"Pasargad\", label: \"پاسارگاد (ویپاد)\", color: \"#FFC72C\", logo: `${CDN_BANKS}/pasargad.svg` },\n \"505809\": { name: \"Khavarmianeh\", label: \"خاورمیانه\", color: \"#1F2B5B\", logo: `${CDN_BANKS}/khavarmianeh.svg` },\n} as const;\n\nexport const MOBILE_OPERATORS = {\n MCI: {\n label: \"همراه اول\",\n logo: `${CDN_OPERATORS}/mci.svg`,\n prefixes: [\"0910\", \"0911\", \"0912\", \"0913\", \"0914\", \"0915\", \"0916\", \"0917\", \"0918\", \"0919\", \"0990\", \"0991\", \"0992\", \"0993\", \"0994\"],\n },\n Irancell: {\n label: \"ایرانسل\",\n logo: `${CDN_OPERATORS}/irancell.svg`,\n prefixes: [\"0930\", \"0933\", \"0935\", \"0936\", \"0937\", \"0938\", \"0939\", \"0901\", \"0902\", \"0903\", \"0904\", \"0905\", \"0941\"],\n },\n Rightel: {\n label: \"رایتل\",\n logo: `${CDN_OPERATORS}/rightel.svg`,\n prefixes: [\"0920\", \"0921\", \"0922\", \"0923\"],\n },\n Shatel: {\n label: \"شاتل موبایل\",\n logo: `${CDN_OPERATORS}/shatel.svg`,\n prefixes: [\"0998\"],\n },\n Taliya: {\n label: \"تالیا\",\n logo: `${CDN_OPERATORS}/taliya.png`,\n prefixes: [\"0932\"],\n },\n} as const;\n\n// مالیات حذف شد\nexport const BILL_TYPES = {\n 1: { label: \"آب\", type: \"water\", color: \"#00a8ff\", logo: `${CDN_BILLS}/water.svg` },\n 2: { label: \"برق\", type: \"electricity\", color: \"#fbc531\", logo: `${CDN_BILLS}/electricity.svg` },\n 3: { label: \"گاز\", type: \"gas\", color: \"#e84118\", logo: `${CDN_BILLS}/gas.svg` },\n 4: { label: \"تلفن ثابت\", type: \"phone\", color: \"#273c75\", logo: `${CDN_BILLS}/phone.svg` },\n 5: { label: \"تلفن همراه\", type: \"mobile\", color: \"#8c7ae6\", logo: `${CDN_BILLS}/mobile.svg` },\n 6: { label: \"عوارض شهرداری\", type: \"municipality\", color: \"#44bd32\", logo: `${CDN_BILLS}/municipality.svg` },\n 9: { label: \"جرایم رانندگی\", type: \"traffic\", color: \"#c23616\", logo: `${CDN_BILLS}/traffic.svg` },\n} as const;","export const PLATE_CITY_CODES = [\n {\n province: \"آذربایجان شرقی\",\n codes: [\n {\n code: \"15\",\n details: [\n {\n city: \"تبریز\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"25\",\n details: [\n { city: \"اهر\", letters: [\"س\"] },\n { city: \"آذرشهر\", letters: [\"ی\"] },\n { city: \"بستان‌آباد\", letters: [\"م\"] },\n { city: \"بناب\", letters: [\"ل\"] },\n { city: \"جلفا\", letters: [\"ط\"] },\n { city: \"سراب\", letters: [\"ص\"] },\n { city: \"شبستر\", letters: [\"ن\"] },\n { city: \"کلیبر\", letters: [\"و\"] },\n { city: \"مراغه\", letters: [\"ب\"] },\n { city: \"مرند\", letters: [\"ج\"] },\n { city: \"میانه\", letters: [\"د\"] },\n { city: \"هریس\", letters: [\"ه\"] },\n { city: \"هشترود\", letters: [\"ق\"] },\n ],\n },\n {\n code: \"35\",\n details: [\n { city: \"اسکو\", letters: [\"ب\"] },\n { city: \"مرند\", letters: [\"ط\"] },\n { city: \"مراغه\", letters: [\"ق\"] },\n { city: \"تبریز\", letters: [\"ل\", \"م\"] },\n { city: \"آذرشهر\", letters: [\"ص\"] },\n { city: \"اهر\", letters: [\"ن\"] },\n { city: \"بناب\", letters: [\"س\"] },\n { city: \"بستان آباد\", letters: [\"ی\"] },\n { city: \"جلفا\", letters: [\"ه\"] },\n { city: \"سراب\", letters: [\"و\"] },\n { city: \"شبستر\", letters: [\"د\"] },\n { city: \"کلیبر\", letters: [\"ج\"] },\n { city: \"میانه\", letters: [\"ز\"] },\n { city: \"هریس\", letters: [\"الف\"] },\n { city: \"هشترود\", letters: [\"ت\"] },\n { city: \"تبریز و چاراویماق\", letters: [\"س\"] },\n ],\n },\n ],\n },\n {\n province: \"آذربایجان غربی\",\n codes: [\n {\n code: \"17\",\n details: [\n {\n city: \"ارومیه\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n ],\n },\n { city: \"خوی\", letters: [\"م\"] },\n ],\n },\n {\n code: \"27\",\n details: [\n { city: \"خوی\", letters: [\"ب\"] },\n { city: \"مهاباد\", letters: [\"ج\"] },\n { city: \"ماکو\", letters: [\"د\"] },\n { city: \"سلماس\", letters: [\"س\"] },\n { city: \"نقده\", letters: [\"ص\"] },\n { city: \"میاندوآب\", letters: [\"ط\", \"ن\"] },\n { city: \"تکاب\", letters: [\"ق\"] },\n { city: \"شاهین‌دژ\", letters: [\"ل\"] },\n { city: \"سردشت\", letters: [\"م\"] },\n { city: \"بوکان\", letters: [\"ن\"] },\n { city: \"چالدران\", letters: [\"ه\"] },\n { city: \"پیرانشهر\", letters: [\"و\"] },\n { city: \"اشنویه\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"37\",\n details: [\n { city: \"خوی\", letters: [\"ب\"] },\n { city: \"میاندوآب\", letters: [\"ج\"] },\n { city: \"نقده\", letters: [\"د\"] },\n { city: \"مهاباد\", letters: [\"ص\"] },\n { city: \"بوکان\", letters: [\"ط\"] },\n { city: \"سلماس\", letters: [\"ق\"] },\n { city: \"ماکو\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"اردبیل\",\n codes: [\n {\n code: \"91\",\n details: [\n { city: \"اردبیل\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"م\", \"و\", \"ی\"] },\n { city: \"پارس‌آباد\", letters: [\"ص\", \"م\", \"و\", \"ی\"] },\n { city: \"خلخال\", letters: [\"ط\"] },\n { city: \"گرمی\", letters: [\"ل\"] },\n { city: \"بیله‌سوار\", letters: [\"ل\"] },\n { city: \"مشکین‌شهر\", letters: [\"ل\", \"ن\"] },\n { city: \"نیر\", letters: [\"م\"] },\n { city: \"کوثر\", letters: [\"م\", \"و\"] },\n { city: \"نمین\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"اصفهان\",\n codes: [\n {\n code: \"13\",\n details: [\n {\n city: \"اصفهان\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n { city: \"فلاورجان\", letters: [\"ص\"] },\n ],\n },\n {\n code: \"23\",\n details: [\n { city: \"کاشان\", letters: [\"ب\"] },\n { city: \"نجف‌آباد\", letters: [\"ج\"] },\n { city: \"شهرضا\", letters: [\"د\"] },\n { city: \"خمینی‌شهر\", letters: [\"س\"] },\n { city: \"گلپایگان\", letters: [\"ص\"] },\n { city: \"نطنز\", letters: [\"ط\"] },\n { city: \"اردستان\", letters: [\"ق\"] },\n { city: \"خوانسار\", letters: [\"ل\"] },\n { city: \"نایین\", letters: [\"م\"] },\n { city: \"سمیرم\", letters: [\"ن\"] },\n { city: \"فلاورجان\", letters: [\"ه\"] },\n { city: \"فریدون‌شهر\", letters: [\"و\"] },\n { city: \"لنجان\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"43\",\n details: [\n { city: \"فریدن\", letters: [\"ب\"] },\n { city: \"مبارکه\", letters: [\"ج\", \"ط\"] },\n { city: \"شاهین‌شهر و میمه\", letters: [\"د\", \"ل\"] },\n { city: \"آران و بیدگل\", letters: [\"س\"] },\n { city: \"تیران و کرون\", letters: [\"ص\"] },\n { city: \"دهاقان\", letters: [\"ق\"] },\n { city: \"نجف‌آباد\", letters: [\"م\"] },\n { city: \"خمینی‌شهر\", letters: [\"ن\"] },\n { city: \"لنجان\", letters: [\"ه\"] },\n { city: \"کاشان\", letters: [\"و\"] },\n { city: \"فلاورجان\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"53\",\n details: [\n { city: \"اصفهان\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ق\", \"ل\", \"و\"] },\n { city: \"شهرضا\", letters: [\"ط\"] },\n { city: \"شاهین‌شهر و میمه\", letters: [\"م\"] },\n { city: \"نجف‌آباد\", letters: [\"ن\"] },\n { city: \"کاشان\", letters: [\"ه\"] },\n { city: \"خمینی‌شهر\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"67\",\n details: [\n {\n city: \"اصفهان\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ط\", \"ل\", \"م\", \"ن\", \"و\"],\n },\n { city: \"شاهین‌شهر و میمه\", letters: [\"ق\"] },\n { city: \"لنجان\", letters: [\"ص\"] },\n ],\n },\n ],\n },\n {\n province: \"البرز\",\n codes: [\n {\n code: \"21\",\n details: [\n { city: \"ساوجبلاغ\", letters: [\"ص\"] },\n { city: \"کرج\", letters: [\"ل\", \"و\"] },\n ],\n },\n {\n code: \"30\",\n details: [{ city: \"کرج\", letters: [\"د\", \"س\", \"ل\", \"م\", \"ه\"] }],\n },\n {\n code: \"38\",\n details: [\n { city: \"کرج\", letters: [\"ب\", \"د\", \"س\", \"م\", \"ن\", \"ه\", \"ی\"] },\n ],\n },\n {\n code: \"68\",\n details: [\n {\n city: \"کرج\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"78\",\n details: [{ city: \"ساوجبلاغ\", letters: [\"ط\"] }],\n },\n ],\n },\n {\n province: \"ایلام\",\n codes: [\n {\n code: \"98\",\n details: [\n { city: \"ایلام\", letters: [\"ب\", \"ج\", \"د\"] },\n { city: \"مهران\", letters: [\"ص\"] },\n { city: \"بدره\", letters: [\"ط\"] },\n { city: \"دهلران\", letters: [\"ق\"] },\n { city: \"چرداول\", letters: [\"ل\"] },\n { city: \"ایوان\", letters: [\"م\"] },\n { city: \"آبدانان\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"بوشهر\",\n codes: [\n {\n code: \"48\",\n details: [\n {\n city: \"بوشهر\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"58\",\n details: [\n { city: \"دشتستان\", letters: [\"ب\", \"م\", \"و\"] },\n { city: \"گناوه\", letters: [\"ج\", \"ه\"] },\n { city: \"کنگان، عسلویه\", letters: [\"د\", \"ن\"] },\n { city: \"تنگستان\", letters: [\"س\"] },\n { city: \"دشتی\", letters: [\"ص\", \"ی\"] },\n { city: \"دیر\", letters: [\"ط\"] },\n { city: \"دیلم\", letters: [\"ق\"] },\n { city: \"جم\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"تهران\",\n codes: [\n {\n code: \"11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 20, 40, 50, 60\",\n details: [\n {\n city: \"تهران (شهر)\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"21\",\n details: [\n { city: \"اسلامشهر\", letters: [\"ب\", \"ی\"] },\n { city: \"رباط‌کریم\", letters: [\"م\"] },\n { city: \"پاکدشت\", letters: [\"ل\"] },\n ],\n },\n {\n code: \"30\",\n details: [\n { city: \"اسلامشهر\", letters: [\"ق\"] },\n { city: \"پاکدشت\", letters: [\"ن\"] },\n ],\n },\n {\n code: \"78\",\n details: [\n { city: \"اسلامشهر\", letters: [\"ب\", \"ق\"] },\n { city: \"رباط‌کریم\", letters: [\"ج\"] },\n { city: \"ری\", letters: [\"ن\"] },\n { city: \"شمیرانات\", letters: [\"و\"] },\n ],\n },\n {\n code: \"38\",\n details: [{ city: \"رباط‌کریم\", letters: [\"ل\"] }],\n },\n ],\n },\n {\n province: \"چهارمحال و بختیاری\",\n codes: [\n {\n code: \"71\",\n details: [\n {\n city: \"شهرکرد\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"81\",\n details: [\n { city: \"بروجن\", letters: [\"ب\", \"ق\"] },\n { city: \"لردگان\", letters: [\"س\"] },\n { city: \"فارسان\", letters: [\"د\"] },\n { city: \"اردل\", letters: [\"ج\"] },\n { city: \"کوهرنگ\", letters: [\"ص\"] },\n { city: \"کیار\", letters: [\"ط\"] },\n { city: \"بن\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"خراسان شمالی\",\n codes: [\n {\n code: \"32\",\n details: [{ city: \"بجنورد\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\"] }],\n },\n {\n code: \"26\",\n details: [\n { city: \"شیروان\", letters: [\"ص\", \"ب\"] },\n { city: \"اسفراین\", letters: [\"ج\", \"ط\"] },\n { city: \"مانه و سملقان\", letters: [\"د\", \"ل\"] },\n { city: \"فاروج\", letters: [\"م\"] },\n { city: \"بجنورد\", letters: [\"ب\", \"ج\", \"د\"] },\n { city: \"جاجرم و گرمه\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"خراسان رضوی\",\n codes: [\n {\n code: \"12\",\n details: [\n {\n city: \"مشهد\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"32\",\n details: [\n { city: \"نیشابور\", letters: [\"ب\", \"ی\"] },\n { city: \"سبزوار\", letters: [\"ج\"] },\n { city: \"تربت‌جام\", letters: [\"ص\"] },\n { city: \"قوچان\", letters: [\"ط\"] },\n { city: \"گناباد\", letters: [\"ق\"] },\n { city: \"تربت‌حیدریه\", letters: [\"ل\", \"ن\"] },\n { city: \"کاشمر\", letters: [\"م\"] },\n { city: \"تایباد\", letters: [\"ه\"] },\n { city: \"مشهد\", letters: [\"و\"] },\n ],\n },\n {\n code: \"36\",\n details: [\n { city: \"مشهد\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ه\", \"و\"] },\n { city: \"کاشمر\", letters: [\"ق\"] },\n { city: \"نیشابور\", letters: [\"ل\"] },\n { city: \"سبزوار\", letters: [\"م\"] },\n { city: \"تربت حیدریه\", letters: [\"ن\"] },\n { city: \"تربت‌جام\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"42\",\n details: [\n { city: \"فریمان\", letters: [\"ب\"] },\n { city: \"مشهد\", letters: [\"ج\", \"ق\", \"ه\", \"و\"] },\n { city: \"سرخس\", letters: [\"د\"] },\n { city: \"درگز\", letters: [\"س\"] },\n { city: \"خواف\", letters: [\"ص\"] },\n { city: \"چناران\", letters: [\"ط\"] },\n { city: \"بردسکن\", letters: [\"ل\"] },\n { city: \"رشتخوار\", letters: [\"م\"] },\n { city: \"سبزوار\", letters: [\"ن\"] },\n { city: \"تربت حیدریه\", letters: [\"ی\"] },\n { city: \"کلات\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"74\",\n details: [\n {\n city: \"مشهد\",\n letters: [\"ب\", \"د\", \"س\", \"ص\", \"ق\", \"م\", \"ن\", \"ه\", \"و\", \"ی\"],\n },\n { city: \"قوچان\", letters: [\"ج\"] },\n { city: \"نیشابور\", letters: [\"ط\"] },\n { city: \"سبزوار\", letters: [\"ل\"] },\n { city: \"گناباد\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"خراسان جنوبی\",\n codes: [\n {\n code: \"32\",\n details: [{ city: \"بیرجند\", letters: [\"د\"] }],\n },\n {\n code: \"52\",\n details: [\n { city: \"بیرجند\", letters: [\"ب\", \"ج\", \"د\"] },\n { city: \"قاینات\", letters: [\"ص\"] },\n { city: \"فردوس\", letters: [\"ط\"] },\n { city: \"نهبندان\", letters: [\"ق\"] },\n { city: \"سربیشه\", letters: [\"ل\"] },\n ],\n },\n {\n code: \"64\",\n details: [{ city: \"طبس\", letters: [\"ق\"] }],\n },\n ],\n },\n {\n province: \"خوزستان\",\n codes: [\n {\n code: \"14\",\n details: [\n {\n city: \"اهواز\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"24\",\n details: [\n { city: \"آبادان\", letters: [\"ب\", \"ق\"] },\n { city: \"خرمشهر\", letters: [\"ج\"] },\n { city: \"دزفول\", letters: [\"د\"] },\n { city: \"بهبهان\", letters: [\"س\"] },\n { city: \"مسجد سلیمان\", letters: [\"ص\"] },\n { city: \"ماهشهر\", letters: [\"ط\", \"ه\"] },\n { city: \"دشت آزادگان\", letters: [\"ق\"] },\n { city: \"رامهرمز\", letters: [\"ل\"] },\n { city: \"اندیمشک\", letters: [\"م\"] },\n { city: \"شوشتر\", letters: [\"ن\"] },\n { city: \"شادگان\", letters: [\"ه\"] },\n { city: \"شوش\", letters: [\"و\"] },\n { city: \"ایذه\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"34\",\n details: [\n { city: \"باغملک\", letters: [\"ب\"] },\n { city: \"شوش\", letters: [\"ب\"] },\n { city: \"امیدیه\", letters: [\"ج\"] },\n { city: \"خرمشهر\", letters: [\"د\"] },\n { city: \"هندیجان\", letters: [\"د\"] },\n { city: \"اندیمشک\", letters: [\"س\"] },\n { city: \"لالی\", letters: [\"س\"] },\n { city: \"دزفول\", letters: [\"ص\", \"و\"] },\n { city: \"ماهشهر\", letters: [\"ط\"] },\n { city: \"آبادان\", letters: [\"ق\"] },\n { city: \"بهبهان\", letters: [\"ن\"] },\n { city: \"شوشتر\", letters: [\"ه\"] },\n { city: \"اهواز\", letters: [\"ی\"] },\n ],\n },\n ],\n },\n {\n province: \"زنجان\",\n codes: [\n {\n code: \"87\",\n details: [{ city: \"زنجان\", letters: [\"ب\", \"د\", \"ج\", \"س\", \"ص\", \"ط\"] }],\n },\n {\n code: \"97\",\n details: [\n { city: \"ابهر\", letters: [\"ب\", \"ق\"] },\n { city: \"خدابنده\", letters: [\"ج\"] },\n { city: \"خرم‌دره\", letters: [\"د\"] },\n { city: \"ایجرود\", letters: [\"س\"] },\n { city: \"طارم\", letters: [\"ص\"] },\n { city: \"ماه‌نشان\", letters: [\"ط\"] },\n ],\n },\n ],\n },\n {\n province: \"سمنان\",\n codes: [\n {\n code: \"86\",\n details: [{ city: \"سمنان\", letters: [\"ب\", \"د\", \"ج\"] }],\n },\n {\n code: \"96\",\n details: [\n { city: \"دامغان\", letters: [\"ب\"] },\n { city: \"شاهرود\", letters: [\"ج\", \"ط\"] },\n { city: \"گرمسار\", letters: [\"د\"] },\n { city: \"مهدی‌شهر\", letters: [\"س\"] },\n ],\n },\n ],\n },\n {\n province: \"سیستان و بلوچستان\",\n codes: [\n {\n code: \"85\",\n details: [{ city: \"زاهدان\", letters: [\"ب\", \"د\", \"ج\", \"س\", \"ص\", \"ط\"] }],\n },\n {\n code: \"95\",\n details: [\n { city: \"زابل\", letters: [\"ب\", \"ل\", \"و\"] },\n { city: \"ایرانشهر\", letters: [\"ج\", \"م\"] },\n { city: \"خاش\", letters: [\"د\"] },\n { city: \"سراوان\", letters: [\"س\", \"ن\"] },\n { city: \"نیکشهر\", letters: [\"ص\"] },\n { city: \"سرباز\", letters: [\"ط\"] },\n { city: \"چابهار\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"فارس\",\n codes: [\n {\n code: \"63\",\n details: [\n {\n city: \"شیراز\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"و\",\n \"ه\",\n \"ی\",\n ],\n },\n ],\n },\n {\n code: \"73\",\n details: [\n { city: \"جهرم\", letters: [\"ب\", \"ه\"] },\n { city: \"لارستان\", letters: [\"ج\"] },\n { city: \"داراب\", letters: [\"د\"] },\n { city: \"فسا\", letters: [\"س\"] },\n { city: \"کازرون\", letters: [\"ص\"] },\n { city: \"فیروزآباد\", letters: [\"ط\"] },\n { city: \"آباده\", letters: [\"ق\"] },\n { city: \"مرودشت\", letters: [\"ل\"] },\n { city: \"لامرد\", letters: [\"م\"] },\n { city: \"نی‌ریز\", letters: [\"ن\"] },\n { city: \"اقلید\", letters: [\"ه\"] },\n { city: \"استهبان\", letters: [\"و\"] },\n { city: \"سپیدان\", letters: [\"ی\"] },\n { city: \"ممسنی\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"83\",\n details: [\n { city: \"ممسنی\", letters: [\"ب\"] },\n { city: \"شیراز و شهرهای دیگر\", letters: [\"ج\", \"ص\", \"ط\", \"ن\"] },\n { city: \"قیر و کارزین\", letters: [\"د\"] },\n { city: \"داراب، مهر، فیروزآباد\", letters: [\"س\"] },\n { city: \"آباده، بوانات\", letters: [\"ق\"] },\n { city: \"فراشبند\", letters: [\"ل\"] },\n { city: \"لارستان\", letters: [\"م\"] },\n { city: \"جهرم\", letters: [\"ه\"] },\n { city: \"مرودشت\", letters: [\"و\"] },\n { city: \"فسا\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"93\",\n details: [\n {\n city: \"شیراز\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"م\", \"ن\"],\n },\n { city: \"لارستان\", letters: [\"ل\"] },\n { city: \"شیراز و شهرهای دیگر\", letters: [\"و\", \"ی\"] },\n ],\n },\n ],\n },\n {\n province: \"قزوین\",\n codes: [\n {\n code: \"79\",\n details: [\n {\n city: \"قزوین\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\"],\n },\n ],\n },\n {\n code: \"89\",\n details: [\n { city: \"تاکستان\", letters: [\"ب\", \"س\"] },\n { city: \"بویین زهرا\", letters: [\"ج\"] },\n { city: \"آبیک\", letters: [\"د\"] },\n ],\n },\n ],\n },\n {\n province: \"قم\",\n codes: [\n {\n code: \"16\",\n details: [{ city: \"قم\", letters: [\"تمام حروف\"] }],\n },\n ],\n },\n {\n province: \"کردستان\",\n codes: [\n {\n code: \"51\",\n details: [\n {\n city: \"سنندج\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\", \"ن\", \"و\"],\n },\n ],\n },\n {\n code: \"61\",\n details: [\n { city: \"سقز\", letters: [\"ب\", \"م\"] },\n { city: \"بیجار\", letters: [\"ج\"] },\n { city: \"بانه\", letters: [\"د\", \"ه\"] },\n { city: \"قروه\", letters: [\"س\", \"ن\"] },\n { city: \"مریوان\", letters: [\"ص\", \"و\"] },\n { city: \"دیواندره\", letters: [\"ط\"] },\n { city: \"کامیاران\", letters: [\"ق\"] },\n { city: \"سروآباد\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"کرمان\",\n codes: [\n {\n code: \"45\",\n details: [\n {\n city: \"کرمان\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\", \"ن\"],\n },\n ],\n },\n {\n code: \"65\",\n details: [\n { city: \"رفسنجان\", letters: [\"ب\", \"ی\"] },\n { city: \"بم\", letters: [\"ج\"] },\n { city: \"سیرجان\", letters: [\"د\"] },\n { city: \"بافت\", letters: [\"س\"] },\n { city: \"جیرفت\", letters: [\"ص\"] },\n { city: \"زرند\", letters: [\"ط\"] },\n { city: \"کهنوج\", letters: [\"ق\"] },\n { city: \"شهر بابک\", letters: [\"ل\"] },\n { city: \"بردسیر\", letters: [\"م\"] },\n { city: \"منوجان\", letters: [\"ن\"] },\n { city: \"راور\", letters: [\"ه\"] },\n { city: \"عنبرآباد\", letters: [\"و\"] },\n ],\n },\n {\n code: \"75\",\n details: [\n { city: \"سیرجان\", letters: [\"ب\", \"ص\", \"م\"] },\n { city: \"بم\", letters: [\"ج\"] },\n { city: \"جیرفت\", letters: [\"د\"] },\n { city: \"رفسنجان\", letters: [\"س\", \"ل\"] },\n { city: \"زرند\", letters: [\"ط\"] },\n { city: \"کهنوج\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"کرمانشاه\",\n codes: [\n {\n code: \"19\",\n details: [\n {\n city: \"کرمانشاه\",\n letters: [\n \"ب\",\n \"ج\",\n \"د\",\n \"س\",\n \"ص\",\n \"ط\",\n \"ق\",\n \"ل\",\n \"م\",\n \"ن\",\n \"ه\",\n \"و\",\n ],\n },\n ],\n },\n {\n code: \"29\",\n details: [\n { city: \"اسلام‌آباد غرب\", letters: [\"ب\", \"ه\"] },\n { city: \"گیلان غرب\", letters: [\"ج\"] },\n { city: \"سرپل‌ذهاب\", letters: [\"د\"] },\n { city: \"پاوه\", letters: [\"س\"] },\n { city: \"کنگاور\", letters: [\"ص\"] },\n { city: \"قصرشیرین\", letters: [\"ط\"] },\n { city: \"سنقر/سقز\", letters: [\"ق\"] },\n { city: \"جوانرود\", letters: [\"ل\"] },\n { city: \"صحنه\", letters: [\"م\"] },\n { city: \"هرسین\", letters: [\"ن\"] },\n { city: \"ثلاث باباجانی\", letters: [\"و\"] },\n ],\n },\n ],\n },\n {\n province: \"کهگیلویه و بویراحمد\",\n codes: [\n {\n code: \"49\",\n details: [\n { city: \"یاسوج\", letters: [\"ب\", \"ج\", \"د\"] },\n { city: \"گچساران\", letters: [\"ص\", \"ل\"] },\n { city: \"کهگیلویه\", letters: [\"ط\"] },\n { city: \"دنا\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"گلستان\",\n codes: [\n {\n code: \"59\",\n details: [\n { city: \"گلستان\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\"] },\n { city: \"گنبد کاووس\", letters: [\"ب\", \"ه\"] },\n { city: \"بندرترکمن\", letters: [\"ج\"] },\n { city: \"کردکوی\", letters: [\"د\"] },\n { city: \"علی‌آباد\", letters: [\"س\"] },\n { city: \"آزادشهر\", letters: [\"ص\"] },\n { city: \"مینودشت\", letters: [\"ط\"] },\n { city: \"بندرگز\", letters: [\"ق\"] },\n { city: \"رامیان\", letters: [\"ل\"] },\n { city: \"آق‌قلا\", letters: [\"م\"] },\n { city: \"کلاله\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"گیلان\",\n codes: [\n {\n code: \"46\",\n details: [\n {\n city: \"رشت\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\", \"ن\", \"و\"],\n },\n ],\n },\n {\n code: \"56\",\n details: [\n { city: \"انزلی\", letters: [\"ب\"] },\n { city: \"لاهیجان\", letters: [\"ج\"] },\n { city: \"آستارا\", letters: [\"د\"] },\n { city: \"طالش\", letters: [\"س\"] },\n { city: \"رودسر\", letters: [\"ص\"] },\n { city: \"رودبار\", letters: [\"ط\"] },\n { city: \"صومعه‌سرا\", letters: [\"ق\"] },\n { city: \"فومن\", letters: [\"ل\"] },\n { city: \"لنگرود\", letters: [\"م\"] },\n { city: \"رضوان‌شهر\", letters: [\"ن\"] },\n { city: \"ماسال\", letters: [\"ه\"] },\n { city: \"املش\", letters: [\"و\"] },\n { city: \"شفت\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"76\",\n details: [\n { city: \"سیاهکل\", letters: [\"ب\"] },\n { city: \"آستانه\", letters: [\"ج\"] },\n { city: \"لاهیجان\", letters: [\"د\"] },\n { city: \"انزلی\", letters: [\"س\"] },\n { city: \"لنگرود\", letters: [\"ص\"] },\n { city: \"طالش\", letters: [\"ط\"] },\n { city: \"رودسر\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"لرستان\",\n codes: [\n {\n code: \"31\",\n details: [{ city: \"خرم‌آباد\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\"] }],\n },\n {\n code: \"41\",\n details: [\n { city: \"بروجرد\", letters: [\"ب\", \"م\", \"ن\"] },\n { city: \"الیگودرز\", letters: [\"ج\"] },\n { city: \"دورود\", letters: [\"د\", \"و\"] },\n { city: \"کوهدشت\", letters: [\"س\", \"و\"] },\n { city: \"دلفان\", letters: [\"ص\"] },\n { city: \"ازنا\", letters: [\"ط\"] },\n { city: \"پل دختر\", letters: [\"ق\"] },\n { city: \"سلسله\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"مازندران\",\n codes: [\n {\n code: \"62\",\n details: [{ city: \"ساری\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\"] }],\n },\n {\n code: \"72\",\n details: [\n { city: \"آمل\", letters: [\"ب\"] },\n { city: \"بابل\", letters: [\"ج\"] },\n { city: \"تنکابن\", letters: [\"د\"] },\n { city: \"رامسر\", letters: [\"س\"] },\n { city: \"نوشهر\", letters: [\"ص\"] },\n { city: \"نور\", letters: [\"ط\", \"ی\"] },\n { city: \"بهشهر\", letters: [\"ق\"] },\n { city: \"قائمشهر\", letters: [\"ل\"] },\n { city: \"بابلسر\", letters: [\"م\"] },\n { city: \"چالوس\", letters: [\"ن\"] },\n { city: \"نکا\", letters: [\"ه\"] },\n { city: \"محمودآباد\", letters: [\"و\"] },\n { city: \"جویبار\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"82\",\n details: [\n { city: \"سوادکوه\", letters: [\"ب\"] },\n { city: \"بابل\", letters: [\"ج\", \"ص\", \"م\"] },\n { city: \"آمل\", letters: [\"د\", \"ق\"] },\n { city: \"قائمشهر\", letters: [\"س\", \"ن\"] },\n { city: \"تنکابن\", letters: [\"ط\"] },\n { city: \"بابلسر\", letters: [\"ل\"] },\n { city: \"بهشهر\", letters: [\"ه\"] },\n { city: \"چالوس\", letters: [\"و\"] },\n { city: \"نوشهر\", letters: [\"ی\"] },\n ],\n },\n {\n code: \"92\",\n details: [\n { city: \"آمل\", letters: [\"ب\"] },\n { city: \"بابل\", letters: [\"ج\", \"ص\"] },\n { city: \"تنکابن\", letters: [\"د\"] },\n { city: \"قائمشهر\", letters: [\"س\"] },\n ],\n },\n ],\n },\n {\n province: \"مرکزی\",\n codes: [\n {\n code: \"47\",\n details: [\n { city: \"اراک\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\"] },\n ],\n },\n {\n code: \"57\",\n details: [\n { city: \"ساوه\", letters: [\"ب\", \"ه\", \"و\"] },\n { city: \"خمین\", letters: [\"ج\"] },\n { city: \"محلات\", letters: [\"د\"] },\n { city: \"تفرش\", letters: [\"س\"] },\n { city: \"دلیجان\", letters: [\"ص\"] },\n { city: \"آشتیان\", letters: [\"ط\"] },\n { city: \"شازند\", letters: [\"ق\"] },\n { city: \"زرندیه\", letters: [\"ل\"] },\n { city: \"کمیجان\", letters: [\"ن\"] },\n ],\n },\n ],\n },\n {\n province: \"هرمزگان\",\n codes: [\n {\n code: \"84\",\n details: [\n {\n city: \"بندرعباس\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\"],\n },\n ],\n },\n {\n code: \"94\",\n details: [\n { city: \"میناب\", letters: [\"ب\", \"م\"] },\n { city: \"بندر لنگه\", letters: [\"ج\", \"ن\"] },\n { city: \"رودان\", letters: [\"د\"] },\n { city: \"ابوموسی\", letters: [\"س\"] },\n { city: \"جاسک\", letters: [\"ص\"] },\n { city: \"بستک\", letters: [\"ط\"] },\n { city: \"حاجی‌آباد\", letters: [\"ق\"] },\n { city: \"قشم\", letters: [\"ل\"] },\n ],\n },\n ],\n },\n {\n province: \"همدان\",\n codes: [\n {\n code: \"18\",\n details: [\n { city: \"همدان\", letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ق\", \"ل\", \"ط\"] },\n ],\n },\n {\n code: \"28\",\n details: [\n { city: \"نهاوند\", letters: [\"ب\", \"م\"] },\n { city: \"ملایر\", letters: [\"ج\", \"ل\", \"ن\"] },\n { city: \"تویسرکان\", letters: [\"د\"] },\n { city: \"کبودرآهنگ\", letters: [\"س\"] },\n { city: \"رزن\", letters: [\"ص\"] },\n { city: \"بهار\", letters: [\"ط\"] },\n { city: \"اسدآباد\", letters: [\"ق\"] },\n ],\n },\n ],\n },\n {\n province: \"یزد\",\n codes: [\n {\n code: \"54\",\n details: [\n {\n city: \"یزد\",\n letters: [\"ب\", \"ج\", \"د\", \"س\", \"ص\", \"ط\", \"ق\", \"ل\", \"م\", \"ن\"],\n },\n ],\n },\n {\n code: \"64\",\n details: [\n { city: \"اردکان\", letters: [\"ب\"] },\n { city: \"تفت\", letters: [\"ج\"] },\n { city: \"میبد\", letters: [\"د\"] },\n { city: \"بافق\", letters: [\"س\"] },\n { city: \"مهریز\", letters: [\"ص\"] },\n { city: \"ابرکوه\", letters: [\"ط\"] },\n { city: \"خاتم\", letters: [\"ل\"] },\n { city: \"صدوق (اشکذر)\", letters: [\"م\"] },\n ],\n },\n ],\n },\n] as const;\n","import { BANKS, MOBILE_OPERATORS, BILL_TYPES } from \"./data\";\nimport { PLATE_CITY_CODES } from \"./pelak-city-codes\";\n\nconst ALL_PROVINCES = PLATE_CITY_CODES as unknown as readonly {\n province: string;\n codes: readonly {\n code: string;\n details: readonly {\n city: string;\n letters: readonly string[];\n }[];\n }[];\n}[];\n\nexport function verifyAndNormalize(value: string): string {\n if (!value) return \"\";\n const PERSIAN_ZERO = 1776;\n const PERSIAN_NINE = 1785;\n const ARABIC_ZERO = 1632;\n const ARABIC_NINE = 1641;\n const ARABIC_YEH = 1610;\n const PERSIAN_YE = 1740;\n const ARABIC_KAF = 1603;\n const PERSIAN_KE = 1705;\n let result = \"\";\n for (let i = 0; i < value.length; i++) {\n const code = value.charCodeAt(i);\n let char = value[i];\n if (code >= PERSIAN_ZERO && code <= PERSIAN_NINE) {\n char = String(code - PERSIAN_ZERO);\n } else if (code >= ARABIC_ZERO && code <= ARABIC_NINE) {\n char = String(code - ARABIC_ZERO);\n } else if (code === ARABIC_YEH) {\n char = String.fromCharCode(PERSIAN_YE);\n } else if (code === ARABIC_KAF) {\n char = String.fromCharCode(PERSIAN_KE);\n }\n result += char;\n }\n return result;\n}\n\nexport type BankInfo = {\n name: string;\n label: string;\n color: string;\n logo: string;\n formatted: string;\n} | null;\n\nexport function getBankInfo(cardNumber: string): BankInfo {\n const normalized = verifyAndNormalize(cardNumber).replace(/[\\-\\s]/g, \"\");\n if (normalized.length < 6) return null;\n const bin = normalized.substring(0, 6);\n // @ts-ignore\n const bank = BANKS[bin];\n if (!bank) return null;\n return {\n ...bank,\n formatted: normalized.replace(/(\\d{4})(?=\\d)/g, \"$1-\"),\n };\n}\n\nexport type OperatorInfo = {\n name: string;\n label: string;\n logo: string;\n} | null;\n\nexport function getMobileOperator(mobile: string): OperatorInfo {\n const normalized = verifyAndNormalize(mobile);\n let prefix = \"\";\n if (normalized.startsWith(\"09\")) {\n prefix = normalized.substring(0, 4);\n } else if (normalized.startsWith(\"9\")) {\n prefix = \"0\" + normalized.substring(0, 3);\n } else if (normalized.startsWith(\"+98\")) {\n prefix = \"0\" + normalized.substring(3, 6);\n }\n if (prefix.length !== 4) return null;\n for (const [key, op] of Object.entries(MOBILE_OPERATORS)) {\n // @ts-ignore\n if (op.prefixes.includes(prefix)) {\n return {\n name: key,\n label: op.label,\n logo: op.logo,\n };\n }\n }\n return null;\n}\n\nfunction calculateBillCheckDigit(code: string): number {\n let sum = 0;\n let weight = 2;\n for (let i = code.length - 1; i >= 0; i--) {\n sum += parseInt(code[i]) * weight;\n weight++;\n if (weight > 7) weight = 2;\n }\n const remainder = sum % 11;\n if (remainder === 0 || remainder === 1) return 0;\n return 11 - remainder;\n}\n\nexport function isBillIdValid(billId: string): boolean {\n const normalized = verifyAndNormalize(billId);\n if (!/^\\d{6,13}$/.test(normalized)) return false;\n const checkDigit = parseInt(normalized.slice(-1));\n const core = normalized.slice(0, -1);\n return calculateBillCheckDigit(core) === checkDigit;\n}\n\nexport function isPaymentIdValid(paymentId: string, billId: string): boolean {\n const nPay = verifyAndNormalize(paymentId);\n const nBill = verifyAndNormalize(billId);\n\n if (!/^\\d{6,13}$/.test(nPay) || !/^\\d{6,13}$/.test(nBill)) return false;\n\n const payCheckDigit1 = parseInt(nPay.slice(-2, -1));\n const payCore1 = nPay.slice(0, -2);\n if (calculateBillCheckDigit(payCore1) !== payCheckDigit1) return false;\n\n const payCheckDigit2 = parseInt(nPay.slice(-1));\n const combinedCore = nBill + nPay.slice(0, -1);\n return calculateBillCheckDigit(combinedCore) === payCheckDigit2;\n}\n\nexport type BillInfo = {\n type: { label: string; slug: string; color: string; logo: string };\n amount: number;\n formattedAmount: string;\n isValid: boolean;\n} | null;\n\nexport function getBillInfo(billId: string, paymentId?: string): BillInfo {\n const nBill = verifyAndNormalize(billId);\n\n // محدودیت طول برای جلوگیری از اشتباه با کدهای ۳۰ رقمی مالیاتی\n if (nBill.length < 6 || nBill.length > 13) return null;\n\n const typeDigit = parseInt(nBill.slice(-2, -1));\n // @ts-ignore\n const typeInfo = BILL_TYPES[typeDigit] || {\n label: \"نامشخص\",\n slug: \"unknown\",\n color: \"#333\",\n logo: \"\",\n };\n\n let amount = 0;\n let formattedAmount = \"0\";\n let isValid = isBillIdValid(nBill);\n\n if (paymentId) {\n const nPay = verifyAndNormalize(paymentId);\n\n if (!isPaymentIdValid(nPay, nBill)) {\n isValid = false;\n } else {\n // حذف ۵ رقم آخر برای محاسبه مبلغ\n const amountCore = nPay.slice(0, -5);\n if (amountCore.length > 0) {\n amount = parseInt(amountCore) * 1000;\n formattedAmount = new Intl.NumberFormat(\"fa-IR\").format(amount);\n }\n }\n }\n\n return { type: typeInfo, amount, formattedAmount, isValid };\n}\n\nexport type PlateInfo = {\n province: string;\n city: string;\n isValid: boolean;\n} | null;\n\nexport function getPlateInfo(plate: string): PlateInfo {\n const nPlate = verifyAndNormalize(plate).replace(/[\\s-]/g, \"\");\n const regex = /^(\\d{2})([\\u0600-\\u06FF]{1,3}|[A-Za-z])(\\d{3})(\\d{2})$/;\n const match = nPlate.match(regex);\n\n if (!match) return null;\n\n const letter = match[2];\n const cityCode = match[4];\n\n for (const provinceData of ALL_PROVINCES) {\n const codeEntry = provinceData.codes.find((c) => {\n const codeStr = c.code;\n if (codeStr.includes(\",\")) {\n return codeStr\n .split(\",\")\n .map((x) => x.trim())\n .includes(cityCode);\n }\n return codeStr === cityCode;\n });\n\n if (codeEntry) {\n const cityDetail = codeEntry.details.find((d) => {\n return d.letters.includes(letter) || d.letters.includes(\"تمام حروف\");\n });\n\n if (cityDetail) {\n return {\n province: provinceData.province,\n city: cityDetail.city,\n isValid: true,\n };\n }\n }\n }\n return null;\n}\n\nexport function isPlateNumber(plate: string): boolean {\n return getPlateInfo(plate) !== null;\n}\n\nexport function isMelliCode(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n if (!/^\\d{10}$/.test(normalized)) return false;\n if (/^(\\d)\\1+$/.test(normalized)) return false;\n const check = parseInt(normalized[9]);\n const sum =\n normalized\n .substring(0, 9)\n .split(\"\")\n .reduce((acc, x, i) => acc + parseInt(x) * (10 - i), 0) % 11;\n return sum < 2 ? check === sum : check === 11 - sum;\n}\n\nexport function isShenaseMelli(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n if (normalized.length !== 11 || !/^\\d{11}$/.test(normalized)) return false;\n const tenth = parseInt(normalized[9]);\n const inputCheck = parseInt(normalized[10]);\n const coefficients = [29, 27, 23, 19, 17, 29, 27, 23, 19, 17];\n let sum = 0;\n for (let i = 0; i < 10; i++) {\n const digit = parseInt(normalized[i]);\n sum += (digit + tenth + 2) * coefficients[i];\n }\n const remainder = sum % 11;\n const calculatedCheck = remainder === 10 ? 0 : remainder;\n return calculatedCheck === inputCheck;\n}\n\nexport function isPassport(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n return /^[A-Za-z][0-9]{8,9}$/.test(normalized);\n}\n\nexport function isCardNumber(code: string): boolean {\n const normalized = verifyAndNormalize(code).replace(/[\\-\\s]/g, \"\");\n if (!/^\\d{16}$/.test(normalized)) return false;\n let sum = 0;\n let shouldDouble = false;\n for (let i = normalized.length - 1; i >= 0; i--) {\n let digit = parseInt(normalized[i]);\n if (shouldDouble) {\n digit *= 2;\n if (digit > 9) digit -= 9;\n }\n sum += digit;\n shouldDouble = !shouldDouble;\n }\n return sum % 10 === 0;\n}\n\ninterface MobileValidationOptions {\n strictZero?: boolean | \"optional\";\n}\nexport function isIranianMobile(\n mobile: string,\n { strictZero = \"optional\" }: MobileValidationOptions = {}\n): boolean {\n const normalized = verifyAndNormalize(mobile);\n const corePattern = \"9\\\\d{9}\";\n let pattern = \"\";\n if (strictZero === true) pattern = `^0${corePattern}$`;\n else if (strictZero === false) pattern = `^${corePattern}$`;\n else pattern = `^(?:0|\\\\+98)?${corePattern}$`;\n return new RegExp(pattern).test(normalized);\n}\n\nexport function isSheba(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n const iban = normalized.toUpperCase().replace(/[\\-\\s]/g, \"\");\n if (iban.length !== 26 || !iban.startsWith(\"IR\")) return false;\n const newStr = iban.substring(4) + iban.substring(0, 4);\n const numericString = newStr\n .split(\"\")\n .map((c) => {\n const code = c.charCodeAt(0);\n return code >= 48 && code <= 57 ? c : (code - 55).toString();\n })\n .join(\"\");\n try {\n return BigInt(numericString) % BigInt(97) === BigInt(1);\n } catch {\n return false;\n }\n}\n\nexport function isPostalCode(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n return /^[1-9]\\d{9}$/.test(normalized);\n}\n\nexport function isLandline(code: string): boolean {\n const normalized = verifyAndNormalize(code);\n return /^0\\d{2}\\d{8}$/.test(normalized);\n}\n","export const ERROR_MESSAGES = {\n fa: {\n melliCode: \"کد ملی نامعتبر است\",\n shenaseMelli: \"شناسه ملی نامعتبر است\",\n passport: \"شماره گذرنامه نامعتبر است\",\n cardNumber: \"شماره کارت نامعتبر است\",\n mobile: \"شماره موبایل نامعتبر است\",\n sheba: \"شماره شبا نامعتبر است\",\n postalCode: \"کد پستی نامعتبر است\",\n landline: \"شماره تلفن ثابت نامعتبر است\",\n billId: \"شناسه قبض نامعتبر است\",\n paymentId: \"شناسه پرداخت نامعتبر است\",\n plateNumber: \"پلاک خودرو نامعتبر است\",\n },\n en: {\n melliCode: \"Invalid national code\",\n shenaseMelli: \"Invalid legal person ID (Shenase Melli)\",\n passport: \"Invalid passport number\",\n cardNumber: \"Invalid card number\",\n mobile: \"Invalid mobile number\",\n sheba: \"Invalid Sheba (IBAN) number\",\n postalCode: \"Invalid postal code\",\n landline: \"Invalid landline number\",\n billId: \"Invalid Bill ID\",\n paymentId: \"Invalid Payment ID\",\n plateNumber: \"Invalid License Plate\",\n },\n} as const;\n\nexport type Language = keyof typeof ERROR_MESSAGES;\n\nexport interface BaseOptions {\n message?: string;\n locale?: Language;\n}\n\nexport const getMessage = (\n key: keyof typeof ERROR_MESSAGES[\"fa\"],\n options?: BaseOptions\n): string => {\n if (options?.message) return options.message;\n const lang = options?.locale || \"fa\";\n return ERROR_MESSAGES[lang][key];\n};"],"mappings":"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","names":["index_exports","__export","getBankInfo","getBillInfo","getMobileOperator","getPlateInfo","isBillIdValid","isCardNumber","isIranianMobile","isLandline","isMelliCode","isPassport","isPaymentIdValid","isPlateNumber","isPostalCode","isSheba","isShenaseMelli","preprocessNumber","verifyAndNormalize","zBillId","zCardNumber","zIranianMobile","zLandline","zMelliCode","zPassport","zPaymentId","zPlateNumber","zPostalCode","zSheba","zShenaseMelli","__toCommonJS","import_zod","CDN_BANKS","CDN_OPERATORS","CDN_BILLS","BANKS","MOBILE_OPERATORS","BILL_TYPES","PLATE_CITY_CODES","ALL_PROVINCES","PLATE_CITY_CODES","verifyAndNormalize","value","PERSIAN_ZERO","PERSIAN_NINE","ARABIC_ZERO","ARABIC_NINE","ARABIC_YEH","PERSIAN_YE","ARABIC_KAF","PERSIAN_KE","result","i","code","char","getBankInfo","cardNumber","normalized","bin","bank","BANKS","getMobileOperator","mobile","prefix","key","op","MOBILE_OPERATORS","calculateBillCheckDigit","sum","weight","remainder","isBillIdValid","billId","checkDigit","core","isPaymentIdValid","paymentId","nPay","nBill","payCheckDigit1","payCore1","payCheckDigit2","combinedCore","getBillInfo","typeDigit","typeInfo","BILL_TYPES","amount","formattedAmount","isValid","amountCore","getPlateInfo","plate","nPlate","regex","match","letter","cityCode","provinceData","codeEntry","c","codeStr","x","cityDetail","d","isPlateNumber","isMelliCode","check","acc","isShenaseMelli","tenth","inputCheck","coefficients","digit","isPassport","isCardNumber","shouldDouble","isIranianMobile","strictZero","corePattern","pattern","isSheba","iban","numericString","isPostalCode","isLandline","ERROR_MESSAGES","getMessage","key","options","lang","zMelliCode","options","val","isMelliCode","getMessage","zShenaseMelli","isShenaseMelli","zPassport","isPassport","zCardNumber","isCardNumber","zIranianMobile","isIranianMobile","zSheba","isSheba","zPostalCode","isPostalCode","zLandline","isLandline","zBillId","isBillIdValid","zPaymentId","zPlateNumber","isPlateNumber","preprocessNumber","schema","verifyAndNormalize"]}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import{z as i}from"zod";var a="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks",m="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators",v={603799:{name:"Melli",label:"\u0645\u0644\u06CC",color:"#EF3F3E",logo:`${a}/melli.svg`},589210:{name:"Sepah",label:"\u0633\u067E\u0647",color:"#FFC600",logo:`${a}/sepah.svg`},627648:{name:"ToseeSaderat",label:"\u062A\u0648\u0633\u0639\u0647 \u0635\u0627\u062F\u0631\u0627\u062A",color:"#EDB12C",logo:`${a}/tosee-saderat.svg`},627961:{name:"SanatMadar",label:"\u0635\u0646\u0639\u062A \u0648 \u0645\u0639\u062F\u0646",color:"#B3986D",logo:`${a}/sanat-madan.svg`},603770:{name:"Keshavarzi",label:"\u06A9\u0634\u0627\u0648\u0631\u0632\u06CC",color:"#4E7A46",logo:`${a}/keshavarzi.svg`},628023:{name:"Maskan",label:"\u0645\u0633\u06A9\u0646",color:"#F05A23",logo:`${a}/maskan.svg`},627760:{name:"PostBank",label:"\u067E\u0633\u062A \u0628\u0627\u0646\u06A9",color:"#00764D",logo:`${a}/post-bank.svg`},502908:{name:"ToseeTaavon",label:"\u062A\u0648\u0633\u0639\u0647 \u062A\u0639\u0627\u0648\u0646",color:"#0064A6",logo:`${a}/tosee-taavon.svg`},627412:{name:"EghtesadNovin",label:"\u0627\u0642\u062A\u0635\u0627\u062F \u0646\u0648\u06CC\u0646",color:"#652D86",logo:`${a}/eghtesad-novin.svg`},622106:{name:"Parsian",label:"\u067E\u0627\u0631\u0633\u06CC\u0627\u0646",color:"#B3282D",logo:`${a}/parsian.svg`},502229:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F",color:"#FFC72C",logo:`${a}/pasargad.svg`},627488:{name:"Karafarin",label:"\u06A9\u0627\u0631\u0622\u0641\u0631\u06CC\u0646",color:"#3B9C56",logo:`${a}/karafarin.svg`},621986:{name:"Saman",label:"\u0633\u0627\u0645\u0627\u0646",color:"#006DB6",logo:`${a}/saman.svg`},639346:{name:"Sina",label:"\u0633\u06CC\u0646\u0627",color:"#004E8A",logo:`${a}/sina.svg`},639607:{name:"Sarmayeh",label:"\u0633\u0631\u0645\u0627\u06CC\u0647",color:"#0077B6",logo:`${a}/sarmayeh.svg`},636214:{name:"Ayandeh",label:"\u0622\u06CC\u0646\u062F\u0647",color:"#8B5F34",logo:`${a}/ayandeh.svg`},502806:{name:"Shahr",label:"\u0634\u0647\u0631",color:"#ED3438",logo:`${a}/shahr.svg`},502938:{name:"Day",label:"\u062F\u06CC",color:"#0099CC",logo:`${a}/day.svg`},603769:{name:"Saderat",label:"\u0635\u0627\u062F\u0631\u0627\u062A",color:"#1A3266",logo:`${a}/saderat.svg`},610433:{name:"Mellat",label:"\u0645\u0644\u062A",color:"#D70005",logo:`${a}/mellat.svg`},627353:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${a}/tejarat.svg`},585983:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${a}/tejarat.svg`},589463:{name:"Refah",label:"\u0631\u0641\u0627\u0647",color:"#2B3C8E",logo:`${a}/refah.svg`},627381:{name:"Ansar",label:"\u0627\u0646\u0635\u0627\u0631",color:"#F7B500",logo:`${a}/ansar.svg`},505785:{name:"IranZamin",label:"\u0627\u06CC\u0631\u0627\u0646 \u0632\u0645\u06CC\u0646",color:"#92278F",logo:`${a}/iran-zamin.svg`},505416:{name:"Gardeshgari",label:"\u06AF\u0631\u062F\u0634\u06AF\u0631\u06CC",color:"#1D3265",logo:`${a}/gardeshgari.svg`},636949:{name:"Hekmat",label:"\u062D\u06A9\u0645\u062A",color:"#5F2C83",logo:`${a}/hekmat.svg`},505801:{name:"Kosar",label:"\u06A9\u0648\u062B\u0631",color:"#C62828",logo:`${a}/kosar.svg`},606373:{name:"MehrIran",label:"\u0645\u0647\u0631 \u0627\u06CC\u0631\u0627\u0646",color:"#359E49",logo:`${a}/mehr-iran.svg`},504172:{name:"Resalat",label:"\u0631\u0633\u0627\u0644\u062A",color:"#000000",logo:`${a}/resalat.svg`},523388:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F (\u0648\u06CC\u067E\u0627\u062F)",color:"#FFC72C",logo:`${a}/pasargad.svg`},505809:{name:"Khavarmianeh",label:"\u062E\u0627\u0648\u0631\u0645\u06CC\u0627\u0646\u0647",color:"#1F2B5B",logo:`${a}/khavarmianeh.svg`}},$={MCI:{label:"\u0647\u0645\u0631\u0627\u0647 \u0627\u0648\u0644",logo:`${m}/mci.svg`,prefixes:["0910","0911","0912","0913","0914","0915","0916","0917","0918","0919","0990","0991","0992","0993","0994"]},Irancell:{label:"\u0627\u06CC\u0631\u0627\u0646\u0633\u0644",logo:`${m}/irancell.svg`,prefixes:["0930","0933","0935","0936","0937","0938","0939","0901","0902","0903","0904","0905","0941"]},Rightel:{label:"\u0631\u0627\u06CC\u062A\u0644",logo:`${m}/rightel.svg`,prefixes:["0920","0921","0922","0923"]},Shatel:{label:"\u0634\u0627\u062A\u0644 \u0645\u0648\u0628\u0627\u06CC\u0644",logo:`${m}/shatel.svg`,prefixes:["0998"]},Taliya:{label:"\u062A\u0627\u0644\u06CC\u0627",logo:`${m}/taliya.png`,prefixes:["0932"]}};function f(o){if(!o)return"";let e=1776,n=1785,s=1632,t=1641,r=1610,u=1740,c=1603,d=1705,h="";for(let b=0;b<o.length;b++){let g=o.charCodeAt(b),p=o[b];g>=e&&g<=n?p=String(g-e):g>=s&&g<=t?p=String(g-s):g===r?p=String.fromCharCode(u):g===c&&(p=String.fromCharCode(d)),h+=p}return h}function M(o){let e=f(o).replace(/[\-\s]/g,"");if(e.length<6)return null;let n=e.substring(0,6),s=v[n];return s?{...s,formatted:e.replace(/(\d{4})(?=\d)/g,"$1-")}:null}function R(o){let e=f(o),n="";if(e.startsWith("09")?n=e.substring(0,4):e.startsWith("9")?n="0"+e.substring(0,3):e.startsWith("+98")&&(n="0"+e.substring(3,6)),n.length!==4)return null;for(let[s,t]of Object.entries($))if(t.prefixes.includes(n))return{name:s,label:t.label,logo:t.logo};return null}function I(o){if(!/^\d{10}$/.test(o)||/^(\d)\1+$/.test(o))return!1;let e=parseInt(o[9]),n=o.substring(0,9).split("").reduce((s,t,r)=>s+parseInt(t)*(10-r),0)%11;return n<2?e===n:e===11-n}function C(o){if(o.length!==11||!/^\d{11}$/.test(o))return!1;let e=parseInt(o[9]),n=parseInt(o[10]),s=[29,27,23,19,17,29,27,23,19,17],t=0;for(let c=0;c<10;c++){let d=parseInt(o[c]);t+=(d+e+2)*s[c]}let r=t%11;return(r===10?0:r)===n}function S(o){return/^[A-Za-z][0-9]{8,9}$/.test(o)}function B(o){let e=o.replace(/[\-\s]/g,"");if(!/^\d{16}$/.test(e))return!1;let n=0,s=!1;for(let t=e.length-1;t>=0;t--){let r=parseInt(e[t]);s&&(r*=2,r>9&&(r-=9)),n+=r,s=!s}return n%10===0}function x(o,{strictZero:e="optional"}={}){let n="9\\d{9}",s="";return e===!0?s=`^0${n}$`:e===!1?s=`^${n}$`:s=`^(?:0|\\+98)?${n}$`,new RegExp(s).test(o)}function A(o){let e=o.toUpperCase().replace(/[\-\s]/g,"");if(e.length!==26||!e.startsWith("IR"))return!1;let s=(e.substring(4)+e.substring(0,4)).split("").map(t=>{let r=t.charCodeAt(0);return r>=48&&r<=57?t:(r-55).toString()}).join("");try{return BigInt(s)%BigInt(97)===BigInt(1)}catch{return!1}}function E(o){return/^[1-9]\d{9}$/.test(o)}function O(o){return/^0\d{2}\d{8}$/.test(o)}var k={fa:{melliCode:"\u06A9\u062F \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",shenaseMelli:"\u0634\u0646\u0627\u0633\u0647 \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",passport:"\u0634\u0645\u0627\u0631\u0647 \u06AF\u0630\u0631\u0646\u0627\u0645\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",cardNumber:"\u0634\u0645\u0627\u0631\u0647 \u06A9\u0627\u0631\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",mobile:"\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",sheba:"\u0634\u0645\u0627\u0631\u0647 \u0634\u0628\u0627 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",postalCode:"\u06A9\u062F \u067E\u0633\u062A\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",landline:"\u0634\u0645\u0627\u0631\u0647 \u062A\u0644\u0641\u0646 \u062B\u0627\u0628\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"},en:{melliCode:"Invalid national code",shenaseMelli:"Invalid legal person ID (Shenase Melli)",passport:"Invalid passport number",cardNumber:"Invalid card number",mobile:"Invalid mobile number",sheba:"Invalid Sheba (IBAN) number",postalCode:"Invalid postal code",landline:"Invalid landline number"}},l=(o,e)=>{if(e?.message)return e.message;let n=e?.locale||"fa";return k[n][o]};var K=o=>i.string().refine(e=>I(e),{message:l("melliCode",o)}),j=o=>i.string().refine(e=>C(e),{message:l("shenaseMelli",o)}),Z=o=>i.string().refine(e=>S(e),{message:l("passport",o)}),L=o=>i.string().refine(e=>B(e),{message:l("cardNumber",o)}),G=o=>i.string().refine(e=>x(e,{strictZero:o?.strictZero}),{message:l("mobile",o)}),W=o=>i.string().refine(e=>A(e),{message:l("sheba",o)}),w=o=>i.string().refine(e=>E(e),{message:l("postalCode",o)}),H=o=>i.string().refine(e=>O(e),{message:l("landline",o)}),V=o=>i.preprocess(e=>typeof e=="string"?f(e):e,o);export{M as getBankInfo,R as getMobileOperator,B as isCardNumber,x as isIranianMobile,O as isLandline,I as isMelliCode,S as isPassport,E as isPostalCode,A as isSheba,C as isShenaseMelli,V as preprocessNumber,f as verifyAndNormalize,L as zCardNumber,G as zIranianMobile,H as zLandline,K as zMelliCode,Z as zPassport,w as zPostalCode,W as zSheba,j as zShenaseMelli};
1
+ import{z as g}from"zod";var i="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/banks",v="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/operators",f="https://cdn.jsdelivr.net/gh/Reza-kh80/zod-ir@main/assets/bills",B={603799:{name:"Melli",label:"\u0645\u0644\u06CC",color:"#EF3F3E",logo:`${i}/melli.svg`},589210:{name:"Sepah",label:"\u0633\u067E\u0647",color:"#FFC600",logo:`${i}/sepah.svg`},627648:{name:"ToseeSaderat",label:"\u062A\u0648\u0633\u0639\u0647 \u0635\u0627\u062F\u0631\u0627\u062A",color:"#EDB12C",logo:`${i}/tosee-saderat.svg`},627961:{name:"SanatMadar",label:"\u0635\u0646\u0639\u062A \u0648 \u0645\u0639\u062F\u0646",color:"#B3986D",logo:`${i}/sanat-madan.svg`},603770:{name:"Keshavarzi",label:"\u06A9\u0634\u0627\u0648\u0631\u0632\u06CC",color:"#4E7A46",logo:`${i}/keshavarzi.svg`},628023:{name:"Maskan",label:"\u0645\u0633\u06A9\u0646",color:"#F05A23",logo:`${i}/maskan.svg`},627760:{name:"PostBank",label:"\u067E\u0633\u062A \u0628\u0627\u0646\u06A9",color:"#00764D",logo:`${i}/post-bank.svg`},502908:{name:"ToseeTaavon",label:"\u062A\u0648\u0633\u0639\u0647 \u062A\u0639\u0627\u0648\u0646",color:"#0064A6",logo:`${i}/tosee-taavon.svg`},627412:{name:"EghtesadNovin",label:"\u0627\u0642\u062A\u0635\u0627\u062F \u0646\u0648\u06CC\u0646",color:"#652D86",logo:`${i}/eghtesad-novin.svg`},622106:{name:"Parsian",label:"\u067E\u0627\u0631\u0633\u06CC\u0627\u0646",color:"#B3282D",logo:`${i}/parsian.svg`},502229:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F",color:"#FFC72C",logo:`${i}/pasargad.svg`},627488:{name:"Karafarin",label:"\u06A9\u0627\u0631\u0622\u0641\u0631\u06CC\u0646",color:"#3B9C56",logo:`${i}/karafarin.svg`},621986:{name:"Saman",label:"\u0633\u0627\u0645\u0627\u0646",color:"#006DB6",logo:`${i}/saman.svg`},639346:{name:"Sina",label:"\u0633\u06CC\u0646\u0627",color:"#004E8A",logo:`${i}/sina.svg`},639607:{name:"Sarmayeh",label:"\u0633\u0631\u0645\u0627\u06CC\u0647",color:"#0077B6",logo:`${i}/sarmayeh.svg`},636214:{name:"Ayandeh",label:"\u0622\u06CC\u0646\u062F\u0647",color:"#8B5F34",logo:`${i}/ayandeh.svg`},502806:{name:"Shahr",label:"\u0634\u0647\u0631",color:"#ED3438",logo:`${i}/shahr.svg`},502938:{name:"Day",label:"\u062F\u06CC",color:"#0099CC",logo:`${i}/day.svg`},603769:{name:"Saderat",label:"\u0635\u0627\u062F\u0631\u0627\u062A",color:"#1A3266",logo:`${i}/saderat.svg`},610433:{name:"Mellat",label:"\u0645\u0644\u062A",color:"#D70005",logo:`${i}/mellat.svg`},627353:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${i}/tejarat.svg`},585983:{name:"Tejarat",label:"\u062A\u062C\u0627\u0631\u062A",color:"#005696",logo:`${i}/tejarat.svg`},589463:{name:"Refah",label:"\u0631\u0641\u0627\u0647",color:"#2B3C8E",logo:`${i}/refah.svg`},627381:{name:"Ansar",label:"\u0627\u0646\u0635\u0627\u0631",color:"#F7B500",logo:`${i}/ansar.svg`},505785:{name:"IranZamin",label:"\u0627\u06CC\u0631\u0627\u0646 \u0632\u0645\u06CC\u0646",color:"#92278F",logo:`${i}/iran-zamin.svg`},505416:{name:"Gardeshgari",label:"\u06AF\u0631\u062F\u0634\u06AF\u0631\u06CC",color:"#1D3265",logo:`${i}/gardeshgari.svg`},636949:{name:"Hekmat",label:"\u062D\u06A9\u0645\u062A",color:"#5F2C83",logo:`${i}/hekmat.svg`},505801:{name:"Kosar",label:"\u06A9\u0648\u062B\u0631",color:"#C62828",logo:`${i}/kosar.svg`},606373:{name:"MehrIran",label:"\u0645\u0647\u0631 \u0627\u06CC\u0631\u0627\u0646",color:"#359E49",logo:`${i}/mehr-iran.svg`},504172:{name:"Resalat",label:"\u0631\u0633\u0627\u0644\u062A",color:"#000000",logo:`${i}/resalat.svg`},523388:{name:"Pasargad",label:"\u067E\u0627\u0633\u0627\u0631\u06AF\u0627\u062F (\u0648\u06CC\u067E\u0627\u062F)",color:"#FFC72C",logo:`${i}/pasargad.svg`},505809:{name:"Khavarmianeh",label:"\u062E\u0627\u0648\u0631\u0645\u06CC\u0627\u0646\u0647",color:"#1F2B5B",logo:`${i}/khavarmianeh.svg`}},$={MCI:{label:"\u0647\u0645\u0631\u0627\u0647 \u0627\u0648\u0644",logo:`${v}/mci.svg`,prefixes:["0910","0911","0912","0913","0914","0915","0916","0917","0918","0919","0990","0991","0992","0993","0994"]},Irancell:{label:"\u0627\u06CC\u0631\u0627\u0646\u0633\u0644",logo:`${v}/irancell.svg`,prefixes:["0930","0933","0935","0936","0937","0938","0939","0901","0902","0903","0904","0905","0941"]},Rightel:{label:"\u0631\u0627\u06CC\u062A\u0644",logo:`${v}/rightel.svg`,prefixes:["0920","0921","0922","0923"]},Shatel:{label:"\u0634\u0627\u062A\u0644 \u0645\u0648\u0628\u0627\u06CC\u0644",logo:`${v}/shatel.svg`,prefixes:["0998"]},Taliya:{label:"\u062A\u0627\u0644\u06CC\u0627",logo:`${v}/taliya.png`,prefixes:["0932"]}},C={1:{label:"\u0622\u0628",type:"water",color:"#00a8ff",logo:`${f}/water.svg`},2:{label:"\u0628\u0631\u0642",type:"electricity",color:"#fbc531",logo:`${f}/electricity.svg`},3:{label:"\u06AF\u0627\u0632",type:"gas",color:"#e84118",logo:`${f}/gas.svg`},4:{label:"\u062A\u0644\u0641\u0646 \u062B\u0627\u0628\u062A",type:"phone",color:"#273c75",logo:`${f}/phone.svg`},5:{label:"\u062A\u0644\u0641\u0646 \u0647\u0645\u0631\u0627\u0647",type:"mobile",color:"#8c7ae6",logo:`${f}/mobile.svg`},6:{label:"\u0639\u0648\u0627\u0631\u0636 \u0634\u0647\u0631\u062F\u0627\u0631\u06CC",type:"municipality",color:"#44bd32",logo:`${f}/municipality.svg`},9:{label:"\u062C\u0631\u0627\u06CC\u0645 \u0631\u0627\u0646\u0646\u062F\u06AF\u06CC",type:"traffic",color:"#c23616",logo:`${f}/traffic.svg`}};var x=[{province:"\u0622\u0630\u0631\u0628\u0627\u06CC\u062C\u0627\u0646 \u0634\u0631\u0642\u06CC",codes:[{code:"15",details:[{city:"\u062A\u0628\u0631\u06CC\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"25",details:[{city:"\u0627\u0647\u0631",letters:["\u0633"]},{city:"\u0622\u0630\u0631\u0634\u0647\u0631",letters:["\u06CC"]},{city:"\u0628\u0633\u062A\u0627\u0646\u200C\u0622\u0628\u0627\u062F",letters:["\u0645"]},{city:"\u0628\u0646\u0627\u0628",letters:["\u0644"]},{city:"\u062C\u0644\u0641\u0627",letters:["\u0637"]},{city:"\u0633\u0631\u0627\u0628",letters:["\u0635"]},{city:"\u0634\u0628\u0633\u062A\u0631",letters:["\u0646"]},{city:"\u06A9\u0644\u06CC\u0628\u0631",letters:["\u0648"]},{city:"\u0645\u0631\u0627\u063A\u0647",letters:["\u0628"]},{city:"\u0645\u0631\u0646\u062F",letters:["\u062C"]},{city:"\u0645\u06CC\u0627\u0646\u0647",letters:["\u062F"]},{city:"\u0647\u0631\u06CC\u0633",letters:["\u0647"]},{city:"\u0647\u0634\u062A\u0631\u0648\u062F",letters:["\u0642"]}]},{code:"35",details:[{city:"\u0627\u0633\u06A9\u0648",letters:["\u0628"]},{city:"\u0645\u0631\u0646\u062F",letters:["\u0637"]},{city:"\u0645\u0631\u0627\u063A\u0647",letters:["\u0642"]},{city:"\u062A\u0628\u0631\u06CC\u0632",letters:["\u0644","\u0645"]},{city:"\u0622\u0630\u0631\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0627\u0647\u0631",letters:["\u0646"]},{city:"\u0628\u0646\u0627\u0628",letters:["\u0633"]},{city:"\u0628\u0633\u062A\u0627\u0646 \u0622\u0628\u0627\u062F",letters:["\u06CC"]},{city:"\u062C\u0644\u0641\u0627",letters:["\u0647"]},{city:"\u0633\u0631\u0627\u0628",letters:["\u0648"]},{city:"\u0634\u0628\u0633\u062A\u0631",letters:["\u062F"]},{city:"\u06A9\u0644\u06CC\u0628\u0631",letters:["\u062C"]},{city:"\u0645\u06CC\u0627\u0646\u0647",letters:["\u0632"]},{city:"\u0647\u0631\u06CC\u0633",letters:["\u0627\u0644\u0641"]},{city:"\u0647\u0634\u062A\u0631\u0648\u062F",letters:["\u062A"]},{city:"\u062A\u0628\u0631\u06CC\u0632 \u0648 \u0686\u0627\u0631\u0627\u0648\u06CC\u0645\u0627\u0642",letters:["\u0633"]}]}]},{province:"\u0622\u0630\u0631\u0628\u0627\u06CC\u062C\u0627\u0646 \u063A\u0631\u0628\u06CC",codes:[{code:"17",details:[{city:"\u0627\u0631\u0648\u0645\u06CC\u0647",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647"]},{city:"\u062E\u0648\u06CC",letters:["\u0645"]}]},{code:"27",details:[{city:"\u062E\u0648\u06CC",letters:["\u0628"]},{city:"\u0645\u0647\u0627\u0628\u0627\u062F",letters:["\u062C"]},{city:"\u0645\u0627\u06A9\u0648",letters:["\u062F"]},{city:"\u0633\u0644\u0645\u0627\u0633",letters:["\u0633"]},{city:"\u0646\u0642\u062F\u0647",letters:["\u0635"]},{city:"\u0645\u06CC\u0627\u0646\u062F\u0648\u0622\u0628",letters:["\u0637","\u0646"]},{city:"\u062A\u06A9\u0627\u0628",letters:["\u0642"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u062F\u0698",letters:["\u0644"]},{city:"\u0633\u0631\u062F\u0634\u062A",letters:["\u0645"]},{city:"\u0628\u0648\u06A9\u0627\u0646",letters:["\u0646"]},{city:"\u0686\u0627\u0644\u062F\u0631\u0627\u0646",letters:["\u0647"]},{city:"\u067E\u06CC\u0631\u0627\u0646\u0634\u0647\u0631",letters:["\u0648"]},{city:"\u0627\u0634\u0646\u0648\u06CC\u0647",letters:["\u06CC"]}]},{code:"37",details:[{city:"\u062E\u0648\u06CC",letters:["\u0628"]},{city:"\u0645\u06CC\u0627\u0646\u062F\u0648\u0622\u0628",letters:["\u062C"]},{city:"\u0646\u0642\u062F\u0647",letters:["\u062F"]},{city:"\u0645\u0647\u0627\u0628\u0627\u062F",letters:["\u0635"]},{city:"\u0628\u0648\u06A9\u0627\u0646",letters:["\u0637"]},{city:"\u0633\u0644\u0645\u0627\u0633",letters:["\u0642"]},{city:"\u0645\u0627\u06A9\u0648",letters:["\u0644"]}]}]},{province:"\u0627\u0631\u062F\u0628\u06CC\u0644",codes:[{code:"91",details:[{city:"\u0627\u0631\u062F\u0628\u06CC\u0644",letters:["\u0628","\u062C","\u062F","\u0633","\u0645","\u0648","\u06CC"]},{city:"\u067E\u0627\u0631\u0633\u200C\u0622\u0628\u0627\u062F",letters:["\u0635","\u0645","\u0648","\u06CC"]},{city:"\u062E\u0644\u062E\u0627\u0644",letters:["\u0637"]},{city:"\u06AF\u0631\u0645\u06CC",letters:["\u0644"]},{city:"\u0628\u06CC\u0644\u0647\u200C\u0633\u0648\u0627\u0631",letters:["\u0644"]},{city:"\u0645\u0634\u06A9\u06CC\u0646\u200C\u0634\u0647\u0631",letters:["\u0644","\u0646"]},{city:"\u0646\u06CC\u0631",letters:["\u0645"]},{city:"\u06A9\u0648\u062B\u0631",letters:["\u0645","\u0648"]},{city:"\u0646\u0645\u06CC\u0646",letters:["\u0646"]}]}]},{province:"\u0627\u0635\u0641\u0647\u0627\u0646",codes:[{code:"13",details:[{city:"\u0627\u0635\u0641\u0647\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]},{city:"\u0641\u0644\u0627\u0648\u0631\u062C\u0627\u0646",letters:["\u0635"]}]},{code:"23",details:[{city:"\u06A9\u0627\u0634\u0627\u0646",letters:["\u0628"]},{city:"\u0646\u062C\u0641\u200C\u0622\u0628\u0627\u062F",letters:["\u062C"]},{city:"\u0634\u0647\u0631\u0636\u0627",letters:["\u062F"]},{city:"\u062E\u0645\u06CC\u0646\u06CC\u200C\u0634\u0647\u0631",letters:["\u0633"]},{city:"\u06AF\u0644\u067E\u0627\u06CC\u06AF\u0627\u0646",letters:["\u0635"]},{city:"\u0646\u0637\u0646\u0632",letters:["\u0637"]},{city:"\u0627\u0631\u062F\u0633\u062A\u0627\u0646",letters:["\u0642"]},{city:"\u062E\u0648\u0627\u0646\u0633\u0627\u0631",letters:["\u0644"]},{city:"\u0646\u0627\u06CC\u06CC\u0646",letters:["\u0645"]},{city:"\u0633\u0645\u06CC\u0631\u0645",letters:["\u0646"]},{city:"\u0641\u0644\u0627\u0648\u0631\u062C\u0627\u0646",letters:["\u0647"]},{city:"\u0641\u0631\u06CC\u062F\u0648\u0646\u200C\u0634\u0647\u0631",letters:["\u0648"]},{city:"\u0644\u0646\u062C\u0627\u0646",letters:["\u06CC"]}]},{code:"43",details:[{city:"\u0641\u0631\u06CC\u062F\u0646",letters:["\u0628"]},{city:"\u0645\u0628\u0627\u0631\u06A9\u0647",letters:["\u062C","\u0637"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u0634\u0647\u0631 \u0648 \u0645\u06CC\u0645\u0647",letters:["\u062F","\u0644"]},{city:"\u0622\u0631\u0627\u0646 \u0648 \u0628\u06CC\u062F\u06AF\u0644",letters:["\u0633"]},{city:"\u062A\u06CC\u0631\u0627\u0646 \u0648 \u06A9\u0631\u0648\u0646",letters:["\u0635"]},{city:"\u062F\u0647\u0627\u0642\u0627\u0646",letters:["\u0642"]},{city:"\u0646\u062C\u0641\u200C\u0622\u0628\u0627\u062F",letters:["\u0645"]},{city:"\u062E\u0645\u06CC\u0646\u06CC\u200C\u0634\u0647\u0631",letters:["\u0646"]},{city:"\u0644\u0646\u062C\u0627\u0646",letters:["\u0647"]},{city:"\u06A9\u0627\u0634\u0627\u0646",letters:["\u0648"]},{city:"\u0641\u0644\u0627\u0648\u0631\u062C\u0627\u0646",letters:["\u06CC"]}]},{code:"53",details:[{city:"\u0627\u0635\u0641\u0647\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0642","\u0644","\u0648"]},{city:"\u0634\u0647\u0631\u0636\u0627",letters:["\u0637"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u0634\u0647\u0631 \u0648 \u0645\u06CC\u0645\u0647",letters:["\u0645"]},{city:"\u0646\u062C\u0641\u200C\u0622\u0628\u0627\u062F",letters:["\u0646"]},{city:"\u06A9\u0627\u0634\u0627\u0646",letters:["\u0647"]},{city:"\u062E\u0645\u06CC\u0646\u06CC\u200C\u0634\u0647\u0631",letters:["\u06CC"]}]},{code:"67",details:[{city:"\u0627\u0635\u0641\u0647\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0637","\u0644","\u0645","\u0646","\u0648"]},{city:"\u0634\u0627\u0647\u06CC\u0646\u200C\u0634\u0647\u0631 \u0648 \u0645\u06CC\u0645\u0647",letters:["\u0642"]},{city:"\u0644\u0646\u062C\u0627\u0646",letters:["\u0635"]}]}]},{province:"\u0627\u0644\u0628\u0631\u0632",codes:[{code:"21",details:[{city:"\u0633\u0627\u0648\u062C\u0628\u0644\u0627\u063A",letters:["\u0635"]},{city:"\u06A9\u0631\u062C",letters:["\u0644","\u0648"]}]},{code:"30",details:[{city:"\u06A9\u0631\u062C",letters:["\u062F","\u0633","\u0644","\u0645","\u0647"]}]},{code:"38",details:[{city:"\u06A9\u0631\u062C",letters:["\u0628","\u062F","\u0633","\u0645","\u0646","\u0647","\u06CC"]}]},{code:"68",details:[{city:"\u06A9\u0631\u062C",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"78",details:[{city:"\u0633\u0627\u0648\u062C\u0628\u0644\u0627\u063A",letters:["\u0637"]}]}]},{province:"\u0627\u06CC\u0644\u0627\u0645",codes:[{code:"98",details:[{city:"\u0627\u06CC\u0644\u0627\u0645",letters:["\u0628","\u062C","\u062F"]},{city:"\u0645\u0647\u0631\u0627\u0646",letters:["\u0635"]},{city:"\u0628\u062F\u0631\u0647",letters:["\u0637"]},{city:"\u062F\u0647\u0644\u0631\u0627\u0646",letters:["\u0642"]},{city:"\u0686\u0631\u062F\u0627\u0648\u0644",letters:["\u0644"]},{city:"\u0627\u06CC\u0648\u0627\u0646",letters:["\u0645"]},{city:"\u0622\u0628\u062F\u0627\u0646\u0627\u0646",letters:["\u0646"]}]}]},{province:"\u0628\u0648\u0634\u0647\u0631",codes:[{code:"48",details:[{city:"\u0628\u0648\u0634\u0647\u0631",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"58",details:[{city:"\u062F\u0634\u062A\u0633\u062A\u0627\u0646",letters:["\u0628","\u0645","\u0648"]},{city:"\u06AF\u0646\u0627\u0648\u0647",letters:["\u062C","\u0647"]},{city:"\u06A9\u0646\u06AF\u0627\u0646\u060C \u0639\u0633\u0644\u0648\u06CC\u0647",letters:["\u062F","\u0646"]},{city:"\u062A\u0646\u06AF\u0633\u062A\u0627\u0646",letters:["\u0633"]},{city:"\u062F\u0634\u062A\u06CC",letters:["\u0635","\u06CC"]},{city:"\u062F\u06CC\u0631",letters:["\u0637"]},{city:"\u062F\u06CC\u0644\u0645",letters:["\u0642"]},{city:"\u062C\u0645",letters:["\u0644"]}]}]},{province:"\u062A\u0647\u0631\u0627\u0646",codes:[{code:"11, 22, 33, 44, 55, 66, 77, 88, 99, 10, 20, 40, 50, 60",details:[{city:"\u062A\u0647\u0631\u0627\u0646 (\u0634\u0647\u0631)",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"21",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u0634\u0647\u0631",letters:["\u0628","\u06CC"]},{city:"\u0631\u0628\u0627\u0637\u200C\u06A9\u0631\u06CC\u0645",letters:["\u0645"]},{city:"\u067E\u0627\u06A9\u062F\u0634\u062A",letters:["\u0644"]}]},{code:"30",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u0634\u0647\u0631",letters:["\u0642"]},{city:"\u067E\u0627\u06A9\u062F\u0634\u062A",letters:["\u0646"]}]},{code:"78",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u0634\u0647\u0631",letters:["\u0628","\u0642"]},{city:"\u0631\u0628\u0627\u0637\u200C\u06A9\u0631\u06CC\u0645",letters:["\u062C"]},{city:"\u0631\u06CC",letters:["\u0646"]},{city:"\u0634\u0645\u06CC\u0631\u0627\u0646\u0627\u062A",letters:["\u0648"]}]},{code:"38",details:[{city:"\u0631\u0628\u0627\u0637\u200C\u06A9\u0631\u06CC\u0645",letters:["\u0644"]}]}]},{province:"\u0686\u0647\u0627\u0631\u0645\u062D\u0627\u0644 \u0648 \u0628\u062E\u062A\u06CC\u0627\u0631\u06CC",codes:[{code:"71",details:[{city:"\u0634\u0647\u0631\u06A9\u0631\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"81",details:[{city:"\u0628\u0631\u0648\u062C\u0646",letters:["\u0628","\u0642"]},{city:"\u0644\u0631\u062F\u06AF\u0627\u0646",letters:["\u0633"]},{city:"\u0641\u0627\u0631\u0633\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0631\u062F\u0644",letters:["\u062C"]},{city:"\u06A9\u0648\u0647\u0631\u0646\u06AF",letters:["\u0635"]},{city:"\u06A9\u06CC\u0627\u0631",letters:["\u0637"]},{city:"\u0628\u0646",letters:["\u0642"]}]}]},{province:"\u062E\u0631\u0627\u0633\u0627\u0646 \u0634\u0645\u0627\u0644\u06CC",codes:[{code:"32",details:[{city:"\u0628\u062C\u0646\u0648\u0631\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635"]}]},{code:"26",details:[{city:"\u0634\u06CC\u0631\u0648\u0627\u0646",letters:["\u0635","\u0628"]},{city:"\u0627\u0633\u0641\u0631\u0627\u06CC\u0646",letters:["\u062C","\u0637"]},{city:"\u0645\u0627\u0646\u0647 \u0648 \u0633\u0645\u0644\u0642\u0627\u0646",letters:["\u062F","\u0644"]},{city:"\u0641\u0627\u0631\u0648\u062C",letters:["\u0645"]},{city:"\u0628\u062C\u0646\u0648\u0631\u062F",letters:["\u0628","\u062C","\u062F"]},{city:"\u062C\u0627\u062C\u0631\u0645 \u0648 \u06AF\u0631\u0645\u0647",letters:["\u0642"]}]}]},{province:"\u062E\u0631\u0627\u0633\u0627\u0646 \u0631\u0636\u0648\u06CC",codes:[{code:"12",details:[{city:"\u0645\u0634\u0647\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"32",details:[{city:"\u0646\u06CC\u0634\u0627\u0628\u0648\u0631",letters:["\u0628","\u06CC"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u062C"]},{city:"\u062A\u0631\u0628\u062A\u200C\u062C\u0627\u0645",letters:["\u0635"]},{city:"\u0642\u0648\u0686\u0627\u0646",letters:["\u0637"]},{city:"\u06AF\u0646\u0627\u0628\u0627\u062F",letters:["\u0642"]},{city:"\u062A\u0631\u0628\u062A\u200C\u062D\u06CC\u062F\u0631\u06CC\u0647",letters:["\u0644","\u0646"]},{city:"\u06A9\u0627\u0634\u0645\u0631",letters:["\u0645"]},{city:"\u062A\u0627\u06CC\u0628\u0627\u062F",letters:["\u0647"]},{city:"\u0645\u0634\u0647\u062F",letters:["\u0648"]}]},{code:"36",details:[{city:"\u0645\u0634\u0647\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0647","\u0648"]},{city:"\u06A9\u0627\u0634\u0645\u0631",letters:["\u0642"]},{city:"\u0646\u06CC\u0634\u0627\u0628\u0648\u0631",letters:["\u0644"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u0645"]},{city:"\u062A\u0631\u0628\u062A \u062D\u06CC\u062F\u0631\u06CC\u0647",letters:["\u0646"]},{city:"\u062A\u0631\u0628\u062A\u200C\u062C\u0627\u0645",letters:["\u06CC"]}]},{code:"42",details:[{city:"\u0641\u0631\u06CC\u0645\u0627\u0646",letters:["\u0628"]},{city:"\u0645\u0634\u0647\u062F",letters:["\u062C","\u0642","\u0647","\u0648"]},{city:"\u0633\u0631\u062E\u0633",letters:["\u062F"]},{city:"\u062F\u0631\u06AF\u0632",letters:["\u0633"]},{city:"\u062E\u0648\u0627\u0641",letters:["\u0635"]},{city:"\u0686\u0646\u0627\u0631\u0627\u0646",letters:["\u0637"]},{city:"\u0628\u0631\u062F\u0633\u06A9\u0646",letters:["\u0644"]},{city:"\u0631\u0634\u062A\u062E\u0648\u0627\u0631",letters:["\u0645"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u0646"]},{city:"\u062A\u0631\u0628\u062A \u062D\u06CC\u062F\u0631\u06CC\u0647",letters:["\u06CC"]},{city:"\u06A9\u0644\u0627\u062A",letters:["\u06CC"]}]},{code:"74",details:[{city:"\u0645\u0634\u0647\u062F",letters:["\u0628","\u062F","\u0633","\u0635","\u0642","\u0645","\u0646","\u0647","\u0648","\u06CC"]},{city:"\u0642\u0648\u0686\u0627\u0646",letters:["\u062C"]},{city:"\u0646\u06CC\u0634\u0627\u0628\u0648\u0631",letters:["\u0637"]},{city:"\u0633\u0628\u0632\u0648\u0627\u0631",letters:["\u0644"]},{city:"\u06AF\u0646\u0627\u0628\u0627\u062F",letters:["\u0646"]}]}]},{province:"\u062E\u0631\u0627\u0633\u0627\u0646 \u062C\u0646\u0648\u0628\u06CC",codes:[{code:"32",details:[{city:"\u0628\u06CC\u0631\u062C\u0646\u062F",letters:["\u062F"]}]},{code:"52",details:[{city:"\u0628\u06CC\u0631\u062C\u0646\u062F",letters:["\u0628","\u062C","\u062F"]},{city:"\u0642\u0627\u06CC\u0646\u0627\u062A",letters:["\u0635"]},{city:"\u0641\u0631\u062F\u0648\u0633",letters:["\u0637"]},{city:"\u0646\u0647\u0628\u0646\u062F\u0627\u0646",letters:["\u0642"]},{city:"\u0633\u0631\u0628\u06CC\u0634\u0647",letters:["\u0644"]}]},{code:"64",details:[{city:"\u0637\u0628\u0633",letters:["\u0642"]}]}]},{province:"\u062E\u0648\u0632\u0633\u062A\u0627\u0646",codes:[{code:"14",details:[{city:"\u0627\u0647\u0648\u0627\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"24",details:[{city:"\u0622\u0628\u0627\u062F\u0627\u0646",letters:["\u0628","\u0642"]},{city:"\u062E\u0631\u0645\u0634\u0647\u0631",letters:["\u062C"]},{city:"\u062F\u0632\u0641\u0648\u0644",letters:["\u062F"]},{city:"\u0628\u0647\u0628\u0647\u0627\u0646",letters:["\u0633"]},{city:"\u0645\u0633\u062C\u062F \u0633\u0644\u06CC\u0645\u0627\u0646",letters:["\u0635"]},{city:"\u0645\u0627\u0647\u0634\u0647\u0631",letters:["\u0637","\u0647"]},{city:"\u062F\u0634\u062A \u0622\u0632\u0627\u062F\u06AF\u0627\u0646",letters:["\u0642"]},{city:"\u0631\u0627\u0645\u0647\u0631\u0645\u0632",letters:["\u0644"]},{city:"\u0627\u0646\u062F\u06CC\u0645\u0634\u06A9",letters:["\u0645"]},{city:"\u0634\u0648\u0634\u062A\u0631",letters:["\u0646"]},{city:"\u0634\u0627\u062F\u06AF\u0627\u0646",letters:["\u0647"]},{city:"\u0634\u0648\u0634",letters:["\u0648"]},{city:"\u0627\u06CC\u0630\u0647",letters:["\u06CC"]}]},{code:"34",details:[{city:"\u0628\u0627\u063A\u0645\u0644\u06A9",letters:["\u0628"]},{city:"\u0634\u0648\u0634",letters:["\u0628"]},{city:"\u0627\u0645\u06CC\u062F\u06CC\u0647",letters:["\u062C"]},{city:"\u062E\u0631\u0645\u0634\u0647\u0631",letters:["\u062F"]},{city:"\u0647\u0646\u062F\u06CC\u062C\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0646\u062F\u06CC\u0645\u0634\u06A9",letters:["\u0633"]},{city:"\u0644\u0627\u0644\u06CC",letters:["\u0633"]},{city:"\u062F\u0632\u0641\u0648\u0644",letters:["\u0635","\u0648"]},{city:"\u0645\u0627\u0647\u0634\u0647\u0631",letters:["\u0637"]},{city:"\u0622\u0628\u0627\u062F\u0627\u0646",letters:["\u0642"]},{city:"\u0628\u0647\u0628\u0647\u0627\u0646",letters:["\u0646"]},{city:"\u0634\u0648\u0634\u062A\u0631",letters:["\u0647"]},{city:"\u0627\u0647\u0648\u0627\u0632",letters:["\u06CC"]}]}]},{province:"\u0632\u0646\u062C\u0627\u0646",codes:[{code:"87",details:[{city:"\u0632\u0646\u062C\u0627\u0646",letters:["\u0628","\u062F","\u062C","\u0633","\u0635","\u0637"]}]},{code:"97",details:[{city:"\u0627\u0628\u0647\u0631",letters:["\u0628","\u0642"]},{city:"\u062E\u062F\u0627\u0628\u0646\u062F\u0647",letters:["\u062C"]},{city:"\u062E\u0631\u0645\u200C\u062F\u0631\u0647",letters:["\u062F"]},{city:"\u0627\u06CC\u062C\u0631\u0648\u062F",letters:["\u0633"]},{city:"\u0637\u0627\u0631\u0645",letters:["\u0635"]},{city:"\u0645\u0627\u0647\u200C\u0646\u0634\u0627\u0646",letters:["\u0637"]}]}]},{province:"\u0633\u0645\u0646\u0627\u0646",codes:[{code:"86",details:[{city:"\u0633\u0645\u0646\u0627\u0646",letters:["\u0628","\u062F","\u062C"]}]},{code:"96",details:[{city:"\u062F\u0627\u0645\u063A\u0627\u0646",letters:["\u0628"]},{city:"\u0634\u0627\u0647\u0631\u0648\u062F",letters:["\u062C","\u0637"]},{city:"\u06AF\u0631\u0645\u0633\u0627\u0631",letters:["\u062F"]},{city:"\u0645\u0647\u062F\u06CC\u200C\u0634\u0647\u0631",letters:["\u0633"]}]}]},{province:"\u0633\u06CC\u0633\u062A\u0627\u0646 \u0648 \u0628\u0644\u0648\u0686\u0633\u062A\u0627\u0646",codes:[{code:"85",details:[{city:"\u0632\u0627\u0647\u062F\u0627\u0646",letters:["\u0628","\u062F","\u062C","\u0633","\u0635","\u0637"]}]},{code:"95",details:[{city:"\u0632\u0627\u0628\u0644",letters:["\u0628","\u0644","\u0648"]},{city:"\u0627\u06CC\u0631\u0627\u0646\u0634\u0647\u0631",letters:["\u062C","\u0645"]},{city:"\u062E\u0627\u0634",letters:["\u062F"]},{city:"\u0633\u0631\u0627\u0648\u0627\u0646",letters:["\u0633","\u0646"]},{city:"\u0646\u06CC\u06A9\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0633\u0631\u0628\u0627\u0632",letters:["\u0637"]},{city:"\u0686\u0627\u0628\u0647\u0627\u0631",letters:["\u0642"]}]}]},{province:"\u0641\u0627\u0631\u0633",codes:[{code:"63",details:[{city:"\u0634\u06CC\u0631\u0627\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648","\u0647","\u06CC"]}]},{code:"73",details:[{city:"\u062C\u0647\u0631\u0645",letters:["\u0628","\u0647"]},{city:"\u0644\u0627\u0631\u0633\u062A\u0627\u0646",letters:["\u062C"]},{city:"\u062F\u0627\u0631\u0627\u0628",letters:["\u062F"]},{city:"\u0641\u0633\u0627",letters:["\u0633"]},{city:"\u06A9\u0627\u0632\u0631\u0648\u0646",letters:["\u0635"]},{city:"\u0641\u06CC\u0631\u0648\u0632\u0622\u0628\u0627\u062F",letters:["\u0637"]},{city:"\u0622\u0628\u0627\u062F\u0647",letters:["\u0642"]},{city:"\u0645\u0631\u0648\u062F\u0634\u062A",letters:["\u0644"]},{city:"\u0644\u0627\u0645\u0631\u062F",letters:["\u0645"]},{city:"\u0646\u06CC\u200C\u0631\u06CC\u0632",letters:["\u0646"]},{city:"\u0627\u0642\u0644\u06CC\u062F",letters:["\u0647"]},{city:"\u0627\u0633\u062A\u0647\u0628\u0627\u0646",letters:["\u0648"]},{city:"\u0633\u067E\u06CC\u062F\u0627\u0646",letters:["\u06CC"]},{city:"\u0645\u0645\u0633\u0646\u06CC",letters:["\u06CC"]}]},{code:"83",details:[{city:"\u0645\u0645\u0633\u0646\u06CC",letters:["\u0628"]},{city:"\u0634\u06CC\u0631\u0627\u0632 \u0648 \u0634\u0647\u0631\u0647\u0627\u06CC \u062F\u06CC\u06AF\u0631",letters:["\u062C","\u0635","\u0637","\u0646"]},{city:"\u0642\u06CC\u0631 \u0648 \u06A9\u0627\u0631\u0632\u06CC\u0646",letters:["\u062F"]},{city:"\u062F\u0627\u0631\u0627\u0628\u060C \u0645\u0647\u0631\u060C \u0641\u06CC\u0631\u0648\u0632\u0622\u0628\u0627\u062F",letters:["\u0633"]},{city:"\u0622\u0628\u0627\u062F\u0647\u060C \u0628\u0648\u0627\u0646\u0627\u062A",letters:["\u0642"]},{city:"\u0641\u0631\u0627\u0634\u0628\u0646\u062F",letters:["\u0644"]},{city:"\u0644\u0627\u0631\u0633\u062A\u0627\u0646",letters:["\u0645"]},{city:"\u062C\u0647\u0631\u0645",letters:["\u0647"]},{city:"\u0645\u0631\u0648\u062F\u0634\u062A",letters:["\u0648"]},{city:"\u0641\u0633\u0627",letters:["\u06CC"]}]},{code:"93",details:[{city:"\u0634\u06CC\u0631\u0627\u0632",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0645","\u0646"]},{city:"\u0644\u0627\u0631\u0633\u062A\u0627\u0646",letters:["\u0644"]},{city:"\u0634\u06CC\u0631\u0627\u0632 \u0648 \u0634\u0647\u0631\u0647\u0627\u06CC \u062F\u06CC\u06AF\u0631",letters:["\u0648","\u06CC"]}]}]},{province:"\u0642\u0632\u0648\u06CC\u0646",codes:[{code:"79",details:[{city:"\u0642\u0632\u0648\u06CC\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645"]}]},{code:"89",details:[{city:"\u062A\u0627\u06A9\u0633\u062A\u0627\u0646",letters:["\u0628","\u0633"]},{city:"\u0628\u0648\u06CC\u06CC\u0646 \u0632\u0647\u0631\u0627",letters:["\u062C"]},{city:"\u0622\u0628\u06CC\u06A9",letters:["\u062F"]}]}]},{province:"\u0642\u0645",codes:[{code:"16",details:[{city:"\u0642\u0645",letters:["\u062A\u0645\u0627\u0645 \u062D\u0631\u0648\u0641"]}]}]},{province:"\u06A9\u0631\u062F\u0633\u062A\u0627\u0646",codes:[{code:"51",details:[{city:"\u0633\u0646\u0646\u062F\u062C",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648"]}]},{code:"61",details:[{city:"\u0633\u0642\u0632",letters:["\u0628","\u0645"]},{city:"\u0628\u06CC\u062C\u0627\u0631",letters:["\u062C"]},{city:"\u0628\u0627\u0646\u0647",letters:["\u062F","\u0647"]},{city:"\u0642\u0631\u0648\u0647",letters:["\u0633","\u0646"]},{city:"\u0645\u0631\u06CC\u0648\u0627\u0646",letters:["\u0635","\u0648"]},{city:"\u062F\u06CC\u0648\u0627\u0646\u062F\u0631\u0647",letters:["\u0637"]},{city:"\u06A9\u0627\u0645\u06CC\u0627\u0631\u0627\u0646",letters:["\u0642"]},{city:"\u0633\u0631\u0648\u0622\u0628\u0627\u062F",letters:["\u0644"]}]}]},{province:"\u06A9\u0631\u0645\u0627\u0646",codes:[{code:"45",details:[{city:"\u06A9\u0631\u0645\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646"]}]},{code:"65",details:[{city:"\u0631\u0641\u0633\u0646\u062C\u0627\u0646",letters:["\u0628","\u06CC"]},{city:"\u0628\u0645",letters:["\u062C"]},{city:"\u0633\u06CC\u0631\u062C\u0627\u0646",letters:["\u062F"]},{city:"\u0628\u0627\u0641\u062A",letters:["\u0633"]},{city:"\u062C\u06CC\u0631\u0641\u062A",letters:["\u0635"]},{city:"\u0632\u0631\u0646\u062F",letters:["\u0637"]},{city:"\u06A9\u0647\u0646\u0648\u062C",letters:["\u0642"]},{city:"\u0634\u0647\u0631 \u0628\u0627\u0628\u06A9",letters:["\u0644"]},{city:"\u0628\u0631\u062F\u0633\u06CC\u0631",letters:["\u0645"]},{city:"\u0645\u0646\u0648\u062C\u0627\u0646",letters:["\u0646"]},{city:"\u0631\u0627\u0648\u0631",letters:["\u0647"]},{city:"\u0639\u0646\u0628\u0631\u0622\u0628\u0627\u062F",letters:["\u0648"]}]},{code:"75",details:[{city:"\u0633\u06CC\u0631\u062C\u0627\u0646",letters:["\u0628","\u0635","\u0645"]},{city:"\u0628\u0645",letters:["\u062C"]},{city:"\u062C\u06CC\u0631\u0641\u062A",letters:["\u062F"]},{city:"\u0631\u0641\u0633\u0646\u062C\u0627\u0646",letters:["\u0633","\u0644"]},{city:"\u0632\u0631\u0646\u062F",letters:["\u0637"]},{city:"\u06A9\u0647\u0646\u0648\u062C",letters:["\u0642"]}]}]},{province:"\u06A9\u0631\u0645\u0627\u0646\u0634\u0627\u0647",codes:[{code:"19",details:[{city:"\u06A9\u0631\u0645\u0627\u0646\u0634\u0627\u0647",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0647","\u0648"]}]},{code:"29",details:[{city:"\u0627\u0633\u0644\u0627\u0645\u200C\u0622\u0628\u0627\u062F \u063A\u0631\u0628",letters:["\u0628","\u0647"]},{city:"\u06AF\u06CC\u0644\u0627\u0646 \u063A\u0631\u0628",letters:["\u062C"]},{city:"\u0633\u0631\u067E\u0644\u200C\u0630\u0647\u0627\u0628",letters:["\u062F"]},{city:"\u067E\u0627\u0648\u0647",letters:["\u0633"]},{city:"\u06A9\u0646\u06AF\u0627\u0648\u0631",letters:["\u0635"]},{city:"\u0642\u0635\u0631\u0634\u06CC\u0631\u06CC\u0646",letters:["\u0637"]},{city:"\u0633\u0646\u0642\u0631/\u0633\u0642\u0632",letters:["\u0642"]},{city:"\u062C\u0648\u0627\u0646\u0631\u0648\u062F",letters:["\u0644"]},{city:"\u0635\u062D\u0646\u0647",letters:["\u0645"]},{city:"\u0647\u0631\u0633\u06CC\u0646",letters:["\u0646"]},{city:"\u062B\u0644\u0627\u062B \u0628\u0627\u0628\u0627\u062C\u0627\u0646\u06CC",letters:["\u0648"]}]}]},{province:"\u06A9\u0647\u06AF\u06CC\u0644\u0648\u06CC\u0647 \u0648 \u0628\u0648\u06CC\u0631\u0627\u062D\u0645\u062F",codes:[{code:"49",details:[{city:"\u06CC\u0627\u0633\u0648\u062C",letters:["\u0628","\u062C","\u062F"]},{city:"\u06AF\u0686\u0633\u0627\u0631\u0627\u0646",letters:["\u0635","\u0644"]},{city:"\u06A9\u0647\u06AF\u06CC\u0644\u0648\u06CC\u0647",letters:["\u0637"]},{city:"\u062F\u0646\u0627",letters:["\u0642"]}]}]},{province:"\u06AF\u0644\u0633\u062A\u0627\u0646",codes:[{code:"59",details:[{city:"\u06AF\u0644\u0633\u062A\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635"]},{city:"\u06AF\u0646\u0628\u062F \u06A9\u0627\u0648\u0648\u0633",letters:["\u0628","\u0647"]},{city:"\u0628\u0646\u062F\u0631\u062A\u0631\u06A9\u0645\u0646",letters:["\u062C"]},{city:"\u06A9\u0631\u062F\u06A9\u0648\u06CC",letters:["\u062F"]},{city:"\u0639\u0644\u06CC\u200C\u0622\u0628\u0627\u062F",letters:["\u0633"]},{city:"\u0622\u0632\u0627\u062F\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0645\u06CC\u0646\u0648\u062F\u0634\u062A",letters:["\u0637"]},{city:"\u0628\u0646\u062F\u0631\u06AF\u0632",letters:["\u0642"]},{city:"\u0631\u0627\u0645\u06CC\u0627\u0646",letters:["\u0644"]},{city:"\u0622\u0642\u200C\u0642\u0644\u0627",letters:["\u0645"]},{city:"\u06A9\u0644\u0627\u0644\u0647",letters:["\u0646"]}]}]},{province:"\u06AF\u06CC\u0644\u0627\u0646",codes:[{code:"46",details:[{city:"\u0631\u0634\u062A",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646","\u0648"]}]},{code:"56",details:[{city:"\u0627\u0646\u0632\u0644\u06CC",letters:["\u0628"]},{city:"\u0644\u0627\u0647\u06CC\u062C\u0627\u0646",letters:["\u062C"]},{city:"\u0622\u0633\u062A\u0627\u0631\u0627",letters:["\u062F"]},{city:"\u0637\u0627\u0644\u0634",letters:["\u0633"]},{city:"\u0631\u0648\u062F\u0633\u0631",letters:["\u0635"]},{city:"\u0631\u0648\u062F\u0628\u0627\u0631",letters:["\u0637"]},{city:"\u0635\u0648\u0645\u0639\u0647\u200C\u0633\u0631\u0627",letters:["\u0642"]},{city:"\u0641\u0648\u0645\u0646",letters:["\u0644"]},{city:"\u0644\u0646\u06AF\u0631\u0648\u062F",letters:["\u0645"]},{city:"\u0631\u0636\u0648\u0627\u0646\u200C\u0634\u0647\u0631",letters:["\u0646"]},{city:"\u0645\u0627\u0633\u0627\u0644",letters:["\u0647"]},{city:"\u0627\u0645\u0644\u0634",letters:["\u0648"]},{city:"\u0634\u0641\u062A",letters:["\u06CC"]}]},{code:"76",details:[{city:"\u0633\u06CC\u0627\u0647\u06A9\u0644",letters:["\u0628"]},{city:"\u0622\u0633\u062A\u0627\u0646\u0647",letters:["\u062C"]},{city:"\u0644\u0627\u0647\u06CC\u062C\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0646\u0632\u0644\u06CC",letters:["\u0633"]},{city:"\u0644\u0646\u06AF\u0631\u0648\u062F",letters:["\u0635"]},{city:"\u0637\u0627\u0644\u0634",letters:["\u0637"]},{city:"\u0631\u0648\u062F\u0633\u0631",letters:["\u0642"]}]}]},{province:"\u0644\u0631\u0633\u062A\u0627\u0646",codes:[{code:"31",details:[{city:"\u062E\u0631\u0645\u200C\u0622\u0628\u0627\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635"]}]},{code:"41",details:[{city:"\u0628\u0631\u0648\u062C\u0631\u062F",letters:["\u0628","\u0645","\u0646"]},{city:"\u0627\u0644\u06CC\u06AF\u0648\u062F\u0631\u0632",letters:["\u062C"]},{city:"\u062F\u0648\u0631\u0648\u062F",letters:["\u062F","\u0648"]},{city:"\u06A9\u0648\u0647\u062F\u0634\u062A",letters:["\u0633","\u0648"]},{city:"\u062F\u0644\u0641\u0627\u0646",letters:["\u0635"]},{city:"\u0627\u0632\u0646\u0627",letters:["\u0637"]},{city:"\u067E\u0644 \u062F\u062E\u062A\u0631",letters:["\u0642"]},{city:"\u0633\u0644\u0633\u0644\u0647",letters:["\u0644"]}]}]},{province:"\u0645\u0627\u0632\u0646\u062F\u0631\u0627\u0646",codes:[{code:"62",details:[{city:"\u0633\u0627\u0631\u06CC",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637"]}]},{code:"72",details:[{city:"\u0622\u0645\u0644",letters:["\u0628"]},{city:"\u0628\u0627\u0628\u0644",letters:["\u062C"]},{city:"\u062A\u0646\u06A9\u0627\u0628\u0646",letters:["\u062F"]},{city:"\u0631\u0627\u0645\u0633\u0631",letters:["\u0633"]},{city:"\u0646\u0648\u0634\u0647\u0631",letters:["\u0635"]},{city:"\u0646\u0648\u0631",letters:["\u0637","\u06CC"]},{city:"\u0628\u0647\u0634\u0647\u0631",letters:["\u0642"]},{city:"\u0642\u0627\u0626\u0645\u0634\u0647\u0631",letters:["\u0644"]},{city:"\u0628\u0627\u0628\u0644\u0633\u0631",letters:["\u0645"]},{city:"\u0686\u0627\u0644\u0648\u0633",letters:["\u0646"]},{city:"\u0646\u06A9\u0627",letters:["\u0647"]},{city:"\u0645\u062D\u0645\u0648\u062F\u0622\u0628\u0627\u062F",letters:["\u0648"]},{city:"\u062C\u0648\u06CC\u0628\u0627\u0631",letters:["\u06CC"]}]},{code:"82",details:[{city:"\u0633\u0648\u0627\u062F\u06A9\u0648\u0647",letters:["\u0628"]},{city:"\u0628\u0627\u0628\u0644",letters:["\u062C","\u0635","\u0645"]},{city:"\u0622\u0645\u0644",letters:["\u062F","\u0642"]},{city:"\u0642\u0627\u0626\u0645\u0634\u0647\u0631",letters:["\u0633","\u0646"]},{city:"\u062A\u0646\u06A9\u0627\u0628\u0646",letters:["\u0637"]},{city:"\u0628\u0627\u0628\u0644\u0633\u0631",letters:["\u0644"]},{city:"\u0628\u0647\u0634\u0647\u0631",letters:["\u0647"]},{city:"\u0686\u0627\u0644\u0648\u0633",letters:["\u0648"]},{city:"\u0646\u0648\u0634\u0647\u0631",letters:["\u06CC"]}]},{code:"92",details:[{city:"\u0622\u0645\u0644",letters:["\u0628"]},{city:"\u0628\u0627\u0628\u0644",letters:["\u062C","\u0635"]},{city:"\u062A\u0646\u06A9\u0627\u0628\u0646",letters:["\u062F"]},{city:"\u0642\u0627\u0626\u0645\u0634\u0647\u0631",letters:["\u0633"]}]}]},{province:"\u0645\u0631\u06A9\u0632\u06CC",codes:[{code:"47",details:[{city:"\u0627\u0631\u0627\u06A9",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642"]}]},{code:"57",details:[{city:"\u0633\u0627\u0648\u0647",letters:["\u0628","\u0647","\u0648"]},{city:"\u062E\u0645\u06CC\u0646",letters:["\u062C"]},{city:"\u0645\u062D\u0644\u0627\u062A",letters:["\u062F"]},{city:"\u062A\u0641\u0631\u0634",letters:["\u0633"]},{city:"\u062F\u0644\u06CC\u062C\u0627\u0646",letters:["\u0635"]},{city:"\u0622\u0634\u062A\u06CC\u0627\u0646",letters:["\u0637"]},{city:"\u0634\u0627\u0632\u0646\u062F",letters:["\u0642"]},{city:"\u0632\u0631\u0646\u062F\u06CC\u0647",letters:["\u0644"]},{city:"\u06A9\u0645\u06CC\u062C\u0627\u0646",letters:["\u0646"]}]}]},{province:"\u0647\u0631\u0645\u0632\u06AF\u0627\u0646",codes:[{code:"84",details:[{city:"\u0628\u0646\u062F\u0631\u0639\u0628\u0627\u0633",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644"]}]},{code:"94",details:[{city:"\u0645\u06CC\u0646\u0627\u0628",letters:["\u0628","\u0645"]},{city:"\u0628\u0646\u062F\u0631 \u0644\u0646\u06AF\u0647",letters:["\u062C","\u0646"]},{city:"\u0631\u0648\u062F\u0627\u0646",letters:["\u062F"]},{city:"\u0627\u0628\u0648\u0645\u0648\u0633\u06CC",letters:["\u0633"]},{city:"\u062C\u0627\u0633\u06A9",letters:["\u0635"]},{city:"\u0628\u0633\u062A\u06A9",letters:["\u0637"]},{city:"\u062D\u0627\u062C\u06CC\u200C\u0622\u0628\u0627\u062F",letters:["\u0642"]},{city:"\u0642\u0634\u0645",letters:["\u0644"]}]}]},{province:"\u0647\u0645\u062F\u0627\u0646",codes:[{code:"18",details:[{city:"\u0647\u0645\u062F\u0627\u0646",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0642","\u0644","\u0637"]}]},{code:"28",details:[{city:"\u0646\u0647\u0627\u0648\u0646\u062F",letters:["\u0628","\u0645"]},{city:"\u0645\u0644\u0627\u06CC\u0631",letters:["\u062C","\u0644","\u0646"]},{city:"\u062A\u0648\u06CC\u0633\u0631\u06A9\u0627\u0646",letters:["\u062F"]},{city:"\u06A9\u0628\u0648\u062F\u0631\u0622\u0647\u0646\u06AF",letters:["\u0633"]},{city:"\u0631\u0632\u0646",letters:["\u0635"]},{city:"\u0628\u0647\u0627\u0631",letters:["\u0637"]},{city:"\u0627\u0633\u062F\u0622\u0628\u0627\u062F",letters:["\u0642"]}]}]},{province:"\u06CC\u0632\u062F",codes:[{code:"54",details:[{city:"\u06CC\u0632\u062F",letters:["\u0628","\u062C","\u062F","\u0633","\u0635","\u0637","\u0642","\u0644","\u0645","\u0646"]}]},{code:"64",details:[{city:"\u0627\u0631\u062F\u06A9\u0627\u0646",letters:["\u0628"]},{city:"\u062A\u0641\u062A",letters:["\u062C"]},{city:"\u0645\u06CC\u0628\u062F",letters:["\u062F"]},{city:"\u0628\u0627\u0641\u0642",letters:["\u0633"]},{city:"\u0645\u0647\u0631\u06CC\u0632",letters:["\u0635"]},{city:"\u0627\u0628\u0631\u06A9\u0648\u0647",letters:["\u0637"]},{city:"\u062E\u0627\u062A\u0645",letters:["\u0644"]},{city:"\u0635\u062F\u0648\u0642 (\u0627\u0634\u06A9\u0630\u0631)",letters:["\u0645"]}]}]}];var _=x;function n(e){if(!e)return"";let t=1776,s=1785,l=1632,r=1641,c=1610,o=1740,p=1603,a=1705,y="";for(let u=0;u<e.length;u++){let m=e.charCodeAt(u),b=e[u];m>=t&&m<=s?b=String(m-t):m>=l&&m<=r?b=String(m-l):m===c?b=String.fromCharCode(o):m===p&&(b=String.fromCharCode(a)),y+=b}return y}function F(e){let t=n(e).replace(/[\-\s]/g,"");if(t.length<6)return null;let s=t.substring(0,6),l=B[s];return l?{...l,formatted:t.replace(/(\d{4})(?=\d)/g,"$1-")}:null}function L(e){let t=n(e),s="";if(t.startsWith("09")?s=t.substring(0,4):t.startsWith("9")?s="0"+t.substring(0,3):t.startsWith("+98")&&(s="0"+t.substring(3,6)),s.length!==4)return null;for(let[l,r]of Object.entries($))if(r.prefixes.includes(s))return{name:l,label:r.label,logo:r.logo};return null}function I(e){let t=0,s=2;for(let r=e.length-1;r>=0;r--)t+=parseInt(e[r])*s,s++,s>7&&(s=2);let l=t%11;return l===0||l===1?0:11-l}function h(e){let t=n(e);if(!/^\d{6,13}$/.test(t))return!1;let s=parseInt(t.slice(-1)),l=t.slice(0,-1);return I(l)===s}function S(e,t){let s=n(e),l=n(t);if(!/^\d{6,13}$/.test(s)||!/^\d{6,13}$/.test(l))return!1;let r=parseInt(s.slice(-2,-1)),c=s.slice(0,-2);if(I(c)!==r)return!1;let o=parseInt(s.slice(-1)),p=l+s.slice(0,-1);return I(p)===o}function T(e,t){let s=n(e);if(s.length<6||s.length>13)return null;let l=parseInt(s.slice(-2,-1)),r=C[l]||{label:"\u0646\u0627\u0645\u0634\u062E\u0635",slug:"unknown",color:"#333",logo:""},c=0,o="0",p=h(s);if(t){let a=n(t);if(!S(a,s))p=!1;else{let y=a.slice(0,-5);y.length>0&&(c=parseInt(y)*1e3,o=new Intl.NumberFormat("fa-IR").format(c))}}return{type:r,amount:c,formattedAmount:o,isValid:p}}function E(e){let t=n(e).replace(/[\s-]/g,""),s=/^(\d{2})([\u0600-\u06FF]{1,3}|[A-Za-z])(\d{3})(\d{2})$/,l=t.match(s);if(!l)return null;let r=l[2],c=l[4];for(let o of _){let p=o.codes.find(a=>{let y=a.code;return y.includes(",")?y.split(",").map(u=>u.trim()).includes(c):y===c});if(p){let a=p.details.find(y=>y.letters.includes(r)||y.letters.includes("\u062A\u0645\u0627\u0645 \u062D\u0631\u0648\u0641"));if(a)return{province:o.province,city:a.city,isValid:!0}}}return null}function A(e){return E(e)!==null}function O(e){let t=n(e);if(!/^\d{10}$/.test(t)||/^(\d)\1+$/.test(t))return!1;let s=parseInt(t[9]),l=t.substring(0,9).split("").reduce((r,c,o)=>r+parseInt(c)*(10-o),0)%11;return l<2?s===l:s===11-l}function P(e){let t=n(e);if(t.length!==11||!/^\d{11}$/.test(t))return!1;let s=parseInt(t[9]),l=parseInt(t[10]),r=[29,27,23,19,17,29,27,23,19,17],c=0;for(let a=0;a<10;a++){let y=parseInt(t[a]);c+=(y+s+2)*r[a]}let o=c%11;return(o===10?0:o)===l}function z(e){let t=n(e);return/^[A-Za-z][0-9]{8,9}$/.test(t)}function R(e){let t=n(e).replace(/[\-\s]/g,"");if(!/^\d{16}$/.test(t))return!1;let s=0,l=!1;for(let r=t.length-1;r>=0;r--){let c=parseInt(t[r]);l&&(c*=2,c>9&&(c-=9)),s+=c,l=!l}return s%10===0}function k(e,{strictZero:t="optional"}={}){let s=n(e),l="9\\d{9}",r="";return t===!0?r=`^0${l}$`:t===!1?r=`^${l}$`:r=`^(?:0|\\+98)?${l}$`,new RegExp(r).test(s)}function N(e){let s=n(e).toUpperCase().replace(/[\-\s]/g,"");if(s.length!==26||!s.startsWith("IR"))return!1;let r=(s.substring(4)+s.substring(0,4)).split("").map(c=>{let o=c.charCodeAt(0);return o>=48&&o<=57?c:(o-55).toString()}).join("");try{return BigInt(r)%BigInt(97)===BigInt(1)}catch{return!1}}function M(e){let t=n(e);return/^[1-9]\d{9}$/.test(t)}function D(e){let t=n(e);return/^0\d{2}\d{8}$/.test(t)}var V={fa:{melliCode:"\u06A9\u062F \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",shenaseMelli:"\u0634\u0646\u0627\u0633\u0647 \u0645\u0644\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",passport:"\u0634\u0645\u0627\u0631\u0647 \u06AF\u0630\u0631\u0646\u0627\u0645\u0647 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",cardNumber:"\u0634\u0645\u0627\u0631\u0647 \u06A9\u0627\u0631\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",mobile:"\u0634\u0645\u0627\u0631\u0647 \u0645\u0648\u0628\u0627\u06CC\u0644 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",sheba:"\u0634\u0645\u0627\u0631\u0647 \u0634\u0628\u0627 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",postalCode:"\u06A9\u062F \u067E\u0633\u062A\u06CC \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",landline:"\u0634\u0645\u0627\u0631\u0647 \u062A\u0644\u0641\u0646 \u062B\u0627\u0628\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",billId:"\u0634\u0646\u0627\u0633\u0647 \u0642\u0628\u0636 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",paymentId:"\u0634\u0646\u0627\u0633\u0647 \u067E\u0631\u062F\u0627\u062E\u062A \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A",plateNumber:"\u067E\u0644\u0627\u06A9 \u062E\u0648\u062F\u0631\u0648 \u0646\u0627\u0645\u0639\u062A\u0628\u0631 \u0627\u0633\u062A"},en:{melliCode:"Invalid national code",shenaseMelli:"Invalid legal person ID (Shenase Melli)",passport:"Invalid passport number",cardNumber:"Invalid card number",mobile:"Invalid mobile number",sheba:"Invalid Sheba (IBAN) number",postalCode:"Invalid postal code",landline:"Invalid landline number",billId:"Invalid Bill ID",paymentId:"Invalid Payment ID",plateNumber:"Invalid License Plate"}},d=(e,t)=>{if(t?.message)return t.message;let s=t?.locale||"fa";return V[s][e]};var J=e=>g.string().refine(t=>O(t),{message:d("melliCode",e)}),Q=e=>g.string().refine(t=>P(t),{message:d("shenaseMelli",e)}),X=e=>g.string().refine(t=>z(t),{message:d("passport",e)}),tt=e=>g.string().refine(t=>R(t),{message:d("cardNumber",e)}),et=e=>g.string().refine(t=>k(t,{strictZero:e?.strictZero}),{message:d("mobile",e)}),st=e=>g.string().refine(t=>N(t),{message:d("sheba",e)}),lt=e=>g.string().refine(t=>M(t),{message:d("postalCode",e)}),it=e=>g.string().refine(t=>D(t),{message:d("landline",e)}),rt=e=>g.string().refine(t=>h(t),{message:d("billId",e)}),ct=e=>g.string().refine(t=>t.length>=6&&t.length<=13,{message:d("paymentId",e)}),ot=e=>g.string().refine(t=>A(t),{message:d("plateNumber",e)}),nt=e=>g.preprocess(t=>typeof t=="string"?n(t):t,e);export{F as getBankInfo,T as getBillInfo,L as getMobileOperator,E as getPlateInfo,h as isBillIdValid,R as isCardNumber,k as isIranianMobile,D as isLandline,O as isMelliCode,z as isPassport,S as isPaymentIdValid,A as isPlateNumber,M as isPostalCode,N as isSheba,P as isShenaseMelli,nt as preprocessNumber,n as verifyAndNormalize,rt as zBillId,tt as zCardNumber,et as zIranianMobile,it as zLandline,J as zMelliCode,X as zPassport,ct as zPaymentId,ot as zPlateNumber,lt as zPostalCode,st as zSheba,Q as zShenaseMelli};
2
2
  //# sourceMappingURL=index.mjs.map