solarlunar
Version:
阳历阴历(公历农历)互转 - Modernized version
1 lines • 53.3 kB
Source Map (JSON)
{"version":3,"file":"solarlunar.cjs","sources":["../const/lunarInfo.js","../const/solarMonth.js","../const/gan.js","../const/zhi.js","../const/animals.js","../const/lunarTerm.js","../const/lTermInfo.js","../const/nStr1.js","../const/nStr2.js","../const/nStr3.js","../const/nStr4.js","../src/solarLunar.js"],"sourcesContent":["/**\n * 农历 1900-2100 的润大小信息表\n * @return Array\n */\nexport default [0x04bd8, 0x04ae0, 0x0a570, 0x054d5, 0x0d260, 0x0d950, 0x16554, 0x056a0, 0x09ad0, 0x055d2,//1900-1909\n 0x04ae0, 0x0a5b6, 0x0a4d0, 0x0d250, 0x1d255, 0x0b540, 0x0d6a0, 0x0ada2, 0x095b0, 0x14977,//1910-1919\n 0x04970, 0x0a4b0, 0x0b4b5, 0x06a50, 0x06d40, 0x1ab54, 0x02b60, 0x09570, 0x052f2, 0x04970,//1920-1929\n 0x06566, 0x0d4a0, 0x0ea50, 0x06e95, 0x05ad0, 0x02b60, 0x186e3, 0x092e0, 0x1c8d7, 0x0c950,//1930-1939\n 0x0d4a0, 0x1d8a6, 0x0b550, 0x056a0, 0x1a5b4, 0x025d0, 0x092d0, 0x0d2b2, 0x0a950, 0x0b557,//1940-1949\n 0x06ca0, 0x0b550, 0x15355, 0x04da0, 0x0a5b0, 0x14573, 0x052b0, 0x0a9a8, 0x0e950, 0x06aa0,//1950-1959\n 0x0aea6, 0x0ab50, 0x04b60, 0x0aae4, 0x0a570, 0x05260, 0x0f263, 0x0d950, 0x05b57, 0x056a0,//1960-1969\n 0x096d0, 0x04dd5, 0x04ad0, 0x0a4d0, 0x0d4d4, 0x0d250, 0x0d558, 0x0b540, 0x0b6a0, 0x195a6,//1970-1979\n 0x095b0, 0x049b0, 0x0a974, 0x0a4b0, 0x0b27a, 0x06a50, 0x06d40, 0x0af46, 0x0ab60, 0x09570,//1980-1989\n 0x04af5, 0x04970, 0x064b0, 0x074a3, 0x0ea50, 0x06b58, 0x05ac0, 0x0ab60, 0x096d5, 0x092e0,//1990-1999\n 0x0c960, 0x0d954, 0x0d4a0, 0x0da50, 0x07552, 0x056a0, 0x0abb7, 0x025d0, 0x092d0, 0x0cab5,//2000-2009\n 0x0a950, 0x0b4a0, 0x0baa4, 0x0ad50, 0x055d9, 0x04ba0, 0x0a5b0, 0x15176, 0x052b0, 0x0a930,//2010-2019\n 0x07954, 0x06aa0, 0x0ad50, 0x05b52, 0x04b60, 0x0a6e6, 0x0a4e0, 0x0d260, 0x0ea65, 0x0d530,//2020-2029\n 0x05aa0, 0x076a3, 0x096d0, 0x04afb, 0x04ad0, 0x0a4d0, 0x1d0b6, 0x0d250, 0x0d520, 0x0dd45,//2030-2039\n 0x0b5a0, 0x056d0, 0x055b2, 0x049b0, 0x0a577, 0x0a4b0, 0x0aa50, 0x1b255, 0x06d20, 0x0ada0,//2040-2049\n /**Add By JJonline@JJonline.Cn**/\n 0x14b63, 0x09370, 0x049f8, 0x04970, 0x064b0, 0x168a6, 0x0ea50, 0x06b20, 0x1a6c4, 0x0aae0,//2050-2059\n 0x092e0, 0x0d2e3, 0x0c960, 0x0d557, 0x0d4a0, 0x0da50, 0x05d55, 0x056a0, 0x0a6d0, 0x055d4,//2060-2069\n 0x052d0, 0x0a9b8, 0x0a950, 0x0b4a0, 0x0b6a6, 0x0ad50, 0x055a0, 0x0aba4, 0x0a5b0, 0x052b0,//2070-2079\n 0x0b273, 0x06930, 0x07337, 0x06aa0, 0x0ad50, 0x14b55, 0x04b60, 0x0a570, 0x054e4, 0x0d160,//2080-2089\n 0x0e968, 0x0d520, 0x0daa0, 0x16aa6, 0x056d0, 0x04ae0, 0x0a9d4, 0x0a4d0, 0x0d150, 0x0f252,//2090-2099\n 0x0d520];//2100;\n","/**\n * 公历每个月份的天数普通表\n * @Array Of Property\n * @return Number\n */\nexport default [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\n","/**\n * 天干地支之天干速查表\n * @Array Of Property trans['甲','乙','丙','丁','戊','己','庚','辛','壬','癸']\n * @return Cn string\n */\nexport default [\n '\\u7532',\n '\\u4e59',\n '\\u4e19',\n '\\u4e01',\n '\\u620a',\n '\\u5df1',\n '\\u5e9a',\n '\\u8f9b',\n '\\u58ec',\n '\\u7678'\n];\n","/**\n * 天干地支之地支速查表\n * @Array Of Property\n * @trans['子','丑','寅','卯','辰','巳','午','未','申','酉','戌','亥']\n * @return Cn string\n */\nexport default [\n '\\u5b50',\n '\\u4e11',\n '\\u5bc5',\n '\\u536f',\n '\\u8fb0',\n '\\u5df3',\n '\\u5348',\n '\\u672a',\n '\\u7533',\n '\\u9149',\n '\\u620c',\n '\\u4ea5'\n];\n","/**\n * 天干地支之地支速查表<=>生肖\n * @Array Of Property\n * @trans['鼠','牛','虎','兔','龙','蛇','马','羊','猴','鸡','狗','猪']\n * @return Cn string\n */\nexport default [\n '\\u9f20',\n '\\u725b',\n '\\u864e',\n '\\u5154',\n '\\u9f99',\n '\\u86c7',\n '\\u9a6c',\n '\\u7f8a',\n '\\u7334',\n '\\u9e21',\n '\\u72d7',\n '\\u732a'\n];\n","/**\n * 24节气速查表\n * @Array Of Property\n * @trans['小寒','大寒','立春','雨水','惊蛰','春分','清明','谷雨','立夏','小满','芒种','夏至','小暑','大暑','立秋','处暑','白露','秋分','寒露','霜降','立冬','小雪','大雪','冬至']\n * @return Cn string\n */\nexport default [\n '\\u5c0f\\u5bd2', '\\u5927\\u5bd2', '\\u7acb\\u6625', '\\u96e8\\u6c34', '\\u60ca\\u86f0', '\\u6625\\u5206', '\\u6e05\\u660e', '\\u8c37\\u96e8', '\\u7acb\\u590f', '\\u5c0f\\u6ee1', '\\u8292\\u79cd', '\\u590f\\u81f3', '\\u5c0f\\u6691', '\\u5927\\u6691', '\\u7acb\\u79cb', '\\u5904\\u6691', '\\u767d\\u9732', '\\u79cb\\u5206', '\\u5bd2\\u9732', '\\u971c\\u964d', '\\u7acb\\u51ac', '\\u5c0f\\u96ea', '\\u5927\\u96ea', '\\u51ac\\u81f3'\n];\n","/**\n * 1900-2100各年的24节气日期速查表\n * @Array Of Property\n * @return 0x string For splice\n */\nexport default [\n '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f',\n '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',\n '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f', 'b027097bd097c36b0b6fc9274c91aa',\n '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd0b06bdb0722c965ce1cfcc920f',\n 'b027097bd097c36b0b6fc9274c91aa', '9778397bd19801ec9210c965cc920e', '97b6b97bd19801ec95f8c965cc920f',\n '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd197c36c9210c9274c91aa',\n '97b6b97bd19801ec95f8c965cc920e', '97bd09801d98082c95f8e1cfcc920f', '97bd097bd097c36b0b6fc9210c8dc2',\n '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec95f8c965cc920e', '97bcf97c3598082c95f8e1cfcc920f',\n '97bd097bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e',\n '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',\n '97b6b97bd19801ec9210c965cc920e', '97bcf97c3598082c95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722',\n '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f',\n '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',\n '97bcf97c359801ec95f8c965cc920f', '97bd097bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',\n '97b6b97bd19801ec9210c965cc920e', '97bcf97c359801ec95f8c965cc920f', '97bd097bd07f595b0b6fc920fb0722',\n '9778397bd097c36b0b6fc9210c8dc2', '9778397bd19801ec9210c9274c920e', '97b6b97bd19801ec95f8c965cc920f',\n '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',\n '97b6b97bd19801ec95f8c965cc920f', '97bd07f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',\n '9778397bd097c36c9210c9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bd07f1487f595b0b0bc920fb0722',\n '7f0e397bd097c36b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',\n '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',\n '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',\n '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e', '97bcf7f1487f531b0b0bb0b6fb0722',\n '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b97bd19801ec9210c965cc920e',\n '97bcf7f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',\n '97b6b97bd19801ec9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',\n '9778397bd097c36b0b6fc9210c91aa', '97b6b97bd197c36c9210c9274c920e', '97bcf7f0e47f531b0b0bb0b6fb0722',\n '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '9778397bd097c36c9210c9274c920e',\n '97b6b7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c36b0b6fc9210c8dc2',\n '9778397bd097c36b0b70c9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',\n '7f0e397bd097c35b0b6fc9210c8dc2', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',\n '7f0e27f1487f595b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa',\n '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',\n '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',\n '7f0e397bd097c35b0b6fc920fb0722', '9778397bd097c36b0b6fc9274c91aa', '97b6b7f0e47f531b0723b0b6fb0721',\n '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9274c91aa',\n '97b6b7f0e47f531b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',\n '9778397bd097c36b0b6fc9210c91aa', '97b6b7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',\n '7f0e397bd07f595b0b0bc920fb0722', '9778397bd097c36b0b6fc9210c8dc2', '977837f0e37f149b0723b0787b0721',\n '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f5307f595b0b0bc920fb0722', '7f0e397bd097c35b0b6fc9210c8dc2',\n '977837f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e37f1487f595b0b0bb0b6fb0722',\n '7f0e397bd097c35b0b6fc9210c8dc2', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',\n '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722', '977837f0e37f14998082b0787b06bd',\n '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd097c35b0b6fc920fb0722',\n '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',\n '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',\n '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14998082b0787b06bd',\n '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0b0bb0b6fb0722', '7f0e397bd07f595b0b0bc920fb0722',\n '977837f0e37f14998082b0723b06bd', '7f07e7f0e37f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',\n '7f0e397bd07f595b0b0bc920fb0722', '977837f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b0721',\n '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f595b0b0bb0b6fb0722', '7f0e37f0e37f14898082b0723b02d5',\n '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e37f1487f531b0b0bb0b6fb0722',\n '7f0e37f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',\n '7f0e37f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',\n '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e37f14898082b072297c35',\n '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722',\n '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f149b0723b0787b0721',\n '7f0e27f1487f531b0b0bb0b6fb0722', '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14998082b0723b06bd',\n '7f07e7f0e47f149b0723b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722', '7f0e37f0e366aa89801eb072297c35',\n '7ec967f0e37f14998082b0723b06bd', '7f07e7f0e37f14998083b0787b0721', '7f0e27f0e47f531b0723b0b6fb0722',\n '7f0e37f0e366aa89801eb072297c35', '7ec967f0e37f14898082b0723b02d5', '7f07e7f0e37f14998082b0787b0721',\n '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66aa89801e9808297c35', '665f67f0e37f14898082b0723b02d5',\n '7ec967f0e37f14998082b0787b0721', '7f07e7f0e47f531b0723b0b6fb0722', '7f0e36665b66a449801e9808297c35',\n '665f67f0e37f14898082b0723b02d5', '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721',\n '7f0e36665b66a449801e9808297c35', '665f67f0e37f14898082b072297c35', '7ec967f0e37f14998082b0787b06bd',\n '7f07e7f0e47f531b0723b0b6fb0721', '7f0e26665b66a449801e9808297c35', '665f67f0e37f1489801eb072297c35',\n '7ec967f0e37f14998082b0787b06bd', '7f07e7f0e47f531b0723b0b6fb0721', '7f0e27f1487f531b0b0bb0b6fb0722'\n];\n","/**\n * 数字转中文速查表\n * @Array Of Property\n * @trans ['日','一','二','三','四','五','六','七','八','九','十']\n * @return Cn string\n */\nexport default [\n '\\u65e5',\n '\\u4e00',\n '\\u4e8c',\n '\\u4e09',\n '\\u56db',\n '\\u4e94',\n '\\u516d',\n '\\u4e03',\n '\\u516b',\n '\\u4e5d',\n '\\u5341'\n];\n","/**\n * 日期转农历称呼速查表\n * @Array Of Property\n * @trans ['初','十','廿','卅']\n * @return Cn string\n */\nexport default ['\\u521d', '\\u5341', '\\u5eff', '\\u5345'];\n","/**\n * 月份转农历称呼速查表\n * @Array Of Property\n * @trans ['正','一','二','三','四','五','六','七','八','九','十','冬','腊']\n * @return Cn string\n */\nexport default [\n '\\u6b63',\n '\\u4e8c',\n '\\u4e09',\n '\\u56db',\n '\\u4e94',\n '\\u516d',\n '\\u4e03',\n '\\u516b',\n '\\u4e5d',\n '\\u5341',\n '\\u51ac',\n '\\u814a'\n];\n","/**\n * 年份数字转中文速查表\n * @Array Of Property\n * @trans ['零','一','二','三','四','五','六','七','八','九','十']\n * @return Cn string\n */\nexport default [\n '\\u96f6',\n '\\u4e00',\n '\\u4e8c',\n '\\u4e09',\n '\\u56db',\n '\\u4e94',\n '\\u516d',\n '\\u4e03',\n '\\u516b',\n '\\u4e5d',\n '\\u5341'\n];\n","/**\n * @1900-2100区间内的公历、农历互转\n * @charset UTF-8\n * @author Ajing(JJonline@JJonline.Cn), Modernized by OpenCode\n * @Time 2014-7-21\n * @Version $ID$\n * @公历转农历:solarLunar.solar2lunar(1987,11,01); //[you can ignore params of prefix 0]\n * @农历转公历:solarLunar.lunar2solar(1987,09,10); //[you can ignore params of prefix 0]\n * @link http://blog.jjonline.cn/userInterFace/173.html\n */\n\nimport lunarInfo from '../const/lunarInfo.js';\nimport solarMonth from '../const/solarMonth.js';\nimport gan from '../const/gan.js';\nimport zhi from '../const/zhi.js';\nimport animals from '../const/animals.js';\nimport lunarTerm from '../const/lunarTerm.js';\nimport lTermInfo from '../const/lTermInfo.js';\nimport nStr1 from '../const/nStr1.js';\nimport nStr2 from '../const/nStr2.js';\nimport nStr3 from '../const/nStr3.js';\nimport nStr4 from '../const/nStr4.js';\n\nconst solarLunar = {\n lunarInfo,\n solarMonth,\n gan,\n zhi,\n animals,\n lunarTerm,\n lTermInfo,\n nStr1,\n nStr2,\n nStr3,\n nStr4,\n\n /**\n * 返回农历y年一整年的总天数\n * @param {number} y - lunar Year\n * @returns {number}\n * @eg:var count = solarLunar.lYearDays(1987) ;//count=387\n */\n lYearDays(y) {\n let sum = 348;\n const info = lunarInfo[y - 1900];\n // 优化:直接计算位数,减少循环\n sum += info & 0x8000 ? 1 : 0;\n sum += info & 0x4000 ? 1 : 0;\n sum += info & 0x2000 ? 1 : 0;\n sum += info & 0x1000 ? 1 : 0;\n sum += info & 0x0800 ? 1 : 0;\n sum += info & 0x0400 ? 1 : 0;\n sum += info & 0x0200 ? 1 : 0;\n sum += info & 0x0100 ? 1 : 0;\n sum += info & 0x0080 ? 1 : 0;\n sum += info & 0x0040 ? 1 : 0;\n sum += info & 0x0020 ? 1 : 0;\n sum += info & 0x0010 ? 1 : 0;\n return sum + solarLunar.leapDays(y);\n },\n\n /**\n * 返回农历y年闰月是哪个月;若y年没有闰月 则返回0\n * @param {number} y - lunar Year\n * @returns {number} (0-12)\n * @eg:var leapMonth = solarLunar.leapMonth(1987) ;//leapMonth=6\n */\n leapMonth(y) {\n //闰字编码 \\u95f0\n return lunarInfo[y - 1900] & 0xf;\n },\n\n /**\n * 返回农历y年闰月的天数 若该年没有闰月则返回0\n * @param {number} y - lunar Year\n * @returns {number} (0、29、30)\n * @eg:var leapMonthDay = solarLunar.leapDays(1987) ;//leapMonthDay=29\n */\n leapDays(y) {\n if (solarLunar.leapMonth(y)) {\n return lunarInfo[y - 1900] & 0x10000 ? 30 : 29;\n }\n return 0;\n },\n\n /**\n * 返回农历 y 年 m 月(非闰月)的总天数,计算 m 为闰月时的天数请使用 leapDays 方法\n * @param {number} y - lunar Year\n * @param {number} m - lunar Month\n * @returns {number} (-1、29、30)\n * @eg:var MonthDay = solarLunar.monthDays(1987,9) ;//MonthDay=29\n */\n monthDays(y, m) {\n if (m > 12 || m < 1) {\n return -1;\n } //月份参数从1至12,参数错误返回-1\n return lunarInfo[y - 1900] & (0x10000 >> m) ? 30 : 29;\n },\n\n /**\n * 获取时辰干支\n * @param {number} h - 公历小时 (0-23)\n * @param {number} dayGanIndex - 日干索引 (0-9),0=甲,1=乙,...,9=癸\n * @returns {string} 时辰干支,如 \"甲子\"\n * @eg:var shichen = solarLunar.getShiChen(23, 0); // 23:00 的子时,日干为甲时\n */\n getShiChen(h, dayGanIndex) {\n const hourZhiIndex = (h + 1) / 2 >= 24 ? 0 : Math.floor((h + 1) / 2) % 12;\n const hourGanIndex = (dayGanIndex * 2 + hourZhiIndex) % 10;\n return gan[hourGanIndex] + zhi[hourZhiIndex];\n },\n\n /**\n * 返回公历(!)y年m月的天数\n * @param {number} y - solar Year\n * @param {number} m - solar Month\n * @returns {number} (-1、28、29、30、31)\n * @eg:var solarMonthDay = solarLunar.solarDays(1987) ;//solarMonthDay=30\n */\n solarDays(y, m) {\n if (m > 12 || m < 1) {\n return -1;\n } //若参数错误 返回-1\n const ms = m - 1;\n if (ms === 1) {\n //2月份的闰平规律测算后确认返回28或29\n return (y % 4 === 0 && y % 100 !== 0) || y % 400 === 0 ? 29 : 28;\n } else {\n return solarMonth[ms];\n }\n },\n\n /**\n * 传入offset偏移量返回干支\n * @param {number} offset - 相对甲子的偏移量\n * @returns {string} Cn string\n */\n toGanZhi(offset) {\n return gan[offset % 10] + zhi[offset % 12];\n },\n\n /**\n * 传入公历(!) y 年获得该年第 n 个节气的公历日期\n * @param {number} y - 公历年(1900-2100);n二十四节气中的第几个节气(1~24);从n=1(小寒)算起\n * @param {number} n - 二十四节气中的第几个节气(1~24)\n * @returns {number}\n * @eg:var _24 = solarLunar.getTerm(1987,3) ;//_24=4;意即1987年2月4日立春\n */\n getTerm(y, n) {\n if (y < 1900 || y > 2100) {\n return -1;\n }\n if (n < 1 || n > 24) {\n return -1;\n }\n const _table = lTermInfo[y - 1900];\n const _info = [\n parseInt('0x' + _table.substr(0, 5)).toString(),\n parseInt('0x' + _table.substr(5, 5)).toString(),\n parseInt('0x' + _table.substr(10, 5)).toString(),\n parseInt('0x' + _table.substr(15, 5)).toString(),\n parseInt('0x' + _table.substr(20, 5)).toString(),\n parseInt('0x' + _table.substr(25, 5)).toString(),\n ];\n const _calDay = [\n _info[0].substr(0, 1),\n _info[0].substr(1, 2),\n _info[0].substr(3, 1),\n _info[0].substr(4, 2),\n\n _info[1].substr(0, 1),\n _info[1].substr(1, 2),\n _info[1].substr(3, 1),\n _info[1].substr(4, 2),\n\n _info[2].substr(0, 1),\n _info[2].substr(1, 2),\n _info[2].substr(3, 1),\n _info[2].substr(4, 2),\n\n _info[3].substr(0, 1),\n _info[3].substr(1, 2),\n _info[3].substr(3, 1),\n _info[3].substr(4, 2),\n\n _info[4].substr(0, 1),\n _info[4].substr(1, 2),\n _info[4].substr(3, 1),\n _info[4].substr(4, 2),\n\n _info[5].substr(0, 1),\n _info[5].substr(1, 2),\n _info[5].substr(3, 1),\n _info[5].substr(4, 2),\n ];\n return parseInt(_calDay[n - 1]);\n },\n\n /**\n * 传入农历年份数字返回汉语通俗表示法\n * @param {number} y - lunar year\n * @returns {string}\n * @eg:\n */\n toChinaYear(y) {\n //年 => \\u5E74\n const oxxx = Math.floor(y / 1000);\n const xoxx = Math.floor((y % 1000) / 100);\n const xxox = Math.floor((y % 100) / 10);\n const xxxo = y % 10;\n\n return nStr4[oxxx] + nStr4[xoxx] + nStr4[xxox] + nStr4[xxxo] + '\\u5E74';\n },\n\n /**\n * 传入农历数字月份返回汉语通俗表示法\n * @param {number} m - lunar month\n * @returns {string}\n * @eg:var cnMonth = solarLunar.toChinaMonth(12) ;//cnMonth='腊月'\n */\n toChinaMonth(m) {\n // 月 => \\u6708\n if (m > 12 || m < 1) {\n return -1;\n } //若参数错误 返回-1\n let s = nStr3[m - 1];\n s += '\\u6708'; //加上月字\n return s;\n },\n\n /**\n * 传入农历日期数字返回汉字表示法\n * @param {number} d - lunar day\n * @returns {string} Cn string\n * @eg:var cnDay = solarLunar.toChinaDay(21) ;//cnMonth='廿一'\n */\n toChinaDay(d) {\n //日 => \\u65e5\n let s = '';\n switch (d) {\n case 10:\n s = '\\u521d\\u5341';\n break;\n case 20:\n s = '\\u4e8c\\u5341';\n break;\n case 30:\n s = '\\u4e09\\u5341';\n break;\n default:\n s = nStr2[Math.floor(d / 10)];\n s += nStr1[d % 10];\n }\n return s;\n },\n\n /**\n * 年份转生肖 => 精确划分生肖分界线是\"立春\"\n * @param {number} y - year\n * @param {number} [m] - month (可选,用于精确计算)\n * @param {number} [d] - day (可选,用于精确计算)\n * @returns {string} Cn string\n * @eg:var animal = solarLunar.getAnimal(1987) ;//animal='兔'\n */\n getAnimal(y, m, d) {\n // 如果提供了月日参数,基于立春进行精确计算\n if (m !== undefined && d !== undefined) {\n const term3 = solarLunar.getTerm(y, 3); // 立春日期\n // 如果日期在立春之前,则生肖按上一年计算\n if (m < 2 || (m === 2 && d < term3)) {\n y = y - 1;\n }\n }\n return animals[(y - 4) % 12];\n },\n\n /**\n * 传入公历年月日获得详细的公历、农历object信息 <=>JSON\n * @param {number} y - solar year\n * @param {number} m - solar month\n * @param {number} d - solar day\n * @returns {object} JSON object\n * @eg:console.log(solarLunar.solar2lunar(1987,11,01));\n */\n solar2lunar(y, m, d) {\n //参数区间1900.1.31~2100.12.31\n // 输入验证\n if (y == null || m == null || d == null) {\n const objDate = new Date();\n y = objDate.getFullYear();\n m = objDate.getMonth() + 1;\n d = objDate.getDate();\n }\n\n // 类型转换和验证\n y = Number(y);\n m = Number(m);\n d = Number(d);\n\n if (isNaN(y) || isNaN(m) || isNaN(d)) {\n return -1;\n }\n\n if (y < 1900 || y > 2100) {\n return -1;\n } //年份限定、上限\n if (y === 1900 && m === 1 && d < 31) {\n return -1;\n } //下限\n\n // 验证月份和日期的有效性\n if (m < 1 || m > 12) {\n return -1;\n }\n const maxDay = solarLunar.solarDays(y, m);\n if (d < 1 || d > maxDay) {\n return -1;\n }\n\n const objDate = new Date(y, parseInt(m) - 1, d);\n let i,\n temp = 0;\n //修正ymd参数\n y = objDate.getFullYear();\n m = objDate.getMonth() + 1;\n d = objDate.getDate();\n let offset =\n (Date.UTC(objDate.getFullYear(), objDate.getMonth(), objDate.getDate()) -\n Date.UTC(1900, 0, 31)) /\n 86400000;\n\n // 使用原有的线性搜索算法以保持兼容性,但修复变量重声明问题\n temp = 0;\n for (i = 1900; i < 2101 && offset > 0; i++) {\n temp = solarLunar.lYearDays(i);\n offset -= temp;\n }\n if (offset < 0) {\n offset += temp;\n i--;\n }\n\n const finalYear = i;\n\n //是否今天\n const isTodayObj = new Date();\n let isToday = false;\n if (\n isTodayObj.getFullYear() === y &&\n isTodayObj.getMonth() + 1 === m &&\n isTodayObj.getDate() === d\n ) {\n isToday = true;\n }\n //星期几\n const nWeek = objDate.getDay();\n const cWeek = nStr1[nWeek];\n const nWeekAdjusted = nWeek === 0 ? 7 : nWeek; //数字表示周几顺应天朝周一开始的惯例\n\n //农历年\n const year = finalYear;\n\n const leapMonth = solarLunar.leapMonth(finalYear); //闰哪个月\n\n let isLeap = false;\n\n //效验闰月\n for (i = 1; i < 13 && offset > 0; i++) {\n //闰月\n if (leapMonth > 0 && i === leapMonth + 1 && isLeap === false) {\n --i;\n isLeap = true;\n temp = solarLunar.leapDays(year); //计算农历闰月天数\n } else {\n temp = solarLunar.monthDays(year, i); //计算农历普通月天数\n }\n //解除闰月\n if (isLeap === true && i === leapMonth + 1) {\n isLeap = false;\n }\n offset -= temp;\n }\n\n if (offset === 0 && leapMonth > 0 && i === leapMonth + 1) {\n if (isLeap) {\n isLeap = false;\n } else {\n isLeap = true;\n --i;\n }\n }\n if (offset < 0) {\n offset += temp;\n --i;\n }\n //农历月\n const month = i;\n //农历日\n const day = offset + 1;\n\n //天干地支处理\n // 注意:干支年以立春为分界线,这是中国传统历法\n // 立春通常在2月3-5日之间,立春之前出生的人,干支属上一年\n const sm = m - 1;\n const term3 = solarLunar.getTerm(y, 3); //该公历年立春日期\n let gzY = solarLunar.toGanZhi(y - 4); //普通按年份计算,下方尚需按立春节气来修正\n //依据立春日进行修正gzY\n // 立春通常在2月3-5日之间,如果日期早于立春,应按上一年计算\n if (m < 2 || (m === 2 && d < term3)) {\n gzY = solarLunar.toGanZhi(y - 1 - 4);\n }\n\n //月柱 1900年1月小寒以前为 丙子月(60进制12)\n const firstNode = solarLunar.getTerm(y, m * 2 - 1); //返回当月「节」为几日开始\n const secondNode = solarLunar.getTerm(y, m * 2); //返回当月「节」为几日开始\n\n //依据12节气修正干支月\n // 使用原始的正确算法:年干支索引*12 + 月份 + 偏移\n let gzM = solarLunar.toGanZhi((y - 1900) * 12 + m + 11);\n if (d >= firstNode) {\n gzM = solarLunar.toGanZhi((y - 1900) * 12 + m + 12);\n }\n\n //传入的日期的节气与否\n let isTerm = false;\n let term = '';\n if (firstNode === d) {\n isTerm = true;\n term = lunarTerm[m * 2 - 2];\n }\n if (secondNode === d) {\n isTerm = true;\n term = lunarTerm[m * 2 - 1];\n }\n //日柱 当月一日与 1900/1/1 相差天数\n const dayCyclical = Date.UTC(y, sm, 1, 0, 0, 0, 0) / 86400000 + 25567 + 10;\n const gzD = solarLunar.toGanZhi(dayCyclical + d - 1);\n return {\n lYear: year,\n lMonth: month,\n lDay: day,\n animal: solarLunar.getAnimal(year),\n yearCn: solarLunar.toChinaYear(year),\n monthCn: (isLeap && leapMonth === month ? '\\u95f0' : '') + solarLunar.toChinaMonth(month),\n dayCn: solarLunar.toChinaDay(day),\n cYear: y,\n cMonth: m,\n cDay: d,\n gzYear: gzY,\n gzMonth: gzM,\n gzDay: gzD,\n isToday,\n isLeap,\n nWeek: nWeekAdjusted, //数字表示周几顺应天朝周一开始的惯例\n ncWeek: '\\u661f\\u671f' + cWeek,\n isTerm,\n term,\n };\n },\n\n /**\n * 传入公历年月日以及传入的月份是否闰月获得详细的公历、农历object信息 <=>JSON\n * @param {number} y - lunar year\n * @param {number} m - lunar month\n * @param {number} d - lunar day\n * @param {boolean} isLeapMonth - lunar month is leap or not.\n * @returns {object} JSON object\n * @eg:console.log(solarLunar.lunar2solar(1987,9,10));\n */\n lunar2solar(y, m, d, isLeapMonth) {\n //参数区间1900.1.31~2100.12.1\n // 输入验证\n y = Number(y);\n m = Number(m);\n d = Number(d);\n isLeapMonth = Boolean(isLeapMonth); // 确保是布尔值\n\n if (isNaN(y) || isNaN(m) || isNaN(d)) {\n return -1;\n }\n const leapMonth = solarLunar.leapMonth(y);\n if (isLeapMonth && leapMonth !== m) {\n return -1;\n } //传参要求计算该闰月公历 但该年得出的闰月与传参的月份并不同\n if ((y === 2100 && m === 12 && d > 1) || (y === 1900 && m === 1 && d < 31)) {\n return -1;\n } //超出了最大极限值\n const day = solarLunar.monthDays(y, m);\n if (y < 1900 || y > 2100 || d > day) {\n return -1;\n } //参数合法性效验\n\n //计算农历的时间差\n let offset = 0;\n for (let i = 1900; i < y; i++) {\n offset += solarLunar.lYearDays(i);\n }\n let leap = 0,\n isAdd = false;\n for (let i = 1; i < m; i++) {\n leap = solarLunar.leapMonth(y);\n if (!isAdd) {\n //处理闰月\n if (leap <= i && leap > 0) {\n offset += solarLunar.leapDays(y);\n isAdd = true;\n }\n }\n offset += solarLunar.monthDays(y, i);\n }\n //转换闰月农历 需补充该年闰月的前一个月的时差\n if (isLeapMonth) {\n offset += day;\n }\n //1900年农历正月一日的公历时间为1900年1月30日0时0分0秒(该时间也是本农历的最开始起始点)\n const stmap = Date.UTC(1900, 1, 30, 0, 0, 0);\n const calObj = new Date((offset + d - 31) * 86400000 + stmap);\n const cY = calObj.getUTCFullYear();\n const cM = calObj.getUTCMonth() + 1;\n const cD = calObj.getUTCDate();\n\n return solarLunar.solar2lunar(cY, cM, cD);\n },\n\n /**\n * 获取指定日期的传统节日\n * @param {number} year - 公历年\n * @param {number} month - 公历月\n * @param {number} day - 公历日\n * @returns {string[]} 传统节日数组\n */\n getFestivals(year, month, day) {\n const festivals = [];\n const lunar = solarLunar.solar2lunar(year, month, day);\n if (lunar === -1) return festivals;\n\n const { lMonth, lDay } = lunar;\n\n const fixedFestivals = {\n '1-1': '春节',\n '1-15': '元宵节',\n '5-5': '端午节',\n '7-7': '七夕节',\n '8-15': '中秋节',\n '9-9': '重阳节',\n '12-8': '腊八节',\n '12-23': '小年',\n };\n\n const key = `${lMonth}-${lDay}`;\n if (fixedFestivals[key]) {\n festivals.push(fixedFestivals[key]);\n }\n\n if (lMonth === 1 && lDay === 1) {\n festivals.push('农历新年');\n }\n\n if (solarLunar.customFestivals) {\n solarLunar.customFestivals.forEach((f) => {\n if (f.month === lMonth && f.day === lDay) {\n festivals.push(f.name);\n }\n });\n }\n\n return festivals;\n },\n\n /**\n * 添加自定义农历节日\n * @param {string} name - 节日名称\n * @param {number} month - 农历月\n * @param {number} day - 农历日\n */\n addFestival(name, month, day) {\n if (!solarLunar.customFestivals) {\n solarLunar.customFestivals = [];\n }\n solarLunar.customFestivals.push({ name, month, day });\n },\n\n /**\n * 清除所有自定义节日\n */\n clearFestivals() {\n solarLunar.customFestivals = [];\n },\n};\n\nexport default solarLunar;\n"],"names":[],"mappings":";;;;AAAA;AACA;AACA;AACA;AACA,gBAAe,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AACxG,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO;AAC1F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,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE,gCAAgC;AACtG,EAAE,gCAAgC,EAAE,gCAAgC,EAAE;AACtE,CAAC;;ACzED;AACA;AACA;AACA;AACA;AACA;AACA,YAAe;AACf,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE;AACF,CAAC;;AClBD;AACA;AACA;AACA;AACA;AACA;AACA,YAAe,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;;ACNvD;AACA;AACA;AACA;AACA;AACA;AACA,YAAe;AACf,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE;AACF,CAAC;;ACnBD;AACA;AACA;AACA;AACA;AACA;AACA,YAAe;AACf,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE,QAAQ;AACV,EAAE;AACF,CAAC;;AClBD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAcK,MAAC,UAAU,GAAG;AACnB,EAAE,SAAS;AACX,EAAE,UAAU;AACZ,EAAE,GAAG;AACL,EAAE,GAAG;AACL,EAAE,OAAO;AACT,EAAE,SAAS;AACX,EAAE,SAAS;AACX,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;AACP,EAAE,KAAK;;AAEP;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,CAAC,EAAE;AACf,IAAI,IAAI,GAAG,GAAG,GAAG;AACjB,IAAI,MAAM,IAAI,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;AACpC;AACA,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,GAAG,IAAI,IAAI,GAAG,MAAM,GAAG,CAAC,GAAG,CAAC;AAChC,IAAI,OAAO,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvC,EAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,CAAC,EAAE;AACf;AACA,IAAI,OAAO,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG;AACpC,EAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,CAAC,EAAE;AACd,IAAI,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE;AACjC,MAAM,OAAO,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,OAAO,GAAG,EAAE,GAAG,EAAE;AACpD,IAAI;AACJ,IAAI,OAAO,CAAC;AACZ,EAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AACzB,MAAM,OAAO,EAAE;AACf,IAAI,CAAC;AACL,IAAI,OAAO,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC,IAAI,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE;AACzD,EAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,UAAU,CAAC,CAAC,EAAE,WAAW,EAAE;AAC7B,IAAI,MAAM,YAAY,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE;AAC7E,IAAI,MAAM,YAAY,GAAG,CAAC,WAAW,GAAG,CAAC,GAAG,YAAY,IAAI,EAAE;AAC9D,IAAI,OAAO,GAAG,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,YAAY,CAAC;AAChD,EAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,SAAS,CAAC,CAAC,EAAE,CAAC,EAAE;AAClB,IAAI,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,EAAE;AACzB,MAAM,OAAO,EAAE;AACf,IAAI,CAAC;AACL,IAAI,MAAM,EAAE,GAAG,CAAC,GAAG,CAAC;AACpB,IAAI,IAAI,EAAE,KAAK,CAAC,EAAE;AAClB;AACA,MAAM,OAAO,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE;AACtE,IAAI,CAAC,MAAM;AACX,MAAM,OAAO,UAAU,CAAC,EAAE,CAAC;AAC3B,IAAI;AACJ,EAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA,EAAE,QAAQ,CAAC,MAAM,EAAE;AACnB,IAAI,OAAO,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC;AAC9C,EAAE,CAAC;;AAEH;AACA;AACA;AACA;AACA;AACA;AACA;AACA,EAAE,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE;AAChB,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE;AAC9B,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE;AACzB,MAAM,OAAO,EAAE;AACf,IAAI;AACJ,IAAI,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,GAAG,IAAI,CAAC;AACtC,IAAI,MAAM,KAAK,GAAG;AAClB,MAAM,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AACrD,MAAM,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AACrD,MAAM,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AACtD,MAAM,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AACtD,MAAM,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AACtD,MAAM,QAAQ,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;AACtD,KAAK;AACL,IAAI,MAAM,OAAO,GAAG;AACpB,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;AAE3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;AAE3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;AAE3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;AAE3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;;AAE3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;AAC3B,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC;A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