@aharris02/bazi-calculator-by-alvamind
Version:
A fork of alvamind's comprehensive Bazi calculator for personal use
1,196 lines (1,191 loc) • 380 kB
JavaScript
"use strict";
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var index_exports = {};
__export(index_exports, {
BaziCalculator: () => BaziCalculator
});
module.exports = __toCommonJS(index_exports);
// src/constants.ts
var HEAVENLY_STEMS_DATA = [
{ name: "Yang Wood", value: 1, character: "\u7532", spelling: "jia", elementType: "WOOD", yinYang: "Yang" },
{ name: "Yin Wood", value: 2, character: "\u4E59", spelling: "yi", elementType: "WOOD", yinYang: "Yin" },
{ name: "Yang Fire", value: 3, character: "\u4E19", spelling: "bing", elementType: "FIRE", yinYang: "Yang" },
{ name: "Yin Fire", value: 4, character: "\u4E01", spelling: "ding", elementType: "FIRE", yinYang: "Yin" },
{ name: "Yang Earth", value: 5, character: "\u620A", spelling: "wu", elementType: "EARTH", yinYang: "Yang" },
{ name: "Yin Earth", value: 6, character: "\u5DF1", spelling: "ji", elementType: "EARTH", yinYang: "Yin" },
{ name: "Yang Metal", value: 7, character: "\u5E9A", spelling: "geng", elementType: "METAL", yinYang: "Yang" },
{ name: "Yin Metal", value: 8, character: "\u8F9B", spelling: "xin", elementType: "METAL", yinYang: "Yin" },
{ name: "Yang Water", value: 9, character: "\u58EC", spelling: "ren", elementType: "WATER", yinYang: "Yang" },
{ name: "Yin Water", value: 10, character: "\u7678", spelling: "gui", elementType: "WATER", yinYang: "Yin" }
];
var getStem = (char) => HEAVENLY_STEMS_DATA.find((s) => s.character === char);
var HIDDEN_STEMS_CHARS = {
\u5B50: ["\u7678"],
\u4E11: ["\u5DF1", "\u7678", "\u8F9B"],
\u5BC5: ["\u7532", "\u4E19", "\u620A"],
\u536F: ["\u4E59"],
\u8FB0: ["\u620A", "\u4E59", "\u7678"],
\u5DF3: ["\u4E19", "\u5E9A", "\u620A"],
\u5348: ["\u4E01", "\u5DF1"],
\u672A: ["\u5DF1", "\u4E01", "\u4E59"],
\u7533: ["\u5E9A", "\u58EC", "\u620A"],
\u9149: ["\u8F9B"],
\u620C: ["\u620A", "\u8F9B", "\u4E01"],
\u4EA5: ["\u58EC", "\u7532"]
};
var getHiddenStemsObjects = (branchChar) => (HIDDEN_STEMS_CHARS[branchChar] || []).map((char) => getStem(char)).filter((s) => s !== void 0);
var EARTHLY_BRANCHES_DATA = [
{ name: "Rat", value: 1, character: "\u5B50", spelling: "zi", elementType: "WATER", animal: "Rat", hiddenStems: getHiddenStemsObjects("\u5B50"), yinYang: "Yang" },
{ name: "Ox", value: 2, character: "\u4E11", spelling: "chou", elementType: "EARTH", animal: "Ox", hiddenStems: getHiddenStemsObjects("\u4E11"), yinYang: "Yin" },
{ name: "Tiger", value: 3, character: "\u5BC5", spelling: "yin", elementType: "WOOD", animal: "Tiger", hiddenStems: getHiddenStemsObjects("\u5BC5"), yinYang: "Yang" },
{ name: "Rabbit", value: 4, character: "\u536F", spelling: "mao", elementType: "WOOD", animal: "Rabbit", hiddenStems: getHiddenStemsObjects("\u536F"), yinYang: "Yin" },
{ name: "Dragon", value: 5, character: "\u8FB0", spelling: "chen", elementType: "EARTH", animal: "Dragon", hiddenStems: getHiddenStemsObjects("\u8FB0"), yinYang: "Yang" },
{ name: "Snake", value: 6, character: "\u5DF3", spelling: "si", elementType: "FIRE", animal: "Snake", hiddenStems: getHiddenStemsObjects("\u5DF3"), yinYang: "Yin" },
{ name: "Horse", value: 7, character: "\u5348", spelling: "wu", elementType: "FIRE", animal: "Horse", hiddenStems: getHiddenStemsObjects("\u5348"), yinYang: "Yang" },
{ name: "Goat", value: 8, character: "\u672A", spelling: "wei", elementType: "EARTH", animal: "Goat", hiddenStems: getHiddenStemsObjects("\u672A"), yinYang: "Yin" },
{ name: "Monkey", value: 9, character: "\u7533", spelling: "shen", elementType: "METAL", animal: "Monkey", hiddenStems: getHiddenStemsObjects("\u7533"), yinYang: "Yang" },
{ name: "Rooster", value: 10, character: "\u9149", spelling: "you", elementType: "METAL", animal: "Rooster", hiddenStems: getHiddenStemsObjects("\u9149"), yinYang: "Yin" },
{ name: "Dog", value: 11, character: "\u620C", spelling: "xu", elementType: "EARTH", animal: "Dog", hiddenStems: getHiddenStemsObjects("\u620C"), yinYang: "Yang" },
{ name: "Pig", value: 12, character: "\u4EA5", spelling: "hai", elementType: "WATER", animal: "Pig", hiddenStems: getHiddenStemsObjects("\u4EA5"), yinYang: "Yin" }
];
var GO_BRANCH_VALUE_MAP = {
1: 3,
2: 4,
3: 5,
4: 6,
5: 7,
6: 8,
7: 9,
8: 10,
9: 11,
10: 12,
11: 1,
12: 2
};
var goBranchValueToStandard = (goValue) => GO_BRANCH_VALUE_MAP[goValue] || 0;
var STANDARD_TO_GO_BRANCH_MAP = Object.entries(GO_BRANCH_VALUE_MAP).reduce((acc, [key, val]) => {
acc[val] = parseInt(key);
return acc;
}, {});
var standardBranchValueToGo = (standardValue) => STANDARD_TO_GO_BRANCH_MAP[standardValue] || 0;
var NA_YIN_MAP = {
"Yang Wood Rat": { name: "Sea metal", element: "Metal", value: 4 },
"Yin Wood Ox": { name: "Sea metal", element: "Metal", value: 4 },
"Yang Fire Tiger": { name: "Furnace fire", element: "Fire", value: 2 },
"Yin Fire Rabbit": { name: "Furnace fire", element: "Fire", value: 2 },
"Yang Earth Dragon": { name: "Forest wood", element: "Wood", value: 3 },
"Yin Earth Snake": { name: "Forest wood", element: "Wood", value: 3 },
"Yang Metal Horse": { name: "Road earth", element: "Earth", value: 5 },
"Yin Metal Goat": { name: "Road earth", element: "Earth", value: 5 },
"Yang Water Monkey": { name: "Sword metal", element: "Metal", value: 4 },
"Yin Water Rooster": { name: "Sword metal", element: "Metal", value: 4 },
"Yang Wood Dog": { name: "Volcanic fire", element: "Fire", value: 2 },
"Yin Wood Pig": { name: "Volcanic fire", element: "Fire", value: 2 },
"Yang Fire Rat": { name: "Cave water", element: "Water", value: 1 },
"Yin Fire Ox": { name: "Cave water", element: "Water", value: 1 },
"Yang Earth Tiger": { name: "Fortress earth", element: "Earth", value: 5 },
"Yin Earth Rabbit": { name: "Fortress earth", element: "Earth", value: 5 },
"Yang Metal Dragon": { name: "Wax metal", element: "Metal", value: 4 },
"Yin Metal Snake": { name: "Wax metal", element: "Metal", value: 4 },
"Yang Water Horse": { name: "Willow wood", element: "Wood", value: 3 },
// Go: Willow Tree Wood
"Yin Water Goat": { name: "Willow wood", element: "Wood", value: 3 },
// Go: Willow Tree Wood
"Yang Wood Monkey": { name: "Stream water", element: "Water", value: 1 },
"Yin Wood Rooster": { name: "Stream water", element: "Water", value: 1 },
"Yang Fire Dog": { name: "Roof tiles earth", element: "Earth", value: 5 },
// Go: Earth on the Roof
"Yin Fire Pig": { name: "Roof tiles earth", element: "Earth", value: 5 },
// Go: Earth on the Roof
"Yang Earth Rat": { name: "Lightning fire", element: "Fire", value: 2 },
"Yin Earth Ox": { name: "Lightning fire", element: "Fire", value: 2 },
"Yang Metal Tiger": { name: "Conifer wood", element: "Wood", value: 3 },
"Yin Metal Rabbit": { name: "Conifer wood", element: "Wood", value: 3 },
"Yang Water Dragon": { name: "River water", element: "Water", value: 1 },
"Yin Water Snake": { name: "River water", element: "Water", value: 1 },
"Yang Wood Horse": { name: "Sand metal", element: "Metal", value: 4 },
"Yin Wood Goat": { name: "Sand metal", element: "Metal", value: 4 },
"Yang Fire Monkey": { name: "Forest fire", element: "Fire", value: 2 },
// Go: Fire on the Mountain
"Yin Fire Rooster": { name: "Forest fire", element: "Fire", value: 2 },
// Go: Fire on the Mountain
"Yang Earth Dog": { name: "Meadow wood", element: "Wood", value: 3 },
"Yin Earth Pig": { name: "Meadow wood", element: "Wood", value: 3 },
"Yang Metal Rat": { name: "Adobe earth", element: "Earth", value: 5 },
"Yin Metal Ox": { name: "Adobe earth", element: "Earth", value: 5 },
"Yang Water Tiger": { name: "Precious metal", element: "Metal", value: 4 },
"Yin Water Rabbit": { name: "Precious metal", element: "Metal", value: 4 },
"Yang Wood Dragon": { name: "Lamp fire", element: "Fire", value: 2 },
"Yin Wood Snake": { name: "Lamp fire", element: "Fire", value: 2 },
"Yang Fire Horse": { name: "Sky water", element: "Water", value: 1 },
"Yin Fire Goat": { name: "Sky water", element: "Water", value: 1 },
"Yang Earth Monkey": { name: "Highway earth", element: "Earth", value: 5 },
// Go: Earth on the Roadside
"Yin Earth Rooster": { name: "Highway earth", element: "Earth", value: 5 },
// Go: Earth on the Roadside
"Yang Metal Dog": { name: "Jewellery metal", element: "Metal", value: 4 },
"Yin Metal Pig": { name: "Jewellery metal", element: "Metal", value: 4 },
"Yang Water Rat": { name: "Mulberry wood", element: "Wood", value: 3 },
"Yin Water Ox": { name: "Mulberry wood", element: "Wood", value: 3 },
"Yang Wood Tiger": { name: "Rapids water", element: "Water", value: 1 },
"Yin Wood Rabbit": { name: "Rapids water", element: "Water", value: 1 },
"Yang Fire Dragon": { name: "Desert earth", element: "Earth", value: 5 },
"Yin Fire Snake": { name: "Desert earth", element: "Earth", value: 5 },
"Yang Earth Horse": { name: "Sun fire", element: "Fire", value: 2 },
"Yin Earth Goat": { name: "Sun fire", element: "Fire", value: 2 },
"Yang Metal Monkey": { name: "Pomegranate wood", element: "Wood", value: 3 },
"Yin Metal Rooster": { name: "Pomegranate wood", element: "Wood", value: 3 },
"Yang Water Dog": { name: "Ocean water", element: "Water", value: 1 },
"Yin Water Pig": { name: "Ocean water", element: "Water", value: 1 }
// Add aliases from Go if needed for consistency (e.g., "Earth on the Roof")
// It's better to keep one canonical name if possible.
};
var HOUR_MAP = [
[23, 1, "\u5B50"],
[1, 3, "\u4E11"],
[3, 5, "\u5BC5"],
[5, 7, "\u536F"],
[7, 9, "\u8FB0"],
[9, 11, "\u5DF3"],
[11, 13, "\u5348"],
[13, 15, "\u672A"],
[15, 17, "\u7533"],
[17, 19, "\u9149"],
[19, 21, "\u620C"],
[21, 23, "\u4EA5"]
];
var ELEMENT_RELATIONSHIPS = {
WOOD: { WATER: "Resource", WOOD: "Companion", FIRE: "Output", EARTH: "Wealth", METAL: "Control" },
FIRE: { WOOD: "Resource", FIRE: "Companion", EARTH: "Output", METAL: "Wealth", WATER: "Control" },
EARTH: { FIRE: "Resource", EARTH: "Companion", METAL: "Output", WATER: "Wealth", WOOD: "Control" },
METAL: { EARTH: "Resource", METAL: "Companion", WATER: "Output", WOOD: "Wealth", FIRE: "Control" },
WATER: { METAL: "Resource", WATER: "Companion", WOOD: "Output", FIRE: "Wealth", EARTH: "Control" }
};
var RELATIONSHIP_WEIGHTS = {
"Resource": 3,
"Companion": 2.5,
"Output": 2,
"Wealth": 1.2,
"Control": 1.2
};
var NOBLEMAN_MAP = {
"\u7532": ["\u4E11", "\u672A"],
"\u4E59": ["\u5B50", "\u7533"],
"\u4E19": ["\u4EA5", "\u9149"],
"\u4E01": ["\u4EA5", "\u9149"],
"\u620A": ["\u4E11", "\u672A"],
"\u5DF1": ["\u5B50", "\u7533"],
"\u5E9A": ["\u4E11", "\u672A"],
"\u8F9B": ["\u5BC5", "\u5348"],
"\u58EC": ["\u5DF3", "\u536F"],
"\u7678": ["\u5DF3", "\u536F"]
};
var INTELLIGENCE_MAP = {
"\u7532": "\u5DF3",
"\u4E59": "\u5348",
"\u4E19": "\u7533",
"\u4E01": "\u9149",
"\u620A": "\u7533",
"\u5DF1": "\u9149",
"\u5E9A": "\u4EA5",
"\u8F9B": "\u5B50",
"\u58EC": "\u5BC5",
"\u7678": "\u536F"
};
var PEACH_BLOSSOM_MAP = {
"\u5BC5": "\u536F",
"\u5348": "\u536F",
"\u620C": "\u536F",
// Tiger, Horse, Dog -> Rabbit
"\u5DF3": "\u5348",
"\u9149": "\u5348",
"\u4E11": "\u5348",
// Snake, Rooster, Ox -> Horse
"\u7533": "\u9149",
"\u5B50": "\u9149",
"\u8FB0": "\u9149",
// Monkey, Rat, Dragon -> Rooster
"\u4EA5": "\u5B50",
"\u536F": "\u5B50",
"\u672A": "\u5B50"
// Pig, Rabbit, Goat -> Rat
};
var SKY_HORSE_MAP = {
"\u4EA5": "\u5DF3",
"\u536F": "\u5DF3",
"\u672A": "\u5DF3",
"\u5DF3": "\u4EA5",
"\u9149": "\u4EA5",
"\u4E11": "\u4EA5",
"\u5BC5": "\u7533",
"\u5348": "\u7533",
"\u620C": "\u7533",
"\u7533": "\u5BC5",
"\u5B50": "\u5BC5",
"\u8FB0": "\u5BC5"
};
var LIFE_CYCLE_NAMES = {
1: "Birth",
2: "Bath",
3: "Youth",
4: "Thriving",
5: "Prosperous",
6: "Weakening",
7: "Sick",
8: "Death",
9: "Grave",
10: "Extinction",
11: "Conceived",
12: "Nourishing"
};
var GUA_DIRECTIONS = {
1: { lucky: ["SE", "E", "S", "N"], unlucky: ["NW", "W", "SW", "NE"] },
// Kan
2: { lucky: ["NE", "W", "NW", "SW"], unlucky: ["E", "SE", "S", "N"] },
// Kun
3: { lucky: ["S", "N", "SE", "E"], unlucky: ["SW", "NW", "W", "NE"] },
// Zhen
4: { lucky: ["N", "S", "E", "SE"], unlucky: ["NE", "SW", "NW", "W"] },
// Xun
6: { lucky: ["W", "NE", "SW", "NW"], unlucky: ["S", "E", "N", "SE"] },
// Qian
7: { lucky: ["NW", "SW", "NE", "W"], unlucky: ["E", "S", "SE", "N"] },
// Dui
8: { lucky: ["SW", "NW", "W", "NE"], unlucky: ["N", "SE", "E", "S"] },
// Gen
9: { lucky: ["E", "SE", "N", "S"], unlucky: ["W", "NE", "SW", "NW"] }
// Li
};
var GUA_GROUPS = {
1: "East",
2: "West",
3: "East",
4: "East",
6: "West",
7: "West",
8: "West",
9: "East"
};
var SOLAR_TERM_KEYS = {
MinorCold: "minor_cold",
MajorCold: "major_cold",
StartOfSpring: "start_of_spring",
SpringShowers: "spring_showers",
AwakeningOfInsects: "awakening_of_insects",
SpringEquinox: "spring_equinox",
PureBrightness: "pure_brightness",
GrainRain: "grain_rain",
StartOfSummer: "start_of_summer",
GrainBuds: "grain_buds",
GrainInEar: "grain_in_ear",
SummerSolstice: "summer_solstice",
MinorHeat: "minor_heat",
MajorHeat: "major_heat",
StartOfAutumn: "start_of_autumn",
EndOfHeat: "end_of_heat",
WhiteDew: "white_dew",
AutumnEquinox: "autumn_equivox",
ColdDew: "cold_dew",
Frost: "frost",
StartOfWinter: "start_of_winter",
MinorSnow: "minor_snow",
MajorSnow: "major_snow",
WinterSolstice: "winter_solstice"
};
var INITIAL_SOLAR_TERMS = [
SOLAR_TERM_KEYS.MinorCold,
SOLAR_TERM_KEYS.StartOfSpring,
SOLAR_TERM_KEYS.AwakeningOfInsects,
SOLAR_TERM_KEYS.PureBrightness,
SOLAR_TERM_KEYS.StartOfSummer,
SOLAR_TERM_KEYS.GrainInEar,
SOLAR_TERM_KEYS.MinorHeat,
SOLAR_TERM_KEYS.StartOfAutumn,
SOLAR_TERM_KEYS.WhiteDew,
SOLAR_TERM_KEYS.ColdDew,
SOLAR_TERM_KEYS.StartOfWinter,
SOLAR_TERM_KEYS.MajorSnow
];
var makePairKey = (el1, el2) => {
return [el1, el2].sort((a, b) => a.localeCompare(b)).join("");
};
var STEM_5_COMBINATIONS = [
["\u7532", "\u5DF1"],
["\u4E59", "\u5E9A"],
["\u4E19", "\u8F9B"],
["\u4E01", "\u58EC"],
["\u620A", "\u7678"]
];
var STEM_5_TRANSFORMATIONS = {
[makePairKey("\u7532", "\u5DF1")]: "EARTH",
[makePairKey("\u4E59", "\u5E9A")]: "METAL",
[makePairKey("\u4E19", "\u8F9B")]: "WATER",
[makePairKey("\u4E01", "\u58EC")]: "WOOD",
[makePairKey("\u620A", "\u7678")]: "FIRE"
};
var STEM_CLASHES = [
["\u7532", "\u5E9A"],
["\u4E59", "\u8F9B"],
["\u4E19", "\u58EC"],
["\u4E01", "\u7678"],
["\u620A", "\u58EC"],
["\u5DF1", "\u7678"]
// These are often considered oppositions/clashes
];
var BRANCH_6_COMBINATIONS = [
["\u5B50", "\u4E11"],
["\u5BC5", "\u4EA5"],
["\u536F", "\u620C"],
["\u8FB0", "\u9149"],
["\u5DF3", "\u7533"],
["\u5348", "\u672A"]
];
var BRANCH_6_TRANSFORMATIONS = {
"\u5B50\u4E11": "EARTH",
"\u4EA5\u5BC5": "WOOD",
"\u536F\u620C": "FIRE",
"\u8FB0\u9149": "METAL",
"\u5DF3\u7533": "WATER",
"\u5348\u672A": "FIRE"
// Note: Can also be Earth depending on context, FIRE is a common default
};
var BRANCH_TRINITY_COMBINATIONS = [
{ element: "WATER", branches: ["\u7533", "\u5B50", "\u8FB0"] },
// Monkey, Rat, Dragon
{ element: "WOOD", branches: ["\u4EA5", "\u536F", "\u672A"] },
// Pig, Rabbit, Goat
{ element: "FIRE", branches: ["\u5BC5", "\u5348", "\u620C"] },
// Tiger, Horse, Dog
{ element: "METAL", branches: ["\u5DF3", "\u9149", "\u4E11"] }
// Snake, Rooster, Ox
];
var BRANCH_DIRECTIONAL_COMBINATIONS = [
{ element: "WOOD", branches: ["\u5BC5", "\u536F", "\u8FB0"] },
// Spring: Tiger, Rabbit, Dragon
{ element: "FIRE", branches: ["\u5DF3", "\u5348", "\u672A"] },
// Summer: Snake, Horse, Goat
{ element: "METAL", branches: ["\u7533", "\u9149", "\u620C"] },
// Autumn: Monkey, Rooster, Dog
{ element: "WATER", branches: ["\u4EA5", "\u5B50", "\u4E11"] }
// Winter: Pig, Rat, Ox
];
var BRANCH_CLASHES = [
["\u5B50", "\u5348"],
["\u4E11", "\u672A"],
["\u5BC5", "\u7533"],
["\u536F", "\u9149"],
["\u8FB0", "\u620C"],
["\u5DF3", "\u4EA5"]
];
var BRANCH_HARMS = [
["\u5B50", "\u672A"],
["\u4E11", "\u5348"],
["\u5BC5", "\u5DF3"],
["\u536F", "\u8FB0"],
["\u7533", "\u4EA5"],
["\u9149", "\u620C"]
];
var BRANCH_PUNISHMENTS = [
// Ungrateful Punishment (丑-戌, 戌-未, 未-丑) - Requires 2 or 3
{ type: "Ungrateful", branches: ["\u4E11", "\u620C", "\u672A"], description: "Ungrateful Punishment (Requires \u4E11-\u620C, \u620C-\u672A, or \u672A-\u4E11; full if all 3)", minRequired: 2 },
// Bullying Punishment (寅-巳, 巳-申, 申-寅) - Requires 2 or 3
{ type: "Bullying", branches: ["\u5BC5", "\u5DF3", "\u7533"], description: "Bullying Punishment (Requires \u5BC5-\u5DF3, \u5DF3-\u7533, or \u7533-\u5BC5; full if all 3)", minRequired: 2 },
// Uncivilized Punishment (子-卯) - Requires both
{ type: "Uncivilized", branches: ["\u5B50", "\u536F"], description: "Uncivilized Punishment (Requires \u5B50+\u536F)", minRequired: 2 },
// Self Punishment (辰-辰, 午-午, 酉-酉, 亥-亥, 卯-卯) - Requires 2 of the same
{ type: "Self", branches: ["\u8FB0"], description: "Self Punishment (Requires \u8FB0+\u8FB0)" },
{ type: "Self", branches: ["\u5348"], description: "Self Punishment (Requires \u5348+\u5348)" },
{ type: "Self", branches: ["\u9149"], description: "Self Punishment (Requires \u9149+\u9149)" },
{ type: "Self", branches: ["\u4EA5"], description: "Self Punishment (Requires \u4EA5+\u4EA5)" },
{ type: "Self", branches: ["\u536F"], description: "Self Punishment (Requires \u536F+\u536F)" }
// <<< ENSURE THIS IS PRESENT
];
var BRANCH_DESTRUCTIONS = [
["\u5B50", "\u9149"],
["\u536F", "\u5348"],
["\u8FB0", "\u4E11"],
["\u5DF3", "\u7533"],
["\u672A", "\u620C"],
["\u5BC5", "\u4EA5"]
];
// src/utils/helpers.ts
function getEarthlyBranchByChar(char) {
return EARTHLY_BRANCHES_DATA.find((branch) => branch.character === char);
}
function getHeavenlyStemByValue(value) {
return HEAVENLY_STEMS_DATA[value - 1];
}
function getEarthlyBranchByValue(value) {
return EARTHLY_BRANCHES_DATA[value - 1];
}
function getNaYin(stemName, branchName) {
const key = `${stemName} ${branchName}`;
const data = NA_YIN_MAP[key];
if (!data) {
console.warn(`Na Yin mapping not found for key: ${key}`);
return null;
}
;
return {
name: data.name,
elementName: data.element,
// English name
elementValue: data.value
// Numeric value
};
}
var elementCycle = ["WOOD", "FIRE", "EARTH", "METAL", "WATER"];
function produces(el1, el2) {
const index1 = elementCycle.indexOf(el1);
if (index1 === -1) return false;
const nextIndex = (index1 + 1) % elementCycle.length;
return elementCycle[nextIndex] === el2;
}
function controls(el1, el2) {
const index1 = elementCycle.indexOf(el1);
if (index1 === -1) return false;
const controlledIndex = (index1 + 2) % elementCycle.length;
return elementCycle[controlledIndex] === el2;
}
function ConvertTermToBranch(termName) {
const termToBranchCharMap = {
[SOLAR_TERM_KEYS.MinorCold]: "\u4E11",
[SOLAR_TERM_KEYS.MajorCold]: "\u4E11",
[SOLAR_TERM_KEYS.StartOfSpring]: "\u5BC5",
[SOLAR_TERM_KEYS.SpringShowers]: "\u5BC5",
[SOLAR_TERM_KEYS.AwakeningOfInsects]: "\u536F",
[SOLAR_TERM_KEYS.SpringEquinox]: "\u536F",
[SOLAR_TERM_KEYS.PureBrightness]: "\u8FB0",
[SOLAR_TERM_KEYS.GrainRain]: "\u8FB0",
[SOLAR_TERM_KEYS.StartOfSummer]: "\u5DF3",
[SOLAR_TERM_KEYS.GrainBuds]: "\u5DF3",
[SOLAR_TERM_KEYS.GrainInEar]: "\u5348",
[SOLAR_TERM_KEYS.SummerSolstice]: "\u5348",
[SOLAR_TERM_KEYS.MinorHeat]: "\u672A",
[SOLAR_TERM_KEYS.MajorHeat]: "\u672A",
[SOLAR_TERM_KEYS.StartOfAutumn]: "\u7533",
[SOLAR_TERM_KEYS.EndOfHeat]: "\u7533",
[SOLAR_TERM_KEYS.WhiteDew]: "\u9149",
[SOLAR_TERM_KEYS.AutumnEquinox]: "\u9149",
[SOLAR_TERM_KEYS.ColdDew]: "\u620C",
[SOLAR_TERM_KEYS.Frost]: "\u620C",
[SOLAR_TERM_KEYS.StartOfWinter]: "\u4EA5",
[SOLAR_TERM_KEYS.MinorSnow]: "\u4EA5",
[SOLAR_TERM_KEYS.MajorSnow]: "\u5B50",
[SOLAR_TERM_KEYS.WinterSolstice]: "\u5B50"
};
const branchChar = termToBranchCharMap[termName];
if (!branchChar) {
console.warn(`No branch mapping found for solar term: ${termName}`);
return null;
}
return getEarthlyBranchByChar(branchChar) || null;
}
function getStemRuleByFiveTigers(yearStemValue) {
switch (yearStemValue) {
case 1:
case 6:
return 3;
// 甲己 -> 丙寅
case 2:
case 7:
return 5;
// 乙庚 -> 戊寅
case 3:
case 8:
return 7;
// 丙辛 -> 庚寅
case 4:
case 9:
return 9;
// 丁壬 -> 壬寅
case 5:
case 10:
return 1;
// 戊癸 -> 甲寅
default:
return 0;
}
}
function getStemRuleByFiveRats(dayStemValue) {
switch (dayStemValue) {
case 1:
case 6:
return 1;
// 甲己 -> 甲子
case 2:
case 7:
return 3;
// 乙庚 -> 丙子
case 3:
case 8:
return 5;
// 丙辛 -> 戊子
case 4:
case 9:
return 7;
// 丁壬 -> 庚子
case 5:
case 10:
return 9;
// 戊癸 -> 壬子
default:
return 0;
}
}
function getLifeCycleRule(dayStemValue) {
switch (dayStemValue) {
case 1:
return 12;
// 甲 -> Hợi (Pig=12) - Go returned 10 (Pig)
case 2:
return 7;
// 乙 -> Ngọ (Horse=7) - Go returned 5 (Horse)
case 3:
return 3;
// 丙 -> Dần (Tiger=3) - Go returned 1 (Tiger)
case 5:
return 3;
// 戊 -> Dần (Tiger=3) - Go returned 1 (Tiger)
case 4:
return 10;
// 丁 -> Dậu (Rooster=10) - Go returned 8 (Rooster)
case 6:
return 10;
// 己 -> Dậu (Rooster=10) - Go returned 8 (Rooster)
case 7:
return 6;
// 庚 -> Tỵ (Snake=6) - Go returned 4 (Snake)
case 8:
return 1;
// 辛 -> Tí (Rat=1) - Go returned 11 (Rat)
case 9:
return 9;
// 壬 -> Thân (Monkey=9) - Go returned 7 (Monkey)
case 10:
return 4;
// 癸 -> Mão (Rabbit=4) - Go returned 2 (Rabbit)
default:
return 0;
}
}
function convertValueToLifeCycle(value) {
return LIFE_CYCLE_NAMES[value];
}
function getLifeCycleStage(branchValue, lifeCycleStartBranchValue, dayMasterYinYang) {
let diff;
if (dayMasterYinYang === "Yang") {
diff = branchValue - lifeCycleStartBranchValue;
} else {
diff = lifeCycleStartBranchValue - branchValue;
}
let cycleIndex = (diff % 12 + 12) % 12;
const lifeCycleValue = cycleIndex + 1;
return convertValueToLifeCycle(lifeCycleValue);
}
// src/assets/solar-term.json
var solar_term_default = {
"1899": {
year: "1899",
data: {
autumn_equinox: "1899-09-23 03:29:15.103+00:00",
awakening_of_insects: "1899-03-05 16:44:08.870+00:00",
cold_dew: "1899-10-08 09:43:57.283+00:00",
end_of_heat: "1899-08-23 06:00:14.880+00:00",
frost: "1899-10-23 12:40:40.601+00:00",
grain_buds: "1899-05-21 04:14:21.719+00:00",
grain_in_ear: "1899-06-05 19:32:02.898+00:00",
grain_rain: "1899-04-20 04:57:13.797+00:00",
major_cold: "1899-01-20 04:14:26.057+00:00",
major_heat: "1899-07-22 23:03:38.584+00:00",
minor_cold: "1899-01-05 10:51:03.143+00:00",
minor_heat: "1899-07-07 05:47:53.520+00:00",
minor_snow: "1899-11-22 10:07:00.982+00:00",
pure_brightness: "1899-04-04 21:45:44.676+00:00",
spring_equinox: "1899-03-20 17:42:16.230+00:00",
spring_showers: "1899-02-18 18:30:26.490+00:00",
start_of_autumn: "1899-08-07 15:30:14.611+00:00",
start_of_spring: "1899-02-03 22:33:24.769+00:00",
start_of_summer: "1899-05-05 15:16:00.310+00:00",
start_of_winter: "1899-11-07 12:45:50.274+00:00",
summer_solstice: "1899-06-21 12:13:45.752+00:00",
white_dew: "1899-09-07 18:15:42.236+00:00",
major_snow: "1899-12-07 07:05:50.777+00:00",
winter_solstice: "1899-12-22 00:56:09.527+00:00"
}
},
"1900": {
year: "1900",
data: {
autumn_equinox: "1900-09-23 12:20:15.540+00:00",
awakening_of_insects: "1900-03-06 00:21:55.825+00:00",
cold_dew: "1900-10-08 18:13:13.479+00:00",
end_of_heat: "1900-08-23 15:19:54.435+00:00",
frost: "1900-10-23 20:55:20.915+00:00",
grain_buds: "1900-05-21 13:17:01.069+00:00",
grain_in_ear: "1900-06-06 04:39:01.195+00:00",
grain_rain: "1900-04-20 13:27:11.496+00:00",
major_cold: "1900-01-20 11:32:29.605+00:00",
major_heat: "1900-07-23 08:36:12.842+00:00",
major_snow: "1900-12-07 12:55:55.631+00:00",
minor_cold: "1900-01-05 18:04:02.494+00:00",
minor_heat: "1900-07-07 15:10:14.562+00:00",
minor_snow: "1900-11-22 17:47:55.141+00:00",
pure_brightness: "1900-04-05 05:52:45.110+00:00",
spring_equinox: "1900-03-21 01:39:05.710+00:00",
spring_showers: "1900-02-19 02:01:18.701+00:00",
start_of_autumn: "1900-08-08 00:50:39.666+00:00",
start_of_spring: "1900-02-04 05:51:35.234+00:00",
start_of_summer: "1900-05-05 23:55:16.911+00:00",
start_of_winter: "1900-11-07 20:39:48.574+00:00",
summer_solstice: "1900-06-21 21:39:51.677+00:00",
white_dew: "1900-09-08 03:16:42.895+00:00",
winter_solstice: "1900-12-22 06:41:38.514+00:00"
}
},
"1901": {
year: "1901",
data: {
autumn_equinox: "1901-09-23 18:09:00.512+00:00",
awakening_of_insects: "1901-03-06 06:10:56.872+00:00",
cold_dew: "1901-10-09 00:06:32.675+00:00",
end_of_heat: "1901-08-23 21:07:33.744+00:00",
frost: "1901-10-24 02:46:18.358+00:00",
grain_buds: "1901-05-21 19:04:44.489+00:00",
grain_in_ear: "1901-06-06 10:36:32.195+00:00",
grain_rain: "1901-04-20 19:13:29.969+00:00",
major_cold: "1901-01-20 17:16:31.641+00:00",
major_heat: "1901-07-23 14:23:51.454+00:00",
major_snow: "1901-12-07 18:52:43.321+00:00",
minor_cold: "1901-01-05 23:53:27.683+00:00",
minor_heat: "1901-07-07 21:07:39.748+00:00",
minor_snow: "1901-11-22 23:41:18.162+00:00",
pure_brightness: "1901-04-05 11:44:25.559+00:00",
spring_equinox: "1901-03-21 07:23:39.378+00:00",
spring_showers: "1901-02-19 07:44:58.573+00:00",
start_of_autumn: "1901-08-08 06:46:11.244+00:00",
start_of_spring: "1901-02-04 11:39:56.166+00:00",
start_of_summer: "1901-05-06 05:50:28.412+00:00",
start_of_winter: "1901-11-08 02:34:35.065+00:00",
summer_solstice: "1901-06-22 03:27:52.323+00:00",
white_dew: "1901-09-08 09:10:19.830+00:00",
winter_solstice: "1901-12-22 12:36:40.612+00:00"
}
},
"1902": {
year: "1902",
data: {
autumn_equinox: "1902-09-23 23:55:24.027+00:00",
awakening_of_insects: "1902-03-06 12:07:35.907+00:00",
cold_dew: "1902-10-09 05:45:13.989+00:00",
end_of_heat: "1902-08-24 02:53:06.193+00:00",
frost: "1902-10-24 08:35:42.178+00:00",
grain_buds: "1902-05-22 00:53:36.857+00:00",
grain_in_ear: "1902-06-06 16:19:52.354+00:00",
grain_rain: "1902-04-21 01:04:12.715+00:00",
major_cold: "1902-01-20 23:12:00.409+00:00",
major_heat: "1902-07-23 20:09:55.457+00:00",
major_snow: "1902-12-08 00:41:05.652+00:00",
minor_cold: "1902-01-06 05:51:38.480+00:00",
minor_heat: "1902-07-08 02:46:24.822+00:00",
minor_snow: "1902-11-23 05:35:28.610+00:00",
pure_brightness: "1902-04-05 17:37:30.442+00:00",
spring_equinox: "1902-03-21 13:16:37.780+00:00",
spring_showers: "1902-02-19 13:39:45.984+00:00",
start_of_autumn: "1902-08-08 12:22:20.567+00:00",
start_of_spring: "1902-02-04 17:38:12.921+00:00",
start_of_summer: "1902-05-06 11:38:52.804+00:00",
start_of_winter: "1902-11-08 08:17:49.858+00:00",
summer_solstice: "1902-06-22 09:15:12.136+00:00",
white_dew: "1902-09-08 14:46:29.726+00:00",
winter_solstice: "1902-12-22 18:35:35.455+00:00"
}
},
"1903": {
year: "1903",
data: {
autumn_equinox: "1903-09-24 05:43:44.903+00:00",
awakening_of_insects: "1903-03-06 17:58:56.435+00:00",
cold_dew: "1903-10-09 11:41:46.774+00:00",
end_of_heat: "1903-08-24 08:41:39.510+00:00",
frost: "1903-10-24 14:23:06.540+00:00",
grain_buds: "1903-05-22 06:45:05.541+00:00",
grain_in_ear: "1903-06-06 22:07:11.970+00:00",
grain_rain: "1903-04-21 06:58:42.866+00:00",
major_cold: "1903-01-21 05:13:35.649+00:00",
major_heat: "1903-07-24 01:58:49.682+00:00",
major_snow: "1903-12-08 06:35:22.793+00:00",
minor_cold: "1903-01-06 11:43:47.049+00:00",
minor_heat: "1903-07-08 08:36:40.229+00:00",
minor_snow: "1903-11-23 11:21:28.429+00:00",
pure_brightness: "1903-04-05 23:25:58.252+00:00",
spring_equinox: "1903-03-21 19:14:50.379+00:00",
spring_showers: "1903-02-19 19:40:51.988+00:00",
start_of_autumn: "1903-08-08 18:15:53.310+00:00",
start_of_spring: "1903-02-04 23:31:20.393+00:00",
start_of_summer: "1903-05-06 17:25:26.775+00:00",
start_of_winter: "1903-11-08 14:13:26.273+00:00",
summer_solstice: "1903-06-22 15:05:00.046+00:00",
white_dew: "1903-09-08 20:42:24.429+00:00",
winter_solstice: "1903-12-23 00:00:03.866+00:00"
}
},
"1904": {
year: "1904",
data: {
autumn_equinox: "1904-09-23 11:40:15.896+00:00",
awakening_of_insects: "1904-03-05 23:51:42.420+00:00",
cold_dew: "1904-10-08 17:35:38.370+00:00",
end_of_heat: "1904-08-23 14:36:27.591+00:00",
frost: "1904-10-23 20:19:05.791+00:00",
grain_buds: "1904-05-21 12:28:59.981+00:00",
grain_in_ear: "1904-06-06 04:01:01.822+00:00",
grain_rain: "1904-04-20 12:42:12.407+00:00",
major_cold: "1904-01-21 10:57:54.280+00:00",
major_heat: "1904-07-23 07:49:38.789+00:00",
major_snow: "1904-12-07 12:25:24.811+00:00",
minor_cold: "1904-01-06 17:37:06.408+00:00",
minor_heat: "1904-07-07 14:31:45.271+00:00",
minor_snow: "1904-11-22 17:15:56.124+00:00",
pure_brightness: "1904-04-05 05:18:54.590+00:00",
spring_equinox: "1904-03-21 00:58:36.806+00:00",
spring_showers: "1904-02-20 01:24:54.091+00:00",
start_of_autumn: "1904-08-08 00:11:54.888+00:00",
start_of_spring: "1904-02-05 05:24:10.951+00:00",
start_of_summer: "1904-05-05 23:18:38.249+00:00",
start_of_winter: "1904-11-07 20:05:02.549+00:00",
summer_solstice: "1904-06-21 20:51:24.470+00:00",
white_dew: "1904-09-08 02:38:02.252+00:00",
winter_solstice: "1904-12-22 06:13:59.679+00:00"
}
},
"1905": {
year: "1905",
data: {
autumn_equinox: "1905-09-23 17:30:00.246+00:00",
awakening_of_insects: "1905-03-06 05:45:39.064+00:00",
cold_dew: "1905-10-08 23:19:39.349+00:00",
end_of_heat: "1905-08-23 20:28:40.054+00:00",
frost: "1905-10-24 02:07:59.299+00:00",
grain_buds: "1905-05-21 18:31:19.919+00:00",
grain_in_ear: "1905-06-06 09:53:37.266+00:00",
grain_rain: "1905-04-20 18:43:48.174+00:00",
major_cold: "1905-01-20 16:51:58.494+00:00",
major_heat: "1905-07-23 13:45:40.689+00:00",
major_snow: "1905-12-07 18:10:50.851+00:00",
minor_cold: "1905-01-05 23:27:10.863+00:00",
minor_heat: "1905-07-07 20:20:03.231+00:00",
minor_snow: "1905-11-22 23:04:57.001+00:00",
pure_brightness: "1905-04-05 11:14:32.089+00:00",
spring_equinox: "1905-03-21 06:57:34.450+00:00",
spring_showers: "1905-02-19 07:21:00.624+00:00",
start_of_autumn: "1905-08-08 05:57:00.371+00:00",
start_of_spring: "1905-02-04 11:15:52.033+00:00",
start_of_summer: "1905-05-06 05:14:07.982+00:00",
start_of_winter: "1905-11-08 01:49:49.880+00:00",
summer_solstice: "1905-06-22 02:51:25.648+00:00",
white_dew: "1905-09-08 08:21:49.766+00:00",
winter_solstice: "1905-12-22 12:03:45.301+00:00"
}
},
"1906": {
year: "1906",
data: {
autumn_equinox: "1906-09-23 23:15:02.387+00:00",
awakening_of_insects: "1906-03-06 11:36:09.307+00:00",
cold_dew: "1906-10-09 05:14:57.269+00:00",
end_of_heat: "1906-08-24 02:13:34.814+00:00",
frost: "1906-10-24 07:54:46.296+00:00",
grain_buds: "1906-05-22 00:24:58.768+00:00",
grain_in_ear: "1906-06-06 15:48:57.793+00:00",
grain_rain: "1906-04-21 00:39:14.219+00:00",
major_cold: "1906-01-20 22:43:18.553+00:00",
major_heat: "1906-07-23 19:32:35.387+00:00",
major_snow: "1906-12-08 00:09:29.283+00:00",
minor_cold: "1906-01-06 05:13:30.640+00:00",
minor_heat: "1906-07-08 02:15:19.172+00:00",
minor_snow: "1906-11-23 04:53:54.116+00:00",
pure_brightness: "1906-04-05 17:07:19.966+00:00",
spring_equinox: "1906-03-21 12:52:51.302+00:00",
spring_showers: "1906-02-19 13:14:31.398+00:00",
start_of_autumn: "1906-08-08 11:51:37.594+00:00",
start_of_spring: "1906-02-04 17:03:56.646+00:00",
start_of_summer: "1906-05-06 11:08:31.743+00:00",
start_of_winter: "1906-11-08 07:46:57.113+00:00",
summer_solstice: "1906-06-22 08:41:51.317+00:00",
white_dew: "1906-09-08 14:16:16.122+00:00",
winter_solstice: "1906-12-22 17:53:20.502+00:00"
}
},
"1907": {
year: "1907",
data: {
autumn_equinox: "1907-09-24 05:08:56.697+00:00",
awakening_of_insects: "1907-03-06 17:27:08.060+00:00",
cold_dew: "1907-10-09 11:02:45.790+00:00",
end_of_heat: "1907-08-24 08:03:26.470+00:00",
frost: "1907-10-24 13:51:35.199+00:00",
grain_buds: "1907-05-22 06:03:17.946+00:00",
grain_in_ear: "1907-06-06 21:33:00.697+00:00",
grain_rain: "1907-04-21 06:17:15.872+00:00",
major_cold: "1907-01-21 04:30:50.228+00:00",
major_heat: "1907-07-24 01:18:00.019+00:00",
major_snow: "1907-12-08 05:59:30.013+00:00",
minor_cold: "1907-01-06 11:11:27.595+00:00",
minor_heat: "1907-07-08 07:59:13.417+00:00",
minor_snow: "1907-11-23 10:52:07.028+00:00",
pure_brightness: "1907-04-05 22:54:49.832+00:00",
spring_equinox: "1907-03-21 18:33:02.587+00:00",
spring_showers: "1907-02-19 18:58:20.765+00:00",
start_of_autumn: "1907-08-08 17:36:01.050+00:00",
start_of_spring: "1907-02-04 22:58:51.249+00:00",
start_of_summer: "1907-05-06 16:53:39.349+00:00",
start_of_winter: "1907-11-08 13:36:20.962+00:00",
summer_solstice: "1907-06-22 14:23:03.040+00:00",
white_dew: "1907-09-08 20:02:06.120+00:00",
winter_solstice: "1907-12-22 23:51:35.801+00:00"
}
},
"1908": {
year: "1908",
data: {
autumn_equinox: "1908-09-23 10:58:19.102+00:00",
awakening_of_insects: "1908-03-05 23:13:38.680+00:00",
cold_dew: "1908-10-08 16:50:55.172+00:00",
end_of_heat: "1908-08-23 13:57:03.395+00:00",
frost: "1908-10-23 19:36:51.653+00:00",
grain_buds: "1908-05-21 11:58:10.366+00:00",
grain_in_ear: "1908-06-06 03:19:07.037+00:00",
grain_rain: "1908-04-20 12:11:18.226+00:00",
major_cold: "1908-01-21 10:28:07.537+00:00",
major_heat: "1908-07-23 07:14:09.230+00:00",
major_snow: "1908-12-07 11:43:41.350+00:00",
minor_cold: "1908-01-06 17:01:10.821+00:00",
minor_heat: "1908-07-07 13:48:04.074+00:00",
minor_snow: "1908-11-22 16:34:41.359+00:00",
pure_brightness: "1908-04-05 04:39:50.139+00:00",
spring_equinox: "1908-03-21 00:27:17.003+00:00",
spring_showers: "1908-02-20 00:53:57.469+00:00",
start_of_autumn: "1908-08-07 23:26:46.459+00:00",
start_of_spring: "1908-02-05 04:47:17.344+00:00",
start_of_summer: "1908-05-05 22:38:23.372+00:00",
start_of_winter: "1908-11-07 19:22:05.737+00:00",
summer_solstice: "1908-06-21 20:19:06.073+00:00",
white_dew: "1908-09-08 01:52:21.379+00:00",
winter_solstice: "1908-12-22 05:33:28.613+00:00"
}
},
"1909": {
year: "1909",
data: {
autumn_equinox: "1909-09-23 16:44:33.851+00:00",
awakening_of_insects: "1909-03-06 05:00:51.276+00:00",
cold_dew: "1909-10-08 22:43:11.242+00:00",
end_of_heat: "1909-08-23 19:43:35.346+00:00",
frost: "1909-10-24 01:22:34.432+00:00",
grain_buds: "1909-05-21 17:44:56.098+00:00",
grain_in_ear: "1909-06-06 09:14:00.039+00:00",
grain_rain: "1909-04-20 17:57:48.863+00:00",
major_cold: "1909-01-20 16:10:59.848+00:00",
major_heat: "1909-07-23 13:00:30.991+00:00",
major_snow: "1909-12-07 17:34:53.330+00:00",
minor_cold: "1909-01-05 22:45:17.594+00:00",
minor_heat: "1909-07-07 19:44:01.438+00:00",
minor_snow: "1909-11-22 22:20:18.403+00:00",
pure_brightness: "1909-04-05 10:29:28.823+00:00",
spring_equinox: "1909-03-21 06:13:00.527+00:00",
spring_showers: "1909-02-19 06:38:24.582+00:00",
start_of_autumn: "1909-08-08 05:22:32.382+00:00",
start_of_spring: "1909-02-04 10:32:35.820+00:00",
start_of_summer: "1909-05-06 04:30:53.173+00:00",
start_of_winter: "1909-11-08 01:13:06.967+00:00",
summer_solstice: "1909-06-22 02:05:35.830+00:00",
white_dew: "1909-09-08 07:46:38.799+00:00",
winter_solstice: "1909-12-22 11:19:50.894+00:00"
}
},
"1910": {
year: "1910",
data: {
autumn_equinox: "1910-09-23 22:30:46.649+00:00",
awakening_of_insects: "1910-03-06 10:56:35.183+00:00",
cold_dew: "1910-10-09 04:21:10.141+00:00",
end_of_heat: "1910-08-24 01:27:23.967+00:00",
frost: "1910-10-24 07:11:10.073+00:00",
grain_buds: "1910-05-21 23:30:12.014+00:00",
grain_in_ear: "1910-06-06 14:56:25.029+00:00",
grain_rain: "1910-04-20 23:45:46.093+00:00",
major_cold: "1910-01-20 21:59:00.417+00:00",
major_heat: "1910-07-23 18:42:59.943+00:00",
major_snow: "1910-12-07 23:16:57.554+00:00",
minor_cold: "1910-01-06 04:38:01.211+00:00",
minor_heat: "1910-07-08 01:21:05.950+00:00",
minor_snow: "1910-11-23 04:10:53.047+00:00",
pure_brightness: "1910-04-05 16:22:59.472+00:00",
spring_equinox: "1910-03-21 12:02:55.890+00:00",
spring_showers: "1910-02-19 12:28:11.177+00:00",
start_of_autumn: "1910-08-08 10:57:13.450+00:00",
start_of_spring: "1910-02-04 16:27:26.278+00:00",
start_of_summer: "1910-05-06 10:19:23.730+00:00",
start_of_winter: "1910-11-08 06:53:27.963+00:00",
summer_solstice: "1910-06-22 07:48:44.989+00:00",
white_dew: "1910-09-08 13:22:14.881+00:00",
winter_solstice: "1910-12-22 17:11:46.648+00:00"
}
},
"1911": {
year: "1911",
data: {
autumn_equinox: "1911-09-24 04:17:34.414+00:00",
awakening_of_insects: "1911-03-06 16:38:53.858+00:00",
cold_dew: "1911-10-09 10:14:58.377+00:00",
end_of_heat: "1911-08-24 07:13:00.857+00:00",
frost: "1911-10-24 12:58:14.479+00:00",
grain_buds: "1911-05-22 05:18:36.945+00:00",
grain_in_ear: "1911-06-06 20:37:56.075+00:00",
grain_rain: "1911-04-21 05:35:59.266+00:00",
major_cold: "1911-01-21 03:51:27.709+00:00",
major_heat: "1911-07-24 00:28:41.586+00:00",
major_snow: "1911-12-08 05:07:37.542+00:00",
minor_cold: "1911-01-06 10:20:57.039+00:00",
minor_heat: "1911-07-08 07:04:58.689+00:00",
minor_snow: "1911-11-23 09:55:57.334+00:00",
pure_brightness: "1911-04-05 22:04:34.911+00:00",
spring_equinox: "1911-03-21 17:54:24.418+00:00",
spring_showers: "1911-02-19 18:20:21.182+00:00",
start_of_autumn: "1911-08-08 16:44:28.014+00:00",
start_of_spring: "1911-02-04 22:10:20.539+00:00",
start_of_summer: "1911-05-06 16:00:21.130+00:00",
start_of_winter: "1911-11-08 12:47:03.165+00:00",
summer_solstice: "1911-06-22 13:35:34.837+00:00",
white_dew: "1911-09-08 19:13:19.173+00:00",
winter_solstice: "1911-12-22 22:53:13.809+00:00"
}
},
"1912": {
year: "1912",
data: {
autumn_equinox: "1912-09-23 10:08:02.668+00:00",
awakening_of_insects: "1912-03-05 22:21:03.135+00:00",
cold_dew: "1912-10-08 16:06:46.812+00:00",
end_of_heat: "1912-08-23 13:01:22.566+00:00",
frost: "1912-10-23 18:50:03.583+00:00",
grain_buds: "1912-05-21 10:57:09.646+00:00",
grain_in_ear: "1912-06-06 02:27:33.273+00:00",
grain_rain: "1912-04-20 11:12:24.352+00:00",
major_cold: "1912-01-21 09:29:10.225+00:00",
major_heat: "1912-07-23 06:13:43.706+00:00",
major_snow: "1912-12-07 10:58:57.753+00:00",
minor_cold: "1912-01-06 16:07:32.709+00:00",
minor_heat: "1912-07-07 12:56:46.522+00:00",
minor_snow: "1912-11-22 15:48:12.103+00:00",
pure_brightness: "1912-04-05 03:48:18.590+00:00",
spring_equinox: "1912-03-20 23:29:23.078+00:00",
spring_showers: "1912-02-19 23:55:38.241+00:00",
start_of_autumn: "1912-08-07 22:37:16.417+00:00",
start_of_spring: "1912-02-05 03:53:35.417+00:00",
start_of_summer: "1912-05-05 21:47:06.582+00:00",
start_of_winter: "1912-11-07 18:38:42.695+00:00",
summer_solstice: "1912-06-21 19:16:55.240+00:00",
white_dew: "1912-09-08 01:05:43.962+00:00",
winter_solstice: "1912-12-22 04:44:43.397+00:00"
}
},
"1913": {
year: "1913",
data: {
autumn_equinox: "1913-09-23 15:52:46.600+00:00",
awakening_of_insects: "1913-03-06 04:09:01.600+00:00",
cold_dew: "1913-10-08 21:43:42.096+00:00",
end_of_heat: "1913-08-23 18:48:14.442+00:00",
frost: "1913-10-24 00:34:53.163+00:00",
grain_buds: "1913-05-21 16:49:54.513+00:00",
grain_in_ear: "1913-06-06 08:13:28.449+00:00",
grain_rain: "1913-04-20 17:02:54.404+00:00",
major_cold: "1913-01-20 15:19:08.492+00:00",
major_heat: "1913-07-23 12:03:45.866+00:00",
major_snow: "1913-12-07 16:41:04.893+00:00",
minor_cold: "1913-01-05 21:57:58.325+00:00",
minor_heat: "1913-07-07 18:38:56.554+00:00",
minor_snow: "1913-11-22 21:35:16.342+00:00",
pure_brightness: "1913-04-05 09:35:54.878+00:00",
spring_equinox: "1913-03-21 05:17:59.212+00:00",
spring_showers: "1913-02-19 05:44:15.719+00:00",
start_of_autumn: "1913-08-08 04:15:51.462+00:00",
start_of_spring: "1913-02-04 09:42:41.997+00:00",
start_of_summer: "1913-05-06 03:34:42.744+00:00",
start_of_winter: "1913-11-08 00:17:45.152+00:00",
summer_solstice: "1913-06-22 01:09:30.737+00:00",
white_dew: "1913-09-08 06:42:26.273+00:00",
winter_solstice: "1913-12-22 10:34:54.701+00:00"
}
},
"1914": {
year: "1914",
data: {
autumn_equinox: "1914-09-23 21:33:49.067+00:00",
awakening_of_insects: "1914-03-06 09:55:53.509+00:00",
cold_dew: "1914-10-09 03:34:50.550+00:00",
end_of_heat: "1914-08-24 00:29:38.221+00:00",
frost: "1914-10-24 06:17:17.652+00:00",
grain_buds: "1914-05-21 22:37:40.601+00:00",
grain_in_ear: "1914-06-06 13:59:59.801+00:00",
grain_rain: "1914-04-20 22:53:15.486+00:00",
major_cold: "1914-01-20 21:11:51.835+00:00",
major_heat: "1914-07-23 17:46:57.480+00:00",
major_snow: "1914-12-07 22:37:09.116+00:00",
minor_cold: "1914-01-06 03:42:55.147+00:00",
minor_heat: "1914-07-08 00:27:16.023+00:00",
minor_snow: "1914-11-23 03:20:23.622+00:00",
pure_brightness: "1914-04-05 15:21:54.453+00:00",
spring_equinox: "1914-03-21 11:10:45.209+00:00",
spring_showers: "1914-02-19 11:37:57.578+00:00",
start_of_autumn: "1914-08-08 10:05:15.510+00:00",
start_of_spring: "1914-02-04 15:29:20.549+00:00",
start_of_summer: "1914-05-06 09:20:05.783+00:00",
start_of_winter: "1914-11-08 06:11:04.171+00:00",
summer_solstice: "1914-06-22 06:55:04.127+00:00",
white_dew: "1914-09-08 12:32:30.321+00:00",
winter_solstice: "1914-12-22 16:22:26.232+00:00"
}
},
"1915": {
year: "1915",
data: {
autumn_equinox: "1915-09-24 03:23:49.099+00:00",
awakening_of_insects: "1915-03-06 15:48:19.021+00:00",
cold_dew: "1915-10-09 09:20:55.600+00:00",
end_of_heat: "1915-08-24 06:15:02.955+00:00",
frost: "1915-10-24 12:09:41.904+00:00",
grain_buds: "1915-05-22 04:10:27.631+00:00",
grain_in_ear: "1915-06-06 19:40:10.468+00:00",
grain_rain: "1915-04-21 04:28:50.075+00:00",
major_cold: "1915-01-21 02:59:34.041+00:00",
major_heat: "1915-07-23 23:26:25.506+00:00",
major_snow: "1915-12-08 04:23:56.658+00:00",
minor_cold: "1915-01-06 09:40:20.016+00:00",
minor_heat: "1915-07-08 06:07:48.663+00:00",
minor_snow: "1915-11-23 09:13:30.127+00:00",
pure_brightness: "1915-04-05 21:09:17.887+00:00",
spring_equinox: "1915-03-21 16:51:18.270+00:00",
spring_showers: "1915-02-19 17:23:06.789+00:00",
start_of_autumn: "1915-08-08 15:47:45.158+00:00",
start_of_spring: "1915-02-04 21:25:28.796+00:00",
start_of_summer: "1915-05-06 15:02:47.759+00:00",
start_of_winter: "1915-11-08 11:57:40.889+00:00",
summer_solstice: "1915-06-22 12:29:24.008+00:00",
white_dew: "1915-09-08 18:17:08.826+00:00",
winter_solstice: "1915-12-22 22:15:47.998+00:00"
}
},
"1916": {
year: "1916",
data: {
autumn_equinox: "1916-09-23 09:14:46.615+00:00",
awakening_of_insects: "1916-03-05 21:37:25.506+00:00",
cold_dew: "1916-10-08 15:07:54.430+00:00",
end_of_heat: "1916-08-23 12:08:34.592+00:00",
frost: "1916-10-23 17:57:14.489+00:00",
grain_buds: "1916-05-21 10:05:54.386+00:00",
grain_in_ear: "1916-06-06 01:25:44.745+00:00",
grain_rain: "1916-04-20 10:24:39.031+00:00",
major_cold: "1916-01-21 08:53:37.008+00:00",
major_heat: "1916-07-23 05:21:12.775+00:00",
major_snow: "1916-12-07 10:06:13.772+00:00",
minor_cold: "1916-01-06 15:27:50.976+00:00",
minor_heat: "1916-07-07 11:53:38.282+00:00",
minor_snow: "1916-11-22 14:57:48.700+00:00",
pure_brightness: "1916-04-05 02:57:53.646+00:00",
spring_equinox: "1916-03-20 22:46:54.189+00:00",
spring_showers: "1916-02-19 23:18:01.983+00:00",
start_of_autumn: "1916-08-07 21:35:00.087+00:00",
start_of_spring: "1916-02-05 03:14:02.740+00:00",
start_of_summer: "1916-05-05 20:49:50.926+00:00",
start_of_winter: "1916-11-07 17:42:18.758+00:00",
summer_solstice: "1916-06-21 18:24:26.504+00:00",
white_dew: "1916-09-08 00:05:03.331+00:00",
winter_solstice: "1916-12-22 03:58:34.806+00:00"
}
},
"1917": {
year: "1917",
data: {
autumn_equinox: "1917-09-23 15:00:10.628+00:00",
awakening_of_insects: "1917-03-06 03:24:50.961+00:00",
cold_dew: "1917-10-08 21:02:10.936+00:00",
end_of_heat: "1917-08-23 17:53:42.113+00:00",
frost: "1917-10-23 23:43:41.502+00:00",
grain_buds: "1917-05-21 15:58:35.999+00:00",
grain_in_ear: "1917-06-06 07:23:14.999+00:00",
grain_rain: "1917-04-20 16:17:26.270+00:00",
major_cold: "1917-01-20 14:37:23.309+00:00",
major_heat: "1917-07-23 11:07:49.361+00:00",
major_snow: "1917-12-07 16:01:03.972+00:00",
minor_cold: "1917-01-05 21:09:31.600+00:00",
minor_heat: "1917-07-07 17:50:16.993+00:00",
minor_snow: "1917-11-22 20:44:56.880+00:00",
pure_brightness: "1917-04-05 08:49:56.953+00:00",
spring_equinox: "1917-03-21 04:37:15.873+00:00",
spring_showers: "1917-02-19 05:04:49.226+00:00",
start_of_autumn: "1917-08-08 03:30:10.983+00:00",
start_of_spring: "1917-02-04 08:57:35.736+00:00",
start_of_summer: "1917-05-06 02:45:45.478+00:00",
start_of_winter: "1917-11-07 23:36:58.060+00:00",
summer_solstice: "1917-06-22 00:14:20.791+00:00",
white_dew: "1917-09-08 05:59:23.184+00:00",
winter_solstice: "1917-12-22 09:45:42.444+00:00"
}
},
"1918": {
year: "1918",
data: {
autumn_equinox: "1918-09-23 20:45:40.220+00:00",
awakening_of_insects: "1918-03-06 09:20:59.623+00:00",
cold_dew: "1918-10-09 02:40:21.037+00:00",
end_of_heat: "1918-08-23 23:37:10.613+00:00",
frost: "1918-10-24 05:32:48.705+00:00",
grain_buds: "1918-05-21 21:45:31.129+00:00",
grain_in_ear: "1918-06-06 13:11:02.430+00:00",
grain_rain: "1918-04-20 22:05:25.546+00:00",
major_cold: "1918-01-20 20:24:35.697+00:00",
major_heat: "1918-07-23 16:51:26.867+00:00",
major_snow: "1918-12-07 21:46:33.898+00:00",
minor_cold: "1918-01-06 03:04:28.748+00:00",
minor_heat: "1918-07-07 23:32:12.493+00:00",
minor_snow: "1918-11-23 02:38:05.151+00:00",
pure_brightness: "1918-04-05 14:45:15.494+00:00",
spring_equinox: "1918-03-21 10:25:39.228+00:00",
spring_showers: "1918-02-19 10:52:44.123+00:00",
start_of_autumn: "1918-08-08 09:07:28.629+00:00",
start_of_spring: "1918-02-04 14:53:09.631+00:00",
start_of_summer: "1918-05-06 08:38:15.319+00:00",
start_of_winter: "1918-11-08 05:18:55.495+00:00",
summer_solstice: "1918-06-22 05:59:38.494+00:00",
white_dew: "1918-09-08 11:35:30.464+00:00",
winter_solstice: "1918-12-22 15:41:31.516+00:00"
}
},
"1919": {
year: "1919",
data: {
autumn_equinox: "1919-09-24 02:35:23.006+00:00",
awakening_of_insects: "1919-03-06 15:05:32.207+00:00",
cold_dew: "1919-10-09 08:33:23.293+00:00",
end_of_heat: "1919-08-24 05:28:21.307+00:00",