UNPKG

dbl-utils

Version:

Utilities for dbl, adba and others projects

1 lines 23.7 kB
{"version":3,"names":["cov_279irsept5","actualCoverage","exports","mergeWithMutation","s","deepMerge","transformJson","useConfig","isObject","item","f","b","Array","isArray","effectiveDeepMerge","target","sources","length","source","shift","fixValue","fix","undefined","key","Object","assign","target_1","_a","mutation","ommit","data","parentKey","includes","keyFixed","mergeResult","mergedObject","setConfig","config","json","options","objCopy","JSON","parse","stringify","flattenObj","recursive","obj","parentObj","path","beforeFunc","input","replace","merge","delete","innerKey","value","newPath","filter","duringFunc","nonObjectFunc","afterFunc","rootKey","rootObj","root"],"sources":["/home/diablo/dev/dbl-utils/src/object-mutation.ts"],"sourcesContent":["type MutationFunction = (key: string, value: any, data: any) => any;\r\n\r\ninterface MergeOptions {\r\n mutation: MutationFunction;\r\n ommit?: string[];\r\n data?: any;\r\n}\r\n\r\ninterface ConfigOptions {\r\n fix?: (target: any, source: any) => any;\r\n}\r\n\r\ninterface TransformOptions {\r\n beforeFunc?: (context: Context) => any;\r\n duringFunc?: (context: Context) => any;\r\n afterFunc?: (context: Context) => any;\r\n nonObjectFunc?: (context: Context) => any;\r\n filter?: string | string[] | ((context: Context) => boolean);\r\n key?: string;\r\n root?: any;\r\n}\r\n\r\ninterface Context {\r\n input: any;\r\n key: string | null;\r\n parentObj: any;\r\n parentKey: string | null;\r\n path: string;\r\n}\r\n\r\nlet useConfig: ConfigOptions = {};\r\n\r\n/**\r\n * Check if an item is a simple object.\r\n * @param item - The item to check.\r\n * @returns True if the item is an object, false otherwise.\r\n */\r\nfunction isObject(item: any): boolean {\r\n return item && typeof item === 'object' && !Array.isArray(item);\r\n}\r\n\r\n/**\r\n * Deeply merge objects into the target object.\r\n * @param target - The target object where to merge.\r\n * @param sources - The sources to be merged into the target.\r\n * @returns The merged target object.\r\n */\r\nfunction effectiveDeepMerge(target: any, ...sources: any[]): any {\r\n if (!sources.length) return target;\r\n const source = sources.shift();\r\n\r\n let fixValue;\r\n if (typeof useConfig.fix === 'function') {\r\n fixValue = useConfig.fix(target, source);\r\n }\r\n if (fixValue !== undefined) target = fixValue;\r\n else if (isObject(target) && isObject(source)) {\r\n for (const key in source) {\r\n if (isObject(source[key])) {\r\n if (!target[key]) Object.assign(target, { [key]: {} });\r\n effectiveDeepMerge(target[key], source[key]);\r\n } else if (typeof source[key] !== 'undefined') {\r\n Object.assign(target, { [key]: source[key] });\r\n }\r\n }\r\n }\r\n\r\n return effectiveDeepMerge(target, ...sources);\r\n}\r\n\r\n/**\r\n * Execute a mutation function on the object and merge results.\r\n * @param target - The target object to be merged with mutation.\r\n * @param options - Options for mutation, ommit keys and additional data.\r\n * @param parentKey - Internal tracking key for recursion.\r\n * @returns The mutated and merged target object.\r\n */\r\nexport async function mergeWithMutation(\r\n target: any,\r\n { mutation, ommit = [], data }: MergeOptions,\r\n parentKey = ''\r\n): Promise<any> {\r\n for (const key in target) {\r\n if (!ommit.includes(key) && typeof target[key] === 'object') {\r\n const keyFixed = Array.isArray(target) ? parentKey + '.' + key : key;\r\n const mergeResult = await mutation(keyFixed, target[key], data);\r\n if (mergeResult) effectiveDeepMerge(target[key], mergeResult);\r\n await mergeWithMutation(target[key], { mutation, ommit, data }, key);\r\n }\r\n }\r\n return target;\r\n}\r\n\r\n/**\r\n * Deep merge multiple objects.\r\n * @param target - The target object where other objects will be merged.\r\n * @param sources - Other objects to be merged into the target.\r\n * @returns The merged object.\r\n */\r\nexport function deepMerge(target: any, ...sources: any[]): any {\n const mergedObject = effectiveDeepMerge(target, ...sources);\n useConfig = {};\n return mergedObject;\n}\n\n/**\n * Configure deep merge behavior. Useful for setting a custom\n * fixer function before calling {@link deepMerge}.\n *\n * @param config - Configuration options.\n */\ndeepMerge.setConfig = (config: ConfigOptions) => {\n useConfig = config;\n};\n\r\n/**\r\n * Transforms and flattens a JSON object.\r\n *\r\n * @param json - The JSON object to be transformed.\r\n * @param options - Options for the mutation functions.\r\n * @returns An array with the modified object and the flattened object.\r\n */\r\nexport function transformJson(json: any, options: TransformOptions = {}): [any, any] {\r\n const objCopy = JSON.parse(JSON.stringify(json));\r\n const flattenObj: Record<string, any> = {};\r\n\r\n const recursive = (\r\n obj: any,\r\n key: string | null = null,\r\n parentObj: any = null,\r\n parentKey: string | null = null,\r\n path: string = ''\r\n ) => {\r\n if (typeof options.beforeFunc === 'function') {\r\n const mutation = options.beforeFunc({ input: obj, key, parentObj, parentKey, path });\r\n if (mutation && typeof mutation === 'object') {\r\n if (mutation.replace) parentObj[key as string] = mutation.replace;\r\n else if (mutation.merge) deepMerge(obj, mutation.merge);\r\n else if (mutation.delete) delete parentObj[key as string];\r\n }\r\n }\r\n\r\n for (const innerKey in obj) {\r\n const value = obj[innerKey];\r\n const newPath = path ? `${path}.${innerKey}` : innerKey;\r\n if (typeof options.filter === 'string' && innerKey === options.filter) {\r\n flattenObj[newPath] = value;\r\n continue;\r\n } else if (Array.isArray(options.filter) && options.filter.includes(innerKey)) {\r\n flattenObj[newPath] = value;\r\n continue;\r\n } else if (\r\n typeof options.filter === 'function' &&\r\n !options.filter({ input: value, key: innerKey, parentObj: obj, parentKey: key, path: newPath })\r\n ) {\r\n flattenObj[newPath] = value;\r\n continue;\r\n }\r\n\r\n if (typeof value === 'object' && value !== null) {\r\n if (typeof options.duringFunc === 'function') {\r\n const mutation = options.duringFunc({ input: value, key: innerKey, parentObj: obj, parentKey: key, path: newPath });\r\n if (mutation && typeof mutation === 'object') {\r\n if (mutation.replace) obj[innerKey] = mutation.replace;\r\n else if (mutation.merge) obj[innerKey] = deepMerge(value, mutation.merge);\r\n else if (mutation.delete) { delete obj[innerKey]; continue; }\r\n }\r\n }\r\n recursive(value, innerKey, obj, key, newPath);\r\n } else {\r\n if (options.nonObjectFunc) {\r\n const mutation = options.nonObjectFunc({ input: value, key: innerKey, parentObj: obj, parentKey: key, path: newPath });\r\n if (mutation && typeof mutation === 'object') {\r\n if (mutation.replace) obj[innerKey] = mutation.replace;\r\n else if (mutation.merge) obj[innerKey] += mutation.merge;\r\n else if (mutation.delete) { delete obj[innerKey]; continue; }\r\n }\r\n }\r\n flattenObj[newPath] = value;\r\n }\r\n }\r\n\r\n if (typeof options.afterFunc === 'function') {\r\n const mutation = options.afterFunc({ input: obj, key, parentObj, parentKey, path });\r\n if (mutation && typeof mutation === 'object') {\r\n if (mutation.replace) parentObj[key as string] = mutation.replace;\r\n else if (mutation.merge) deepMerge(obj, mutation.merge);\r\n else if (mutation.delete) delete parentObj[key as string];\r\n }\r\n }\r\n };\r\n\r\n const rootKey = options.key || '_root';\r\n const rootObj: any = options.root || {};\r\n recursive(objCopy, rootKey, rootObj);\r\n return [objCopy, rootObj[rootKey]];\r\n}\r\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAgCA;IAAAA,cAAA,YAAAA,CAAA;MAAA,OAAAC,cAAA;IAAA;EAAA;EAAA,OAAAA,cAAA;AAAA;AAAAD,cAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6CAE,OAAA,CAAAC,iBAAA,GAAAA,iBAAA;AAcC;AAAAH,cAAA,GAAAI,CAAA;AAQDF,OAAA,CAAAG,SAAA,GAAAA,SAAA;AAIC;AAAAL,cAAA,GAAAI,CAAA;AAmBDF,OAAA,CAAAI,aAAA,GAAAA,aAAA;AA5FA,IAAIC,SAAS;AAAA;AAAA,CAAAP,cAAA,GAAAI,CAAA,QAAkB,EAAE;AAEjC;;;;;AAKA,SAASI,QAAQA,CAACC,IAAS;EAAA;EAAAT,cAAA,GAAAU,CAAA;EAAAV,cAAA,GAAAI,CAAA;EACzB,OAAO,2BAAAJ,cAAA,GAAAW,CAAA,UAAAF,IAAI;EAAA;EAAA,CAAAT,cAAA,GAAAW,CAAA,UAAI,OAAOF,IAAI,KAAK,QAAQ;EAAA;EAAA,CAAAT,cAAA,GAAAW,CAAA,UAAI,CAACC,KAAK,CAACC,OAAO,CAACJ,IAAI,CAAC;AACjE;AAEA;;;;;;AAMA,SAASK,kBAAkBA,CAACC,MAAW,EAAE,GAAGC,OAAc;EAAA;EAAAhB,cAAA,GAAAU,CAAA;EAAAV,cAAA,GAAAI,CAAA;EACxD,IAAI,CAACY,OAAO,CAACC,MAAM,EAAE;IAAA;IAAAjB,cAAA,GAAAW,CAAA;IAAAX,cAAA,GAAAI,CAAA;IAAA,OAAOW,MAAM;EAAA,CAAC;EAAA;EAAA;IAAAf,cAAA,GAAAW,CAAA;EAAA;EACnC,MAAMO,MAAM;EAAA;EAAA,CAAAlB,cAAA,GAAAI,CAAA,QAAGY,OAAO,CAACG,KAAK,EAAE;EAE9B,IAAIC,QAAQ;EAAC;EAAApB,cAAA,GAAAI,CAAA;EACb,IAAI,OAAOG,SAAS,CAACc,GAAG,KAAK,UAAU,EAAE;IAAA;IAAArB,cAAA,GAAAW,CAAA;IAAAX,cAAA,GAAAI,CAAA;IACvCgB,QAAQ,GAAGb,SAAS,CAACc,GAAG,CAACN,MAAM,EAAEG,MAAM,CAAC;EAC1C,CAAC;EAAA;EAAA;IAAAlB,cAAA,GAAAW,CAAA;EAAA;EAAAX,cAAA,GAAAI,CAAA;EACD,IAAIgB,QAAQ,KAAKE,SAAS,EAAE;IAAA;IAAAtB,cAAA,GAAAW,CAAA;IAAAX,cAAA,GAAAI,CAAA;IAAAW,MAAM,GAAGK,QAAQ;EAAA,CAAC,MACzC;IAAA;IAAApB,cAAA,GAAAW,CAAA;IAAAX,cAAA,GAAAI,CAAA;IAAA;IAAI;IAAA,CAAAJ,cAAA,GAAAW,CAAA,WAAAH,QAAQ,CAACO,MAAM,CAAC;IAAA;IAAA,CAAAf,cAAA,GAAAW,CAAA,WAAIH,QAAQ,CAACU,MAAM,CAAC,GAAE;MAAA;MAAAlB,cAAA,GAAAW,CAAA;MAAAX,cAAA,GAAAI,CAAA;MAC7C,KAAK,MAAMmB,GAAG,IAAIL,MAAM,EAAE;QAAA;QAAAlB,cAAA,GAAAI,CAAA;QACxB,IAAII,QAAQ,CAACU,MAAM,CAACK,GAAG,CAAC,CAAC,EAAE;UAAA;UAAAvB,cAAA,GAAAW,CAAA;UAAAX,cAAA,GAAAI,CAAA;UACzB,IAAI,CAACW,MAAM,CAACQ,GAAG,CAAC,EAAE;YAAA;YAAAvB,cAAA,GAAAW,CAAA;YAAAX,cAAA,GAAAI,CAAA;YAAAoB,MAAM,CAACC,MAAM,CAACV,MAAM,EAAE;cAAE,CAACQ,GAAG,GAAG;YAAE,CAAE,CAAC;UAAA,CAAC;UAAA;UAAA;YAAAvB,cAAA,GAAAW,CAAA;UAAA;UAAAX,cAAA,GAAAI,CAAA;UACvDU,kBAAkB,CAACC,MAAM,CAACQ,GAAG,CAAC,EAAEL,MAAM,CAACK,GAAG,CAAC,CAAC;QAC9C,CAAC,MAAM;UAAA;UAAAvB,cAAA,GAAAW,CAAA;UAAAX,cAAA,GAAAI,CAAA;UAAA,IAAI,OAAOc,MAAM,CAACK,GAAG,CAAC,KAAK,WAAW,EAAE;YAAA;YAAAvB,cAAA,GAAAW,CAAA;YAAAX,cAAA,GAAAI,CAAA;YAC7CoB,MAAM,CAACC,MAAM,CAACV,MAAM,EAAE;cAAE,CAACQ,GAAG,GAAGL,MAAM,CAACK,GAAG;YAAC,CAAE,CAAC;UAC/C,CAAC;UAAA;UAAA;YAAAvB,cAAA,GAAAW,CAAA;UAAA;QAAD;MACF;IACF,CAAC;IAAA;IAAA;MAAAX,cAAA,GAAAW,CAAA;IAAA;EAAD;EAAC;EAAAX,cAAA,GAAAI,CAAA;EAED,OAAOU,kBAAkB,CAACC,MAAM,EAAE,GAAGC,OAAO,CAAC;AAC/C;AAEA;;;;;;;AAOA,SAAsBb,iBAAiBA,CAAAuB,QAAA,EAAAC,EAAA;EAAA;EAAA3B,cAAA,GAAAU,CAAA;EAAAV,cAAA,GAAAI,CAAA;uDACrCW,MAAW,EACX;IAAEa,QAAQ;IAAEC,KAAK;IAAA;IAAA,CAAA7B,cAAA,GAAAW,CAAA,WAAG,EAAE;IAAEmB;EAAI,CAAgB,EAC5CC,SAAS;EAAA;EAAA,CAAA/B,cAAA,GAAAW,CAAA,WAAG,EAAE;IAAA;IAAAX,cAAA,GAAAU,CAAA;IAAAV,cAAA,GAAAI,CAAA;IAEd,KAAK,MAAMmB,GAAG,IAAIR,MAAM,EAAE;MAAA;MAAAf,cAAA,GAAAI,CAAA;MACxB;MAAI;MAAA,CAAAJ,cAAA,GAAAW,CAAA,YAACkB,KAAK,CAACG,QAAQ,CAACT,GAAG,CAAC;MAAA;MAAA,CAAAvB,cAAA,GAAAW,CAAA,WAAI,OAAOI,MAAM,CAACQ,GAAG,CAAC,KAAK,QAAQ,GAAE;QAAA;QAAAvB,cAAA,GAAAW,CAAA;QAC3D,MAAMsB,QAAQ;QAAA;QAAA,CAAAjC,cAAA,GAAAI,CAAA,QAAGQ,KAAK,CAACC,OAAO,CAACE,MAAM,CAAC;QAAA;QAAA,CAAAf,cAAA,GAAAW,CAAA,WAAGoB,SAAS,GAAG,GAAG,GAAGR,GAAG;QAAA;QAAA,CAAAvB,cAAA,GAAAW,CAAA,WAAGY,GAAG;QACpE,MAAMW,WAAW;QAAA;QAAA,CAAAlC,cAAA,GAAAI,CAAA,QAAG,MAAMwB,QAAQ,CAACK,QAAQ,EAAElB,MAAM,CAACQ,GAAG,CAAC,EAAEO,IAAI,CAAC;QAAC;QAAA9B,cAAA,GAAAI,CAAA;QAChE,IAAI8B,WAAW,EAAE;UAAA;UAAAlC,cAAA,GAAAW,CAAA;UAAAX,cAAA,GAAAI,CAAA;UAAAU,kBAAkB,CAACC,MAAM,CAACQ,GAAG,CAAC,EAAEW,WAAW,CAAC;QAAA,CAAC;QAAA;QAAA;UAAAlC,cAAA,GAAAW,CAAA;QAAA;QAAAX,cAAA,GAAAI,CAAA;QAC9D,MAAMD,iBAAiB,CAACY,MAAM,CAACQ,GAAG,CAAC,EAAE;UAAEK,QAAQ;UAAEC,KAAK;UAAEC;QAAI,CAAE,EAAEP,GAAG,CAAC;MACtE,CAAC;MAAA;MAAA;QAAAvB,cAAA,GAAAW,CAAA;MAAA;IACH;IAAC;IAAAX,cAAA,GAAAI,CAAA;IACD,OAAOW,MAAM;EACf,CAAC;;AAED;;;;;;AAMA,SAAgBV,SAASA,CAACU,MAAW,EAAE,GAAGC,OAAc;EAAA;EAAAhB,cAAA,GAAAU,CAAA;EACtD,MAAMyB,YAAY;EAAA;EAAA,CAAAnC,cAAA,GAAAI,CAAA,QAAGU,kBAAkB,CAACC,MAAM,EAAE,GAAGC,OAAO,CAAC;EAAC;EAAAhB,cAAA,GAAAI,CAAA;EAC5DG,SAAS,GAAG,EAAE;EAAC;EAAAP,cAAA,GAAAI,CAAA;EACf,OAAO+B,YAAY;AACrB;AAEA;;;;;;AAAA;AAAAnC,cAAA,GAAAI,CAAA;AAMAC,SAAS,CAAC+B,SAAS,GAAIC,MAAqB,IAAI;EAAA;EAAArC,cAAA,GAAAU,CAAA;EAAAV,cAAA,GAAAI,CAAA;EAC9CG,SAAS,GAAG8B,MAAM;AACpB,CAAC;AAED;;;;;;;AAOA,SAAgB/B,aAAaA,CAACgC,IAAS,EAAEC,OAAA;AAAA;AAAA,CAAAvC,cAAA,GAAAW,CAAA,WAA4B,EAAE;EAAA;EAAAX,cAAA,GAAAU,CAAA;EACrE,MAAM8B,OAAO;EAAA;EAAA,CAAAxC,cAAA,GAAAI,CAAA,QAAGqC,IAAI,CAACC,KAAK,CAACD,IAAI,CAACE,SAAS,CAACL,IAAI,CAAC,CAAC;EAChD,MAAMM,UAAU;EAAA;EAAA,CAAA5C,cAAA,GAAAI,CAAA,QAAwB,EAAE;EAAC;EAAAJ,cAAA,GAAAI,CAAA;EAE3C,MAAMyC,SAAS,GAAGA,CAChBC,GAAQ,EACRvB,GAAA;EAAA;EAAA,CAAAvB,cAAA,GAAAW,CAAA,WAAqB,IAAI,GACzBoC,SAAA;EAAA;EAAA,CAAA/C,cAAA,GAAAW,CAAA,WAAiB,IAAI,GACrBoB,SAAA;EAAA;EAAA,CAAA/B,cAAA,GAAAW,CAAA,WAA2B,IAAI,GAC/BqC,IAAA;EAAA;EAAA,CAAAhD,cAAA,GAAAW,CAAA,WAAe,EAAE,MACf;IAAA;IAAAX,cAAA,GAAAU,CAAA;IAAAV,cAAA,GAAAI,CAAA;IACF,IAAI,OAAOmC,OAAO,CAACU,UAAU,KAAK,UAAU,EAAE;MAAA;MAAAjD,cAAA,GAAAW,CAAA;MAC5C,MAAMiB,QAAQ;MAAA;MAAA,CAAA5B,cAAA,GAAAI,CAAA,QAAGmC,OAAO,CAACU,UAAU,CAAC;QAAEC,KAAK,EAAEJ,GAAG;QAAEvB,GAAG;QAAEwB,SAAS;QAAEhB,SAAS;QAAEiB;MAAI,CAAE,CAAC;MAAC;MAAAhD,cAAA,GAAAI,CAAA;MACrF;MAAI;MAAA,CAAAJ,cAAA,GAAAW,CAAA,WAAAiB,QAAQ;MAAA;MAAA,CAAA5B,cAAA,GAAAW,CAAA,WAAI,OAAOiB,QAAQ,KAAK,QAAQ,GAAE;QAAA;QAAA5B,cAAA,GAAAW,CAAA;QAAAX,cAAA,GAAAI,CAAA;QAC5C,IAAIwB,QAAQ,CAACuB,OAAO,EAAE;UAAA;UAAAnD,cAAA,GAAAW,CAAA;UAAAX,cAAA,GAAAI,CAAA;UAAA2C,SAAS,CAACxB,GAAa,CAAC,GAAGK,QAAQ,CAACuB,OAAO;QAAA,CAAC,MAC7D;UAAA;UAAAnD,cAAA,GAAAW,CAAA;UAAAX,cAAA,GAAAI,CAAA;UAAA,IAAIwB,QAAQ,CAACwB,KAAK,EAAE;YAAA;YAAApD,cAAA,GAAAW,CAAA;YAAAX,cAAA,GAAAI,CAAA;YAAAC,SAAS,CAACyC,GAAG,EAAElB,QAAQ,CAACwB,KAAK,CAAC;UAAA,CAAC,MACnD;YAAA;YAAApD,cAAA,GAAAW,CAAA;YAAAX,cAAA,GAAAI,CAAA;YAAA,IAAIwB,QAAQ,CAACyB,MAAM,EAAE;cAAA;cAAArD,cAAA,GAAAW,CAAA;cAAAX,cAAA,GAAAI,CAAA;cAAA,OAAO2C,SAAS,CAACxB,GAAa,CAAC;YAAA,CAAC;YAAA;YAAA;cAAAvB,cAAA,GAAAW,CAAA;YAAA;UAAD;QAAA;MAC3D,CAAC;MAAA;MAAA;QAAAX,cAAA,GAAAW,CAAA;MAAA;IACH,CAAC;IAAA;IAAA;MAAAX,cAAA,GAAAW,CAAA;IAAA;IAAAX,cAAA,GAAAI,CAAA;IAED,KAAK,MAAMkD,QAAQ,IAAIR,GAAG,EAAE;MAC1B,MAAMS,KAAK;MAAA;MAAA,CAAAvD,cAAA,GAAAI,CAAA,QAAG0C,GAAG,CAACQ,QAAQ,CAAC;MAC3B,MAAME,OAAO;MAAA;MAAA,CAAAxD,cAAA,GAAAI,CAAA,QAAG4C,IAAI;MAAA;MAAA,CAAAhD,cAAA,GAAAW,CAAA,WAAG,GAAGqC,IAAI,IAAIM,QAAQ,EAAE;MAAA;MAAA,CAAAtD,cAAA,GAAAW,CAAA,WAAG2C,QAAQ;MAAC;MAAAtD,cAAA,GAAAI,CAAA;MACxD;MAAI;MAAA,CAAAJ,cAAA,GAAAW,CAAA,kBAAO4B,OAAO,CAACkB,MAAM,KAAK,QAAQ;MAAA;MAAA,CAAAzD,cAAA,GAAAW,CAAA,WAAI2C,QAAQ,KAAKf,OAAO,CAACkB,MAAM,GAAE;QAAA;QAAAzD,cAAA,GAAAW,CAAA;QAAAX,cAAA,GAAAI,CAAA;QACrEwC,UAAU,CAACY,OAAO,CAAC,GAAGD,KAAK;QAAC;QAAAvD,cAAA,GAAAI,CAAA;QAC5B;MACF,CAAC,MAAM;QAAA;QAAAJ,cAAA,GAAAW,CAAA;QAAAX,cAAA,GAAAI,CAAA;QAAA;QAAI;QAAA,CAAAJ,cAAA,GAAAW,CAAA,WAAAC,KAAK,CAACC,OAAO,CAAC0B,OAAO,CAACkB,MAAM,CAAC;QAAA;QAAA,CAAAzD,cAAA,GAAAW,CAAA,WAAI4B,OAAO,CAACkB,MAAM,CAACzB,QAAQ,CAACsB,QAAQ,CAAC,GAAE;UAAA;UAAAtD,cAAA,GAAAW,CAAA;UAAAX,cAAA,GAAAI,CAAA;UAC7EwC,UAAU,CAACY,OAAO,CAAC,GAAGD,KAAK;UAAC;UAAAvD,cAAA,GAAAI,CAAA;UAC5B;QACF,CAAC,MAAM;UAAA;UAAAJ,cAAA,GAAAW,CAAA;UAAAX,cAAA,GAAAI,CAAA;UAAA;UACL;UAAA,CAAAJ,cAAA,GAAAW,CAAA,kBAAO4B,OAAO,CAACkB,MAAM,KAAK,UAAU;UAAA;UAAA,CAAAzD,cAAA,GAAAW,CAAA,WACpC,CAAC4B,OAAO,CAACkB,MAAM,CAAC;YAAEP,KAAK,EAAEK,KAAK;YAAEhC,GAAG,EAAE+B,QAAQ;YAAEP,SAAS,EAAED,GAAG;YAAEf,SAAS,EAAER,GAAG;YAAEyB,IAAI,EAAEQ;UAAO,CAAE,CAAC,GAC/F;YAAA;YAAAxD,cAAA,GAAAW,CAAA;YAAAX,cAAA,GAAAI,CAAA;YACAwC,UAAU,CAACY,OAAO,CAAC,GAAGD,KAAK;YAAC;YAAAvD,cAAA,GAAAI,CAAA;YAC5B;UACF,CAAC;UAAA;UAAA;YAAAJ,cAAA,GAAAW,CAAA;UAAA;QAAD;MAAA;MAAC;MAAAX,cAAA,GAAAI,CAAA;MAED;MAAI;MAAA,CAAAJ,cAAA,GAAAW,CAAA,kBAAO4C,KAAK,KAAK,QAAQ;MAAA;MAAA,CAAAvD,cAAA,GAAAW,CAAA,WAAI4C,KAAK,KAAK,IAAI,GAAE;QAAA;QAAAvD,cAAA,GAAAW,CAAA;QAAAX,cAAA,GAAAI,CAAA;QAC/C,IAAI,OAAOmC,OAAO,CAACmB,UAAU,KAAK,UAAU,EAAE;UAAA;UAAA1D,cAAA,GAAAW,CAAA;UAC5C,MAAMiB,QAAQ;UAAA;UAAA,CAAA5B,cAAA,GAAAI,CAAA,QAAGmC,OAAO,CAACmB,UAAU,CAAC;YAAER,KAAK,EAAEK,KAAK;YAAEhC,GAAG,EAAE+B,QAAQ;YAAEP,SAAS,EAAED,GAAG;YAAEf,SAAS,EAAER,GAAG;YAAEyB,IAAI,EAAEQ;UAAO,CAAE,CAAC;UAAC;UAAAxD,cAAA,GAAAI,CAAA;UACpH;UAAI;UAAA,CAAAJ,cAAA,GAAAW,CAAA,WAAAiB,QAAQ;UAAA;UAAA,CAAA5B,cAAA,GAAAW,CAAA,WAAI,OAAOiB,QAAQ,KAAK,QAAQ,GAAE;YAAA;YAAA5B,cAAA,GAAAW,CAAA;YAAAX,cAAA,GAAAI,CAAA;YAC5C,IAAIwB,QAAQ,CAACuB,OAAO,EAAE;cAAA;cAAAnD,cAAA,GAAAW,CAAA;cAAAX,cAAA,GAAAI,CAAA;cAAA0C,GAAG,CAACQ,QAAQ,CAAC,GAAG1B,QAAQ,CAACuB,OAAO;YAAA,CAAC,MAClD;cAAA;cAAAnD,cAAA,GAAAW,CAAA;cAAAX,cAAA,GAAAI,CAAA;cAAA,IAAIwB,QAAQ,CAACwB,KAAK,EAAE;gBAAA;gBAAApD,cAAA,GAAAW,CAAA;gBAAAX,cAAA,GAAAI,CAAA;gBAAA0C,GAAG,CAACQ,QAAQ,CAAC,GAAGjD,SAAS,CAACkD,KAAK,EAAE3B,QAAQ,CAACwB,KAAK,CAAC;cAAA,CAAC,MACrE;gBAAA;gBAAApD,cAAA,GAAAW,CAAA;gBAAAX,cAAA,GAAAI,CAAA;gBAAA,IAAIwB,QAAQ,CAACyB,MAAM,EAAE;kBAAA;kBAAArD,cAAA,GAAAW,CAAA;kBAAAX,cAAA,GAAAI,CAAA;kBAAE,OAAO0C,GAAG,CAACQ,QAAQ,CAAC;kBAAC;kBAAAtD,cAAA,GAAAI,CAAA;kBAAC;gBAAU,CAAC;gBAAA;gBAAA;kBAAAJ,cAAA,GAAAW,CAAA;gBAAA;cAAD;YAAA;UAC9D,CAAC;UAAA;UAAA;YAAAX,cAAA,GAAAW,CAAA;UAAA;QACH,CAAC;QAAA;QAAA;UAAAX,cAAA,GAAAW,CAAA;QAAA;QAAAX,cAAA,GAAAI,CAAA;QACDyC,SAAS,CAACU,KAAK,EAAED,QAAQ,EAAER,GAAG,EAAEvB,GAAG,EAAEiC,OAAO,CAAC;MAC/C,CAAC,MAAM;QAAA;QAAAxD,cAAA,GAAAW,CAAA;QAAAX,cAAA,GAAAI,CAAA;QACL,IAAImC,OAAO,CAACoB,aAAa,EAAE;UAAA;UAAA3D,cAAA,GAAAW,CAAA;UACzB,MAAMiB,QAAQ;UAAA;UAAA,CAAA5B,cAAA,GAAAI,CAAA,QAAGmC,OAAO,CAACoB,aAAa,CAAC;YAAET,KAAK,EAAEK,KAAK;YAAEhC,GAAG,EAAE+B,QAAQ;YAAEP,SAAS,EAAED,GAAG;YAAEf,SAAS,EAAER,GAAG;YAAEyB,IAAI,EAAEQ;UAAO,CAAE,CAAC;UAAC;UAAAxD,cAAA,GAAAI,CAAA;UACvH;UAAI;UAAA,CAAAJ,cAAA,GAAAW,CAAA,WAAAiB,QAAQ;UAAA;UAAA,CAAA5B,cAAA,GAAAW,CAAA,WAAI,OAAOiB,QAAQ,KAAK,QAAQ,GAAE;YAAA;YAAA5B,cAAA,GAAAW,CAAA;YAAAX,cAAA,GAAAI,CAAA;YAC5C,IAAIwB,QAAQ,CAACuB,OAAO,EAAE;cAAA;cAAAnD,cAAA,GAAAW,CAAA;cAAAX,cAAA,GAAAI,CAAA;cAAA0C,GAAG,CAACQ,QAAQ,CAAC,GAAG1B,QAAQ,CAACuB,OAAO;YAAA,CAAC,MAClD;cAAA;cAAAnD,cAAA,GAAAW,CAAA;cAAAX,cAAA,GAAAI,CAAA;cAAA,IAAIwB,QAAQ,CAACwB,KAAK,EAAE;gBAAA;gBAAApD,cAAA,GAAAW,CAAA;gBAAAX,cAAA,GAAAI,CAAA;gBAAA0C,GAAG,CAACQ,QAAQ,CAAC,IAAI1B,QAAQ,CAACwB,KAAK;cAAA,CAAC,MACpD;gBAAA;gBAAApD,cAAA,GAAAW,CAAA;gBAAAX,cAAA,GAAAI,CAAA;gBAAA,IAAIwB,QAAQ,CAACyB,MAAM,EAAE;kBAAA;kBAAArD,cAAA,GAAAW,CAAA;kBAAAX,cAAA,GAAAI,CAAA;kBAAE,OAAO0C,GAAG,CAACQ,QAAQ,CAAC;kBAAC;kBAAAtD,cAAA,GAAAI,CAAA;kBAAC;gBAAU,CAAC;gBAAA;gBAAA;kBAAAJ,cAAA,GAAAW,CAAA;gBAAA;cAAD;YAAA;UAC9D,CAAC;UAAA;UAAA;YAAAX,cAAA,GAAAW,CAAA;UAAA;QACH,CAAC;QAAA;QAAA;UAAAX,cAAA,GAAAW,CAAA;QAAA;QAAAX,cAAA,GAAAI,CAAA;QACDwC,UAAU,CAACY,OAAO,CAAC,GAAGD,KAAK;MAC7B;IACF;IAAC;IAAAvD,cAAA,GAAAI,CAAA;IAED,IAAI,OAAOmC,OAAO,CAACqB,SAAS,KAAK,UAAU,EAAE;MAAA;MAAA5D,cAAA,GAAAW,CAAA;MAC3C,MAAMiB,QAAQ;MAAA;MAAA,CAAA5B,cAAA,GAAAI,CAAA,QAAGmC,OAAO,CAACqB,SAAS,CAAC;QAAEV,KAAK,EAAEJ,GAAG;QAAEvB,GAAG;QAAEwB,SAAS;QAAEhB,SAAS;QAAEiB;MAAI,CAAE,CAAC;MAAC;MAAAhD,cAAA,GAAAI,CAAA;MACpF;MAAI;MAAA,CAAAJ,cAAA,GAAAW,CAAA,WAAAiB,QAAQ;MAAA;MAAA,CAAA5B,cAAA,GAAAW,CAAA,WAAI,OAAOiB,QAAQ,KAAK,QAAQ,GAAE;QAAA;QAAA5B,cAAA,GAAAW,CAAA;QAAAX,cAAA,GAAAI,CAAA;QAC5C,IAAIwB,QAAQ,CAACuB,OAAO,EAAE;UAAA;UAAAnD,cAAA,GAAAW,CAAA;UAAAX,cAAA,GAAAI,CAAA;UAAA2C,SAAS,CAACxB,GAAa,CAAC,GAAGK,QAAQ,CAACuB,OAAO;QAAA,CAAC,MAC7D;UAAA;UAAAnD,cAAA,GAAAW,CAAA;UAAAX,cAAA,GAAAI,CAAA;UAAA,IAAIwB,QAAQ,CAACwB,KAAK,EAAE;YAAA;YAAApD,cAAA,GAAAW,CAAA;YAAAX,cAAA,GAAAI,CAAA;YAAAC,SAAS,CAACyC,GAAG,EAAElB,QAAQ,CAACwB,KAAK,CAAC;UAAA,CAAC,MACnD;YAAA;YAAApD,cAAA,GAAAW,CAAA;YAAAX,cAAA,GAAAI,CAAA;YAAA,IAAIwB,QAAQ,CAACyB,MAAM,EAAE;cAAA;cAAArD,cAAA,GAAAW,CAAA;cAAAX,cAAA,GAAAI,CAAA;cAAA,OAAO2C,SAAS,CAACxB,GAAa,CAAC;YAAA,CAAC;YAAA;YAAA;cAAAvB,cAAA,GAAAW,CAAA;YAAA;UAAD;QAAA;MAC3D,CAAC;MAAA;MAAA;QAAAX,cAAA,GAAAW,CAAA;MAAA;IACH,CAAC;IAAA;IAAA;MAAAX,cAAA,GAAAW,CAAA;IAAA;EACH,CAAC;EAED,MAAMkD,OAAO;EAAA;EAAA,CAAA7D,cAAA,GAAAI,CAAA;EAAG;EAAA,CAAAJ,cAAA,GAAAW,CAAA,WAAA4B,OAAO,CAAChB,GAAG;EAAA;EAAA,CAAAvB,cAAA,GAAAW,CAAA,WAAI,OAAO;EACtC,MAAMmD,OAAO;EAAA;EAAA,CAAA9D,cAAA,GAAAI,CAAA;EAAQ;EAAA,CAAAJ,cAAA,GAAAW,CAAA,WAAA4B,OAAO,CAACwB,IAAI;EAAA;EAAA,CAAA/D,cAAA,GAAAW,CAAA,WAAI,EAAE;EAAC;EAAAX,cAAA,GAAAI,CAAA;EACxCyC,SAAS,CAACL,OAAO,EAAEqB,OAAO,EAAEC,OAAO,CAAC;EAAC;EAAA9D,cAAA,GAAAI,CAAA;EACrC,OAAO,CAACoC,OAAO,EAAEsB,OAAO,CAACD,OAAO,CAAC,CAAC;AACpC","ignoreList":[]}