{"version":3,"file":"static/js/main.ef1abd06.js","mappings":"oEA2BA,MACA,EAAe,IAA0B,kE,4NCTlC,MAAMA,EAAoB,SACpBC,EAAe,QACfC,EAA2B,WAC3BC,EAA4B,aAC5BC,EAA2B,UAE3BC,EAA4B,SAE5BC,EAA6B,SAC7BC,EAA2B,SAC3BC,EAA6B,YAC7BC,EAAgB,SAChBC,EAA+B,GAC/BC,EAAqB,IAErBC,EAAmB,CAC9BC,aAAc,eACdC,OAAQ,SACRC,MAAO,QACPC,SAAU,YAGCC,EAAoB,CAE/B,EAAG,CACDC,QAAS,kBACTC,KAAM,UAGR,EAAG,CACDD,QAAS,kBACTC,KAAM,UAGR,GAAI,CACFD,QAAS,iBACTC,KAAM,WAGR,GAAI,CACFD,QAAS,kBACTC,KAAM,WAERC,OAAQ,CACNF,QAAS,kBACTC,KAAM,UAERE,OAAQ,CACNH,QAAS,kBACTC,KAAM,UAERG,QAAS,CACPJ,QAAS,iBACTC,KAAM,WAERI,QAAS,CACPL,QAAS,kBACTC,KAAM,WAERK,SAAU,CACRN,QAAS,oBACTC,KAAM,aAIGM,EAAkB,CAC7B,CACEN,KAAM,YACNO,SAAU,IAEZ,CACEP,KAAM,WACNO,SAAU,CAAC,CAAEP,KAAM,aAAe,CAAEA,KAAM,aAE5C,CACEA,KAAM,SAER,CACEA,KAAM,UAER,CACEA,KAAM,YACNO,SAAU,CACR,CACEP,KAAM,UAER,CACEA,KAAM,WACNQ,KAAM,cAIZ,CACER,KAAM,WACNO,SAAU,CACR,CAAEP,KAAM,WACR,CAAEA,KAAM,aACR,CAAEA,KAAM,YACR,CAAEA,KAAM,QACR,CAAEA,KAAM,SACR,CAAEA,KAAM,SACR,CAAEA,KAAM,OACR,CAAEA,KAAM,SACR,CAAEA,KAAM,QAASQ,KAAM,kBACvB,CAAER,KAAM,gBAGZ,CACEA,KAAM,UACNO,SAAU,CACR,CACEP,KAAM,oBACNQ,KAAM,wBAMDC,EAAY,CACvB,CACEC,MAAO,SACPC,QAAS,CACP,CAAEC,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,qBAAsBF,MAAO,eACtC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,qBAAsBF,MAAO,eACtC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,uBAAwBF,MAAO,iBACxC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,sBAAuBF,MAAO,gBACvC,CAAEE,MAAO,cAAeF,MAAO,QAC/B,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,cAAeF,MAAO,QAC/B,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,qBAAsBF,MAAO,eACtC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,kBAAmBF,MAAO,cAGvC,CACEA,MAAO,UACPC,QAAS,CACP,CAAEC,MAAO,eAAgBF,MAAO,QAChC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CACEE,MAAO,iCACPF,MAAO,4BAET,CAAEE,MAAO,8BAA+BF,MAAO,yBAC/C,CAAEE,MAAO,4BAA6BF,MAAO,uBAC7C,CAAEE,MAAO,0BAA2BF,MAAO,qBAC3C,CAAEE,MAAO,6BAA8BF,MAAO,wBAC9C,CAAEE,MAAO,4BAA6BF,MAAO,uBAC7C,CACEE,MAAO,iCACPF,MAAO,4BAET,CAAEE,MAAO,0BAA2BF,MAAO,qBAC3C,CAAEE,MAAO,6BAA8BF,MAAO,wBAC9C,CAAEE,MAAO,6BAA8BF,MAAO,wBAC9C,CAAEE,MAAO,4BAA6BF,MAAO,uBAC7C,CAAEE,MAAO,4BAA6BF,MAAO,uBAC7C,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,yBAA0BF,MAAO,kBAC1C,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,uBAAwBF,MAAO,gBACxC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,wBAAyBF,MAAO,iBACzC,CAAEE,MAAO,uBAAwBF,MAAO,gBACxC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,uBAAwBF,MAAO,gBACxC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,uBAAwBF,MAAO,gBACxC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CACEE,MAAO,+BACPF,MAAO,0BAET,CAAEE,MAAO,uBAAwBF,MAAO,kBACxC,CAAEE,MAAO,0BAA2BF,MAAO,qBAC3C,CAAEE,MAAO,6BAA8BF,MAAO,wBAC9C,CAAEE,MAAO,4BAA6BF,MAAO,uBAC7C,CAAEE,MAAO,wBAAyBF,MAAO,mBACzC,CAAEE,MAAO,4BAA6BF,MAAO,uBAC7C,CAAEE,MAAO,0BAA2BF,MAAO,qBAC3C,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,8BAA+BF,MAAO,yBAC/C,CAAEE,MAAO,8BAA+BF,MAAO,yBAC/C,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,eAAgBF,MAAO,QAChC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,wBAAyBF,MAAO,iBACzC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,eAAgBF,MAAO,QAChC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,8BAA+BF,MAAO,yBAC/C,CAAEE,MAAO,8BAA+BF,MAAO,yBAC/C,CACEE,MAAO,iCACPF,MAAO,4BAET,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,yBAA0BF,MAAO,kBAC1C,CAAEE,MAAO,wBAAyBF,MAAO,iBACzC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,uBAAwBF,MAAO,gBACxC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,uBAAwBF,MAAO,gBACxC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,wBAAyBF,MAAO,iBACzC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,uBAAwBF,MAAO,gBACxC,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,wBAAyBF,MAAO,iBACzC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,wBAAyBF,MAAO,iBACzC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,sBAAuBF,MAAO,iBAG3C,CACEA,MAAO,aACPC,QAAS,CACP,CAAEC,MAAO,mBAAoBF,MAAO,SACpC,CAAEE,MAAO,mBAAoBF,MAAO,SACpC,CAAEE,MAAO,4BAA6BF,MAAO,kBAC7C,CAAEE,MAAO,uBAAwBF,MAAO,aACxC,CAAEE,MAAO,oBAAqBF,MAAO,UACrC,CAAEE,MAAO,qBAAsBF,MAAO,WACtC,CAAEE,MAAO,oBAAqBF,MAAO,UACrC,CAAEE,MAAO,qBAAsBF,MAAO,WACtC,CAAEE,MAAO,mBAAoBF,MAAO,SACpC,CAAEE,MAAO,mBAAoBF,MAAO,SACpC,CAAEE,MAAO,oBAAqBF,MAAO,YAGzC,CACEA,MAAO,SACPC,QAAS,CAAC,CAAEC,MAAO,sBAAuBF,MAAO,kBAEnD,CACEA,MAAO,OACPC,QAAS,CACP,CAAEC,MAAO,YAAaF,MAAO,QAC7B,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,YAAaF,MAAO,QAC7B,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,kBAAmBF,MAAO,cACnC,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,YAAaF,MAAO,QAC7B,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,YAAaF,MAAO,QAC7B,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,mBAAoBF,MAAO,eACpC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,YAAaF,MAAO,QAC7B,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,mBAAoBF,MAAO,eACpC,CAAEE,MAAO,oBAAqBF,MAAO,gBACrC,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,oBAAqBF,MAAO,gBACrC,CAAEE,MAAO,mBAAoBF,MAAO,eACpC,CAAEE,MAAO,YAAaF,MAAO,QAC7B,CAAEE,MAAO,YAAaF,MAAO,QAC7B,CAAEE,MAAO,kBAAmBF,MAAO,cACnC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,qBAAsBF,MAAO,iBACtC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,aAAcF,MAAO,SAC9B,CAAEE,MAAO,mBAAoBF,MAAO,eACpC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,gBAAiBF,MAAO,YACjC,CAAEE,MAAO,iBAAkBF,MAAO,aAClC,CAAEE,MAAO,mBAAoBF,MAAO,eACpC,CAAEE,MAAO,eAAgBF,MAAO,WAChC,CAAEE,MAAO,cAAeF,MAAO,UAC/B,CAAEE,MAAO,qBAAsBF,MAAO,iBACtC,CAAEE,MAAO,eAAgBF,MAAO,aAGpC,CACEA,MAAO,WACPC,QAAS,CACP,CAAEC,MAAO,kBAAmBF,MAAO,UACnC,CAAEE,MAAO,mBAAoBF,MAAO,WACpC,CAAEE,MAAO,kBAAmBF,MAAO,UACnC,CAAEE,MAAO,sBAAuBF,MAAO,cACvC,CAAEE,MAAO,iBAAkBF,MAAO,SAClC,CAAEE,MAAO,mBAAoBF,MAAO,WACpC,CAAEE,MAAO,qBAAsBF,MAAO,aACtC,CAAEE,MAAO,yBAA0BF,MAAO,iBAC1C,CAAEE,MAAO,mBAAoBF,MAAO,WACpC,CAAEE,MAAO,qBAAsBF,MAAO,eAG1C,CACEA,MAAO,YACPC,QAAS,CACP,CAAEC,MAAO,qBAAsBF,MAAO,YACtC,CAAEE,MAAO,qBAAsBF,MAAO,YACtC,CAAEE,MAAO,wBAAyBF,MAAO,eACzC,CAAEE,MAAO,mBAAoBF,MAAO,UACpC,CAAEE,MAAO,mBAAoBF,MAAO,UACpC,CAAEE,MAAO,kBAAmBF,MAAO,SACnC,CAAEE,MAAO,mBAAoBF,MAAO,UACpC,CAAEE,MAAO,qBAAsBF,MAAO,YACtC,CAAEE,MAAO,sBAAuBF,MAAO,aACvC,CAAEE,MAAO,sBAAuBF,MAAO,aACvC,CAAEE,MAAO,kBAAmBF,MAAO,SACnC,CAAEE,MAAO,mBAAoBF,MAAO,YAGxC,CACEA,MAAO,SACPC,QAAS,CACP,CAAEC,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,qBAAsBF,MAAO,eACtC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,qBAAsBF,MAAO,eACtC,CAAEE,MAAO,cAAeF,MAAO,QAC/B,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,cAAeF,MAAO,QAC/B,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,cAAeF,MAAO,QAC/B,CAAEE,MAAO,cAAeF,MAAO,QAC/B,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,oBAAqBF,MAAO,cACrC,CAAEE,MAAO,gBAAiBF,MAAO,YAGrC,CACEA,MAAO,SACPC,QAAS,CACP,CAAEC,MAAO,sBAAuBF,MAAO,gBACvC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,eAAgBF,MAAO,SAChC,CAAEE,MAAO,gBAAiBF,MAAO,UACjC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,cAAeF,MAAO,QAC/B,CAAEE,MAAO,kBAAmBF,MAAO,YACnC,CAAEE,MAAO,mBAAoBF,MAAO,aACpC,CAAEE,MAAO,iBAAkBF,MAAO,WAClC,CAAEE,MAAO,iBAAkBF,MAAO,aAGtC,CACEA,MAAO,UACPC,QAAS,CACP,CAAEC,MAAO,eAAgBF,MAAO,QAChC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,uBAAwBF,MAAO,gBACxC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,eAAgBF,MAAO,QAChC,CAAEE,MAAO,mBAAoBF,MAAO,YAEpC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,sBAAuBF,MAAO,eACvC,CAAEE,MAAO,eAAgBF,MAAO,QAChC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,qBAAsBF,MAAO,cACtC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,eAAgBF,MAAO,QAChC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,gBAAiBF,MAAO,SACjC,CAAEE,MAAO,mBAAoBF,MAAO,YACpC,CAAEE,MAAO,kBAAmBF,MAAO,WACnC,CAAEE,MAAO,uBAAwBF,MAAO,gBACxC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,iBAAkBF,MAAO,UAClC,CAAEE,MAAO,oBAAqBF,MAAO,aACrC,CAAEE,MAAO,eAAgBF,MAAO,QAChC,CAAEE,MAAO,iBAAkBF,MAAO,YAItC,CACEA,MAAO,MACPC,QAAS,CAAC,CAAEC,MAAO,MAAOF,MAAO,UAGxBG,EAAmB,MAEnBC,EAAgC,CAC3C,YACA,UACA,WACA,SACA,WACA,SACA,MACA,QACA,OACA,QAGWC,EAAwB,CACnC,CACEL,MAAO,SACPE,MAAO,UAET,CACEF,MAAO,WACPE,MAAO,aAIEI,EAA2B,E,gDCznBxC,MAUA,EAVgB,CACdC,MACE,qOACFC,OACE,2EACFC,SAAU,kBACVC,QAAS,UACTC,WAAY,Y,yPCCd,MAAMC,EAAMC,SAASC,cAAc,OAC7BC,EAAOC,EAAAA,WAAoBJ,GA2PjC,EArPoBK,CAACC,EAAgB,CAAC,KACpC,MAAM,EAAEC,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,eAEnD,MAAEC,EAAQH,EAAE,SAAQ,UAAEI,GAAcL,GACnCM,EAASC,IAAmBC,EAAAA,EAAAA,WAAS,IACrCC,EAAUC,IAAeF,EAAAA,EAAAA,UAAS,CACvCG,YAAa,CACX3B,MAAO,GACP4B,WAAW,EACXC,SAAU,IAEZC,SAAU,CACR9B,MAAO,GACP4B,WAAW,EACXC,SAAU,IAEZE,YAAa,CACX/B,MAAO,GACP4B,WAAW,EACXC,SAAU,MAIRG,EAAUA,KACdT,GAAgB,EAAM,EAgFlBU,EAAgBC,IACpBA,EAAMC,iBACND,EAAME,kBA9DeC,MACrB,IAAIC,GAAM,EACV,MAAM,YAAEX,EAAW,SAAEG,GAAaL,EAuDlC,OAtDKE,EAAY3B,MAON2B,EAAY3B,MAAMuC,OAASnC,EAAAA,IACpCkC,GAAM,EACNb,EAASE,YAAc,CACrB3B,MAAO2B,EAAY3B,MACnB4B,WAAW,EACXC,SAAUZ,EAAE,wCAGdQ,EAASE,YAAc,CACrB3B,MAAO2B,EAAY3B,MACnB4B,WAAW,EACXC,SAAU,KAjBZS,GAAM,EACNb,EAASE,YAAc,CACrB3B,MAAO,GACP4B,WAAW,EACXC,SAAUZ,EAAE,wCAiBXa,EAAS9B,MAOH8B,EAAS9B,MAAMuC,OAASnC,EAAAA,IACjCkC,GAAM,EACNb,EAASK,SAAW,CAClB9B,MAAO8B,EAAS9B,MAChB4B,WAAW,EACXC,SAAUZ,EAAE,qCAUdQ,EAASK,SAAW,CAClB9B,MAAO8B,EAAS9B,MAChB4B,WAAW,EACXC,SAAU,KAxBZS,GAAM,EACNb,EAASK,SAAW,CAClB9B,MAAO,GACP4B,WAAW,EACXC,SAAUZ,EAAE,qCAwBhBS,EAAY,IACPD,IAEEa,CAAG,EAOLD,KAIDhB,aAAqBmB,WACvBnB,EAAU,CACRoB,UAAWhB,EAASK,SAAS9B,MAC7B0C,aAAcjB,EAASE,YAAY3B,MACnC2C,cAAelB,EAASM,YAAY/B,QAEtC0B,EAAY,CACVC,YAAa,CACX3B,MAAO,GACP4B,WAAW,EACXC,SAAU,IAEZC,SAAU,CACR9B,MAAO,GACP4B,WAAW,EACXC,SAAU,IAEZE,YAAa,CACX/B,MAAO,GACP4B,WAAW,EACXC,SAAU,OAIhBG,IAAS,EAGLY,EACJV,IAEA,MAAM,MAAElC,GAAUkC,EAAMW,OACxBnB,EAAY,IACPD,EACHE,YAAa,CACX3B,QACA4B,WAAW,EACXC,SAAU,KAEZ,EAGEiB,EAAwBZ,IAC5B,MAAM,MAAElC,GAAUkC,EAAMW,OACxBnB,EAAY,IACPD,EACHK,SAAU,CACR9B,QACA4B,WAAW,EACXC,SAAU,KAEZ,EAGEkB,EACJb,IAEA,MAAM,MAAElC,GAAUkC,EAAMW,OACxBnB,EAAY,IACPD,EACHM,YAAa,CACX/B,QACA4B,WAAW,EACXC,SAAU,KAEZ,EA+DJ,OA7DAmB,EAAAA,EAAAA,kBAAgB,KACdnC,EAAKoC,QACHC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACC,KAAM9B,EAASF,MAAOA,EAAOiC,OAAQrB,EAAQrC,SAAA,EAClD2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMI,OAAM,CAACC,aAAW,EAAA7D,UACvB2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMM,MAAK,CAACC,GAAG,KAAI/D,SAAEyB,OAExBkC,EAAAA,EAAAA,KAACH,EAAAA,EAAMQ,KAAI,CAAAhE,UACTuD,EAAAA,EAAAA,MAACU,EAAAA,EAAI,CAAAjE,SAAA,EACHuD,EAAAA,EAAAA,MAACU,EAAAA,EAAKC,MAAK,CAACC,UAAU,cAAcC,UAAU,OAAMpE,SAAA,EAClD2D,EAAAA,EAAAA,KAACM,EAAAA,EAAKI,MAAK,CAAArE,SAAEsB,EAAE,qCACfqC,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAO,CACXC,KAAK,OACLlE,MAAOyB,EAASE,YAAY3B,MAC5BmE,SAAUvB,EACVhB,UAAWH,EAASE,YAAYC,aAElC0B,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAQG,SAAQ,CAACF,KAAK,UAASvE,SAClC8B,EAASE,YAAYE,eAG1BqB,EAAAA,EAAAA,MAACU,EAAAA,EAAKC,MAAK,CAACC,UAAU,WAAWC,UAAU,OAAMpE,SAAA,EAC/C2D,EAAAA,EAAAA,KAACM,EAAAA,EAAKI,MAAK,CAAArE,SAAEsB,EAAE,kCACfqC,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAO,CACXC,KAAK,OACLlE,MAAOyB,EAASK,SAAS9B,MACzBmE,SAAUrB,EACVlB,UAAWH,EAASK,SAASF,aAG/B0B,EAAAA,EAAAA,KAACM,EAAAA,EAAKS,KAAI,CAACX,GAAG,MAAK/D,SAChBsB,EAAE,sCAELqC,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAQG,SAAQ,CAACF,KAAK,UAASvE,SAClC8B,EAASK,SAASD,eAGvBqB,EAAAA,EAAAA,MAACU,EAAAA,EAAKC,MAAK,CAACC,UAAU,cAAanE,SAAA,EACjC2D,EAAAA,EAAAA,KAACM,EAAAA,EAAKI,MAAK,CAAArE,SAAE,GAAGsB,EAAE,6BAA6BA,EAAE,WAAY,CAC3DE,UAAW,cAEbmC,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAO,CACXF,UAAU,iBACV/D,MAAOyB,EAASM,YAAY/B,MAC5BmE,SAAUpB,EACVW,GAAG,WACHY,KAAM,aAKdpB,EAAAA,EAAAA,MAACC,EAAAA,EAAMoB,OAAM,CAAA5E,SAAA,EACX2D,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,OAAOsF,QAASA,IAAMzC,IAAUrC,SAC7CsB,EAAE,iBAELqC,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,UAAUsF,QAASxC,EAAatC,SAC7CsB,EAAE,sBAIV,IAEI,CACLe,UACA0C,OAtNaA,CAACC,EAAY,MAC1BpD,GAAgB,GAChBG,EAAY,IACPD,EACHE,YAAa,CACX3B,MAAO2E,EACP/C,WAAW,EACXC,SAAU,IAEZC,SAAU,CACR9B,MAAO2E,EACP/C,WAAW,EACXC,SAAU,KAEZ,EAyMH,E,eC5PH,MAAM+C,EAAcjE,SAASC,cAAc,OAC3CgE,EAAYC,MAAMC,SAAW,QAC7BF,EAAYC,MAAME,IAAM,OACxBH,EAAYC,MAAMG,KAAO,MACzBJ,EAAYC,MAAMI,UAAY,qBAC9BL,EAAYC,MAAMK,SAAW,OAC7BN,EAAYC,MAAMM,OAAS,OAE3B,MAAMC,EAAoBA,KACxB,MAAMC,EAAS1E,SAAS2E,cAAc,WAClCD,IACFT,EAAYC,MAAME,IAAM,GAAGM,EAAOE,wBAAwBR,IAAM,OAClE,EAYIlE,EAAOC,EAAAA,WAAoB8D,GAmEjC,EA1DiBY,KACf,MAAOpC,EAAMqC,IAAWjE,EAAAA,EAAAA,WAAS,IAC1BkE,EAAMC,IAAWnE,EAAAA,EAAAA,UAAiB,CACvCoE,IAAK,GACLzG,QAAS,YAGL6C,EAAUA,KACd,MAAM6D,EAASlF,SAAS2E,cAAc,cAC5B,OAANO,QAAM,IAANA,GAAAA,EAAQC,SAASlB,IACnBiB,EAAOE,YAAYnB,GAvBvBQ,IACAY,OAAOC,oBAAoB,SAAUb,GAyBnCK,GAAQ,EAAM,EAwChB,OAhCAzC,EAAAA,EAAAA,kBAAgB,KACd,MAAM6C,EAASlF,SAAS2E,cAAc,cAChC,OAANO,QAAM,IAANA,GAAAA,EAAQK,YAAYtB,GAEpB/D,EAAKoC,QACHK,EAAAA,EAAAA,KAAA,OAAKS,UAAU,gCAA+BpE,UAC5C2D,EAAAA,EAAAA,KAAC6C,EAAAA,EAAK,CACJpC,UAAU,8BACVqC,MAAO,IACPC,GAAIX,EAAKvG,SAAW,UACpBiE,KAAMA,EACNkD,UAAQ,EACRtE,QAASA,EAAQrC,UACjBuD,EAAAA,EAAAA,MAAA,OAAKa,UAAU,SAAQpE,SAAA,EACrB2D,EAAAA,EAAAA,KAAC6C,EAAAA,EAAMxC,KAAI,CACT4C,wBAAyB,CAAEC,OAAQd,EAAKE,KACxC7B,UAAW,IAAoB,YAAjB2B,EAAKvG,QAAwB,aAAe,OAE5DmE,EAAAA,EAAAA,KAAA,UACES,UAAW,0BACQ,YAAjB2B,EAAKvG,QAAwB,kBAAoB,IAEnDsF,QAASzC,EACT,kBAAgB,QAChB,aAAW,iBAKpB,GACA,CAACoB,EAAMsC,IAEH,CACLhB,OAtCczD,IACd0E,EAAQ1E,GAnCVmE,IACAY,OAAOS,iBAAiB,SAAUrB,GAoChCK,GAAQ,EAAK,EAoCd,E,qCCjEH,MAkTA,EAlTwBiB,IACtB,MAAM,EAAEzF,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,iBACnDwF,EAAQnB,KACPoB,EAAQC,IAAarF,EAAAA,EAAAA,UAAwB,OAC7CI,EAAWkF,IAAmBtF,EAAAA,EAAAA,WAAS,IACvCuF,EAAYC,IAAiBxF,EAAAA,EAAAA,UAAS,CAC3C0C,MAAO,EACP+C,aAAa,IAETC,GAAUC,EAAAA,EAAAA,QAAuC,CACrDtG,KAAM,QAGDuG,EAASC,IAAc7F,EAAAA,EAAAA,UAAS,CACrCxB,MAAO,GACP4B,WAAW,EACXC,SAAU,MAELuB,EAAMqC,IAAWjE,EAAAA,EAAAA,WAAS,IAC1B8F,EAAMC,IAAW/F,EAAAA,EAAAA,UAAgB,IAElCgG,GAAWC,EAAAA,EAAAA,IAAiB,WAElCC,EAAAA,EAAAA,YAAU,KACR,MAAMhH,EAAMC,SAASC,cAAc,OACnCsG,EAAQS,QAAQ9G,KAAOC,EAAAA,WAAoBJ,EAAI,GAC9C,IACH,MA4BMkH,EAAgBA,KACpBC,YAAW,KACD,OAARnB,QAAQ,IAARA,GAAAA,GAAY,GACZ,EAgBE1E,EAAUA,KACdgF,EAAc,CACZ9C,MAAO,EACP+C,aAAa,IAEfI,EAAW,CACTrH,MAAO,GACP4B,WAAW,EACXC,SAAU,KAEZ4D,GAAQ,EAAM,EAwCVqC,EAAgBpC,IACpB,MAAMqC,EAAU,CACdC,OAAQtC,EAAKxB,KACb+D,YAAalB,EAAW7C,KACxBgE,UAAWxC,EAAKyC,GAChBf,QAASA,EAAQpH,MACjBoI,kBAAcC,EACdC,gBAAYD,GAEN,OAARb,QAAQ,IAARA,GAAAA,EAAUe,kBAAkBR,IAE5BS,EAAAA,EAAAA,IAAWT,GACRU,MAAKC,gBACU,OAARlB,QAAQ,IAARA,OAAQ,EAARA,EAAUmB,SAChBhC,EAAMjC,OAAO,CACXkB,IAAK3E,EAAE,eAAgB,CAAEE,UAAW,UACpChC,QAAS,YAEX6C,IACA4F,GAAe,IAEhBgB,OAAOC,IACFA,EAAGC,UACG,OAARtB,QAAQ,IAARA,GAAAA,EAAUuB,mBAAmBF,EAAGvB,MAClC,GACA,EAGArF,EAAeA,KACnB,GAAK2E,EAGL,IAAyB,IAArBG,EAAW7C,MAKf,GA1EoB8E,MACpB,GAAIjC,EAAWE,cAAgBG,EAAQpH,MAMrC,OALAqH,EAAW,CACTrH,MAAOoH,EAAQpH,MACf4B,WAAW,EACXC,SAAUZ,EAAE,mBAEP,EAGT,GAAwB,KAApB8F,EAAW7C,KAAa,CAE1B,IAAI+E,EACJ,IACEA,EAAM,IAAIC,IAAI9B,EAAQpH,MACxB,CAAE,MACAqH,EAAW,CACTrH,MAAOoH,EAAQpH,MACf4B,WAAW,EACXC,SAAUZ,EAAE,kBAEhB,CACA,IAAKgI,EAAK,OAAO,EAEjB,GAAIA,EAAIE,SAAWnD,OAAOoD,SAASD,OAMjC,OALA9B,EAAW,CACTrH,MAAOoH,EAAQpH,MACf4B,WAAW,EACXC,SAAUZ,EAAE,wBAEP,CAEX,CAEA,OAAO,CAAI,EAwCN+H,GAAL,CAIA,GAAoB,aAAhBpC,EAAO1C,MAAyC,UAAlB0C,EAAOyC,OACvC,MAAuB,YAAb,OAANzC,QAAM,IAANA,OAAM,EAANA,EAAQoB,aACVsB,EAAAA,EAAAA,IAAoB,CAClBC,QAAS3C,EAAOuB,GAChBqB,eAAgB,aAChBC,WAAY1C,EAAW7C,KACvBwF,UAAWtC,EAAQpH,QAClByI,MAAK,KACNzG,IACA4F,GAAe,SAInB+B,EAAAA,EAAAA,IAAc,CACZxB,GAAIvB,EAAOuB,GACXsB,WAAY1C,EAAW7C,KACvBwF,UAAWtC,EAAQpH,QAClByI,MAAK,KACNzG,IACA4F,GAAe,IAInB,IAAKhB,EAAOgD,WAA+B,SAAlBhD,EAAOyC,OAAmB,CACjD,IAAK7B,EAEH,YADAM,EAAalB,GAGfY,EAASqC,OAAM,KACb/B,EAAalB,EAAO,GAExB,CAEIA,EAAOgD,WAA+B,WAAlBhD,EAAOyC,SAC7BS,EAAAA,EAAAA,IAAU,CACRT,OAAQzC,EAAO1C,KACf6F,gBAAiB3C,EAAQpH,MACzBgK,aAAcjD,EAAW7C,KACzBiE,GAAIvB,EAAOuB,KACVM,MAAK,KACNzG,IACA4F,GAAe,GA3CnB,OANEd,GAAgB,EAmDlB,EAOF,IAAI1F,EAAQ,GAqFZ,MApFsB,kBAAXwF,GAAuBA,IAChCxF,EAAQwF,EAAOxF,OAASH,EAAE,GAAG2F,EAAOyC,gBACd,WAAlBzC,EAAOyC,SACTjI,EAAQH,EAAE,GAAG2F,EAAOyC,UAAUzC,EAAO1C,iBAGzClB,EAAAA,EAAAA,kBAAgB,KAAO,IAADiH,EACA,QAApBA,EAAA/C,EAAQS,QAAQ9G,YAAI,IAAAoJ,GAApBA,EAAsBhH,QACpBC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACC,KAAMA,EAAMC,OAAQrB,EAAQrC,SAAA,EACjC2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMI,OAAM,CAACC,aAAW,EAAA7D,UACvB2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMM,MAAK,CAACC,GAAG,KAAI/D,SAAEyB,OAExBkC,EAAAA,EAAAA,KAACH,EAAAA,EAAMQ,KAAI,CAAAhE,UACT2D,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CAAAjE,SACF2H,EAAK4C,KAAKC,IAEPjH,EAAAA,EAAAA,MAAA,OAAAvD,SAAA,EACE2D,EAAAA,EAAAA,KAACM,EAAAA,EAAKC,MAAK,CACTC,UAAW,UAAc,OAAJqG,QAAI,IAAJA,OAAI,EAAJA,EAAMC,cAC3BrG,UAAW,IACToG,EAAKE,cAAgBtD,IAAeoD,EAAKjG,KACrC,OACA,QACHvE,UACHuD,EAAAA,EAAAA,MAACoH,EAAAA,EAAS,CAAA3K,SAAA,EACR2D,EAAAA,EAAAA,KAACgH,EAAAA,EAAUC,MAAK,CACdpC,GAAIgC,EAAKC,YACTlG,KAAK,QACLsG,QAASzD,EAAW7C,OAASiG,EAAKC,YAClCjG,SAAUA,KAAMsG,OAzLjBC,EAyL6BP,EAxLhDrD,GAAgB,GAChBO,EAAW,CACTrH,MACE0K,EAAIN,eAAsB,OAANxD,QAAM,IAANA,OAAM,EAANA,EAAQG,YAAa4D,OAAa,OAAN/D,QAAM,IAANA,OAAM,EAANA,EAAQQ,SAAW,GACrExF,WAAW,EACXC,SAAU,UAEZmF,EAAc,CACZ9C,KAAMwG,EAAIN,YACVnD,YAAa2D,QAAQF,EAAIG,gBAVRH,KAyLmC,EAClC9I,UAAWA,KAEbsB,EAAAA,EAAAA,MAACoH,EAAAA,EAAUtG,MAAK,CAAC8G,QAASX,EAAKC,YAAYzK,SAAA,EACzC2D,EAAAA,EAAAA,KAAA,QAAMS,UAAU,UAASpE,SAAM,OAAJwK,QAAI,IAAJA,OAAI,EAAJA,EAAM/K,QACjCkE,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,QAAMS,UAAU,iBAAgBpE,SACzB,OAAJwK,QAAI,IAAJA,OAAI,EAAJA,EAAMpI,kBAGXuB,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAQG,SAAQ,CAACF,KAAK,UAASvE,SAClCsB,EAAE,oBAIR8F,EAAWE,aACVF,EAAW7C,OAASiG,EAAKC,cACvBlH,EAAAA,EAAAA,MAACU,EAAAA,EAAKC,MAAK,CAACC,UAAU,UAAUC,UAAU,YAAWpE,SAAA,EACnD2D,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAO,CACXC,KAAK,OACLR,GACwB,SAAtByG,EAAKU,aAA0B,QAAU,WAE3C7K,MAAOoH,EAAQpH,MACf4B,UAAWwF,EAAQxF,UACnBmJ,YAAaZ,EAAKY,YAClB5G,SAAW6G,GACT3D,EAAW,CACTrH,MAAOgL,EAAEnI,OAAO7C,MAChB4B,WAAW,EACXC,SAAU,QAIhByB,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAQG,SAAQ,CAACF,KAAK,UAASvE,SAClCyH,EAAQvF,gBAhDL,OAAJsI,QAAI,IAAJA,OAAI,EAAJA,EAAMC,oBAyDxBlH,EAAAA,EAAAA,MAACC,EAAAA,EAAMoB,OAAM,CAAA5E,SAAA,EACX2D,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,OAAOsF,QAASA,IAAMzC,IAAUrC,SAC7CsB,EAAE,iBAELqC,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,UAAUsF,QAASxC,EAAatC,SAC7CsB,EAAE,sBAIV,IAEI,CACLe,UACA0C,OA3FcuG,IACdpE,EAAUoE,GAzLIC,GAAGhH,OAAMmF,SAAQO,eAAcuB,OAE7CC,EAAAA,EAAAA,IAAW,CACTlH,OACAmF,SACAO,cACCnB,MAAM4C,IAEP,GADA9D,EAAQ8D,GACJF,EAAYpE,WAAY,CAC1B,MAAMuE,EAAWD,EAAIE,MAClBC,GAAMA,EAAEpB,cAAgBe,EAAYpE,aAEnCuE,IACFtE,EAAc,CACZ9C,KAAMoH,EAASlB,YACfnD,YAAa2D,QAAQU,EAAST,gBAGhCxD,EAAW,CACTrH,MAAOmL,EAAY/D,SAAW,GAC9BxF,WAAW,EACXC,SAAU,KAGhB,CACA4D,GAAQ,EAAK,GACb,EAgKFyF,CAAQD,EAAI,EA0Fb,E,wBCrUH,IAAIQ,EAAgC,GACpC,MAsBA,EAtBqBC,KACnB,MAAOC,EAAOC,IAAYpK,EAAAA,EAAAA,UAA2BiK,GAIrD,MAAO,CACLI,SAJeA,IACRF,EAIPC,SAAWlG,IACT,GAAIA,aAAgBoG,MAAO,CACzB,GAAoB,IAAhBpG,EAAKnD,OACP,OAEFqJ,EAASG,IAAO,IAAIJ,KAAUjG,GAAO,aACrC+F,EAAcM,IAAO,IAAIN,KAAgB/F,GAAO,WAClD,MACEkG,EAASG,IAAO,IAAIJ,EAAOjG,GAAO,aAClC+F,EAAcM,IAAO,IAAIN,EAAa/F,GAAO,WAC/C,EAEH,ECjBGhF,EAAMC,SAASC,cAAc,OAC7BC,EAAOC,EAAAA,WAAoBJ,GA+GjC,EAzG+BsL,EAAGtF,eAChC,MAAM,EAAEzF,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAC1CC,UAAW,2BAENgH,EAAI8D,IAASzK,EAAAA,EAAAA,UAAS,KACtB0K,EAAWC,IAAgB3K,EAAAA,EAAAA,WAAU,IACrCI,EAAWkF,IAAmBtF,EAAAA,EAAAA,WAAS,IACvC4K,EAAWC,IAAe7K,EAAAA,EAAAA,WAAU,IACpC4B,EAAMqC,IAAWjE,EAAAA,EAAAA,WAAS,IAC1B8F,EAAMC,IAAW/F,EAAAA,EAAAA,UAAyB,IAY3CQ,EAAUA,KACdqK,GAAa,GACbF,GAAc,GACd1G,GAAQ,EAAM,EAGVxD,EAAeA,KACfiK,IAAcE,GAMlBE,EAAAA,EAAAA,IAAe,CACbC,QAASpE,EACTqE,QAASJ,IACR3D,MAAK,KACE,OAAR/B,QAAQ,IAARA,GAAAA,IACA1E,GAAS,IAVTA,GAWA,EA2DJ,OAjDAgB,EAAAA,EAAAA,kBAAgB,KACdnC,EAAKoC,QACHC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACC,KAAMA,EAAMC,OAAQrB,EAAQrC,SAAA,EACjC2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMI,OAAM,CAACC,aAAW,EAAA7D,UACvB2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMM,MAAK,CAACC,GAAG,KAAI/D,SAAEsB,EAAE,cAE1BqC,EAAAA,EAAAA,KAACH,EAAAA,EAAMQ,KAAI,CAAAhE,UACT2D,EAAAA,EAAAA,KAACM,EAAAA,EAAI,CAAAjE,SACF2H,EAAK4C,KAAKC,IAEP7G,EAAAA,EAAAA,KAAA,OAAA3D,UACE2D,EAAAA,EAAAA,KAACM,EAAAA,EAAKC,MAAK,CAACC,UAAWqG,EAAK/K,KAAM2E,UAAU,OAAMpE,UAChDuD,EAAAA,EAAAA,MAACoH,EAAAA,EAAS,CAAA3K,SAAA,EACR2D,EAAAA,EAAAA,KAACgH,EAAAA,EAAUC,MAAK,CACdpC,GAAIgC,EAAK/K,KACT8E,KAAK,QACLsG,QAAS4B,IAAcjC,EAAKhC,GAC5BhE,SAAUA,KAAMsG,OAnDjBC,EAmD6BP,EAlDhDrD,GAAgB,QAChBuF,EAAY3B,EAAIvC,IAFGuC,KAmDmC,EAClC9I,UAAWA,KAEbsB,EAAAA,EAAAA,MAACoH,EAAAA,EAAUtG,MAAK,CAAC8G,QAASX,EAAK/K,KAAKO,SAAA,EAClC2D,EAAAA,EAAAA,KAAA,QAAMS,UAAU,UAASpE,SAAEwK,EAAK/K,QAChCkE,EAAAA,EAAAA,KAAA,UACAA,EAAAA,EAAAA,KAAA,QAAMS,UAAU,iBAAgBpE,SAC7BwK,EAAKpI,kBAGVuB,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAQG,SAAQ,CAACF,KAAK,UAASvE,SAClCsB,EAAE,qBAlBG,OAAJkJ,QAAI,IAAJA,OAAI,EAAJA,EAAMhC,WA2BxBjF,EAAAA,EAAAA,MAACC,EAAAA,EAAMoB,OAAM,CAAA5E,SAAA,EACX2D,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,OAAOsF,QAASA,IAAMzC,IAAUrC,SAC7CsB,EAAE,iBAELqC,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,UAAUsF,QAASxC,EAAatC,SAC7CsB,EAAE,sBAIV,IAGI,CACLe,UACA0C,OA1DckC,IAhCK8B,WACnB,MAAM2C,QAAYoB,EAAAA,EAAAA,MAClBlF,EAAQ8D,EAAI,EA+BZqB,GACAT,EAAMrF,EAAOuB,IACbkE,EAAYzF,EAAO4F,SACnBL,EAAavF,EAAO4F,SACpB/G,GAAQ,EAAK,EAsDd,E,0BC5GH,MAAM/E,EAAMC,SAASC,cAAc,OAC7BC,EAAOC,EAAAA,WAAoBJ,GAuHjC,EAjHwBiM,CAAC3L,EAAgB,CAAC,KACxC,MAAM,EAAEC,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAC1CC,UAAW,sBAGP,MAAEC,EAAQH,EAAE,SAAQ,UAAEI,GAAcL,GACnCM,EAASC,IAAmBC,EAAAA,EAAAA,WAAS,GACtCoL,EAAqB,CACzBxL,MAAOH,EAAE,SACT4L,SAAU,CAAC,SACXC,WAAY,CACVnB,MAAO,CACLzH,KAAM,SACN9C,MAAOH,EAAE,2BACTc,YAAad,EAAE,6BAIf8L,EAAqB,CACzBpB,MAAO,CACL,YAAa,WACb,aAAc,CACZrH,KAAM,EACNyG,YAAa9J,EAAE,iCACf8C,UAAW,YAIVtC,EAAUC,IAAeF,EAAAA,EAAAA,WAC9BwL,EAAAA,EAAAA,IAAaJ,IAGTK,GAAU9F,EAAAA,EAAAA,QAEb,MAEGnF,EAAUA,KACdT,GAAgB,EAAM,EAOlBU,EAAeyG,UAAkB,IAADwE,EACpChL,EAAMC,iBACND,EAAME,wBAC+B,QAArB8K,EAAMD,EAAQtF,eAAO,IAAAuF,OAAA,EAAfA,EAAiBC,cAMnC9L,aAAqBmB,UACvBnB,EAAU,CACRsK,MAAOlK,EAASkK,MAAM3L,QAErByI,MAAK,KACJ/G,EAAY,CACViK,MAAO,CACL3L,MAAO,GACP4B,WAAW,EACXC,SAAU,MAGdG,GAAS,IAEV4G,OAAOwE,IACN,GAAIA,EAAItE,QAAS,CACf,MAAMpD,GAAO2H,EAAAA,EAAAA,IAAgBD,EAAK3L,GAClCC,EAAY,IAAKgE,GACnB,IAEN,EAGI4H,EAAkB5H,IACtBhE,EAAYgE,EAAK,EA8BnB,OA3BA1C,EAAAA,EAAAA,kBAAgB,KACdnC,EAAKoC,QACHC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACC,KAAM9B,EAASF,MAAOA,EAAOiC,OAAQrB,EAAQrC,SAAA,EAClD2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMI,OAAM,CAACC,aAAW,EAAA7D,UACvB2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMM,MAAK,CAACC,GAAG,KAAI/D,SAAEyB,OAExBkC,EAAAA,EAAAA,KAACH,EAAAA,EAAMQ,KAAI,CAAAhE,UACT2D,EAAAA,EAAAA,KAACiK,EAAAA,EAAU,CACTC,IAAKP,EACLL,OAAQA,EACRG,SAAUA,EACVtL,SAAUA,EACV0C,SAAUmJ,EACVG,cAAY,OAGhBvK,EAAAA,EAAAA,MAACC,EAAAA,EAAMoB,OAAM,CAAA5E,SAAA,EACX2D,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,OAAOsF,QAASA,IAAMzC,IAAUrC,SAC7CsB,EAAE,iBAELqC,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,UAAUsF,QAASxC,EAAatC,SAC7CsB,EAAE,sBAIV,IAEI,CACLe,UACA0C,OArEaA,KACbnD,GAAgB,EAAK,EAqEtB,ECrHGb,EAAMC,SAASC,cAAc,OAC7BC,EAAOC,EAAAA,WAAoBJ,GAgIjC,EA1H+BgN,CAAC1M,EAAgB,CAAC,KAC/C,MAAM,EAAEC,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAC1CC,UAAW,8BAGP,MAAEC,EAAQH,EAAE,SAAQ,UAAEI,GAAcL,GACnCM,EAASC,IAAmBC,EAAAA,EAAAA,WAAS,IACrCmM,EAAQC,IAAapM,EAAAA,EAAAA,UAAS,IAC/BoL,EAAqB,CACzBxL,MAAOH,EAAE,SACT4L,SAAU,CAAC,YACXC,WAAY,CACVe,SAAU,CACR3J,KAAM,SACN9C,MAAOH,EAAE,8BACTc,YAAad,EAAE,gCAIf8L,EAAqB,CACzBc,SAAU,CACR,aAAc,CACZC,UAAW,WACXX,UAAYnN,KAGNA,EAAMuC,OAFS,GAEcvC,EAAMuC,OADpB,KAEVtB,EAAE,gCAOZQ,EAAUC,IAAeF,EAAAA,EAAAA,WAC9BwL,EAAAA,EAAAA,IAAaJ,IAGTK,GAAU9F,EAAAA,EAAAA,QAEb,MAEGnF,EAAUA,KACdT,GAAgB,EAAM,EAQlBU,EAAeyG,UAAkB,IAADwE,EACpChL,EAAMC,iBACND,EAAME,wBAC+B,QAArB8K,EAAMD,EAAQtF,eAAO,IAAAuF,OAAA,EAAfA,EAAiBC,cAMnC9L,aAAqBmB,UACvBnB,EAAU,CACRwM,SAAUpM,EAASoM,SAAS7N,MAC5BuM,QAASoB,IAERlF,MAAK,KACJ/G,EAAY,CACVmM,SAAU,CACR7N,MAAO,GACP4B,WAAW,EACXC,SAAU,MAGd+L,EAAU,IACV5L,GAAS,IAEV4G,OAAOwE,IACN,GAAIA,EAAItE,QAAS,CACf,MAAMpD,GAAO2H,EAAAA,EAAAA,IAAgBD,EAAK3L,GAClCC,EAAY,IAAKgE,GACnB,IAEN,EAGI4H,EAAkB5H,IACtBhE,EAAYgE,EAAK,EA8BnB,OA3BA1C,EAAAA,EAAAA,kBAAgB,KACdnC,EAAKoC,QACHC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACC,KAAM9B,EAASF,MAAOA,EAAOiC,OAAQrB,EAAQrC,SAAA,EAClD2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMI,OAAM,CAACC,aAAW,EAAA7D,UACvB2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMM,MAAK,CAACC,GAAG,KAAI/D,SAAEyB,OAExBkC,EAAAA,EAAAA,KAACH,EAAAA,EAAMQ,KAAI,CAAAhE,UACT2D,EAAAA,EAAAA,KAACiK,EAAAA,EAAU,CACTC,IAAKP,EACLL,OAAQA,EACRG,SAAUA,EACVtL,SAAUA,EACV0C,SAAUmJ,EACVG,cAAY,OAGhBvK,EAAAA,EAAAA,MAACC,EAAAA,EAAMoB,OAAM,CAAA5E,SAAA,EACX2D,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,OAAOsF,QAASA,IAAMzC,IAAUrC,SAC7CsB,EAAE,iBAELqC,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,UAAUsF,QAASxC,EAAatC,SAC7CsB,EAAE,sBAIV,IAEI,CACLe,UACA0C,OAxEc6H,IACdqB,EAAUrB,GACVhL,GAAgB,EAAK,EAuEtB,E,eC7HH,MAAMb,EAAMC,SAASC,cAAc,OAC7BC,EAAOC,EAAAA,WAAoBJ,GA8JjC,EAxJ8BqN,CAAC/M,EAAgB,CAAC,EAAGgN,KACjD,MAAM,EAAE/M,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAC1CC,UAAW,8BAGP,MAAEC,EAAQH,EAAE,SAAQ,UAAEI,GAAcL,GACnCM,EAASC,IAAmBC,EAAAA,EAAAA,WAAS,IACrCmM,EAAQC,IAAapM,EAAAA,EAAAA,UAAS,IAC/BoL,EAAqB,CACzBxL,MAAOH,EAAE,SACT4L,SAAU,CAAC,eAAgB,WAAY,SACvCC,WAAY,CACVpK,aAAc,CACZwB,KAAM,SACN9C,MAAOH,EAAE,kCACTgN,QAASD,EAAStL,cAEpBwL,SAAU,CACRhK,KAAM,SACN9C,MAAOH,EAAE,8BACTgN,QAASD,EAASE,UAEpB7N,MAAO,CACL6D,KAAM,SACN9C,MAAOH,EAAE,2BACTgN,QAASD,EAASG,UAIlBpB,EAAqB,CACzBrK,aAAc,CACZ,aAAc,CACZoL,UAAW,OACXX,UAAYnN,KAGNA,EAAMuC,OAFS,GAEcvC,EAAMuC,OADpB,KAEVtB,EAAE,wCAMjBiN,SAAU,CACR,aAAc,CACZJ,UAAW,OACXX,UAAYnN,KAGNA,EAAMuC,OAFS,GAEcvC,EAAMuC,OADpB,KAEVtB,EAAE,oCAMjBZ,MAAO,CACL,aAAc,CACZyN,UAAW,QACXX,UAAYnN,KACNA,IAAUoO,EAAAA,EAAQ/N,MAAMgO,KAAKrO,KACxBiB,EAAE,qCAOZQ,EAAUC,IAAeF,EAAAA,EAAAA,WAC9BwL,EAAAA,EAAAA,IAAaJ,IAGTK,GAAU9F,EAAAA,EAAAA,QAEb,MAEGnF,EAAUA,KACdN,EAAYD,GACZF,GAAgB,EAAM,EAQlBU,EAAeyG,UAAkB,IAADwE,EACpChL,EAAMC,iBACND,EAAME,wBAC+B,QAArB8K,EAAMD,EAAQtF,eAAO,IAAAuF,OAAA,EAAfA,EAAiBC,cAMnC9L,aAAqBmB,UACvBnB,EAAU,CACRqB,aAAcjB,EAASiB,aAAa1C,MACpCkO,SAAUzM,EAASyM,SAASlO,MAC5BK,MAAOoB,EAASpB,MAAML,MACtBuM,QAASoB,IAERlF,MAAK,KACJmF,EAAU,IACV5L,GAAS,IAEV4G,OAAOwE,IACN,GAAIA,EAAItE,QAAS,CACf,MAAMpD,GAAO2H,EAAAA,EAAAA,IAAgBD,EAAK3L,GAClCC,EAAY,IAAKgE,GACnB,IAEN,EAGI4H,EAAkB5H,IACtBhE,EAAYgE,EAAK,EA8BnB,OA3BA1C,EAAAA,EAAAA,kBAAgB,KACdnC,EAAKoC,QACHC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACC,KAAM9B,EAASF,MAAOA,EAAOiC,OAAQrB,EAAQrC,SAAA,EAClD2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMI,OAAM,CAACC,aAAW,EAAA7D,UACvB2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMM,MAAK,CAACC,GAAG,KAAI/D,SAAEyB,OAExBkC,EAAAA,EAAAA,KAACH,EAAAA,EAAMQ,KAAI,CAAAhE,UACT2D,EAAAA,EAAAA,KAACiK,EAAAA,EAAU,CACTC,IAAKP,EACLL,OAAQA,EACRG,SAAUA,EACVtL,SAAUA,EACV0C,SAAUmJ,EACVG,cAAY,OAGhBvK,EAAAA,EAAAA,MAACC,EAAAA,EAAMoB,OAAM,CAAA5E,SAAA,EACX2D,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,OAAOsF,QAASA,IAAMzC,IAAUrC,SAC7CsB,EAAE,iBAELqC,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,UAAUsF,QAASxC,EAAatC,SAC7CsB,EAAE,sBAIV,IAEI,CACLe,UACA0C,OAnEc6H,IACdqB,EAAUrB,GACVhL,GAAgB,EAAK,EAkEtB,E,eClKY,SAAS+M,EAAYC,GAClC,MAAM,OAAEC,GAAWC,EAAAA,GAAaC,YAChChH,EAAAA,EAAAA,YAAU,KACR8G,EAAOD,EAAK,GACX,CAACA,EAAKnN,MAAOmN,EAAKI,SAAUJ,EAAKxM,YAAawM,EAAKK,UACxD,C,iCCIA,MA0BA,EA1B4BC,EAC1BC,QAAO,EACPC,gBAAe,MAEf,MAAM,EAAE9N,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,YAEzD6N,EAAAA,EAAAA,IAAU,CACRF,OACAG,QAAS,GAAGhO,EAAE,iBAAiBA,EAAE,yBAGnCiO,EAAAA,EAAAA,IACEC,EAAAA,EAAAA,cACGjN,IACC,GAAI6M,GAAgBD,EAAM,CACxB,MAAMlJ,EAAM3E,EAAE,oBACdiB,EAAMC,iBACND,EAAMkN,YAAcxJ,CACtB,IAEF,CAACkJ,EAAMC,IAET,CAAEM,SAAS,GACZ,ECzBG3O,EAAMC,SAASC,cAAc,OAC7BC,EAAOC,EAAAA,WAAoBJ,GAuIjC,EAjI+BgN,CAAC1M,EAAgB,CAAC,KAC/C,MAAM,EAAEC,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAC1CC,UAAW,cAGP,MAAEC,EAAQH,EAAE,aAAgBD,GAC3BM,EAASC,IAAmBC,EAAAA,EAAAA,WAAS,GACtCmM,GAASxG,EAAAA,EAAAA,QAAO,IAChBmI,GAAYnI,EAAAA,EAAAA,SAAO,GACnBhB,EAAQX,IAERoH,EAAqB,CACzBxL,MAAOH,EAAE,YACT6L,WAAY,CACVyC,cAAe,CACbrL,KAAM,SACN9C,MAAOH,EAAE,0BACTc,YAAad,EAAE,4BAIf8L,EAAqB,CACzBwC,cAAe,CACb,aAAc,CACZC,UAAU,MAIT/N,EAAUC,IAAeF,EAAAA,EAAAA,WAC9BwL,EAAAA,EAAAA,IAAaJ,IAGTK,GAAU9F,EAAAA,EAAAA,QAEb,MAiBGnF,EAAUA,KACdT,GAAgB,GAChBoM,EAAOhG,QAAU,GACjBjG,GAAYsL,EAAAA,EAAAA,IAAaJ,GAAQ,EAY7B3K,EAAeyG,UACnBxG,EAAMC,iBACND,EAAME,kBACNkN,EAAU3H,SAAU,GACpB8H,EAAAA,EAAAA,IAAmB9B,EAAOhG,SACvBc,MAAK,KACJtC,EAAMzB,OAAO,CACXkB,IAAK3E,EAAE,eAAgB,CAAEE,UAAW,UACpChC,QAAS,YAEX6C,GAAS,IAEV4G,OAAOwE,IACN,GAAIA,EAAItE,QAAS,CACf,MAAMpD,GAAO2H,EAAAA,EAAAA,IAAgBD,EAAK3L,GAClCC,EAAY,IAAKgE,GACnB,KAEDgK,SAAQ,KACPJ,EAAU3H,SAAU,CAAK,GACzB,EAGA2F,EAAkB5H,IACtBhE,EAAYgE,EAAK,EAiCnB,OA9BA1C,EAAAA,EAAAA,kBAAgB,KACdnC,EAAKoC,QACHC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACC,KAAM9B,EAASF,MAAOA,EAAOiC,OAAQrB,EAAQrC,SAAA,EAClD2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMI,OAAM,CAACC,aAAW,EAAA7D,UACvB2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMM,MAAK,CAACC,GAAG,KAAI/D,SAAEyB,OAExBkC,EAAAA,EAAAA,KAACH,EAAAA,EAAMQ,KAAI,CAAAhE,UACT2D,EAAAA,EAAAA,KAACiK,EAAAA,EAAU,CACTC,IAAKP,EACLL,OAAQA,EACRG,SAAUA,EACVtL,SAAUA,EACV0C,SAAUmJ,EACVG,cAAY,OAGhBvK,EAAAA,EAAAA,MAACC,EAAAA,EAAMoB,OAAM,CAAA5E,SAAA,EACX2D,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,OAAOsF,QAASA,IAAMzC,IAAUrC,SAC7CsB,EAAE,SAAU,CAAEE,UAAW,YAE5BmC,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CACLmL,SAAUL,EAAU3H,QACpBxI,QAAQ,UACRsF,QAASxC,EAAatC,SACrBsB,EAAE,SAAU,CAAEE,UAAW,iBAIjC,IAEI,CACLa,UACA0C,OApEagE,UACR6D,IAGLoB,EAAOhG,QAAU4E,QAxBVqD,EAAAA,EAAAA,IAAkBjC,EAAOhG,SAASc,MAAMoH,IACrC,OAAJA,QAAI,IAAJA,GAAAA,EAAMC,gBACRpO,EAAY,IACPD,EACH8N,cAAe,CACbvP,MAAO6P,EAAKC,eACZlO,WAAW,EACXC,SAAU,KAGhB,IAgBFN,GAAgB,GAAK,EA+DtB,E,eC7HH,MAmPA,EAnPewO,IACb,MAAMC,GAAU7I,EAAAA,EAAAA,QAAO,MACC,OAApB6I,EAAQrI,UAEVqI,EAAQrI,QAAU7G,EAAAA,WAAoBH,SAASC,cAAc,SAG/D,MAAM,EAAEK,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAAEC,UAAW,kBACnD8O,GAAS9I,EAAAA,EAAAA,QAAmB4I,GAC5BG,GAAc/I,EAAAA,EAAAA,UACd3H,GAAU2H,EAAAA,EAAAA,SAAO,GACjBgJ,EAAsB,SAAS9B,KAAK4B,EAAOtI,UAE1CyI,EAAWC,IAAgB7O,EAAAA,EAAAA,WAAS,IACpC8O,EAASC,IAAc/O,EAAAA,EAAAA,UAAqB,CACjD8G,WAAY,GACZkI,YAAa,GACbC,QAAQ,KAEHC,EAASC,IAAcnP,EAAAA,EAAAA,UAAoB,CAChDxB,MAAO,GACP4B,WAAW,EACXC,SAAU,KAEN+O,GAAazJ,EAAAA,EAAAA,QAAOmJ,GACpBO,GAAa1J,EAAAA,EAAAA,QAAOuJ,GAEpBI,EAAmBA,KACvBtR,EAAQmI,SAAU,GAClBoJ,EAAAA,EAAAA,IAAad,EAAOtI,SACjBc,MAAMoH,IACLU,EAAWV,EAAK,IAEjBH,SAAQ,KACPlQ,EAAQmI,SAAU,CAAK,GACvB,EAsBAvE,EAAOA,KACNgN,GACHC,GAAa,EACf,EASI1H,EAAQA,KACZ0H,GAAa,GA/BbE,EAAW,CACTjI,WAAY,GACZkI,YAAa,GACbC,QAAQ,IAKVE,EAAW,CACT3Q,MAAO,GACP4B,WAAW,EACXC,SAAU,KAIZqO,EAAYvI,aAAUU,EAwBtB,OAHU,IAAI2I,SAAeC,IAC3BpJ,WAAWoJ,EAAS,GAAG,GAEjB,EA+BJC,EAAgBC,IACpBA,EAAIhP,iBACJwO,EAAW,CACT3Q,MAAOmR,EAAItO,OAAO7C,OAAS,GAC3B4B,WAAW,EACXC,SAAU,IACV,EAGEuP,EAAaA,KACjB,MAAMC,EAAKT,EAAWjJ,QAChB2J,EAAKT,EAAWlJ,QAOtB,MANU,CACR8I,SAAY,OAAFY,QAAE,IAAFA,IAAAA,EAAIZ,QACdnI,WAAc,OAAF+I,QAAE,IAAFA,OAAE,EAAFA,EAAI/I,WAChBF,aAAckJ,EAAGtR,MAGX,EAWJiC,EAAgBkP,IACpBA,EAAIhP,iBACCuO,EAAQ1Q,OAITkQ,EAAYvI,SACduI,EAAYvI,SACd,GAGFD,EAAAA,EAAAA,YAAU,KACJyI,GACFW,GACF,GACC,KAEH9N,EAAAA,EAAAA,kBAAgB,KACd6N,EAAWlJ,QAAU+I,EACrBE,EAAWjJ,QAAU2I,CAAO,GAC3B,CAACA,EAASI,KAEbhJ,EAAAA,EAAAA,YAAU,KAERsI,EAAQrI,QAAQ1E,QACdC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CACJoO,KAAK,KACLnQ,MAAM,UACNgC,KAAMgN,EACN/M,OAAQA,IAAMsF,IACd6I,UAAQ,EAAA7R,SAAA,EACR2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMI,OAAM,CAACC,aAAW,EAAA7D,UACvB2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMM,MAAK,CAACC,GAAG,KAAI/D,SAAEsB,EAAE,cAE1BqC,EAAAA,EAAAA,KAACH,EAAAA,EAAMQ,KAAI,CAAAhE,UACTuD,EAAAA,EAAAA,MAACU,EAAAA,EAAI,CAAC6N,YAAU,EAACC,SAAUzP,EAAatC,SAAA,EACtCuD,EAAAA,EAAAA,MAACU,EAAAA,EAAKC,MAAK,CAACC,UAAU,OAAOC,UAAU,OAAMpE,SAAA,EAC3C2D,EAAAA,EAAAA,KAAA,OAAKS,UAAU,+EAA8EpE,UAC3F2D,EAAAA,EAAAA,KAAA,OACEqO,IAAY,OAAPrB,QAAO,IAAPA,OAAO,EAAPA,EAASE,YACdoB,IAAI,cACJC,MAAM,OACNC,OAAO,YAGX5O,EAAAA,EAAAA,MAAC6O,EAAAA,EAAU,CAAApS,SAAA,EACT2D,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAO,CACXC,KAAK,OACL8N,aAAa,MACbjH,YAAa9J,EAAE,eACfW,UAAkB,OAAP8O,QAAO,IAAPA,OAAO,EAAPA,EAAS9O,UACpBuC,SAAU+M,EACVlR,MAAO0Q,EAAQ1Q,SAEjBsD,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CACLC,QAASqM,EACT3R,QAAQ,oBACRiC,MAAOH,EAAE,UAAW,CAAEE,UAAW,SACjC0D,MAAO,CACLoN,qBAAsB,WACtBC,wBAAyB,YACzBvS,UACF2D,EAAAA,EAAAA,KAAC6O,EAAAA,GAAI,CAAC/S,KAAK,oBAGbkE,EAAAA,EAAAA,KAACM,EAAAA,EAAKK,QAAQG,SAAQ,CAACF,KAAK,UAASvE,SAC3B,OAAP+Q,QAAO,IAAPA,OAAO,EAAPA,EAAS7O,kBAKhByB,EAAAA,EAAAA,KAAA,OAAKS,UAAU,SAAQpE,UACrB2D,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACN,KAAK,SAASyL,UAAWe,EAAQ1Q,MAAML,SAC5CsB,EAAE,SAAU,CAAEE,UAAW,qBAMrC,IAuBH,MApBU,CACRwH,QACAvF,OACAyG,MAAQuI,IACF5S,EAAQmI,UAGZuI,EAAYvI,QAAUyK,EACX,OAAP9B,QAAO,IAAPA,GAAAA,EAASG,QACXrN,KACO,GAEFgP,KAEThB,aACA7I,kBAzGyB8J,IACzB,MAAMC,EAAIlB,IACNkB,EAAE7B,SACJ4B,EAAIjK,aAAekK,EAAElK,aACrBiK,EAAI/J,WAAagK,EAAEhK,WACrB,EAqGAwI,mBACA/H,mBA5JyBA,CAACwJ,EAAoB,MAC9C,MAAMC,EAAaD,EAAIhH,MAAMkH,GACF,iBAAlBA,EAAEC,cAGLpB,EAAKT,EAAWlJ,QAoBtB,OAnBI6K,GAMElB,EAAGtR,OACL2Q,EAAW,IACNW,EACH1P,WAAW,EACXC,SAAU2Q,EAAWG,YAGzB7B,IACA1N,KAEAuF,IAGK6J,CAAU,EAsIX,EC3NV,EA5B4BlD,IAC1B,MAAOsD,EAAgBC,IAAqBrR,EAAAA,EAAAA,WAAS,GAC/CsR,GAAQ3L,EAAAA,EAAAA,QAA8B,MAuB5C,OARAO,EAAAA,EAAAA,YAAU,KACJ4H,GAdAwD,EAAMnL,SACRoL,aAAaD,EAAMnL,SAErBmL,EAAMnL,QAAUE,YAAW,KACzBgL,GAAkB,EAAK,GACtBjU,EAAAA,MAIHmU,aAAaD,EAAMnL,SACnBkL,GAAkB,GAQlB,GACC,CAACvD,IAEG,CAAEsD,iBAAgB,C,oHC1B3B,MAAMI,EAAUC,EAAAA,GAAQC,kBAAoBhV,EAAAA,GACtCiV,EAAgB,CACpBC,MAAO,CACLC,YClC81kB,CAACC,cAAc,CAAClS,MAAM,gBAAgBmS,KAAK,+nBAA+nBC,WAAW,CAACC,KAAK,OAAOC,KAAK,QAAQC,WAAW,CAACC,SAAS,WAAWC,UAAU,YAAYC,IAAI,MAAMC,KAAK,OAAOC,SAAS,WAAWC,WAAW,aAAaC,SAAS,WAAWC,eAAe,eAAeC,cAAc,gBAAgBC,YAAY,cAAc/T,OAAO,SAASgU,iBAAiB,mBAAmBC,SAAS,WAAWC,cAAc,gBAAgBC,MAAM,SAASC,QAAQ,UAAUC,iBAAiB,mBAAmBC,mBAAmB,qBAAqBC,cAAc,gBAAgBC,kBAAkB,oBAAoBC,MAAM,QAAQC,aAAa,eAAeC,QAAQ,sBAAsBC,QAAQ,iBAAiBC,YAAY,sBAAsBxJ,MAAM,QAAQyJ,eAAe,aAAaC,SAAS,iBAAiBC,SAAS,iBAAiBC,SAAS,iBAAiBC,OAAO,WAAWhB,cAAc,CAACpT,MAAM,gBAAgBqU,MAAM,QAAQC,YAAY,eAAeC,WAAW,aAAaC,SAAS,mBAAmBC,UAAU,YAAYC,QAAQ,UAAUC,WAAW,CAACC,IAAI,MAAMC,MAAM,QAAQC,QAAQ,UAAUC,MAAM,SAASC,OAAO,SAASxC,SAAS,WAAWyC,YAAY,SAASC,UAAU,CAAClV,MAAM,kCAAkCmV,WAAW,+CAA+CC,QAAQ,mCAAmCC,IAAI,wCAAyCC,WAAW,cAAcC,OAAO,CAACC,WAAW,CAACC,KAAK,cAAcC,KAAK,CAACD,KAAK,UAAUE,MAAM,CAACF,KAAK,QAAQG,WAAW,aAAaC,iBAAiB,mBAAmBC,cAAc,gBAAgBC,cAAc,gBAAgBC,4BAA4B,8BAA8BC,qBAAqB,uBAAuBC,YAAY,cAAcC,UAAU,aAAaC,KAAK,CAACX,KAAK,cAAcY,SAAS,kBAAkBC,KAAK,CAACC,OAAO,CAACH,KAAK,CAAC1X,MAAM,OAAO8F,IAAI,CAACgS,MAAM,0BAA0BC,SAAS,CAAC/X,MAAM,WAAWiL,YAAY,yBAAyB+M,WAAW,SAASC,YAAY,OAAOC,QAAQ,CAACnB,KAAK,UAAU9W,QAAQ,CAACkY,OAAO,iBAAiBC,MAAM,kBAAkBC,QAAQ,CAACtB,KAAK,UAAU9W,QAAQ,CAACqY,GAAG,YAAYC,GAAG,YAAYC,GAAG,YAAYC,GAAG,YAAYC,GAAG,YAAYC,GAAG,cAAcC,KAAK,CAAC7B,KAAK,QAAQ8B,GAAG,CAAC9B,KAAK,mBAAmB+B,MAAM,CAAC/B,KAAK,QAAQgC,UAAU,YAAYC,UAAU,eAAeC,WAAW,CAACpB,OAAO,CAACqB,KAAK,CAAClZ,MAAM,aAAamZ,IAAI,eAAerT,IAAI,CAACgS,MAAM,wBAAwBsB,WAAW,gCAAgCC,SAAS,kCAAkC5F,KAAK,CAACzT,MAAM,iBAAiBsZ,QAAQ,YAAYC,SAAS,CAAC1B,OAAO,CAAC1O,IAAI,CAACnJ,MAAM,YAAY8F,IAAI,CAACgS,MAAM,+BAA+BxY,KAAK,CAACU,MAAM,iBAAiBgY,WAAW,SAASC,YAAY,MAAMuB,UAAU,aAAaC,OAAO,CAAC1C,KAAK,UAAU2C,QAAQ,CAAC3C,KAAK,WAAW4C,OAAO,CAAC5C,KAAK,YAAY6C,KAAK,CAAC7C,KAAK,YAAY8C,SAAS,gBAAgBjC,KAAK,CAACC,OAAO,CAAC1O,IAAI,CAACnJ,MAAM,MAAM8F,IAAI,CAACgS,MAAM,yBAAyBxY,KAAK,CAACU,MAAM,iBAAiBgY,WAAW,SAASC,YAAY,OAAO6B,aAAa,CAAC/C,KAAK,iBAAiBgD,eAAe,CAAChD,KAAK,iBAAiBiD,MAAM,CAACjD,KAAK,QAAQsB,QAAQ,UAAU4B,KAAK,SAASC,YAAY,CAAC5Y,MAAM,+BAA+B0W,WAAW,SAASmC,WAAW,SAASC,OAAO,CAACtC,MAAM,oBAAoBhS,IAAI,CAACgS,MAAM,4BAA4BuC,aAAa,CAACC,WAAW,0CAA0CC,YAAY,+BAA+BC,sBAAsB,kBAAkBC,oBAAoB,gBAAgBC,qBAAqB,iBAAiB1C,WAAW,SAASmC,WAAW,SAASC,OAAO,CAACtC,MAAM,oBAAoBhS,IAAI,CAACgS,MAAM,0BAA0B6C,UAAU,2BAA2BC,cAAc,mDAAmDC,UAAU,CAACvZ,MAAM,iBAAiBsW,KAAK,CAACC,OAAO,CAACjV,aAAa,CAAC5C,MAAM,eAAe8F,IAAI,CAACgS,MAAM,gCAAgCgD,MAAM,sCAAsCnY,UAAU,CAAC3C,MAAM,WAAWyT,KAAK,gCAAgC3N,IAAI,CAACgS,MAAM,4BAA4BgD,MAAM,gCAAgCC,UAAU,+CAA+CtH,KAAK,CAACzT,MAAM,eAAegb,SAAS,CAAChb,MAAM,YAAYib,aAAa,CAACjb,MAAM,eAAeiL,YAAY,2FAA2F+M,WAAW,SAASmC,WAAW,SAASe,SAAS,gBAAgBC,SAAS,CAACC,WAAW,UAAUC,UAAU,SAASC,QAAQ,UAAUC,SAAS,CAACja,MAAM,WAAWyV,KAAK,yCAAyCe,MAAM,qBAAqB0D,QAAQ,gBAAgBC,SAAS,OAAOC,SAAS,QAAQC,cAAc,yCAAyC,OAAS,CAACra,MAAM,kBAAkBsa,eAAe,uHAAuHC,kBAAkB,6HAA6HC,IAAI,mCAAmCjT,MAAM,UAAUuL,SAAS,CAAC9S,MAAM,WAAWya,eAAe,WAAWC,qBAAqB,UAAUC,eAAe,aAAajE,WAAW,UAAUkE,MAAM,CAACC,UAAU,QAAQC,oBAAoB,cAAcC,oBAAoB,yBAAyBC,IAAI,MAAMC,cAAc,iBAAiBC,cAAc,iBAAiBC,YAAY,iBAAiBC,KAAK,OAAOC,IAAI,MAAMC,MAAM,QAAQC,KAAK,QAAQC,SAAS,CAACC,MAAM,QAAQC,MAAM,QAAQC,MAAM,QAAQC,UAAU,0BAA0BC,WAAW,4BAA4BC,YAAY,yBAAyBC,cAAc,4BAA4BC,QAAQ,CAACC,gBAAgB,cAAcC,SAAS,WAAWC,UAAU,QAAQhC,SAAS,OAAOiC,WAAW,SAASC,SAAS,OAAO1B,eAAe,aAAajE,WAAW,SAASjC,UAAU,0BAA0B6H,aAAa,2GAA2GC,WAAW,2IAA2IC,SAAS,wCAAwCvJ,YAAY,CAACjT,MAAM,cAAcya,eAAe,cAAcC,qBAAqB,aAAapE,KAAK,CAACC,OAAO,CAACmD,SAAS,CAAChb,MAAM,YAAYsW,OAAO,CAACtW,MAAM,SAAS+d,SAAS,CAACC,WAAW,qDAAqD/C,aAAa,CAACjb,MAAM,eAAeiL,YAAY,2FAA2FgR,eAAe,aAAajE,WAAW,UAAU/D,KAAK,CAAC3S,MAAM,OAAO2c,aAAa,CAACC,QAAQ,UAAU5e,KAAK,OAAO6e,OAAO,UAAUC,cAAc,SAASC,iBAAiB,YAAYC,UAAU,YAAYC,mBAAmB,qBAAqBC,QAAQ,8BAA8BC,KAAK,QAAQC,IAAI,CAACpd,MAAM,eAAeqd,WAAW,gBAAgB5C,eAAe,gBAAgBC,qBAAqB,eAAe4C,kBAAkB,oBAAoBhH,KAAK,CAACC,OAAO,CAACmD,SAAS,CAAChb,MAAM,YAAYsB,MAAM,CAACtB,MAAM,WAAWiL,YAAY,sBAAsBnF,IAAI,CAACgS,MAAM,4BAA4BgD,MAAM,kCAAkC+D,KAAK,CAAC7e,MAAM,sDAAsD8F,IAAI,CAACgS,MAAM,yEAAyE7D,KAAK,CAACjU,MAAM,qBAAqB8F,IAAI,CAACgS,MAAM,0BAA0BxB,OAAO,CAACtW,MAAM,SAAS8F,IAAI,CAACgS,MAAM,4BAA4BmD,aAAa,CAACjb,MAAM,eAAeiL,YAAY,2FAA2F6T,kBAAkB,qBAAqB7C,eAAe,aAAa8C,gBAAgB,2BAA2B,uBAAuB,iCAAiCC,aAAa,CAACC,QAAQ,UAAUC,WAAW,iBAAiBC,WAAW,aAAaC,KAAK,sEAAsEC,UAAU,kBAAkBC,kBAAkB,+BAA+B/Z,OAAO,CAACga,IAAI,CAACzL,SAAS,YAAYE,IAAI,OAAOwL,KAAK,QAAQC,OAAO,SAASC,QAAQ,UAAUC,QAAQ,WAAWjK,OAAO,UAAUT,MAAM,QAAQ2K,OAAO,SAASC,SAAS,YAAYC,WAAW,cAActf,OAAO,CAACyK,YAAY,WAAW8U,OAAO,CAACC,SAAS,6HAA0HC,WAAW,CAAC3gB,KAAK,SAAS4gB,QAAQ,cAAcC,cAAc,CAAC7e,MAAM,UAAU2J,YAAY,sBAAsBnF,IAAI,CAACgS,MAAM,6BAA6BsI,SAAS,CAACC,MAAM,gJAAiJ5R,KAAK,gDAAiD6R,QAAQ,qJAAqJC,SAAS,0BAA0BC,gBAAgB,eAAe1a,IAAI,CAACgS,MAAM,oBAAoB2I,aAAa,CAACC,UAAU,wDAAwDC,SAAS,6DAA6DhM,MAAM,CAACiM,kBAAkB,qBAAqBC,UAAU,wCAAyCC,WAAW,yCAAyCC,WAAW,sFAAsFC,YAAY,mBAAmB1hB,KAAK,CAACU,MAAM,OAAO8F,IAAI,CAACgS,MAAM,wBAAwBgD,MAAM,oDAAoDC,UAAU,6DAA6Dxa,MAAM,CAACP,MAAM,QAAQ8F,IAAI,CAACgS,MAAM,2BAA2B/J,SAAS,CAAC/N,MAAM,WAAW8F,IAAI,CAACgS,MAAM,4BAA4BmJ,UAAU,0DAA0DC,eAAe,CAACrN,WAAW,uBAAuB0M,SAAS,yBAAyBY,aAAa,wIAAwI5gB,MAAM,CAACP,MAAM,QAAQ8F,IAAI,CAACgS,MAAM,4BAA4B5C,aAAa,CAAC8C,WAAW,SAASoJ,WAAW,uBAAuBD,aAAa,wIAAwI5gB,MAAM,CAACP,MAAM,YAAY8F,IAAI,CAACgS,MAAM,4BAA4BuJ,MAAM,CAACC,QAAQ,+BAA+BC,OAAO,0BAA0BC,iBAAiB,CAAC3S,SAAS,wCAAwCuS,WAAW,uBAAuB7gB,MAAM,CAACP,MAAM,QAAQ8F,IAAI,CAACgS,MAAM,2BAA2B2J,YAAY,yBAAyBC,cAAc,mGAAmGC,aAAa,eAAeC,cAAc,mCAAmCC,eAAe,CAAChO,WAAW,iBAAiB0M,SAAS,oBAAoBuB,cAAc,qFAAqFC,aAAa,8FAA8FC,SAAS,0BAA0BjU,SAAS,CAAC/N,MAAM,WAAW8F,IAAI,CAACgS,MAAM,4BAA4BrV,OAAO,0CAA0Cwe,UAAU,yDAAyDgB,iBAAiB,CAACjiB,MAAM,yBAAyByU,SAAS,CAACZ,WAAW,WAAWqO,YAAY,eAAe3C,IAAI,CAACG,QAAQ,UAAUyC,aAAa,gBAAgBC,QAAQ,UAAU,UAAY,aAAa1C,QAAQ,CAACrH,QAAQ,UAAUkI,SAAS,OAAO3d,aAAa,CAAC5C,MAAM,eAAe8F,IAAI,gCAAgCuc,UAAU,qCAAqCjU,SAAS,CAACpO,MAAM,WAAWsiB,QAAQ,yCAAyCxc,IAAI,4BAA4Buc,UAAU,gCAAgCtH,UAAU,qDAAqDwH,OAAO,CAACviB,MAAM,gBAAgBwiB,SAAS,WAAWC,cAAc,0BAA0BC,OAAO,SAASC,YAAY,6BAA6B,QAAU,SAAS7c,IAAI,2BAA2B8c,IAAI,CAAC5iB,MAAM,YAAY6iB,QAAQ,CAAC7iB,MAAM,UAAUiL,YAAY,sBAAsBnF,IAAI,4BAA4BwD,SAAS,CAACtJ,MAAM,WAAWiL,YAAY,kBAAkBkX,aAAa,CAAC9J,QAAQ,sBAAsByK,QAAQ,UAAUnN,MAAM,CAAC3V,MAAM,sBAAsBiC,YAAY,2DAA2D8gB,iBAAiB,CAAC/iB,MAAM,oBAAoBiC,YAAY,mEAAmE+gB,oCAAoC,CAAChjB,MAAM,uCAAuCiC,YAAY,sDAAsDmgB,QAAQ,CAAC/J,QAAQ,UAAU4K,iBAAiB,eAAeC,gBAAgB,kBAAkBC,kBAAkB,oFAAqF5iB,MAAM,CAACP,MAAM,SAASojB,UAAU,CAACpjB,MAAM,YAAY8F,IAAI,8BAA8Bud,KAAK,CAACrjB,MAAM,mBAAmB8F,IAAI,6BAA6Bwd,eAAe,WAAWC,aAAa,CAACvjB,MAAM,mBAAmB8F,IAAI,CAACgS,MAAM,oCAAoCrV,OAAO,2CAA2Cwe,UAAU,4CAA4CuC,SAAS,CAACxjB,MAAM,gBAAgByjB,aAAa,CAACzjB,MAAM,yBAAyB,UAAY,CAACqY,QAAQ,YAAYqL,KAAK,CAAC1jB,MAAM,qBAAqB+W,KAAK,uEAAuE4M,UAAU,CAACriB,MAAM,YAAYtB,MAAM,uDAAuDyhB,YAAY,eAAeC,cAAc,gEAAgEkC,kBAAkB,SAASC,eAAe,yBAAyBhd,MAAM,CAAC6H,OAAO,iBAAiBoV,gBAAgB,iCAAiCC,aAAa,uBAAuBC,uBAAuB,mCAAmCpE,OAAO,wCAAwCqE,aAAa,qBAAqBC,iBAAiB,CAAC5iB,MAAM,oBAAoB6iB,QAAQ,WAAWC,iBAAiB,CAAC9iB,MAAM,gBAAgBmS,KAAK,sCAAsC4Q,OAAO,mBAAmBC,IAAI,aAAa9jB,OAAO,iBAAiB+jB,gBAAgB,CAAChb,OAAO,SAASib,MAAM,QAAQC,MAAM,QAAQ/V,OAAO,WAAWgW,KAAK,SAASC,UAAU,YAAYC,MAAM,SAASC,OAAO,SAASC,UAAU,YAAYC,WAAW,gDAAgDC,SAAS,WAAWC,UAAU,YAAYC,WAAW,0BAA0BC,OAAO,SAASC,gBAAgB,yBAAyBC,mBAAmB,8BAA8BC,kBAAkB,yBAAyBC,cAAc,eAAeC,iBAAiB,mBAAmBrB,QAAQ,CAAC7iB,MAAM,UAAUmkB,MAAM,QAAQtH,OAAO,SAASuH,OAAO,SAASC,WAAW,SAASC,aAAa,YAAYC,aAAa,CAACvkB,MAAM,cAAciT,YAAY,0BAA0BgM,SAAS,mBAAmBuF,mBAAmB,qBAAqBC,cAAc,qBAAqB,SAAW,WAAWC,aAAa,6IAA6IlO,MAAM,0BAA0BkG,WAAW,mDAAmDiI,KAAK,CAACC,SAAS,yBAAyBC,MAAM,mGAAmGC,MAAM,0EAA0EC,SAAS,iCAAiCC,MAAM,4EAA4EC,OAAO,CAACC,YAAY,SAASllB,MAAM,mBAAmBgG,QAAQ,oCAAoCE,KAAK,CAACgf,YAAY,OAAOllB,MAAM,iBAAiBgG,QAAQ,kCAAkCmf,OAAO,CAACD,YAAY,SAASllB,MAAM,mBAAmBgG,QAAQ,oCAAoCof,IAAI,CAACplB,MAAM,gBAAgBgG,QAAQ,gGAAgGkf,YAAY,QAAQ,OAAS,CAACllB,MAAM,mBAAmBwS,SAAS,wQAAwQ6S,gBAAgB,oQAAoQC,MAAM,mCAAmCC,mBAAmB,+BAA+BC,eAAe,qBAAqBC,cAAc,sCAAsCC,KAAK,CAACC,QAAQ,UAAUC,OAAO,SAASxC,KAAK,OAAOyC,KAAK,OAAO,OAAS,SAASC,SAAS,WAAW5f,KAAK,OAAOif,OAAO,SAAS9mB,SAAS,WAAWgV,MAAM,SAAS0S,OAAO,UAAU3R,OAAO,UAAU/E,OAAO,SAAS2W,aAAa,eAAeC,QAAQ,UAAUC,OAAO,SAASC,KAAK,OAAOC,cAAc,gBAAgBC,OAAO,SAASzR,IAAI,MAAMpC,SAAS,WAAWwC,OAAO,SAASgH,QAAQ,UAAUsK,QAAQ,UAAUC,OAAO,SAASC,WAAW,aAAaC,OAAO,SAASC,QAAQ,UAAUC,UAAU,YAAYpf,MAAM,QAAQ0d,OAAO,SAAS2B,GAAG,KAAKC,MAAM,QAAQC,KAAK,OAAOC,eAAe,iBAAiB,QAAU,UAAUC,MAAM,QAAQtU,IAAI,MAAMuU,eAAe,OAAOC,OAAO,SAASC,OAAO,SAASC,OAAO,SAASnpB,OAAO,SAASC,OAAO,SAASC,QAAQ,UAAUC,QAAQ,UAAU+e,KAAK,QAAQje,OAAO,CAACc,MAAM,iBAAiBwN,SAAS,WAAW7O,QAAQ,UAAU0oB,OAAO,SAASC,UAAU,YAAYC,OAAO,oBAAoBpK,KAAK,OAAOqK,UAAU,CAACC,UAAU,YAAY5K,OAAO,SAAS4J,OAAO,SAAStC,MAAM,QAAQhH,KAAK,QAAQwH,KAAK,CAAC3kB,MAAM,uBAAuB0S,IAAI,iCAAiCwL,KAAK,wCAAwClJ,OAAO,wCAAwCmP,MAAM,uCAAuC3R,SAAS,sCAAsCkV,UAAU,mCAAmClR,MAAM,8EAA+EmR,MAAM,CAAC3pB,KAAK,QAAQ4pB,KAAK,YAAYC,IAAI,oBAAoBC,OAAO,SAASC,SAAS,oBAAoBC,QAAQ,oBAAoBC,qBAAqB,oCAAqC3H,cAAc,CAACtgB,MAAM,YAAYkoB,eAAe,CAACC,QAAQ,0EAA0E7P,KAAK,uBAAuB8P,KAAK,QAAQC,QAAQ,qCAAqCC,kBAAkB,+BAA+BC,0BAA0B,6FAA6FC,YAAY,CAACjW,WAAW,cAAckW,cAAc,yBAAyBC,aAAa,6GAA8GpQ,KAAK,mBAAmB9F,SAAS,CAACmW,eAAe,iBAAiBvF,KAAK,OAAOyC,KAAK,OAAO+C,eAAe,gDAAgDC,cAAc,gBAAgBC,cAAc,gBAAgBC,YAAY,wBAAwBC,UAAU,sBAAsBvW,UAAU,YAAYoQ,QAAQ,UAAUhG,OAAO,SAAS4J,OAAO,SAASwC,IAAI,MAAMC,UAAU,YAAY/E,MAAM,QAAQgF,WAAW,aAAaC,SAAS,WAAW1F,SAAS,WAAWP,MAAM,QAAQjlB,OAAO,SAASmrB,aAAa,eAAelM,KAAK,QAAQmM,SAAS,CAACC,SAAS,WAAW1G,QAAQ,UAAU7N,OAAO,SAASvC,UAAU,YAAYD,SAAS,WAAWgX,UAAU,YAAYC,WAAW,aAAaC,SAAS,WAAW3U,MAAM,QAAQoJ,OAAO,SAAStB,OAAO,SAASsH,MAAM,QAAQwF,aAAa,eAAeC,eAAe,2BAA2BC,OAAO,SAASC,OAAO,SAASC,MAAM,IAAIC,WAAW,OAAOC,SAAS,WAAWC,eAAe,oBAAoBC,YAAY,cAAcC,cAAc,gBAAgBC,MAAM,QAAQC,WAAW,qEAAsEC,SAAS,WAAW7G,SAAS,WAAWP,MAAM,QAAQqH,UAAU,YAAYC,UAAU,MAAMC,SAAS,aAAaC,aAAa,aAAaC,QAAQ,iBAAiB5B,UAAU,UAAUD,YAAY,YAAY8B,cAAc,iBAAiBhX,QAAQ,CAAC7T,MAAM,eAAesS,KAAK,OAAOwY,KAAK,OAAOC,kBAAkB,qCAAsC3I,KAAK,CAAC1jB,MAAM,4BAA4BssB,QAAQ,CAACtsB,MAAM,mBAAmBusB,YAAY,CAACvsB,MAAM,WAAWiL,YAAY,OAAOnF,IAAI,6BAA6B0mB,YAAY,CAACxsB,MAAM,WAAWiL,YAAY,OAAOnF,IAAI,6BAA6B2mB,QAAQ,CAACzsB,MAAM,gBAAgBiL,YAAY,UAAUnF,IAAI,kCAAkC4mB,QAAQ,CAAC1sB,MAAM,gBAAgBiL,YAAY,SAASnF,IAAI,kCAAkC6mB,QAAQ,CAAC3sB,MAAM,gBAAgBiL,YAAY,kBAAkBnF,IAAI,kCAAkC8mB,YAAY,CAACtrB,MAAM,qBAAqBtB,MAAM,gCAAgCyT,KAAK,mIAAmIhF,KAAK,iDAAiDoe,iBAAiB,mBAAmBC,cAAc,gBAAgBC,UAAU,CAAC/sB,MAAM,YAAY8F,IAAI,6BAA6BknB,eAAe,yDAAyDC,SAAS,CAACjtB,MAAM,WAAW+W,KAAK,4BAA4BjR,IAAI,CAACgS,MAAM,4BAA4BoV,UAAU,6BAA6BC,WAAW,0DAA0DC,cAAc,CAACptB,MAAM,gBAAgB+W,KAAK,0DAA0DjR,IAAI,CAACgS,MAAM,iCAAiCoV,UAAU,oCAAoCG,eAAe,CAACrtB,MAAM,UAAU,OAAS,iBAAiB+W,KAAK,mDAAmDuW,WAAW,CAACttB,MAAM,OAAO8F,IAAI,wBAAwBiV,UAAU,oDAAoDiS,eAAe,oDAAoDO,eAAe,CAACvtB,MAAM,WAAW+W,KAAK,+EAA+EjR,IAAI,4BAA4B0nB,eAAe,oDAAoDR,eAAe,wDAAwDS,YAAY,CAACztB,MAAM,QAAQ+W,KAAK,sCAAsCjR,IAAI,CAACgS,MAAM,yBAAyBoV,UAAU,4BAA4BQ,YAAY,qBAAqBC,WAAW,sGAAsGC,UAAU,2BAA2BC,WAAW,UAAUC,UAAU,wIAAwIC,YAAY,qCAAqCC,UAAU,oBAAoBC,eAAe,kGAAkGC,UAAU,6BAA6BC,eAAe,wNAAyNtF,OAAO,CAACuF,MAAM,QAAQ/X,MAAM,QAAQ8N,QAAQ,UAAU0H,SAAS,YAAYwC,WAAW,CAACC,WAAW,wBAAwBC,SAAS,iDAAkDC,SAAS,0CAA2CC,SAAS,uEAAuEC,UAAU,oBAAoBC,iBAAiB,CAAClb,KAAK,iDAAkDmb,UAAU,CAACC,UAAU,YAAYC,SAAS,WAAW/a,UAAU,YAAYoQ,QAAQ,UAAUtY,MAAM,QAAQ4T,OAAO,SAASsP,MAAM,QAAQta,SAAS,WAAWua,QAAQ,UAAU,UAAY,YAAYC,KAAK,OAAOC,SAAS,WAAWC,MAAM,QAAQC,MAAM,QAAQC,IAAI,mBAAmBC,QAAQ,UAAUC,IAAI,MAAMC,UAAU,YAAYC,OAAO,SAASC,SAAS,WAAW/a,MAAM,QAAQgb,WAAW,aAAaC,QAAQ,UAAUC,kBAAkB,qBAAqBC,gBAAgB,2BAA2BC,YAAY,CAACpb,MAAM,QAAQqb,iBAAiB,6DAA6DC,uBAAuB,0FAA0FxQ,OAAO,CAACyQ,MAAM,CAAC5uB,MAAM,kBAAkBgG,QAAQ,6BAA8BuB,MAAM,QAAQoe,QAAQ,eAAe3lB,MAAM,SAAS6uB,QAAQ,UAAU,cAAW,0BAAuB,eAAY,uBAAuBC,kBAAkB,oCAAoCC,OAAO,UAAUpb,MAAM,CAACqb,aAAa,CAAChvB,MAAM,SAASutB,UAAU,CAACvtB,MAAM,YAAYivB,QAAQ,oBAAoBC,gBAAgB,kBAAkBzc,UAAU,aAAaoQ,QAAQ,WAAW6G,SAAS,YAAY3U,MAAM,SAASxK,MAAM,SAASkjB,MAAM,SAAS0B,QAAQ,WAAWC,YAAY,cAAcC,QAAQ,WAAWC,MAAM,SAASC,cAAc,iBAAiBC,SAAS,gBAAgB,QAAU,UAAU,OAAS,SAAS7B,KAAK,QAAQ8B,SAAS,YAAYC,YAAY,cAAcC,WAAW,cAAcC,SAAS,YAAYC,cAAc,iBAAiBC,aAAa,gBAAgBC,OAAO,UAAUC,MAAM,QAAQ1B,QAAQ,UAAU2B,OAAO,SAASC,KAAK,OAAOC,QAAQ,UAAUC,MAAM,QAAQC,UAAU,YAAY5T,SAAS,WAAW6T,QAAQ,UAAUhS,OAAO,SAASiS,OAAO,SAASC,UAAU,YAAYC,OAAO,SAASC,aAAa,eAAeC,IAAI,MAAMC,GAAG,KAAKC,YAAY,cAAcC,QAAQ,UAAUC,QAAQ,UAAUxiB,SAAS,WAAWyiB,SAAS,WAAWC,aAAa,gBAAgBxD,MAAM,CAACztB,MAAM,QAAQ5B,QAAQ,UAAU8yB,UAAU,YAAYC,QAAQ,UAAUvoB,aAAa,qBAAqBwoB,QAAQ,UAAUnpB,OAAO,SAASqW,OAAO,UAAU+S,gBAAgB,CAACrxB,MAAM,yBAAyB0W,WAAW,SAASmC,WAAW,UAAUyY,mBAAmB,CAACtxB,MAAM,mBAAmBsW,KAAK,CAACC,OAAO,CAAC9J,SAAS,CAAC/N,MAAM,WAAW+W,KAAK,uDAAuDjR,IAAI,oDAAoDkS,WAAW,SAASmC,WAAW,UAAU0Y,mBAAmB,CAACvxB,MAAM,eAAesW,KAAK,CAACC,OAAO,CAACjV,aAAa,CAAC5C,MAAM,eAAeqiB,UAAU,qCAAqCjU,SAAS,CAACpO,MAAM,WAAWqiB,UAAU,iCAAiC9hB,MAAM,CAACP,MAAM,QAAQ8yB,YAAY,4BAA4BC,aAAa,sBAAsB/a,WAAW,SAASmC,WAAW,UAAU6Y,WAAW,CAAC1xB,MAAM,eAAesW,KAAK,CAACC,OAAO,CAAChM,MAAM,CAAC7L,MAAM,gBAAgBiL,YAAY,6EAA6E8L,KAAK,6EAAmEjR,IAAI,gDAAiDlD,aAAa,CAAC5C,MAAM,eAAe8F,IAAI,sDAAsDvF,MAAM,CAACP,MAAM,QAAQ8F,IAAI,uBAAuBiI,SAAS,CAAC/N,MAAM,WAAW8F,IAAI,oDAAoDkS,WAAW,SAASmC,WAAW,UAAUtO,MAAM,CAACvK,MAAM,QAAQhC,KAAK,OAAOiB,MAAM,QAAQwqB,WAAW,aAAa3P,WAAW,eAAe6X,UAAU,eAAeC,WAAW,iBAAiBC,OAAO,SAASC,KAAK,OAAO7pB,OAAO,SAAS8pB,OAAO,SAASnd,IAAI,MAAMod,MAAM,QAAQ7U,KAAK,OAAO2B,SAAS,WAAW5J,UAAU,YAAY/W,QAAQ,UAAUF,OAAO,SAASg0B,UAAU,YAAYC,MAAM,QAAQC,KAAK,OAAOjL,OAAO,CAACvd,YAAY,2BAA2ByoB,iBAAiB,mBAAmBzI,aAAa,eAAe0I,cAAc,gBAAgBC,YAAY,cAAcC,UAAU,YAAYC,SAAS,WAAWC,gBAAgB,CAACzyB,MAAM,kBAAkBgG,QAAQ,kDAAkD0sB,YAAY,CAAC1yB,MAAM,mBAAmBgG,QAAQ,gEAAgEia,OAAO,uBAAuBvhB,MAAM,gDAAgD+W,KAAK,6EAAmEkd,aAAa,CAAC3yB,MAAM,oBAAoBgG,QAAQ,mCAAoCyM,UAAU,CAACF,WAAW,YAAYlU,SAAS,WAAWu0B,KAAK,OAAO7d,MAAM,QAAQ8N,QAAQ,UAAUuO,QAAQ,UAAUS,OAAO,SAAS5pB,OAAO,SAAS8pB,OAAO,SAAS3zB,QAAQ,UAAU8oB,OAAO,CAACvd,YAAY,iCAAiCkZ,QAAQ,CAACtQ,WAAW,UAAUqgB,KAAK,OAAO7d,MAAM,QAAQqc,QAAQ,UAAUS,OAAO,SAAS5pB,OAAO,SAAS8pB,OAAO,SAAS7K,OAAO,CAACvd,YAAY,+BAA+B+jB,QAAQ,CAACnb,WAAW,UAAUvU,KAAK,CAACU,MAAM,YAAY8F,IAAI,6BAA6BiR,KAAK,oDAAoDkW,SAAS,CAACjtB,MAAM,WAAW8F,IAAI,4BAA4BquB,SAAS,4BAA4Bpd,KAAK,6BAA6Bqd,WAAW,CAACp0B,MAAM,yBAAyB8F,IAAI,0CAA0CiR,KAAK,4DAA4DtD,KAAK,CAACzT,MAAM,mBAAmB8F,IAAI,oCAAoCiR,KAAK,4EAA4EqW,cAAc,CAACptB,MAAM,gBAAgB8F,IAAI,iCAAiCquB,SAAS,8BAA8Bpd,KAAK,2DAA2Dsd,aAAa,CAACr0B,MAAM,mBAAmB+W,KAAK,oCAAoC,UAAY,CAAClD,WAAW,YAAYkE,SAAS,CAAC/X,MAAM,qBAAqB8F,IAAI,sCAAsCiR,KAAK,sEAAsEud,UAAU,CAACt0B,MAAM,WAAW8F,IAAI,4BAA4BiR,KAAK,+CAA+CkY,KAAK,CAACpb,WAAW,OAAO0gB,WAAW,CAACv0B,MAAM,aAAa8F,IAAI,8BAA8BiR,KAAK,iDAAiDyd,UAAU,CAACx0B,MAAM,YAAY8F,IAAI,6BAA6BiR,KAAK,wCAAwC0d,UAAU,CAACz0B,MAAM,YAAY8F,IAAI,6BAA6BiR,KAAK,qBAAqB2d,WAAW,CAAC10B,MAAM,aAAa8F,IAAI,8BAA8BiR,KAAK,kDAAkD4d,IAAI,MAAMC,IAAI,MAAMC,KAAK,QAAQC,UAAU,CAAC90B,MAAM,YAAY8F,IAAI,sCAAsCiR,KAAK,iCAAiCge,cAAc,CAAC/0B,MAAM,gBAAgB8F,IAAI,kCAAkCkvB,cAAc,CAACh1B,MAAM,gBAAgB8F,IAAI,kCAAkCmvB,qBAAqB,CAACj1B,MAAM,wBAAwB+W,KAAK,sDAAsDjR,IAAI,oCAAoCovB,oBAAoB,CAACl1B,MAAM,wBAAwBsB,MAAM,sBAAsBwE,IAAI,uCAAuCmsB,IAAI,MAAMC,GAAG,OAAOhD,SAAS,CAACrb,WAAW,WAAWshB,KAAK,CAACn1B,MAAM,OAAO8F,IAAI,wBAAwBiR,KAAK,yLAAyLqe,YAAY,CAACp1B,MAAM,cAAc+W,KAAK,kKAAkKse,YAAY,CAACr1B,MAAM,cAAc8F,IAAI,+BAA+BiR,KAAK,qFAAqFue,QAAQ,CAACt1B,MAAM,UAAU+W,KAAK,iJAAiJoY,MAAM,CAACtb,WAAW,QAAQ0hB,iBAAiB,CAACv1B,MAAM,mBAAmB+W,KAAK,0HAA0Hye,eAAe,CAACx1B,MAAM,iBAAiB+W,KAAK,yHAAyHqY,MAAM,CAACvb,WAAW,QAAQ4hB,gBAAgB,CAACn0B,MAAM,eAAetB,MAAM,4DAA4D+W,KAAK,oHAAoH2e,eAAe,CAAC11B,MAAM,iBAAiB+W,KAAK,4DAA4DjR,IAAI,CAAC6vB,iBAAiB,kDAAkDC,aAAa,CAACt0B,MAAM,oBAAoBtB,MAAM,kDAAwC+W,KAAK,4DAA4D8e,cAAc,CAAC71B,MAAM,gBAAgB+W,KAAK,iDAAiDwY,IAAI,CAAC1b,WAAW,MAAMiiB,UAAU,CAAC91B,MAAM,YAAY+W,KAAK,6FAA6Fgf,OAAO,CAAC/1B,MAAM,aAAa+W,KAAK,8DAA8D0Y,OAAO,CAAC5b,WAAW,SAAS4b,OAAO,CAACzvB,MAAM,SAAS+W,KAAK,6BAA6Bif,aAAa,CAACh2B,MAAM,gBAAgBi2B,aAAa,CAACj2B,MAAM,gBAAgBk2B,cAAc,CAACl2B,MAAM,gBAAgB+W,KAAK,0CAA0Cof,aAAa,CAACtiB,WAAW,eAAeuiB,WAAW,CAACp2B,MAAM,aAAa+W,KAAK,iCAAiCsf,KAAK,CAACr2B,MAAM,OAAO+W,KAAK,sCAAsCxR,OAAO,CAACvF,MAAM,SAAS+W,KAAK,oCAAoCgJ,OAAO,CAAC/f,MAAM,SAAS+W,KAAK,uCAAuCuf,QAAQ,CAACt2B,MAAM,UAAU+W,KAAK,iCAAiCpC,MAAM,CAACd,WAAW,QAAQ0iB,WAAW,CAACj1B,MAAM,aAAatB,MAAM,0BAA0B+W,KAAK,2DAA2Dyf,mBAAmB,CAACl1B,MAAM,qBAAqBtB,MAAM,2BAA2B+W,KAAK,kEAAkE0f,sBAAsB,CAACn1B,MAAM,wBAAwByV,KAAK,kGAAkG,QAAU,CAACzV,MAAM,UAAUtB,MAAM,iBAAiB+W,KAAK,mDAAmD2f,eAAe,CAACp1B,MAAM,iBAAiBtB,MAAM,iCAAiC+W,KAAK,gHAAgH8Y,kBAAkB,CAACvuB,MAAM,oBAAoBq1B,YAAY,qGAAqGnO,OAAO,CAACtS,IAAI,MAAM6R,OAAO,SAAS3H,SAAS,WAAWwW,SAAS,YAAYhH,QAAQ,CAAC5vB,MAAM,UAAU+W,KAAK,8BAA8BzX,KAAK,OAAOqxB,QAAQ,UAAUwC,OAAO,SAAS5pB,OAAO,SAASue,WAAW,aAAa+O,SAAS,WAAWpiB,SAAS,YAAYqiB,eAAe,CAACx1B,MAAM,QAAQihB,OAAO,CAACviB,MAAM,iBAAiB+W,KAAK,mDAAmDggB,kBAAkB,CAAC/2B,MAAM,oBAAoB+W,KAAK,gEAAiEigB,iBAAiB,CAAC11B,MAAM,oBAAoB21B,0BAA0B,CAACj3B,MAAM,4CAA4Ck3B,sBAAsB,CAACl3B,MAAM,wCAAwCm3B,oBAAoB,CAACn3B,MAAM,6CAA6Co3B,iBAAiB,CAACp3B,MAAM,wCAAwCq3B,qBAAqB,CAACr3B,MAAM,uCAAuCs3B,sBAAsB,CAACt3B,MAAM,yCAAyCu3B,UAAU,CAACj2B,MAAM,aAAak2B,MAAM,CAACx3B,MAAM,4BAA4B+W,KAAK,qDAAqDjR,IAAI,CAAC2xB,iBAAiB,6BAA6BC,gBAAgB,4CAA4CjY,OAAO,CAAClW,OAAO,SAASwe,OAAO,SAAS8O,SAAS,WAAW3gB,IAAI,MAAMyhB,OAAO,SAAS7P,WAAW,aAAaU,OAAO,CAACvd,YAAY,4BAA4B2sB,MAAM,QAAQxX,SAAS,WAAW9gB,KAAK,OAAOu0B,UAAU,YAAYV,OAAO,SAAS7xB,MAAM,WAAWsW,KAAK,CAACigB,SAAS,aAAa/f,MAAM,kBAAkB6R,QAAQ,aAAaxP,WAAW,OAAO2d,gBAAgB,yCAAyCC,OAAO,UAAUC,YAAY,CAACpY,OAAO,SAASqY,SAAS,WAAWC,cAAc,gBAAgBC,YAAY,cAAcC,SAAS,WAAWnd,aAAa,eAAe3G,cAAc,gBAAgBC,YAAY,cAAcH,SAAS,WAAW0D,MAAM,wBAAwBugB,qBAAqB,gCAAgCC,iBAAiB,4BAA4BC,iBAAiB,4BAA4BC,iBAAiB,4BAA4BC,cAAc,kBAAkBC,UAAU,YAAYC,UAAU,YAAYC,YAAY,cAAcC,YAAY,cAAcC,aAAa,OAAO/N,WAAW,aAAagO,eAAe,mCAAmCC,eAAe,mCAAmCC,UAAU,YAAYC,UAAU,YAAYC,YAAY,eAAeC,SAAS,CAACC,UAAU,YAAY55B,QAAQ,UAAU65B,SAAS,WAAWC,OAAO,SAASC,OAAO,SAASC,UAAU,YAAY9U,UAAU,YAAY+U,SAAS,WAAWC,OAAO,SAAS3U,SAAS,WAAWP,MAAM,QAAQjlB,OAAO,SAASo6B,SAAS,WAAWlH,QAAQ,UAAUhM,IAAI,SAASmT,MAAM,WAAWv2B,KAAK,SAASw2B,KAAK,WAAWx4B,MAAM,cAAcy4B,UAAU,eAAeC,WAAW,aAAaC,OAAO,MAAMC,mBAAmB,eAAeC,iBAAiB,qDAAqDC,cAAc,mBAAmBC,SAAS,WAAWj2B,KAAK,OAAOk2B,GAAG,KAAKhd,QAAQ,UAAUid,QAAQ,8BAA+B1uB,MAAM,CAACvK,MAAM,QAAQk5B,+BAA+B,qDAAqDC,yBAAyB,qCAAqCC,OAAO,sBAAsB3P,WAAW,aAAa1U,MAAM,SAASskB,OAAO,CAACC,WAAW,2CAA2CC,iBAAiB,kCAAkCC,MAAM,CAACC,gBAAgB,gDAAgDC,SAAS,CAACC,aAAa,8BAA8BC,SAAS,6BAA6BC,WAAW,+BAA+BC,eAAe,uCAAuCC,eAAe,oCAAoCC,YAAY,+BAA+BC,UAAU,6BAA6BC,YAAY,+BAA+BC,aAAa,sGDyCrxwDC,EAAcC,EAAAA,EAAQC,IAAIt9B,EAAAA,IAE9Bo9B,GACAA,EAAYG,WACZH,EAAYI,KACQ,UAApBJ,EAAYI,MAEZzoB,EAAcqoB,EAAYI,KAAO,CAC/BvoB,YAAamoB,EAAYG,YAI7B1oB,EAAAA,GAAAA,IAEO4oB,EAAAA,IACJC,KAAK,CACJH,UAAWxoB,EACXyoB,IAAK5oB,EACL+oB,YAAa79B,EAAAA,GACb89B,cAAe,CACbC,aAAa,GAEfC,MAAO,CACLC,4BAA4B,EAE5BC,2BAA4B,CAAC,KAAM,SAAU,Q,2DEvBnD,MAwbA,EAxb4B,CAC1B,CACEx8B,KAAM,IACNy8B,KAAM,eACNC,OAAQ5zB,gBACA6zB,EAAAA,GAAAA,WACC,MAETA,MAAOA,KACL,MAAMC,EAAKD,EAAAA,GAAAA,sBACX,OAAKC,EAAGxU,GAGDuU,EAAAA,GAAAA,eAFEC,CAEkB,EAE7B78B,SAAU,CAER,CAEE08B,KAAM,sBACN18B,SAAU,CACR,CACE88B,OAAO,EACPJ,KAAM,mBAER,CACEz8B,KAAM,YACNy8B,KAAM,mBAER,CACEz8B,KAAM,gBACNy8B,KAAM,sBACNE,MAAOA,IACEA,EAAAA,GAAAA,aAGX,CACE38B,KAAM,kBACNy8B,KAAM,sBACNE,MAAOA,IACEA,EAAAA,GAAAA,aAGX,CACE38B,KAAM,uBACNy8B,KAAM,6BACNC,OAAQ5zB,OAAS9B,kBACG81B,EAAAA,EAAAA,IAAU91B,EAAO+1B,KAAe,GAGpDJ,MAAQK,IACCC,EAAAA,EAAAA,YAAWD,IAGtB,CACEh9B,KAAM,iBACNy8B,KAAM,0BAER,CACEz8B,KAAM,gCACNy8B,KAAM,0BAER,CACEz8B,KAAM,qCACNy8B,KAAM,0BAER,CACEz8B,KAAM,UACNy8B,KAAM,eACNE,MAAOA,IACEA,EAAAA,GAAAA,0BAIX,CACE38B,KAAM,OACNy8B,KAAM,cAER,CACEz8B,KAAM,cACNy8B,KAAM,oBACNE,MAAOA,IACEA,EAAAA,GAAAA,sBAGX,CACE38B,KAAM,gBACNy8B,KAAM,qBAER,CACEz8B,KAAM,qBACNy8B,KAAM,mBAER,CACEz8B,KAAM,mBACNy8B,KAAM,kBACNE,MAAOA,IACEA,EAAAA,GAAAA,aAIX,CACE38B,KAAM,QACNy8B,KAAM,eAER,CACEz8B,KAAM,kBACNy8B,KAAM,wBAER,CACEz8B,KAAM,2BACNy8B,KAAM,wBAER,CACEz8B,KAAM,iBACNy8B,KAAM,uBACNE,MAAOA,IACEA,EAAAA,GAAAA,SAET58B,SAAU,CACR,CACE88B,OAAO,EACPJ,KAAM,gCAER,CACEz8B,KAAM,UACNy8B,KAAM,gCAER,CACEz8B,KAAM,SACNy8B,KAAM,qCAER,CACEz8B,KAAM,UACNy8B,KAAM,gCAER,CACEz8B,KAAM,YACNy8B,KAAM,kCAER,CACEz8B,KAAM,aACNy8B,KAAM,kCAIZ,CACEz8B,KAAM,sCACNy8B,KAAM,6BAER,CACEz8B,KAAM,uBACNy8B,KAAM,iBACNE,MAAOA,IACEA,EAAAA,GAAAA,UAGX,CACE38B,KAAM,4BACNy8B,KAAM,iBACNE,MAAOA,IACEA,EAAAA,GAAAA,UAGX,CACE38B,KAAM,sBACNy8B,KAAM,iBACNE,MAAOA,IACEA,EAAAA,GAAAA,UAIX,CACE38B,KAAM,SACNy8B,KAAM,gBAER,CACEz8B,KAAM,UACNy8B,KAAM,sBAER,CACEz8B,KAAM,oBACNy8B,KAAM,+BAIZ,CACEz8B,KAAM,cACNy8B,KAAM,oBACNE,MAAOA,KACL,MAAMO,EAAYP,EAAAA,GAAAA,YAClB,OAAIO,EAAU9U,GACL8U,EAGFP,EAAAA,GAAAA,cAAoB,GAG/B,CACE38B,KAAM,iBACNy8B,KAAM,uBACNE,MAAOA,KACL,MAAMQ,EAAWR,EAAAA,GAAAA,uBACjB,IAAKQ,EAAS/U,GACZ,OAAO+U,EAET,MAAMD,EAAYP,EAAAA,GAAAA,YAClB,GAAIO,EAAU9U,GAAI,CAChB,MAAMgV,EAAKT,EAAAA,GAAAA,cACX,IAAKS,EAAGhV,GACN,OAAOgV,CAEX,CACA,OAAOF,CAAS,GAGpB,CACEl9B,KAAM,eACNy8B,KAAM,qBACNE,MAAOA,IACEA,EAAAA,GAAAA,sBAGX,CACE38B,KAAM,yBACNy8B,KAAM,4BACNE,MAAOA,IACEA,EAAAA,GAAAA,aAGX,CACE38B,KAAM,qBACNy8B,KAAM,2BAER,CACEz8B,KAAM,uBACNy8B,KAAM,6BAER,CACEz8B,KAAM,2BACNy8B,KAAM,2BAER,CACEz8B,KAAM,mCACNy8B,KAAM,+BACNE,MAAOA,IACEA,EAAAA,GAAAA,aAGX,CACE38B,KAAM,mCACNy8B,KAAM,+BACNE,MAAOA,IACEA,EAAAA,GAAAA,gBAGX,CACE38B,KAAM,2BACNy8B,KAAM,+BAER,CACEz8B,KAAM,2BACNy8B,KAAM,wBACNE,MAAOA,IACEA,EAAAA,GAAAA,aAGX,CACE38B,KAAM,uBACNy8B,KAAM,8BAER,CACEz8B,KAAM,sBACNy8B,KAAM,4BAGR,CACEz8B,KAAM,QACNy8B,KAAM,cACNC,OAAQ5zB,gBACA6zB,EAAAA,GAAAA,iBACC,MAETA,MAAOA,IACEA,EAAAA,GAAAA,QAET58B,SAAU,CACR,CACE88B,OAAO,EACPJ,KAAM,yBAER,CACEz8B,KAAM,YACNy8B,KAAM,yBAER,CACEz8B,KAAM,UACNy8B,KAAM,uBAER,CACEz8B,KAAM,SACNy8B,KAAM,sBAER,CACEz8B,KAAM,WACNy8B,KAAM,0BAER,CACEz8B,KAAM,UACNy8B,KAAM,uBAER,CACEz8B,KAAM,YACNy8B,KAAM,yBAER,CACEz8B,KAAM,YACNy8B,KAAM,yBAER,CACEz8B,KAAM,QACNy8B,KAAM,qBAER,CACEz8B,KAAM,iBACNy8B,KAAM,4BAER,CACEz8B,KAAM,OACNy8B,KAAM,oBAER,CACEz8B,KAAM,WACNy8B,KAAM,wBAER,CACEz8B,KAAM,QACNy8B,KAAM,qBAER,CACEz8B,KAAM,QACNy8B,KAAM,qBAER,CACEz8B,KAAM,MACNy8B,KAAM,mBAER,CACEz8B,KAAM,QACNy8B,KAAM,qBAER,CACEz8B,KAAM,iBACNy8B,KAAM,6BAER,CACEz8B,KAAM,aACNy8B,KAAM,0BAER,CACEz8B,KAAM,oBACNy8B,KAAM,iCAER,CACEz8B,KAAM,aACNy8B,KAAM,8BAER,CACEz8B,KAAM,SACNy8B,KAAM,wBAIZ,CACEz8B,KAAM,oBACNy8B,KAAM,wBACNE,MAAOA,IACaA,EAAAA,GAAAA,aAItB,CACE38B,KAAM,2BACNy8B,KAAM,+BAER,CACEz8B,KAAM,IACNy8B,KAAM,aAER,CACEz8B,KAAM,MACNy8B,KAAM,eAIZ,CACEz8B,KAAM,IACNy8B,KAAM,eACNC,OAAQ5zB,gBACA6zB,EAAAA,GAAAA,WACC,MAET58B,SAAU,CACR,CACE08B,KAAM,sBACN18B,SAAU,CACR,CACE08B,KAAM,cACN18B,SAAU,CACR,CACEC,KAAM,MACNy8B,KAAM,mBAER,CACEz8B,KAAM,UACNy8B,KAAM,2BAMhB,CACEz8B,KAAM,qBACNy8B,KAAM,2BAER,CACEz8B,KAAM,MACNy8B,KAAM,eAIZ,CACEz8B,KAAM,WACNy8B,KAAM,iBAER,CACEz8B,KAAM,eACNy8B,KAAM,sB,qCC3cV,MAIA,EAJcY,EAAGC,UAAU,MAAOC,SAAS,OAClC75B,EAAAA,EAAAA,KAAC85B,EAAAA,GAAgB,CAACC,SAAUH,EAASC,OAAQA,ICqEtD,EA3DKG,EAAG39B,WAAU49B,UAAS39B,OAAMy8B,WAC/B,MAAMmB,GAAWC,EAAAA,EAAAA,MACXC,GAAaC,EAAAA,EAAAA,OACZC,EAAIC,IAAar8B,EAAAA,EAAAA,UAAuB,CAC7CwmB,IAAI,KAEC8V,EAASC,IAAcv8B,EAAAA,EAAAA,aA6B9BkG,EAAAA,EAAAA,YAAU,KA5BSs2B,MAAO,IAADC,EACvB,GAAuB,oBAAZV,EACT,OAGF,MAAMf,EAAKe,EAAQ,CACjBG,aACA99B,OACAy8B,SAGFwB,EAAUrB,IAEE,IAAVA,EAAGxU,IACK,QADOiW,EACfzB,EAAG0B,aAAK,IAAAD,GAARA,EAAUzmB,MACV,eAAenJ,KAAKmuB,EAAG0B,MAAM1mB,KAAK2mB,YAElCJ,EAAWvB,EAAG0B,QAGhBH,OAAW11B,GACPm0B,EAAG4B,UACLC,EAAAA,GAAiBb,SAAShB,EAAG4B,SAAU,CACrCE,QAASd,EACTz9B,QAAS,CAAEw+B,SAAS,KAExB,EAMAP,EAAY,GACX,CAACh4B,OAAOoD,SAASo1B,OAEpB,IAAIC,EAAOb,EAAG5V,GASd,OARc,IAAV4V,EAAG5V,IAAgB4V,EAAGQ,WAMxBK,EAAOJ,EAAAA,GAAiBK,mBAAmBd,EAAGQ,YAG9Cl7B,EAAAA,EAAAA,MAAAy7B,EAAAA,SAAA,CAAAh/B,SAAA,CACG8+B,EAAO9+B,EAAW,KAClBm+B,GAAUx6B,EAAAA,EAAAA,KAACs7B,EAAkB,CAAC1B,QAASY,EAAQtmB,OAAqB,OACpE,EC1DDqnB,EAAsB,GAEtBC,EAAeA,CAACC,EAAyBl+B,KAC7Ck+B,EAAWC,SAASC,IAClB,GAAgB,iBAAZA,EAAG5C,KACL4C,EAAGC,QAAUD,EAAG1C,OACdj5B,EAAAA,EAAAA,KAACg6B,EAAU,CAACC,QAAS0B,EAAG1C,MAAO38B,KAAMq/B,EAAGr/B,KAAMy8B,KAAM4C,EAAG5C,KAAK18B,UAC1D2D,EAAAA,EAAAA,KAAC67B,EAAAA,QAAM,OAGT77B,EAAAA,EAAAA,KAAC67B,EAAAA,QAAM,IAETF,EAAGG,cAAe97B,EAAAA,EAAAA,KAACs7B,EAAkB,QAChC,CAML,IAAIS,EAEJ,GAAuB,kBAAZJ,EAAG5C,KAAmB,CAC/B,MAAMiD,EAAWL,EAAG5C,KAAKkC,QAAQ,SAAU,IAC3Cc,GAAOE,EAAAA,EAAAA,OAAK,IAAM,SAAO,KAAWD,MACtC,MACED,EAAOJ,EAAG5C,KAGZ4C,EAAGC,SACD57B,EAAAA,EAAAA,KAACk8B,EAAAA,SAAQ,CAAA7/B,SACNs/B,EAAG1C,OACFj5B,EAAAA,EAAAA,KAACg6B,EAAU,CAACC,QAAS0B,EAAG1C,MAAO38B,KAAMq/B,EAAGr/B,KAAMy8B,KAAM4C,EAAG5C,KAAK18B,UAC1D2D,EAAAA,EAAAA,KAAC+7B,EAAI,OAGP/7B,EAAAA,EAAAA,KAAC+7B,EAAI,MAIXJ,EAAGG,cAAe97B,EAAAA,EAAAA,KAACs7B,EAAkB,GACvC,CACA/9B,EAAK4+B,KAAKR,GACV,MAAMt/B,EAAWmM,MAAM4zB,QAAQT,EAAGt/B,UAAYs/B,EAAGt/B,SAAW,KACxDA,IACFs/B,EAAGt/B,SAAW,GACdm/B,EAAan/B,EAAUs/B,EAAGt/B,UAC5B,GACA,EAEEggC,GAAeC,EAAAA,EAAAA,IAAkBC,GAEvCf,EAAaa,EAAcd,GAE3B,UCjDA,QAPA,WACE,MAAMiB,GAASC,EAAAA,EAAAA,IAAoBlB,EAAQ,CACzCmB,SAAUC,KAEZ,OAAO38B,EAAAA,EAAAA,KAAC48B,EAAAA,GAAc,CAACJ,OAAQA,GACjC,ECJMj/B,EAAOC,EAAAA,WACXH,SAASw/B,eAAe,SAQpBC,EAAiBjvB,IACrB,MAAM,OAAEtO,GAAWsO,EAEnB,GAAe,OAAXtO,GAAqBA,aAAkBw9B,SAGtC,OAAOhyB,KAAKxL,EAAOy9B,UAAxB,CAIA,GAAI,SAASjyB,KAAK8C,EAAIjN,MAAO,CAAC,IAADq8B,EAC3B19B,EAAO29B,UAAUpc,IAAI,UACrB,MAAMqc,EAAU59B,EAAO69B,aAAa,OAC9BC,EAAoC,QAA7BJ,EAAG19B,EAAO69B,aAAa,cAAM,IAAAH,OAAA,EAA1BA,EAA4BK,OAGxCH,IAAYE,GACd99B,EAAO29B,UAAUpc,IAAI,YAEzB,CAEI,QAAQ/V,KAAK8C,EAAIjN,OACnBrB,EAAO29B,UAAUnf,OAAO,SAAU,YAdpC,CAeA,EAuBF1gB,SAAS8F,iBAAiB,QAAS25B,GAAe,GAClDz/B,SAAS8F,iBAAiB,OAAQ25B,GAAe,GACjDz/B,SAAS8F,iBAAiB,SAlBD0K,IAAgB,IAAD0vB,EACtC,MAAM,OAAEh+B,GAAWsO,EAEJ,OAAXtO,GAAqBA,aAAkBw9B,SAGtC,KAAKhyB,KAAKxL,EAAOy9B,WAIS,QAA/BO,EAAIh+B,EAAO69B,aAAa,eAAO,IAAAG,GAA3BA,EAA6BC,SAAS,kBACxC3vB,EAAIhP,iBACJ6D,OAAOoD,SAASo1B,KAAO37B,EAAO69B,aAAa,SAAW,GACxD,IAKkD,GAEpD7/B,EAAKoC,QACHK,EAAAA,EAAAA,KAACy9B,EAAAA,WAAgB,CAAAphC,UACf2D,EAAAA,EAAAA,KAAC09B,EAAG,M,sOC1DR,MAAMtgC,EAAMC,SAASC,cAAc,OAC7BC,EAAOC,EAAAA,WAAoBJ,GAsHjC,EAhH4BugC,CAACjgC,EAAgB,CAAC,EAAGgN,KAC/C,MAAM,EAAE/M,IAAMC,EAAAA,EAAAA,GAAe,cAAe,CAC1CC,UAAW,8BAGP,MAAEC,EAAQH,EAAE,SAAQ,UAAEI,GAAcL,GACnCM,EAASC,IAAmBC,EAAAA,EAAAA,WAAS,IACrCmM,EAAQC,IAAapM,EAAAA,EAAAA,UAAS,IAC/BoL,EAAqB,CACzBxL,MAAOH,EAAE,SACT4L,SAAU,CAAC,gBACXC,WAAY,CACVpK,aAAc,CACZwB,KAAM,SACN9C,MAAO,kBAIP2L,EAAqB,CACzBrK,aAAc,CACZ,aAAc,CACZoL,UAAW,OACXX,UAAYnN,KAGNA,EAAMuC,OAFS,GAEcvC,EAAMuC,OADpB,KAEVtB,EAAE,0CAOZQ,EAAUC,IAAeF,EAAAA,EAAAA,WAC9BwL,EAAAA,EAAAA,IAAaJ,IAGTK,GAAU9F,EAAAA,EAAAA,QAEb,MAEGnF,EAAUA,KACdN,EAAYD,GACZF,GAAgB,EAAM,EAQlBU,EAAeyG,UAAkB,IAADwE,EACpChL,EAAMC,iBACND,EAAME,wBAC+B,QAArB8K,EAAMD,EAAQtF,eAAO,IAAAuF,OAAA,EAAfA,EAAiBC,cAMnC9L,aAAqBmB,UACvBnB,EAAU,CACRqB,aAAcjB,EAASiB,aAAa1C,MACpCuM,QAASoB,IAERlF,MAAK,KACJmF,EAAU,IACV5L,GAAS,IAEV4G,OAAOwE,IACN,GAAIA,EAAItE,QAAS,CACf,MAAMpD,GAAO2H,EAAAA,EAAAA,IAAgBD,EAAK3L,GAClCC,EAAY,IAAKgE,GACnB,IAEN,EAGI4H,EAAkB5H,IACtBhE,EAAYgE,EAAK,EA2BnB,OAxBA1C,EAAAA,EAAAA,kBAAgB,KACdnC,EAAKoC,QACHC,EAAAA,EAAAA,MAACC,EAAAA,EAAK,CAACC,KAAM9B,EAASF,MAAOA,EAAO8/B,SAAS,SAAQvhC,SAAA,EACnD2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMI,OAAM,CAAA5D,UACX2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMM,MAAK,CAACC,GAAG,KAAI/D,SAAC,uBAEvB2D,EAAAA,EAAAA,KAACH,EAAAA,EAAMQ,KAAI,CAAAhE,UACT2D,EAAAA,EAAAA,KAACiK,EAAAA,EAAU,CACTC,IAAKP,EACLL,OAAQA,EACRG,SAAUA,EACVtL,SAAUA,EACV0C,SAAUmJ,EACVG,cAAY,OAGhBnK,EAAAA,EAAAA,KAACH,EAAAA,EAAMoB,OAAM,CAAA5E,UACX2D,EAAAA,EAAAA,KAACkB,EAAAA,EAAM,CAACrF,QAAQ,UAAUsF,QAASxC,EAAatC,SAAC,cAKtD,IAEI,CACLqC,UACA0C,OA9Dc6H,IACdqB,EAAUrB,GACVhL,GAAgB,EAAK,EA6DtB,ECxGG49B,EAAaA,KACjB,MAAM/1B,GAAW+3B,EAAAA,EAAAA,OACTv7B,IAAKw7B,EAAQ,QAAEjiC,EAASkiC,MAAOC,IAAeC,EAAAA,EAAAA,OAI9C/pB,KAAMgqB,EAAgBpZ,MAAOqZ,IAAoBC,EAAAA,EAAAA,OACjDt+B,KAAMu+B,IAA6BC,EAAAA,EAAAA,OACnCl8B,KAAMm8B,IAAqBC,EAAAA,EAAAA,MAC7BxiB,EAAOyiB,EAAAA,GAAoBrzB,WAAW4Q,MAE5C5X,EAAAA,EAAAA,YAAU,KACR+5B,IACGniB,GAAQA,EAAKnX,KAEZmX,EAAKpR,SAAS4yB,SAAS,iBACvBxhB,EAAK5c,aAAao+B,SAAS,kBAE3BkB,EAAmBt9B,OAAO4a,EAAKnX,GAEnC,GACC,CAACiB,KAEJ1B,EAAAA,EAAAA,YAAU,KACR,MAAMu6B,EAAmBj8B,OAAOk8B,WAAW,gCAC3C,SAASC,EAAwBjgC,GAC3BA,EAAMkgC,SACRC,EAAAA,EAAAA,IAAY,SAEZA,EAAAA,EAAAA,IAAY,QAEhB,CAIA,OAFAJ,EAAiBK,YAAYH,GAEtB,KACLF,EAAiBM,eAAeJ,EAAwB,CACzD,GACA,IACD,MAcIH,EAAqBf,EACzB,CACE5/B,UAAYmhC,GACH,IAAIxxB,SAAQ,CAACC,EAASqW,KAC3B,MAAMpZ,EAlBY9O,KAGtB,IAAI8O,EAAW9O,EAAKqjC,cAAclE,QAAQ,KAAM,KAQhD,OAPIrwB,EAAS3L,OAAS,KACpB2L,EAAWA,EAASw0B,MAAM,EAAG,KAG3Bx0B,EAAS3L,OAAS,IACpB2L,GAAYy0B,KAAKC,SAASzE,SAAS,IAAI0E,UAAU,EAAG,IAE/C30B,CAAQ,EAOM40B,CAAeN,EAAG9/B,cAC7BqgC,EAA4B,CAChCrgC,aAAc8/B,EAAG9/B,aACjBwL,SAAUA,EACVmU,OAAQ/C,EAAK+C,OACbK,IAAKpD,EAAKoD,IACVtZ,SAAUkW,EAAKlW,SACfuZ,QAASrD,EAAKqD,SAGVqgB,EAAYt6B,MAAOwF,EAAkB+0B,KACrCA,EAAQ,IACV/0B,EAAW,GAAGA,KAAY+0B,KAE5BF,EAAW70B,SAAWA,EAEtB,UACQg1B,EAAAA,EAAAA,IAAeH,GACrB9xB,GAAQ,EACV,CAAE,MAAOjG,GACPm4B,QAAQC,IAAI,MAAOp4B,GAGJ,MAAXA,EAAEwM,MAA0B,gCAAVxM,EAAEpF,IAClBq9B,EAAQ,SAEJD,EAAU90B,EAAU+0B,EAAQ,GAElC3b,EACE,IAAI+b,MAAM,mDAId/b,EAAOtc,EAEX,GAIFg4B,EAAU90B,EAAU,GACjBzF,MAAK,KAEJzC,OAAOoD,SAASk6B,QAAQ,IAEzB16B,OAAOs1B,IACNiF,QAAQjF,MAAM,2BAA4BA,GAC1C5W,EAAO4W,EAAM,GACb,KAIV5e,GAOF,OACEpc,EAAAA,EAAAA,MAACqgC,EAAAA,GAAc,CAAA5jC,SAAA,EACb2D,EAAAA,EAAAA,KAACkgC,EAAAA,GAAQ,KACTlgC,EAAAA,EAAAA,KAACmgC,EAAAA,GAAc,KACfvgC,EAAAA,EAAAA,MAACwgC,EAAAA,GAAS,CACR1jC,MAAO,CACL2jC,mBAAmB,GACnBhkC,SAAA,EACF2D,EAAAA,EAAAA,KAACC,EAAAA,GAAM,KAEPD,EAAAA,EAAAA,KAAA,OAAKS,UAAU,2DAA0DpE,SACtE6hC,GACCl+B,EAAAA,EAAAA,KAAC85B,EAAAA,GAAgB,CAACC,SAAUmE,KAE5Bl+B,EAAAA,EAAAA,KAACsgC,EAAAA,GAAM,OAGXtgC,EAAAA,EAAAA,KAAC6C,EAAAA,GAAK,CAACP,IAAKw7B,EAAUjiC,QAASA,EAAS6C,QAjI3B6hC,KACjBvC,GAAY,KAiIRh+B,EAAAA,EAAAA,KAACwgC,EAAAA,GAAS,KACVxgC,EAAAA,EAAAA,KAACygC,EAAAA,GAAoB,CAACziC,QAASqgC,KAC/Br+B,EAAAA,EAAAA,KAAC0gC,EAAAA,EAAU,CACTC,MAAuB,OAAhBpC,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBxrB,YACzB/U,QAASsJ,QAAwB,OAAhBi3B,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkBxrB,gBAErC/S,EAAAA,EAAAA,KAAC4gC,EAAAA,GAAiB,SAEL,EAIrB,GAAeC,EAAAA,EAAAA,MAAKhF,E,mECxKb,MAAMiF,EAAoD,GACpDC,EAAc,GAAGr+B,OAAOoD,SAASD,SAASi7B,IAE1CE,EAAa,CACxBC,KAAM,IACN9vB,MAAO,yCACP+vB,OAAQ,iDACRtkB,SAAU,+BACVukB,gBAAiB,0BACjBC,YAAa,sBACbC,cAAe,wBACfC,kBAAmB,4BACnBC,kBAAmB,oCACnBC,iBAAkB,mCAClBxuB,UAAW,2BACXyuB,gBAAiB,2BACjBC,aAAc,uBACdC,YAAa,sB,+DCff,MAeMC,EAAkBA,CAACC,EAAqB,GAAIC,EAAoB,MACpE,MAAM,IAAE/V,GAAQgW,EAAAA,GAAgB32B,WAChC,OAAKy2B,EAID,OAAO92B,KAAKghB,EAAIuG,YAAcwP,EACzB,cAAcD,KAAcG,mBAAmBF,KAGjD,cAAcD,IAPZC,EAAY,mBAAmBA,IAAc,iBAOrB,EAetBG,EAAc,CACzBC,WAzCkB1jC,GACRA,EAAW,SAASwjC,mBAAmBxjC,KAAc,QAyC/D2jC,QArCe3jC,GACLA,EAAW,SAASwjC,mBAAmBxjC,UAAmB,QAqCpE4jC,QAjCeC,GACL,SAASA,SAiCnBT,kBACAU,cAjBqBh/B,GASd,GAJoBs+B,EACzBt+B,EAAOu+B,WACPv+B,EAAOw+B,cAEuBx+B,EAAOi/B,W,qGCjClC,MAAMC,EAAkBl/B,IAC7B,MAAMm/B,EAAS,4BAA4BC,IAAAA,UAAap/B,MAClD,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAG9BH,EAAQI,EAAAA,EAAQC,SAAS1K,KAC3B,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUI,EAAqBz/B,GACzBu/B,EAAAA,EAAQG,IAAI,iCAAkC1/B,E,iFChBhD,MAAM2/B,EAAcA,KACzB,MACM,KAAE7gC,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9B,CAFa,+CAGbC,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUO,EAAkBA,KAC7B,MACM,KAAE9gC,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9B,CAFa,mDAGbC,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,C,6lDCxBI,MAAMQ,EACX7/B,IAEA,MAAMm/B,EAAS,iCAAiCC,IAAAA,UAAap/B,MACvD,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9B,CAACH,GACDI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUS,EAAqBA,CAChCC,EACA1T,IAEOkT,EAAAA,EAAQG,IAAI,kCAAmC,CACpDK,YACA1T,WCtBSnpB,EAAalD,GACjBu/B,EAAAA,EAAQC,SAASE,IAAI,2BAA4B1/B,GCD7CggC,EAAqBhgC,IAChC,MAAMm/B,EAAS,mCAAmCC,IAAAA,UAAap/B,MACzD,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9B,CAACH,GACDI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUY,EAAuBA,CAClCC,EACA7T,IAEOkT,EAAAA,EAAQG,IAAI,oCAAqC,CACtDQ,cACA7T,WCaS8T,EAAoBA,KAC/B,MACM,KAAErhC,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtB,CAFa,sCAGbC,EAAAA,EAAQC,SAAS1K,KAGnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,EAGU8I,EAAwBpgC,GAE5Bu/B,EAAAA,EAAQG,IADA,qCACY1/B,GAGhBqgC,EAAsBA,KACjC,MACM,KAAEvhC,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtB,CAFa,wCAGbC,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,EAGUgJ,EAA0BtgC,GAE9Bu/B,EAAAA,EAAQG,IADA,uCACY1/B,GAGhBugC,EAAiBA,KAC5B,MACM,KAAEzhC,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtB,CAFa,kCAGbC,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,EAGUkJ,EAAqBxgC,GAEzBu/B,EAAAA,EAAQG,IADA,iCACY1/B,GAGhBygC,EAA0BA,IAE9BlB,EAAAA,EAAQzK,IADA,sCAIJ4L,EAAkBA,IACtBnB,EAAAA,EAAQzK,IAAI,uCAGR6L,EAAgB3gC,GACpBu/B,EAAAA,EAAQG,IAAI,sCAAuC1/B,GAG/C4gC,EAA2BA,IAC/BrB,EAAAA,EAAQzK,IAAI,oCAGR+L,EAA6B7gC,GACjCu/B,EAAAA,EAAQG,IAAI,mCAAoC1/B,GAG5C8gC,EAAkBA,IACtBvB,EAAAA,EAAQzK,IACb,oCAISiM,EAAmB/gC,GACvBu/B,EAAAA,EAAQG,IAAI,mCAAoC1/B,GAG5CghC,EAAgBA,IACpBzB,EAAAA,EAAQzK,IAA2B,kCAG/BmM,EAAiBjhC,GACrBu/B,EAAAA,EAAQG,IAAI,iCAAkC1/B,GAG1CkhC,EAAkBA,IACtB3B,EAAAA,EAAQzK,IACb,oCAISqM,EAAmBnhC,GACvBu/B,EAAAA,EAAQG,IAAI,mCAAoC1/B,GAG5CohC,EAAgBA,IACpB7B,EAAAA,EAAQzK,IACb,8CAISuM,EAAiBrhC,GACrBu/B,EAAAA,EAAQG,IAAI,6CAA8C1/B,GAGtDshC,EAAkBA,IACtB/B,EAAAA,EAAQzK,IACb,oCAISyM,EAAmBvhC,GACvBu/B,EAAAA,EAAQG,IAAI,mCAAoC1/B,GAG5CwhC,EAAkBA,IACtBjC,EAAAA,EAAQzK,IAAwB,oCAG5B2M,EAAmBzhC,GACvBu/B,EAAAA,EAAQG,IAAI,mCAAoC1/B,GAG5C0hC,EAAsBA,IAC1BnC,EAAAA,EAAQzK,IACb,wCAIS6M,EAAuB3hC,GAC3Bu/B,EAAAA,EAAQG,IAAI,uCAAwC1/B,GC5KhD4hC,EAAoB5hC,GACxBu/B,EAAAA,EAAQG,IAAI,gCAAiC1/B,GAGzC6hC,EAAiB7hC,IAC5B,MAAMm/B,EAAS,gCAAgCC,IAAAA,UAAap/B,MACtD,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9BH,EACAI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUx5B,EAAeA,IACnB05B,EAAAA,EAAQzK,IAAI,2BAGRpvB,EAAkB1F,GACtBu/B,EAAAA,EAAQG,IAAI,8BAA+B1/B,GAWvC8hC,EAAY9hC,GAChBu/B,EAAAA,EAAQnS,KAAK,0BAA2BptB,GAGpC+hC,EAAsB/hC,GAI1Bu/B,EAAAA,EAAQG,IAAI,kCAAmC1/B,GAG3CgiC,EAAqBhiC,GAMzBu/B,EAAAA,EAAQG,IAAI,iCAAkC1/B,GAG1CgJ,EAAqBjC,GAEzBw4B,EAAAA,EAAQzK,IADA,oCAGJ,CACT90B,OAAQ,CACN2F,QAASoB,KAKF8B,EAAsB9B,GAE1Bw4B,EAAAA,EAAQnS,KADA,oCACa,CAC1BznB,QAASoB,ICrEAk7B,EAAeA,KAC1B,MACM,KAAEnjC,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtB,CAFa,+BAGbC,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,ECaU4K,EAAmBliC,IAC9B,MAAMm/B,EAAS,6BAA6BC,IAAAA,UAAap/B,MACnD,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9BH,EACAI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGU8C,EAAsBniC,GAC1Bu/B,EAAAA,EAAQG,IAAI,kCAAmC1/B,GAG3CoiC,EAAwBpiC,IACnC,MAAMm/B,EAAS,mCAAmCC,IAAAA,UAAap/B,MACzD,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9BH,EACAI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUgD,EAAsBriC,GAC1Bu/B,EAAAA,EAAQG,IAAI,kCAAmC1/B,G,SCvDjD,MAAMsiC,EAAetiC,IAC1B,MAAM8Q,EAAO,IAAIyxB,SAGjB,OAFAzxB,EAAK0xB,OAAO,SAAUz+B,OAAO/D,EAAO1C,OACpCwT,EAAK0xB,OAAO,OAAQxiC,EAAOoS,MACpBmtB,EAAAA,EAAQnS,KAAK,sBAAuBtc,EAAK,EAGrC2xB,EAAwBjoC,GAC5B+kC,EAAAA,EAAQzK,IAAI,yCAAyCt6B,KAGjDkoC,EAAgB1iC,IAC3B,MAAM,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9B,4BAA4BF,IAAAA,UAAap/B,EAAQ,CAC/C2iC,WAAW,MAEbpD,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUuD,GAAqBthC,IACzBg+B,EAAAA,EAAAA,IACLh+B,EAAY,sCAAsCA,IAAc,GAChEi+B,EAAAA,EAAQC,SAAS1K,KAIR+N,GAAoB7iC,IACX,IAAhBA,EAAOy1B,MACTz1B,EAAO8iC,WAAa,OACpB9iC,EAAOy1B,KAAO,IAGdz1B,EAAO8iC,WAAa,UACb9iC,EAAO+iC,aAETzD,EAAAA,EAAAA,IACL,+BAA+BF,IAAAA,UAAap/B,EAAQ,CAClD2iC,WAAW,MAEbpD,EAAAA,EAAQC,SAAS1K,MAIRkO,GAAiBhjC,GACrBu/B,EAAAA,EAAQG,IAAI,yBAA0B1/B,GAGlCijC,GAAgBA,CAAC1hC,EAAIuI,EAA2B,CAAC,IACrDy1B,EAAAA,EAAQ2D,OAAO,yBAA0B,CAC9CH,WAAYxhC,KACTuI,IAIMq5B,GAAcnjC,GAClBu/B,EAAAA,EAAQnS,KAAK,yBAA0BptB,GAGnCojC,GAAkBpjC,GACtBu/B,EAAAA,EAAQG,IAAI,+BAAgC1/B,GAGxCqjC,GAAkB/hC,GACtBi+B,EAAAA,EAAQzK,IACb,0CAA0CxzB,KAIjCgiC,GAAap2B,GACjBqyB,EAAAA,EAAQzK,IACb,oCAAoC4J,mBAAmBxxB,MAI9Cq2B,GAAsBhiC,IAC1B+9B,EAAAA,EAAAA,IAGJ,iCAAiC/9B,IAAMg+B,EAAAA,EAAQC,SAAS1K,KAGhD0O,GACXxjC,GAEOu/B,EAAAA,EAAQG,IAAI,0BAA2B1/B,GAGnCyjC,GAAgBzjC,GACpBu/B,EAAAA,EAAQG,IAAI,wBAAyB1/B,GAGjC6N,GAAS7N,GACbu/B,EAAAA,EAAQnS,KACb,kCACAptB,GAIS0jC,GAAY1jC,GAChBu/B,EAAAA,EAAQnS,KAAU,qCAAsCptB,GAGpD4O,GAASA,IACb2wB,EAAAA,EAAQzK,IAAI,8BAGR6O,GAAe3jC,IAC1BA,EAASo/B,IAAAA,MACPA,IAAAA,UAAap/B,EAAQ,CACnB2iC,WAAW,KAGRpD,EAAAA,EAAQnS,KAAK,8CAA+C,IAC9DptB,KASM4jC,GAAoBA,CAAC7Y,EAAS,CAAE8Y,cAAc,KAC7CtE,EAAAA,EAAQzK,IAAsB,2BAA4B/J,GAK3DuR,GAAkBt8B,GACtBu/B,EAAAA,EAAQG,IAAI,2BAA4B1/B,GAGpC8jC,GAAkB9jC,GACtBu/B,EAAAA,EAAQG,IAAI,+BAAgC1/B,GAGxC+jC,GAAiB/jC,GACrBu/B,EAAAA,EAAQnS,KAAK,qCAAsCptB,GAG/CgkC,GAAuBhkC,GAC3Bu/B,EAAAA,EAAQnS,KAAK,2CAA4CptB,GAGrDikC,GAAmBrzB,GACvB2uB,EAAAA,EAAQnS,KAAK,yCAA0C,CAAExc,SAGrDzG,GAAgB+5B,GAEpB3E,EAAAA,EAAQzK,IADA,oCAC6B,CAC1C90B,OAAQ,CACNyC,OAAQyhC,KASDC,GAAgBnkC,GACpBu/B,EAAAA,EAAQnS,KAAK,0BAA2BptB,GAGpCokC,GAAkB7iC,GACtBg+B,EAAAA,EAAQzK,IACb,mCAAmCvzB,IACnC,CAAE8iC,UAAU,IAIHC,GAActkC,IACzB,MAAMm/B,EAAS,8BAA8BC,IAAAA,UAAap/B,KAC1D,OAAOu/B,EAAAA,EAAQzK,IAAsCqK,EAAO,EAGjDoF,GAAcvkC,GAClBu/B,EAAAA,EAAQnS,KAAK,wBAAyBptB,GAGlC+Y,GAAY/Y,GAKhBu/B,EAAAA,EAAQnS,KAAK,mCAAoCptB,GAG7CwkC,GAAWA,CACtBxkC,EACA1C,IAEOiiC,EAAAA,EAAQnS,KAAK,uBAAuB9vB,IAAQ0C,GAGxC8hB,GAAa9hB,GAIjBu/B,EAAAA,EAAQnS,KACb,wBACAptB,GAISykC,GAAoBzkC,GAIxBu/B,EAAAA,EAAQnS,KAAK,mCAAoCptB,GAG7CwE,GAAaA,EACxBlH,OACAmF,SACAO,aAAY,MAEZ,IAAI0hC,EAAM,yBAIV,OAHI1hC,IACF0hC,EAAM,6BAEDnF,EAAAA,EAAQzK,IAAI,GAAG4P,iBAAmBpnC,YAAemF,IAAS,EAGtDb,GACX5B,GAOOu/B,EAAAA,EAAQnS,KAAK,wBAAyBptB,GAGlC2kC,GAAkB3kC,GAKtBu/B,EAAAA,EAAQ2D,OAAO,0BAA2BljC,GAGtC4kC,GAAgB5kC,GAKpBu/B,EAAAA,EAAQ2D,OAAO,wBAAyBljC,GAGpC+C,GAAiB/C,GAKrBu/B,EAAAA,EAAQG,IAAI,iCAAkC1/B,GAG1C89B,GAAe99B,GACnBu/B,EAAAA,EAAQnS,KAAK,wCAAyCptB,GAGlD6kC,GAAqB7kC,GACzBu/B,EAAAA,EAAQG,IAAI,4BAA6B1/B,GAGrC8kC,GAAiBA,IACrBvF,EAAAA,EAAQzK,IAAuB,2BAG3BiQ,GAAkB/kC,GACtBu/B,EAAAA,EAAQG,IAAI,iCAAkC1/B,GAG1CgjB,GAAepS,GAEnB2uB,EAAAA,EAAQG,IADA,+CACY,CAAE9uB,SAGlBo0B,GAAkBxkC,GAEtB++B,EAAAA,EAAQnS,KADA,6BACa,CAAE5sB,YAGnBykC,GAA0BjlC,GAC9Bu/B,EAAAA,EAAQnS,KAAK,iCAAkCptB,GAG3CklC,GAAqBllC,GACzBu/B,EAAAA,EAAQG,IAAI,oCAAqC1/B,GAG7CmlC,GAAmBA,IACvB5F,EAAAA,EAAQzK,IAA4B,gCC/ShCsQ,GAAaplC,IACxB,MACM,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9Bt/B,EAAS,CAFI,wBAEKA,GAAU,KAC5Bu/B,EAAAA,EAAQC,SAASpS,MAEnB,MAAO,CACLtuB,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,ECVUgG,GAAyB/9B,IACpC,MACM,KAAExI,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9Bh4B,EAAW,8CAAsBA,IAAa,MAC7CjF,GACCk9B,EAAAA,EAAQzK,IAAIzyB,EAAK,CACfgiC,UAAU,MAGhB,MAAO,CACLvlC,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAeUiG,GAAiBA,CAACh+B,EAAkBi+B,KAC/C,MACM,KAAEzmC,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACV,aAAZiG,EAAyB,2CAAYj+B,IAAa,KAClDi4B,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,EAGUkO,GAA2BA,CAACxlC,EAAiBulC,KACxD,IAAIpG,EAAwB,GACZ,YAAZoG,IACFpG,EAAS,uCAEK,cAAZoG,IACFpG,EAAS,yCAEK,cAAZoG,WACKvlC,EAAOylC,MACdtG,EAAS,2CAEK,aAAZoG,WACKvlC,EAAOylC,MACdtG,EAAS,wCAEK,eAAZoG,WACKvlC,EAAOylC,MACdtG,EAAS,qCAEK,UAAZoG,WACKvlC,EAAOsH,SACd63B,EAAS,qCAEK,WAAZoG,WACKvlC,EAAOylC,MACdtG,EAAS,oCAGX,MAAMuG,EAActG,IAAAA,UAAap/B,EAAQ,CAAE2iC,WAAW,KAChD,KAAE7jC,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAClB,WAAZiG,EAAuB,GAAGpG,KAAUuG,IAAgB,KACpDnG,EAAAA,EAAQC,SAAS1K,KAGnB,MAAO,CACLh2B,KAAM,CACJ,CAACymC,GAAUzmC,GAEb4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,E,gBCnFI,MAAMsG,GAAyB3lC,IACpC,MAAMm/B,EAAS,oCAAoCC,IAAAA,UAAap/B,EAAQ,CACtE2iC,WAAW,OAGP,KAAE7jC,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9BH,EACAI,EAAAA,EAAQC,SAAS1K,KAGnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUuG,GAAoBrkC,GACxBg+B,EAAAA,EAAQC,SAASE,IAAI,yCAA0C,CACpEn+B,OAIS25B,GAA6BA,KAGjCoE,EAAAA,EAAAA,KACLuG,EAAAA,GAAAA,yBAAwBzkB,GAHX,qCAGyB,MACrC/e,GAAQk9B,EAAAA,EAAQzK,IAAIzyB,EAAK,CAAEyjC,YAAa,SACzC,CACEC,gBAAiB,MAKVC,GAA2B1oC,GAC/BiiC,EAAAA,EAAQC,SAASE,IAAI,qCAAsC,CAChEpiC,SAIS2oC,GAA2B3oC,GAC/BiiC,EAAAA,EAAQC,SAASE,IAAI,6CAA8C,CACxEpiC,SC7CS4oC,GAAmBlmC,IAC9B,MAAMm/B,EAAS,gCAAgCC,IAAAA,UAAap/B,MACtD,KAAElB,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtB,CAACH,GACDI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,EAGU6O,GAA4BnmC,IACvC,MAAMm/B,EAAS,0CAA0CC,IAAAA,UACvDp/B,MAEI,KAAElB,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtB,CAACH,GACDI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,EAGU8O,GAAkBA,CAC7BpmC,EAAiC,CAC/By1B,KAAM,EACN4Q,UAAW,EACXZ,MAAO,MACPa,QAAS,MAGX,MAAMnH,EAAS,gCAAgCC,IAAAA,UAAap/B,MACtD,KAAElB,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtB,CAACH,GACDI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,EAGUiP,GAAsBvmC,IAIjC,MAAMm/B,EAAS,uCAAuCC,IAAAA,UAAap/B,MAE7D,KAAElB,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtBt/B,EAAOkgC,YAAcf,EAAS,KAC9BI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,EAGUkP,GAAiBjI,GAErBgB,EAAAA,EAAQzK,IADA,iCACiC,CAC9C90B,OAAQ,CAAEuB,GAAIg9B,KAILkI,GAAgBA,CAC3BlI,EACAx5B,EACA+E,EAA2B,CAAC,IAGrBy1B,EAAAA,EAAQG,IADA,iCACY,CACzBn+B,GAAIg9B,EACJmI,YAAa3hC,KACV+E,IAIM68B,GAAkBplC,GACtBg+B,EAAAA,EAAQnS,KAAK,gCAAiC,CACnD2S,UAAWx+B,IAIFqlC,GAAoBC,GACxBtH,EAAAA,EAAQnS,KAAK,kCAAmC,CACrD8S,YAAa2G,IChGJC,GAAmB9mC,GAGvBu/B,EAAAA,EAAQzK,IAFA,wBAE4B,CACzC90B,WCDS+mC,GAAaxlC,GACjBg+B,EAAAA,EAAQ2D,OAAO,qBAAsB,CAC1C8D,OAAQzlC,IAGC0lC,GAAajnC,GACjBu/B,EAAAA,EAAQG,IAAI,qBAAsB1/B,GAG9BknC,GAAuBA,CAACnI,EAAO1S,KAC1C,MAAM8S,EACO,YAAX9S,EACI,GACA0S,EACE,sCAAsCA,IACtC,GACR,OAAOO,EAAAA,EAAAA,IAGJH,EAAQI,EAAAA,EAAQC,SAAS1K,IAAI,EAGrBqS,GAAoBnnC,GACxBu/B,EAAAA,EAAQG,IAAI,6BAA8B1/B,GAGtConC,GAAmBA,KAC9B,IAAIjI,EAAS,IACT0G,EAAAA,GAAAA,yBAAwBzkB,KAC1B+d,EAAS,iCAEX,MAAM,KAAErgC,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAAcH,EAAQI,EAAAA,EAAQC,SAAS1K,KACvE,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUgI,GAAaA,EAAG9lC,KAAK,GAAI/I,OAAO,OAC3C,IAAI2mC,EACA59B,EACF49B,EAAS,yBAAyB59B,IACzB/I,IAET2mC,EAAS,2BADT3mC,EAAOkmC,mBAAmBlmC,MAG5B,MAAM,KAAEsG,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAAqBH,GAAS98B,GAC5Dk9B,EAAAA,EAAQzK,IAAIzyB,EAAK,CAAEgiC,UAAU,MAE/B,MAAO,CACLhF,SACAvgC,OACA4J,WAAY5J,IAASw4B,EACrBA,QACD,EAGUgQ,GAActnC,GAClBu/B,EAAAA,EAAQG,IAAI,6BAA8B1/B,GAGtCunC,GAAqBC,IAChC,MAAMrI,EAAS,4BAA4BT,mBAAmB8I,KAC9D,OAAOjI,EAAAA,EAAQzK,IAAoBqK,EAAO,EAG/BsI,GAAaznC,GAEjBu/B,EAAAA,EAAQnS,KADA,qBAC2BptB,GAG/B0nC,GAAenmC,GACnBg+B,EAAAA,EAAQnS,KAAK,6BAA8B,CAChD4Z,OAAQzlC,IC1EComC,GAAoBA,IACxBpI,EAAAA,EAAQzK,IAAI,kCAGR8S,GAAqBA,IACzBrI,EAAAA,EAAQzK,IAAsB,mCAO1B+S,GAAuB/oC,GAC3BygC,EAAAA,EAAQG,IAAI,gCAAiC5gC,GAGzCgpC,GAA2BA,KAC/BxI,EAAAA,EAAAA,IACL,0CACAC,EAAAA,EAAQC,SAAS1K,KAIRiT,GAAyBjpC,GAC7BygC,EAAAA,EAAQG,IAAI,0CAA2C5gC,GAGnDkpC,GAAuBA,KAC3B1I,EAAAA,EAAAA,IACL,qCACAC,EAAAA,EAAQC,SAAS1K,KAIRmT,GAA0BjoC,IACrC,MAAMm/B,EAAS,qCAAqCC,IAAAA,UAAap/B,MAC3D,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9BH,EACAI,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGU6I,GAA0BloC,GAC9Bu/B,EAAAA,EAAQG,IAAI,oCAAqC1/B,G,gBCrCnD,MAAMmoC,GAAmBnoC,GACvBu/B,EAAAA,EAAQzK,IACb,oCAAoCsK,IAAAA,UAAap/B,EAAQ,CACvD2iC,WAAW,OAKJyF,GAAqBpoC,GAIzBu/B,EAAAA,EAAQzK,IACb,2CAA2CsK,IAAAA,UAAap/B,EAAQ,CAC9D2iC,WAAW,OC/BJ7M,GAAYA,CAACv0B,EAAYsiC,GAAwB,KAC5D,MAAM1E,EAAS,0CAA0C59B,IACzD,OAAOg+B,EAAAA,EAAQzK,IAAIqK,EAAQ,CACzB0E,gBACA,EAGSwE,GAAgBA,CAAC9mC,EAAY+mC,IAEjC/I,EAAAA,EAAQG,IADA,iCACY,CACzBn+B,KACA+mC,cCRSC,GAA0BA,KAE9BjJ,EAAAA,EAAAA,IADQ,8BAKJC,EAAAA,EAAQC,SAAS1K,KAGjB0T,GAAoBhwC,GAExB+mC,EAAAA,EAAQzK,IADA,kCACiC,CAC9C90B,OAAQ,CACNsH,SAAU9O,KA2CHiwC,GACXC,IAEA,MACMjmC,EAASyC,MAAM4zB,QAAQ4P,GAAQA,EAAKC,KAAK,KAAOD,EAEtD,OAAOpJ,EAAAA,EAAAA,IAUL,CAba,4BAaJ,CAAEt/B,OAAQ,CAAEyC,YAAa88B,EAAAA,EAAQC,SAAS1K,IAAI,EAG9C8T,GAAsBpwC,IACjC,MAAM2mC,EAAS3mC,EACX,sCAAsCA,iBACtC,KACJ,OAAO8mC,EAAAA,EAAAA,IAAoBH,EAAQI,EAAAA,EAAQC,SAAS1K,IAAI,EC/E7C+T,GAAkB/pC,GACtBygC,EAAAA,EAAQnS,KAAK,yCAA0CtuB,GAGnDgqC,GAA8BA,KACzC,MAAM,KAAEhqC,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9B,qCACAC,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACAugC,SACA32B,WAAY5J,IAASw4B,EACrBA,QACD,EAGUyR,GAAmBjqC,GACvBygC,EAAAA,EAAQ2D,OAAO,0CAA2CpkC,GClBtDkqC,GAAwBvT,IACnC,MAAM0J,EAAS,4CAA4C1J,IAC3D,OAAO8J,EAAAA,EAAQzK,IAA4BqK,EAAO,EAGvC8J,GAAgBA,IACpB1J,EAAAA,EAAQzK,IAA2B,iCAG/BoU,GAAyBzT,IACpC,MAAM0J,EAAS,8CAA8C1J,IAC7D,OAAO8J,EAAAA,EAAQzK,IAAyBqK,EAAO,EAGpCz8B,GAAuB1C,GAC3Bu/B,EAAAA,EAAQG,IAAI,+BAAgC1/B,GAGxCmpC,GAA2BA,CAAC1T,EAAc2T,KACrD,MACMjK,EAAS,gDAAgD1J,IADhD2T,EAAW,cAAcA,IAAa,KAErD,OAAO7J,EAAAA,EAAQzK,IAA2BqK,EAAO,EAGtCkK,GAA0BrpC,GAI9Bu/B,EAAAA,EAAQG,IAAI,qCAAsC1/B,GC3B9CspC,GAAkBA,KAC7B,MACM,KAAExqC,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IADjB,wBAGbC,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUkK,GAAmBhoC,IAC9B,MAAM,KAAEzC,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9B,2BAA2B/9B,IAC3Bg+B,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUmK,GAAsBxpC,IACjC,MAAM,KAAElB,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAC9B,oCAAoCF,IAAAA,UAAap/B,EAAQ,CACvD2iC,WAAW,MAEbpD,EAAAA,EAAQC,SAAS1K,KAEnB,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EAGUoK,GAA2BniC,IACtC,MAAM63B,EAAS73B,EACX,oDAAoDA,IACpD,MACE,KAAExI,EAAI,MAAEw4B,EAAK,OAAE+H,IAAWC,EAAAA,EAAAA,IAG9BH,EAAQI,EAAAA,EAAQC,SAAS1K,KAC3B,MAAO,CACLh2B,OACA4J,WAAY5J,IAASw4B,EACrBA,QACA+H,SACD,EC3DUqK,GAAwBA,IAC5BnK,EAAAA,EAAQnS,KAAK,mCAGTuc,GAAW3pC,GACfu/B,EAAAA,EAAQnS,KAAK,yBAA0BptB,GAGnC4pC,GAAe5pC,GACnBu/B,EAAAA,EAAQnS,KAAK,qBAAsBptB,GAG/B6pC,GAAmB7pC,GACvBu/B,EAAAA,EAAQnS,KAAK,0BAA2BptB,GAGpC8pC,GAAwBA,IAC5BvK,EAAAA,EAAQzK,IAAI,kC,yGC6Bd,MAAMiV,EAAaA,IAEjBxK,EAAAA,EAAQzK,IADA,oCAGJkV,EAAkBA,IAEtBzK,EAAAA,EAAQzK,IADA,uCAGJmV,EAAgBA,IAEpB1K,EAAAA,EAAQzK,IADA,4CAIJoV,EAAiB5iC,IAC5B,MAAM63B,EAAS,yDAAyD73B,IACxE,OAAOi4B,EAAAA,EAAQzK,IAAgBqK,EAAO,C,yMCtDxC,MAgBA,GAhBqBgL,EAAAA,EAAAA,KAAeC,IAAG,CACrCv8B,MAAO,CACLw8B,yBAAyB,EACzB9jB,gBAAgB,EAChB+jB,2BAA2B,EAC3BC,oBAAqB,GACrBC,sBAAsB,GAExB5iC,OAAS5H,GACPoqC,GAAI,KACK,CACLv8B,MAAO7N,UCOf,GAlBcmqC,EAAAA,EAAAA,KAAgBC,IAAG,CAC/B3hB,IAAK,CACHwG,OAAQ,GACRD,UAAW,GAEbpnB,OAAS5H,GACPoqC,GAAKK,IACH,MAAM5+B,EAAI,IAAK4+B,EAAMhiB,OAAQzoB,GAK7B,MAHK,SAASyH,KAAKoE,EAAEmjB,aACnBnjB,EAAEmjB,UAAY,GAET,CACLvG,IAAK5c,EACN,QCHP,GAXcs+B,EAAAA,EAAAA,KAAyBC,IAAG,CACxCM,WAAOjpC,EACPmG,OAAS+iC,IACHA,GACFP,EAAI,CACFM,MAAOC,GAEX,MCOJ,GAbmBR,EAAAA,EAAAA,KAAoBC,IAAG,CACxCprC,IAAK,GACLzG,QAAS,UACTiE,KAAOwD,GACLoqC,GAAKK,IACI,IACFA,KACAzqC,MAGTy6B,MAAOA,IAAM2P,EAAI,CAAEprC,IAAK,S,0BCL1B,MAAM4rC,EAAuC,CAC3Cva,qBAAqB,EACrBC,kBAAkB,EAClBH,2BAA2B,EAC3BK,uBAAuB,EACvBJ,uBAAuB,EACvBG,sBAAsB,EACtBsa,eAAgB,SAChB5a,kBAAmB,oCAuCrB,GApCiBka,EAAAA,EAAAA,KAAsBC,IAAG,CACxCU,SAAU,CACRtyC,KAAMnB,EAAAA,GACN8D,YAAa,GACb4vC,kBAAmB,GACnB5kB,SAAU,GACVG,cAAe,GACfiH,cAAc,EACdyB,UAAW,GAEbjqB,MAAO6lC,EACP/gB,QAAS,GACT3V,SAAU,GACVtM,OAAS5H,GACPoqC,GAAKY,IACH,MAAMn/B,EAAI,IAAKm/B,EAAEF,YAAa9qC,GAI9B,OAHK6L,EAAErT,OACLqT,EAAErT,KAAOnB,EAAAA,IAEJ,CACLyzC,SAAUj/B,EACX,IAELo/B,cAAeA,CAACC,EAAKh3B,KACnBk2B,GAAI,KACK,CAAEvgB,QAASqhB,EAAKh3B,cACvB,EAEJi3B,YAAcpmC,IACZqlC,GAAI,KACFrlC,IAAU6lC,EACH,CAAE7lC,WACT,MClCN,GAdyBolC,EAAAA,EAAAA,KAAuBC,IAAG,CACjDgB,UAAW,CACTn6B,SAAU3Z,EAAAA,GACVk2B,UAAW,GACXqd,eAAgB,UAElBjjC,OAAS5H,GACPoqC,GAAI,KACK,CACLgB,UAAWprC,UCKnB,GAfwBmqC,EAAAA,EAAAA,KAAeC,IAAG,CACxChiB,SAAU,CACRiG,KAAM,GACNE,YAAa,GACbD,YAAa,GACbE,QAAS,IAEX5mB,OAAS5H,GACPoqC,GAAI,KACK,CACLhiB,SAAUpoB,UCIZqrC,GAAWlB,EAAAA,EAAAA,KAAqBC,IAAG,CACvCkB,MAAO,CACLC,UAAW,GACXpwC,YAAa,GACb6M,SAAU,IAEZJ,OAAS5H,IAAY,IAADwrC,EAClB,MAAM3/B,EAAgB,CAAC,GACnB7L,EAAOxF,OAASwF,EAAO+H,YACzB8D,EAAE0/B,UArBcE,EAACjxC,EAAQ,GAAIuN,EAAW,MAC5C,MAAM,SAAE+iC,GAAaY,EAAc5jC,WAC9BC,IACHA,EAAW,GAAG+iC,EAAStyC,QAEzB,IAAI+yC,EAAYxjC,EAIhB,OAHIvN,GAASA,IAAUuN,IACrBwjC,EAAY,GAAG/wC,IAAQuN,EAAW,MAAMA,IAAa,MAEhDwjC,CAAS,EAYEE,CAAczrC,EAAOxF,MAAOwF,EAAO+H,WAEnD8D,EAAE1Q,YACA6E,EAAO7E,cAC0B,QADfqwC,EAClBE,EAAc5jC,WAAWgjC,gBAAQ,IAAAU,OAAA,EAAjCA,EAAmCrwC,cACnC,GACF0Q,EAAE7D,SAAWhI,EAAOgI,UAAY,GAEhCoiC,EAAI,CACFkB,MAAOz/B,GACP,MAIN,ICdA,GAfqBs+B,EAAAA,EAAAA,KAAeC,IAAG,CACrC9a,WAAY,GACZqc,YAAa,GACbC,cAAe,GACfC,cAAe,GACfC,eAAgB,GAChBlkC,OAAS5H,GACPoqC,GAAKK,IACI,IACFA,KACAzqC,UCIX,GAnBcmqC,EAAAA,EAAAA,KAAeC,IAAG,CAC9B2B,MAAO,UACP7c,aAAc,SACd8c,cAAe,CAAC,CAAE9yC,MAAO,UAAWE,MAAO,YAC3C6yC,aAAc,CACZ5kC,QAAS,CACP8nB,aAAc,UACdC,cAAe,YAGnBxnB,OAAS5H,GACPoqC,GAAKK,IACI,IACFA,KACAzqC,UCDX,GAhBcmqC,EAAAA,EAAAA,KAAgBC,IAAG,CAC/B9hB,MAAO,CACLqG,iBAAiB,EACjBC,eAAgB,GAChBE,cAAc,EACdC,cAAe,IAEjBnnB,OAAS5H,GACPoqC,GAAKK,IAEI,CACLniB,MAFQ,IAAKmiB,EAAMniB,SAAUtoB,WCHrC,GAR6BmqC,EAAAA,EAAAA,KAAgBC,IAAG,CAC9C5tC,MAAM,EACNoL,OAAS5H,GACPoqC,EAAI,IACCpqC,QCeT,GAfcmqC,EAAAA,EAAAA,KAAuBC,IAAG,CACtCx5B,KAAM,GACN5R,IAAK,GACL4I,OAAQA,CAACgJ,EAAgB5R,EAAc,MACrCorC,GAAI,KACK,CAAEx5B,OAAM5R,SACf,EAEJwiB,MAAOA,KACL4oB,GAAI,KACK,CAAEx5B,KAAM,GAAI5R,IAAK,MACxB,MCSN,GAhBcmrC,EAAAA,EAAAA,KAAuBC,IAAG,CACtC1vC,SAAS,EACTwxC,cAAc,EACdh4B,SAAU,EACVi4B,cAAeA,KACb/B,GAAKK,IACI,CAAE/vC,SAAU+vC,EAAM/vC,WACzB,EAEJ0xC,aAAepsC,IACboqC,GAAI,KACK,IAAKpqC,KACZ,MCXN,GATcmqC,EAAAA,EAAAA,KAA0BC,IAAG,CACzC7oC,GAAI,GACJqG,OAASrG,IACP6oC,GAAI,KACK,CAAE7oC,QACT,K,qFCAN,MAAM8qC,EAAwB,CAC5BC,aAAc,GACdhlC,SAAU,GACVmU,OAAQ,GACR8wB,KAAM,EACNzwB,IAAK,GACL0wB,SAAU,GACV1wC,aAAc,GACd0G,SAAU,GACVuZ,QAAS,GACTsQ,OAAQ,SACRogB,YAAa,EACbx7B,SAAU,UACVie,aAAc,UACdwd,UAAU,EACVC,eAAe,EACf/mC,QAAS,GA6BX,GA1BuBukC,EAAAA,EAAAA,KAAuBC,IAAG,CAC/C1xB,KAAM2zB,EACNzkC,OAAS5H,IACe,kBAAXA,GAAwBA,IAGxB,OAANA,QAAM,IAANA,GAAAA,EAAQiR,WACXjR,EAAOiR,SAAW,WAET,OAANjR,QAAM,IAANA,GAAAA,EAAQkvB,eACXlvB,EAAOkvB,aAAe,WAExBkb,GAAI,KACFvV,EAAAA,EAAQuV,IAAI3yC,EAAAA,GAA0BuI,EAAOssC,cACtC,CAAE5zB,KAAM1Y,MACf,EAEJy6B,MAAOA,CAACmS,GAAc,IACpBxC,GAAI,KACEwC,GACF/X,EAAAA,EAAQpa,OAAOhjB,EAAAA,IAEV,CAAEihB,KAAM2zB,S,gDCrDrB,MAAMQ,EAWJC,WAAAA,CACEC,EAAQ,CACNC,UAAW,KACXC,SAAU,IACVC,MAAO,EACPC,QAAQ,IAET,KAjBKH,eAAS,OAETC,cAAQ,OAERG,cAAQ,OAERF,WAAK,OAELC,YAAM,EAUZE,KAAKL,UAAY,KACjBK,KAAKJ,SAAWF,EAAME,UAAYJ,EAASS,MAAMC,SACjDF,KAAKD,SAAW,EAChBC,KAAKH,MAAQ,EACbG,KAAKF,SAAWJ,EAAMI,OAEtBE,KAAK7rB,OACP,CAEA,gBAAW8rB,GACT,MAAO,CACLC,SAAU,IAEd,CAEA/rB,KAAAA,GACE6rB,KAAKL,UAAY,IACnB,CAEAQ,KAAAA,CAAMh4B,GACJ63B,KAAKL,UAAYx3B,CACnB,CAEAi4B,IAAAA,CAAKj4B,GACH,OAAI63B,KAAKL,WACPK,KAAKH,MAAQ13B,EAAM63B,KAAKL,UACxBK,KAAKD,SAAWrR,KAAK2R,IAAIL,KAAKH,MAAQG,KAAKJ,SAAU,GAEjDI,KAAKD,UAAY,GAAKC,KAAKF,QAC7BE,KAAKG,MAAMh4B,GAGN63B,KAAKD,UAEP,CACT,EAGF,UCvDe,MAAMO,EAuBnBb,WAAAA,CAAYC,GAAQ,KAtBZ9tC,YAAM,OAEN2uC,YAAM,OAENC,SAAG,OAEH5iC,WAAK,OAELC,YAAM,OAENvP,YAAM,OAENmyC,YAAM,OAENV,cAAQ,OAERW,mBAAa,OAEbC,gBAAU,OAEVC,aAAO,EAGbZ,KAAKpuC,OAAS8tC,EAAMmB,KAAOn0C,SAASge,KACpCs1B,KAAKO,OAAS7zC,SAASC,cAAc,UACrCqzC,KAAKQ,IAAMR,KAAKO,OAAOO,WAAW,MAClCd,KAAKpiC,MAAQ8hC,EAAM9hC,OAASoiC,KAAKpuC,OAAOmvC,YACxCf,KAAKniC,OAAS6hC,EAAM7hC,QAAUmiC,KAAKpuC,OAAOovC,aAC1ChB,KAAK1xC,OAASoxC,EAAMpxC,QAAUgyC,EAASL,MAAMgB,aAC7CjB,KAAKS,OAASf,EAAMe,QAAwB,EAAdT,KAAKniC,OACnCmiC,KAAKD,SAAW,IAAIP,EAAS,CAC3BI,SAAUF,EAAME,SAChBE,QAAQ,EACRH,UAAW,KACXE,MAAO,IAETG,KAAKU,cAC6B,kBAAzBhB,EAAMwB,eAA8BxB,EAAMgB,cAAgB,GACnEV,KAAKW,WACyB,kBAArBjB,EAAMiB,WAA0BjB,EAAMiB,WAAa,GAC5DX,KAAKY,QAAU,GAEfZ,KAAKO,OAAO3vC,MAAMuwC,QAAU,CAC1B,iBACA,qBACA,SACA,UACA,wBACA7F,KAAK,KAEP0E,KAAKhxC,OAASgxC,KAAKhxC,OAAOoyC,KAAKpB,MAE/BA,KAAKqB,QAELrB,KAAKpuC,OAAOK,YAAY+tC,KAAKO,QAC7BP,KAAKD,SAASI,MAAMmB,YAAYn5B,OAEhCo5B,sBAAsBvB,KAAKhxC,OAC7B,CAEA,gBAAWixC,GACT,MAAO,CACLuB,aAAc,EACdC,cAAe,GACfR,aAAc,IACdf,SAAU,IACVwB,cAAe,GACfC,OAAQ,CACN,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,UACA,WAGN,CAEAN,KAAAA,GACE,IAAK,IAAIO,EAAI,EAAGA,EAAI5B,KAAK1xC,OAAQszC,GAAK,EAAG,CACvC,MAAMrB,EAAS7zC,SAASC,cAAc,UAKhC6zC,EAAMD,EAAOO,WAAW,MAE9BP,EAAO3iC,MAAQ0iC,EAASL,MAAMuB,aAC9BjB,EAAO1iC,OAASyiC,EAASL,MAAMwB,cAE/BlB,EAAO1vC,SAAW,CAChBgxC,MAAOnT,KAAKC,SAAWqR,KAAKpiC,MAC5BkkC,OAAQvB,EAAO1iC,OAAS6wB,KAAKC,SAAWqR,KAAKS,QAG/CF,EAAOwB,SACL/B,KAAKU,cAAgB,EAAIhS,KAAKC,SAAWqR,KAAKU,cAChDH,EAAOyB,MACLhC,KAAKW,WAAa,EAAIjS,KAAKC,UAAYqR,KAAKW,WAAa,GAEvDH,IACFA,EAAIxtB,OACJwtB,EAAIyB,UACF3B,EAASL,MAAM0B,OACbjT,KAAKwT,MAAMxT,KAAKC,SAAW2R,EAASL,MAAM0B,OAAOrzC,SAErDkyC,EAAI2B,SAAS,EAAG,EAAG5B,EAAO3iC,MAAO2iC,EAAO1iC,QACxC2iC,EAAI4B,WAGNpC,KAAKY,QAAQpV,KAAK+U,EACpB,CACF,CAEAvxC,MAAAA,CAAOmZ,GACL,MAAM43B,EAAWC,KAAKD,SAASK,KAAKj4B,GAEpC63B,KAAKO,OAAO3iC,MAAQoiC,KAAKpiC,MACzBoiC,KAAKO,OAAO1iC,OAASmiC,KAAKniC,OAE1B,IAAK,IAAI+jC,EAAI,EAAGA,EAAI5B,KAAK1xC,OAAQszC,GAAK,EACpC5B,KAAKQ,IAAIxtB,OACTgtB,KAAKQ,IAAI6B,UACPrC,KAAKY,QAAQgB,GAAG/wC,SAASgxC,MACvB7B,KAAKY,QAAQgB,GAAGG,SAAWzB,EAASL,MAAMyB,cAAgB3B,EAC5DC,KAAKY,QAAQgB,GAAG/wC,SAASixC,MAAQ/B,GAAYC,KAAKniC,OAASmiC,KAAKS,SAElET,KAAKQ,IAAI8B,OAAOtC,KAAKY,QAAQgB,GAAGG,UAChC/B,KAAKQ,IAAI+B,UACPvC,KAAKY,QAAQgB,IACXtB,EAASL,MAAMuB,aACf9S,KAAK8T,IAAI9T,KAAK+T,IAAI1C,EAAWrR,KAAKgU,GAAK,EAAI1C,KAAKY,QAAQgB,GAAGI,QAC3D,GACD1B,EAASL,MAAMwB,cAAgB,EAChCnB,EAASL,MAAMuB,aACb9S,KAAK8T,IAAI9T,KAAK+T,IAAI1C,EAAWrR,KAAKgU,GAAK,EAAI1C,KAAKY,QAAQgB,GAAGI,QAC7D1B,EAASL,MAAMwB,eAEjBzB,KAAKQ,IAAI4B,UAGXb,sBAAsBvB,KAAKhxC,OAC7B,CAEA2zC,OAAAA,GACE3C,KAAKpuC,OAAOE,YAAYkuC,KAAKO,OAC/B,E,6NC5JF,MAAMqC,EAAOC,EAAQ,OAOrB,SAASC,EAAYC,GACnB,IAAI3rC,EAAMV,OAAOqsC,GAUjB,OATKC,OAAOC,SAASF,GAEVA,EAAO,IAChB3rC,EARK,GAQoB2rC,IARXzY,QADJ,wBACiB,OASlByY,EAAO,IAChB3rC,EAASs3B,KAAKwU,MAAMH,EAAO,KAAO,GAA5B,IACGA,GAAQ,MACjB3rC,EAASs3B,KAAKwU,MAAMH,EAAO,KAAU,GAA/B,KANN3rC,EAAM,IAQDA,CACT,CAEA,SAAS+rC,EAAmBlY,GAC1B,IAAKA,EACH,OAEF,MACMmY,EAAW12C,SAASge,KAAKpZ,wBAAwBR,IAGjDuyC,EAFcpY,EAAQ35B,wBAAwBR,IACdsyC,EAHvB,IAMfrxC,OAAOuxC,SAAS,CACdxyC,IAAKuyC,EACLE,SAAU,WAEd,CAEA,SAASC,EAAsBvY,GACxBA,GAGLA,EAAQwY,eAAe,CACrBF,SAAU,SACVt/B,MAAO,SACPD,OAAQ,UAEZ,CAEA,MAAM0/B,EAAiBA,KACrB9vC,YAAW,KACT7B,OAAOuxC,SAAS,CACdxyC,IAAK,EACLC,KAAM,EACNwyC,SAAU,WACV,GACF,EAGEI,EAAaC,IACbA,IAAOA,EAAGrX,UAAU16B,SAAS,iBAC/B+xC,EAAGrX,UAAUpc,IAAI,eACjBvc,YAAW,KACTgwC,EAAGrX,UAAUnf,OAAO,cAAc,GACjC,MACL,EAQF,SAASy2B,EAAaC,GACpB,MACMC,EAAM,mBAENrsC,EAAQosC,EAASE,MAHL,gBAIlB,OAAKtsC,EAGEA,EAAMzB,KAAKoV,IAET,CACL44B,SAFc54B,EAAK24B,MAAMD,GAEP,OALb,EAQX,CAOA,SAASG,EAAcJ,GAErB,OAAOA,EAASxZ,QADE,uBACiB,mBACrC,CAEA,SAAS6Z,EAAqBL,GAE5B,OAAOA,EAASxZ,QADE,0BACiB,MACrC,CAEA,SAAS8Z,EAAar4C,GACpB,MAAMiB,EAAIgS,EAAAA,GAAAA,EAAUoiC,KAAKpiC,EAAAA,IACnBqlC,EAASC,SAASv4C,EAAO,IAE/B,GAAIs4C,EAAS,MAAWA,EAAS,MAAc,CAC7C,MAAM97B,EAAO87B,EAAS,KACtB,MAAO,GAAG3V,KAAKwT,MAAM35B,MACRvb,EAAXub,EAAO,EAAM,cAAmB,eAEpC,CACA,GAAI87B,EAAS,MAAc,CACzB,MAAM77B,EAAM67B,EAAS,KAAO,GAC5B,MAAO,GAAG3V,KAAKwT,MAAM15B,MAAkBxb,EAAVwb,EAAM,EAAM,aAAkB,cAC7D,CAEA,MAAO,OAAOxb,EAAE,eAClB,CAEA,SAASu3C,EAAaC,GAAc,IAADC,EACjC,IAAKD,GAAsB,kBAARA,EAAkB,OAAOA,EAC5C,IAAIE,EAA8Bh4C,SAASC,cAAc,OACzD+3C,EAAKC,UAAYH,EACjB,MAAMI,GAAa,QAAJH,EAAAC,SAAI,IAAAD,OAAA,EAAJA,EAAMI,YAAaH,EAAKI,YAEvC,OADAJ,EAAO,KACAE,CACT,CAEA,SAASxrC,EACP6wB,EACAx4B,EACAszC,GACC,IAADC,EAgBA,OAfc,QAAVA,EAAA/a,EAAM52B,YAAI,IAAA2xC,OAAA,EAAVA,EAAY12C,QAAS,GACvB27B,EAAM52B,KAAK03B,SAAS70B,IAClB,GAAU,OAAN6uC,QAAM,IAANA,GAAAA,EAAQz2C,OAAQ,CAClB,MAAM22C,EAAMF,EAAOztC,MAAMu/B,GAAMA,EAAEqO,OAAShvC,EAAKuI,cAC3CwmC,IACF/uC,EAAKuI,YAAcwmC,EAAIE,GAE3B,CACA,MAAMC,EAAmB3zC,EAAKyE,EAAKuI,aAC/B2mC,IACFA,EAAiBz3C,WAAY,EAC7By3C,EAAiBx3C,SAAWsI,EAAKwI,UACnC,IAGGjN,CACT,CAEA,SAAS4zC,EAAWb,GAClB,MAAMc,EAAgB,CACpB,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,QACL,IAAK,SAEP,OAAOd,EAAIla,QAAQ,aAAczqB,GAAQylC,EAAczlC,IAAQA,GACjE,CAEA,SAAS0lC,EAAeC,EAAW11C,GACjC,GAAI01C,EAAKz5C,MAAMu+B,QAAQ,MAAO,IAAIh8B,QAAU,EAAG,CAAC,IAADm3C,EAC7C,IAA2B,QAAvBA,EAAAD,EAAKz5C,MAAMi4C,MAAM,cAAM,IAAAyB,OAAA,EAAvBA,EAAyBn3C,QAAS,EAAG,CAEvC,MAAO,gBAAgBwB,gCAAwCA,MADjD01C,EAAKz5C,MAAMu+B,QAAQ,KAAM,IAC4CA,QACjF,MACA,mBAEJ,CACA,MAAO,qBAAqBx6B,MAAc01C,EAAKz5C,MAAMu+B,QACnD,MACA,mBAEJ,CACA,MAAO,gBAAgBx6B,MAAc01C,EAAKz5C,cAC5C,CAEA,SAAS25C,EAASC,EAAiBC,GACjC,IAAKD,EACH,MAAO,GAGT,GAAuB,kBAAZC,EACT,OAAOP,EAAWM,GAEpB,IAAIE,EAAS,GAab,OAXAA,EADajD,EAAKkD,UAAUT,EAAWO,GAAUP,EAAWM,IAC9C1vC,KAAKuvC,GACbA,EAAKO,MACAR,EAAeC,EAAM,mBAE1BA,EAAKQ,QACAT,EAAeC,EAAM,2CAGvBA,EAAKz5C,QAGP85C,EAAOvK,KAAK,GACrB,CAEA,SAAS2K,EAAYC,EAAgBC,GACnC,IAEE,MAAMC,EAASC,KAAKH,GAIdI,GADS,IAAIC,WACAC,gBAAgBJ,EAAQ,iBACrCK,EAAaH,EAAIj1C,cAAc,eAC/Bq1C,EAAMJ,EAAIj1C,cAAc,OAC9B,IAAImzC,EAAM,GACV,GAAIkC,IAAQD,EAAY,CAClBN,GACFO,EAAIC,aAAa,QAASR,GAM5B3B,GADmB,IAAIoC,eACNC,kBAAkBP,EACrC,CACA,OAAO9B,CACT,CAAE,MAAOva,GACP,MAAO,EACT,CACF,CAIA,SAAS6c,IACP,MAAMC,EAAKC,UAAUC,UAAUzY,cAC/B,OAAIr0B,EAAAA,EAAQ5N,QAAQ6N,KAAK2sC,GAChBn8C,EAAAA,GAAiBG,MAEtBoP,EAAAA,EAAQ7N,SAAS8N,KAAK2sC,GACjBn8C,EAAAA,GAAiBE,OAEtBqP,EAAAA,EAAQ3N,WAAW4N,KAAK2sC,GACnBn8C,EAAAA,GAAiBI,SAEnB,IACT,CAEA,SAASojC,EAAY8Y,GACnB,MAAMC,EAAUz6C,SAAS2E,cAAc,QACvC,GAAa,WAAT61C,EAAmB,CACIn1C,OAAOk8B,WAAW,gCAEtBE,QACnBgZ,EAAQR,aAAa,gBAAiB,QAEtCQ,EAAQR,aAAa,gBAAiB,QAE1C,MACEQ,EAAQR,aAAa,gBAAiBO,EAE1C,CAEA,SAASE,IAEP,MAAiD,SADjC16C,SAAS2E,cAAc,QACxBo7B,aAAa,gBAC9B,C,+FC1QA,MAAMhC,EAAqBA,CAAC77B,EAAgBy4C,KAC1CA,IAASt1C,OAAOoD,SAASD,OAKzB,OAJkB,IAAID,IACpBrG,EAAO04C,WAAWnX,EAAAA,IAAmBvhC,EAAS,GAAGuhC,EAAAA,KAAkBvhC,IACnEy4C,GAEend,aAAen4B,OAAOoD,SAASo1B,IAAI,EAkDhDgd,EAAuBA,KAC3B,MAAM,SAAEC,GAAaz1C,OAAOoD,SACtBsyC,EAAaD,EAASld,QAAQ6F,EAAAA,GAAiB,IACrD,GAAIsX,IAAepX,EAAAA,GAAW7vB,OAASinC,IAAepX,EAAAA,GAAWE,OAAQ,CACvE,MAAMmX,EAAM31C,OAAOoD,SACbwyC,EAAcD,EAAInd,KAAKD,QAAQ,GAAGod,EAAIxyC,SAASi7B,EAAAA,KAAmB,IACxE3I,EAAAA,EAAQuV,IAAI1yC,EAAAA,GAA2Bs9C,EACzC,GAMIC,EAAaA,CAAC5yC,EAAM,MACxB,IAAI6yC,GAAM,EAIV,MAHI,wBAAwBztC,KAAKpF,KAC/B6yC,GAAM,GAEDA,CAAG,EAMNC,EAAiBA,CAAC9yC,EAAM,MAC5B,IAAI6yC,GAAM,EAKV,OAJID,EAAW5yC,KACb6yC,GAAM,GAGDA,CAAG,EAWNte,EAAWA,CAAC4b,EAAqBznB,EAAyB,CAAC,KAC/D,IAAI,QAAE2M,EAAU,QAAW3M,EAC3B,GAAIynB,GAAoB,kBAAPA,EAAiB,CAAC,IAAD4C,EAChC,GAAItd,EAAmB0a,GACrB,OAOEA,IAAO9U,EAAAA,GAAW7vB,OAAS2kC,KAAO6C,EAAAA,EAAAA,gBACpCT,IAGGO,EAAe3C,IAAmB,SAAZ9a,GAAkC,YAAZA,IAC/CA,EAAU,QAEI,SAAZA,GAAoC,QAAlB0d,EAAIrqB,EAAO5xB,eAAO,IAAAi8C,GAAdA,EAAgBzd,UACxCD,EAAU,WAEI,SAAZA,IAEA8a,EAAGmC,WAAW,MACbnC,EAAGmC,WAAW,OACdnC,EAAGmC,WAAWnX,EAAAA,MAEfgV,EAAK,GAAGhV,EAAAA,KAAkBgV,KAE5BpzC,OAAOoD,SAASo1B,KAAO4a,GACF,YAAZ9a,IAEP8a,EAAGmC,WAAW,MACbnC,EAAGmC,WAAW,OACdnC,EAAGmC,WAAWnX,EAAAA,MAEfgV,EAAK,GAAGhV,EAAAA,KAAkBgV,KAE5BpzC,OAAOoD,SAASm1B,QAAQ6a,IACI,oBAAZ9a,IACZ8a,IAAOhV,EAAAA,KACTgV,EAAK,KAGHA,IAAOhV,EAAAA,IAAmBgV,EAAGmC,WAAWnX,EAAAA,MAC1CgV,EAAKA,EAAG7a,QAAQ6F,EAAAA,GAAiB,KAEnC9F,EAAQ8a,EAAIznB,EAAO5xB,SAEvB,CACkB,kBAAPq5C,GAAsC,oBAAZ9a,GACnCA,EAAQ8a,EACV,EAeI8C,EAA0B/qC,IAAS,IAADgrC,EAAAC,EACtC,GAAIjrC,EAAIkrC,iBACN,OAAO,EAET,MAAM/b,EAA4B,QAApB6b,EAAGhrC,EAAImrC,qBAAa,IAAAH,OAAA,EAAjBA,EAAmB7b,SACpC,GAAgC,OAApB,OAARA,QAAQ,IAARA,OAAQ,EAARA,EAAUmC,eACZ,OAAO,EAET,MAAM5/B,EAA0B,QAApBu5C,EAAGjrC,EAAImrC,qBAAa,IAAAF,OAAA,EAAjBA,EAAmBv5C,OAClC,OACiB,IAAfsO,EAAIorC,UACF15C,GAAqB,UAAXA,MACVsO,EAAIqrC,SAAWrrC,EAAIsrC,SAAWtrC,EAAIurC,UAAYvrC,EAAIwrC,OAAO,EAmBlDte,EAAmB,CAC9Bb,WACAof,gBAzCuBjrB,IACvB,MAAMkrB,EAAWvY,EAAAA,GAAW7vB,MAC5B+oB,EAASqf,EAAUlrB,EAAO,EAwC1BuqB,yBACAL,aACAE,iBACAe,qBAlB4B3rC,IAC5B,IAAK+qC,EAAuB/qC,GAC1B,OAEF,MAAM4rC,EAAY5rC,EAAImrC,cAChB9d,EAAgB,OAATue,QAAS,IAATA,OAAS,EAATA,EAAWrc,aAAa,QAChCqb,EAAevd,KAClBrtB,EAAIhP,iBACJq7B,EAASgB,GACX,EAUAE,qBACAse,mBAnM0Bn6C,IAE1B,MAAMo6C,GADNp6C,GAAUA,GAAU,IAAI+9B,QACG2a,WAAWnX,EAAAA,IAEtC,IAAKvhC,GAAqB,MAAXA,EACb,OAAO,EAET,MAAM,SAAE44C,EAAQ,OAAEn7C,EAAM,KAAE48C,GAASl3C,OAAOoD,SAC1C,IAAI+zC,EAAkB1B,EACjBwB,IACHE,EAAkBA,EAAgB5e,QAAQ6F,EAAAA,GAAiB,KAG7D,MAAMgZ,EAAQv6C,EAAOw6C,MAAM,KAM3B,GAAID,EAAM,GAAI,CACZ,MAAME,EAAQF,EAAM,GAAGC,MAAM,KACvBE,EAAUD,EAAM,IAAM,GACtBE,EAAQF,EAAM,IAAM,GAC1B,GAAIE,IAAkC,IAAzBN,EAAKO,QAAQD,GACxB,OAAO,EAET,GAAID,IAAwC,IAA7Bj9C,EAAOm9C,QAAQF,GAC5B,OAAO,CAEX,CAKA,IAAIG,GAAY,EAChB,MAAMC,EAAQP,EAAM,GAAGC,MAAM,KAAK/0B,QAAQspB,KAAQA,IAC5CgM,EAAQT,EAAgBE,MAAM,KAAK/0B,QAAQspB,KAAQA,IASzD,OAPA+L,EAAM3e,SAAQ,CAAC6e,EAAGhI,KAEZgI,IADOD,EAAM/H,KAEf6H,GAAY,EACd,IAGKA,CAAS,EAuJhBlC,uB,uoBClKK,MAAMsC,EAAmBA,KAC9B,MAAMC,EAAkB,CACtBC,UAAU,EACVC,gBAAgB,EAChBC,aAAa,EACbC,aAAa,EACbC,UAAU,EACVC,SAAS,EACTC,aAAa,IAET,KAAEh/B,GAASyiB,EAAAA,GAAoBrzB,WAsBrC,OArBI4Q,EAAK4zB,eACP6K,EAAGC,UAAW,GAEZD,EAAGC,UAAiC,IAArB1+B,EAAK+zB,cACtB0K,EAAGG,aAAc,GAEfH,EAAGC,UAAiC,IAArB1+B,EAAK+zB,cACtB0K,EAAGE,gBAAiB,GAElBF,EAAGC,UAA4B,cAAhB1+B,EAAK2T,SACtB8qB,EAAGI,aAAc,GAEfJ,EAAGG,cAAgBH,EAAGI,cACxBJ,EAAGK,UAAW,GAEZL,EAAGK,UAA6B,IAAjB9+B,EAAK9S,UACtBuxC,EAAGM,SAAU,GAEXN,EAAGK,UAA6B,IAAjB9+B,EAAK9S,UACtBuxC,EAAGO,aAAc,GAEZP,CAAE,EAGEQ,EAAmB,CAC9Bja,EAAAA,GAAW7vB,MACX6vB,EAAAA,GAAWE,OACXF,EAAAA,GAAWG,gBACXH,EAAAA,GAAWI,YACXJ,EAAAA,GAAWK,cACXL,EAAAA,GAAWM,kBACXN,EAAAA,GAAWS,gBACXT,EAAAA,GAAWU,aACXV,EAAAA,GAAWW,YACX,iBAGWuZ,EAAiBC,IACvBA,IACHA,EAAcF,GAEXzyC,MAAM4zB,QAAQ+e,KACjBA,EAAc,CAACA,IAKjB,QAHqBA,EAAYlzC,MAAMsyC,GAC9Bxf,EAAAA,EAAiB2e,mBAAmBa,IAExB,EAGvB,IAAIa,EAAe,EACZ,MAAMC,EAAiBj2C,MAAOk2C,GAAa,KAUhD,IAAKA,GAAcC,KAAKziC,MAAQsiC,EAAe,IAC7C,OAEFA,EAAeG,KAAKziC,MACpB,MAAM0iC,QAAuBtU,EAAAA,EAAAA,IAAkB,CAC7CC,cAAc,IACb7hC,OAAM,KACP81C,EAAe,EACf3c,EAAAA,GAAoBrzB,WAAW2yB,OAAM,EAAM,IAEzCyd,GACF/c,EAAAA,GAAoBrzB,WAAWF,OAAOswC,EACxC,EAGWC,EAASA,KACpB,MAAMviB,EAAmB,CAAExU,IAAI,GAM/B,OALW81B,IACHE,WACNxhB,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWkG,EAAAA,GAAW7vB,OAEpB+nB,CAAE,EAGEwiB,EAAqBA,KAChC,MAAMxiB,EAAmB,CAAExU,IAAI,GAM/B,OALW81B,IACHE,WACNxhB,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWkG,EAAAA,GAAWC,MAEpB/H,CAAE,EAGEM,EAAYA,KACvB,MAAMN,EAAmB,CAAExU,IAAI,GAM/B,OALW81B,IACJE,WACLxhB,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWkG,EAAAA,GAAWC,MAEpB/H,CAAE,EAGEyiB,EAAeA,KAC1B,MAAMziB,EAAmB,CAAExU,IAAI,GAM/B,OALW81B,IACJI,cACL1hB,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWkG,EAAAA,GAAWC,MAEpB/H,CAAE,EAGE0iB,EAAYA,KACvB,MAAM1iB,EAAKuiB,IAMX,OALWjB,IACJG,iBACLzhB,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWkG,EAAAA,GAAWpkB,UAEpBsc,CAAE,EAGE2iB,EAAYA,KACvB,MAAM3iB,EAAmB,CAAExU,IAAI,GACzBo3B,EAAKtB,IAKX,OAJIthB,EAAGxU,KAAOo3B,EAAGjB,cACf3hB,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWkG,EAAAA,GAAWC,MAEpB/H,CAAE,EAGE6iB,EAAeA,KAC1B,MAAM7iB,EAAmB,CAAExU,IAAI,GAM/B,OALW81B,IACJK,cACL3hB,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWkG,EAAAA,GAAWhuB,WAEpBkmB,CAAE,EAGEznB,EAAQA,KACnB,MAAMynB,EAAKuiB,IACLK,EAAKtB,IASX,OARIthB,EAAGxU,KAAOo3B,EAAGf,UACf7hB,EAAGxU,IAAK,EACRwU,EAAG0B,MAAQ,CACT1mB,KAAM,MACN5R,IAAK,IAEP42B,EAAG4B,SAAW,IAET5B,CAAE,EAGE8iB,EAAqBA,KAChC,MAAM9iB,EAAKuiB,IACLK,EAAKtB,IASX,OARIthB,EAAGxU,IAAOo3B,EAAGf,SAAYe,EAAGd,cAC9B9hB,EAAGxU,IAAK,EACRwU,EAAG0B,MAAQ,CACT1mB,KAAM,MACN5R,IAAK,IAEP42B,EAAG4B,SAAW,IAET5B,CAAE,EAGEK,EAAcD,IACzB,MAAMc,GAAiB,OAAJd,QAAI,IAAJA,OAAI,EAAJA,EAAMc,aAAc,CAAC,EAClClB,EAAmB,CAAExU,IAAI,GAQ/B,OAPwB,MAApB0V,EAAWlmB,OACbglB,EAAGxU,IAAK,EACRwU,EAAG0B,MAAQ,CACT1mB,KAAM,MACN5R,IAAK83B,EAAW93B,MAGb42B,CAAE,EAGE+iB,EAAuBA,KAClC,MAAM/iB,EAAmB,CAAExU,IAAI,GAM/B,OALqBw3B,EAAAA,GAAkB9wC,WAAW+F,MAChCw8B,0BAChBzU,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWkG,EAAAA,GAAWC,MAEpB/H,CAAE,EAGEijB,EAAcA,KACzB,MAAMjjB,EAAmB,CAAExU,IAAI,GACzB03B,GAAYC,EAAAA,EAAAA,gBAKlB,OAJID,IAAcpb,EAAAA,GAAWE,SAC3BhI,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWshB,GAETljB,CAAE,EAGEojB,EAAsBA,KACjC,MAAMpjB,EAAmB,CAAExU,IAAI,GAE/B,IADqBw3B,EAAAA,GAAkB9wC,WAAW+F,MAChC0Y,eAChB,OAAOqP,EAGT,OADWshB,IACJE,UAGHQ,EAAcD,KAGlB/hB,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWkG,EAAAA,GAAW7vB,OANhB+nB,CAOA,EAOEqjB,EAAkBA,CAACC,GAAuB,KACrD,MAAMV,EAAKtB,IAEX,QAAIsB,EAAGhB,WAIFgB,EAAGpB,UAMJoB,EAAGnB,eACL5f,EAAAA,EAAiBb,SAAS8G,EAAAA,GAAWpkB,UAC5Bk/B,EAAGjB,aACZ9f,EAAAA,EAAiBb,SAAS8G,EAAAA,GAAWhuB,UAAW,CAC9CgoB,QAAS,aAIN,IAbDwhB,GACFle,EAAAA,GAAqBlzB,WAAWF,OAAO,CAAEpL,MAAM,KAE1C,GAUG,EAGDqpC,EAAwBA,KACnC,MAAMjQ,EAAmB,CAAExU,IAAI,GACzBo3B,EAAKtB,IAKX,OAHKsB,EAAGpB,UAAaoB,EAAGlB,cACtB1hB,EAAGxU,IAAK,GAEHwU,CAAE,EAMEujB,EAAuBzhB,IAClC,MAAMsd,EAAcngB,EAAAA,EAAQC,IAAIp9B,EAAAA,KAA8BgmC,EAAAA,GAAWC,KACzE9I,EAAAA,EAAQpa,OAAO/iB,EAAAA,IACf+/B,EAAAA,EAAiBb,SAASoe,EAAa,CACrCtd,UACAv+B,QAAS,CAAEw+B,SAAS,IACpB,EAMSyhB,EAAuBA,CAClCC,EACA3hB,KAEI2hB,GACFxkB,EAAAA,EAAQuV,IAAI3yC,EAAAA,GAA0B4hD,GACtCp4C,YAAW,MACT2iC,EAAAA,EAAAA,MAAoB/hC,MAAM4C,IACxB02B,EAAAA,GAAoBrzB,WAAWF,OAAOnD,GACrByyC,IACJG,eACX5f,EAAAA,EAAiBb,SAAS8G,EAAAA,GAAWpkB,SAAU,CAC7Coe,UACAv+B,QAAS,CACPw+B,SAAS,KAIbwhB,EAAoBzhB,EACtB,GACA,KAGJD,EAAAA,EAAiBb,SAAS8G,EAAAA,GAAWC,KAAM,CACzCjG,UACAv+B,QAAS,CACPw+B,SAAS,IAGf,EAMW2hB,EAAuBx3C,UAClC,MAAMy3C,QAAoBzU,EAAAA,EAAAA,MACR,IAAD0U,EAAAC,EAAbF,IACF7N,EAAAA,GAAc5jC,WAAWF,OAAO2xC,EAAYrxB,SAC5CwjB,EAAAA,GACG5jC,WACAmjC,cAAcsO,EAAY1vB,QAAS0vB,EAAYrlC,UAClDw3B,EAAAA,GAAc5jC,WAAWqjC,YAAYoO,EAAYG,YACjDC,EAAAA,GAAe7xC,WAAWF,OAAO2xC,EAAYnO,WAC7CvjC,EAAAA,GAAaC,WAAWF,OAAO,CAC7BpN,MAA0B,QAArBg/C,EAAED,EAAYrxB,eAAO,IAAAsxB,OAAA,EAAnBA,EAAqBhhD,KAC5B2C,YAAgC,QAArBs+C,EAAEF,EAAYrxB,eAAO,IAAAuxB,OAAA,EAAnBA,EAAqBt+C,cAEpCy+C,EAAAA,GAAc9xC,WAAWF,OAAO2xC,EAAYnxB,UAC5CwwB,EAAAA,GAAkB9wC,WAAWF,OAAO2xC,EAAY1rC,OAChDgsC,EAAAA,GAAe/xC,WAAWF,OAAO2xC,EAAYO,iBAC7CC,EAAAA,GAAkBjyC,WAAWF,OAAO2xC,EAAYxN,OAChDtN,EAAAA,GAAgB32B,WAAWF,OAAO2xC,EAAYS,UAC9CC,EAAAA,GACGnyC,WACAF,OAAO,CAAE+mB,gBAAiB4qB,EAAYW,WAAWvrB,kBACtD,EAGWwrB,EAAyBA,KAAO,IAADC,EAC1C,MAAMxkB,EAAmB,CAAExU,IAAI,GACzBrjB,GAAuD,QAA3Cq8C,EAAA,IAAIC,gBAAgBj7C,OAAOoD,SAAS9I,eAAO,IAAA0gD,OAAA,EAA3CA,EAA6CtlB,IAAI,OAAQ,GAC3E,GAA6B,mCAAzB11B,OAAOoD,SAAS83C,KAClB,OAAO1kB,EAET,GAAoC,IAAhC73B,EAAU84C,QAAQ,WAAmB94C,EAAUm8B,SAAS,SAAU,CACpE,MAAM8a,EAAc,OAAOj3C,EAAU04C,MAAM,SAAS,KAC9C5B,EAAWG,EAAYrd,QAAQ,IAAIr1B,IAAI0yC,GAAazyC,OAAQ,IAIlE,OAFAqzB,EAAGxU,IAAK,EACRwU,EAAG4B,SAAWqd,GAAY,IACnBjf,CACT,CAEA,OAAOA,CAAE,EAGX,IAAI2kB,GAAiB,EACd,MAAMC,EAAW14C,UAMlBy4C,UAQEnwC,QAAQqwC,WAAW,CAACnB,IAAwBvB,GAAe,WAC3D3tC,QAAQqwC,WAAW,EAACC,EAAAA,EAAAA,kBAC1BC,EAAAA,EAAAA,qBACAC,EAAAA,EAAAA,qBACAC,EAAAA,EAAAA,iBAMAN,GAAiB,EAAI,C,mXCtbvB,MA+CA,EA/Cc,CACZO,QAASC,cAAgB37C,OAAO27C,aAChC3Q,GAAAA,CAAIkI,EAAal5C,EAAO4hD,GACtB,MAAM3gD,EAAI2gD,GAAQ/C,KAAKziC,MAAQ,OAC/B,IACE63B,KAAKyN,QAAQG,QAAQ3I,EAAK,GAAGj4C,IAAI6gD,EAAAA,KAAWC,KAAKC,UAAUhiD,KAC7D,CAAE,MAEAmjC,QAAQjF,MAAM,gCAAiCgb,EACjD,CACF,EACAxd,GAAAA,CAAIwd,GACF,MAAM+I,EAAcH,EAAAA,GAASv/C,OAC7B,IAEI8I,EAFAoxB,EAAQ,EACRmlB,EAAO,EAEX,IACEv2C,EAAM4oC,KAAKyN,QAAQQ,QAAQhJ,EAC7B,CAAE,MACA/V,QAAQjF,MAAM,gCAAiCgb,EACjD,CACA,GAAI7tC,EAAK,CAGP,GAFAoxB,EAAQpxB,EAAIoyC,QAAQqE,EAAAA,IACpBF,GAAQv2C,EAAIq3B,MAAM,EAAGjG,GACjBmlB,GAAO,IAAI/C,MAAOsD,UAAW,CAC/B92C,EAAMA,EAAIq3B,MAAMjG,EAAQwlB,GACxB,IACE52C,EAAM02C,KAAKK,MAAM/2C,EACnB,CAAE,MACA,CAEJ,MAEEA,EAAM,KACN4oC,KAAKyN,QAAQW,WAAWnJ,GAE1B,OAAO7tC,CACT,CAEA,OAAOA,CACT,EACAgW,MAAAA,CAAO63B,EAAaxyC,GAClButC,KAAKyN,QAAQW,WAAWnJ,GAChB,OAARxyC,QAAQ,IAARA,GAAAA,GACF,G,wBCwCF,QAxDA,MAKEgtC,WAAAA,EAAY,KAAExvC,EAAO,aAA0B,KAJ/CA,UAAI,OAEJ+uB,YAAM,OAONhM,KAAOq7B,KAAU58C,IAEf,GAAoB,WAAhBuuC,KAAKhhB,OAAT,CAGA,GAAkB,aAAdghB,KAAK/vC,KAAqB,CAC5B,MAAM,OAAE0C,EAAM,SAAEF,GAAahB,EAE7BuuC,KAAKsO,WAAW37C,EAAQF,EAC1B,CAEA,GAAkB,WAAdutC,KAAK/vC,KAAmB,CAC1B,MAAM,QAAEkD,EAAO,WAAE+9B,EAAU,SAAEz+B,GAAahB,EAC1C,IAAKy/B,IAAe/9B,EAClB,OAGF6sC,KAAKsO,WAAW,CAAEn7C,UAAS+9B,cAAcz+B,EAC3C,CAdA,CAcA,GACC,KAAM,KAiBD67C,WAAa,CAAC37C,EAAaF,KACjC,MAAMwyC,EACU,aAAdjF,KAAK/vC,KACD3F,EAAAA,GACAC,EAAAA,GACNkjD,EAAQ1Q,IAAIkI,EAAKtyC,GACT,OAARF,QAAQ,IAARA,GAAAA,GAAY,EA9CZutC,KAAK/vC,KAAOA,EACZ+vC,KAAKhhB,OAAS,MAChB,CAuBA5R,MAAAA,GACE4yB,KAAKhhB,OAAS,SACd,MAAMuvB,EAAOvO,KACK,aAAdA,KAAK/vC,MACPw9C,EAAQrgC,OAAO9iB,EAAAA,IAA4B,KACzCikD,EAAKvvB,OAAS,MAAM,IAGN,WAAdghB,KAAK/vC,MACPw9C,EAAQrgC,OAAO7iB,EAAAA,IAA0B,KACvCgkD,EAAKvvB,OAAS,MAAM,GAG1B,G,mCCpDF,MAAMwvB,EAAQC,IAAM,QACdC,EAAQD,IAAM,QAEPE,EAAYA,CAACC,EAAWC,EAASC,IACrCL,IAAMG,GAAWG,IAAIN,IAAMI,GAAUC,GAGjCE,EAAYA,CAACC,EAAOH,IACxBH,EAAUH,EAAOS,EAAOH,GAGpBI,EAAaA,CAACD,EAAOH,IACzBH,EAAUD,EAAOO,EAAOH,GAGpBK,EAAaA,CAACF,EAAOH,IAC5BA,EAAS,EACJI,EAAWD,EAAOH,GAEpBE,EAAUC,GAAQH,G,yVCbpB,MAAMM,EAAsB36C,MAAO46C,GAAW,IAC3BA,QACdjc,EAAAA,EAAAA,YACAmH,EAAAA,EAAAA,MAYN+U,EAAoBl4C,IACjBkjC,EAAAA,EAAAA,MAAoB9lC,MAAM+6C,IAC3BA,GAAYA,EAASC,KACvBp4C,EAAIswB,UAAY6nB,EAASC,GACzBhoB,EAAAA,EAAQuV,IAAI5yC,EAAAA,GAA2BiN,GACzC,IA+BSq4C,EAAiBA,KAC5B,MAAMC,EAAa5hB,EAAAA,GAAoBrzB,WAAW4Q,KAC5CskC,EAAiBrD,EAAAA,GAAe7xC,WAAWsjC,UAC3C6R,EAAepoB,EAAAA,EAAQC,IAAIv9B,EAAAA,KAA6BD,EAAAA,GAC9D,IAAI4lD,EAAcH,EAAW9rC,SAM7B,MAJI,WAAWxJ,KAAKy1C,KAClBA,EAAcF,EAAe/rC,UAE/BisC,IAAgBD,EACTC,CAAW,EAGPC,EAAkBA,KAC7B,MAAMJ,EAAa5hB,EAAAA,GAAoBrzB,WAAW4Q,KAC5C0kC,EAAarD,EAAAA,GAAkBjyC,WAAWonB,aAC1CmuB,EAAgBvlD,EAAAA,GACtB,IAAIwlD,EAAeP,EAAW7tB,aAK9B,MAJI,WAAWznB,KAAK61C,KAClBA,EAAeF,GAEjBE,IAAiBD,EACVC,CAAY,EAMrBC,IAAAA,OAAaC,KACbD,IAAAA,OAAatzB,KACb,MAKa0wB,EAAmB74C,UAC9B,MAAM8a,EAAOkgC,IANMW,WA1DG37C,WACtB,MAAM2C,EAAM,CAAEuwB,IAAKyoB,EAAU1oB,eAAWtzB,GAClCi8C,EAAkB7oB,EAAAA,EAAQC,IAAIt9B,EAAAA,IAQzBkmD,GAAmBA,EAAgB1oB,MAAQvwB,EAAIuwB,KACxDvwB,EAAIswB,UAAY2oB,EAAgB3oB,UAChC4nB,EAAiBl4C,UAEXk4C,EAAiBl4C,GAGrBA,EAAIswB,WACN1oB,EAAAA,GAAQsxC,kBACNl5C,EAAIuwB,IACJ,cACAvwB,EAAIswB,WACJ,GACA,EAEJ,EAwCM6oB,CAAgBhhC,GANtB6gC,GADmBA,EAQP7gC,GAPQ+a,QAAQ,IAAK,KAAKkE,cACtC0hB,IAAAA,OAAaE,GAObpxC,EAAAA,GAAAA,eAAuBuQ,EAAK,EAGjBg+B,EAAmBA,KAC9B,MAAMoC,EAAiBrD,EAAAA,GAAe7xC,WAAWsjC,UAC7C4R,EAAexvB,WACjB+vB,IAAAA,GAASM,WAAWb,EAAexvB,UACrC,EAGWqtB,EAAgBA,KAC3B,MAAM9O,EAAQoR,KACd1hB,EAAAA,EAAAA,IAAYsQ,EAAM,C,0DCjJpB,MAAM+R,EAAe,mCAKRC,EAAuBj8C,UAClC,IAEE,MAAMk8C,QAA2BC,MAAM,GAAGH,qBAAiC,CACzEI,OAAQ,MACRC,QAAS,CACP,eAAgB,oBAElBC,YAAa,YACZv8C,MAAM4C,GAAQA,EAAI45C,SAGrB,GAAIL,EAeF,OAAOA,EAAmB3E,KAE9B,CAAE,MAAO/hB,GACPiF,QAAQjF,MAAM,qCAAsCA,EACtD,CAEA,OAAO,IAAI,EAGAgnB,EAAcx8C,UACzB,IAEE,MAAMk8C,QAA2BC,MAAM,GAAGH,qBAAiC,CACzEI,OAAQ,MACRC,QAAS,CACP,eAAgB,oBAElBC,YAAa,YACZv8C,MAAM4C,GAAQA,EAAI45C,SAGrB,GAAIL,EAeF,OAAOA,CAEX,CAAE,MAAO1mB,GACPiF,QAAQjF,MAAM,qCAAsCA,EACtD,CAEA,OAAO,IAAI,C,oKC3Cb,MAAMinB,EAAU,SAWVZ,EAAqBa,IACrBA,GACFC,OAAO/V,KAAK8V,GAAUpmB,SAASpD,IAC7B,MAAMtpB,EAAI8yC,EAASxpB,GAEnB3oB,EAAAA,GAAQsxC,kBAAkB3oB,EAAKupB,EAAS7yC,EAAEgzC,QAAQ,GAAM,EAAK,GAEjE,EAGIC,EAAoBH,IACxBb,EAAkBa,GAOlBnyC,EAAAA,GAAQuyC,GAAG,eAAe,KACxBjB,EAAkBa,EAAS,GAC3B,EAGEK,EAAaA,IACVN,EAGHO,EAAqBn3C,GACd,GAAGA,EAAK9L,e,eC1ErB,QAA0B,wBAA1B,EAAuD,Y,yBCwBvD8iD,EAAiB,CACfnyC,MCzBF,CAAgBkyC,OAAO,CAACK,sBAAsB,CAAClC,GAAG,CAACriC,QAAQ,+BAA+BC,OAAO,6BD0B/FukC,ME1BF,CAAgBN,OAAO,CAACK,sBAAsB,CAAClC,GAAG,CAACriC,QAAQ,qCAAsBC,OAAO,qC,eCoCxF,MAAMwkC,EAAyB,CAC7BpjD,UAAW8L,EACXrK,KAAMqK,GAKF0uB,EAAmBA,EAAGl5B,gBAC1B,MAAM,EAAE9C,IAAMC,EAAAA,EAAAA,GAAeukD,IAAc,CACzCtkD,UAAWukD,EAAkBG,MAGzB,KAAEngD,GCnBkCogD,MAC1C,MAAM,KAAEpgD,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtB,gCACAC,EAAAA,EAAQC,SAAS1K,KAGnB,MAAO,CACLh2B,OACAw4B,QACD,EDUgB4nB,GAEjB,OAAS,OAAJpgD,QAAI,IAAJA,GAAAA,EAAMnD,QAETe,EAAAA,EAAAA,KAAA,OAAKS,UAAWgiD,IAAW,eAAgBhiD,GAAWpE,SAC/C,OAAJ+F,QAAI,IAAJA,OAAI,EAAJA,EAAMwE,KAAKC,IAERjH,EAAAA,EAAAA,MAACsB,EAAAA,EAAM,CAACrF,QAAQ,oBAAoBq/B,KAAMr0B,EAAKuP,KAAK/Z,SAAA,EAClD2D,EAAAA,EAAAA,KAAC0iD,EAAAA,GAAO,CAAC7L,OAAQhwC,EAAK87C,KAAM7L,aAAa,iBACzC92C,EAAAA,EAAAA,KAAA,QAAA3D,SAAOsB,EAAE,UAAW,CAAEilD,UAAW/7C,EAAK/K,WAFkB+K,EAAK/K,UAL7C,IAWlB,EAIV,GACEmP,KAAMs3C,EACNM,WAAWhiB,EAAAA,EAAAA,MAAKlH,I,eE3ClBsoB,EAAiB,CACfnyC,MCzBF,CAAgBkyC,OAAO,CAACc,kBAAkB,CAAC3C,GAAG,CAACriC,QAAQ,+BAA+B3M,MAAM,QAAQqb,iBAAiB,6DAA6DC,uBAAuB,6FD0BvM61B,ME1BF,CAAgBN,OAAO,CAACc,kBAAkB,CAAC3C,GAAG,CAACriC,QAAQ,qCAAsB3M,MAAM,eAAKqb,iBAAiB,gFAA8BC,uBAAuB,mMCA9J,MCwCM81B,EAAyB,CAC7BpjD,UDzCwB,oBC0CxByB,KD1CiD,aC6C7C+4B,EAAmBA,EAAGl5B,gBAAiB,IAADsiD,EAC1C,MAAM,EAAEplD,IAAMC,EAAAA,EAAAA,GAAeukD,IAAc,CACzCtkD,UAAWukD,EAAkBG,KAEzBS,GAAUC,EAAAA,EAAAA,MAAkBjV,MAIlC,OAFS,OAAPgV,QAAO,IAAPA,OAAO,EAAPA,EAASn0B,WAAkB,OAAPm0B,QAAO,IAAPA,GAAmB,QAAZD,EAAPC,EAASE,kBAAU,IAAAH,OAAZ,EAAPA,EAAqBI,qBAIvCvjD,EAAAA,EAAAA,MAACsB,EAAAA,EAAM,CACLT,UAAWgiD,IAAW,QAAShiD,GAC/B5E,QAAQ,oBACRq/B,KAAa,OAAP8nB,QAAO,IAAPA,OAAO,EAAPA,EAASE,WAAWC,mBAAmB9mD,SAAA,EAC7C2D,EAAAA,EAAAA,KAAC0iD,EAAAA,GAAO,CAAC7L,OAAe,OAAPmM,QAAO,IAAPA,OAAO,EAAPA,EAASE,WAAWP,KAAM7L,aAAa,iBACxD92C,EAAAA,EAAAA,KAAA,QAAA3D,SACGsB,EAAE,UAAW,CAAEilD,UAAkB,OAAPI,QAAO,IAAPA,OAAO,EAAPA,EAASE,WAAW9jD,oBAKhD,IAAI,EAEb,GACE6L,KAAMs3C,EACNM,WAAWhiB,EAAAA,EAAAA,MAAKlH,ICtElB,EAA0B,eAA1B,EAA8C,SCwB9CsoB,EAAiB,CACfnyC,MCzBF,CAAgBkyC,OAAO,CAACoB,aAAa,CAACjD,GAAG,CAACkD,UAAU,gBD0BlDf,ME1BF,CAAgBN,OAAO,CAACoB,aAAa,CAACjD,GAAG,CAACkD,UAAU,iCCiCpD,MAAMd,EAAyB,CAC7BpjD,UAAW8L,EACXrK,KAAMqK,GAGF0uB,EAAYA,KAChB,MAAM,EAAEh8B,IAAMC,EAAAA,EAAAA,GAAeukD,IAAc,CACzCtkD,UAAWukD,EAAkBG,MAGzB,KAAEngD,GCd4BkhD,MACpC,MAAM,KAAElhD,EAAI,MAAEw4B,IAAUgI,EAAAA,EAAAA,IACtB,6BACAC,EAAAA,EAAQC,SAAS1K,KAGnB,MAAO,CACLh2B,OACAw4B,QACD,EDKgB0oB,GACjB,OAAS,OAAJlhD,QAAI,IAAJA,GAAAA,EAAMugD,MAGT/iD,EAAAA,EAAAA,MAAA,KACEa,UAAU,4BACVy6B,KAAU,OAAJ94B,QAAI,IAAJA,OAAI,EAAJA,EAAMgU,KACZ7W,OAAO,SACPgkD,IAAI,sBAAqBlnD,SAAA,EACzB2D,EAAAA,EAAAA,KAAA,QAAMS,UAAU,4BAA2BpE,SAAEsB,EAAE,gBAC/CqC,EAAAA,EAAAA,KAAC0iD,EAAAA,GAAO,CAAC7L,OAAY,OAAJz0C,QAAI,IAAJA,OAAI,EAAJA,EAAMugD,KAAM7L,aAAa,qBATtB,IAUlB,EE/BR,GACE0M,oBAAmB,EACnBC,iBAAgB,EAChBC,WFgCF,CACEz4C,KAAMs3C,EACNM,WAAWhiB,EAAAA,EAAAA,MAAKlH,K,gDG6ElB,MAAMvN,EAAU,IA9FhB,MAKEgkB,WAAAA,GAAe,KAJfhkB,QAAoB,GAAG,KAEvBu3B,kBAA4C,GAG1ChT,KAAKiT,mBAGLnb,EAAAA,EAAAA,MAAmBtjC,MAAMinB,IACvBukB,KAAKgT,kBAAoBv3B,EACzBukB,KAAKkT,gBAAgBz3B,EAAQ,GAEjC,CAEAuE,QAAAA,CAASqxB,GACP,IAAKA,EACH,OAAO,EAET,MAAM,KAAE/2C,GAAS+2C,GACX,UAAE7iD,EAAS,KAAEyB,GAASqK,EAE5B,QAAK9L,KAIAyB,CAKP,CAEAgjD,eAAAA,GACE7B,OAAO/V,KAAK8X,GAASpoB,SAASka,IAC5B,MAAMoM,EAAS8B,EAAQlO,GAGvBoM,EAAOpG,WAAY,EACnBjL,KAAK3J,SAASgb,EAAO,GAEzB,CASAhb,QAAAA,CAASgb,GACMrR,KAAKhgB,SAASqxB,KAIvBA,EAAO+B,YACT9B,EAAiBD,EAAO+B,YAE1BpT,KAAKvkB,QAAQ+P,KAAK6lB,GACpB,CAEA6B,eAAAA,CAAgBG,GACdrT,KAAKvkB,QAAQsP,SAASsmB,IACpB,MAAM,UAAE7iD,GAAc6iD,EAAO/2C,KACvBg5C,EAAuC,OAAhBD,QAAgB,IAAhBA,OAAgB,EAAhBA,EAAkB/7C,MAC5CsyC,GAAMA,EAAEp7C,YAAcA,IAErB8kD,IACFjC,EAAOpG,UAA2B,OAAfqI,QAAe,IAAfA,OAAe,EAAfA,EAAiBp1B,QACtC,GAEJ,CAEAq1B,wBAAAA,CAAyB/kD,EAAmBolB,GAC1C,MAAMy9B,EAASrR,KAAKwT,UAAUhlD,GAC1B6iD,IACFA,EAAOpG,UAAYr3B,EAEvB,CAEA4/B,SAAAA,CAAUhlD,GACR,OAAOwxC,KAAKvkB,QAAQnkB,MAAMsyC,GAAMA,EAAEtvC,KAAK9L,YAAcA,GACvD,CAEAilD,iBAAAA,CAAkBjlD,GAChB,MAAM6iD,EAASrR,KAAKwT,UAAUhlD,GAC9B,OAAa,OAAN6iD,QAAM,IAANA,OAAM,EAANA,EAAQqC,KACjB,CAEAC,UAAAA,GACE,OAAO3T,KAAKvkB,OACd,GAWIm4B,EAAeA,KACnB,MAAM5H,EAAQxkB,EAAAA,EAAQC,IAAIr9B,EAAAA,KAA6B,GACvD,MAAO,CACL66C,IAAK+G,EACL8E,QAAS,CACP+C,cAAe7H,GAElB,EAiBGrgB,EAAqBf,IACzB,MAAMkpB,EA9BCr4B,EACJk4B,aACAt/B,QAAQg9B,GAAWA,EAAO/2C,KAAKrK,OAAS8jD,EAAAA,EAAWC,QA6BtD,OAA4B,IAAxBF,EAAaxlD,QAGjBs8B,EAAOG,SAASkpB,IACsB,IAADC,EAAhB,iBAAfD,EAAM7rB,OACM,QAAd8rB,EAAAD,EAAMvoD,gBAAQ,IAAAwoD,GAAdA,EAAgBnpB,SAASopB,IACJ,wBAAfA,EAAM/rB,MACR0rB,EAAa/oB,SAASsmB,IACpB,MAAQ4C,MAAOtoD,EAAI,UAAE6C,GAAc6iD,EAAO/2C,KAC1C65C,EAAMzoD,SAAS8/B,KAAK,CAClBpD,KAAMipB,EAAOa,UACbvmD,OACA08B,OAAQ5zB,cA5BMA,WAAqB,IAAD2/C,EAC9C,IAAIC,EAGFA,EAFuC,IAArC54B,EAAQu3B,kBAAkB1kD,cACAwpC,EAAAA,EAAAA,OACKxgC,MAAMsyC,GAAMA,EAAEp7C,YAAcX,IAE1C4tB,EAAQu3B,kBAAkB17C,MAC1CsyC,GAAMA,EAAEp7C,YAAcX,IAI3B,OAAO8I,QAAwB,QAAjBy9C,EAACC,SAAgB,IAAAD,OAAA,EAAhBA,EAAkBl2B,QAAQ,EAkBRo2B,CAAoB9lD,GAGzC85B,MAAQ31B,GACFA,EAAO82B,WACF,CACL1V,IAAI,GAID,CACLA,IAAI,EACJkW,MAAO,CACL1mB,KAAM,OAIZ,GAEN,IAEJ,IAjCOqnB,CAmCI,EAOT2pB,EACJtpB,IAEAxP,EACGk4B,aACAt/B,QAAQg9B,IAAY,IAADmD,EAClB,OACEnD,EAAOpG,YACK,QADIuJ,EAChBnD,EAAOqC,aAAK,IAAAc,OAAA,EAAZA,EAAcC,aACbpD,EAAO/2C,KAAKrK,OAAS8jD,EAAAA,EAAWW,QAC/BrD,EAAO/2C,KAAKrK,OAAS8jD,EAAAA,EAAWY,OAAO,IAG5C5pB,SAASsmB,IAAY,IAADuD,EAAAC,EACP,QAAZD,EAAAvD,EAAOqC,aAAK,IAAAkB,GAAW,QAAXC,EAAZD,EAAcH,iBAAS,IAAAI,GAAvBA,EAAyB9pB,SAAS+pB,IAChCA,EAAK7pB,EAAQ,GACb,GACF,EAIA8pB,EACJ9pB,GAEOxP,EACJk4B,aACAt/B,QAAQg9B,IAAY,IAAD2D,EAClB,OACE3D,EAAOpG,YACK,QADI+J,EAChB3D,EAAOqC,aAAK,IAAAsB,OAAA,EAAZA,EAAcP,YACdpD,EAAO/2C,KAAKrK,OAAS8jD,EAAAA,EAAWY,MAAM,IAGzC5pB,SAASsmB,IAAY,IAAD4D,EAAAC,EACP,QAAZD,EAAA5D,EAAOqC,aAAK,IAAAuB,GAAW,QAAXC,EAAZD,EAAcR,iBAAS,IAAAS,GAAvBA,EAAyBnqB,SAAS+pB,IAChCA,EAAK7pB,EAAQ,GACb,IAKFz3B,EAAoByxC,IAA0B,IAADkQ,EAAAC,EACjD,MAAM/4C,EAAUof,EACbk4B,aACAt/B,QACEg9B,GAAWA,EAAO/2C,KAAKrK,OAAS8jD,EAAAA,EAAWsB,SAAWhE,EAAOpG,YAE5DqK,EAAc75B,EAAQg4B,kBAA4B,QAAX0B,EAAC94C,EAAQ,UAAE,IAAA84C,OAAA,EAAVA,EAAY76C,KAAK9L,WAC/D,OAAkB,OAAX8mD,QAAW,IAAXA,GAAuB,QAAZF,EAAXE,EAAaC,kBAAU,IAAAH,OAAZ,EAAXA,EAAAI,KAAAF,EAA0B,CAC/Bx5C,WAAYmpC,EACZwQ,YAAa7B,KACb,EAYJ,G,gDC9PO,IAAKG,EAAU,SAAVA,GAAU,OAAVA,EAAU,sBAAVA,EAAU,gBAAVA,EAAU,gBAAVA,EAAU,cAAVA,EAAU,kBAAVA,EAAU,gBAAVA,CAAU,K,kJCUtB,MAAM2B,EAAa,CACjBC,QAGM,6CACNC,QAAS,KAkOX,YAtNA,MAGEnW,WAAAA,CAAY/hB,GAA6B,KAFzCyU,cAAQ,EAGN6N,KAAK7N,SAAW0jB,IAAAA,OAAan4B,GAC7BsiB,KAAK7N,SAAS2jB,aAAa5jB,QAAQ6jB,KACjCthD,UACEy6B,QAAQC,IAAI,iCAEZ,MAAM6mB,QAAkBtF,EAAAA,EAAAA,MAIlBnhC,GAAOkgC,EAAAA,EAAAA,kBAKb,OAJAwG,EAAcnF,QAAU,CACtB+C,cAAe,UAAUmC,IACzB,kBAAmBzmC,GAEd0mC,CAAa,IAErB98C,IACC+1B,QAAQjF,MAAM,8BAA+B9wB,EAAI,IAIrD6mC,KAAK7N,SAAS2jB,aAAaI,SAASH,KACjC3+C,IACC,MAAM,OAAE4nB,EAAM,KAAEvtB,GAAS2F,EAAI3F,KAE7B,OAAe,MAAXutB,GAIGvtB,CAAI,IAEZw4B,IAAW,IAADksB,EACT,MAAM,OACJn3B,EACAvtB,KAAM2kD,EACN14B,OAAQ24B,GACNpsB,EAAMisB,UAAY,CAAC,GACjB,KAAEzkD,EAAO,CAAC,EAAC,IAAEE,EAAM,IAAOykD,GAAW,CAAC,EAEtCE,EAQF,CACF/yC,KAAMyb,EACNrtB,MACAF,QAGF,GAAe,MAAXutB,EAAgB,CAClB,GAAQ,OAAJvtB,QAAI,IAAJA,GAAAA,EAAM8kD,UAAqB,OAATF,QAAS,IAATA,GAAAA,EAAW7f,aAC/B,OAAOz5B,QAAQsW,OAAOijC,GAExB,GAAQ,OAAJ7kD,QAAI,IAAJA,GAAAA,EAAM8kD,SASR,MARsB,UAAlB9kD,EAAK8kD,UAEPjpB,EAAAA,GAAW7yB,WAAWtL,KAAK,CACzBwC,MACAzG,QAAS,WAIS,UAAlBuG,EAAK8kD,SACAx5C,QAAQsW,OAAO,CACpB1hB,SACGF,KAIe,UAAlBA,EAAK8kD,UAEPrnD,EAAAA,GAAM4jB,QAAQ,CACZ3f,QAASxB,IAINoL,QAAQsW,QAAO,IAGxB,GAAI5hB,aAAgBoG,OAASpG,EAAKnD,OAAS,EAIzC,OAFAgoD,EAAYzhD,SAAU,EACtByhD,EAAYjjD,KAAO5B,EACZsL,QAAQsW,OAAOijC,GAGxB,IAAK7kD,GAAQ2/C,OAAO/V,KAAK5pC,GAAMnD,QAAU,EAOvC,OALAY,EAAAA,GAAM4jB,QAAQ,CACZ3f,QAASxB,EACT6kD,aAAa,EACbC,WAAY,UAEP15C,QAAQsW,QAAO,EAE1B,CAEA,GAAe,MAAX2L,EAKF,OAHAyO,EAAAA,GAAehzB,WAAW0Z,QAC1B2Z,EAAAA,GAAoBrzB,WAAW2yB,QAC/BhD,EAAAA,EAAiBue,kBACV5rC,QAAQsW,QAAO,GAGH,IAADqjC,EAApB,GAAe,MAAX13B,EAEF,MAAmB,iBAAX,OAAJvtB,QAAI,IAAJA,OAAI,EAAJA,EAAMxB,OAERm6B,EAAAA,EAAiBb,SAAS8G,EAAAA,GAAWQ,iBAAkB,CACrDxG,QAAS,YAEJttB,QAAQsW,QAAO,IAEL,cAAX,OAAJ5hB,QAAI,IAAJA,OAAI,EAAJA,EAAMxB,OAERm6B,EAAAA,EAAiBb,SAAS8G,EAAAA,GAAWpkB,UAC9BlP,QAAQsW,QAAO,IAGL,eAAX,OAAJ5hB,QAAI,IAAJA,OAAI,EAAJA,EAAMxB,OACRm6B,EAAAA,EAAiBb,SAAS8G,EAAAA,GAAWhuB,UAAW,CAC9CgoB,QAAS,YAEJttB,QAAQsW,QAAO,KAGpBk3B,EAAAA,EAAAA,eAAcD,EAAAA,kBACTvtC,QAAQsW,QAAO,GAER,QAAhBqjC,EAAIzsB,EAAMvM,cAAM,IAAAg5B,GAAZA,EAAc1hD,IAAI63B,SAAS,eAC7BY,EAAAA,GAAehzB,WAAWF,OAAO,OAC1BwC,QAAQsW,QAAO,KAGpB1hB,GACF27B,EAAAA,GAAW7yB,WAAWtL,KAAK,CACzBwC,MACAzG,QAAS,WAGN6R,QAAQsW,QAAO,IAGxB,GAAe,MAAX2L,GAA8B,QAAhBm3B,EAAIlsB,EAAMvM,cAAM,IAAAy4B,GAAZA,EAAcnf,SAClC,OAAIuT,EAAAA,EAAAA,eAAcD,EAAAA,mBAGlB7c,EAAAA,GAAehzB,WAAWF,OAAO,OAFxBwC,QAAQsW,QAAO,GAM1B,GAAI2L,GAAU,IAAK,CAAC,IAAD23B,EACjB,IAAIpM,EAAAA,EAAAA,eAAcD,EAAAA,kBAChB,OAAOvtC,QAAQsW,QAAO,GAGU,SAAlB,QAAZsjC,EAAA1sB,EAAMvM,cAAM,IAAAi5B,OAAA,EAAZA,EAAcle,cAChBhL,EAAAA,GAAehzB,WAAWF,OAAO,OAGnC20B,QAAQjF,MACN,mCAAmCjL,MAAWrtB,GAAO,KAEzD,CACA,OAAOoL,QAAQsW,OAAOijC,EAAY,GAGxC,CAEOpkB,OAAAA,CAAQxU,GACb,OAAOsiB,KAAK7N,SAASD,QAAQxU,EAC/B,CAEO+J,GAAAA,CAAazyB,EAAa0oB,GAC/B,OAAOsiB,KAAK7N,SAAS1K,IAAIzyB,EAAK0oB,EAChC,CAEOqC,IAAAA,CACL/qB,EACAvD,EACAisB,GAEA,OAAOsiB,KAAK7N,SAASpS,KAAK/qB,EAAKvD,EAAMisB,EACvC,CAEO2U,GAAAA,CACLr9B,EACAvD,EACAisB,GAEA,OAAOsiB,KAAK7N,SAASE,IAAIr9B,EAAKvD,EAAMisB,EACtC,CAEOmY,OACL7gC,EACAvD,EACAisB,GAEA,OAAOsiB,KAAK7N,SAAS0D,OAAO7gC,EAAK,CAC/BvD,UACGisB,GAEP,GAGyBg4B,E,gDCrP3B,MA6BA,EA7BgB,CACdjuB,IAAMwd,IACJ,MAAMl5C,EAAQ2hD,aAAaO,QAAQhJ,GAGnC,GAAIl5C,EACF,IACE,OAAO+hD,KAAKK,MAAMpiD,EACpB,CAAE,MACA,OAAOA,CACT,CAEc,EAElBgxC,IAAKA,CAACkI,EAAal5C,KACI,kBAAVA,EAIX2hD,aAAaE,QAAQ3I,EAAK6I,KAAKC,UAAUhiD,IAHvC2hD,aAAaE,QAAQ3I,EAAKl5C,EAGoB,EAElDqhB,OAAS63B,IACPyI,aAAaU,WAAWnJ,EAAI,EAE9B7X,MAAOA,KACLsgB,aAAatgB,OAAO,E,2ICrBjB,MAAMigB,EAAc54C,UACzB,MAAM6oC,QAAYZ,EAAAA,EAAAA,MAClB4V,EAAAA,GAAgB73C,WAAWF,OAAO+iC,EAAI,EAG3B0K,EAAe1K,IAAmB,IAADsZ,EAAAC,EAAAC,EAC5C,IAAIjP,EAAMxX,EAAAA,GAAW7vB,MASrB,OARA88B,IAAQgV,EAAAA,GAAgB73C,WAAW4iC,MAE9B,QAAHuZ,EAAAtZ,SAAG,IAAAsZ,IAAHA,EAAK14B,SACU,QAAf24B,EAACvZ,EAAIiV,kBAAU,IAAAsE,GAAdA,EAAgBE,8BACH,QAD+BD,EAC7CxZ,EAAIiV,kBAAU,IAAAuE,IAAdA,EAAgBtE,qBAEhB3K,EAAMvK,EAAIiV,WAAWC,oBAEhB3K,CAAG,EAGC6D,EAAgBpO,IAAmB,IAAD0Z,EAAAC,EAAAC,EAC7C,IAAIrP,EAAMxX,EAAAA,GAAWE,OAKrB,OAJA+M,IAAQgV,EAAAA,GAAgB73C,WAAW4iC,MAC5B,QAAH2Z,EAAA1Z,SAAG,IAAA0Z,GAAHA,EAAK94B,SAAc,QAAP+4B,EAAI3Z,SAAG,IAAA2Z,GAAY,QAAZC,EAAHD,EAAK1E,kBAAU,IAAA2E,GAAfA,EAAiBC,uBACnCtP,EAAMvK,EAAIiV,WAAW4E,sBAEhBtP,CAAG,C,kBC/CZ,IAAI5xC,EAAM,CACT,QAAS,CACR,MACA,MAED,SAAU,CACT,MACA,MAED,cAAe,CACd,MACA,MAED,kBAAmB,CAClB,MACA,MAED,QAAS,CACR,MACA,MAED,SAAU,CACT,MACA,MAED,cAAe,CACd,MACA,MAED,kBAAmB,CAClB,MACA,MAED,QAAS,CACR,MACA,MAED,SAAU,CACT,MACA,MAED,cAAe,CACd,MACA,MAED,kBAAmB,CAClB,MACA,MAED,UAAW,CACV,MACA,MAED,WAAY,CACX,MACA,MAED,kBAAmB,CAClB,MACA,KAED,mBAAoB,CACnB,MACA,KAED,oCAAqC,CACpC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,wBAAyB,CACxB,MACA,KAED,4BAA6B,CAC5B,MACA,KAED,iBAAkB,CACjB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,mCAAoC,CACnC,MACA,KAED,oCAAqC,CACpC,MACA,KAED,yCAA0C,CACzC,MACA,KAED,6CAA8C,CAC7C,MACA,KAED,uBAAwB,CACvB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,mBAAoB,CACnB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,qBAAsB,CACrB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,+BAAgC,CAC/B,MACA,MAED,oBAAqB,CACpB,MACA,KACA,KAED,qBAAsB,CACrB,MACA,KACA,KAED,+BAAgC,CAC/B,MACA,KACA,MAED,gCAAiC,CAChC,MACA,KACA,MAED,2CAA4C,CAC3C,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,4CAA6C,CAC5C,MACA,KACA,MAED,6CAA8C,CAC7C,MACA,KACA,MAED,kDAAmD,CAClD,MACA,KACA,MAED,sDAAuD,CACtD,MACA,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,gDAAiD,CAChD,KACA,MAED,oDAAqD,CACpD,KACA,MAED,0CAA2C,CAC1C,MACA,KAED,2CAA4C,CAC3C,MACA,KAED,gDAAiD,CAChD,MACA,KAED,oDAAqD,CACpD,MACA,KAED,qCAAsC,CACrC,MACA,KACA,MAED,wCAAyC,CACxC,MACA,KACA,MAED,0BAA2B,CAC1B,MACA,KACA,KAED,8BAA+B,CAC9B,MACA,KACA,KAED,kBAAmB,CAClB,KACA,MAED,mBAAoB,CACnB,KACA,MAED,wBAAyB,CACxB,KACA,MAED,4BAA6B,CAC5B,KACA,MAED,oBAAqB,CACpB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,gBAAiB,CAChB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,gBAAiB,CAChB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,yBAA0B,CACzB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,+BAAgC,CAC/B,MACA,MAED,mCAAoC,CACnC,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,kCAAmC,CAClC,MACA,MAED,sCAAuC,CACtC,MACA,MAED,qBAAsB,CACrB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,+BAAgC,CAC/B,MACA,MAED,oBAAqB,CACpB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,sCAAuC,CACtC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,cAAe,CACd,MACA,MAED,eAAgB,CACf,MACA,MAED,oBAAqB,CACpB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,kCAAmC,CAClC,MACA,MAED,eAAgB,CACf,MACA,MAED,gBAAiB,CAChB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,gBAAiB,CAChB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,kCAAmC,CAClC,MACA,MAED,mCAAoC,CACnC,MACA,MAED,wCAAyC,CACxC,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,sBAAuB,CACtB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,gBAAiB,CAChB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,gBAAiB,CAChB,MACA,MAED,qBAAsB,CACrB,KACA,MAED,oBAAqB,CACpB,MACA,MAED,WAAY,CACX,MACA,KAED,YAAa,CACZ,MACA,KAED,kBAAmB,CAClB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,mCAAoC,CACnC,MACA,MAED,oCAAqC,CACpC,MACA,MAED,yCAA0C,CACzC,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,oDAAqD,CACpD,MACA,MAED,oCAAqC,CACpC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,sCAAuC,CACtC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,wBAAyB,CACxB,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,iBAAkB,CACjB,MACA,KAED,qBAAsB,CACrB,MACA,KAED,YAAa,CACZ,MACA,MAED,aAAc,CACb,MACA,MAED,uBAAwB,CACvB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,iCAAkC,CACjC,KACA,MAED,kCAAmC,CAClC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,iCAAkC,CACjC,MACA,KAED,kCAAmC,CAClC,MACA,KAED,uCAAwC,CACvC,MACA,KAED,2CAA4C,CAC3C,MACA,KAED,kCAAmC,CAClC,MACA,MAED,mCAAoC,CACnC,MACA,MAED,wCAAyC,CACxC,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,gCAAiC,CAChC,MACA,MAED,iCAAkC,CACjC,MACA,MAED,sCAAuC,CACtC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,kCAAmC,CAClC,MACA,MAED,mCAAoC,CACnC,MACA,MAED,wCAAyC,CACxC,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,iCAAkC,CACjC,MACA,MAED,kCAAmC,CAClC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,kBAAmB,CAClB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,WAAY,CACX,OAED,YAAa,CACZ,OAED,iBAAkB,CACjB,OAED,qBAAsB,CACrB,OAED,UAAW,CACV,MACA,MAED,WAAY,CACX,MACA,MAED,kBAAmB,CAClB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,cAAe,CACd,MACA,KAED,eAAgB,CACf,MACA,KAED,oBAAqB,CACpB,MACA,KAED,wBAAyB,CACxB,MACA,KAED,gBAAiB,CAChB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,gBAAiB,CAChB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,cAAe,CACd,MACA,KAED,eAAgB,CACf,MACA,KAED,kBAAmB,CAClB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,4CAA6C,CAC5C,KACA,MAED,6CAA8C,CAC7C,KACA,MAED,kDAAmD,CAClD,KACA,MAED,uDAAwD,CACvD,MACA,MAED,sDAAuD,CACtD,KACA,MAED,wBAAyB,CACxB,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,qBAAsB,CACrB,MACA,KACA,KAED,sBAAuB,CACtB,MACA,KACA,KAED,gCAAiC,CAChC,MACA,KACA,MAED,iCAAkC,CACjC,MACA,KACA,MAED,sCAAuC,CACtC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,uCAAwC,CACvC,MACA,MAED,wCAAyC,CACxC,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,2CAA4C,CAC3C,KACA,MAED,4CAA6C,CAC5C,KACA,MAED,iDAAkD,CACjD,KACA,MAED,qDAAsD,CACrD,KACA,MAED,8CAA+C,CAC9C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,oDAAqD,CACpD,MACA,MAED,wDAAyD,CACxD,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,8DAA+D,CAC9D,KACA,MAED,mEAAoE,CACnE,MACA,MAED,kEAAmE,CAClE,KACA,MAED,qDAAsD,CACrD,MACA,MAED,0DAA2D,CAC1D,MACA,MAED,yDAA0D,CACzD,MACA,MAED,yCAA0C,CACzC,MACA,KAED,0CAA2C,CAC1C,MACA,KAED,+CAAgD,CAC/C,MACA,KAED,mDAAoD,CACnD,MACA,KAED,0CAA2C,CAC1C,OAED,2CAA4C,CAC3C,OAED,gDAAiD,CAChD,OAED,oDAAqD,CACpD,OAED,iDAAkD,CACjD,KACA,MAED,kDAAmD,CAClD,KACA,MAED,uDAAwD,CACvD,KACA,MAED,2DAA4D,CAC3D,KACA,MAED,4CAA6C,CAC5C,MACA,KAED,6CAA8C,CAC7C,MACA,KAED,kDAAmD,CAClD,MACA,KAED,sDAAuD,CACtD,MACA,KAED,sCAAuC,CACtC,MACA,KACA,MAED,0CAA2C,CAC1C,MACA,KACA,MAED,2BAA4B,CAC3B,MACA,KACA,KAED,gCAAiC,CAChC,IACA,KAED,+BAAgC,CAC/B,MACA,KACA,KAED,yBAA0B,CACzB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,+BAAgC,CAC/B,MACA,MAED,oCAAqC,CACpC,MACA,MAED,mCAAoC,CACnC,MACA,MAED,oBAAqB,CACpB,MACA,KAED,wBAAyB,CACxB,MACA,KAED,WAAY,CACX,MACA,KACA,MAED,YAAa,CACZ,MACA,KACA,MAED,sBAAuB,CACtB,MACA,KACA,MAED,uBAAwB,CACvB,MACA,KACA,MAED,sCAAuC,CACtC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,4CAA6C,CAC5C,KACA,MAED,gDAAiD,CAChD,KACA,MAED,oCAAqC,CACpC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,kCAAmC,CAClC,MACA,KACA,MAED,mCAAoC,CACnC,MACA,KACA,MAED,wCAAyC,CACxC,MACA,KACA,MAED,4CAA6C,CAC5C,MACA,KACA,MAED,oCAAqC,CACpC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,iCAAkC,CACjC,MACA,MAED,kCAAmC,CAClC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,qCAAsC,CACrC,MACA,MAED,sCAAuC,CACtC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,4BAA6B,CAC5B,MACA,KACA,MAED,+BAAgC,CAC/B,MACA,KACA,MAED,iBAAkB,CACjB,MACA,KACA,MAED,qBAAsB,CACrB,MACA,KACA,MAED,8BAA+B,CAC9B,MACA,MAED,iCAAkC,CACjC,MACA,MAED,WAAY,CACX,MACA,MAED,YAAa,CACZ,MACA,MAED,sBAAuB,CACtB,MACA,IAED,uBAAwB,CACvB,MACA,IAED,4BAA6B,CAC5B,KACA,MAED,6BAA8B,CAC7B,KACA,MAED,kCAAmC,CAClC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,2BAA4B,CAC3B,MACA,KAED,4BAA6B,CAC5B,MACA,KAED,iCAAkC,CACjC,MACA,KAED,qCAAsC,CACrC,MACA,KAED,iCAAkC,CACjC,MACA,MAED,kCAAmC,CAClC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,iCAAkC,CACjC,MACA,MAED,kCAAmC,CAClC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,iCAAkC,CACjC,KACA,MAED,kCAAmC,CAClC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,2BAA4B,CAC3B,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,iCAAkC,CACjC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,4BAA6B,CAC5B,MACA,IAED,+BAAgC,CAC/B,MACA,IAED,iBAAkB,CACjB,MACA,MAED,qBAAsB,CACrB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,mBAAoB,CACnB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,SAAU,CACT,MACA,MAED,UAAW,CACV,MACA,MAED,gBAAiB,CAChB,KACA,MAED,iBAAkB,CACjB,KACA,MAED,sBAAuB,CACtB,KACA,MAED,0BAA2B,CAC1B,KACA,MAED,gBAAiB,CAChB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,cAAe,CACd,MACA,MAED,eAAgB,CACf,MACA,MAED,oBAAqB,CACpB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,cAAe,CACd,MACA,MAED,eAAgB,CACf,MACA,MAED,oBAAqB,CACpB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,eAAgB,CACf,MACA,MAED,mBAAoB,CACnB,MACA,MAED,aAAc,CACb,MACA,MAED,cAAe,CACd,MACA,MAED,6BAA8B,CAC7B,KACA,MAED,8BAA+B,CAC9B,KACA,MAED,mCAAoC,CACnC,KACA,MAED,uCAAwC,CACvC,KACA,MAED,mBAAoB,CACnB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,oBAAqB,CACpB,MACA,KACA,MAED,qBAAsB,CACrB,MACA,KACA,MAED,qCAAsC,CACrC,MACA,KACA,MAED,sCAAuC,CACtC,MACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,MAED,+CAAgD,CAC/C,MACA,KACA,MAED,6CAA8C,CAC7C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,0BAA2B,CAC1B,MACA,KACA,MAED,8BAA+B,CAC9B,MACA,KACA,MAED,0BAA2B,CAC1B,MACA,KAED,2BAA4B,CAC3B,MACA,KAED,2CAA4C,CAC3C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,gCAAiC,CAChC,MACA,KAED,oCAAqC,CACpC,MACA,KAED,UAAW,CACV,MACA,MAED,WAAY,CACX,MACA,MAED,wBAAyB,CACxB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,kCAAmC,CAClC,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,iCAAkC,CACjC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,sBAAuB,CACtB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,uBAAwB,CACvB,MACA,MAED,wBAAyB,CACxB,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,iCAAkC,CACjC,MACA,MAED,sBAAuB,CACtB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,gCAAiC,CAChC,MACA,MAED,oCAAqC,CACpC,MACA,MAED,gBAAiB,CAChB,MACA,MAED,iBAAkB,CACjB,MACA,MAED,sBAAuB,CACtB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,iBAAkB,CACjB,MACA,MAED,kBAAmB,CAClB,MACA,MAED,uBAAwB,CACvB,MACA,MAED,2BAA4B,CAC3B,MACA,MAED,wBAAyB,CACxB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,gDAAiD,CAChD,MACA,IAED,iDAAkD,CACjD,MACA,IAED,sDAAuD,CACtD,MACA,IAED,2DAA4D,CAC3D,MACA,MAED,0DAA2D,CAC1D,MACA,IAED,yCAA0C,CACzC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,mDAAoD,CACnD,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,mCAAoC,CACnC,MACA,MAED,kCAAmC,CAClC,MACA,MAED,yBAA0B,CACzB,MACA,MAED,0BAA2B,CAC1B,MACA,MAED,+BAAgC,CAC/B,MACA,MAED,mCAAoC,CACnC,MACA,MAED,wBAAyB,CACxB,MACA,MAED,yBAA0B,CACzB,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,kCAAmC,CAClC,MACA,MAED,mBAAoB,CACnB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,8BAA+B,CAC9B,MACA,MAED,+BAAgC,CAC/B,MACA,MAED,oCAAqC,CACpC,MACA,MAED,qCAAsC,CACrC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,sCAAuC,CACtC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,qCAAsC,CACrC,KACA,MAED,sCAAuC,CACtC,KACA,MAED,2CAA4C,CAC3C,KACA,MAED,+CAAgD,CAC/C,KACA,MAED,uCAAwC,CACvC,MACA,MAED,wCAAyC,CACxC,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,0CAA2C,CAC1C,IACA,KAED,2CAA4C,CAC3C,IACA,KAED,gDAAiD,CAChD,IACA,KAED,oDAAqD,CACpD,IACA,KAED,uCAAwC,CACvC,MACA,MAED,wCAAyC,CACxC,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,qCAAsC,CACrC,MACA,MAED,sCAAuC,CACtC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,uCAAwC,CACvC,MACA,MAED,wCAAyC,CACxC,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,yCAA0C,CACzC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,mDAAoD,CACnD,MACA,MAED,sCAAuC,CACtC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,uCAAwC,CACvC,MACA,MAED,wCAAyC,CACxC,MACA,MAED,6CAA8C,CAC7C,MACA,MAED,iDAAkD,CACjD,MACA,MAED,oCAAqC,CACpC,KACA,MAED,qCAAsC,CACrC,KACA,MAED,0CAA2C,CAC1C,KACA,MAED,8CAA+C,CAC9C,KACA,MAED,oCAAqC,CACpC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,yBAA0B,CACzB,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,mBAAoB,CACnB,MACA,MAED,oBAAqB,CACpB,MACA,MAED,yCAA0C,CACzC,MACA,MAED,0CAA2C,CAC1C,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,mDAAoD,CACnD,MACA,MAED,yBAA0B,CACzB,MACA,MAED,6BAA8B,CAC7B,MACA,MAED,mBAAoB,CACnB,MACA,KAED,oBAAqB,CACpB,MACA,KAED,2BAA4B,CAC3B,MACA,MAED,4BAA6B,CAC5B,MACA,MAED,sCAAuC,CACtC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,kDAAmD,CAClD,MACA,MAED,mDAAoD,CACnD,MACA,MAED,wDAAyD,CACxD,MACA,MAED,4DAA6D,CAC5D,MACA,MAED,iDAAkD,CACjD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,uDAAwD,CACvD,MACA,MAED,2DAA4D,CAC3D,MACA,MAED,+CAAgD,CAC/C,MACA,MAED,gDAAiD,CAChD,MACA,MAED,qDAAsD,CACrD,MACA,MAED,yDAA0D,CACzD,MACA,MAED,4CAA6C,CAC5C,MACA,MAED,+CAAgD,CAC/C,MACA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,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW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","sources":["assets/images/default-avatar.svg","common/constants.ts","common/pattern.ts","hooks/useTagModal/index.tsx","hooks/useToast/index.tsx","hooks/useReportModal/index.tsx","hooks/usePageUsers/index.tsx","hooks/useChangeUserRoleModal/index.tsx","hooks/useUserModal/index.tsx","hooks/useChangePasswordModal/index.tsx","hooks/useChangeProfileModal/index.tsx","hooks/usePageTags/index.tsx","hooks/usePrompt/index.tsx","hooks/useActivationEmailModal/index.tsx","hooks/useCaptchaModal/index.tsx","hooks/useSkeletonControl/index.tsx","i18n/init.ts","../../i18n/en_US.yaml","router/routes.ts","router/RouteErrorBoundary.tsx","router/RouteGuard.tsx","router/index.tsx","App.tsx","index.tsx","hooks/useInitProfileModal/index.tsx","pages/Layout/index.tsx","router/alias.ts","router/pathFactory.ts","services/admin/badges.ts","services/client/legal.ts","services/admin/answer.ts","services/admin/flag.ts","services/admin/question.ts","services/admin/settings.ts","services/admin/users.ts","services/admin/dashboard.ts","services/admin/plugins.ts","services/common.ts","services/client/activity.ts","services/client/personal.ts","services/client/notification.ts","services/client/question.ts","services/client/search.ts","services/client/tag.ts","services/client/settings.ts","services/client/timeline.ts","services/client/revision.ts","services/client/user.ts","services/client/Oauth.ts","services/client/review.ts","services/client/badges.ts","services/install/index.ts","services/user-center/index.ts","stores/loginSetting.ts","stores/seoSetting.ts","stores/userCenter.ts","stores/toast.ts","stores/siteInfo.ts","stores/interface.ts","stores/branding.ts","stores/pageTags.ts","stores/customize.ts","stores/themeSetting.ts","stores/writeSetting.ts","stores/loginToContinue.ts","stores/errorCode.ts","stores/sideNav.ts","stores/commentReply.ts","stores/loggedUserInfo.ts","utils/progress.ts","utils/animateGift.ts","utils/common.ts","utils/floppyNavigation.ts","utils/guard.ts","utils/storageWithExpires.ts","utils/saveDraft.ts","utils/color.ts","utils/localize.ts","utils/next-auth.ts","utils/pluginKit/utils.ts","plugins/builtin/ThirdPartyConnector/info.yaml","plugins/builtin/ThirdPartyConnector/i18n/index.ts","plugins/builtin/ThirdPartyConnector/i18n/en_US.yaml","plugins/builtin/ThirdPartyConnector/i18n/zh_CN.yaml","plugins/builtin/ThirdPartyConnector/index.tsx","plugins/builtin/ThirdPartyConnector/services.ts","plugins/builtin/HostingConnector/i18n/index.ts","plugins/builtin/HostingConnector/i18n/en_US.yaml","plugins/builtin/HostingConnector/i18n/zh_CN.yaml","plugins/builtin/HostingConnector/info.yaml","plugins/builtin/HostingConnector/index.tsx","plugins/builtin/SearchInfo/info.yaml","plugins/builtin/SearchInfo/i18n/index.ts","plugins/builtin/SearchInfo/i18n/en_US.yaml","plugins/builtin/SearchInfo/i18n/zh_CN.yaml","plugins/builtin/SearchInfo/index.tsx","plugins/builtin/SearchInfo/services.ts","plugins/builtin/index.ts","utils/pluginKit/index.ts","utils/pluginKit/interface.ts","utils/request.ts","utils/storage.ts","utils/userCenter.ts","pages|lazy|/^/.//.*$/|groupOptions: {}|namespace object","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/chunk loaded","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../webpack/startup"],"sourcesContent":["var _rect, _path;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgDefaultAvatar({\n title,\n titleId,\n ...props\n}, svgRef) {\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n width: 32,\n height: 32,\n fill: \"#DEE2E6\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M8.5 25C8.5 25 7 25 7 23.5C7 22 8.5 17.5 16 17.5C23.5 17.5 25 22 25 23.5C25 25 23.5 25 23.5 25H8.5ZM16 16C17.1935 16 18.3381 15.5259 19.182 14.682C20.0259 13.8381 20.5 12.6935 20.5 11.5C20.5 10.3065 20.0259 9.16193 19.182 8.31802C18.3381 7.47411 17.1935 7 16 7C14.8065 7 13.6619 7.47411 12.818 8.31802C11.9741 9.16193 11.5 10.3065 11.5 11.5C11.5 12.6935 11.9741 13.8381 12.818 14.682C13.6619 15.5259 14.8065 16 16 16Z\",\n fill: \"#6C757D\"\n })));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgDefaultAvatar);\nexport default __webpack_public_path__ + \"static/media/default-avatar.ad069b0ec20aef08c81c75fb153890d3.svg\";\nexport { ForwardRef as ReactComponent };","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport const DEFAULT_SITE_NAME = 'Answer';\nexport const DEFAULT_LANG = 'en_US';\nexport const CURRENT_LANG_STORAGE_KEY = '_a_lang_';\nexport const LANG_RESOURCE_STORAGE_KEY = '_a_lang_r_';\nexport const LOGGED_TOKEN_STORAGE_KEY = '_a_ltk_';\nexport const NEXT_AUTH_SESSION_KEY = 'next-auth.session-token';\nexport const REDIRECT_PATH_STORAGE_KEY = '_a_rp_';\nexport const CAPTCHA_CODE_STORAGE_KEY = '_a_captcha_';\nexport const DRAFT_QUESTION_STORAGE_KEY = '_a_dq_';\nexport const DRAFT_ANSWER_STORAGE_KEY = '_a_da_';\nexport const DRAFT_TIMESIGH_STORAGE_KEY = '|_a_t_s_|';\nexport const DEFAULT_THEME = 'system';\nexport const ADMIN_PRIVILEGE_CUSTOM_LEVEL = 99;\nexport const SKELETON_SHOW_TIME = 1000;\n\nexport const USER_AGENT_NAMES = {\n SegmentFault: 'SegmentFault',\n WeChat: 'WeChat',\n WeCom: 'WeCom',\n DingTalk: 'DingTalk',\n};\n\nexport const ADMIN_LIST_STATUS = {\n // normal;\n 1: {\n variant: 'text-bg-success',\n name: 'normal',\n },\n // closed;\n 2: {\n variant: 'text-bg-warning',\n name: 'closed',\n },\n // deleted\n 10: {\n variant: 'text-bg-danger',\n name: 'deleted',\n },\n // pending\n 11: {\n variant: 'text-bg-warning',\n name: 'pending',\n },\n normal: {\n variant: 'text-bg-success',\n name: 'normal',\n },\n closed: {\n variant: 'text-bg-warning',\n name: 'closed',\n },\n deleted: {\n variant: 'text-bg-danger',\n name: 'deleted',\n },\n pending: {\n variant: 'text-bg-warning',\n name: 'pending',\n },\n unlisted: {\n variant: 'text-bg-secondary',\n name: 'unlisted',\n },\n};\n\nexport const ADMIN_NAV_MENUS = [\n {\n name: 'dashboard',\n children: [],\n },\n {\n name: 'contents',\n children: [{ name: 'questions' }, { name: 'answers' }],\n },\n {\n name: 'users',\n },\n {\n name: 'badges',\n },\n {\n name: 'customize',\n children: [\n {\n name: 'themes',\n },\n {\n name: 'css_html',\n path: 'css-html',\n },\n ],\n },\n {\n name: 'settings',\n children: [\n { name: 'general' },\n { name: 'interface' },\n { name: 'branding' },\n { name: 'smtp' },\n { name: 'legal' },\n { name: 'write' },\n { name: 'seo' },\n { name: 'login' },\n { name: 'users', path: 'settings-users' },\n { name: 'privileges' },\n ],\n },\n {\n name: 'plugins',\n children: [\n {\n name: 'installed_plugins',\n path: 'installed-plugins',\n },\n ],\n },\n];\n\nexport const TIMEZONES = [\n {\n label: 'Africa',\n options: [\n { value: 'Africa/Abidjan', label: 'Abidjan' },\n { value: 'Africa/Accra', label: 'Accra' },\n { value: 'Africa/Addis_Ababa', label: 'Addis Ababa' },\n { value: 'Africa/Algiers', label: 'Algiers' },\n { value: 'Africa/Asmara', label: 'Asmara' },\n { value: 'Africa/Bamako', label: 'Bamako' },\n { value: 'Africa/Bangui', label: 'Bangui' },\n { value: 'Africa/Banjul', label: 'Banjul' },\n { value: 'Africa/Bissau', label: 'Bissau' },\n { value: 'Africa/Blantyre', label: 'Blantyre' },\n { value: 'Africa/Brazzaville', label: 'Brazzaville' },\n { value: 'Africa/Bujumbura', label: 'Bujumbura' },\n { value: 'Africa/Cairo', label: 'Cairo' },\n { value: 'Africa/Casablanca', label: 'Casablanca' },\n { value: 'Africa/Ceuta', label: 'Ceuta' },\n { value: 'Africa/Conakry', label: 'Conakry' },\n { value: 'Africa/Dakar', label: 'Dakar' },\n { value: 'Africa/Dar_es_Salaam', label: 'Dar es Salaam' },\n { value: 'Africa/Djibouti', label: 'Djibouti' },\n { value: 'Africa/Douala', label: 'Douala' },\n { value: 'Africa/El_Aaiun', label: 'El Aaiun' },\n { value: 'Africa/Freetown', label: 'Freetown' },\n { value: 'Africa/Gaborone', label: 'Gaborone' },\n { value: 'Africa/Harare', label: 'Harare' },\n { value: 'Africa/Johannesburg', label: 'Johannesburg' },\n { value: 'Africa/Juba', label: 'Juba' },\n { value: 'Africa/Kampala', label: 'Kampala' },\n { value: 'Africa/Khartoum', label: 'Khartoum' },\n { value: 'Africa/Kigali', label: 'Kigali' },\n { value: 'Africa/Kinshasa', label: 'Kinshasa' },\n { value: 'Africa/Lagos', label: 'Lagos' },\n { value: 'Africa/Libreville', label: 'Libreville' },\n { value: 'Africa/Lome', label: 'Lome' },\n { value: 'Africa/Luanda', label: 'Luanda' },\n { value: 'Africa/Lubumbashi', label: 'Lubumbashi' },\n { value: 'Africa/Lusaka', label: 'Lusaka' },\n { value: 'Africa/Malabo', label: 'Malabo' },\n { value: 'Africa/Maputo', label: 'Maputo' },\n { value: 'Africa/Maseru', label: 'Maseru' },\n { value: 'Africa/Mbabane', label: 'Mbabane' },\n { value: 'Africa/Mogadishu', label: 'Mogadishu' },\n { value: 'Africa/Monrovia', label: 'Monrovia' },\n { value: 'Africa/Nairobi', label: 'Nairobi' },\n { value: 'Africa/Ndjamena', label: 'Ndjamena' },\n { value: 'Africa/Niamey', label: 'Niamey' },\n { value: 'Africa/Nouakchott', label: 'Nouakchott' },\n { value: 'Africa/Ouagadougou', label: 'Ouagadougou' },\n { value: 'Africa/Porto-Novo', label: 'Porto-Novo' },\n { value: 'Africa/Sao_Tome', label: 'Sao Tome' },\n { value: 'Africa/Tripoli', label: 'Tripoli' },\n { value: 'Africa/Tunis', label: 'Tunis' },\n { value: 'Africa/Windhoek', label: 'Windhoek' },\n ],\n },\n {\n label: 'America',\n options: [\n { value: 'America/Adak', label: 'Adak' },\n { value: 'America/Anchorage', label: 'Anchorage' },\n { value: 'America/Anguilla', label: 'Anguilla' },\n { value: 'America/Antigua', label: 'Antigua' },\n { value: 'America/Araguaina', label: 'Araguaina' },\n {\n value: 'America/Argentina/Buenos_Aires',\n label: 'Argentina - Buenos Aires',\n },\n { value: 'America/Argentina/Catamarca', label: 'Argentina - Catamarca' },\n { value: 'America/Argentina/Cordoba', label: 'Argentina - Cordoba' },\n { value: 'America/Argentina/Jujuy', label: 'Argentina - Jujuy' },\n { value: 'America/Argentina/La_Rioja', label: 'Argentina - La Rioja' },\n { value: 'America/Argentina/Mendoza', label: 'Argentina - Mendoza' },\n {\n value: 'America/Argentina/Rio_Gallegos',\n label: 'Argentina - Rio Gallegos',\n },\n { value: 'America/Argentina/Salta', label: 'Argentina - Salta' },\n { value: 'America/Argentina/San_Juan', label: 'Argentina - San Juan' },\n { value: 'America/Argentina/San_Luis', label: 'Argentina - San Luis' },\n { value: 'America/Argentina/Tucuman', label: 'Argentina - Tucuman' },\n { value: 'America/Argentina/Ushuaia', label: 'Argentina - Ushuaia' },\n { value: 'America/Aruba', label: 'Aruba' },\n { value: 'America/Asuncion', label: 'Asuncion' },\n { value: 'America/Atikokan', label: 'Atikokan' },\n { value: 'America/Bahia', label: 'Bahia' },\n { value: 'America/Bahia_Banderas', label: 'Bahia Banderas' },\n { value: 'America/Barbados', label: 'Barbados' },\n { value: 'America/Belem', label: 'Belem' },\n { value: 'America/Belize', label: 'Belize' },\n { value: 'America/Blanc-Sablon', label: 'Blanc-Sablon' },\n { value: 'America/Boa_Vista', label: 'Boa Vista' },\n { value: 'America/Bogota', label: 'Bogota' },\n { value: 'America/Boise', label: 'Boise' },\n { value: 'America/Cambridge_Bay', label: 'Cambridge Bay' },\n { value: 'America/Campo_Grande', label: 'Campo Grande' },\n { value: 'America/Cancun', label: 'Cancun' },\n { value: 'America/Caracas', label: 'Caracas' },\n { value: 'America/Cayenne', label: 'Cayenne' },\n { value: 'America/Cayman', label: 'Cayman' },\n { value: 'America/Chicago', label: 'Chicago' },\n { value: 'America/Chihuahua', label: 'Chihuahua' },\n { value: 'America/Costa_Rica', label: 'Costa Rica' },\n { value: 'America/Creston', label: 'Creston' },\n { value: 'America/Cuiaba', label: 'Cuiaba' },\n { value: 'America/Curacao', label: 'Curacao' },\n { value: 'America/Danmarkshavn', label: 'Danmarkshavn' },\n { value: 'America/Dawson', label: 'Dawson' },\n { value: 'America/Dawson_Creek', label: 'Dawson Creek' },\n { value: 'America/Denver', label: 'Denver' },\n { value: 'America/Detroit', label: 'Detroit' },\n { value: 'America/Dominica', label: 'Dominica' },\n { value: 'America/Edmonton', label: 'Edmonton' },\n { value: 'America/Eirunepe', label: 'Eirunepe' },\n { value: 'America/El_Salvador', label: 'El Salvador' },\n { value: 'America/Fort_Nelson', label: 'Fort Nelson' },\n { value: 'America/Fortaleza', label: 'Fortaleza' },\n { value: 'America/Glace_Bay', label: 'Glace Bay' },\n { value: 'America/Godthab', label: 'Godthab' },\n { value: 'America/Goose_Bay', label: 'Goose Bay' },\n { value: 'America/Grand_Turk', label: 'Grand Turk' },\n { value: 'America/Grenada', label: 'Grenada' },\n { value: 'America/Guadeloupe', label: 'Guadeloupe' },\n { value: 'America/Guatemala', label: 'Guatemala' },\n { value: 'America/Guayaquil', label: 'Guayaquil' },\n { value: 'America/Guyana', label: 'Guyana' },\n { value: 'America/Halifax', label: 'Halifax' },\n { value: 'America/Havana', label: 'Havana' },\n { value: 'America/Hermosillo', label: 'Hermosillo' },\n {\n value: 'America/Indiana/Indianapolis',\n label: 'Indiana - Indianapolis',\n },\n { value: 'America/Indiana/Knox', label: 'Indiana - Knox' },\n { value: 'America/Indiana/Marengo', label: 'Indiana - Marengo' },\n { value: 'America/Indiana/Petersburg', label: 'Indiana - Petersburg' },\n { value: 'America/Indiana/Tell_City', label: 'Indiana - Tell City' },\n { value: 'America/Indiana/Vevay', label: 'Indiana - Vevay' },\n { value: 'America/Indiana/Vincennes', label: 'Indiana - Vincennes' },\n { value: 'America/Indiana/Winamac', label: 'Indiana - Winamac' },\n { value: 'America/Inuvik', label: 'Inuvik' },\n { value: 'America/Iqaluit', label: 'Iqaluit' },\n { value: 'America/Jamaica', label: 'Jamaica' },\n { value: 'America/Juneau', label: 'Juneau' },\n { value: 'America/Kentucky/Louisville', label: 'Kentucky - Louisville' },\n { value: 'America/Kentucky/Monticello', label: 'Kentucky - Monticello' },\n { value: 'America/Kralendijk', label: 'Kralendijk' },\n { value: 'America/La_Paz', label: 'La Paz' },\n { value: 'America/Lima', label: 'Lima' },\n { value: 'America/Los_Angeles', label: 'Los Angeles' },\n { value: 'America/Lower_Princes', label: 'Lower Princes' },\n { value: 'America/Maceio', label: 'Maceio' },\n { value: 'America/Managua', label: 'Managua' },\n { value: 'America/Manaus', label: 'Manaus' },\n { value: 'America/Marigot', label: 'Marigot' },\n { value: 'America/Martinique', label: 'Martinique' },\n { value: 'America/Matamoros', label: 'Matamoros' },\n { value: 'America/Mazatlan', label: 'Mazatlan' },\n { value: 'America/Miquelon', label: 'Miquelon' },\n { value: 'America/Moncton', label: 'Moncton' },\n { value: 'America/Monterrey', label: 'Monterrey' },\n { value: 'America/Montevideo', label: 'Montevideo' },\n { value: 'America/Montserrat', label: 'Montserrat' },\n { value: 'America/Nassau', label: 'Nassau' },\n { value: 'America/New_York', label: 'New York' },\n { value: 'America/Nipigon', label: 'Nipigon' },\n { value: 'America/Nome', label: 'Nome' },\n { value: 'America/Noronha', label: 'Noronha' },\n { value: 'America/North_Dakota/Beulah', label: 'North Dakota - Beulah' },\n { value: 'America/North_Dakota/Center', label: 'North Dakota - Center' },\n {\n value: 'America/North_Dakota/New_Salem',\n label: 'North Dakota - New Salem',\n },\n { value: 'America/Ojinaga', label: 'Ojinaga' },\n { value: 'America/Panama', label: 'Panama' },\n { value: 'America/Pangnirtung', label: 'Pangnirtung' },\n { value: 'America/Paramaribo', label: 'Paramaribo' },\n { value: 'America/Phoenix', label: 'Phoenix' },\n { value: 'America/Port-au-Prince', label: 'Port-au-Prince' },\n { value: 'America/Port_of_Spain', label: 'Port of Spain' },\n { value: 'America/Porto_Velho', label: 'Porto Velho' },\n { value: 'America/Puerto_Rico', label: 'Puerto Rico' },\n { value: 'America/Punta_Arenas', label: 'Punta Arenas' },\n { value: 'America/Rainy_River', label: 'Rainy River' },\n { value: 'America/Rankin_Inlet', label: 'Rankin Inlet' },\n { value: 'America/Recife', label: 'Recife' },\n { value: 'America/Regina', label: 'Regina' },\n { value: 'America/Resolute', label: 'Resolute' },\n { value: 'America/Rio_Branco', label: 'Rio Branco' },\n { value: 'America/Santarem', label: 'Santarem' },\n { value: 'America/Santiago', label: 'Santiago' },\n { value: 'America/Santo_Domingo', label: 'Santo Domingo' },\n { value: 'America/Sao_Paulo', label: 'Sao Paulo' },\n { value: 'America/Scoresbysund', label: 'Scoresbysund' },\n { value: 'America/Sitka', label: 'Sitka' },\n { value: 'America/St_Barthelemy', label: 'St Barthelemy' },\n { value: 'America/St_Johns', label: 'St Johns' },\n { value: 'America/St_Kitts', label: 'St Kitts' },\n { value: 'America/St_Lucia', label: 'St Lucia' },\n { value: 'America/St_Thomas', label: 'St Thomas' },\n { value: 'America/St_Vincent', label: 'St Vincent' },\n { value: 'America/Swift_Current', label: 'Swift Current' },\n { value: 'America/Tegucigalpa', label: 'Tegucigalpa' },\n { value: 'America/Thule', label: 'Thule' },\n { value: 'America/Thunder_Bay', label: 'Thunder Bay' },\n { value: 'America/Tijuana', label: 'Tijuana' },\n { value: 'America/Toronto', label: 'Toronto' },\n { value: 'America/Tortola', label: 'Tortola' },\n { value: 'America/Vancouver', label: 'Vancouver' },\n { value: 'America/Whitehorse', label: 'Whitehorse' },\n { value: 'America/Winnipeg', label: 'Winnipeg' },\n { value: 'America/Yakutat', label: 'Yakutat' },\n { value: 'America/Yellowknife', label: 'Yellowknife' },\n ],\n },\n {\n label: 'Antarctica',\n options: [\n { value: 'Antarctica/Casey', label: 'Casey' },\n { value: 'Antarctica/Davis', label: 'Davis' },\n { value: 'Antarctica/DumontDUrville', label: 'DumontDUrville' },\n { value: 'Antarctica/Macquarie', label: 'Macquarie' },\n { value: 'Antarctica/Mawson', label: 'Mawson' },\n { value: 'Antarctica/McMurdo', label: 'McMurdo' },\n { value: 'Antarctica/Palmer', label: 'Palmer' },\n { value: 'Antarctica/Rothera', label: 'Rothera' },\n { value: 'Antarctica/Syowa', label: 'Syowa' },\n { value: 'Antarctica/Troll', label: 'Troll' },\n { value: 'Antarctica/Vostok', label: 'Vostok' },\n ],\n },\n {\n label: 'Arctic',\n options: [{ value: 'Arctic/Longyearbyen', label: 'Longyearbyen' }],\n },\n {\n label: 'Asia',\n options: [\n { value: 'Asia/Aden', label: 'Aden' },\n { value: 'Asia/Almaty', label: 'Almaty' },\n { value: 'Asia/Amman', label: 'Amman' },\n { value: 'Asia/Anadyr', label: 'Anadyr' },\n { value: 'Asia/Aqtau', label: 'Aqtau' },\n { value: 'Asia/Aqtobe', label: 'Aqtobe' },\n { value: 'Asia/Ashgabat', label: 'Ashgabat' },\n { value: 'Asia/Atyrau', label: 'Atyrau' },\n { value: 'Asia/Baghdad', label: 'Baghdad' },\n { value: 'Asia/Bahrain', label: 'Bahrain' },\n { value: 'Asia/Baku', label: 'Baku' },\n { value: 'Asia/Bangkok', label: 'Bangkok' },\n { value: 'Asia/Barnaul', label: 'Barnaul' },\n { value: 'Asia/Beirut', label: 'Beirut' },\n { value: 'Asia/Bishkek', label: 'Bishkek' },\n { value: 'Asia/Brunei', label: 'Brunei' },\n { value: 'Asia/Chita', label: 'Chita' },\n { value: 'Asia/Choibalsan', label: 'Choibalsan' },\n { value: 'Asia/Colombo', label: 'Colombo' },\n { value: 'Asia/Damascus', label: 'Damascus' },\n { value: 'Asia/Dhaka', label: 'Dhaka' },\n { value: 'Asia/Dili', label: 'Dili' },\n { value: 'Asia/Dubai', label: 'Dubai' },\n { value: 'Asia/Dushanbe', label: 'Dushanbe' },\n { value: 'Asia/Famagusta', label: 'Famagusta' },\n { value: 'Asia/Gaza', label: 'Gaza' },\n { value: 'Asia/Hebron', label: 'Hebron' },\n { value: 'Asia/Ho_Chi_Minh', label: 'Ho Chi Minh' },\n { value: 'Asia/Hong_Kong', label: 'Hong Kong' },\n { value: 'Asia/Hovd', label: 'Hovd' },\n { value: 'Asia/Irkutsk', label: 'Irkutsk' },\n { value: 'Asia/Jakarta', label: 'Jakarta' },\n { value: 'Asia/Jayapura', label: 'Jayapura' },\n { value: 'Asia/Jerusalem', label: 'Jerusalem' },\n { value: 'Asia/Kabul', label: 'Kabul' },\n { value: 'Asia/Kamchatka', label: 'Kamchatka' },\n { value: 'Asia/Karachi', label: 'Karachi' },\n { value: 'Asia/Kathmandu', label: 'Kathmandu' },\n { value: 'Asia/Khandyga', label: 'Khandyga' },\n { value: 'Asia/Kolkata', label: 'Kolkata' },\n { value: 'Asia/Krasnoyarsk', label: 'Krasnoyarsk' },\n { value: 'Asia/Kuala_Lumpur', label: 'Kuala Lumpur' },\n { value: 'Asia/Kuching', label: 'Kuching' },\n { value: 'Asia/Kuwait', label: 'Kuwait' },\n { value: 'Asia/Macau', label: 'Macau' },\n { value: 'Asia/Magadan', label: 'Magadan' },\n { value: 'Asia/Makassar', label: 'Makassar' },\n { value: 'Asia/Manila', label: 'Manila' },\n { value: 'Asia/Muscat', label: 'Muscat' },\n { value: 'Asia/Nicosia', label: 'Nicosia' },\n { value: 'Asia/Novokuznetsk', label: 'Novokuznetsk' },\n { value: 'Asia/Novosibirsk', label: 'Novosibirsk' },\n { value: 'Asia/Omsk', label: 'Omsk' },\n { value: 'Asia/Oral', label: 'Oral' },\n { value: 'Asia/Phnom_Penh', label: 'Phnom Penh' },\n { value: 'Asia/Pontianak', label: 'Pontianak' },\n { value: 'Asia/Pyongyang', label: 'Pyongyang' },\n { value: 'Asia/Qatar', label: 'Qatar' },\n { value: 'Asia/Qostanay', label: 'Qostanay' },\n { value: 'Asia/Qyzylorda', label: 'Qyzylorda' },\n { value: 'Asia/Riyadh', label: 'Riyadh' },\n { value: 'Asia/Sakhalin', label: 'Sakhalin' },\n { value: 'Asia/Samarkand', label: 'Samarkand' },\n { value: 'Asia/Seoul', label: 'Seoul' },\n { value: 'Asia/Shanghai', label: 'Shanghai' },\n { value: 'Asia/Singapore', label: 'Singapore' },\n { value: 'Asia/Srednekolymsk', label: 'Srednekolymsk' },\n { value: 'Asia/Taipei', label: 'Taipei' },\n { value: 'Asia/Tashkent', label: 'Tashkent' },\n { value: 'Asia/Tbilisi', label: 'Tbilisi' },\n { value: 'Asia/Tehran', label: 'Tehran' },\n { value: 'Asia/Thimphu', label: 'Thimphu' },\n { value: 'Asia/Tokyo', label: 'Tokyo' },\n { value: 'Asia/Tomsk', label: 'Tomsk' },\n { value: 'Asia/Ulaanbaatar', label: 'Ulaanbaatar' },\n { value: 'Asia/Urumqi', label: 'Urumqi' },\n { value: 'Asia/Ust-Nera', label: 'Ust-Nera' },\n { value: 'Asia/Vientiane', label: 'Vientiane' },\n { value: 'Asia/Vladivostok', label: 'Vladivostok' },\n { value: 'Asia/Yakutsk', label: 'Yakutsk' },\n { value: 'Asia/Yangon', label: 'Yangon' },\n { value: 'Asia/Yekaterinburg', label: 'Yekaterinburg' },\n { value: 'Asia/Yerevan', label: 'Yerevan' },\n ],\n },\n {\n label: 'Atlantic',\n options: [\n { value: 'Atlantic/Azores', label: 'Azores' },\n { value: 'Atlantic/Bermuda', label: 'Bermuda' },\n { value: 'Atlantic/Canary', label: 'Canary' },\n { value: 'Atlantic/Cape_Verde', label: 'Cape Verde' },\n { value: 'Atlantic/Faroe', label: 'Faroe' },\n { value: 'Atlantic/Madeira', label: 'Madeira' },\n { value: 'Atlantic/Reykjavik', label: 'Reykjavik' },\n { value: 'Atlantic/South_Georgia', label: 'South Georgia' },\n { value: 'Atlantic/Stanley', label: 'Stanley' },\n { value: 'Atlantic/St_Helena', label: 'St Helena' },\n ],\n },\n {\n label: 'Australia',\n options: [\n { value: 'Australia/Adelaide', label: 'Adelaide' },\n { value: 'Australia/Brisbane', label: 'Brisbane' },\n { value: 'Australia/Broken_Hill', label: 'Broken Hill' },\n { value: 'Australia/Currie', label: 'Currie' },\n { value: 'Australia/Darwin', label: 'Darwin' },\n { value: 'Australia/Eucla', label: 'Eucla' },\n { value: 'Australia/Hobart', label: 'Hobart' },\n { value: 'Australia/Lindeman', label: 'Lindeman' },\n { value: 'Australia/Lord_Howe', label: 'Lord Howe' },\n { value: 'Australia/Melbourne', label: 'Melbourne' },\n { value: 'Australia/Perth', label: 'Perth' },\n { value: 'Australia/Sydney', label: 'Sydney' },\n ],\n },\n {\n label: 'Europe',\n options: [\n { value: 'Europe/Amsterdam', label: 'Amsterdam' },\n { value: 'Europe/Andorra', label: 'Andorra' },\n { value: 'Europe/Astrakhan', label: 'Astrakhan' },\n { value: 'Europe/Athens', label: 'Athens' },\n { value: 'Europe/Belgrade', label: 'Belgrade' },\n { value: 'Europe/Berlin', label: 'Berlin' },\n { value: 'Europe/Bratislava', label: 'Bratislava' },\n { value: 'Europe/Brussels', label: 'Brussels' },\n { value: 'Europe/Bucharest', label: 'Bucharest' },\n { value: 'Europe/Budapest', label: 'Budapest' },\n { value: 'Europe/Busingen', label: 'Busingen' },\n { value: 'Europe/Chisinau', label: 'Chisinau' },\n { value: 'Europe/Copenhagen', label: 'Copenhagen' },\n { value: 'Europe/Dublin', label: 'Dublin' },\n { value: 'Europe/Gibraltar', label: 'Gibraltar' },\n { value: 'Europe/Guernsey', label: 'Guernsey' },\n { value: 'Europe/Helsinki', label: 'Helsinki' },\n { value: 'Europe/Isle_of_Man', label: 'Isle of Man' },\n { value: 'Europe/Istanbul', label: 'Istanbul' },\n { value: 'Europe/Jersey', label: 'Jersey' },\n { value: 'Europe/Kaliningrad', label: 'Kaliningrad' },\n { value: 'Europe/Kiev', label: 'Kiev' },\n { value: 'Europe/Kirov', label: 'Kirov' },\n { value: 'Europe/Lisbon', label: 'Lisbon' },\n { value: 'Europe/Ljubljana', label: 'Ljubljana' },\n { value: 'Europe/London', label: 'London' },\n { value: 'Europe/Luxembourg', label: 'Luxembourg' },\n { value: 'Europe/Madrid', label: 'Madrid' },\n { value: 'Europe/Malta', label: 'Malta' },\n { value: 'Europe/Mariehamn', label: 'Mariehamn' },\n { value: 'Europe/Minsk', label: 'Minsk' },\n { value: 'Europe/Monaco', label: 'Monaco' },\n { value: 'Europe/Moscow', label: 'Moscow' },\n { value: 'Europe/Oslo', label: 'Oslo' },\n { value: 'Europe/Paris', label: 'Paris' },\n { value: 'Europe/Podgorica', label: 'Podgorica' },\n { value: 'Europe/Prague', label: 'Prague' },\n { value: 'Europe/Riga', label: 'Riga' },\n { value: 'Europe/Rome', label: 'Rome' },\n { value: 'Europe/Samara', label: 'Samara' },\n { value: 'Europe/San_Marino', label: 'San Marino' },\n { value: 'Europe/Sarajevo', label: 'Sarajevo' },\n { value: 'Europe/Saratov', label: 'Saratov' },\n { value: 'Europe/Simferopol', label: 'Simferopol' },\n { value: 'Europe/Skopje', label: 'Skopje' },\n { value: 'Europe/Sofia', label: 'Sofia' },\n { value: 'Europe/Stockholm', label: 'Stockholm' },\n { value: 'Europe/Tallinn', label: 'Tallinn' },\n { value: 'Europe/Tirane', label: 'Tirane' },\n { value: 'Europe/Ulyanovsk', label: 'Ulyanovsk' },\n { value: 'Europe/Uzhgorod', label: 'Uzhgorod' },\n { value: 'Europe/Vaduz', label: 'Vaduz' },\n { value: 'Europe/Vatican', label: 'Vatican' },\n { value: 'Europe/Vienna', label: 'Vienna' },\n { value: 'Europe/Vilnius', label: 'Vilnius' },\n { value: 'Europe/Volgograd', label: 'Volgograd' },\n { value: 'Europe/Warsaw', label: 'Warsaw' },\n { value: 'Europe/Zagreb', label: 'Zagreb' },\n { value: 'Europe/Zaporozhye', label: 'Zaporozhye' },\n { value: 'Europe/Zurich', label: 'Zurich' },\n ],\n },\n {\n label: 'Indian',\n options: [\n { value: 'Indian/Antananarivo', label: 'Antananarivo' },\n { value: 'Indian/Chagos', label: 'Chagos' },\n { value: 'Indian/Christmas', label: 'Christmas' },\n { value: 'Indian/Cocos', label: 'Cocos' },\n { value: 'Indian/Comoro', label: 'Comoro' },\n { value: 'Indian/Kerguelen', label: 'Kerguelen' },\n { value: 'Indian/Mahe', label: 'Mahe' },\n { value: 'Indian/Maldives', label: 'Maldives' },\n { value: 'Indian/Mauritius', label: 'Mauritius' },\n { value: 'Indian/Mayotte', label: 'Mayotte' },\n { value: 'Indian/Reunion', label: 'Reunion' },\n ],\n },\n {\n label: 'Pacific',\n options: [\n { value: 'Pacific/Apia', label: 'Apia' },\n { value: 'Pacific/Auckland', label: 'Auckland' },\n { value: 'Pacific/Bougainville', label: 'Bougainville' },\n { value: 'Pacific/Chatham', label: 'Chatham' },\n { value: 'Pacific/Chuuk', label: 'Chuuk' },\n { value: 'Pacific/Easter', label: 'Easter' },\n { value: 'Pacific/Efate', label: 'Efate' },\n { value: 'Pacific/Enderbury', label: 'Enderbury' },\n { value: 'Pacific/Fakaofo', label: 'Fakaofo' },\n { value: 'Pacific/Fiji', label: 'Fiji' },\n { value: 'Pacific/Funafuti', label: 'Funafuti' },\n\n { value: 'Pacific/Galapagos', label: 'Galapagos' },\n { value: 'Pacific/Gambier', label: 'Gambier' },\n { value: 'Pacific/Guadalcanal', label: 'Guadalcanal' },\n { value: 'Pacific/Guam', label: 'Guam' },\n { value: 'Pacific/Honolulu', label: 'Honolulu' },\n { value: 'Pacific/Kiritimati', label: 'Kiritimati' },\n { value: 'Pacific/Kosrae', label: 'Kosrae' },\n { value: 'Pacific/Kwajalein', label: 'Kwajalein' },\n { value: 'Pacific/Majuro', label: 'Majuro' },\n { value: 'Pacific/Marquesas', label: 'Marquesas' },\n { value: 'Pacific/Midway', label: 'Midway' },\n { value: 'Pacific/Nauru', label: 'Nauru' },\n { value: 'Pacific/Niue', label: 'Niue' },\n { value: 'Pacific/Norfolk', label: 'Norfolk' },\n { value: 'Pacific/Noumea', label: 'Noumea' },\n { value: 'Pacific/Pago_Pago', label: 'Pago Pago' },\n { value: 'Pacific/Palau', label: 'Palau' },\n { value: 'Pacific/Pitcairn', label: 'Pitcairn' },\n { value: 'Pacific/Pohnpei', label: 'Pohnpei' },\n { value: 'Pacific/Port_Moresby', label: 'Port Moresby' },\n { value: 'Pacific/Rarotonga', label: 'Rarotonga' },\n { value: 'Pacific/Saipan', label: 'Saipan' },\n { value: 'Pacific/Tahiti', label: 'Tahiti' },\n { value: 'Pacific/Tarawa', label: 'Tarawa' },\n { value: 'Pacific/Tongatapu', label: 'Tongatapu' },\n { value: 'Pacific/Wake', label: 'Wake' },\n { value: 'Pacific/Wallis', label: 'Wallis' },\n ],\n },\n\n {\n label: 'UTC',\n options: [{ value: 'UTC', label: 'UTC' }],\n },\n];\nexport const DEFAULT_TIMEZONE = 'UTC';\n\nexport const TIMELINE_NORMAL_ACTIVITY_TYPE = [\n 'undeleted',\n 'deleted',\n 'downvote',\n 'upvote',\n 'reopened',\n 'closed',\n 'pin',\n 'unpin',\n 'show',\n 'hide',\n];\n\nexport const SYSTEM_AVATAR_OPTIONS = [\n {\n label: 'System',\n value: 'system',\n },\n {\n label: 'Gravatar',\n value: 'gravatar',\n },\n];\n\nexport const TAG_SLUG_NAME_MAX_LENGTH = 35;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nconst pattern = {\n email:\n /^(([^<>()[\\]\\\\.,;:\\s@\"]+(\\.[^<>()[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]+\\.)+[a-zA-Z\\u00A0-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFEF]{2,}))$/,\n search:\n /(\\[.*\\])|(is:answer)|(is:question)|(score:\\d*)|(user:\\S*)|(answers:\\d*)/g,\n uaWeChat: /micromessenger/i,\n uaWeCom: /wxwork/i,\n uaDingTalk: /dingtalk/i,\n};\n\nexport default pattern;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useLayoutEffect, useState } from 'react';\nimport { Modal, Form, Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ReactDOM from 'react-dom/client';\n\nimport { TAG_SLUG_NAME_MAX_LENGTH } from '@/common/constants';\n\nconst div = document.createElement('div');\nconst root = ReactDOM.createRoot(div);\n\ninterface IProps {\n title?: string;\n onConfirm?: (formData: any) => void;\n}\nconst useTagModal = (props: IProps = {}) => {\n const { t } = useTranslation('translation', { keyPrefix: 'tag_modal' });\n\n const { title = t('title'), onConfirm } = props;\n const [visible, setVisibleState] = useState(false);\n const [formData, setFormData] = useState({\n displayName: {\n value: '',\n isInvalid: false,\n errorMsg: '',\n },\n slugName: {\n value: '',\n isInvalid: false,\n errorMsg: '',\n },\n description: {\n value: '',\n isInvalid: false,\n errorMsg: '',\n },\n });\n\n const onClose = () => {\n setVisibleState(false);\n };\n\n const onShow = (searchStr = '') => {\n setVisibleState(true);\n setFormData({\n ...formData,\n displayName: {\n value: searchStr,\n isInvalid: false,\n errorMsg: '',\n },\n slugName: {\n value: searchStr,\n isInvalid: false,\n errorMsg: '',\n },\n });\n };\n\n const checkValidated = (): boolean => {\n let bol = true;\n const { displayName, slugName } = formData;\n if (!displayName.value) {\n bol = false;\n formData.displayName = {\n value: '',\n isInvalid: true,\n errorMsg: t('form.fields.display_name.msg.empty'),\n };\n } else if (displayName.value.length > TAG_SLUG_NAME_MAX_LENGTH) {\n bol = false;\n formData.displayName = {\n value: displayName.value,\n isInvalid: true,\n errorMsg: t('form.fields.display_name.msg.range'),\n };\n } else {\n formData.displayName = {\n value: displayName.value,\n isInvalid: false,\n errorMsg: '',\n };\n }\n\n if (!slugName.value) {\n bol = false;\n formData.slugName = {\n value: '',\n isInvalid: true,\n errorMsg: t('form.fields.slug_name.msg.empty'),\n };\n } else if (slugName.value.length > TAG_SLUG_NAME_MAX_LENGTH) {\n bol = false;\n formData.slugName = {\n value: slugName.value,\n isInvalid: true,\n errorMsg: t('form.fields.slug_name.msg.range'),\n };\n // } else if (/[^a-z0-9+#\\-.]/.test(slugName.value)) {\n // bol = false;\n // formData.slugName = {\n // value: slugName.value,\n // isInvalid: true,\n // errorMsg: t('form.fields.slug_name.msg.character'),\n // };\n } else {\n formData.slugName = {\n value: slugName.value,\n isInvalid: false,\n errorMsg: '',\n };\n }\n\n setFormData({\n ...formData,\n });\n return bol;\n };\n\n const handleSubmit = (event: React.MouseEvent) => {\n event.preventDefault();\n event.stopPropagation();\n\n if (!checkValidated()) {\n return;\n }\n\n if (onConfirm instanceof Function) {\n onConfirm({\n slug_name: formData.slugName.value,\n display_name: formData.displayName.value,\n original_text: formData.description.value,\n });\n setFormData({\n displayName: {\n value: '',\n isInvalid: false,\n errorMsg: '',\n },\n slugName: {\n value: '',\n isInvalid: false,\n errorMsg: '',\n },\n description: {\n value: '',\n isInvalid: false,\n errorMsg: '',\n },\n });\n }\n onClose();\n };\n\n const handleDisplayNameChange = (\n event: React.ChangeEvent,\n ) => {\n const { value } = event.target;\n setFormData({\n ...formData,\n displayName: {\n value,\n isInvalid: false,\n errorMsg: '',\n },\n });\n };\n\n const handleSlugNameChange = (event: React.ChangeEvent) => {\n const { value } = event.target;\n setFormData({\n ...formData,\n slugName: {\n value,\n isInvalid: false,\n errorMsg: '',\n },\n });\n };\n\n const handleDescriptionChange = (\n event: React.ChangeEvent,\n ) => {\n const { value } = event.target;\n setFormData({\n ...formData,\n description: {\n value,\n isInvalid: false,\n errorMsg: '',\n },\n });\n };\n useLayoutEffect(() => {\n root.render(\n \n \n {title}\n \n \n
\n \n {t('form.fields.display_name.label')}\n \n \n {formData.displayName.errorMsg}\n \n \n \n {t('form.fields.slug_name.label')}\n \n\n \n {t('form.fields.slug_name.msg.range')}\n \n \n {formData.slugName.errorMsg}\n \n \n \n {`${t('form.fields.desc.label')} ${t('optional', {\n keyPrefix: 'form',\n })}`}\n \n \n
\n
\n \n \n \n \n
,\n );\n });\n return {\n onClose,\n onShow,\n };\n};\n\nexport default useTagModal;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useLayoutEffect, useState } from 'react';\nimport { Toast } from 'react-bootstrap';\n\nimport ReactDOM from 'react-dom/client';\n\nconst toastPortal = document.createElement('div');\ntoastPortal.style.position = 'fixed';\ntoastPortal.style.top = '90px';\ntoastPortal.style.left = '50%';\ntoastPortal.style.transform = 'translate(-50%, 0)';\ntoastPortal.style.maxWidth = '100%';\ntoastPortal.style.zIndex = '1001';\n\nconst setPortalPosition = () => {\n const header = document.querySelector('#header');\n if (header) {\n toastPortal.style.top = `${header.getBoundingClientRect().top + 90}px`;\n }\n};\nconst startHandlePortalPosition = () => {\n setPortalPosition();\n window.addEventListener('scroll', setPortalPosition);\n};\n\nconst stopHandlePortalPosition = () => {\n setPortalPosition();\n window.removeEventListener('scroll', setPortalPosition);\n};\n\nconst root = ReactDOM.createRoot(toastPortal);\n\ninterface Params {\n /** main content */\n msg: string;\n /** theme color */\n variant?: 'warning' | 'success' | 'danger';\n}\n\nconst useToast = () => {\n const [show, setShow] = useState(false);\n const [data, setData] = useState({\n msg: '',\n variant: 'warning',\n });\n\n const onClose = () => {\n const parent = document.querySelector('.page-wrap');\n if (parent?.contains(toastPortal)) {\n parent.removeChild(toastPortal);\n }\n stopHandlePortalPosition();\n setShow(false);\n };\n\n const onShow = (t: Params) => {\n setData(t);\n startHandlePortalPosition();\n setShow(true);\n };\n useLayoutEffect(() => {\n const parent = document.querySelector('.page-wrap');\n parent?.appendChild(toastPortal);\n\n root.render(\n
\n \n
\n \n \n
\n \n
,\n );\n }, [show, data]);\n\n return {\n onShow,\n };\n};\n\nexport default useToast;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useState, useRef, useEffect, useLayoutEffect } from 'react';\nimport { Modal, Form, Button, FormCheck } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ReactDOM from 'react-dom/client';\n\nimport { useToast } from '@/hooks';\nimport { useCaptchaPlugin } from '@/utils/pluginKit';\nimport type * as Type from '@/common/interface';\nimport {\n reportList,\n postReport,\n closeQuestion,\n putReport,\n putFlagReviewAction,\n} from '@/services';\n\ninterface Params {\n isBackend?: boolean;\n type: Type.ReportType;\n id: string;\n title?: string;\n action: Type.ReportAction;\n source?: string;\n content?: string;\n reportType?: any;\n}\n\nconst useReportModal = (callback?: () => void) => {\n const { t } = useTranslation('translation', { keyPrefix: 'report_modal' });\n const toast = useToast();\n const [params, setParams] = useState(null);\n const [isInvalid, setInvalidState] = useState(false);\n const [reportType, setReportType] = useState({\n type: -1,\n haveContent: false,\n });\n const rootRef = useRef<{ root: ReactDOM.Root | null }>({\n root: null,\n });\n\n const [content, setContent] = useState({\n value: '',\n isInvalid: false,\n errorMsg: '',\n });\n const [show, setShow] = useState(false);\n const [list, setList] = useState([]);\n\n const rCaptcha = useCaptchaPlugin('report');\n\n useEffect(() => {\n const div = document.createElement('div');\n rootRef.current.root = ReactDOM.createRoot(div);\n }, []);\n const getList = ({ type, action, isBackend, ...otherParams }: Params) => {\n // @ts-ignore\n reportList({\n type,\n action,\n isBackend,\n }).then((res) => {\n setList(res);\n if (otherParams.reportType) {\n const findType = res.find(\n (v) => v.reason_type === otherParams.reportType,\n );\n if (findType) {\n setReportType({\n type: findType.reason_type,\n haveContent: Boolean(findType.content_type),\n });\n\n setContent({\n value: otherParams.content || '',\n isInvalid: false,\n errorMsg: '',\n });\n }\n }\n setShow(true);\n });\n };\n const asyncCallback = () => {\n setTimeout(() => {\n callback?.();\n });\n };\n const handleRadio = (val) => {\n setInvalidState(false);\n setContent({\n value:\n val.reason_type === params?.reportType ? String(params?.content) : '',\n isInvalid: false,\n errorMsg: '',\n });\n setReportType({\n type: val.reason_type,\n haveContent: Boolean(val.content_type),\n });\n };\n\n const onClose = () => {\n setReportType({\n type: -1,\n haveContent: false,\n });\n setContent({\n value: '',\n isInvalid: false,\n errorMsg: '',\n });\n setShow(false);\n };\n\n const checkValidate = () => {\n if (reportType.haveContent && !content.value) {\n setContent({\n value: content.value,\n isInvalid: true,\n errorMsg: t('remark.empty'),\n });\n return false;\n }\n\n if (reportType.type === 60) {\n // a duplicate\n let url: URL | undefined;\n try {\n url = new URL(content.value);\n } catch {\n setContent({\n value: content.value,\n isInvalid: true,\n errorMsg: t('msg.not_a_url'),\n });\n }\n if (!url) return false;\n\n if (url.origin !== window.location.origin) {\n setContent({\n value: content.value,\n isInvalid: true,\n errorMsg: t('msg.url_not_match'),\n });\n return false;\n }\n }\n\n return true;\n };\n\n const submitReport = (data) => {\n const flagReq = {\n source: data.type,\n report_type: reportType.type,\n object_id: data.id,\n content: content.value,\n captcha_code: undefined,\n captcha_id: undefined,\n };\n rCaptcha?.resolveCaptchaReq(flagReq);\n\n postReport(flagReq)\n .then(async () => {\n await rCaptcha?.close();\n toast.onShow({\n msg: t('flag_success', { keyPrefix: 'toast' }),\n variant: 'warning',\n });\n onClose();\n asyncCallback();\n })\n .catch((ex) => {\n if (ex.isError) {\n rCaptcha?.handleCaptchaError(ex.list);\n }\n });\n };\n\n const handleSubmit = () => {\n if (!params) {\n return;\n }\n if (reportType.type === -1) {\n setInvalidState(true);\n return;\n }\n\n if (!checkValidate()) {\n return;\n }\n\n if (params.type === 'question' && params.action === 'close') {\n if (params?.source === 'review') {\n putFlagReviewAction({\n flag_id: params.id,\n operation_type: 'close_post',\n close_type: reportType.type,\n close_msg: content.value,\n }).then(() => {\n onClose();\n asyncCallback();\n });\n return;\n }\n closeQuestion({\n id: params.id,\n close_type: reportType.type,\n close_msg: content.value,\n }).then(() => {\n onClose();\n asyncCallback();\n });\n return;\n }\n if (!params.isBackend && params.action === 'flag') {\n if (!rCaptcha) {\n submitReport(params);\n return;\n }\n rCaptcha.check(() => {\n submitReport(params);\n });\n }\n\n if (params.isBackend && params.action === 'review') {\n putReport({\n action: params.type,\n flagged_content: content.value,\n flagged_type: reportType.type,\n id: params.id,\n }).then(() => {\n onClose();\n asyncCallback();\n });\n }\n };\n\n const onShow = (obj: Params) => {\n setParams(obj);\n getList(obj);\n };\n let title = '';\n if (typeof params === 'object' && params) {\n title = params.title || t(`${params.action}_title`);\n if (params.action === 'review') {\n title = t(`${params.action}_${params.type}_title`);\n }\n }\n useLayoutEffect(() => {\n rootRef.current.root?.render(\n \n \n {title}\n \n \n
\n {list.map((item) => {\n return (\n
\n \n \n handleRadio(item)}\n isInvalid={isInvalid}\n />\n \n {item?.name}\n
\n \n {item?.description}\n \n
\n \n {t('msg.empty')}\n \n
\n \n {reportType.haveContent &&\n reportType.type === item.reason_type && (\n \n \n setContent({\n value: e.target.value,\n isInvalid: false,\n errorMsg: '',\n })\n }\n />\n \n {content.errorMsg}\n \n \n )}\n
\n );\n })}\n
\n
\n \n \n \n \n
,\n );\n });\n return {\n onClose,\n onShow,\n };\n};\n\nexport default useReportModal;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useState } from 'react';\n\nimport uniqBy from 'lodash/uniqBy';\n\nimport * as Types from '@/common/interface';\n\nlet globalUsers: Types.PageUser[] = [];\nconst usePageUsers = () => {\n const [users, setUsers] = useState(globalUsers);\n const getUsers = () => {\n return users;\n };\n return {\n getUsers,\n setUsers: (data: Types.PageUser | Types.PageUser[]) => {\n if (data instanceof Array) {\n if (data.length === 0) {\n return;\n }\n setUsers(uniqBy([...users, ...data], 'userName'));\n globalUsers = uniqBy([...globalUsers, ...data], 'userName');\n } else {\n setUsers(uniqBy([...users, data], 'userName'));\n globalUsers = uniqBy([...globalUsers, data], 'userName');\n }\n },\n };\n};\n\nexport default usePageUsers;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useLayoutEffect, useState } from 'react';\nimport { Modal, Form, Button, FormCheck } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ReactDOM from 'react-dom/client';\n\nimport { getUserRoles, changeUserRole } from '@/services';\nimport { UserRoleItem } from '@/common/interface';\n\nconst div = document.createElement('div');\nconst root = ReactDOM.createRoot(div);\n\ninterface Props {\n callback?: () => void;\n}\n\nconst useChangeUserRoleModal = ({ callback }: Props) => {\n const { t } = useTranslation('translation', {\n keyPrefix: 'admin.user_role_modal',\n });\n const [id, setId] = useState('');\n const [defaultId, setDefaultId] = useState(-1);\n const [isInvalid, setInvalidState] = useState(false);\n const [changedId, setChangeId] = useState(-1);\n const [show, setShow] = useState(false);\n const [list, setList] = useState([]);\n\n const getRolesData = async () => {\n const res = await getUserRoles();\n setList(res);\n };\n\n const handleRadio = (val) => {\n setInvalidState(false);\n setChangeId(val.id);\n };\n\n const onClose = () => {\n setChangeId(-1);\n setDefaultId(-1);\n setShow(false);\n };\n\n const handleSubmit = () => {\n if (defaultId === changedId) {\n onClose();\n\n return;\n }\n\n changeUserRole({\n user_id: id,\n role_id: changedId,\n }).then(() => {\n callback?.();\n onClose();\n });\n };\n\n const onShow = (params) => {\n getRolesData();\n setId(params.id);\n setChangeId(params.role_id);\n setDefaultId(params.role_id);\n setShow(true);\n };\n useLayoutEffect(() => {\n root.render(\n \n \n {t('title')}\n \n \n
\n {list.map((item) => {\n return (\n
\n \n \n handleRadio(item)}\n isInvalid={isInvalid}\n />\n \n {item.name}\n
\n \n {item.description}\n \n
\n \n {t('msg.empty')}\n \n
\n
\n
\n );\n })}\n
\n
\n \n \n \n \n
,\n );\n });\n\n return {\n onClose,\n onShow,\n };\n};\n\nexport default useChangeUserRoleModal;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useLayoutEffect, useState, useRef } from 'react';\nimport { Modal, Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ReactDOM from 'react-dom/client';\n\nimport type * as Type from '@/common/interface';\nimport { SchemaForm, JSONSchema, UISchema, initFormData } from '@/components';\nimport { handleFormError } from '@/utils';\n\nconst div = document.createElement('div');\nconst root = ReactDOM.createRoot(div);\n\ninterface IProps {\n title?: string;\n onConfirm?: (formData: any) => Promise;\n}\nconst useAddUserModal = (props: IProps = {}) => {\n const { t } = useTranslation('translation', {\n keyPrefix: 'admin.user_modal',\n });\n\n const { title = t('title'), onConfirm } = props;\n const [visible, setVisibleState] = useState(false);\n const schema: JSONSchema = {\n title: t('title'),\n required: ['users'],\n properties: {\n users: {\n type: 'string',\n title: t('form.fields.users.label'),\n description: t('form.fields.users.text'),\n },\n },\n };\n const uiSchema: UISchema = {\n users: {\n 'ui:widget': 'textarea',\n 'ui:options': {\n rows: 7,\n placeholder: t('form.fields.users.placeholder'),\n className: 'small',\n },\n },\n };\n const [formData, setFormData] = useState(\n initFormData(schema),\n );\n\n const formRef = useRef<{\n validator: () => Promise;\n }>(null);\n\n const onClose = () => {\n setVisibleState(false);\n };\n\n const onShow = () => {\n setVisibleState(true);\n };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n event.stopPropagation();\n const isValid = await formRef.current?.validator();\n\n if (!isValid) {\n return;\n }\n\n if (onConfirm instanceof Function) {\n onConfirm({\n users: formData.users.value,\n })\n .then(() => {\n setFormData({\n users: {\n value: '',\n isInvalid: false,\n errorMsg: '',\n },\n });\n onClose();\n })\n .catch((err) => {\n if (err.isError) {\n const data = handleFormError(err, formData);\n setFormData({ ...data });\n }\n });\n }\n };\n\n const handleOnChange = (data) => {\n setFormData(data);\n };\n\n useLayoutEffect(() => {\n root.render(\n \n \n {title}\n \n \n \n \n \n \n \n \n ,\n );\n });\n return {\n onClose,\n onShow,\n };\n};\n\nexport default useAddUserModal;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useLayoutEffect, useState, useRef } from 'react';\nimport { Modal, Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ReactDOM from 'react-dom/client';\n\nimport type * as Type from '@/common/interface';\nimport { SchemaForm, JSONSchema, UISchema, initFormData } from '@/components';\nimport { handleFormError } from '@/utils';\n\nconst div = document.createElement('div');\nconst root = ReactDOM.createRoot(div);\n\ninterface IProps {\n title?: string;\n onConfirm?: (formData: any) => Promise;\n}\nconst useChangePasswordModal = (props: IProps = {}) => {\n const { t } = useTranslation('translation', {\n keyPrefix: 'admin.new_password_modal',\n });\n\n const { title = t('title'), onConfirm } = props;\n const [visible, setVisibleState] = useState(false);\n const [userId, setUserId] = useState('');\n const schema: JSONSchema = {\n title: t('title'),\n required: ['password'],\n properties: {\n password: {\n type: 'string',\n title: t('form.fields.password.label'),\n description: t('form.fields.password.text'),\n },\n },\n };\n const uiSchema: UISchema = {\n password: {\n 'ui:options': {\n inputType: 'password',\n validator: (value) => {\n const MIN_LENGTH = 8;\n const MAX_LENGTH = 32;\n if (value.length < MIN_LENGTH || value.length > MAX_LENGTH) {\n return t('form.fields.password.msg');\n }\n return true;\n },\n },\n },\n };\n const [formData, setFormData] = useState(\n initFormData(schema),\n );\n\n const formRef = useRef<{\n validator: () => Promise;\n }>(null);\n\n const onClose = () => {\n setVisibleState(false);\n };\n\n const onShow = (user_id: string) => {\n setUserId(user_id);\n setVisibleState(true);\n };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n event.stopPropagation();\n const isValid = await formRef.current?.validator();\n\n if (!isValid) {\n return;\n }\n\n if (onConfirm instanceof Function) {\n onConfirm({\n password: formData.password.value,\n user_id: userId,\n })\n .then(() => {\n setFormData({\n password: {\n value: '',\n isInvalid: false,\n errorMsg: '',\n },\n });\n setUserId('');\n onClose();\n })\n .catch((err) => {\n if (err.isError) {\n const data = handleFormError(err, formData);\n setFormData({ ...data });\n }\n });\n }\n };\n\n const handleOnChange = (data) => {\n setFormData(data);\n };\n\n useLayoutEffect(() => {\n root.render(\n \n \n {title}\n \n \n \n \n \n \n \n \n ,\n );\n });\n return {\n onClose,\n onShow,\n };\n};\n\nexport default useChangePasswordModal;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useLayoutEffect, useState, useRef } from 'react';\nimport { Modal, Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ReactDOM from 'react-dom/client';\n\nimport type * as Type from '@/common/interface';\nimport { SchemaForm, JSONSchema, UISchema, initFormData } from '@/components';\nimport { handleFormError } from '@/utils';\nimport pattern from '@/common/pattern';\n\nconst div = document.createElement('div');\nconst root = ReactDOM.createRoot(div);\n\ninterface IProps {\n title?: string;\n onConfirm?: (formData: any) => Promise;\n}\nconst useChangeProfileModal = (props: IProps = {}, userData) => {\n const { t } = useTranslation('translation', {\n keyPrefix: 'admin.edit_profile_modal',\n });\n\n const { title = t('title'), onConfirm } = props;\n const [visible, setVisibleState] = useState(false);\n const [userId, setUserId] = useState('');\n const schema: JSONSchema = {\n title: t('title'),\n required: ['display_name', 'username', 'email'],\n properties: {\n display_name: {\n type: 'string',\n title: t('form.fields.display_name.label'),\n default: userData.display_name,\n },\n username: {\n type: 'string',\n title: t('form.fields.username.label'),\n default: userData.username,\n },\n email: {\n type: 'string',\n title: t('form.fields.email.label'),\n default: userData.e_mail,\n },\n },\n };\n const uiSchema: UISchema = {\n display_name: {\n 'ui:options': {\n inputType: 'text',\n validator: (value) => {\n const MIN_LENGTH = 3;\n const MAX_LENGTH = 30;\n if (value.length < MIN_LENGTH || value.length > MAX_LENGTH) {\n return t('form.fields.display_name.msg_range');\n }\n return true;\n },\n },\n },\n username: {\n 'ui:options': {\n inputType: 'text',\n validator: (value) => {\n const MIN_LENGTH = 3;\n const MAX_LENGTH = 30;\n if (value.length < MIN_LENGTH || value.length > MAX_LENGTH) {\n return t('form.fields.username.msg_range');\n }\n return true;\n },\n },\n },\n email: {\n 'ui:options': {\n inputType: 'email',\n validator: (value) => {\n if (value && !pattern.email.test(value)) {\n return t('form.fields.email.msg_invalid');\n }\n return true;\n },\n },\n },\n };\n const [formData, setFormData] = useState(\n initFormData(schema),\n );\n\n const formRef = useRef<{\n validator: () => Promise;\n }>(null);\n\n const onClose = () => {\n setFormData(formData);\n setVisibleState(false);\n };\n\n const onShow = (user_id: string) => {\n setUserId(user_id);\n setVisibleState(true);\n };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n event.stopPropagation();\n const isValid = await formRef.current?.validator();\n\n if (!isValid) {\n return;\n }\n\n if (onConfirm instanceof Function) {\n onConfirm({\n display_name: formData.display_name.value,\n username: formData.username.value,\n email: formData.email.value,\n user_id: userId,\n })\n .then(() => {\n setUserId('');\n onClose();\n })\n .catch((err) => {\n if (err.isError) {\n const data = handleFormError(err, formData);\n setFormData({ ...data });\n }\n });\n }\n };\n\n const handleOnChange = (data) => {\n setFormData(data);\n };\n\n useLayoutEffect(() => {\n root.render(\n \n \n {title}\n \n \n \n \n \n \n \n \n ,\n );\n });\n return {\n onClose,\n onShow,\n };\n};\n\nexport default useChangeProfileModal;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useEffect } from 'react';\n\nimport { HelmetUpdate } from '@/common/interface';\nimport { pageTagStore } from '@/stores';\n\nexport default function usePageTags(info: HelmetUpdate) {\n const { update } = pageTagStore.getState();\n useEffect(() => {\n update(info);\n }, [info.title, info.subtitle, info.description, info.keywords]);\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useCallback } from 'react';\nimport {\n useBeforeUnload,\n unstable_usePrompt as usePrompt,\n} from 'react-router-dom';\nimport { useTranslation } from 'react-i18next';\n\n// https://gist.github.com/chaance/2f3c14ec2351a175024f62fd6ba64aa6\n// The link above is an example of implementing usePrompt with useBlocker.\ninterface PromptProps {\n when: boolean;\n beforeUnload?: boolean;\n}\n\nconst usePromptWithUnload = ({\n when = false,\n beforeUnload = true,\n}: PromptProps) => {\n const { t } = useTranslation('translation', { keyPrefix: 'prompt' });\n\n usePrompt({\n when,\n message: `${t('leave_page')} ${t('changes_not_save')}`,\n });\n\n useBeforeUnload(\n useCallback(\n (event) => {\n if (beforeUnload && when) {\n const msg = t('changes_not_save');\n event.preventDefault();\n event.returnValue = msg;\n }\n },\n [when, beforeUnload],\n ),\n { capture: true },\n );\n};\n\nexport default usePromptWithUnload;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useLayoutEffect, useState, useRef } from 'react';\nimport { Modal, Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ReactDOM from 'react-dom/client';\n\nimport type * as Type from '@/common/interface';\nimport { SchemaForm, JSONSchema, UISchema, initFormData } from '@/components';\nimport { handleFormError } from '@/utils';\nimport { getUserActivation, postUserActivation } from '@/services';\nimport { useToast } from '@/hooks';\n\nconst div = document.createElement('div');\nconst root = ReactDOM.createRoot(div);\n\ninterface IProps {\n title?: string;\n onConfirm?: (formData: any) => Promise;\n}\nconst useChangePasswordModal = (props: IProps = {}) => {\n const { t } = useTranslation('translation', {\n keyPrefix: 'inactive',\n });\n\n const { title = t('btn_name') } = props;\n const [visible, setVisibleState] = useState(false);\n const userId = useRef('');\n const isLoading = useRef(false);\n const Toast = useToast();\n\n const schema: JSONSchema = {\n title: t('btn_name'),\n properties: {\n activationUrl: {\n type: 'string',\n title: t('resend_email.url_label'),\n description: t('resend_email.url_text'),\n },\n },\n };\n const uiSchema: UISchema = {\n activationUrl: {\n 'ui:options': {\n readOnly: true,\n },\n },\n };\n const [formData, setFormData] = useState(\n initFormData(schema),\n );\n\n const formRef = useRef<{\n validator: () => Promise;\n }>(null);\n\n const getActivationUrl = () => {\n return getUserActivation(userId.current).then((resp) => {\n if (resp?.activation_url) {\n setFormData({\n ...formData,\n activationUrl: {\n value: resp.activation_url,\n isInvalid: false,\n errorMsg: '',\n },\n });\n }\n });\n };\n\n const onClose = () => {\n setVisibleState(false);\n userId.current = '';\n setFormData(initFormData(schema));\n };\n\n const onShow = async (user_id: string) => {\n if (!user_id) {\n return;\n }\n userId.current = user_id;\n await getActivationUrl();\n setVisibleState(true);\n };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n event.stopPropagation();\n isLoading.current = true;\n postUserActivation(userId.current)\n .then(() => {\n Toast.onShow({\n msg: t('sent_success', { keyPrefix: 'toast' }),\n variant: 'success',\n });\n onClose();\n })\n .catch((err) => {\n if (err.isError) {\n const data = handleFormError(err, formData);\n setFormData({ ...data });\n }\n })\n .finally(() => {\n isLoading.current = false;\n });\n };\n\n const handleOnChange = (data) => {\n setFormData(data);\n };\n\n useLayoutEffect(() => {\n root.render(\n \n \n {title}\n \n \n \n \n \n \n \n {t('resend', { keyPrefix: 'btns' })}\n \n \n ,\n );\n });\n return {\n onClose,\n onShow,\n };\n};\n\nexport default useChangePasswordModal;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useEffect, useRef, useState, useLayoutEffect } from 'react';\nimport { Modal, Form, Button, InputGroup } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ReactDOM from 'react-dom/client';\n\nimport { Icon } from '@/components';\nimport type {\n FormValue,\n ImgCodeRes,\n CaptchaKey,\n FieldError,\n ImgCodeReq,\n} from '@/common/interface';\nimport { checkImgCode } from '@/services';\n\ntype SubmitCallback = {\n (): void;\n};\n\nconst Index = (captchaKey: CaptchaKey) => {\n const refRoot = useRef(null);\n if (refRoot.current === null) {\n // @ts-ignore\n refRoot.current = ReactDOM.createRoot(document.createElement('div'));\n }\n\n const { t } = useTranslation('translation', { keyPrefix: 'pic_auth_code' });\n const refKey = useRef(captchaKey);\n const refCallback = useRef();\n const pending = useRef(false);\n const autoInitCaptchaData = /email/i.test(refKey.current);\n\n const [stateShow, setStateShow] = useState(false);\n const [captcha, setCaptcha] = useState({\n captcha_id: '',\n captcha_img: '',\n verify: false,\n });\n const [imgCode, setImgCode] = useState({\n value: '',\n isInvalid: false,\n errorMsg: '',\n });\n const refCaptcha = useRef(captcha);\n const refImgCode = useRef(imgCode);\n\n const fetchCaptchaData = () => {\n pending.current = true;\n checkImgCode(refKey.current)\n .then((resp) => {\n setCaptcha(resp);\n })\n .finally(() => {\n pending.current = false;\n });\n };\n\n const resetCapture = () => {\n setCaptcha({\n captcha_id: '',\n captcha_img: '',\n verify: false,\n });\n };\n\n const resetImgCode = () => {\n setImgCode({\n value: '',\n isInvalid: false,\n errorMsg: '',\n });\n };\n const resetCallback = () => {\n refCallback.current = undefined;\n };\n\n const show = () => {\n if (!stateShow) {\n setStateShow(true);\n }\n };\n /**\n * There are some cases where the React scheduler cancels the execution of some functions,\n * which prevents them from closing properly:\n * for example, if the parent component uninstalls the child component directly,\n * and the `captchaModal.close()` call is inside the child component.\n * In this case, call `await captchaModal.close()` and wait for the close action to complete.\n */\n const close = () => {\n setStateShow(false);\n resetCapture();\n resetImgCode();\n resetCallback();\n\n const p = new Promise((resolve) => {\n setTimeout(resolve, 50);\n });\n return p;\n };\n\n const handleCaptchaError = (fel: FieldError[] = []) => {\n const captchaErr = fel.find((o) => {\n return o.error_field === 'captcha_code';\n });\n\n const ri = refImgCode.current;\n if (captchaErr) {\n /**\n * `imgCode.value` No value but a validation error is received,\n * indicating that it is the first time the interface has returned a CAPTCHA error,\n * triggering the CAPTCHA logic. There is no need to display the error message at this point.\n */\n if (ri.value) {\n setImgCode({\n ...ri,\n isInvalid: true,\n errorMsg: captchaErr.error_msg,\n });\n }\n fetchCaptchaData();\n show();\n } else {\n close();\n }\n // Assist business logic in filtering CAPTCHA error messages when necessary\n return captchaErr;\n };\n\n const handleChange = (evt) => {\n evt.preventDefault();\n setImgCode({\n value: evt.target.value || '',\n isInvalid: false,\n errorMsg: '',\n });\n };\n\n const getCaptcha = () => {\n const rc = refCaptcha.current;\n const ri = refImgCode.current;\n const r = {\n verify: !!rc?.verify,\n captcha_id: rc?.captcha_id,\n captcha_code: ri.value,\n };\n\n return r;\n };\n\n const resolveCaptchaReq = (req: ImgCodeReq) => {\n const r = getCaptcha();\n if (r.verify) {\n req.captcha_code = r.captcha_code;\n req.captcha_id = r.captcha_id;\n }\n };\n\n const handleSubmit = (evt) => {\n evt.preventDefault();\n if (!imgCode.value) {\n return;\n }\n\n if (refCallback.current) {\n refCallback.current();\n }\n };\n\n useEffect(() => {\n if (autoInitCaptchaData) {\n fetchCaptchaData();\n }\n }, []);\n\n useLayoutEffect(() => {\n refImgCode.current = imgCode;\n refCaptcha.current = captcha;\n }, [captcha, imgCode]);\n\n useEffect(() => {\n // @ts-ignore\n refRoot.current.render(\n close()}\n centered>\n \n {t('title')}\n \n \n
\n \n
\n \n
\n \n \n \n \n \n\n \n {imgCode?.errorMsg}\n \n \n
\n\n
\n \n
\n
\n
\n ,\n );\n });\n\n const r = {\n close,\n show,\n check: (submitFunc: SubmitCallback) => {\n if (pending.current) {\n return false;\n }\n refCallback.current = submitFunc;\n if (captcha?.verify) {\n show();\n return false;\n }\n return submitFunc();\n },\n getCaptcha,\n resolveCaptchaReq,\n fetchCaptchaData,\n handleCaptchaError,\n };\n\n return r;\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useEffect, useRef, useState } from 'react';\n\nimport { SKELETON_SHOW_TIME } from '@/common/constants';\n\n/**\n * @param needShowFirst whether the skeleton should show at first\n *\n * Why need 'needShowFirst' param?\n * Sometimes we need skeleton screens to take up space in the dom from the start\n *\n * If you set the 'needShowFirst' param as false, If the interface time is too short,\n * the skeleton screen will not be displayed, which can reduce the time occupation\n */\nconst useSkeletonControl = (isLoading: boolean) => {\n const [isSkeletonShow, setIsSkeletonShow] = useState(false);\n const timer = useRef(null);\n const openSkeleton = () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n timer.current = setTimeout(() => {\n setIsSkeletonShow(true);\n }, SKELETON_SHOW_TIME);\n };\n\n const closeSkeleton = () => {\n clearTimeout(timer.current as NodeJS.Timeout);\n setIsSkeletonShow(false);\n };\n\n useEffect(() => {\n if (isLoading) {\n openSkeleton();\n } else {\n closeSkeleton();\n }\n }, [isLoading]);\n\n return { isSkeletonShow };\n};\n\nexport default useSkeletonControl;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { initReactI18next } from 'react-i18next';\n\nimport i18next from 'i18next';\nimport en_US from '@i18n/en_US.yaml';\n// import zh_CN from '@i18n/zh_CN.yaml';\n\nimport { DEFAULT_LANG, LANG_RESOURCE_STORAGE_KEY } from '@/common/constants';\nimport Storage from '@/utils/storage';\n\n/**\n * Prevent i18n from re-initialising when the page is refreshed and switching to `fallbackLng`.\n */\nconst initLng = i18next.resolvedLanguage || DEFAULT_LANG;\nconst initResources = {\n en_US: {\n translation: en_US.ui,\n },\n // zh_CN: {\n // translation: zh_CN.ui,\n // },\n};\n\nconst storageLang = Storage.get(LANG_RESOURCE_STORAGE_KEY);\nif (\n storageLang &&\n storageLang.resources &&\n storageLang.lng &&\n storageLang.lng !== 'en_US'\n) {\n initResources[storageLang.lng] = {\n translation: storageLang.resources,\n };\n}\n\ni18next\n // pass the i18n instance to react-i18next.\n .use(initReactI18next)\n .init({\n resources: initResources,\n lng: initLng,\n fallbackLng: DEFAULT_LANG,\n interpolation: {\n escapeValue: false,\n },\n react: {\n transSupportBasicHtmlNodes: true,\n // allow
and simple html elements in translations\n transKeepBasicHtmlNodesFor: ['br', 'strong', 'i'],\n },\n });\n\nexport default i18next;\n","export default {backend:{base:{success:{other:'Success.'},unknown:{other:'Unknown error.'},request_format_error:{other:'Request format is not valid.'},unauthorized_error:{other:'Unauthorized.'},database_error:{other:'Data server error.'},forbidden_error:{other:'Forbidden.'},duplicate_request_error:{other:'Duplicate submission.'}},action:{report:{other:'Flag'},edit:{other:'Edit'},'delete':{other:'Delete'},close:{other:'Close'},reopen:{other:'Reopen'},forbidden_error:{other:'Forbidden.'},pin:{other:'Pin'},hide:{other:'Unlist'},unpin:{other:'Unpin'},show:{other:'List'},invite_someone_to_answer:{other:'Edit'},undelete:{other:'Undelete'}},role:{name:{user:{other:'User'},admin:{other:'Admin'},moderator:{other:'Moderator'}},description:{user:{other:'Default with no special access.'},admin:{other:'Have the full power to access the site.'},moderator:{other:'Has access to all posts except admin settings.'}}},privilege:{level_1:{description:{other:'Level 1 (less reputation required for private team, group)'}},level_2:{description:{other:'Level 2 (low reputation required for startup community)'}},level_3:{description:{other:'Level 3 (high reputation required for mature community)'}},level_custom:{description:{other:'Custom Level'}},rank_question_add_label:{other:'Ask question'},rank_answer_add_label:{other:'Write answer'},rank_comment_add_label:{other:'Write comment'},rank_report_add_label:{other:'Flag'},rank_comment_vote_up_label:{other:'Upvote comment'},rank_link_url_limit_label:{other:'Post more than 2 links at a time'},rank_question_vote_up_label:{other:'Upvote question'},rank_answer_vote_up_label:{other:'Upvote answer'},rank_question_vote_down_label:{other:'Downvote question'},rank_answer_vote_down_label:{other:'Downvote answer'},rank_invite_someone_to_answer_label:{other:'Invite someone to answer'},rank_tag_add_label:{other:'Create new tag'},rank_tag_edit_label:{other:'Edit tag description (need to review)'},rank_question_edit_label:{other:'Edit other\\'s question (need to review)'},rank_answer_edit_label:{other:'Edit other\\'s answer (need to review)'},rank_question_edit_without_review_label:{other:'Edit other\\'s question without review'},rank_answer_edit_without_review_label:{other:'Edit other\\'s answer without review'},rank_question_audit_label:{other:'Review question edits'},rank_answer_audit_label:{other:'Review answer edits'},rank_tag_audit_label:{other:'Review tag edits'},rank_tag_edit_without_review_label:{other:'Edit tag description without review'},rank_tag_synonym_label:{other:'Manage tag synonyms'}},email:{other:'Email'},e_mail:{other:'Email'},password:{other:'Password'},pass:{other:'Password'},original_text:{other:'This post'},email_or_password_wrong_error:{other:'Email and password do not match.'},error:{common:{invalid_url:{other:'Invalid URL.'},status_invalid:{other:'Invalid status.'}},password:{space_invalid:{other:'Password cannot contain spaces.'}},admin:{cannot_update_their_password:{other:'You cannot modify your password.'},cannot_edit_their_profile:{other:'You cannot modify your profile.'},cannot_modify_self_status:{other:'You cannot modify your status.'},email_or_password_wrong:{other:'Email and password do not match.'}},answer:{not_found:{other:'Answer do not found.'},cannot_deleted:{other:'No permission to delete.'},cannot_update:{other:'No permission to update.'},question_closed_cannot_add:{other:'Questions are closed and cannot be added.'}},comment:{edit_without_permission:{other:'Comment are not allowed to edit.'},not_found:{other:'Comment not found.'},cannot_edit_after_deadline:{other:'The comment time has been too long to modify.'}},email:{duplicate:{other:'Email already exists.'},need_to_be_verified:{other:'Email should be verified.'},verify_url_expired:{other:'Email verified URL has expired, please resend the email.'},illegal_email_domain_error:{other:'Email is not allowed from that email domain. Please use another one.'}},lang:{not_found:{other:'Language file not found.'}},object:{captcha_verification_failed:{other:'Captcha wrong.'},disallow_follow:{other:'You are not allowed to follow.'},disallow_vote:{other:'You are not allowed to vote.'},disallow_vote_your_self:{other:'You can\\'t vote for your own post.'},not_found:{other:'Object not found.'},verification_failed:{other:'Verification failed.'},email_or_password_incorrect:{other:'Email and password do not match.'},old_password_verification_failed:{other:'The old password verification failed'},new_password_same_as_previous_setting:{other:'The new password is the same as the previous one.'},already_deleted:{other:'This post has been deleted.'}},meta:{object_not_found:{other:'Meta object not found'}},question:{already_deleted:{other:'This post has been deleted.'},under_review:{other:'Your post is awaiting review. It will be visible after it has been approved.'},not_found:{other:'Question not found.'},cannot_deleted:{other:'No permission to delete.'},cannot_close:{other:'No permission to close.'},cannot_update:{other:'No permission to update.'}},rank:{fail_to_meet_the_condition:{other:'Reputation rank fail to meet the condition.'},vote_fail_to_meet_the_condition:{other:'Thanks for the feedback. You need at least {{.Rank}} reputation to cast a vote.'},no_enough_rank_to_operate:{other:'You need at least {{.Rank}} reputation to do this.'}},report:{handle_failed:{other:'Report handle failed.'},not_found:{other:'Report not found.'}},tag:{already_exist:{other:'Tag already exists.'},not_found:{other:'Tag not found.'},recommend_tag_not_found:{other:'Recommend tag is not exist.'},recommend_tag_enter:{other:'Please enter at least one required tag.'},not_contain_synonym_tags:{other:'Should not contain synonym tags.'},cannot_update:{other:'No permission to update.'},is_used_cannot_delete:{other:'You cannot delete a tag that is in use.'},cannot_set_synonym_as_itself:{other:'You cannot set the synonym of the current tag as itself.'}},smtp:{config_from_name_cannot_be_email:{other:'The from name cannot be a email address.'}},theme:{not_found:{other:'Theme not found.'}},revision:{review_underway:{other:'Can\\'t edit currently, there is a version in the review queue.'},no_permission:{other:'No permission to revise.'}},user:{external_login_missing_user_id:{other:'The third-party platform does not provide a unique UserID, so you cannot login, please contact the website administrator.'},external_login_unbinding_forbidden:{other:'Please set a login password for your account before you remove this login.'},email_or_password_wrong:{other:{other:'Email and password do not match.'}},not_found:{other:'User not found.'},suspended:{other:'User has been suspended.'},username_invalid:{other:'Username is invalid.'},username_duplicate:{other:'Username is already in use.'},set_avatar:{other:'Avatar set failed.'},cannot_update_your_role:{other:'You cannot modify your role.'},not_allowed_registration:{other:'Currently the site is not open for registration.'},not_allowed_login_via_password:{other:'Currently the site is not allowed to login via password.'},access_denied:{other:'Access denied'},page_access_denied:{other:'You do not have access to this page.'},add_bulk_users_format_error:{other:'Error {{.Field}} format near \\'{{.Content}}\\' at line {{.Line}}. {{.ExtraMessage}}'},add_bulk_users_amount_error:{other:'The number of users you add at once should be in the range of 1-{{.MaxAmount}}.'}},config:{read_config_failed:{other:'Read config failed'}},database:{connection_failed:{other:'Database connection failed'},create_table_failed:{other:'Create table failed'}},install:{create_config_failed:{other:'Can\\'t create the config.yaml file.'}},upload:{unsupported_file_format:{other:'Unsupported file format.'}},site_info:{config_not_found:{other:'Site config not found.'}},badge:{object_not_found:{other:'Badge object not found'}}},reason:{spam:{name:{other:'spam'},desc:{other:'This post is an advertisement, or vandalism. It is not useful or relevant to the current topic.'}},rude_or_abusive:{name:{other:'rude or abusive'},desc:{other:'A reasonable person would find this content inappropriate for respectful discourse.'}},a_duplicate:{name:{other:'a duplicate'},desc:{other:'This question has been asked before and already has an answer.'},placeholder:{other:'Enter the existing question link'}},not_a_answer:{name:{other:'not an answer'},desc:{other:'This was posted as an answer, but it does not attempt to answer the question. It should possibly be an edit, a comment, another question, or deleted altogether.'}},no_longer_needed:{name:{other:'no longer needed'},desc:{other:'This comment is outdated, conversational or not relevant to this post.'}},something:{name:{other:'something else'},desc:{other:'This post requires staff attention for another reason not listed above.'},placeholder:{other:'Let us know specifically what you are concerned about'}},community_specific:{name:{other:'a community-specific reason'},desc:{other:'This question doesn\\'t meet a community guideline.'}},not_clarity:{name:{other:'needs details or clarity'},desc:{other:'This question currently includes multiple questions in one. It should focus on one problem only.'}},looks_ok:{name:{other:'looks OK'},desc:{other:'This post is good as-is and not low quality.'}},needs_edit:{name:{other:'needs edit, and I did it'},desc:{other:'Improve and correct problems with this post yourself.'}},needs_close:{name:{other:'needs close'},desc:{other:'A closed question can\\'t answer, but still can edit, vote and comment.'}},needs_delete:{name:{other:'needs delete'},desc:{other:'This post will be deleted.'}}},question:{close:{duplicate:{name:{other:'spam'},desc:{other:'This question has been asked before and already has an answer.'}},guideline:{name:{other:'a community-specific reason'},desc:{other:'This question doesn\\'t meet a community guideline.'}},multiple:{name:{other:'needs details or clarity'},desc:{other:'This question currently includes multiple questions in one. It should focus on one problem only.'}},other:{name:{other:'something else'},desc:{other:'This post requires another reason not listed above.'}}},operation_type:{asked:{other:'asked'},answered:{other:'answered'},modified:{other:'modified'}},deleted_title:{other:'Deleted question'},questions_title:{other:'Questions'}},tag:{tags_title:{other:'Tags'},no_description:{other:'The tag has no description.'}},notification:{action:{update_question:{other:'updated question'},answer_the_question:{other:'answered question'},update_answer:{other:'updated answer'},accept_answer:{other:'accepted answer'},comment_question:{other:'commented question'},comment_answer:{other:'commented answer'},reply_to_you:{other:'replied to you'},mention_you:{other:'mentioned you'},your_question_is_closed:{other:'Your question has been closed'},your_question_was_deleted:{other:'Your question has been deleted'},your_answer_was_deleted:{other:'Your answer has been deleted'},your_comment_was_deleted:{other:'Your comment has been deleted'},up_voted_question:{other:'upvoted question'},down_voted_question:{other:'downvoted question'},up_voted_answer:{other:'upvoted answer'},down_voted_answer:{other:'downvoted answer'},up_voted_comment:{other:'upvoted comment'},invited_you_to_answer:{other:'invited you to answer'},earned_badge:{other:'You\\'ve earned the \"{{.BadgeName}}\" badge'}}},email_tpl:{change_email:{title:{other:'[{{.SiteName}}] Confirm your new email address'},body:{other:'Confirm your new email address for {{.SiteName}} by clicking on the following link:
\\n{{.ChangeEmailUrl}}

\\n\\nIf you did not request this change, please ignore this email.\\n'}},new_answer:{title:{other:'[{{.SiteName}}] {{.DisplayName}} answered your question'},body:{other:'{{.QuestionTitle}}

\\n\\n{{.DisplayName}}:
\\n
{{.AnswerSummary}}

\\nView it on {{.SiteName}}

\\n\\n--
\\nUnsubscribe'}},invited_you_to_answer:{title:{other:'[{{.SiteName}}] {{.DisplayName}} invited you to answer'},body:{other:'{{.QuestionTitle}}

\\n\\n{{.DisplayName}}:
\\n
I think you may know the answer.

\\nView it on {{.SiteName}}

\\n\\n--
\\nUnsubscribe'}},new_comment:{title:{other:'[{{.SiteName}}] {{.DisplayName}} commented on your post'},body:{other:'{{.QuestionTitle}}

\\n\\n{{.DisplayName}}:
\\n
{{.CommentSummary}}

\\nView it on {{.SiteName}}

\\n\\n--
\\nUnsubscribe'}},new_question:{title:{other:'[{{.SiteName}}] New question: {{.QuestionTitle}}'},body:{other:'{{.QuestionTitle}}
\\n{{.Tags}}

\\n\\n--
\\nUnsubscribe'}},pass_reset:{title:{other:'[{{.SiteName }}] Password reset'},body:{other:'Somebody asked to reset your password on {{.SiteName}}.

\\n\\nIf it was not you, you can safely ignore this email.

\\n\\nClick the following link to choose a new password:
\\n{{.PassResetUrl}}\\n'}},register:{title:{other:'[{{.SiteName}}] Confirm your new account'},body:{other:'Welcome to {{.SiteName}}!

\\n\\nClick the following link to confirm and activate your new account:
\\n{{.RegisterUrl}}

\\n\\nIf the above link is not clickable, try copying and pasting it into the address bar of your web browser.\\n'}},test:{title:{other:'[{{.SiteName}}] Test Email'},body:{other:'This is a test email.'}}},action_activity_type:{upvote:{other:'upvote'},upvoted:{other:'upvoted'},downvote:{other:'downvote'},downvoted:{other:'downvoted'},accept:{other:'accept'},accepted:{other:'accepted'},edit:{other:'edit'}},review:{queued_post:{other:'Queued post'},flagged_post:{other:'Flagged post'},suggested_post_edit:{other:'Suggested edits'}},reaction:{tooltip:{other:'{{ .Names }} and {{ .Count }} more...'}},badge:{default_badges:{autobiographer:{name:{other:'Autobiographer'},desc:{other:'Filled out profile information.'}},certified:{name:{other:'Certified'},desc:{other:'Completed our new user tutorial.'}},editor:{name:{other:'Editor'},desc:{other:'First post edit.'}},first_flag:{name:{other:'First Flag'},desc:{other:'First flagged a post.'}},first_upvote:{name:{other:'First Upvote'},desc:{other:'First up voted a post.'}},first_link:{name:{other:'First Link'},desc:{other:'First dirst added a link to another post.'}},first_reaction:{name:{other:'First Reaction'},desc:{other:'First reacted to the post.'}},first_share:{name:{other:'First Share'},desc:{other:'First shared a post.'}},scholar:{name:{other:'Scholar'},desc:{other:'Asked a question and accepted an answer.'}},commentator:{name:{other:'Commentator'},desc:{other:'Leave 5 comments.'}},new_user_of_the_month:{name:{other:'New User of the Month'},desc:{other:'Outstanding contributions in their first month.'}},read_guidelines:{name:{other:'Read Guidelines'},desc:{other:'Read the [community guidelines].'}},reader:{name:{other:'Reader'},desc:{other:'Read every answers in a topic with more than 10 answers.'}},welcome:{name:{other:'Welcome'},desc:{other:'Received a up vote.'}},nice_share:{name:{other:'Nice Share'},desc:{other:'Shared a post with 25 unique visitors.'}},good_share:{name:{other:'Good Share'},desc:{other:'Shared a post with 300 unique visitors.'}},great_share:{name:{other:'Great Share'},desc:{other:'Shared a post with 1000 unique visitors.'}},out_of_love:{name:{other:'Out of Love'},desc:{other:'Used 50 up votes in a day.'}},higher_love:{name:{other:'Higher Love'},desc:{other:'Used 50 up votes in a day 5 times.'}},crazy_in_love:{name:{other:'Crazy in Love'},desc:{other:'Used 50 up votes in a day 20 times.'}},promoter:{name:{other:'Promoter'},desc:{other:'Invited a user.'}},campaigner:{name:{other:'Campaigner'},desc:{other:'Invited 3 basic users.'}},champion:{name:{other:'Champion'},desc:{other:'Invited 5 members.'}},thank_you:{name:{other:'Thank You'},desc:{other:'Has 20 up voted posts and gave 10 up votes.'}},gives_back:{name:{other:'Gives Back'},desc:{other:'Has 100 up voted posts and gave 100 up votes.'}},empathetic:{name:{other:'Empathetic'},desc:{other:'Has 500 up voted posts and gave 1000 up votes.'}},enthusiast:{name:{other:'Enthusiast'},desc:{other:'Visited 10 consecutive days.'}},aficionado:{name:{other:'Aficionado'},desc:{other:'Visited 100 consecutive days.'}},devotee:{name:{other:'Devotee'},desc:{other:'Visited 365 consecutive days.'}},anniversary:{name:{other:'Anniversary'},desc:{other:'Active member for a year, posted at least once.'}},appreciated:{name:{other:'Appreciated'},desc:{other:'Received 1 up vote on 20 posts.'}},respected:{name:{other:'Respected'},desc:{other:'Received 2 up votes on 100 posts.'}},admired:{name:{other:'Admired'},desc:{other:'Received 5 up votes on 300 posts.'}},solved:{name:{other:'Solved'},desc:{other:'Have an answer be accepted.'}},guidance_counsellor:{name:{other:'Guidance Counsellor'},desc:{other:'Have 10 answers be accepted.'}},know_it_all:{name:{other:'Know-it-All'},desc:{other:'Have 50 answers be accepted.'}},solution_institution:{name:{other:'Solution Institution'},desc:{other:'Have 150 answers be accepted.'}},nice_answer:{name:{other:'Nice Answer'},desc:{other:'Answer score of 10 or more.'}},good_answer:{name:{other:'Good Answer'},desc:{other:'Answer score of 25 or more.'}},great_answer:{name:{other:'Great Answer'},desc:{other:'Answer score of 50 or more.'}},nice_question:{name:{other:'Nice Question'},desc:{other:'Question score of 10 or more.'}},good_question:{name:{other:'Good Question'},desc:{other:'Question score of 25 or more.'}},great_question:{name:{other:'Great Question'},desc:{other:'Question score of 50 or more.'}},popular_question:{name:{other:'Popular Question'},desc:{other:'Question with 500 views.'}},notable_question:{name:{other:'Notable Question'},desc:{other:'Question with 1,000 views.'}},famous_question:{name:{other:'Famous Question'},desc:{other:'Question with 5,000 views.'}},popular_link:{name:{other:'Popular Link'},desc:{other:'Posted an external link with 50 clicks.'}},hot_link:{name:{other:'Hot Link'},desc:{other:'Posted an external link with 300 clicks.'}},famous_link:{name:{other:'Famous Link'},desc:{other:'Posted an external link with 100 clicks.'}}},default_badge_groups:{getting_started:{name:{other:'Getting Started'}},community:{name:{other:'Community'}},posting:{name:{other:'Posting'}}}}},ui:{how_to_format:{title:'How to Format',desc:'
  • to make links

    <https://url.com>

    [Title](https://url.com)
  • put returns between paragraphs

  • _italic_ or **bold**

  • indent code by 4 spaces

  • quote by placing > at start of line

  • backtick escapes `like _this_`

  • create code fences with backticks `

    ```
    code here
    ```
'},pagination:{prev:'Prev',next:'Next'},page_title:{question:'Question',questions:'Questions',tag:'Tag',tags:'Tags',tag_wiki:'tag wiki',create_tag:'Create Tag',edit_tag:'Edit Tag',ask_a_question:'Ask Question',edit_question:'Edit Question',edit_answer:'Edit Answer',search:'Search',posts_containing:'Posts containing',settings:'Settings',notifications:'Notifications',login:'Log In',sign_up:'Sign Up',account_recovery:'Account Recovery',account_activation:'Account Activation',confirm_email:'Confirm Email',account_suspended:'Account Suspended',admin:'Admin',change_email:'Modify Email',install:'Answer Installation',upgrade:'Answer Upgrade',maintenance:'Website Maintenance',users:'Users',oauth_callback:'Processing',http_404:'HTTP Error 404',http_50X:'HTTP Error 500',http_403:'HTTP Error 403',logout:'Log Out'},notifications:{title:'Notifications',inbox:'Inbox',achievement:'Achievements',new_alerts:'New alerts',all_read:'Mark all as read',show_more:'Show more',someone:'Someone',inbox_type:{all:'All',posts:'Posts',invites:'Invites',votes:'Votes'},answer:'Answer',question:'Question',badge_award:'Badge'},suspended:{title:'Your Account has been Suspended',until_time:'Your account was suspended until {{ time }}.',forever:'This user was suspended forever.',end:'You don\\'t meet a community guideline.',contact_us:'Contact us'},editor:{blockquote:{text:'Blockquote'},bold:{text:'Strong'},chart:{text:'Chart',flow_chart:'Flow chart',sequence_diagram:'Sequence diagram',class_diagram:'Class diagram',state_diagram:'State diagram',entity_relationship_diagram:'Entity relationship diagram',user_defined_diagram:'User defined diagram',gantt_chart:'Gantt chart',pie_chart:'Pie chart'},code:{text:'Code Sample',add_code:'Add code sample',form:{fields:{code:{label:'Code',msg:{empty:'Code cannot be empty.'}},language:{label:'Language',placeholder:'Automatic detection'}}},btn_cancel:'Cancel',btn_confirm:'Add'},formula:{text:'Formula',options:{inline:'Inline formula',block:'Block formula'}},heading:{text:'Heading',options:{h1:'Heading 1',h2:'Heading 2',h3:'Heading 3',h4:'Heading 4',h5:'Heading 5',h6:'Heading 6'}},help:{text:'Help'},hr:{text:'Horizontal rule'},image:{text:'Image',add_image:'Add image',tab_image:'Upload image',form_image:{fields:{file:{label:'Image file',btn:'Select image',msg:{empty:'File cannot be empty.',only_image:'Only image files are allowed.',max_size:'File size cannot exceed 4 MB.'}},desc:{label:'Description'}}},tab_url:'Image URL',form_url:{fields:{url:{label:'Image URL',msg:{empty:'Image URL cannot be empty.'}},name:{label:'Description'}}},btn_cancel:'Cancel',btn_confirm:'Add',uploading:'Uploading'},indent:{text:'Indent'},outdent:{text:'Outdent'},italic:{text:'Emphasis'},link:{text:'Hyperlink',add_link:'Add hyperlink',form:{fields:{url:{label:'URL',msg:{empty:'URL cannot be empty.'}},name:{label:'Description'}}},btn_cancel:'Cancel',btn_confirm:'Add'},ordered_list:{text:'Numbered list'},unordered_list:{text:'Bulleted list'},table:{text:'Table',heading:'Heading',cell:'Cell'}},close_modal:{title:'I am closing this post as...',btn_cancel:'Cancel',btn_submit:'Submit',remark:{empty:'Cannot be empty.'},msg:{empty:'Please select a reason.'}},report_modal:{flag_title:'I am flagging to report this post as...',close_title:'I am closing this post as...',review_question_title:'Review question',review_answer_title:'Review answer',review_comment_title:'Review comment',btn_cancel:'Cancel',btn_submit:'Submit',remark:{empty:'Cannot be empty.'},msg:{empty:'Please select a reason.',not_a_url:'URL format is incorrect.',url_not_match:'URL origin does not match the current website.'}},tag_modal:{title:'Create new tag',form:{fields:{display_name:{label:'Display name',msg:{empty:'Display name cannot be empty.',range:'Display name up to 35 characters.'}},slug_name:{label:'URL slug',desc:'URL slug up to 35 characters.',msg:{empty:'URL slug cannot be empty.',range:'URL slug up to 35 characters.',character:'URL slug contains unallowed character set.'}},desc:{label:'Description'},revision:{label:'Revision'},edit_summary:{label:'Edit summary',placeholder:'Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)'}}},btn_cancel:'Cancel',btn_submit:'Submit',btn_post:'Post new tag'},tag_info:{created_at:'Created',edited_at:'Edited',history:'History',synonyms:{title:'Synonyms',text:'The following tags will be remapped to',empty:'No synonyms found.',btn_add:'Add a synonym',btn_edit:'Edit',btn_save:'Save'},synonyms_text:'The following tags will be remapped to','delete':{title:'Delete this tag',tip_with_posts:'

We do not allow deleting tag with posts.

Please remove this tag from the posts first.

',tip_with_synonyms:'

We do not allow deleting tag with synonyms.

Please remove the synonyms from this tag first.

',tip:'Are you sure you wish to delete?',close:'Close'}},edit_tag:{title:'Edit Tag',default_reason:'Edit tag',default_first_reason:'Add tag',btn_save_edits:'Save edits',btn_cancel:'Cancel'},dates:{long_date:'MMM D',long_date_with_year:'MMM D, YYYY',long_date_with_time:'MMM D, YYYY [at] HH:mm',now:'now',x_seconds_ago:'{{count}}s ago',x_minutes_ago:'{{count}}m ago',x_hours_ago:'{{count}}h ago',hour:'hour',day:'day',hours:'hours',days:'days'},reaction:{heart:'heart',smile:'smile',frown:'frown',btn_label:'add or remove reactions',undo_emoji:'undo {{ emoji }} reaction',react_emoji:'react with {{ emoji }}',unreact_emoji:'unreact with {{ emoji }}'},comment:{btn_add_comment:'Add comment',reply_to:'Reply to',btn_reply:'Reply',btn_edit:'Edit',btn_delete:'Delete',btn_flag:'Flag',btn_save_edits:'Save edits',btn_cancel:'Cancel',show_more:'{{count}} more comments',tip_question:'Use comments to ask for more information or suggest improvements. Avoid answering questions in comments.',tip_answer:'Use comments to reply to other users or notify them of changes. If you are adding new information, edit your post instead of commenting.',tip_vote:'It adds something useful to the post'},edit_answer:{title:'Edit Answer',default_reason:'Edit answer',default_first_reason:'Add answer',form:{fields:{revision:{label:'Revision'},answer:{label:'Answer',feedback:{characters:'content must be at least 6 characters in length.'}},edit_summary:{label:'Edit summary',placeholder:'Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)'}}},btn_save_edits:'Save edits',btn_cancel:'Cancel'},tags:{title:'Tags',sort_buttons:{popular:'Popular',name:'Name',newest:'Newest'},button_follow:'Follow',button_following:'Following',tag_label:'questions',search_placeholder:'Filter by tag name',no_desc:'The tag has no description.',more:'More'},ask:{title:'Ask Question',edit_title:'Edit Question',default_reason:'Edit question',default_first_reason:'Ask question',similar_questions:'Similar questions',form:{fields:{revision:{label:'Revision'},title:{label:'Question',placeholder:'Enter question here',msg:{empty:'Question cannot be empty.',range:'Question up to 150 characters'}},body:{label:'More details, context, screenshots, etc. (Optional)',msg:{empty:'More details, context, screenshots, etc. (Optional) cannot be empty.'}},tags:{label:'Add Tag (Optional)',msg:{empty:'Tags cannot be empty.'}},answer:{label:'Answer',msg:{empty:'Answer cannot be empty.'}},edit_summary:{label:'Edit summary',placeholder:'Briefly explain your changes (corrected spelling, fixed grammar, improved formatting)'}}},btn_post_question:'Post your question',btn_save_edits:'Save edits',answer_question:'Answer your own question','post_question&answer':'Post your question and answer'},tag_selector:{add_btn:'Add tag',create_btn:'Create new tag',search_tag:'Search tag',hint:'Describe what your question is about, at least one tag is required.',no_result:'No tags matched',tag_required_text:'Required tag (at least one)'},header:{nav:{question:'Questions',tag:'Tags',user:'Users',badges:'Badges',profile:'Profile',setting:'Settings',logout:'Log out',admin:'Admin',review:'Review',bookmark:'Bookmarks',moderation:'Moderation'},search:{placeholder:'Search'}},footer:{build_on:'Powered by <1> Apache Answer - the open-source software that powers Q&A communities.
Made with love © {{cc}}.'},upload_img:{name:'Change',loading:'loading...'},pic_auth_code:{title:'Captcha',placeholder:'Type the text above',msg:{empty:'Captcha cannot be empty.'}},inactive:{first:'You\\'re almost done! We sent an activation mail to {{mail}}. Please follow the instructions in the mail to activate your account.',info:'If it doesn\\'t arrive, check your spam folder.',another:'We sent another activation email to you at {{mail}}. It might take a few minutes for it to arrive; be sure to check your spam folder.',btn_name:'Resend activation email',change_btn_name:'Change email',msg:{empty:'Cannot be empty.'},resend_email:{url_label:'Are you sure you want to resend the activation email?',url_text:'You can also give the activation link above to the user.'}},login:{login_to_continue:'Log in to continue',info_sign:'Don\\'t have an account? <1>Sign up',info_login:'Already have an account? <1>Log in',agreements:'By registering, you agree to the <1>privacy policy and <3>terms of service.',forgot_pass:'Forgot password?',name:{label:'Name',msg:{empty:'Name cannot be empty.',range:'Length of name should between 4 to 30 characters.',character:'Must use the character set \"a-z\", \"A-Z\", \"0-9\", \" - . _\"'}},email:{label:'Email',msg:{empty:'Email cannot be empty.'}},password:{label:'Password',msg:{empty:'Password cannot be empty.',different:'The passwords entered on both sides are inconsistent'}}},account_forgot:{page_title:'Forgot Your Password',btn_name:'Send me recovery email',send_success:'If an account matches {{mail}}, you should receive an email with instructions on how to reset your password shortly.',email:{label:'Email',msg:{empty:'Email cannot be empty.'}}},change_email:{btn_cancel:'Cancel',btn_update:'Update email address',send_success:'If an account matches {{mail}}, you should receive an email with instructions on how to reset your password shortly.',email:{label:'New email',msg:{empty:'Email cannot be empty.'}}},oauth:{connect:'Connect with {{ auth_name }}',remove:'Remove {{ auth_name }}'},oauth_bind_email:{subtitle:'Add a recovery email to your account.',btn_update:'Update email address',email:{label:'Email',msg:{empty:'Email cannot be empty.'}},modal_title:'Email already existes.',modal_content:'This email address already registered. Are you sure you want to connect to the existing account?',modal_cancel:'Change email',modal_confirm:'Connect to the existing account'},password_reset:{page_title:'Password Reset',btn_name:'Reset my password',reset_success:'You successfully changed your password; you will be redirected to the log in page.',link_invalid:'Sorry, this password reset link is no longer valid. Perhaps your password is already reset?',to_login:'Continue to log in page',password:{label:'Password',msg:{empty:'Password cannot be empty.',length:'The length needs to be between 8 and 32',different:'The passwords entered on both sides are inconsistent'}},password_confirm:{label:'Confirm new password'}},settings:{page_title:'Settings',goto_modify:'Go to modify',nav:{profile:'Profile',notification:'Notifications',account:'Account','interface':'Interface'},profile:{heading:'Profile',btn_name:'Save',display_name:{label:'Display name',msg:'Display name cannot be empty.',msg_range:'Display name up to 30 characters.'},username:{label:'Username',caption:'People can mention you as \"@username\".',msg:'Username cannot be empty.',msg_range:'Username up to 30 characters.',character:'Must use the character set \"a-z\", \"0-9\", \" - . _\"'},avatar:{label:'Profile image',gravatar:'Gravatar',gravatar_text:'You can change image on',custom:'Custom',custom_text:'You can upload your image.','default':'System',msg:'Please upload an avatar'},bio:{label:'About me'},website:{label:'Website',placeholder:'https://example.com',msg:'Website incorrect format'},location:{label:'Location',placeholder:'City, Country'}},notification:{heading:'Email Notifications',turn_on:'Turn on',inbox:{label:'Inbox notifications',description:'Answers to your questions, comments, invites, and more.'},all_new_question:{label:'All new questions',description:'Get notified of all new questions. Up to 50 questions per week.'},all_new_question_for_following_tags:{label:'All new questions for following tags',description:'Get notified of new questions for following tags.'}},account:{heading:'Account',change_email_btn:'Change email',change_pass_btn:'Change password',change_email_info:'We\\'ve sent an email to that address. Please follow the confirmation instructions.',email:{label:'Email'},new_email:{label:'New email',msg:'New email cannot be empty.'},pass:{label:'Current password',msg:'Password cannot be empty.'},password_title:'Password',current_pass:{label:'Current password',msg:{empty:'Current password cannot be empty.',length:'The length needs to be between 8 and 32.',different:'The two entered passwords do not match.'}},new_pass:{label:'New password'},pass_confirm:{label:'Confirm new password'}},'interface':{heading:'Interface',lang:{label:'Interface language',text:'User interface language. It will change when you refresh the page.'}},my_logins:{title:'My logins',label:'Log in or sign up on this site using these accounts.',modal_title:'Remove login',modal_content:'Are you sure you want to remove this login from your account?',modal_confirm_btn:'Remove',remove_success:'Removed successfully'}},toast:{update:'update success',update_password:'Password changed successfully.',flag_success:'Thanks for flagging.',forbidden_operate_self:'Forbidden to operate on yourself',review:'Your revision will show after review.',sent_success:'Sent successfully'},related_question:{title:'Related Questions',answers:'answers'},invite_to_answer:{title:'Invite People',desc:'Invite people you think can answer.',invite:'Invite to answer',add:'Add people',search:'Search people'},question_detail:{action:'Action',Asked:'Asked',asked:'asked',update:'Modified',edit:'edited',commented:'commented',Views:'Viewed',Follow:'Follow',Following:'Following',follow_tip:'Follow this question to receive notifications',answered:'answered',closed_in:'Closed in',show_exist:'Show existing question.',useful:'Useful',question_useful:'It is useful and clear',question_un_useful:'It is unclear or not useful',question_bookmark:'Bookmark this question',answer_useful:'It is useful',answer_un_useful:'It is not useful',answers:{title:'Answers',score:'Score',newest:'Newest',oldest:'Oldest',btn_accept:'Accept',btn_accepted:'Accepted'},write_answer:{title:'Your Answer',edit_answer:'Edit my existing answer',btn_name:'Post your answer',add_another_answer:'Add another answer',confirm_title:'Continue to answer','continue':'Continue',confirm_info:'

Are you sure you want to add another answer?

You could use the edit link to refine and improve your existing answer, instead.

',empty:'Answer cannot be empty.',characters:'content must be at least 6 characters in length.',tips:{header_1:'Thanks for your answer',li1_1:'Please be sure to answer the question. Provide details and share your research.',li1_2:'Back up any statements you make with references or personal experience.',header_2:'But avoid ...',li2_1:'Asking for help, seeking clarification, or responding to other answers.'}},reopen:{confirm_btn:'Reopen',title:'Reopen this post',content:'Are you sure you want to reopen?'},list:{confirm_btn:'List',title:'List this post',content:'Are you sure you want to list?'},unlist:{confirm_btn:'Unlist',title:'Unlist this post',content:'Are you sure you want to unlist?'},pin:{title:'Pin this post',content:'Are you sure you wish to pinned globally? This post will appear at the top of all post lists.',confirm_btn:'Pin'}},'delete':{title:'Delete this post',question:'We do not recommend deleting questions with answers because doing so deprives future readers of this knowledge.

Repeated deletion of answered questions can result in your account being blocked from asking. Are you sure you wish to delete?',answer_accepted:'

We do not recommend deleting accepted answer because doing so deprives future readers of this knowledge.

Repeated deletion of accepted answers can result in your account being blocked from answering. Are you sure you wish to delete?',other:'Are you sure you wish to delete?',tip_answer_deleted:'This answer has been deleted',undelete_title:'Undelete this post',undelete_desc:'Are you sure you wish to undelete?'},btns:{confirm:'Confirm',cancel:'Cancel',edit:'Edit',save:'Save','delete':'Delete',undelete:'Undelete',list:'List',unlist:'Unlist',unlisted:'Unlisted',login:'Log in',signup:'Sign up',logout:'Log out',verify:'Verify',add_question:'Ask question',approve:'Approve',reject:'Reject',skip:'Skip',discard_draft:'Discard draft',pinned:'Pinned',all:'All',question:'Question',answer:'Answer',comment:'Comment',refresh:'Refresh',resend:'Resend',deactivate:'Deactivate',active:'Active',suspend:'Suspend',unsuspend:'Unsuspend',close:'Close',reopen:'Reopen',ok:'OK',light:'Light',dark:'Dark',system_setting:'System setting','default':'Default',reset:'Reset',tag:'Tag',post_lowercase:'post',filter:'Filter',ignore:'Ignore',submit:'Submit',normal:'Normal',closed:'Closed',deleted:'Deleted',pending:'Pending',more:'More'},search:{title:'Search Results',keywords:'Keywords',options:'Options',follow:'Follow',following:'Following',counts:'{{count}} Results',more:'More',sort_btns:{relevance:'Relevance',newest:'Newest',active:'Active',score:'Score',more:'More'},tips:{title:'Advanced Search Tips',tag:'<1>[tag] search with a tag',user:'<1>user:username search by author',answer:'<1>answers:0 unanswered questions',score:'<1>score:3 posts with a 3+ score',question:'<1>is:question search questions',is_answer:'<1>is:answer search answers'},empty:'We couldn\\'t find anything.
Try different or less specific keywords.'},share:{name:'Share',copy:'Copy link',via:'Share post via...',copied:'Copied',facebook:'Share to Facebook',twitter:'Share to Twitter'},cannot_vote_for_self:'You can\\'t vote for your own post.',modal_confirm:{title:'Error...'},account_result:{success:'Your new account is confirmed; you will be redirected to the home page.',link:'Continue to homepage',oops:'Oops!',invalid:'The link you used no longer works.',confirm_new_email:'Your email has been updated.',confirm_new_email_invalid:'Sorry, this confirmation link is no longer valid. Perhaps your email was already changed?'},unsubscribe:{page_title:'Unsubscribe',success_title:'Unsubscribe Successful',success_desc:'You have been successfully removed from this subscriber list and won\\'t receive any further emails from us.',link:'Change settings'},question:{following_tags:'Following Tags',edit:'Edit',save:'Save',follow_tag_tip:'Follow tags to curate your list of questions.',hot_questions:'Hot Questions',all_questions:'All Questions',x_questions:'{{ count }} Questions',x_answers:'{{ count }} answers',questions:'Questions',answers:'Answers',newest:'Newest',active:'Active',hot:'Hot',recommend:'Recommend',score:'Score',unanswered:'Unanswered',modified:'modified',answered:'answered',asked:'asked',closed:'closed',follow_a_tag:'Follow a tag',more:'More'},personal:{overview:'Overview',answers:'Answers',answer:'answer',questions:'Questions',question:'question',bookmarks:'Bookmarks',reputation:'Reputation',comments:'Comments',votes:'Votes',badges:'Badges',newest:'Newest',score:'Score',edit_profile:'Edit profile',visited_x_days:'Visited {{ count }} days',viewed:'Viewed',joined:'Joined',comma:',',last_login:'Seen',about_me:'About Me',about_me_empty:'// Hello, World !',top_answers:'Top Answers',top_questions:'Top Questions',stats:'Stats',list_empty:'No posts found.
Perhaps you\\'d like to select a different tab?',accepted:'Accepted',answered:'answered',asked:'asked',downvoted:'downvoted',mod_short:'MOD',mod_long:'Moderators',x_reputation:'reputation',x_votes:'votes received',x_answers:'answers',x_questions:'questions',recent_badges:'Recent Badges'},install:{title:'Installation',next:'Next',done:'Done',config_yaml_error:'Can\\'t create the config.yaml file.',lang:{label:'Please choose a language'},db_type:{label:'Database engine'},db_username:{label:'Username',placeholder:'root',msg:'Username cannot be empty.'},db_password:{label:'Password',placeholder:'root',msg:'Password cannot be empty.'},db_host:{label:'Database host',placeholder:'db:3306',msg:'Database host cannot be empty.'},db_name:{label:'Database name',placeholder:'answer',msg:'Database name cannot be empty.'},db_file:{label:'Database file',placeholder:'/data/answer.db',msg:'Database file cannot be empty.'},config_yaml:{title:'Create config.yaml',label:'The config.yaml file created.',desc:'You can create the <1>config.yaml file manually in the <1>/var/wwww/xxx/ directory and paste the following text into it.',info:'After you\\'ve done that, click \"Next\" button.'},site_information:'Site Information',admin_account:'Admin Account',site_name:{label:'Site name',msg:'Site name cannot be empty.',msg_max_length:'Site name must be at maximum 30 characters in length.'},site_url:{label:'Site URL',text:'The address of your site.',msg:{empty:'Site URL cannot be empty.',incorrect:'Site URL incorrect format.',max_length:'Site URL must be at maximum 512 characters in length.'}},contact_email:{label:'Contact email',text:'Email address of key contact responsible for this site.',msg:{empty:'Contact email cannot be empty.',incorrect:'Contact email incorrect format.'}},login_required:{label:'Private','switch':'Login required',text:'Only logged in users can access this community.'},admin_name:{label:'Name',msg:'Name cannot be empty.',character:'Must use the character set \"a-z\", \"0-9\", \" - . _\"',msg_max_length:'Name must be at maximum 30 characters in length.'},admin_password:{label:'Password',text:'You will need this password to log in. Please store it in a secure location.',msg:'Password cannot be empty.',msg_min_length:'Password must be at least 8 characters in length.',msg_max_length:'Password must be at maximum 32 characters in length.'},admin_email:{label:'Email',text:'You will need this email to log in.',msg:{empty:'Email cannot be empty.',incorrect:'Email incorrect format.'}},ready_title:'Your site is ready',ready_desc:'If you ever feel like changing more settings, visit <1>admin section; find it in the site menu.',good_luck:'Have fun, and good luck!',warn_title:'Warning',warn_desc:'The file <1>config.yaml already exists. If you need to reset any of the configuration items in this file, please delete it first.',install_now:'You may try <1>installing now.',installed:'Already installed',installed_desc:'You appear to have already installed. To reinstall please clear your old database tables first.',db_failed:'Database connection failed',db_failed_desc:'This either means that the database information in your <1>config.yaml file is incorrect or that contact with the database server could not be established. This could mean your host\\'s database server is down.'},counts:{views:'views',votes:'votes',answers:'answers',accepted:'Accepted'},page_error:{http_error:'HTTP Error {{ code }}',desc_403:'You don\\'t have permission to access this page.',desc_404:'Unfortunately, this page doesn\\'t exist.',desc_50X:'The server encountered an error and could not complete your request.',back_home:'Back to homepage'},page_maintenance:{desc:'We are under maintenance, we\\'ll be back soon.'},nav_menus:{dashboard:'Dashboard',contents:'Contents',questions:'Questions',answers:'Answers',users:'Users',badges:'Badges',flags:'Flags',settings:'Settings',general:'General','interface':'Interface',smtp:'SMTP',branding:'Branding',legal:'Legal',write:'Write',tos:'Terms of Service',privacy:'Privacy',seo:'SEO',customize:'Customize',themes:'Themes',css_html:'CSS/HTML',login:'Login',privileges:'Privileges',plugins:'Plugins',installed_plugins:'Installed Plugins'},website_welcome:'Welcome to {{site_name}}',user_center:{login:'Login',qrcode_login_tip:'Please use {{ agentName }} to scan the QR code and log in.',login_failed_email_tip:'Login failed, please allow this app to access your email information before try again.'},badges:{modal:{title:'Congratulations',content:'You\\'ve earned a new badge.',close:'Close',confirm:'View badges'},title:'Badges',awarded:'Awarded','earned_×':'Earned ×{{ number }}','×_awarded':'{{ number }} awarded',can_earn_multiple:'You can earn this multiple times.',earned:'Earned'},admin:{admin_header:{title:'Admin'},dashboard:{title:'Dashboard',welcome:'Welcome to Admin!',site_statistics:'Site statistics',questions:'Questions:',answers:'Answers:',comments:'Comments:',votes:'Votes:',users:'Users:',flags:'Flags:',reviews:'Reviews:',site_health:'Site health',version:'Version:',https:'HTTPS:',upload_folder:'Upload folder:',run_mode:'Running mode:','private':'Private','public':'Public',smtp:'SMTP:',timezone:'Timezone:',system_info:'System info',go_version:'Go version:',database:'Database:',database_size:'Database size:',storage_used:'Storage used:',uptime:'Uptime:',links:'Links',plugins:'Plugins',github:'GitHub',blog:'Blog',contact:'Contact',forum:'Forum',documents:'Documents',feedback:'Feedback',support:'Support',review:'Review',config:'Config',update_to:'Update to',latest:'Latest',check_failed:'Check failed',yes:'Yes',no:'No',not_allowed:'Not allowed',allowed:'Allowed',enabled:'Enabled',disabled:'Disabled',writable:'Writable',not_writable:'Not writable'},flags:{title:'Flags',pending:'Pending',completed:'Completed',flagged:'Flagged',flagged_type:'Flagged {{ type }}',created:'Created',action:'Action',review:'Review'},user_role_modal:{title:'Change user role to...',btn_cancel:'Cancel',btn_submit:'Submit'},new_password_modal:{title:'Set new password',form:{fields:{password:{label:'Password',text:'The user will be logged out and need to login again.',msg:'Password must be at 8-32 characters in length.'}}},btn_cancel:'Cancel',btn_submit:'Submit'},edit_profile_modal:{title:'Edit profile',form:{fields:{display_name:{label:'Display name',msg_range:'Display name up to 30 characters.'},username:{label:'Username',msg_range:'Username up to 30 characters.'},email:{label:'Email',msg_invalid:'Invalid Email Address.'}}},edit_success:'Edited successfully',btn_cancel:'Cancel',btn_submit:'Submit'},user_modal:{title:'Add new user',form:{fields:{users:{label:'Bulk add user',placeholder:'John Smith, john@example.com, BUSYopr2\\nAlice, alice@example.com, fpDntV8q',text:'Separate “name, email, password” with commas. One user per line.',msg:'Please enter the user\\'s email, one per line.'},display_name:{label:'Display name',msg:'Display name must be at 4-30 characters in length.'},email:{label:'Email',msg:'Email is not valid.'},password:{label:'Password',msg:'Password must be at 8-32 characters in length.'}}},btn_cancel:'Cancel',btn_submit:'Submit'},users:{title:'Users',name:'Name',email:'Email',reputation:'Reputation',created_at:'Created Time',delete_at:'Deleted Time',suspend_at:'Suspended Time',status:'Status',role:'Role',action:'Action',change:'Change',all:'All',staff:'Staff',more:'More',inactive:'Inactive',suspended:'Suspended',deleted:'Deleted',normal:'Normal',Moderator:'Moderator',Admin:'Admin',User:'User',filter:{placeholder:'Filter by name, user:id'},set_new_password:'Set new password',edit_profile:'Edit profile',change_status:'Change status',change_role:'Change role',show_logs:'Show logs',add_user:'Add user',deactivate_user:{title:'Deactivate user',content:'An inactive user must re-validate their email.'},delete_user:{title:'Delete this user',content:'Are you sure you want to delete this user? This is permanent!',remove:'Remove their content',label:'Remove all questions, answers, comments, etc.',text:'Don’t check this if you wish to only delete the user’s account.'},suspend_user:{title:'Suspend this user',content:'A suspended user can\\'t log in.'}},questions:{page_title:'Questions',unlisted:'Unlisted',post:'Post',votes:'Votes',answers:'Answers',created:'Created',status:'Status',action:'Action',change:'Change',pending:'Pending',filter:{placeholder:'Filter by title, question:id'}},answers:{page_title:'Answers',post:'Post',votes:'Votes',created:'Created',status:'Status',action:'Action',change:'Change',filter:{placeholder:'Filter by title, answer:id'}},general:{page_title:'General',name:{label:'Site name',msg:'Site name cannot be empty.',text:'The name of this site, as used in the title tag.'},site_url:{label:'Site URL',msg:'Site url cannot be empty.',validate:'Please enter a valid URL.',text:'The address of your site.'},short_desc:{label:'Short site description',msg:'Short site description cannot be empty.',text:'Short description, as used in the title tag on homepage.'},desc:{label:'Site description',msg:'Site description cannot be empty.',text:'Describe this site in one sentence, as used in the meta description tag.'},contact_email:{label:'Contact email',msg:'Contact email cannot be empty.',validate:'Contact email is not valid.',text:'Email address of key contact responsible for this site.'},check_update:{label:'Software updates',text:'Automatically check for updates'}},'interface':{page_title:'Interface',language:{label:'Interface language',msg:'Interface language cannot be empty.',text:'User interface language. It will change when you refresh the page.'},time_zone:{label:'Timezone',msg:'Timezone cannot be empty.',text:'Choose a city in the same timezone as you.'}},smtp:{page_title:'SMTP',from_email:{label:'From email',msg:'From email cannot be empty.',text:'The email address which emails are sent from.'},from_name:{label:'From name',msg:'From name cannot be empty.',text:'The name which emails are sent from.'},smtp_host:{label:'SMTP host',msg:'SMTP host cannot be empty.',text:'Your mail server.'},encryption:{label:'Encryption',msg:'Encryption cannot be empty.',text:'For most servers SSL is the recommended option.',ssl:'SSL',tls:'TLS',none:'None'},smtp_port:{label:'SMTP port',msg:'SMTP port must be number 1 ~ 65535.',text:'The port to your mail server.'},smtp_username:{label:'SMTP username',msg:'SMTP username cannot be empty.'},smtp_password:{label:'SMTP password',msg:'SMTP password cannot be empty.'},test_email_recipient:{label:'Test email recipients',text:'Provide email address that will receive test sends.',msg:'Test email recipients is invalid'},smtp_authentication:{label:'Enable authentication',title:'SMTP authentication',msg:'SMTP authentication cannot be empty.',yes:'Yes',no:'No'}},branding:{page_title:'Branding',logo:{label:'Logo',msg:'Logo cannot be empty.',text:'The logo image at the top left of your site. Use a wide rectangular image with a height of 56 and an aspect ratio greater than 3:1. If left blank, the site title text will be shown.'},mobile_logo:{label:'Mobile logo',text:'The logo used on mobile version of your site. Use a wide rectangular image with a height of 56. If left blank, the image from the \"logo\" setting will be used.'},square_icon:{label:'Square icon',msg:'Square icon cannot be empty.',text:'Image used as the base for metadata icons. Should ideally be larger than 512x512.'},favicon:{label:'Favicon',text:'A favicon for your site. To work correctly over a CDN it must be a png. Will be resized to 32x32. If left blank, \"square icon\" will be used.'}},legal:{page_title:'Legal',terms_of_service:{label:'Terms of service',text:'You can add terms of service content here. If you already have a document hosted elsewhere, provide the full URL here.'},privacy_policy:{label:'Privacy policy',text:'You can add privacy policy content here. If you already have a document hosted elsewhere, provide the full URL here.'}},write:{page_title:'Write',restrict_answer:{title:'Answer write',label:'Each user can only write one answer for the same question',text:'Turn off to allow users to write multiple answers to the same question, which may cause answers to be unfocused.'},recommend_tags:{label:'Recommend tags',text:'Recommend tags will show in the dropdown list by default.',msg:{contain_reserved:'recommended tags cannot contain reserved tags'}},required_tag:{title:'Set required tags',label:'Set “Recommend tags” as required tags',text:'Every new question must have at least one recommend tag.'},reserved_tags:{label:'Reserved tags',text:'Reserved tags can only be used by moderator.'}},seo:{page_title:'SEO',permalink:{label:'Permalink',text:'Custom URL structures can improve the usability, and forward-compatibility of your links.'},robots:{label:'robots.txt',text:'This will permanently override any related site settings.'}},themes:{page_title:'Themes',themes:{label:'Themes',text:'Select an existing theme.'},color_scheme:{label:'Color scheme'},navbar_style:{label:'Navbar style'},primary_color:{label:'Primary color',text:'Modify the colors used by your themes'}},css_and_html:{page_title:'CSS and HTML',custom_css:{label:'Custom CSS',text:'This will insert as <link>'},head:{label:'Head',text:'This will insert before </head>'},header:{label:'Header',text:'This will insert after <body>'},footer:{label:'Footer',text:'This will insert before </body>.'},sidebar:{label:'Sidebar',text:'This will insert in sidebar.'}},login:{page_title:'Login',membership:{title:'Membership',label:'Allow new registrations',text:'Turn off to prevent anyone from creating a new account.'},email_registration:{title:'Email registration',label:'Allow email registration',text:'Turn off to prevent anyone creating new account through email.'},allowed_email_domains:{title:'Allowed email domains',text:'Email domains that users must register accounts with. One domain per line. Ignored when empty.'},'private':{title:'Private',label:'Login required',text:'Only logged in users can access this community.'},password_login:{title:'Password login',label:'Allow email and password login',text:'WARNING: If turn off, you may be unable to log in if you have not previously configured other login method.'}},installed_plugins:{title:'Installed Plugins',plugin_link:'Plugins extend and expand the functionality. You may find plugins in the <1>Plugin Repository.',filter:{all:'All',active:'Active',inactive:'Inactive',outdated:'Outdated'},plugins:{label:'Plugins',text:'Select an existing plugin.'},name:'Name',version:'Version',status:'Status',action:'Action',deactivate:'Deactivate',activate:'Activate',settings:'Settings'},settings_users:{title:'Users',avatar:{label:'Default avatar',text:'For users without a custom avatar of their own.'},gravatar_base_url:{label:'Gravatar base URL',text:'URL of the Gravatar provider\\'s API base. Ignored when empty.'},profile_editable:{title:'Profile editable'},allow_update_display_name:{label:'Allow users to change their display name'},allow_update_username:{label:'Allow users to change their username'},allow_update_avatar:{label:'Allow users to change their profile image'},allow_update_bio:{label:'Allow users to change their about me'},allow_update_website:{label:'Allow users to change their website'},allow_update_location:{label:'Allow users to change their location'}},privilege:{title:'Privileges',level:{label:'Reputation required level',text:'Choose the reputation required for the privileges'},msg:{should_be_number:'the input should be number',number_larger_1:'number should be equal or larger than 1'}},badges:{action:'Action',active:'Active',activate:'Activate',all:'All',awards:'Awards',deactivate:'Deactivate',filter:{placeholder:'Filter by name, badge:id'},group:'Group',inactive:'Inactive',name:'Name',show_logs:'Show logs',status:'Status',title:'Badges'}},form:{optional:'(optional)',empty:'cannot be empty',invalid:'is invalid',btn_submit:'Save',not_found_props:'Required property {{ key }} not found.',select:'Select'},page_review:{review:'Review',proposed:'proposed',question_edit:'Question edit',answer_edit:'Answer edit',tag_edit:'Tag edit',edit_summary:'Edit summary',edit_question:'Edit question',edit_answer:'Edit answer',edit_tag:'Edit tag',empty:'No review tasks left.',approve_revision_tip:'Do you approve this revision?',approve_flag_tip:'Do you approve this flag?',approve_post_tip:'Do you approve this post?',approve_user_tip:'Do you approve this user?',suggest_edits:'Suggested edits',flag_post:'Flag post',flag_user:'Flag user',queued_post:'Queued post',queued_user:'Queued user',filter_label:'Type',reputation:'reputation',flag_post_type:'Flagged this post as {{ type }}.',flag_user_type:'Flagged this user as {{ type }}.',edit_post:'Edit post',list_post:'List post',unlist_post:'Unlist post'},timeline:{undeleted:'undeleted',deleted:'deleted',downvote:'downvote',upvote:'upvote',accept:'accept',cancelled:'cancelled',commented:'commented',rollback:'rollback',edited:'edited',answered:'answered',asked:'asked',closed:'closed',reopened:'reopened',created:'created',pin:'pinned',unpin:'unpinned',show:'listed',hide:'unlisted',title:'History for',tag_title:'Timeline for',show_votes:'Show votes',n_or_a:'N/A',title_for_question:'Timeline for',title_for_answer:'Timeline for answer to {{ title }} by {{ author }}',title_for_tag:'Timeline for tag',datetime:'Datetime',type:'Type',by:'By',comment:'Comment',no_data:'We couldn\\'t find anything.'},users:{title:'Users',users_with_the_most_reputation:'Users with the highest reputation scores this week',users_with_the_most_vote:'Users who voted the most this week',staffs:'Our community staff',reputation:'reputation',votes:'votes'},prompt:{leave_page:'Are you sure you want to leave the page?',changes_not_save:'Your changes may not be saved.'},draft:{discard_confirm:'Are you sure you want to discard your draft?'},messages:{post_deleted:'This post has been deleted.',post_pin:'This post has been pinned.',post_unpin:'This post has been unpinned.',post_hide_list:'This post has been hidden from list.',post_show_list:'This post has been shown to list.',post_reopen:'This post has been reopened.',post_list:'This post has been listed.',post_unlist:'This post has been unlisted.',post_pending:'Your post is awaiting review. This is a preview, it will be visible after it has been approved.'}}};","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport type { IndexRouteObject, NonIndexRouteObject } from 'react-router-dom';\n\nimport { guard } from '@/utils';\nimport type { TGuardFunc } from '@/utils/guard';\nimport { editCheck } from '@/services';\nimport { isEditable } from '@/utils/guard';\n\ntype IndexRouteNode = Omit;\ntype NonIndexRouteNode = Omit;\ntype UnionRouteNode = IndexRouteNode | NonIndexRouteNode;\n\nexport type RouteNode = UnionRouteNode & {\n page: string;\n children?: RouteNode[];\n /**\n * a method to auto guard route before route enter\n * if the `ok` field in guard returned `TGuardResult` is true,\n * it means the guard passed then enter the route.\n * if guard returned the `TGuardResult` has `redirect` field,\n * then auto redirect route to the `redirect` target.\n */\n guard?: TGuardFunc;\n};\n\nconst routes: RouteNode[] = [\n {\n path: '/',\n page: 'pages/Layout',\n loader: async () => {\n await guard.setupApp();\n return null;\n },\n guard: () => {\n const gr = guard.shouldLoginRequired();\n if (!gr.ok) {\n return gr;\n }\n return guard.notForbidden();\n },\n children: [\n // question and answer\n {\n // side nav layout\n page: 'pages/SideNavLayout',\n children: [\n {\n index: true,\n page: 'pages/Questions',\n },\n {\n path: 'questions',\n page: 'pages/Questions',\n },\n {\n path: 'questions/ask',\n page: 'pages/Questions/Ask',\n guard: () => {\n return guard.activated();\n },\n },\n {\n path: 'posts/:qid/edit',\n page: 'pages/Questions/Ask',\n guard: () => {\n return guard.activated();\n },\n },\n {\n path: 'posts/:qid/:aid/edit',\n page: 'pages/Questions/EditAnswer',\n loader: async ({ params }) => {\n const ret = await editCheck(params.aid as string, true);\n return ret;\n },\n guard: (args) => {\n return isEditable(args);\n },\n },\n {\n path: 'questions/:qid',\n page: 'pages/Questions/Detail',\n },\n {\n path: 'questions/:qid/:slugPermalink',\n page: 'pages/Questions/Detail',\n },\n {\n path: 'questions/:qid/:slugPermalink/:aid',\n page: 'pages/Questions/Detail',\n },\n {\n path: '/search',\n page: 'pages/Search',\n guard: () => {\n return guard.googleSnapshotRedirect();\n },\n },\n // tags\n {\n path: 'tags',\n page: 'pages/Tags',\n },\n {\n path: 'tags/create',\n page: 'pages/Tags/Create',\n guard: () => {\n return guard.isAdminOrModerator();\n },\n },\n {\n path: 'tags/:tagName',\n page: 'pages/Tags/Detail',\n },\n {\n path: 'tags/:tagName/info',\n page: 'pages/Tags/Info',\n },\n {\n path: 'tags/:tagId/edit',\n page: 'pages/Tags/Edit',\n guard: () => {\n return guard.activated();\n },\n },\n // for users\n {\n path: 'users',\n page: 'pages/Users',\n },\n {\n path: 'users/:username',\n page: 'pages/Users/Personal',\n },\n {\n path: 'users/:username/:tabName',\n page: 'pages/Users/Personal',\n },\n {\n path: 'users/settings',\n page: 'pages/Users/Settings',\n guard: () => {\n return guard.logged();\n },\n children: [\n {\n index: true,\n page: 'pages/Users/Settings/Profile',\n },\n {\n path: 'profile',\n page: 'pages/Users/Settings/Profile',\n },\n {\n path: 'notify',\n page: 'pages/Users/Settings/Notification',\n },\n {\n path: 'account',\n page: 'pages/Users/Settings/Account',\n },\n {\n path: 'interface',\n page: 'pages/Users/Settings/Interface',\n },\n {\n path: ':slug_name',\n page: 'pages/Users/Settings/Plugins',\n },\n ],\n },\n {\n path: 'users/notifications/:type/:subType?',\n page: 'pages/Users/Notifications',\n },\n {\n path: '/posts/:qid/timeline',\n page: 'pages/Timeline',\n guard: () => {\n return guard.logged();\n },\n },\n {\n path: '/posts/:qid/:aid/timeline',\n page: 'pages/Timeline',\n guard: () => {\n return guard.logged();\n },\n },\n {\n path: '/tags/:tid/timeline',\n page: 'pages/Timeline',\n guard: () => {\n return guard.logged();\n },\n },\n // for review\n {\n path: 'review',\n page: 'pages/Review',\n },\n {\n path: '/badges',\n page: 'pages/Badges/index',\n },\n {\n path: '/badges/:badge_id',\n page: 'pages/Badges/Detail/index',\n },\n ],\n },\n {\n path: 'users/login',\n page: 'pages/Users/Login',\n guard: () => {\n const notLogged = guard.notLogged();\n if (notLogged.ok) {\n return notLogged;\n }\n\n return guard.notActivated();\n },\n },\n {\n path: 'users/register',\n page: 'pages/Users/Register',\n guard: () => {\n const allowNew = guard.allowNewRegistration();\n if (!allowNew.ok) {\n return allowNew;\n }\n const notLogged = guard.notLogged();\n if (notLogged.ok) {\n const sa = guard.singUpAgent();\n if (!sa.ok) {\n return sa;\n }\n }\n return notLogged;\n },\n },\n {\n path: 'users/logout',\n page: 'pages/Users/Logout',\n guard: () => {\n return guard.loggedRedirectHome();\n },\n },\n {\n path: 'users/account-recovery',\n page: 'pages/Users/AccountForgot',\n guard: () => {\n return guard.notLogged();\n },\n },\n {\n path: 'users/change-email',\n page: 'pages/Users/ChangeEmail',\n },\n {\n path: 'users/password-reset',\n page: 'pages/Users/PasswordReset',\n },\n {\n path: 'users/account-activation',\n page: 'pages/Users/ActiveEmail',\n },\n {\n path: 'users/account-activation/success',\n page: 'pages/Users/ActivationResult',\n guard: () => {\n return guard.activated();\n },\n },\n {\n path: '/users/account-activation/failed',\n page: 'pages/Users/ActivationResult',\n guard: () => {\n return guard.notActivated();\n },\n },\n {\n path: '/users/confirm-new-email',\n page: 'pages/Users/ConfirmNewEmail',\n },\n {\n path: '/users/account-suspended',\n page: 'pages/Users/Suspended',\n guard: () => {\n return guard.forbidden();\n },\n },\n {\n path: '/users/confirm-email',\n page: 'pages/Users/OauthBindEmail',\n },\n {\n path: '/users/auth-landing',\n page: 'pages/Users/AuthCallback',\n },\n // for admin\n {\n path: 'admin',\n page: 'pages/Admin',\n loader: async () => {\n await guard.pullLoggedUser();\n return null;\n },\n guard: () => {\n return guard.admin();\n },\n children: [\n {\n index: true,\n page: 'pages/Admin/Dashboard',\n },\n {\n path: 'dashboard',\n page: 'pages/Admin/Dashboard',\n },\n {\n path: 'answers',\n page: 'pages/Admin/Answers',\n },\n {\n path: 'themes',\n page: 'pages/Admin/Themes',\n },\n {\n path: 'css-html',\n page: 'pages/Admin/CssAndHtml',\n },\n {\n path: 'general',\n page: 'pages/Admin/General',\n },\n {\n path: 'interface',\n page: 'pages/Admin/Interface',\n },\n {\n path: 'questions',\n page: 'pages/Admin/Questions',\n },\n {\n path: 'users',\n page: 'pages/Admin/Users',\n },\n {\n path: 'users/:user_id',\n page: 'pages/Admin/UserOverview',\n },\n {\n path: 'smtp',\n page: 'pages/Admin/Smtp',\n },\n {\n path: 'branding',\n page: 'pages/Admin/Branding',\n },\n {\n path: 'legal',\n page: 'pages/Admin/Legal',\n },\n {\n path: 'write',\n page: 'pages/Admin/Write',\n },\n {\n path: 'seo',\n page: 'pages/Admin/Seo',\n },\n {\n path: 'login',\n page: 'pages/Admin/Login',\n },\n {\n path: 'settings-users',\n page: 'pages/Admin/SettingsUsers',\n },\n {\n path: 'privileges',\n page: 'pages/Admin/Privileges',\n },\n {\n path: 'installed-plugins',\n page: 'pages/Admin/Plugins/Installed',\n },\n {\n path: ':slug_name',\n page: 'pages/Admin/Plugins/Config',\n },\n {\n path: 'badges',\n page: 'pages/Admin/Badges',\n },\n ],\n },\n {\n path: '/user-center/auth',\n page: 'pages/UserCenter/Auth',\n guard: () => {\n const notLogged = guard.notLogged();\n return notLogged;\n },\n },\n {\n path: '/user-center/auth-failed',\n page: 'pages/UserCenter/AuthFailed',\n },\n {\n path: '*',\n page: 'pages/404',\n },\n {\n path: '50x',\n page: 'pages/50X',\n },\n ],\n },\n {\n path: '/',\n page: 'pages/Layout',\n loader: async () => {\n await guard.setupApp();\n return null;\n },\n children: [\n {\n page: 'pages/SideNavLayout',\n children: [\n {\n page: 'pages/Legal',\n children: [\n {\n path: 'tos',\n page: 'pages/Legal/Tos',\n },\n {\n path: 'privacy',\n page: 'pages/Legal/Privacy',\n },\n ],\n },\n ],\n },\n {\n path: '/users/unsubscribe',\n page: 'pages/Users/Unsubscribe',\n },\n {\n path: '403',\n page: 'pages/403',\n },\n ],\n },\n {\n path: '/install',\n page: 'pages/Install',\n },\n {\n path: '/maintenance',\n page: 'pages/Maintenance',\n },\n];\nexport default routes;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { HttpErrorContent } from '@/components';\n\nconst Index = ({ errCode = '50X', errMsg = '' }) => {\n return ;\n};\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC, ReactNode, useEffect, useState } from 'react';\nimport { useNavigate, useLoaderData } from 'react-router-dom';\n\nimport { floppyNavigation } from '@/utils';\nimport { TGuardFunc, TGuardResult } from '@/utils/guard';\n\nimport RouteErrorBoundary from './RouteErrorBoundary';\n\nconst RouteGuard: FC<{\n children: ReactNode;\n onEnter: TGuardFunc;\n path?: string;\n page?: string;\n}> = ({ children, onEnter, path, page }) => {\n const navigate = useNavigate();\n const loaderData = useLoaderData();\n const [gk, setKeeper] = useState({\n ok: true,\n });\n const [gkError, setGkError] = useState();\n const applyGuard = () => {\n if (typeof onEnter !== 'function') {\n return;\n }\n\n const gr = onEnter({\n loaderData,\n path,\n page,\n });\n\n setKeeper(gr);\n if (\n gr.ok === false &&\n gr.error?.code &&\n /403|404|50X/i.test(gr.error.code.toString())\n ) {\n setGkError(gr.error);\n return;\n }\n setGkError(undefined);\n if (gr.redirect) {\n floppyNavigation.navigate(gr.redirect, {\n handler: navigate,\n options: { replace: true },\n });\n }\n };\n useEffect(() => {\n /**\n * By detecting changes to location.href, many unnecessary tests can be avoided\n */\n applyGuard();\n }, [window.location.href]);\n\n let asOK = gk.ok;\n if (gk.ok === false && gk.redirect) {\n /**\n * It is possible that the route guard verification fails\n * but the current page is already the target page for the route guard jump\n * This should render `children`!\n */\n asOK = floppyNavigation.equalToCurrentHref(gk.redirect);\n }\n return (\n <>\n {asOK ? children : null}\n {gkError ? : null}\n \n );\n};\n\nexport default RouteGuard;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { Suspense, lazy } from 'react';\nimport { RouteObject } from 'react-router-dom';\n\nimport Layout from '@/pages/Layout';\nimport { mergeRoutePlugins } from '@/utils/pluginKit';\n\nimport baseRoutes, { RouteNode } from './routes';\nimport RouteGuard from './RouteGuard';\nimport RouteErrorBoundary from './RouteErrorBoundary';\n\nconst routes: RouteNode[] = [];\n\nconst routeWrapper = (routeNodes: RouteNode[], root: RouteNode[]) => {\n routeNodes.forEach((rn) => {\n if (rn.page === 'pages/Layout') {\n rn.element = rn.guard ? (\n \n \n \n ) : (\n \n );\n rn.errorElement = ;\n } else {\n /**\n * cannot use a fully dynamic import statement\n * ref: https://webpack.js.org/api/module-methods/#import-1\n */\n\n let Ctrl;\n\n if (typeof rn.page === 'string') {\n const pagePath = rn.page.replace('pages/', '');\n Ctrl = lazy(() => import(`@/pages/${pagePath}`));\n } else {\n Ctrl = rn.page;\n }\n\n rn.element = (\n \n {rn.guard ? (\n \n \n \n ) : (\n \n )}\n \n );\n rn.errorElement = ;\n }\n root.push(rn);\n const children = Array.isArray(rn.children) ? rn.children : null;\n if (children) {\n rn.children = [];\n routeWrapper(children, rn.children);\n }\n });\n};\nconst mergedRoutes = mergeRoutePlugins(baseRoutes);\n\nrouteWrapper(mergedRoutes, routes);\n\nexport default routes as RouteObject[];\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { RouterProvider, createBrowserRouter } from 'react-router-dom';\n\nimport './i18n/init';\n\nimport '@/utils/pluginKit';\nimport routes from '@/router';\n\nfunction App() {\n const router = createBrowserRouter(routes, {\n basename: process.env.REACT_APP_BASE_URL,\n });\n return ;\n}\n\nexport default App;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport React from 'react';\n\nimport ReactDOM from 'react-dom/client';\n\nimport App from './App';\n\nimport './index.scss';\n\nconst root = ReactDOM.createRoot(\n document.getElementById('root') as HTMLElement,\n);\n\n/**\n * Uniformly hide broken images\n * - The `onload` event for elements such as `img` can only be `capture` on `document` (window cannot).\n * - For images with an empty `src` attribute, sometimes the browser will simply display the broken image without reporting an 'error' event.\n */\nconst handleImgLoad = (evt: Event | UIEvent) => {\n const { target } = evt;\n\n if (target === null || !(target instanceof Element)) {\n return;\n }\n if (!/IMG/i.test(target.nodeName)) {\n return;\n }\n\n if (/error/i.test(evt.type)) {\n target.classList.add('broken');\n const attrSrc = target.getAttribute('src');\n const attrAlt = target.getAttribute('alt')?.trim();\n // Images without the `src` attribute are hidden directly by `css`.\n // Images with `alt` content are not hidden - the display of the `alt` content is also hidden.\n if (attrSrc && !attrAlt) {\n target.classList.add('invisible');\n }\n }\n\n if (/load/i.test(evt.type)) {\n target.classList.remove('broken', 'invisible');\n }\n};\n\n/**\n *Automatically jump when the href of a Link component within a matching project is not a front-end route.\n *\n */\nconst handleClickLink = (evt: Event) => {\n const { target } = evt;\n\n if (target === null || !(target instanceof Element)) {\n return;\n }\n if (!/A/i.test(target.nodeName)) {\n return;\n }\n\n if (target.getAttribute('href')?.includes('/answer/api/')) {\n evt.preventDefault();\n window.location.href = target.getAttribute('href') || '';\n }\n};\n\ndocument.addEventListener('error', handleImgLoad, true);\ndocument.addEventListener('load', handleImgLoad, true);\ndocument.addEventListener('click', handleClickLink, true);\n\nroot.render(\n \n \n ,\n);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { useLayoutEffect, useState, useRef } from 'react';\nimport { Modal, Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport ReactDOM from 'react-dom/client';\n\nimport type * as Type from '@/common/interface';\nimport { SchemaForm, JSONSchema, UISchema, initFormData } from '@/components';\nimport { handleFormError } from '@/utils';\nimport pattern from '@/common/pattern';\n\nconst div = document.createElement('div');\nconst root = ReactDOM.createRoot(div);\n\ninterface IProps {\n title?: string;\n onConfirm?: (formData: any) => Promise;\n}\nconst useInitProfileModal = (props: IProps = {}, userData) => {\n const { t } = useTranslation('translation', {\n keyPrefix: 'admin.edit_profile_modal',\n });\n\n const { title = t('title'), onConfirm } = props;\n const [visible, setVisibleState] = useState(false);\n const [userId, setUserId] = useState('');\n const schema: JSONSchema = {\n title: t('title'),\n required: ['display_name'],\n properties: {\n display_name: {\n type: 'string',\n title: \"Profile Name\",\n }\n },\n };\n const uiSchema: UISchema = {\n display_name: {\n 'ui:options': {\n inputType: 'text',\n validator: (value) => {\n const MIN_LENGTH = 3;\n const MAX_LENGTH = 30;\n if (value.length < MIN_LENGTH || value.length > MAX_LENGTH) {\n return t('form.fields.display_name.msg_range');\n }\n return true;\n },\n },\n },\n };\n const [formData, setFormData] = useState(\n initFormData(schema),\n );\n\n const formRef = useRef<{\n validator: () => Promise;\n }>(null);\n\n const onClose = () => {\n setFormData(formData);\n setVisibleState(false);\n };\n\n const onShow = (user_id: string) => {\n setUserId(user_id);\n setVisibleState(true);\n };\n\n const handleSubmit = async (event) => {\n event.preventDefault();\n event.stopPropagation();\n const isValid = await formRef.current?.validator();\n\n if (!isValid) {\n return;\n }\n\n if (onConfirm instanceof Function) {\n onConfirm({\n display_name: formData.display_name.value,\n user_id: userId,\n })\n .then(() => {\n setUserId('');\n onClose();\n })\n .catch((err) => {\n if (err.isError) {\n const data = handleFormError(err, formData);\n setFormData({ ...data });\n }\n });\n }\n };\n\n const handleOnChange = (data) => {\n setFormData(data);\n };\n\n useLayoutEffect(() => {\n root.render(\n \n \n Account Profile\n \n \n \n \n \n \n \n ,\n );\n });\n return {\n onClose,\n onShow,\n };\n};\n\nexport default useInitProfileModal;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { FC, memo, useEffect } from 'react';\nimport { Outlet, useLocation, ScrollRestoration } from 'react-router-dom';\nimport { HelmetProvider } from 'react-helmet-async';\n\nimport { SWRConfig } from 'swr';\n\nimport { toastStore, loginToContinueStore, errorCodeStore, loggedUserInfoStore } from '@/stores';\nimport {\n Header,\n Toast,\n Customize,\n CustomizeTheme,\n PageTags,\n HttpErrorContent,\n} from '@/components';\nimport { LoginToContinueModal, BadgeModal } from '@/components/Modal';\nimport { changeTheme } from '@/utils';\nimport { modifyUserInfo, useQueryNotificationStatus, } from '@/services';\nimport { useToast } from '@/hooks';\nimport { useTranslation } from 'react-i18next';\nimport useInitProfileModal from '@/hooks/useInitProfileModal';\nimport { ModifyUserReq } from '@/common/interface';\n\nconst Layout: FC = () => {\n const location = useLocation();\n const { msg: toastMsg, variant, clear: toastClear } = toastStore();\n const closeToast = () => {\n toastClear();\n };\n const { code: httpStatusCode, reset: httpStatusReset } = errorCodeStore();\n const { show: showLoginToContinueModal } = loginToContinueStore();\n const { data: notificationData } = useQueryNotificationStatus();\n const user = loggedUserInfoStore.getState().user;\n\n useEffect(() => {\n httpStatusReset();\n if(user && user.id) {\n if (\n user.username.includes('tmp_username') ||\n user.display_name.includes('tmp_username')\n ) {\n changeProfileModal.onShow(user.id);\n }\n }\n }, [location]);\n\n useEffect(() => {\n const systemThemeQuery = window.matchMedia('(prefers-color-scheme: dark)');\n function handleSystemThemeChange(event) {\n if (event.matches) {\n changeTheme('dark');\n } else {\n changeTheme('light');\n }\n }\n\n systemThemeQuery.addListener(handleSystemThemeChange);\n\n return () => {\n systemThemeQuery.removeListener(handleSystemThemeChange);\n };\n }, []);\n const nameToUsername = (name: string) => {\n // toLowerCase and replace space with dash\n\n let username = name.toLowerCase().replace(/ /g, '-');\n if (username.length > 25) {\n username = username.slice(0, 25);\n }\n // if name is less than 4 characters, add random string\n if (username.length < 4) {\n username += Math.random().toString(36).substring(2, 5);\n }\n return username;\n };\n\n const changeProfileModal = useInitProfileModal(\n {\n onConfirm: (rd) => {\n return new Promise((resolve, reject) => {\n const username = nameToUsername(rd.display_name);\n const modifiedRd: ModifyUserReq = {\n display_name: rd.display_name,\n username: username,\n avatar: user.avatar,\n bio: user.bio,\n location: user.location,\n website: user.website,\n };\n\n const tryModify = async (username: string, count: number) => {\n if (count > 0) {\n username = `${username}-${count}`;\n }\n modifiedRd.username = username;\n\n try {\n await modifyUserInfo(modifiedRd);\n resolve(true); // Resolve promise after success\n } catch (e: any) {\n console.log('e: ', e);\n\n // Check if the error is due to username duplication and retry\n if (e.code === 400 && e.msg === 'Username is already in use.') {\n if (count < 20) {\n // Prevent infinite recursion with a limit of 10 retries\n await tryModify(username, count + 1); // Await recursive call\n } else {\n reject(\n new Error('Too many attempts to resolve username conflict'),\n );\n }\n } else {\n reject(e); // Reject for any other error\n }\n }\n };\n\n // Start with the initial username and count 0\n tryModify(username, 0)\n .then(() => {\n // Reload the page after successful modification\n window.location.reload();\n })\n .catch((error) => {\n console.error('Error modifying profile:', error);\n reject(error);\n });\n });\n },\n },\n user,\n );\n\n\n\n\n\n return (\n \n \n \n \n
\n {/* eslint-disable-next-line jsx-a11y/click-events-have-key-events */}\n
\n {httpStatusCode ? (\n \n ) : (\n \n )}\n
\n \n \n \n \n \n \n \n );\n};\n\nexport default memo(Layout);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nexport const REACT_BASE_PATH = process.env.REACT_APP_BASE_URL || '';\nexport const BASE_ORIGIN = `${window.location.origin}${REACT_BASE_PATH}`;\n\nexport const RouteAlias = {\n home: '/',\n login: 'https://selfpublishingtitans.com/login',\n signUp: 'https://selfpublishingtitans.com/auth/register',\n inactive: '/users/login?status=inactive',\n accountRecovery: '/users/account-recovery',\n changeEmail: '/users/change-email',\n passwordReset: '/users/password-reset',\n accountActivation: '/users/account-activation',\n activationSuccess: '/users/account-activation/success',\n activationFailed: '/users/account-activation/failed',\n suspended: '/users/account-suspended',\n confirmNewEmail: '/users/confirm-new-email',\n confirmEmail: '/users/confirm-email',\n authLanding: '/users/auth-landing',\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { seoSettingStore } from '@/stores';\n\nconst tagLanding = (slugName: string) => {\n const r = slugName ? `/tags/${encodeURIComponent(slugName)}` : '/tags';\n return r;\n};\n\nconst tagInfo = (slugName: string) => {\n const r = slugName ? `/tags/${encodeURIComponent(slugName)}/info` : '/tags';\n return r;\n};\n\nconst tagEdit = (tagId: string) => {\n const r = `/tags/${tagId}/edit`;\n return r;\n};\n\nconst questionLanding = (questionId: string = '', slugTitle: string = '') => {\n const { seo } = seoSettingStore.getState();\n if (!questionId) {\n return slugTitle ? `/questions/null/${slugTitle}` : '/questions/null';\n }\n // @ts-ignore\n if (/[13]/.test(seo.permalink) && slugTitle) {\n return `/questions/${questionId}/${encodeURIComponent(slugTitle)}`;\n }\n\n return `/questions/${questionId}`;\n};\n\nconst answerLanding = (params: {\n questionId: string;\n slugTitle?: string;\n answerId: string;\n}) => {\n const questionLandingUrl = questionLanding(\n params.questionId,\n params.slugTitle,\n );\n return `${questionLandingUrl}/${params.answerId}`;\n};\n\nexport const pathFactory = {\n tagLanding,\n tagInfo,\n tagEdit,\n questionLanding,\n answerLanding,\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport qs from 'qs';\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const useQueryBadges = (params) => {\n const apiUrl = `/answer/admin/api/badges?${qs.stringify(params)}`;\n const { data, error, mutate } = useSWR<\n Type.ListResult,\n Error\n >(apiUrl, request.instance.get);\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const updateBadgeStatus = (params) => {\n return request.put('/answer/admin/api/badge/status', params);\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const useLegalTos = () => {\n const apiUrl = '/answer/api/v1/siteinfo/legal?info_type=tos';\n const { data, error, mutate } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const useLegalPrivacy = () => {\n const apiUrl = '/answer/api/v1/siteinfo/legal?info_type=privacy';\n const { data, error, mutate } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\nimport qs from 'qs';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const useAnswerSearch = (\n params: Type.AdminContentsReq & { question_id?: string },\n) => {\n const apiUrl = `/answer/admin/api/answer/page?${qs.stringify(params)}`;\n const { data, error, mutate } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const changeAnswerStatus = (\n answer_id: string,\n status: Type.AdminAnswerStatus,\n) => {\n return request.put('/answer/admin/api/answer/status', {\n answer_id,\n status,\n });\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\nimport qs from 'qs';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const putReport = (params) => {\n return request.instance.put('/answer/admin/api/report', params);\n};\n\nexport const useFlagSearch = (params: Type.AdminFlagsReq) => {\n const apiUrl = `/answer/admin/api/reports/page?${qs.stringify(params)}`;\n const { data, error, mutate } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport qs from 'qs';\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const useQuestionSearch = (params: Type.AdminContentsReq) => {\n const apiUrl = `/answer/admin/api/question/page?${qs.stringify(params)}`;\n const { data, error, mutate } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const changeQuestionStatus = (\n question_id: string,\n status: Type.AdminQuestionStatus,\n) => {\n return request.put('/answer/admin/api/question/status', {\n question_id,\n status,\n });\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport interface AdminSettingsUsers {\n allow_update_avatar: boolean;\n allow_update_bio: boolean;\n allow_update_display_name: boolean;\n allow_update_location: boolean;\n allow_update_username: boolean;\n allow_update_website: boolean;\n default_avatar: string;\n gravatar_base_url: string;\n}\n\ninterface PrivilegeLevel {\n level: number;\n level_desc: string;\n privileges: {\n label: string;\n value: number;\n key: string;\n }[];\n}\nexport interface AdminSettingsPrivilege {\n selected_level: number;\n options: PrivilegeLevel[];\n}\n\nexport interface AdminSettingsPrivilegeReq {\n level: number;\n custom_privileges?: {\n label?: string;\n value: number;\n key: string;\n }[];\n}\n\nexport const useGeneralSetting = () => {\n const apiUrl = `/answer/admin/api/siteinfo/general`;\n const { data, error } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n\n return {\n data,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const updateGeneralSetting = (params: Type.AdminSettingsGeneral) => {\n const apiUrl = `/answer/admin/api/siteinfo/general`;\n return request.put(apiUrl, params);\n};\n\nexport const useInterfaceSetting = () => {\n const apiUrl = `/answer/admin/api/siteinfo/interface`;\n const { data, error } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const updateInterfaceSetting = (params: Type.AdminSettingsInterface) => {\n const apiUrl = `/answer/admin/api/siteinfo/interface`;\n return request.put(apiUrl, params);\n};\n\nexport const useSmtpSetting = () => {\n const apiUrl = `/answer/admin/api/setting/smtp`;\n const { data, error } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const updateSmtpSetting = (params: Type.AdminSettingsSmtp) => {\n const apiUrl = `/answer/admin/api/setting/smtp`;\n return request.put(apiUrl, params);\n};\n\nexport const getAdminLanguageOptions = () => {\n const apiUrl = `/answer/admin/api/language/options`;\n return request.get(apiUrl);\n};\n\nexport const getBrandSetting = () => {\n return request.get('/answer/admin/api/siteinfo/branding');\n};\n\nexport const brandSetting = (params: Type.AdminSettingBranding) => {\n return request.put('/answer/admin/api/siteinfo/branding', params);\n};\n\nexport const getRequireAndReservedTag = () => {\n return request.get('/answer/admin/api/siteinfo/write');\n};\n\nexport const postRequireAndReservedTag = (params) => {\n return request.put('/answer/admin/api/siteinfo/write', params);\n};\n\nexport const getLegalSetting = () => {\n return request.get(\n '/answer/admin/api/siteinfo/legal',\n );\n};\n\nexport const putLegalSetting = (params: Type.AdminSettingsLegal) => {\n return request.put('/answer/admin/api/siteinfo/legal', params);\n};\n\nexport const getSeoSetting = () => {\n return request.get('/answer/admin/api/siteinfo/seo');\n};\n\nexport const putSeoSetting = (params: Type.AdminSettingsSeo) => {\n return request.put('/answer/admin/api/siteinfo/seo', params);\n};\n\nexport const getThemeSetting = () => {\n return request.get(\n '/answer/admin/api/siteinfo/theme',\n );\n};\n\nexport const putThemeSetting = (params: Type.AdminSettingsTheme) => {\n return request.put('/answer/admin/api/siteinfo/theme', params);\n};\n\nexport const getPageCustom = () => {\n return request.get(\n '/answer/admin/api/siteinfo/custom-css-html',\n );\n};\n\nexport const putPageCustom = (params: Type.AdminSettingsCustom) => {\n return request.put('/answer/admin/api/siteinfo/custom-css-html', params);\n};\n\nexport const getLoginSetting = () => {\n return request.get(\n '/answer/admin/api/siteinfo/login',\n );\n};\n\nexport const putLoginSetting = (params: Type.AdminSettingsLogin) => {\n return request.put('/answer/admin/api/siteinfo/login', params);\n};\n\nexport const getUsersSetting = () => {\n return request.get('/answer/admin/api/siteinfo/users');\n};\n\nexport const putUsersSetting = (params: AdminSettingsUsers) => {\n return request.put('/answer/admin/api/siteinfo/users', params);\n};\n\nexport const getPrivilegeSetting = () => {\n return request.get(\n '/answer/admin/api/setting/privileges',\n );\n};\n\nexport const putPrivilegeSetting = (params: AdminSettingsPrivilegeReq) => {\n return request.put('/answer/admin/api/setting/privileges', params);\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport qs from 'qs';\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const changeUserStatus = (params) => {\n return request.put('/answer/admin/api/user/status', params);\n};\n\nexport const useQueryUsers = (params) => {\n const apiUrl = `/answer/admin/api/users/page?${qs.stringify(params)}`;\n const { data, error, mutate } = useSWR(\n apiUrl,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const getUserRoles = () => {\n return request.get('/answer/admin/api/roles');\n};\n\nexport const changeUserRole = (params) => {\n return request.put('/answer/admin/api/user/role', params);\n};\n\nexport const addUser = (params: {\n display_name: string;\n email: string;\n password: string;\n}) => {\n return request.post('/answer/admin/api/user', params);\n};\n\nexport const addUsers = (params: { users: string }) => {\n return request.post('/answer/admin/api/users', params);\n};\n\nexport const updateUserPassword = (params: {\n password: string;\n user_id: string;\n}) => {\n return request.put('/answer/admin/api/user/password', params);\n};\n\nexport const updateUserProfile = (params: {\n display_name: string;\n username: string;\n email: string;\n user_id: string;\n}) => {\n return request.put('/answer/admin/api/user/profile', params);\n};\n\nexport const getUserActivation = (userId: string) => {\n const apiUrl = `/answer/admin/api/user/activation`;\n return request.get<{\n activation_url: string;\n }>(apiUrl, {\n params: {\n user_id: userId,\n },\n });\n};\n\nexport const postUserActivation = (userId: string) => {\n const apiUrl = `/answer/admin/api/user/activation`;\n return request.post(apiUrl, {\n user_id: userId,\n });\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\n\nimport * as Type from '@/common/interface';\nimport request from '@/utils/request';\n\nexport const useDashBoard = () => {\n const apiUrl = `/answer/admin/api/dashboard`;\n const { data, error } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n };\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport qs from 'qs';\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport { UIOptions, UIWidget } from '@/components/SchemaForm';\n\nexport interface PluginOption {\n label: string;\n value: string;\n}\n\nexport interface PluginItem {\n name: string;\n type: UIWidget;\n title: string;\n description: string;\n ui_options?: UIOptions;\n options?: PluginOption[];\n value?: string;\n required?: boolean;\n}\n\nexport interface PluginConfig {\n name: string;\n slug_name: string;\n config_fields: PluginItem[];\n}\n\nexport const useQueryPlugins = (params) => {\n const apiUrl = `/answer/admin/api/plugins?${qs.stringify(params)}`;\n const { data, error, mutate } = useSWR(\n apiUrl,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const updatePluginStatus = (params) => {\n return request.put('/answer/admin/api/plugin/status', params);\n};\n\nexport const useQueryPluginConfig = (params) => {\n const apiUrl = `/answer/admin/api/plugin/config?${qs.stringify(params)}`;\n const { data, error, mutate } = useSWR(\n apiUrl,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const updatePluginConfig = (params) => {\n return request.put('/answer/admin/api/plugin/config', params);\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport qs from 'qs';\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const uploadImage = (params: { file: File; type: Type.UploadType }) => {\n const form = new FormData();\n form.append('source', String(params.type));\n form.append('file', params.file);\n return request.post('/answer/api/v1/file', form);\n};\n\nexport const queryQuestionByTitle = (title: string) => {\n return request.get(`/answer/api/v1/question/similar?title=${title}`);\n};\n\nexport const useQueryTags = (params) => {\n const { data, error, mutate } = useSWR(\n `/answer/api/v1/tags/page?${qs.stringify(params, {\n skipNulls: true,\n })}`,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const useQueryRevisions = (object_id: string | undefined) => {\n return useSWR>(\n object_id ? `/answer/api/v1/revisions?object_id=${object_id}` : '',\n request.instance.get,\n );\n};\n\nexport const useQueryComments = (params) => {\n if (params.page === 0) {\n params.query_cond = 'vote';\n params.page = 1;\n } else {\n // only first page need commentId\n params.query_cond = '';\n delete params.comment_id;\n }\n return useSWR(\n `/answer/api/v1/comment/page?${qs.stringify(params, {\n skipNulls: true,\n })}`,\n request.instance.get,\n );\n};\n\nexport const updateComment = (params) => {\n return request.put('/answer/api/v1/comment', params);\n};\n\nexport const deleteComment = (id, imgCode: Type.ImgCodeReq = {}) => {\n return request.delete('/answer/api/v1/comment', {\n comment_id: id,\n ...imgCode,\n });\n};\n\nexport const addComment = (params) => {\n return request.post('/answer/api/v1/comment', params);\n};\n\nexport const updateReaction = (params) => {\n return request.put('/answer/api/v1/meta/reaction', params);\n};\n\nexport const queryReactions = (object_id: string) => {\n return request.get(\n `/answer/api/v1/meta/reaction?object_id=${object_id}`,\n );\n};\n\nexport const queryTags = (tag: string) => {\n return request.get(\n `/answer/api/v1/question/tags?tag=${encodeURIComponent(tag)}`,\n );\n};\n\nexport const useQueryAnswerInfo = (id: string) => {\n return useSWR<{\n info;\n question;\n }>(`/answer/api/v1/answer/info?id=${id}`, request.instance.get);\n};\n\nexport const modifyQuestion = (\n params: Type.QuestionParams & { id: string; edit_summary: string },\n) => {\n return request.put(`/answer/api/v1/question`, params);\n};\n\nexport const modifyAnswer = (params: Type.AnswerParams) => {\n return request.put(`/answer/api/v1/answer`, params);\n};\n\nexport const login = (params: Type.LoginReqParams) => {\n return request.post(\n '/answer/api/v1/user/login/email',\n params,\n );\n};\n\nexport const register = (params: Type.RegisterReqParams) => {\n return request.post('/answer/api/v1/user/register/email', params);\n};\n\nexport const logout = () => {\n return request.get('/answer/api/v1/user/logout');\n};\n\nexport const resendEmail = (params?: Type.ImgCodeReq) => {\n params = qs.parse(\n qs.stringify(params, {\n skipNulls: true,\n }),\n );\n return request.post('/answer/api/v1/user/email/verification/send', {\n ...params,\n });\n};\n\n/**\n * @description get login userinfo\n * @returns {UserInfo}\n */\n\nexport const getLoggedUserInfo = (config = { passingError: false }) => {\n const res = request.get('/answer/api/v1/user/info', config);\n // console.log('v123', res);\n return res;\n};\n\nexport const modifyUserInfo = (params: Type.ModifyUserReq) => {\n return request.put('/answer/api/v1/user/info', params);\n};\n\nexport const modifyPassword = (params: Type.ModifyPasswordReq) => {\n return request.put('/answer/api/v1/user/password', params);\n};\n\nexport const resetPassword = (params: Type.PasswordResetReq) => {\n return request.post('/answer/api/v1/user/password/reset', params);\n};\n\nexport const replacementPassword = (params: Type.PasswordReplaceReq) => {\n return request.post('/answer/api/v1/user/password/replacement', params);\n};\n\nexport const activateAccount = (code: string) => {\n return request.post(`/answer/api/v1/user/email/verification`, { code });\n};\n\nexport const checkImgCode = (k: Type.CaptchaKey) => {\n const apiUrl = `/answer/api/v1/user/action/record`;\n return request.get(apiUrl, {\n params: {\n action: k,\n },\n });\n};\n\nexport const setNotice = (params: Type.SetNoticeReq) => {\n return request.post('/answer/api/v1/user/notice/set', params);\n};\n\nexport const saveQuestion = (params: Type.QuestionParams) => {\n return request.post('/answer/api/v1/question', params);\n};\n\nexport const questionDetail = (id: string) => {\n return request.get(\n `/answer/api/v1/question/info?id=${id}`,\n { allow404: true },\n );\n};\n\nexport const getAnswers = (params: Type.AnswersReq) => {\n const apiUrl = `/answer/api/v1/answer/page?${qs.stringify(params)}`;\n return request.get>(apiUrl);\n};\n\nexport const postAnswer = (params: Type.PostAnswerReq) => {\n return request.post('/answer/api/v1/answer', params);\n};\n\nexport const bookmark = (params: {\n group_id: string;\n object_id: string;\n bookmark: boolean;\n}) => {\n return request.post('/answer/api/v1/collection/switch', params);\n};\n\nexport const postVote = (\n params: { object_id: string; is_cancel: boolean } & Type.ImgCodeReq,\n type: 'down' | 'up',\n) => {\n return request.post(`/answer/api/v1/vote/${type}`, params);\n};\n\nexport const following = (params: {\n object_id: string;\n is_cancel: boolean;\n}) => {\n return request.post<{ follows: number; is_followed: boolean }>(\n '/answer/api/v1/follow',\n params,\n );\n};\n\nexport const acceptanceAnswer = (params: {\n answer_id?: string;\n question_id: string;\n}) => {\n return request.post('/answer/api/v1/answer/acceptance', params);\n};\n\nexport const reportList = ({\n type,\n action,\n isBackend = false,\n}: Type.ReportParams & { isBackend }) => {\n let api = '/answer/api/v1/reasons';\n if (isBackend) {\n api = '/answer/admin/api/reasons';\n }\n return request.get(`${api}?object_type=${type}&action=${action}`);\n};\n\nexport const postReport = (\n params: {\n source: Type.ReportType;\n content: string;\n object_id: string;\n report_type: number;\n } & Type.ImgCodeReq,\n) => {\n return request.post('/answer/api/v1/report', params);\n};\n\nexport const deleteQuestion = (params: {\n id: string;\n captcha_code?: string;\n captcha_id?: string;\n}) => {\n return request.delete('/answer/api/v1/question', params);\n};\n\nexport const deleteAnswer = (params: {\n id: string;\n captcha_code?: string;\n captcha_id?: string;\n}) => {\n return request.delete('/answer/api/v1/answer', params);\n};\n\nexport const closeQuestion = (params: {\n id: string;\n close_msg?: string;\n close_type: number;\n}) => {\n return request.put('/answer/api/v1/question/status', params);\n};\n\nexport const changeEmail = (params: { e_mail: string; pass?: string }) => {\n return request.post('/answer/api/v1/user/email/change/code', params);\n};\n\nexport const changeEmailVerify = (params: { code: string }) => {\n return request.put('/answer/api/v1/user/email', params);\n};\n\nexport const getAppSettings = () => {\n return request.get('/answer/api/v1/siteinfo');\n};\n\nexport const reopenQuestion = (params: { question_id: string }) => {\n return request.put('/answer/api/v1/question/reopen', params);\n};\n\nexport const unsubscribe = (code: string) => {\n const apiUrl = '/answer/api/v1/user/notification/unsubscribe';\n return request.put(apiUrl, { code });\n};\n\nexport const markdownToHtml = (content: string) => {\n const apiUrl = '/answer/api/v1/post/render';\n return request.post(apiUrl, { content });\n};\n\nexport const saveQuestionWithAnswer = (params: Type.QuestionWithAnswer) => {\n return request.post('/answer/api/v1/question/answer', params);\n};\n\nexport const questionOperation = (params: Type.QuestionOperationReq) => {\n return request.put('/answer/api/v1/question/operation', params);\n};\n\nexport const getPluginsStatus = () => {\n return request.get('/answer/api/v1/plugin/status');\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const useFollow = (params?: Type.FollowParams) => {\n const apiUrl = '/answer/api/v1/follow';\n const { data, error, mutate } = useSWR(\n params ? [apiUrl, params] : null,\n request.instance.post,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\nimport qs from 'qs';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const usePersonalInfoByName = (username: string) => {\n const apiUrl = '/answer/api/v1/personal/user/info';\n const { data, error, mutate } = useSWR(\n username ? `${apiUrl}?username=${username}` : null,\n (url) =>\n request.get(url, {\n allow404: true,\n }),\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\ninterface ListReq {\n username?: string;\n page: number;\n page_size: number;\n order?: string;\n}\n\ninterface ListRes {\n count: number;\n list: any[];\n}\n\nexport const usePersonalTop = (username: string, tabName: string) => {\n const apiUrl = '/answer/api/v1/personal/qa/top?username=';\n const { data, error } = useSWR<{ answer: any[]; question: any[] }, Error>(\n tabName === 'overview' ? `${apiUrl}${username}` : null,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const usePersonalListByTabName = (params: ListReq, tabName: string) => {\n let apiUrl: string | null = '';\n if (tabName === 'answers') {\n apiUrl = '/answer/api/v1/personal/answer/page';\n }\n if (tabName === 'questions') {\n apiUrl = '/answer/api/v1/personal/question/page';\n }\n if (tabName === 'bookmarks') {\n delete params.order;\n apiUrl = '/answer/api/v1/personal/collection/page';\n }\n if (tabName === 'comments') {\n delete params.order;\n apiUrl = '/answer/api/v1/personal/comment/page';\n }\n if (tabName === 'reputation') {\n delete params.order;\n apiUrl = '/answer/api/v1/personal/rank/page';\n }\n if (tabName === 'votes') {\n delete params.username;\n apiUrl = '/answer/api/v1/personal/vote/page';\n }\n if (tabName === 'badges') {\n delete params.order;\n apiUrl = '/answer/api/v1/badge/user/awards';\n }\n\n const queryParams = qs.stringify(params, { skipNulls: true });\n const { data, error, mutate } = useSWR(\n tabName !== 'review' ? `${apiUrl}?${queryParams}` : null,\n request.instance.get,\n );\n\n return {\n data: {\n [tabName]: data,\n },\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\nimport qs from 'qs';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\nimport { tryLoggedAndActivated } from '@/utils/guard';\n\nexport const useQueryNotifications = (params) => {\n const apiUrl = `/answer/api/v1/notification/page?${qs.stringify(params, {\n skipNulls: true,\n })}`;\n\n const { data, error, mutate } = useSWR(\n apiUrl,\n request.instance.get,\n );\n\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const readNotification = (id) => {\n return request.instance.put('/answer/api/v1/notification/read/state', {\n id,\n });\n};\n\nexport const useQueryNotificationStatus = () => {\n const apiUrl = '/answer/api/v1/notification/status';\n\n return useSWR(\n tryLoggedAndActivated().ok ? apiUrl : null,\n (url) => request.get(url, { ignoreError: '50X' }),\n {\n refreshInterval: 3000,\n },\n );\n};\n\nexport const clearNotificationStatus = (type) => {\n return request.instance.put('/answer/api/v1/notification/status', {\n type,\n });\n};\n\nexport const clearUnreadNotification = (type) => {\n return request.instance.put('/answer/api/v1/notification/read/state/all', {\n type,\n });\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\nimport qs from 'qs';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const useQuestionList = (params: Type.QueryQuestionsReq) => {\n const apiUrl = `/answer/api/v1/question/page?${qs.stringify(params)}`;\n const { data, error } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const useQuestionRecommendList = (params: Type.QueryQuestionsReq) => {\n const apiUrl = `/answer/api/v1/question/recommend/page?${qs.stringify(\n params,\n )}`;\n const { data, error } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const useHotQuestions = (\n params: Type.QueryQuestionsReq = {\n page: 1,\n page_size: 6,\n order: 'hot',\n in_days: 7,\n },\n) => {\n const apiUrl = `/answer/api/v1/question/page?${qs.stringify(params)}`;\n const { data, error } = useSWR(\n [apiUrl],\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const useSimilarQuestion = (params: {\n question_id: string;\n page_size: number;\n}) => {\n const apiUrl = `/answer/api/v1/question/similar/tag?${qs.stringify(params)}`;\n\n const { data, error } = useSWR(\n params.question_id ? apiUrl : null,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const getInviteUser = (questionId: string) => {\n const apiUrl = '/answer/api/v1/question/invite';\n return request.get(apiUrl, {\n params: { id: questionId },\n });\n};\n\nexport const putInviteUser = (\n questionId: string,\n users: string[],\n imgCode: Type.ImgCodeReq = {},\n) => {\n const apiUrl = '/answer/api/v1/question/invite';\n return request.put(apiUrl, {\n id: questionId,\n invite_user: users,\n ...imgCode,\n });\n};\n\nexport const unDeleteAnswer = (id) => {\n return request.post('/answer/api/v1/answer/recover', {\n answer_id: id,\n });\n};\n\nexport const unDeleteQuestion = (qid) => {\n return request.post('/answer/api/v1/question/recover', {\n question_id: qid,\n });\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const getSearchResult = (params?: Type.SearchParams) => {\n const apiUrl = '/answer/api/v1/search';\n\n return request.get(apiUrl, {\n params,\n });\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\nimport { tryLoggedAndActivated } from '@/utils/guard';\n\nexport const deleteTag = (id) => {\n return request.delete('/answer/api/v1/tag', {\n tag_id: id,\n });\n};\nexport const modifyTag = (params) => {\n return request.put('/answer/api/v1/tag', params);\n};\n\nexport const useQuerySynonymsTags = (tagId, status) => {\n const apiUrl =\n status === 'deleted'\n ? ''\n : tagId\n ? `/answer/api/v1/tag/synonyms?tag_id=${tagId}`\n : '';\n return useSWR<{\n synonyms: Type.SynonymsTag[];\n member_actions?: Type.MemberActionItem[];\n }>(apiUrl, request.instance.get);\n};\n\nexport const saveSynonymsTags = (params) => {\n return request.put('/answer/api/v1/tag/synonym', params);\n};\n\nexport const useFollowingTags = () => {\n let apiUrl = '';\n if (tryLoggedAndActivated().ok) {\n apiUrl = '/answer/api/v1/tags/following';\n }\n const { data, error, mutate } = useSWR(apiUrl, request.instance.get);\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const useTagInfo = ({ id = '', name = '' }) => {\n let apiUrl;\n if (id) {\n apiUrl = `/answer/api/v1/tag?id=${id}`;\n } else if (name) {\n name = encodeURIComponent(name);\n apiUrl = `/answer/api/v1/tag?name=${name}`;\n }\n const { data, error, mutate } = useSWR(apiUrl, (url) =>\n request.get(url, { allow404: true }),\n );\n return {\n mutate,\n data,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const followTags = (params) => {\n return request.put('/answer/api/v1/follow/tags', params);\n};\n\nexport const getTagsBySlugName = (slugNames: string) => {\n const apiUrl = `/answer/api/v1/tags?tags=${encodeURIComponent(slugNames)}`;\n return request.get(apiUrl);\n};\n\nexport const createTag = (params: Type.TagBase) => {\n const apiUrl = '/answer/api/v1/tag';\n return request.post(apiUrl, params);\n};\n\nexport const unDeleteTag = (id) => {\n return request.post('/answer/api/v1/tag/recover', {\n tag_id: id,\n });\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport qs from 'qs';\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\nimport type { PluginConfig } from '@/services/admin/plugins';\n\nexport const getLanguageConfig = () => {\n return request.get('/answer/api/v1/language/config');\n};\n\nexport const getLanguageOptions = () => {\n return request.get('/answer/api/v1/language/options');\n};\n\ninterface userSettingInterface {\n language: '';\n color_scheme: '';\n}\nexport const updateUserInterface = (data: userSettingInterface) => {\n return request.put('/answer/api/v1/user/interface', data);\n};\n\nexport const useGetNotificationConfig = () => {\n return useSWR(\n '/answer/api/v1/user/notification/config',\n request.instance.get,\n );\n};\n\nexport const putNotificationConfig = (data: Type.NotificationConfig) => {\n return request.put('/answer/api/v1/user/notification/config', data);\n};\n\nexport const useGetUserPluginList = () => {\n return useSWR(\n '/answer/api/v1/user/plugin/configs',\n request.instance.get,\n );\n};\n\nexport const useGetUserPluginConfig = (params) => {\n const apiUrl = `/answer/api/v1/user/plugin/config?${qs.stringify(params)}`;\n const { data, error, mutate } = useSWR(\n apiUrl,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const updateUserPluginConfig = (params) => {\n return request.put('/answer/api/v1/user/plugin/config', params);\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport qs from 'qs';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\n// export const useTimelineData = (params: Type.TimelineReq) => {\n// const apiUrl = '/answer/api/v1/activity/timeline';\n// const { data, error, mutate } = useSWR(\n// `${apiUrl}?${qs.stringify(params, { skipNulls: true })}`,\n// request.instance.get,\n// );\n// return {\n// data,\n// isLoading: !data && !error,\n// error,\n// mutate,\n// };\n// };\n\nexport const getTimelineData = (params: Type.TimelineReq) => {\n return request.get(\n `/answer/api/v1/activity/timeline?${qs.stringify(params, {\n skipNulls: true,\n })}`,\n );\n};\n\nexport const getTimelineDetail = (params: {\n new_revision_id: string;\n old_revision_id: string;\n}) => {\n return request.get(\n `/answer/api/v1/activity/timeline/detail?${qs.stringify(params, {\n skipNulls: true,\n })}`,\n );\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport request from '@/utils/request';\n\nexport const editCheck = (id: string, passingError: boolean = false) => {\n const apiUrl = `/answer/api/v1/revisions/edit/check?id=${id}`;\n return request.get(apiUrl, {\n passingError,\n });\n};\n\nexport const revisionAudit = (id: string, operation: 'approve' | 'reject') => {\n const apiUrl = `/answer/api/v1/revisions/audit`;\n return request.put(apiUrl, {\n id,\n operation,\n });\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const useQueryContributeUsers = () => {\n const apiUrl = '/answer/api/v1/user/ranking';\n return useSWR<{\n users_with_the_most_reputation: Type.User[];\n users_with_the_most_vote: Type.User[];\n staffs: Type.User[];\n }>(apiUrl, request.instance.get);\n};\n\nexport const userSearchByName = (name: string) => {\n const apiUrl = '/answer/api/v1/user/info/search';\n return request.get(apiUrl, {\n params: {\n username: name,\n },\n });\n};\n\nexport type UserPermissionKey =\n | 'question.add'\n | 'question.edit'\n | 'question.edit_without_review'\n | 'question.delete'\n | 'question.close'\n | 'question.reopen'\n | 'question.vote_up'\n | 'question.vote_down'\n | 'question.pin'\n | 'question.unpin'\n | 'question.hide'\n | 'question.show'\n | 'answer.add'\n | 'answer.edit'\n | 'answer.edit_without_review'\n | 'answer.delete'\n | 'answer.accept'\n | 'answer.vote_up'\n | 'answer.vote_down'\n | 'answer.invite_someone_to_answer'\n | 'comment.add'\n | 'comment.edit'\n | 'comment.delete'\n | 'comment.vote_up'\n | 'comment.vote_down'\n | 'report.add'\n | 'tag.add'\n | 'tag.edit'\n | 'tag.edit_slug_name'\n | 'tag.edit_without_review'\n | 'tag.delete, tag.synonym'\n | 'link.url_limit'\n | 'vote.detail'\n | 'answer.audit'\n | 'question.audit'\n | 'tag.audit'\n | 'tag.use_reserved_tag';\nexport const useUserPermission = (\n keys: UserPermissionKey | UserPermissionKey[],\n) => {\n const apiUrl = '/answer/api/v1/permission';\n const action = Array.isArray(keys) ? keys.join(',') : keys;\n\n return useSWR<\n Partial<\n Record<\n UserPermissionKey,\n {\n has_permission: boolean;\n no_permission_tip: string;\n }\n >\n >\n >([apiUrl, { params: { action } }], request.instance.get);\n};\n\nexport const useSearchUserStaff = (name: string) => {\n const apiUrl = name\n ? `/answer/api/v1/user/staff?username=${name}&page_size=10`\n : null;\n return useSWR(apiUrl, request.instance.get);\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const oAuthBindEmail = (data: Type.OauthBindEmailReq) => {\n return request.post('/answer/api/v1/connector/binding/email', data);\n};\n\nexport const useOauthConnectorInfoByUser = () => {\n const { data, error, mutate } = useSWR(\n '/answer/api/v1/connector/user/info',\n request.instance.get,\n );\n return {\n data,\n mutate,\n isLoading: !data && !error,\n error,\n };\n};\n\nexport const userOauthUnbind = (data: { external_id: string }) => {\n return request.delete('/answer/api/v1/connector/user/unbinding', data);\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\n// import useSWR from 'swr';\n\nimport request from '@/utils/request';\nimport * as Type from '@/common/interface';\n\nexport const getSuggestReviewList = (page: number) => {\n const apiUrl = `/answer/api/v1/revisions/unreviewed?page=${page}`;\n return request.get(apiUrl);\n};\n\nexport const getReviewType = () => {\n return request.get('/answer/api/v1/reviewing/type');\n};\n\nexport const getFlagReviewPostList = (page: number) => {\n const apiUrl = `/answer/api/v1/report/unreviewed/post?page=${page}`;\n return request.get(apiUrl);\n};\n\nexport const putFlagReviewAction = (params: Type.PutFlagReviewParams) => {\n return request.put('/answer/api/v1/report/review', params);\n};\n\nexport const getPendingReviewPostList = (page: number, objectId?: string) => {\n const search = objectId ? `&object_id=${objectId}` : '';\n const apiUrl = `/answer/api/v1/review/pending/post/page?page=${page}${search}`;\n return request.get(apiUrl);\n};\n\nexport const putPendingReviewAction = (params: {\n review_id: number;\n status: 'approve' | 'reject';\n}) => {\n return request.put('/answer/api/v1/review/pending/post', params);\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\nimport qs from 'qs';\n\nimport request from '@/utils/request';\nimport type * as Type from '@/common/interface';\n\nexport const useGetAllBadges = () => {\n const apiUrl = '/answer/api/v1/badges';\n const { data, error, mutate } = useSWR, Error>(\n apiUrl,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const useGetBadgeInfo = (id: string) => {\n const { data, error, mutate } = useSWR(\n `/answer/api/v1/badge?id=${id}`,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const useBadgeDetailList = (params: Type.BadgeDetailListReq) => {\n const { data, error, mutate } = useSWR(\n `/answer/api/v1/badge/awards/page?${qs.stringify(params, {\n skipNulls: true,\n })}`,\n request.instance.get,\n );\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n\nexport const useGetRecentAwardBadges = (username) => {\n const apiUrl = username\n ? `/answer/api/v1/badge/user/awards/recent?username=${username}`\n : null;\n const { data, error, mutate } = useSWR<\n { count: number; list: Array },\n Error\n >(apiUrl, request.instance.get);\n return {\n data,\n isLoading: !data && !error,\n error,\n mutate,\n };\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport request from '@/utils/request';\n\nexport const checkConfigFileExists = () => {\n return request.post('/installation/config-file/check');\n};\n\nexport const dbCheck = (params) => {\n return request.post('/installation/db/check', params);\n};\n\nexport const installInit = (params) => {\n return request.post('/installation/init', params);\n};\n\nexport const installBaseInfo = (params) => {\n return request.post('/installation/base-info', params);\n};\n\nexport const getInstallLangOptions = () => {\n return request.get('/installation/language/options');\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport request from '@/utils/request';\n\nexport interface UcAgentControl {\n name: string;\n label: string;\n url: string;\n}\nexport interface UcAgent {\n enabled: boolean;\n agent_info: {\n name: string;\n icon: string;\n url: string;\n display_name: string;\n login_redirect_url: string;\n sign_up_redirect_url: string;\n control_center: UcAgentControl[];\n enabled_original_user_system: boolean;\n };\n}\n\nexport interface UcSettingAgent {\n enabled: boolean;\n redirect_url: string;\n}\nexport interface UcSettings {\n profile_setting_agent: UcSettingAgent;\n account_setting_agent: UcSettingAgent;\n}\n\nexport interface UcBrandingEntry {\n icon: string;\n name: string;\n label: string;\n url: string;\n}\nexport interface UcBranding {\n enabled: boolean;\n personal_branding: UcBrandingEntry[];\n}\n\nexport interface AdminUcAgent {\n allow_create_user: boolean;\n allow_update_user_status: boolean;\n allow_update_user_password: boolean;\n allow_update_user_role: boolean;\n}\n\nexport const getUcAgent = () => {\n const apiUrl = `/answer/api/v1/user-center/agent`;\n return request.get(apiUrl);\n};\nexport const getAdminUcAgent = () => {\n const apiUrl = `/answer/admin/api/user-center/agent`;\n return request.get(apiUrl);\n};\nexport const getUcSettings = () => {\n const apiUrl = `/answer/api/v1/user-center/user/settings`;\n return request.get(apiUrl);\n};\n\nexport const getUcBranding = (username: string) => {\n const apiUrl = `/answer/api/v1/user-center/personal/branding?username=${username}`;\n return request.get(apiUrl);\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport { AdminSettingsLogin } from '@/common/interface';\n\ninterface IType {\n login: AdminSettingsLogin;\n update: (params: AdminSettingsLogin) => void;\n}\n\nconst loginSetting = create((set) => ({\n login: {\n allow_new_registrations: true,\n login_required: false,\n allow_email_registrations: true,\n allow_email_domains: [],\n allow_password_login: true,\n },\n update: (params) =>\n set(() => {\n return {\n login: params,\n };\n }),\n}));\n\nexport default loginSetting;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport { AdminSettingsSeo } from '@/common/interface';\n\ninterface IProps {\n seo: AdminSettingsSeo;\n update: (params: AdminSettingsSeo) => void;\n}\n\nconst Index = create((set) => ({\n seo: {\n robots: '',\n permalink: 1,\n },\n update: (params) =>\n set((state) => {\n const o = { ...state.seo, ...params };\n // @ts-ignore\n if (!/[1234]/.test(o.permalink)) {\n o.permalink = 1;\n }\n return {\n seo: o,\n };\n }),\n}));\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport type { UcAgent } from '@/services/user-center';\n\ninterface UserCenterStore {\n agent?: UcAgent;\n update: (uca: UcAgent) => void;\n}\n\nconst store = create((set) => ({\n agent: undefined,\n update: (uca: UcAgent) => {\n if (uca) {\n set({\n agent: uca,\n });\n }\n },\n}));\n\nexport default store;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\ntype Variant = 'warning' | 'success' | 'danger';\ninterface ToastStore {\n msg: string;\n variant: Variant;\n show: (params: { msg: string; variant?: Variant }) => void;\n clear: () => void;\n}\n\nconst toastStore = create((set) => ({\n msg: '',\n variant: 'warning',\n show: (params) =>\n set((state) => {\n return {\n ...state,\n ...params,\n };\n }),\n clear: () => set({ msg: '' }),\n}));\n\nexport default toastStore;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport { AdminSettingsGeneral, AdminSettingsUsers } from '@/common/interface';\nimport { DEFAULT_SITE_NAME } from '@/common/constants';\n\ninterface SiteInfoType {\n siteInfo: AdminSettingsGeneral;\n version: string;\n revision: string;\n update: (params: AdminSettingsGeneral) => void;\n updateVersion: (ver: string, revision: string) => void;\n users: AdminSettingsUsers;\n updateUsers: (users: SiteInfoType['users']) => void;\n}\n\nconst defaultUsersConf: AdminSettingsUsers = {\n allow_update_avatar: false,\n allow_update_bio: false,\n allow_update_display_name: false,\n allow_update_location: false,\n allow_update_username: false,\n allow_update_website: false,\n default_avatar: 'system',\n gravatar_base_url: 'https://www.gravatar.com/avatar/',\n};\n\nconst siteInfo = create((set) => ({\n siteInfo: {\n name: DEFAULT_SITE_NAME,\n description: '',\n short_description: '',\n site_url: '',\n contact_email: '',\n check_update: true,\n permalink: 1,\n },\n users: defaultUsersConf,\n version: '',\n revision: '',\n update: (params) =>\n set((_) => {\n const o = { ..._.siteInfo, ...params };\n if (!o.name) {\n o.name = DEFAULT_SITE_NAME;\n }\n return {\n siteInfo: o,\n };\n }),\n updateVersion: (ver, revision) => {\n set(() => {\n return { version: ver, revision };\n });\n },\n updateUsers: (users) => {\n set(() => {\n users ||= defaultUsersConf;\n return { users };\n });\n },\n}));\n\nexport default siteInfo;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport { AdminSettingsInterface } from '@/common/interface';\nimport { DEFAULT_LANG } from '@/common/constants';\n\ninterface InterfaceType {\n interface: AdminSettingsInterface;\n update: (params: AdminSettingsInterface) => void;\n}\n\nconst interfaceSetting = create((set) => ({\n interface: {\n language: DEFAULT_LANG,\n time_zone: '',\n default_avatar: 'system',\n },\n update: (params) =>\n set(() => {\n return {\n interface: params,\n };\n }),\n}));\n\nexport default interfaceSetting;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport { AdminSettingBranding } from '@/common/interface';\n\ninterface IType {\n branding: AdminSettingBranding;\n update: (params: AdminSettingBranding) => void;\n}\n\nconst brandingSetting = create((set) => ({\n branding: {\n logo: '',\n square_icon: '',\n mobile_logo: '',\n favicon: '',\n },\n update: (params) =>\n set(() => {\n return {\n branding: params,\n };\n }),\n}));\n\nexport default brandingSetting;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport { HelmetBase, HelmetUpdate } from '@/common/interface';\n\nimport siteInfoStore from './siteInfo';\n\ninterface HelmetStore {\n items: HelmetBase;\n update: (params: HelmetUpdate) => void;\n}\n\nconst makePageTitle = (title = '', subtitle = '') => {\n const { siteInfo } = siteInfoStore.getState();\n if (!subtitle) {\n subtitle = `${siteInfo.name}`;\n }\n let pageTitle = subtitle;\n if (title && title !== subtitle) {\n pageTitle = `${title}${subtitle ? ` - ${subtitle}` : ''}`;\n }\n return pageTitle;\n};\n\nconst pageTags = create((set) => ({\n items: {\n pageTitle: '',\n description: '',\n keywords: '',\n },\n update: (params) => {\n const o: HelmetBase = {};\n if (params.title || params.subtitle) {\n o.pageTitle = makePageTitle(params.title, params.subtitle);\n }\n o.description =\n params.description ||\n siteInfoStore.getState().siteInfo?.description ||\n '';\n o.keywords = params.keywords || '';\n\n set({\n items: o,\n });\n },\n}));\n\nexport default pageTags;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\ninterface IType {\n custom_css: string;\n custom_head: string;\n custom_header: string;\n custom_footer: string;\n custom_sidebar: string;\n update: (params: {\n custom_css?: string;\n custom_head?: string;\n custom_header?: string;\n custom_footer?: string;\n custom_sidebar?: string;\n }) => void;\n}\n\nconst loginSetting = create((set) => ({\n custom_css: '',\n custom_head: '',\n custom_header: '',\n custom_footer: '',\n custom_sidebar: '',\n update: (params) =>\n set((state) => {\n return {\n ...state,\n ...params,\n };\n }),\n}));\n\nexport default loginSetting;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport { AdminSettingsTheme } from '@/common/interface';\n\ninterface IType {\n theme: AdminSettingsTheme['theme'];\n theme_config: AdminSettingsTheme['theme_config'];\n theme_options: AdminSettingsTheme['theme_options'];\n color_scheme: AdminSettingsTheme['color_scheme'];\n update: (params: AdminSettingsTheme) => void;\n}\n\nconst store = create((set) => ({\n theme: 'default',\n color_scheme: 'system',\n theme_options: [{ label: 'Default', value: 'default' }],\n theme_config: {\n default: {\n navbar_style: 'colored',\n primary_color: '#0033FF',\n },\n },\n update: (params) =>\n set((state) => {\n return {\n ...state,\n ...params,\n };\n }),\n}));\n\nexport default store;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport { AdminSettingsWrite } from '@/common/interface';\n\ninterface IProps {\n write: AdminSettingsWrite;\n update: (params: AdminSettingsWrite) => void;\n}\n\nconst Index = create((set) => ({\n write: {\n restrict_answer: true,\n recommend_tags: [],\n required_tag: false,\n reserved_tags: [],\n },\n update: (params) =>\n set((state) => {\n const o = { ...state.write, ...params };\n return {\n write: o,\n };\n }),\n}));\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\ninterface IProps {\n show: boolean;\n update: (params: { show: boolean }) => void;\n}\n\nconst loginToContinueStore = create((set) => ({\n show: false,\n update: (params) =>\n set({\n ...params,\n }),\n}));\n\nexport default loginToContinueStore;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\ntype codeType = '403' | '404' | '50X' | '';\n\ninterface ErrorCodeType {\n code: codeType;\n msg: string;\n update: (code: codeType, msg?: string) => void;\n reset: () => void;\n}\n\nconst Index = create((set) => ({\n code: '',\n msg: '',\n update: (code: codeType, msg: string = '') => {\n set(() => {\n return { code, msg };\n });\n },\n reset: () => {\n set(() => {\n return { code: '', msg: '' };\n });\n },\n}));\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\ntype reviewData = {\n can_revision: boolean;\n revision: number;\n};\n\ninterface ErrorCodeType {\n visible: boolean;\n can_revision: boolean;\n revision: number;\n updateVisible: () => void;\n updateReview: (params: reviewData) => void;\n}\n\nconst Index = create((set) => ({\n visible: false,\n can_revision: false,\n revision: 0,\n updateVisible: () => {\n set((state) => {\n return { visible: !state.visible };\n });\n },\n updateReview: (params: reviewData) => {\n set(() => {\n return { ...params };\n });\n },\n}));\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\ninterface CommentReplyType {\n id: string | number;\n update: (id) => void;\n}\n\nconst Index = create((set) => ({\n id: '',\n update: (id) => {\n set(() => {\n return { id };\n });\n },\n}));\n\nexport default Index;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport create from 'zustand';\n\nimport type { UserInfoRes } from '@/common/interface';\nimport Storage from '@/utils/storage';\nimport { LOGGED_TOKEN_STORAGE_KEY } from '@/common/constants';\n\ninterface UserInfoStore {\n user: UserInfoRes;\n update: (params: UserInfoRes) => void;\n clear: (removeToken?: boolean) => void;\n}\n\nconst initUser: UserInfoRes = {\n access_token: '',\n username: '',\n avatar: '',\n rank: 0,\n bio: '',\n bio_html: '',\n display_name: '',\n location: '',\n website: '',\n status: 'normal',\n mail_status: 1,\n language: 'Default',\n color_scheme: 'default',\n is_admin: false,\n have_password: true,\n role_id: 1,\n};\n\nconst loggedUserInfo = create((set) => ({\n user: initUser,\n update: (params) => {\n if (typeof params !== 'object' || !params) {\n return;\n }\n if (!params?.language) {\n params.language = 'Default';\n }\n if (!params?.color_scheme) {\n params.color_scheme = 'default';\n }\n set(() => {\n Storage.set(LOGGED_TOKEN_STORAGE_KEY, params.access_token);\n return { user: params };\n });\n },\n clear: (removeToken = true) =>\n set(() => {\n if (removeToken) {\n Storage.remove(LOGGED_TOKEN_STORAGE_KEY);\n }\n return { user: initUser };\n }),\n}));\n\nexport default loggedUserInfo;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nclass Progress {\n private timestamp;\n\n private duration: number;\n\n private progress: number;\n\n private delta: number;\n\n private isLoop: boolean;\n\n constructor(\n param = {\n timestamp: null,\n duration: 1000,\n delta: 0,\n isLoop: true,\n },\n ) {\n this.timestamp = null;\n this.duration = param.duration || Progress.CONST.DURATION;\n this.progress = 0;\n this.delta = 0;\n this.isLoop = !!param.isLoop;\n\n this.reset();\n }\n\n static get CONST() {\n return {\n DURATION: 1000,\n };\n }\n\n reset() {\n this.timestamp = null;\n }\n\n start(now) {\n this.timestamp = now;\n }\n\n tick(now) {\n if (this.timestamp) {\n this.delta = now - this.timestamp;\n this.progress = Math.min(this.delta / this.duration, 1);\n\n if (this.progress >= 1 && this.isLoop) {\n this.start(now);\n }\n\n return this.progress;\n }\n return 0;\n }\n}\n\nexport default Progress;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport Progress from './progress';\n\nexport default class Confetti {\n private parent: HTMLElement;\n\n private canvas: HTMLCanvasElement;\n\n private ctx;\n\n private width: number;\n\n private height: number;\n\n private length: number;\n\n private yRange: number;\n\n private progress;\n\n private rotationRange;\n\n private speedRange;\n\n private sprites;\n\n constructor(param) {\n this.parent = param.elm || document.body;\n this.canvas = document.createElement('canvas');\n this.ctx = this.canvas.getContext('2d');\n this.width = param.width || this.parent.offsetWidth;\n this.height = param.height || this.parent.offsetHeight;\n this.length = param.length || Confetti.CONST.PAPER_LENGTH;\n this.yRange = param.yRange || this.height * 2;\n this.progress = new Progress({\n duration: param.duration,\n isLoop: true,\n timestamp: null,\n delta: 0,\n });\n this.rotationRange =\n typeof param.rotationLength === 'number' ? param.rotationRange : 10;\n this.speedRange =\n typeof param.speedRange === 'number' ? param.speedRange : 10;\n this.sprites = [];\n\n this.canvas.style.cssText = [\n 'display: block',\n 'position: absolute',\n 'top: 0',\n 'left: 0',\n 'pointer-events: none',\n ].join(';');\n\n this.render = this.render.bind(this);\n\n this.build();\n\n this.parent.appendChild(this.canvas);\n this.progress.start(performance.now());\n\n requestAnimationFrame(this.render);\n }\n\n static get CONST() {\n return {\n SPRITE_WIDTH: 9,\n SPRITE_HEIGHT: 16,\n PAPER_LENGTH: 100,\n DURATION: 8000,\n ROTATION_RATE: 50,\n COLORS: [\n '#EF5350',\n '#EC407A',\n '#AB47BC',\n '#7E57C2',\n '#5C6BC0',\n '#42A5F5',\n '#29B6F6',\n '#26C6DA',\n '#26A69A',\n '#66BB6A',\n '#9CCC65',\n '#D4E157',\n '#FFEE58',\n '#FFCA28',\n '#FFA726',\n '#FF7043',\n '#8D6E63',\n '#BDBDBD',\n '#78909C',\n ],\n };\n }\n\n build() {\n for (let i = 0; i < this.length; i += 1) {\n const canvas = document.createElement('canvas') as HTMLCanvasElement & {\n position: { initX: number; initY: number };\n rotation;\n speed;\n };\n const ctx = canvas.getContext('2d');\n\n canvas.width = Confetti.CONST.SPRITE_WIDTH;\n canvas.height = Confetti.CONST.SPRITE_HEIGHT;\n\n canvas.position = {\n initX: Math.random() * this.width,\n initY: -canvas.height - Math.random() * this.yRange,\n };\n\n canvas.rotation =\n this.rotationRange / 2 - Math.random() * this.rotationRange;\n canvas.speed =\n this.speedRange / 2 + Math.random() * (this.speedRange / 2);\n\n if (ctx) {\n ctx.save();\n ctx.fillStyle =\n Confetti.CONST.COLORS[\n Math.floor(Math.random() * Confetti.CONST.COLORS.length)\n ];\n ctx.fillRect(0, 0, canvas.width, canvas.height);\n ctx.restore();\n }\n\n this.sprites.push(canvas);\n }\n }\n\n render(now) {\n const progress = this.progress.tick(now);\n\n this.canvas.width = this.width;\n this.canvas.height = this.height;\n\n for (let i = 0; i < this.length; i += 1) {\n this.ctx.save();\n this.ctx.translate(\n this.sprites[i].position.initX +\n this.sprites[i].rotation * Confetti.CONST.ROTATION_RATE * progress,\n this.sprites[i].position.initY + progress * (this.height + this.yRange),\n );\n this.ctx.rotate(this.sprites[i].rotation);\n this.ctx.drawImage(\n this.sprites[i],\n (-Confetti.CONST.SPRITE_WIDTH *\n Math.abs(Math.sin(progress * Math.PI * 2 * this.sprites[i].speed))) /\n 2,\n -Confetti.CONST.SPRITE_HEIGHT / 2,\n Confetti.CONST.SPRITE_WIDTH *\n Math.abs(Math.sin(progress * Math.PI * 2 * this.sprites[i].speed)),\n Confetti.CONST.SPRITE_HEIGHT,\n );\n this.ctx.restore();\n }\n\n requestAnimationFrame(this.render);\n }\n\n destroy() {\n this.parent.removeChild(this.canvas);\n }\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport i18next from 'i18next';\n\nimport pattern from '@/common/pattern';\nimport { USER_AGENT_NAMES } from '@/common/constants';\nimport type * as Type from '@/common/interface';\n\nconst Diff = require('diff');\n\nfunction thousandthDivision(num) {\n const reg = /\\d{1,3}(?=(\\d{3})+$)/g;\n return `${num}`.replace(reg, '$&,');\n}\n\nfunction formatCount($num: number): string {\n let res = String($num);\n if (!Number.isFinite($num)) {\n res = '0';\n } else if ($num < 10000) {\n res = thousandthDivision($num);\n } else if ($num < 1000000) {\n res = `${Math.round($num / 100) / 10}k`;\n } else if ($num >= 1000000) {\n res = `${Math.round($num / 100000) / 10}m`;\n }\n return res;\n}\n\nfunction scrollToElementTop(element) {\n if (!element) {\n return;\n }\n const offset = 120;\n const bodyRect = document.body.getBoundingClientRect().top;\n const elementRect = element.getBoundingClientRect().top;\n const elementPosition = elementRect - bodyRect;\n const offsetPosition = elementPosition - offset;\n\n window.scrollTo({\n top: offsetPosition,\n behavior: 'instant' as ScrollBehavior,\n });\n}\n\nfunction scrollElementIntoView(element) {\n if (!element) {\n return;\n }\n element.scrollIntoView({\n behavior: 'smooth',\n block: 'center',\n inline: 'center',\n });\n}\n\nconst scrollToDocTop = () => {\n setTimeout(() => {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: 'instant' as ScrollBehavior,\n });\n });\n};\n\nconst bgFadeOut = (el) => {\n if (el && !el.classList.contains('bg-fade-out')) {\n el.classList.add('bg-fade-out');\n setTimeout(() => {\n el.classList.remove('bg-fade-out');\n }, 3200);\n }\n};\n\n/**\n * Extract user info from markdown\n * @param markdown string\n * @returns Array<{displayName: string, userName: string}>\n */\nfunction matchedUsers(markdown) {\n const globalReg = /\\B@([\\w|]+)/g;\n const reg = /\\B@([\\w\\\\_\\\\.]+)/;\n\n const users = markdown.match(globalReg);\n if (!users) {\n return [];\n }\n return users.map((user) => {\n const matched = user.match(reg);\n return {\n userName: matched[1],\n };\n });\n}\n\n/**\n * Identify user information from markdown\n * @param markdown string\n * @returns string\n */\nfunction parseUserInfo(markdown) {\n const globalReg = /\\B@([\\w\\\\_\\\\.\\\\-]+)/g;\n return markdown.replace(globalReg, '[@$1](/users/$1)');\n}\n\nfunction parseEditMentionUser(markdown) {\n const globalReg = /\\[@([^\\]]+)\\]\\([^)]+\\)/g;\n return markdown.replace(globalReg, '@$1');\n}\n\nfunction formatUptime(value) {\n const t = i18next.t.bind(i18next);\n const second = parseInt(value, 10);\n\n if (second > 60 * 60 && second < 60 * 60 * 24) {\n const hour = second / 3600;\n return `${Math.floor(hour)} ${\n hour > 1 ? t('dates.hours') : t('dates.hour')\n }`;\n }\n if (second > 60 * 60 * 24) {\n const day = second / 3600 / 24;\n return `${Math.floor(day)} ${day > 1 ? t('dates.days') : t('dates.day')}`;\n }\n\n return `< 1 ${t('dates.hour')}`;\n}\n\nfunction escapeRemove(str: string) {\n if (!str || typeof str !== 'string') return str;\n let temp: HTMLDivElement | null = document.createElement('div');\n temp.innerHTML = str;\n const output = temp?.innerText || temp.textContent;\n temp = null;\n return output;\n}\n\nfunction handleFormError(\n error: { list: Type.FieldError[] },\n data: any,\n keymap?: Array<{ from: string; to: string }>,\n) {\n if (error.list?.length > 0) {\n error.list.forEach((item) => {\n if (keymap?.length) {\n const key = keymap.find((k) => k.from === item.error_field);\n if (key) {\n item.error_field = key.to;\n }\n }\n const errorFieldObject = data[item.error_field];\n if (errorFieldObject) {\n errorFieldObject.isInvalid = true;\n errorFieldObject.errorMsg = item.error_msg;\n }\n });\n }\n return data;\n}\n\nfunction escapeHtml(str: string) {\n const tagsToReplace = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": ''',\n '`': '`',\n };\n return str.replace(/[&<>\"'`]/g, (tag) => tagsToReplace[tag] || tag);\n}\n\nfunction formatDiffPart(part: any, className: string): string {\n if (part.value.replace(/\\n/g, '').length <= 0) {\n if (part.value.match(/\\n/g)?.length > 1) {\n const value = part.value.replace(/\\n/, '');\n return `
${value.replace(\n /\\n/g,\n ' ',\n )}
`;\n }\n return `
${part.value.replace(\n /\\n/g,\n ' ',\n )}
`;\n }\n return `${part.value}`;\n}\n\nfunction diffText(newText: string, oldText?: string): string {\n if (!newText) {\n return '';\n }\n\n if (typeof oldText !== 'string') {\n return escapeHtml(newText);\n }\n let result = [];\n const diff = Diff.diffChars(escapeHtml(oldText), escapeHtml(newText));\n result = diff.map((part) => {\n if (part.added) {\n return formatDiffPart(part, 'review-text-add');\n }\n if (part.removed) {\n return formatDiffPart(part, 'review-text-delete text-decoration-none');\n }\n\n return part.value;\n });\n\n return result.join('');\n}\n\nfunction base64ToSvg(base64: string, svgClassName?: string) {\n try {\n // base64 to svg xml\n const svgxml = atob(base64);\n\n // svg add class\n const parser = new DOMParser();\n const doc = parser.parseFromString(svgxml, 'image/svg+xml');\n const parseError = doc.querySelector('parsererror');\n const svg = doc.querySelector('svg');\n let str = '';\n if (svg && !parseError) {\n if (svgClassName) {\n svg.setAttribute('class', svgClassName);\n }\n // svg.classList.add('me-2');\n\n // transform svg to string\n const serializer = new XMLSerializer();\n str = serializer.serializeToString(doc);\n }\n return str;\n } catch (error) {\n return '';\n }\n}\n\n// Determine whether the user is in WeChat or Enterprise WeChat or DingTalk, and return the corresponding type\n\nfunction getUaType() {\n const ua = navigator.userAgent.toLowerCase();\n if (pattern.uaWeCom.test(ua)) {\n return USER_AGENT_NAMES.WeCom;\n }\n if (pattern.uaWeChat.test(ua)) {\n return USER_AGENT_NAMES.WeChat;\n }\n if (pattern.uaDingTalk.test(ua)) {\n return USER_AGENT_NAMES.DingTalk;\n }\n return null;\n}\n\nfunction changeTheme(mode: 'default' | 'light' | 'dark' | 'system') {\n const htmlTag = document.querySelector('html') as HTMLHtmlElement;\n if (mode === 'system') {\n const systemThemeQuery = window.matchMedia('(prefers-color-scheme: dark)');\n\n if (systemThemeQuery.matches) {\n htmlTag.setAttribute('data-bs-theme', 'dark');\n } else {\n htmlTag.setAttribute('data-bs-theme', 'light');\n }\n } else {\n htmlTag.setAttribute('data-bs-theme', mode);\n }\n}\n\nfunction isDarkTheme() {\n const htmlTag = document.querySelector('html') as HTMLHtmlElement;\n return htmlTag.getAttribute('data-bs-theme') === 'dark';\n}\n\nexport {\n thousandthDivision,\n formatCount,\n scrollElementIntoView,\n scrollToElementTop,\n scrollToDocTop,\n bgFadeOut,\n matchedUsers,\n parseUserInfo,\n parseEditMentionUser,\n formatUptime,\n escapeRemove,\n handleFormError,\n diffText,\n base64ToSvg,\n getUaType,\n changeTheme,\n isDarkTheme,\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport type { NavigateFunction } from 'react-router-dom';\n\nimport { RouteAlias, REACT_BASE_PATH } from '@/router/alias';\nimport Storage from '@/utils/storage';\nimport { REDIRECT_PATH_STORAGE_KEY } from '@/common/constants';\nimport { getLoginUrl } from '@/utils/userCenter';\n\nconst equalToCurrentHref = (target: string, base?: string) => {\n base ||= window.location.origin;\n const targetUrl = new URL(\n target.startsWith(REACT_BASE_PATH) ? target : `${REACT_BASE_PATH}${target}`,\n base,\n );\n return targetUrl.toString() === window.location.href;\n};\nconst matchToCurrentHref = (target: string) => {\n target = (target || '').trim();\n const hasBasePath = target.startsWith(REACT_BASE_PATH);\n // Empty string or `/` can match any path\n if (!target || target === '/') {\n return true;\n }\n const { pathname, search, hash } = window.location;\n let pathWithOutBase = pathname;\n if (!hasBasePath) {\n pathWithOutBase = pathWithOutBase.replace(REACT_BASE_PATH, '');\n }\n\n const tPart = target.split('?');\n\n /**\n * With the current requirements, `hash` and `search` can simply be matched\n * Later extended to field-by-field matching if necessary\n */\n if (tPart[1]) {\n const tChip = tPart[1].split('#');\n const tSearch = tChip[0] || '';\n const tHash = tChip[1] || '';\n if (tHash && hash.indexOf(tHash) === -1) {\n return false;\n }\n if (tSearch && search.indexOf(tSearch) === -1) {\n return false;\n }\n }\n\n /**\n * As determination above, `tPart[0]` must be a valid string\n */\n let pathMatch = true;\n const tPath = tPart[0].split('/').filter((_) => !!_);\n const lPath = pathWithOutBase.split('/').filter((_) => !!_);\n\n tPath.forEach((p, i) => {\n const lp = lPath[i];\n if (p !== lp) {\n pathMatch = false;\n }\n });\n\n return pathMatch;\n};\n\nconst storageLoginRedirect = () => {\n const { pathname } = window.location;\n const filterPath = pathname.replace(REACT_BASE_PATH, '');\n if (filterPath !== RouteAlias.login && filterPath !== RouteAlias.signUp) {\n const loc = window.location;\n const redirectUrl = loc.href.replace(`${loc.origin}${REACT_BASE_PATH}`, '');\n Storage.set(REDIRECT_PATH_STORAGE_KEY, redirectUrl);\n }\n};\n\n/**\n * Determining if an url is a full link\n */\nconst isFullLink = (url = '') => {\n let ret = false;\n if (/^(http:|https:|\\/\\/)/i.test(url)) {\n ret = true;\n }\n return ret;\n};\n\n/**\n * Determining if a link is routable\n */\nconst isRoutableLink = (url = '') => {\n let ret = true;\n if (isFullLink(url)) {\n ret = false;\n }\n\n return ret;\n};\n\n/**\n * only navigate if not same as current url\n */\ntype NavigateHandler = 'href' | 'replace' | NavigateFunction;\nexport interface NavigateConfig {\n handler?: NavigateHandler;\n options?: any;\n}\nconst navigate = (to: string | number, config: NavigateConfig = {}) => {\n let { handler = 'href' } = config;\n if (to && typeof to === 'string') {\n if (equalToCurrentHref(to)) {\n return;\n }\n /**\n * 1. Blocking redirection of two login pages\n * 2. Auto storage login redirect\n * Note: The or judgement cannot be missing here, both jumps will be used\n */\n if (to === RouteAlias.login || to === getLoginUrl()) {\n storageLoginRedirect();\n }\n\n if (!isRoutableLink(to) && handler !== 'href' && handler !== 'replace') {\n handler = 'href';\n }\n if (handler === 'href' && config.options?.replace) {\n handler = 'replace';\n }\n if (handler === 'href') {\n if (\n to.startsWith('/') &&\n !to.startsWith('//') &&\n !to.startsWith(REACT_BASE_PATH)\n ) {\n to = `${REACT_BASE_PATH}${to}`;\n }\n window.location.href = to;\n } else if (handler === 'replace') {\n if (\n to.startsWith('/') &&\n !to.startsWith('//') &&\n !to.startsWith(REACT_BASE_PATH)\n ) {\n to = `${REACT_BASE_PATH}${to}`;\n }\n window.location.replace(to);\n } else if (typeof handler === 'function') {\n if (to === REACT_BASE_PATH) {\n to = '/';\n }\n\n if (to !== REACT_BASE_PATH && to.startsWith(REACT_BASE_PATH)) {\n to = to.replace(REACT_BASE_PATH, '');\n }\n handler(to, config.options);\n }\n }\n if (typeof to === 'number' && typeof handler === 'function') {\n handler(to);\n }\n};\n\n/**\n * auto navigate to login page\n * Note: Only the internal login page is jumped here, `userAgent` login is handled on the internal login page.\n */\nconst navigateToLogin = (config?: NavigateConfig) => {\n const loginUrl = RouteAlias.login;\n navigate(loginUrl, config);\n};\n\n/**\n * Determine if a Link click event should be handled\n */\nconst shouldProcessLinkClick = (evt) => {\n if (evt.defaultPrevented) {\n return false;\n }\n const nodeName = evt.currentTarget?.nodeName;\n if (nodeName?.toLowerCase() !== 'a') {\n return false;\n }\n const target = evt.currentTarget?.target;\n return (\n evt.button === 0 &&\n (!target || target === '_self') &&\n !(evt.metaKey || evt.ctrlKey || evt.shiftKey || evt.altKey)\n );\n};\n\n/**\n * Automatic handling of click events on route links\n */\nconst handleRouteLinkClick = (evt) => {\n if (!shouldProcessLinkClick(evt)) {\n return;\n }\n const curTarget = evt.currentTarget;\n const href = curTarget?.getAttribute('href');\n if (!isRoutableLink(href)) {\n evt.preventDefault();\n navigate(href);\n }\n};\n\nexport const floppyNavigation = {\n navigate,\n navigateToLogin,\n shouldProcessLinkClick,\n isFullLink,\n isRoutableLink,\n handleRouteLinkClick,\n equalToCurrentHref,\n matchToCurrentHref,\n storageLoginRedirect,\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { getLoggedUserInfo, getAppSettings } from '@/services';\nimport {\n loggedUserInfoStore,\n siteInfoStore,\n interfaceStore,\n brandingStore,\n loginSettingStore,\n customizeStore,\n themeSettingStore,\n seoSettingStore,\n loginToContinueStore,\n pageTagStore,\n writeSettingStore,\n} from '@/stores';\nimport { RouteAlias } from '@/router/alias';\nimport {\n LOGGED_TOKEN_STORAGE_KEY,\n REDIRECT_PATH_STORAGE_KEY,\n} from '@/common/constants';\nimport Storage from '@/utils/storage';\n\nimport { setupAppLanguage, setupAppTimeZone, setupAppTheme } from './localize';\nimport { floppyNavigation, NavigateConfig } from './floppyNavigation';\nimport { pullUcAgent, getSignUpUrl } from './userCenter';\n\ntype TLoginState = {\n isLogged: boolean;\n isNotActivated: boolean;\n isActivated: boolean;\n isForbidden: boolean;\n isNormal: boolean;\n isAdmin: boolean;\n isModerator: boolean;\n};\n\nexport type TGuardResult = {\n ok: boolean;\n redirect?: string;\n error?: {\n code?: number | string;\n msg?: string;\n };\n};\nexport type TGuardFunc = (args: {\n loaderData?: any;\n path?: string;\n page?: string;\n}) => TGuardResult;\n\nexport const deriveLoginState = (): TLoginState => {\n const ls: TLoginState = {\n isLogged: false,\n isNotActivated: false,\n isActivated: false,\n isForbidden: false,\n isNormal: false,\n isAdmin: false,\n isModerator: false,\n };\n const { user } = loggedUserInfoStore.getState();\n if (user.access_token) {\n ls.isLogged = true;\n }\n if (ls.isLogged && user.mail_status === 1) {\n ls.isActivated = true;\n }\n if (ls.isLogged && user.mail_status === 2) {\n ls.isNotActivated = true;\n }\n if (ls.isLogged && user.status === 'suspended') {\n ls.isForbidden = true;\n }\n if (ls.isActivated && !ls.isForbidden) {\n ls.isNormal = true;\n }\n if (ls.isNormal && user.role_id === 2) {\n ls.isAdmin = true;\n }\n if (ls.isNormal && user.role_id === 3) {\n ls.isModerator = true;\n }\n return ls;\n};\n\nexport const IGNORE_PATH_LIST = [\n RouteAlias.login,\n RouteAlias.signUp,\n RouteAlias.accountRecovery,\n RouteAlias.changeEmail,\n RouteAlias.passwordReset,\n RouteAlias.accountActivation,\n RouteAlias.confirmNewEmail,\n RouteAlias.confirmEmail,\n RouteAlias.authLanding,\n '/user-center/',\n];\n\nexport const isIgnoredPath = (ignoredPath?: string | string[]) => {\n if (!ignoredPath) {\n ignoredPath = IGNORE_PATH_LIST;\n }\n if (!Array.isArray(ignoredPath)) {\n ignoredPath = [ignoredPath];\n }\n const matchingPath = ignoredPath.find((p) => {\n return floppyNavigation.matchToCurrentHref(p);\n });\n return !!matchingPath;\n};\n\nlet pluTimestamp = 0;\nexport const pullLoggedUser = async (isInitPull = false) => {\n /**\n * WARN:\n * - dedupe pull requests in this time span in 10 seconds\n * - isInitPull:\n * Requests sent by the initialisation method cannot be throttled\n * and may cause Promise.allSettled to complete early in React development mode,\n * resulting in inaccurate application data.\n */\n //\n if (!isInitPull && Date.now() - pluTimestamp < 1000 * 10) {\n return;\n }\n pluTimestamp = Date.now();\n const loggedUserInfo = await getLoggedUserInfo({\n passingError: true,\n }).catch(() => {\n pluTimestamp = 0;\n loggedUserInfoStore.getState().clear(false);\n });\n if (loggedUserInfo) {\n loggedUserInfoStore.getState().update(loggedUserInfo);\n }\n};\n\nexport const logged = () => {\n const gr: TGuardResult = { ok: true };\n const us = deriveLoginState();\n if (!us.isLogged) {\n gr.ok = false;\n gr.redirect = RouteAlias.login;\n }\n return gr;\n};\n\nexport const loggedRedirectHome = () => {\n const gr: TGuardResult = { ok: true };\n const us = deriveLoginState();\n if (!us.isLogged) {\n gr.ok = false;\n gr.redirect = RouteAlias.home;\n }\n return gr;\n};\n\nexport const notLogged = () => {\n const gr: TGuardResult = { ok: true };\n const us = deriveLoginState();\n if (us.isLogged) {\n gr.ok = false;\n gr.redirect = RouteAlias.home;\n }\n return gr;\n};\n\nexport const notActivated = () => {\n const gr: TGuardResult = { ok: true };\n const us = deriveLoginState();\n if (us.isActivated) {\n gr.ok = false;\n gr.redirect = RouteAlias.home;\n }\n return gr;\n};\n\nexport const activated = () => {\n const gr = logged();\n const us = deriveLoginState();\n if (us.isNotActivated) {\n gr.ok = false;\n gr.redirect = RouteAlias.inactive;\n }\n return gr;\n};\n\nexport const forbidden = () => {\n const gr: TGuardResult = { ok: true };\n const us = deriveLoginState();\n if (gr.ok && !us.isForbidden) {\n gr.ok = false;\n gr.redirect = RouteAlias.home;\n }\n return gr;\n};\n\nexport const notForbidden = () => {\n const gr: TGuardResult = { ok: true };\n const us = deriveLoginState();\n if (us.isForbidden) {\n gr.ok = false;\n gr.redirect = RouteAlias.suspended;\n }\n return gr;\n};\n\nexport const admin = () => {\n const gr = logged();\n const us = deriveLoginState();\n if (gr.ok && !us.isAdmin) {\n gr.ok = false;\n gr.error = {\n code: '403',\n msg: '',\n };\n gr.redirect = '';\n }\n return gr;\n};\n\nexport const isAdminOrModerator = () => {\n const gr = logged();\n const us = deriveLoginState();\n if (gr.ok && !us.isAdmin && !us.isModerator) {\n gr.ok = false;\n gr.error = {\n code: '403',\n msg: '',\n };\n gr.redirect = '';\n }\n return gr;\n};\n\nexport const isEditable = (args) => {\n const loaderData = args?.loaderData || {};\n const gr: TGuardResult = { ok: true };\n if (loaderData.code === 400) {\n gr.ok = false;\n gr.error = {\n code: '403',\n msg: loaderData.msg,\n };\n }\n return gr;\n};\n\nexport const allowNewRegistration = () => {\n const gr: TGuardResult = { ok: true };\n const loginSetting = loginSettingStore.getState().login;\n if (!loginSetting.allow_new_registrations) {\n gr.ok = false;\n gr.redirect = RouteAlias.home;\n }\n return gr;\n};\n\nexport const singUpAgent = () => {\n const gr: TGuardResult = { ok: true };\n const signUpUrl = getSignUpUrl();\n if (signUpUrl !== RouteAlias.signUp) {\n gr.ok = false;\n gr.redirect = signUpUrl;\n }\n return gr;\n};\n\nexport const shouldLoginRequired = () => {\n const gr: TGuardResult = { ok: true };\n const loginSetting = loginSettingStore.getState().login;\n if (!loginSetting.login_required) {\n return gr;\n }\n const us = deriveLoginState();\n if (us.isLogged) {\n return gr;\n }\n if (isIgnoredPath(IGNORE_PATH_LIST)) {\n return gr;\n }\n gr.ok = false;\n gr.redirect = RouteAlias.login;\n return gr;\n};\n\n/**\n * try user was logged and all state ok\n * @param canNavigate // if true, will navigate to login page if not logged\n */\nexport const tryNormalLogged = (canNavigate: boolean = false) => {\n const us = deriveLoginState();\n\n if (us.isNormal) {\n return true;\n }\n // must assert logged state first and return\n if (!us.isLogged) {\n if (canNavigate) {\n loginToContinueStore.getState().update({ show: true });\n }\n return false;\n }\n if (us.isNotActivated) {\n floppyNavigation.navigate(RouteAlias.inactive);\n } else if (us.isForbidden) {\n floppyNavigation.navigate(RouteAlias.suspended, {\n handler: 'replace',\n });\n }\n\n return false;\n};\n\nexport const tryLoggedAndActivated = () => {\n const gr: TGuardResult = { ok: true };\n const us = deriveLoginState();\n\n if (!us.isLogged || !us.isActivated) {\n gr.ok = false;\n }\n return gr;\n};\n\n/**\n * Auto handling of page redirect logic after a successful login\n */\nexport const handleLoginRedirect = (handler?: NavigateConfig['handler']) => {\n const redirectUrl = Storage.get(REDIRECT_PATH_STORAGE_KEY) || RouteAlias.home;\n Storage.remove(REDIRECT_PATH_STORAGE_KEY);\n floppyNavigation.navigate(redirectUrl, {\n handler,\n options: { replace: true },\n });\n};\n\n/**\n * Unified processing of login logic after getting `access_token`\n */\nexport const handleLoginWithToken = (\n token: string | null,\n handler?: NavigateConfig['handler'],\n) => {\n if (token) {\n Storage.set(LOGGED_TOKEN_STORAGE_KEY, token);\n setTimeout(() => {\n getLoggedUserInfo().then((res) => {\n loggedUserInfoStore.getState().update(res);\n const userStat = deriveLoginState();\n if (userStat.isNotActivated) {\n floppyNavigation.navigate(RouteAlias.inactive, {\n handler,\n options: {\n replace: true,\n },\n });\n } else {\n handleLoginRedirect(handler);\n }\n });\n });\n } else {\n floppyNavigation.navigate(RouteAlias.home, {\n handler,\n options: {\n replace: true,\n },\n });\n }\n};\n\n/**\n * Initialize app configuration\n */\nexport const initAppSettingsStore = async () => {\n const appSettings = await getAppSettings();\n if (appSettings) {\n siteInfoStore.getState().update(appSettings.general);\n siteInfoStore\n .getState()\n .updateVersion(appSettings.version, appSettings.revision);\n siteInfoStore.getState().updateUsers(appSettings.site_users);\n interfaceStore.getState().update(appSettings.interface);\n pageTagStore.getState().update({\n title: appSettings.general?.name,\n description: appSettings.general?.description,\n });\n brandingStore.getState().update(appSettings.branding);\n loginSettingStore.getState().update(appSettings.login);\n customizeStore.getState().update(appSettings.custom_css_html);\n themeSettingStore.getState().update(appSettings.theme);\n seoSettingStore.getState().update(appSettings.site_seo);\n writeSettingStore\n .getState()\n .update({ restrict_answer: appSettings.site_write.restrict_answer });\n }\n};\n\nexport const googleSnapshotRedirect = () => {\n const gr: TGuardResult = { ok: true };\n const searchStr = new URLSearchParams(window.location.search)?.get('q') || '';\n if (window.location.host !== 'webcache.googleusercontent.com') {\n return gr;\n }\n if (searchStr.indexOf('cache:') === 0 && searchStr.includes(':http')) {\n const redirectUrl = `http${searchStr.split(':http')[1]}`;\n const pathname = redirectUrl.replace(new URL(redirectUrl).origin, '');\n\n gr.ok = false;\n gr.redirect = pathname || '/';\n return gr;\n }\n\n return gr;\n};\n\nlet appInitialized = false;\nexport const setupApp = async () => {\n /**\n * This cannot be removed:\n * clicking on the current navigation link will trigger a call to the routing loader,\n * even though the page is not refreshed.\n */\n if (appInitialized) {\n return;\n }\n /**\n * WARN:\n * 1. must pre init logged user info for router guard\n * 2. must pre init app settings for app render\n */\n await Promise.allSettled([initAppSettingsStore(), pullLoggedUser(true)]);\n await Promise.allSettled([pullUcAgent()]);\n setupAppLanguage();\n setupAppTimeZone();\n setupAppTheme();\n /**\n * WARN:\n * Initialization must be completed after all initialization actions,\n * otherwise the problem of rendering twice in React development mode can lead to inaccurate data or flickering pages\n */\n appInitialized = true;\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { DRAFT_TIMESIGH_STORAGE_KEY as timeSign } from '@/common/constants';\n\nconst store = {\n storage: localStorage || window.localStorage,\n set(key: string, value, time?: number): void {\n const t = time || Date.now() + 1000 * 60 * 60 * 24 * 7; // default 7 days\n try {\n this.storage.setItem(key, `${t}${timeSign}${JSON.stringify(value)}`);\n } catch {\n // ignore\n console.error('set storage error: the key is', key);\n }\n },\n get(key: string): any {\n const timeSignLen = timeSign.length;\n let index = 0;\n let time = 0;\n let res;\n try {\n res = this.storage.getItem(key);\n } catch {\n console.error('get storage error: the key is', key);\n }\n if (res) {\n index = res.indexOf(timeSign);\n time = +res.slice(0, index);\n if (time > new Date().getTime()) {\n res = res.slice(index + timeSignLen);\n try {\n res = JSON.parse(res);\n } catch {\n // ignore\n }\n } else {\n // timeout remove storage\n res = null;\n this.storage.removeItem(key);\n }\n return res;\n }\n\n return res;\n },\n remove(key: string, callback?: () => void): void {\n this.storage.removeItem(key);\n callback?.();\n },\n};\n\nexport default store;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport debounce from 'lodash/debounce';\n\nimport {\n DRAFT_QUESTION_STORAGE_KEY,\n DRAFT_ANSWER_STORAGE_KEY,\n} from '@/common/constants';\nimport { storageExpires as storage } from '@/utils';\n\nexport type QuestionDraft = {\n params: {\n title: string;\n content: string;\n tags: any[];\n answer_content: string;\n };\n callback?: () => void;\n};\n\nexport type AnswerDraft = {\n questionId: string;\n content: string;\n callback?: () => void;\n};\n\ntype DraftType = {\n type: 'question' | 'answer';\n};\n\nexport type DraftParams = QuestionDraft | AnswerDraft;\n\nclass SaveDraft {\n type: DraftType['type'];\n\n status: 'save' | 'remove';\n\n constructor({ type = 'question' }: DraftType) {\n this.type = type;\n this.status = 'save';\n }\n\n save = debounce((data: DraftParams) => {\n // TODO\n if (this.status === 'remove') {\n return;\n }\n if (this.type === 'question') {\n const { params, callback } = data as QuestionDraft;\n\n this.storeDraft(params, callback);\n }\n\n if (this.type === 'answer') {\n const { content, questionId, callback } = data as AnswerDraft;\n if (!questionId || !content) {\n return;\n }\n\n this.storeDraft({ content, questionId }, callback);\n }\n }, 3000);\n\n remove() {\n this.status = 'remove';\n const that = this;\n if (this.type === 'question') {\n storage.remove(DRAFT_QUESTION_STORAGE_KEY, () => {\n that.status = 'save';\n });\n }\n if (this.type === 'answer') {\n storage.remove(DRAFT_ANSWER_STORAGE_KEY, () => {\n that.status = 'save';\n });\n }\n }\n\n private storeDraft = (params: any, callback) => {\n const key =\n this.type === 'question'\n ? DRAFT_QUESTION_STORAGE_KEY\n : DRAFT_ANSWER_STORAGE_KEY;\n storage.set(key, params);\n callback?.();\n };\n}\n\nexport default SaveDraft;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport Color from 'color';\n\n/**\n * Bootstrap Color Weight:\n * $blue-100: tint-color($blue, 80%) !default;\n * $blue-200: tint-color($blue, 60%) !default;\n * $blue-300: tint-color($blue, 40%) !default;\n * $blue-400: tint-color($blue, 20%) !default;\n * $blue-500: $blue !default;\n * $blue-600: shade-color($blue, 20%) !default;\n * $blue-700: shade-color($blue, 40%) !default;\n * $blue-800: shade-color($blue, 60%) !default;\n * $blue-900: shade-color($blue, 80%) !default;\n */\n\n/**\n * The `weight` parameter in `Color`:\n * 1. Must use decimals rather than percentages. eg: color.mix(Color(\"blue\"), 0.6)\n * 2. The value is the difference between `1 - $weight` in `bootstrap`.\n * eg: color.mix(Color(\"blue\"), 0.6) === shade-color($blue, 40%) !default\n */\n\nconst WHITE = Color('#fff');\nconst BLACK = Color('#000');\n\nexport const mixColour = (baseColor, opColor, weight) => {\n return Color(baseColor).mix(Color(opColor), weight);\n};\n\nexport const tintColor = (color, weight) => {\n return mixColour(WHITE, color, weight);\n};\n\nexport const shadeColor = (color, weight) => {\n return mixColour(BLACK, color, weight);\n};\n\nexport const shiftColor = (color, weight) => {\n if (weight > 0) {\n return shadeColor(color, weight);\n }\n return tintColor(color, -weight);\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport dayjs from 'dayjs';\nimport i18next from 'i18next';\nimport utc from 'dayjs/plugin/utc';\nimport timezone from 'dayjs/plugin/timezone';\n\nimport {\n interfaceStore,\n loggedUserInfoStore,\n themeSettingStore,\n} from '@/stores';\nimport {\n CURRENT_LANG_STORAGE_KEY,\n DEFAULT_LANG,\n LANG_RESOURCE_STORAGE_KEY,\n DEFAULT_THEME,\n} from '@/common/constants';\nimport {\n getAdminLanguageOptions,\n getLanguageConfig,\n getLanguageOptions,\n} from '@/services';\nimport { changeTheme } from '@/utils/common';\n\nimport Storage from './storage';\n\n/**\n * localize kit for i18n\n */\nexport const loadLanguageOptions = async (forAdmin = false) => {\n const languageOptions = forAdmin\n ? await getAdminLanguageOptions()\n : await getLanguageOptions();\n if (process.env.NODE_ENV === 'development') {\n const { default: optConf } = await import('@i18n/i18n.yaml');\n optConf?.language_options.forEach((opt) => {\n if (!languageOptions.find((_) => opt.value === _.value)) {\n languageOptions.push(opt);\n }\n });\n }\n return languageOptions;\n};\n\nconst pullLanguageConf = (res) => {\n return getLanguageConfig().then((langConf) => {\n if (langConf && langConf.ui) {\n res.resources = langConf.ui;\n Storage.set(LANG_RESOURCE_STORAGE_KEY, res);\n }\n });\n};\nconst addI18nResource = async (langName) => {\n const res = { lng: langName, resources: undefined };\n const storageResource = Storage.get(LANG_RESOURCE_STORAGE_KEY);\n if (process.env.NODE_ENV === 'development') {\n try {\n const { default: resConf } = await import(`@i18n/${langName}.yaml`);\n res.resources = resConf.ui;\n } catch (ex) {\n console.error('addI18nResource error: ', ex);\n }\n } else if (storageResource && storageResource.lng === res.lng) {\n res.resources = storageResource.resources;\n pullLanguageConf(res);\n } else {\n await pullLanguageConf(res);\n }\n\n if (res.resources) {\n i18next.addResourceBundle(\n res.lng,\n 'translation',\n res.resources,\n true,\n true,\n );\n }\n};\n\nexport const getCurrentLang = () => {\n const loggedUser = loggedUserInfoStore.getState().user;\n const adminInterface = interfaceStore.getState().interface;\n const fallbackLang = Storage.get(CURRENT_LANG_STORAGE_KEY) || DEFAULT_LANG;\n let currentLang = loggedUser.language;\n // `default` mean use language value from admin interface\n if (/default/i.test(currentLang)) {\n currentLang = adminInterface.language;\n }\n currentLang ||= fallbackLang;\n return currentLang;\n};\n\nexport const getCurrentTheme = () => {\n const loggedUser = loggedUserInfoStore.getState().user;\n const adminTheme = themeSettingStore.getState().color_scheme;\n const fallbackTheme = DEFAULT_THEME;\n let currentTheme = loggedUser.color_scheme;\n if (/default/i.test(currentTheme)) {\n currentTheme = adminTheme;\n }\n currentTheme ||= fallbackTheme;\n return currentTheme;\n};\n\n/**\n * localize for Day.js\n */\ndayjs.extend(utc);\ndayjs.extend(timezone);\nconst localeDayjs = (langName) => {\n langName = langName.replace('_', '-').toLowerCase();\n dayjs.locale(langName);\n};\n\nexport const setupAppLanguage = async () => {\n const lang = getCurrentLang();\n await addI18nResource(lang);\n localeDayjs(lang);\n i18next.changeLanguage(lang);\n};\n\nexport const setupAppTimeZone = () => {\n const adminInterface = interfaceStore.getState().interface;\n if (adminInterface.time_zone) {\n dayjs.tz.setDefault(adminInterface.time_zone);\n }\n};\n\nexport const setupAppTheme = () => {\n const theme = getCurrentTheme();\n changeTheme(theme);\n};\n","// This helper function will allows us to get the domain name regardless of its form\n// beta.example.com => example.com\n// example.com/* => example.com\n\nconst NEXTAUTH_URL = 'https://selfpublishingtitans.com';\n// const NEXTAUTH_URL = 'http://localhost:3000';\n\n// Define how we want the session token to be stored in our browser\n\nexport const getTokenFromNextAuth = async (): Promise => {\n try {\n // get the base url without the sobdomain\n const authTokenEncrypted = await fetch(`${NEXTAUTH_URL}/api/auth/session`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n }).then((res) => res.json());\n // console.log('authTokenEncrypted: ', authTokenEncrypted);\n\n if (authTokenEncrypted) {\n // const { NEXT_PUBLIC_NEXTAUTH_SECRET } = process.env;\n // if (!NEXT_PUBLIC_NEXTAUTH_SECRET) {\n // throw new Error('Missing NEXT_PUBLIC_NEXTAUTH_SECRET');\n // }\n\n // const isNextAuthRequest = true; // Simplified for now\n // if (isNextAuthRequest && authTokenEncrypted) {\n // const res: any = await decode({\n // token: authTokenEncrypted,\n // secret: NEXT_PUBLIC_NEXTAUTH_SECRET,\n // });\n // console.log('res: ', res);\n // return (res?.token as string) || null;\n // }\n return authTokenEncrypted.token;\n }\n } catch (error) {\n console.error('Error getting token from NextAuth:', error);\n }\n\n return null;\n};\n\nexport const getUserInfo = async (): Promise => {\n try {\n // get the base url without the sobdomain\n const authTokenEncrypted = await fetch(`${NEXTAUTH_URL}/api/auth/session`, {\n method: 'GET',\n headers: {\n 'Content-Type': 'application/json',\n },\n credentials: 'include',\n }).then((res) => res.json());\n // console.log('authTokenEncrypted: ', authTokenEncrypted);\n\n if (authTokenEncrypted) {\n // const { NEXT_PUBLIC_NEXTAUTH_SECRET } = process.env;\n // if (!NEXT_PUBLIC_NEXTAUTH_SECRET) {\n // throw new Error('Missing NEXT_PUBLIC_NEXTAUTH_SECRET');\n // }\n\n // const isNextAuthRequest = true; // Simplified for now\n // if (isNextAuthRequest && authTokenEncrypted) {\n // const res: any = await decode({\n // token: authTokenEncrypted,\n // secret: NEXT_PUBLIC_NEXTAUTH_SECRET,\n // });\n // console.log('res: ', res);\n // return (res?.token as string) || null;\n // }\n return authTokenEncrypted;\n }\n } catch (error) {\n console.error('Error getting token from NextAuth:', error);\n }\n\n return null;\n};\n\nconst ProxyTokenUrl = 'https://go.selfpublishingtitans.com/api/v1/answer/token';\n\nexport async function getCommunityToken() {\n const mainSiteToken = await getTokenFromNextAuth();\n if (!mainSiteToken) {\n return null;\n }\n\n // console.log('mainSiteToken: ', mainSiteToken);\n\n const response = await fetch(ProxyTokenUrl, {\n method: 'GET',\n headers: {\n Authorization: `Bearer ${mainSiteToken}`,\n },\n });\n\n const data: User = await response.json();\n return data.access_token;\n}\n\nexport interface User {\n id: string;\n created_at: number;\n last_login_date: number;\n username: string;\n e_mail: string;\n mail_status: number;\n notice_status: number;\n follow_count: number;\n answer_count: number;\n question_count: number;\n rank: number;\n authority_group: number;\n display_name: string;\n avatar: string;\n mobile: string;\n bio: string;\n bio_html: string;\n website: string;\n location: string;\n language: string;\n color_scheme: string;\n access_token: string;\n role_id: number;\n status: string;\n have_password: boolean;\n visit_token: string;\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport i18next from 'i18next';\n\nimport { PluginInfo, Plugin, PluginType } from './interface';\n\n/**\n * This information is to be defined for all components.\n * It may be used for feature upgrades or version compatibility processing.\n *\n * @field slug_name: Unique identity string for the plugin, usually configured in `info.yaml`\n * @field type: The type of plugin is defined and a single type of plugin can have multiple implementations.\n * For example, a plugin of type `connector` can have a `google` implementation and a `github` implementation.\n * `PluginRender` automatically renders the plug-in types already included in `PluginType`.\n * @field name: Plugin name, optionally configurable. Usually read from the `i18n` file\n * @field description: Plugin description, optionally configurable. Usually read from the `i18n` file\n */\n\nconst I18N_NS = 'plugin';\ninterface I18nResource {\n [lng: string]: {\n plugin: {\n [slug_name: string]: {\n ui: any;\n };\n };\n };\n}\n\nconst addResourceBundle = (resource: I18nResource) => {\n if (resource) {\n Object.keys(resource).forEach((lng) => {\n const r = resource[lng];\n\n i18next.addResourceBundle(lng, I18N_NS, r.plugin, true, true);\n });\n }\n};\n\nconst initI18nResource = (resource: I18nResource) => {\n addResourceBundle(resource);\n /**\n * Note: In development mode,\n * when the base i18n file is changed, `i18next` will reinitialise the updated resource file,\n * which will cause the resource package added in the plugin to be lost\n * and will need to be automatically re-added by listening for events\n */\n i18next.on('initialized', () => {\n addResourceBundle(resource);\n });\n};\n\nconst getTransNs = () => {\n return I18N_NS;\n};\n\nconst getTransKeyPrefix = (info: PluginInfo) => {\n const kp = `${info.slug_name}.ui`;\n return kp;\n};\n\nexport type { Plugin, PluginInfo, PluginType };\n\nexport { initI18nResource, getTransNs, getTransKeyPrefix };\n","export default {slug_name:'third_party_connector',type:'connector',version:'0.0.1',link:'https://github.com/apache/incubator-answer-plugins/tree/main/connector-basic',author:'Answer'};","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { initI18nResource } from '@/utils/pluginKit/utils';\n\nimport en_US from './en_US.yaml';\nimport zh_CN from './zh_CN.yaml';\n\ninitI18nResource({\n en_US,\n zh_CN,\n});\n","export default {plugin:{third_party_connector:{ui:{connect:'Connect with {{ auth_name }}',remove:'Remove {{ auth_name }}'}}}};","export default {plugin:{third_party_connector:{ui:{connect:'连接到 {{ auth_name }}',remove:'解绑 {{ auth_name }}'}}}};","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo, FC } from 'react';\nimport { Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport classnames from 'classnames';\n\nimport {\n getTransNs,\n getTransKeyPrefix,\n PluginInfo,\n} from '@/utils/pluginKit/utils';\nimport { SvgIcon } from '@/components';\n\nimport info from './info.yaml';\nimport { useGetStartUseOauthConnector } from './services';\nimport './i18n';\n\nconst pluginInfo: PluginInfo = {\n slug_name: info.slug_name,\n type: info.type,\n};\ninterface Props {\n className?: string;\n}\nconst Index: FC = ({ className }) => {\n const { t } = useTranslation(getTransNs(), {\n keyPrefix: getTransKeyPrefix(pluginInfo),\n });\n\n const { data } = useGetStartUseOauthConnector();\n\n if (!data?.length) return null;\n return (\n
\n {data?.map((item) => {\n return (\n \n );\n })}\n
\n );\n};\n\nexport default {\n info: pluginInfo,\n component: memo(Index),\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\n\nexport interface OauthConnectorItem {\n icon: string;\n name: string;\n link: string;\n}\n\nexport const useGetStartUseOauthConnector = () => {\n const { data, error } = useSWR(\n '/answer/api/v1/connector/info',\n request.instance.get,\n );\n\n return {\n data,\n error,\n };\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { initI18nResource } from '@/utils/pluginKit/utils';\n\nimport en_US from './en_US.yaml';\nimport zh_CN from './zh_CN.yaml';\n\ninitI18nResource({\n en_US,\n zh_CN,\n});\n","export default {plugin:{hosting_connector:{ui:{connect:'Connect with {{ auth_name }}',login:'Login',qrcode_login_tip:'Please use {{ agentName }} to scan the QR code and log in.',login_failed_email_tip:'Login failed, please allow this app to access your email information before try again.'}}}};","export default {plugin:{hosting_connector:{ui:{connect:'连接到 {{ auth_name }}',login:'登录',qrcode_login_tip:'请使用 {{ agentName }} 扫描二维码登录',login_failed_email_tip:'登录失败,请允许该应用程序访问您的电子邮件信息,然后再试一次。'}}}};","export default {slug_name:'hosting_connector',type:'connector',version:'0.0.1',author:'Answer'};","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo, FC } from 'react';\nimport { Button } from 'react-bootstrap';\nimport { useTranslation } from 'react-i18next';\n\nimport classnames from 'classnames';\n\nimport {\n getTransNs,\n getTransKeyPrefix,\n PluginInfo,\n} from '@/utils/pluginKit/utils';\nimport { SvgIcon } from '@/components';\nimport { userCenterStore } from '@/stores';\nimport './i18n';\n\nimport info from './info.yaml';\n\ninterface Props {\n className?: classnames.Argument;\n}\n\nconst pluginInfo: PluginInfo = {\n slug_name: info.slug_name,\n type: info.type,\n};\n\nconst Index: FC = ({ className }) => {\n const { t } = useTranslation(getTransNs(), {\n keyPrefix: getTransKeyPrefix(pluginInfo),\n });\n const ucAgent = userCenterStore().agent;\n const ucLoginRedirect =\n ucAgent?.enabled && ucAgent?.agent_info?.login_redirect_url;\n\n if (ucLoginRedirect) {\n return (\n \n \n \n {t('connect', { auth_name: ucAgent?.agent_info.display_name })}\n \n \n );\n }\n return null;\n};\nexport default {\n info: pluginInfo,\n component: memo(Index),\n};\n","export default {slug_name:'serarch_info',type:'search',version:'0.0.1',author:'Answer'};","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { initI18nResource } from '@/utils/pluginKit/utils';\n\nimport en_US from './en_US.yaml';\nimport zh_CN from './zh_CN.yaml';\n\ninitI18nResource({\n en_US,\n zh_CN,\n});\n","export default {plugin:{serarch_info:{ui:{search_by:'Search by'}}}};","export default {plugin:{serarch_info:{ui:{search_by:'搜索提供'}}}};","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { memo, FC } from 'react';\nimport { useTranslation } from 'react-i18next';\n\nimport {\n getTransNs,\n getTransKeyPrefix,\n PluginInfo,\n} from '@/utils/pluginKit/utils';\nimport { SvgIcon } from '@/components';\n\nimport info from './info.yaml';\nimport { useGetSearchPLuginInfo } from './services';\nimport './i18n';\n\nconst pluginInfo: PluginInfo = {\n slug_name: info.slug_name,\n type: info.type,\n};\n\nconst Index: FC = () => {\n const { t } = useTranslation(getTransNs(), {\n keyPrefix: getTransKeyPrefix(pluginInfo),\n });\n\n const { data } = useGetSearchPLuginInfo();\n if (!data?.icon) return null;\n\n return (\n \n {t('search_by')}\n \n \n );\n};\n\nexport default {\n info: pluginInfo,\n component: memo(Index),\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport useSWR from 'swr';\n\nimport request from '@/utils/request';\n\nexport interface AlgoliaRes {\n name: string;\n icon: string;\n link: string;\n}\n\nexport const useGetSearchPLuginInfo = () => {\n const { data, error } = useSWR(\n '/answer/api/v1/search/desc',\n request.instance.get,\n );\n\n return {\n data,\n error,\n };\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport ThirdPartyConnector from './ThirdPartyConnector';\nimport HostingConnector from './HostingConnector';\nimport SearchInfo from './SearchInfo';\n\nexport default {\n ThirdPartyConnector,\n HostingConnector,\n SearchInfo,\n};\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { RefObject } from 'react';\n\nimport builtin from '@/plugins/builtin';\n// import * as allPlugins from '@/plugins';\nimport type * as Type from '@/common/interface';\nimport { LOGGED_TOKEN_STORAGE_KEY } from '@/common/constants';\nimport { getPluginsStatus } from '@/services';\nimport Storage from '@/utils/storage';\n\nimport { initI18nResource } from './utils';\nimport { Plugin, PluginInfo, PluginType } from './interface';\n\n/**\n * This information is to be defined for all components.\n * It may be used for feature upgrades or version compatibility processing.\n *\n * @field slug_name: Unique identity string for the plugin, usually configured in `info.yaml`\n * @field type: The type of plugin is defined and a single type of plugin can have multiple implementations.\n * For example, a plugin of type `connector` can have a `google` implementation and a `github` implementation.\n * `PluginRender` automatically renders the plug-in types already included in `PluginType`.\n * @field name: Plugin name, optionally configurable. Usually read from the `i18n` file\n * @field description: Plugin description, optionally configurable. Usually read from the `i18n` file\n */\n\nclass Plugins {\n plugins: Plugin[] = [];\n\n registeredPlugins: Type.ActivatedPlugin[] = [];\n\n constructor() {\n this.registerBuiltin();\n // this.registerPlugins();\n\n getPluginsStatus().then((plugins) => {\n this.registeredPlugins = plugins;\n this.activatePlugins(plugins);\n });\n }\n\n validate(plugin: Plugin) {\n if (!plugin) {\n return false;\n }\n const { info } = plugin;\n const { slug_name, type } = info;\n\n if (!slug_name) {\n return false;\n }\n\n if (!type) {\n return false;\n }\n\n return true;\n }\n\n registerBuiltin() {\n Object.keys(builtin).forEach((key) => {\n const plugin = builtin[key];\n // builttin plugins are always activated\n // Use own internal rendering logic'\n plugin.activated = true;\n this.register(plugin);\n });\n }\n\n // registerPlugins() {\n // Object.keys(allPlugins).forEach((key) => {\n // const plugin = allPlugins[key];\n // this.register(plugin);\n // });\n // }\n\n register(plugin: Plugin) {\n const bool = this.validate(plugin);\n if (!bool) {\n return;\n }\n if (plugin.i18nConfig) {\n initI18nResource(plugin.i18nConfig);\n }\n this.plugins.push(plugin);\n }\n\n activatePlugins(activatedPlugins: Type.ActivatedPlugin[]) {\n this.plugins.forEach((plugin: any) => {\n const { slug_name } = plugin.info;\n const activatedPlugin: any = activatedPlugins?.find(\n (p) => p.slug_name === slug_name,\n );\n if (activatedPlugin) {\n plugin.activated = activatedPlugin?.enabled;\n }\n });\n }\n\n changePluginActiveStatus(slug_name: string, active: boolean) {\n const plugin = this.getPlugin(slug_name);\n if (plugin) {\n plugin.activated = active;\n }\n }\n\n getPlugin(slug_name: string) {\n return this.plugins.find((p) => p.info.slug_name === slug_name);\n }\n\n getOnePluginHooks(slug_name: string) {\n const plugin = this.getPlugin(slug_name);\n return plugin?.hooks;\n }\n\n getPlugins() {\n return this.plugins;\n }\n}\n\nconst plugins = new Plugins();\n\nconst getRoutePlugins = () => {\n return plugins\n .getPlugins()\n .filter((plugin) => plugin.info.type === PluginType.Route);\n};\n\nconst defaultProps = () => {\n const token = Storage.get(LOGGED_TOKEN_STORAGE_KEY) || '';\n return {\n key: token,\n headers: {\n Authorization: token,\n },\n };\n};\n\nconst validateRoutePlugin = async (slugName) => {\n let registeredPlugin;\n if (plugins.registeredPlugins.length === 0) {\n const pluginsStatus = await getPluginsStatus();\n registeredPlugin = pluginsStatus.find((p) => p.slug_name === slugName);\n } else {\n registeredPlugin = plugins.registeredPlugins.find(\n (p) => p.slug_name === slugName,\n );\n }\n\n return Boolean(registeredPlugin?.enabled);\n};\n\nconst mergeRoutePlugins = (routes) => {\n const routePlugins = getRoutePlugins();\n if (routePlugins.length === 0) {\n return routes;\n }\n routes.forEach((route) => {\n if (route.page === 'pages/Layout') {\n route.children?.forEach((child) => {\n if (child.page === 'pages/SideNavLayout') {\n routePlugins.forEach((plugin) => {\n const { route: path, slug_name } = plugin.info;\n child.children.push({\n page: plugin.component,\n path,\n loader: async () => {\n const bool = await validateRoutePlugin(slug_name);\n return bool;\n },\n guard: (params) => {\n if (params.loaderData) {\n return {\n ok: true,\n };\n }\n\n return {\n ok: false,\n error: {\n code: 404,\n },\n };\n },\n });\n });\n }\n });\n }\n });\n return routes;\n};\n\n/**\n * Only used to enhance the capabilities of the markdown editor\n * Add RefObject type to solve the problem of dom being null in hooks\n */\nconst useRenderHtmlPlugin = (\n element: HTMLElement | RefObject | null,\n) => {\n plugins\n .getPlugins()\n .filter((plugin) => {\n return (\n plugin.activated &&\n plugin.hooks?.useRender &&\n (plugin.info.type === PluginType.Editor ||\n plugin.info.type === PluginType.Render)\n );\n })\n .forEach((plugin) => {\n plugin.hooks?.useRender?.forEach((hook) => {\n hook(element);\n });\n });\n};\n\n// Only for render type plugins\nconst useRenderPlugin = (\n element: HTMLElement | RefObject | null,\n) => {\n return plugins\n .getPlugins()\n .filter((plugin) => {\n return (\n plugin.activated &&\n plugin.hooks?.useRender &&\n plugin.info.type === PluginType.Render\n );\n })\n .forEach((plugin) => {\n plugin.hooks?.useRender?.forEach((hook) => {\n hook(element);\n });\n });\n};\n\n// Only one captcha type plug-in can be enabled at the same time\nconst useCaptchaPlugin = (key: Type.CaptchaKey) => {\n const captcha = plugins\n .getPlugins()\n .filter(\n (plugin) => plugin.info.type === PluginType.Captcha && plugin.activated,\n );\n const pluginHooks = plugins.getOnePluginHooks(captcha[0]?.info.slug_name);\n return pluginHooks?.useCaptcha?.({\n captchaKey: key,\n commonProps: defaultProps(),\n });\n};\n\nexport type { Plugin, PluginInfo };\n\nexport {\n useRenderHtmlPlugin,\n mergeRoutePlugins,\n useCaptchaPlugin,\n useRenderPlugin,\n PluginType,\n};\nexport default plugins;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { NamedExoticComponent, FC, RefObject } from 'react';\n\nimport type * as Type from '@/common/interface';\n\nexport enum PluginType {\n Connector = 'connector',\n Search = 'search',\n Editor = 'editor',\n Route = 'route',\n Captcha = 'captcha',\n Render = 'render',\n}\n\nexport interface PluginInfo {\n slug_name: string;\n type: PluginType;\n name?: string;\n description?: string;\n route?: string;\n}\n\nexport interface Plugin {\n info: PluginInfo;\n component: NamedExoticComponent | FC;\n i18nConfig?;\n hooks?: {\n useRender?: Array<\n (element: HTMLElement | RefObject | null) => void\n >;\n useCaptcha?: (props: { captchaKey: Type.CaptchaKey; commonProps: any }) => {\n getCaptcha: () => Record;\n check: (t: () => void) => void;\n handleCaptchaError: (error) => any;\n close: () => Promise;\n resolveCaptchaReq: (data) => void;\n };\n };\n activated?: boolean;\n}\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport axios, { AxiosResponse } from 'axios';\nimport type { AxiosInstance, AxiosRequestConfig, AxiosError } from 'axios';\n\nimport { Modal } from '@/components';\nimport { loggedUserInfoStore, toastStore, errorCodeStore } from '@/stores';\nimport { LOGGED_TOKEN_STORAGE_KEY } from '@/common/constants';\nimport { RouteAlias } from '@/router/alias';\nimport { getCurrentLang } from '@/utils/localize';\n\nimport Storage from './storage';\nimport { floppyNavigation } from './floppyNavigation';\nimport { isIgnoredPath, IGNORE_PATH_LIST } from './guard';\nimport { getTokenFromNextAuth } from './next-auth';\n\nconst baseConfig = {\n baseURL:\n process.env.NODE_ENV === 'development'\n ? 'https://community.selfpublishingtitans.com'\n : 'https://community.selfpublishingtitans.com',\n timeout: 10000,\n // withCredentials: true,\n};\n\ninterface ApiConfig extends AxiosRequestConfig {\n // Configure whether to allow takeover of 404 errors\n allow404?: boolean;\n ignoreError?: '403' | '50X';\n // Configure whether to pass errors directly\n passingError?: boolean;\n}\n\nclass Request {\n instance: AxiosInstance;\n\n constructor(config: AxiosRequestConfig) {\n this.instance = axios.create(config);\n this.instance.interceptors.request.use(\n async (requestConfig: AxiosRequestConfig) => {\n console.log('Request interceptor triggered');\n // const token = Storage.get(LOGGED_TOKEN_STORAGE_KEY) || '';\n const authToken = await getTokenFromNextAuth();\n\n // console.log('Token:', authToken);\n\n const lang = getCurrentLang();\n requestConfig.headers = {\n Authorization: `Bearer ${authToken}`,\n 'Accept-Language': lang,\n };\n return requestConfig;\n },\n (err: AxiosError) => {\n console.error('request interceptors error:', err);\n },\n );\n\n this.instance.interceptors.response.use(\n (res: AxiosResponse) => {\n const { status, data } = res.data;\n\n if (status === 204) {\n // no content\n return true;\n }\n return data;\n },\n (error) => {\n const {\n status,\n data: errBody,\n config: errConfig,\n } = error.response || {};\n const { data = {}, msg = '' } = errBody || {};\n\n const errorObject: {\n code: any;\n msg: string;\n data: any;\n // Currently only used for form errors\n isError?: boolean;\n // Currently only used for form errors\n list?: any[];\n } = {\n code: status,\n msg,\n data,\n };\n\n if (status === 400) {\n if (data?.err_type && errConfig?.passingError) {\n return Promise.reject(errorObject);\n }\n if (data?.err_type) {\n if (data.err_type === 'toast') {\n // toast error message\n toastStore.getState().show({\n msg,\n variant: 'danger',\n });\n }\n\n if (data.err_type === 'alert') {\n return Promise.reject({\n msg,\n ...data,\n });\n }\n\n if (data.err_type === 'modal') {\n // modal error message\n Modal.confirm({\n content: msg,\n });\n }\n\n return Promise.reject(false);\n }\n\n if (data instanceof Array && data.length > 0) {\n // handle form error\n errorObject.isError = true;\n errorObject.list = data;\n return Promise.reject(errorObject);\n }\n\n if (!data || Object.keys(data).length <= 0) {\n // default error msg will show modal\n Modal.confirm({\n content: msg,\n showConfirm: false,\n cancelText: 'close',\n });\n return Promise.reject(false);\n }\n }\n // 401: Re-login required\n if (status === 401) {\n // clear userinfo\n errorCodeStore.getState().reset();\n loggedUserInfoStore.getState().clear();\n floppyNavigation.navigateToLogin();\n return Promise.reject(false);\n }\n\n if (status === 403) {\n // Permission interception\n if (data?.type === 'url_expired') {\n // url expired\n floppyNavigation.navigate(RouteAlias.activationFailed, {\n handler: 'replace',\n });\n return Promise.reject(false);\n }\n if (data?.type === 'inactive') {\n // inactivated\n floppyNavigation.navigate(RouteAlias.inactive);\n return Promise.reject(false);\n }\n\n if (data?.type === 'suspended') {\n floppyNavigation.navigate(RouteAlias.suspended, {\n handler: 'replace',\n });\n return Promise.reject(false);\n }\n\n if (isIgnoredPath(IGNORE_PATH_LIST)) {\n return Promise.reject(false);\n }\n if (error.config?.url.includes('/admin/api')) {\n errorCodeStore.getState().update('403');\n return Promise.reject(false);\n }\n\n if (msg) {\n toastStore.getState().show({\n msg,\n variant: 'danger',\n });\n }\n return Promise.reject(false);\n }\n\n if (status === 404 && error.config?.allow404) {\n if (isIgnoredPath(IGNORE_PATH_LIST)) {\n return Promise.reject(false);\n }\n errorCodeStore.getState().update('404');\n return Promise.reject(false);\n }\n\n if (status >= 500) {\n if (isIgnoredPath(IGNORE_PATH_LIST)) {\n return Promise.reject(false);\n }\n\n if (error.config?.ignoreError !== '50X') {\n errorCodeStore.getState().update('50X');\n }\n\n console.error(\n `Request failed with status code ${status}, ${msg || ''}`,\n );\n }\n return Promise.reject(errorObject);\n },\n );\n }\n\n public request(config: AxiosRequestConfig): Promise {\n return this.instance.request(config);\n }\n\n public get(url: string, config?: ApiConfig): Promise {\n return this.instance.get(url, config);\n }\n\n public post(\n url: string,\n data?: any,\n config?: AxiosRequestConfig,\n ): Promise {\n return this.instance.post(url, data, config);\n }\n\n public put(\n url: string,\n data?: any,\n config?: AxiosRequestConfig,\n ): Promise {\n return this.instance.put(url, data, config);\n }\n\n public delete(\n url: string,\n data?: any,\n config?: AxiosRequestConfig,\n ): Promise {\n return this.instance.delete(url, {\n data,\n ...config,\n });\n }\n}\n\nexport default new Request(baseConfig);\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nconst Storage = {\n get: (key: string) => {\n const value = localStorage.getItem(key);\n\n // If value exists, attempt to parse JSON\n if (value) {\n try {\n return JSON.parse(value);\n } catch {\n return value;\n }\n }\n return undefined;\n },\n set: (key: string, value: any): void => {\n if (typeof value === 'string') {\n localStorage.setItem(key, value);\n return;\n }\n localStorage.setItem(key, JSON.stringify(value));\n },\n remove: (key: string): void => {\n localStorage.removeItem(key);\n },\n clear: (): void => {\n localStorage.clear();\n },\n};\n\nexport default Storage;\n","/*\n * Licensed to the Apache Software Foundation (ASF) under one\n * or more contributor license agreements. See the NOTICE file\n * distributed with this work for additional information\n * regarding copyright ownership. The ASF licenses this file\n * to you under the Apache License, Version 2.0 (the\n * \"License\"); you may not use this file except in compliance\n * with the License. You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing,\n * software distributed under the License is distributed on an\n * \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\n * KIND, either express or implied. See the License for the\n * specific language governing permissions and limitations\n * under the License.\n */\n\nimport { RouteAlias } from '@/router/alias';\nimport { userCenterStore } from '@/stores';\nimport { getUcAgent, UcAgent } from '@/services/user-center';\n\nexport const pullUcAgent = async () => {\n const uca = await getUcAgent();\n userCenterStore.getState().update(uca);\n};\n\nexport const getLoginUrl = (uca?: UcAgent) => {\n let ret = RouteAlias.login;\n uca ||= userCenterStore.getState().agent;\n if (\n uca?.enabled &&\n !uca.agent_info?.enabled_original_user_system &&\n uca.agent_info?.login_redirect_url\n ) {\n ret = uca.agent_info.login_redirect_url;\n }\n return ret;\n};\n\nexport const getSignUpUrl = (uca?: UcAgent) => {\n let ret = RouteAlias.signUp;\n uca ||= userCenterStore.getState().agent;\n if (uca?.enabled && uca?.agent_info?.sign_up_redirect_url) {\n ret = uca.agent_info.sign_up_redirect_url;\n }\n return ret;\n};\n","var map = {\n\t\"./403\": [\n\t\t31332,\n\t\t1332\n\t],\n\t\"./403/\": [\n\t\t31332,\n\t\t1332\n\t],\n\t\"./403/index\": [\n\t\t31332,\n\t\t1332\n\t],\n\t\"./403/index.tsx\": [\n\t\t31332,\n\t\t1332\n\t],\n\t\"./404\": [\n\t\t41195,\n\t\t1195\n\t],\n\t\"./404/\": [\n\t\t41195,\n\t\t1195\n\t],\n\t\"./404/index\": [\n\t\t41195,\n\t\t1195\n\t],\n\t\"./404/index.tsx\": [\n\t\t41195,\n\t\t1195\n\t],\n\t\"./50X\": [\n\t\t11658,\n\t\t1658\n\t],\n\t\"./50X/\": [\n\t\t11658,\n\t\t1658\n\t],\n\t\"./50X/index\": [\n\t\t11658,\n\t\t1658\n\t],\n\t\"./50X/index.tsx\": [\n\t\t11658,\n\t\t1658\n\t],\n\t\"./Admin\": [\n\t\t14366,\n\t\t4366\n\t],\n\t\"./Admin/\": [\n\t\t14366,\n\t\t4366\n\t],\n\t\"./Admin/Answers\": [\n\t\t90178,\n\t\t178\n\t],\n\t\"./Admin/Answers/\": [\n\t\t90178,\n\t\t178\n\t],\n\t\"./Admin/Answers/components/Action\": [\n\t\t24922,\n\t\t4922\n\t],\n\t\"./Admin/Answers/components/Action/\": [\n\t\t24922,\n\t\t4922\n\t],\n\t\"./Admin/Answers/components/Action/index\": [\n\t\t24922,\n\t\t4922\n\t],\n\t\"./Admin/Answers/components/Action/index.tsx\": [\n\t\t24922,\n\t\t4922\n\t],\n\t\"./Admin/Answers/index\": [\n\t\t90178,\n\t\t178\n\t],\n\t\"./Admin/Answers/index.tsx\": [\n\t\t90178,\n\t\t178\n\t],\n\t\"./Admin/Badges\": [\n\t\t99901,\n\t\t9901\n\t],\n\t\"./Admin/Badges/\": [\n\t\t99901,\n\t\t9901\n\t],\n\t\"./Admin/Badges/components/Action\": [\n\t\t30333,\n\t\t333\n\t],\n\t\"./Admin/Badges/components/Action/\": [\n\t\t30333,\n\t\t333\n\t],\n\t\"./Admin/Badges/components/Action/index\": [\n\t\t30333,\n\t\t333\n\t],\n\t\"./Admin/Badges/components/Action/index.tsx\": [\n\t\t30333,\n\t\t333\n\t],\n\t\"./Admin/Badges/index\": [\n\t\t99901,\n\t\t9901\n\t],\n\t\"./Admin/Badges/index.tsx\": [\n\t\t99901,\n\t\t9901\n\t],\n\t\"./Admin/Branding\": [\n\t\t99100,\n\t\t9100\n\t],\n\t\"./Admin/Branding/\": [\n\t\t99100,\n\t\t9100\n\t],\n\t\"./Admin/Branding/index\": [\n\t\t99100,\n\t\t9100\n\t],\n\t\"./Admin/Branding/index.tsx\": [\n\t\t99100,\n\t\t9100\n\t],\n\t\"./Admin/CssAndHtml\": [\n\t\t85594,\n\t\t5594\n\t],\n\t\"./Admin/CssAndHtml/\": [\n\t\t85594,\n\t\t5594\n\t],\n\t\"./Admin/CssAndHtml/index\": [\n\t\t85594,\n\t\t5594\n\t],\n\t\"./Admin/CssAndHtml/index.tsx\": [\n\t\t85594,\n\t\t5594\n\t],\n\t\"./Admin/Dashboard\": [\n\t\t40419,\n\t\t4711,\n\t\t419\n\t],\n\t\"./Admin/Dashboard/\": [\n\t\t40419,\n\t\t4711,\n\t\t419\n\t],\n\t\"./Admin/Dashboard/components\": [\n\t\t26866,\n\t\t4711,\n\t\t6866\n\t],\n\t\"./Admin/Dashboard/components/\": [\n\t\t26866,\n\t\t4711,\n\t\t6866\n\t],\n\t\"./Admin/Dashboard/components/AnswerLinks\": [\n\t\t41270,\n\t\t1270\n\t],\n\t\"./Admin/Dashboard/components/AnswerLinks/\": [\n\t\t41270,\n\t\t1270\n\t],\n\t\"./Admin/Dashboard/components/AnswerLinks/index\": [\n\t\t41270,\n\t\t1270\n\t],\n\t\"./Admin/Dashboard/components/AnswerLinks/index.tsx\": [\n\t\t41270,\n\t\t1270\n\t],\n\t\"./Admin/Dashboard/components/HealthStatus\": [\n\t\t42181,\n\t\t4711,\n\t\t2181\n\t],\n\t\"./Admin/Dashboard/components/HealthStatus/\": [\n\t\t42181,\n\t\t4711,\n\t\t2181\n\t],\n\t\"./Admin/Dashboard/components/HealthStatus/index\": [\n\t\t42181,\n\t\t4711,\n\t\t2181\n\t],\n\t\"./Admin/Dashboard/components/HealthStatus/index.tsx\": [\n\t\t42181,\n\t\t4711,\n\t\t2181\n\t],\n\t\"./Admin/Dashboard/components/Statistics\": [\n\t\t7036,\n\t\t7036\n\t],\n\t\"./Admin/Dashboard/components/Statistics/\": [\n\t\t7036,\n\t\t7036\n\t],\n\t\"./Admin/Dashboard/components/Statistics/index\": [\n\t\t7036,\n\t\t7036\n\t],\n\t\"./Admin/Dashboard/components/Statistics/index.tsx\": [\n\t\t7036,\n\t\t7036\n\t],\n\t\"./Admin/Dashboard/components/SystemInfo\": [\n\t\t50774,\n\t\t774\n\t],\n\t\"./Admin/Dashboard/components/SystemInfo/\": [\n\t\t50774,\n\t\t774\n\t],\n\t\"./Admin/Dashboard/components/SystemInfo/index\": [\n\t\t50774,\n\t\t774\n\t],\n\t\"./Admin/Dashboard/components/SystemInfo/index.tsx\": [\n\t\t50774,\n\t\t774\n\t],\n\t\"./Admin/Dashboard/components/index\": [\n\t\t26866,\n\t\t4711,\n\t\t6866\n\t],\n\t\"./Admin/Dashboard/components/index.ts\": [\n\t\t26866,\n\t\t4711,\n\t\t6866\n\t],\n\t\"./Admin/Dashboard/index\": [\n\t\t40419,\n\t\t4711,\n\t\t419\n\t],\n\t\"./Admin/Dashboard/index.tsx\": [\n\t\t40419,\n\t\t4711,\n\t\t419\n\t],\n\t\"./Admin/General\": [\n\t\t7795,\n\t\t7795\n\t],\n\t\"./Admin/General/\": [\n\t\t7795,\n\t\t7795\n\t],\n\t\"./Admin/General/index\": [\n\t\t7795,\n\t\t7795\n\t],\n\t\"./Admin/General/index.tsx\": [\n\t\t7795,\n\t\t7795\n\t],\n\t\"./Admin/Interface\": [\n\t\t82550,\n\t\t2550\n\t],\n\t\"./Admin/Interface/\": [\n\t\t82550,\n\t\t2550\n\t],\n\t\"./Admin/Interface/index\": [\n\t\t82550,\n\t\t2550\n\t],\n\t\"./Admin/Interface/index.tsx\": [\n\t\t82550,\n\t\t2550\n\t],\n\t\"./Admin/Legal\": [\n\t\t12684,\n\t\t2684\n\t],\n\t\"./Admin/Legal/\": [\n\t\t12684,\n\t\t2684\n\t],\n\t\"./Admin/Legal/index\": [\n\t\t12684,\n\t\t2684\n\t],\n\t\"./Admin/Legal/index.tsx\": [\n\t\t12684,\n\t\t2684\n\t],\n\t\"./Admin/Login\": [\n\t\t81284,\n\t\t1284\n\t],\n\t\"./Admin/Login/\": [\n\t\t81284,\n\t\t1284\n\t],\n\t\"./Admin/Login/index\": [\n\t\t81284,\n\t\t1284\n\t],\n\t\"./Admin/Login/index.tsx\": [\n\t\t81284,\n\t\t1284\n\t],\n\t\"./Admin/Plugins/Config\": [\n\t\t23900,\n\t\t3900\n\t],\n\t\"./Admin/Plugins/Config/\": [\n\t\t23900,\n\t\t3900\n\t],\n\t\"./Admin/Plugins/Config/index\": [\n\t\t23900,\n\t\t3900\n\t],\n\t\"./Admin/Plugins/Config/index.tsx\": [\n\t\t23900,\n\t\t3900\n\t],\n\t\"./Admin/Plugins/Installed\": [\n\t\t42064,\n\t\t2064\n\t],\n\t\"./Admin/Plugins/Installed/\": [\n\t\t42064,\n\t\t2064\n\t],\n\t\"./Admin/Plugins/Installed/index\": [\n\t\t42064,\n\t\t2064\n\t],\n\t\"./Admin/Plugins/Installed/index.tsx\": [\n\t\t42064,\n\t\t2064\n\t],\n\t\"./Admin/Privileges\": [\n\t\t58513,\n\t\t8513\n\t],\n\t\"./Admin/Privileges/\": [\n\t\t58513,\n\t\t8513\n\t],\n\t\"./Admin/Privileges/index\": [\n\t\t58513,\n\t\t8513\n\t],\n\t\"./Admin/Privileges/index.tsx\": [\n\t\t58513,\n\t\t8513\n\t],\n\t\"./Admin/Questions\": [\n\t\t39220,\n\t\t9220\n\t],\n\t\"./Admin/Questions/\": [\n\t\t39220,\n\t\t9220\n\t],\n\t\"./Admin/Questions/components/Action\": [\n\t\t14883,\n\t\t7264\n\t],\n\t\"./Admin/Questions/components/Action/\": [\n\t\t14883,\n\t\t7264\n\t],\n\t\"./Admin/Questions/components/Action/index\": [\n\t\t14883,\n\t\t7264\n\t],\n\t\"./Admin/Questions/components/Action/index.tsx\": [\n\t\t14883,\n\t\t7264\n\t],\n\t\"./Admin/Questions/index\": [\n\t\t39220,\n\t\t9220\n\t],\n\t\"./Admin/Questions/index.tsx\": [\n\t\t39220,\n\t\t9220\n\t],\n\t\"./Admin/Seo\": [\n\t\t14440,\n\t\t4440\n\t],\n\t\"./Admin/Seo/\": [\n\t\t14440,\n\t\t4440\n\t],\n\t\"./Admin/Seo/index\": [\n\t\t14440,\n\t\t4440\n\t],\n\t\"./Admin/Seo/index.tsx\": [\n\t\t14440,\n\t\t4440\n\t],\n\t\"./Admin/SettingsUsers\": [\n\t\t47678,\n\t\t7678\n\t],\n\t\"./Admin/SettingsUsers/\": [\n\t\t47678,\n\t\t7678\n\t],\n\t\"./Admin/SettingsUsers/index\": [\n\t\t47678,\n\t\t7678\n\t],\n\t\"./Admin/SettingsUsers/index.tsx\": [\n\t\t47678,\n\t\t7678\n\t],\n\t\"./Admin/Smtp\": [\n\t\t47341,\n\t\t7341\n\t],\n\t\"./Admin/Smtp/\": [\n\t\t47341,\n\t\t7341\n\t],\n\t\"./Admin/Smtp/index\": [\n\t\t47341,\n\t\t7341\n\t],\n\t\"./Admin/Smtp/index.tsx\": [\n\t\t47341,\n\t\t7341\n\t],\n\t\"./Admin/Themes\": [\n\t\t95851,\n\t\t5851\n\t],\n\t\"./Admin/Themes/\": [\n\t\t95851,\n\t\t5851\n\t],\n\t\"./Admin/Themes/index\": [\n\t\t95851,\n\t\t5851\n\t],\n\t\"./Admin/Themes/index.tsx\": [\n\t\t95851,\n\t\t5851\n\t],\n\t\"./Admin/Users\": [\n\t\t42699,\n\t\t2699\n\t],\n\t\"./Admin/Users/\": [\n\t\t42699,\n\t\t2699\n\t],\n\t\"./Admin/Users/components/Action\": [\n\t\t37639,\n\t\t7639\n\t],\n\t\"./Admin/Users/components/Action/\": [\n\t\t37639,\n\t\t7639\n\t],\n\t\"./Admin/Users/components/Action/index\": [\n\t\t37639,\n\t\t7639\n\t],\n\t\"./Admin/Users/components/Action/index.tsx\": [\n\t\t37639,\n\t\t7639\n\t],\n\t\"./Admin/Users/components/DeleteUserModal\": [\n\t\t87352,\n\t\t7352\n\t],\n\t\"./Admin/Users/components/DeleteUserModal/\": [\n\t\t87352,\n\t\t7352\n\t],\n\t\"./Admin/Users/components/DeleteUserModal/index\": [\n\t\t87352,\n\t\t7352\n\t],\n\t\"./Admin/Users/components/DeleteUserModal/index.tsx\": [\n\t\t87352,\n\t\t7352\n\t],\n\t\"./Admin/Users/index\": [\n\t\t42699,\n\t\t2699\n\t],\n\t\"./Admin/Users/index.tsx\": [\n\t\t42699,\n\t\t2699\n\t],\n\t\"./Admin/Write\": [\n\t\t94346,\n\t\t4346\n\t],\n\t\"./Admin/Write/\": [\n\t\t94346,\n\t\t4346\n\t],\n\t\"./Admin/Write/index\": [\n\t\t94346,\n\t\t4346\n\t],\n\t\"./Admin/Write/index.tsx\": [\n\t\t94346,\n\t\t4346\n\t],\n\t\"./Admin/index\": [\n\t\t14366,\n\t\t4366\n\t],\n\t\"./Admin/index.scss\": [\n\t\t3844,\n\t\t3844\n\t],\n\t\"./Admin/index.tsx\": [\n\t\t14366,\n\t\t4366\n\t],\n\t\"./Badges\": [\n\t\t90289,\n\t\t289\n\t],\n\t\"./Badges/\": [\n\t\t90289,\n\t\t289\n\t],\n\t\"./Badges/Detail\": [\n\t\t76743,\n\t\t6743\n\t],\n\t\"./Badges/Detail/\": [\n\t\t76743,\n\t\t6743\n\t],\n\t\"./Badges/Detail/components/Badge\": [\n\t\t12442,\n\t\t2442\n\t],\n\t\"./Badges/Detail/components/Badge/\": [\n\t\t12442,\n\t\t2442\n\t],\n\t\"./Badges/Detail/components/Badge/index\": [\n\t\t12442,\n\t\t2442\n\t],\n\t\"./Badges/Detail/components/Badge/index.tsx\": [\n\t\t12442,\n\t\t2442\n\t],\n\t\"./Badges/Detail/components/HeaderLoader\": [\n\t\t15447,\n\t\t5447\n\t],\n\t\"./Badges/Detail/components/HeaderLoader/\": [\n\t\t15447,\n\t\t5447\n\t],\n\t\"./Badges/Detail/components/HeaderLoader/index\": [\n\t\t15447,\n\t\t5447\n\t],\n\t\"./Badges/Detail/components/HeaderLoader/index.tsx\": [\n\t\t15447,\n\t\t5447\n\t],\n\t\"./Badges/Detail/components/Loader\": [\n\t\t68848,\n\t\t8848\n\t],\n\t\"./Badges/Detail/components/Loader/\": [\n\t\t68848,\n\t\t8848\n\t],\n\t\"./Badges/Detail/components/Loader/index\": [\n\t\t68848,\n\t\t8848\n\t],\n\t\"./Badges/Detail/components/Loader/index.tsx\": [\n\t\t68848,\n\t\t8848\n\t],\n\t\"./Badges/Detail/components/UserCard\": [\n\t\t94498,\n\t\t4498\n\t],\n\t\"./Badges/Detail/components/UserCard/\": [\n\t\t94498,\n\t\t4498\n\t],\n\t\"./Badges/Detail/components/UserCard/index\": [\n\t\t94498,\n\t\t4498\n\t],\n\t\"./Badges/Detail/components/UserCard/index.tsx\": [\n\t\t94498,\n\t\t4498\n\t],\n\t\"./Badges/Detail/index\": [\n\t\t76743,\n\t\t6743\n\t],\n\t\"./Badges/Detail/index.tsx\": [\n\t\t76743,\n\t\t6743\n\t],\n\t\"./Badges/index\": [\n\t\t90289,\n\t\t289\n\t],\n\t\"./Badges/index.tsx\": [\n\t\t90289,\n\t\t289\n\t],\n\t\"./Install\": [\n\t\t39962,\n\t\t9962\n\t],\n\t\"./Install/\": [\n\t\t39962,\n\t\t9962\n\t],\n\t\"./Install/components\": [\n\t\t76907,\n\t\t6907\n\t],\n\t\"./Install/components/\": [\n\t\t76907,\n\t\t6907\n\t],\n\t\"./Install/components/FifthStep\": [\n\t\t8293,\n\t\t8293\n\t],\n\t\"./Install/components/FifthStep/\": [\n\t\t8293,\n\t\t8293\n\t],\n\t\"./Install/components/FifthStep/index\": [\n\t\t8293,\n\t\t8293\n\t],\n\t\"./Install/components/FifthStep/index.tsx\": [\n\t\t8293,\n\t\t8293\n\t],\n\t\"./Install/components/FirstStep\": [\n\t\t50104,\n\t\t104\n\t],\n\t\"./Install/components/FirstStep/\": [\n\t\t50104,\n\t\t104\n\t],\n\t\"./Install/components/FirstStep/index\": [\n\t\t50104,\n\t\t104\n\t],\n\t\"./Install/components/FirstStep/index.tsx\": [\n\t\t50104,\n\t\t104\n\t],\n\t\"./Install/components/FourthStep\": [\n\t\t69998,\n\t\t9998\n\t],\n\t\"./Install/components/FourthStep/\": [\n\t\t69998,\n\t\t9998\n\t],\n\t\"./Install/components/FourthStep/index\": [\n\t\t69998,\n\t\t9998\n\t],\n\t\"./Install/components/FourthStep/index.tsx\": [\n\t\t69998,\n\t\t9998\n\t],\n\t\"./Install/components/Progress\": [\n\t\t94298,\n\t\t4298\n\t],\n\t\"./Install/components/Progress/\": [\n\t\t94298,\n\t\t4298\n\t],\n\t\"./Install/components/Progress/index\": [\n\t\t94298,\n\t\t4298\n\t],\n\t\"./Install/components/Progress/index.tsx\": [\n\t\t94298,\n\t\t4298\n\t],\n\t\"./Install/components/SecondStep\": [\n\t\t63326,\n\t\t3326\n\t],\n\t\"./Install/components/SecondStep/\": [\n\t\t63326,\n\t\t3326\n\t],\n\t\"./Install/components/SecondStep/index\": [\n\t\t63326,\n\t\t3326\n\t],\n\t\"./Install/components/SecondStep/index.tsx\": [\n\t\t63326,\n\t\t3326\n\t],\n\t\"./Install/components/ThirdStep\": [\n\t\t51177,\n\t\t1177\n\t],\n\t\"./Install/components/ThirdStep/\": [\n\t\t51177,\n\t\t1177\n\t],\n\t\"./Install/components/ThirdStep/index\": [\n\t\t51177,\n\t\t1177\n\t],\n\t\"./Install/components/ThirdStep/index.tsx\": [\n\t\t51177,\n\t\t1177\n\t],\n\t\"./Install/components/index\": [\n\t\t76907,\n\t\t6907\n\t],\n\t\"./Install/components/index.ts\": [\n\t\t76907,\n\t\t6907\n\t],\n\t\"./Install/index\": [\n\t\t39962,\n\t\t9962\n\t],\n\t\"./Install/index.tsx\": [\n\t\t39962,\n\t\t9962\n\t],\n\t\"./Layout\": [\n\t\t55872\n\t],\n\t\"./Layout/\": [\n\t\t55872\n\t],\n\t\"./Layout/index\": [\n\t\t55872\n\t],\n\t\"./Layout/index.tsx\": [\n\t\t55872\n\t],\n\t\"./Legal\": [\n\t\t34992,\n\t\t4992\n\t],\n\t\"./Legal/\": [\n\t\t34992,\n\t\t4992\n\t],\n\t\"./Legal/Privacy\": [\n\t\t23001,\n\t\t3001\n\t],\n\t\"./Legal/Privacy/\": [\n\t\t23001,\n\t\t3001\n\t],\n\t\"./Legal/Privacy/index\": [\n\t\t23001,\n\t\t3001\n\t],\n\t\"./Legal/Privacy/index.tsx\": [\n\t\t23001,\n\t\t3001\n\t],\n\t\"./Legal/Tos\": [\n\t\t60527,\n\t\t527\n\t],\n\t\"./Legal/Tos/\": [\n\t\t60527,\n\t\t527\n\t],\n\t\"./Legal/Tos/index\": [\n\t\t60527,\n\t\t527\n\t],\n\t\"./Legal/Tos/index.tsx\": [\n\t\t60527,\n\t\t527\n\t],\n\t\"./Legal/index\": [\n\t\t34992,\n\t\t4992\n\t],\n\t\"./Legal/index.tsx\": [\n\t\t34992,\n\t\t4992\n\t],\n\t\"./Maintenance\": [\n\t\t82466,\n\t\t2466\n\t],\n\t\"./Maintenance/\": [\n\t\t82466,\n\t\t2466\n\t],\n\t\"./Maintenance/index\": [\n\t\t82466,\n\t\t2466\n\t],\n\t\"./Maintenance/index.tsx\": [\n\t\t82466,\n\t\t2466\n\t],\n\t\"./Questions\": [\n\t\t50768,\n\t\t768\n\t],\n\t\"./Questions/\": [\n\t\t50768,\n\t\t768\n\t],\n\t\"./Questions/Ask\": [\n\t\t13890,\n\t\t3890\n\t],\n\t\"./Questions/Ask/\": [\n\t\t13890,\n\t\t3890\n\t],\n\t\"./Questions/Ask/components/SearchQuestion\": [\n\t\t3024,\n\t\t3024\n\t],\n\t\"./Questions/Ask/components/SearchQuestion/\": [\n\t\t3024,\n\t\t3024\n\t],\n\t\"./Questions/Ask/components/SearchQuestion/index\": [\n\t\t3024,\n\t\t3024\n\t],\n\t\"./Questions/Ask/components/SearchQuestion/index.scss\": [\n\t\t56218,\n\t\t6218\n\t],\n\t\"./Questions/Ask/components/SearchQuestion/index.tsx\": [\n\t\t3024,\n\t\t3024\n\t],\n\t\"./Questions/Ask/index\": [\n\t\t13890,\n\t\t3890\n\t],\n\t\"./Questions/Ask/index.tsx\": [\n\t\t13890,\n\t\t3890\n\t],\n\t\"./Questions/Detail\": [\n\t\t49740,\n\t\t8931,\n\t\t576\n\t],\n\t\"./Questions/Detail/\": [\n\t\t49740,\n\t\t8931,\n\t\t576\n\t],\n\t\"./Questions/Detail/components\": [\n\t\t18931,\n\t\t8931,\n\t\t5491\n\t],\n\t\"./Questions/Detail/components/\": [\n\t\t18931,\n\t\t8931,\n\t\t5491\n\t],\n\t\"./Questions/Detail/components/Alert\": [\n\t\t92172,\n\t\t2172\n\t],\n\t\"./Questions/Detail/components/Alert/\": [\n\t\t92172,\n\t\t2172\n\t],\n\t\"./Questions/Detail/components/Alert/index\": [\n\t\t92172,\n\t\t2172\n\t],\n\t\"./Questions/Detail/components/Alert/index.tsx\": [\n\t\t92172,\n\t\t2172\n\t],\n\t\"./Questions/Detail/components/Answer\": [\n\t\t78680,\n\t\t8680\n\t],\n\t\"./Questions/Detail/components/Answer/\": [\n\t\t78680,\n\t\t8680\n\t],\n\t\"./Questions/Detail/components/Answer/index\": [\n\t\t78680,\n\t\t8680\n\t],\n\t\"./Questions/Detail/components/Answer/index.tsx\": [\n\t\t78680,\n\t\t8680\n\t],\n\t\"./Questions/Detail/components/AnswerHead\": [\n\t\t6430,\n\t\t6430\n\t],\n\t\"./Questions/Detail/components/AnswerHead/\": [\n\t\t6430,\n\t\t6430\n\t],\n\t\"./Questions/Detail/components/AnswerHead/index\": [\n\t\t6430,\n\t\t6430\n\t],\n\t\"./Questions/Detail/components/AnswerHead/index.tsx\": [\n\t\t6430,\n\t\t6430\n\t],\n\t\"./Questions/Detail/components/ContentLoader\": [\n\t\t85664,\n\t\t5664\n\t],\n\t\"./Questions/Detail/components/ContentLoader/\": [\n\t\t85664,\n\t\t5664\n\t],\n\t\"./Questions/Detail/components/ContentLoader/index\": [\n\t\t85664,\n\t\t5664\n\t],\n\t\"./Questions/Detail/components/ContentLoader/index.tsx\": [\n\t\t85664,\n\t\t5664\n\t],\n\t\"./Questions/Detail/components/InviteToAnswer\": [\n\t\t89344,\n\t\t9344\n\t],\n\t\"./Questions/Detail/components/InviteToAnswer/\": [\n\t\t89344,\n\t\t9344\n\t],\n\t\"./Questions/Detail/components/InviteToAnswer/PeopleDropdown\": [\n\t\t2164,\n\t\t2164\n\t],\n\t\"./Questions/Detail/components/InviteToAnswer/PeopleDropdown.scss\": [\n\t\t22774,\n\t\t2774\n\t],\n\t\"./Questions/Detail/components/InviteToAnswer/PeopleDropdown.tsx\": [\n\t\t2164,\n\t\t2164\n\t],\n\t\"./Questions/Detail/components/InviteToAnswer/index\": [\n\t\t89344,\n\t\t9344\n\t],\n\t\"./Questions/Detail/components/InviteToAnswer/index.scss\": [\n\t\t96020,\n\t\t6020\n\t],\n\t\"./Questions/Detail/components/InviteToAnswer/index.tsx\": [\n\t\t89344,\n\t\t9344\n\t],\n\t\"./Questions/Detail/components/Question\": [\n\t\t40886,\n\t\t886\n\t],\n\t\"./Questions/Detail/components/Question/\": [\n\t\t40886,\n\t\t886\n\t],\n\t\"./Questions/Detail/components/Question/index\": [\n\t\t40886,\n\t\t886\n\t],\n\t\"./Questions/Detail/components/Question/index.tsx\": [\n\t\t40886,\n\t\t886\n\t],\n\t\"./Questions/Detail/components/Reactions\": [\n\t\t16858\n\t],\n\t\"./Questions/Detail/components/Reactions/\": [\n\t\t16858\n\t],\n\t\"./Questions/Detail/components/Reactions/index\": [\n\t\t16858\n\t],\n\t\"./Questions/Detail/components/Reactions/index.tsx\": [\n\t\t16858\n\t],\n\t\"./Questions/Detail/components/RelatedQuestions\": [\n\t\t8198,\n\t\t8198\n\t],\n\t\"./Questions/Detail/components/RelatedQuestions/\": [\n\t\t8198,\n\t\t8198\n\t],\n\t\"./Questions/Detail/components/RelatedQuestions/index\": [\n\t\t8198,\n\t\t8198\n\t],\n\t\"./Questions/Detail/components/RelatedQuestions/index.tsx\": [\n\t\t8198,\n\t\t8198\n\t],\n\t\"./Questions/Detail/components/WriteAnswer\": [\n\t\t30545,\n\t\t545\n\t],\n\t\"./Questions/Detail/components/WriteAnswer/\": [\n\t\t30545,\n\t\t545\n\t],\n\t\"./Questions/Detail/components/WriteAnswer/index\": [\n\t\t30545,\n\t\t545\n\t],\n\t\"./Questions/Detail/components/WriteAnswer/index.tsx\": [\n\t\t30545,\n\t\t545\n\t],\n\t\"./Questions/Detail/components/index\": [\n\t\t18931,\n\t\t8931,\n\t\t5491\n\t],\n\t\"./Questions/Detail/components/index.tsx\": [\n\t\t18931,\n\t\t8931,\n\t\t5491\n\t],\n\t\"./Questions/Detail/index\": [\n\t\t49740,\n\t\t8931,\n\t\t576\n\t],\n\t\"./Questions/Detail/index.scss\": [\n\t\t136,\n\t\t136\n\t],\n\t\"./Questions/Detail/index.tsx\": [\n\t\t49740,\n\t\t8931,\n\t\t576\n\t],\n\t\"./Questions/EditAnswer\": [\n\t\t76013,\n\t\t6013\n\t],\n\t\"./Questions/EditAnswer/\": [\n\t\t76013,\n\t\t6013\n\t],\n\t\"./Questions/EditAnswer/index\": [\n\t\t76013,\n\t\t6013\n\t],\n\t\"./Questions/EditAnswer/index.scss\": [\n\t\t22455,\n\t\t2455\n\t],\n\t\"./Questions/EditAnswer/index.tsx\": [\n\t\t76013,\n\t\t6013\n\t],\n\t\"./Questions/index\": [\n\t\t50768,\n\t\t768\n\t],\n\t\"./Questions/index.tsx\": [\n\t\t50768,\n\t\t768\n\t],\n\t\"./Review\": [\n\t\t47849,\n\t\t4800,\n\t\t8240\n\t],\n\t\"./Review/\": [\n\t\t47849,\n\t\t4800,\n\t\t8240\n\t],\n\t\"./Review/components\": [\n\t\t65084,\n\t\t4800,\n\t\t4115\n\t],\n\t\"./Review/components/\": [\n\t\t65084,\n\t\t4800,\n\t\t4115\n\t],\n\t\"./Review/components/ApproveDropdown\": [\n\t\t8653,\n\t\t8653\n\t],\n\t\"./Review/components/ApproveDropdown/\": [\n\t\t8653,\n\t\t8653\n\t],\n\t\"./Review/components/ApproveDropdown/index\": [\n\t\t8653,\n\t\t8653\n\t],\n\t\"./Review/components/ApproveDropdown/index.tsx\": [\n\t\t8653,\n\t\t8653\n\t],\n\t\"./Review/components/EditPostModal\": [\n\t\t27768,\n\t\t7768\n\t],\n\t\"./Review/components/EditPostModal/\": [\n\t\t27768,\n\t\t7768\n\t],\n\t\"./Review/components/EditPostModal/index\": [\n\t\t27768,\n\t\t7768\n\t],\n\t\"./Review/components/EditPostModal/index.scss\": [\n\t\t58138,\n\t\t8138\n\t],\n\t\"./Review/components/EditPostModal/index.tsx\": [\n\t\t27768,\n\t\t7768\n\t],\n\t\"./Review/components/FlagContent\": [\n\t\t64800,\n\t\t4800,\n\t\t9512\n\t],\n\t\"./Review/components/FlagContent/\": [\n\t\t64800,\n\t\t4800,\n\t\t9512\n\t],\n\t\"./Review/components/FlagContent/index\": [\n\t\t64800,\n\t\t4800,\n\t\t9512\n\t],\n\t\"./Review/components/FlagContent/index.tsx\": [\n\t\t64800,\n\t\t4800,\n\t\t9512\n\t],\n\t\"./Review/components/QueuedContent\": [\n\t\t97463,\n\t\t7463\n\t],\n\t\"./Review/components/QueuedContent/\": [\n\t\t97463,\n\t\t7463\n\t],\n\t\"./Review/components/QueuedContent/index\": [\n\t\t97463,\n\t\t7463\n\t],\n\t\"./Review/components/QueuedContent/index.tsx\": [\n\t\t97463,\n\t\t7463\n\t],\n\t\"./Review/components/ReviewType\": [\n\t\t26351,\n\t\t6351\n\t],\n\t\"./Review/components/ReviewType/\": [\n\t\t26351,\n\t\t6351\n\t],\n\t\"./Review/components/ReviewType/index\": [\n\t\t26351,\n\t\t6351\n\t],\n\t\"./Review/components/ReviewType/index.tsx\": [\n\t\t26351,\n\t\t6351\n\t],\n\t\"./Review/components/SuggestContent\": [\n\t\t16602,\n\t\t6602\n\t],\n\t\"./Review/components/SuggestContent/\": [\n\t\t16602,\n\t\t6602\n\t],\n\t\"./Review/components/SuggestContent/index\": [\n\t\t16602,\n\t\t6602\n\t],\n\t\"./Review/components/SuggestContent/index.tsx\": [\n\t\t16602,\n\t\t6602\n\t],\n\t\"./Review/components/index\": [\n\t\t65084,\n\t\t4800,\n\t\t4115\n\t],\n\t\"./Review/components/index.ts\": [\n\t\t65084,\n\t\t4800,\n\t\t4115\n\t],\n\t\"./Review/index\": [\n\t\t47849,\n\t\t4800,\n\t\t8240\n\t],\n\t\"./Review/index.tsx\": [\n\t\t47849,\n\t\t4800,\n\t\t8240\n\t],\n\t\"./Review/utils/generateData\": [\n\t\t98058,\n\t\t8058\n\t],\n\t\"./Review/utils/generateData.ts\": [\n\t\t98058,\n\t\t8058\n\t],\n\t\"./Search\": [\n\t\t25993,\n\t\t5993\n\t],\n\t\"./Search/\": [\n\t\t25993,\n\t\t5993\n\t],\n\t\"./Search/components\": [\n\t\t80092,\n\t\t92\n\t],\n\t\"./Search/components/\": [\n\t\t80092,\n\t\t92\n\t],\n\t\"./Search/components/Empty\": [\n\t\t6730,\n\t\t4349\n\t],\n\t\"./Search/components/Empty/\": [\n\t\t6730,\n\t\t4349\n\t],\n\t\"./Search/components/Empty/index\": [\n\t\t6730,\n\t\t4349\n\t],\n\t\"./Search/components/Empty/index.tsx\": [\n\t\t6730,\n\t\t4349\n\t],\n\t\"./Search/components/Head\": [\n\t\t10713,\n\t\t713\n\t],\n\t\"./Search/components/Head/\": [\n\t\t10713,\n\t\t713\n\t],\n\t\"./Search/components/Head/index\": [\n\t\t10713,\n\t\t713\n\t],\n\t\"./Search/components/Head/index.tsx\": [\n\t\t10713,\n\t\t713\n\t],\n\t\"./Search/components/ListLoader\": [\n\t\t56018,\n\t\t6018\n\t],\n\t\"./Search/components/ListLoader/\": [\n\t\t56018,\n\t\t6018\n\t],\n\t\"./Search/components/ListLoader/index\": [\n\t\t56018,\n\t\t6018\n\t],\n\t\"./Search/components/ListLoader/index.tsx\": [\n\t\t56018,\n\t\t6018\n\t],\n\t\"./Search/components/SearchHead\": [\n\t\t62921,\n\t\t2921\n\t],\n\t\"./Search/components/SearchHead/\": [\n\t\t62921,\n\t\t2921\n\t],\n\t\"./Search/components/SearchHead/index\": [\n\t\t62921,\n\t\t2921\n\t],\n\t\"./Search/components/SearchHead/index.tsx\": [\n\t\t62921,\n\t\t2921\n\t],\n\t\"./Search/components/SearchItem\": [\n\t\t2366,\n\t\t2366\n\t],\n\t\"./Search/components/SearchItem/\": [\n\t\t2366,\n\t\t2366\n\t],\n\t\"./Search/components/SearchItem/index\": [\n\t\t2366,\n\t\t2366\n\t],\n\t\"./Search/components/SearchItem/index.tsx\": [\n\t\t2366,\n\t\t2366\n\t],\n\t\"./Search/components/Tips\": [\n\t\t36781,\n\t\t6781\n\t],\n\t\"./Search/components/Tips/\": [\n\t\t36781,\n\t\t6781\n\t],\n\t\"./Search/components/Tips/index\": [\n\t\t36781,\n\t\t6781\n\t],\n\t\"./Search/components/Tips/index.tsx\": [\n\t\t36781,\n\t\t6781\n\t],\n\t\"./Search/components/index\": [\n\t\t80092,\n\t\t92\n\t],\n\t\"./Search/components/index.ts\": [\n\t\t80092,\n\t\t92\n\t],\n\t\"./Search/index\": [\n\t\t25993,\n\t\t5993\n\t],\n\t\"./Search/index.tsx\": [\n\t\t25993,\n\t\t5993\n\t],\n\t\"./SideNavLayout\": [\n\t\t39646,\n\t\t9646\n\t],\n\t\"./SideNavLayout/\": [\n\t\t39646,\n\t\t9646\n\t],\n\t\"./SideNavLayout/index\": [\n\t\t39646,\n\t\t9646\n\t],\n\t\"./SideNavLayout/index.tsx\": [\n\t\t39646,\n\t\t9646\n\t],\n\t\"./Tags\": [\n\t\t34642,\n\t\t4642\n\t],\n\t\"./Tags/\": [\n\t\t34642,\n\t\t4642\n\t],\n\t\"./Tags/Create\": [\n\t\t3837,\n\t\t3837\n\t],\n\t\"./Tags/Create/\": [\n\t\t3837,\n\t\t3837\n\t],\n\t\"./Tags/Create/index\": [\n\t\t3837,\n\t\t3837\n\t],\n\t\"./Tags/Create/index.tsx\": [\n\t\t3837,\n\t\t3837\n\t],\n\t\"./Tags/Detail\": [\n\t\t58422,\n\t\t8422\n\t],\n\t\"./Tags/Detail/\": [\n\t\t58422,\n\t\t8422\n\t],\n\t\"./Tags/Detail/index\": [\n\t\t58422,\n\t\t8422\n\t],\n\t\"./Tags/Detail/index.tsx\": [\n\t\t58422,\n\t\t8422\n\t],\n\t\"./Tags/Edit\": [\n\t\t91465,\n\t\t1465\n\t],\n\t\"./Tags/Edit/\": [\n\t\t91465,\n\t\t1465\n\t],\n\t\"./Tags/Edit/index\": [\n\t\t91465,\n\t\t1465\n\t],\n\t\"./Tags/Edit/index.tsx\": [\n\t\t91465,\n\t\t1465\n\t],\n\t\"./Tags/Info\": [\n\t\t82229,\n\t\t2229\n\t],\n\t\"./Tags/Info/\": [\n\t\t82229,\n\t\t2229\n\t],\n\t\"./Tags/Info/index\": [\n\t\t82229,\n\t\t2229\n\t],\n\t\"./Tags/Info/index.tsx\": [\n\t\t82229,\n\t\t2229\n\t],\n\t\"./Tags/index\": [\n\t\t34642,\n\t\t4642\n\t],\n\t\"./Tags/index.tsx\": [\n\t\t34642,\n\t\t4642\n\t],\n\t\"./Timeline\": [\n\t\t51740,\n\t\t1740\n\t],\n\t\"./Timeline/\": [\n\t\t51740,\n\t\t1740\n\t],\n\t\"./Timeline/components/Item\": [\n\t\t7851,\n\t\t7851\n\t],\n\t\"./Timeline/components/Item/\": [\n\t\t7851,\n\t\t7851\n\t],\n\t\"./Timeline/components/Item/index\": [\n\t\t7851,\n\t\t7851\n\t],\n\t\"./Timeline/components/Item/index.tsx\": [\n\t\t7851,\n\t\t7851\n\t],\n\t\"./Timeline/index\": [\n\t\t51740,\n\t\t1740\n\t],\n\t\"./Timeline/index.scss\": [\n\t\t43996,\n\t\t3996\n\t],\n\t\"./Timeline/index.tsx\": [\n\t\t51740,\n\t\t1740\n\t],\n\t\"./UserCenter/Auth\": [\n\t\t63884,\n\t\t9153,\n\t\t3884\n\t],\n\t\"./UserCenter/Auth/\": [\n\t\t63884,\n\t\t9153,\n\t\t3884\n\t],\n\t\"./UserCenter/Auth/components/WeCom\": [\n\t\t73485,\n\t\t9153,\n\t\t3485\n\t],\n\t\"./UserCenter/Auth/components/WeCom/\": [\n\t\t73485,\n\t\t9153,\n\t\t3485\n\t],\n\t\"./UserCenter/Auth/components/WeCom/index\": [\n\t\t73485,\n\t\t9153,\n\t\t3485\n\t],\n\t\"./UserCenter/Auth/components/WeCom/index.tsx\": [\n\t\t73485,\n\t\t9153,\n\t\t3485\n\t],\n\t\"./UserCenter/Auth/components/WeCom/service\": [\n\t\t65560,\n\t\t5560\n\t],\n\t\"./UserCenter/Auth/components/WeCom/service.ts\": [\n\t\t65560,\n\t\t5560\n\t],\n\t\"./UserCenter/Auth/index\": [\n\t\t63884,\n\t\t9153,\n\t\t3884\n\t],\n\t\"./UserCenter/Auth/index.tsx\": [\n\t\t63884,\n\t\t9153,\n\t\t3884\n\t],\n\t\"./UserCenter/AuthFailed\": [\n\t\t30275,\n\t\t275\n\t],\n\t\"./UserCenter/AuthFailed/\": [\n\t\t30275,\n\t\t275\n\t],\n\t\"./UserCenter/AuthFailed/components/WeCom\": [\n\t\t35412,\n\t\t5412\n\t],\n\t\"./UserCenter/AuthFailed/components/WeCom.tsx\": [\n\t\t35412,\n\t\t5412\n\t],\n\t\"./UserCenter/AuthFailed/index\": [\n\t\t30275,\n\t\t275\n\t],\n\t\"./UserCenter/AuthFailed/index.tsx\": [\n\t\t30275,\n\t\t275\n\t],\n\t\"./Users\": [\n\t\t33679,\n\t\t3679\n\t],\n\t\"./Users/\": [\n\t\t33679,\n\t\t3679\n\t],\n\t\"./Users/AccountForgot\": [\n\t\t18050,\n\t\t8050\n\t],\n\t\"./Users/AccountForgot/\": [\n\t\t18050,\n\t\t8050\n\t],\n\t\"./Users/AccountForgot/components/sendEmail\": [\n\t\t92007,\n\t\t2007\n\t],\n\t\"./Users/AccountForgot/components/sendEmail.tsx\": [\n\t\t92007,\n\t\t2007\n\t],\n\t\"./Users/AccountForgot/index\": [\n\t\t18050,\n\t\t8050\n\t],\n\t\"./Users/AccountForgot/index.tsx\": [\n\t\t18050,\n\t\t8050\n\t],\n\t\"./Users/ActivationResult\": [\n\t\t86117,\n\t\t6117\n\t],\n\t\"./Users/ActivationResult/\": [\n\t\t86117,\n\t\t6117\n\t],\n\t\"./Users/ActivationResult/index\": [\n\t\t86117,\n\t\t6117\n\t],\n\t\"./Users/ActivationResult/index.tsx\": [\n\t\t86117,\n\t\t6117\n\t],\n\t\"./Users/ActiveEmail\": [\n\t\t27712,\n\t\t7712\n\t],\n\t\"./Users/ActiveEmail/\": [\n\t\t27712,\n\t\t7712\n\t],\n\t\"./Users/ActiveEmail/index\": [\n\t\t27712,\n\t\t7712\n\t],\n\t\"./Users/ActiveEmail/index.tsx\": [\n\t\t27712,\n\t\t7712\n\t],\n\t\"./Users/AuthCallback\": [\n\t\t41773,\n\t\t1773\n\t],\n\t\"./Users/AuthCallback/\": [\n\t\t41773,\n\t\t1773\n\t],\n\t\"./Users/AuthCallback/index\": [\n\t\t41773,\n\t\t1773\n\t],\n\t\"./Users/AuthCallback/index.tsx\": [\n\t\t41773,\n\t\t1773\n\t],\n\t\"./Users/ChangeEmail\": [\n\t\t76566,\n\t\t6566\n\t],\n\t\"./Users/ChangeEmail/\": [\n\t\t76566,\n\t\t6566\n\t],\n\t\"./Users/ChangeEmail/components/sendEmail\": [\n\t\t13291,\n\t\t3291\n\t],\n\t\"./Users/ChangeEmail/components/sendEmail.tsx\": [\n\t\t13291,\n\t\t3291\n\t],\n\t\"./Users/ChangeEmail/index\": [\n\t\t76566,\n\t\t6566\n\t],\n\t\"./Users/ChangeEmail/index.tsx\": [\n\t\t76566,\n\t\t6566\n\t],\n\t\"./Users/ConfirmNewEmail\": [\n\t\t86911,\n\t\t9292\n\t],\n\t\"./Users/ConfirmNewEmail/\": [\n\t\t86911,\n\t\t9292\n\t],\n\t\"./Users/ConfirmNewEmail/index\": [\n\t\t86911,\n\t\t9292\n\t],\n\t\"./Users/ConfirmNewEmail/index.tsx\": [\n\t\t86911,\n\t\t9292\n\t],\n\t\"./Users/Login\": [\n\t\t53953,\n\t\t3953\n\t],\n\t\"./Users/Login/\": [\n\t\t53953,\n\t\t3953\n\t],\n\t\"./Users/Login/index\": [\n\t\t53953,\n\t\t3953\n\t],\n\t\"./Users/Login/index.tsx\": [\n\t\t53953,\n\t\t3953\n\t],\n\t\"./Users/Logout\": [\n\t\t26176,\n\t\t6176\n\t],\n\t\"./Users/Logout/\": [\n\t\t26176,\n\t\t6176\n\t],\n\t\"./Users/Logout/index\": [\n\t\t26176,\n\t\t6176\n\t],\n\t\"./Users/Logout/index.tsx\": [\n\t\t26176,\n\t\t6176\n\t],\n\t\"./Users/Notifications\": [\n\t\t93522,\n\t\t3522\n\t],\n\t\"./Users/Notifications/\": [\n\t\t93522,\n\t\t3522\n\t],\n\t\"./Users/Notifications/components/Achievements\": [\n\t\t20012,\n\t\t12\n\t],\n\t\"./Users/Notifications/components/Achievements/\": [\n\t\t20012,\n\t\t12\n\t],\n\t\"./Users/Notifications/components/Achievements/index\": [\n\t\t20012,\n\t\t12\n\t],\n\t\"./Users/Notifications/components/Achievements/index.scss\": [\n\t\t55294,\n\t\t5294\n\t],\n\t\"./Users/Notifications/components/Achievements/index.tsx\": [\n\t\t20012,\n\t\t12\n\t],\n\t\"./Users/Notifications/components/Inbox\": [\n\t\t47664,\n\t\t7664\n\t],\n\t\"./Users/Notifications/components/Inbox/\": [\n\t\t47664,\n\t\t7664\n\t],\n\t\"./Users/Notifications/components/Inbox/index\": [\n\t\t47664,\n\t\t7664\n\t],\n\t\"./Users/Notifications/components/Inbox/index.tsx\": [\n\t\t47664,\n\t\t7664\n\t],\n\t\"./Users/Notifications/index\": [\n\t\t93522,\n\t\t3522\n\t],\n\t\"./Users/Notifications/index.scss\": [\n\t\t54660,\n\t\t4660\n\t],\n\t\"./Users/Notifications/index.tsx\": [\n\t\t93522,\n\t\t3522\n\t],\n\t\"./Users/OauthBindEmail\": [\n\t\t55998,\n\t\t5998\n\t],\n\t\"./Users/OauthBindEmail/\": [\n\t\t55998,\n\t\t5998\n\t],\n\t\"./Users/OauthBindEmail/index\": [\n\t\t55998,\n\t\t5998\n\t],\n\t\"./Users/OauthBindEmail/index.tsx\": [\n\t\t55998,\n\t\t5998\n\t],\n\t\"./Users/PasswordReset\": [\n\t\t58226,\n\t\t8226\n\t],\n\t\"./Users/PasswordReset/\": [\n\t\t58226,\n\t\t8226\n\t],\n\t\"./Users/PasswordReset/index\": [\n\t\t58226,\n\t\t8226\n\t],\n\t\"./Users/PasswordReset/index.tsx\": [\n\t\t58226,\n\t\t8226\n\t],\n\t\"./Users/Personal\": [\n\t\t53110,\n\t\t3110\n\t],\n\t\"./Users/Personal/\": [\n\t\t53110,\n\t\t3110\n\t],\n\t\"./Users/Personal/components\": [\n\t\t25959,\n\t\t5959\n\t],\n\t\"./Users/Personal/components/\": [\n\t\t25959,\n\t\t5959\n\t],\n\t\"./Users/Personal/components/Alert\": [\n\t\t87502,\n\t\t7502\n\t],\n\t\"./Users/Personal/components/Alert/\": [\n\t\t87502,\n\t\t7502\n\t],\n\t\"./Users/Personal/components/Alert/index\": [\n\t\t87502,\n\t\t7502\n\t],\n\t\"./Users/Personal/components/Alert/index.tsx\": [\n\t\t87502,\n\t\t7502\n\t],\n\t\"./Users/Personal/components/Answers\": [\n\t\t91185,\n\t\t1185\n\t],\n\t\"./Users/Personal/components/Answers/\": [\n\t\t91185,\n\t\t1185\n\t],\n\t\"./Users/Personal/components/Answers/index\": [\n\t\t91185,\n\t\t1185\n\t],\n\t\"./Users/Personal/components/Answers/index.tsx\": [\n\t\t91185,\n\t\t1185\n\t],\n\t\"./Users/Personal/components/Badges\": [\n\t\t7408,\n\t\t7408\n\t],\n\t\"./Users/Personal/components/Badges/\": [\n\t\t7408,\n\t\t7408\n\t],\n\t\"./Users/Personal/components/Badges/index\": [\n\t\t7408,\n\t\t7408\n\t],\n\t\"./Users/Personal/components/Badges/index.tsx\": [\n\t\t7408,\n\t\t7408\n\t],\n\t\"./Users/Personal/components/Comments\": [\n\t\t16282,\n\t\t6282\n\t],\n\t\"./Users/Personal/components/Comments/\": [\n\t\t16282,\n\t\t6282\n\t],\n\t\"./Users/Personal/components/Comments/index\": [\n\t\t16282,\n\t\t6282\n\t],\n\t\"./Users/Personal/components/Comments/index.tsx\": [\n\t\t16282,\n\t\t6282\n\t],\n\t\"./Users/Personal/components/DefaultList\": [\n\t\t367,\n\t\t367\n\t],\n\t\"./Users/Personal/components/DefaultList/\": [\n\t\t367,\n\t\t367\n\t],\n\t\"./Users/Personal/components/DefaultList/index\": [\n\t\t367,\n\t\t367\n\t],\n\t\"./Users/Personal/components/DefaultList/index.tsx\": [\n\t\t367,\n\t\t367\n\t],\n\t\"./Users/Personal/components/ListHead\": [\n\t\t99702,\n\t\t9702\n\t],\n\t\"./Users/Personal/components/ListHead/\": [\n\t\t99702,\n\t\t9702\n\t],\n\t\"./Users/Personal/components/ListHead/index\": [\n\t\t99702,\n\t\t9702\n\t],\n\t\"./Users/Personal/components/ListHead/index.tsx\": [\n\t\t99702,\n\t\t9702\n\t],\n\t\"./Users/Personal/components/NavBar\": [\n\t\t85866,\n\t\t5866\n\t],\n\t\"./Users/Personal/components/NavBar/\": [\n\t\t85866,\n\t\t5866\n\t],\n\t\"./Users/Personal/components/NavBar/index\": [\n\t\t85866,\n\t\t5866\n\t],\n\t\"./Users/Personal/components/NavBar/index.tsx\": [\n\t\t85866,\n\t\t5866\n\t],\n\t\"./Users/Personal/components/Overview\": [\n\t\t41317,\n\t\t1317\n\t],\n\t\"./Users/Personal/components/Overview/\": [\n\t\t41317,\n\t\t1317\n\t],\n\t\"./Users/Personal/components/Overview/index\": [\n\t\t41317,\n\t\t1317\n\t],\n\t\"./Users/Personal/components/Overview/index.tsx\": [\n\t\t41317,\n\t\t1317\n\t],\n\t\"./Users/Personal/components/Reputation\": [\n\t\t11541,\n\t\t1541\n\t],\n\t\"./Users/Personal/components/Reputation/\": [\n\t\t11541,\n\t\t1541\n\t],\n\t\"./Users/Personal/components/Reputation/index\": [\n\t\t11541,\n\t\t1541\n\t],\n\t\"./Users/Personal/components/Reputation/index.tsx\": [\n\t\t11541,\n\t\t1541\n\t],\n\t\"./Users/Personal/components/TopList\": [\n\t\t76293,\n\t\t6293\n\t],\n\t\"./Users/Personal/components/TopList/\": [\n\t\t76293,\n\t\t6293\n\t],\n\t\"./Users/Personal/components/TopList/index\": [\n\t\t76293,\n\t\t6293\n\t],\n\t\"./Users/Personal/components/TopList/index.tsx\": [\n\t\t76293,\n\t\t6293\n\t],\n\t\"./Users/Personal/components/UserInfo\": [\n\t\t57889,\n\t\t7889\n\t],\n\t\"./Users/Personal/components/UserInfo/\": [\n\t\t57889,\n\t\t7889\n\t],\n\t\"./Users/Personal/components/UserInfo/index\": [\n\t\t57889,\n\t\t7889\n\t],\n\t\"./Users/Personal/components/UserInfo/index.tsx\": [\n\t\t57889,\n\t\t7889\n\t],\n\t\"./Users/Personal/components/Votes\": [\n\t\t9239,\n\t\t9239\n\t],\n\t\"./Users/Personal/components/Votes/\": [\n\t\t9239,\n\t\t9239\n\t],\n\t\"./Users/Personal/components/Votes/index\": [\n\t\t9239,\n\t\t9239\n\t],\n\t\"./Users/Personal/components/Votes/index.tsx\": [\n\t\t9239,\n\t\t9239\n\t],\n\t\"./Users/Personal/components/index\": [\n\t\t25959,\n\t\t5959\n\t],\n\t\"./Users/Personal/components/index.ts\": [\n\t\t25959,\n\t\t5959\n\t],\n\t\"./Users/Personal/index\": [\n\t\t53110,\n\t\t3110\n\t],\n\t\"./Users/Personal/index.tsx\": [\n\t\t53110,\n\t\t3110\n\t],\n\t\"./Users/Register\": [\n\t\t88533,\n\t\t8533\n\t],\n\t\"./Users/Register/\": [\n\t\t88533,\n\t\t8533\n\t],\n\t\"./Users/Register/components/SignUpForm\": [\n\t\t48872,\n\t\t8872\n\t],\n\t\"./Users/Register/components/SignUpForm/\": [\n\t\t48872,\n\t\t8872\n\t],\n\t\"./Users/Register/components/SignUpForm/index\": [\n\t\t48872,\n\t\t8872\n\t],\n\t\"./Users/Register/components/SignUpForm/index.tsx\": [\n\t\t48872,\n\t\t8872\n\t],\n\t\"./Users/Register/index\": [\n\t\t88533,\n\t\t8533\n\t],\n\t\"./Users/Register/index.tsx\": [\n\t\t88533,\n\t\t8533\n\t],\n\t\"./Users/Settings\": [\n\t\t10689,\n\t\t689\n\t],\n\t\"./Users/Settings/\": [\n\t\t10689,\n\t\t689\n\t],\n\t\"./Users/Settings/Account\": [\n\t\t41445,\n\t\t1445\n\t],\n\t\"./Users/Settings/Account/\": [\n\t\t41445,\n\t\t1445\n\t],\n\t\"./Users/Settings/Account/components\": [\n\t\t81192,\n\t\t1192\n\t],\n\t\"./Users/Settings/Account/components/\": [\n\t\t81192,\n\t\t1192\n\t],\n\t\"./Users/Settings/Account/components/ModifyEmail\": [\n\t\t68587,\n\t\t8587\n\t],\n\t\"./Users/Settings/Account/components/ModifyEmail/\": [\n\t\t68587,\n\t\t8587\n\t],\n\t\"./Users/Settings/Account/components/ModifyEmail/index\": [\n\t\t68587,\n\t\t8587\n\t],\n\t\"./Users/Settings/Account/components/ModifyEmail/index.tsx\": [\n\t\t68587,\n\t\t8587\n\t],\n\t\"./Users/Settings/Account/components/ModifyPass\": [\n\t\t13266,\n\t\t3266\n\t],\n\t\"./Users/Settings/Account/components/ModifyPass/\": [\n\t\t13266,\n\t\t3266\n\t],\n\t\"./Users/Settings/Account/components/ModifyPass/index\": [\n\t\t13266,\n\t\t3266\n\t],\n\t\"./Users/Settings/Account/components/ModifyPass/index.tsx\": [\n\t\t13266,\n\t\t3266\n\t],\n\t\"./Users/Settings/Account/components/MyLogins\": [\n\t\t19487,\n\t\t9487\n\t],\n\t\"./Users/Settings/Account/components/MyLogins/\": [\n\t\t19487,\n\t\t9487\n\t],\n\t\"./Users/Settings/Account/components/MyLogins/index\": [\n\t\t19487,\n\t\t9487\n\t],\n\t\"./Users/Settings/Account/components/MyLogins/index.tsx\": [\n\t\t19487,\n\t\t9487\n\t],\n\t\"./Users/Settings/Account/components/index\": [\n\t\t81192,\n\t\t1192\n\t],\n\t\"./Users/Settings/Account/components/index.ts\": [\n\t\t81192,\n\t\t1192\n\t],\n\t\"./Users/Settings/Account/index\": [\n\t\t41445,\n\t\t1445\n\t],\n\t\"./Users/Settings/Account/index.tsx\": [\n\t\t41445,\n\t\t1445\n\t],\n\t\"./Users/Settings/Interface\": [\n\t\t90017,\n\t\t17\n\t],\n\t\"./Users/Settings/Interface/\": [\n\t\t90017,\n\t\t17\n\t],\n\t\"./Users/Settings/Interface/index\": [\n\t\t90017,\n\t\t17\n\t],\n\t\"./Users/Settings/Interface/index.tsx\": [\n\t\t90017,\n\t\t17\n\t],\n\t\"./Users/Settings/Notification\": [\n\t\t94305,\n\t\t4305\n\t],\n\t\"./Users/Settings/Notification/\": [\n\t\t94305,\n\t\t4305\n\t],\n\t\"./Users/Settings/Notification/index\": [\n\t\t94305,\n\t\t4305\n\t],\n\t\"./Users/Settings/Notification/index.tsx\": [\n\t\t94305,\n\t\t4305\n\t],\n\t\"./Users/Settings/Plugins\": [\n\t\t51808,\n\t\t1808\n\t],\n\t\"./Users/Settings/Plugins/\": [\n\t\t51808,\n\t\t1808\n\t],\n\t\"./Users/Settings/Plugins/index\": [\n\t\t51808,\n\t\t1808\n\t],\n\t\"./Users/Settings/Plugins/index.tsx\": [\n\t\t51808,\n\t\t1808\n\t],\n\t\"./Users/Settings/Profile\": [\n\t\t75843,\n\t\t5843\n\t],\n\t\"./Users/Settings/Profile/\": [\n\t\t75843,\n\t\t5843\n\t],\n\t\"./Users/Settings/Profile/index\": [\n\t\t75843,\n\t\t5843\n\t],\n\t\"./Users/Settings/Profile/index.tsx\": [\n\t\t75843,\n\t\t5843\n\t],\n\t\"./Users/Settings/components/Nav\": [\n\t\t28286,\n\t\t8286\n\t],\n\t\"./Users/Settings/components/Nav/\": [\n\t\t28286,\n\t\t8286\n\t],\n\t\"./Users/Settings/components/Nav/index\": [\n\t\t28286,\n\t\t8286\n\t],\n\t\"./Users/Settings/components/Nav/index.tsx\": [\n\t\t28286,\n\t\t8286\n\t],\n\t\"./Users/Settings/index\": [\n\t\t10689,\n\t\t689\n\t],\n\t\"./Users/Settings/index.scss\": [\n\t\t51039,\n\t\t1039\n\t],\n\t\"./Users/Settings/index.tsx\": [\n\t\t10689,\n\t\t689\n\t],\n\t\"./Users/Suspended\": [\n\t\t59937,\n\t\t9937\n\t],\n\t\"./Users/Suspended/\": [\n\t\t59937,\n\t\t9937\n\t],\n\t\"./Users/Suspended/index\": [\n\t\t59937,\n\t\t9937\n\t],\n\t\"./Users/Suspended/index.tsx\": [\n\t\t59937,\n\t\t9937\n\t],\n\t\"./Users/Unsubscribe\": [\n\t\t57505,\n\t\t7505\n\t],\n\t\"./Users/Unsubscribe/\": [\n\t\t57505,\n\t\t7505\n\t],\n\t\"./Users/Unsubscribe/index\": [\n\t\t57505,\n\t\t7505\n\t],\n\t\"./Users/Unsubscribe/index.tsx\": [\n\t\t57505,\n\t\t7505\n\t],\n\t\"./Users/index\": [\n\t\t33679,\n\t\t3679\n\t],\n\t\"./Users/index.tsx\": [\n\t\t33679,\n\t\t3679\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(1).map(__webpack_require__.e)).then(() => {\n\t\treturn __webpack_require__(id);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 50629;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"12\":\"28a96306\",\"17\":\"7a562d81\",\"56\":\"0da120b7\",\"92\":\"6b1ce1aa\",\"104\":\"c998e529\",\"136\":\"3af4ab15\",\"146\":\"4372851f\",\"178\":\"ad3cdd2a\",\"208\":\"bff3a5b7\",\"275\":\"b73b770a\",\"289\":\"d1ba356d\",\"333\":\"7155dc24\",\"340\":\"50321792\",\"367\":\"061ca523\",\"392\":\"e530b2ac\",\"419\":\"4c2ced51\",\"431\":\"632dd5b9\",\"527\":\"ef918ca2\",\"530\":\"87ddc748\",\"545\":\"d9b4a209\",\"576\":\"ad48fbbf\",\"621\":\"4c9a2ab9\",\"647\":\"4c9ae23a\",\"689\":\"1b5e3f0d\",\"713\":\"55a048f4\",\"716\":\"96c7f27f\",\"768\":\"c4821810\",\"774\":\"d68db0a2\",\"827\":\"edaf5e52\",\"886\":\"6cca513c\",\"978\":\"44706b36\",\"1004\":\"07fa660c\",\"1024\":\"c8b62d4a\",\"1039\":\"b8b0c542\",\"1177\":\"b6a7ce95\",\"1185\":\"9a7072e5\",\"1192\":\"dd241504\",\"1195\":\"64d60c16\",\"1198\":\"196d4555\",\"1241\":\"758c5cdc\",\"1270\":\"fc056592\",\"1284\":\"cc0a4454\",\"1317\":\"bb926b48\",\"1332\":\"cc3649bc\",\"1337\":\"74ead693\",\"1436\":\"0bdac5a0\",\"1445\":\"37f23734\",\"1465\":\"5ad1f6cf\",\"1478\":\"2801b709\",\"1484\":\"cce69f59\",\"1541\":\"8bf1e8b3\",\"1658\":\"5331a903\",\"1695\":\"5d87aaf1\",\"1738\":\"59687fec\",\"1740\":\"f259ed90\",\"1762\":\"bd459324\",\"1773\":\"6abbbda5\",\"1808\":\"5de2c24d\",\"1921\":\"4024b001\",\"2007\":\"e3189095\",\"2013\":\"d724558c\",\"2064\":\"b96fd1d4\",\"2164\":\"eb04db96\",\"2172\":\"b30178e7\",\"2181\":\"ea327b53\",\"2229\":\"37b541f0\",\"2285\":\"ca7f2177\",\"2293\":\"c06a1a18\",\"2366\":\"3f785567\",\"2441\":\"047fd9f6\",\"2442\":\"46ecda30\",\"2450\":\"751a108d\",\"2455\":\"e9a80f3a\",\"2463\":\"41d7f311\",\"2466\":\"135b3c38\",\"2492\":\"fcf55be8\",\"2550\":\"627a4ac7\",\"2595\":\"db237d5e\",\"2608\":\"a11b8a5f\",\"2622\":\"290bc964\",\"2672\":\"05492ac4\",\"2684\":\"cd033235\",\"2699\":\"65afc6be\",\"2706\":\"fb36c76f\",\"2774\":\"70f390ce\",\"2835\":\"ec056d0a\",\"2855\":\"ce0fe6bb\",\"2879\":\"fa83f502\",\"2891\":\"6e6f4f42\",\"2921\":\"2384bd1a\",\"3001\":\"9cdc9e4d\",\"3024\":\"66282d35\",\"3110\":\"d0777ee7\",\"3118\":\"41e41c9e\",\"3135\":\"39cd443c\",\"3258\":\"7bbf4df9\",\"3264\":\"62bd4d67\",\"3266\":\"8ae9afe5\",\"3291\":\"ba8b5af1\",\"3326\":\"8736c6a2\",\"3343\":\"9f598f85\",\"3422\":\"0782afc0\",\"3469\":\"ac392f9e\",\"3485\":\"0950cdd5\",\"3494\":\"ad1eb358\",\"3522\":\"e9086b7e\",\"3679\":\"d6d65c77\",\"3730\":\"4cb2ed53\",\"3837\":\"f3575046\",\"3844\":\"bc1666c1\",\"3884\":\"16e43b33\",\"3890\":\"21e3592f\",\"3900\":\"91895dd5\",\"3909\":\"1068b97b\",\"3939\":\"dfb1ac73\",\"3953\":\"d2803033\",\"3996\":\"855d7d93\",\"4061\":\"6e58ae50\",\"4115\":\"896796f7\",\"4143\":\"4f64f15c\",\"4163\":\"10aa69b8\",\"4219\":\"8a67cc52\",\"4298\":\"e078fe0d\",\"4305\":\"f34ee839\",\"4346\":\"d60d85c8\",\"4349\":\"68eddbd1\",\"4366\":\"f4a24224\",\"4367\":\"62cbbb9a\",\"4440\":\"3a4e7197\",\"4457\":\"b6dae14d\",\"4498\":\"9d903ad6\",\"4631\":\"34e3f70c\",\"4642\":\"49f427e0\",\"4660\":\"242a28a8\",\"4711\":\"26f83b7f\",\"4800\":\"396d6a52\",\"4922\":\"90829030\",\"4938\":\"d0f52d57\",\"4992\":\"d6f73996\",\"5087\":\"0f8a317b\",\"5095\":\"58a72088\",\"5134\":\"4604450f\",\"5170\":\"669d8e2f\",\"5188\":\"91798c60\",\"5288\":\"5c67e929\",\"5294\":\"cf56ed46\",\"5412\":\"34bc8e25\",\"5435\":\"1a091d9c\",\"5447\":\"0aea8ea8\",\"5560\":\"20607a77\",\"5577\":\"dbd578ff\",\"5594\":\"92bfcbac\",\"5630\":\"6018748d\",\"5664\":\"63a2761b\",\"5788\":\"9de538a0\",\"5807\":\"3883801b\",\"5843\":\"1d834202\",\"5851\":\"866fa55b\",\"5866\":\"baa8ecd0\",\"5959\":\"5166f1dd\",\"5993\":\"73bcff9c\",\"5998\":\"a8ce297f\",\"6013\":\"33808ffa\",\"6018\":\"5b201189\",\"6020\":\"3b54e7bd\",\"6052\":\"3ef72ecd\",\"6117\":\"789966ea\",\"6153\":\"c6863d61\",\"6176\":\"e8680a93\",\"6202\":\"a595fa3f\",\"6218\":\"4ae9fed2\",\"6253\":\"924ac266\",\"6276\":\"19add96c\",\"6282\":\"19caf5ab\",\"6293\":\"820671e5\",\"6342\":\"b9f9596c\",\"6351\":\"ac3cf592\",\"6430\":\"59dbf30d\",\"6566\":\"7311ff1c\",\"6578\":\"5b7ddb71\",\"6586\":\"1bea17ba\",\"6602\":\"baa0037a\",\"6675\":\"72742e1f\",\"6743\":\"4bece1ed\",\"6759\":\"86bc21a9\",\"6781\":\"a525ceaf\",\"6866\":\"30366612\",\"6885\":\"0157a609\",\"6907\":\"c5c00c76\",\"7036\":\"cf5bdce1\",\"7250\":\"b3f057c0\",\"7264\":\"09b84b1f\",\"7299\":\"0970709f\",\"7341\":\"fd6ff2eb\",\"7352\":\"e1cc8cc1\",\"7407\":\"a9f13f1a\",\"7408\":\"d8fb71c5\",\"7443\":\"ae2fca8a\",\"7450\":\"b4001bc5\",\"7463\":\"4d661a4f\",\"7502\":\"c4e9ce12\",\"7505\":\"c6a22f07\",\"7552\":\"ecbb99b4\",\"7609\":\"60e420c2\",\"7637\":\"16c88333\",\"7639\":\"fb23f44c\",\"7664\":\"82f9a134\",\"7678\":\"2dd415fa\",\"7712\":\"7c4d2809\",\"7720\":\"1c50e11e\",\"7749\":\"3e9695f8\",\"7768\":\"43cd15a9\",\"7779\":\"1e91bbba\",\"7795\":\"ba593755\",\"7848\":\"27c4ea2b\",\"7851\":\"c3edaab9\",\"7878\":\"eeedabb4\",\"7889\":\"d2a42375\",\"8050\":\"21c92bd6\",\"8058\":\"75231b1e\",\"8071\":\"77a0f647\",\"8122\":\"fd86534e\",\"8138\":\"da5b94c7\",\"8198\":\"f2080ee3\",\"8226\":\"ddb192f4\",\"8240\":\"5e86dfcd\",\"8286\":\"27998c6f\",\"8293\":\"b5331370\",\"8377\":\"a114090f\",\"8422\":\"eadf233d\",\"8513\":\"8202f537\",\"8533\":\"11d15780\",\"8541\":\"b59b2285\",\"8587\":\"7fe85082\",\"8653\":\"c52fb458\",\"8680\":\"6048ef03\",\"8848\":\"1be64a61\",\"8872\":\"39bfc94a\",\"8928\":\"4b8ac6a4\",\"8931\":\"b3d68625\",\"9060\":\"acfbff98\",\"9084\":\"66657ad1\",\"9091\":\"0024f429\",\"9100\":\"942daf98\",\"9149\":\"e3cc3cd1\",\"9153\":\"33dafe2d\",\"9163\":\"d602f62a\",\"9188\":\"96c616ae\",\"9220\":\"975c477a\",\"9232\":\"5e02e309\",\"9239\":\"a6305434\",\"9292\":\"19c83da8\",\"9305\":\"3cab5c9a\",\"9344\":\"3f0479ed\",\"9408\":\"68e3f712\",\"9487\":\"c88617f5\",\"9513\":\"a99bae91\",\"9646\":\"12a1b21a\",\"9702\":\"fef19b1d\",\"9863\":\"32026018\",\"9901\":\"9b15eccd\",\"9937\":\"0d7e54c1\",\"9941\":\"9389fd95\",\"9962\":\"faa131d7\",\"9998\":\"9402e0ca\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"12\":\"1b4c4219\",\"136\":\"b0fd9872\",\"576\":\"e2cba483\",\"689\":\"6ac27e16\",\"1039\":\"6ac27e16\",\"1740\":\"689d2b95\",\"2164\":\"2142a76d\",\"2455\":\"997a7b81\",\"2774\":\"2142a76d\",\"3024\":\"86611520\",\"3522\":\"fa70f3a4\",\"3844\":\"14bfe01a\",\"3890\":\"86611520\",\"3996\":\"689d2b95\",\"4115\":\"80b320db\",\"4366\":\"14bfe01a\",\"4660\":\"decda80d\",\"5294\":\"1b4c4219\",\"5491\":\"6ae66740\",\"6013\":\"997a7b81\",\"6020\":\"bef633d6\",\"6218\":\"86611520\",\"7768\":\"80b320db\",\"8138\":\"80b320db\",\"8240\":\"80b320db\",\"8653\":\"80b320db\",\"9344\":\"6ae66740\",\"9512\":\"80b320db\",\"9646\":\"fedf7014\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"answer-static:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"12\":1,\"136\":1,\"576\":1,\"689\":1,\"1039\":1,\"1740\":1,\"2164\":1,\"2455\":1,\"2774\":1,\"3024\":1,\"3522\":1,\"3844\":1,\"3890\":1,\"3996\":1,\"4115\":1,\"4366\":1,\"4660\":1,\"5294\":1,\"5491\":1,\"6013\":1,\"6020\":1,\"6218\":1,\"7768\":1,\"8138\":1,\"8240\":1,\"8653\":1,\"9344\":1,\"9512\":1,\"9646\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(!/^(5491|9512)$/.test(chunkId)) {\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkanswer_static\"] = globalThis[\"webpackChunkanswer_static\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [9528,5731,6730,8213,1173,6587,4826], () => (__webpack_require__(19077)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["DEFAULT_SITE_NAME","DEFAULT_LANG","CURRENT_LANG_STORAGE_KEY","LANG_RESOURCE_STORAGE_KEY","LOGGED_TOKEN_STORAGE_KEY","REDIRECT_PATH_STORAGE_KEY","DRAFT_QUESTION_STORAGE_KEY","DRAFT_ANSWER_STORAGE_KEY","DRAFT_TIMESIGH_STORAGE_KEY","DEFAULT_THEME","ADMIN_PRIVILEGE_CUSTOM_LEVEL","SKELETON_SHOW_TIME","USER_AGENT_NAMES","SegmentFault","WeChat","WeCom","DingTalk","ADMIN_LIST_STATUS","variant","name","normal","closed","deleted","pending","unlisted","ADMIN_NAV_MENUS","children","path","TIMEZONES","label","options","value","DEFAULT_TIMEZONE","TIMELINE_NORMAL_ACTIVITY_TYPE","SYSTEM_AVATAR_OPTIONS","TAG_SLUG_NAME_MAX_LENGTH","email","search","uaWeChat","uaWeCom","uaDingTalk","div","document","createElement","root","ReactDOM","useTagModal","props","t","useTranslation","keyPrefix","title","onConfirm","visible","setVisibleState","useState","formData","setFormData","displayName","isInvalid","errorMsg","slugName","description","onClose","handleSubmit","event","preventDefault","stopPropagation","checkValidated","bol","length","Function","slug_name","display_name","original_text","handleDisplayNameChange","target","handleSlugNameChange","handleDescriptionChange","useLayoutEffect","render","_jsxs","Modal","show","onHide","_jsx","Header","closeButton","Title","as","Body","Form","Group","controlId","className","Label","Control","type","onChange","Feedback","Text","rows","Footer","Button","onClick","onShow","searchStr","toastPortal","style","position","top","left","transform","maxWidth","zIndex","setPortalPosition","header","querySelector","getBoundingClientRect","useToast","setShow","data","setData","msg","parent","contains","removeChild","window","removeEventListener","appendChild","Toast","delay","bg","autohide","dangerouslySetInnerHTML","__html","addEventListener","callback","toast","params","setParams","setInvalidState","reportType","setReportType","haveContent","rootRef","useRef","content","setContent","list","setList","rCaptcha","useCaptchaPlugin","useEffect","current","asyncCallback","setTimeout","submitReport","flagReq","source","report_type","object_id","id","captcha_code","undefined","captcha_id","resolveCaptchaReq","postReport","then","async","close","catch","ex","isError","handleCaptchaError","checkValidate","url","URL","origin","location","action","putFlagReviewAction","flag_id","operation_type","close_type","close_msg","closeQuestion","isBackend","check","putReport","flagged_content","flagged_type","_rootRef$current$root","map","item","reason_type","have_content","FormCheck","Input","checked","handleRadio","val","String","Boolean","content_type","htmlFor","placeholder","e","obj","getList","otherParams","reportList","res","findType","find","v","globalUsers","usePageUsers","users","setUsers","getUsers","Array","uniqBy","useChangeUserRoleModal","setId","defaultId","setDefaultId","changedId","setChangeId","changeUserRole","user_id","role_id","getUserRoles","getRolesData","useAddUserModal","schema","required","properties","uiSchema","initFormData","formRef","_formRef$current","validator","err","handleFormError","handleOnChange","SchemaForm","ref","hiddenSubmit","useChangePasswordModal","userId","setUserId","password","inputType","useChangeProfileModal","userData","default","username","e_mail","pattern","test","usePageTags","info","update","pageTagStore","getState","subtitle","keywords","usePromptWithUnload","when","beforeUnload","usePrompt","message","useBeforeUnload","useCallback","returnValue","capture","isLoading","activationUrl","readOnly","postUserActivation","finally","disabled","getUserActivation","resp","activation_url","captchaKey","refRoot","refKey","refCallback","autoInitCaptchaData","stateShow","setStateShow","captcha","setCaptcha","captcha_img","verify","imgCode","setImgCode","refCaptcha","refImgCode","fetchCaptchaData","checkImgCode","Promise","resolve","handleChange","evt","getCaptcha","rc","ri","size","centered","noValidate","onSubmit","src","alt","width","height","InputGroup","autoComplete","borderTopRightRadius","borderBottomRightRadius","Icon","submitFunc","req","r","fel","captchaErr","o","error_field","error_msg","isSkeletonShow","setIsSkeletonShow","timer","clearTimeout","initLng","i18next","resolvedLanguage","initResources","en_US","translation","how_to_format","desc","pagination","prev","next","page_title","question","questions","tag","tags","tag_wiki","create_tag","edit_tag","ask_a_question","edit_question","edit_answer","posts_containing","settings","notifications","login","sign_up","account_recovery","account_activation","confirm_email","account_suspended","admin","change_email","install","upgrade","maintenance","oauth_callback","http_404","http_50X","http_403","logout","inbox","achievement","new_alerts","all_read","show_more","someone","inbox_type","all","posts","invites","votes","answer","badge_award","suspended","until_time","forever","end","contact_us","editor","blockquote","text","bold","chart","flow_chart","sequence_diagram","class_diagram","state_diagram","entity_relationship_diagram","user_defined_diagram","gantt_chart","pie_chart","code","add_code","form","fields","empty","language","btn_cancel","btn_confirm","formula","inline","block","heading","h1","h2","h3","h4","h5","h6","help","hr","image","add_image","tab_image","form_image","file","btn","only_image","max_size","tab_url","form_url","uploading","indent","outdent","italic","link","add_link","ordered_list","unordered_list","table","cell","close_modal","btn_submit","remark","report_modal","flag_title","close_title","review_question_title","review_answer_title","review_comment_title","not_a_url","url_not_match","tag_modal","range","character","revision","edit_summary","btn_post","tag_info","created_at","edited_at","history","synonyms","btn_add","btn_edit","btn_save","synonyms_text","tip_with_posts","tip_with_synonyms","tip","default_reason","default_first_reason","btn_save_edits","dates","long_date","long_date_with_year","long_date_with_time","now","x_seconds_ago","x_minutes_ago","x_hours_ago","hour","day","hours","days","reaction","heart","smile","frown","btn_label","undo_emoji","react_emoji","unreact_emoji","comment","btn_add_comment","reply_to","btn_reply","btn_delete","btn_flag","tip_question","tip_answer","tip_vote","feedback","characters","sort_buttons","popular","newest","button_follow","button_following","tag_label","search_placeholder","no_desc","more","ask","edit_title","similar_questions","body","btn_post_question","answer_question","tag_selector","add_btn","create_btn","search_tag","hint","no_result","tag_required_text","nav","user","badges","profile","setting","review","bookmark","moderation","footer","build_on","upload_img","loading","pic_auth_code","inactive","first","another","btn_name","change_btn_name","resend_email","url_label","url_text","login_to_continue","info_sign","info_login","agreements","forgot_pass","different","account_forgot","send_success","btn_update","oauth","connect","remove","oauth_bind_email","modal_title","modal_content","modal_cancel","modal_confirm","password_reset","reset_success","link_invalid","to_login","password_confirm","goto_modify","notification","account","msg_range","caption","avatar","gravatar","gravatar_text","custom","custom_text","bio","website","turn_on","all_new_question","all_new_question_for_following_tags","change_email_btn","change_pass_btn","change_email_info","new_email","pass","password_title","current_pass","new_pass","pass_confirm","lang","my_logins","modal_confirm_btn","remove_success","update_password","flag_success","forbidden_operate_self","sent_success","related_question","answers","invite_to_answer","invite","add","question_detail","Asked","asked","edit","commented","Views","Follow","Following","follow_tip","answered","closed_in","show_exist","useful","question_useful","question_un_useful","question_bookmark","answer_useful","answer_un_useful","score","oldest","btn_accept","btn_accepted","write_answer","add_another_answer","confirm_title","confirm_info","tips","header_1","li1_1","li1_2","header_2","li2_1","reopen","confirm_btn","unlist","pin","answer_accepted","other","tip_answer_deleted","undelete_title","undelete_desc","btns","confirm","cancel","save","undelete","signup","add_question","approve","reject","skip","discard_draft","pinned","refresh","resend","deactivate","active","suspend","unsuspend","ok","light","dark","system_setting","reset","post_lowercase","filter","ignore","submit","follow","following","counts","sort_btns","relevance","is_answer","share","copy","via","copied","facebook","twitter","cannot_vote_for_self","account_result","success","oops","invalid","confirm_new_email","confirm_new_email_invalid","unsubscribe","success_title","success_desc","following_tags","follow_tag_tip","hot_questions","all_questions","x_questions","x_answers","hot","recommend","unanswered","modified","follow_a_tag","personal","overview","bookmarks","reputation","comments","edit_profile","visited_x_days","viewed","joined","comma","last_login","about_me","about_me_empty","top_answers","top_questions","stats","list_empty","accepted","downvoted","mod_short","mod_long","x_reputation","x_votes","recent_badges","done","config_yaml_error","db_type","db_username","db_password","db_host","db_name","db_file","config_yaml","site_information","admin_account","site_name","msg_max_length","site_url","incorrect","max_length","contact_email","login_required","admin_name","admin_password","msg_min_length","admin_email","ready_title","ready_desc","good_luck","warn_title","warn_desc","install_now","installed","installed_desc","db_failed","db_failed_desc","views","page_error","http_error","desc_403","desc_404","desc_50X","back_home","page_maintenance","nav_menus","dashboard","contents","flags","general","smtp","branding","legal","write","tos","privacy","seo","customize","themes","css_html","privileges","plugins","installed_plugins","website_welcome","user_center","qrcode_login_tip","login_failed_email_tip","modal","awarded","can_earn_multiple","earned","admin_header","welcome","site_statistics","reviews","site_health","version","https","upload_folder","run_mode","timezone","system_info","go_version","database","database_size","storage_used","uptime","links","github","blog","contact","forum","documents","support","config","update_to","latest","check_failed","yes","no","not_allowed","allowed","enabled","writable","not_writable","completed","flagged","created","user_role_modal","new_password_modal","edit_profile_modal","msg_invalid","edit_success","user_modal","delete_at","suspend_at","status","role","change","staff","Moderator","Admin","User","set_new_password","change_status","change_role","show_logs","add_user","deactivate_user","delete_user","suspend_user","post","validate","short_desc","check_update","time_zone","from_email","from_name","smtp_host","encryption","ssl","tls","none","smtp_port","smtp_username","smtp_password","test_email_recipient","smtp_authentication","logo","mobile_logo","square_icon","favicon","terms_of_service","privacy_policy","restrict_answer","recommend_tags","contain_reserved","required_tag","reserved_tags","permalink","robots","color_scheme","navbar_style","primary_color","css_and_html","custom_css","head","sidebar","membership","email_registration","allowed_email_domains","password_login","plugin_link","outdated","activate","settings_users","gravatar_base_url","profile_editable","allow_update_display_name","allow_update_username","allow_update_avatar","allow_update_bio","allow_update_website","allow_update_location","privilege","level","should_be_number","number_larger_1","awards","group","optional","not_found_props","select","page_review","proposed","question_edit","answer_edit","tag_edit","approve_revision_tip","approve_flag_tip","approve_post_tip","approve_user_tip","suggest_edits","flag_post","flag_user","queued_post","queued_user","filter_label","flag_post_type","flag_user_type","edit_post","list_post","unlist_post","timeline","undeleted","downvote","upvote","accept","cancelled","rollback","edited","reopened","unpin","hide","tag_title","show_votes","n_or_a","title_for_question","title_for_answer","title_for_tag","datetime","by","no_data","users_with_the_most_reputation","users_with_the_most_vote","staffs","prompt","leave_page","changes_not_save","draft","discard_confirm","messages","post_deleted","post_pin","post_unpin","post_hide_list","post_show_list","post_reopen","post_list","post_unlist","post_pending","storageLang","Storage","get","resources","lng","initReactI18next","init","fallbackLng","interpolation","escapeValue","react","transSupportBasicHtmlNodes","transKeepBasicHtmlNodesFor","page","loader","guard","gr","index","editCheck","aid","args","isEditable","notLogged","allowNew","sa","Index","errCode","errMsg","HttpErrorContent","httpCode","RouteGuard","onEnter","navigate","useNavigate","loaderData","useLoaderData","gk","setKeeper","gkError","setGkError","applyGuard","_gr$error","error","toString","redirect","floppyNavigation","handler","replace","href","asOK","equalToCurrentHref","_Fragment","RouteErrorBoundary","routes","routeWrapper","routeNodes","forEach","rn","element","Layout","errorElement","Ctrl","pagePath","lazy","Suspense","push","isArray","mergedRoutes","mergeRoutePlugins","baseRoutes","router","createBrowserRouter","basename","process","RouterProvider","getElementById","handleImgLoad","Element","nodeName","_target$getAttribute","classList","attrSrc","getAttribute","attrAlt","trim","_target$getAttribute2","includes","React","App","useInitProfileModal","backdrop","useLocation","toastMsg","clear","toastClear","toastStore","httpStatusCode","httpStatusReset","errorCodeStore","showLoginToContinueModal","loginToContinueStore","notificationData","useQueryNotificationStatus","loggedUserInfoStore","changeProfileModal","systemThemeQuery","matchMedia","handleSystemThemeChange","matches","changeTheme","addListener","removeListener","rd","toLowerCase","slice","Math","random","substring","nameToUsername","modifiedRd","tryModify","count","modifyUserInfo","console","log","Error","reload","HelmetProvider","PageTags","CustomizeTheme","SWRConfig","revalidateOnFocus","Outlet","closeToast","Customize","LoginToContinueModal","BadgeModal","badge","ScrollRestoration","memo","REACT_BASE_PATH","BASE_ORIGIN","RouteAlias","home","signUp","accountRecovery","changeEmail","passwordReset","accountActivation","activationSuccess","activationFailed","confirmNewEmail","confirmEmail","authLanding","questionLanding","questionId","slugTitle","seoSettingStore","encodeURIComponent","pathFactory","tagLanding","tagInfo","tagEdit","tagId","answerLanding","answerId","useQueryBadges","apiUrl","qs","mutate","useSWR","request","instance","updateBadgeStatus","put","useLegalTos","useLegalPrivacy","useAnswerSearch","changeAnswerStatus","answer_id","useQuestionSearch","changeQuestionStatus","question_id","useGeneralSetting","updateGeneralSetting","useInterfaceSetting","updateInterfaceSetting","useSmtpSetting","updateSmtpSetting","getAdminLanguageOptions","getBrandSetting","brandSetting","getRequireAndReservedTag","postRequireAndReservedTag","getLegalSetting","putLegalSetting","getSeoSetting","putSeoSetting","getThemeSetting","putThemeSetting","getPageCustom","putPageCustom","getLoginSetting","putLoginSetting","getUsersSetting","putUsersSetting","getPrivilegeSetting","putPrivilegeSetting","changeUserStatus","useQueryUsers","addUsers","updateUserPassword","updateUserProfile","useDashBoard","useQueryPlugins","updatePluginStatus","useQueryPluginConfig","updatePluginConfig","uploadImage","FormData","append","queryQuestionByTitle","useQueryTags","skipNulls","useQueryRevisions","useQueryComments","query_cond","comment_id","updateComment","deleteComment","delete","addComment","updateReaction","queryReactions","queryTags","useQueryAnswerInfo","modifyQuestion","modifyAnswer","register","resendEmail","getLoggedUserInfo","passingError","modifyPassword","resetPassword","replacementPassword","activateAccount","k","saveQuestion","questionDetail","allow404","getAnswers","postAnswer","postVote","acceptanceAnswer","api","deleteQuestion","deleteAnswer","changeEmailVerify","getAppSettings","reopenQuestion","markdownToHtml","saveQuestionWithAnswer","questionOperation","getPluginsStatus","useFollow","usePersonalInfoByName","usePersonalTop","tabName","usePersonalListByTabName","order","queryParams","useQueryNotifications","readNotification","tryLoggedAndActivated","ignoreError","refreshInterval","clearNotificationStatus","clearUnreadNotification","useQuestionList","useQuestionRecommendList","useHotQuestions","page_size","in_days","useSimilarQuestion","getInviteUser","putInviteUser","invite_user","unDeleteAnswer","unDeleteQuestion","qid","getSearchResult","deleteTag","tag_id","modifyTag","useQuerySynonymsTags","saveSynonymsTags","useFollowingTags","useTagInfo","followTags","getTagsBySlugName","slugNames","createTag","unDeleteTag","getLanguageConfig","getLanguageOptions","updateUserInterface","useGetNotificationConfig","putNotificationConfig","useGetUserPluginList","useGetUserPluginConfig","updateUserPluginConfig","getTimelineData","getTimelineDetail","revisionAudit","operation","useQueryContributeUsers","userSearchByName","useUserPermission","keys","join","useSearchUserStaff","oAuthBindEmail","useOauthConnectorInfoByUser","userOauthUnbind","getSuggestReviewList","getReviewType","getFlagReviewPostList","getPendingReviewPostList","objectId","putPendingReviewAction","useGetAllBadges","useGetBadgeInfo","useBadgeDetailList","useGetRecentAwardBadges","checkConfigFileExists","dbCheck","installInit","installBaseInfo","getInstallLangOptions","getUcAgent","getAdminUcAgent","getUcSettings","getUcBranding","create","set","allow_new_registrations","allow_email_registrations","allow_email_domains","allow_password_login","state","agent","uca","defaultUsersConf","default_avatar","siteInfo","short_description","_","updateVersion","ver","updateUsers","interface","pageTags","items","pageTitle","_siteInfoStore$getSta","makePageTitle","siteInfoStore","custom_head","custom_header","custom_footer","custom_sidebar","theme","theme_options","theme_config","can_revision","updateVisible","updateReview","initUser","access_token","rank","bio_html","mail_status","is_admin","have_password","removeToken","Progress","constructor","param","timestamp","duration","delta","isLoop","progress","this","CONST","DURATION","start","tick","min","Confetti","canvas","ctx","yRange","rotationRange","speedRange","sprites","elm","getContext","offsetWidth","offsetHeight","PAPER_LENGTH","rotationLength","cssText","bind","build","performance","requestAnimationFrame","SPRITE_WIDTH","SPRITE_HEIGHT","ROTATION_RATE","COLORS","i","initX","initY","rotation","speed","fillStyle","floor","fillRect","restore","translate","rotate","drawImage","abs","sin","PI","destroy","Diff","require","formatCount","$num","Number","isFinite","round","scrollToElementTop","bodyRect","offsetPosition","scrollTo","behavior","scrollElementIntoView","scrollIntoView","scrollToDocTop","bgFadeOut","el","matchedUsers","markdown","reg","match","userName","parseUserInfo","parseEditMentionUser","formatUptime","second","parseInt","escapeRemove","str","_temp","temp","innerHTML","output","innerText","textContent","keymap","_error$list","key","from","to","errorFieldObject","escapeHtml","tagsToReplace","formatDiffPart","part","_part$value$match","diffText","newText","oldText","result","diffChars","added","removed","base64ToSvg","base64","svgClassName","svgxml","atob","doc","DOMParser","parseFromString","parseError","svg","setAttribute","XMLSerializer","serializeToString","getUaType","ua","navigator","userAgent","mode","htmlTag","isDarkTheme","base","startsWith","storageLoginRedirect","pathname","filterPath","loc","redirectUrl","isFullLink","ret","isRoutableLink","_config$options","getLoginUrl","shouldProcessLinkClick","_evt$currentTarget","_evt$currentTarget2","defaultPrevented","currentTarget","button","metaKey","ctrlKey","shiftKey","altKey","navigateToLogin","loginUrl","handleRouteLinkClick","curTarget","matchToCurrentHref","hasBasePath","hash","pathWithOutBase","tPart","split","tChip","tSearch","tHash","indexOf","pathMatch","tPath","lPath","p","deriveLoginState","ls","isLogged","isNotActivated","isActivated","isForbidden","isNormal","isAdmin","isModerator","IGNORE_PATH_LIST","isIgnoredPath","ignoredPath","pluTimestamp","pullLoggedUser","isInitPull","Date","loggedUserInfo","logged","loggedRedirectHome","notActivated","activated","forbidden","us","notForbidden","isAdminOrModerator","allowNewRegistration","loginSettingStore","singUpAgent","signUpUrl","getSignUpUrl","shouldLoginRequired","tryNormalLogged","canNavigate","handleLoginRedirect","handleLoginWithToken","token","initAppSettingsStore","appSettings","_appSettings$general","_appSettings$general2","site_users","interfaceStore","brandingStore","customizeStore","custom_css_html","themeSettingStore","site_seo","writeSettingStore","site_write","googleSnapshotRedirect","_URLSearchParams","URLSearchParams","host","appInitialized","setupApp","allSettled","pullUcAgent","setupAppLanguage","setupAppTimeZone","setupAppTheme","storage","localStorage","time","setItem","timeSign","JSON","stringify","timeSignLen","getItem","getTime","parse","removeItem","debounce","storeDraft","that","WHITE","Color","BLACK","mixColour","baseColor","opColor","weight","mix","tintColor","color","shadeColor","shiftColor","loadLanguageOptions","forAdmin","pullLanguageConf","langConf","ui","getCurrentLang","loggedUser","adminInterface","fallbackLang","currentLang","getCurrentTheme","adminTheme","fallbackTheme","currentTheme","dayjs","utc","langName","storageResource","addResourceBundle","addI18nResource","setDefault","NEXTAUTH_URL","getTokenFromNextAuth","authTokenEncrypted","fetch","method","headers","credentials","json","getUserInfo","I18N_NS","resource","Object","plugin","initI18nResource","on","getTransNs","getTransKeyPrefix","third_party_connector","zh_CN","pluginInfo","useGetStartUseOauthConnector","classnames","SvgIcon","icon","auth_name","component","hosting_connector","_ucAgent$agent_info","ucAgent","userCenterStore","agent_info","login_redirect_url","serarch_info","search_by","useGetSearchPLuginInfo","rel","ThirdPartyConnector","HostingConnector","SearchInfo","registeredPlugins","registerBuiltin","activatePlugins","builtin","i18nConfig","activatedPlugins","activatedPlugin","changePluginActiveStatus","getPlugin","getOnePluginHooks","hooks","getPlugins","defaultProps","Authorization","routePlugins","PluginType","Route","route","_route$children","child","_registeredPlugin","registeredPlugin","validateRoutePlugin","useRenderHtmlPlugin","_plugin$hooks","useRender","Editor","Render","_plugin$hooks2","_plugin$hooks2$useRen","hook","useRenderPlugin","_plugin$hooks3","_plugin$hooks4","_plugin$hooks4$useRen","_captcha$","_pluginHooks$useCaptc","Captcha","pluginHooks","useCaptcha","call","commonProps","baseConfig","baseURL","timeout","axios","interceptors","use","authToken","requestConfig","response","_error$config2","errBody","errConfig","errorObject","err_type","showConfirm","cancelText","_error$config","_error$config3","_uca","_uca$agent_info","_uca$agent_info2","enabled_original_user_system","_uca2","_uca3","_uca3$agent_info","sign_up_redirect_url","webpackAsyncContext","__webpack_require__","ids","module","exports","__webpack_module_cache__","moduleId","cachedModule","loaded","__webpack_modules__","m","amdO","deferred","O","chunkIds","fn","priority","notFulfilled","Infinity","fulfilled","j","every","splice","n","getter","__esModule","d","a","leafPrototypes","getProto","getPrototypeOf","ns","def","getOwnPropertyNames","definition","defineProperty","enumerable","f","chunkId","reduce","promises","u","miniCssF","g","globalThis","prop","prototype","hasOwnProperty","inProgress","dataWebpackPrefix","l","script","needAttach","scripts","getElementsByTagName","s","charset","nc","onScriptComplete","onerror","onload","doneFns","parentNode","Symbol","toStringTag","nmd","paths","loadStylesheet","fullhref","existingLinkTags","dataHref","existingStyleTags","findStylesheet","oldTag","linkTag","nonce","errorType","realHref","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","promise","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}