{"version":3,"sources":["../../../src/components/base/utils.ts","../../../src/components/data-explorer/appearanceContext.tsx","../../../src/components/data-explorer/utils.ts","../../../src/components/data-explorer/theme.ts","../../../src/locale/en-US.ts","../../../src/locale/resolve-locale.ts","../../../src/provider/context.ts","../../../src/components/data-explorer/DataExplorerViewTree.tsx","../../../src/components/navigation-sidebar/unified-appearance.ts","../../../src/components/navigation-sidebar/NavigationSidebar.tsx"],"names":["cn","createContext","useContext","jsx","useMemo","jsxs","MoreIcon","Fragment","DropdownMenu2","useState","useEffect"],"mappings":";;;;;;AAGO,SAAS,MAAM,KAAA,EAAiD;AACrE,EAAA,OAAO,QAAQ,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA,CAAE,IAAA,CAAK,GAAG,CAAC,CAAA;AAChD;AAEO,SAAS,kBAAkB,IAAA,EAAiB;AACjD,EAAA,OAAO,IAAA,KAAS,MAAA,IAAa,IAAA,KAAS,IAAA,IAAQ,OAAO,IAAA,KAAS,SAAA;AAChE;ACLA,IAAM,6BAAA,GAAgC,cAEpC,MAAS,CAAA;AAgBJ,SAAS,0BACd,UAAA,EACoC;AACpC,EAAA,MAAM,mBAAA,GAAsB,WAAW,6BAA6B,CAAA;AACpE,EAAA,OAAO,QAAQ,MAAM;AACnB,IAAA,IAAI,CAAC,YAAY,OAAO,mBAAA;AACxB,IAAA,IAAI,CAAC,qBAAqB,OAAO,UAAA;AACjC,IAAA,OAAO;AAAA,MACL,GAAG,mBAAA;AAAA,MACH,GAAG,UAAA;AAAA,MACH,OAAO,EAAE,GAAG,oBAAoB,KAAA,EAAO,GAAG,WAAW,KAAA,EAAM;AAAA,MAC3D,QAAQ,EAAE,GAAG,oBAAoB,MAAA,EAAQ,GAAG,WAAW,MAAA;AAAO,KAChE;AAAA,EACF,CAAA,EAAG,CAAC,UAAA,EAAY,mBAAmB,CAAC,CAAA;AACtC;;;AClCO,SAASA,OAAM,KAAA,EAAiD;AACrE,EAAA,OAAO,KAAA,CAAM,MAAA,CAAO,OAAO,CAAA,CAAE,KAAK,GAAG,CAAA;AACvC;AAEO,SAAS,wBAAA,CACd,OACA,OAAA,EACoB;AACpB,EAAA,IAAI,OAAO,UAAU,UAAA,EAAY;AAC/B,IAAA,OAAQ,MAAgD,OAAmB,CAAA;AAAA,EAC7E;AAEA,EAAA,OAAO,KAAA;AACT;;;ACEA,IAAM,cAAuC,EAAC;AAE9C,IAAM,SAAA,GAA2B;AAAA,EAC/B,WAAA,EACE,qHAAA;AAAA,EACF,WAAA,EACE,kFAAA;AAAA,EACF,cAAA,EAAgB,yBAAA;AAAA,EAChB,aAAA,EACE,yGAAA;AAAA,EACF,iBAAA,EAAmB,4CAAA;AAAA,EACnB,kBAAA,EACE,sFAAA;AAAA,EACF,iBAAA,EACE,uEAAA;AAAA,EACF,iBAAA,EACE,iNAAA;AAAA,EACF,uBAAA,EAAyB,0BAAA;AAAA,EACzB,cAAA,EAAgB,yBAAA;AAAA,EAChB,aAAA,EAAe,2CAAA;AAAA,EACf,gBAAA,EAAkB,kCAAA;AAAA,EAClB,gBAAA,EAAkB,kDAAA;AAAA,EAClB,iBAAA,EAAmB,kCAAA;AAAA,EACnB,gBAAA,EACE,oNAAA;AAAA,EACF,mBAAA,EACE,gEAAA;AAAA,EACF,mBAAA,EACE,kEAAA;AAAA,EACF,kBAAA,EACE,uFAAA;AAAA,EACF,iBAAA,EACE,4FAAA;AAAA,EACF,kBAAA,EAAoB,wBAAA;AAAA,EACpB,oBAAA,EAAsB,+BAAA;AAAA,EACtB,gBAAA,EAAkB,UAAA;AAAA,EAClB,kBAAA,EAAoB,8CAAA;AAAA,EACpB,aAAA,EACE,4UAAA;AAAA,EACF,iBAAA,EAAmB,0DAAA;AAAA,EACnB,kBAAA,EAAoB,kBAAA;AAAA,EACpB,oBAAA,EACE,8UAAA;AAAA,EACF,kBAAA,EAAoB,0CAAA;AAAA,EACpB,eAAA,EACE,oTAAA;AAAA,EACF,wBAAA,EACE,2GAAA;AAAA,EACF,oBAAA,EAAsB,kBAAA;AAAA,EACtB,WAAA,EACE,+OAAA;AAAA,EACF,WAAA,EACE,6GAAA;AAAA,EACF,SAAA,EAAW,uDAAA;AAAA,EACX,aAAA,EAAe,2BAAA;AAAA,EACf,QAAA,EACE,uOAAA;AAAA,EACF,eAAA,EAAiB,iCAAA;AAAA,EACjB,cAAA,EAAgB,mDAAA;AAAA,EAChB,aAAA,EAAe,uBAAA;AAAA,EACf,YAAA,EAAc,0DAAA;AAAA,EACd,aAAA,EAAe,UAAA;AAAA,EACf,QAAA,EACE,yHAAA;AAAA,EACF,eAAA,EAAiB,gCAAA;AAAA,EACjB,YAAA,EAAc,qBAAA;AAAA,EACd,YAAA,EAAc,YAAA;AAAA,EACd,UAAA,EAAY,KAAA;AAAA,EACZ,SAAA,EAAW,0BAAA;AAAA,EACX,UAAA,EAAY,8CAAA;AAAA,EACZ,cAAA,EAAgB,mEAAA;AAAA,EAChB,gBAAA,EAAkB,8BAAA;AAAA,EAClB,UAAA,EAAY,kEAAA;AAAA,EACZ,aAAA,EACE,yEAAA;AAAA,EACF,gBAAA,EACE,+GAAA;AAAA,EACF,oBAAA,EACE,gFAAA;AAAA,EACF,WAAA,EACE,6FAAA;AAAA,EACF,kBAAA,EACE,6GAAA;AAAA,EACF,cAAA,EAAgB,iDAAA;AAAA,EAChB,eAAA,EAAiB,oDAAA;AAAA,EACjB,gBAAA,EACE,8IAAA;AAAA,EACF,oBAAA,EACE,oKAAA;AAAA,EACF,uBAAA,EACE,yPAAA;AAAA,EACF,UAAA,EAAY,oDAAA;AAAA,EACZ,YAAA,EACE,gGAAA;AAAA,EACF,aAAA,EACE,6FAAA;AAAA,EACF,gBAAA,EACE,2FAAA;AAAA,EACF,sBAAA,EACE,oLAAA;AAAA,EACF,iBAAA,EACE,0KAAA;AAAA,EACF,kBAAA,EACE,4EAAA;AAAA,EACF,kBAAA,EACE,8DAAA;AAAA,EACF,gBAAA,EACE,gFAAA;AAAA,EACF,oBAAA,EACE,6DAAA;AAAA,EACF,aAAA,EAAe,8CAAA;AAAA,EACf,eAAA,EACE,2DAAA;AAAA,EACF,cAAA,EAAgB,gCAAA;AAAA,EAChB,iBAAA,EAAmB,oCAAA;AAAA,EACnB,gBAAA,EAAkB,kCAAA;AAAA,EAClB,aAAA,EAAe,gCAAA;AAAA,EACf,eAAA,EAAiB,UAAA;AAAA,EACjB,QAAA,EAAU,2CAAA;AAAA,EACV,SAAA,EAAW,mBAAA;AAAA,EACX,eAAA,EAAiB,kDAAA;AAAA,EACjB,qBAAA,EACE,mKAAA;AAAA,EACF,gBAAA,EAAkB,qBAAA;AAAA,EAClB,gBAAA,EACE,wGAAA;AAAA,EACF,QAAA,EAAU,SAAA;AAAA,EACV,cAAA,EACE,iRAAA;AAAA,EACF,gBAAA,EAAkB,kCAAA;AAAA,EAClB,gBAAA,EAAkB,+BAAA;AAAA,EAClB,gBAAA,EAAkB,YAAA;AAAA,EAClB,cAAA,EACE,gJAAA;AAAA,EACF,YAAA,EACE,sHAAA;AAAA,EACF,aAAA,EAAe,kBAAA;AAAA,EACf,mBAAA,EAAqB,+CAAA;AAAA,EACrB,YAAA,EAAc,6CAAA;AAAA,EACd,aAAA,EACE,uHAAA;AAAA,EACF,eAAA,EACE,4GAAA;AAAA,EACF,gBAAA,EAAkB,4BAAA;AAAA,EAClB,kBAAA,EACE,gOAAA;AAAA,EACF,SAAA,EAAW,yCAAA;AAAA,EACX,SAAA,EAAW,yCAAA;AAAA,EACX,WAAA,EAAa;AACf,CAAA;AAEA,IAAM,YAAA,GAA6E;AAAA,EAEjF,KAAA,EAAO;AAAA,IACL,WAAA,EACE;AAAA;AAEN,CAAA;AAEA,IAAM,YAAA,GAA6E;AAAA,EACjF,OAAA,EAAS;AAAA,IACP,eAAA,EAAiB,WAAA;AAAA,IACjB,WAAA,EAAa,WAAA;AAAA,IACb,aAAA,EAAe,cAAA;AAAA,IACf,iBAAA,EAAmB,qBAAA;AAAA,IACnB,gBAAA,EAAkB,oBAAA;AAAA,IAClB,gBAAA,EAAkB,cAAA;AAAA,IAClB,aAAA,EAAe,oBAAA;AAAA,IACf,oBAAA,EAAsB,6BAAA;AAAA,IACtB,eAAA,EAAiB,oBAAA;AAAA,IACjB,WAAA,EAAa,SAAA;AAAA,IACb,UAAA,EAAY,WAAA;AAAA,IACZ,oBAAA,EAAsB,aAAA;AAAA,IACtB,qBAAA,EAAuB,aAAA;AAAA,IACvB,cAAA,EAAgB,iBAAA;AAAA,IAChB,SAAA,EAAW,gBAAA;AAAA,IACX,SAAA,EAAW,gBAAA;AAAA,IACX,WAAA,EAAa;AAAA,GACf;AAAA,EACA,SAAS,EAAC;AAAA,EACV,WAAA,EAAa;AAAA,IACX,eAAA,EAAiB,WAAA;AAAA,IACjB,WAAA,EAAa,WAAA;AAAA,IACb,aAAA,EAAe,MAAA;AAAA,IACf,iBAAA,EAAmB,eAAA;AAAA,IACnB,gBAAA,EAAkB,aAAA;AAAA,IAClB,gBAAA,EAAkB,gBAAA;AAAA,IAClB,aAAA,EAAe,aAAA;AAAA,IACf,oBAAA,EAAsB,sBAAA;AAAA,IACtB,eAAA,EAAiB,aAAA;AAAA,IACjB,WAAA,EAAa,SAAA;AAAA,IACb,UAAA,EAAY,aAAA;AAAA,IACZ,qBAAA,EAAuB,MAAA;AAAA,IACvB,cAAA,EAAgB;AAAA;AAEpB,CAAA;AAEA,IAAM,WAAA,GAA2E;AAAA,EAC/E,IAAA,EAAM;AAAA,IACJ,WAAA,EAAa,cAAA;AAAA,IACb,aAAA,EAAe,cAAA;AAAA,IACf,iBAAA,EAAmB,cAAA;AAAA,IACnB,iBAAA,EAAmB,cAAA;AAAA,IACnB,gBAAA,EAAkB,cAAA;AAAA,IAClB,aAAA,EAAe,cAAA;AAAA,IACf,oBAAA,EAAsB,cAAA;AAAA,IACtB,eAAA,EAAiB,cAAA;AAAA,IACjB,wBAAA,EAA0B,cAAA;AAAA,IAC1B,WAAA,EAAa,cAAA;AAAA,IACb,WAAA,EAAa,cAAA;AAAA,IACb,QAAA,EAAU,cAAA;AAAA,IACV,QAAA,EAAU,cAAA;AAAA,IACV,oBAAA,EAAsB,cAAA;AAAA,IACtB,aAAA,EAAe,cAAA;AAAA,IACf,gBAAA,EAAkB,cAAA;AAAA,IAClB,sBAAA,EAAwB,cAAA;AAAA,IACxB,iBAAA,EAAmB,cAAA;AAAA,IACnB,qBAAA,EAAuB,cAAA;AAAA,IACvB,cAAA,EAAgB,cAAA;AAAA,IAChB,cAAA,EAAgB,cAAA;AAAA,IAChB,aAAA,EAAe,cAAA;AAAA,IACf,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,WAAA,EAAa,YAAA;AAAA,IACb,aAAA,EAAe,YAAA;AAAA,IACf,iBAAA,EAAmB,YAAA;AAAA,IACnB,iBAAA,EAAmB,YAAA;AAAA,IACnB,gBAAA,EAAkB,YAAA;AAAA,IAClB,aAAA,EAAe,YAAA;AAAA,IACf,oBAAA,EAAsB,YAAA;AAAA,IACtB,eAAA,EAAiB,YAAA;AAAA,IACjB,wBAAA,EAA0B,YAAA;AAAA,IAC1B,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,QAAA,EAAU,YAAA;AAAA,IACV,QAAA,EAAU,YAAA;AAAA,IACV,qBAAA,EAAuB,YAAA;AAAA,IACvB,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,aAAA,EAAe,YAAA;AAAA,IACf,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,IAAI,EAAC;AAAA,EACL,EAAA,EAAI;AAAA,IACF,WAAA,EAAa,YAAA;AAAA,IACb,aAAA,EAAe,YAAA;AAAA,IACf,iBAAA,EAAmB,YAAA;AAAA,IACnB,iBAAA,EAAmB,YAAA;AAAA,IACnB,gBAAA,EAAkB,YAAA;AAAA,IAClB,aAAA,EAAe,YAAA;AAAA,IACf,oBAAA,EAAsB,YAAA;AAAA,IACtB,eAAA,EAAiB,YAAA;AAAA,IACjB,wBAAA,EAA0B,YAAA;AAAA,IAC1B,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,QAAA,EAAU,YAAA;AAAA,IACV,qBAAA,EAAuB,YAAA;AAAA,IACvB,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,aAAA,EAAe,YAAA;AAAA,IACf,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,EAAA,EAAI;AAAA,IACF,WAAA,EAAa,aAAA;AAAA,IACb,aAAA,EAAe,YAAA;AAAA,IACf,iBAAA,EAAmB,YAAA;AAAA,IACnB,iBAAA,EAAmB,YAAA;AAAA,IACnB,gBAAA,EAAkB,YAAA;AAAA,IAClB,aAAA,EAAe,YAAA;AAAA,IACf,oBAAA,EAAsB,YAAA;AAAA,IACtB,eAAA,EAAiB,YAAA;AAAA,IACjB,wBAAA,EAA0B,YAAA;AAAA,IAC1B,WAAA,EAAa,YAAA;AAAA,IACb,WAAA,EAAa,YAAA;AAAA,IACb,QAAA,EAAU,aAAA;AAAA,IACV,qBAAA,EAAuB,YAAA;AAAA,IACvB,cAAA,EAAgB,YAAA;AAAA,IAChB,cAAA,EAAgB,YAAA;AAAA,IAChB,aAAA,EAAe,YAAA;AAAA,IACf,kBAAA,EAAoB;AAAA,GACtB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,WAAA,EAAa,aAAA;AAAA,IACb,aAAA,EAAe,cAAA;AAAA,IACf,iBAAA,EAAmB,cAAA;AAAA,IACnB,iBAAA,EAAmB,cAAA;AAAA,IACnB,gBAAA,EAAkB,cAAA;AAAA,IAClB,aAAA,EAAe,cAAA;AAAA,IACf,oBAAA,EAAsB,cAAA;AAAA,IACtB,eAAA,EAAiB,cAAA;AAAA,IACjB,wBAAA,EAA0B,cAAA;AAAA,IAC1B,WAAA,EAAa,cAAA;AAAA,IACb,QAAA,EAAU,aAAA;AAAA,IACV,qBAAA,EAAuB,cAAA;AAAA,IACvB,cAAA,EAAgB,cAAA;AAAA,IAChB,cAAA,EAAgB,cAAA;AAAA,IAChB,aAAA,EAAe,cAAA;AAAA,IACf,kBAAA,EAAoB;AAAA;AAExB,CAAA;AAEA,IAAM,WAAA,GAA2E;AAAA,EAC/E,IAAA,EAAM;AAAA,IACJ,WAAA,EAAa,oBAAA;AAAA,IACb,WAAA,EAAa,oBAAA;AAAA,IACb,aAAA,EAAe,oBAAA;AAAA,IACf,iBAAA,EAAmB,oBAAA;AAAA,IACnB,gBAAA,EAAkB,oBAAA;AAAA,IAClB,aAAA,EAAe,oBAAA;AAAA,IACf,oBAAA,EAAsB,oBAAA;AAAA,IACtB,eAAA,EAAiB,oBAAA;AAAA,IACjB,QAAA,EAAU,oBAAA;AAAA,IACV,UAAA,EAAY,oBAAA;AAAA,IACZ,YAAA,EAAc,oBAAA;AAAA,IACd,kBAAA,EAAoB,oBAAA;AAAA,IACpB,gBAAA,EAAkB;AAAA,GACpB;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,WAAA,EAAa,kBAAA;AAAA,IACb,WAAA,EAAa,kBAAA;AAAA,IACb,aAAA,EAAe,kBAAA;AAAA,IACf,iBAAA,EAAmB,kBAAA;AAAA,IACnB,mBAAA,EAAqB,kBAAA;AAAA,IACrB,aAAA,EAAe,kBAAA;AAAA,IACf,oBAAA,EAAsB,kBAAA;AAAA,IACtB,eAAA,EAAiB,kBAAA;AAAA,IACjB,QAAA,EAAU,kBAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAO,EAAC;AAAA,EACR,MAAA,EAAQ;AAAA,IACN,WAAA,EAAa,sBAAA;AAAA,IACb,WAAA,EAAa,sBAAA;AAAA,IACb,aAAA,EAAe,sBAAA;AAAA,IACf,iBAAA,EAAmB,sBAAA;AAAA,IACnB,mBAAA,EAAqB,sBAAA;AAAA,IACrB,aAAA,EAAe,sBAAA;AAAA,IACf,oBAAA,EAAsB,sBAAA;AAAA,IACtB,eAAA,EAAiB,sBAAA;AAAA,IACjB,QAAA,EAAU,sBAAA;AAAA,IACV,UAAA,EAAY;AAAA;AAEhB,CAAA;AAEA,IAAM,eAAA,GAAmF;AAAA,EACvF,OAAO,EAAC;AAAA,EACR,KAAA,EAAO;AAAA,IACL,WAAA,EAAa,SAAA;AAAA,IACb,WAAA,EAAa,aAAA;AAAA,IACb,aAAA,EAAe,eAAA;AAAA,IACf,iBAAA,EAAmB,eAAA;AAAA,IACnB,aAAA,EAAe,eAAA;AAAA,IACf,oBAAA,EAAsB,eAAA;AAAA,IACtB,eAAA,EAAiB,eAAA;AAAA,IACjB,QAAA,EAAU,SAAA;AAAA,IACV,UAAA,EAAY,aAAA;AAAA,IACZ,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,WAAA,EAAa,4BAAA;AAAA,IACb,WAAA,EAAa,kBAAA;AAAA,IACb,mBAAA,EAAqB,+BAAA;AAAA,IACrB,aAAA,EAAe,+BAAA;AAAA,IACf,oBAAA,EAAsB,+BAAA;AAAA,IACtB,eAAA,EAAiB,+BAAA;AAAA,IACjB,QAAA,EAAU,4BAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,WAAA,EAAa,8DAAA;AAAA,IACb,WAAA,EAAa,6CAAA;AAAA,IACb,aAAA,EAAe,4BAAA;AAAA,IACf,iBAAA,EAAmB,4BAAA;AAAA,IACnB,mBAAA,EACE,uEAAA;AAAA,IACF,aAAA,EACE,uEAAA;AAAA,IACF,oBAAA,EACE,uEAAA;AAAA,IACF,eAAA,EACE,uEAAA;AAAA,IACF,wBAAA,EAA0B,6BAAA;AAAA,IAC1B,QAAA,EAAU,6CAAA;AAAA,IACV,UAAA,EAAY;AAAA,GACd;AAAA,EACA,YAAA,EAAc;AAAA,IACZ,WAAA,EAAa,cAAA;AAAA,IACb,kBAAA,EAAoB,0BAAA;AAAA,IACpB,gBAAA,EACE,0NAAA;AAAA,IACF,mBAAA,EACE,yFAAA;AAAA,IACF,aAAA,EACE,yFAAA;AAAA,IACF,oBAAA,EACE,yFAAA;AAAA,IACF,eAAA,EACE,yFAAA;AAAA,IACF,mBAAA,EACE,kFAAA;AAAA,IACF,iBAAA,EACE,0GAAA;AAAA,IACF,gBAAA,EAAkB;AAAA;AAEtB,CAAA;AAEA,IAAM,cAAA,GAGF;AAAA,EACF,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,OAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ,OAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,IAAA;AAAA,IACR,MAAA,EAAQ,QAAA;AAAA,IACR,UAAA,EAAY;AAAA,GACd;AAAA,EACA,WAAA,EAAa;AAAA,IACX,OAAA,EAAS,SAAA;AAAA,IACT,MAAA,EAAQ,MAAA;AAAA,IACR,MAAA,EAAQ,OAAA;AAAA,IACR,UAAA,EAAY;AAAA;AAEhB,CAAA;AAEA,IAAM,WAAA,GAA+D;AAAA,EACnE,IAAA,EAAM;AAAA,IACJ,gBAAA,EAAkB,aAAA;AAAA,IAClB,aAAA,EAAe,aAAA;AAAA,IACf,oBAAA,EAAsB,aAAA;AAAA,IACtB,eAAA,EAAiB,aAAA;AAAA,IACjB,WAAA,EAAa,cAAA;AAAA,IACb,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,OAAA,EAAS;AAAA,IACP,WAAA,EAAa,OAAA;AAAA,IACb,gBAAA,EAAkB,SAAA;AAAA,IAClB,aAAA,EAAe,SAAA;AAAA,IACf,oBAAA,EAAsB,SAAA;AAAA,IACtB,eAAA,EAAiB,SAAA;AAAA,IACjB,UAAA,EAAY;AAAA,GACd;AAAA,EACA,cAAA,EAAgB;AAAA,IACd,mBAAA,EACE,sEAAA;AAAA,IACF,mBAAA,EACE,6EAAA;AAAA,IACF,iBAAA,EACE,4FAAA;AAAA,IACF,aAAA,EACE,sEAAA;AAAA,IACF,oBAAA,EACE,sEAAA;AAAA,IACF,eAAA,EACE,sEAAA;AAAA,IACF,wBAAA,EAA0B,gDAAA;AAAA,IAC1B,WAAA,EAAa,6DAAA;AAAA,IACb,aAAA,EAAe,WAAA;AAAA,IACf,QAAA,EAAU,8CAAA;AAAA,IACV,YAAA,EAAc,qBAAA;AAAA,IACd,WAAA,EAAa,eAAA;AAAA,IACb,qBAAA,EACE,gEAAA;AAAA,IACF,cAAA,EACE,yFAAA;AAAA,IACF,gBAAA,EAAkB,kCAAA;AAAA,IAClB,cAAA,EAAgB,6DAAA;AAAA,IAChB,YAAA,EACE,6DAAA;AAAA,IACF,YAAA,EAAc,uBAAA;AAAA,IACd,aAAA,EAAe,8CAAA;AAAA,IACf,eAAA,EAAiB,uBAAA;AAAA,IACjB,kBAAA,EACE,+FAAA;AAAA,IACF,SAAA,EAAW,uBAAA;AAAA,IACX,SAAA,EAAW,uBAAA;AAAA,IACX,WAAA,EAAa;AAAA,GACf;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,WAAA,EAAa,2BAAA;AAAA,IACb,aAAA,EAAe,oDAAA;AAAA,IACf,iBAAA,EAAmB,oDAAA;AAAA,IACnB,gBAAA,EAAkB,0BAAA;AAAA,IAClB,aAAA,EAAe,qFAAA;AAAA,IACf,oBAAA,EACE,qFAAA;AAAA,IACF,eAAA,EACE,qFAAA;AAAA,IACF,mBAAA,EACE,4DAAA;AAAA,IACF,WAAA,EACE,4FAAA;AAAA,IACF,WAAA,EAAa,oDAAA;AAAA,IACb,QAAA,EAAU,oDAAA;AAAA,IACV,UAAA,EAAY,2BAAA;AAAA,IACZ,QAAA,EAAU,mBAAA;AAAA,IACV,eAAA,EAAiB,4CAAA;AAAA,IACjB,qBAAA,EACE,0FAAA;AAAA,IACF,gBAAA,EAAkB,WAAA;AAAA,IAClB,cAAA,EACE,0GAAA;AAAA,IACF,gBAAA,EAAkB,6BAAA;AAAA,IAClB,cAAA,EACE,uEAAA;AAAA,IACF,YAAA,EAAc,qDAAA;AAAA,IACd,kBAAA,EACE,uEAAA;AAAA,IACF,eAAA,EAAiB;AAAA,GACnB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,WAAA,EAAa,6DAAA;AAAA,IACb,aAAA,EAAe,aAAA;AAAA,IACf,QAAA,EAAU;AAAA,GACZ;AAAA,EACA,WAAA,EAAa;AAAA,IACX,WAAA,EAAa,2BAAA;AAAA,IACb,gBAAA,EAAkB,0BAAA;AAAA,IAClB,aAAA,EAAe,0BAAA;AAAA,IACf,oBAAA,EAAsB,0BAAA;AAAA,IACtB,eAAA,EAAiB,0BAAA;AAAA,IACjB,QAAA,EAAU,oDAAA;AAAA,IACV,UAAA,EAAY,2BAAA;AAAA,IACZ,oBAAA,EAAsB;AAAA;AAE1B,CAAA;AAEA,IAAM,QAAA,GAAW,MAAA,CAAO,IAAA,CAAK,SAAS,CAAA;AAEtC,SAAS,cACJ,OAAA,EACY;AACf,EAAA,OAAO,QAAA,CAAS,MAAA,CAAO,CAAC,QAAA,EAAU,GAAA,KAAQ;AACxC,IAAA,QAAA,CAAS,GAAG,CAAA,GAAIA,GAAAA,CAAG,GAAG,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW,MAAA,GAAS,GAAG,CAAC,CAAC,CAAA;AAC5D,IAAA,OAAO,QAAA;AAAA,EACT,CAAA,EAAG,EAAmB,CAAA;AACxB;AAEA,SAAS,eACJ,OAAA,EACsB;AACzB,EAAA,OAAO,OAAA,CAAQ,MAAA;AAAA,IACb,CAAC,UAAU,MAAA,MAAY;AAAA,MACrB,GAAG,QAAA;AAAA,MACH,GAAG;AAAA,KACL,CAAA;AAAA,IACA;AAAC,GACH;AACF;AAEA,SAAS,kBAAkB,MAAA,EAAmC;AAC5D,EAAA,MAAM,QAAA,GAAW,eAAe,MAAqC,CAAA;AACrE,EAAA,IAAI,CAAC,QAAA,EAAU;AACb,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,CAAA,oCAAA,EAAuC,MAAA,CAAO,MAAM,CAAC,CAAA,oBAAA,EAAuB,MAAA,CAAO,IAAA,CAAK,cAAc,CAAA,CAAE,IAAA,CAAK,IAAI,CAAC,CAAA,CAAA;AAAA,KACpH;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;AAEO,SAAS,8BACd,UAAA,EAC2B;AAC3B,EAAA,MAAM,MAAA,GAAS,YAAY,MAAA,IAAU,SAAA;AACrC,EAAA,MAAM,OAAA,GAAU,YAAY,OAAA,IAAW,MAAA;AACvC,EAAA,MAAM,QAAA,GAAW,kBAAkB,MAAM,CAAA;AACzC,EAAA,MAAM,OAAA,GAAU,UAAA,EAAY,OAAA,IAAW,QAAA,CAAS,OAAA,IAAW,SAAA;AAC3D,EAAA,MAAM,MAAA,GAAS,UAAA,EAAY,MAAA,IAAU,QAAA,CAAS,MAAA,IAAU,IAAA;AACxD,EAAA,MAAM,MAAA,GAAS,UAAA,EAAY,MAAA,IAAU,QAAA,CAAS,MAAA,IAAU,OAAA;AACxD,EAAA,MAAM,UAAA,GAAa,UAAA,EAAY,UAAA,IAAc,QAAA,CAAS,UAAA,IAAc,OAAA;AAEpE,EAAA,MAAM,KAAA,GAAQ,UAAA;AAAA,IACZ,SAAA;AAAA,IACA,YAAY,MAAM,CAAA;AAAA,IAClB,aAAa,OAAO,CAAA;AAAA,IACpB,YAAY,MAAM,CAAA;AAAA,IAClB,YAAY,MAAM,CAAA;AAAA,IAClB,gBAAgB,UAAU,CAAA;AAAA,IAC1B,UAAA,EAAY;AAAA,GACd;AACA,EAAA,IAAI,YAAY,OAAA,EAAS;AACvB,IAAA,KAAA,CAAM,WAAA,GAAcA,GAAAA;AAAA,MAClB,aAAa,KAAA,CAAM,WAAA;AAAA,MACnB,YAAY,KAAA,EAAO;AAAA,KACrB;AAAA,EACF;AAEA,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,MAAA;AAAA,IACA,OAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,MAAA,EAAQ,WAAA,CAAY,WAAA,EAAa,UAAA,EAAY,MAAM,CAAA;AAAA,IACnD;AAAA,GACF;AACF;AAmBO,SAAS,oCAAA,CACd,OACA,IAAA,EACA;AACA,EAAA,IAAI,IAAA,KAAS,SAAA,EAAW,OAAO,KAAA,CAAM,KAAA,CAAM,eAAA;AAC3C,EAAA,IAAI,IAAA,KAAS,QAAA,EAAU,OAAO,KAAA,CAAM,KAAA,CAAM,cAAA;AAC1C,EAAA,IAAI,IAAA,KAAS,OAAA,EAAS,OAAO,KAAA,CAAM,KAAA,CAAM,aAAA;AACzC,EAAA,OAAO,MAAA;AACT;;;AC7pBO,IAAM,IAAA,GAAO;AAAA,EAClB,MAAA,EAAQ,OAAA;AAAA,EACR,QAAA,EAAU;AAAA,IACR,UAAA,EAAY;AAAA,MACV,UAAA,EAAY,YAAA;AAAA,MACZ,KAAA,EAAO,OAAA;AAAA,MACP,QAAA,EAAU,UAAA;AAAA,MACV,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,MAAA;AAAA,MACN,IAAA,EAAM,CAAC,EAAE,IAAA,EAAM,WAAU,KAAM,CAAA,KAAA,EAAQ,IAAI,CAAA,IAAA,EAAO,SAAS,CAAA,CAAA;AAAA,MAC3D,WAAA,EAAa,CAAC,EAAE,IAAA,EAAM,WAAU,KAC9B,CAAA,KAAA,EAAQ,IAAI,CAAA,IAAA,EAAO,SAAS,CAAA,cAAA,CAAA;AAAA,MAC9B,YAAA,EAAc,WAAA;AAAA,MACd,KAAA,EAAO,CAAC,EAAE,KAAA,EAAO,GAAA,EAAK,KAAA,EAAM,KAAM,CAAA,EAAG,KAAK,CAAA,CAAA,EAAI,GAAG,CAAA,IAAA,EAAO,KAAK,CAAA,CAAA;AAAA,MAC7D,UAAU,CAAC,EAAE,KAAA,EAAM,KAAM,GAAG,KAAK,CAAA,SAAA,CAAA;AAAA,MACjC,QAAA,EAAU,gBAAA;AAAA,MACV,OAAA,EAAS,gBAAA;AAAA,MACT,UAAA,EAAY,cAAA;AAAA,MACZ,KAAA,EAAO,OAAA;AAAA,MACP,WAAA,EAAa;AAAA,KACf;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,KAAA,EAAO;AAAA,KACT;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,OAAA,EAAS;AAAA,KACX;AAAA,IACA,OAAA,EAAS;AAAA,MACP,OAAA,EAAS;AAAA,KACX;AAAA,IACA,MAAA,EAAQ;AAAA,MACN,YAAA,EAAc;AAAA,KAChB;AAAA,IACA,KAAA,EAAO;AAAA,MACL,KAAA,EAAO,UAAA;AAAA,MACP,OAAA,EAAS,SAAA;AAAA,MACT,SAAA,EAAW,WAAA;AAAA,MACX,KAAA,EAAO,OAAA;AAAA,MACP,QAAA,EAAU;AAAA,KACZ;AAAA,IACA,WAAA,EAAa;AAAA,MACX,SAAA,EAAW,gBAAA;AAAA,MACX,SAAA,EAAW;AAAA,KACb;AAAA,IACA,aAAA,EAAe;AAAA,MACb,YAAA,EAAc,eAAA;AAAA,MACd,YAAA,EAAc;AAAA,KAChB;AAAA,IACA,WAAA,EAAa;AAAA,MACX,WAAA,EAAa,gBAAA;AAAA,MACb,KAAA,EAAO,YAAA;AAAA,MACP,cAAc,CAAC,EAAE,KAAA,EAAM,KAAM,UAAU,KAAK,CAAA;AAAA,KAC9C;AAAA,IACA,KAAA,EAAO;AAAA,MACL,YAAY,CAAC,EAAE,QAAA,EAAS,KAAM,eAAe,QAAQ,CAAA,CAAA;AAAA,MACrD,cAAc,CAAC,EAAE,QAAA,EAAS,KAAM,iBAAiB,QAAQ,CAAA,CAAA;AAAA,MACzD,UAAA,EAAY,CAAC,EAAE,QAAA,OACb,QAAA,GAAW,CAAA,YAAA,EAAe,QAAQ,CAAA,CAAA,GAAK,aAAA;AAAA,MACzC,UAAA,EAAY;AAAA,KACd;AAAA,IACA,OAAA,EAAS;AAAA,MACP,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,YAAA;AAAA,QACP,MAAA,EAAQ,cAAA;AAAA,QACR,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM;AAAA,OACR;AAAA,MACA,QAAA,EAAU;AAAA,QACR,KAAA,EAAO,UAAA;AAAA,QACP,MAAA,EAAQ;AAAA;AACV,KACF;AAAA,IACA,KAAA,EAAO;AAAA,MACL,UAAA,EAAY,OAAA;AAAA,MACZ,YAAA,EAAc,SAAA;AAAA,MACd,uBAAA,EAAyB,uBAAA;AAAA,MACzB,yBAAA,EAA2B;AAAA,KAC7B;AAAA,IACA,YAAA,EAAc;AAAA,MACZ,QAAA,EAAU;AAAA,QACR,OAAA,EAAS,cAAA;AAAA,QACT,MAAA,EAAQ,QAAA;AAAA,QACR,QAAA,EAAU,UAAA;AAAA,QACV,OAAA,EAAS,YAAA;AAAA,QACT,KAAA,EAAO,UAAA;AAAA,QACP,KAAA,EAAO;AAAA;AACT,KACF;AAAA,IACA,SAAA,EAAW;AAAA,MACT,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,YAAA;AAAA,QACP,OAAA,EAAS,eAAA;AAAA,QACT,KAAA,EAAO,UAAA;AAAA,QACP,SAAA,EAAW,sBAAA;AAAA,QACX,YAAA,EAAc,yBAAA;AAAA,QACd,KAAA,EAAO,OAAA;AAAA,QACP,WAAA,EAAa,oBAAA;AAAA,QACb,UAAA,EAAY,iDAAA;AAAA,QACZ,OAAA,EAAS,0BAAA;AAAA,QACT,aAAA,EAAe;AAAA,OACjB;AAAA,MACA,gBAAA,EAAkB;AAAA,QAChB,aAAA,EAAe,gBAAA;AAAA,QACf,YAAA,EAAc,gBAAA;AAAA,QACd,eAAA,EAAiB,iBAAA;AAAA,QACjB,cAAA,EAAgB,oBAAA;AAAA,QAChB,iBAAA,EAAmB,qBAAA;AAAA,QACnB,kBAAA,EAAoB,sBAAA;AAAA,QACpB,gBAAA,EAAkB,oBAAA;AAAA,QAClB,iBAAA,EAAmB;AAAA;AACrB,KACF;AAAA,IACA,cAAA,EAAgB;AAAA,MACd,KAAA,EAAO,kBAAA;AAAA,MACP,SAAA,EAAW,WAAA;AAAA,MACX,IAAA,EAAM,MAAA;AAAA,MACN,YAAA,EAAc,uBAAA;AAAA,MACd,KAAA,EAAO,EAAE,IAAA,EAAM,MAAA,EAAQ,MAAM,MAAA,EAAO;AAAA,MACpC,QAAA,EAAU;AAAA,QACR,IAAA,EAAM,cAAA;AAAA,QACN,IAAA,EAAM,iBAAA;AAAA,QACN,KAAA,EAAO,eAAA;AAAA,QACP,MAAA,EAAQ,qBAAA;AAAA,QACR,KAAA,EAAO,mBAAA;AAAA,QACP,SAAA,EAAW,YAAA;AAAA,QACX,QAAA,EAAU,WAAA;AAAA,QACV,KAAA,EAAO,OAAA;AAAA,QACP,SAAA,EAAW,kBAAA;AAAA,QACX,WAAA,EAAa,aAAA;AAAA,QACb,gBAAA,EAAkB,mBAAA;AAAA,QAClB,UAAA,EAAY,qBAAA;AAAA,QACZ,YAAA,EAAc,uBAAA;AAAA,QACd,MAAA,EAAQ,iBAAA;AAAA,QACR,QAAA,EAAU,mBAAA;AAAA,QACV,MAAA,EAAQ,iBAAA;AAAA,QACR,SAAA,EAAW,WAAA;AAAA,QACX,YAAA,EAAc,eAAA;AAAA,QACd,eAAA,EAAiB,yBAAA;AAAA,QACjB,QAAA,EAAU,qBAAA;AAAA,QACV,OAAA,EAAS,SAAA;AAAA,QACT,cAAA,EAAgB,YAAA;AAAA,QAChB,gBAAA,EAAkB;AAAA,UAChB,GAAA,EAAK,KAAA;AAAA,UACL,MAAA,EAAQ,QAAA;AAAA,UACR,IAAA,EAAM,MAAA;AAAA,UACN,KAAA,EAAO;AAAA,SACT;AAAA,QACA,iBAAA,EAAmB;AAAA,UACjB,mBAAA,EAAqB,mBAAA;AAAA,UACrB,cAAA,EAAgB,cAAA;AAAA,UAChB,aAAA,EAAe;AAAA;AACjB,OACF;AAAA,MACA,UAAA,EAAY;AAAA,QACV,KAAA,EAAO,aAAA;AAAA,QACP,IAAA,EAAM,MAAA;AAAA,QACN,OAAA,EAAS;AAAA,OACX;AAAA,MACA,IAAA,EAAM;AAAA,QACJ,KAAA,EAAO,OAAA;AAAA,QACP,MAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAQ;AAAA,UACN,OAAA,EAAS,SAAA;AAAA,UACT,OAAA,EAAS,SAAA;AAAA,UACT,SAAA,EAAW,WAAA;AAAA,UACX,MAAA,EAAQ,OAAA;AAAA,UACR,MAAA,EAAQ;AAAA;AACV,OACF;AAAA,MACA,QAAA,EAAU;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,MAAA,EAAQ,QAAA;AAAA,QACR,QAAA,EAAU,UAAA;AAAA,QACV,QAAA,EAAU;AAAA,OACZ;AAAA,MACA,QAAA,EAAU;AAAA,QACR,OAAA,EAAS,WAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,MAAA,EAAQ,QAAA;AAAA,QACR,MAAM,CAAC,EAAE,IAAA,EAAK,KAAM,QAAQ,IAAI,CAAA;AAAA,OAClC;AAAA,MACA,GAAA,EAAK;AAAA,QACH,QAAA,EAAU,aAAA;AAAA,QACV,cAAc,CAAC,EAAE,QAAA,EAAS,KAAM,qBAAqB,QAAQ,CAAA;AAAA,OAC/D;AAAA,MACA,OAAA,EAAS;AAAA,QACP,OAAA,EAAS,SAAA;AAAA,QACT,MAAA,EAAQ,QAAA;AAAA,QACR,eAAA,EAAiB,sBAAA;AAAA,QACjB,MAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,SAAA,EAAW,WAAA;AAAA,QACX,cAAc,CAAC,EAAE,QAAA,EAAS,KAAM,cAAc,QAAQ,CAAA,CAAA;AAAA,QACtD,cAAA,EAAgB,CAAC,EAAE,SAAA,EAAW,OAAM,KAClC,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,UAAA;AAAA,OACzB;AAAA,MACA,iBAAA,EAAmB;AAAA,QACjB,OAAA,EAAS,SAAA;AAAA,QACT,OAAA,EAAS,SAAA;AAAA,QACT,OAAA,EAAS,UAAA;AAAA,QACT,aAAA,EAAe,cAAA;AAAA,QACf,IAAA,EAAM,YAAA;AAAA,QACN,UAAU,CAAC,EAAE,IAAA,EAAK,KAAM,SAAS,IAAI,CAAA,CAAA;AAAA,QACrC,cAAA,EAAgB,iBAAA;AAAA,QAChB,UAAU,CAAC,EAAE,IAAA,EAAK,KAAM,YAAY,IAAI,CAAA,CAAA;AAAA,QACxC,cAAc,CAAC,EAAE,IAAA,EAAK,KAAM,QAAQ,IAAI,CAAA,gBAAA,CAAA;AAAA,QACxC,OAAA,EAAS,oBAAA;AAAA,QACT,MAAA,EAAQ,qBAAA;AAAA,QACR,KAAA,EAAO;AAAA,OACT;AAAA,MACA,KAAA,EAAO;AAAA,QACL,KAAA,EAAO,eAAA;AAAA,QACP,OAAA,EAAS,CAAC,EAAE,IAAA,EAAM,OAAM,KAAM,CAAA,EAAG,IAAI,CAAA,GAAA,EAAM,KAAK,CAAA,OAAA;AAAA,OAClD;AAAA,MACA,UAAA,EAAY;AAAA,QACV,MAAA,EAAQ,4BAAA;AAAA,QACR,cAAA,EAAgB,iBAAA;AAAA,QAChB,cAAA,EAAgB,cAAA;AAAA,QAChB,WAAA,EAAa,cAAA;AAAA,QACb,SAAA,EAAW,4BAAA;AAAA,QACX,MAAA,EAAQ,QAAA;AAAA,QACR,QAAA,EAAU,UAAA;AAAA,QACV,QAAA,EAAU,WAAA;AAAA,QACV,UAAA,EAAY,aAAA;AAAA,QACZ,YAAA,EAAc,2BAAA;AAAA,QACd,QAAA,EAAU,gBAAA;AAAA,QACV,SAAA,EAAW,YAAA;AAAA,QACX,cAAA,EAAgB,iBAAA;AAAA,QAChB,IAAA,EAAM,MAAA;AAAA,QACN,IAAA,EAAM,MAAA;AAAA,QACN,KAAA,EAAO,OAAA;AAAA,QACP,OAAA,EAAS,UAAA;AAAA,QACT,aAAA,EAAe,gBAAA;AAAA,QACf,OAAA,EAAS,YAAA;AAAA,QACT,WAAA,EAAa,eAAA;AAAA,QACb,aAAA,EAAe,iBAAA;AAAA,QACf,SAAA,EAAW,qBAAA;AAAA,QACX,KAAA,EAAO,OAAA;AAAA,QACP,GAAA,EAAK,KAAA;AAAA,QACL,KAAA,EAAO,OAAA;AAAA,QACP,MAAA,EAAQ,QAAA;AAAA,QACR,MAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,IAAA,EAAM,MAAA;AAAA,QACN,MAAA,EAAQ,QAAA;AAAA,QACR,OAAA,EAAS,SAAA;AAAA,QACT,SAAA,EAAW,WAAA;AAAA,QACX,MAAA,EAAQ,QAAA;AAAA,QACR,cAAc,CAAC,EAAE,OAAA,EAAQ,KAAM,GAAG,OAAO,CAAA,cAAA;AAAA,OAC3C;AAAA,MACA,OAAA,EAAS;AAAA,QACP,KAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAa,gCAAA;AAAA,QACb,QAAA,EAAU,UAAA;AAAA,QACV,OAAA,EAAS,SAAA;AAAA,QACT,KAAA,EAAO,OAAA;AAAA,QACP,IAAA,EAAM,MAAA;AAAA,QACN,WAAA,EAAa,aAAA;AAAA,QACb,UAAA,EAAY,aAAA;AAAA,QACZ,OAAA,EAAS,SAAA;AAAA,QACT,YAAA,EAAc,8BAAA;AAAA,QACd,aAAA,EAAe,qCAAA;AAAA,QACf,UAAA,EAAY,YAAA;AAAA,QACZ,YAAA,EAAc,eAAA;AAAA,QACd,IAAA,EAAM;AAAA,UACJ,KAAA,EAAO,mBAAA;AAAA,UACP,OAAA,EAAS,SAAA;AAAA,UACT,SAAA,EAAW;AAAA,SACb;AAAA,QACA,MAAA,EAAQ;AAAA,UACN,MAAA,EAAQ,QAAA;AAAA,UACR,OAAA,EAAS,SAAA;AAAA,UACT,gBAAA,EAAkB,sBAAA;AAAA,UAClB,QAAA,EAAU,UAAA;AAAA,UACV,OAAA,EAAS,SAAA;AAAA,UACT,SAAA,EAAW,WAAA;AAAA,UACX,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,KAAA,EAAO;AAAA,UACL,OAAA,EAAS;AAAA,YACP,KAAA,EAAO,sBAAA;AAAA,YACP,WAAA,EAAa;AAAA,WACf;AAAA,UACA,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,kBAAA;AAAA,YACP,WAAA,EAAa;AAAA,WACf;AAAA,UACA,KAAA,EAAO;AAAA,YACL,KAAA,EAAO,6BAAA;AAAA,YACP,WAAA,EAAa;AAAA;AACf,SACF;AAAA,QACA,OAAA,EAAS;AAAA,UACP,KAAA,EAAO,oBAAA;AAAA,UACP,WAAA,EAAa,cAAA;AAAA,UACb,KAAA,EAAO,OAAA;AAAA,UACP,YAAA,EAAc,eAAA;AAAA,UACd,MAAA,EAAQ,QAAA;AAAA,UACR,iBAAA,EAAmB,sBAAA;AAAA,UACnB,YAAA,EAAc,gBAAA;AAAA,UACd,MAAA,EAAQ;AAAA,SACV;AAAA,QACA,SAAA,EAAW;AAAA,UACT,KAAA,EAAO,cAAA;AAAA,UACP,KAAA,EAAO,OAAA;AAAA,UACP,SAAA,EAAW,WAAA;AAAA,UACX,KAAA,EAAO,OAAA;AAAA,UACP,SAAA,EAAW,WAAA;AAAA,UACX,UAAU,CAAC,EAAE,IAAA,EAAK,KAAM,aAAa,IAAI,CAAA,CAAA;AAAA,UACzC,UAAA,EAAY;AAAA,YACV,KAAA,EAAO,OAAA;AAAA,YACP,QAAA,EAAU,UAAA;AAAA,YACV,OAAA,EAAS,SAAA;AAAA,YACT,OAAA,EAAS;AAAA,WACX;AAAA,UACA,aAAA,EAAe,EAAE,MAAA,EAAQ,SAAA,EAAW,QAAQ,SAAA;AAAU;AACxD;AACF;AACF;AAEJ,CAAA;;;AClNO,SAAS,0BAAA,CACd,MACA,QAAA,EACuB;AACvB,EAAe,OAAO,IAAA;AAiIxB;AAEO,IAAM,oBAAA,GAA8C;AAAA,EACzD,QAAQ,IAAA,CAAK,MAAA;AAAA,EACb,QAAA,EAAU,0BAAA;AAAA,IACR,IAAA,CAAK;AAAA;AAET,CAAA;;;AChKA,IAAM,iBAAA,GAAoB,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AAC1C,IAAM,YAAA,GAAe,MAAA,CAAO,MAAA,CAAO,EAAE,CAAA;AAcrC,IAAM,gDAAgC,MAAA,CAAO,GAAA;AAAA,EAC3C;AACF,CAAA;AAMA,SAAS,6BAAA,GAAyD;AAChE,EAAA,OAAO,OAAO,MAAA,CAAO;AAAA,IACnB,QAAQC,aAAAA,CAAyC;AAAA,MAC/C,GAAG,oBAAA;AAAA,MACH,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,IACD,OAAOA,aAAAA,CAAwC;AAAA,MAC7C,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,IACD,WAAWA,aAAAA,CAA4C;AAAA,MACrD,QAAA,EAAU;AAAA,KACX,CAAA;AAAA,IACD,aAAaA,aAAAA,CAA8C;AAAA,MACzD,QAAA,EAAU,KAAA;AAAA,MACV,WAAA,EAAa,iBAAA;AAAA,MACb,MAAA,EAAQ;AAAA,KACT;AAAA,GACF,CAAA;AACH;AAEA,SAAS,0BAAA,GAAsD;AAC7D,EAAA,MAAM,IAAA,GAAO,UAAA;AACb,EAAA,MAAM,QAAA,GAAW,KAAK,6BAA6B,CAAA;AACnD,EAAA,IAAI,UAAU,OAAO,QAAA;AAErB,EAAA,MAAM,WAAW,6BAAA,EAA8B;AAC/C,EAAA,MAAA,CAAO,cAAA,CAAe,MAAM,6BAAA,EAA+B;AAAA,IACzD,KAAA,EAAO,QAAA;AAAA,IACP,UAAA,EAAY,KAAA;AAAA,IACZ,YAAA,EAAc,KAAA;AAAA,IACd,QAAA,EAAU;AAAA,GACX,CAAA;AACD,EAAA,OAAO,QAAA;AACT;AAEA,IAAM,mBAAmB,0BAAA,EAA2B;AAE7C,IAAM,uBAAuB,gBAAA,CAAiB,MAAA;AAElB,gBAAA,CAAiB;AAEb,gBAAA,CAAiB;AAEf,gBAAA,CAAiB;AAgCnD,SAAS,wBAAA,GAAkD;AAChE,EAAA,OAAOC,UAAAA,CAAW,oBAAoB,CAAA,CAAE,QAAA;AAC1C;ACzJA,SAAS,WAAA,CAAY,EAAE,QAAA,EAAS,EAA0B;AACxD,EAAA,uBACEC,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAQ,WAAA;AAAA,MACR,SAAA,EAAW,EAAA;AAAA,QACT,kCAAA;AAAA,QACA,QAAA,IAAY;AAAA,OACd;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,WAAA,EAAY,GAAA;AAAA,MAEZ,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,CAAA,EAAE,eAAA,EAAgB;AAAA;AAAA,GAC1B;AAEJ;AAEA,SAAS,QAAA,GAAW;AAClB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAQ,WAAA;AAAA,MACR,SAAA,EAAU,SAAA;AAAA,MACV,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,WAAA,EAAY,GAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC9BA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,GAAA,EAAI,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC7BA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI;AAAA;AAAA;AAAA,GAChC;AAEJ;AAEA,SAAS,QAAA,GAAW;AAClB,EAAA,uBACE,IAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAQ,WAAA;AAAA,MACR,SAAA,EAAU,aAAA;AAAA,MACV,IAAA,EAAK,MAAA;AAAA,MACL,MAAA,EAAO,cAAA;AAAA,MACP,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe,OAAA;AAAA,MACf,WAAA,EAAY,GAAA;AAAA,MAEZ,QAAA,EAAA;AAAA,wBAAAA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,KAAI,EAAA,EAAG,GAAA,EAAI,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC5BA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,KAAI,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC7BA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,KAAI,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC7BA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,GAAA,EAAI,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC7BA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI,CAAA;AAAA,wBAC9BA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,GAAA,EAAI;AAAA;AAAA;AAAA,GAChC;AAEJ;AAEA,SAAS,6BAAA,CACP,OACA,QAAA,EACA;AACA,EAAA,KAAA,MAAW,IAAA,IAAQ,KAAA,IAAS,EAAC,EAAG;AAC9B,IAAA,IAAI,KAAK,eAAA,EAAiB;AACxB,MAAA,QAAA,CAAS,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,IACtB;AACA,IAAA,6BAAA,CAA8B,IAAA,CAAK,UAAU,QAAQ,CAAA;AAAA,EACvD;AACF;AAEA,SAAS,2BAAA,CACP,QACA,sBAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAI,sBAAA,IAA0B,EAAE,CAAA;AACrD,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,6BAAA,CAA8B,KAAA,CAAM,OAAO,QAAQ,CAAA;AAAA,EACrD;AACA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,4BAAA,CACP,QACA,uBAAA,EACA;AACA,EAAA,MAAM,QAAA,GAAW,IAAI,GAAA,CAAI,uBAAA,IAA2B,EAAE,CAAA;AACtD,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,IAAI,KAAA,CAAM,UAAA,IAAc,KAAA,CAAM,eAAA,KAAoB,KAAA,EAAO;AACvD,MAAA,QAAA,CAAS,GAAA,CAAI,MAAM,EAAE,CAAA;AAAA,IACvB;AAAA,EACF;AACA,EAAA,OAAO,QAAA;AACT;AAEA,SAAS,YAAA,CACP,KAAA,EACA,KAAA,EACA,QAAA,EACA,OAAA,EACA;AACA,EAAA,KAAA,MAAW,CAAC,OAAO,IAAI,CAAA,IAAA,CAAM,SAAS,EAAC,EAAG,SAAQ,EAAG;AACnD,IAAA,OAAA,CAAQ,GAAA,CAAI,KAAK,EAAA,EAAI,EAAE,MAAM,KAAA,EAAO,QAAA,EAAU,OAAO,CAAA;AACrD,IAAA,YAAA,CAAa,IAAA,CAAK,QAAA,EAAU,KAAA,EAAO,IAAA,CAAK,IAAI,OAAO,CAAA;AAAA,EACrD;AACF;AAEA,SAAS,sBACP,MAAA,EACA;AACA,EAAA,MAAM,OAAA,uBAAc,GAAA,EAGlB;AACF,EAAA,KAAA,MAAW,SAAS,MAAA,EAAQ;AAC1B,IAAA,YAAA,CAAa,KAAA,CAAM,KAAA,EAAO,KAAA,EAAO,MAAA,EAAW,OAAO,CAAA;AAAA,EACrD;AACA,EAAA,OAAO,OAAA;AACT;AAEA,SAAS,cAAA,CACP,MACA,aAAA,EAGA;AACA,EAAA,OAAO;AAAA,IACL,GAAI,iBAAiB,EAAC;AAAA,IACtB,GAAK,IAAA,CAAK,OAAA,IAAW;AAAC,GAGxB;AACF;AAEA,SAAS,eAAA,CACP,OACA,aAAA,EAGA;AACA,EAAA,OAAO;AAAA,IACL,GAAI,iBAAiB,EAAC;AAAA,IACtB,GAAK,KAAA,CAAM,OAAA,IAAW;AAAC,GAGzB;AACF;AAEO,SAAS,oBAAA,CAId;AAAA,EACA,MAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA;AAAA,EACA,cAAA;AAAA,EACA,eAAA;AAAA,EACA,eAAA;AAAA,EACA,sBAAA;AAAA,EACA,gBAAA;AAAA,EACA,uBAAA;AAAA,EACA,iBAAA;AAAA,EACA,WAAA;AAAA,EACA,YAAA;AAAA,EACA,UAAA,GAAa,EAAA;AAAA,EACb,YAAA,GAAe,CAAA;AAAA,EACf,UAAA;AAAA,EACA,KAAA;AAAA,EACA,OAAA,GAAU,KAAA;AAAA,EACV,WAAA;AAAA,EACA,KAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA,GAAc,MAAA;AAAA,EACd,UAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA,aAAA;AAAA,EACA,uBAAA;AAAA,EACA,wBAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAAmE;AACjE,EAAA,MAAM,cAAA,GAAiB,wBAAA,EAAyB,CAAE,YAAA,CAAa,QAAA;AAC/D,EAAA,MAAM,KAAA,GAAQ,6BAAA;AAAA,IACZ,0BAA0B,UAAU;AAAA,GACtC;AACA,EAAA,MAAM,WAAA,GAAc,MAAA,EAAQ,OAAA,IAAW,cAAA,CAAe,OAAA;AACtD,EAAA,MAAM,WAAA,GAAc,MAAA,EAAQ,MAAA,IAAU,cAAA,CAAe,MAAA;AACrD,EAAA,MAAM,aAAA,GAAgB,MAAA,EAAQ,QAAA,IAAY,cAAA,CAAe,QAAA;AACzD,EAAA,MAAM,cAAA,GACJ,WAAA,IAAe,MAAA,EAAQ,OAAA,IAAW,cAAA,CAAe,OAAA;AACnD,EAAA,MAAM,YAAA,GAAe,KAAA,IAAS,MAAA,EAAQ,KAAA,IAAS,cAAA,CAAe,KAAA;AAC9D,EAAA,MAAM,iBAAA,GAAoB,KAAA,CAAM,OAAA,CAAQ,MAAM,CAAA;AAC9C,EAAA,MAAM,cAAA,GAAiBC,QAErB,MAAM;AACN,IAAA,IAAI,iBAAA,EAAmB;AACrB,MAAA,OAAO,MAAA;AAAA,IACT;AACA,IAAA,OAAO;AAAA,MACL;AAAA,QACE,EAAA,EAAI,UAAA;AAAA,QACJ,UAAA,EAAY,IAAA;AAAA,QACZ,eAAA,EAAiB,IAAA;AAAA,QACjB,OAAO,KAAA,CAAM,OAAA,CAAQ,KAAK,CAAA,GAAI,QAAQ;AAAC;AACzC,KACF;AAAA,EACF,CAAA,EAAG,CAAC,MAAA,EAAQ,iBAAA,EAAmB,KAAK,CAAC,CAAA;AACrC,EAAA,MAAM,gBAAA,GAAmBA,OAAAA;AAAA,IACvB,MAAM,sBAAsB,cAAc,CAAA;AAAA,IAC1C,CAAC,cAAc;AAAA,GACjB;AACA,EAAA,MAAM,CAAC,uBAAA,EAAyB,0BAA0B,CAAA,GAAI,QAAA;AAAA,IAAS,MACrE,2BAAA,CAA4B,cAAA,EAAgB,sBAAsB;AAAA,GACpE;AACA,EAAA,MAAM,CAAC,wBAAA,EAA0B,2BAA2B,CAAA,GAAI,QAAA;AAAA,IAAS,MACvE,4BAAA,CAA6B,cAAA,EAAgB,uBAAuB;AAAA,GACtE;AACA,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,QAAA,EAA6B;AACzE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,QAAA,EAA6B;AAEzE,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,0BAAA;AAAA,MACE,2BAAA,CAA4B,gBAAgB,sBAAsB;AAAA,KACpE;AACA,IAAA,2BAAA;AAAA,MACE,4BAAA,CAA6B,gBAAgB,uBAAuB;AAAA,KACtE;AAAA,EACF,CAAA,EAAG,CAAC,uBAAA,EAAyB,sBAAA,EAAwB,iBAAiB,CAAC,CAAA;AAEvE,EAAA,MAAM,0BACJ,eAAA,KAAoB,MAAA,GAChB,IAAI,GAAA,CAAI,eAAe,CAAA,GACvB,uBAAA;AACN,EAAA,MAAM,2BACJ,gBAAA,KAAqB,MAAA,GACjB,IAAI,GAAA,CAAI,gBAAgB,CAAA,GACxB,wBAAA;AAEN,EAAA,MAAM,eAAA,GAAkB,CAAC,MAAA,EAAgB,QAAA,KAAsB;AAC7D,IAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,uBAAuB,CAAA;AAC5C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAA,CAAK,IAAI,MAAM,CAAA;AAAA,IACjB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,OAAO,MAAM,CAAA;AAAA,IACpB;AACA,IAAA,IAAI,oBAAoB,MAAA,EAAW;AACjC,MAAA,0BAAA,CAA2B,IAAI,CAAA;AAAA,IACjC;AACA,IAAA,uBAAA,GAA0B,CAAC,GAAG,IAAI,CAAC,CAAA;AAAA,EACrC,CAAA;AAEA,EAAA,MAAM,gBAAA,GAAmB,CAAC,OAAA,EAAiB,QAAA,KAAsB;AAC/D,IAAA,MAAM,IAAA,GAAO,IAAI,GAAA,CAAI,wBAAwB,CAAA;AAC7C,IAAA,IAAI,QAAA,EAAU;AACZ,MAAA,IAAA,CAAK,IAAI,OAAO,CAAA;AAAA,IAClB,CAAA,MAAO;AACL,MAAA,IAAA,CAAK,OAAO,OAAO,CAAA;AAAA,IACrB;AACA,IAAA,IAAI,qBAAqB,MAAA,EAAW;AAClC,MAAA,2BAAA,CAA4B,IAAI,CAAA;AAAA,IAClC;AACA,IAAA,wBAAA,GAA2B,CAAC,GAAG,IAAI,CAAC,CAAA;AAAA,EACtC,CAAA;AAEA,EAAA,MAAM,sBAAsB,CAC1B,MAAA,EACA,MAAA,KAWA,MAAA,CAAO,SAAS,MAAA,GACZ;AAAA,IACE,IAAA,EAAM,MAAA;AAAA,IACN,MAAA;AAAA,IACA,MAAM,MAAA,CAAO,IAAA;AAAA,IACb,OAAO,MAAA,CAAO,KAAA;AAAA,IACd;AAAA,GACF,GACA;AAAA,IACE,IAAA,EAAM,OAAA;AAAA,IACN,MAAA;AAAA,IACA,OAAO,MAAA,CAAO,KAAA;AAAA,IACd;AAAA,GACF;AAEN,EAAA,MAAM,aAAA,GAAgB,CACpB,OAAA,EAGA,MAAA,KAUG;AACH,IAAA,MAAM,cAAA,GAAiB,OAAA,CAAQ,MAAA,CAAO,CAAC,MAAA,KAAW;AAChD,MAAA,MAAM,OAAA,GAAU,mBAAA,CAAoB,MAAA,EAAQ,MAAM,CAAA;AAClD,MAAA,OAAO,wBAAA,CAAyB,MAAA,CAAO,OAAA,EAAS,OAAO,CAAA,IAAK,IAAA;AAAA,IAC9D,CAAC,CAAA;AACD,IAAA,IAAI,cAAA,CAAe,MAAA,KAAW,CAAA,EAAG,OAAO,IAAA;AAExC,IAAA,uBACE,IAAA,CAAc,mBAAb,EACC,QAAA,EAAA;AAAA,sBAAAD,GAAAA,CAAc,YAAA,CAAA,OAAA,EAAb,EAAqB,OAAA,EAAO,MAC3B,QAAA,kBAAAA,GAAAA;AAAA,QAAC,QAAA;AAAA,QAAA;AAAA,UACC,IAAA,EAAK,QAAA;AAAA,UACL,KAAA,EAAO,WAAA;AAAA,UACP,YAAA,EAAY,WAAA;AAAA,UACZ,SAAA,EAAW,EAAA;AAAA,YACT,MAAM,KAAA,CAAM,WAAA;AAAA,YACZ,OAAO,IAAA,KAAS,OAAA,GACZ,MAAM,KAAA,CAAM,gBAAA,GACZ,MAAM,KAAA,CAAM,eAAA;AAAA,YAChB,MAAA,CAAO,SAAS,OAAA,GACZ,UAAA,EAAY,eACZ,EAAA,CAAG,UAAA,EAAY,WAAA,EAAa,UAAA,EAAY,WAAW;AAAA,WACzD;AAAA,UACA,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,UAEzC,QAAA,EAAA,UAAA,oBAAcA,GAAAA,CAAC,QAAA,EAAA,EAAS;AAAA;AAAA,OAC3B,EACF,CAAA;AAAA,sBACAA,GAAAA,CAAc,YAAA,CAAA,MAAA,EAAb,EACC,QAAA,kBAAAA,GAAAA;AAAA,QAAc,YAAA,CAAA,OAAA;AAAA,QAAb;AAAA,UACC,KAAA,EAAM,KAAA;AAAA,UACN,UAAA,EAAY,CAAA;AAAA,UACZ,WAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,WAAA,EAAa,YAAY,WAAW,CAAA;AAAA,UAC9D,KAAA,EAAO,MAAM,MAAA,CAAO,WAAA;AAAA,UACpB,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,UAEzC,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,MAAA,KAAW;AAC9B,YAAA,MAAM,OAAA,GAAU,mBAAA,CAAoB,MAAA,EAAQ,MAAM,CAAA;AAClD,YAAA,MAAM,QAAA,GAAA,CACH,wBAAA,CAAyB,MAAA,CAAO,QAAA,EAAU,OAAO,CAAA,IAAK,KAAA,MACtD,wBAAA,CAAyB,MAAA,CAAO,OAAA,EAAS,OAAO,CAAA,IAAK,KAAA,CAAA;AACxD,YAAA,MAAM,MAAA,GACJ,wBAAA,CAAyB,MAAA,CAAO,MAAA,EAAQ,OAAO,CAAA,IAAK,KAAA;AAEtD,YAAA,IAAI,OAAO,MAAA,EAAQ;AACjB,cAAA,uBAAOA,IAAC,KAAA,EAAA,EAAqB,QAAA,EAAA,MAAA,CAAO,OAAO,OAAO,CAAA,EAAA,EAAjC,OAAO,EAA4B,CAAA;AAAA,YACtD;AAEA,YAAA,4BACG,KAAA,EAAA,EACE,QAAA,EAAA;AAAA,cAAA,MAAA,CAAO,kCACNA,GAAAA;AAAA,gBAAc,YAAA,CAAA,SAAA;AAAA,gBAAb;AAAA,kBACC,SAAA,EAAW,MAAM,KAAA,CAAM;AAAA;AAAA,eACzB,GACE,IAAA;AAAA,8BACJ,IAAA;AAAA,gBAAc,YAAA,CAAA,IAAA;AAAA,gBAAb;AAAA,kBACC,OAAO,MAAA,CAAO,KAAA;AAAA,kBACd,QAAA;AAAA,kBACA,SAAA,EAAW,EAAA;AAAA,oBACT,MAAM,KAAA,CAAM,QAAA;AAAA,oBACZ,oCAAA,CAAqC,KAAA,EAAO,MAAA,CAAO,IAAI,CAAA;AAAA,oBACvD,MAAA,IAAU,kCAAA;AAAA,oBACV,UAAA,EAAY;AAAA,mBACd;AAAA,kBACA,KAAA,EAAO,MAAM,MAAA,CAAO,QAAA;AAAA,kBACpB,UAAU,MAAM;AACd,oBAAA,IAAI,QAAA,EAAU;AACd,oBAAA,KAAK,MAAA,CAAO,WAAW,OAAO,CAAA;AAC9B,oBAAA,KAAK,WAAW,OAAO,CAAA;AAAA,kBACzB,CAAA;AAAA,kBAEC,QAAA,EAAA;AAAA,oBAAA,MAAA,CAAO,IAAA,mBACNA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAM,KAAA,CAAM,YAAA,EAC1B,QAAA,EAAA,MAAA,CAAO,IAAA,EACV,CAAA,GACE,IAAA;AAAA,oCACJA,IAAC,MAAA,EAAA,EAAK,SAAA,EAAW,MAAM,KAAA,CAAM,aAAA,EAC1B,iBAAO,KAAA,EACV;AAAA;AAAA;AAAA,eACF;AAAA,cACC,MAAA,CAAO,iCACNA,GAAAA;AAAA,gBAAc,YAAA,CAAA,SAAA;AAAA,gBAAb;AAAA,kBACC,SAAA,EAAW,MAAM,KAAA,CAAM;AAAA;AAAA,eACzB,GACE;AAAA,aAAA,EAAA,EAnCI,OAAO,EAoCjB,CAAA;AAAA,UAEJ,CAAC;AAAA;AAAA,OACH,EACF;AAAA,KAAA,EACF,CAAA;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CACjB,KAAA,EACA,QAAA,KACG;AACH,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,MAAM,YAAA,GACJ,cAAA,IACA,KAAA,CAAM,YAAA,CAAa,QAAQ,kCAAkC,CAAA;AAC/D,IAAA,IAAI,CAAC,YAAA,IAAgB,YAAA,KAAiB,QAAA,CAAS,EAAA,IAAM,CAAC,cAAA,EAAgB;AACpE,MAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,MAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,WAAA,GAAc,gBAAA,CAAiB,GAAA,CAAI,YAAY,CAAA;AACrD,IAAA,MAAM,SAAA,GAAY,gBAAA,CAAiB,GAAA,CAAI,QAAA,CAAS,EAAE,CAAA;AAClD,IAAA,IAAI,CAAC,WAAA,IAAe,CAAC,SAAA,EAAW;AAC9B,MAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,MAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,UAAA,GACJ,YAAY,QAAA,KAAa,SAAA,CAAU,YACnC,WAAA,CAAY,KAAA,EAAO,EAAA,KAAO,SAAA,CAAU,KAAA,EAAO,EAAA;AAC7C,IAAA,IAAI,WAAA,KAAgB,aAAA,IAAiB,CAAC,UAAA,EAAY;AAChD,MAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,MAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,MAAA;AAAA,IACF;AAEA,IAAA,MAAM,OAAA,GAIF;AAAA,MACF,YAAY,WAAA,CAAY,IAAA;AAAA,MACxB,UAAU,SAAA,CAAU,IAAA;AAAA,MACpB,aAAa,WAAA,CAAY,KAAA;AAAA,MACzB,WAAW,SAAA,CAAU,KAAA;AAAA,MACrB,gBAAgB,WAAA,CAAY,QAAA;AAAA,MAC5B,cAAc,SAAA,CAAU,QAAA;AAAA,MACxB,UAAU,WAAA,CAAY,KAAA;AAAA,MACtB,UAAU,SAAA,CAAU,KAAA;AAAA,MACpB,UAAA;AAAA,MACA;AAAA,KACF;AACA,IAAA,KAAK,eAAe,OAAO,CAAA;AAC3B,IAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,IAAA,iBAAA,CAAkB,MAAS,CAAA;AAAA,EAC7B,CAAA;AAEA,EAAA,MAAM,UAAA,GAAa,CACjB,IAAA,EACA,KAAA,EACA,KAAA,KACc;AACd,IAAA,MAAM,UAAA,GAAa,MAAM,OAAA,CAAQ,IAAA,CAAK,QAAQ,CAAA,GAAI,IAAA,CAAK,WAAW,EAAC;AACnE,IAAA,MAAM,WAAA,GAAc,WAAW,MAAA,GAAS,CAAA;AACxC,IAAA,MAAM,aACJ,IAAA,CAAK,WAAA,KAAgB,SAAS,uBAAA,CAAwB,GAAA,CAAI,KAAK,EAAE,CAAA;AACnE,IAAA,MAAM,UAAA,GAAa,mBAAmB,IAAA,CAAK,EAAA;AAC3C,IAAA,MAAM,YAAA,GAAe,IAAA,CAAK,UAAA,KAAe,KAAA,IAAS,CAAC,IAAA,CAAK,QAAA;AACxD,IAAA,MAAM,gBACJ,WAAA,KAAgB,MAAA,IAAU,CAAC,CAAC,cAAA,IAAkB,KAAK,WAAA,KAAgB,KAAA;AACrE,IAAA,MAAM,UAAA,GAAa,mBAAmB,IAAA,CAAK,EAAA;AAC3C,IAAA,MAAM,UAAA,GAAa,cAAA,KAAmB,IAAA,CAAK,EAAA,IAAM,mBAAmB,IAAA,CAAK,EAAA;AACzE,IAAA,MAAM,OAAA,GAAU,cAAA,CAAe,IAAA,EAAM,WAAW,CAAA;AAEhD,IAAA,uBACE,IAAA;AAAA,MAAC,KAAA;AAAA,MAAA;AAAA,QAEC,0BAAA,EAAyB,MAAA;AAAA,QACzB,8BAA4B,IAAA,CAAK,EAAA;AAAA,QACjC,+BAA6B,KAAA,EAAO,EAAA;AAAA,QACpC,SAAA,EAAW,EAAA;AAAA,UACT,MAAM,KAAA,CAAM,QAAA;AAAA,UACZ,UAAA,EAAY,IAAA;AAAA,UACZ,UAAA,EAAY,IAAA;AAAA,UACZ,IAAA,CAAK;AAAA,SACP;AAAA,QACA,UAAA,EAAY,CAAC,KAAA,KAAU;AACrB,UAAA,IAAI,CAAC,cAAA,IAAkB,CAAC,aAAA,EAAe;AACvC,UAAA,KAAA,CAAM,cAAA,EAAe;AACrB,UAAA,iBAAA,CAAkB,KAAK,EAAE,CAAA;AAAA,QAC3B,CAAA;AAAA,QACA,aAAa,MAAM;AACjB,UAAA,IAAI,cAAA,KAAmB,KAAK,EAAA,EAAI;AAC9B,YAAA,iBAAA,CAAkB,MAAS,CAAA;AAAA,UAC7B;AAAA,QACF,CAAA;AAAA,QACA,MAAA,EAAQ,CAAC,KAAA,KAAU,UAAA,CAAW,OAAO,IAAI,CAAA;AAAA,QAEzC,QAAA,EAAA;AAAA,0BAAA,IAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,MAAM,KAAA,CAAM,cAAA;AAAA,gBACZ,UAAA,IAAc,MAAM,KAAA,CAAM,gBAAA;AAAA,gBAC1B,IAAA,CAAK,QAAA,IAAY,KAAA,CAAM,KAAA,CAAM,gBAAA;AAAA,gBAC7B,UAAA,IAAc,MAAM,KAAA,CAAM,gBAAA;AAAA,gBAC1B,UAAA,IAAc,wBAAA;AAAA,gBACd,cAAc,UAAA,EAAY,YAAA;AAAA,gBAC1B,cAAc,UAAA,EAAY,YAAA;AAAA,gBAC1B,IAAA,CAAK,YAAY,UAAA,EAAY,YAAA;AAAA,gBAC7B,cAAc,UAAA,EAAY,YAAA;AAAA,gBAC1B,UAAA,EAAY,UAAA;AAAA,gBACZ,UAAA,EAAY;AAAA,eACd;AAAA,cACA,KAAA,EAAO;AAAA,gBACL,aAAa,CAAA,KAAA,EAAA,CAAS,IAAA,CAAK,WAAA,IAAe,KAAA,IAAS,aAAa,YAAY,CAAA,iDAAA;AAAA,eAC9E;AAAA,cACA,IAAA,EAAK,UAAA;AAAA,cACL,iBAAe,UAAA,IAAc,MAAA;AAAA,cAC7B,eAAA,EAAe,KAAK,QAAA,IAAY,MAAA;AAAA,cAChC,eAAA,EAAe,cAAc,UAAA,GAAa,MAAA;AAAA,cAC1C,cAAY,IAAA,CAAK,SAAA;AAAA,cACjB,QAAA,EAAU,eAAe,CAAA,GAAI,EAAA;AAAA,cAC7B,SAAS,MAAM;AACb,gBAAA,IAAI,CAAC,YAAA,EAAc;AACnB,gBAAA,YAAA,GAAe,MAAM,OAAO,CAAA;AAAA,cAC9B,CAAA;AAAA,cACA,SAAA,EAAW,CAAC,KAAA,KAAU;AACpB,gBAAA,IAAI,KAAA,CAAM,MAAA,KAAW,KAAA,CAAM,aAAA,EAAe;AAC1C,gBAAA,IAAI,CAAC,YAAA,EAAc;AACnB,gBAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,OAAA,IAAW,KAAA,CAAM,QAAQ,GAAA,EAAK;AAChD,gBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,gBAAA,YAAA,GAAe,MAAM,OAAO,CAAA;AAAA,cAC9B,CAAA;AAAA,cAEC,QAAA,EAAA;AAAA,gBAAA,aAAA,mBACCA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAS,IAAA;AAAA,oBACT,SAAA,EAAW,EAAA;AAAA,sBACT,MAAM,KAAA,CAAM,kBAAA;AAAA,sBACZ,UAAA,EAAY;AAAA,qBACd;AAAA,oBACA,OAAA,EAAS,CAAC,KAAA,KAAU,KAAA,CAAM,eAAA,EAAgB;AAAA,oBAC1C,WAAA,EAAa,CAAC,KAAA,KAAU;AACtB,sBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,sBAAA,KAAA,CAAM,aAAa,aAAA,GAAgB,MAAA;AACnC,sBAAA,KAAA,CAAM,YAAA,CAAa,OAAA;AAAA,wBACjB,kCAAA;AAAA,wBACA,IAAA,CAAK;AAAA,uBACP;AACA,sBAAA,iBAAA,CAAkB,KAAK,EAAE,CAAA;AAAA,oBAC3B,CAAA;AAAA,oBACA,WAAW,MAAM;AACf,sBAAA,iBAAA,CAAkB,MAAS,CAAA;AAC3B,sBAAA,iBAAA,CAAkB,MAAS,CAAA;AAAA,oBAC7B,CAAA;AAAA,oBAEA,QAAA,kBAAAA,IAAC,QAAA,EAAA,EAAS;AAAA;AAAA,iBACZ,GACE,IAAA;AAAA,gBACH,8BACCA,GAAAA;AAAA,kBAAC,QAAA;AAAA,kBAAA;AAAA,oBACC,IAAA,EAAK,QAAA;AAAA,oBACL,SAAA,EAAW,EAAA;AAAA,sBACT,MAAM,KAAA,CAAM,cAAA;AAAA,sBACZ,UAAA,EAAY,UAAA;AAAA,sBACZ,UAAA,EAAY;AAAA,qBACd;AAAA,oBACA,YAAA,EAAY,aAAa,aAAA,GAAgB,WAAA;AAAA,oBACzC,OAAA,EAAS,CAAC,KAAA,KAAU;AAClB,sBAAA,KAAA,CAAM,eAAA,EAAgB;AACtB,sBAAA,eAAA,CAAgB,IAAA,CAAK,EAAA,EAAI,CAAC,UAAU,CAAA;AAAA,oBACtC,CAAA;AAAA,oBAEA,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAU,UAAA,EAAY;AAAA;AAAA,oCAGrCA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,WAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,cAAA,EAAgB,YAAY,UAAU;AAAA;AAAA,iBAClE;AAAA,gBAED,IAAA,CAAK,uBACJA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA;AAAA,sBACT,MAAM,KAAA,CAAM,YAAA;AAAA,sBACZ,UAAA,EAAY,QAAA;AAAA,sBACZ,UAAA,EAAY;AAAA,qBACd;AAAA,oBAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,iBACR,GACE,IAAA;AAAA,gCACJ,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8BAAA,EACd,QAAA,EAAA;AAAA,kCAAAA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,MAAM,KAAA,CAAM,aAAA;AAAA,wBACZ,UAAA,EAAY,SAAA;AAAA,wBACZ,UAAA,EAAY;AAAA,uBACd;AAAA,sBAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,mBACR;AAAA,kBACC,IAAA,CAAK,8BACJA,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,MAAM,KAAA,CAAM,mBAAA;AAAA,wBACZ,UAAA,EAAY;AAAA,uBACd;AAAA,sBAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,mBACR,GACE;AAAA,iBAAA,EACN,CAAA;AAAA,gBACC,IAAA,CAAK,uBACJA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,WAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,YAAA,EAAc,YAAY,QAAQ,CAAA;AAAA,oBAE3D,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,iBACR,GACE,IAAA;AAAA,gBACH,IAAA,CAAK,wBACJA,GAAAA;AAAA,kBAAC,MAAA;AAAA,kBAAA;AAAA,oBACC,WAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,aAAA,EAAe,YAAY,SAAS,CAAA;AAAA,oBAE7D,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,iBACR,GACE,IAAA;AAAA,gBACH,cAAc,OAAA,EAAS,EAAE,MAAM,MAAA,EAAQ,IAAA,EAAM,OAAO;AAAA;AAAA;AAAA,WACvD;AAAA,UACC,WAAA,IAAe,6BACdA,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,MAAM,KAAA,CAAM,gBAAA;AAAA,gBACZ,UAAA,EAAY,YAAA;AAAA,gBACZ,UAAA,EAAY;AAAA,eACd;AAAA,cAEC,QAAA,EAAA,UAAA,CAAW,IAAI,CAAC,KAAA,KAAU,WAAW,KAAA,EAAO,KAAA,EAAO,KAAA,GAAQ,CAAC,CAAC;AAAA;AAAA,WAChE,GACE;AAAA;AAAA,OAAA;AAAA,MAjKC,IAAA,CAAK;AAAA,KAkKZ;AAAA,EAEJ,CAAA;AAEA,EAAA,MAAM,iBAAA,GAAoB,CACxB,OAAA,EACA,aAAA,EACA,iBAAA,qBACGA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,iBAAiB,GAAI,QAAA,EAAA,OAAA,EAAQ,CAAA;AAEpE,EAAA,IAAI,OAAA,EAAS;AACX,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,UAAA,EAAY,IAAA,EAAM,SAAS,CAAA,EACjE,QAAA,EAAA,iBAAA;AAAA,MACC,cAAA;AAAA,MACA,MAAM,KAAA,CAAM,WAAA;AAAA,MACZ,UAAA,EAAY;AAAA,KACd,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,IAAI,KAAA,EAAO;AACT,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,UAAA,EAAY,IAAA,EAAM,SAAS,CAAA,EACjE,QAAA,EAAA,iBAAA;AAAA,MACC,SAAS,MAAA,EAAQ,KAAA;AAAA,MACjB,MAAM,KAAA,CAAM,SAAA;AAAA,MACZ,UAAA,EAAY;AAAA,KACd,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,MAAM,cAAc,cAAA,CAAe,IAAA;AAAA,IACjC,CAAC,KAAA,KAAA,CAAW,KAAA,CAAM,KAAA,IAAS,IAAI,MAAA,GAAS;AAAA,GAC1C;AACA,EAAA,MAAM,mBAAmB,cAAA,CAAe,IAAA;AAAA,IACtC,CAAC,KAAA,KAAU,KAAA,CAAM,MAAA,KAAW,aAAa,KAAA,CAAM;AAAA,GACjD;AACA,EAAA,MAAM,uBAAA,GACJ,CAAC,WAAA,IACD,CAAC,qBACA,CAAC,iBAAA,IAAqB,eAAe,MAAA,KAAW,CAAA,CAAA;AACnD,EAAA,IAAI,uBAAA,EAAyB;AAC3B,IAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,QAAA,EAAU,UAAA,EAAY,IAAA,EAAM,SAAS,CAAA,EACjE,QAAA,EAAA,iBAAA;AAAA,MACC,YAAA;AAAA,MACA,MAAM,KAAA,CAAM,SAAA;AAAA,MACZ,UAAA,EAAY;AAAA,KACd,EACF,CAAA;AAAA,EAEJ;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,WAAW,EAAA,CAAG,KAAA,CAAM,MAAM,QAAA,EAAU,UAAA,EAAY,MAAM,SAAS,CAAA;AAAA,MAC/D,IAAA,EAAM,WAAA,IAAe,cAAA,CAAe,IAAA,CAAK,CAAC,UAAU,CAAC,KAAA,CAAM,UAAU,CAAA,GAAI,MAAA,GAAS,MAAA;AAAA,MAEjF,QAAA,EAAA,cAAA,CAAe,GAAA,CAAI,CAAC,KAAA,KAAU;AAC7B,QAAA,MAAM,aAAA,GACJ,MAAM,UAAA,IACN,KAAA,CAAM,gBAAgB,KAAA,IACtB,wBAAA,CAAyB,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA;AACvC,QAAA,MAAM,cAAA,GAAiB,KAAA,CAAM,KAAA,EAAO,MAAA,IAAU,CAAA;AAC9C,QAAA,MAAM,OAAA,GAAU,eAAA,CAAgB,KAAA,EAAO,YAAY,CAAA;AACnD,QAAA,MAAM,aAAA,GAAgB,oBAAoB,KAAA,CAAM,EAAA;AAChD,QAAA,MAAM,gBAAA,GAAmB,MAAM,WAAA,KAAgB,KAAA;AAC/C,QAAA,uBACE,IAAA;AAAA,UAAC,SAAA;AAAA,UAAA;AAAA,YAEC,0BAAA,EAAyB,OAAA;AAAA,YACzB,+BAA6B,KAAA,CAAM,EAAA;AAAA,YACnC,SAAA,EAAW,EAAA;AAAA,cACT,MAAM,KAAA,CAAM,SAAA;AAAA,cACZ,UAAA,EAAY,KAAA;AAAA,cACZ,KAAA,CAAM;AAAA,aACR;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,CAAC,MAAM,UAAA,mBACN,IAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,UAAA;AAAA,kBACL,cAAY,OAAO,KAAA,CAAM,KAAA,KAAU,QAAA,GAAW,MAAM,KAAA,GAAQ,MAAA;AAAA,kBAC5D,eAAA,EAAe,KAAA,CAAM,UAAA,GAAa,aAAA,GAAgB,MAAA;AAAA,kBAClD,eAAA,EAAe,mBAAmB,aAAA,GAAgB,MAAA;AAAA,kBAClD,SAAA,EAAW,EAAA;AAAA,oBACT,MAAM,KAAA,CAAM,eAAA;AAAA,oBACZ,MAAM,KAAA,CAAM,qBAAA;AAAA,oBACZ,aAAA,IAAiB,MAAM,KAAA,CAAM,gBAAA;AAAA,oBAC7B,UAAA,EAAY,WAAA;AAAA,oBACZ,UAAA,EAAY,iBAAA;AAAA,oBACZ,iBAAiB,UAAA,EAAY;AAAA,mBAC/B;AAAA,kBAEA,QAAA,EAAA;AAAA,oCAAA,IAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBACC,IAAA,EAAK,QAAA;AAAA,wBACL,SAAA,EAAW,EAAA;AAAA,0BACT,4GAAA;AAAA,0BACA,UAAA,EAAY;AAAA,yBACd;AAAA,wBACA,cAAA,EAAc,KAAA,CAAM,UAAA,GAAa,aAAA,GAAgB,MAAA;AAAA,wBACjD,eAAA,EACE,CAAC,KAAA,CAAM,UAAA,IAAc,mBACjB,aAAA,GACA,MAAA;AAAA,wBAEN,SAAS,MAAM;AACb,0BAAA,IAAI,MAAM,UAAA,EAAY;AACpB,4BAAA,aAAA,GAAgB,OAAO,OAAO,CAAA;AAC9B,4BAAA;AAAA,0BACF;AACA,0BAAA,IAAI,gBAAA;AACF,4BAAA,gBAAA,CAAiB,KAAA,CAAM,EAAA,EAAI,CAAC,aAAa,CAAA;AAAA,wBAC7C,CAAA;AAAA,wBAEC,QAAA,EAAA;AAAA,0BAAA,KAAA,CAAM,uBACLA,GAAAA;AAAA,4BAAC,MAAA;AAAA,4BAAA;AAAA,8BACC,SAAA,EAAW,EAAA;AAAA,gCACT,MAAM,KAAA,CAAM,YAAA;AAAA,gCACZ,UAAA,EAAY,QAAA;AAAA,gCACZ,UAAA,EAAY;AAAA,+BACd;AAAA,8BAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,2BACT,GACE,IAAA;AAAA,0CACJ,IAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,8BAAA,EACb,QAAA,EAAA;AAAA,4BAAA,KAAA,CAAM,wBACLA,GAAAA;AAAA,8BAAC,MAAA;AAAA,8BAAA;AAAA,gCACC,SAAA,EAAW,EAAA;AAAA,kCACT,MAAM,KAAA,CAAM,aAAA;AAAA,kCACZ,UAAA,EAAY,SAAA;AAAA,kCACZ,UAAA,EAAY;AAAA,iCACd;AAAA,gCAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,6BACT,GACE,IAAA;AAAA,4BACH,KAAA,CAAM,8BACLA,GAAAA;AAAA,8BAAC,MAAA;AAAA,8BAAA;AAAA,gCACC,SAAA,EAAW,EAAA;AAAA,kCACT,MAAM,KAAA,CAAM,mBAAA;AAAA,kCACZ,UAAA,EAAY;AAAA,iCACd;AAAA,gCAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,6BACT,GACE;AAAA,2BAAA,EACN,CAAA;AAAA,0BACC,KAAA,CAAM,uBACLA,GAAAA;AAAA,4BAAC,MAAA;AAAA,4BAAA;AAAA,8BACC,SAAA,EAAW,EAAA;AAAA,gCACT,MAAM,KAAA,CAAM,YAAA;AAAA,gCACZ,UAAA,EAAY;AAAA,+BACd;AAAA,8BAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,2BACT,GACE,IAAA;AAAA,0BACH,KAAA,CAAM,wBACLA,GAAAA;AAAA,4BAAC,MAAA;AAAA,4BAAA;AAAA,8BACC,SAAA,EAAW,EAAA;AAAA,gCACT,MAAM,KAAA,CAAM,aAAA;AAAA,gCACZ,UAAA,EAAY;AAAA,+BACd;AAAA,8BAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,2BACT,GACE;AAAA;AAAA;AAAA,qBACN;AAAA,oBACC,mCACCA,GAAAA;AAAA,sBAAC,QAAA;AAAA,sBAAA;AAAA,wBACC,IAAA,EAAK,QAAA;AAAA,wBACL,SAAA,EAAW,EAAA;AAAA,0BACT,MAAM,KAAA,CAAM,cAAA;AAAA,0BACZ,UAAA,EAAY;AAAA,yBACd;AAAA,wBACA,YAAA,EAAY,gBAAgB,aAAA,GAAgB,WAAA;AAAA,wBAC5C,eAAA,EAAe,aAAA;AAAA,wBACf,SAAS,MAAM,gBAAA,CAAiB,KAAA,CAAM,EAAA,EAAI,CAAC,aAAa,CAAA;AAAA,wBAExD,QAAA,kBAAAA,GAAAA,CAAC,WAAA,EAAA,EAAY,QAAA,EAAU,aAAA,EAAe;AAAA;AAAA,qBACxC,mBAEAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,EAAA,CAAG,KAAA,CAAM,KAAA,CAAM,cAAA,EAAgB,UAAA,EAAY,QAAQ,CAAA,EAAG,CAAA;AAAA,oBAExE,cAAc,OAAA,EAAS,EAAE,IAAA,EAAM,OAAA,EAAS,OAAO;AAAA;AAAA;AAAA,eAClD,GACE,IAAA;AAAA,cACH,gCACCA,GAAAA;AAAA,gBAAC,KAAA;AAAA,gBAAA;AAAA,kBACC,IAAA,EAAK,OAAA;AAAA,kBACL,SAAA,EAAW,EAAA;AAAA,oBACT,MAAM,KAAA,CAAM,gBAAA;AAAA,oBACZ,UAAA,EAAY,YAAA;AAAA,oBACZ,UAAA,EAAY;AAAA,mBACd;AAAA,kBAEC,QAAA,EAAA,KAAA,CAAM,OAAA,IAAW,KAAA,CAAM,MAAA,KAAW,SAAA,GAC/B,iBAAA;AAAA,oBACE,cAAA;AAAA,oBACA,MAAM,KAAA,CAAM,WAAA;AAAA,oBACZ,UAAA,EAAY;AAAA,mBACd,GACA,KAAA,CAAM,KAAA,IAAS,KAAA,CAAM,WAAW,OAAA,GAC9B,iBAAA;AAAA,oBACE,KAAA,CAAM,KAAA,IAAS,MAAA,EAAQ,KAAA,IAAS,cAAA,CAAe,KAAA;AAAA,oBAC/C,MAAM,KAAA,CAAM,SAAA;AAAA,oBACZ,UAAA,EAAY;AAAA,mBACd,GACA,cAAA,GAAiB,CAAA,GACf,KAAA,CAAM,KAAA,EAAO,GAAA,CAAI,CAAC,IAAA,KAAS,UAAA,CAAW,IAAA,EAAM,KAAA,EAAO,CAAC,CAAC,CAAA,GACrD,iBAAA;AAAA,oBACE,MAAM,KAAA,IAAS,YAAA;AAAA,oBACf,MAAM,KAAA,CAAM,SAAA;AAAA,oBACZ,UAAA,EAAY;AAAA;AACd;AAAA,eACV,GACE;AAAA;AAAA,WAAA;AAAA,UApJC,KAAA,CAAM;AAAA,SAqJb;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH;AAEJ;;;ACl4BO,IAAM,UAAA,GACX,2GAAA;AACK,IAAM,WAAA,GACX,+GAAA;AACK,IAAM,eAAA,GACX,0JAAA;AACK,IAAM,eAAA,GACX,+UAAA;AACK,IAAM,oBAAA,GACX,8bAAA;AAEK,SAAS,aACd,aAAA,EACe;AACf,EAAA,MAAM,UAAA,GAAa;AAAA,IACjB,KAAA,EAAO,gDAAA;AAAA,IACP,IAAA,EAAM,qFAAA;AAAA,IACN,KAAA,EAAO,kDAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX,CAAE,iBAAiB,OAAO,CAAA;AAC1B,EAAA,MAAM,UAAA,GACJ,aAAA,KAAkB,OAAA,GACd,wEAAA,GACA,wDAAA;AACN,EAAA,MAAM,MAAA,GACJ,aAAA,KAAkB,MAAA,IAAa,aAAA,KAAkB,OAAA,GAC7C,aAAA,GACA,aAAA,KAAkB,MAAA,GAChB,qFAAA,GACA,aAAA,KAAkB,SAAA,GAChB,qFAAA,GACA,kDAAA;AAEV,EAAA,OAAO;AAAA,IACL,mDAAA,EAAqD,aAAA,KAAkB,MAAA,GACnE,sDAAA,GACA,UAAA;AAAA,IACJ,mDAAA,EAAqD,aAAA,KAAkB,MAAA,GACnE,sDAAA,GACA,UAAA;AAAA,IACJ,2CAAA,EACE,4HAAA;AAAA,IACF,2CAAA,EACE,4HAAA;AAAA,IACF,uCAAA,EAAyC,kEAAkE,MAAM,CAAA,CAAA,CAAA;AAAA,IACjH,wCAAA,EACE,oJAAA;AAAA,IACF,wCAAA,EACE;AAAA,GACJ;AACF;AAGA,IAAM,kBAAA,GACJ,08BAAA;AAEF,IAAM,gBAAA,GACJ,maAAA;AACF,IAAM,aAAA,GACJ,0OAAA;AAEK,SAAS,qBAAA,CACd,MAAA,EACA,OAAA,EACA,SAAA,GAA4C,EAAC,EACb;AAChC,EAAA,MAAM,GAAA,GAAM,EAAA,CAAG,UAAA,EAAY,MAAA,EAAQ,SAAS,eAAe,CAAA;AAC3D,EAAA,OAAO;AAAA,IACL,GAAG,SAAA;AAAA,IACH,IAAA,EAAM,EAAA,CAAG,kBAAA,EAAoB,aAAA,EAAe,UAAU,IAAI,CAAA;AAAA,IAC1D,KAAA,EAAO,EAAA;AAAA,MACL,aAAA;AAAA;AAAA,MAEA,yIAAA;AAAA,MACA,SAAA,CAAU;AAAA,KACZ;AAAA,IACA,iBAAA,EAAmB,EAAA,CAAG,QAAA,EAAU,GAAA,EAAK,UAAU,iBAAiB,CAAA;AAAA,IAChE,UAAA,EAAY,EAAA,CAAG,GAAA,EAAK,gBAAA,EAAkB,UAAU,UAAU,CAAA;AAAA,IAC1D,YAAA,EAAc,EAAA,CAAG,eAAA,EAAiB,SAAA,CAAU,YAAY,CAAA;AAAA,IACxD,QAAA,EAAU,EAAA;AAAA,MACR,WAAA;AAAA,MACA,oCAAA;AAAA,MACA,SAAA,CAAU;AAAA,KACZ;AAAA,IACA,SAAA,EAAW,EAAA,CAAG,aAAA,EAAe,SAAA,CAAU,SAAS,CAAA;AAAA,IAChD,eAAA,EAAiB,EAAA,CAAG,cAAA,EAAgB,SAAA,CAAU,eAAe,CAAA;AAAA,IAC7D,YAAA,EAAc,EAAA,CAAG,YAAA,EAAc,SAAA,CAAU,YAAY,CAAA;AAAA,IACrD,YAAA,EAAc,EAAA;AAAA,MACZ,aAAA;AAAA,MACA,8DAAA;AAAA,MACA,SAAA,CAAU;AAAA,KACZ;AAAA,IACA,WAAA,EAAa,EAAA;AAAA,MACX,aAAA;AAAA,MACA,6DAAA;AAAA,MACA,SAAA,CAAU;AAAA,KACZ;AAAA,IACA,UAAA,EAAY,EAAA,CAAG,aAAA,EAAe,sBAAA,EAAwB,UAAU,UAAU,CAAA;AAAA,IAC1E,QAAA,EAAU,EAAA,CAAG,aAAA,EAAe,sBAAA,EAAwB,UAAU,QAAQ,CAAA;AAAA,IACtE,cAAA,EAAgB,EAAA,CAAG,aAAA,EAAe,SAAA,CAAU,cAAc;AAAA,GAC5D;AACF;AC1CA,SAAS,YAAA,CAAa,EAAE,SAAA,EAAU,EAA2B;AAC3D,EAAA,uBACEA,GAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,OAAA,EAAQ,WAAA,EAAY,SAAA,EAAU,SAAA,EAAU,IAAA,EAAK,MAAA,EACnE,QAAA,kBAAAA,GAAAA;AAAA,IAAC,MAAA;AAAA,IAAA;AAAA,MACC,CAAA,EACE,YACI,gEAAA,GACA,kEAAA;AAAA,MAEN,MAAA,EAAO,cAAA;AAAA,MACP,WAAA,EAAY,KAAA;AAAA,MACZ,aAAA,EAAc,OAAA;AAAA,MACd,cAAA,EAAe;AAAA;AAAA,GACjB,EACF,CAAA;AAEJ;AAEA,SAAS,UAAA,GAAa;AACpB,EAAA,uBACEE,IAAAA,CAAC,KAAA,EAAA,EAAI,aAAA,EAAY,MAAA,EAAO,SAAQ,WAAA,EAAY,SAAA,EAAU,SAAA,EAAU,IAAA,EAAK,MAAA,EACnE,QAAA,EAAA;AAAA,oBAAAF,GAAAA,CAAC,QAAA,EAAA,EAAO,EAAA,EAAG,KAAA,EAAM,EAAA,EAAG,KAAA,EAAM,CAAA,EAAE,GAAA,EAAI,MAAA,EAAO,cAAA,EAAe,WAAA,EAAY,KAAA,EAAM,CAAA;AAAA,oBACxEA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,CAAA,EAAE,oBAAA;AAAA,QACF,MAAA,EAAO,cAAA;AAAA,QACP,WAAA,EAAY,KAAA;AAAA,QACZ,aAAA,EAAc;AAAA;AAAA;AAChB,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,SAAA,GAAY;AACnB,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAQ,WAAA;AAAA,MACR,SAAA,EAAU,aAAA;AAAA,MACV,IAAA,EAAK,MAAA;AAAA,MAEL,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,kBAAA;AAAA,UACF,MAAA,EAAO,cAAA;AAAA,UACP,WAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAc;AAAA;AAAA;AAChB;AAAA,GACF;AAEJ;AAEA,SAASG,SAAAA,GAAW;AAClB,EAAA,uBACED,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAQ,WAAA;AAAA,MACR,SAAA,EAAU,SAAA;AAAA,MACV,IAAA,EAAK,cAAA;AAAA,MAEL,QAAA,EAAA;AAAA,wBAAAF,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,KAAI,EAAA,EAAG,IAAA,EAAK,GAAE,KAAA,EAAM,CAAA;AAAA,wBAC/BA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,KAAA,EAAM,CAAA;AAAA,wBAChCA,IAAC,QAAA,EAAA,EAAO,EAAA,EAAG,MAAK,EAAA,EAAG,IAAA,EAAK,GAAE,KAAA,EAAM;AAAA;AAAA;AAAA,GAClC;AAEJ;AAEA,SAAS,cAAA,CAAe,EAAE,QAAA,EAAS,EAA0B;AAC3D,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,aAAA,EAAY,MAAA;AAAA,MACZ,OAAA,EAAQ,WAAA;AAAA,MACR,SAAA,EAAW,EAAA;AAAA,QACT,4DAAA;AAAA,QACA,QAAA,IAAY;AAAA,OACd;AAAA,MACA,IAAA,EAAK,MAAA;AAAA,MAEL,QAAA,kBAAAA,GAAAA;AAAA,QAAC,MAAA;AAAA,QAAA;AAAA,UACC,CAAA,EAAE,cAAA;AAAA,UACF,MAAA,EAAO,cAAA;AAAA,UACP,WAAA,EAAY,KAAA;AAAA,UACZ,aAAA,EAAc,OAAA;AAAA,UACd,cAAA,EAAe;AAAA;AAAA;AACjB;AAAA,GACF;AAEJ;AAEA,SAAS,SAAA,CAAa,KAAsB,IAAA,EAAgB;AAC1D,EAAA,IAAI,OAAO,QAAQ,UAAA,EAAY;AAC7B,IAAA,GAAA,CAAI,IAAI,CAAA;AAAA,EACV,WAAW,GAAA,EAAK;AACd,IAAC,IAAmC,OAAA,GAAU,IAAA;AAAA,EAChD;AACF;AAEA,SAAS,mBAAA,CAAoB,MAAc,KAAA,EAAe;AACxD,EAAA,IAAI,CAAC,MAAA,CAAO,QAAA,CAAS,KAAK,CAAA,EAAG;AAC3B,IAAA,MAAM,IAAI,UAAA,CAAW,CAAA,kBAAA,EAAqB,IAAI,CAAA,yBAAA,CAA2B,CAAA;AAAA,EAC3E;AACF;AAEA,SAAS,oBACP,KAAA,EACc;AACd,EAAA,MAAM,QAAA,GAAW,MAAM,QAAA,IAAY,GAAA;AACnC,EAAA,MAAM,QAAA,GAAW,MAAM,QAAA,IAAY,GAAA;AACnC,EAAA,MAAM,YAAA,GAAe,MAAM,YAAA,IAAgB,GAAA;AAC3C,EAAA,MAAM,cAAA,GAAiB,MAAM,cAAA,IAAkB,EAAA;AAC/C,EAAA,MAAM,iBAAA,GAAoB,MAAM,iBAAA,IAAqB,GAAA;AAErD,EAAA,mBAAA,CAAoB,YAAY,QAAQ,CAAA;AACxC,EAAA,mBAAA,CAAoB,YAAY,QAAQ,CAAA;AACxC,EAAA,mBAAA,CAAoB,gBAAgB,YAAY,CAAA;AAChD,EAAA,mBAAA,CAAoB,kBAAkB,cAAc,CAAA;AACpD,EAAA,mBAAA,CAAoB,qBAAqB,iBAAiB,CAAA;AAE1D,EAAA,IAAI,QAAA,IAAY,CAAA;AACd,IAAA,MAAM,IAAI,UAAA;AAAA,MACR;AAAA,KACF;AACF,EAAA,IAAI,QAAA,GAAW,QAAA;AACb,IAAA,MAAM,IAAI,UAAA;AAAA,MACR;AAAA,KACF;AACF,EAAA,IAAI,cAAA,GAAiB,CAAA;AACnB,IAAA,MAAM,IAAI,UAAA;AAAA,MACR;AAAA,KACF;AACF,EAAA,IAAI,iBAAA,GAAoB,CAAA;AACtB,IAAA,MAAM,IAAI,UAAA;AAAA,MACR;AAAA,KACF;AAEF,EAAA,OAAO;AAAA,IACL,YAAA;AAAA,IACA,QAAA;AAAA,IACA,QAAA;AAAA,IACA,cAAA;AAAA,IACA;AAAA,GACF;AACF;AAEA,SAAS,UAAA,CACP,OACA,MAAA,EACA;AACA,EAAA,OAAO,IAAA,CAAK,IAAI,IAAA,CAAK,GAAA,CAAI,OAAO,MAAA,CAAO,QAAQ,CAAA,EAAG,MAAA,CAAO,QAAQ,CAAA;AACnE;AAEA,SAAS,kBAAA,CACP,OACA,cAAA,EACA;AACA,EAAA,IAAI,cAAA,EAAgB;AAClB,IAAA,cAAA,CAAe,KAAK,CAAA;AACpB,IAAA;AAAA,EACF;AACA,EAAA,IAAI,OAAO,YAAY,WAAA,EAAa;AAClC,IAAA,OAAA,CAAQ,IAAA,CAAK,qDAAqD,KAAK,CAAA;AAAA,EACzE;AACF;AAEA,SAAS,eAAe,OAAA,EAA+C;AACrE,EAAA,IAAI,SAAS,OAAO,OAAA;AACpB,EAAA,IAAI,OAAO,MAAA,KAAW,WAAA,EAAa,OAAO,MAAA;AAC1C,EAAA,OAAO,MAAA,CAAO,YAAA;AAChB;AAEA,SAAS,gBAAA,CACP,OACA,MAAA,EACc;AACd,EAAA,MAAM,QAAA,GAAW;AAAA,IACf,SAAA,EAAW,MAAM,gBAAA,IAAoB,KAAA;AAAA,IACrC,KAAA,EAAO,UAAA,CAAW,MAAA,CAAO,YAAA,EAAc,MAAM;AAAA,GAC/C;AACA,EAAA,IAAI,CAAC,KAAA,CAAM,UAAA,EAAY,OAAO,QAAA;AAE9B,EAAA,MAAM,OAAA,GAAU,cAAA,CAAe,KAAA,CAAM,OAAO,CAAA;AAC5C,EAAA,IAAI,CAAC,SAAS,OAAO,QAAA;AAErB,EAAA,IAAI;AACF,IAAA,MAAM,QAAA,GAAW,OAAA,CAAQ,OAAA,CAAQ,KAAA,CAAM,UAAU,CAAA;AACjD,IAAA,IAAI,CAAC,UAAU,OAAO,QAAA;AACtB,IAAA,MAAM,WAAA,GAAc,IAAA,CAAK,KAAA,CAAM,QAAQ,CAAA;AACvC,IAAA,OAAO;AAAA,MACL,WACE,OAAO,WAAA,CAAY,cAAc,SAAA,GAC7B,WAAA,CAAY,YACZ,QAAA,CAAS,SAAA;AAAA,MACf,KAAA,EACE,OAAO,WAAA,CAAY,KAAA,KAAU,YAC7B,MAAA,CAAO,QAAA,CAAS,WAAA,CAAY,KAAK,IAC7B,UAAA,CAAW,WAAA,CAAY,KAAA,EAAO,MAAM,IACpC,QAAA,CAAS;AAAA,KACjB;AAAA,EACF,SAAS,KAAA,EAAO;AACd,IAAA,kBAAA,CAAmB,KAAA,EAAO,MAAM,cAAc,CAAA;AAC9C,IAAA,OAAO,QAAA;AAAA,EACT;AACF;AAEA,SAAS,YAAA,CAAa,OAAkB,aAAA,EAAmC;AACzE,EAAA,IAAI,eAAe,OAAO,aAAA;AAC1B,EAAA,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,KAAA,GAAQ,MAAA;AAC7C;AAEA,SAAS,uBAAuB,aAAA,EAA+C;AAC7E,EAAA,IAAI,aAAA,KAAkB,OAAA;AACpB,IAAA,OAAO,6DAAA;AACT,EAAA,IAAI,aAAA,KAAkB,SAAA;AACpB,IAAA,OAAO,wEAAA;AACT,EAAA,IAAI,aAAA,KAAkB,OAAA;AACpB,IAAA,OAAO,6CAAA;AACT,EAAA,OAAO,iDAAA;AACT;AAEA,SAAS,kBACP,UAAA,EACA;AACA,EAAA,IAAI,UAAA,EAAY,MAAA,KAAW,MAAA,IAAa,UAAA,CAAW,WAAW,SAAA,EAAW;AACvE,IAAA,MAAM,IAAI,SAAA;AAAA,MACR,CAAA,kCAAA,EAAqC,WAAW,MAAM,CAAA,6BAAA;AAAA,KACxD;AAAA,EACF;AACA,EAAA,MAAM,OAAA,GAAU,YAAY,MAAA,KAAW,SAAA;AACvC,EAAA,MAAM,OAAA,GAAU,UAAA,EAAY,OAAA,KAAY,OAAA,GAAU,SAAA,GAAY,SAAA,CAAA;AAC9D,EAAA,MAAM,OAAA,GAAU,YAAY,OAAA,IAAW,OAAA;AACvC,EAAA,MAAM,aAAA,GACJ,UAAA,EAAY,aAAA,KAAkB,OAAA,GAAU,OAAA,GAAU,MAAA,CAAA;AACpD,EAAA,OAAO;AAAA,IACL,OAAA;AAAA,IACA,OAAA;AAAA,IACA,OAAA;AAAA,IACA,aAAA;AAAA,IACA,QAAA,EAAU,OAAA,GAAU,eAAA,GAAkB,sBAAA,CAAuB,aAAa,CAAA;AAAA,IAC1E,QAAA,EAAU,UACN,eAAA,GACA,sFAAA;AAAA,IACJ,IAAA,EAAM,EAAA;AAAA,MACJ,YAAY,OAAA,IAAW,+CAAA;AAAA,MACvB,YAAY,OAAA,IACV,yDAAA;AAAA,MACF,YAAY,SAAA,IACV,6EAAA;AAAA,MACF,YAAY,UAAA,IACV,yDAAA;AAAA,MACF,OAAA,IAAW,qCAAA;AAAA,MACX,OAAA,IAAW,oBAAA;AAAA,MACX,OAAA,IACE,YAAY,OAAA,IACZ;AAAA,KACJ;AAAA,IACA,UAAA,EACE,YAAY,SAAA,GACR,OAAA,GACE,0EACA,SAAA,GACF,OAAA,KAAY,gBACV,UAAA,GACA,UAAA;AAAA,IACR,WAAA,EACE,YAAY,SAAA,GACR,OAAA,GACE,cACA,aAAA,GACF,OAAA,KAAY,gBACV,WAAA,GACA,WAAA;AAAA,IACR,YAAA,EACE,YAAY,SAAA,GACR,OAAA,GACE,sEACA,KAAA,GACF,OAAA,KAAY,gBACV,MAAA,GACA;AAAA,GACV;AACF;AAEA,IAAM,+BAAA,GACJ,8MAAA;AAEF,IAAM,kCAAA,GACJ,2aAAA;AAEF,IAAM,oCAAA,GACJ,mHAAA;AAEF,SAAS,gCACP,UAAA,EACgC;AAChC,EAAA,OAAO;AAAA,IACL,GAAG,UAAA;AAAA,IACH,WAAA,EAAa,EAAA,CAAG,+BAAA,EAAiC,UAAA,EAAY,WAAW,CAAA;AAAA,IACxE,YAAA,EAAc,EAAA;AAAA,MACZ,kCAAA;AAAA,MACA,UAAA,EAAY;AAAA,KACd;AAAA,IACA,UAAA,EAAY,EAAA;AAAA,MACV,+BAAA;AAAA,MACA,meAAA;AAAA,MACA,UAAA,EAAY;AAAA,KACd;AAAA,IACA,QAAA,EAAU,EAAA;AAAA,MACR,oCAAA;AAAA,MACA,UAAA,EAAY;AAAA,KACd;AAAA,IACA,UAAA,EAAY,EAAA;AAAA,MACV,oCAAA;AAAA,MACA,UAAA,EAAY;AAAA,KACd;AAAA,IACA,YAAA,EAAc,EAAA;AAAA,MACZ,oCAAA;AAAA,MACA,UAAA,EAAY;AAAA,KACd;AAAA,IACA,WAAA,EAAa,EAAA;AAAA,MACX,oCAAA;AAAA,MACA,UAAA,EAAY;AAAA,KACd;AAAA,IACA,cAAA,EAAgB,EAAA;AAAA,MACd,oCAAA;AAAA,MACA,UAAA,EAAY;AAAA;AACd,GACF;AACF;AAiBA,SAAS,cAAA,CAAe;AAAA,EACtB,IAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,QAAA,GAAW,KAAA;AAAA,EACX,UAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EASG;AACD,EAAA,OAAO,EAAA;AAAA,IACL,+RAAA;AAAA,IACA,UAAA,CAAW,UAAA;AAAA,IACX,UAAA,CAAW,WAAA;AAAA,IACX,WAAW,OAAA,IAAW,UAAA;AAAA,IACtB,QAAA,GACI,mGAAA,GACA,MAAA,GACE,UAAA,CAAW,WACX,UAAA,CAAW,QAAA;AAAA,IACjB,SAAA,IAAa,CAAC,MAAA,IAAU,qBAAA;AAAA,IACxB,KAAK,QAAA,IAAY,gCAAA;AAAA,IACjB,UAAA,EAAY,IAAA;AAAA,IACZ,UAAU,UAAA,EAAY,UAAA;AAAA,IACtB,UAAU,UAAA,EAAY,UAAA;AAAA,IACtB,YAAA;AAAA,IACA,IAAA,CAAK;AAAA,GACP;AACF;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,IAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,uBACEE,IAAAA,CAAAE,QAAAA,EAAA,EACG,QAAA,EAAA;AAAA,IAAA,iBAAA,CAAkB,IAAA,CAAK,IAAI,CAAA,mBAC1BJ,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,oEAAA;AAAA,UACA,WAAW,OAAA,IAAW,WAAA;AAAA,UACtB,UAAA,EAAY;AAAA,SACd;AAAA,QACA,aAAA,EAAY,MAAA;AAAA,QAEX,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,KACR,GACE,IAAA;AAAA,IACH,MAAA,IAAU,CAAC,SAAA,mBACVE,IAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,8BAAA;AAAA,UACA,UAAA,EAAY;AAAA,SACd;AAAA,QAEA,QAAA,EAAA;AAAA,0BAAAF,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,gCAAA;AAAA,gBACA,WAAW,OAAA,IAAW,aAAA;AAAA,gBACtB,UAAA,EAAY;AAAA,eACd;AAAA,cAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,WACR;AAAA,UACC,iBAAA,CAAkB,IAAA,CAAK,WAAW,CAAA,mBACjCA,GAAAA;AAAA,YAAC,MAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,qCAAA;AAAA,gBACA,WAAW,OAAA,IAAW,cAAA;AAAA,gBACtB,UAAA,EAAY;AAAA,eACd;AAAA,cAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,WACR,GACE;AAAA;AAAA;AAAA,KACN,GACE,IAAA;AAAA,IAAA,CACF,UAAU,CAAC,SAAA,KAAc,kBAAkB,IAAA,CAAK,IAAI,oBACpDA,GAAAA;AAAA,MAAC,MAAA;AAAA,MAAA;AAAA,QACC,SAAA,EAAW,EAAA;AAAA,UACT,wCAAA;AAAA,UACA,UAAA,EAAY;AAAA,SACd;AAAA,QAEC,QAAA,EAAA,IAAA,CAAK;AAAA;AAAA,KACR,GACE,IAAA;AAAA,IAAA,CACF,UAAU,CAAC,SAAA,KAAc,kBAAkB,IAAA,CAAK,UAAU,oBAC1DA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAW,GAAG,UAAA,EAAY,UAAA,EAAY,cAAc,CAAA,EACvD,QAAA,EAAA,IAAA,CAAK,YACR,CAAA,GACE,IAAA;AAAA,IAAA,CACF,MAAA,IAAU,CAAC,SAAA,KAAc,iBAAA,CAAkB,YAAY,CAAA,mBACvDA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,2CAAA,EACb,QAAA,EAAA,YAAA,EACH,CAAA,GACE;AAAA,GAAA,EACN,CAAA;AAEJ;AAEA,SAAS,WAAA,CAAY;AAAA,EACnB,IAAA;AAAA,EACA,MAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,MAAA,GAAS,KAAA;AAAA,EACT,QAAA,GAAW,KAAA;AAAA,EACX,QAAA;AAAA,EACA,YAAA;AAAA,EACA,YAAA;AAAA,EACA;AACF,CAAA,EAAqB;AACnB,EAAA,MAAM,aAAA,GAAgB,MAAA,KAAW,IAAA,CAAK,IAAA,GAAO,GAAA,GAAM,QAAA,CAAA;AACnD,EAAA,MAAM,KAAA,GAAQ,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,KAAK,KAAK,CAAA;AACjD,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,IAAY,EAAC;AACnC,EAAA,MAAM,WAAA,GAAc,CAAC,KAAA,KAAmC;AACtD,IAAA,IAAI,KAAK,QAAA,EAAU;AACjB,MAAA,KAAA,CAAM,cAAA,EAAe;AACrB,MAAA;AAAA,IACF;AACA,IAAA,IAAA,CAAK,UAAU,KAAK,CAAA;AACpB,IAAA,QAAA,IAAW;AAAA,EACb,CAAA;AACA,EAAA,MAAM,cAAA,GAAiB;AAAA,IACrB,GAAG,QAAA;AAAA,IACH,GAAI,KAAK,EAAA,GAAK,EAAE,IAAI,IAAA,CAAK,EAAA,KAAO,EAAC;AAAA,IACjC,GAAI,KAAK,IAAA,GAAO,EAAE,MAAM,IAAA,CAAK,IAAA,KAAS,EAAC;AAAA,IACvC,GAAI,aAAA,KAAkB,QAAA,GAClB,EAAE,IAAA,EAAM,UAAU,QAAA,EAAU,IAAA,CAAK,QAAA,EAAS,GAC1C,EAAC;AAAA,IACL,KAAA;AAAA,IACA,cAAA,EAAgB,SAAS,MAAA,GAAS,MAAA;AAAA,IAClC,eAAA,EAAiB,KAAK,QAAA,IAAY,MAAA;AAAA,IAClC,eAAA,EAAiB,YAAA;AAAA,IACjB,eAAA,EAAiB,YAAA;AAAA,IACjB,QAAA,EAAU,IAAA,CAAK,QAAA,GAAW,EAAA,GAAK,QAAA,CAAS,QAAA;AAAA,IACxC,OAAA,EAAS;AAAA,GACX;AAEA,EAAA,uBACEA,GAAAA;AAAA,IAAC,aAAA;AAAA,IAAA;AAAA,MACE,GAAG,cAAA;AAAA,MACJ,mCAAiC,IAAA,CAAK,EAAA;AAAA,MACtC,aAAA,EAAa,SAAS,MAAA,GAAS,OAAA;AAAA,MAC/B,eAAA,EAAe,YAAA,KAAiB,MAAA,GAAY,MAAA,GAAY,OAAO,YAAY,CAAA;AAAA,MAC3E,WAAW,cAAA,CAAe;AAAA,QACxB,IAAA;AAAA,QACA,MAAA;AAAA,QACA,SAAA;AAAA,QACA,MAAA;AAAA,QACA,QAAA;AAAA,QACA,UAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAc,QAAA,CAAS;AAAA,OACxB,CAAA;AAAA,MAED,QAAA,kBAAAA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,UAAA;AAAA,UACA,IAAA;AAAA,UACA,SAAA;AAAA,UACA,MAAA;AAAA,UACA,UAAA;AAAA,UACA;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACzB,IAAA;AAAA,EACA,UAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,IAAY,EAAC;AACnC,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACE,GAAG,QAAA;AAAA,MACJ,mCAAiC,IAAA,CAAK,EAAA;AAAA,MACtC,eAAA,EAAe,KAAK,QAAA,IAAY,MAAA;AAAA,MAChC,KAAA,EAAO,YAAA,CAAa,IAAA,CAAK,KAAA,EAAO,KAAK,KAAK,CAAA;AAAA,MAC1C,WAAW,cAAA,CAAe;AAAA,QACxB,IAAA;AAAA,QACA,MAAA,EAAQ,KAAA;AAAA,QACR,SAAA,EAAW,KAAA;AAAA,QACX,MAAA,EAAQ,IAAA;AAAA,QACR,QAAA,EAAU,IAAA;AAAA,QACV,UAAA;AAAA,QACA,UAAA;AAAA,QACA,cAAc,QAAA,CAAS;AAAA,OACxB,CAAA;AAAA,MAED,QAAA,kBAAAA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,UAAA;AAAA,UACA,IAAA;AAAA,UACA,SAAA,EAAW,KAAA;AAAA,UACX,MAAA,EAAM,IAAA;AAAA,UACN;AAAA;AAAA;AACF;AAAA,GACF;AAEJ;AAEA,SAAS,iBAAA,CAAkB;AAAA,EACzB,MAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,OAAO,EAAA;AAAA,IACL,mMAAA;AAAA,IACA,UAAA,CAAW,UAAA;AAAA,IACX,WAAW,OAAA,IAAW,UAAA;AAAA,IACtB,MAAA,GAAS,UAAA,CAAW,QAAA,GAAW,UAAA,CAAW;AAAA,GAC5C;AACF;AAEA,SAAS,kBAAA,CACP,OACA,cAAA,EACA;AACA,EAAA,IAAI,CAAC,gBAAgB,OAAO,KAAA;AAC5B,EAAA,OAAO,KAAA,CAAM,MAAA;AAAA,IACX,CAAC,SACC,CAAC,IAAA,CAAK,WAAW,MAAA,IAAU,IAAA,CAAK,SAAA,CAAU,QAAA,CAAS,cAAc;AAAA,GACrE;AACF;AAEA,SAAS,cAAA,CAAe;AAAA,EACtB,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM;AAAA,IACJ,QAAQ,EAAC;AAAA,IACT,WAAW,EAAC;AAAA,IACZ,UAAU,EAAC;AAAA,IACX,cAAA;AAAA,IACA,YAAA;AAAA,IACA,cAAA;AAAA,IACA,MAAA;AAAA,IACA,MAAA,GAAS,QAAA;AAAA,IACT,KAAA;AAAA,IACA,SAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,aAAA,GAAgB,kBAAA,CAAmB,KAAA,EAAO,cAAc,CAAA;AAC9D,EAAA,MAAM,gBAAA,GAAmB,QAAA,CACtB,GAAA,CAAI,CAAC,OAAA,MAAa;AAAA,IACjB,GAAG,OAAA;AAAA,IACH,KAAA,EAAO,kBAAA,CAAmB,OAAA,CAAQ,KAAA,EAAO,cAAc;AAAA,GACzD,CAAE,EACD,MAAA,CAAO,CAAC,YAAY,OAAA,CAAQ,KAAA,CAAM,SAAS,CAAC,CAAA;AAC/C,EAAA,MAAM,QAAA,GAAW,aAAA,CAAc,MAAA,GAAS,CAAA,IAAK,iBAAiB,MAAA,GAAS,CAAA;AAEvE,EAAA,MAAM,cACJ,OAAA,CAAQ,MAAA,GAAS,CAAA,IAAK,CAAC,4BACrBA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,OAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,MAAA,KAAW,UACP,6DAAA,GACA,sBAAA;AAAA,QACJ,UAAA,EAAY;AAAA,OACd;AAAA,MACA,YAAA,EAAY,SAAA,GAAY,CAAA,EAAG,SAAS,CAAA,QAAA,CAAA,GAAa,MAAA;AAAA,MAEhD,QAAA,EAAA,OAAA,CAAQ,GAAA,CAAI,CAAC,MAAA,KAAW;AACvB,QAAA,MAAM,MAAA,GAAS,OAAO,EAAA,KAAO,cAAA;AAC7B,QAAA,uBACEE,IAAAA;AAAA,UAAC,QAAA;AAAA,UAAA;AAAA,YAEC,IAAA,EAAK,QAAA;AAAA,YACL,KAAA,EACE,OAAO,KAAA,KACN,OAAO,OAAO,KAAA,KAAU,QAAA,GAAW,OAAO,KAAA,GAAQ,MAAA,CAAA;AAAA,YAErD,cAAA,EAAc,MAAA;AAAA,YACd,UAAU,MAAA,CAAO,QAAA;AAAA,YACjB,SAAA,EAAW,EAAA;AAAA,cACT,yQAAA;AAAA,cACA,MAAA,IAAU,0BAAA;AAAA,cACV,UAAA,EAAY,UAAA;AAAA,cACZ,UAAU,UAAA,EAAY;AAAA,aACxB;AAAA,YACA,OAAA,EAAS,MAAM,cAAA,GAAiB,MAAM,CAAA;AAAA,YAErC,QAAA,EAAA;AAAA,cAAA,iBAAA,CAAkB,MAAA,CAAO,IAAI,CAAA,mBAC5BF,GAAAA,CAAC,UAAK,aAAA,EAAY,MAAA,EAAQ,QAAA,EAAA,MAAA,CAAO,IAAA,EAAK,CAAA,GACpC,IAAA;AAAA,8BACJA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,iBAAO,KAAA,EAAM;AAAA;AAAA,WAAA;AAAA,UAnBpC,MAAA,CAAO;AAAA,SAoBd;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH,GACE,IAAA;AAEN,EAAA,MAAM,QAAA,GAAW,QAAA,mBACfE,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAW,EAAA,CAAG,gBAAA,EAAkB,UAAA,EAAY,IAAI,CAAA,EAClD,QAAA,EAAA;AAAA,IAAA,aAAA,CAAc,MAAA,GAAS,CAAA,mBACtBF,GAAAA,CAAC,QAAG,SAAA,EAAU,0BAAA,EACX,QAAA,EAAA,aAAA,CAAc,GAAA,CAAI,CAAC,IAAA,qBAClBA,GAAAA,CAAC,QACC,QAAA,kBAAAA,GAAAA;AAAA,MAAC,WAAA;AAAA,MAAA;AAAA,QACC,IAAA;AAAA,QACA,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,EAAA,KAAO,YAAA;AAAA,QACnC,SAAA;AAAA,QACA,MAAA;AAAA,QACA,UAAA;AAAA,QACA;AAAA;AAAA,KACF,EAAA,EARO,IAAA,CAAK,EASd,CACD,GACH,CAAA,GACE,IAAA;AAAA,IACH,gBAAA,CAAiB,GAAA,CAAI,CAAC,OAAA,qBACrBE,IAAAA;AAAA,MAAC,SAAA;AAAA,MAAA;AAAA,QAEC,SAAA,EAAW,EAAA;AAAA,UACT,iBAAA;AAAA,UACA,UAAA,EAAY,OAAA;AAAA,UACZ,OAAA,CAAQ;AAAA,SACV;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,CAAC,SAAA,IAAa,iBAAA,CAAkB,OAAA,CAAQ,KAAK,oBAC5CF,GAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,SAAA,EAAW,EAAA;AAAA,gBACT,mFAAA;AAAA,gBACA,UAAA,EAAY,YAAA;AAAA,gBACZ,OAAA,CAAQ;AAAA,eACV;AAAA,cAEC,QAAA,EAAA,OAAA,CAAQ;AAAA;AAAA,WACX,GACE,IAAA;AAAA,0BACJA,GAAAA,CAAC,IAAA,EAAA,EAAG,SAAA,EAAU,0BAAA,EACX,QAAA,EAAA,OAAA,CAAQ,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,qBAClBA,GAAAA,CAAC,QACC,QAAA,kBAAAA,GAAAA;AAAA,YAAC,WAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,MAAA,EAAQ,IAAA,CAAK,MAAA,IAAU,IAAA,CAAK,EAAA,KAAO,YAAA;AAAA,cACnC,SAAA;AAAA,cACA,MAAA;AAAA,cACA,UAAA;AAAA,cACA;AAAA;AAAA,WACF,EAAA,EARO,IAAA,CAAK,EASd,CACD,CAAA,EACH;AAAA;AAAA,OAAA;AAAA,MA/BK,OAAA,CAAQ;AAAA,KAiChB;AAAA,GAAA,EACH,oBAEAA,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,uDACZ,QAAA,EAAA,KAAA,EACH,CAAA;AAGF,EAAA,uBACEE,IAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,YAAA,EAAY,SAAA;AAAA,MACZ,WAAW,EAAA,CAAG,MAAA,KAAW,OAAA,IAAW,CAAC,aAAa,oBAAoB,CAAA;AAAA,MAErE,QAAA,EAAA;AAAA,QAAA,WAAA;AAAA,QACA;AAAA;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,UAAA,CAAW;AAAA,EAClB,KAAA;AAAA,EACA,MAAA;AAAA,EACA,MAAA;AAAA,EACA,WAAA;AAAA,EACA,QAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA,GAAW;AACb,CAAA,EAYG;AACD,EAAA,MAAM,SAAA,GAAY,cAAc,QAAA,GAAW,KAAA;AAC3C,EAAA,MAAM,QAAA,GAAW,KAAA,CAAM,QAAA,IAAY,EAAC;AACpC,EAAA,uBACEA,IAAAA;AAAA,IAAC,SAAA;AAAA,IAAA;AAAA,MACE,GAAG,QAAA;AAAA,MACH,GAAI,WAAA,GAAc,EAAE,IAAA,EAAM,QAAA,KAAa,EAAC;AAAA,MACzC,oCAAkC,KAAA,CAAM,EAAA;AAAA,MACxC,cAAA,EAAc,WAAA,IAAe,MAAA,GAAS,MAAA,GAAS,MAAA;AAAA,MAC/C,eAAA,EAAe,MAAM,QAAA,IAAY,MAAA;AAAA,MACjC,KAAA,EAAO,YAAA,CAAa,KAAA,CAAM,KAAA,EAAO,MAAM,KAAK,CAAA;AAAA,MAC5C,QAAA,EAAU,WAAA,GAAc,KAAA,CAAM,QAAA,GAAW,MAAA;AAAA,MACzC,SAAA,EAAW,EAAA;AAAA,QACT,qRAAA;AAAA,QACA,UAAA,CAAW,UAAA;AAAA,QACX,UAAA,CAAW,WAAA;AAAA,QACX,WAAW,OAAA,IAAW,UAAA;AAAA,QACtB,QAAA,GACI,mGAAA,GACA,MAAA,GACE,UAAA,CAAW,WACX,UAAA,CAAW,QAAA;AAAA,QACjB,MAAM,QAAA,IAAY,gCAAA;AAAA,QAClB,UAAA,EAAY,SAAA;AAAA,QACZ,UAAU,UAAA,EAAY,eAAA;AAAA,QACtB,QAAA,CAAS,SAAA;AAAA,QACT,KAAA,CAAM;AAAA,OACR;AAAA,MACA,OAAA,EACE,eAAe,CAAC,KAAA,CAAM,WAClB,MAAM,QAAA,GAAW,KAAA,EAAO,MAAM,CAAA,GAC9B,MAAA;AAAA,MAGL,QAAA,EAAA;AAAA,QAAA,iBAAA,CAAkB,KAAA,CAAM,IAAI,CAAA,mBAC3BF,GAAAA;AAAA,UAAC,MAAA;AAAA,UAAA;AAAA,YACC,SAAA,EAAW,EAAA;AAAA,cACT,oEAAA;AAAA,cACA,WAAW,OAAA,IAAW;AAAA,aACxB;AAAA,YACA,aAAA,EAAY,MAAA;AAAA,YAEX,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,SACT,GACE,IAAA;AAAA,wBACJA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,kBAAA,EAAoB,gBAAM,KAAA,EAAM;AAAA;AAAA;AAAA,GAClD;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,MAAA;AAAA,EACA,OAAA;AAAA,EACA,IAAA;AAAA,EACA,SAAA;AAAA,EACA,MAAA,GAAS;AACX,CAAA,EAMG;AACD,EAAA,IAAI,CAAC,iBAAA,CAAkB,OAAO,CAAA,EAAG,OAAO,IAAA;AACxC,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,sCAAA,EACE,IAAA,KAAS,MAAA,GAAS,MAAA,GAAS,MAAA;AAAA,MAE7B,uCAAA,EACE,IAAA,KAAS,OAAA,GAAU,MAAA,GAAS,MAAA;AAAA,MAE9B,wCAAA,EAAwC,SAAS,MAAA,GAAS,MAAA;AAAA,MAC1D,SAAA,EAAW,EAAA;AAAA,QACT,yIAAA;AAAA,QACA;AAAA,OACF;AAAA,MAEC,QAAA,EAAA;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,sBACP,IAAA,EAC8C;AAC9C,EAAA,OAAO,KAAK,WAAA,KAAgB,YAAA;AAC9B;AAEA,SAAS,mBAAmB,UAAA,EAA0C;AACpE,EAAA,MAAM,OAAA,uBAAc,GAAA,EAAY;AAChC,EAAA,MAAM,QAAA,uBAAe,GAAA,EAAY;AACjC,EAAA,MAAM,kBAAA,uBAAyB,GAAA,EAAY;AAE3C,EAAA,KAAA,MAAW,QAAQ,UAAA,EAAY;AAC7B,IAAA,MAAM,SAAS,IAAA,CAAK,EAAA;AACpB,IAAA,IAAI,OAAA,CAAQ,GAAA,CAAI,MAAM,CAAA,EAAG;AACvB,MAAA,MAAM,IAAI,UAAA;AAAA,QACR,8DAA8D,MAAM,CAAA,iBAAA;AAAA,OACtE;AAAA,IACF;AACA,IAAA,OAAA,CAAQ,IAAI,MAAM,CAAA;AAElB,IAAA,MAAM,UAAA,GAAa,sBAAsB,IAAI,CAAA;AAC7C,IAAA,IAAI,UAAA,EAAY;AACd,MAAA,IAAI,CAAC,IAAA,CAAK,QAAA,CAAS,MAAA,EAAQ;AACzB,QAAA,MAAM,IAAI,UAAA;AAAA,UACR,CAAA,mCAAA,EAAsC,KAAK,EAAE,CAAA,kCAAA;AAAA,SAC/C;AAAA,MACF;AACA,MAAA,IACE,IAAA,CAAK,SAAS,MAAA,IACd,IAAA,CAAK,OAAO,MAAA,IACZ,IAAA,CAAK,YAAY,MAAA,EACjB;AACA,QAAA,MAAM,IAAI,SAAA;AAAA,UACR,sCAAsC,MAAM,CAAA,qCAAA;AAAA,SAC9C;AAAA,MACF;AACA,MAAA,kBAAA,CAAmB,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,IAChC,CAAA,MAAA,IAAW,IAAA,CAAK,oBAAA,KAAyB,aAAA,EAAe;AACtD,MAAA,IAAI,CAAC,IAAA,CAAK,QAAA,EAAU,MAAA,EAAQ;AAC1B,QAAA,MAAM,IAAI,UAAA;AAAA,UACR,CAAA,0CAAA,EAA6C,KAAK,EAAE,CAAA,kCAAA;AAAA,SACtD;AAAA,MACF;AACA,MAAA,kBAAA,CAAmB,GAAA,CAAI,KAAK,EAAE,CAAA;AAAA,IAChC;AAEA,IAAA,KAAA,MAAW,KAAA,IAAS,IAAA,CAAK,QAAA,IAAY,EAAC,EAAG;AACvC,MAAA,IAAI,QAAA,CAAS,GAAA,CAAI,KAAA,CAAM,EAAE,CAAA,EAAG;AAC1B,QAAA,MAAM,IAAI,UAAA;AAAA,UACR,CAAA,4DAAA,EAA+D,MAAM,EAAE,CAAA,iBAAA;AAAA,SACzE;AAAA,MACF;AACA,MAAA,QAAA,CAAS,GAAA,CAAI,MAAM,EAAE,CAAA;AAAA,IACvB;AAAA,EACF;AAEA,EAAA,OAAO,kBAAA;AACT;AAEA,SAAS,mBAAA,CAAoB;AAAA,EAC3B,IAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,QAAA;AAAA,EACA;AACF,CAAA,EAOG;AACD,EAAA,MAAM,YAAY,OAAO,IAAA,CAAK,UAAU,QAAA,GAAW,IAAA,CAAK,QAAQ,IAAA,CAAK,EAAA;AACrE,EAAA,uBACEA,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,UAAU,IAAA,CAAK,QAAA;AAAA,MACf,eAAA,EAAe,QAAA;AAAA,MACf,eAAA,EAAe,QAAA;AAAA,MACf,YAAA,EAAY,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,SAAS,CAAA,CAAA;AAAA,MAClC,KAAA,EAAO,KAAA;AAAA,MACP,8CAA4C,IAAA,CAAK,EAAA;AAAA,MACjD,SAAA,EAAW,EAAA;AAAA,QACT,+QAAA;AAAA,QACA,UAAA,EAAY;AAAA,OACd;AAAA,MACA,OAAA,EAAS,QAAA;AAAA,MAET,QAAA,kBAAAA,GAAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAoB;AAAA;AAAA,GACtC;AAEJ;AAEA,SAAS,kBAAA,CAAmB;AAAA,EAC1B,IAAA;AAAA,EACA,aAAA;AAAA,EACA,KAAA;AAAA,EACA,aAAA;AAAA,EACA,UAAA;AAAA,EACA,UAAA;AAAA,EACA,cAAA,GAAiB,SAAA;AAAA,EACjB,MAAA,GAAS;AACX,CAAA,EAYG;AACD,EAAA,MAAM,eAAA,GAAA,CAAmB,IAAA,CAAK,QAAA,IAAY,EAAC,EAAG,MAAA;AAAA,IAC5C,CAAC,KAAA,KAAU,CAAC,KAAA,CAAM;AAAA,GACpB;AACA,EAAA,IAAI,CAAC,IAAA,CAAK,QAAA,EAAU,MAAA,EAAQ,OAAO,IAAA;AACnC,EAAA,IACE,cAAA,KAAmB,SAAA,KAClB,CAAC,aAAA,IAAiB,gBAAgB,MAAA,KAAW,CAAA,CAAA;AAE9C,IAAA,OAAO,IAAA;AACT,EAAA,MAAM,YAAY,OAAO,IAAA,CAAK,UAAU,QAAA,GAAW,IAAA,CAAK,QAAQ,IAAA,CAAK,EAAA;AACrE,EAAA,MAAM,mBAAA,GACJ,QAAQ,IAAA,CAAK,QAAQ,KAAK,CAAC,aAAA,IAAiB,gBAAgB,MAAA,KAAW,CAAA;AACzE,EAAA,MAAM,QAAA,GAAW,IAAA,CAAK,QAAA,IAAY,EAAC;AACnC,EAAA,uBACEE,IAAAA,CAAcG,YAAA,CAAA,IAAA,EAAb,EACC,QAAA,EAAA;AAAA,oBAAAL,GAAAA,CAAcK,sBAAb,EAAqB,OAAA,EAAO,MAC1B,QAAA,EAAA,cAAA,KAAmB,MAAA,IAAU,6BAC5BL,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACE,GAAG,QAAA;AAAA,QACJ,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EAAU,mBAAA;AAAA,QACV,YAAA,EAAY,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,SAAS,CAAA,CAAA;AAAA,QAClC,KAAA,EAAO,KAAA;AAAA,QACP,mCAAiC,IAAA,CAAK,EAAA;AAAA,QACtC,yCAAA,EAAwC,MAAA;AAAA,QACxC,WAAW,cAAA,CAAe;AAAA,UACxB,IAAA;AAAA,UACA,MAAA,EAAQ,KAAA;AAAA,UACR,WAAW,CAAC,MAAA;AAAA,UACZ,MAAA;AAAA,UACA,UAAA;AAAA,UACA,UAAA;AAAA,UACA,cAAc,QAAA,CAAS;AAAA,SACxB,CAAA;AAAA,QAED,QAAA,kBAAAA,GAAAA;AAAA,UAAC,YAAA;AAAA,UAAA;AAAA,YACC,UAAA;AAAA,YACA,IAAA;AAAA,YACA,WAAW,CAAC,MAAA;AAAA,YACZ,MAAA;AAAA,YACA,UAAA;AAAA,YACA,cAAc,MAAA,mBAASA,IAAC,cAAA,EAAA,EAAe,QAAA,EAAU,OAAO,CAAA,GAAK;AAAA;AAAA;AAC/D;AAAA,wBAGFA,GAAAA;AAAA,MAAC,QAAA;AAAA,MAAA;AAAA,QACC,IAAA,EAAK,QAAA;AAAA,QACL,QAAA,EACE,cAAA,KAAmB,YAAA,GAAe,mBAAA,GAAsB,MAAA;AAAA,QAE1D,4CAAA,EACE,cAAA,KAAmB,YAAA,GAAe,IAAA,CAAK,EAAA,GAAK,MAAA;AAAA,QAE9C,SAAA,EAAW,EAAA;AAAA,UACT,2QAAA;AAAA,UACA,cAAA,KAAmB,eAAe,KAAA,GAAQ,KAAA;AAAA,UAC1C,UAAA,EAAY;AAAA,SACd;AAAA,QACA,YAAA,EAAY,CAAA,EAAG,KAAK,CAAA,EAAA,EAAK,SAAS,CAAA,CAAA;AAAA,QAClC,KAAA,EAAO,KAAA;AAAA,QAEN,QAAA,EAAA,cAAA,KAAmB,YAAA,mBAClBA,GAAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAU,KAAA,EAAO,CAAA,mBAEjCA,GAAAA,CAACG,SAAAA,EAAA,EAAS;AAAA;AAAA,KAEd,EAEJ,CAAA;AAAA,oBACAH,GAAAA,CAAcK,YAAA,CAAA,MAAA,EAAb,EACC,QAAA,kBAAAL,GAAAA;AAAA,MAAcK,YAAA,CAAA,OAAA;AAAA,MAAb;AAAA,QACC,IAAA,EAAK,OAAA;AAAA,QACL,KAAA,EAAM,OAAA;AAAA,QACN,UAAA,EAAY,CAAA;AAAA,QACZ,SAAA,EAAW,EAAA;AAAA,UACT,6GAAA;AAAA,UACA,UAAA,EAAY;AAAA,SACd;AAAA,QAEC,QAAA,EAAA,IAAA,CAAK,QAAA,EAAU,GAAA,CAAI,CAAC,0BACnBH,IAAAA;AAAA,UAAcG,YAAA,CAAA,IAAA;AAAA,UAAb;AAAA,YAEC,UAAU,KAAA,CAAM,QAAA;AAAA,YAChB,oCAAkC,KAAA,CAAM,EAAA;AAAA,YACxC,aAAA,EAAa,KAAA,CAAM,EAAA,KAAO,aAAA,GAAgB,MAAA,GAAS,OAAA;AAAA,YACnD,SAAA,EAAW,EAAA;AAAA,cACT,0MAAA;AAAA,cACA,KAAA,CAAM,OAAO,aAAA,IACX;AAAA,aACJ;AAAA,YACA,QAAA,EAAU,MAAM,aAAA,GAAgB,KAAA,EAAO,IAAI,CAAA;AAAA,YAE1C,QAAA,EAAA;AAAA,cAAA,iBAAA,CAAkB,KAAA,CAAM,IAAI,CAAA,mBAC3BL,GAAAA,CAAC,UAAK,aAAA,EAAY,MAAA,EAAQ,QAAA,EAAA,KAAA,CAAM,IAAA,EAAK,CAAA,GACnC,IAAA;AAAA,8BACJA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,UAAA,EAAY,gBAAM,KAAA,EAAM;AAAA;AAAA,WAAA;AAAA,UAdnC,KAAA,CAAM;AAAA,SAgBd;AAAA;AAAA,KACH,EACF;AAAA,GAAA,EACF,CAAA;AAEJ;AAEA,SAAS,YAAA,CAAa;AAAA,EACpB,KAAA;AAAA,EACA,SAAA;AAAA,EACA;AACF,CAAA,EAIG;AACD,EAAA,MAAM;AAAA,IACJ,UAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,eAAA;AAAA,IACA,yBAAyB,EAAC;AAAA,IAC1B,MAAA;AAAA,IACA,YAAA;AAAA,IACA,aAAA;AAAA,IACA,uBAAA;AAAA,IACA,uBAAA,GAA0B,cAAA;AAAA,IAC1B,eAAA,GAAkB,gBAAA;AAAA,IAClB,SAAA;AAAA,IACA;AAAA,GACF,GAAI,KAAA;AACJ,EAAA,MAAM,eAAe,KAAA,EAAM;AAC3B,EAAA,MAAM,kBAAA,GAAqBC,OAAAA;AAAA,IACzB,MAAM,mBAAmB,UAAU,CAAA;AAAA,IACnC,CAAC,UAAU;AAAA,GACb;AACA,EAAA,MAAM,CAAC,uBAAA,EAAyB,0BAA0B,CAAA,GAAIK,QAAAA;AAAA,IAC5D,MAAM;AAAA,GACR;AACA,EAAA,MAAM,uBAAuB,eAAA,KAAoB,MAAA;AACjD,EAAA,MAAM,0BACJ,eAAA,IAAmB,uBAAA;AACrB,EAAA,MAAM,yBAAA,GAA4BL,OAAAA;AAAA,IAChC,MACE,uBAAA,CAAwB,MAAA;AAAA,MAAO,CAAC,MAAA,KAC9B,kBAAA,CAAmB,GAAA,CAAI,MAAM;AAAA,KAC/B;AAAA,IACF,CAAC,oBAAoB,uBAAuB;AAAA,GAC9C;AACA,EAAA,MAAM,iBAAA,GAAoBA,OAAAA;AAAA,IACxB,MAAM,IAAI,GAAA,CAAI,yBAAyB,CAAA;AAAA,IACvC,CAAC,yBAAyB;AAAA,GAC5B;AACA,EAAA,MAAM,kBAAA,GAAqB,WAAA;AAAA,IACzB,CAAC,IAAA,KAAqC;AACpC,MAAA,IAAI,KAAK,QAAA,IAAY,CAAC,mBAAmB,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA,EAAG;AACvD,MAAA,MAAM,sBAAsB,iBAAA,CAAkB,GAAA,CAAI,KAAK,EAAE,CAAA,GACrD,0BAA0B,MAAA,CAAO,CAAC,MAAA,KAAW,MAAA,KAAW,KAAK,EAAE,CAAA,GAC/D,CAAC,GAAG,yBAAA,EAA2B,KAAK,EAAE,CAAA;AAC1C,MAAA,IAAI,CAAC,oBAAA,EAAsB;AACzB,QAAA,0BAAA,CAA2B,mBAAmB,CAAA;AAAA,MAChD;AACA,MAAA,uBAAA,GAA0B,mBAAmB,CAAA;AAAA,IAC/C,CAAA;AAAA,IACA;AAAA,MACE,kBAAA;AAAA,MACA,iBAAA;AAAA,MACA,oBAAA;AAAA,MACA,yBAAA;AAAA,MACA;AAAA;AACF,GACF;AACA,EAAA,uBACED,GAAAA,CAAC,KAAA,EAAA,EAAI,YAAA,EAAY,WACf,QAAA,kBAAAA,GAAAA;AAAA,IAAC,IAAA;AAAA,IAAA;AAAA,MACC,SAAA,EAAW,EAAA;AAAA,QACT,0BAAA;AAAA,QACA,WAAW,OAAA,IAAW,SAAA;AAAA,QACtB,UAAA,EAAY;AAAA,OACd;AAAA,MAEC,QAAA,EAAA,UAAA,CAAW,GAAA,CAAI,CAAC,IAAA,EAAM,SAAA,KAAc;AACnC,QAAA,MAAM,UAAA,GAAa,sBAAsB,IAAI,CAAA;AAC7C,QAAA,MAAM,MAAA,GAAS,CAAC,UAAA,IAAc,IAAA,CAAK,EAAA,KAAO,YAAA;AAC1C,QAAA,MAAM,WAAA,GAAc,OAAA,CAAQ,IAAA,CAAK,QAAA,EAAU,MAAM,CAAA;AACjD,QAAA,MAAM,mBAAA,GAAsB,kBAAA,CAAmB,GAAA,CAAI,IAAA,CAAK,EAAE,CAAA;AAC1D,QAAA,MAAM,mBACJ,CAAC,mBAAA,IAAuB,iBAAA,CAAkB,GAAA,CAAI,KAAK,EAAE,CAAA;AACvD,QAAA,MAAM,eAAA,GACJ,CAAC,SAAA,IAAa,iBAAA,CAAkB,KAAK,OAAO,CAAA;AAC9C,QAAA,MAAM,eAAA,GACH,SAAA,IAAa,WAAA,IAAe,OAAA,CAAQ,aAAa,KACjD,CAAC,SAAA,IAAa,mBAAA,IAAuB,CAAC,UAAA,IACvC,eAAA;AACF,QAAA,MAAM,WAAA,GAAc,CAAA,EAAG,YAAY,CAAA,gBAAA,EAAmB,SAAS,CAAA,CAAA;AAC/D,QAAA,uBACEE,IAAAA,CAAC,IAAA,EAAA,EAAiB,SAAA,EAAU,oBAAA,EACzB,QAAA,EAAA;AAAA,UAAA,SAAA,IAAa,6BACZF,GAAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,aAAA;AAAA,cACA,KAAA,EAAO,uBAAA;AAAA,cACP,aAAA;AAAA,cACA,UAAA;AAAA,cACA,UAAA;AAAA,cACA,cAAA,EAAe;AAAA;AAAA,8BAGjBE,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cACC,kCAAA,EACE,eAAA,GAAkB,IAAA,CAAK,EAAA,GAAK,MAAA;AAAA,cAE9B,aAAA,EAAa,eAAA,GAAkB,MAAA,CAAO,MAAM,CAAA,GAAI,MAAA;AAAA,cAChD,WACE,eAAA,GACI,iBAAA,CAAkB,EAAE,MAAA,EAAQ,UAAA,EAAY,CAAA,GACxC,MAAA;AAAA,cAGN,QAAA,EAAA;AAAA,gCAAAF,GAAAA;AAAA,kBAAC,WAAA;AAAA,kBAAA;AAAA,oBACC,IAAA;AAAA,oBACA,MAAA;AAAA,oBACA,SAAA;AAAA,oBACA,QAAA,EAAU,eAAA;AAAA,oBACV,MAAA,EAAQ,aAAa,QAAA,GAAW,MAAA;AAAA,oBAChC,UAAA;AAAA,oBACA,UAAA;AAAA,oBACA,QAAA,EACE,UAAA,GACI,MAAM,kBAAA,CAAmB,IAAI,IAC7B,YAAA,GACE,MAAM,YAAA,CAAa,IAAI,CAAA,GACvB,MAAA;AAAA,oBAER,YAAA,EACE,CAAC,SAAA,IAAa,mBAAA,IAAuB,aACjC,WAAA,GACA,MAAA;AAAA,oBAEN,YAAA,EACE,CAAC,SAAA,IAAa,mBAAA,IAAuB,aACjC,gBAAA,GACA,MAAA;AAAA,oBAEN,YAAA,EACE,CAAC,SAAA,IAAa,UAAA,IAAc,CAAC,eAAA,mBAC3BA,GAAAA,CAAC,cAAA,EAAA,EAAe,QAAA,EAAU,gBAAA,EAAkB,CAAA,GAC1C;AAAA;AAAA,iBAER;AAAA,gBACC,kCACCA,GAAAA;AAAA,kBAAC,YAAA;AAAA,kBAAA;AAAA,oBACC,QAAQ,IAAA,CAAK,EAAA;AAAA,oBACb,SAAS,IAAA,CAAK,OAAA;AAAA,oBACd,IAAA,EAAK,MAAA;AAAA,oBACL,WAAW,UAAA,EAAY;AAAA;AAAA,iBACzB,GACE,IAAA;AAAA,gBACH,SAAA,IAAa,gCACZA,GAAAA;AAAA,kBAAC,kBAAA;AAAA,kBAAA;AAAA,oBACC,IAAA;AAAA,oBACA,aAAA;AAAA,oBACA,KAAA,EAAO,uBAAA;AAAA,oBACP,aAAA;AAAA,oBACA;AAAA;AAAA,iBACF,GACE,IAAA;AAAA,gBACH,CAAC,SAAA,IACF,mBAAA,KACC,CAAC,UAAA,IAAc,mCACdA,GAAAA;AAAA,kBAAC,mBAAA;AAAA,kBAAA;AAAA,oBACC,IAAA;AAAA,oBACA,QAAA,EAAU,gBAAA;AAAA,oBACV,QAAA,EAAU,WAAA;AAAA,oBACV,KAAA,EAAO,eAAA;AAAA,oBACP,QAAA,EAAU,MAAM,kBAAA,CAAmB,IAAI,CAAA;AAAA,oBACvC;AAAA;AAAA,iBACF,GACE;AAAA;AAAA;AAAA,WACN;AAAA,UAED,CAAC,SAAA,IAAa,WAAA,mBACbA,GAAAA;AAAA,YAAC,IAAA;AAAA,YAAA;AAAA,cACC,EAAA,EAAI,WAAA;AAAA,cACJ,QAAQ,CAAC,gBAAA;AAAA,cACT,KAAA,EAAO,gBAAA,GAAmB,MAAA,GAAY,EAAE,SAAS,MAAA,EAAO;AAAA,cACxD,SAAA,EAAW,EAAA;AAAA,gBACT,iEAAA;AAAA,gBACA,WAAW,OAAA,IAAW,eAAA;AAAA,gBACtB,UAAA,EAAY;AAAA,eACd;AAAA,cAEC,QAAA,EAAA,IAAA,CAAK,QAAA,EAAU,GAAA,CAAI,CAAC,KAAA,KAAU;AAC7B,gBAAA,MAAM,eAAA,GAAkB,iBAAA,CAAkB,KAAA,CAAM,OAAO,CAAA;AACvD,gBAAA,MAAM,WAAA,GAAc,MAAM,EAAA,KAAO,aAAA;AACjC,gBAAA,MAAM,6BACJA,GAAAA;AAAA,kBAAC,UAAA;AAAA,kBAAA;AAAA,oBACC,KAAA;AAAA,oBACA,MAAA,EAAQ,IAAA;AAAA,oBACR,MAAA,EAAQ,WAAA;AAAA,oBACR,WAAA,EAAa,QAAQ,aAAa,CAAA;AAAA,oBAClC,QAAA,EAAU,aAAA;AAAA,oBACV,UAAA;AAAA,oBACA,UAAA;AAAA,oBACA,QAAA,EAAU;AAAA;AAAA,iBACZ;AAEF,gBAAA,uBACEA,GAAAA,CAAC,IAAA,EAAA,EACE,QAAA,EAAA,eAAA,mBACCE,IAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,qCAAmC,KAAA,CAAM,EAAA;AAAA,oBACzC,aAAA,EAAa,OAAO,WAAW,CAAA;AAAA,oBAC/B,WAAW,iBAAA,CAAkB;AAAA,sBAC3B,MAAA,EAAQ,WAAA;AAAA,sBACR;AAAA,qBACD,CAAA;AAAA,oBAEA,QAAA,EAAA;AAAA,sBAAA,UAAA;AAAA,sCACDF,GAAAA;AAAA,wBAAC,YAAA;AAAA,wBAAA;AAAA,0BACC,QAAQ,KAAA,CAAM,EAAA;AAAA,0BACd,SAAS,KAAA,CAAM,OAAA;AAAA,0BACf,IAAA,EAAK,OAAA;AAAA,0BACL,WAAW,UAAA,EAAY;AAAA;AAAA;AACzB;AAAA;AAAA,iBACF,GAEA,UAAA,EAAA,EAnBK,KAAA,CAAM,EAqBf,CAAA;AAAA,cAEJ,CAAC;AAAA;AAAA,WACH,GACE;AAAA,SAAA,EAAA,EAzIG,KAAK,EA0Id,CAAA;AAAA,MAEJ,CAAC;AAAA;AAAA,GACH,EACF,CAAA;AAEJ;AAEA,SAAS,mBAAA,CACP,KAAA,EACA,QAAA,EACA,cAAA,EACA;AACA,EAAA,OAAO;AAAA,IACL,GAAG,kBAAA,CAAmB,KAAA,EAAO,cAAc,CAAA;AAAA,IAC3C,GAAG,QAAA,CAAS,OAAA;AAAA,MAAQ,CAAC,OAAA,KACnB,kBAAA,CAAmB,OAAA,CAAQ,OAAO,cAAc;AAAA;AAClD,GACF;AACF;AAEA,SAAS,gBAAA,CAAiB;AAAA,EACxB,KAAA;AAAA,EACA;AACF,CAAA,EAGG;AACD,EAAA,IAAI,CAAC,KAAA,CAAM,MAAA,IAAU,MAAM,MAAA,CAAO,IAAA,KAAS,cAAc,OAAO,IAAA;AAChE,EAAA,MAAM,aAAa,KAAA,CAAM,UAAA;AACzB,EAAA,MAAM,KAAA,GACJ,KAAA,CAAM,IAAA,KAAS,SAAA,GACX,mBAAA;AAAA,IACE,KAAA,CAAM,SAAS,EAAC;AAAA,IAChB,KAAA,CAAM,YAAY,EAAC;AAAA,IACnB,KAAA,CAAM;AAAA,MAER,KAAA,CAAM,UAAA;AACZ,EAAA,uBACEA,GAAAA;AAAA,IAAC,KAAA;AAAA,IAAA;AAAA,MACC,cAAY,KAAA,CAAM,SAAA;AAAA,MAClB,SAAA,EAAW,EAAA;AAAA,QACT,iCAAA;AAAA,QACA,UAAA,EAAY,SAAA;AAAA,QACZ,MAAM,MAAA,CAAO;AAAA,OACf;AAAA,MAEC,QAAA,EAAA,KAAA,CAAM,GAAA,CAAI,CAAC,IAAA,KAAS;AACnB,QAAA,MAAM,gBAAA,GAAmB;AAAA,UACvB,GAAG,UAAA;AAAA,UACH,UAAA,EAAY,EAAA;AAAA,YACV,UAAA,EAAY,UAAA;AAAA,YACZ,MAAM,MAAA,EAAQ;AAAA;AAChB,SACF;AACA,QAAA,MAAM,SAAA,GACJ,KAAA,CAAM,IAAA,KAAS,OAAA,GACV,IAAA,GACD,MAAA;AACN,QAAA,MAAM,gBAAA,GACJ,SAAA,KAAc,MAAA,IAAa,iBAAA,CAAkB,UAAU,OAAO,CAAA;AAChE,QAAA,IAAI,KAAA,CAAM,IAAA,KAAS,OAAA,IAAW,qBAAA,CAAsB,IAAI,CAAA,EAAG;AACzD,UAAA,OAAO,mCACLE,IAAAA;AAAA,YAAC,KAAA;AAAA,YAAA;AAAA,cAEC,oCAAkC,IAAA,CAAK,EAAA;AAAA,cACvC,aAAA,EAAY,OAAA;AAAA,cACZ,SAAA,EAAW,EAAA;AAAA,gBACT,iBAAA,CAAkB,EAAE,MAAA,EAAQ,KAAA,EAAO,YAAY,CAAA;AAAA,gBAC/C;AAAA,eACF;AAAA,cAEA,QAAA,EAAA;AAAA,gCAAAF,GAAAA;AAAA,kBAAC,iBAAA;AAAA,kBAAA;AAAA,oBACC,IAAA;AAAA,oBACA,UAAA;AAAA,oBACA,UAAA,EAAY;AAAA;AAAA,iBACd;AAAA,gCACAA,GAAAA;AAAA,kBAAC,YAAA;AAAA,kBAAA;AAAA,oBACC,QAAQ,IAAA,CAAK,EAAA;AAAA,oBACb,SAAS,IAAA,CAAK,OAAA;AAAA,oBACd,IAAA,EAAK,MAAA;AAAA,oBACL,WAAW,UAAA,EAAY,WAAA;AAAA,oBACvB,MAAA,EAAM;AAAA;AAAA,iBACR;AAAA,gCACAA,GAAAA;AAAA,kBAAC,kBAAA;AAAA,kBAAA;AAAA,oBACC,IAAA;AAAA,oBACA,eAAe,KAAA,CAAM,aAAA;AAAA,oBACrB,KAAA,EAAO,MAAM,uBAAA,IAA2B,cAAA;AAAA,oBACxC,eAAe,KAAA,CAAM,aAAA;AAAA,oBACrB,UAAA,EAAY,gBAAA;AAAA,oBACZ,UAAA;AAAA,oBACA,cAAA,EAAe,YAAA;AAAA,oBACf,MAAA,EAAM;AAAA;AAAA;AACR;AAAA,aAAA;AAAA,YA7BK,IAAA,CAAK;AAAA,WA8BZ,mBAEAA,GAAAA,CAACI,UAAA,EAAA,EACC,QAAA,kBAAAJ,GAAAA;AAAA,YAAC,kBAAA;AAAA,YAAA;AAAA,cACC,IAAA;AAAA,cACA,eAAe,KAAA,CAAM,aAAA;AAAA,cACrB,KAAA,EAAO,MAAM,uBAAA,IAA2B,cAAA;AAAA,cACxC,eAAe,KAAA,CAAM,aAAA;AAAA,cACrB,UAAA,EAAY,gBAAA;AAAA,cACZ,UAAA;AAAA,cACA,cAAA,EAAe,MAAA;AAAA,cACf,MAAA,EAAM;AAAA;AAAA,WACR,EAAA,EAVa,KAAK,EAWpB,CAAA;AAAA,QAEJ;AACA,QAAA,MAAM,MAAA,GACJ,KAAA,CAAM,IAAA,KAAS,SAAA,GACT,IAAA,CAAsC,MAAA,IACxC,IAAA,CAAK,EAAA,KAAO,KAAA,CAAM,YAAA,GAClB,IAAA,CAAK,EAAA,KAAO,KAAA,CAAM,YAAA;AACxB,QAAA,MAAM,8BACJA,GAAAA;AAAA,UAAC,WAAA;AAAA,UAAA;AAAA,YACC,IAAA;AAAA,YACA,MAAA;AAAA,YACA,SAAA,EAAW,KAAA;AAAA,YACX,QAAA,EAAU,gBAAA;AAAA,YACV,QAAQ,KAAA,CAAM,MAAA;AAAA,YACd,UAAA;AAAA,YACA,UAAA,EAAY,gBAAA;AAAA,YACZ,MAAA,EAAM,IAAA;AAAA,YACN,QAAA,EACE,KAAA,CAAM,IAAA,KAAS,OAAA,IAAW,KAAA,CAAM,eAC5B,MACE,KAAA,CAAM,YAAA,GAAe,IAAkC,CAAA,GACzD;AAAA;AAAA,SAER;AAEF,QAAA,OAAO,gBAAA,IAAoB,4BACzBE,IAAAA;AAAA,UAAC,KAAA;AAAA,UAAA;AAAA,YAEC,oCAAkC,IAAA,CAAK,EAAA;AAAA,YACvC,aAAA,EAAa,OAAO,MAAM,CAAA;AAAA,YAC1B,SAAA,EAAW,EAAA;AAAA,cACT,iBAAA,CAAkB,EAAE,MAAA,EAAQ,UAAA,EAAY,CAAA;AAAA,cACxC;AAAA,aACF;AAAA,YAEC,QAAA,EAAA;AAAA,cAAA,WAAA;AAAA,8BACDF,GAAAA;AAAA,gBAAC,YAAA;AAAA,gBAAA;AAAA,kBACC,QAAQ,SAAA,CAAU,EAAA;AAAA,kBAClB,SAAS,SAAA,CAAU,OAAA;AAAA,kBACnB,IAAA,EAAK,MAAA;AAAA,kBACL,WAAW,UAAA,EAAY,WAAA;AAAA,kBACvB,MAAA,EAAM;AAAA;AAAA;AACR;AAAA,WAAA;AAAA,UAfK,IAAA,CAAK;AAAA,4BAkBZA,GAAAA,CAACI,UAAA,EAAA,EAAwB,QAAA,EAAA,WAAA,EAAA,EAAV,KAAK,EAAiB,CAAA;AAAA,MAEzC,CAAC;AAAA;AAAA,GACH;AAEJ;AAEA,SAAS,sBAAA,CAKP,OACA,GAAA,EACA;AACA,EAAA,MAAM,MAAA,GAAS,oBAAoB,KAAK,CAAA;AACxC,EAAA,IAAI,MAAM,KAAA,KAAU,MAAA,EAAW,mBAAA,CAAoB,OAAA,EAAS,MAAM,KAAK,CAAA;AACvE,EAAA,MAAM,gBAAA,GAAmB,OAA4B,IAAI,CAAA;AACzD,EAAA,IAAI,CAAC,iBAAiB,OAAA,EAAS;AAC7B,IAAA,gBAAA,CAAiB,OAAA,GAAU,gBAAA,CAAiB,KAAA,EAAO,MAAM,CAAA;AAAA,EAC3D;AAEA,EAAA,MAAM,UAAA,GAAa,OAA2B,IAAI,CAAA;AAClD,EAAA,MAAM,CAAC,iBAAA,EAAmB,oBAAoB,CAAA,GAAIE,QAAAA;AAAA,IAChD,iBAAiB,OAAA,CAAQ;AAAA,GAC3B;AACA,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAIA,QAAAA;AAAA,IACxC,iBAAiB,OAAA,CAAQ;AAAA,GAC3B;AACA,EAAA,MAAM,CAAC,mBAAA,EAAqB,sBAAsB,CAAA,GAAIA,QAAAA;AAAA,IACpD,KAAA,CAAM,QAAQ,YAAA,IAAgB;AAAA,GAChC;AACA,EAAA,MAAM,CAAC,UAAA,EAAY,aAAa,CAAA,GAAIA,SAAS,KAAK,CAAA;AAClD,EAAA,MAAM,iBAAA,GAAoB,MAAM,SAAA,IAAa,iBAAA;AAC7C,EAAA,MAAM,aAAA,GAAgB,UAAA,CAAW,KAAA,CAAM,KAAA,IAAS,eAAe,MAAM,CAAA;AACrE,EAAA,MAAM,mBAAA,GAAsB,KAAA,CAAM,MAAA,EAAQ,KAAA,IAAS,mBAAA;AACnD,EAAA,MAAM,qBAAA,GAAwB,MAAM,SAAA,KAAc,MAAA;AAClD,EAAA,MAAM,iBAAA,GAAoB,MAAM,KAAA,KAAU,MAAA;AAC1C,EAAA,MAAM,UAAA,GAAaL,OAAAA;AAAA,IACjB,MAAM,iBAAA,CAAkB,KAAA,CAAM,UAAU,CAAA;AAAA,IACxC,CAAC,MAAM,UAAU;AAAA,GACnB;AACA,EAAA,MAAM,WAAA,GAAc,MAAM,WAAA,IAAe,IAAA;AACzC,EAAA,MAAM,SAAA,GAAY,MAAM,SAAA,IAAa,IAAA;AACrC,EAAA,MAAM,iBAAA,GAAoB,WAAA,GACrB,KAAA,CAAM,iBAAA,IAAqB,QAAA,GAC5B,MAAA;AACJ,EAAA,MAAM,aAAA,GAAgB,MAAM,aAAA,IAAiB,kBAAA;AAC7C,EAAA,MAAM,WAAA,GAAc,MAAM,WAAA,IAAe,gBAAA;AACzC,EAAA,MAAM,WAAA,GAAc,MAAM,WAAA,IAAe,gBAAA;AACzC,EAAA,MAAM,cAAA,GAAiB,CAAC,iBAAA,IAAqB,MAAA,CAAO,cAAA,GAAiB,CAAA;AAErE,EAAA,MAAM,aAAA,GAAgB,CAAC,IAAA,KAA6B;AAClD,IAAA,UAAA,CAAW,OAAA,GAAU,IAAA;AACrB,IAAA,SAAA,CAAU,KAAK,IAAI,CAAA;AAAA,EACrB,CAAA;AAEA,EAAA,MAAM,eAAA,GAAkB,WAAA;AAAA,IACtB,CAAC,aAAA,KAA2B;AAC1B,MAAA,IAAI,CAAC,eAAe,aAAA,EAAe;AACnC,MAAA,IAAI,CAAC,qBAAA,EAAuB,oBAAA,CAAqB,aAAa,CAAA;AAC9D,MAAA,KAAA,CAAM,oBAAoB,aAAa,CAAA;AAAA,IACzC,CAAA;AAAA,IACA,CAAC,WAAA,EAAa,qBAAA,EAAuB,KAAA,CAAM,iBAAiB;AAAA,GAC9D;AAEA,EAAA,MAAM,WAAA,GAAc,WAAA;AAAA,IAClB,CAAC,SAAA,KAAsB;AACrB,MAAA,MAAM,YAAA,GAAe,UAAA,CAAW,SAAA,EAAW,MAAM,CAAA;AACjD,MAAA,IAAI,CAAC,iBAAA,EAAmB,gBAAA,CAAiB,YAAY,CAAA;AACrD,MAAA,KAAA,CAAM,gBAAgB,YAAY,CAAA;AAAA,IACpC,CAAA;AAAA,IACA,CAAC,MAAA,CAAO,QAAA,EAAU,OAAO,QAAA,EAAU,iBAAA,EAAmB,MAAM,aAAa;AAAA,GAC3E;AAEA,EAAAM,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,MAAM,UAAA,EAAY;AACvB,IAAA,MAAM,OAAA,GAAU,cAAA,CAAe,KAAA,CAAM,OAAO,CAAA;AAC5C,IAAA,IAAI,CAAC,OAAA,EAAS;AACd,IAAA,IAAI;AACF,MAAA,OAAA,CAAQ,OAAA;AAAA,QACN,KAAA,CAAM,UAAA;AAAA,QACN,KAAK,SAAA,CAAU;AAAA,UACb,SAAA,EAAW,iBAAA;AAAA,UACX,KAAA,EAAO;AAAA,SACR;AAAA,OACH;AAAA,IACF,SAAS,KAAA,EAAO;AACd,MAAA,kBAAA,CAAmB,KAAA,EAAO,MAAM,cAAc,CAAA;AAAA,IAChD;AAAA,EACF,CAAA,EAAG;AAAA,IACD,KAAA,CAAM,cAAA;AAAA,IACN,KAAA,CAAM,OAAA;AAAA,IACN,KAAA,CAAM,UAAA;AAAA,IACN,iBAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAAA,UAAU,MAAM;AACd,IAAA,IAAI,CAAC,YAAY,OAAO,MAAA;AACxB,IAAA,MAAM,cAAA,GAAiB,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,MAAA;AAC3C,IAAA,MAAM,kBAAA,GAAqB,QAAA,CAAS,IAAA,CAAK,KAAA,CAAM,UAAA;AAC/C,IAAA,MAAM,iBAAA,GAAoB,CAAC,KAAA,KAAmC;AAC5D,MAAA,MAAM,UAAU,UAAA,CAAW,OAAA;AAC3B,MAAA,IAAI,CAAC,OAAA,EAAS;AACd,MAAA,MAAM,SAAA,GAAY,KAAA,CAAM,OAAA,GAAU,OAAA,CAAQ,uBAAsB,CAAE,IAAA;AAClE,MAAA,IAAI,WAAA,IAAe,SAAA,GAAY,MAAA,CAAO,iBAAA,EAAmB;AACvD,QAAA,eAAA,CAAgB,IAAI,CAAA;AACpB,QAAA;AAAA,MACF;AACA,MAAA,eAAA,CAAgB,KAAK,CAAA;AACrB,MAAA,WAAA,CAAY,SAAS,CAAA;AAAA,IACvB,CAAA;AACA,IAAA,MAAM,eAAA,GAAkB,MAAM,aAAA,CAAc,KAAK,CAAA;AACjD,IAAA,MAAA,CAAO,gBAAA,CAAiB,eAAe,iBAAiB,CAAA;AACxD,IAAA,MAAA,CAAO,gBAAA,CAAiB,aAAa,eAAe,CAAA;AACpD,IAAA,QAAA,CAAS,IAAA,CAAK,MAAM,MAAA,GAAS,YAAA;AAC7B,IAAA,QAAA,CAAS,IAAA,CAAK,MAAM,UAAA,GAAa,MAAA;AACjC,IAAA,OAAO,MAAM;AACX,MAAA,MAAA,CAAO,mBAAA,CAAoB,eAAe,iBAAiB,CAAA;AAC3D,MAAA,MAAA,CAAO,mBAAA,CAAoB,aAAa,eAAe,CAAA;AACvD,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,MAAA,GAAS,cAAA;AAC7B,MAAA,QAAA,CAAS,IAAA,CAAK,MAAM,UAAA,GAAa,kBAAA;AAAA,IACnC,CAAA;AAAA,EACF,CAAA,EAAG;AAAA,IACD,MAAA,CAAO,iBAAA;AAAA,IACP,WAAA;AAAA,IACA,UAAA;AAAA,IACA,eAAA;AAAA,IACA;AAAA,GACD,CAAA;AAED,EAAA,MAAM,mBAAA,GAAsB,CAAC,KAAA,KAA4C;AACvE,IAAA,IAAI,KAAA,CAAM,GAAA,KAAQ,WAAA,IAAe,KAAA,CAAM,QAAQ,YAAA,EAAc;AAC7D,IAAA,KAAA,CAAM,cAAA,EAAe;AACrB,IAAA,IAAI,KAAA,CAAM,QAAQ,WAAA,EAAa;AAC7B,MAAA,MAAM,YAAY,aAAA,GAAgB,EAAA;AAClC,MAAA,IAAI,WAAA,IAAe,SAAA,GAAY,MAAA,CAAO,iBAAA,EAAmB;AACvD,QAAA,eAAA,CAAgB,IAAI,CAAA;AAAA,MACtB,CAAA,MAAO;AACL,QAAA,WAAA,CAAY,SAAS,CAAA;AAAA,MACvB;AACA,MAAA;AAAA,IACF;AACA,IAAA,IAAI,iBAAA,kBAAmC,KAAK,CAAA;AAC5C,IAAA,WAAA,CAAY,KAAK,GAAA,CAAI,aAAA,GAAgB,EAAA,EAAI,MAAA,CAAO,QAAQ,CAAC,CAAA;AAAA,EAC3D,CAAA;AAEA,EAAA,MAAM,cAAA,GAAiB,CAAC,cAAA,qBACtBP,GAAAA;AAAA,IAAC,QAAA;AAAA,IAAA;AAAA,MACC,IAAA,EAAK,QAAA;AAAA,MACL,SAAA,EAAW,EAAA;AAAA,QACT,6OAAA;AAAA,QACA,MAAM,UAAA,EAAY,cAAA;AAAA,QAClB;AAAA,OACF;AAAA,MACA,YAAA,EAAY,oBAAoB,WAAA,GAAc,aAAA;AAAA,MAC9C,KAAA,EAAO,oBAAoB,WAAA,GAAc,aAAA;AAAA,MACzC,iBAAe,CAAC,iBAAA;AAAA,MAChB,OAAA,EAAS,MAAM,eAAA,CAAgB,CAAC,iBAAiB,CAAA;AAAA,MAEjD,QAAA,kBAAAA,GAAAA,CAAC,YAAA,EAAA,EAAa,SAAA,EAAW,iBAAA,EAAmB;AAAA;AAAA,GAC9C;AAGF,EAAA,MAAM,SAAA,GACJ,iBAAA,CAAkB,KAAA,CAAM,KAAK,CAAA,IAC7B,iBAAA,CAAkB,KAAA,CAAM,aAAa,CAAA,IACrC,iBAAA,CAAkB,KAAA,CAAM,aAAa,KACrC,iBAAA,KAAsB,QAAA;AAExB,EAAA,MAAM,gBAAgB,MAAM;AAC1B,IAAA,IAAI,KAAA,CAAM,SAAS,SAAA,EAAW;AAC5B,MAAA,uBACEA,GAAAA;AAAA,QAAC,cAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,SAAA,EAAW,iBAAA;AAAA,UACX;AAAA;AAAA,OACF;AAAA,IAEJ;AACA,IAAA,IAAI,KAAA,CAAM,SAAS,OAAA,EAAS;AAC1B,MAAA,uBACEA,GAAAA;AAAA,QAAC,YAAA;AAAA,QAAA;AAAA,UACC,KAAA;AAAA,UACA,SAAA,EAAW,iBAAA;AAAA,UACX;AAAA;AAAA,OACF;AAAA,IAEJ;AACA,IAAA,MAAM,YACJ,KAAA,CACA,IAAA;AACF,IAAA,uBACEA,GAAAA;AAAA,MAAC,oBAAA;AAAA,MAAA;AAAA,QACE,GAAG,SAAA;AAAA,QACJ,UAAA,EACE,WAAW,OAAA,GACP,qBAAA;AAAA,UACE,UAAA,CAAW,UAAA;AAAA,UACX,UAAA,CAAW,WAAA;AAAA,UACX,SAAA,CAAU;AAAA,SACZ,GACA,+BAAA,CAAgC,SAAA,CAAU,UAAU;AAAA;AAAA,KAE5D;AAAA,EAEJ,CAAA;AAEA,EAAA,uBACEE,IAAAA,CAAAE,QAAAA,EAAA,EACE,QAAA,EAAA;AAAA,oBAAAF,IAAAA;AAAA,MAAC,OAAA;AAAA,MAAA;AAAA,QACE,GAAG,KAAA,CAAM,YAAA;AAAA,QACV,GAAA,EAAK,aAAA;AAAA,QACL,cAAY,KAAA,CAAM,SAAA;AAAA,QAClB,wBAAA,EAAwB,MAAM,aAAA,IAAiB,oBAAA;AAAA,QAC/C,gCAA8B,KAAA,CAAM,IAAA;AAAA,QACpC,gCAAA,EAAgC,MAAM,UAAA,EAAY,MAAA;AAAA,QAClD,gBAAA,EAAgB,oBAAoB,MAAA,GAAS,OAAA;AAAA,QAC7C,SAAA,EAAW,EAAA;AAAA,UACT,oLAAA;AAAA,UACA,UAAA,CAAW,IAAA;AAAA,UACX,KAAA,CAAM,gBAAA;AAAA,UACN,MAAM,UAAA,EAAY,IAAA;AAAA,UAClB,MAAM,YAAA,EAAc,SAAA;AAAA,UACpB,KAAA,CAAM;AAAA,SACR;AAAA,QACA,KAAA,EAAO;AAAA,UACL,GAAI,WAAW,OAAA,GAAU,YAAA,CAAa,MAAM,UAAA,EAAY,aAAa,IAAI,EAAC;AAAA,UAC1E,GAAG,KAAA,CAAM,KAAA;AAAA,UACT,OACE,KAAA,CAAM,SAAA,KAAc,SAChB,MAAA,GACA,iBAAA,GACE,OAAO,cAAA,GACP,aAAA;AAAA,UACR,UAAA,EAAY,UAAA,GAAa,MAAA,GAAS,KAAA,CAAM,KAAA,EAAO;AAAA,SACjD;AAAA,QAEC,QAAA,EAAA;AAAA,UAAA,SAAA,mBACCF,GAAAA;AAAA,YAAC,QAAA;AAAA,YAAA;AAAA,cACC,IAAA,EAAK,QAAA;AAAA,cACL,IAAA,EAAK,WAAA;AAAA,cACL,kBAAA,EAAiB,UAAA;AAAA,cACjB,iBAAe,MAAA,CAAO,QAAA;AAAA,cACtB,iBAAe,MAAA,CAAO,QAAA;AAAA,cACtB,eAAA,EAAe,aAAA;AAAA,cACf,YAAA,EAAY,WAAA;AAAA,cACZ,KAAA,EAAO,WAAA;AAAA,cACP,SAAA,EAAW,EAAA;AAAA,gBACT,qJAAA;AAAA,gBACA,MAAM,UAAA,EAAY;AAAA,eACpB;AAAA,cACA,aAAA,EAAe,CAAC,KAAA,KAA2C;AACzD,gBAAA,KAAA,CAAM,cAAA,EAAe;AACrB,gBAAA,aAAA,CAAc,IAAI,CAAA;AAAA,cACpB,CAAA;AAAA,cACA,SAAA,EAAW,mBAAA;AAAA,cAEX,QAAA,kBAAAA,GAAAA,CAAC,MAAA,EAAA,EAAK,SAAA,EAAU,sMAAA,EAAuM;AAAA;AAAA,WACzN,GACE,IAAA;AAAA,UAEH,sBAAsB,MAAA,GACnB,cAAA;AAAA,YACE;AAAA,WACF,GACA,IAAA;AAAA,UAEH,cAAA,mBACCE,IAAAA,CAAC,KAAA,EAAA,EAAI,WAAU,6DAAA,EACZ,QAAA,EAAA;AAAA,YAAA,SAAA,mBACCA,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,yEAAA;AAAA,kBACA,WAAW,OAAA,IACT,8HAAA;AAAA,kBACF,iBAAA,IAAqB,qBAAA;AAAA,kBACrB,MAAM,UAAA,EAAY;AAAA,iBACpB;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,iBAAA,CAAkB,KAAA,CAAM,aAAa,CAAA,mBACpCF,GAAAA;AAAA,oBAAC,MAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,2CAAA;AAAA,wBACA,MAAM,UAAA,EAAY;AAAA,uBACpB;AAAA,sBAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,mBACT,GACE,IAAA;AAAA,kBACH,CAAC,iBAAA,IAAqB,iBAAA,CAAkB,KAAA,CAAM,KAAK,oBAClDA,GAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,+CAAA;AAAA,wBACA,MAAM,UAAA,EAAY;AAAA,uBACpB;AAAA,sBAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,mBACT,GACE,IAAA;AAAA,kBACH,CAAC,iBAAA,IACF,iBAAA,CAAkB,KAAA,CAAM,aAAa,oBACnCA,GAAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,SAAA,EAAW,EAAA;AAAA,wBACT,kCAAA;AAAA,wBACA,MAAM,UAAA,EAAY;AAAA,uBACpB;AAAA,sBAEC,QAAA,EAAA,KAAA,CAAM;AAAA;AAAA,mBACT,GACE,IAAA;AAAA,kBACH,iBAAA,KAAsB,QAAA,GAAW,cAAA,EAAe,GAAI;AAAA;AAAA;AAAA,aACvD,GACE,IAAA;AAAA,YAEH,CAAC,iBAAA,IAAqB,KAAA,CAAM,MAAA,mBAC3BA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,iHAAA;AAAA,kBACA,WAAW,OAAA,IAAW,MAAA;AAAA,kBACtB,MAAM,UAAA,EAAY;AAAA,iBACpB;AAAA,gBAEA,QAAA,kBAAAE,IAAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,SAAA,EAAW,EAAA;AAAA,sBACT,kSAAA;AAAA,sBACA,UAAA,CAAW,YAAA;AAAA,sBACX,WAAW,OAAA,IACT;AAAA,qBACJ;AAAA,oBAEA,QAAA,EAAA;AAAA,sCAAAF,GAAAA;AAAA,wBAAC,MAAA;AAAA,wBAAA;AAAA,0BACC,SAAA,EAAW,EAAA;AAAA,4BACT,eAAA;AAAA,4BACA,WAAW,OAAA,IAAW,WAAA;AAAA,4BACtB,MAAM,UAAA,EAAY;AAAA,2BACpB;AAAA,0BACA,aAAA,EAAY,MAAA;AAAA,0BAEX,QAAA,EAAA,KAAA,CAAM,MAAA,CAAO,IAAA,oBAAQA,IAAC,UAAA,EAAA,EAAW;AAAA;AAAA,uBACpC;AAAA,sCACAA,GAAAA;AAAA,wBAAC,OAAA;AAAA,wBAAA;AAAA,0BACC,IAAA,EAAK,QAAA;AAAA,0BACL,KAAA,EAAO,mBAAA;AAAA,0BACP,WAAA,EAAa,MAAM,MAAA,CAAO,WAAA;AAAA,0BAC1B,YAAA,EAAY,MAAM,MAAA,CAAO,SAAA;AAAA,0BACzB,SAAA,EAAW,EAAA;AAAA,4BACT,sGAAA;AAAA,4BACA,MAAM,UAAA,EAAY;AAAA,2BACpB;AAAA,0BACA,QAAA,EAAU,CAAC,KAAA,KAAU;AACnB,4BAAA,MAAM,SAAA,GAAY,MAAM,aAAA,CAAc,KAAA;AACtC,4BAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,KAAU,MAAA;AAC1B,8BAAA,sBAAA,CAAuB,SAAS,CAAA;AAClC,4BAAA,KAAA,CAAM,MAAA,EAAQ,gBAAgB,SAAS,CAAA;AAAA,0BACzC;AAAA;AAAA,uBACF;AAAA,sBACC,mBAAA,IAAuB,KAAA,CAAM,MAAA,CAAO,UAAA,mBACnCA,GAAAA;AAAA,wBAAC,QAAA;AAAA,wBAAA;AAAA,0BACC,IAAA,EAAK,QAAA;AAAA,0BACL,SAAA,EAAW,EAAA;AAAA,4BACT,4LAAA;AAAA,4BACA,MAAM,UAAA,EAAY;AAAA,2BACpB;AAAA,0BACA,YAAA,EAAY,MAAM,MAAA,CAAO,UAAA;AAAA,0BACzB,KAAA,EAAO,MAAM,MAAA,CAAO,UAAA;AAAA,0BACpB,SAAS,MAAM;AACb,4BAAA,IAAI,KAAA,CAAM,QAAQ,KAAA,KAAU,MAAA;AAC1B,8BAAA,sBAAA,CAAuB,EAAE,CAAA;AAC3B,4BAAA,KAAA,CAAM,MAAA,EAAQ,gBAAgB,EAAE,CAAA;AAAA,0BAClC,CAAA;AAAA,0BAEA,QAAA,kBAAAA,IAAC,SAAA,EAAA,EAAU;AAAA;AAAA,uBACb,GACE;AAAA;AAAA;AAAA;AACN;AAAA,aACF,GACE,IAAA;AAAA,4BAEJA,GAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,2IAAA;AAAA,kBACA,UAAA,CAAW,OAAA,IAAW,KAAA,CAAM,MAAA,IAAU,MAAA;AAAA,kBACtC,iBAAA,IAAqB,QAAA;AAAA,kBACrB,MAAM,UAAA,EAAY;AAAA,iBACpB;AAAA,gBAEC,QAAA,EAAA,aAAA;AAAc;AAAA,aACjB;AAAA,YAEC,kBAAkB,KAAA,CAAM,MAAM,CAAA,IAC/B,iBAAA,KAAsB,2BACpBE,IAAAA;AAAA,cAAC,KAAA;AAAA,cAAA;AAAA,gBACC,SAAA,EAAW,EAAA;AAAA,kBACT,gEAAA;AAAA,kBACA,WAAW,OAAA,IAAW,eAAA;AAAA,kBACtB,iBAAA,IAAqB,qBAAA;AAAA,kBACrB,MAAM,UAAA,EAAY;AAAA,iBACpB;AAAA,gBAEC,QAAA,EAAA;AAAA,kBAAA,CAAC,iBAAA,IAAqB,iBAAA,CAAkB,KAAA,CAAM,MAAM,CAAA,mBACnDF,GAAAA,CAAC,KAAA,EAAA,EAAI,SAAA,EAAU,gBAAA,EAAkB,QAAA,EAAA,KAAA,CAAM,MAAA,EAAO,CAAA,GAC5C,IAAA;AAAA,kBACH,iBAAA,KAAsB,QAAA,GAAW,cAAA,EAAe,GAAI;AAAA;AAAA;AAAA,aACvD,GACE;AAAA,WAAA,EACN,CAAA,GACE;AAAA;AAAA;AAAA,KACN;AAAA,IACC,KAAA,CAAM,SAAS,MAAA,mBACdA,IAAC,gBAAA,EAAA,EAAiB,KAAA,EAAc,YAAwB,CAAA,GACtD;AAAA,GAAA,EACN,CAAA;AAEJ;AAWO,IAAM,iBAAA,GAAoB,UAAA;AAAA,EAC/B;AACF","file":"index.mjs","sourcesContent":["import type { ReactNode } from 'react';\nimport { twMerge } from 'tailwind-merge';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n  return twMerge(parts.filter(Boolean).join(' '));\n}\n\nexport function hasRenderableNode(node: ReactNode) {\n  return node !== undefined && node !== null && typeof node !== 'boolean';\n}\n\nexport function hasNonEmptyRenderableNode(node: ReactNode) {\n  if (typeof node === 'string') return node.trim().length > 0;\n  return hasRenderableNode(node);\n}\n","import { createContext, useContext, useMemo, type ReactNode } from 'react';\n\nimport type { DataExplorerAppearance } from './types';\n\nconst DataExplorerAppearanceContext = createContext<\n  DataExplorerAppearance | undefined\n>(undefined);\n\nexport function DataExplorerAppearanceProvider({\n  appearance,\n  children,\n}: {\n  appearance?: DataExplorerAppearance;\n  children: ReactNode;\n}) {\n  return (\n    <DataExplorerAppearanceContext.Provider value={appearance}>\n      {children}\n    </DataExplorerAppearanceContext.Provider>\n  );\n}\n\nexport function useDataExplorerAppearance(\n  appearance?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n  const inheritedAppearance = useContext(DataExplorerAppearanceContext);\n  return useMemo(() => {\n    if (!appearance) return inheritedAppearance;\n    if (!inheritedAppearance) return appearance;\n    return {\n      ...inheritedAppearance,\n      ...appearance,\n      slots: { ...inheritedAppearance.slots, ...appearance.slots },\n      styles: { ...inheritedAppearance.styles, ...appearance.styles },\n    };\n  }, [appearance, inheritedAppearance]);\n}\n","import type { DataExplorerResolver } from './types';\n\nexport function cn(...parts: Array<string | false | null | undefined>) {\n  return parts.filter(Boolean).join(' ');\n}\n\nexport function resolveDataExplorerValue<TValue, TContext>(\n  value: DataExplorerResolver<TValue, TContext> | undefined,\n  context: TContext | undefined,\n): TValue | undefined {\n  if (typeof value === 'function') {\n    return (value as (resolvedContext: TContext) => TValue)(context as TContext);\n  }\n\n  return value;\n}\n","import type {\n  DataExplorerAppearance,\n  DataExplorerBackground,\n  DataExplorerBorder,\n  DataExplorerControlTone,\n  DataExplorerDensity,\n  DataExplorerRadius,\n  DataExplorerResolvedTheme,\n  DataExplorerSurface,\n  DataExplorerThemeStyles,\n  DataExplorerThemePresetId,\n  DataExplorerThemeSlots,\n} from './types';\nimport { cn } from './utils';\n\ntype ResolvedSlots = Required<DataExplorerThemeSlots>;\n\nconst emptyStyles: DataExplorerThemeStyles = {};\n\nconst baseSlots: ResolvedSlots = {\n  surfaceRoot:\n    'relative flex h-full min-h-0 w-full min-w-0 overflow-hidden rounded-md border border-border bg-background shadow-sm',\n  toolbarRoot:\n    'flex flex-wrap items-center gap-2 border-b border-border bg-background px-4 py-3',\n  toolbarLeading: 'flex items-center gap-2',\n  toolbarSearch:\n    'flex h-10 min-w-52 flex-1 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm',\n  toolbarSearchIcon: 'inline-flex shrink-0 text-muted-foreground',\n  toolbarSearchInput:\n    'min-w-0 flex-1 bg-transparent text-sm outline-none placeholder:text-muted-foreground',\n  toolbarViewSwitch:\n    'flex items-center rounded-md border border-border bg-background p-0.5',\n  toolbarViewButton:\n    'inline-flex h-9 min-w-9 items-center justify-center gap-2 rounded-md px-2 text-sm text-muted-foreground transition-colors hover:bg-muted hover:text-foreground disabled:pointer-events-none disabled:opacity-50',\n  toolbarViewButtonActive: 'bg-muted text-foreground',\n  toolbarActions: 'flex items-center gap-2',\n  actionBarRoot: 'flex min-w-0 flex-wrap items-center gap-2',\n  actionBarLeading: 'flex shrink-0 items-center gap-2',\n  actionBarActions: 'flex min-w-0 flex-1 flex-wrap items-center gap-2',\n  actionBarTrailing: 'flex shrink-0 items-center gap-2',\n  actionButtonBase:\n    'inline-flex h-9 items-center justify-center gap-2 rounded-md border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n  actionButtonDefault:\n    'border-border bg-background text-foreground hover:bg-accent/60',\n  actionButtonPrimary:\n    'border-primary/20 bg-primary/10 text-primary hover:bg-primary/15',\n  actionButtonDanger:\n    'border-destructive/20 bg-destructive/10 text-destructive-text hover:bg-destructive/15',\n  actionButtonMuted:\n    'border-border/60 bg-muted/45 text-muted-foreground hover:bg-muted/70 hover:text-foreground',\n  actionButtonActive: 'ring-1 ring-primary/30',\n  actionButtonDisabled: 'cursor-not-allowed opacity-60',\n  actionIconButton: 'w-9 px-0',\n  actionToggleActive: 'border-primary/30 bg-primary/10 text-primary',\n  controlButton:\n    'inline-flex h-10 min-w-0 items-center justify-center gap-2 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n  controlButtonIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  controlButtonLabel: 'min-w-0 truncate',\n  controlSelectTrigger:\n    'inline-flex h-10 min-w-28 items-center justify-between gap-3 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n  controlSelectValue: 'flex min-w-0 items-center gap-1 truncate',\n  controlCheckbox:\n    'inline-flex h-9 items-center gap-2 rounded-md border border-border bg-background px-3 text-sm font-medium text-foreground transition-colors hover:bg-accent/60 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-60',\n  controlCheckboxIndicator:\n    'flex h-4 w-4 shrink-0 items-center justify-center rounded border border-border bg-background text-primary',\n  controlCheckboxLabel: 'min-w-0 truncate',\n  menuTrigger:\n    'inline-flex h-8 w-8 items-center justify-center rounded-md text-foreground transition-colors hover:bg-accent hover:text-accent-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2',\n  menuContent:\n    'z-50 min-w-36 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none',\n  menuLabel: 'px-2 py-1.5 text-xs font-medium text-muted-foreground',\n  menuSeparator: '-mx-1 my-1 h-px bg-border',\n  menuItem:\n    'relative flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none transition-colors focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n  menuItemPrimary: 'text-primary focus:text-primary',\n  menuItemDanger: 'text-destructive-text focus:text-destructive-text',\n  menuItemMuted: 'text-muted-foreground',\n  menuItemIcon: 'inline-flex h-4 w-4 shrink-0 items-center justify-center',\n  menuItemLabel: 'truncate',\n  cardRoot:\n    'group relative flex min-w-0 flex-col overflow-hidden rounded-lg border border-border/70 bg-background transition-shadow',\n  cardInteractive: 'cursor-pointer hover:shadow-sm',\n  cardSelected: 'ring-2 ring-primary',\n  cardDisabled: 'opacity-60',\n  cardHeader: 'p-4',\n  cardMedia: 'shrink-0 overflow-hidden',\n  cardFooter: 'shrink-0 border-t border-border/60 px-4 py-3',\n  recordCardRoot: 'group relative border-border/70 transition-shadow hover:shadow-sm',\n  recordCardActive: 'z-10 ring-2 ring-monkeys-500',\n  footerRoot: 'flex items-center border-t border-border bg-background px-4 py-3',\n  footerSummary:\n    'flex items-center gap-1 whitespace-nowrap text-sm text-muted-foreground',\n  footerJumpButton:\n    'inline-flex items-center gap-1 text-muted-foreground underline-offset-4 hover:text-foreground hover:underline',\n  footerPageSizeSelect:\n    'h-8 rounded-md border border-border bg-background px-2 text-sm text-foreground',\n  previewRoot:\n    'relative h-full min-h-0 w-full flex-1 select-none self-stretch overflow-hidden bg-slate-950',\n  previewPlaceholder:\n    'flex h-full w-full items-center justify-center rounded-xl bg-white/5 px-6 text-center text-sm text-white/60',\n  previewActions: 'absolute right-4 top-4 z-20 flex flex-col gap-2',\n  previewControls: 'absolute bottom-4 right-4 z-20 flex flex-col gap-2',\n  previewZoomLabel:\n    'min-w-[3rem] rounded-full border border-white/15 bg-black/30 px-1 py-1 text-center text-xs font-medium text-white/70 shadow-lg backdrop-blur',\n  previewControlButton:\n    'inline-flex h-9 w-9 items-center justify-center rounded-full border border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur transition hover:bg-black/45',\n  previewNavigationButton:\n    'absolute top-1/2 flex h-10 w-10 -translate-y-1/2 items-center justify-center rounded-full border border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur transition-colors hover:bg-black/45 disabled:pointer-events-none disabled:opacity-40',\n  detailRoot: 'flex h-full flex-col overflow-hidden bg-background',\n  detailHeader:\n    'flex items-center justify-between gap-3 border-b border-border bg-background px-4 py-4 sm:px-5',\n  detailLeading:\n    'flex h-9 w-9 shrink-0 items-center justify-center rounded-lg bg-muted text-muted-foreground',\n  detailNavigation:\n    'hidden items-center gap-1 rounded-lg border border-border bg-background px-1 py-1 md:flex',\n  detailNavigationButton:\n    'flex h-8 w-8 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground disabled:pointer-events-none disabled:opacity-50',\n  detailCloseButton:\n    'flex h-10 w-10 items-center justify-center rounded-full border border-border bg-background text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n  detailPreviewPanel:\n    'min-h-0 overflow-hidden border-b border-border bg-background xl:border-b-0',\n  detailPreviewFrame:\n    'relative h-full min-h-0 w-full overflow-hidden bg-background',\n  detailRightPanel:\n    'min-h-0 min-w-0 border-t border-border bg-background xl:border-l xl:border-t-0',\n  detailRightPanelBody:\n    'h-full overflow-y-auto overscroll-contain bg-background p-5',\n  treeShellRoot: 'flex h-full min-h-0 flex-col overflow-hidden',\n  treeShellHeader:\n    'flex shrink-0 items-start justify-between gap-3 px-4 py-3',\n  treeShellTitle: 'truncate text-sm font-semibold',\n  treeShellSubtitle: 'mt-1 text-sm text-muted-foreground',\n  treeShellToolbar: 'flex shrink-0 items-center gap-2',\n  treeShellBody: 'min-h-0 flex-1 overflow-hidden',\n  treeShellFooter: 'shrink-0',\n  treeRoot: 'min-w-0 space-y-1 overflow-hidden text-sm',\n  treeGroup: 'min-w-0 space-y-1',\n  treeGroupHeader: 'group/tree-group flex min-w-0 items-center gap-1',\n  treeGroupHeaderButton:\n    'flex h-9 min-w-0 flex-1 items-center gap-2 rounded-md px-2 text-left font-medium text-muted-foreground transition-colors hover:bg-accent/55 hover:text-foreground',\n  treeGroupContent: 'min-w-0 space-y-0.5',\n  treeGroupActions:\n    'shrink-0 opacity-0 transition-opacity group-hover/tree-group:opacity-100 data-[state=open]:opacity-100',\n  treeNode: 'min-w-0',\n  treeNodeButton:\n    'group/tree-node flex min-h-9 w-full min-w-0 items-center gap-1 rounded-md pr-1 text-left text-sm text-foreground transition-colors hover:bg-accent/55 hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-1',\n  treeNodeSelected: 'bg-accent text-accent-foreground',\n  treeNodeDisabled: 'cursor-not-allowed opacity-55',\n  treeNodeDragging: 'opacity-50',\n  treeNodeToggle:\n    'inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground',\n  treeNodeIcon:\n    'inline-flex h-4 w-4 shrink-0 items-center justify-center text-muted-foreground group-hover/tree-node:text-foreground',\n  treeNodeLabel: 'min-w-0 truncate',\n  treeNodeDescription: 'mt-0.5 truncate text-xs text-muted-foreground',\n  treeNodeMeta: 'ml-2 shrink-0 text-xs text-muted-foreground',\n  treeNodeBadge:\n    'ml-2 shrink-0 rounded-full border border-border bg-muted px-1.5 py-0.5 text-[11px] leading-none text-muted-foreground',\n  treeNodeActions:\n    'ml-1 shrink-0 opacity-0 transition-opacity group-hover/tree-node:opacity-100 data-[state=open]:opacity-100',\n  treeNodeChildren: 'mt-0.5 min-w-0 space-y-0.5',\n  treeNodeDragHandle:\n    'inline-flex h-5 w-5 shrink-0 cursor-grab items-center justify-center rounded text-muted-foreground opacity-0 transition-opacity hover:bg-accent hover:text-foreground active:cursor-grabbing group-hover/tree-node:opacity-100',\n  treeEmpty: 'px-3 py-2 text-xs text-muted-foreground',\n  treeError: 'px-3 py-2 text-xs text-destructive-text',\n  treeLoading: 'px-3 py-2 text-xs text-muted-foreground',\n};\n\nconst surfaceSlots: Record<DataExplorerSurface, Partial<DataExplorerThemeSlots>> = {\n  card: {},\n  flush: {\n    surfaceRoot:\n      'relative flex h-full min-h-0 w-full min-w-0 overflow-hidden',\n  },\n};\n\nconst densitySlots: Record<DataExplorerDensity, Partial<DataExplorerThemeSlots>> = {\n  compact: {\n    treeShellHeader: 'px-3 py-2',\n    toolbarRoot: 'px-3 py-2',\n    toolbarSearch: 'h-9 min-w-48',\n    toolbarViewButton: 'h-8 min-w-8 text-xs',\n    actionButtonBase: 'h-8 px-2.5 text-xs',\n    actionIconButton: 'h-8 w-8 px-0',\n    controlButton: 'h-9 px-2.5 text-xs',\n    controlSelectTrigger: 'h-9 min-w-24 px-2.5 text-xs',\n    controlCheckbox: 'h-8 px-2.5 text-xs',\n    menuTrigger: 'h-8 w-8',\n    footerRoot: 'px-3 py-2',\n    footerPageSizeSelect: 'h-8 text-xs',\n    treeGroupHeaderButton: 'h-8 text-xs',\n    treeNodeButton: 'min-h-8 text-xs',\n    treeEmpty: 'py-1.5 text-xs',\n    treeError: 'py-1.5 text-xs',\n    treeLoading: 'py-1.5 text-xs',\n  },\n  default: {},\n  comfortable: {\n    treeShellHeader: 'px-5 py-4',\n    toolbarRoot: 'px-5 py-4',\n    toolbarSearch: 'h-11',\n    toolbarViewButton: 'h-10 min-w-10',\n    actionButtonBase: 'h-10 px-3.5',\n    actionIconButton: 'h-10 w-10 px-0',\n    controlButton: 'h-11 px-3.5',\n    controlSelectTrigger: 'h-11 min-w-32 px-3.5',\n    controlCheckbox: 'h-10 px-3.5',\n    menuTrigger: 'h-9 w-9',\n    footerRoot: 'px-5 py-3.5',\n    treeGroupHeaderButton: 'h-10',\n    treeNodeButton: 'min-h-10',\n  },\n};\n\nconst radiusSlots: Record<DataExplorerRadius, Partial<DataExplorerThemeSlots>> = {\n  none: {\n    surfaceRoot: 'rounded-none',\n    toolbarSearch: 'rounded-none',\n    toolbarViewSwitch: 'rounded-none',\n    toolbarViewButton: 'rounded-none',\n    actionButtonBase: 'rounded-none',\n    controlButton: 'rounded-none',\n    controlSelectTrigger: 'rounded-none',\n    controlCheckbox: 'rounded-none',\n    controlCheckboxIndicator: 'rounded-none',\n    menuTrigger: 'rounded-none',\n    menuContent: 'rounded-none',\n    menuItem: 'rounded-none',\n    cardRoot: 'rounded-none',\n    footerPageSizeSelect: 'rounded-none',\n    detailLeading: 'rounded-none',\n    detailNavigation: 'rounded-none',\n    detailNavigationButton: 'rounded-none',\n    detailCloseButton: 'rounded-none',\n    treeGroupHeaderButton: 'rounded-none',\n    treeNodeButton: 'rounded-none',\n    treeNodeToggle: 'rounded-none',\n    treeNodeBadge: 'rounded-none',\n    treeNodeDragHandle: 'rounded-none',\n  },\n  sm: {\n    surfaceRoot: 'rounded-sm',\n    toolbarSearch: 'rounded-sm',\n    toolbarViewSwitch: 'rounded-sm',\n    toolbarViewButton: 'rounded-sm',\n    actionButtonBase: 'rounded-sm',\n    controlButton: 'rounded-sm',\n    controlSelectTrigger: 'rounded-sm',\n    controlCheckbox: 'rounded-sm',\n    controlCheckboxIndicator: 'rounded-sm',\n    menuTrigger: 'rounded-sm',\n    menuContent: 'rounded-sm',\n    menuItem: 'rounded-sm',\n    cardRoot: 'rounded-sm',\n    treeGroupHeaderButton: 'rounded-sm',\n    treeNodeButton: 'rounded-sm',\n    treeNodeToggle: 'rounded-sm',\n    treeNodeBadge: 'rounded-sm',\n    treeNodeDragHandle: 'rounded-sm',\n  },\n  md: {},\n  lg: {\n    surfaceRoot: 'rounded-xl',\n    toolbarSearch: 'rounded-lg',\n    toolbarViewSwitch: 'rounded-lg',\n    toolbarViewButton: 'rounded-lg',\n    actionButtonBase: 'rounded-lg',\n    controlButton: 'rounded-lg',\n    controlSelectTrigger: 'rounded-lg',\n    controlCheckbox: 'rounded-lg',\n    controlCheckboxIndicator: 'rounded-md',\n    menuTrigger: 'rounded-lg',\n    menuContent: 'rounded-lg',\n    cardRoot: 'rounded-xl',\n    treeGroupHeaderButton: 'rounded-lg',\n    treeNodeButton: 'rounded-lg',\n    treeNodeToggle: 'rounded-md',\n    treeNodeBadge: 'rounded-lg',\n    treeNodeDragHandle: 'rounded-md',\n  },\n  xl: {\n    surfaceRoot: 'rounded-2xl',\n    toolbarSearch: 'rounded-xl',\n    toolbarViewSwitch: 'rounded-xl',\n    toolbarViewButton: 'rounded-xl',\n    actionButtonBase: 'rounded-xl',\n    controlButton: 'rounded-xl',\n    controlSelectTrigger: 'rounded-xl',\n    controlCheckbox: 'rounded-xl',\n    controlCheckboxIndicator: 'rounded-lg',\n    menuTrigger: 'rounded-xl',\n    menuContent: 'rounded-xl',\n    cardRoot: 'rounded-2xl',\n    treeGroupHeaderButton: 'rounded-xl',\n    treeNodeButton: 'rounded-xl',\n    treeNodeToggle: 'rounded-lg',\n    treeNodeBadge: 'rounded-xl',\n    treeNodeDragHandle: 'rounded-lg',\n  },\n  full: {\n    surfaceRoot: 'rounded-2xl',\n    toolbarSearch: 'rounded-full',\n    toolbarViewSwitch: 'rounded-full',\n    toolbarViewButton: 'rounded-full',\n    actionButtonBase: 'rounded-full',\n    controlButton: 'rounded-full',\n    controlSelectTrigger: 'rounded-full',\n    controlCheckbox: 'rounded-full',\n    controlCheckboxIndicator: 'rounded-full',\n    menuTrigger: 'rounded-full',\n    cardRoot: 'rounded-2xl',\n    treeGroupHeaderButton: 'rounded-full',\n    treeNodeButton: 'rounded-full',\n    treeNodeToggle: 'rounded-full',\n    treeNodeBadge: 'rounded-full',\n    treeNodeDragHandle: 'rounded-full',\n  },\n};\n\nconst borderSlots: Record<DataExplorerBorder, Partial<DataExplorerThemeSlots>> = {\n  none: {\n    surfaceRoot: 'border-transparent',\n    toolbarRoot: 'border-transparent',\n    toolbarSearch: 'border-transparent',\n    toolbarViewSwitch: 'border-transparent',\n    actionButtonBase: 'border-transparent',\n    controlButton: 'border-transparent',\n    controlSelectTrigger: 'border-transparent',\n    controlCheckbox: 'border-transparent',\n    cardRoot: 'border-transparent',\n    footerRoot: 'border-transparent',\n    detailHeader: 'border-transparent',\n    detailPreviewPanel: 'border-transparent',\n    detailRightPanel: 'border-transparent',\n  },\n  subtle: {\n    surfaceRoot: 'border-border/60',\n    toolbarRoot: 'border-border/60',\n    toolbarSearch: 'border-border/60',\n    toolbarViewSwitch: 'border-border/60',\n    actionButtonDefault: 'border-border/60',\n    controlButton: 'border-border/60',\n    controlSelectTrigger: 'border-border/60',\n    controlCheckbox: 'border-border/60',\n    cardRoot: 'border-border/60',\n    footerRoot: 'border-border/60',\n  },\n  solid: {},\n  strong: {\n    surfaceRoot: 'border-foreground/20',\n    toolbarRoot: 'border-foreground/20',\n    toolbarSearch: 'border-foreground/20',\n    toolbarViewSwitch: 'border-foreground/20',\n    actionButtonDefault: 'border-foreground/20',\n    controlButton: 'border-foreground/20',\n    controlSelectTrigger: 'border-foreground/20',\n    controlCheckbox: 'border-foreground/20',\n    cardRoot: 'border-foreground/20',\n    footerRoot: 'border-foreground/20',\n  },\n};\n\nconst backgroundSlots: Record<DataExplorerBackground, Partial<DataExplorerThemeSlots>> = {\n  plain: {},\n  muted: {\n    surfaceRoot: 'bg-card',\n    toolbarRoot: 'bg-muted/20',\n    toolbarSearch: 'bg-background',\n    toolbarViewSwitch: 'bg-background',\n    controlButton: 'bg-background',\n    controlSelectTrigger: 'bg-background',\n    controlCheckbox: 'bg-background',\n    cardRoot: 'bg-card',\n    footerRoot: 'bg-muted/20',\n    detailHeader: 'bg-muted/20',\n  },\n  soft: {\n    surfaceRoot: 'bg-background/95 shadow-sm',\n    toolbarRoot: 'bg-background/95',\n    actionButtonDefault: 'bg-muted/30 hover:bg-muted/55',\n    controlButton: 'bg-muted/30 hover:bg-muted/55',\n    controlSelectTrigger: 'bg-muted/30 hover:bg-muted/55',\n    controlCheckbox: 'bg-muted/30 hover:bg-muted/55',\n    cardRoot: 'bg-background/95 shadow-sm',\n    footerRoot: 'bg-background/95',\n  },\n  glass: {\n    surfaceRoot: 'border-white/10 bg-white/[0.06] shadow-none backdrop-blur-md',\n    toolbarRoot: 'border-white/10 bg-white/5 backdrop-blur-md',\n    toolbarSearch: 'border-white/10 bg-white/5',\n    toolbarViewSwitch: 'border-white/10 bg-white/5',\n    actionButtonDefault:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlButton:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlSelectTrigger:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlCheckbox:\n      'border-white/10 bg-white/[0.08] text-foreground hover:bg-white/[0.14]',\n    controlCheckboxIndicator: 'border-white/15 bg-white/10',\n    cardRoot: 'border-white/10 bg-white/[0.06] shadow-none',\n    footerRoot: 'border-white/10 bg-white/5 backdrop-blur-md',\n  },\n  'dark-stage': {\n    previewRoot: 'bg-slate-950',\n    previewPlaceholder: 'bg-white/5 text-white/60',\n    actionButtonBase:\n      'inline-flex h-9 items-center justify-center gap-2 rounded-full border px-3 text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-white/45 focus-visible:ring-offset-0',\n    actionButtonDefault:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    controlButton:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    controlSelectTrigger:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    controlCheckbox:\n      'border-white/15 bg-black/30 text-white/90 shadow-lg backdrop-blur hover:bg-black/[0.45]',\n    actionButtonPrimary:\n      'border-white/25 bg-white/20 text-white shadow-lg backdrop-blur hover:bg-white/28',\n    actionButtonMuted:\n      'border-white/10 bg-black/20 text-white/70 shadow-lg backdrop-blur hover:bg-black/[0.35] hover:text-white',\n    actionIconButton: 'h-9 w-9 px-0',\n  },\n};\n\nconst presetDefaults: Record<\n  DataExplorerThemePresetId,\n  Pick<DataExplorerAppearance, 'density' | 'radius' | 'border' | 'background'>\n> = {\n  default: {\n    density: 'default',\n    radius: 'md',\n    border: 'solid',\n    background: 'plain',\n  },\n  soft: {\n    density: 'default',\n    radius: 'md',\n    border: 'subtle',\n    background: 'plain',\n  },\n  compact: {\n    density: 'compact',\n    radius: 'md',\n    border: 'subtle',\n    background: 'soft',\n  },\n  'tinted-glass': {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'glass',\n  },\n  flat: {\n    density: 'compact',\n    radius: 'none',\n    border: 'solid',\n    background: 'plain',\n  },\n  glass: {\n    density: 'default',\n    radius: 'lg',\n    border: 'subtle',\n    background: 'glass',\n  },\n  'hard-edge': {\n    density: 'compact',\n    radius: 'none',\n    border: 'solid',\n    background: 'plain',\n  },\n};\n\nconst presetSlots: Record<string, Partial<DataExplorerThemeSlots>> = {\n  soft: {\n    actionButtonBase: 'font-medium',\n    controlButton: 'font-medium',\n    controlSelectTrigger: 'font-medium',\n    controlCheckbox: 'font-medium',\n    menuTrigger: 'rounded-full',\n    cardRoot: 'border-border/70',\n  },\n  compact: {\n    toolbarRoot: 'gap-2',\n    actionButtonBase: 'text-xs',\n    controlButton: 'text-xs',\n    controlSelectTrigger: 'text-xs',\n    controlCheckbox: 'text-xs',\n    footerRoot: 'text-xs',\n  },\n  'tinted-glass': {\n    actionButtonDefault:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    actionButtonPrimary:\n      'border-primary/30 bg-primary/15 text-primary-foreground hover:bg-primary/20',\n    actionButtonMuted:\n      'border-border/50 bg-muted/20 text-muted-foreground hover:bg-muted/45 hover:text-foreground',\n    controlButton:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    controlSelectTrigger:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    controlCheckbox:\n      'border-border/60 bg-background/10 text-foreground hover:bg-accent/60',\n    controlCheckboxIndicator: 'border-border/60 bg-background/10 text-primary',\n    menuContent: 'border-border bg-popover text-popover-foreground shadow-2xl',\n    menuSeparator: 'bg-border',\n    menuItem: 'focus:bg-accent focus:text-accent-foreground',\n    cardSelected: 'ring-2 ring-primary',\n    previewRoot: 'bg-background',\n    treeGroupHeaderButton:\n      'text-muted-foreground hover:bg-accent/60 hover:text-foreground',\n    treeNodeButton:\n      'text-foreground hover:bg-accent/60 hover:text-accent-foreground focus-visible:ring-ring',\n    treeNodeSelected: 'bg-accent text-accent-foreground',\n    treeNodeToggle: 'text-muted-foreground hover:bg-accent hover:text-foreground',\n    treeNodeIcon:\n      'text-muted-foreground group-hover/tree-node:text-foreground',\n    treeNodeMeta: 'text-muted-foreground',\n    treeNodeBadge: 'border-border bg-muted text-muted-foreground',\n    treeNodeActions: 'text-muted-foreground',\n    treeNodeDragHandle:\n      'text-muted-foreground hover:bg-accent hover:text-foreground group-hover/tree-node:opacity-100',\n    treeEmpty: 'text-muted-foreground',\n    treeError: 'text-destructive-text',\n    treeLoading: 'text-muted-foreground',\n  },\n  flat: {\n    toolbarRoot: 'border-slate-200 bg-white',\n    toolbarSearch: 'rounded-none border-slate-200 bg-white shadow-none',\n    toolbarViewSwitch: 'rounded-none border-slate-200 bg-white shadow-none',\n    actionButtonBase: 'rounded-none shadow-none',\n    controlButton: 'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    controlSelectTrigger:\n      'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    controlCheckbox:\n      'rounded-none border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    actionButtonDefault:\n      'border-slate-200 bg-white text-slate-700 hover:bg-slate-50',\n    menuTrigger:\n      'rounded-none border border-slate-200 bg-white text-slate-700 shadow-none hover:bg-slate-50',\n    menuContent: 'rounded-none border-slate-200 bg-white shadow-none',\n    cardRoot: 'rounded-none border-slate-200 bg-white shadow-none',\n    footerRoot: 'border-slate-200 bg-white',\n    treeRoot: 'space-y-1 text-sm',\n    treeGroupHeader: 'group/tree-group flex min-w-0 items-center',\n    treeGroupHeaderButton:\n      'h-9 rounded-none px-3 text-slate-600 shadow-none hover:bg-slate-100 hover:text-slate-950',\n    treeGroupContent: 'space-y-1',\n    treeNodeButton:\n      'min-h-9 rounded-none text-slate-700 hover:bg-slate-100 hover:text-slate-950 focus-visible:ring-slate-300',\n    treeNodeSelected: 'bg-slate-100 text-slate-950',\n    treeNodeToggle:\n      'rounded-none text-slate-500 hover:bg-transparent hover:text-slate-950',\n    treeNodeIcon: 'text-slate-500 group-hover/tree-node:text-slate-950',\n    treeNodeDragHandle:\n      'rounded-none text-slate-400 hover:bg-transparent hover:text-slate-700',\n    treeNodeActions: 'text-slate-500',\n  },\n  glass: {\n    menuContent: 'border-white/10 bg-slate-950/90 text-white backdrop-blur-xl',\n    menuSeparator: 'bg-white/10',\n    menuItem: 'focus:bg-white/10 focus:text-white',\n  },\n  'hard-edge': {\n    toolbarRoot: 'border-slate-200 bg-white',\n    actionButtonBase: 'rounded-none shadow-none',\n    controlButton: 'rounded-none shadow-none',\n    controlSelectTrigger: 'rounded-none shadow-none',\n    controlCheckbox: 'rounded-none shadow-none',\n    cardRoot: 'rounded-none border-slate-200 bg-white shadow-none',\n    footerRoot: 'border-slate-200 bg-white',\n    footerPageSizeSelect: 'rounded-none border-slate-200 shadow-none',\n  },\n};\n\nconst slotKeys = Object.keys(baseSlots) as Array<keyof DataExplorerThemeSlots>;\n\nfunction mergeSlots(\n  ...sources: Array<Partial<DataExplorerThemeSlots> | undefined>\n): ResolvedSlots {\n  return slotKeys.reduce((resolved, key) => {\n    resolved[key] = cn(...sources.map((source) => source?.[key]));\n    return resolved;\n  }, {} as ResolvedSlots);\n}\n\nfunction mergeStyles(\n  ...sources: Array<DataExplorerThemeStyles | undefined>\n): DataExplorerThemeStyles {\n  return sources.reduce<DataExplorerThemeStyles>(\n    (resolved, source) => ({\n      ...resolved,\n      ...source,\n    }),\n    {},\n  );\n}\n\nfunction getPresetDefaults(preset: DataExplorerThemePresetId) {\n  const defaults = presetDefaults[preset as keyof typeof presetDefaults];\n  if (!defaults) {\n    throw new TypeError(\n      `Unknown Data Explorer theme preset \"${String(preset)}\". Expected one of: ${Object.keys(presetDefaults).join(', ')}.`,\n    );\n  }\n  return defaults;\n}\n\nexport function resolveDataExplorerAppearance(\n  appearance?: DataExplorerAppearance,\n): DataExplorerResolvedTheme {\n  const preset = appearance?.preset ?? 'default';\n  const surface = appearance?.surface ?? 'card';\n  const defaults = getPresetDefaults(preset);\n  const density = appearance?.density ?? defaults.density ?? 'default';\n  const radius = appearance?.radius ?? defaults.radius ?? 'md';\n  const border = appearance?.border ?? defaults.border ?? 'solid';\n  const background = appearance?.background ?? defaults.background ?? 'plain';\n\n  const slots = mergeSlots(\n    baseSlots,\n    presetSlots[preset],\n    densitySlots[density],\n    radiusSlots[radius],\n    borderSlots[border],\n    backgroundSlots[background],\n    appearance?.slots,\n  );\n  if (surface === 'flush') {\n    slots.surfaceRoot = cn(\n      surfaceSlots.flush.surfaceRoot,\n      appearance?.slots?.surfaceRoot,\n    );\n  }\n\n  return {\n    surface,\n    preset,\n    density,\n    radius,\n    border,\n    background,\n    styles: mergeStyles(emptyStyles, appearance?.styles),\n    slots,\n  };\n}\n\nexport function getDataExplorerActionToneClassName(\n  theme: DataExplorerResolvedTheme,\n  tone: DataExplorerControlTone | undefined,\n  active: boolean,\n) {\n  return cn(\n    tone === 'primary'\n      ? theme.slots.actionButtonPrimary\n      : tone === 'danger'\n        ? theme.slots.actionButtonDanger\n        : tone === 'muted'\n          ? theme.slots.actionButtonMuted\n          : theme.slots.actionButtonDefault,\n    active && theme.slots.actionButtonActive,\n  );\n}\n\nexport function getDataExplorerMenuItemToneClassName(\n  theme: DataExplorerResolvedTheme,\n  tone: DataExplorerControlTone | undefined,\n) {\n  if (tone === 'primary') return theme.slots.menuItemPrimary;\n  if (tone === 'danger') return theme.slots.menuItemDanger;\n  if (tone === 'muted') return theme.slots.menuItemMuted;\n  return undefined;\n}\n","import type { MonkeysLocale } from \"./types\";\n\nexport const enUS = {\n  locale: \"en-US\",\n  messages: {\n    pagination: {\n      navigation: \"Pagination\",\n      first: \"First\",\n      previous: \"Previous\",\n      next: \"Next\",\n      last: \"Last\",\n      page: ({ page, pageCount }) => `Page ${page} of ${pageCount}`,\n      currentPage: ({ page, pageCount }) =>\n        `Page ${page} of ${pageCount}, current page`,\n      emptyResults: \"0 results\",\n      range: ({ start, end, total }) => `${start}-${end} of ${total}`,\n      selected: ({ count }) => `${count} selected`,\n      pageSize: \"Items per page\",\n      perLoad: \"Items per load\",\n      jumpToPage: \"Jump to page\",\n      pages: \"pages\",\n      clickToJump: \"Click to jump to a page\",\n    },\n    dialog: {\n      close: \"Close dialog\",\n    },\n    dropdownMenu: {\n      actions: \"Actions\",\n    },\n    loading: {\n      spinner: \"Loading\",\n    },\n    layout: {\n      resizePanels: \"Resize panels\",\n    },\n    steps: {\n      label: \"Progress\",\n      current: \"Current\",\n      completed: \"Completed\",\n      error: \"Error\",\n      disabled: \"Disabled\",\n    },\n    numberInput: {\n      increment: \"Increase value\",\n      decrement: \"Decrease value\",\n    },\n    passwordInput: {\n      showPassword: \"Show password\",\n      hidePassword: \"Hide password\",\n    },\n    multiSelect: {\n      placeholder: \"Select options\",\n      empty: \"No options\",\n      removeOption: ({ value }) => `Remove ${value}`,\n    },\n    table: {\n      dragColumn: ({ columnId }) => `Drag column ${columnId}`,\n      resizeColumn: ({ columnId }) => `Resize column ${columnId}`,\n      sortColumn: ({ columnId }) =>\n        columnId ? `Sort column ${columnId}` : \"Sort column\",\n      loadingRow: \"Loading table row\",\n    },\n    toolbar: {\n      theme: {\n        label: \"Appearance\",\n        toggle: \"Toggle theme\",\n        auto: \"Auto\",\n        light: \"Light\",\n        dark: \"Dark\",\n      },\n      language: {\n        label: \"Language\",\n        switch: \"Switch language\",\n      },\n    },\n    toast: {\n      errorTitle: \"Error\",\n      warningTitle: \"Warning\",\n      defaultErrorDescription: \"Something went wrong.\",\n      defaultWarningDescription: \"Please check and try again.\",\n    },\n    dataExplorer: {\n      viewTree: {\n        actions: \"More actions\",\n        expand: \"Expand\",\n        collapse: \"Collapse\",\n        loading: \"Loading...\",\n        empty: \"No views\",\n        error: \"Unable to load views\",\n      },\n    },\n    workbench: {\n      collection: {\n        label: \"Collection\",\n        loading: \"Loading items\",\n        empty: \"No items\",\n        loadError: \"Unable to load items\",\n        refreshError: \"Unable to refresh items\",\n        retry: \"Retry\",\n        loadingMore: \"Loading more items\",\n        permission: \"You do not have permission to view this content\",\n        offline: \"You appear to be offline\",\n        requestAccess: \"Request access\",\n      },\n      interactiveTable: {\n        columnActions: \"Column actions\",\n        freezeColumn: \"Freeze to left\",\n        freezeEndColumn: \"Freeze to right\",\n        unfreezeColumn: \"Unfreeze from left\",\n        unfreezeEndColumn: \"Unfreeze from right\",\n        unfreezeAllColumns: \"Unfreeze all columns\",\n        resetColumnWidth: \"Reset column width\",\n        frozenColumnTitle: \"Frozen column\",\n      },\n    },\n    agentWorkbench: {\n      label: \"Session activity\",\n      reasoning: \"Reasoning\",\n      plan: \"Plan\",\n      taskNoDetail: \"No additional details\",\n      modes: { chat: \"Chat\", work: \"Work\" },\n      composer: {\n        send: \"Send message\",\n        stop: \"Stop generating\",\n        queue: \"Queue message\",\n        attach: \"Add photos or files\",\n        voice: \"Start voice input\",\n        webSearch: \"Web search\",\n        chatMode: \"Chat mode\",\n        model: \"Model\",\n        reasoning: \"Reasoning effort\",\n        permissions: \"Permissions\",\n        removeAttachment: \"Remove attachment\",\n        editQueued: \"Edit queued message\",\n        deleteQueued: \"Delete queued message\",\n        moveUp: \"Move message up\",\n        moveDown: \"Move message down\",\n        queued: \"Queued messages\",\n        uploading: \"Uploading\",\n        uploadFailed: \"Upload failed\",\n        retryAttachment: \"Retry attachment upload\",\n        noModels: \"No models available\",\n        message: \"Message\",\n        attachmentOnly: \"Attachment\",\n        reasoningOptions: {\n          low: \"Low\",\n          medium: \"Medium\",\n          high: \"High\",\n          xhigh: \"Extra high\",\n        },\n        permissionOptions: {\n          \"approval-required\": \"Approval required\",\n          \"auto-approve\": \"Auto approve\",\n          \"full-access\": \"Full access\",\n        },\n      },\n      quickStart: {\n        label: \"Quick start\",\n        back: \"Back\",\n        addFile: \"Add file\",\n      },\n      tool: {\n        input: \"Input\",\n        output: \"Output\",\n        status: {\n          pending: \"Pending\",\n          running: \"Running\",\n          completed: \"Completed\",\n          failed: \"Error\",\n          denied: \"Denied\",\n        },\n      },\n      approval: {\n        approve: \"Approve\",\n        reject: \"Reject\",\n        approved: \"Approved\",\n        rejected: \"Rejected\",\n      },\n      artifact: {\n        pending: \"Preparing\",\n        ready: \"Ready\",\n        failed: \"Failed\",\n        open: ({ name }) => `Open ${name}`,\n      },\n      run: {\n        stopping: \"Stopping...\",\n        stoppedAfter: ({ duration }) => `You stopped after ${duration}`,\n      },\n      process: {\n        running: \"Working\",\n        queued: \"Queued\",\n        waitingApproval: \"Waiting for approval\",\n        failed: \"Failed\",\n        stopped: \"Stopped\",\n        processed: \"Processed\",\n        processedFor: ({ duration }) => `Worked for ${duration}`,\n        completedCount: ({ completed, total }) =>\n          `${completed}/${total} completed`,\n      },\n      artifactWorkspace: {\n        outputs: \"Outputs\",\n        sources: \"Sources\",\n        viewAll: \"View all\",\n        toggleSummary: \"Toggle files\",\n        tabs: \"Open files\",\n        closeTab: ({ name }) => `Close ${name}`,\n        closeWorkspace: \"Close workspace\",\n        download: ({ name }) => `Download ${name}`,\n        openExternal: ({ name }) => `Open ${name} in a new window`,\n        loading: \"Loading preview...\",\n        failed: \"Preview unavailable\",\n        retry: \"Try again\",\n      },\n      usage: {\n        label: \"Context usage\",\n        context: ({ used, total }) => `${used} / ${total} tokens`,\n      },\n      navigation: {\n        search: \"Search agents and sessions\",\n        searchSessions: \"Search sessions\",\n        searchShortcut: \"Focus search\",\n        clearSearch: \"Clear search\",\n        tabsLabel: \"Agent workbench navigation\",\n        agents: \"Agents\",\n        sessions: \"Sessions\",\n        newAgent: \"New Agent\",\n        newSession: \"New Session\",\n        capabilities: \"Capabilities & Extensions\",\n        settings: \"Agent Settings\",\n        allAgents: \"All Agents\",\n        recentSessions: \"Recent Sessions\",\n        chat: \"Chat\",\n        work: \"Work\",\n        chats: \"Chats\",\n        builtIn: \"Built-in\",\n        noDescription: \"No description\",\n        loading: \"Loading...\",\n        emptyAgents: \"No agents yet\",\n        emptySessions: \"No sessions yet\",\n        noResults: \"No matching results\",\n        retry: \"Retry\",\n        pin: \"Pin\",\n        unpin: \"Unpin\",\n        rename: \"Rename\",\n        delete: \"Delete\",\n        actions: \"Actions\",\n        save: \"Save\",\n        cancel: \"Cancel\",\n        running: \"Running\",\n        completed: \"Completed\",\n        failed: \"Failed\",\n        contextUsage: ({ percent }) => `${percent}% context used`,\n      },\n      details: {\n        title: \"Task details\",\n        description: \"Summary and workspace activity\",\n        duration: \"Duration\",\n        updated: \"Updated\",\n        model: \"Model\",\n        mode: \"Mode\",\n        permissions: \"Permissions\",\n        tokenUsage: \"Token usage\",\n        summary: \"Summary\",\n        summaryEmpty: \"No summary is available yet.\",\n        summaryFailed: \"The summary could not be generated.\",\n        highlights: \"Highlights\",\n        pendingItems: \"Pending items\",\n        tabs: {\n          label: \"Task detail views\",\n          summary: \"Summary\",\n          workspace: \"Workspace\",\n        },\n        status: {\n          queued: \"Queued\",\n          running: \"Running\",\n          waiting_approval: \"Waiting for approval\",\n          stopping: \"Stopping\",\n          stopped: \"Stopped\",\n          completed: \"Completed\",\n          failed: \"Failed\",\n        },\n        state: {\n          loading: {\n            title: \"Loading task details\",\n            description: \"Restoring the latest session activity.\",\n          },\n          empty: {\n            title: \"No task selected\",\n            description: \"Select a task to inspect its details.\",\n          },\n          error: {\n            title: \"Unable to load task details\",\n            description: \"Try again after the session is available.\",\n          },\n        },\n        actions: {\n          close: \"Close task details\",\n          copySummary: \"Copy summary\",\n          retry: \"Retry\",\n          retrySummary: \"Retry summary\",\n          resume: \"Resume\",\n          continueInNewTask: \"Continue in new task\",\n          editAndRerun: \"Edit and rerun\",\n          export: \"Export\",\n        },\n        workspace: {\n          diffs: \"Code changes\",\n          files: \"Files\",\n          terminals: \"Terminals\",\n          tests: \"Tests\",\n          artifacts: \"Artifacts\",\n          exitCode: ({ code }) => `Exit code ${code}`,\n          diffStatus: {\n            added: \"Added\",\n            modified: \"Modified\",\n            deleted: \"Deleted\",\n            renamed: \"Renamed\",\n          },\n          fileOperation: { upsert: \"Updated\", delete: \"Deleted\" },\n        },\n      },\n    },\n  },\n} satisfies MonkeysLocale;\n","import { enUS } from './en-US';\nimport type {\n  MonkeysBuiltInLocaleId,\n  MonkeysLocale,\n  MonkeysLocaleInput,\n  MonkeysLocaleMessages,\n  MonkeysLocaleMessagesOverride,\n  MonkeysResolvedLocale,\n} from './types';\nimport { zhCN } from './zh-CN';\n\nconst BUILT_IN_LOCALES: Record<MonkeysBuiltInLocaleId, MonkeysLocale> = {\n  'en-US': enUS,\n  'zh-CN': zhCN,\n};\n\nfunction normalizeLocaleId(locale: unknown): string {\n  if (typeof locale !== 'string' || !locale.trim()) {\n    throw new TypeError('Monkeys locale must be a non-empty BCP 47 string.');\n  }\n\n  try {\n    return Intl.getCanonicalLocales(locale)[0];\n  } catch {\n    throw new RangeError(\n      `Monkeys locale \"${locale}\" is not a valid BCP 47 identifier.`,\n    );\n  }\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n  return Boolean(value) && typeof value === 'object' && !Array.isArray(value);\n}\n\nfunction validateMessageOverride(\n  value: unknown,\n  schema: unknown,\n  path: string,\n) {\n  if (!isRecord(value) || !isRecord(schema)) {\n    throw new TypeError(`${path} must be an object.`);\n  }\n\n  for (const [key, candidate] of Object.entries(value)) {\n    if (candidate === undefined) continue;\n    if (!(key in schema)) {\n      throw new TypeError(`${path}.${key} is not a supported Monkeys message.`);\n    }\n\n    const expected = schema[key];\n    const candidatePath = `${path}.${key}`;\n    if (typeof expected === 'function') {\n      if (typeof candidate !== 'function') {\n        throw new TypeError(`${candidatePath} must be a function.`);\n      }\n    } else if (typeof expected === 'string') {\n      if (typeof candidate !== 'string') {\n        throw new TypeError(`${candidatePath} must be a string.`);\n      }\n    } else {\n      validateMessageOverride(candidate, expected, candidatePath);\n    }\n  }\n}\n\nfunction assertMessagesOverride(\n  value: unknown,\n  path: string,\n): asserts value is MonkeysLocaleMessagesOverride {\n  validateMessageOverride(value, enUS.messages, path);\n}\n\nfunction isBuiltInLocale(locale: string): locale is MonkeysBuiltInLocaleId {\n  return locale === 'en-US' || locale === 'zh-CN';\n}\n\nfunction normalizeLocaleInput(input: MonkeysLocaleInput | undefined): {\n  locale: string | undefined;\n  messages: MonkeysLocaleMessagesOverride | undefined;\n  hasExplicitLocale: boolean;\n} {\n  if (input === undefined) {\n    return {\n      locale: undefined,\n      messages: undefined,\n      hasExplicitLocale: false,\n    };\n  }\n\n  if (typeof input === 'string') {\n    const locale = normalizeLocaleId(input);\n    if (!isBuiltInLocale(locale)) {\n      throw new RangeError(\n        `Unsupported built-in Monkeys locale \"${locale}\". Provide a locale pack object for custom locales.`,\n      );\n    }\n    return { locale, messages: undefined, hasExplicitLocale: true };\n  }\n\n  if (!input || typeof input !== 'object' || Array.isArray(input)) {\n    throw new TypeError('Monkeys locale must be a locale id or locale pack object.');\n  }\n\n  const locale = normalizeLocaleId(input.locale);\n  assertMessagesOverride(input.messages, 'Monkeys locale messages');\n\n  return {\n    locale,\n    messages: input.messages,\n    hasExplicitLocale: true,\n  };\n}\n\nexport function mergeMonkeysLocaleMessages(\n  base: MonkeysLocaleMessages,\n  override?: MonkeysLocaleMessagesOverride,\n): MonkeysLocaleMessages {\n  if (!override) return base;\n\n  return {\n    pagination: { ...base.pagination, ...override.pagination },\n    dialog: { ...base.dialog, ...override.dialog },\n    dropdownMenu: { ...base.dropdownMenu, ...override.dropdownMenu },\n    loading: { ...base.loading, ...override.loading },\n    layout: { ...base.layout, ...override.layout },\n    steps: { ...base.steps, ...override.steps },\n    numberInput: { ...base.numberInput, ...override.numberInput },\n    passwordInput: { ...base.passwordInput, ...override.passwordInput },\n    multiSelect: { ...base.multiSelect, ...override.multiSelect },\n    table: { ...base.table, ...override.table },\n    toolbar: {\n      theme: { ...base.toolbar.theme, ...override.toolbar?.theme },\n      language: { ...base.toolbar.language, ...override.toolbar?.language },\n    },\n    toast: { ...base.toast, ...override.toast },\n    dataExplorer: {\n      viewTree: {\n        ...base.dataExplorer.viewTree,\n        ...override.dataExplorer?.viewTree,\n      },\n    },\n    workbench: {\n      collection: {\n        ...base.workbench.collection,\n        ...override.workbench?.collection,\n      },\n      interactiveTable: {\n        ...base.workbench.interactiveTable,\n        ...override.workbench?.interactiveTable,\n      },\n    },\n    agentWorkbench: {\n      ...base.agentWorkbench,\n      ...override.agentWorkbench,\n      modes: {\n        ...base.agentWorkbench.modes,\n        ...override.agentWorkbench?.modes,\n      },\n      composer: {\n        ...base.agentWorkbench.composer,\n        ...override.agentWorkbench?.composer,\n      },\n      quickStart: {\n        ...base.agentWorkbench.quickStart,\n        ...override.agentWorkbench?.quickStart,\n      },\n      tool: {\n        ...base.agentWorkbench.tool,\n        ...override.agentWorkbench?.tool,\n        status: {\n          ...base.agentWorkbench.tool.status,\n          ...override.agentWorkbench?.tool?.status,\n        },\n      },\n      approval: {\n        ...base.agentWorkbench.approval,\n        ...override.agentWorkbench?.approval,\n      },\n      artifact: {\n        ...base.agentWorkbench.artifact,\n        ...override.agentWorkbench?.artifact,\n      },\n      run: {\n        ...base.agentWorkbench.run,\n        ...override.agentWorkbench?.run,\n      },\n      process: {\n        ...base.agentWorkbench.process,\n        ...override.agentWorkbench?.process,\n      },\n      artifactWorkspace: {\n        ...base.agentWorkbench.artifactWorkspace,\n        ...override.agentWorkbench?.artifactWorkspace,\n      },\n      usage: {\n        ...base.agentWorkbench.usage,\n        ...override.agentWorkbench?.usage,\n      },\n      navigation: {\n        ...base.agentWorkbench.navigation,\n        ...override.agentWorkbench?.navigation,\n      },\n      details: {\n        ...base.agentWorkbench.details,\n        ...override.agentWorkbench?.details,\n        tabs: {\n          ...base.agentWorkbench.details.tabs,\n          ...override.agentWorkbench?.details?.tabs,\n        },\n        status: {\n          ...base.agentWorkbench.details.status,\n          ...override.agentWorkbench?.details?.status,\n        },\n        state: {\n          loading: {\n            ...base.agentWorkbench.details.state.loading,\n            ...override.agentWorkbench?.details?.state?.loading,\n          },\n          empty: {\n            ...base.agentWorkbench.details.state.empty,\n            ...override.agentWorkbench?.details?.state?.empty,\n          },\n          error: {\n            ...base.agentWorkbench.details.state.error,\n            ...override.agentWorkbench?.details?.state?.error,\n          },\n        },\n        actions: {\n          ...base.agentWorkbench.details.actions,\n          ...override.agentWorkbench?.details?.actions,\n        },\n        workspace: {\n          ...base.agentWorkbench.details.workspace,\n          ...override.agentWorkbench?.details?.workspace,\n          diffStatus: {\n            ...base.agentWorkbench.details.workspace.diffStatus,\n            ...override.agentWorkbench?.details?.workspace?.diffStatus,\n          },\n          fileOperation: {\n            ...base.agentWorkbench.details.workspace.fileOperation,\n            ...override.agentWorkbench?.details?.workspace?.fileOperation,\n          },\n        },\n      },\n    },\n  };\n}\n\nexport const defaultMonkeysLocale: MonkeysResolvedLocale = {\n  locale: enUS.locale,\n  messages: mergeMonkeysLocaleMessages(\n    enUS.messages as MonkeysLocaleMessages,\n  ),\n};\n\nexport function resolveMonkeysLocale(\n  input?: MonkeysLocaleInput,\n  override?: MonkeysLocaleMessagesOverride,\n  parent?: MonkeysResolvedLocale,\n): MonkeysResolvedLocale {\n  if (override !== undefined) {\n    assertMessagesOverride(override, 'MonkeysProvider messages');\n  }\n  const normalized = normalizeLocaleInput(input);\n  const locale = normalized.locale ?? parent?.locale ?? enUS.locale;\n  const builtInMessages = isBuiltInLocale(locale)\n    ? BUILT_IN_LOCALES[locale].messages\n    : undefined;\n  let messages = mergeMonkeysLocaleMessages(\n    enUS.messages as MonkeysLocaleMessages,\n    builtInMessages,\n  );\n\n  if (parent && (!normalized.hasExplicitLocale || parent.locale === locale)) {\n    messages = mergeMonkeysLocaleMessages(messages, parent.messages);\n  }\n\n  messages = mergeMonkeysLocaleMessages(messages, normalized.messages);\n  messages = mergeMonkeysLocaleMessages(messages, override);\n\n  return { locale, messages };\n}\n","import {\n  createContext,\n  useContext,\n  useMemo,\n  type Context,\n} from 'react';\n\nimport type { AssetIconResolver, AssetImageResolver } from '../components/base/BaseAssetIcon';\nimport type { BaseAppearance } from '../components/base/types';\nimport type { DataExplorerAppearance } from '../components/data-explorer/types';\nimport {\n  defaultMonkeysLocale,\n  type MonkeysLocaleMessages,\n  type MonkeysResolvedLocale,\n} from '../locale';\nimport type { CompiledThemeTokens } from '../theme-system';\n\nexport type MonkeysDirection = 'ltr' | 'rtl';\n\nexport interface MonkeysEnvironment {\n  getDocument?: () => Document | null;\n  getWindow?: () => Window | null;\n}\n\nexport type MonkeysPortalContainer =\n  | Element\n  | null\n  | (() => Element | null);\n\nexport interface MonkeysPortalOptions {\n  container?: MonkeysPortalContainer;\n  disabled?: boolean;\n}\n\nexport type MonkeysLoadingStateVariant = 'spinner' | 'skeleton';\nexport type MonkeysEmptyStateVariant = 'default' | 'compact';\nexport type MonkeysStatusStateDensity = 'compact' | 'default' | 'comfortable';\n\nexport type MonkeysListFooterPaginationMode = 'auto' | 'pages' | 'compact';\nexport type MonkeysListFooterAlignment = 'start' | 'end' | 'space-between';\n\nexport interface MonkeysListFooterConfig {\n  showTotal?: boolean;\n  showPageSize?: boolean;\n  pageSizeOptions?: number[];\n  paginationMode?: MonkeysListFooterPaginationMode;\n  alignment?: MonkeysListFooterAlignment;\n  density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysStatusStatesConfig {\n  loading?: { variant?: MonkeysLoadingStateVariant };\n  empty?: { variant?: MonkeysEmptyStateVariant };\n  error?: { showRetry?: boolean };\n  permission?: { showRequestAccess?: boolean };\n  density?: MonkeysStatusStateDensity;\n}\n\nexport interface MonkeysComponentAttributes {\n  dir?: MonkeysDirection;\n  'data-monkeys-direction'?: MonkeysDirection;\n  'data-monkeys-locale'?: string;\n  'data-monkeys-theme'?: string;\n  'data-monkeys-theme-mode'?: string;\n}\n\ninterface MonkeysLocaleContextValue extends MonkeysResolvedLocale {\n  provided: boolean;\n}\n\ninterface MonkeysThemeContextValue {\n  provided: boolean;\n  resolvedTheme?: CompiledThemeTokens;\n  themeId?: string;\n  baseAppearance?: BaseAppearance;\n  dataExplorerAppearance?: DataExplorerAppearance;\n  statusStates?: MonkeysStatusStatesConfig;\n  listFooter?: MonkeysListFooterConfig;\n}\n\ninterface MonkeysDirectionContextValue {\n  provided: boolean;\n  direction?: MonkeysDirection;\n}\n\ninterface MonkeysEnvironmentContextValue {\n  provided: boolean;\n  environment: MonkeysEnvironment;\n  portal: MonkeysPortalOptions;\n  iconResolver?: AssetIconResolver;\n  imageResolver?: AssetImageResolver;\n}\n\nconst EMPTY_ENVIRONMENT = Object.freeze({}) satisfies MonkeysEnvironment;\nconst EMPTY_PORTAL = Object.freeze({}) satisfies MonkeysPortalOptions;\n\ninterface MonkeysProviderContexts {\n  locale: Context<MonkeysLocaleContextValue>;\n  theme: Context<MonkeysThemeContextValue>;\n  direction: Context<MonkeysDirectionContextValue>;\n  environment: Context<MonkeysEnvironmentContextValue>;\n}\n\n// Every bundled public entry contains this module. Keep only the Context\n// identities in a realm-wide registry so root, provider, and component\n// subpaths interoperate in both CJS and ESM builds. Provider values remain in\n// React trees, so SSR requests are isolated. Bump the contract key only when\n// these Context value shapes become intentionally incompatible.\nconst MONKEYS_PROVIDER_CONTEXTS_KEY = Symbol.for(\n  '@inf-monkeys-tech/monkeys-design/provider-context@1',\n);\n\ntype MonkeysProviderContextHost = typeof globalThis & {\n  [MONKEYS_PROVIDER_CONTEXTS_KEY]?: MonkeysProviderContexts;\n};\n\nfunction createMonkeysProviderContexts(): MonkeysProviderContexts {\n  return Object.freeze({\n    locale: createContext<MonkeysLocaleContextValue>({\n      ...defaultMonkeysLocale,\n      provided: false,\n    }),\n    theme: createContext<MonkeysThemeContextValue>({\n      provided: false,\n    }),\n    direction: createContext<MonkeysDirectionContextValue>({\n      provided: false,\n    }),\n    environment: createContext<MonkeysEnvironmentContextValue>({\n      provided: false,\n      environment: EMPTY_ENVIRONMENT,\n      portal: EMPTY_PORTAL,\n    }),\n  });\n}\n\nfunction getMonkeysProviderContexts(): MonkeysProviderContexts {\n  const host = globalThis as MonkeysProviderContextHost;\n  const existing = host[MONKEYS_PROVIDER_CONTEXTS_KEY];\n  if (existing) return existing;\n\n  const contexts = createMonkeysProviderContexts();\n  Object.defineProperty(host, MONKEYS_PROVIDER_CONTEXTS_KEY, {\n    value: contexts,\n    enumerable: false,\n    configurable: false,\n    writable: false,\n  });\n  return contexts;\n}\n\nconst providerContexts = getMonkeysProviderContexts();\n\nexport const MonkeysLocaleContext = providerContexts.locale;\n\nexport const MonkeysThemeContext = providerContexts.theme;\n\nexport const MonkeysDirectionContext = providerContexts.direction;\n\nexport const MonkeysEnvironmentContext = providerContexts.environment;\n\nfunction mergeAppearance<T extends { slots?: object; styles?: object }>(\n  inherited: T | undefined,\n  explicit: T | undefined,\n): T | undefined {\n  if (explicit === undefined) return inherited;\n  if (inherited === undefined) return explicit;\n\n  return {\n    ...inherited,\n    ...explicit,\n    slots:\n      inherited.slots || explicit.slots\n        ? { ...inherited.slots, ...explicit.slots }\n        : undefined,\n    styles:\n      inherited.styles || explicit.styles\n        ? { ...inherited.styles, ...explicit.styles }\n        : undefined,\n  };\n}\n\nexport function useMonkeysLocale() {\n  try {\n    const context = useContext(MonkeysLocaleContext);\n    return context ?? { ...defaultMonkeysLocale, provided: false };\n  } catch {\n    return { ...defaultMonkeysLocale, provided: false };\n  }\n}\n\nexport function useMonkeysLocaleMessages(): MonkeysLocaleMessages {\n  return useContext(MonkeysLocaleContext).messages;\n}\n\nexport function useMonkeysResolvedTheme() {\n  return useContext(MonkeysThemeContext).resolvedTheme;\n}\n\nexport function useMonkeysBaseAppearance(\n  explicit?: BaseAppearance,\n): BaseAppearance | undefined {\n  const inherited = useContext(MonkeysThemeContext).baseAppearance;\n  return useMemo(\n    () => mergeAppearance(inherited, explicit),\n    [explicit, inherited],\n  );\n}\n\nexport function useMonkeysDataExplorerAppearance(\n  explicit?: DataExplorerAppearance,\n): DataExplorerAppearance | undefined {\n  const inherited = useContext(MonkeysThemeContext).dataExplorerAppearance;\n  return useMemo(\n    () => mergeAppearance(inherited, explicit),\n    [explicit, inherited],\n  );\n}\n\nexport function useMonkeysStatusStates(): MonkeysStatusStatesConfig {\n  return useContext(MonkeysThemeContext).statusStates ?? {};\n}\n\nexport function useMonkeysListFooter(): MonkeysListFooterConfig {\n  return useContext(MonkeysThemeContext).listFooter ?? {};\n}\n\nexport function useMonkeysDirection() {\n  return useContext(MonkeysDirectionContext).direction;\n}\n\nexport function useMonkeysEnvironment() {\n  return useContext(MonkeysEnvironmentContext).environment;\n}\n\nexport function useMonkeysPortalOptions() {\n  return useContext(MonkeysEnvironmentContext).portal;\n}\n\nexport function useMonkeysComponentAttributes(): MonkeysComponentAttributes {\n  const locale = useContext(MonkeysLocaleContext);\n  const theme = useContext(MonkeysThemeContext);\n  const direction = useContext(MonkeysDirectionContext);\n  const providerActive = locale.provided || theme.provided || direction.provided;\n\n  return useMemo(\n    () =>\n      providerActive\n        ? {\n            dir: direction.direction,\n            'data-monkeys-direction': direction.direction,\n            'data-monkeys-locale': locale.locale,\n            'data-monkeys-theme': theme.themeId,\n            'data-monkeys-theme-mode': theme.resolvedTheme?.colorMode,\n          }\n        : {},\n    [\n      direction.direction,\n      locale.locale,\n      providerActive,\n      theme.resolvedTheme?.colorMode,\n      theme.themeId,\n    ],\n  );\n}\n\nexport function useMonkeysAssetIconResolver(): AssetIconResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).iconResolver;\n}\nexport function useMonkeysAssetImageResolver(): AssetImageResolver | undefined {\n  return useContext(MonkeysEnvironmentContext).imageResolver;\n}\n","import { useDataExplorerAppearance } from './appearanceContext';\nimport * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport type { DragEvent, ReactNode } from \"react\";\n\nimport { useMonkeysLocaleMessages } from '../../provider/context';\nimport { cn } from '../base/utils';\nimport {\n  getDataExplorerMenuItemToneClassName,\n  resolveDataExplorerAppearance,\n} from \"./theme\";\nimport type {\n  DataExplorerViewTreeAction,\n  DataExplorerViewTreeActionContext,\n  DataExplorerViewTreeGroup,\n  DataExplorerViewTreeNode,\n  DataExplorerViewTreeProps,\n  DataExplorerViewTreeReorderPayload,\n} from './types';\nimport { resolveDataExplorerValue } from './utils';\n\ntype TreeGroup<TGroupSource, TNodeSource, TContext> = DataExplorerViewTreeGroup<\n  TGroupSource,\n  TNodeSource,\n  TContext\n>;\n\ntype TreeNode<\n  TNodeSource,\n  TGroupSource = unknown,\n  TContext = unknown,\n> = DataExplorerViewTreeNode<TNodeSource, TGroupSource, TContext>;\n\ntype FlattenedNode<TNodeSource, TGroupSource, TContext> = {\n  node: TreeNode<TNodeSource, TGroupSource, TContext>;\n  group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n  parentId?: string;\n  index: number;\n};\n\nfunction ChevronIcon({ expanded }: { expanded: boolean }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className={cn(\n        \"h-3.5 w-3.5 transition-transform\",\n        expanded && \"rotate-90\",\n      )}\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <path d=\"m9 18 6-6-6-6\" />\n    </svg>\n  );\n}\n\nfunction MoreIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-4 w-4\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <circle cx=\"12\" cy=\"12\" r=\"1\" />\n      <circle cx=\"12\" cy=\"5\" r=\"1\" />\n      <circle cx=\"12\" cy=\"19\" r=\"1\" />\n    </svg>\n  );\n}\n\nfunction GripIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 24 24\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"none\"\n      stroke=\"currentColor\"\n      strokeLinecap=\"round\"\n      strokeLinejoin=\"round\"\n      strokeWidth=\"2\"\n    >\n      <circle cx=\"9\" cy=\"6\" r=\"1\" />\n      <circle cx=\"9\" cy=\"12\" r=\"1\" />\n      <circle cx=\"9\" cy=\"18\" r=\"1\" />\n      <circle cx=\"15\" cy=\"6\" r=\"1\" />\n      <circle cx=\"15\" cy=\"12\" r=\"1\" />\n      <circle cx=\"15\" cy=\"18\" r=\"1\" />\n    </svg>\n  );\n}\n\nfunction collectDefaultExpandedNodeIds<TNodeSource, TGroupSource, TContext>(\n  nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n  defaults: Set<string>,\n) {\n  for (const node of nodes ?? []) {\n    if (node.defaultExpanded) {\n      defaults.add(node.id);\n    }\n    collectDefaultExpandedNodeIds(node.children, defaults);\n  }\n}\n\nfunction buildDefaultNodeExpandedSet<TNodeSource, TGroupSource, TContext>(\n  groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n  defaultExpandedNodeIds: string[] | undefined,\n) {\n  const defaults = new Set(defaultExpandedNodeIds ?? []);\n  for (const group of groups) {\n    collectDefaultExpandedNodeIds(group.nodes, defaults);\n  }\n  return defaults;\n}\n\nfunction buildDefaultGroupExpandedSet<TNodeSource, TGroupSource, TContext>(\n  groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n  defaultExpandedGroupIds: string[] | undefined,\n) {\n  const defaults = new Set(defaultExpandedGroupIds ?? []);\n  for (const group of groups) {\n    if (group.hideHeader || group.defaultExpanded !== false) {\n      defaults.add(group.id);\n    }\n  }\n  return defaults;\n}\n\nfunction flattenNodes<TNodeSource, TGroupSource, TContext>(\n  nodes: Array<TreeNode<TNodeSource, TGroupSource, TContext>> | undefined,\n  group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n  parentId: string | undefined,\n  entries: Map<string, FlattenedNode<TNodeSource, TGroupSource, TContext>>,\n) {\n  for (const [index, node] of (nodes ?? []).entries()) {\n    entries.set(node.id, { node, group, parentId, index });\n    flattenNodes(node.children, group, node.id, entries);\n  }\n}\n\nfunction buildFlattenedNodeMap<TNodeSource, TGroupSource, TContext>(\n  groups: Array<TreeGroup<TGroupSource, TNodeSource, TContext>>,\n) {\n  const entries = new Map<\n    string,\n    FlattenedNode<TNodeSource, TGroupSource, TContext>\n  >();\n  for (const group of groups) {\n    flattenNodes(group.nodes, group, undefined, entries);\n  }\n  return entries;\n}\n\nfunction getNodeActions<TNodeSource, TGroupSource, TContext>(\n  node: TreeNode<TNodeSource, TGroupSource, TContext>,\n  globalActions:\n    | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n    | undefined,\n) {\n  return [\n    ...(globalActions ?? []),\n    ...((node.actions ?? []) as Array<\n      DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n    >),\n  ];\n}\n\nfunction getGroupActions<TNodeSource, TGroupSource, TContext>(\n  group: TreeGroup<TGroupSource, TNodeSource, TContext>,\n  globalActions:\n    | Array<DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>>\n    | undefined,\n) {\n  return [\n    ...(globalActions ?? []),\n    ...((group.actions ?? []) as Array<\n      DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n    >),\n  ];\n}\n\nexport function DataExplorerViewTree<\n  TNodeSource = unknown,\n  TGroupSource = unknown,\n  TContext = unknown,\n>({\n  groups,\n  nodes,\n  context,\n  selectedNodeId,\n  selectedGroupId,\n  expandedNodeIds,\n  defaultExpandedNodeIds,\n  expandedGroupIds,\n  defaultExpandedGroupIds,\n  resetExpansionKey,\n  nodeActions,\n  groupActions,\n  indentSize = 16,\n  indentOffset = 8,\n  actionIcon,\n  empty,\n  loading = false,\n  loadingNode,\n  error,\n  labels,\n  reorderMode = \"none\",\n  appearance,\n  className,\n  classNames,\n  onSelectNode,\n  onSelectGroup,\n  onExpandedNodeIdsChange,\n  onExpandedGroupIdsChange,\n  onAction,\n  onReorderNodes,\n}: DataExplorerViewTreeProps<TNodeSource, TGroupSource, TContext>) {\n  const internalLabels = useMonkeysLocaleMessages().dataExplorer.viewTree;\n  const theme = resolveDataExplorerAppearance(\n    useDataExplorerAppearance(appearance),\n  );\n  const actionLabel = labels?.actions ?? internalLabels.actions;\n  const expandLabel = labels?.expand ?? internalLabels.expand;\n  const collapseLabel = labels?.collapse ?? internalLabels.collapse;\n  const loadingContent =\n    loadingNode ?? labels?.loading ?? internalLabels.loading;\n  const emptyContent = empty ?? labels?.empty ?? internalLabels.empty;\n  const hasExplicitGroups = Array.isArray(groups);\n  const resolvedGroups = useMemo<\n    Array<TreeGroup<TGroupSource, TNodeSource, TContext>>\n  >(() => {\n    if (hasExplicitGroups) {\n      return groups;\n    }\n    return [\n      {\n        id: \"__root__\",\n        hideHeader: true,\n        defaultExpanded: true,\n        nodes: Array.isArray(nodes) ? nodes : [],\n      },\n    ];\n  }, [groups, hasExplicitGroups, nodes]);\n  const flattenedNodeMap = useMemo(\n    () => buildFlattenedNodeMap(resolvedGroups),\n    [resolvedGroups],\n  );\n  const [internalExpandedNodeIds, setInternalExpandedNodeIds] = useState(() =>\n    buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n  );\n  const [internalExpandedGroupIds, setInternalExpandedGroupIds] = useState(() =>\n    buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n  );\n  const [draggingNodeId, setDraggingNodeId] = useState<string | undefined>();\n  const [dragOverNodeId, setDragOverNodeId] = useState<string | undefined>();\n\n  useEffect(() => {\n    setInternalExpandedNodeIds(\n      buildDefaultNodeExpandedSet(resolvedGroups, defaultExpandedNodeIds),\n    );\n    setInternalExpandedGroupIds(\n      buildDefaultGroupExpandedSet(resolvedGroups, defaultExpandedGroupIds),\n    );\n  }, [defaultExpandedGroupIds, defaultExpandedNodeIds, resetExpansionKey]);\n\n  const resolvedExpandedNodeIds =\n    expandedNodeIds !== undefined\n      ? new Set(expandedNodeIds)\n      : internalExpandedNodeIds;\n  const resolvedExpandedGroupIds =\n    expandedGroupIds !== undefined\n      ? new Set(expandedGroupIds)\n      : internalExpandedGroupIds;\n\n  const setNodeExpanded = (nodeId: string, expanded: boolean) => {\n    const next = new Set(resolvedExpandedNodeIds);\n    if (expanded) {\n      next.add(nodeId);\n    } else {\n      next.delete(nodeId);\n    }\n    if (expandedNodeIds === undefined) {\n      setInternalExpandedNodeIds(next);\n    }\n    onExpandedNodeIdsChange?.([...next]);\n  };\n\n  const setGroupExpanded = (groupId: string, expanded: boolean) => {\n    const next = new Set(resolvedExpandedGroupIds);\n    if (expanded) {\n      next.add(groupId);\n    } else {\n      next.delete(groupId);\n    }\n    if (expandedGroupIds === undefined) {\n      setInternalExpandedGroupIds(next);\n    }\n    onExpandedGroupIdsChange?.([...next]);\n  };\n\n  const createActionContext = (\n    action: DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>,\n    target:\n      | {\n          type: \"node\";\n          node: TreeNode<TNodeSource, TGroupSource, TContext>;\n          group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        }\n      | {\n          type: \"group\";\n          group: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        },\n  ): DataExplorerViewTreeActionContext<TNodeSource, TGroupSource, TContext> =>\n    target.type === \"node\"\n      ? {\n          type: \"node\",\n          action,\n          node: target.node,\n          group: target.group,\n          context,\n        }\n      : {\n          type: \"group\",\n          action,\n          group: target.group,\n          context,\n        };\n\n  const renderActions = (\n    actions: Array<\n      DataExplorerViewTreeAction<TNodeSource, TGroupSource, TContext>\n    >,\n    target:\n      | {\n          type: \"node\";\n          node: TreeNode<TNodeSource, TGroupSource, TContext>;\n          group?: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        }\n      | {\n          type: \"group\";\n          group: TreeGroup<TGroupSource, TNodeSource, TContext>;\n        },\n  ) => {\n    const visibleActions = actions.filter((action) => {\n      const payload = createActionContext(action, target);\n      return resolveDataExplorerValue(action.visible, payload) ?? true;\n    });\n    if (visibleActions.length === 0) return null;\n\n    return (\n      <DropdownMenu.Root>\n        <DropdownMenu.Trigger asChild>\n          <button\n            type=\"button\"\n            title={actionLabel}\n            aria-label={actionLabel}\n            className={cn(\n              theme.slots.menuTrigger,\n              target.type === \"group\"\n                ? theme.slots.treeGroupActions\n                : theme.slots.treeNodeActions,\n              target.type === \"group\"\n                ? classNames?.groupActions\n                : cn(classNames?.nodeActions, classNames?.itemActions),\n            )}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {actionIcon ?? <MoreIcon />}\n          </button>\n        </DropdownMenu.Trigger>\n        <DropdownMenu.Portal>\n          <DropdownMenu.Content\n            align=\"end\"\n            sideOffset={6}\n            className={cn(theme.slots.menuContent, classNames?.menuContent)}\n            style={theme.styles.menuContent}\n            onClick={(event) => event.stopPropagation()}\n          >\n            {visibleActions.map((action) => {\n              const payload = createActionContext(action, target);\n              const disabled =\n                (resolveDataExplorerValue(action.disabled, payload) ?? false) ||\n                (resolveDataExplorerValue(action.loading, payload) ?? false);\n              const active =\n                resolveDataExplorerValue(action.active, payload) ?? false;\n\n              if (action.render) {\n                return <div key={action.id}>{action.render(payload)}</div>;\n              }\n\n              return (\n                <div key={action.id}>\n                  {action.separatorBefore ? (\n                    <DropdownMenu.Separator\n                      className={theme.slots.menuSeparator}\n                    />\n                  ) : null}\n                  <DropdownMenu.Item\n                    title={action.title}\n                    disabled={disabled}\n                    className={cn(\n                      theme.slots.menuItem,\n                      getDataExplorerMenuItemToneClassName(theme, action.tone),\n                      active && \"bg-accent text-accent-foreground\",\n                      classNames?.menuItem,\n                    )}\n                    style={theme.styles.menuItem}\n                    onSelect={() => {\n                      if (disabled) return;\n                      void action.onAction?.(payload);\n                      void onAction?.(payload);\n                    }}\n                  >\n                    {action.icon ? (\n                      <span className={theme.slots.menuItemIcon}>\n                        {action.icon}\n                      </span>\n                    ) : null}\n                    <span className={theme.slots.menuItemLabel}>\n                      {action.label}\n                    </span>\n                  </DropdownMenu.Item>\n                  {action.separatorAfter ? (\n                    <DropdownMenu.Separator\n                      className={theme.slots.menuSeparator}\n                    />\n                  ) : null}\n                </div>\n              );\n            })}\n          </DropdownMenu.Content>\n        </DropdownMenu.Portal>\n      </DropdownMenu.Root>\n    );\n  };\n\n  const handleDrop = (\n    event: DragEvent<HTMLElement>,\n    overNode: TreeNode<TNodeSource, TGroupSource, TContext>,\n  ) => {\n    event.preventDefault();\n    const activeNodeId =\n      draggingNodeId ||\n      event.dataTransfer.getData(\"application/x-data-explorer-node\");\n    if (!activeNodeId || activeNodeId === overNode.id || !onReorderNodes) {\n      setDraggingNodeId(undefined);\n      setDragOverNodeId(undefined);\n      return;\n    }\n\n    const activeEntry = flattenedNodeMap.get(activeNodeId);\n    const overEntry = flattenedNodeMap.get(overNode.id);\n    if (!activeEntry || !overEntry) {\n      setDraggingNodeId(undefined);\n      setDragOverNodeId(undefined);\n      return;\n    }\n\n    const sameParent =\n      activeEntry.parentId === overEntry.parentId &&\n      activeEntry.group?.id === overEntry.group?.id;\n    if (reorderMode === \"same-parent\" && !sameParent) {\n      setDraggingNodeId(undefined);\n      setDragOverNodeId(undefined);\n      return;\n    }\n\n    const payload: DataExplorerViewTreeReorderPayload<\n      TNodeSource,\n      TGroupSource,\n      TContext\n    > = {\n      activeNode: activeEntry.node,\n      overNode: overEntry.node,\n      activeGroup: activeEntry.group,\n      overGroup: overEntry.group,\n      activeParentId: activeEntry.parentId,\n      overParentId: overEntry.parentId,\n      oldIndex: activeEntry.index,\n      newIndex: overEntry.index,\n      sameParent,\n      context,\n    };\n    void onReorderNodes(payload);\n    setDraggingNodeId(undefined);\n    setDragOverNodeId(undefined);\n  };\n\n  const renderNode = (\n    node: TreeNode<TNodeSource, TGroupSource, TContext>,\n    group: TreeGroup<TGroupSource, TNodeSource, TContext> | undefined,\n    depth: number,\n  ): ReactNode => {\n    const childNodes = Array.isArray(node.children) ? node.children : [];\n    const hasChildren = childNodes.length > 0;\n    const isExpanded =\n      node.collapsible === false || resolvedExpandedNodeIds.has(node.id);\n    const isSelected = selectedNodeId === node.id;\n    const isSelectable = node.selectable !== false && !node.disabled;\n    const isReorderable =\n      reorderMode !== \"none\" && !!onReorderNodes && node.reorderable !== false;\n    const isDragging = draggingNodeId === node.id;\n    const isDragOver = dragOverNodeId === node.id && draggingNodeId !== node.id;\n    const actions = getNodeActions(node, nodeActions);\n\n    return (\n      <div\n        key={node.id}\n        data-data-explorer-entry=\"node\"\n        data-data-explorer-node-id={node.id}\n        data-data-explorer-group-id={group?.id}\n        className={cn(\n          theme.slots.treeNode,\n          classNames?.node,\n          classNames?.item,\n          node.className,\n        )}\n        onDragOver={(event) => {\n          if (!draggingNodeId || !isReorderable) return;\n          event.preventDefault();\n          setDragOverNodeId(node.id);\n        }}\n        onDragLeave={() => {\n          if (dragOverNodeId === node.id) {\n            setDragOverNodeId(undefined);\n          }\n        }}\n        onDrop={(event) => handleDrop(event, node)}\n      >\n        <div\n          className={cn(\n            theme.slots.treeNodeButton,\n            isSelected && theme.slots.treeNodeSelected,\n            node.disabled && theme.slots.treeNodeDisabled,\n            isDragging && theme.slots.treeNodeDragging,\n            isDragOver && \"ring-1 ring-primary/30\",\n            isSelected && classNames?.itemSelected,\n            isSelected && classNames?.nodeSelected,\n            node.disabled && classNames?.nodeDisabled,\n            isDragging && classNames?.nodeDragging,\n            classNames?.nodeButton,\n            classNames?.itemButton,\n          )}\n          style={{\n            paddingLeft: `calc(${(node.indentLevel ?? depth) * indentSize + indentOffset}px + var(--data-explorer-tree-group-indent, 0px))`,\n          }}\n          role=\"treeitem\"\n          aria-selected={isSelected || undefined}\n          aria-disabled={node.disabled || undefined}\n          aria-expanded={hasChildren ? isExpanded : undefined}\n          aria-label={node.ariaLabel}\n          tabIndex={isSelectable ? 0 : -1}\n          onClick={() => {\n            if (!isSelectable) return;\n            onSelectNode?.(node, context);\n          }}\n          onKeyDown={(event) => {\n            if (event.target !== event.currentTarget) return;\n            if (!isSelectable) return;\n            if (event.key !== \"Enter\" && event.key !== \" \") return;\n            event.preventDefault();\n            onSelectNode?.(node, context);\n          }}\n        >\n          {isReorderable ? (\n            <span\n              draggable\n              className={cn(\n                theme.slots.treeNodeDragHandle,\n                classNames?.nodeDragHandle,\n              )}\n              onClick={(event) => event.stopPropagation()}\n              onDragStart={(event) => {\n                event.stopPropagation();\n                event.dataTransfer.effectAllowed = \"move\";\n                event.dataTransfer.setData(\n                  \"application/x-data-explorer-node\",\n                  node.id,\n                );\n                setDraggingNodeId(node.id);\n              }}\n              onDragEnd={() => {\n                setDraggingNodeId(undefined);\n                setDragOverNodeId(undefined);\n              }}\n            >\n              <GripIcon />\n            </span>\n          ) : null}\n          {hasChildren ? (\n            <button\n              type=\"button\"\n              className={cn(\n                theme.slots.treeNodeToggle,\n                classNames?.nodeToggle,\n                classNames?.expander,\n              )}\n              aria-label={isExpanded ? collapseLabel : expandLabel}\n              onClick={(event) => {\n                event.stopPropagation();\n                setNodeExpanded(node.id, !isExpanded);\n              }}\n            >\n              <ChevronIcon expanded={isExpanded} />\n            </button>\n          ) : (\n            <span\n              className={cn(theme.slots.treeNodeToggle, classNames?.nodeToggle)}\n            />\n          )}\n          {node.icon ? (\n            <span\n              className={cn(\n                theme.slots.treeNodeIcon,\n                classNames?.nodeIcon,\n                classNames?.itemIcon,\n              )}\n            >\n              {node.icon}\n            </span>\n          ) : null}\n          <span className=\"flex min-w-0 flex-1 flex-col\">\n            <span\n              className={cn(\n                theme.slots.treeNodeLabel,\n                classNames?.nodeLabel,\n                classNames?.itemLabel,\n              )}\n            >\n              {node.label}\n            </span>\n            {node.description ? (\n              <span\n                className={cn(\n                  theme.slots.treeNodeDescription,\n                  classNames?.nodeDescription,\n                )}\n              >\n                {node.description}\n              </span>\n            ) : null}\n          </span>\n          {node.meta ? (\n            <span\n              className={cn(theme.slots.treeNodeMeta, classNames?.nodeMeta)}\n            >\n              {node.meta}\n            </span>\n          ) : null}\n          {node.badge ? (\n            <span\n              className={cn(theme.slots.treeNodeBadge, classNames?.nodeBadge)}\n            >\n              {node.badge}\n            </span>\n          ) : null}\n          {renderActions(actions, { type: \"node\", node, group })}\n        </div>\n        {hasChildren && isExpanded ? (\n          <div\n            className={cn(\n              theme.slots.treeNodeChildren,\n              classNames?.nodeChildren,\n              classNames?.list,\n            )}\n          >\n            {childNodes.map((child) => renderNode(child, group, depth + 1))}\n          </div>\n        ) : null}\n      </div>\n    );\n  };\n\n  const renderPlaceholder = (\n    content: ReactNode,\n    slotClassName: string,\n    classNameOverride: string | undefined,\n  ) => <div className={cn(slotClassName, classNameOverride)}>{content}</div>;\n\n  if (loading) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        {renderPlaceholder(\n          loadingContent,\n          theme.slots.treeLoading,\n          classNames?.loading,\n        )}\n      </div>\n    );\n  }\n\n  if (error) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        {renderPlaceholder(\n          error ?? labels?.error,\n          theme.slots.treeError,\n          classNames?.error,\n        )}\n      </div>\n    );\n  }\n\n  const hasAnyNodes = resolvedGroups.some(\n    (group) => (group.nodes ?? []).length > 0,\n  );\n  const hasAnyGroupState = resolvedGroups.some(\n    (group) => group.status === \"loading\" || group.error,\n  );\n  const shouldRenderGlobalEmpty =\n    !hasAnyNodes &&\n    !hasAnyGroupState &&\n    (!hasExplicitGroups || resolvedGroups.length === 0);\n  if (shouldRenderGlobalEmpty) {\n    return (\n      <div className={cn(theme.slots.treeRoot, classNames?.root, className)}>\n        {renderPlaceholder(\n          emptyContent,\n          theme.slots.treeEmpty,\n          classNames?.empty,\n        )}\n      </div>\n    );\n  }\n\n  return (\n    <div\n      className={cn(theme.slots.treeRoot, classNames?.root, className)}\n      role={hasAnyNodes || resolvedGroups.some((group) => !group.hideHeader) ? 'tree' : undefined}\n    >\n      {resolvedGroups.map((group) => {\n        const groupExpanded =\n          group.hideHeader ||\n          group.collapsible === false ||\n          resolvedExpandedGroupIds.has(group.id);\n        const groupNodeCount = group.nodes?.length ?? 0;\n        const actions = getGroupActions(group, groupActions);\n        const groupSelected = selectedGroupId === group.id;\n        const groupCollapsible = group.collapsible !== false;\n        return (\n          <section\n            key={group.id}\n            data-data-explorer-entry=\"group\"\n            data-data-explorer-group-id={group.id}\n            className={cn(\n              theme.slots.treeGroup,\n              classNames?.group,\n              group.className,\n            )}\n          >\n            {!group.hideHeader ? (\n              <div\n                role=\"treeitem\"\n                aria-label={typeof group.label === 'string' ? group.label : undefined}\n                aria-selected={group.selectable ? groupSelected : undefined}\n                aria-expanded={groupCollapsible ? groupExpanded : undefined}\n                className={cn(\n                  theme.slots.treeGroupHeader,\n                  theme.slots.treeGroupHeaderButton,\n                  groupSelected && theme.slots.treeNodeSelected,\n                  classNames?.groupHeader,\n                  classNames?.groupHeaderButton,\n                  groupSelected && classNames?.itemSelected,\n                )}\n              >\n                <button\n                  type=\"button\"\n                  className={cn(\n                    \"flex min-w-0 flex-1 items-center gap-2 text-left outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n                    classNames?.groupLabel,\n                  )}\n                  aria-pressed={group.selectable ? groupSelected : undefined}\n                  aria-expanded={\n                    !group.selectable && groupCollapsible\n                      ? groupExpanded\n                      : undefined\n                  }\n                  onClick={() => {\n                    if (group.selectable) {\n                      onSelectGroup?.(group, context);\n                      return;\n                    }\n                    if (groupCollapsible)\n                      setGroupExpanded(group.id, !groupExpanded);\n                  }}\n                >\n                  {group.icon ? (\n                    <span\n                      className={cn(\n                        theme.slots.treeNodeIcon,\n                        classNames?.nodeIcon,\n                        classNames?.itemIcon,\n                      )}\n                    >\n                      {group.icon}\n                    </span>\n                  ) : null}\n                  <span className=\"flex min-w-0 flex-1 flex-col\">\n                    {group.label ? (\n                      <span\n                        className={cn(\n                          theme.slots.treeNodeLabel,\n                          classNames?.nodeLabel,\n                          classNames?.itemLabel,\n                        )}\n                      >\n                        {group.label}\n                      </span>\n                    ) : null}\n                    {group.description ? (\n                      <span\n                        className={cn(\n                          theme.slots.treeNodeDescription,\n                          classNames?.nodeDescription,\n                        )}\n                      >\n                        {group.description}\n                      </span>\n                    ) : null}\n                  </span>\n                  {group.meta ? (\n                    <span\n                      className={cn(\n                        theme.slots.treeNodeMeta,\n                        classNames?.nodeMeta,\n                      )}\n                    >\n                      {group.meta}\n                    </span>\n                  ) : null}\n                  {group.badge ? (\n                    <span\n                      className={cn(\n                        theme.slots.treeNodeBadge,\n                        classNames?.nodeBadge,\n                      )}\n                    >\n                      {group.badge}\n                    </span>\n                  ) : null}\n                </button>\n                {groupCollapsible ? (\n                  <button\n                    type=\"button\"\n                    className={cn(\n                      theme.slots.treeNodeToggle,\n                      classNames?.expander,\n                    )}\n                    aria-label={groupExpanded ? collapseLabel : expandLabel}\n                    aria-expanded={groupExpanded}\n                    onClick={() => setGroupExpanded(group.id, !groupExpanded)}\n                  >\n                    <ChevronIcon expanded={groupExpanded} />\n                  </button>\n                ) : (\n                  <span className={cn(theme.slots.treeNodeToggle, classNames?.expander)} />\n                )}\n                {renderActions(actions, { type: \"group\", group })}\n              </div>\n            ) : null}\n            {groupExpanded ? (\n              <div\n                role=\"group\"\n                className={cn(\n                  theme.slots.treeGroupContent,\n                  classNames?.groupContent,\n                  classNames?.list,\n                )}\n              >\n                {group.loading || group.status === \"loading\"\n                  ? renderPlaceholder(\n                      loadingContent,\n                      theme.slots.treeLoading,\n                      classNames?.loading,\n                    )\n                  : group.error || group.status === \"error\"\n                    ? renderPlaceholder(\n                        group.error ?? labels?.error ?? internalLabels.error,\n                        theme.slots.treeError,\n                        classNames?.error,\n                      )\n                    : groupNodeCount > 0\n                      ? group.nodes?.map((node) => renderNode(node, group, 0))\n                      : renderPlaceholder(\n                          group.empty ?? emptyContent,\n                          theme.slots.treeEmpty,\n                          classNames?.empty,\n                        )}\n              </div>\n            ) : null}\n          </section>\n        );\n      })}\n    </div>\n  );\n}\n","import type { CSSProperties } from \"react\";\n\nimport { cn } from \"../base/utils\";\nimport type { DataExplorerViewTreeClassNames } from \"../data-explorer\";\nimport type { NavigationSidebarActiveVariant } from \"./types\";\n\nexport const unifiedRow =\n  \"gap-2 rounded-[var(--radius)] border border-transparent text-sm font-medium motion-reduce:transition-none\";\nexport const unifiedIcon =\n  \"size-[var(--monkeys-component-navigation-sidebar-icon-size,1.125rem)] shrink-0 text-inherit [&_svg]:size-full\";\nexport const unifiedInactive =\n  \"text-foreground hover:border-transparent hover:bg-[var(--navigation-internal-hover-background)] hover:text-[var(--navigation-internal-hover-foreground)]\";\nexport const unifiedSelected =\n  \"border-[var(--navigation-internal-selected-border)] bg-[var(--navigation-internal-selected-background)] text-[var(--navigation-internal-selected-foreground)] hover:border-[var(--navigation-internal-selected-border)] hover:bg-[var(--navigation-internal-selected-background)] hover:text-[var(--navigation-internal-selected-foreground)]\";\nexport const unifiedThemeDefaults =\n  \"[--navigation-internal-theme-selected-background:color-mix(in_srgb,hsl(var(--monkeys-color-primary,var(--primary)))_10%,transparent)] [--navigation-internal-theme-selected-foreground:hsl(var(--monkeys-color-primary,var(--primary)))] dark:[--navigation-internal-theme-selected-background:hsl(var(--monkeys-color-accent,var(--accent)))] dark:[--navigation-internal-theme-selected-foreground:hsl(var(--monkeys-color-foreground,var(--foreground)))]\";\n\nexport function unifiedStyle(\n  activeVariant?: NavigationSidebarActiveVariant,\n): CSSProperties {\n  const background = {\n    muted: \"hsl(var(--monkeys-color-accent,var(--accent)))\",\n    soft: \"color-mix(in srgb,hsl(var(--monkeys-color-primary,var(--primary))) 10%,transparent)\",\n    solid: \"hsl(var(--monkeys-color-primary,var(--primary)))\",\n    outline: \"hsl(var(--monkeys-color-background,var(--background)))\",\n  }[activeVariant ?? \"muted\"];\n  const foreground =\n    activeVariant === \"solid\"\n      ? \"hsl(var(--monkeys-color-primary-foreground,var(--primary-foreground)))\"\n      : \"hsl(var(--monkeys-color-foreground,var(--foreground)))\";\n  const border =\n    activeVariant === undefined || activeVariant === \"muted\"\n      ? \"transparent\"\n      : activeVariant === \"soft\"\n        ? \"color-mix(in srgb,hsl(var(--monkeys-color-primary,var(--primary))) 25%,transparent)\"\n        : activeVariant === \"outline\"\n          ? \"color-mix(in srgb,hsl(var(--monkeys-color-primary,var(--primary))) 55%,transparent)\"\n          : \"hsl(var(--monkeys-color-primary,var(--primary)))\";\n\n  return {\n    \"--navigation-internal-default-selected-background\": activeVariant === undefined\n      ? \"var(--navigation-internal-theme-selected-background)\"\n      : background,\n    \"--navigation-internal-default-selected-foreground\": activeVariant === undefined\n      ? \"var(--navigation-internal-theme-selected-foreground)\"\n      : foreground,\n    \"--navigation-internal-selected-background\":\n      \"var(--monkeys-component-navigation-sidebar-row-selected-background,var(--navigation-internal-default-selected-background))\",\n    \"--navigation-internal-selected-foreground\":\n      \"var(--monkeys-component-navigation-sidebar-row-selected-foreground,var(--navigation-internal-default-selected-foreground))\",\n    \"--navigation-internal-selected-border\": `var(--monkeys-component-navigation-sidebar-row-selected-border,${border})`,\n    \"--navigation-internal-hover-background\":\n      \"var(--monkeys-component-navigation-sidebar-row-hover-background,color-mix(in srgb,hsl(var(--monkeys-color-accent,var(--accent))) 65%,transparent))\",\n    \"--navigation-internal-hover-foreground\":\n      \"var(--monkeys-component-navigation-sidebar-row-hover-foreground,hsl(var(--monkeys-color-foreground,var(--foreground))))\",\n  } as CSSProperties;\n}\n\n/** Tree-local fallbacks preserve existing theme overrides without changing route styles. */\nconst treeStateVariables =\n  \"[--navigation-internal-selected-background:var(--monkeys-component-navigation-sidebar-row-selected-background,var(--monkeys-component-navigation-sidebar-tree-row-selected-background,var(--navigation-internal-default-selected-background)))] [--navigation-internal-selected-foreground:var(--monkeys-component-navigation-sidebar-row-selected-foreground,var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,var(--navigation-internal-default-selected-foreground)))] [--navigation-internal-hover-background:var(--monkeys-component-navigation-sidebar-row-hover-background,var(--monkeys-component-navigation-sidebar-tree-row-hover-background,color-mix(in_srgb,hsl(var(--monkeys-color-accent,var(--accent)))_65%,transparent)))] [--navigation-internal-hover-foreground:var(--monkeys-component-navigation-sidebar-row-hover-foreground,var(--monkeys-component-navigation-sidebar-tree-row-hover-foreground,hsl(var(--monkeys-color-foreground,var(--foreground)))))]\";\n\nconst selectedTreeNode =\n  \"aria-selected:border-[var(--navigation-internal-selected-border)] aria-selected:bg-[var(--navigation-internal-selected-background)] aria-selected:text-[var(--navigation-internal-selected-foreground)] aria-selected:hover:border-[var(--navigation-internal-selected-border)] aria-selected:hover:bg-[var(--navigation-internal-selected-background)] aria-selected:hover:text-[var(--navigation-internal-selected-foreground)]\";\nconst nestedControl =\n  \"rounded-[var(--monkeys-component-navigation-sidebar-action-radius,0.25rem)] text-inherit hover:bg-foreground/10 hover:text-inherit focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\";\n\nexport function unifiedTreeClassNames(\n  height: string,\n  padding: string,\n  overrides: DataExplorerViewTreeClassNames = {},\n): DataExplorerViewTreeClassNames {\n  const row = cn(unifiedRow, height, padding, unifiedInactive);\n  return {\n    ...overrides,\n    root: cn(treeStateVariables, \"space-y-0.5\", overrides.root),\n    group: cn(\n      \"space-y-0.5\",\n      // Indent row contents, keeping guide-free hover and selection full width.\n      \"[&>[role=treeitem]+[role=group]]:[--data-explorer-tree-group-indent:var(--monkeys-component-navigation-sidebar-tree-group-indent,1rem)]\",\n      overrides.group,\n    ),\n    groupHeaderButton: cn(\"h-auto\", row, overrides.groupHeaderButton),\n    nodeButton: cn(row, selectedTreeNode, overrides.nodeButton),\n    itemSelected: cn(unifiedSelected, overrides.itemSelected),\n    nodeIcon: cn(\n      unifiedIcon,\n      \"group-hover/tree-node:text-inherit\",\n      overrides.nodeIcon,\n    ),\n    nodeLabel: cn(\"font-medium\", overrides.nodeLabel),\n    nodeDescription: cn(\"text-inherit\", overrides.nodeDescription),\n    nodeDisabled: cn(\"opacity-50\", overrides.nodeDisabled),\n    groupActions: cn(\n      nestedControl,\n      \"order-2 size-5 p-0 group-focus-within/tree-group:opacity-100\",\n      overrides.groupActions,\n    ),\n    nodeActions: cn(\n      nestedControl,\n      \"order-2 size-5 p-0 group-focus-within/tree-node:opacity-100\",\n      overrides.nodeActions,\n    ),\n    nodeToggle: cn(nestedControl, \"order-1 empty:hidden\", overrides.nodeToggle),\n    expander: cn(nestedControl, \"order-1 empty:hidden\", overrides.expander),\n    nodeDragHandle: cn(nestedControl, overrides.nodeDragHandle),\n  };\n}\n","import * as DropdownMenu from \"@radix-ui/react-dropdown-menu\";\nimport {\n  Fragment,\n  forwardRef,\n  useCallback,\n  useEffect,\n  useId,\n  useMemo,\n  useRef,\n  useState,\n  type ElementType,\n  type ForwardedRef,\n  type KeyboardEvent,\n  type MouseEvent,\n  type MutableRefObject,\n  type PointerEvent,\n  type ReactElement,\n  type ReactNode,\n  type RefAttributes,\n} from \"react\";\n\nimport { cn, hasRenderableNode } from \"../base/utils\";\nimport {\n  DataExplorerViewTree,\n  type DataExplorerViewTreeClassNames,\n} from \"../data-explorer\";\nimport type {\n  NavigationSidebarActiveVariant,\n  NavigationSidebarAppearance,\n  NavigationSidebarCatalogItem,\n  NavigationSidebarCatalogProps,\n  NavigationSidebarCatalogSection,\n  NavigationSidebarClassNames,\n  NavigationSidebarCommonProps,\n  NavigationSidebarDisclosureRouteItem,\n  NavigationSidebarProps,\n  NavigationSidebarRouteChild,\n  NavigationSidebarRouteItem,\n  NavigationSidebarRouteProps,\n  NavigationSidebarStorage,\n  NavigationSidebarTreeProps,\n} from \"./types\";\nimport {\n  unifiedIcon,\n  unifiedInactive,\n  unifiedRow,\n  unifiedSelected,\n  unifiedStyle,\n  unifiedThemeDefaults,\n  unifiedTreeClassNames,\n} from \"./unified-appearance\";\n\ninterface LayoutBounds {\n  defaultWidth: number;\n  minWidth: number;\n  maxWidth: number;\n  collapsedWidth: number;\n  collapseThreshold: number;\n}\n\ninterface StoredLayout {\n  collapsed: boolean;\n  width: number;\n}\n\nfunction CollapseIcon({ collapsed }: { collapsed: boolean }) {\n  return (\n    <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n      <path\n        d={\n          collapsed\n            ? \"M4 4.5h12M4 15.5h12M5 7.5 7.5 10 5 12.5M15 7.5 12.5 10l2.5 2.5\"\n            : \"M4 4.5h12M4 15.5h12M7.5 7.5 5 10l2.5 2.5M12.5 7.5 15 10l-2.5 2.5\"\n        }\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction SearchIcon() {\n  return (\n    <svg aria-hidden=\"true\" viewBox=\"0 0 20 20\" className=\"h-4 w-4\" fill=\"none\">\n      <circle cx=\"8.5\" cy=\"8.5\" r=\"5\" stroke=\"currentColor\" strokeWidth=\"1.6\" />\n      <path\n        d=\"m12.2 12.2 3.3 3.3\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction ClearIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 20 20\"\n      className=\"h-3.5 w-3.5\"\n      fill=\"none\"\n    >\n      <path\n        d=\"m6 6 8 8m0-8-8 8\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction MoreIcon() {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 20 20\"\n      className=\"h-4 w-4\"\n      fill=\"currentColor\"\n    >\n      <circle cx=\"5\" cy=\"10\" r=\"1.2\" />\n      <circle cx=\"10\" cy=\"10\" r=\"1.2\" />\n      <circle cx=\"15\" cy=\"10\" r=\"1.2\" />\n    </svg>\n  );\n}\n\nfunction DisclosureIcon({ expanded }: { expanded: boolean }) {\n  return (\n    <svg\n      aria-hidden=\"true\"\n      viewBox=\"0 0 20 20\"\n      className={cn(\n        \"h-4 w-4 transition-transform motion-reduce:transition-none\",\n        expanded && \"rotate-180\",\n      )}\n      fill=\"none\"\n    >\n      <path\n        d=\"m6 8 4 4 4-4\"\n        stroke=\"currentColor\"\n        strokeWidth=\"1.6\"\n        strokeLinecap=\"round\"\n        strokeLinejoin=\"round\"\n      />\n    </svg>\n  );\n}\n\nfunction assignRef<T>(ref: ForwardedRef<T>, node: T | null) {\n  if (typeof ref === \"function\") {\n    ref(node);\n  } else if (ref) {\n    (ref as MutableRefObject<T | null>).current = node;\n  }\n}\n\nfunction requireFiniteNumber(name: string, value: number) {\n  if (!Number.isFinite(value)) {\n    throw new RangeError(`NavigationSidebar ${name} must be a finite number.`);\n  }\n}\n\nfunction resolveLayoutBounds(\n  props: NavigationSidebarCommonProps,\n): LayoutBounds {\n  const minWidth = props.minWidth ?? 180;\n  const maxWidth = props.maxWidth ?? 420;\n  const defaultWidth = props.defaultWidth ?? 256;\n  const collapsedWidth = props.collapsedWidth ?? 60;\n  const collapseThreshold = props.collapseThreshold ?? 140;\n\n  requireFiniteNumber(\"minWidth\", minWidth);\n  requireFiniteNumber(\"maxWidth\", maxWidth);\n  requireFiniteNumber(\"defaultWidth\", defaultWidth);\n  requireFiniteNumber(\"collapsedWidth\", collapsedWidth);\n  requireFiniteNumber(\"collapseThreshold\", collapseThreshold);\n\n  if (minWidth <= 0)\n    throw new RangeError(\n      \"NavigationSidebar minWidth must be greater than zero.\",\n    );\n  if (maxWidth < minWidth)\n    throw new RangeError(\n      \"NavigationSidebar maxWidth must be greater than or equal to minWidth.\",\n    );\n  if (collapsedWidth < 0)\n    throw new RangeError(\n      \"NavigationSidebar collapsedWidth cannot be negative.\",\n    );\n  if (collapseThreshold < 0)\n    throw new RangeError(\n      \"NavigationSidebar collapseThreshold cannot be negative.\",\n    );\n\n  return {\n    defaultWidth,\n    minWidth,\n    maxWidth,\n    collapsedWidth,\n    collapseThreshold,\n  };\n}\n\nfunction clampWidth(\n  width: number,\n  bounds: Pick<LayoutBounds, \"minWidth\" | \"maxWidth\">,\n) {\n  return Math.min(Math.max(width, bounds.minWidth), bounds.maxWidth);\n}\n\nfunction reportStorageError(\n  error: unknown,\n  onStorageError: ((error: unknown) => void) | undefined,\n) {\n  if (onStorageError) {\n    onStorageError(error);\n    return;\n  }\n  if (typeof console !== \"undefined\") {\n    console.warn(\"NavigationSidebar could not persist layout state.\", error);\n  }\n}\n\nfunction resolveStorage(storage: NavigationSidebarStorage | undefined) {\n  if (storage) return storage;\n  if (typeof window === \"undefined\") return undefined;\n  return window.localStorage;\n}\n\nfunction readStoredLayout(\n  props: NavigationSidebarCommonProps,\n  bounds: LayoutBounds,\n): StoredLayout {\n  const fallback = {\n    collapsed: props.defaultCollapsed ?? false,\n    width: clampWidth(bounds.defaultWidth, bounds),\n  };\n  if (!props.storageKey) return fallback;\n\n  const storage = resolveStorage(props.storage);\n  if (!storage) return fallback;\n\n  try {\n    const rawValue = storage.getItem(props.storageKey);\n    if (!rawValue) return fallback;\n    const parsedValue = JSON.parse(rawValue) as Partial<StoredLayout>;\n    return {\n      collapsed:\n        typeof parsedValue.collapsed === \"boolean\"\n          ? parsedValue.collapsed\n          : fallback.collapsed,\n      width:\n        typeof parsedValue.width === \"number\" &&\n        Number.isFinite(parsedValue.width)\n          ? clampWidth(parsedValue.width, bounds)\n          : fallback.width,\n    };\n  } catch (error) {\n    reportStorageError(error, props.onStorageError);\n    return fallback;\n  }\n}\n\nfunction getNodeTitle(label: ReactNode, explicitTitle: string | undefined) {\n  if (explicitTitle) return explicitTitle;\n  return typeof label === \"string\" ? label : undefined;\n}\n\nfunction activeVariantClassName(activeVariant: NavigationSidebarActiveVariant) {\n  if (activeVariant === \"solid\")\n    return \"border-primary bg-primary text-primary-foreground shadow-sm\";\n  if (activeVariant === \"outline\")\n    return \"border-primary/55 bg-background text-foreground ring-1 ring-primary/20\";\n  if (activeVariant === \"muted\")\n    return \"border-transparent bg-muted text-foreground\";\n  return \"border-primary/25 bg-primary/10 text-foreground\";\n}\n\nfunction resolveAppearance(\n  appearance: NavigationSidebarAppearance | undefined,\n) {\n  if (appearance?.preset !== undefined && appearance.preset !== \"unified\") {\n    throw new TypeError(\n      `Unknown NavigationSidebar preset \"${appearance.preset}\". Supported preset: unified.`,\n    );\n  }\n  const unified = appearance?.preset === \"unified\";\n  const density = appearance?.density ?? (unified ? \"compact\" : \"default\");\n  const surface = appearance?.surface ?? \"panel\";\n  const activeVariant =\n    appearance?.activeVariant ?? (unified ? \"muted\" : \"soft\");\n  return {\n    unified,\n    density,\n    surface,\n    activeVariant,\n    selected: unified ? unifiedSelected : activeVariantClassName(activeVariant),\n    inactive: unified\n      ? unifiedInactive\n      : \"text-muted-foreground hover:border-border/70 hover:bg-muted/60 hover:text-foreground\",\n    root: cn(\n      surface === \"plain\" && \"border-transparent bg-transparent shadow-none\",\n      surface === \"panel\" &&\n        \"border-border/70 bg-card text-card-foreground shadow-sm\",\n      surface === \"frosted\" &&\n        \"border-border/55 bg-card/80 text-card-foreground shadow-sm backdrop-blur-xl\",\n      surface === \"outlined\" &&\n        \"border-border bg-background text-foreground shadow-none\",\n      unified && \"rounded-[var(--radius)] shadow-none\",\n      unified && unifiedThemeDefaults,\n      unified &&\n        surface === \"panel\" &&\n        \"border-[var(--monkeys-component-navigation-sidebar-border,hsl(var(--monkeys-color-border,var(--border))))] bg-[var(--monkeys-component-navigation-sidebar-background,hsl(var(--monkeys-color-card,var(--card))))] text-foreground\",\n    ),\n    itemHeight:\n      density === \"compact\"\n        ? unified\n          ? \"min-h-[var(--monkeys-component-navigation-sidebar-row-height,2.5rem)]\"\n          : \"min-h-9\"\n        : density === \"comfortable\"\n          ? \"min-h-14\"\n          : \"min-h-11\",\n    itemPadding:\n      density === \"compact\"\n        ? unified\n          ? \"px-2 py-2\"\n          : \"px-2 py-1.5\"\n        : density === \"comfortable\"\n          ? \"px-3 py-3\"\n          : \"px-3 py-2\",\n    searchHeight:\n      density === \"compact\"\n        ? unified\n          ? \"h-[var(--monkeys-component-navigation-sidebar-row-height,2.5rem)]\"\n          : \"h-8\"\n        : density === \"comfortable\"\n          ? \"h-10\"\n          : \"h-9\",\n  };\n}\n\nconst navigationTreeRowHoverClassName =\n  \"hover:bg-[var(--monkeys-component-navigation-sidebar-tree-row-hover-background,hsl(var(--muted)))] hover:text-[var(--monkeys-component-navigation-sidebar-tree-row-hover-foreground,hsl(var(--foreground)))]\";\n\nconst navigationTreeRowSelectedClassName =\n  \"bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))] hover:bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] hover:text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))]\";\n\nconst navigationTreeNestedControlClassName =\n  \"hover:!bg-transparent hover:!text-inherit focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\";\n\nfunction resolveNavigationTreeClassNames(\n  classNames: DataExplorerViewTreeClassNames | undefined,\n): DataExplorerViewTreeClassNames {\n  return {\n    ...classNames,\n    groupHeader: cn(navigationTreeRowHoverClassName, classNames?.groupHeader),\n    itemSelected: cn(\n      navigationTreeRowSelectedClassName,\n      classNames?.itemSelected,\n    ),\n    nodeButton: cn(\n      navigationTreeRowHoverClassName,\n      \"aria-selected:bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] aria-selected:text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))] aria-selected:hover:bg-[var(--monkeys-component-navigation-sidebar-tree-row-selected-background,hsl(var(--accent)))] aria-selected:hover:text-[var(--monkeys-component-navigation-sidebar-tree-row-selected-foreground,hsl(var(--accent-foreground)))]\",\n      classNames?.nodeButton,\n    ),\n    expander: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.expander,\n    ),\n    nodeToggle: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.nodeToggle,\n    ),\n    groupActions: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.groupActions,\n    ),\n    nodeActions: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.nodeActions,\n    ),\n    nodeDragHandle: cn(\n      navigationTreeNestedControlClassName,\n      classNames?.nodeDragHandle,\n    ),\n  };\n}\n\ninterface EntryButtonProps {\n  item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n  active: boolean;\n  collapsed: boolean;\n  itemAs?: ElementType;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n  mobile?: boolean;\n  embedded?: boolean;\n  onSelect?: () => void;\n  ariaControls?: string;\n  ariaExpanded?: boolean;\n  endIndicator?: ReactNode;\n}\n\nfunction entryClassName({\n  item,\n  active,\n  collapsed,\n  mobile,\n  embedded = false,\n  appearance,\n  classNames,\n  domClassName,\n}: {\n  item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n  active: boolean;\n  collapsed: boolean;\n  mobile: boolean;\n  embedded?: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n  domClassName?: string;\n}) {\n  return cn(\n    \"group/navigation-item relative flex w-full min-w-0 items-center gap-3 rounded-[var(--radius)] border border-transparent text-left text-sm outline-none transition-[background-color,border-color,color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n    appearance.itemHeight,\n    appearance.itemPadding,\n    appearance.unified && unifiedRow,\n    embedded\n      ? \"min-h-0 self-stretch border-0 bg-transparent text-inherit hover:bg-transparent hover:text-inherit\"\n      : active\n        ? appearance.selected\n        : appearance.inactive,\n    collapsed && !mobile && \"justify-center px-0\",\n    item.disabled && \"pointer-events-none opacity-50\",\n    classNames?.item,\n    active && classNames?.itemActive,\n    mobile && classNames?.mobileItem,\n    domClassName,\n    item.className,\n  );\n}\n\nfunction EntryContent({\n  item,\n  collapsed,\n  mobile,\n  classNames,\n  endIndicator,\n  appearance,\n}: {\n  item: NavigationSidebarCatalogItem | NavigationSidebarRouteItem;\n  collapsed: boolean;\n  mobile: boolean;\n  classNames?: NavigationSidebarClassNames;\n  endIndicator?: ReactNode;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  return (\n    <>\n      {hasRenderableNode(item.icon) ? (\n        <span\n          className={cn(\n            \"flex size-5 shrink-0 items-center justify-center [&_svg]:size-full\",\n            appearance.unified && unifiedIcon,\n            classNames?.itemIcon,\n          )}\n          aria-hidden=\"true\"\n        >\n          {item.icon}\n        </span>\n      ) : null}\n      {mobile || !collapsed ? (\n        <span\n          className={cn(\n            \"flex min-w-0 flex-1 flex-col\",\n            classNames?.itemContent,\n          )}\n        >\n          <span\n            className={cn(\n              \"min-w-0 truncate font-semibold\",\n              appearance.unified && \"font-medium\",\n              classNames?.itemLabel,\n            )}\n          >\n            {item.label}\n          </span>\n          {hasRenderableNode(item.description) ? (\n            <span\n              className={cn(\n                \"mt-0.5 truncate text-xs font-normal\",\n                appearance.unified && \"text-inherit\",\n                classNames?.itemDescription,\n              )}\n            >\n              {item.description}\n            </span>\n          ) : null}\n        </span>\n      ) : null}\n      {(mobile || !collapsed) && hasRenderableNode(item.meta) ? (\n        <span\n          className={cn(\n            \"shrink-0 text-xs text-muted-foreground\",\n            classNames?.itemMeta,\n          )}\n        >\n          {item.meta}\n        </span>\n      ) : null}\n      {(mobile || !collapsed) && hasRenderableNode(item.endContent) ? (\n        <span className={cn(\"shrink-0\", classNames?.itemEndContent)}>\n          {item.endContent}\n        </span>\n      ) : null}\n      {(mobile || !collapsed) && hasRenderableNode(endIndicator) ? (\n        <span className=\"flex shrink-0 items-center justify-center\">\n          {endIndicator}\n        </span>\n      ) : null}\n    </>\n  );\n}\n\nfunction EntryButton({\n  item,\n  active,\n  collapsed,\n  itemAs,\n  appearance,\n  classNames,\n  mobile = false,\n  embedded = false,\n  onSelect,\n  ariaControls,\n  ariaExpanded,\n  endIndicator,\n}: EntryButtonProps) {\n  const ItemComponent = itemAs ?? (item.href ? \"a\" : \"button\");\n  const title = getNodeTitle(item.label, item.title);\n  const domProps = item.domProps ?? {};\n  const handleClick = (event: MouseEvent<HTMLElement>) => {\n    if (item.disabled) {\n      event.preventDefault();\n      return;\n    }\n    item.onClick?.(event);\n    onSelect?.();\n  };\n  const componentProps = {\n    ...domProps,\n    ...(item.to ? { to: item.to } : {}),\n    ...(item.href ? { href: item.href } : {}),\n    ...(ItemComponent === \"button\"\n      ? { type: \"button\", disabled: item.disabled }\n      : {}),\n    title,\n    \"aria-current\": active ? \"page\" : undefined,\n    \"aria-disabled\": item.disabled || undefined,\n    \"aria-controls\": ariaControls,\n    \"aria-expanded\": ariaExpanded,\n    tabIndex: item.disabled ? -1 : domProps.tabIndex,\n    onClick: handleClick,\n  };\n\n  return (\n    <ItemComponent\n      {...componentProps}\n      data-navigation-sidebar-item-id={item.id}\n      data-active={active ? \"true\" : \"false\"}\n      data-expanded={ariaExpanded === undefined ? undefined : String(ariaExpanded)}\n      className={entryClassName({\n        item,\n        active,\n        collapsed,\n        mobile,\n        embedded,\n        appearance,\n        classNames,\n        domClassName: domProps.className,\n      })}\n    >\n      <EntryContent\n        appearance={appearance}\n        item={item}\n        collapsed={collapsed}\n        mobile={mobile}\n        classNames={classNames}\n        endIndicator={endIndicator}\n      />\n    </ItemComponent>\n  );\n}\n\nfunction EntryPresentation({\n  item,\n  appearance,\n  classNames,\n}: {\n  item: NavigationSidebarRouteItem;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n}) {\n  const domProps = item.domProps ?? {};\n  return (\n    <div\n      {...domProps}\n      data-navigation-sidebar-item-id={item.id}\n      aria-disabled={item.disabled || undefined}\n      title={getNodeTitle(item.label, item.title)}\n      className={entryClassName({\n        item,\n        active: false,\n        collapsed: false,\n        mobile: true,\n        embedded: true,\n        appearance,\n        classNames,\n        domClassName: domProps.className,\n      })}\n    >\n      <EntryContent\n        appearance={appearance}\n        item={item}\n        collapsed={false}\n        mobile\n        classNames={classNames}\n      />\n    </div>\n  );\n}\n\nfunction routeRowClassName({\n  active,\n  appearance,\n}: {\n  active: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  return cn(\n    \"flex w-full min-w-0 items-center gap-0.5 rounded-[var(--radius)] border border-transparent pr-1 text-sm transition-[background-color,border-color,color,box-shadow] motion-reduce:transition-none\",\n    appearance.itemHeight,\n    appearance.unified && unifiedRow,\n    active ? appearance.selected : appearance.inactive,\n  );\n}\n\nfunction filterCatalogItems(\n  items: NavigationSidebarCatalogItem[],\n  activeFilterId: string | undefined,\n) {\n  if (!activeFilterId) return items;\n  return items.filter(\n    (item) =>\n      !item.filterIds?.length || item.filterIds.includes(activeFilterId),\n  );\n}\n\nfunction CatalogContent({\n  props,\n  collapsed,\n  appearance,\n}: {\n  props: NavigationSidebarCatalogProps;\n  collapsed: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  const {\n    items = [],\n    sections = [],\n    filters = [],\n    activeFilterId,\n    activeItemId,\n    onFilterSelect,\n    itemAs,\n    layout = \"single\",\n    empty,\n    ariaLabel,\n    classNames,\n  } = props;\n  const filteredItems = filterCatalogItems(items, activeFilterId);\n  const filteredSections = sections\n    .map((section) => ({\n      ...section,\n      items: filterCatalogItems(section.items, activeFilterId),\n    }))\n    .filter((section) => section.items.length > 0);\n  const hasItems = filteredItems.length > 0 || filteredSections.length > 0;\n\n  const filtersNode =\n    filters.length > 0 && !collapsed ? (\n      <div\n        role=\"group\"\n        className={cn(\n          layout === \"split\"\n            ? \"flex min-w-32 flex-col gap-1 border-r border-border/60 pr-2\"\n            : \"flex flex-wrap gap-1\",\n          classNames?.filterList,\n        )}\n        aria-label={ariaLabel ? `${ariaLabel} filters` : undefined}\n      >\n        {filters.map((filter) => {\n          const active = filter.id === activeFilterId;\n          return (\n            <button\n              key={filter.id}\n              type=\"button\"\n              title={\n                filter.title ??\n                (typeof filter.label === \"string\" ? filter.label : undefined)\n              }\n              aria-pressed={active}\n              disabled={filter.disabled}\n              className={cn(\n                \"inline-flex min-h-8 items-center gap-2 rounded-md px-2.5 text-xs font-medium text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n                active && \"bg-muted text-foreground\",\n                classNames?.filterItem,\n                active && classNames?.filterItemActive,\n              )}\n              onClick={() => onFilterSelect?.(filter)}\n            >\n              {hasRenderableNode(filter.icon) ? (\n                <span aria-hidden=\"true\">{filter.icon}</span>\n              ) : null}\n              <span className=\"truncate\">{filter.label}</span>\n            </button>\n          );\n        })}\n      </div>\n    ) : null;\n\n  const listNode = hasItems ? (\n    <div className={cn(\"min-w-0 flex-1\", classNames?.list)}>\n      {filteredItems.length > 0 ? (\n        <ul className=\"grid list-none gap-1 p-0\">\n          {filteredItems.map((item) => (\n            <li key={item.id}>\n              <EntryButton\n                item={item}\n                active={item.active ?? item.id === activeItemId}\n                collapsed={collapsed}\n                itemAs={itemAs}\n                appearance={appearance}\n                classNames={classNames}\n              />\n            </li>\n          ))}\n        </ul>\n      ) : null}\n      {filteredSections.map((section) => (\n        <section\n          key={section.id}\n          className={cn(\n            \"mt-3 first:mt-0\",\n            classNames?.section,\n            section.className,\n          )}\n        >\n          {!collapsed && hasRenderableNode(section.label) ? (\n            <div\n              className={cn(\n                \"mb-1 px-2 text-[11px] font-semibold uppercase tracking-wide text-muted-foreground\",\n                classNames?.sectionLabel,\n                section.labelClassName,\n              )}\n            >\n              {section.label}\n            </div>\n          ) : null}\n          <ul className=\"grid list-none gap-1 p-0\">\n            {section.items.map((item) => (\n              <li key={item.id}>\n                <EntryButton\n                  item={item}\n                  active={item.active ?? item.id === activeItemId}\n                  collapsed={collapsed}\n                  itemAs={itemAs}\n                  appearance={appearance}\n                  classNames={classNames}\n                />\n              </li>\n            ))}\n          </ul>\n        </section>\n      ))}\n    </div>\n  ) : (\n    <div className=\"px-3 py-8 text-center text-sm text-muted-foreground\">\n      {empty}\n    </div>\n  );\n\n  return (\n    <nav\n      aria-label={ariaLabel}\n      className={cn(layout === \"split\" && !collapsed && \"flex min-w-0 gap-2\")}\n    >\n      {filtersNode}\n      {listNode}\n    </nav>\n  );\n}\n\nfunction ChildEntry({\n  child,\n  parent,\n  active,\n  interactive,\n  onSelect,\n  appearance,\n  classNames,\n  embedded = false,\n}: {\n  child: NavigationSidebarRouteChild;\n  parent: NavigationSidebarRouteItem;\n  active: boolean;\n  interactive: boolean;\n  onSelect?: (\n    child: NavigationSidebarRouteChild,\n    parent: NavigationSidebarRouteItem,\n  ) => void;\n  appearance: ReturnType<typeof resolveAppearance>;\n  classNames?: NavigationSidebarClassNames;\n  embedded?: boolean;\n}) {\n  const Component = interactive ? \"button\" : \"div\";\n  const domProps = child.domProps ?? {};\n  return (\n    <Component\n      {...domProps}\n      {...(interactive ? { type: \"button\" } : {})}\n      data-navigation-sidebar-child-id={child.id}\n      aria-current={interactive && active ? \"page\" : undefined}\n      aria-disabled={child.disabled || undefined}\n      title={getNodeTitle(child.label, child.title)}\n      disabled={interactive ? child.disabled : undefined}\n      className={cn(\n        \"flex w-full min-w-0 flex-1 items-center gap-3 rounded-[var(--radius)] border border-transparent text-left text-sm font-semibold outline-none transition-[background-color,border-color,color,box-shadow] focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n        appearance.itemHeight,\n        appearance.itemPadding,\n        appearance.unified && unifiedRow,\n        embedded\n          ? \"min-h-0 self-stretch border-0 bg-transparent text-inherit hover:bg-transparent hover:text-inherit\"\n          : active\n            ? appearance.selected\n            : appearance.inactive,\n        child.disabled && \"pointer-events-none opacity-50\",\n        classNames?.childItem,\n        active && classNames?.childItemActive,\n        domProps.className,\n        child.className,\n      )}\n      onClick={\n        interactive && !child.disabled\n          ? () => onSelect?.(child, parent)\n          : undefined\n      }\n    >\n      {hasRenderableNode(child.icon) ? (\n        <span\n          className={cn(\n            \"flex size-5 shrink-0 items-center justify-center [&_svg]:size-full\",\n            appearance.unified && unifiedIcon,\n          )}\n          aria-hidden=\"true\"\n        >\n          {child.icon}\n        </span>\n      ) : null}\n      <span className=\"min-w-0 truncate\">{child.label}</span>\n    </Component>\n  );\n}\n\nfunction RouteActions({\n  itemId,\n  actions,\n  kind,\n  className,\n  mobile = false,\n}: {\n  itemId: string;\n  actions: ReactNode;\n  kind: \"item\" | \"child\";\n  className?: string;\n  mobile?: boolean;\n}) {\n  if (!hasRenderableNode(actions)) return null;\n  return (\n    <div\n      data-navigation-sidebar-item-actions={\n        kind === \"item\" ? itemId : undefined\n      }\n      data-navigation-sidebar-child-actions={\n        kind === \"child\" ? itemId : undefined\n      }\n      data-navigation-sidebar-actions-mobile={mobile ? \"true\" : undefined}\n      className={cn(\n        \"ml-auto flex shrink-0 items-center gap-1 [&>button]:border-0 [&>button]:bg-transparent [&>button]:shadow-none [&>button:hover]:bg-muted\",\n        className,\n      )}\n    >\n      {actions}\n    </div>\n  );\n}\n\nfunction isDisclosureRouteItem(\n  item: NavigationSidebarRouteItem,\n): item is NavigationSidebarDisclosureRouteItem {\n  return item.interaction === \"disclosure\";\n}\n\nfunction validateRouteItems(routeItems: NavigationSidebarRouteItem[]) {\n  const itemIds = new Set<string>();\n  const childIds = new Set<string>();\n  const collapsibleItemIds = new Set<string>();\n\n  for (const item of routeItems) {\n    const itemId = item.id;\n    if (itemIds.has(itemId)) {\n      throw new RangeError(\n        `NavigationSidebar route item ids must be unique; received \"${itemId}\" more than once.`,\n      );\n    }\n    itemIds.add(itemId);\n\n    const disclosure = isDisclosureRouteItem(item);\n    if (disclosure) {\n      if (!item.children.length) {\n        throw new RangeError(\n          `NavigationSidebar disclosure item \"${item.id}\" must include at least one child.`,\n        );\n      }\n      if (\n        item.href !== undefined ||\n        item.to !== undefined ||\n        item.onClick !== undefined\n      ) {\n        throw new TypeError(\n          `NavigationSidebar disclosure item \"${itemId}\" cannot define href, to, or onClick.`,\n        );\n      }\n      collapsibleItemIds.add(item.id);\n    } else if (item.childrenPresentation === \"collapsible\") {\n      if (!item.children?.length) {\n        throw new RangeError(\n          `NavigationSidebar collapsible route item \"${item.id}\" must include at least one child.`,\n        );\n      }\n      collapsibleItemIds.add(item.id);\n    }\n\n    for (const child of item.children ?? []) {\n      if (childIds.has(child.id)) {\n        throw new RangeError(\n          `NavigationSidebar route child ids must be unique; received \"${child.id}\" more than once.`,\n        );\n      }\n      childIds.add(child.id);\n    }\n  }\n\n  return collapsibleItemIds;\n}\n\nfunction RouteChildrenToggle({\n  item,\n  expanded,\n  controls,\n  label,\n  onToggle,\n  classNames,\n}: {\n  item: NavigationSidebarRouteItem;\n  expanded: boolean;\n  controls: string;\n  label: string;\n  onToggle: () => void;\n  classNames?: NavigationSidebarClassNames;\n}) {\n  const itemLabel = typeof item.label === \"string\" ? item.label : item.id;\n  return (\n    <button\n      type=\"button\"\n      disabled={item.disabled}\n      aria-expanded={expanded}\n      aria-controls={controls}\n      aria-label={`${label}: ${itemLabel}`}\n      title={label}\n      data-navigation-sidebar-disclosure-trigger={item.id}\n      className={cn(\n        \"inline-flex h-8 w-7 shrink-0 items-center justify-center rounded-md border-0 bg-transparent text-muted-foreground shadow-none outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n        classNames?.childMenuTrigger,\n      )}\n      onClick={onToggle}\n    >\n      <DisclosureIcon expanded={expanded} />\n    </button>\n  );\n}\n\nfunction CollapsedChildMenu({\n  item,\n  activeChildId,\n  label,\n  onChildSelect,\n  classNames,\n  appearance,\n  triggerVariant = \"submenu\",\n  mobile = false,\n}: {\n  item: NavigationSidebarRouteItem;\n  activeChildId?: string;\n  label: string;\n  onChildSelect?: (\n    child: NavigationSidebarRouteChild,\n    parent: NavigationSidebarRouteItem,\n  ) => void;\n  classNames?: NavigationSidebarClassNames;\n  appearance?: ReturnType<typeof resolveAppearance>;\n  triggerVariant?: \"submenu\" | \"item\" | \"disclosure\";\n  mobile?: boolean;\n}) {\n  const enabledChildren = (item.children ?? []).filter(\n    (child) => !child.disabled,\n  );\n  if (!item.children?.length) return null;\n  if (\n    triggerVariant === \"submenu\" &&\n    (!onChildSelect || enabledChildren.length === 0)\n  )\n    return null;\n  const itemLabel = typeof item.label === \"string\" ? item.label : item.id;\n  const itemTriggerDisabled =\n    Boolean(item.disabled) || !onChildSelect || enabledChildren.length === 0;\n  const domProps = item.domProps ?? {};\n  return (\n    <DropdownMenu.Root>\n      <DropdownMenu.Trigger asChild>\n        {triggerVariant === \"item\" && appearance ? (\n          <button\n            {...domProps}\n            type=\"button\"\n            disabled={itemTriggerDisabled}\n            aria-label={`${label}: ${itemLabel}`}\n            title={label}\n            data-navigation-sidebar-item-id={item.id}\n            data-navigation-sidebar-disclosure-menu=\"true\"\n            className={entryClassName({\n              item,\n              active: false,\n              collapsed: !mobile,\n              mobile,\n              appearance,\n              classNames,\n              domClassName: domProps.className,\n            })}\n          >\n            <EntryContent\n              appearance={appearance}\n              item={item}\n              collapsed={!mobile}\n              mobile={mobile}\n              classNames={classNames}\n              endIndicator={mobile ? <DisclosureIcon expanded={false} /> : undefined}\n            />\n          </button>\n        ) : (\n          <button\n            type=\"button\"\n            disabled={\n              triggerVariant === \"disclosure\" ? itemTriggerDisabled : undefined\n            }\n            data-navigation-sidebar-disclosure-trigger={\n              triggerVariant === \"disclosure\" ? item.id : undefined\n            }\n            className={cn(\n              \"inline-flex h-8 shrink-0 items-center justify-center rounded-md border-0 bg-transparent text-muted-foreground shadow-none outline-none hover:bg-muted hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n              triggerVariant === \"disclosure\" ? \"w-7\" : \"w-6\",\n              classNames?.childMenuTrigger,\n            )}\n            aria-label={`${label}: ${itemLabel}`}\n            title={label}\n          >\n            {triggerVariant === \"disclosure\" ? (\n              <DisclosureIcon expanded={false} />\n            ) : (\n              <MoreIcon />\n            )}\n          </button>\n        )}\n      </DropdownMenu.Trigger>\n      <DropdownMenu.Portal>\n        <DropdownMenu.Content\n          side=\"right\"\n          align=\"start\"\n          sideOffset={8}\n          className={cn(\n            \"z-50 min-w-40 rounded-md border border-border bg-popover p-1 text-popover-foreground shadow-md outline-none\",\n            classNames?.childMenuContent,\n          )}\n        >\n          {item.children?.map((child) => (\n            <DropdownMenu.Item\n              key={child.id}\n              disabled={child.disabled}\n              data-navigation-sidebar-child-id={child.id}\n              data-active={child.id === activeChildId ? \"true\" : \"false\"}\n              className={cn(\n                \"flex cursor-pointer select-none items-center gap-2 rounded-sm px-2 py-2 text-sm outline-none focus:bg-accent focus:text-accent-foreground data-[disabled]:pointer-events-none data-[disabled]:opacity-50\",\n                child.id === activeChildId &&\n                  \"bg-accent text-accent-foreground\",\n              )}\n              onSelect={() => onChildSelect?.(child, item)}\n            >\n              {hasRenderableNode(child.icon) ? (\n                <span aria-hidden=\"true\">{child.icon}</span>\n              ) : null}\n              <span className=\"truncate\">{child.label}</span>\n            </DropdownMenu.Item>\n          ))}\n        </DropdownMenu.Content>\n      </DropdownMenu.Portal>\n    </DropdownMenu.Root>\n  );\n}\n\nfunction RouteContent({\n  props,\n  collapsed,\n  appearance,\n}: {\n  props: NavigationSidebarRouteProps;\n  collapsed: boolean;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  const {\n    routeItems,\n    activeItemId,\n    activeChildId,\n    expandedItemIds,\n    defaultExpandedItemIds = [],\n    itemAs,\n    onItemSelect,\n    onChildSelect,\n    onExpandedItemIdsChange,\n    collapsedChildMenuLabel = \"Open submenu\",\n    disclosureLabel = \"Toggle submenu\",\n    ariaLabel,\n    classNames,\n  } = props;\n  const disclosureId = useId();\n  const collapsibleItemIds = useMemo(\n    () => validateRouteItems(routeItems),\n    [routeItems],\n  );\n  const [internalExpandedItemIds, setInternalExpandedItemIds] = useState(\n    () => defaultExpandedItemIds,\n  );\n  const isExpandedControlled = expandedItemIds !== undefined;\n  const resolvedExpandedItemIds =\n    expandedItemIds ?? internalExpandedItemIds;\n  const normalizedExpandedItemIds = useMemo(\n    () =>\n      resolvedExpandedItemIds.filter((itemId) =>\n        collapsibleItemIds.has(itemId),\n      ),\n    [collapsibleItemIds, resolvedExpandedItemIds],\n  );\n  const expandedItemIdSet = useMemo(\n    () => new Set(normalizedExpandedItemIds),\n    [normalizedExpandedItemIds],\n  );\n  const toggleItemExpanded = useCallback(\n    (item: NavigationSidebarRouteItem) => {\n      if (item.disabled || !collapsibleItemIds.has(item.id)) return;\n      const nextExpandedItemIds = expandedItemIdSet.has(item.id)\n        ? normalizedExpandedItemIds.filter((itemId) => itemId !== item.id)\n        : [...normalizedExpandedItemIds, item.id];\n      if (!isExpandedControlled) {\n        setInternalExpandedItemIds(nextExpandedItemIds);\n      }\n      onExpandedItemIdsChange?.(nextExpandedItemIds);\n    },\n    [\n      collapsibleItemIds,\n      expandedItemIdSet,\n      isExpandedControlled,\n      normalizedExpandedItemIds,\n      onExpandedItemIdsChange,\n    ],\n  );\n  return (\n    <nav aria-label={ariaLabel}>\n      <ul\n        className={cn(\n          \"grid list-none gap-2 p-0\",\n          appearance.unified && \"gap-0.5\",\n          classNames?.list,\n        )}\n      >\n        {routeItems.map((item, itemIndex) => {\n          const disclosure = isDisclosureRouteItem(item);\n          const active = !disclosure && item.id === activeItemId;\n          const hasChildren = Boolean(item.children?.length);\n          const childrenCollapsible = collapsibleItemIds.has(item.id);\n          const childrenExpanded =\n            !childrenCollapsible || expandedItemIdSet.has(item.id);\n          const showItemActions =\n            !collapsed && hasRenderableNode(item.actions);\n          const compoundItemRow =\n            (collapsed && hasChildren && Boolean(onChildSelect)) ||\n            (!collapsed && childrenCollapsible && !disclosure) ||\n            showItemActions;\n          const childListId = `${disclosureId}-route-children-${itemIndex}`;\n          return (\n            <li key={item.id} className=\"grid min-w-0 gap-1\">\n              {collapsed && disclosure ? (\n                <CollapsedChildMenu\n                  item={item}\n                  activeChildId={activeChildId}\n                  label={collapsedChildMenuLabel}\n                  onChildSelect={onChildSelect}\n                  classNames={classNames}\n                  appearance={appearance}\n                  triggerVariant=\"item\"\n                />\n              ) : (\n                <div\n                  data-navigation-sidebar-item-row={\n                    compoundItemRow ? item.id : undefined\n                  }\n                  data-active={compoundItemRow ? String(active) : undefined}\n                  className={\n                    compoundItemRow\n                      ? routeRowClassName({ active, appearance })\n                      : undefined\n                  }\n                >\n                  <EntryButton\n                    item={item}\n                    active={active}\n                    collapsed={collapsed}\n                    embedded={compoundItemRow}\n                    itemAs={disclosure ? \"button\" : itemAs}\n                    appearance={appearance}\n                    classNames={classNames}\n                    onSelect={\n                      disclosure\n                        ? () => toggleItemExpanded(item)\n                        : onItemSelect\n                          ? () => onItemSelect(item)\n                          : undefined\n                    }\n                    ariaControls={\n                      !collapsed && childrenCollapsible && disclosure\n                        ? childListId\n                        : undefined\n                    }\n                    ariaExpanded={\n                      !collapsed && childrenCollapsible && disclosure\n                        ? childrenExpanded\n                        : undefined\n                    }\n                    endIndicator={\n                      !collapsed && disclosure && !showItemActions ? (\n                        <DisclosureIcon expanded={childrenExpanded} />\n                      ) : undefined\n                    }\n                  />\n                  {showItemActions ? (\n                    <RouteActions\n                      itemId={item.id}\n                      actions={item.actions}\n                      kind=\"item\"\n                      className={classNames?.itemActions}\n                    />\n                  ) : null}\n                  {collapsed && onChildSelect ? (\n                    <CollapsedChildMenu\n                      item={item}\n                      activeChildId={activeChildId}\n                      label={collapsedChildMenuLabel}\n                      onChildSelect={onChildSelect}\n                      classNames={classNames}\n                    />\n                  ) : null}\n                  {!collapsed &&\n                  childrenCollapsible &&\n                  (!disclosure || showItemActions) ? (\n                    <RouteChildrenToggle\n                      item={item}\n                      expanded={childrenExpanded}\n                      controls={childListId}\n                      label={disclosureLabel}\n                      onToggle={() => toggleItemExpanded(item)}\n                      classNames={classNames}\n                    />\n                  ) : null}\n                </div>\n              )}\n              {!collapsed && hasChildren ? (\n                <ul\n                  id={childListId}\n                  hidden={!childrenExpanded}\n                  style={childrenExpanded ? undefined : { display: \"none\" }}\n                  className={cn(\n                    \"ml-5 grid list-none gap-0.5 border-l border-border/70 py-1 pl-3\",\n                    appearance.unified && \"border-border\",\n                    classNames?.childList,\n                  )}\n                >\n                  {item.children?.map((child) => {\n                    const hasChildActions = hasRenderableNode(child.actions);\n                    const childActive = child.id === activeChildId;\n                    const childEntry = (\n                      <ChildEntry\n                        child={child}\n                        parent={item}\n                        active={childActive}\n                        interactive={Boolean(onChildSelect)}\n                        onSelect={onChildSelect}\n                        appearance={appearance}\n                        classNames={classNames}\n                        embedded={hasChildActions}\n                      />\n                    );\n                    return (\n                      <li key={child.id}>\n                        {hasChildActions ? (\n                          <div\n                            data-navigation-sidebar-child-row={child.id}\n                            data-active={String(childActive)}\n                            className={routeRowClassName({\n                              active: childActive,\n                              appearance,\n                            })}\n                          >\n                            {childEntry}\n                            <RouteActions\n                              itemId={child.id}\n                              actions={child.actions}\n                              kind=\"child\"\n                              className={classNames?.childActions}\n                            />\n                          </div>\n                        ) : (\n                          childEntry\n                        )}\n                      </li>\n                    );\n                  })}\n                </ul>\n              ) : null}\n            </li>\n          );\n        })}\n      </ul>\n    </nav>\n  );\n}\n\nfunction flattenCatalogItems(\n  items: NavigationSidebarCatalogItem[],\n  sections: NavigationSidebarCatalogSection[],\n  activeFilterId: string | undefined,\n) {\n  return [\n    ...filterCatalogItems(items, activeFilterId),\n    ...sections.flatMap((section) =>\n      filterCatalogItems(section.items, activeFilterId),\n    ),\n  ];\n}\n\nfunction MobileNavigation({\n  props,\n  appearance,\n}: {\n  props: NavigationSidebarCatalogProps | NavigationSidebarRouteProps;\n  appearance: ReturnType<typeof resolveAppearance>;\n}) {\n  if (!props.mobile || props.mobile.mode !== \"horizontal\") return null;\n  const classNames = props.classNames;\n  const items =\n    props.kind === \"catalog\"\n      ? flattenCatalogItems(\n          props.items ?? [],\n          props.sections ?? [],\n          props.activeFilterId,\n        )\n      : props.routeItems;\n  return (\n    <nav\n      aria-label={props.ariaLabel}\n      className={cn(\n        \"flex gap-2 overflow-x-auto pb-1\",\n        classNames?.mobileNav,\n        props.mobile.className,\n      )}\n    >\n      {items.map((item) => {\n        const mobileClassNames = {\n          ...classNames,\n          mobileItem: cn(\n            classNames?.mobileItem,\n            props.mobile?.itemClassName,\n          ),\n        };\n        const routeItem =\n          props.kind === \"route\"\n            ? (item as NavigationSidebarRouteItem)\n            : undefined;\n        const showRouteActions =\n          routeItem !== undefined && hasRenderableNode(routeItem.actions);\n        if (props.kind === \"route\" && isDisclosureRouteItem(item)) {\n          return showRouteActions ? (\n            <div\n              key={item.id}\n              data-navigation-sidebar-item-row={item.id}\n              data-active=\"false\"\n              className={cn(\n                routeRowClassName({ active: false, appearance }),\n                \"shrink-0\",\n              )}\n            >\n              <EntryPresentation\n                item={item}\n                appearance={appearance}\n                classNames={mobileClassNames}\n              />\n              <RouteActions\n                itemId={item.id}\n                actions={item.actions}\n                kind=\"item\"\n                className={classNames?.itemActions}\n                mobile\n              />\n              <CollapsedChildMenu\n                item={item}\n                activeChildId={props.activeChildId}\n                label={props.collapsedChildMenuLabel ?? \"Open submenu\"}\n                onChildSelect={props.onChildSelect}\n                classNames={mobileClassNames}\n                appearance={appearance}\n                triggerVariant=\"disclosure\"\n                mobile\n              />\n            </div>\n          ) : (\n            <Fragment key={item.id}>\n              <CollapsedChildMenu\n                item={item}\n                activeChildId={props.activeChildId}\n                label={props.collapsedChildMenuLabel ?? \"Open submenu\"}\n                onChildSelect={props.onChildSelect}\n                classNames={mobileClassNames}\n                appearance={appearance}\n                triggerVariant=\"item\"\n                mobile\n              />\n            </Fragment>\n          );\n        }\n        const active =\n          props.kind === \"catalog\"\n            ? ((item as NavigationSidebarCatalogItem).active ??\n              item.id === props.activeItemId)\n            : item.id === props.activeItemId;\n        const entryButton = (\n          <EntryButton\n            item={item}\n            active={active}\n            collapsed={false}\n            embedded={showRouteActions}\n            itemAs={props.itemAs}\n            appearance={appearance}\n            classNames={mobileClassNames}\n            mobile\n            onSelect={\n              props.kind === \"route\" && props.onItemSelect\n                ? () =>\n                    props.onItemSelect?.(item as NavigationSidebarRouteItem)\n                : undefined\n            }\n          />\n        );\n        return showRouteActions && routeItem ? (\n          <div\n            key={item.id}\n            data-navigation-sidebar-item-row={item.id}\n            data-active={String(active)}\n            className={cn(\n              routeRowClassName({ active, appearance }),\n              \"shrink-0\",\n            )}\n          >\n            {entryButton}\n            <RouteActions\n              itemId={routeItem.id}\n              actions={routeItem.actions}\n              kind=\"item\"\n              className={classNames?.itemActions}\n              mobile\n            />\n          </div>\n        ) : (\n          <Fragment key={item.id}>{entryButton}</Fragment>\n        );\n      })}\n    </nav>\n  );\n}\n\nfunction NavigationSidebarInner<\n  TNodeSource = unknown,\n  TGroupSource = unknown,\n  TContext = unknown,\n>(\n  props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext>,\n  ref: ForwardedRef<HTMLElement>,\n) {\n  const bounds = resolveLayoutBounds(props);\n  if (props.width !== undefined) requireFiniteNumber(\"width\", props.width);\n  const initialLayoutRef = useRef<StoredLayout | null>(null);\n  if (!initialLayoutRef.current) {\n    initialLayoutRef.current = readStoredLayout(props, bounds);\n  }\n\n  const sidebarRef = useRef<HTMLElement | null>(null);\n  const [internalCollapsed, setInternalCollapsed] = useState(\n    initialLayoutRef.current.collapsed,\n  );\n  const [internalWidth, setInternalWidth] = useState(\n    initialLayoutRef.current.width,\n  );\n  const [internalSearchValue, setInternalSearchValue] = useState(\n    props.search?.defaultValue ?? \"\",\n  );\n  const [isResizing, setIsResizing] = useState(false);\n  const resolvedCollapsed = props.collapsed ?? internalCollapsed;\n  const resolvedWidth = clampWidth(props.width ?? internalWidth, bounds);\n  const resolvedSearchValue = props.search?.value ?? internalSearchValue;\n  const isCollapsedControlled = props.collapsed !== undefined;\n  const isWidthControlled = props.width !== undefined;\n  const appearance = useMemo(\n    () => resolveAppearance(props.appearance),\n    [props.appearance],\n  );\n  const collapsible = props.collapsible ?? true;\n  const resizable = props.resizable ?? true;\n  const collapsePlacement = collapsible\n    ? (props.collapsePlacement ?? \"header\")\n    : \"none\";\n  const collapseLabel = props.collapseLabel ?? \"Collapse sidebar\";\n  const expandLabel = props.expandLabel ?? \"Expand sidebar\";\n  const resizeLabel = props.resizeLabel ?? \"Resize sidebar\";\n  const contentVisible = !resolvedCollapsed || bounds.collapsedWidth > 0;\n\n  const setSidebarRef = (node: HTMLElement | null) => {\n    sidebarRef.current = node;\n    assignRef(ref, node);\n  };\n\n  const updateCollapsed = useCallback(\n    (nextCollapsed: boolean) => {\n      if (!collapsible && nextCollapsed) return;\n      if (!isCollapsedControlled) setInternalCollapsed(nextCollapsed);\n      props.onCollapsedChange?.(nextCollapsed);\n    },\n    [collapsible, isCollapsedControlled, props.onCollapsedChange],\n  );\n\n  const updateWidth = useCallback(\n    (nextWidth: number) => {\n      const clampedWidth = clampWidth(nextWidth, bounds);\n      if (!isWidthControlled) setInternalWidth(clampedWidth);\n      props.onWidthChange?.(clampedWidth);\n    },\n    [bounds.maxWidth, bounds.minWidth, isWidthControlled, props.onWidthChange],\n  );\n\n  useEffect(() => {\n    if (!props.storageKey) return;\n    const storage = resolveStorage(props.storage);\n    if (!storage) return;\n    try {\n      storage.setItem(\n        props.storageKey,\n        JSON.stringify({\n          collapsed: resolvedCollapsed,\n          width: resolvedWidth,\n        }),\n      );\n    } catch (error) {\n      reportStorageError(error, props.onStorageError);\n    }\n  }, [\n    props.onStorageError,\n    props.storage,\n    props.storageKey,\n    resolvedCollapsed,\n    resolvedWidth,\n  ]);\n\n  useEffect(() => {\n    if (!isResizing) return undefined;\n    const previousCursor = document.body.style.cursor;\n    const previousUserSelect = document.body.style.userSelect;\n    const handlePointerMove = (event: globalThis.PointerEvent) => {\n      const sidebar = sidebarRef.current;\n      if (!sidebar) return;\n      const nextWidth = event.clientX - sidebar.getBoundingClientRect().left;\n      if (collapsible && nextWidth < bounds.collapseThreshold) {\n        updateCollapsed(true);\n        return;\n      }\n      updateCollapsed(false);\n      updateWidth(nextWidth);\n    };\n    const handlePointerUp = () => setIsResizing(false);\n    window.addEventListener(\"pointermove\", handlePointerMove);\n    window.addEventListener(\"pointerup\", handlePointerUp);\n    document.body.style.cursor = \"col-resize\";\n    document.body.style.userSelect = \"none\";\n    return () => {\n      window.removeEventListener(\"pointermove\", handlePointerMove);\n      window.removeEventListener(\"pointerup\", handlePointerUp);\n      document.body.style.cursor = previousCursor;\n      document.body.style.userSelect = previousUserSelect;\n    };\n  }, [\n    bounds.collapseThreshold,\n    collapsible,\n    isResizing,\n    updateCollapsed,\n    updateWidth,\n  ]);\n\n  const handleResizeKeyDown = (event: KeyboardEvent<HTMLButtonElement>) => {\n    if (event.key !== \"ArrowLeft\" && event.key !== \"ArrowRight\") return;\n    event.preventDefault();\n    if (event.key === \"ArrowLeft\") {\n      const nextWidth = resolvedWidth - 24;\n      if (collapsible && nextWidth < bounds.collapseThreshold) {\n        updateCollapsed(true);\n      } else {\n        updateWidth(nextWidth);\n      }\n      return;\n    }\n    if (resolvedCollapsed) updateCollapsed(false);\n    updateWidth(Math.max(resolvedWidth + 24, bounds.minWidth));\n  };\n\n  const collapseButton = (extraClassName?: string) => (\n    <button\n      type=\"button\"\n      className={cn(\n        \"inline-flex h-9 w-9 shrink-0 items-center justify-center rounded-md text-muted-foreground outline-none transition-colors hover:bg-muted/60 hover:text-foreground focus-visible:ring-2 focus-visible:ring-ring motion-reduce:transition-none\",\n        props.classNames?.collapseButton,\n        extraClassName,\n      )}\n      aria-label={resolvedCollapsed ? expandLabel : collapseLabel}\n      title={resolvedCollapsed ? expandLabel : collapseLabel}\n      aria-expanded={!resolvedCollapsed}\n      onClick={() => updateCollapsed(!resolvedCollapsed)}\n    >\n      <CollapseIcon collapsed={resolvedCollapsed} />\n    </button>\n  );\n\n  const hasHeader =\n    hasRenderableNode(props.title) ||\n    hasRenderableNode(props.headerLeading) ||\n    hasRenderableNode(props.headerActions) ||\n    collapsePlacement === \"header\";\n\n  const renderContent = () => {\n    if (props.kind === \"catalog\") {\n      return (\n        <CatalogContent\n          props={props}\n          collapsed={resolvedCollapsed}\n          appearance={appearance}\n        />\n      );\n    }\n    if (props.kind === \"route\") {\n      return (\n        <RouteContent\n          props={props}\n          collapsed={resolvedCollapsed}\n          appearance={appearance}\n        />\n      );\n    }\n    const treeProps = (\n      props as NavigationSidebarTreeProps<TNodeSource, TGroupSource, TContext>\n    ).tree;\n    return (\n      <DataExplorerViewTree\n        {...treeProps}\n        classNames={\n          appearance.unified\n            ? unifiedTreeClassNames(\n                appearance.itemHeight,\n                appearance.itemPadding,\n                treeProps.classNames,\n              )\n            : resolveNavigationTreeClassNames(treeProps.classNames)\n        }\n      />\n    );\n  };\n\n  return (\n    <>\n      <aside\n        {...props.rootDomProps}\n        ref={setSidebarRef}\n        aria-label={props.ariaLabel}\n        data-monkeys-component={props.dataComponent ?? \"navigation-sidebar\"}\n        data-navigation-sidebar-kind={props.kind}\n        data-navigation-sidebar-preset={props.appearance?.preset}\n        data-collapsed={resolvedCollapsed ? \"true\" : \"false\"}\n        className={cn(\n          \"relative flex h-full min-h-0 shrink-0 flex-col overflow-visible rounded-[calc(var(--radius)+0.25rem)] border transition-[width,opacity] duration-300 motion-reduce:transition-none\",\n          appearance.root,\n          props.desktopClassName,\n          props.classNames?.root,\n          props.rootDomProps?.className,\n          props.className,\n        )}\n        style={{\n          ...(appearance.unified ? unifiedStyle(props.appearance?.activeVariant) : {}),\n          ...props.style,\n          width:\n            props.widthMode === \"fill\"\n              ? undefined\n              : resolvedCollapsed\n                ? bounds.collapsedWidth\n                : resolvedWidth,\n          transition: isResizing ? \"none\" : props.style?.transition,\n        }}\n      >\n        {resizable ? (\n          <button\n            type=\"button\"\n            role=\"separator\"\n            aria-orientation=\"vertical\"\n            aria-valuemin={bounds.minWidth}\n            aria-valuemax={bounds.maxWidth}\n            aria-valuenow={resolvedWidth}\n            aria-label={resizeLabel}\n            title={resizeLabel}\n            className={cn(\n              \"group/resize absolute -right-1.5 bottom-0 top-0 z-40 w-3 cursor-col-resize bg-transparent outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n              props.classNames?.resizeHandle,\n            )}\n            onPointerDown={(event: PointerEvent<HTMLButtonElement>) => {\n              event.preventDefault();\n              setIsResizing(true);\n            }}\n            onKeyDown={handleResizeKeyDown}\n          >\n            <span className=\"pointer-events-none absolute bottom-3 right-1/2 top-3 w-px translate-x-1/2 rounded-full bg-border opacity-0 transition-opacity group-hover/resize:opacity-100 group-focus-visible/resize:opacity-100\" />\n          </button>\n        ) : null}\n\n        {collapsePlacement === \"edge\"\n          ? collapseButton(\n              \"absolute -right-3 top-1/2 z-50 -translate-y-1/2 border border-border bg-background shadow-sm\",\n            )\n          : null}\n\n        {contentVisible ? (\n          <div className=\"flex h-full min-h-0 w-full min-w-0 flex-col overflow-hidden\">\n            {hasHeader ? (\n              <div\n                className={cn(\n                  \"flex min-h-12 min-w-0 items-center gap-2 border-b border-border/60 px-3\",\n                  appearance.unified &&\n                    \"min-h-14 border-border px-[var(--monkeys-component-navigation-sidebar-content-inline-padding,var(--global-spacing,0.75rem))]\",\n                  resolvedCollapsed && \"justify-center px-1\",\n                  props.classNames?.header,\n                )}\n              >\n                {hasRenderableNode(props.headerLeading) ? (\n                  <span\n                    className={cn(\n                      \"flex shrink-0 items-center justify-center\",\n                      props.classNames?.headerLeading,\n                    )}\n                  >\n                    {props.headerLeading}\n                  </span>\n                ) : null}\n                {!resolvedCollapsed && hasRenderableNode(props.title) ? (\n                  <div\n                    className={cn(\n                      \"min-w-0 flex-1 truncate text-sm font-semibold\",\n                      props.classNames?.title,\n                    )}\n                  >\n                    {props.title}\n                  </div>\n                ) : null}\n                {!resolvedCollapsed &&\n                hasRenderableNode(props.headerActions) ? (\n                  <div\n                    className={cn(\n                      \"flex shrink-0 items-center gap-1\",\n                      props.classNames?.headerActions,\n                    )}\n                  >\n                    {props.headerActions}\n                  </div>\n                ) : null}\n                {collapsePlacement === \"header\" ? collapseButton() : null}\n              </div>\n            ) : null}\n\n            {!resolvedCollapsed && props.search ? (\n              <div\n                className={cn(\n                  \"px-[var(--monkeys-component-navigation-sidebar-content-inline-padding,var(--global-spacing,0.75rem))] pb-2 pt-3\",\n                  appearance.unified && \"pb-1\",\n                  props.classNames?.search,\n                )}\n              >\n                <div\n                  className={cn(\n                    \"flex items-center gap-2 rounded-md border border-input bg-[var(--monkeys-component-navigation-sidebar-search-background,hsl(var(--monkeys-color-control-surface)))] px-3 text-muted-foreground ring-offset-control-surface focus-within:ring-2 focus-within:ring-ring focus-within:ring-offset-2\",\n                    appearance.searchHeight,\n                    appearance.unified &&\n                      \"rounded-[var(--radius)] border-border bg-[var(--monkeys-component-navigation-sidebar-search-background,transparent)] px-2\",\n                  )}\n                >\n                  <span\n                    className={cn(\n                      \"flex shrink-0\",\n                      appearance.unified && unifiedIcon,\n                      props.classNames?.searchIcon,\n                    )}\n                    aria-hidden=\"true\"\n                  >\n                    {props.search.icon ?? <SearchIcon />}\n                  </span>\n                  <input\n                    type=\"search\"\n                    value={resolvedSearchValue}\n                    placeholder={props.search.placeholder}\n                    aria-label={props.search.ariaLabel}\n                    className={cn(\n                      \"min-w-0 flex-1 bg-transparent text-sm text-foreground outline-none placeholder:text-muted-foreground\",\n                      props.classNames?.searchInput,\n                    )}\n                    onChange={(event) => {\n                      const nextValue = event.currentTarget.value;\n                      if (props.search?.value === undefined)\n                        setInternalSearchValue(nextValue);\n                      props.search?.onValueChange?.(nextValue);\n                    }}\n                  />\n                  {resolvedSearchValue && props.search.clearLabel ? (\n                    <button\n                      type=\"button\"\n                      className={cn(\n                        \"inline-flex h-6 w-6 items-center justify-center rounded text-muted-foreground hover:bg-muted hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n                        props.classNames?.searchClear,\n                      )}\n                      aria-label={props.search.clearLabel}\n                      title={props.search.clearLabel}\n                      onClick={() => {\n                        if (props.search?.value === undefined)\n                          setInternalSearchValue(\"\");\n                        props.search?.onValueChange?.(\"\");\n                      }}\n                    >\n                      <ClearIcon />\n                    </button>\n                  ) : null}\n                </div>\n              </div>\n            ) : null}\n\n            <div\n              className={cn(\n                \"min-h-0 flex-1 overflow-y-auto px-[var(--monkeys-component-navigation-sidebar-content-inline-padding,var(--global-spacing,0.75rem))] py-3\",\n                appearance.unified && props.search && \"pt-1\",\n                resolvedCollapsed && \"px-1.5\",\n                props.classNames?.content,\n              )}\n            >\n              {renderContent()}\n            </div>\n\n            {hasRenderableNode(props.footer) ||\n            collapsePlacement === \"footer\" ? (\n              <div\n                className={cn(\n                  \"flex shrink-0 items-center gap-2 border-t border-border/70 p-3\",\n                  appearance.unified && \"border-border\",\n                  resolvedCollapsed && \"justify-center px-1\",\n                  props.classNames?.footer,\n                )}\n              >\n                {!resolvedCollapsed && hasRenderableNode(props.footer) ? (\n                  <div className=\"min-w-0 flex-1\">{props.footer}</div>\n                ) : null}\n                {collapsePlacement === \"footer\" ? collapseButton() : null}\n              </div>\n            ) : null}\n          </div>\n        ) : null}\n      </aside>\n      {props.kind !== \"tree\" ? (\n        <MobileNavigation props={props} appearance={appearance} />\n      ) : null}\n    </>\n  );\n}\n\nexport type NavigationSidebarComponent = <\n  TNodeSource = unknown,\n  TGroupSource = unknown,\n  TContext = unknown,\n>(\n  props: NavigationSidebarProps<TNodeSource, TGroupSource, TContext> &\n    RefAttributes<HTMLElement>,\n) => ReactElement | null;\n\nexport const NavigationSidebar = forwardRef(\n  NavigationSidebarInner,\n) as NavigationSidebarComponent;\n"]}