{"version":3,"file":"main.63d7b62779128544.js","mappings":";;;;;;;;;;;;;;;;;;;AAQO,MAAM,cAAc;IAMzB,YAAoB,eAAgC;QAAhC,oBAAe,GAAf,eAAe,CAAiB;QAL7C,2BAAsB,GAAY,KAAK;QACvC,eAAU,GAAW,EAAE,CAAC;IAIyB,CAAC;IAEzD,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACjD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,cAAc,CAAC,EAAE,SAAS;QAClF,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,kBAAkB,KAAK,IAAI,CAAC,sBAAsB,GAAG,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,EAAC,CAAC;IAElF,gBAAgB,CAAC,IAAY;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACtC,CAAC;IAEM,YAAY;QACjB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;;4EA7BU,cAAc;4GAAd,cAAc;QCR3B,yEAAyC;QAC0C,gEAAK;QAAA,4DAAK;QACzF,yEAA4B;QAEpB,w1BAOuD;QAAA,0EAA+C;QACxE,iIAAS,qBAAiB,2BAA2B,CAAC,IAAC;QAC7E,kFACJ;QAAA,4DAAI;QAAQ,oGAAwC;QAAA,2EAA+C;QAAqD,wDAAiB;QAAA,4DAAI;QAErL,qEAAG;QACI,kEAAM;QAAA,4DAAI;QAAC,qEAAG;QAAA,4QAER;QAAA,4DAAI;QAEjB,0EAAsB;QAEV,kIAAS,qBAAiB,sBAAsB,CAAC,IAAC;QAAC,2FAA+B;QAAA,4DAAI;QAC9F,qEAAG;QAAA,6WAGH;QAAA,4DAAI;QACJ,qEAAG;QAAA,0PACiF;QAAA,4DAAI;QAIpG,+EAEwC;QAFV,2IAAU,wBAAoB,IAAC;;QAGzD,0EAAmC;QAE3B,oIACJ;QAAA,4DAAI;QACJ,2EAAgC;QAGxB,uIAAS,cAAU,IAAC;;;;;QAAC,8DAAE;QAAA,4DAAS;QACpC,8EAE6B;QAAzB,uIAAS,kBAAc,IAAC;;;;;QAAC,kEAAM;QAAA,4DAAS;;QAhC8D,2DAAiC;QAAjC,2JAAiC;QAAiB,0DAAiB;QAAjB,2FAAiB;QAmB3H,2DAAsB;QAAtB,+EAAsB;QAS1B,0DAAuC;QAAvC,oIAAuC;QADjE,+IAAyC;QAIf,0DAAuC;QAAvC,oIAAuC;QADjE,+IAAyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3CgC;AAI2D;AAKpF;AACc;AACb;;;;;;;;;;ICL3E,yEAAmE;IAAA,uDAA6B;IAAA,4DAAM;;;IAAjG,gKAA6D;IAAC,0DAA6B;IAA7B,6FAA6B;;;;;IAPtG,wEAA2H;IACzH,kFAIwG;IAJhF,8aAAiC,oRAAkB,iGAAgC,KAAlD,uQACpC,iGAA+B,KADK,6PAIgB,4EAAU,KAJ1B;IAKvD,uJAEc;IAChB,4DAAY;IACd,qEAAe;;;IALF,0DAA2B;IAA3B,sFAA2B;IAJd,+FAAiC;;;;IAU3D,8EAC4L;IAArL,iaAA4B,2PAAkH,iFAAe,KAAjI,mPAA2I,4EAAU,KAArJ;IADnC,4DAC4L;;;IAAtG,sFAA2B;IAA1G,0FAA4B;;ADQ5B,MAAM,4BAA4B;IAmBvC,YAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAfjD,cAAS,GAAW,EAAE,CAAC;QACvB,eAAU,GAAW,EAAE,CAAC;QACxB,YAAO,GAAY,KAAK,CAAC;QACzB,sBAAiB,GAAY,IAAI,CAAC;QAClC,uBAAkB,GAA0B,EAAE,CAAC;QAC/C,+CAA0C,GAA6C,EAAE,CAAC;QACzF,sBAAiB,GAAW,cAAc,CAAC;QAC3C,iBAAY,GAAiB,IAAI,8CAAY,EAAE,CAAC;QACjD,kBAAa,GAAW,EAAE,CAAC;QACjB,iBAAY,GAAG,IAAI,yCAAO,EAAsB,CAAC;QAC1D,4BAAuB,GAAgD,IAAI,CAAC;IAMpF,CAAC;IAEM,MAAM,CAAC,MAAkC;QAC9C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,MAAM,EAAE;YAEV,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;gBAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY;qBACpC,IAAI,CACH,kDAAY,CAAC,GAAG,CAAC,EACjB,0DAAoB,EAAE,CACvB;qBACA,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE;oBAC1B,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;wBAChC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;qBAC1H;oBACD,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBAC3B,CAAC,CAAC,CAAC,CAAC;aACP;YAED,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,kBAAkB,CAAC;YACpD,IAAI,MAAM,CAAC,kBAAkB,IAAI,MAAM,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC;gBACnE,IAAI,CAAC,0CAA0C,GAAG,IAAI,CAAC,gCAAgC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;YAErH,IAAI,MAAM,CAAC,iBAAiB,KAAK,IAAI,IAAI,MAAM,CAAC,iBAAiB,KAAK,SAAS;gBAC7E,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,iBAAiB,CAAC;SACrD;QAEA,IAAI,CAAC,MAAM,CAAC,GAAe,CAAC,gBAAgB,CAAC,eAAe,EAC3D,CAAC,KAAyB,EAAE,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;gBACvI,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAClE,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;QACjD,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,iGAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;IAErH,CAAC;IAEM,eAAe;QACpB,IAAI,CAAC,mCAAmC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAED,gCAAgC,CAAC,UAA4B;QAC3D,IAAI,eAAe,GAA6C,EAAE,CAAC;QACnE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,mKAAiC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACxF,OAAO,eAAe,CAAC;IACzB,CAAC;IAED,eAAe,CAAC,MAAkC;QAChD,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/D;QACD,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;QACnC,IAAI,CAAC,mCAAmC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,gBAAgB;QACd,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3G,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;SAChD;QACD,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED,QAAQ;QACN,4EAA4E;QAC5E,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE;YAC5E,IAAI,mBAAmB,GAAG;gBACxB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,SAAS,EAAE,CAAC;wBACV,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;wBAC5C,YAAY,EAAE,IAAI,CAAC,cAAc;qBAClC,CAAC;aACsB,CAAC;YAE3B,IAAI,IAAI,CAAC,uBAAuB,IAAI,IAAI,EAAE;gBACxC,mBAAmB,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;aAClE;YAED,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,mBAAmB,CAAC,CAAC;YACjD,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;YAEpC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;YAClG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;SACtE;IACH,CAAC;IAAA,CAAC;IAEF,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE;YAChD,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SACrC;aACI,IAAI,IAAI,CAAC,QAAQ,EAAE;YACtB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;SACvB;IACH,CAAC;IAAA,CAAC;IAEF,iBAAiB;QACf,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,iGAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QACnH,IAAI,CAAC,2BAA2B,EAAE,CAAC;IACrC,CAAC;IAED,mCAAmC,CAAC,YAAoB,EAAE,mBAA2B,KAAK;QACxF,IAAI,IAAI,CAAC,0CAA0C,IAAI,IAAI,CAAC,0CAA0C,CAAC,MAAM,GAAG,CAAC,EAAE;YACjH,IAAI,kBAAkB,GAAG,IAAI,CAAC,0CAA0C,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,oBAAoB,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC;YACpI,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,IAAkB,CAAC;YAChD,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,IAAI,0BAA0B,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,UAAU,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC3I,IAAI,gBAAgB,EAAE;oBACpB,oDAAoD;oBACpD,IAAI,0BAA0B,CAAC,MAAM,GAAG,CAAC,EAAE;wBACzC,IAAI,CAAC,mBAAmB,GAAG,0BAA0B,CAAC,CAAC,CAAC,CAAC;qBAC1D;yBACI;wBAEH,IAAI,CAAC,mBAAmB,GAAG,YAAY,IAAI,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;qBAC9E;iBACF;gBACD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;aAC/B;iBACI;gBACH,IAAI,CAAC,0CAA0C,GAAG,IAAI,CAAC,0CAA0C,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBACpI,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;gBAC/B,IAAI,OAAO,GAAG,IAAI,mKAAiC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,EAAoB,CAAC,CAAC;gBACvH,IAAI,CAAC,0CAA0C,GAAG,CAAC,GAAG,IAAI,CAAC,0CAA0C,EAAE,OAAO,CAAC,CAAC;aACjH;SACF;IACH,CAAC;IAED,iBAAiB,CAAC,SAAiB;QACjC,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,IAAI,iGAAgB,CAAC,SAAS,CAAC,EAAE;YAC/B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACzC,IAAI,CAAC,gBAAgB,IAAI,SAAS,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;oBAC5C,gBAAgB,GAAG,IAAI,CAAC;oBACxB,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;iBAC7B;qBACI;oBACH,IAAI,gBAAgB,EAAE;wBACpB,WAAW,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC;qBAC7B;iBACF;aACF;YAED,OAAO,WAAW,CAAC;SACpB;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,uBAAuB,CAAC,YAA2E;QAEjG,IAAI,4BAA4B,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAC7E,IAAI,CAAC,QAAQ,CAAC,UAAU,GAAG,4BAA4B,CAAC;QACxD,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,aAAa,CAAC,KAAK,GAAG,4BAA4B,CAAC;QAC7E,IAAI,CAAC,cAAc,GAAG,4BAA4B,CAAC;QACnD,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,iGAAgB,CAAC,4BAA4B,CAAC,EAAE;YAClD,IAAI,CAAC,mCAAmC,CAAC,4BAA4B,CAAC,CAAC;YACvE,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;IACH,CAAC;IAED,2BAA2B;QACzB,IAAI,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5H,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACpC;aACI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,MAAM,CAAC,IAAmB,CAAC,eAAe,GAAG,EAAE,CAAC;YACrD,IAAI,CAAC,MAAM,CAAC,IAAmB,CAAC,aAAa,GAAG,EAAE,CAAC;YACnD,IAAI,CAAC,MAAM,CAAC,IAAmB,CAAC,iBAAiB,GAAG,EAAE,CAAC;YACvD,IAAI,CAAC,MAAM,CAAC,IAAmB,CAAC,gBAAgB,GAAG,EAAE,CAAC;YACtD,IAAI,CAAC,MAAM,CAAC,IAAmB,CAAC,aAAa,GAAG,EAAE,CAAC;SACrD;IACH,CAAC;IAED,wBAAwB,CAAC,SAA4C;QACnE,IAAI,CAAC,cAAc,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;QAEnE,IAAI,iCAAiC,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;QAChH,IAAI,gCAAgC,GAAG,iCAAiC,CAAC,CAAC,CAAoC,CAAC;QAC/G,IAAI,gCAAgC,EAAE;YACpC,IAAI,cAAc,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;YACvE,gCAAgC,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;YAC1D,IAAI,CAAC,uBAAuB,GAAG,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,cAAc,EAAE,CAAC;SAClG;QAED,IAAI,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE,CAAC,CAAC;QACxG,IAAI,4BAA4B,GAAG,6BAA6B,CAAC,CAAC,CAAoC,CAAC;QACvG,IAAI,4BAA4B,EAAE;YAChC,4BAA4B,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACtF;QAED,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,oBAAoB;QAClB,IAAI,WAAW,GAAG,IAAI,CAAC;QAEvB,yDAAyD;QACzD,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChD,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC;SACnC;QAED,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;IAC1H,CAAC;IAEM,OAAO,CAAC,KAAU;QAEvB,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,EAAE;SACrB;QAED,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAE3C,IAAI,KAAK,CAAC,GAAG,IAAI,QAAQ,EAAE;YACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;IACH,CAAC;;wGArQU,4BAA4B;0HAA5B,4BAA4B;;;;;;;;QCpBzC,2IAUe;QACf,4HAC4L;;QAZ7K,6KAAyG;QAWtG,0DAA2G;QAA3G,+KAA2G;;;;;;;;;;;;;;;;;;;;ACXpD;AAG2B;;;;;;ICHpG,uEAAuB;IAAA,uDAAgB;IAAA,4DAAO;;;IAAvB,0DAAgB;IAAhB,oFAAgB;;;;IACvC,uEAAwB;IAA8B,kZAAsB,qPAAW,oFAAmB,KAA9B;IAApD,4DAAsF;;;IAAxD,0DAAsB;IAAtB,oFAAsB;;ADUrE,MAAM,uBAAuB;IAkBlC;QAhBQ,aAAQ,GAAW,EAAE,CAAC;QAKvB,aAAQ,GAAW,CAAC,CAAC,CAAC;QAGtB,aAAQ,GAAG,EAAE,CAAC;QACd,iBAAY,GAAG,EAAE,CAAC;QAElB,aAAQ,GAAG,KAAK,CAAC;IAKR,CAAC;IAEjB,MAAM,CAAC,MAA6B;QAClC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,wCAAwC;QACxC,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI;YACF,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;SACzD;QAAC,OAAO,EAAE,EAAE;YACX,KAAK,CAAC,yBAAyB,CAAC;SACjC;QACD,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,OAAO;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,MAA6B;QACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,cAAc,CAAC,IAAS;QACtB,sCAAsC;QACtC,IAAI,CAAC,IAAI,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO;SACR;QACD,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,yBAAyB;QACzB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,WAAW,EAAE,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;QACzG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IAErC,CAAC;IAEM,WAAW,CAAC,MAAW;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC;YAChC,OAAO;SACR;QACD,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,GAAG,CAAC,GAAW,EAAE,IAAY;QAC3B,IAAI,CAAC,GAAG,GAAG,GAAG,EAAE,CAAC;QACjB,OAAO,CAAC,CAAC,MAAM,GAAG,IAAI;YAAE,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC;QACpC,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,QAAQ;QACb,IAAI,UAAU,GAAG,uGAAmB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;QAClE,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,MAAM,CAAC,CAAO;QACpB,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;IACnE,CAAC;IAED,gBAAgB;QACd,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3G,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;SAChD;QACD,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED,QAAQ;IACR,CAAC;IAAA,CAAC;IAEF,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAClC;IACH,CAAC;IAAA,CAAC;;8FAjGS,uBAAuB;qHAAvB,uBAAuB;;;;;;QCXpC,qHAA8C;QAC9C,qHAAqH;;QAD9G,8EAAc;QACd,0DAAe;QAAf,+EAAe;;;;;;;;;;;;;;;;;;;;;;;;ACK2D;;;;;;;;;;ICNjF,kFACgN;IAD7I,wZAAmB,4QAAkB,yFAAwB,KAA1C,oPAC8G,2EAAU,KADxH;IAC0H,4DAAY;;;IAA9G,oFAAyB;IADpE,iFAAmB;;;;IAEtF,kFACwL;IADjH,wZAAmB,6QAAkB,0FAAwB,KAA1C,qPACkF,4EAAU,KAD5F;IAC8F,4DAAY;;;IAA9G,oFAAyB;IADxC,iFAAmB;;ADanF,MAAM,uBAAuB;IALpC;QASS,kBAAa,GAAY,KAAK,CAAC;QAC/B,cAAS,GAAY,IAAI,CAAC;QAC1B,cAAS,GAAY,IAAI,CAAC;QAC1B,cAAS,GAAW,EAAE,CAAC;QACvB,cAAS,GAAW,EAAE,CAAC;QACvB,gBAAW,GAAW,EAAE,CAAC;QAEzB,cAAS,GAAW,EAAE,CAAC;QACvB,eAAU,GAAW,EAAE,CAAC;QACxB,iBAAY,GAAY,KAAK,CAAC;QAE9B,YAAO,GAAY,KAAK,CAAC;QACzB,eAAU,GAAY,IAAI,CAAC;QAI1B,iBAAY,GAAiB,IAAI,8CAAY,EAAE,CAAC;QACvC,iBAAY,GAAG,IAAI,yCAAO,EAAsB,CAAC;KAwInE;IAnIQ,MAAM,CAAC,MAA6B;QACzC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAEpB,IAAI,CAAC,MAAM,CAAC,GAAe,CAAC,gBAAgB,CAAC,eAAe,EAC3D,CAAC,KAAyB,EAAE,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;gBACzI,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBAC7D,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;aAClD;QACH,CAAC,CACF,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE;YACzD,IAAI,MAAM,CAAC,OAAO,YAAY,QAAQ,EAAE;gBACtC,IAAI,MAAM,CAAC,qCAAqC,IAAI,MAAM,CAAC,qCAAqC,CAAC,MAAM,GAAG,CAAC;oBACzG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC/I;;gBAEC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;SACjC;;YAEC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAEtB,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY;iBACpC,IAAI,CACH,kDAAY,CAAC,GAAG,CAAC,EACjB,0DAAoB,EAAE,CACvB;iBACA,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzH,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC;SACP;QAED,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE;YAC/D,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAClC;;YAEC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAE1B,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,aAAa,CAAC;QAC1C,IAAI,MAAM,CAAC,SAAS;YAClB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;YAE1C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACxB,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,SAAS;YAC3D,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,uBAAuB,CAAC;QACzD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,SAAS,IAAI,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;QACxG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;QAC3D,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAEjD,CAAC;IAEO,aAAa,CAAC,YAAiB;QACrC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,YAAY,KAAK,EAAE,IAAI,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IAClI,CAAC;IAED,eAAe,CAAC,MAA6B;QAC3C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAC9D,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;SAC1H;IACH,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,gBAAgB;QACd,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3G,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;SAChD;QACD,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAED,QAAQ;QACN,8DAA8D;QAC9D,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACtG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC1B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,SAAS,EAAE,CAAC;wBACV,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;wBAC5C,YAAY,EAAE,IAAI,CAAC,KAAK;qBACzB,CAAC;aACsB,CAAC,CAAC;YAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7D;IACH,CAAC;IAAA,CAAC;IAEF,OAAO;QACL,IAAI,KAAK,GAAsB,IAAI,CAAC;QACpC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5C,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;SAC7B;aACI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACrD,KAAK,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAChC;QACD,KAAK,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC;IAAA,CAAC;IAEF,gBAAgB,CAAC,KAAuB;QACtC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,IAAI,IAAI,CAAC,kBAAkB,IAAI,SAAS,EAAE;YAC3E,IAAI,CAAC,kBAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7C;IACH,CAAC;;8FA5JU,uBAAuB;qHAAvB,uBAAuB;;;;;;;;QCfpC,gIAC4N;QAC5N,gIACoM;;QAHrK,kFAAkB;QAEf,0DAAmB;QAAnB,mFAAmB;;;;;;;;;;;;;;;;;;;;;;;;ACAwB;AAEI;AACa;;;;;;AAQvF,MAAM,0BAA0B;IALvC;QAQS,cAAS,GAAW,EAAE,CAAC;QACvB,eAAU,GAAW,EAAE,CAAC;QACxB,eAAU,GAAY,IAAI,CAAC;QAC3B,YAAO,GAAY,IAAI,CAAC;QACxB,QAAG,GAAW,IAAI,CAAC;QACnB,QAAG,GAAW,IAAI,CAAC;QAClB,iBAAY,GAAiB,IAAI,8CAAY,EAAE,CAAC;QAEvC,iBAAY,GAAG,IAAI,yCAAO,EAAsB,CAAC;KAqJnE;IAjJQ,MAAM,CAAC,MAAgC;QAC5C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;QAE3B,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAElC,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY;iBACpC,IAAI,CACH,kDAAY,CAAC,GAAG,CAAC,EACjB,0DAAoB,EAAE,CACvB;iBACA,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzH,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC;SACP;QAED,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE;YAC/D,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,wBAAwB,CAAC,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACnE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAClC;;YAEC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAEzB,IAAI,CAAC,MAAM,CAAC,GAAe,CAAC,gBAAgB,CAAC,eAAe,EAC3D,CAAC,KAAyB,EAAE,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;gBACvI,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACjE,CAAC,CACF,CAAC;QAEF,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE;YACzD,IAAI,MAAM,CAAC,OAAO,YAAY,QAAQ,EAAE;gBACtC,IAAI,MAAM,CAAC,qCAAqC,IAAI,MAAM,CAAC,qCAAqC,CAAC,MAAM,GAAG,CAAC;oBACzG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC/I;;gBAEC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;SACjC;aACI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACzB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;QAED,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACvD,CAAC;IAEO,aAAa,CAAC,YAAoB;QACxC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,iGAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAED,gBAAgB;QACd,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3G,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;SAChD;QACD,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED,eAAe,CAAC,MAAgC;QAC9C,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/D;IACH,CAAC;IAEM,iBAAiB,CAAC,OAAgB;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,8DAA8D;QAC9D,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACtG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC1B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,SAAS,EAAE,CAAC;wBACV,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;wBAC5C,YAAY,EAAE,IAAI,CAAC,KAAK;qBACzB,CAAC;aACsB,CAAC,CAAC;YAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7D;IACH,CAAC;IAAA,CAAC;IAEF,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAiC,CAAC;YACzD,qDAAqD;YACrD,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACvB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;aACvB;iBACI;gBACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAClC;SACF;IACH,CAAC;IAAA,CAAC;IAEK,QAAQ,CAAC,KAAU;QACxB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEM,SAAS,CAAC,KAAU;QACzB,IAAI,KAAK,CAAC,GAAG,IAAI,QAAQ,EAAE;YACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;IACH,CAAC;IAEM,OAAO,CAAC,KAAU;QACvB,IAAI,CAAC,wBAAwB,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IAEO,wBAAwB,CAAC,KAAU;QACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE;YAC7C,IAAI,YAAY,GAAG,iGAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;YACvI,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG;gBACzB,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC;iBACrB,IAAI,YAAY,GAAG,IAAI,CAAC,GAAG;gBAC9B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC;YAE1B,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC;YAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;SACtC;IACH,CAAC;;oGA/JU,0BAA0B;wHAA1B,0BAA0B;;;;;;QCbvC,8EAA6R;QAApL,6LAAmB,iGAAkE,oBAAgB,IAAlF,uFAA4F,cAAU,IAAtG,mGAAmH,qBAAiB,IAApI,+FAA+I,mBAAe,IAA9J;QAA5H,4DAA6R;;QAA/J,mFAA2B;QAA3G,wEAAW;;;;;;;;;;;;;;;;;;ACAuB;;;;;;ICAhF,2EAA8I;IAA5F,mTAAS,mGAAkC,KAAC;IAA9F,4DAA8I;;;IAAlC,6EAAa;;;IACzH,sEAAiH;;;IAAnC,6EAAa;;;;IAC3F,8EAAgK;IAArC,qTAAU,yFAAwB,KAAC;IAA9J,4DAAgK;;;IAA7D,6EAAa;;ADOzG,MAAM,8BAA8B;IAczC;QAbO,cAAS,GAAW,EAAE,CAAC;QACvB,eAAU,GAAW,EAAE,CAAC;QACxB,UAAK,GAAW,EAAE,CAAC;QACnB,SAAI,GAAW,EAAE,CAAC;QAClB,OAAE,GAAW,EAAE,CAAC;QAChB,eAAU,GAAY,KAAK,CAAC;QAC5B,cAAS,GAAY,IAAI,CAAC;QAC1B,gCAA2B,GAAY,KAAK,CAAC;IAOpD,CAAC;IAEM,MAAM,CAAC,MAAoC;QAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,2BAA2B,GAAG,MAAM,CAAC,2BAA2B,CAAC;QACtE,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjD,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC/C,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC;QACzD,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACnD,CAAC;IAEM,eAAe;IACtB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,eAAe,CAAC,MAAoC;QAClD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAED,gBAAgB;QACd,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3G,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;SAChD;QACD,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED,QAAQ;IACR,CAAC;IAAA,CAAC;IAEF,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAiC,CAAC;YACzD,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAClC;IACH,CAAC;IAAA,CAAC;IAEK,gBAAgB,CAAC,WAAkB;QACxC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACzI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACtD,CAAC;IAEM,0BAA0B,CAAC,WAAkB;QAClD,IAAI,IAAI,CAAC,2BAA2B,EAAE;YACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;YAChJ,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;YACxD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACrD;IACH,CAAC;;4GAhFU,8BAA8B;4HAA9B,8BAA8B;;;;;;QCT3C,8HAA8I;QAC9I,8HAAiH;QACjH,8HAAgK;;QAFhI,gFAAgB;QAChB,0DAA+B;QAA/B,mGAA+B;QACT,0DAA8B;QAA9B,kGAA8B;;;;;;;;;;;;;;;;;;ACFO;;;;AAapF,MAAM,+BAA+B;IAa1C;QAZO,cAAS,GAAW,EAAE,CAAC;QACvB,eAAU,GAAW,EAAE,CAAC;QACxB,cAAS,GAAY,IAAI,CAAC;QAC1B,cAAS,GAAY,KAAK,CAAC;QAC3B,UAAK,GAAW,EAAE,CAAC;QACnB,QAAG,GAAY,KAAK,CAAC;QACrB,kBAAa,GAAW,EAAE,CAAC;IAOlC,CAAC;IAEM,MAAM,CAAC,MAAqC;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAGpB,IAAI,CAAC,MAAM,CAAC,GAAe,CAAC,gBAAgB,CAAC,eAAe,EAC3D,CAAC,KAAyB,EAAE,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;gBACvI,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACjE,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QAC7D,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC;IACnD,CAAC;IAEM,eAAe;IACtB,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC;IACtB,CAAC;IAED,eAAe,CAAC,MAAqC;QACnD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/D;QAED,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,SAAS,EAAE;YAC7D,IAAI,MAAM,CAAC,SAAS,YAAY,QAAQ;gBACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;gBAE1C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;SACrC;;YAEC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;IAC1B,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,gBAAgB;QACd,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3G,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;SAChD;QACD,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED,QAAQ;QACN,8DAA8D;QAC9D,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACtG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC1B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,SAAS,EAAE,CAAC;wBACV,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;wBAC5C,YAAY,EAAE,IAAI,CAAC,KAAK;qBACzB,CAAC;aACsB,CAAC,CAAC;YAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7D;IACH,CAAC;IAAA,CAAC;IAEF,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAiC,CAAC;YACzD,qDAAqD;YACrD,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACvB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;aACvB;iBACI;gBACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAClC;SACF;IACH,CAAC;IAAA,CAAC;IAEF,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;IACxB,CAAC;IAEM,gBAAgB,CAAC,KAAS;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACxD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAEpD,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,YAAY,QAAQ,EAAE;YAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACrD;IACH,CAAC;;8GApHU,+BAA+B;6HAA/B,+BAA+B;;;;;;QCb5C,yEAAsF;QACH,sMAAuB,4FAAS,cAAU,IAAnB,sGAA+B,4BAAwB,IAAvD;QAAxG,4DAAmK;;QADhK,mFAA2B;QACR,0DAA0C;QAA1C,uGAA0C;;;;;;;;;;;;;;;;;;;;;;;;;ACDyB;AAED;AAEE;AAEE;;;;;;;;ICN9F,8EAA8N;IAA1L,wZAAmB,oPAAkG,2EAAU,KAA5G,gQAAyH,kFAAiB,KAA1I,4PAAqJ,gFAAe,KAApK;IAAvD,4DAA8N;;;IAAnI,sFAA2B;IAAlF,iFAAmB;;;;IACvD,8EAAwO;IAAnM,yZAAmB,sPAAkG,4EAAU,KAA5G,kQAAyH,mFAAiB,KAA1I,8PAAqJ,iFAAe,KAApK;IAAxD,4DAAwO;;;IAA5I,sFAA2B;IAAlF,iFAAmB;;ADcjD,MAAM,+BAA+B;IAe1C;QAdO,cAAS,GAAW,EAAE,CAAC;QACvB,eAAU,GAAW,EAAE,CAAC;QACxB,YAAO,GAAY,IAAI,CAAC;QACxB,cAAS,GAAY,IAAI,CAAC;QAC1B,eAAU,GAAY,IAAI,CAAC;QAC3B,kBAAa,GAAW,EAAE,CAAC;QAC3B,UAAK,GAAW,EAAE,CAAC;QAElB,iBAAY,GAAiB,IAAI,8CAAY,EAAE,CAAC;QACvC,qBAAgB,GAAG,qCAAqC,CAAC;QACzD,iBAAY,GAAG,IAAI,yCAAO,EAAsB,CAAC;IAKlE,CAAC;IAEM,MAAM,CAAC,MAAqC;QACjD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAChC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,YAAY;iBACpC,IAAI,CACH,kDAAY,CAAC,GAAG,CAAC,EACjB,0DAAoB,EAAE,CACvB;iBACA,SAAS,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC1B,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;gBACzH,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;YACnC,CAAC,CAAC,CAAC,CAAC;SACP;QAED,IAAI,MAAM,CAAC,UAAU,IAAI,IAAI,IAAI,MAAM,CAAC,UAAU,IAAI,SAAS,EAAE;YAC/D,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SAClC;;YAEC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAE1B,IAAI,MAAM,CAAC,SAAS,IAAI,IAAI,IAAI,MAAM,CAAC,SAAS,IAAI,SAAS,EAAE;YAC7D,IAAI,MAAM,CAAC,SAAS,YAAY,QAAQ;gBACtC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;;gBAE1C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;SACrC;;YAEC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QAGxB,IAAI,MAAM,CAAC,OAAO,IAAI,IAAI,IAAI,MAAM,CAAC,OAAO,IAAI,SAAS,EAAE;YACzD,IAAI,MAAM,CAAC,OAAO,YAAY,QAAQ,EAAE;gBACtC,IAAI,MAAM,CAAC,qCAAqC,IAAI,MAAM,CAAC,qCAAqC,CAAC,MAAM,GAAG,CAAC;oBACzG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aAC/I;;gBAEC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;SACjC;;YAEC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QAErB,IAAI,CAAC,MAAM,CAAC,GAAe,CAAC,gBAAgB,CAAC,eAAe,EAC3D,CAAC,KAAyB,EAAE,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS;gBACvI,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAClE,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC9D,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;IACvD,CAAC;IAEO,aAAa,CAAC,YAAoB;QACxC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,iGAAgB,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;IACrF,CAAC;IAEM,eAAe;IACtB,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,QAAQ,EAAE,CAAC;QAEhB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,IAAI,SAAS;YAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAED,eAAe,CAAC,MAAqC;QACnD,IAAI,MAAM,CAAC,KAAK,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK,IAAI,IAAI,EAAE;YACrD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;SAC/D;QACD,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrC,CAAC;IAEM,iBAAiB,CAAC,OAAgB;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAED,gBAAgB;QACd,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3G,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;SAChD;QACD,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED,QAAQ;QACN,8DAA8D;QAC9D,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE;YACtG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;gBAC1B,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI;gBACtB,SAAS,EAAE,CAAC;wBACV,YAAY,EAAE,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK;wBAC5C,YAAY,EAAE,IAAI,CAAC,KAAK;qBACzB,CAAC;aACsB,CAAC,CAAC;YAE5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;YACzF,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;SAC7D;IACH,CAAC;IAAA,CAAC;IAEF,OAAO;QACL,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE;YAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,aAAiC,CAAC;YACzD,qDAAqD;YACrD,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAClB,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;gBACvB,KAAK,CAAC,KAAK,EAAE,CAAC;gBACd,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;aACvB;iBACI;gBACH,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAClC;SACF;IAEH,CAAC;IAAA,CAAC;IAEF,QAAQ,CAAC,QAAgB;QACvB,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,EAAE;YAChC,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC;SACtH;IACH,CAAC;IAEM,SAAS,CAAC,KAAU;QACzB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,KAAK,CAAC,GAAG,IAAI,QAAQ,EAAE;YACzB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;IACH,CAAC;IAEM,OAAO,CAAC,KAAU;QACvB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAExC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,cAAc,CAAC,KAAa;QAC1B,IAAI,wBAAwB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACjE,IAAI,wBAAwB,EAAE;YAC5B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;SAC5D;IACH,CAAC;;8GAjLU,+BAA+B;6HAA/B,+BAA+B;;;;;;QCf5C,+HAA8N;QAC9N,+HAAwO;;QADrN,+EAAe;QACf,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;ACD4C;;;;AASxE,MAAM,2BAA2B;IA0BtC;QAzBA,6CAA6C;QAC7C,kCAAkC;QAClC,wFAAwF;QACxF,oCAAoC;QACpC,gCAAgC;QAChC,oDAAoD;QACpD,uCAAuC;QACvC,KAAK;QACL,IAAI;QAEI,aAAQ,GAAW,EAAE,CAAC;QAKvB,aAAQ,GAAW,CAAC,CAAC,CAAC;QACtB,UAAK,GAAa,EAAE,CAAC;QAGpB,wBAAmB,GAAY,KAAK,CAAC;QACtC,eAAU,GAAY,KAAK,CAAC;IAMnC,CAAC;IAED,MAAM,CAAC,MAA2B;QAChC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,EAAE;YACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;QACD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO;QAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAS,EAAE,GAAQ,EAAE,IAAS,EAAE,EAAE;YAChF,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC;QACnC,CAAC,CAAC,CAAC;QACH,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,gBAAgB,CAAC,EAAE;YAChD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,YAAY,CAAC,EAAE;YAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;IACH,CAAC;IAED,UAAU,CAAC,KAAU;QACnB,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACpC;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SACpE;QACD,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,OAAO,CAAC,MAAW;QACjB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,gBAAgB;QACd,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;QACnD,IAAI,CAAC,WAAW,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3G,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC;SAChD;QACD,IAAI,WAAW,CAAC,MAAM,CAAC,QAAQ,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE;YAC7D,IAAI,CAAC,OAAO,EAAE,CAAC;SAChB;IACH,CAAC;IAED,QAAQ;IACR,CAAC;IAAA,CAAC;IAEF,OAAO;QACL,IAAI,IAAI,CAAC,eAAe,CAAC,aAAa,EAAE;YACtC,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;YAC3C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;SACjC;IACH,CAAC;IAAA,CAAC;IAEF,aAAa,CAAC,KAAoB;QAChC,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,EAAE;YACtB,0EAA0E;YAC1E,8BAA8B;YAC9B,KAAK;SACN;IACH,CAAC;;sGAzFU,2BAA2B;yHAA3B,2BAA2B;;;;;;;;QCTxC,yEAAmB;QACqD,0JAAU,sBAAkB,IAAC;QAAjG,4DAAyM;QAAC,sEAAU;QAAA,gEAAK;QACzN,8EAAsN;QAA5I,0JAAU,sBAAkB,IAAC;QAAvG,4DAAsN;QAAC,4EAC3N;QAAA,4DAAM;;QAFkH,0DAAwB;QAAxB,qFAAwB;QACd,0DAA2B;QAA3B,wFAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEF7J,oFAAuJ;IAApB,4TAAS,0EAAS,KAAC;IAAC,4DAAiB;;IAAxJ,6EAAoB;;ADU7B,MAAM,2BAA2B;IAMtC,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAH3B,aAAQ,GAAW,CAAC,CAAC,CAAC;QACtB,aAAQ,GAAY,IAAI,CAAC;QAG9B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,MAA2B;QAChC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,MAA2B;QACjC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ;IACR,CAAC;IAED,OAAO;QACL,MAAM,CAAC,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpI,CAAC;IAED,MAAM;QACJ,IAAK,IAAI,CAAC,GAAW,CAAC,eAAe,EAAE;YACpC,IAAI,CAAC,GAAW,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC9F;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAED,IAAI;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3D,CAAC;;sGAvCU,2BAA2B;yHAA3B,2BAA2B;QCVxC,6IAAwK;QAExK,oFAAkO;QAAnB,2JAAS,YAAQ,IAAC;;QAAC,4DAAiB;QAGnP,oFAAuN;QAAjB,2JAAS,UAAM,IAAC;;QAAC,4DAAiB;;QALlM,8FAA4B;QAElD,0DAAkB;QAAlB,2EAAkB;QAGlB,0DAAgB;QAAhB,yEAAgB;;;;;;;;;;;;;;;;;;ACLqC;;;AAU9D,MAAM,iCAAiC;IAY5C,YACU,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAXtC,aAAQ,GAAW,EAAE,CAAC;QAGvB,QAAG,GAAY,KAAK,CAAC;QAGrB,aAAQ,GAAW,CAAC,CAAC,CAAC;QAEtB,eAAU,GAAW,KAAK;IAKjC,CAAC;IAEM,MAAM,CAAC,MAA2B;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAI,MAAM,CAAC,MAAc,CAAC,KAAK,CAAC;QAC/C,IAAI,IAAI,CAAC,UAAU,KAAK,iBAAiB,EAAE;YACzC,qEAAqE;YACrE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,kBAAkB,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;YAC1E,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;SAC3D;QACD,IAAI,IAAI,CAAC,UAAU,KAAK,oBAAoB,EAAE;YAC5C,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;SAC1C;IACH,CAAC;IAEM,OAAO,CAAC,MAAW;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAGM,IAAI;QACT,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,4FAA4F;SAC7F;IACH,CAAC;IACM,UAAU,CAAC,KAAS;QACzB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;SACnI;IACH,CAAC;;kHAjDU,iCAAiC;+HAAjC,iCAAiC;QCV9C,yEAAmB;QACM,kMAAiB,wGAAmC,sBAAkB,IAArD;QAAxC,4DAAiG;;QAA1E,0DAAiB;QAAjB,4EAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEElC,4EAMiC;IADjC,mSAAS,uEAAM,KAAC;;;;IAEZ,kEACJ;IAAA,4DAAS;;IANT,6IAAyC;;ADM1C,MAAM,kBAAkB;IAQ7B,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAJ3B,aAAQ,GAAW,CAAC,CAAC;QACrB,aAAQ,GAAY,IAAI;IAGM,CAAC;IAEtC,QAAQ,KAAW,CAAC;IAEpB,MAAM,CAAC,MAAqC;QAC1C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAkB,CAAC;IAC9C,CAAC;IAED,OAAO,CAAC,MAAqC;QAC3C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,KAAK,WAAW,EAAE;YAChD,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;gBAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;aACzF;iBAAM;gBACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;aAC9C;YACD,OAAO;SACR;QACD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,8BAA8B,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,OAAO;QACL,MAAM,CAAC,IAAI,CAAC,mCAAmC,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IACpI,CAAC;;oFAtCU,kBAAkB;gHAAlB,kBAAkB;QCV/B,yEAA6B;QAErB,oHAQS;QACb,4DAAM;QACN,yEAA6B;QACgG,kJAAS,aAAS,IAAC;QAAC,4DAAiB;;QAV7J,0DAA8D;QAA9D,oIAA8D;QAUrD,0DAA8C;QAA9C,uGAA8C;;;;;;;;;;;;;;;;;;;;;;;;IEb9D,4EAGkD;IAHhB,+SAAS,0EAAS,KAAC;;;;IAInD,oEACF;IAAA,4DAAS;;IAJD,6IAAyC;;;;IAKjD,4EAGkD;IAHkC,+SAAS,2EAAU,KAAC;;;;IAItG,qEACF;IAAA,4DAAS;;IAJD,6IAAyC;;;;IAKjD,4EAGkD;IAHiC,iTAAS,8EAAY,KAAC;;;;IAIvG,uEACF;IAAA,4DAAS;;IAJD,6IAAyC;;;;IAKjD,4EAGkD;IAHoB,iTAAS,wEAAM,KAAC;;;;IAIpF,iEACF;IAAA,4DAAS;;IAJD,6IAAyC;;;;IAKjD,4EAGkD;IAHK,iTAAS,0EAAQ,KAAC;;;;IAIvE,mEACF;IAAA,4DAAS;;IAJD,6IAAyC;;;;IAKjD,4EAGkD;IAHF,iTAAS,+EAAa,KAAC;;;;IAIrE,yEACF;IAAA,4DAAS;;IAJD,6IAAyC;;ADvB5C,MAAM,8BAA8B;IAczC;QAbQ,aAAQ,GAAW,EAAE,CAAC;QAKvB,aAAQ,GAAW,CAAC,CAAC,CAAC;QACtB,gBAAW,GAAY,KAAK,CAAC;QAC7B,aAAQ,GAAY,KAAK,CAAC;QAC1B,qBAAgB,GAAY,KAAK,CAAC;QAClC,cAAS,GAAY,KAAK,CAAC;QAC3B,sBAAiB,GAAY,KAAK,CAAC;QACnC,kBAAa,GAAY,KAAK,CAAC;IAEtB,CAAC;IAEV,MAAM,CAAC,MAA2B;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QACjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,gBAAgB;eACzC,CAAC,IAAI,CAAC,WAAW;eACjB,CAAC,IAAI,CAAC,QAAQ;eACd,IAAI,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI;eAC/B,IAAI,CAAC,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC;IACzC,CAAC;IAEM,OAAO,CAAC,MAAW;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,OAAO;QACZ,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACtF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,QAAQ;QACb,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACvF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,UAAU;QACf,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACzF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,IAAI;QACT,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACnF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,MAAM;QACX,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACrF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;;4GApFU,8BAA8B;4HAA9B,8BAA8B;QCT3C,yEAA8B;QAC5B,gIAKS;QACT,gIAKS;QACT,gIAKS;QACT,gIAKS;QACT,gIAKS;QACT,gIAKS;QACX,4DAAM;;QApCK,0DAAuB;QAAvB,uFAAuB;QAMvB,0DAAyE;QAAzE,qJAAyE;QAMzE,0DAAwE;QAAxE,oJAAwE;QAMxE,0DAA2D;QAA3D,mIAA2D;QAM3D,0DAA4C;QAA5C,gHAA4C;QAM5C,0DAAqC;QAArC,yGAAqC;;;;;;;;;;;;;;;;;;ACvBzC,MAAM,yBAAyB;IAGpC,gBAAgB,CAAC;IAEjB,MAAM,CAAC,MAAW;QAChB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,MAAW;QACjB,OAAO,IAAI,CAAC;IACd,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,MAAM,OAAO,GAAI,KAAK,CAAC,MAA2B,CAAC,OAAO,CAAC;QAC3D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAChC,CAAC;;kGAhBU,yBAAyB;uHAAzB,yBAAyB;QCRtC,yEAAgC;QACkB,wJAAU,oBAAgB,IAAC,wFAAU,KAAK,IAAf;QAA3E,4DAA8F;;QAAvE,0DAAwB;QAAxB,qFAAwB;;;;;;;;;;;;;;;;;;ACE6C;;AAQvF,MAAM,yBAAyB;IAKpC;QAJO,iBAAY,GAAG,EAAE,CAAC;QAClB,OAAE,GAAW,EAAE,CAAC;QAEvB,sBAAiB,GAAW,KAAK;IAEjC,CAAC;IAED,OAAO,CAAC,MAAqC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,MAA+B;QAC3C,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,iGAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE;YACnD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC;SACxD;QAED,IAAI,iGAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,YAAY,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,kBAAkB,EAAE,CAAC;YACrE,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;gBACjC,IAAI,CAAC,YAAY,IAAI,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAC;aAC/E;SACF;aACI;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC;SAC5C;IACH,CAAC;IAEM,eAAe;IACtB,CAAC;;kGA/BU,yBAAyB;uHAAzB,yBAAyB;QCXtC,uDACA;;QADA,4FACA;;;;;;;;;;;;;;;;;;;ACCiE;;;AAQ1D,MAAM,wBAAwB;IAMnC;QAFO,aAAQ,GAAW,CAAC,CAAC,CAAC;IAEb,CAAC;IAEjB,QAAQ,KAAW,CAAC;IAEpB,MAAM,CAAC,MAA4C;QACjD,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;IAC5B,CAAC;IAED,OAAO,CAAC,MAAqC;QAC3C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;YAChC,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;SAChG;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;;gGA1BU,wBAAwB;sHAAxB,wBAAwB;QCVrC,oFAAyH;QAApB,wJAAS,aAAS,IAAC;QAAC,4DAAiB;;QAA1H,6EAAoB;;;;;;;;;;;;;;;;;;ACAiC;;;;;ICArE,4EAAkG;IAAtB,wSAAS,4EAAW,KAAC;IAAC,iEAAM;IAAA,4DAAS;;;;IACjH,4EAA+F;IAAjB,wSAAS,uEAAM,KAAC;IAAC,+DAAI;IAAA,4DAAS;;;ADQrG,MAAM,uBAAuB;IAUlC,YACU,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QATtC,aAAQ,GAAW,EAAE,CAAC;QAKvB,aAAQ,GAAW,CAAC,CAAC,CAAC;QAM3B,kDAAkD;IACpD,CAAC;IAEM,MAAM,CAAC,MAA2B;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAC5D,CAAC;IAEM,OAAO,CAAC,MAAW;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,qDAAqD;QACrD,gDAAgD;QAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;SACJ;aAAM;YACL,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACvB;IACH,CAAC;IAEM,SAAS;QACd,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACrF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,gDAAgD;QAChD,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QACvB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC3F;IACH,CAAC;;8FA/DU,uBAAuB;qHAAvB,uBAAuB;QCTpC,yHAAiH;QACjH,yHAA4G;QAC5G,4EAAgH;QAA3B,+IAAS,oBAAgB,IAAC;QAAC,uDAAiD;QAAA,4DAAS;;QAFjK,mGAA+B;QAC/B,0DAAiC;QAAjC,qGAAiC;QACR,0DAAkD;QAAlD,+KAAkD;QAA4B,0DAAiD;QAAjD,sHAAiD;;;;;;;;;;;;;;;;;;;;;ACF5F;;;;;;;;ICCjE,oFAA+P;IAAxB,yTAAS,8EAAa,KAAC;;IAAC,4DAAiB;;;IAApO,yEAAgB;;;;IAC5D,oFAA+U;IAA9E,yTAAS,iFAAgB,KAAC;;IAAoD,4DAAiB;;;IAAhS,mFAAmB;;;;IACnF,oFAA+R;IAA3B,2TAAS,kFAAgB,KAAC;;IAAC,4DAAiB;;;IAA9O,qFAAqB;;;;IACvF,oFAA+Q;IAAjB,2TAAS,wEAAM,KAAC;;IAAC,4DAAiB;;;IAA9N,mFAAmB;;;;IACrF,oFAA+Q;IAAxB,2TAAS,+EAAa,KAAC;;IAAC,4DAAiB;;;IAA9O,sFAAsB;;;;IACxE,oFAA2S;IAAtB,2TAAS,6EAAW,KAAC;;IAAC,4DAAiB;;;IAA5O,qFAAqB;;ADIlG,MAAM,wBAAwB;IAoBnC,YACU,iBAAoC,EAClC,WAAwB;QAD1B,sBAAiB,GAAjB,iBAAiB,CAAmB;QAClC,gBAAW,GAAX,WAAW,CAAa;QApB5B,aAAQ,GAAW,EAAE,CAAC;QAKvB,aAAQ,GAAW,CAAC,CAAC,CAAC;QACtB,aAAQ,GAAY,IAAI,CAAC;QACzB,cAAS,GAAY,KAAK,CAAC;QAC3B,eAAU,GAAY,KAAK,CAAC;QAC5B,eAAU,GAAY,KAAK,CAAC;QAC5B,cAAS,GAAY,KAAK,CAAC;QAC3B,wBAAmB,GAAY,KAAK,CAAC;QACrC,cAAS,GAAW,MAAM,CAAC;QAC3B,iBAAY,GAAW,SAAS,CAAC;QACjC,gBAAW,GAAW,QAAQ,CAAC;QAC/B,gBAAW,GAAW,QAAQ,CAAC;QAC/B,cAAS,GAAW,MAAM,CAAC;QAMhC,IAAI,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAClD,CAAC;IAEM,MAAM,CAAC,MAA2B;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACtE,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;QACD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;YAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;SACxB;QACD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE;YAC9C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;SACvB;QACD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,kBAAkB,CAAC,CAAC;QACxH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE;YAC3C,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;YACrC,QAAQ,MAAM,EAAE;gBACd,KAAK,kBAAkB;oBACrB,IAAI,CAAC,SAAS,GAAG,qBAAqB,CAAC;oBACvC,IAAI,CAAC,YAAY,GAAG,oDAAoD,CAAC;oBACzE,IAAI,CAAC,WAAW,GAAG,+BAA+B,CAAC;oBACnD,IAAI,CAAC,WAAW,GAAG,mDAAmD,CAAC;oBACvE,IAAI,CAAC,SAAS,GAAG,2BAA2B,CAAC;oBAC7C,MAAM;gBACR,KAAK,sBAAsB;oBACzB,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC;oBACrC,IAAI,CAAC,YAAY,GAAG,uBAAuB,CAAC;oBAC5C,IAAI,CAAC,WAAW,GAAG,oCAAoC,CAAC;oBACxD,IAAI,CAAC,SAAS,GAAG,YAAY,CAAC;oBAC9B,MAAM;gBAER;oBACE,MAAM;aACT;SACF;IACH,CAAC;IAEM,OAAO,CAAC,MAAW;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,cAAc;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,yBAAyB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC7C,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC7C;QACD,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC7C,sDAAsD;QACtD,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,qDAAqD;QACrD,gDAAgD;QAEhD,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,4DAA4D;YAC5D,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,GAAG;aACZ,CAAC,CAAC;SACJ;aAAM;YACL,2DAA2D;YAC3D,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YAC3B,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACvB;QAED;;;;;;UAME;QACF,yCAAyC;QACzC,OAAO,CAAC,GAAG,CAAC,uBAAuB,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEM,SAAS;QACd,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACrF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC1F;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC1F;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QAC1C,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC9C,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACtB,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC;QAEvB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,YAAY,EAAE,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC;SAC5H;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,GAAU,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,6BAA6B,CAAC,UAAS,IAAoB;YAClE,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,OAAO,IAAI,CAAC;IACd,CAAC;;gGAzJU,wBAAwB;sHAAxB,wBAAwB;QCVrC,yEAA8B;QAC1B,0IAAgR;QAChR,2IAAgW;QAChW,0IAAgT;QAChT,0IAAgS;QAChS,0IAAgS;QAChS,0IAA4T;QAChU,4DAAM;;QANe,0DAAyB;QAAzB,yFAAyB;QACzB,0DAA6C;QAA7C,qHAA6C;QAC7C,0DAA+C;QAA/C,uHAA+C;QAC/C,0DAA+C;QAA/C,uHAA+C;QAC/C,0DAA+B;QAA/B,mGAA+B;QAC/B,0DAA6D;QAA7D,yIAA6D;;;;;;;;;;;;;;;;;;;ACNT;;;;;;;ICCvE,oFAA2T;IAAlC,+XAAW,yFAAqB,KAAC;IAAC,4DAAiB;;;;IAAnR,sGAAmC;;ADSvF,MAAM,6BAA6B;IAL1C;QAQS,YAAO,GAAG,UAAU,CAAC;QACrB,aAAQ,GAAG,UAAU,CAAC;QACtB,WAAM,GAAG,UAAU,CAAC;KAoD5B;IAhDC,MAAM,CAAC,MAAmC;QACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAC5B,aAAa,EACb,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAC9B,CAAC;QAEF,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC;IAC5D,CAAC;IAED,aAAa;QACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;QACxD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,eAAe,EAAE,EAAE;YACxC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;SACzB;aAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,gBAAgB,EAAE,EAAE;YAChD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;SAC1B;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;SACxB;IACH,CAAC;IAED,eAAe,CAAC,KAA4B,EAAE,KAAU;QACtD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,OAAO,CAAC,MAAmC;QACzC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,cAAc,CAAC,MAAyC;QAC7D,IAAI,MAAM,CAAC,eAAe,YAAY,QAAQ,EAAE;YAC9C,OAAO,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SACvC;aACI;YACH,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAEM,aAAa,CAAC,MAAyC;QAC5D,IAAI,MAAM,CAAC,aAAa,YAAY,QAAQ,EAAE;YAC5C,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;SAC9B;IACH,CAAC;;0GAxDU,6BAA6B;2HAA7B,6BAA6B;0EAOP,qDAAU;;;;;QCjB7C,yEAA8B;QAC5B,+IAA4U;QAC9U,4DAAM;;QAD+B,0DAAoB;QAApB,0FAAoB;;;;;;;;;;;;;;;;;;;;;IEIrD,sEAAkC;IACT,uDAA8E;IAAA,4DAAM;;;;IAApF,0DAA8E;IAA9E,wKAA8E;;;IAEvG,yEAAkD;IAC9C,kFACJ;IAAA,4DAAM;;;ADFH,MAAM,4BAA4B;IASvC;QALO,aAAQ,GAAW,CAAC,CAAC,CAAC;QACtB,2BAAsB,GAAW,EAAE,CAAC;QAEpC,cAAS,GAAW,eAAe;IAE1B,CAAC;IAEjB,MAAM,CAAC,MAAW;QAChB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;QAE9B,6CAA6C;QAC7C,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,2CAA2C;QAC3C,MAAM,SAAS,GAAG,EAAE,CAAC;QAErB,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAExC,IAAI,aAAa,KAAK,CAAC,EAAE;YACvB,iCAAiC;YACjC,aAAa,GAAG,CAAC,CAAC;SACnB;QAED,IAAI,gBAAgB,GAAG,aAAa,GAAG,CAAC,aAAa,GAAG,SAAS,CAAC,CAAC;QACnE,IAAI,CAAC,sBAAsB,GAAG,gBAAgB,GAAG,IAAI,CAAC;QACtD,IAAI,MAAM,CAAC,MAAM,EAAE;YACjB,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC7B,QAAQ,MAAM,EAAE;gBACd,KAAK,kBAAkB;oBACrB,IAAI,CAAC,SAAS,GAAG,8BAA8B,CAAC;oBAChD,MAAM;gBAER;oBACE,MAAM;aACT;SAEF;IAEH,CAAC;IAED,OAAO,CAAC,MAAW;QACjB,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,UAAU,CAAC,IAAY;QAC5B,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,kBAAkB,EAAE,CAAC;IAC7C,CAAC;IAEM,YAAY;QACjB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC1B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC5F;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;;wGA3DU,4BAA4B;0HAA5B,4BAA4B;QCRzC,yEAAyE;QAEzD,kEAAO;QAAA,4DAAI;QACnB,sEAAK;QAAG,+IAAS,kBAAc,IAAC;QAAuB,wEAAa;QAAA,4DAAI;QAE5E,wHAEM;QACN,wHAEM;QACV,4DAAM;;QAXoB,sKAA8C;QAG/B,0DAAqB;QAArB,2FAAqB;QAEpC,0DAAU;QAAV,gFAAU;QAG1B,0DAA0B;QAA1B,0FAA0B;;;;;;;;;;;;;;;;;;;;;;;;IERpC,4EAIuD;IAJ+B,6SAAS,8EAAa,KAAC;;;;;IAKvG,wEACF;IAAA,4DAAS;;;IAFD,qIAA0C;IAJzB,sIAAwD;;ADS9E,MAAM,4BAA4B;IAYvC;QARO,aAAQ,GAAW,CAAC,CAAC,CAAC;QACtB,mBAAc,GAAY,IAAI,CAAC;QAC/B,gBAAW,GAAY,IAAI,CAAC;QAC5B,aAAQ,GAAY,IAAI,CAAC;QAEzB,aAAQ,GAAY,IAAI,CAAC;QACzB,iBAAY,GAAY,IAAI,CAAC;IAEpB,CAAC;IAEV,MAAM,CAAC,MAA2B;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,IAAI,IAAI,CAAC,IAAI,CAAC,cAAc,KAAK,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACtH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;QAC9C,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,EAAE;YACjC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;SAC1E;IACH,CAAC;IAEM,OAAO,CAAC,MAAW;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAC1F;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;;wGAvCU,4BAA4B;0HAA5B,4BAA4B;QCTzC,+HAMa;;QANJ,kFAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;ACEkG;AAC/E;AACgD;AAEE;AAGmC;;;;;;;;;ICRjI,oFAAgS;IAA3B,sUAAW,+EAAc,KAAC;;IAAC,4DAAiB;;;IAA3P,yEAAgB;;;;IACtE,oFAAqT;IAA9B,wUAAW,8EAAY,IAAI,CAAC,KAAC;;IAAC,4DAAiB;;;IAA/Q,2EAAkB;;;;IACzE,oFAAyU;IAAnB,wUAAW,wEAAM,KAAC;;IAAC,4DAAiB;;;IAAzQ,qFAAqB;;;;IACtG,oFAAqU;IAAlB,wUAAW,uEAAK,KAAC;;IAAC,4DAAiB;;;IAAxS,wEAAe;;;;IAC7D,oFAA+U;IAAxB,wUAAW,6EAAW,KAAC;;IAAC,4DAAiB;;;IAAhQ,2EAAkB;;;IAClH,gFAAkN;;;IAA7J,0GAAiD;;;IACtG,gFAAyN;;;IAAlK,6GAAoD;;;;IAC3G,qFAAmO;IAApB,wUAAW,yEAAO,KAAC;;IAAC,4DAAiB;;IAAlN,oFAA2B;;ADQxD,MAAM,iCAAiC;IAkB5C;QAjBQ,aAAQ,GAAW,EAAE,CAAC;QAMvB,aAAQ,GAAY,IAAI,CAAC;QACzB,cAAS,GAAY,KAAK,CAAC;QAC3B,qBAAgB,GAAY,KAAK,CAAC;QAClC,WAAM,GAAY,IAAI,CAAC;QACvB,YAAO,GAAY,IAAI,CAAC;QACxB,aAAQ,GAAY,KAAK,CAAC;QAC1B,8BAAyB,GAAY,KAAK,CAAC;QAC1C,yBAAoB,GAAW,GAAG,CAAC;QACpC,mCAA8B,GAAyC,EAAE,CAAC;QACzE,iBAAY,GAAiB,IAAI,8CAAY,EAAE,CAAC;IAGxD,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY;YACnB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;QAElC,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,IAAI,CAAC,GAAG,CAAC,mBAAmB,CAAC,mBAAmB,EAAE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aAClG;YACD,QAAQ;YACR,qGAAqG;YACrG,GAAG;SACJ;IACH,CAAC;IAED,6BAA6B,CAAC,KAA6B;QACzD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAC7B,yCAAyC;SAC1C;IACH,CAAC;IAED,6BAA6B,CAAC,KAA6B;QACzD,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,EAAE;YACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC5B,CAAC;IAED,gBAAgB;QACd,IAAI,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,EAAE,CAAC;QACrD,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;YACvG,OAAO,IAAI,CAAC;;YAEZ,OAAO,KAAK,CAAC;IACjB,CAAC;IAEM,MAAM,CAAC,MAAuC;QACnD,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QAErB,IAAI,IAAI,CAAC,MAAM,CAAC,yBAAyB,EAAE;YACzC,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB;SACvE;QAED,IAAI,MAAM,CAAC,oBAAoB,EAAE;YAC/B,IAAI,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC,SAAS,CAAC,CAAC,MAA4C,EAAE,EAAE;gBAC5G,IAAI,CAAC,MAAM,CAAC,8BAA8B,GAAG,MAAM,CAAC;gBACpD,IAAI,CAAC,0BAA0B,EAAE,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC1C,CAAC,EAAE,KAAK,CAAC,EAAE;gBACT,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,CAAC;gBACpE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,MAAM,CAAC,gBAAgB,mCAAkC,EAAE;YAC7D,IAAI,YAAY,GAAG,MAAM,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAqD,EAAE,EAAE;gBAC7G,IAAI,CAAC,iGAAgB,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,MAAM,CAAC;oBAC9F,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,IAAI,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,EAAE;oBAC9D,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC;oBACnD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;wBACnE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;qBACzH;oBAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;wBACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;qBAC7H;iBACF;gBACD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC,EAAE,KAAK,CAAC,EAAE;gBACT,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,CAAC;gBACpE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;YACtC,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,CAAC,0BAA0B,EAAE,CAAC;QAElC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAE1D,IAAI,MAAM,CAAC,oBAAoB,KAAK,IAAI,IAAI,MAAM,CAAC,oBAAoB,KAAK,SAAS;YACnF,IAAI,CAAC,oBAAoB,GAAG,MAAM,CAAC,oBAAoB,CAAC;QAE1D,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;QAE7C,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,IAAI,CAAC,yBAAyB,EAAE;gBAClC,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;aAC/F;YACD,QAAQ;YACR,kGAAkG;YAClG,GAAG;SACJ;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS,EAAE;YACvF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC;SACtD;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE;YACzE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC;SACpH;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,EAAE;YACnE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;SACxG;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,KAAK,SAAS,EAAE;YACrE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC;SACjH;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE;YACvE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;SAChH;QAED,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAE9E,CAAC;IAED,0BAA0B;QACxB,2DAA2D;QAC3D,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACtD,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;YACtB,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC1B,KAAK,0GAAkC;oBACrC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,MAAM,IAAI,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,IAAI,CAAC,CAAC,aAAa,IAAI,SAAS,CAAC,CAAC,CAAC;oBACjL,MAAM;gBACR,KAAK,6GAAqC;oBACxC,IAAI,CAAC,8BAA8B,GAAG,IAAI,CAAC,MAAM,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,MAAM,CAAC,CAAC;oBACxH,MAAM;gBACR,KAAK,8GAAsC;oBAEzC,MAAM;aACT;SACF;IAEH,CAAC;IAEM,OAAO,CAAC,MAAW;QACxB,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,YAAY,CAAC,wBAAiC,KAAK;QAExD,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;gBAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,MAAM,EAAE,uJAA+C;gBACvD,IAAI,EAAE,IAAI,CAAC,IAAI;aACmB,CAAC,CAAC;YAGtC,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE;gBACjF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACzD;SACF;QAED,IAAI,CAAC,qBAAqB,EAAE;YAC1B,mEAAmE;YACnE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YACtB,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC;gBACxB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;gBACnC,MAAM,EAAE,IAAI,CAAC,oBAAoB;gBACjC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS;aACZ,CAAC,CAAC;SAC9B;QAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAEM,WAAW,CAAC,aAAsB,IAAI,EAAE,uBAAgC,KAAK;QAClF,uBAAuB;QAEvB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,UAAU,EAAE;YAEjE,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,IAAI,SAAS,EAAE;gBAC7E,IAAI,IAAI,CAAC,MAAM,CAAC,YAAY,YAAY,QAAQ,EAAE;oBAChD,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC;oBAClE,IAAG,SAAS;wBACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC;iBACnG;qBACI;oBACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC;iBAC1E;aAEF;YAED,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,OAAqB,CAAC;YAE1B,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,QAAQ,EAAE;gBAC1C,OAAO,GAAI,IAAI,CAAC,GAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC/E;iBACI,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,EAAE;gBAC5C,OAAO,GAAI,IAAI,CAAC,GAAe,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aAC5E;iBACI;gBACH,OAAO,GAAI,IAAI,CAAC,GAAe,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;aACnD;YAED,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YAC7D,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;YACjE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC/B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;aAClF;SACF;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;gBAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,MAAM,EAAE,uJAA+C;gBACvD,IAAI,EAAE,IAAI,CAAC,IAAI;aACmB,CAAC,CAAC;SACvC;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,SAAS,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,KAAK,IAAI,EAAE;YACjF,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SACzD;QAED,IAAI,CAAC,oBAAoB,EAAE;YACzB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;YACjC,qEAAqE;YACrE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;SACvB;QAED,OAAO,CAAC,GAAG,CAAC,+BAA+B,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAEM,GAAG;QACR,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE/B,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;gBAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,MAAM,EAAE,qJAA6C;gBACrD,IAAI,EAAE,IAAI,CAAC,IAAI;aACmB,CAAC,CAAC;SACvC;IACH,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC/B,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;gBAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,MAAM,EAAE,6IAAqC;gBAC7C,IAAI,EAAE,IAAI,CAAC,IAAI;aACmB,CAAC,CAAC;SACvC;IACH,CAAC;IAEM,SAAS;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAE3B,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;gBAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,MAAM,EAAE,+IAAuC;gBAC/C,IAAI,EAAE,IAAI,CAAC,IAAI;aACmB,CAAC,CAAC;SACvC;IACH,CAAC;IAEM,KAAK;QACV,IAAI,IAAI,CAAC,MAAM,CAAC,sBAAsB,EAAE;YACtC,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC;gBACjC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;gBAC5B,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ;gBAC9B,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC;gBAC/C,MAAM,EAAE,8IAAsC;gBAC9C,IAAI,EAAE,IAAI,CAAC,IAAI;aACmB,CAAC,CAAC;SACvC;IACH,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,8BAA8B,IAAI,IAAI,CAAC,8BAA8B,CAAC,MAAM,GAAG,CAAC,EAAE;YACzF,IAAI,WAAW,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC5I,IAAI,WAAW;gBACb,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,8BAA8B,IAAI,IAAI,CAAC,8BAA8B,CAAC,MAAM,GAAG,CAAC,EAAE;YACzF,IAAI,aAAa,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3G,IAAI,aAAa;gBACf,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,wBAAwB,CAAC,IAAY;QACnC,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,iBAAiB,EAAE;YAC9C,IAAI,eAAe,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,OAAO,IAAI,CAAC,CAAC,WAAW,IAAI,gBAAgB,CAAC,CAAC;YACrI,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;SAC1D;aACI,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,mBAAmB,EAAE;YACrD,IAAI,iBAAiB,GAAG,IAAI,CAAC,8BAA8B,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,IAAI,SAAS,CAAC;YACnG,iBAAiB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,GAAG,GAAG,CAAC,CAAC;SAC5D;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;;kHAnVU,iCAAiC;+HAAjC,iCAAiC;QChB9C,yEAA8B;QAC5B,oJAAiT;QACjT,oJAAsU;QACtU,oJAA0V;QAC1V,oJAAsV;QACtV,oJAAgW;QAChW,qJAAkN;QAClN,qJAAyN;QACzN,mJAAoP;QACtP,4DAAM;;QARa,0DAAmC;QAAnC,uGAAmC;QACnC,0DAAoC;QAApC,wGAAoC;QACpC,0DAA8D;QAA9D,sIAA8D;QAC9D,0DAA2B;QAA3B,2FAA2B;QAC3B,0DAA6E;QAA7E,uJAA6E;QAC5E,0DAAgB;QAAhB,gFAAgB;QAChB,0DAAkB;QAAlB,kFAAkB;QAClB,0DAAc;QAAd,8EAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;IERlC,oFAA6T;IAAjB,wTAAS,uEAAM,KAAC;;IAAC,4DAAiB;;IAA9T,uGAA8C;;ADUvD,MAAM,uBAAuB;IAKlC,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAF3B,aAAQ,GAAW,CAAC,CAAC,CAAC;QACtB,aAAQ,GAAY,IAAI,CAAC;QAE9B,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,MAAqC;QAC1C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,IAAI,CAAC,IAAI,CAAC;IACnC,CAAC;IACD,OAAO,CAAC,MAAqC;QAC3C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,QAAQ;IACR,CAAC;IAED,IAAI;QACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,8BAA8B,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,MAAM;QACJ,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACrF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;;8FAjCU,uBAAuB;qHAAvB,uBAAuB;QCVpC,yIAA8U;QAC9U,oFAAqP;QAAnB,uJAAS,YAAQ,IAAC;;QAAC,4DAAiB;;QADtM,mJAAqE;QACrH,0DAAqC;QAArC,8FAAqC;;;;;;;;;;;;;;;;;;;;;;;;;;ACS9C,MAAM,yBAAyB;IAMpC,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAH3B,aAAQ,GAAW,CAAC,CAAC,CAAC;QACtB,aAAQ,GAAY,IAAI,CAAC;IAEM,CAAC;IAEvC,QAAQ;IACR,CAAC;IAED,OAAO,CAAC,MAAqC;QAC3C,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,CAAC,MAAqC;QAC1C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;IAClC,CAAC;IAED,IAAI;QACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,8BAA8B,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC;IACjF,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACvF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;;kGAhCU,yBAAyB;uHAAzB,yBAAyB;QCVtC,yEAA2B;QAC6M,yJAAS,UAAM,IAAC;;QAAC,4DAAiB;QACtQ,4EAI6B;QAArB,iJAAS,cAAU,IAAC;;;;QAC1B,qEACF;QAAA,4DAAS;;QAPO,0DAA8C;QAA9C,uGAA8C;QACtD,0DAA+E;QAA/E,wIAA+E;;;;;;;;;;;;;;;;;;;;;IEF3F,sEAA0G;;;IAA3C,6EAAa;;;IAC5E,sEAAmG;;;IAAnC,6EAAa;;ADUtE,MAAM,gCAAgC;IAQ3C;QAPO,cAAS,GAAW,EAAE,CAAC;QACvB,eAAU,GAAW,EAAE,CAAC;QACxB,UAAK,GAAW,EAAE,CAAC;QACnB,SAAI,GAAW,EAAE,CAAC;QAClB,OAAE,GAAW,EAAE,CAAC;QAChB,eAAU,GAAY,KAAK,CAAC;IAGnC,CAAC;IAED,OAAO,CAAC,MAAqC;QAC3C,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM,CAAC,MAAsC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnD,CAAC;IAEM,eAAe;IACtB,CAAC;;gHAvBU,gCAAgC;8HAAhC,gCAAgC;QCX7C,gIAA0G;QAC1G,gIAAmG;;QADnE,gFAAgB;QAChB,0DAAiB;QAAjB,iFAAiB;;;;;;;;;;;;;;;;;;;;;;;;IEDjD,4EAA0J;IAAvD,iTAAS,sFAAqB,KAAC;IACxH,yEAA2B;IACzB,gFAA6K;IAC/K,4DAAM;IACN,yEAAsB;IAAA,mFAAwB;IAAA,4DAAM;;;IAJqE,sFAAsB;IAE7G,0DAAkD;IAAlD,2GAAkD;;;IAI9F,sEAAwB;IAAA,uDAAsD;;IAAA,4DAAM;;;IAA5D,0DAAsD;IAAtD,oLAAsD;;ADGvE,MAAM,gCAAgC;IAW3C;QATO,QAAG,GAAY,KAAK,CAAC;QAGrB,aAAQ,GAAW,CAAC,CAAC,CAAC;QAErB,aAAQ,GAAW,EAAE,CAAC;QACvB,cAAS,GAAY,KAAK,CAAC;QAC3B,aAAQ,GAAY,IAAI,CAAC;IAEhB,CAAC;IAEV,MAAM,CAAC,MAA2B;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;QAC/D,IAAI,CAAC,UAAU,GAAI,MAAM,CAAC,MAAc,CAAC,KAAK,CAAC;QAE/C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;IAC/E,CAAC;IAEM,OAAO,CAAC,MAAW;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,mBAAmB;QACxB,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,qBAAqB,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SAClG;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;;gHApCU,gCAAgC;8HAAhC,gCAAgC;QCT7C,kIAKS;QACT,4HAAoF;;QAN3E,+EAAe;QAMlB,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;;;;;;IEFlB,uEAAuC;IAAnB,8RAAS,yEAAQ,KAAC;IAAC,iEAAM;IAAA,4DAAI;;;;IACjD,uEAA6C;IAAvB,8RAAS,6EAAY,KAAC;IAAC,sEAAW;IAAA,4DAAI;;ADIzD,MAAM,uBAAuB;IASlC;QALO,aAAQ,GAAW,CAAC,CAAC,CAAC;QAEtB,aAAQ,GAAY,KAAK,CAAC;QAC1B,eAAU,GAAY,KAAK,CAAC;IAEnB,CAAC;IAEjB,QAAQ;IACR,CAAC;IAEM,MAAM,CAAC,MAA2B;QACvC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACxB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,KAAK,UAAU,CAAC;IACpD,CAAC;IAEM,OAAO,CAAC,MAAW;QACxB,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,MAAM;QACX,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACrF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;IAEM,UAAU;QACf,IAAI,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE;YAC5B,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;SACzF;aAAM;YACL,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;SAC9C;IACH,CAAC;;8FA1CU,uBAAuB;qHAAvB,uBAAuB;QCTpC,sEAAK;QACL,uDACA;QAAA,4DAAM;QACN,sEAAK;QACD,+GAAiD;QACjD,+GAA4D;QAChE,4DAAM;;QALN,0DACA;QADA,wFACA;QAEQ,0DAAc;QAAd,8EAAc;QACd,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;;;;;ACFsB;;;;;AASvC,MAAM,mCAAmC;IAU9C;QATO,cAAS,GAAW,EAAE,CAAC;QACvB,eAAU,GAAW,EAAE,CAAC;QACxB,YAAO,GAAY,IAAI,CAAC;QAGvB,8BAAyB,GAAW,EAAE,CAAC;QACvC,+BAA0B,GAAW,CAAC,CAAC;QACvC,iBAAY,GAAiB,IAAI,8CAAY,EAAE,CAAC;QACjD,kBAAa,GAAY,KAAK,CAAC;IAEtC,CAAC;IAED,OAAO,CAAC,MAAyC;QAC/C,OAAO,KAAK,CAAC;IACf,CAAC;IAED,WAAW;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;IACzC,CAAC;IAEM,MAAM,CAAC,MAAyC;QACrD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE;YAC7B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;SAChD;QAED,wEAAwE;QACxE,IAAI,MAAM,CAAC,MAAM,CAAC,YAAY,IAAI,qBAAqB,EAAE;YACvD,IAAI,CAAC,yBAAyB,IAAI,EAAE,CAAC;SACtC;QAED,IAAI,MAAM,CAAC,oBAAoB,IAAI,MAAM,CAAC,OAAO,YAAY,QAAQ,EAAE;YACrE,IAAI,gBAAgB,GAAG,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,8CAAQ,CAAC,GAAG,EAAE;gBACpE,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAC1C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAA4C,EAAE,EAAE;gBAC7D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACxG,CAAC,EAAE,KAAK,CAAC,EAAE;gBACT,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,CAAC;YACtE,CAAC,CAAC,CAAC;SACJ;QAED,IAAI,MAAM,CAAC,qCAAqC,IAAI,MAAM,CAAC,qCAAqC,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3G,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,qCAAqC,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAC7I;QAEA,IAAI,CAAC,MAAM,CAAC,GAAe,CAAC,gBAAgB,CAAC,eAAe,EAC3D,CAAC,KAAyB,EAAE,EAAE;YAC5B,IAAI,CAAC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;gBACzI,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;gBAC1F,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;aACpF;QACH,CAAC,CACF,CAAC;QAEF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAExJ,IAAI,CAAC,SAAS,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,CAAC;QAC1F,IAAI,CAAC,UAAU,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,0BAA0B,GAAG,IAAI,CAAC;IACrF,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY;YACnB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;IACpC,CAAC;IAED,oBAAoB,CAAC,KAAU;QAC7B,OAAO,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAC/C,CAAC;IAEM,iBAAiB,CAAC,OAAgB;QACvC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IACzB,CAAC;IAEM,eAAe;IACtB,CAAC;;sHA3EU,mCAAmC;iIAAnC,mCAAmC;QCZhD,oEAAyI;;;QAAjG,iFAAyB;QAA5D,wJAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAQ;AACA;AAEO;AACI;AACsC;AACU;AACxC;AACZ;AACmE;AACoB;AACjB;AACS;AAC7D;AAC4C;AACP;AACM;AACH;AAC6B;AACX;AACvB;AAC+B;AAC7B;AACsC;AACrF;AAC8B;AAC8C;AACd;AACjB;AACK;AACY;AACf;AACY;AACN;AACY;AACI;AAClB;;AAwE1G,MAAM,cAAc;;4EAAd,cAAc;4GAAd,cAAc;iHAJd;QACT,iFAAmB;KACpB,YAlCC,0DAAY;QACZ,0DAAY;QACZ,wDAAW;QACX,gEAAmB;QACnB,iEAAgB;QAChB,qEAAqB;QACrB,iEAAc,EAGd,0DAAY;oIA2BH,cAAc,mBApEvB,kIAA2B;QAC3B,wGAAmB;QACnB,kHAAuB;QACvB,sJAAiC;QACjC,qIAA4B;QAC5B,8IAA+B;QAC/B,6HAA0B;QAC1B,4IAA8B;QAC9B,qHAAuB;QACvB,sHAAuB;QACvB,4HAAyB;QACzB,uJAAiC;QACjC,0HAAwB;QACxB,uHAAuB;QACvB,sGAAkB;QAClB,oJAAgC;QAChC,0HAAwB;QACxB,uEAAY;QACZ,6JAAmC;QACnC,6IAA+B;QAC/B,oJAAgC;QAChC,sIAA4B;QAC5B,qHAAuB;QACvB,0HAAwB;QACxB,sIAA4B;QAC5B,uHAAuB;QACvB,mIAA2B;QAC3B,6HAAyB;QACzB,yIAA6B;QAC7B,2HAAyB,aAGzB,0DAAY;QACZ,0DAAY;QACZ,wDAAW;QACX,gEAAmB;QACnB,iEAAgB;QAChB,qEAAqB;QACrB,iEAAc,aAGd,0DAAY;QACZ,kIAA2B;QAC3B,wGAAmB;QACnB,kHAAuB;QACvB,sJAAiC;QACjC,qIAA4B;QAC5B,8IAA+B;QAC/B,6IAA+B;QAC/B,6HAA0B;QAC1B,4IAA8B;QAC9B,oJAAgC;QAChC,qHAAuB;QACvB,0HAAwB;QACxB,uHAAuB;QACvB,uJAAiC;QACjC,uEAAY;QACZ,6JAAmC;QACnC,sGAAkB;QAClB,oJAAgC;QAChC,0HAAwB;QACxB,6HAAyB;QACzB,yIAA6B;;;;;;;;;;;;;;;ACtGjC,IAAY,0BAIX;AAJD,WAAY,0BAA0B;IACpC,uDAAyB;IACzB,iDAAmB;IACnB,yDAA2B;AAC7B,CAAC,EAJW,0BAA0B,KAA1B,0BAA0B,QAIrC;;;;;;;;;;;;;;;ACJD,IAAY,6BAOX;AAPD,WAAY,6BAA6B;IACvC,kEAAiC;IACjC,kEAAiC;IACjC,qDAAoB;IACpB,yDAAwB;IACxB,2DAA0B;IAC1B,mDAAkB;AACpB,CAAC,EAPW,6BAA6B,KAA7B,6BAA6B,QAOxC;;;;;;;;;;;;;;;;;;;;;ACN4O;AAErJ;AAIS;AACP;;;AAMnF,MAAM,mBAAmB;IAE9B,YAAoB,iBAAoC;QAApC,sBAAiB,GAAjB,iBAAiB,CAAmB;QAyTjD,qBAAgB,GAAW;;;;;;;GAOjC,CAAC;IA/TF,CAAC;IAED,qBAAqB;QACnB,OAAO;YACL;gBACE,EAAE,EAAE,MAAM;gBACV,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE;oBACR,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,OAAO;iBACjB;gBACD,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;aACpB;YACf;gBACE,EAAE,EAAE,YAAY;gBAChB,YAAY,EAAE;oBACV,MAAM,EAAE,GAAG;iBACd;aACY;YACf;gBACE,EAAE,EAAE,oCAAoC;gBACxC,QAAQ,EAAE,QAAQ;gBAClB,QAAQ,EAAE;oBACR,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,OAAO;iBACjB;gBACD,YAAY,EAAE;oBACZ,MAAM,EAAE,GAAG;iBACZ;gBACD,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;aACpB;YACf;gBACE,EAAE,EAAE,gBAAgB;gBACpB,YAAY,EAAE;oBACV,MAAM,EAAE,YAAY;iBACvB;aACY;YACf;gBACE,EAAE,EAAE,oBAAoB;gBACxB,YAAY,EAAE;oBACV,MAAM,EAAE,8BAA8B;iBACzC;aACY;YACf;gBACE,EAAE,EAAE,aAAa;gBACjB,QAAQ,EAAE,SAAS;aACN;YACf;gBACE,EAAE,EAAE,YAAY;gBAChB,QAAQ,EAAE,QAAQ;gBAClB,SAAS,EAAE,EAAE,UAAU,EAAE,MAAM,EAAE;aACpB;YACf;gBACE,EAAE,EAAE,UAAU;gBACd,QAAQ,EAAE,UAAU;aACP;YACf;gBACE,EAAE,EAAE,QAAQ;gBACZ,QAAQ,EAAE;oBACR,KAAK,EAAE,SAAS;oBAChB,OAAO,EAAE,OAAO;iBACjB;gBACD,SAAS,EAAC,EAAE,UAAU,EAAC,MAAM,EAAC;aACjB;SAChB;IACH,CAAC;IAED,mBAAmB,CAAC,4BAAqC,KAAK;QAC5D,IAAI,aAAa,GAAG;YAClB,QAAQ,EAAE,IAAI;YACd,MAAM,EAAE,IAAI;YACZ,SAAS,EAAE,IAAI;YACf,IAAI,EAAE,CAAC;SACE,CAAC;QAEZ,IAAI,yBAAyB,EAAE;YAC7B,gGAAgG;YAChG,aAAa,CAAC,qBAAqB,GAAG,CAAC,KAAkC,EAAE,EAAE;gBAC3E,IAAI,cAAc,GAAY,KAAK,CAAC;gBAEpC,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE;oBAC3B,cAAc,GAAG,IAAI,CAAC;gBAExB,OAAO,cAAc,CAAC;YACxB,CAAC;SACF;QAED,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,mBAAmB,CAAC,oBAA0D,EAAE,SAAiB,EAAE,MAAkC,EAAE,MAAc;QACnJ,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,oBAAoB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpD,IAAI,iBAAiB,GAAG,oBAAoB,CAAC,CAAC,CAAC,CAAC;YAEhD,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,UAAU,GAAG,EAAE,CAAC;YAEpB,IAAI,iBAAiB,CAAC,MAAM,IAAI,IAAI,IAAI,iBAAiB,CAAC,MAAM,IAAI,SAAS,EAAE;gBAC7E,UAAU,GAAG,iBAAiB,CAAC,MAAM,CAAC;aACvC;YAED,IAAI,iBAAiB,CAAC,MAAM,IAAI,IAAI,IAAI,iBAAiB,CAAC,MAAM,IAAI,SAAS,EAAE;gBAC7E,UAAU,GAAG,UAAU,CAAC;aACzB;YAED,IAAI,iBAAiB,CAAC,MAAM,IAAI,IAAI,IAAI,iBAAiB,CAAC,MAAM,IAAI,SAAS,EAAE;gBAC7E,UAAU,GAAG,UAAU,CAAC;aACzB;YAED,IAAI,iBAAiB,CAAC,MAAM,IAAI,IAAI,IAAI,iBAAiB,CAAC,MAAM,IAAI,SAAS,EAAE;gBAC7E,UAAU,GAAG,UAAU,CAAC;aACzB;YAED,QAAQ,MAAM,EAAE;gBACd,KAAK,0GAAkC;oBACrC,IAAI,iBAAiB,CAAC,SAAS,IAAI,IAAI,IAAI,iBAAiB,CAAC,SAAS,IAAI,SAAS,IAAI,iBAAiB,CAAC,SAAS,IAAI,MAAM;2BACvH,CAAC,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,CAAC,EAAE;wBAC/G,OAAO,GAAG,KAAK,CAAC;qBACjB;oBACD,MAAM;gBACR,KAAK,6GAAqC;oBACxC,IAAI,iBAAiB,CAAC,aAAa,IAAI,IAAI,IAAI,iBAAiB,CAAC,aAAa,IAAI,SAAS,IAAI,iBAAiB,CAAC,aAAa,IAAI,MAAM;2BACnI,CAAC,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,CAAC,EAAE;wBAC/G,OAAO,GAAG,KAAK,CAAC;qBACjB;oBACD,MAAM;gBACR,KAAK,8GAAsC;oBACzC,IAAI,iBAAiB,CAAC,aAAa,IAAI,IAAI,IAAI,iBAAiB,CAAC,aAAa,IAAI,SAAS,IAAI,iBAAiB,CAAC,aAAa,IAAI,MAAM;2BACnI,CAAC,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,IAAI,SAAS,CAAC,EAAE;wBAC/G,OAAO,GAAG,KAAK,CAAC;qBACjB;oBACD,MAAM;aACT;SACF;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,iBAAiB,CAAC,QAAgB,EAAE,SAAiB,EAAE,WAAwB,EAAE,eAAwB,KAAK,EAAE,iBAAqC,EAAE,iBAA0B,IAAI;QAC1L,MAAM,MAAM,GAAG;YACb,UAAU,EAAE,KAAK;YACjB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,QAAQ;YAClB,SAAS,EAAE,SAAS;YACpB,YAAY,EAAE,YAAY;YAC1B,oBAAoB,EAAE,YAAY;YAClC,iBAAiB,EAAE,iBAAiB;YACpC,aAAa,EAAE,cAAc;YAC7B,gBAAgB,EAAE,cAAc;YAChC,wBAAwB,EAAE,iBAAiB,EAAE,wBAAwB;YACrE,mBAAmB,EAAE,CAAC,MAAkC,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;SACrE,CAAC;QACvB,WAAW,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC;IAEO,eAAe,CAAC,MAAW;QACjC,MAAM,MAAM,GAAW,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;QACjD,IAAI,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC;QAC/B,MAAM,CAAC,cAAc,GAAG,MAAM,CAAC,cAAoC;QACnE,IAAI,MAAM,CAAC,cAAc,EAAE;YACzB,MAAM,oBAAoB,GAAyB;gBACjD,GAAG,MAAM;gBACT,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI;gBACtB,IAAI,EAAE,MAAM,CAAC,IAAK;gBAClB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE;aAClC,CAAC;YACF,WAAW,GAAG,MAAM,CAAC,cAAc,CAAC,oBAAoB,CAAC,CAAC;SAC3D;QACD,OAAO,WAAW,CAAC;IACrB,CAAC;IAED,kBAAkB,CAAC,yBAAiC,EAAE,SAAiB;QACrE,IAAI,UAAU,GAAG,IAAI,IAAI,CAAC,yBAAyB,CAAC,CAAC;QACrD,IAAI,QAAQ,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC;QAEnC,IAAI,aAAa,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,cAAc,EAAE,EAAE,UAAU,CAAC,WAAW,EAAE,EAAE,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACvH,IAAI,WAAW,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,cAAc,EAAE,EAAE,QAAQ,CAAC,WAAW,EAAE,EAAE,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QAE/G,IAAI,WAAW,GAAG,aAAa,EAAE;YAC7B,OAAO,CAAC,CAAC,CAAC;SACb;aAAM,IAAI,WAAW,GAAG,aAAa,EAAE;YACpC,OAAO,CAAC,CAAC;SACZ;aAAM;YACH,OAAO,CAAC,CAAC;SACZ;IACH,CAAC;IACD,wBAAwB,CAAC,OAAe,EAAE,OAAe;QACvD,IAAI,gBAAgB,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,gBAAgB,GAAG,6BAA6B,CAAC,OAAO,CAAC,CAAC;QAC9D,IAAI,gBAAgB,GAAG,gBAAgB,EAAE;YACvC,OAAO,CAAC,CAAC,CAAC;SACX;QACD,IAAI,gBAAgB,GAAG,gBAAgB,EAAE;YACvC,OAAO,CAAC,CAAC;SACV;QACD,OAAO,CAAC,CAAC;QAGT,SAAS,6BAA6B,CAAC,MAAc;YACnD,QAAQ,MAAM,EAAE;gBACd,KAAK,8GAA2B;oBAC9B,OAAO,CAAC,CAAC;gBACX,KAAK,6GAA0B;oBAC7B,OAAO,CAAC,CAAC;gBACX,KAAK,+GAA4B;oBAC/B,OAAO,CAAC,CAAC;gBACX,KAAK,8GAA2B;oBAC9B,OAAO,CAAC,CAAC;aACZ;YAED,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAEM,8BAA8B,CAAC,OAAe,EAAE,gBAAwB,CAAC,EAAE,GAAW,EAAE,GAAW,EAAE,YAAoB,IAAI;QAClI,IAAI,OAAO,GAAG,GAAG,EAAE;YACjB,OAAO,GAAG,GAAG,CAAC;SACf;QACD,IAAI,OAAO,GAAG,GAAG,EAAE;YACjB,OAAO,GAAG,GAAG,CAAC;SACf;QACD,yBAAyB;QACzB,IAAI,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,SAAS,CAAC,CAAC;QACnE,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,8BAA8B;IACvB,yBAAyB,CAAC,OAAe,EAAE,gBAAwB,CAAC,EAAE,GAAW,EAAE,GAAW,EAAE,YAAoB,IAAI;QAC7H,IAAI,UAAU,GAAG,IAAI,CAAC,8BAA8B,CAAC,OAAO,EAAE,aAAa,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;QAClG,OAAO,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,kCAAkC;IAC3B,mBAAmB,CAAC,OAAe,EAAE,gBAAwB,CAAC,EAAE,WAAmB,IAAI;QAE5F,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,OAAO,GAAG,CAAC,CAAC;SACb;QAED,IAAI,UAAU,GAAG,EAAE,GAAG,CAAC,CAAC,OAAO,GAAG,aAAa,CAAC,GAAG,EAAE,CAAC,CAAC;QAEvD,OAAO,QAAQ,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,UAAU,CAAC;IACnD,CAAC;IAEM,0BAA0B,CAAC,OAAe,EAAE,gBAAwB,CAAC;QAC1E,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,OAAO,GAAG,CAAC,CAAC;SACb;QACD,OAAO,CAAC,OAAO,GAAG,aAAa,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC;IAC5C,CAAC;IAEM,iCAAiC,CAAC,OAAe;QACtD,IAAI,OAAO,KAAK,CAAC,EAAE;YACjB,kCAAkC;YAClC,OAAO,GAAG,CAAC,CAAC;SACb;QACD,6CAA6C;QAC7C,MAAM,aAAa,GAAG,EAAE,CAAC;QACzB,2CAA2C;QAC3C,MAAM,SAAS,GAAG,EAAE,CAAC;QACrB,yBAAyB;QACzB,MAAM,iBAAiB,GAAG,EAAE,CAAC;QAE7B,OAAO,aAAa,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,iBAAiB,CAAC;IACnE,CAAC;IAEM,iDAAiD,CAAC,IAAa;QACpE,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,IAAI,yBAAyB,GAAG,CAAC,CAAC;QAClC,IAAI,OAAO,GAAG,CAAC,EAAE;YACf,yBAAyB,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,CAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;SACjL;QACD,2BAA2B;QAC3B,IAAI,iBAAiB,GAAG,IAAI,CAAC,0BAA0B,CAAC,OAAO,CAAC,CAAC;QACjE,iBAAiB,IAAI,EAAE,GAAG,yBAAyB,CAAC;QAEpD,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAEM,2BAA2B,CAAC,oBAA4B,EAAE,yBAAgC;QAC/F,IAAI,uBAAuB,GAAG,QAAQ,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC,EAAE,oBAAoB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACvG,IAAI,kBAAkB,GAAG,yBAAyB,GAAG,uBAAuB,CAAC;QAC7E,OAAO,kBAAkB,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;IAC9C,CAAC;IAEM,eAAe,CAAC,SAAiB;QACtC,IAAI,CAAC,iGAAgB,CAAC,SAAS,CAAC,EAAE;YAChC,OAAO,SAAS,CAAC;SAClB;QAED,MAAM,IAAI,GAAG,oBAAoB,CAAC;QAClC,IAAI,cAAc,GAAG,EAAE,CAAC;QACxB,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACpC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,GAAG,EAAE;gBACnB,IAAI,KAAK,GAAG,SAAS,CAAC,MAAM,EAAE;oBAC5B,cAAc,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;oBACnC,KAAK,EAAE,CAAC;iBACT;qBAAM;oBACL,cAAc,IAAI,GAAG,CAAC;iBACvB;aACF;iBAAM;gBACL,cAAc,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;aAC3B;SACF;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;;sFAzTU,mBAAmB;oHAAnB,mBAAmB,WAAnB,mBAAmB,mBAFlB,MAAM;;;;;;;;;;;;;;;;;;ACX4B;;AAKzC,MAAM,WAAW;IAStB;QARO,aAAQ,GAA6B,IAAI,iDAAe,CAAU,IAAI,CAAC,CAAC;QACxE,YAAO,GAAoB,IAAI,yCAAO,EAAU,CAAC;QACxD,yFAAyF;QACzF,kEAAkE;QAC3D,uBAAkB,GAA6B,IAAI,iDAAe,CAAU,IAAI,CAAC,CAAC;QAClF,sBAAiB,GAAoB,IAAI,yCAAO,EAAU,CAAC;QAC3D,kBAAa,GAAoB,IAAI,yCAAO,EAAU,CAAC;IAE9C,CAAC;;sEATN,WAAW;4GAAX,WAAW,WAAX,WAAW,mBAFV,MAAM;;;;;;;;;;;;;;;;;;;;ACJpB,uEAAuE;AAEhE,MAAM,eAAe,GAAG,eAAe,CAAC;AAExC,MAAM,aAAa,GAAG,WAAW,CAAC;AAElC,MAAM,mBAAmB,GAAG;IACjC,SAAS,EAAE,aAAa;IACxB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEK,MAAM,aAAa,GAAG;IAC3B,cAAc,EAAE,iBAAiB;IACjC,MAAM,EAAE,QAAQ;IAChB,SAAS,EAAE,YAAY;CACxB,CAAC;AAEK,MAAM,YAAY,GAAG;IAC1B,KAAK,EAAE,OAAO;IACd,aAAa,EAAE,gBAAgB;IAC/B,WAAW,EAAE,cAAc;IAC3B,OAAO,EAAE,SAAS;IAClB,QAAQ,EAAE,UAAU;IACpB,YAAY,EAAE,eAAe;IAC7B,cAAc,EAAE,iBAAiB;IACjC,aAAa,EAAE,gBAAgB;IAC/B,uBAAuB,EAAE,2BAA2B;IACpD,kBAAkB,EAAE,uBAAuB;CAC5C,CAAC;AAEF,IAAI,gBAAgB,GAAyB;IAC3C,wBAAwB,EAAE,GAAG;IAC7B,sCAAsC,EAAE,kBAAkB,eAAe,EAAE;IAC3E,KAAK,EAAE,kBAAkB,YAAY,CAAC,KAAK,EAAE;IAC7C,WAAW,EAAE,kBAAkB,YAAY,CAAC,WAAW,EAAE;IACzD,aAAa,EAAE,kBAAkB,YAAY,CAAC,aAAa,EAAE;IAC7D,QAAQ,EAAE,kBAAkB,YAAY,CAAC,QAAQ,EAAE;IACnD,OAAO,EAAE,kBAAkB,YAAY,CAAC,OAAO,EAAE;IACjD,MAAM,EAAE,kBAAkB,aAAa,CAAC,MAAM,EAAE;IAChD,SAAS,EAAE,kBAAkB,aAAa,CAAC,SAAS,EAAE;IACtD,cAAc,EAAE,kBAAkB,aAAa,CAAC,cAAc,EAAE;IAChE,mBAAmB,EAAE,EAAE;IACvB,yBAAyB,EAAE,EAAE;IAC7B,2BAA2B,EAAE,EAAE;IAC/B,sBAAsB,EAAE,EAAE;IAC1B,qBAAqB,EAAE,EAAE;IACzB,oBAAoB,EAAE,EAAE;IACxB,uBAAuB,EAAE,EAAE;IAC3B,4BAA4B,EAAE,EAAE;IAChC,oBAAoB,EAAE,2BAA2B;IACjD,kBAAkB,EAAE,yBAAyB;IAC7C,gBAAgB,EAAE,kBAAkB,YAAY,CAAC,YAAY,EAAE;IAC/D,cAAc,EAAE,kBAAkB,YAAY,CAAC,cAAc,EAAE;IAC/D,aAAa,EAAE,kBAAkB,YAAY,CAAC,aAAa,EAAE;IAC7D,uBAAuB,EAAE,kBAAkB,YAAY,CAAC,uBAAuB,EAAE;IACjF,kBAAkB,EAAE,kBAAkB,YAAY,CAAC,kBAAkB,qBAAqB;CAC3F,CAAC;AAEF,gBAAgB,GAAG;IACjB,GAAG,gBAAgB;IACnB,mBAAmB,EAAE,gBAAgB,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC;IACtD,yBAAyB,EAAE,gBAAgB,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC;IAClE,sBAAsB,EAAE,gBAAgB,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC;IAC5D,qBAAqB,EAAE,gBAAgB,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC;IAC1D,oBAAoB,EAAE,gBAAgB,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC;IACxD,uBAAuB,EAAE,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC;IAC9D,4BAA4B,EAAE,gBAAgB,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC;CACzE,CAAC;AA8BK,MAAM,gBAAgB,GAAyB,gBAAgB,CAAC;;;;;;;;;;;;;;;;;;AChGqB;AAGlD;;;AAKnC,MAAM,oBAAoB;IAC/B,YAAoB,SAA2B;QAA3B,cAAS,GAAT,SAAS,CAAkB;IAAI,CAAC;IAEpD,SAAS,CAAC,GAAqB,EAAE,IAAiB;QAChD,OAAO,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;aACnC,IAAI,CAAC,wDAAQ,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7E,CAAC;IAED,wEAAwE;IACxE,6EAA6E;IAC7E,2BAA2B;IACnB,uBAAuB,CAAC,KAAoB,EAAE,GAAqB,EAAE,IAAiB;QAC5F,IAAI,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;YACxC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC;gBACd,UAAU,EAAE;oBACV,aAAa,EAAE,UAAU,KAAK,EAAE;iBACjC;aACF,CAAC,CAAC;SACJ;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC1B,CAAC;IAEO,eAAe,CAAC,GAAQ;QAC9B,6CAA6C;QAC7C,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACpD,OAAO,IAAI,CAAC;SACb;QAED,qDAAqD;QACrD,8CAA8C;QAC9C,IAAI,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,KAAK,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,CAAC,EAAE;YACpD,OAAO,IAAI,CAAC;SACb;QAED,yCAAyC;QACzC,IAAI,YAAY,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;YAC9B,OAAO,IAAI,CAAC;SACb;QAED,iDAAiD;QACjD,gCAAgC;QAChC,OAAO,KAAK,CAAC;IACf,CAAC;;wFA3CU,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB,mBAFnB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNpB;AACA;AACA;AACA;;AAqBO,IAAKW,0BAAZ;;AAAA,WAAYA,0BAAZ,EAAsC;EACpCA;EACAA;EACAA;AACD,CAJD,EAAYA,0BAA0B,KAA1BA,0BAA0B,MAAtC;;AAaM,MAAOC,gBAAP,CAAuB;EAH7BC;IAIE;IACA;IAEQ,qBAAgB,IAAhB;IAEA,mBAA6C,IAAIZ,iDAAJ,CAAkC,IAAlC,CAA7C;EA4JT;;EA1JQa,eAAe;IACpB,OAAO,KAAKC,OAAL,GAAeC,IAAf,CAAoBX,mDAAG,CAACY,CAAC,IAAI,CAAC,CAACA,CAAR,CAAvB,CAAP;EACD;;EAEMF,OAAO;IACZ,OAAOb,4CAAM,CACX,KAAKgB,WAAL,CAAiBF,IAAjB,CAAsBT,oDAAI,CAAC,CAAD,CAA1B,EAA+BH,sDAAM,CAACa,CAAC,IAAI,CAAC,CAACA,CAAR,CAArC,CADW,EAEX,KAAKE,kBAAL,GAA0BH,IAA1B,CAA+BZ,sDAAM,CAACa,CAAC,IAAI,CAAC,CAACA,CAAR,CAArC,EAAiDT,mDAAG,CAACS,CAAC,IAAI,KAAKC,WAAL,CAAiBE,IAAjB,CAAsBH,CAAtB,CAAN,CAApD,CAFW,EAGX,KAAKC,WAAL,CAAiBG,YAAjB,EAHW,CAAb;EAID;;EAEMC,cAAc;IACnB,OAAOnB,0CAAI,CAAC,KAAKoB,4BAAL,EAAD,CAAJ,CACJP,IADI,CACCV,yDAAQ,CAAC,MAAMH,0CAAI,CAAC,KAAKqB,WAAL,CAAkBT,OAAlB,EAAD,CAAX,CADT,EAEHV,mDAAG,CAACoB,IAAI,IAAIA,IAAI,IAAIA,IAAI,CAACC,YAAtB,CAFA,CAAP;EAGD,CAvB0B,CAyB3B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;;;EACaC,MAAM,CAACC,KAAD,EAAW;IAAA;;IAAA;MAC5B,MAAM,KAAI,CAACL,4BAAL,EAAN;MACA,IAAIE,IAAI,GAAgB,IAAxB;;MACA,IAAI;QACFA,IAAI,SAAS,KAAI,CAACD,WAAL,CAAkBK,YAAlB,CAA+B,KAAI,CAACC,eAAL,EAA/B,CAAb;;QACA,KAAI,CAACZ,WAAL,CAAiBE,IAAjB,CAAsBK,IAAI,CAACM,OAA3B;;QACA,OAAO,KAAI,CAACC,OAAL,CAAaJ,KAAb,CAAP;MACD,CAJD,CAIE,OAAOK,WAAP,EAAoB;QACpB;QACAC,OAAO,CAACC,GAAR,CAAY,+BAAZ,EAA6CF,WAA7C;;QAEA,IAAI;UACF,IAAI,KAAI,CAACG,aAAT,EAAwB;YACtB,MAAM,IAAIC,KAAJ,CAAU,uGAAV,CAAN;UACD;;UACDZ,IAAI,SAAS,KAAI,CAACD,WAAL,CAAkBc,WAAlB,CAA8B,KAAI,CAACR,eAAL,EAA9B,CAAb;;UACA,KAAI,CAACZ,WAAL,CAAiBE,IAAjB,CAAsBK,IAAI,CAACM,OAA3B;;UACA,OAAO,KAAI,CAACC,OAAL,CAAaJ,KAAb,CAAP;QACD,CAPD,CAOE,OAAOW,UAAP,EAAwB;UACxB,IAAIA,UAAU,CAACC,OAAX,KAAuB,qBAA3B,EAAkD;YAChD;YACA,OAAO,KAAI,CAACC,KAAL,CAAW,6BAAX,CAAP;UACD,CAHD,MAGO,IAAI,CAAC,KAAI,CAACL,aAAV,EAAyB;YAC9BF,OAAO,CAACC,GAAR,CAAY,8BAAZ,EAA4CI,UAA5C;UACD,CANuB,CAQxB;;;UACA,IAAI;YACF;YACA,KAAI,CAACG,cAAL,CAAoB,GAApB;;YACA,OAAO,KAAI,CAACC,QAAL,EAAP;UACD,CAJD,CAIE,OAAOC,aAAP,EAA2B;YAC3BV,OAAO,CAACC,GAAR,CAAY,iCAAZ,EAA+CS,aAA/C;YACA,OAAO,KAAI,CAACH,KAAL,CAAWG,aAAX,CAAP;UACD;QACF;MACF;IApC2B;EAqC7B;;EAEYF,cAAc,CAACG,GAAD,EAAY;IAAA;;IAAA;MACrC,IAAI;QACF,MAAM,MAAI,CAACtB,4BAAL,EAAN;QACA,MAAME,IAAI,SAAS,MAAI,CAACD,WAAL,CAAkBsB,cAAlB,CAAiCD,GAAjC,CAAnB;;QACA,MAAI,CAAC3B,WAAL,CAAiBE,IAAjB,CAAsBK,IAAI,IAAIA,IAAI,CAACM,OAAnC;;QACA,OAAO,MAAI,CAACC,OAAL,CAAaP,IAAI,IAAIA,IAAI,CAACG,KAA1B,CAAP;MACD,CALD,CAKE,OAAOa,KAAP,EAAc;QACdP,OAAO,CAACC,GAAR,CAAY,iCAAZ,EAA+CM,KAA/C;QACA,OAAO,MAAI,CAACA,KAAL,CAAW,gCAAX,CAAP;MACD;IAToC;EAUtC;;EAEYM,OAAO,CAACnB,KAAD,EAAW;IAAA;;IAAA;MAC7B,IAAI;QACF,IAAI,MAAI,CAACQ,aAAT,EAAwB;UACtB,MAAM,IAAIC,KAAJ,CAAU,uGAAV,CAAN;QACD;;QAED,MAAM,MAAI,CAACd,4BAAL,EAAN;QACA,MAAM,MAAI,CAACC,WAAL,CAAkBwB,YAAlB,CAA+B,MAAI,CAAClB,eAAL,EAA/B,CAAN;;QACA,MAAI,CAACZ,WAAL,CAAiBE,IAAjB,CAAsB,IAAtB;;QACA,OAAO,MAAI,CAACY,OAAL,CAAaJ,KAAb,CAAP;MACD,CATD,CASE,OAAOqB,iBAAP,EAA+B;QAC/Bf,OAAO,CAACC,GAAR,CAAY,uBAAZ,EAAqCc,iBAArC;;QACA,IAAI;UACF,MAAM,MAAI,CAACzB,WAAL,CAAkB0B,eAAlB,CAAkC,MAAI,CAACpB,eAAL,CAAqBF,KAArB,CAAlC,CAAN;UACA,OAAO,MAAI,CAACe,QAAL,EAAP;QACD,CAHD,CAGE,OAAOQ,oBAAP,EAAkC;UAClCjB,OAAO,CAACC,GAAR,CAAY,0BAAZ,EAAwCgB,oBAAxC;UACA,OAAO,MAAI,CAACV,KAAL,CAAWU,oBAAX,CAAP;QACD;MACF;IAnB4B;EAoB9B;;EAEYC,eAAe,CAACP,GAAD,EAAY;IAAA;;IAAA;MACtC,MAAM,MAAI,CAACtB,4BAAL,EAAN;;MACA,IAAI;QACF,MAAM8B,QAAQ,SAAS,MAAI,CAAC7B,WAAL,CAAkB8B,eAAlB,CAAkCT,GAAlC,CAAvB;QACA,MAAMU,IAAI,SAAS,MAAI,CAAC/B,WAAL,CAAkBgC,iBAAlB,EAAnB;;QACA,MAAI,CAACtC,WAAL,CAAiBE,IAAjB,CAAsB,IAAtB;;QACA,OAAO,MAAI,CAACY,OAAL,CAAaqB,QAAQ,IAAIA,QAAQ,CAACzB,KAAlC,CAAP;MACD,CALD,CAKE,OAAOa,KAAP,EAAmB;QACnBP,OAAO,CAACC,GAAR,CAAY,yCAAyCM,KAAK,IAA1D;QACA,OAAO,MAAI,CAACA,KAAL,CAAWA,KAAX,CAAP;MACD;IAVqC;EAWvC;;EAEOX,eAAe,CAACF,KAAD,EAAY;IACjC,OAAO;MAAE6B,oBAAoB,EAAE,IAAxB;MAA8BC,IAAI,EAAE9B;IAApC,CAAP;EACD;;EAEOa,KAAK,CAACD,OAAD,EAAgB;IAC3B,OAAO;MAAEmB,MAAM,EAAEhD,0BAA0B,CAACiD,IAArC;MAA2CpB;IAA3C,CAAP;EACD;;EAEOR,OAAO,CAACJ,KAAD,EAAW;IACxB,OAAO;MAAE+B,MAAM,EAAEhD,0BAA0B,CAACkD,OAArC;MAA8CjC;IAA9C,CAAP;EACD;;EAEOe,QAAQ;IACd,OAAO;MAAEgB,MAAM,EAAEhD,0BAA0B,CAACmD;IAArC,CAAP;EACD;;EAEavC,4BAA4B;IAAA;;IAAA;MACxC,IAAI,MAAI,CAACC,WAAL,KAAqBuC,SAAzB,EAAoC;QAClC;MACD;;MAED,MAAMV,QAAQ,SAASW,KAAK,CAACvD,iHAAD,CAA5B;;MACA,IAAI,CAAC4C,QAAQ,CAACa,EAAd,EAAkB;QAChB,MAAM,IAAI7B,KAAJ,CAAU,gCAAgC3B,yEAAe,GAAzD,CAAN;MACD;;MAED,MAAMyD,QAAQ,SAAcd,QAAQ,CAACe,IAAT,EAA5B;MACAD,QAAQ,CAACE,oBAAT,GAAgC,IAAhC;MACAF,QAAQ,CAACG,2BAAT,GAAuC,IAAvC;MACA,MAAI,CAAC9C,WAAL,GAAmB,IAAIxB,oDAAJ,CAAgBmE,QAAhB,CAAnB;;MAEA,MAAI,CAAC3C,WAAL,CAAiB+C,MAAjB,CAAwBC,gBAAxB,sJAAyC,aAAW;QAClD,MAAM,MAAI,CAAChD,WAAL,CAAkBiD,UAAlB,EAAN;;QACA,MAAI,CAACvD,WAAL,CAAiBE,IAAjB,CAAsB,IAAtB;MACD,CAHD;IAfwC;EAmBzC;;EAEOD,kBAAkB;IACxB,OAAOhB,0CAAI,CAAC,KAAKoB,4BAAL,EAAD,CAAJ,CACJP,IADI,CAEHV,yDAAQ,CAAC,MAAM,KAAKkB,WAAL,CAAkBT,OAAlB,EAAP,CAFL,EAGHV,mDAAG,CAACY,CAAC,IAAIA,CAAC,IAAIA,CAAC,CAACc,OAAb,CAHA,CAAP;EAID;;AAjK0B;;;mBAAhBnB;AAAgB;;;SAAhBA;EAAgB8D,SAAhB9D,gBAAgB;EAAA+D,YAFf;;;;;;;;;;;;;;;;;;;ACnCqF;AAGZ;;;;AAKhF,MAAM,kBAAkB;IAC7B,YAAoB,SAAsB,EAAU,MAAc;QAA9C,cAAS,GAAT,SAAS,CAAa;QAAU,WAAM,GAAN,MAAM,CAAQ;IAClE,CAAC;IACD,WAAW,CACT,KAA6B,EAC7B,KAA0B;QAC1B,IAAI,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAkB,CAAC;QACjD,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACvC,IAAI,OAAO,GAAG,KAAK,CAAC;gBACpB,mDAAmD;gBACnD,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;oBACtB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;iBACzD;gBAED,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,IAAI,OAAO,EAAE;oBAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;iBACf;qBAAM;oBACL,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;wBAChC,wBAAwB;wBACxB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,YAAY,CAAC,CAAC;qBACzC;yBAAM;wBACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,8FAAoC,EAAE;4BACzD,WAAW,EAAE;gCACX,CAAC,uFAA6B,CAAC,EAAE,KAAK,CAAC,GAAG;6BAC3C;yBACF,CAAC,CAAC;wBACH,MAAM,CAAC,KAAK,CAAC,CAAC;qBACf;iBACF;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACC,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,8FAAoC,EAAE;gBACzD,WAAW,EAAE;oBACX,CAAC,uFAA6B,CAAC,EAAE,KAAK,CAAC,GAAG;iBAC3C;aACF,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC;;oFAxCU,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB,mBAFjB,MAAM;;;;;;;;;;;;;;;;;;;ACN+E;AAGZ;;;;AAKhF,MAAM,cAAc;IACzB,YAAoB,SAAsB,EAAU,MAAc;QAA9C,cAAS,GAAT,SAAS,CAAa;QAAU,WAAM,GAAN,MAAM,CAAQ;IAClE,CAAC;IACD,WAAW,CACT,KAA6B,EAC7B,KAA0B;QAE1B,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,oEAAoE;YACpE,IAAI,YAAY,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,gFAAsB,CAAC,CAAC;YACzE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACnD,IAAI,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE;oBAChC,OAAO,CAAC,IAAI,CAAC,CAAC;iBACf;qBAAM;oBACL,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,8FAAoC,EAAE;wBACzD,WAAW,EAAE;4BACX,CAAC,uFAA6B,CAAC,EAAE,KAAK,CAAC,GAAG;yBAC3C;qBACF,CAAC,CAAC;oBACH,MAAM,CAAC,KAAK,CAAC,CAAC;iBACf;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACC,KAAK,CAAC,KAAK,CAAC,EAAE;YACb,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,8FAAoC,EAAE;gBACzD,WAAW,EAAE;oBACX,CAAC,uFAA6B,CAAC,EAAE,KAAK,CAAC,GAAG;iBAC3C;aACF,CAAC,CAAC;YACH,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CAAC;IACP,CAAC;;4EA/BU,cAAc;+GAAd,cAAc,WAAd,cAAc,mBAFb,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;ACNmC;AACgC;AAChB;AACjB;AACU;AACP;AAC2D;AAExC;AACY;;;AAExF,MAAM,MAAM,GAAW;IAErB;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,CAAC,iGAAkB,CAAC;QACjC,IAAI,EAAE;YACJ,KAAK,EAAE,CAAC,uFAAyB,CAAC;YAClC,UAAU,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,KAAK,EAAgB;SACxE;QACD,YAAY,EAAE,GAAG,EAAE,CAAC,2MAA8B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;KAC5E;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EAAE,CAAC,qFAAc,CAAC;QAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,4RAA4C,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC;KACjG;IACD;QACE,IAAI,EAAE,MAAM;QACZ,WAAW,EAAE,CAAC,qFAAc,CAAC;QAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,oPAA4B,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;KACzE;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,CAAC,qFAAc,CAAC;QAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,6SAAwC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;KAC3F;IACD;QACE,IAAI,EAAE,sBAAsB;QAC5B,WAAW,EAAE,CAAC,qFAAc,CAAC;QAC7B,YAAY,EAAE,GAAG,EAAE,CAAC,mNAAkC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC;KAClF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE;YACJ,MAAM,EAAE,gBAAgB;SACzB;QACD,YAAY,EAAE,GAAG,EAAE,CAAC,sXAAsD,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,sBAAsB,CAAC;KAC/G;IACD;QACE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,gGAAkB,EAAE,WAAW,EAAE,CAAC,qFAAc,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE;KAAE;IAClH,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,6HAA2B,EAAE,WAAW,EAAE,CAAC,qFAAc,CAAC,EAAE,IAAI,EAAE,EAAE,MAAM,EAAE,oBAAoB,EAAE,EAAE;IAC9I,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,gFAAkB,EAAE,WAAW,EAAE,CAAC,iGAAkB,CAAC,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,uFAAyB,CAAC,EAAE,UAAU,EAAE,iBAAiB,EAAE,EAAE;IACrK,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,kEAAc,EAAE;IAC5C,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,+DAAa,EAAE;IACtC,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE;CAC3D,CAAC;AAYK,MAAM,gBAAgB;;gFAAhB,gBAAgB;6GAAhB,gBAAgB;iHALzB,iEAAoB,CAAC,MAAM,CAAC,EAEpB,yDAAY;mIAGX,gBAAgB,oFAHjB,yDAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClEmH;AAC7E;AAE6D;AAC5D;AAEP;AACyB;;;;;;;;;;;;;;;;;ICDjF,iFAAkP;;IAChP,yEAAkB;IAEd,uDAA+D;IAAA,gEAAM;IACrE,uDACF;IAAA,4DAAI;;;IALgD,8EAAqB;IAGvE,0DAA+D;IAA/D,+IAA+D;IAC/D,0DACF;IADE,uJACF;;ADeG,MAAM,YAAY;IAyBvB,YACU,YAAyB,EACzB,YAAyB,EACzB,gBAAiC,EACjC,KAAW,EACZ,OAAe,EACd,gBAAmC,EACnC,eAA+B,EAC/B,KAAa;QAPb,iBAAY,GAAZ,YAAY,CAAa;QACzB,iBAAY,GAAZ,YAAY,CAAa;QACzB,qBAAgB,GAAhB,gBAAgB,CAAiB;QACjC,UAAK,GAAL,KAAK,CAAM;QACZ,YAAO,GAAP,OAAO,CAAQ;QACd,qBAAgB,GAAhB,gBAAgB,CAAmB;QACnC,oBAAe,GAAf,eAAe,CAAgB;QAC/B,UAAK,GAAL,KAAK,CAAQ;QAhCvB,UAAK,GAAG,YAAY,CAAC;QACb,qBAAgB,GAAG,IAAI,8CAAY,EAAE,CAAC;QACvC,sBAAiB,GAAY,KAAK,CAAC;QAEnC,eAAU,GAAe,iEAAiB,CAAC;QAC3C,gBAAW,GAAgB,oEAAoB,CAAC;QAEhD,wBAAmB,GAAY,KAAK,CAAC;QACrC,6BAAwB,GAAG,EAAE,CAAC;QAC7B,gCAA2B,GAAG,EAAE,CAAC;QAClC,wBAAmB,GAAG,EAAE,CAAC;QACxB,iBAAY,GAAiB,IAAI,CAAC;QAClC,sBAAiB,GAAqB,IAAI,CAAC;QAEnD,aAAQ,GAAU,IAAI,CAAC;IAoBvB,CAAC;IAdD,IAAoC,CAAC;QACnC,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAcD,QAAQ;QACN,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,EAAE;YAClE,IAAI,CAAC,iBAAiB,GAAG,gBAAgB,CAAC;QAC5C,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE;gBACtC,IAAI,KAAK,YAAY,2DAAa,EAAE;oBAClC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,iBAAiB,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,iBAAiB,EAAE,CAAC,CAAC;iBACzF;YACH,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAIH,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YACpD,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC;QAC7B,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,qDAAqD;YACrD,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,GAAG,EAAE,CAAC;YACtE,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC,YAAY,CAAC,mBAAmB,GAAG,EAAE,CAAC;YAC3E,yBAAyB;YACzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAClD,uBAAuB;YACvB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,2BAA2B,CAAC,CAAC;YACxD,kGAAkG;YAClG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,oEAAwB,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,eAAe,GAAG,yEAAyB,CAAC;QAEjD,MAAM,sBAAsB,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,+CAAQ,CAAC,GAAG,EAAE;YAC9E,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,KAAc,EAAE,EAAE;YAC/B,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YACjC,CAAC,CAAC;QACJ,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,MAAM,mBAAmB,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,IAAI,CAAC,+CAAQ,CAAC,GAAG,EAAE;YACzE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACjD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,WAAuB,EAAE,EAAE;YACxC,IAAI,CAAC,MAAM,CAAC,SAAS,GAAG,WAAW,CAAC,OAAO,CAAC;YAC5C,IAAI,WAAW,CAAC,WAAW,EAAE;gBAC3B,IAAI,CAAC,MAAM,CAAC,UAAU,GAAG,WAAW,CAAC,WAAW,CAAC;aAClD;QACH,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;QAEH,iCAAiC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,+CAAQ,CAAC,GAAG,EAAE;YAChE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACrB,IAAI,IAAI,CAAC,YAAY,CAAC,aAAa,EAAE;gBACnC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;aACpB;QACH,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,CAAC;YACpE,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,0DAA0D,EAAE,2DAA2D,GAAG,KAAK,CAAC,CAAC;QACpK,CAAC,CAAC,CAAC;QAEH,MAAM,sBAAsB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,+CAAQ,CAAC,GAAG,EAAE;YACvE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,2CAA2C;YAC3C,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAClC,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,oCAAoC,GAAG,KAAK,CAAC,CAAC;YAC1D,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,mBAAmB,EAAE,oBAAoB,GAAG,KAAK,CAAC,CAAC;QACtF,CAAC,CAAC,CAAC;QAEH,MAAM,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,+CAAQ,CAAC,GAAG,EAAE;YACnE,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAClD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YACjB,yCAAyC;YACzC,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;YACnC,IAAI,CAAC,gBAAgB,CAAC,aAAa,EAAE,CAAC;QACxC,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,kCAAkC,GAAG,KAAK,CAAC,CAAC;YACxD,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,KAAK,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,IAAI,wBAAwB,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CACtD,0CAAG,CAAC,GAAG,EAAE;YACP,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,CAAC;QACrC,CAAC,CAAC,EACF,gDAAS,CAAC,GAAG,EAAE;YACb,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CACH,CAAC,SAAS,CAAC,CAAC,MAAc,EAAE,EAAE;YAC7B,yCAAyC;YACzC,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACpD,IAAI,CAAC,YAAY,CAAC,iBAAiB,EAAE,CAAC;YACtC,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,0FAAe,CAAC,CAAC;YAC5D,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;QACL,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,wBAAwB,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,yCAAyC,GAAG,KAAK,CAAC,CAAC;YAC/D,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,iBAAiB,EAAE,kBAAkB,GAAG,KAAK,CAAC,CAAC;QAClF,CAAC,CAAC,CAAC;QAEH,MAAM,+BAA+B,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,+CAAQ,CAAC,GAAG,EAAE;YACrF,gDAAgD;YAChD,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,SAAS,EAAE,EAAE;YAC1B,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACvC,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,wCAAwC,GAAG,KAAK,CAAC,CAAC;YAC9D,IAAI,CAAC,eAAe,CAAC,WAAW,CAAC,wBAAwB,EAAE,yBAAyB,GAAG,KAAK,CAAC,CAAC;QAChG,CAAC,CAAC,CAAC;IACL,CAAC;IAED,eAAe;QACb,oBAAoB;QACpB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,IAAI,CAAC,gBAAgB,CAAC,WAAW,EAAE,CAAC;SACrC;IACH,CAAC;IAED,QAAQ;QACN,4CAA4C;QAC5C,iBAAiB;QACjB,6HAA6H;QAC7H,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,EAAE,CAAC,CAAC;QACjF,4CAA4C;IAC9C,CAAC;;wEA3KU,YAAY;0GAAZ,YAAY;;;;;;;;;;4IAAZ,oBAAgB;;;;QC1B7B,yEAAQ;QAAA,uEAAuB;QAAA,4DAAS;QACxC,yEAAkC;QAAA,4EAAiC;QAAA,4DAAM;QACzE,gFAAY;QACV,2EAA+B;QACjC,4DAAO;QACP,yEAAQ;QAAA,uEAAuB;QAAA,4DAAS;QACxC,mHAOW;QACX,kFAA6F;;QAbxF,0DAA4B;QAA5B,yFAA4B;QAKJ,0DAAyB;QAAzB,yFAAyB;QAQ/B,0DAA2B;QAA3B,wFAA2B;QACtC,0DAA4B;QAA5B,yFAA4B;utRDK1B,CAAC,2DAAW,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEpB+B;AACqB;AAElC;AAC8B;AAE5B;AAEO;AACiB;AACU;AAGd;AACM;AACN;AACQ;AACb;AAEN;AACc;AACO;AAEvB;AACG;AACE;AACN;AACkB;AACb;;;;AAqCnD,MAAM,SAAS;;kEAAT,SAAS;uGAAT,SAAS,cAFR,wDAAY;4GAfb;QACT;YACE,OAAO,EAAE,oEAAiB;YAC1B,QAAQ,EAAE,0FAAoB;YAC9B,KAAK,EAAE,IAAI;SACZ;QACD,6EAAW;QACX,mFAAc;QACd,6EAAW;QACX,qFAAe;QACf,iFAAW;QACX,wFAAc;QACd,EAAE,OAAO,EAAE,gEAAqB,EAAE,QAAQ,EAAE,qFAA6B,EAAE;QAC3E,iFAAgB;KACjB,YAvBC,0FAAkC,CAAC,EAAE,KAAK,EAAE,kBAAkB,EAAE,CAAC;QACjE,0FAAuB;QACvB,mEAAgB;QAChB,wDAAW;QACX,iEAAgB;QAChB,wEAAqB;QACrB,iEAAgB;QAChB,8EAA6B,EAAE;oIAmBtB,SAAS,mBAhClB,wDAAY;QACZ,+DAAa;QACb,gFAAkB;QAClB,mEAAc,oFAId,0FAAuB;QACvB,mEAAgB;QAChB,wDAAW;QACX,iEAAgB;QAChB,wEAAqB;QACrB,iEAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5C2B;AACA;AACmB;AACZ;AACoB;AACK;AAC6B;AACJ;AACI;AACnB;AACf;AACM;AACtB;AAC6C;AACN;AAC/B;AACA;AACZ;AACA;AACyD;AAC8B;AAC3D;AAC7B;AACyC;AACe;AAC/C;AACR;AAE2C;AACnC;AACoB;AACuC;AACnC;AACrC;AACW;;AA0ErD,MAAM,qBAAqB;;0FAArB,qBAAqB;mHAArB,qBAAqB;wHARrB;QACT,+DAAW;QACX,4EAAiB,EAAE,4EAAiB;QACpC,gEAAW,EAAE,sEAAc;QAC3B,wEAAc;KACf,YA9CC,0DAAY;QACZ,0DAAY;QACZ,wDAAW;QACX,gEAAmB;QACnB,qEAAqB;QACrB,iEAAgB;QAChB,0DAAe;QACf,4DAAiB;QACjB,+DAAoB;QACpB,gEAAkB;QAClB,uEAAc;QACd,iEAAc;QACd,4DAAiB,EAGjB,0DAAY;QACZ,0DAAY;QACZ,wDAAW;QACX,gEAAmB;QAUnB,0DAAe;QACf,4DAAiB;QACjB,+DAAoB;QACpB,qEAAqB;QACrB,iEAAgB;QAChB,gEAAkB;QAElB,uEAAc;QACd,iEAAc;QAEd,4DAAiB;oIAWR,qBAAqB,mBAtE9B,mFAAe;QACf,mFAAe;QACf,wFAAgB;QAChB,qHAAkC;QAClC,iHAAgC;QAChC,qHAAkC;QAClC,kGAAoB;QACpB,gHAAyB;QACzB,2GAAuB;QACvB,yFAAkB;QAClB,mIAA+B;QAC/B,sJAA8B;QAC9B,4FAAiB;QACjB,sJAA8B;QAC9B,wGAAsB;QACtB,uHAA2B;QAC3B,2GAAuB;QACvB,4FAAkB;QAClB,+FAAsB,aAGtB,0DAAY;QACZ,0DAAY;QACZ,wDAAW;QACX,gEAAmB;QACnB,qEAAqB;QACrB,iEAAgB;QAChB,0DAAe;QACf,4DAAiB;QACjB,+DAAoB;QACpB,gEAAkB;QAClB,uEAAc;QACd,iEAAc;QACd,4DAAiB,aAGjB,0DAAY;QACZ,0DAAY;QACZ,wDAAW;QACX,gEAAmB;QACnB,mFAAe;QACf,mFAAe;QACf,wFAAgB;QAChB,qHAAkC;QAClC,iHAAgC;QAChC,qHAAkC;QAClC,kGAAoB;QACpB,2GAAuB;QACvB,gHAAyB;QACzB,0DAAe;QACf,4DAAiB;QACjB,+DAAoB;QACpB,qEAAqB;QACrB,iEAAgB;QAChB,gEAAkB;QAClB,wGAAsB;QACtB,uEAAc;QACd,iEAAc;QACd,+FAAsB;QACtB,4DAAiB;QACjB,2GAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;AClG2C;AAEtB;AAEkF;;;;;;;;;;;;;;ICclI,yEAA8D;IAS3C,qUAAa,oFAAmB,KAAC;IAClD,4DAAkB;;;IAVf,6JAAkC;IAGpB,0DAA2B;IAA3B,2FAA2B;;ADLvC,MAAM,+BAA+B;IA6E1C,YACU,eAAgC,EAChC,WAAwB,EACxB,cAA8B,EAC9B,mBAAwC,EACxC,MAAc;QAJd,oBAAe,GAAf,eAAe,CAAiB;QAChC,gBAAW,GAAX,WAAW,CAAa;QACxB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,wBAAmB,GAAnB,mBAAmB,CAAqB;QACxC,WAAM,GAAN,MAAM,CAAQ;QAjFjB,iBAAY,GAAG,KAAK,CAAC;QACpB,eAAU,GAAG,KAAK,CAAC;QAEX,kBAAa,GAA4B,IAAI,CAAC;QACvD,eAAU,GAAqB,IAAI,4DAAgB,CAAC;YACzD,MAAM,EAAE,IAAI,8DAAkB,CAAC,SAAS,CAAC;SAC1C,CAAC,CAAC;QAEa,eAAU,GAAa;YACrC;gBACE,KAAK,EAAE,qBAAqB;gBAC5B,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,IAAI;gBACd,KAAK,EAAE,GAAG;gBACV,wBAAwB,EAAE,IAAI;gBAC9B,WAAW,EAAE,IAAI;aAClB;YACD;gBACE,KAAK,EAAE,kBAAkB;gBACzB,SAAS,EAAE,IAAI;gBACf,WAAW,EAAC,IAAI;gBAChB,KAAK,EAAE,GAAG;aACX;YACD;gBACE,KAAK,EAAE,KAAK;gBACZ,IAAI,EAAE,IAAI;aAEX;YACD;gBACE,KAAK,EAAE,oBAAoB;gBAC3B,UAAU,EAAE,MAAM;gBAClB,KAAK,EAAE,GAAG;gBACV,QAAQ,EAAE,KAAK;gBACf,MAAM,EAAE,oBAAoB;gBAC5B,YAAY,EAAE;oBACZ,OAAO,EAAE,CAAC,OAAO,CAAC;oBAClB,UAAU,EAAE,YAAY;oBACxB,UAAU,EAAE,IAAI,CAAC,mBAAmB,CAAC,kBAAkB;iBACxD;gBACD,YAAY,EAAE,oIAAyB;aACxC;SACF,CAAC;QAGK,aAAQ,GAAG,KAAK,CAAC;QACjB,gBAAW,GAAgB;YAChC,aAAa,EAAE;gBACb,SAAS,EAAE,IAAI;gBACf,QAAQ,EAAE,IAAI;gBACd,MAAM,EAAE,IAAI;aACb;YACD,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,SAAS;YACnB,YAAY,EAAE,IAAI;YAClB,SAAS,EAAE,EAAE;YACb,mBAAmB,EAAE,IAAI;YACzB,iBAAiB,EAAE,IAAI;YACvB,gBAAgB,EAAE,IAAI;YACtB,aAAa,EAAE;gBACb,UAAU,EAAE,CAAC,MAAW,EAAE,EAAE;oBAC1B,OAAO,IAAI,CAAC,QAAQ,KAAK,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI;gBAChE,CAAC;aACF;SACF,CAAC;QAEK,eAAU,GAAW,EAAE,CAAC;QACxB,iBAAY,GAAW,EAAE,CAAC;QAE1B,wBAAmB,GAAQ,EACjC,CAAC;QAKK,yBAAoB,GAA0B,IAAI,CAAC;IAS1D,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,gBAAgB,CAAC;IAChE,CAAC;IAEM,WAAW,CAAC,MAAsB;QAEvC,2BAA2B;QAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,mBAAmB,CAAC,yBAAyB,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAEzG,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,CAAC,KAAU,EAAE,EAAE;YAC5C,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC5B,CAAC,CAAC;QAEF,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAEhC,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAU;QAC9B,QAAQ,KAAK,CAAC,MAAM,EAAE;YACpB,KAAK,SAAS;gBACZ,2BAA2B;gBAC3B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC,IAA6B,CAAC;gBAChE,MAAM;SACT;IACH,CAAC;IACM,WAAW;QAEhB,IAAI,CAAC,mBAAmB,CAAC,iBAAiB,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IACjG,CAAC;;8GAtHU,+BAA+B;6HAA/B,+BAA+B;kEAwE/B,0DAAa;;;;;QCzF1B,yEAAqC;QAOzB,uJAAS,iBAAa,IAAC;;;;;QAC7B,wEACF;QAAA,4DAAS;QACT,oFACsB;QACxB,4DAAM;QAER,yEAA6B;QACpB,sEAAU;QAAA,4DAAQ;QACzB,qFACsB;QACxB,4DAAM;QACN,6HAWM;;QAxBM,0DAAuC;QAAvC,kIAAuC;QAHvC,8IAAyC;QAa9B,2DAAsB;QAAtB,+EAAsB;QAGJ,0DAAmB;QAAnB,mFAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBa;AACnB;AAOS;;;;;;;;;;;;;;ICNzD,qEAA2E;IAInE,gFACkB;IAGpB,4DAAM;IACN,uEAAM;IAAA,qEAAU;IAAA,gEAAI;IAAA,0EAAe;IAAA,4DAAO;IAE5C,sFACsB;IACxB,4DAAM;;IATgC,0DAA0D;IAA1D,mHAA0D;IAE3D,0DAA2D;IAA3D,oHAA2D;;;IAwBlG,qEAAmC;IAI3B,gFACkB;IAGpB,4DAAM;IACN,uEAAM;IAAA,oEAAS;IAAA,gEAAI;IAAA,oEAAS;IAAA,4DAAO;IAErC,sFACsB;IACxB,4DAAM;;IATgC,0DAAiD;IAAjD,0GAAiD;IAElD,0DAA2D;IAA3D,oHAA2D;;;IASlG,qEAAwE;IAIhE,gFACkB;IAGpB,4DAAM;IACN,uEAAM;IAAA,uEAAY;IAAA,gEAAI;IAAA,sEAAW;IAAA,4DAAO;IAE1C,sFACsB;IACxB,4DAAM;;IATgC,0DAAoD;IAApD,6GAAoD;IAErD,0DAA2D;IAA3D,oHAA2D;;ADrCjG,MAAM,kBAAkB;IAQ7B,YACU,YAAyB,EACzB,iBAAoC,EACpC,WAAwB,EACxB,WAAwB,EACxB,MAAc;QAJd,iBAAY,GAAZ,YAAY,CAAa;QACzB,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,gBAAW,GAAX,WAAW,CAAa;QACxB,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAQ;QAZjB,gBAAW,GAAU,EAAE,CAAC;QACvB,iBAAY,GAAiB,IAAI,8CAAY,EAAE,CAAC;IAaxD,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACxC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBAChG,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACzB,CAAC,EAAE,KAAK,CAAC,EAAE;oBACT,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;gBACxB,CAAC,CAAC,CAAC;gBACH,IAAI,CAAC,WAAW,CAAC,sBAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBACtF,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;gBAC3B,CAAC,EAAE,GAAG,CAAC,EAAE;gBAET,CAAC,CAAC;aACH;iBAAM;gBACL,IAAI,CAAC,QAAQ,GAAG,wEAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7C,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBAClD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC;iBAChD;aACF;QACH,CAAC,CAAC;QAEF,oFAAoF;QACpF,IAAI,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CACzD,6CAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,YAAY,2DAAa,CAAC,CAAC;aAC/C,SAAS,CAAC,GAAG,EAAE;YACd,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACvD,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC7D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;IACP,CAAC;IAED,eAAe;QACb,IAAI,CAAC,YAAY,CAAC,mBAAmB,CAAC,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;;oFA7DU,kBAAkB;gHAAlB,kBAAkB;QCjB/B,yEAAiC;QAG3B,6GAcK;QACL,qEAAI;QAII,gFACkB;QAGpB,4DAAM;QACN,wEAAM;QAAA,8EAAkB;QAAA,4DAAO;QAEjC,qFACsB;QACxB,4DAAM;QAER,+GAcK;QACL,+GAcK;QACL,sEAAI;QAII,iFACkB;QAGpB,4DAAM;QACN,wEAAM;QAAA,gEAAI;QAAA,iEAAI;QAAA,mEAAO;QAAA,4DAAO;QAE9B,qFACsB;QACxB,4DAAM;QAIZ,+EAAqC;;;;;;;;;QAYjC,wEAAM;QACJ,0FAAmF;QACrF,4DAAO;QAET,uEAAK;QACH,kFAAmG;QACrG,4DAAM;;QA/FC,0DAAoE;QAApE,4IAAoE;QAmBjC,0DAAwD;QAAxD,iHAAwD;QAEzD,0DAA2D;QAA3D,oHAA2D;QAS7F,0DAA4B;QAA5B,gGAA4B;QAe5B,0DAAiE;QAAjE,yIAAiE;QAmB9B,0DAAoD;QAApD,6GAAoD;QAErD,0DAA2D;QAA3D,oHAA2D;QAYlF,0DAA8C;QAA9C,uJAA8C;QAYnC,2DAA+B;QAA/B,4FAA+B;QAIzC,0DAA2B;QAA3B,wFAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjGlD;AACA;AAIA;AACA;AAKA;AACA;AAGA;AAEA;AAIA;AAGA;;;;;;;;;;;;;;;;;;;;ICIca,6DAAAA;IAAgDA,qDAAAA;IAA4BA,2DAAAA;;;;;IAA5BA,wDAAAA;IAAAA,iEAAAA;;;;;;IAEhDA,6DAAAA;IAA0DA,qDAAAA;IAA+CA,2DAAAA;;;;;IAA/CA,wDAAAA;IAAAA,iEAAAA;;;;;;;;IAQhEA,6DAAAA;IAIgDA,yDAAAA;MAAAA,4DAAAA;MAAA;MAAA,OAASA,0DAAAA,sBAAT;IAAsB,CAAtB;;;;;IAC9CA,qDAAAA;IACFA,2DAAAA;;;;IAFQA,yDAAAA,CAAAA,0DAAAA;IAHAA,yDAAAA,UAAAA,0DAAAA,mBAAyC,MAAzC,EAAyCA,0DAAAA,gBAAzC,EAAyC,OAAzC,EAAyCA,0DAAAA,kBAAzC;;;;;;;;;;ADZhB,MAAMC,SAAS,GAAGC,mBAAO,CAAC,sBAAD,CAAzB;;AAOM,MAAOC,uBAAP,CAA8B;EA4UlC9E,YACU+E,iBADV,EAEUC,eAFV,EAGUC,WAHV,EAIUC,iBAJV,EAKUC,cALV,EAMUC,MANV,EAOUC,WAPV,EAQUC,WARV,EASUC,mBATV,EAUUC,WAVV,EAUkC;IATxB;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IArVH,kBAAqB,EAArB;IACA,gBAAmB,EAAnB;IAGA,qBAAsB,EAAtB;IACA,eAAwB,EAAxB;IACA,iBAA0B,EAA1B;IACA,gBAAyB,EAAzB;IACA,eAAwB,EAAxB;IACA,WAAoB,EAApB;IACA,yBAA2B,EAA3B;IACA,oBAAuB,CAAvB;IACA,sBAAyB,CAAzB;IACA,qBAAwB,CAAxB;IACA,oBAAuB,CAAvB;IACA,8BAAiC,CAAjC;IACA,gBAAmB,CAAnB;IACA,2BAA6B,EAA7B;IACA,oBAAe,KAAf;IACA,yBAAoB,KAApB;IACA,0BAAqB,KAArB;IACC,kBAAa,KAAb;IACD,qBAAgB,KAAhB;IAGA,0BAAiC,IAAjC;IAGA,kBAAqB,EAArB;IACP,oBAAuC,EAAvC;IACO,oBAAuB,EAAvB;IAES,2BAA8B,EAA9B;IACA,mBAAqB,EAArB;IACT,kBAA+B,IAAIpB,6DAAJ,CAAqB;MACzDtB,MAAM,EAAE,IAAIqB,+DAAJ,CAAuB,SAAvB;IADiD,CAArB,CAA/B;IAGS,kBAAuB;IACrC;IACA;MACEsB,KAAK,EAAE,WADT;MAEEC,UAAU,EAAE,YAFd;MAGEnG,MAAM,EAAE,oBAHV;MAIEoG,SAAS,EAAE,YAJb;MAKEC,QAAQ,EAAE,KALZ;MAMEC,KAAK,EAAE,GANT;MAOEC,WAAW,EAAE,KAAKC,cAAL,CAAoBC,IAApB,CAAyB,IAAzB,CAPf;MAQEC,wBAAwB,EAAE,IAR5B;MASEC,WAAW,EAAE;IATf,CAFqC,EAarC;MACEC,KAAK,EAAE,cADT;MAEEV,KAAK,EAAE,cAFT;MAGEC,UAAU,EAAE,eAHd;MAIEnG,MAAM,EAAE,oBAJV;MAKEqG,QAAQ,EAAE,KALZ;MAMEQ,IAAI,EAAE,KANR;MAOEP,KAAK,EAAE,GAPT;MAQEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAIA,IAAI,EAAEA,IAAV,EAAgB;UACd,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACC,YAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAfH,CAbqC,EA8BrC;MACEb,UAAU,EAAE,sBADd;MAEED,KAAK,EAAE,UAFT;MAGElG,MAAM,EAAE,oBAHV;MAIEiH,SAAS,EAAE,IAJb;MAKEX,KAAK,EAAE;IALT,CA9BqC,EAqCrC;MACEJ,KAAK,EAAE,cADT;MAEEC,UAAU,EAAE,gBAFd;MAGEnG,MAAM,EAAE,oBAHV;MAIEkH,YAAY,EAAE;QACZC,OAAO,EAAE,CAAC,OAAD,CADG;QAEZC,UAAU,EAAE,YAFA;QAGZC,UAAU,EAAE,KAAKrB,mBAAL,CAAyBsB;MAHzB,CAJhB;MASEC,aAAa,EAAC,kDAThB;MAUEjB,KAAK,EAAE,GAVT;MAWED,QAAQ,EAAE,KAXZ;MAYES,YAAY,EAAE5B,oIAAyBA;IAZzC,CArCqC,EAmDrC;MACEgB,KAAK,EAAE,YADT;MAEEC,UAAU,EAAE,cAFd;MAGEnG,MAAM,EAAE,oBAHV;MAIEkH,YAAY,EAAE;QACZC,OAAO,EAAE,CAAC,OAAD,CADG;QAEZC,UAAU,EAAE,YAFA;QAGZC,UAAU,EAAE,KAAKrB,mBAAL,CAAyBsB;MAHzB,CAJhB;MASEC,aAAa,EAAC,gDAThB;MAUElB,QAAQ,EAAE,KAVZ;MAWEC,KAAK,EAAE,GAXT;MAYEQ,YAAY,EAAE5B,oIAAyBA;IAZzC,CAnDqC,EAiErC;MACEgB,KAAK,EAAE,kBADT;MAEEC,UAAU,EAAE,WAFd;MAGEnG,MAAM,EAAE,oBAHV;MAIEkH,YAAY,EAAE;QACZC,OAAO,EAAE,CAAC,OAAD,CADG;QAEZC,UAAU,EAAE,YAFA;QAGZC,UAAU,EAAE,KAAKrB,mBAAL,CAAyBsB;MAHzB,CAJhB;MASEjB,QAAQ,EAAE,KATZ;MAUEC,KAAK,EAAE,GAVT;MAWEQ,YAAY,EAAE5B,oIAAyBA;IAXzC,CAjEqC;IA8ErC;IACA;MACEgB,KAAK,EAAE,WADT;MAEEC,UAAU,EAAE,WAFd;MAGEnG,MAAM,EAAE,sBAHV;MAIEqG,QAAQ,EAAE,KAJZ;MAKEQ,IAAI,EAAE,IALR;MAMEP,KAAK,EAAE,GANT;MAOEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACS,SAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAdH,CA/EqC,EA+FrC;MACEtB,KAAK,EAAE,UADT;MAEEC,UAAU,EAAE,UAFd;MAGEnG,MAAM,EAAE,sBAHV;MAIEqG,QAAQ,EAAE,KAJZ;MAKEQ,IAAI,EAAE,IALR;MAMEP,KAAK,EAAE,GANT;MAOEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACU,QAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAdH,CA/FqC,EA+GrC;MACEvB,KAAK,EAAE,YADT;MAEEC,UAAU,EAAE,OAFd;MAGEnG,MAAM,EAAE,mBAHV;MAIEqG,QAAQ,EAAE,KAJZ;MAKEQ,IAAI,EAAE,IALR;MAMEP,KAAK,EAAE,GANT;MAOEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACW,UAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAdH,CA/GqC,EA+HrC;MACExB,KAAK,EAAE,KADT;MAEEC,UAAU,EAAE,KAFd;MAGEnG,MAAM,EAAC,sBAHT;MAIEqG,QAAQ,EAAE,KAJZ;MAKEQ,IAAI,EAAE,IALR;MAMEP,KAAK,EAAE,GANT;MAOEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACY,GAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAdH,CA/HqC,EA+IrC;MACEzB,KAAK,EAAE,eADT;MAEEC,UAAU,EAAE,cAFd;MAGEnG,MAAM,EAAE,mBAHV;MAIEqG,QAAQ,EAAE,KAJZ;MAKEQ,IAAI,EAAE,IALR;MAMEP,KAAK,EAAE,GANT;MAOEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACa,aAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAdH,CA/IqC,EA+JrC;MACE1B,KAAK,EAAE,cADT;MAEEC,UAAU,EAAE,aAFd;MAGEnG,MAAM,EAAE,mBAHV;MAIEqG,QAAQ,EAAE,KAJZ;MAKEQ,IAAI,EAAE,IALR;MAMEP,KAAK,EAAE,GANT;MAOEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACc,YAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAdH,CA/JqC,EA+KrC;MACE3B,KAAK,EAAE,gBADT;MAEEC,UAAU,EAAE,aAFd;MAGEnG,MAAM,EAAC,oBAHT;MAIEqG,QAAQ,EAAE,KAJZ;MAKEQ,IAAI,EAAE,IALR;MAMEP,KAAK,EAAE,GANT;MAOEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACe,cAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAdH,CA/KqC,EA+LrC;MACE5B,KAAK,EAAE,sBADT;MAEEC,UAAU,EAAE,aAFd;MAGEnG,MAAM,EAAC,sBAHT;MAIEqG,QAAQ,EAAE,KAJZ;MAKEQ,IAAI,EAAE,IALR;MAMEP,KAAK,EAAE,GANT;MAOEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACgB,oBAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAdH,CA/LqC,EA+MrC;MACE7B,KAAK,EAAE,aADT;MAEEC,UAAU,EAAE,cAFd;MAGEnG,MAAM,EAAE,mBAHV;MAIEqG,QAAQ,EAAE,KAJZ;MAKEQ,IAAI,EAAE,IALR;MAMEP,KAAK,EAAE,GANT;MAOEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACiB,WAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAdH,CA/MqC,EA+NrC;MACE9B,KAAK,EAAE,aADT;MAEEC,UAAU,EAAE,aAFd;MAGEE,QAAQ,EAAE,KAHZ;MAIEQ,IAAI,EAAE,IAJR;MAKEP,KAAK,EAAE,GALT;MAMEtG,MAAM,EAAE,oBANV;MAOEkH,YAAY,EAAE;QACZC,OAAO,EAAE,CAAC,OAAD,CADG;QAEZC,UAAU,EAAE,YAFA;QAGZC,UAAU,EAAE,KAAKrB,mBAAL,CAAyBsB;MAHzB,CAPhB;MAYER,YAAY,EAAE5B,oIAAyBA;IAZzC,CA/NqC,EA6OrC;MACEgB,KAAK,EAAE,oBADT;MAEEU,KAAK,EAAE,oBAFT;MAGET,UAAU,EAAE,sBAHd;MAIEnG,MAAM,EAAC,oBAJT;MAKEqG,QAAQ,EAAE,KALZ;MAMEQ,IAAI,EAAE,IANR;MAOEP,KAAK,EAAE,GAPT;MAQEQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;UACZ,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAACkB,kBAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAfH,CA7OqC,CAAvB;IAgQT,uBAA4B,EAA5B;IAEA,gBAAW,KAAX;IAyBA,2BAA2B;MAChCtD,uBAAuB,EAAEA,8HADO;MAEhCG,yBAAyB,EAAEA,oIAFK;MAGhCoD,iBAAiB,EAAEnD,6GAHa;MAIhCE,wBAAwB,EAAEA,iIAAwBA;IAJlB,CAA3B;EAuBN;;EA9CMkD,gBAAgB;IAErB,KAAKC,WAAL,GAAmB;MACjBC,aAAa,EAAE;QACbpB,SAAS,EAAE,IADE;QAEbqB,QAAQ,EAAE;MAFG,CADE;MAKjBC,WAAW,EAAC,KAAKvC,mBAAL,CAAyBwC,qBAAzB,EALK;MAMjBC,UAAU,EAAE,IANK;MAOjBC,QAAQ,EAAE,SAPO;MAQjBC,YAAY,EAAE,IARG;MASjBC,SAAS,EAAE,EATM;MAUjBC,mBAAmB,EAAE,IAVJ;MAWjBC,iBAAiB,EAAE,IAXF;MAYjBC,gBAAgB,EAAE,IAZD;MAajBC,aAAa,EAAE;QACb,YAAaC,MAAD,IAAgB;UAC1B,OAAO,KAAKC,QAAL,KAAkB,IAAlB,IAA0BD,MAAM,CAAC3F,IAAP,CAAY6F,QAAZ,KAAyB,IAA1D;QACD;MAHY;IAbE,CAAnB;EAmBD;;EA2BDC,QAAQ;IACN,KAAKC,YAAL,GAAoB,KAAKrD,mBAAL,CAAyBsD,gBAA7C;IACA,KAAKnB,gBAAL;IACA,KAAKrC,WAAL,CAAiByD,WAAjB,GACCC,IADD,CACMnI,IAAI,IAAG;MACX,KAAKoI,QAAL,GAAgBpI,IAAhB;;MACA,IAAIA,IAAI,CAACqI,qBAAL,KAA+B,IAA/B,IAAuCrI,IAAI,CAACqI,qBAAL,KAA+B/F,SAA1E,EAAqF;QACnF,KAAK+B,WAAL,CAAiBiE,WAAjB,CAA6B;UAAEC,OAAO,EAAE;QAAX,CAA7B;MACD;;MACD,KAAKF,qBAAL,GAA6BrI,IAAI,CAACqI,qBAAlC;MACA,KAAKG,UAAL,GAAkB,CAACxI,IAAI,CAACyI,UAAL,CAAgB,eAAhB,CAAD,IAAqC,CAACzI,IAAI,CAAC0I,OAA7D;MACA,IAAIC,UAAU,GAAG3I,IAAI,CAAC4I,aAAL,EAAjB;MACA,KAAKC,aAAL,GAAsBF,UAAD,GAAeA,UAAU,CAACE,aAA1B,GAA0C,KAA/D;;MACA,IAAIF,UAAU,CAACG,iBAAf,EAAkC;QAChC,KAAKlE,WAAL,CAAiBmE,YAAjB,CAA8BJ,UAAU,CAACK,cAAzC,EAAyDC,SAAzD,CAAmEC,GAAG,IAAG;UACvE,KAAKC,YAAL,GAAoBD,GAAG,CAACE,qBAAJ,CAA0BzK,MAA1B,CAAiC0K,CAAC,IAAIA,CAAC,CAACC,YAAF,CAAeC,UAAf,IAA6BF,CAAC,CAACG,QAAF,KAAe1F,0EAAlF,CAApB;UACA,KAAKO,WAAL,CAAiBiE,WAAjB,CAA6B;YAAEC,OAAO,EAAE;UAAX,CAA7B;QACD,CAHD,EAGGmB,GAAG,IAAG;UACP,KAAKnF,cAAL,CAAoBvD,KAApB,CAA0B,2CAA1B;UACA,KAAKqD,WAAL,CAAiBiE,WAAjB,CAA6B;YAAEC,OAAO,EAAE;UAAX,CAA7B;QACD,CAND;MAOD;;MACD,KAAKoB,eAAL,GAAuB,KAAKC,aAAL,CAAmB,SAAnB,CAAvB;MACA,KAAKzF,iBAAL,CAAuB0F,aAAvB;IACD,CArBD;IAuBA,KAAKzF,eAAL,CAAqB0F,WAArB,GAAmC3B,IAAnC,CAAwC4B,IAAI,IAAI,KAAKC,QAAL,GAAgBD,IAAhE;IACA,KAAK3F,eAAL,CAAqB6F,SAArB,GAAiC9B,IAAjC,CAAsC+B,MAAM,IAAI,KAAKA,MAAL,GAAcA,MAA9D;EAED;;EAEMC,WAAW,CAACvC,MAAD,EAAuB;IAEvC,KAAKwC,OAAL,GAAexC,MAAM,CAACyC,GAAtB;;IACA,KAAKD,OAAL,CAAaE,eAAb,GAAgCC,KAAD,IAAe;MAC5C,KAAKC,aAAL,CAAmBD,KAAnB;IACD,CAFD;;IAIA,KAAKH,OAAL,CAAaK,aAAb,CAA2B,KAAKd,eAAhC;IACA,KAAKS,OAAL,CAAaM,gBAAb;;IAEAC,MAAM,CAACC,QAAP,GAAkB,MAAK;MACrB,KAAKR,OAAL,CAAaM,gBAAb;IACD,CAFD;EAGD;;EAEOF,aAAa,CAACD,KAAD,EAAW;IAC9B,QAAOA,KAAK,CAACM,MAAb;MACE,KAAK,QAAL;QACE,KAAKC,YAAL,GAAoB,IAApB;QACA,KAAKC,kBAAL,GAA0BR,KAAK,CAACtI,IAAhC;QACA;;MAEF,KAAK,YAAL;QACE,KAAK+I,iBAAL,GAAyB,IAAzB;QACA,KAAKD,kBAAL,GAA0BR,KAAK,CAACtI,IAAhC;QACA;;MAEF,KAAK,UAAL;QACE,KAAKgJ,kBAAL,GAA0B,IAA1B;QACA,KAAKF,kBAAL,GAA0BR,KAAK,CAACtI,IAAhC;QACA;;MAEF,KAAK,SAAL;QACE,KAAKiJ,OAAL,CAAaX,KAAK,CAACtI,IAAnB;QACA;;MAEF,KAAK,SAAL;QACE,KAAKkJ,OAAL,CAAaZ,KAAK,CAACtI,IAAnB;QACA;IAtBJ;EAwBD;;EAEDmJ,eAAe,CAACxD,MAAD,EAAY;IACzB;IACA,OAAOA,MAAM,CAACyD,KAAd;EACD;;EAEMC,WAAW,CAACC,MAAD,EAAY;IAC5B,MAAMF,KAAK,GAAGE,MAAM,CAACC,MAAP,CAAcH,KAA5B;;IAEA,QAAQA,KAAR;MACE,KAAK,SAAL;QACE,KAAKI,mBAAL,GAA2B,KAAKC,OAAhC;QACA,KAAK/B,eAAL,GAAuB,KAAKC,aAAL,CAAmByB,KAAnB,CAAvB;QACA;;MAEF,KAAK,WAAL;QACE,KAAKI,mBAAL,GAA2B,KAAKE,SAAhC;QACA,KAAKhC,eAAL,GAAuB,KAAKC,aAAL,CAAmByB,KAAnB,CAAvB;QACA;;MAEF,KAAK,UAAL;QACE,KAAKI,mBAAL,GAA2B,KAAKG,QAAhC;QACA,KAAKjC,eAAL,GAAuB,KAAKC,aAAL,CAAmByB,KAAnB,CAAvB;QACA;;MAEF,KAAK,SAAL;QACE,KAAKI,mBAAL,GAA2B,KAAKI,OAAhC;QACA,KAAKlC,eAAL,GAAuB,KAAKC,aAAL,CAAmByB,KAAnB,CAAvB;QACA;;MAEF,KAAK,qBAAL;QACE,KAAKI,mBAAL,GAA2B,KAAKK,iBAAhC;QACA,KAAKnC,eAAL,GAAuB,KAAKC,aAAL,CAAmByB,KAAnB,CAAvB;QACA;;MAEF;QACE,KAAKI,mBAAL,GAA2B,KAAKM,GAAhC;QACA,KAAKpC,eAAL,GAAuB,KAAKC,aAAL,CAAmB,KAAnB,CAAvB;IA5BJ;;IA+BA,KAAKzF,iBAAL,CAAuB0F,aAAvB,GAlC4B,CAkCY;;IACxC,KAAKO,OAAL,CAAaK,aAAb,CAA2B,KAAKd,eAAhC;IACA,KAAKS,OAAL,CAAaM,gBAAb;EACD;;EAEOd,aAAa,CAACoC,IAAD,EAAuF;IAC1G,MAAMC,UAAU,GAAG,KAAK7D,QAAL,CAAcQ,aAAd,EAAnB;IACA,IAAIC,aAAa,GAAG,KAApB;IACA,IAAIU,UAAU,GAAG,KAAjB;IACA,IAAIT,iBAAiB,GAAG,KAAxB;;IACA,IAAImD,UAAJ,EAAgB;MACdpD,aAAa,GAAGoD,UAAU,CAACpD,aAA3B;MACAU,UAAU,GAAG0C,UAAU,CAAC1C,UAAxB;MACAT,iBAAiB,GAAGmD,UAAU,CAACnD,iBAA/B;IACD;;IAED,IAAIoD,IAAI,GAAa,CAAC,GAAG,KAAKC,UAAT,CAArB;IAEA,IAAIC,YAAY,GAAG;MACjBvH,KAAK,EAAE,iBADU;MAEjBU,KAAK,EAAE,WAFU;MAGjBT,UAAU,EAAE,YAHK;MAIjBE,QAAQ,EAAE,KAJO;MAKjBQ,IAAI,EAAE,IALW;MAMjBP,KAAK,EAAE,GANU;MAOjBtG,MAAM,EAAE,oBAPS;MAQjBkH,YAAY,EAAE;QACZC,OAAO,EAAE,CAAC,OAAD,CADG;QAEZC,UAAU,EAAE,YAFA;QAGZC,UAAU,EAAE,KAAKrB,mBAAL,CAAyBsB;MAHzB,CARG;MAajBR,YAAY,EAAE5B,oIAAyBA;IAbtB,CAAnB;IAgBA,IAAIwI,cAAc,GAAG;MACnBxH,KAAK,EAAE,eADY;MAEnBU,KAAK,EAAE,aAFY;MAGnBT,UAAU,EAAE,cAHO;MAInBnG,MAAM,EAAC,oBAJY;MAKnBqG,QAAQ,EAAE,KALS;MAMnBQ,IAAI,EAAE,IANa;MAOnBP,KAAK,EAAE,GAPY;MAQnBQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAIA,IAAI,EAAEA,IAAV,EAAgB;UACd,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAAC4G,aAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAfkB,CAArB;IAkBA,IAAIC,YAAY,GAAG;MACjB1H,KAAK,EAAE,cADU;MAEjBU,KAAK,EAAE,cAFU;MAGjBT,UAAU,EAAE,QAHK;MAIjBnG,MAAM,EAAC,oBAJU;MAKjBqG,QAAQ,EAAE,KALO;MAMjBQ,IAAI,EAAE,IANW;MAOjBP,KAAK,EAAE;IAPU,CAAnB;IAUA,IAAIuH,YAAY,GAAG;MACjB3H,KAAK,EAAE,WADU;MAEjBU,KAAK,EAAE,WAFU;MAGjBT,UAAU,EAAE,WAHK;MAIjBnG,MAAM,EAAC,sBAJU;MAKjBqG,QAAQ,EAAE,KALO;MAMjBQ,IAAI,EAAE,IANW;MAOjBP,KAAK,EAAE,GAPU;MAQjBQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAIA,IAAI,EAAEA,IAAV,EAAgB;UACd,MAAMyD,UAAU,GAAGzD,IAAI,CAACA,IAAxB;UACA,OAAOyD,UAAU,CAAC+G,SAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAfgB,CAAnB;IAkBA,IAAIC,UAAU,GAAG;MACf7H,KAAK,EAAE,iBADQ;MAEfU,KAAK,EAAE,iBAFQ;MAGfT,UAAU,EAAE,aAHG;MAIfE,QAAQ,EAAE,KAJK;MAKfQ,IAAI,EAAE,KALS;MAMfP,KAAK,EAAE,GANQ;MAOftG,MAAM,EAAE,oBAPO;MAQfkH,YAAY,EAAE;QACZC,OAAO,EAAE,CAAC,OAAD,CADG;QAEZC,UAAU,EAAE,YAFA;QAGZC,UAAU,EAAE,KAAKrB,mBAAL,CAAyBsB;MAHzB,CARC;MAafR,YAAY,EAAE5B,oIAAyBA;IAbxB,CAAjB;IAgBA,IAAI8I,SAAS,GAAG;MACd1H,KAAK,EAAE,EADO;MAEdJ,KAAK,EAAE,cAFO;MAGdC,UAAU,EAAE,QAHE;MAIdnG,MAAM,EAAE,mBAJM;MAKdiO,cAAc,EAAE,KAAKxB;IALP,CAAhB;IAQA,IAAIyB,WAAW,GAAG;MAChBhI,KAAK,EAAE,UADS;MAEhBU,KAAK,EAAE,UAFS;MAGhBT,UAAU,EAAE,WAHI;MAIhBnG,MAAM,EAAC,oBAJS;MAKhBqG,QAAQ,EAAE,KALM;MAMhBQ,IAAI,EAAE,KANU;MAOhBP,KAAK,EAAE,GAPS;MAQhBQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAIA,IAAI,EAAEA,IAAV,EAAgB;UACd,MAAMyD,UAAU,GAAezD,IAAI,CAACA,IAApC;UACA,OAAOyD,UAAU,CAACoH,QAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAfe,CAAlB;IAkBA,IAAIC,gBAAgB,GAAG;MACrBlI,KAAK,EAAE,kBADc;MAErBU,KAAK,EAAE,kBAFc;MAGrBT,UAAU,EAAE,eAHS;MAIrBnG,MAAM,EAAE,mBAJa;MAKrBqG,QAAQ,EAAE,KALW;MAMrBQ,IAAI,EAAE,KANe;MAOrBP,KAAK,EAAE,GAPc;MAQrBQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAIA,IAAI,EAAEA,IAAV,EAAgB;UACd,MAAMyD,UAAU,GAAezD,IAAI,CAACA,IAApC;UACA,OAAOyD,UAAU,CAACqH,gBAAX,GAA8B,KAA9B,GAAsC,IAA7C;QACD;;QAED,OAAO,EAAP;MACD;IAfoB,CAAvB;IAkBA,IAAIC,cAAc,GAAG;MACnBnI,KAAK,EAAE,yBADY;MAEnBU,KAAK,EAAE,yBAFY;MAGnBT,UAAU,EAAE,sBAHO;MAInBE,QAAQ,EAAE,KAJS;MAKnBQ,IAAI,EAAE,IALa;MAMnBP,KAAK,EAAE,GANY;MAOnBtG,MAAM,EAAE,oBAPW;MAQnBkH,YAAY,EAAE;QACZC,OAAO,EAAE,CAAC,OAAD,CADG;QAEZC,UAAU,EAAE,YAFA;QAGZC,UAAU,EAAE,KAAKrB,mBAAL,CAAyBsB;MAHzB,CARK;MAanBR,YAAY,EAAE5B,oIAAyBA;IAbpB,CAArB;IAgBA,IAAIoJ,cAAc,GAAG;MACnBpI,KAAK,EAAE,aADY;MAEnBU,KAAK,EAAE,YAFY;MAGnBT,UAAU,EAAE,cAHO;MAInBnG,MAAM,EAAC,oBAJY;MAKnBqG,QAAQ,EAAE,KALS;MAMnBQ,IAAI,EAAE,KANa;MAOnBP,KAAK,EAAE,GAPY;MAQnBQ,YAAY,EAAGxD,IAAD,IAAc;QAC1B,IAAIA,IAAI,EAAEA,IAAN,IAAcA,IAAI,CAACA,IAAL,CAAUiL,WAA5B,EAAyC;UACvC,MAAMxH,UAAU,GAAezD,IAAI,CAACA,IAApC;UACA,OAAOyD,UAAU,CAACwH,WAAlB;QACD;;QAED,OAAO,EAAP;MACD;IAfkB,CAArB;;IAkBA,QAAOlB,IAAP;MACE,KAAK,SAAL;QACE,IAAG,CAAC,KAAKxD,UAAT,EAAoB;UAClB0D,IAAI,CAACiB,IAAL,CAAU;YACR5H,KAAK,EAAE,SADC;YAERE,YAAY,EAAEnC,8HAFN;YAGR2B,KAAK,EAAE,EAHC;YAIRO,IAAI,EAAE;UAJE,CAAV;QAMD;;QACD,IAAG,CAAC,KAAKgD,UAAN,IAAoBK,aAAvB,EAAqC;UACnCqD,IAAI,CAACiB,IAAL,CACE;YACE5H,KAAK,EAAE,SADT;YAEEE,YAAY,EAAE7B,iIAFhB;YAGEqB,KAAK,EAAE,EAHT;YAIEO,IAAI,EAAE;UAJR,CADF;QAQD;;QACD;;MAEF,KAAK,WAAL;QACE,IAAGqD,aAAH,EAAiB;UACfqD,IAAI,CAACiB,IAAL,CACER,SADF,EAEEE,WAFF,EAGEE,gBAHF;;UAMA,IAAG,CAAC,KAAKvE,UAAT,EAAoB;YAClB0D,IAAI,CAACiB,IAAL,CACE;cACE5H,KAAK,EAAE,SADT;cAEEE,YAAY,EAAE7B,iIAFhB;cAGEqB,KAAK,EAAE,EAHT;cAIEO,IAAI,EAAE;YAJR,CADF;UAQD;QACF,CAjBD,MAkBI;UACF0G,IAAI,CAACiB,IAAL,CACET,UADF,EAEEO,cAFF,EAGED,cAHF,EAIEZ,YAJF,EAKEC,cALF,EAMEE,YANF,EAOEC,YAPF;;UAUA,IAAG,CAAC,KAAKhE,UAAT,EAAoB;YAClB0D,IAAI,CAACiB,IAAL,CAAU;cACR5H,KAAK,EAAE,SADC;cAERE,YAAY,EAAE/B,6GAFN;cAGRuB,KAAK,EAAE,GAHC;cAIRO,IAAI,EAAE;YAJE,CAAV;UAMD;QACF;;QAED;;MAEF,KAAK,UAAL;QACE0G,IAAI,CAACiB,IAAL,CACET,UADF,EAEEO,cAFF,EAGED,cAHF,EAIE;UACEnI,KAAK,EAAE,gBADT;UAEEU,KAAK,EAAE,gBAFT;UAGET,UAAU,EAAE,YAHd;UAIEnG,MAAM,EAAC,oBAJT;UAKEqG,QAAQ,EAAE,KALZ;UAMEQ,IAAI,EAAE,KANR;UAOEP,KAAK,EAAE,GAPT;UAQEQ,YAAY,EAAGxD,IAAD,IAAc;YAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;cACZ,MAAMyD,UAAU,GAAezD,IAAI,CAACA,IAApC;cACA,OAAOyD,UAAU,CAACe,cAAlB;YACD;;YAED,OAAO,EAAP;UACD;QAfH,CAJF,EAqBE2F,YArBF,EAsBEC,cAtBF,EAuBEE,YAvBF,EAwBEC,YAxBF;;QA2BA,IAAG,CAAC,KAAKhE,UAAT,EAAoB;UAClB0D,IAAI,CAACiB,IAAL,CAAU;YACR5H,KAAK,EAAE,SADC;YAERE,YAAY,EAAEhC,oIAFN;YAGRwB,KAAK,EAAE,EAHC;YAIRO,IAAI,EAAE;UAJE,CAAV;QAMD;;QAED;;MAEF,KAAK,KAAL;QACE,IAAGsD,iBAAH,EAAqB;UACnBoD,IAAI,CAACiB,IAAL,CACE;YACEtI,KAAK,EAAE,gBADT;YAEEU,KAAK,EAAE,gBAFT;YAGET,UAAU,EAAE,kBAHd;YAIEnG,MAAM,EAAC,oBAJT;YAKEqG,QAAQ,EAAE,KALZ;YAMEQ,IAAI,EAAE,KANR;YAOEP,KAAK,EAAE,GAPT;YAQEQ,YAAY,EAAGxD,IAAD,IAAc;cAC1B,IAAGA,IAAI,EAAEA,IAAT,EAAc;gBACZ,MAAMyD,UAAU,GAAezD,IAAI,CAACA,IAApC;gBACA,OAAOyD,UAAU,CAACe,cAAlB;cACD;;cAED,OAAO,EAAP;YACD;UAfH,CADF,EAkBEkG,SAlBF;QAoBD;;QACD,IAAG9D,aAAH,EAAiB;UACfqD,IAAI,CAACiB,IAAL,CACER,SADF,EAEEE,WAFF;QAID,CALD,MAMI;UACFX,IAAI,CAACiB,IAAL,CACET,UADF,EAEEO,cAFF,EAGED,cAHF,EAIEZ,YAJF,EAKEC,cALF,EAMEE,YANF,EAOEC,YAPF;QASD;;QAED;;MAEF,KAAK,SAAL;MACA,KAAK,qBAAL;QACE,IAAG3D,aAAH,EAAiB;UACfqD,IAAI,CAACiB,IAAL,CACEN,WADF,EAEEE,gBAFF,EAGE;YACElI,KAAK,EAAE,YADT;YAEEC,UAAU,EAAE,aAFd;YAGEnG,MAAM,EAAE,oBAHV;YAIEkH,YAAY,EAAE;cACZC,OAAO,EAAE,CAAC,OAAD,CADG;cAEZC,UAAU,EAAE,YAFA;cAGZC,UAAU,EAAE,KAAKrB,mBAAL,CAAyBsB;YAHzB,CAJhB;YASEjB,QAAQ,EAAE,KATZ;YAUEC,KAAK,EAAE,GAVT;YAWEQ,YAAY,EAAE5B,oIAAyBA;UAXzC,CAHF;QAiBD;;QAED;IAxKJ;;IA2KA,IAAG0F,UAAH,EAAc;MACZ2C,IAAI,GAAGA,IAAI,CAACvN,MAAL,CAAYyO,CAAC,IAAIA,CAAC,CAAC7H,KAAF,KAAY,cAA7B,CAAP;IACD;;IAED,IAAGsD,aAAH,EAAiB;MACfqD,IAAI,GAAGA,IAAI,CAACvN,MAAL,CAAYyO,CAAC,IAAIA,CAAC,CAAC7H,KAAF,KAAY,oBAA7B,CAAP;IACD;;IAED,OAAO2G,IAAP;EACD;;EAEDmB,WAAW,CAACC,OAAD,EAAuB;IAChC,MAAMC,WAAW,GAAGD,OAAO,CAACC,WAAR,CAAoBC,YAAxC;;IACA,IAAID,WAAJ,EAAiB;MACf,KAAKlJ,WAAL,CAAiBiE,WAAjB,CAA6B;QAAEC,OAAO,EAAE;MAAX,CAA7B;MACA,KAAKkF,uBAAL,CAA6BF,WAA7B,EACGpF,IADH,CACQ,MAAK;QAET,KAAKsD,mBAAL,GAA2B,KAAKC,OAAhC;;QACA,IAAI,KAAKgC,mBAAL,KAA6B,QAAjC,EAA2C;UACzC;UACA,KAAKC,UAAL,GAAkB,KAAKhJ,mBAAL,CAAyBiJ,yBAAzB,CAAmD,KAAKnC,mBAAL,CAAyBoC,MAA5E,EAAoF,CAApF,EAAuF,EAAvF,EAA2F,GAA3F,CAAlB;QACD,CAHD,MAGO;UACL;UACA,KAAKF,UAAL,GAAkB,KAAKhJ,mBAAL,CAAyBiJ,yBAAzB,CAAmD,KAAKnC,mBAAL,CAAyBoC,MAA5E,EAAoF,CAApF,EAAuF,CAAvF,EAA0F,EAA1F,CAAlB;QACD;;QAGH,KAAK1J,iBAAL,CAAuB0F,aAAvB,GAZW,CAY6B;MACzC,CAdD;IAeD,CAjBD,MAiBO;MACL,KAAKxF,WAAL,CAAiBiE,WAAjB,CAA6B;QAAEC,OAAO,EAAE;MAAX,CAA7B;IACD;EACF;;EAEDuF,qBAAqB,CAACC,SAAD,EAAiBC,UAAjB,EAAgC;IACnD,IAAID,SAAS,KAAK,IAAd,IAAsBA,SAAS,KAAKzL,SAAxC,EAAmD;MACjD,OAAO,CAAP;IACD;;IACD,IAAI0L,UAAU,KAAK,IAAf,IAAuBA,UAAU,KAAK1L,SAA1C,EAAqD;MACnD,OAAO,CAAC,CAAR;IACD;;IACD,MAAM2L,KAAK,GAAG,IAAIC,IAAJ,CAASH,SAAT,EAAoBI,OAApB,EAAd;IACA,MAAMC,KAAK,GAAG,IAAIF,IAAJ,CAASF,UAAT,EAAqBG,OAArB,EAAd;;IAEA,IAAIF,KAAK,GAAGG,KAAZ,EAAmB;MACjB,OAAO,CAAC,CAAR;IACD;;IACD,IAAIH,KAAK,GAAGG,KAAZ,EAAmB;MACjB,OAAO,CAAP;IACD;;IACD,OAAO,CAAP;EACD;;EAEDC,sBAAsB,CAACN,SAAD,EAAiBC,UAAjB,EAAgC;IACpD,IAAID,SAAS,KAAK,IAAd,IAAsBA,SAAS,KAAKzL,SAAxC,EAAmD;MACjD,OAAO,CAAP;IACD;;IACD,IAAI0L,UAAU,KAAK,IAAf,IAAuBA,UAAU,KAAK1L,SAA1C,EAAqD;MACnD,OAAO,CAAC,CAAR;IACD;;IACD,MAAM2L,KAAK,GAAG,IAAIC,IAAJ,CAASH,SAAT,EAAoBI,OAApB,EAAd;IACA,MAAMC,KAAK,GAAG,IAAIF,IAAJ,CAASF,UAAT,EAAqBG,OAArB,EAAd;;IAEA,IAAIF,KAAK,GAAGG,KAAZ,EAAmB;MACjB,OAAO,CAAC,CAAR;IACD;;IACD,IAAIH,KAAK,GAAGG,KAAZ,EAAmB;MACjB,OAAO,CAAP;IACD;;IACD,OAAO,CAAP;EACD;;EAEDE,uBAAuB,CAACC,CAAD,EAAWC,CAAX,EAAmB;IACxC,IAAID,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAKjM,SAAxB,EAAmC;MACjC,OAAO,CAAP;IACD;;IACD,IAAIkM,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAKlM,SAAxB,EAAmC;MACjC,OAAO,CAAC,CAAR;IACD;;IACD,OAAOiM,CAAC,CAACE,aAAF,CAAgBD,CAAhB,CAAP;EACD;;EAEDE,wBAAwB,CAACH,CAAD,EAAWC,CAAX,EAAmB;IACzC,IAAID,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAKjM,SAAxB,EAAmC;MACjC,OAAO,CAAP;IACD;;IACD,IAAIkM,CAAC,KAAK,IAAN,IAAcA,CAAC,KAAKlM,SAAxB,EAAmC;MACjC,OAAO,CAAC,CAAR;IACD;;IACD,OAAOkM,CAAC,CAACC,aAAF,CAAgBF,CAAhB,CAAP;EACD;;EAEKd,uBAAuB,CAACF,WAAD,EAA0B;IAAA;;IAAA;MACrD,MAAMvN,IAAI,SAAS,KAAI,CAACyE,WAAL,CAAiByD,WAAjB,EAAnB;MACA,IAAIyG,cAAc,GAAG3O,IAAI,CAAC4I,aAAL,EAArB;;MAEA,IAAI+F,cAAc,IAAIA,cAAc,CAAC9F,aAArC,EAAoD;QAClD;QACA,MAAM+F,sBAAsB,GAAGrB,WAAW,CAAC5O,MAAZ,CAAmByO,CAAC,IAAIA,CAAC,CAACyB,YAAF,KAAmB7O,IAAI,CAACqI,qBAAhD,CAA/B;QAEA,KAAI,CAACqD,OAAL,GAAekD,sBAAsB,CAACjQ,MAAvB,CAA8B0K,CAAC,IAAIA,CAAC,CAACkD,YAAF,KAAmB,SAAtD,GAAkEuC,IAAlE,CAAuE,CAACP,CAAD,EAAIC,CAAJ,KAAS;UAC7F,OAAO,KAAI,CAACH,sBAAL,CAA4BE,CAAC,CAACQ,gBAA9B,EAAgDP,CAAC,CAACO,gBAAlD,CAAP;QACD,CAFc,CAAf;QAIA,KAAI,CAACnD,QAAL,GAAgBgD,sBAAsB,CAACjQ,MAAvB,CAA8BqQ,GAAG,IAAIA,GAAG,CAACzC,YAAJ,KAAqB,UAA1D,GAAuEuC,IAAvE,CAA4E,CAACP,CAAD,EAAIC,CAAJ,KAAS;UACnG,OAAO,KAAI,CAACV,qBAAL,CAA2BS,CAAC,CAACQ,gBAA7B,EAA+CP,CAAC,CAACO,gBAAjD,CAAP;QACC,CAFa,CAAhB;QAIA,KAAI,CAAClD,OAAL,GAAe+C,sBAAsB,CAACjQ,MAAvB,CAA8BsQ,GAAG,IAAIA,GAAG,CAAC1C,YAAJ,KAAqB,SAA1D,GAAsEuC,IAAtE,CAA2E,CAACP,CAAD,EAAIC,CAAJ,KAAS;UACjG,OAAO,KAAI,CAACF,uBAAL,CAA6BC,CAAC,CAACW,SAA/B,EAA0CV,CAAC,CAACU,SAA5C,CAAP;QACD,CAFc,CAAf;QAIA,KAAI,CAACvD,SAAL,GAAiB4B,WAAW,CAAC5O,MAAZ,CAAmBwQ,GAAG,IAAIA,GAAG,CAACN,YAAJ,KAAqB7O,IAAI,CAACqI,qBAA1B,IAAmD8G,GAAG,CAAC5C,YAAJ,KAAqB,UAAxE,IAAsF4C,GAAG,CAAC5C,YAAJ,KAAqB,SAArI,CAAjB;QACA,KAAI,CAACT,iBAAL,GAAyByB,WAAW,CAAC5O,MAAZ,CAAmByQ,GAAG,IAAIA,GAAG,CAAC7C,YAAJ,KAAqB,SAArB,IAAkC6C,GAAG,CAACP,YAAJ,KAAqB7O,IAAI,CAACqP,qBAAtF,CAAzB;QACA,KAAI,CAACtD,GAAL,GAAWwB,WAAW,CAAC5O,MAAZ,CAAmB2Q,GAAG,IAAIA,GAAG,CAAC/C,YAAJ,KAAqB,UAA/C,CAAX;MACD,CAnBD,MAmBO,IAAIoC,cAAc,IAAIA,cAAc,CAAC7F,iBAArC,EAAwD;QAE7D,MAAMyG,mBAAmB,GAAGhC,WAAW,CAAC5O,MAAZ,CAAmByO,CAAC,IAAI,KAAI,CAACjE,YAAL,CAAkBqG,IAAlB,CAAuBC,CAAC,IAAIA,CAAC,CAACzG,cAAF,KAAqBoE,CAAC,CAACsC,sBAAnD,KAA8E,IAAtG,CAA5B;QAEA,KAAI,CAAChE,OAAL,GAAe6D,mBAAmB,CAAC5Q,MAApB,CAA2BgR,GAAG,IAAIA,GAAG,CAACpD,YAAJ,KAAqB,SAAvD,GAAmEuC,IAAnE,CAAwE,CAACP,CAAD,EAAIC,CAAJ,KAAS;UAC9F,OAAO,KAAI,CAACH,sBAAL,CAA4BE,CAAC,CAACQ,gBAA9B,EAAgDP,CAAC,CAACO,gBAAlD,CAAP;QACD,CAFc,CAAf;QAIA,KAAI,CAAClD,OAAL,GAAe0D,mBAAmB,CAAC5Q,MAApB,CAA2BgR,GAAG,IAAIA,GAAG,CAACpD,YAAJ,KAAqB,SAAvD,GAAmEuC,IAAnE,CAAwE,CAACP,CAAD,EAAIC,CAAJ,KAAS;UAC5F,OAAO,KAAI,CAACF,uBAAL,CAA6BC,CAAC,CAACW,SAA/B,EAA0CV,CAAC,CAACU,SAA5C,CAAP;QACH,CAFc,CAAf;QAIA,KAAI,CAACtD,QAAL,GAAgB2D,mBAAmB,CAAC5Q,MAApB,CAA2BiR,GAAG,IAAIA,GAAG,CAACrD,YAAJ,KAAqB,UAAvD,GAAoEuC,IAApE,CAAyE,CAACP,CAAD,EAAIC,CAAJ,KAAS;UAChG,OAAO,KAAI,CAACH,sBAAL,CAA4BE,CAAC,CAACQ,gBAA9B,EAAgDP,CAAC,CAACO,gBAAlD,CAAP;QACD,CAFe,CAAhB;QAIA,KAAI,CAACpD,SAAL,GAAiB4D,mBAAmB,CAAC5Q,MAApB,CAA2BkR,GAAG,IAAIA,GAAG,CAACtD,YAAJ,KAAqB,WAArB,IAAoC,CAAC,KAAI,CAACX,QAAL,CAAckE,IAAd,CAAmBC,GAAG,IAAIA,GAAG,CAACC,SAAJ,KAAkBH,GAAG,CAACG,SAAhD,CAAvE,GAAoIlB,IAApI,CAAyI,CAACP,CAAD,EAAIC,CAAJ,KAAS;UACjK,OAAO,KAAI,CAACF,uBAAL,CAA6BC,CAAC,CAACW,SAA/B,EAA0CV,CAAC,CAACU,SAA5C,CAAP;QACD,CAFgB,CAAjB;MAID,CApBM,MAqBF;QACH,KAAI,CAACxD,OAAL,GAAe6B,WAAW,CAAC5O,MAAZ,CAAmBgR,GAAG,IAAIA,GAAG,CAACpD,YAAJ,KAAqB,SAA/C,GAA2DuC,IAA3D,CAAgE,CAACP,CAAD,EAAIC,CAAJ,KAAS;UACtF,OAAO,KAAI,CAACH,sBAAL,CAA4BE,CAAC,CAACQ,gBAA9B,EAAgDP,CAAC,CAACO,gBAAlD,CAAP;QACD,CAFc,CAAf;QAIA,KAAI,CAAClD,OAAL,GAAe0B,WAAW,CAAC5O,MAAZ,CAAmBsR,GAAG,IAAIA,GAAG,CAAC1D,YAAJ,KAAqB,SAA/C,GAA2DuC,IAA3D,CAAgE,CAACP,CAAD,EAAIC,CAAJ,KAAS;UACtF,OAAO,KAAI,CAACF,uBAAL,CAA6BC,CAAC,CAACW,SAA/B,EAA0CV,CAAC,CAACU,SAA5C,CAAP;QACD,CAFc,CAAf;QAIA,KAAI,CAACtD,QAAL,GAAgB2B,WAAW,CAAC5O,MAAZ,CAAmBiR,GAAG,IAAIA,GAAG,CAACrD,YAAJ,KAAqB,UAA/C,GAA4DuC,IAA5D,CAAiE,CAACP,CAAD,EAAIC,CAAJ,KAAS;UACxF,OAAO,KAAI,CAACH,sBAAL,CAA4BE,CAAC,CAACQ,gBAA9B,EAAgDP,CAAC,CAACO,gBAAlD,CAAP;QACD,CAFe,CAAhB;QAIA,KAAI,CAACpD,SAAL,GAAiB4B,WAAW,CAAC5O,MAAZ,CAAmBkR,GAAG,IAAIA,GAAG,CAACtD,YAAJ,KAAqB,WAArB,IAAoC,CAAC,KAAI,CAACX,QAAL,CAAckE,IAAd,CAAmBC,GAAG,IAAIA,GAAG,CAACC,SAAJ,KAAkBH,GAAG,CAACG,SAAhD,CAA/D,GAA4HlB,IAA5H,CAAiI,CAACP,CAAD,EAAIC,CAAJ,KAAS;UACzJ,OAAO,KAAI,CAACF,uBAAL,CAA6BC,CAAC,CAACW,SAA/B,EAA0CV,CAAC,CAACU,SAA5C,CAAP;QACD,CAFgB,CAAjB;QAIA,KAAI,CAACnD,GAAL,GAAWwB,WAAW,CACrB5O,MADU,CACH2Q,GAAG,IAAIA,GAAG,CAAC/C,YAAJ,KAAqB,UADzB,EAEV5N,MAFU,CAEH2Q,GAAG,IAAG;UACZ,IAAGA,GAAG,CAAC/C,YAAJ,KAAqB,WAAxB,EAAoC;YAClC,MAAM2D,oBAAoB,GAAG,KAAI,CAACtE,QAAL,CAAckE,IAAd,CAAmBC,GAAG,IAAIA,GAAG,CAACC,SAAJ,KAAkBV,GAAG,CAACU,SAAhD,CAA7B;;YACA,OAAO,CAACE,oBAAR;UACD;;UACD,OAAO,IAAP;QACD,CARU,GASTpB,IATS,CASJ,CAACP,CAAD,EAAIC,CAAJ,KAAS;UACd,OAAO,KAAI,CAACF,uBAAL,CAA6BC,CAAC,CAACW,SAA/B,EAA0CV,CAAC,CAACU,SAA5C,CAAP;QACD,CAXU,CAAX;MAYD;;MAED,KAAI,CAACiB,YAAL,GAAoB,KAAI,CAACzE,OAAL,CAAamC,MAAjC;MACA,KAAI,CAACuC,cAAL,GAAsB,KAAI,CAACzE,SAAL,CAAekC,MAArC;MACA,KAAI,CAACwC,aAAL,GAAqB,KAAI,CAACzE,QAAL,CAAciC,MAAnC;MACA,KAAI,CAACyC,YAAL,GAAoB,KAAI,CAACzE,OAAL,CAAagC,MAAjC;MACA,KAAI,CAAC0C,sBAAL,GAA8B,KAAI,CAACzE,iBAAL,CAAuB+B,MAArD;MACA,KAAI,CAAC2C,QAAL,GAAgB,KAAI,CAACzE,GAAL,CAAS8B,MAAzB;IAhFqD;EAiFtD;;EAED4C,YAAY;IACV,KAAK3F,YAAL,GAAoB,KAApB;EACD;;EACD4F,aAAa;IACX,KAAKrM,WAAL,CAAiBiE,WAAjB,CAA6B;MAAEC,OAAO,EAAE;IAAX,CAA7B;IACA,KAAKuC,YAAL,GAAoB,KAApB;IACA,KAAKxG,iBAAL,CAAuBqM,gBAAvB,CAAwC,KAAK5F,kBAAL,CAAwB6F,YAAhE,EAA8E3H,SAA9E,CAAwF;MACtFtJ,IAAI,EAAE,MAAK;QACT,KAAK0E,WAAL,CAAiBiE,WAAjB,CAA6B;UAAEC,OAAO,EAAE;QAAX,CAA7B;QACA,KAAKhE,cAAL,CAAoBhE,OAApB,CAA4B,wBAA5B;QACA,MAAMsL,OAAO,GAAG,KAAK0B,WAAL,CAAiBiC,IAAjB,CAAsBnG,CAAC,IAAIA,CAAC,CAACuH,YAAF,KAAmB,KAAK7F,kBAAL,CAAwB6F,YAAtE,CAAhB;;QACA,IAAI/E,OAAJ,EAAa;UACXA,OAAO,CAAC3J,MAAR,GAAiB,SAAjB;UACA2J,OAAO,CAACU,YAAR,GAAuB,SAAvB;QACD;;QAED,KAAKkB,uBAAL,CAA6B,KAAKF,WAAlC,EACCpF,IADD,CACO,MAAK;UACV,KAAKsD,mBAAL,GAA2B,KAAKC,OAAhC;UACA,KAAKvH,iBAAL,CAAuB0F,aAAvB;QACD,CAJD;MAKD,CAfqF;MAgBtF7I,KAAK,EAAG6P,CAAD,IAAM;QACX,KAAKxM,WAAL,CAAiBiE,WAAjB,CAA6B;UAAEC,OAAO,EAAE;QAAX,CAA7B;QACA,KAAKhE,cAAL,CAAoBvD,KAApB,CAA0B,2BAA1B;MACD;IAnBqF,CAAxF;EAqBD;;EAED8P,WAAW,CAACD,CAAD,EAAO;IAChB,KAAKJ,YAAL;EACD;;EAEDM,WAAW;IACT,KAAK/F,iBAAL,GAAyB,KAAzB;EACD;;EAEDgG,YAAY;IACV,KAAK3M,WAAL,CAAiBiE,WAAjB,CAA6B;MAAEC,OAAO,EAAE;IAAX,CAA7B;IACA,KAAKyC,iBAAL,GAAyB,KAAzB;IAEA,MAAM;MAAE3C;IAAF,IAA4B,KAAKD,QAAvC;IAEA,KAAK9D,iBAAL,CAAuB2M,yBAAvB,CAAiD5I,qBAAjD,EAAwE,KAAK0C,kBAAL,CAAwB6F,YAAhG,EAA8G3H,SAA9G,CAAwHC,GAAG,IAAG;MAC5H,KAAK7E,WAAL,CAAiBiE,WAAjB,CAA6B;QAAEC,OAAO,EAAE;MAAX,CAA7B;MACA,KAAK/D,MAAL,CAAY0M,QAAZ,CAAqB,CAAC,8BAAD,EAAiChI,GAAG,CAAC0H,YAArC,CAArB;IACD,CAHD,EAGGlH,GAAG,IAAG;MACP,KAAKrF,WAAL,CAAiBiE,WAAjB,CAA6B;QAAEC,OAAO,EAAE;MAAX,CAA7B;MACA,KAAKhE,cAAL,CAAoBvD,KAApB,CAA0B,sCAA1B;IACD,CAND;IAOA;;;;;;;;;;;;;;;;;EAiBD;;EAEDmQ,gBAAgB,CAACN,CAAD,EAAO;IACrB,KAAKE,WAAL;EACD;;EAEDK,WAAW,IACV;;EAEDC,eAAe;IACb,KAAKpG,kBAAL,GAA0B,KAA1B;IAEA,KAAKxG,WAAL,CAAiByD,WAAjB,GACCC,IADD,CACMnI,IAAI,IAAG;MAEX,KAAKsE,iBAAL,CAAuBgN,oBAAvB,CAA4CtR,IAAI,CAACqI,qBAAjD,EAAwE,KAAK0C,kBAAL,CAAwB6F,YAAhG,EACCrR,IADD,CACOoE,4CAAK,EADZ,EAECsF,SAFD,CAGE;QACEtJ,IAAI,EAAE,MAAK;UACT,KAAK4E,cAAL,CAAoBhE,OAApB,CAA4B,gCAA5B;UACA,KAAKwK,kBAAL,CAAwBwB,YAAxB,GAAuC,SAAvC;UACA,MAAMZ,SAAS,GAAG,KAAK4B,WAAL,CAAiB5O,MAAjB,CAAwB0K,CAAC,IAAIA,CAAC,CAACkD,YAAF,KAAmB,WAAhD,CAAlB;UACA,MAAMgF,mBAAmB,GAAe5F,SAAS,CAAC6D,IAAV,CAAgBpC,CAAD,IAAmBA,CAAC,CAAC4C,SAAF,KAAgB,KAAKjF,kBAAL,CAAwBiF,SAA1E,CAAxC;UACAuB,mBAAmB,CAACC,SAApB,GAAgC,CAAhC,CALS,CAK0B;;UAEnC,KAAK/D,uBAAL,CAA6B,KAAKF,WAAlC,EACCpF,IADD,CACO,MAAK;YACV,KAAKsD,mBAAL,GAA2B,KAAKG,QAAhC;YACA,KAAKzH,iBAAL,CAAuB0F,aAAvB,GAFU,CAE8B;UACzC,CAJD;QAKD,CAbH;QAcE7I,KAAK,EAAE,MAAM,KAAKuD,cAAL,CAAoBvD,KAApB,CAA0B,+BAA1B;MAdf,CAHF;IAoBD,CAvBD,EAwBCyQ,OAxBD,CAwBU,MAAM,KAAKpN,WAAL,CAAiBiE,WAAjB,CAA6B;MAAEC,OAAO,EAAE;IAAX,CAA7B,CAxBhB;EAyBD;;EAEDmJ,cAAc;IACZ,KAAKzG,kBAAL,GAA0B,KAA1B;EACD;;EAED9F,cAAc,CAACyC,MAAD,EAAsC;IAClD,IAAI+J,cAAc,GAAG,KAAKhN,mBAAL,CAAyBiN,eAAzB,CAAyChK,MAAM,CAAC3F,IAAP,CAAYiN,SAArD,CAArB;IACA,OAAOyC,cAAP;EACD;;EAEDxG,OAAO,CAACzF,UAAD,EAAuB;IAC5B,KAAKhB,WAAL,CAAiBmN,qBAAjB,CAAuC,KAAKxJ,qBAA5C,EAAmE3C,UAAU,CAACkL,YAA9E,EACCrR,IADD,CACOoE,4CAAK,EADZ,EAECsF,SAFD,CAEW;MACTtJ,IAAI,EAAEmS,GAAG,IAAG;QACV9N,SAAS,CAAC+N,MAAV,CAAiBD,GAAjB,EAAsB,CAACpM,UAAU,CAACsM,QAAX,GAAsBtM,UAAU,CAACsM,QAAjC,GAA4C,YAA7C,IAA6D,MAAnF;MACD,CAHQ;MAIThR,KAAK,EAAE6P,CAAC,IAAG;QACT,KAAKtM,cAAL,CAAoBvD,KAApB,CAA0B,8BAA1B,EAA0D,kCAAkC6P,CAA5F;MACD;IANQ,CAFX;EAUD;;EAED3F,OAAO,CAACxF,UAAD,EAAuB;IAC5B,MAAMuM,OAAO,GAAG,KAAKlG,GAAL,CAASyD,IAAT,CAAcnG,CAAC,IAAIA,CAAC,CAACuH,YAAF,KAAmBlL,UAAU,CAACkL,YAAjD,CAAhB;;IACA,IAAIqB,OAAJ,EAAa;MACXtH,MAAM,CAACuH,IAAP,CAAY,oCAAoCxM,UAAU,CAACkL,YAAY,IAAIuB,kBAAkB,CAACF,OAAO,CAACG,OAAT,CAAiB,EAA9G,EAAkH,QAAlH;IACD;EACF;;EAEMC,WAAW;IAEhB,KAAK1N,mBAAL,CAAyB2N,iBAAzB,CAA2C,aAA3C,EAA0D,QAA1D,EAAoE,KAAKvL,WAAzE,EAAsF,KAAtF;EACD;;AA7lCiC;;;mBAAvB7C,yBAAuBH,gEAAAA,CAAAA,6DAAAA,GAAAA,gEAAAA,CAAAA,uEAAAA,GAAAA,gEAAAA,CAAAA,kEAAAA,GAAAA,gEAAAA,CAAAA,2EAAAA,GAAAA,gEAAAA,CAAAA,sEAAAA,GAAAA,gEAAAA,CAAAA,oDAAAA,GAAAA,gEAAAA,CAAAA,gEAAAA,GAAAA,gEAAAA,CAAAA,gEAAAA,GAAAA,gEAAAA,CAAAA,0FAAAA,GAAAA,gEAAAA,CAAAA,gEAAAA;AAAA;;;QAAvBG;EAAuBqO;EAAAC;IAAA;iEAwUvBnP,2DAAaA,EAAA;;;;;;;;;;;;;;;;;;;MC1W1BU,6DAAAA,kBAAqC,CAArC,EAAqC,kBAArC,EAAqC,CAArC;;;;;;;;;MAWEA,6DAAAA;MACEA,wDAAAA;MACFA,2DAAAA;MAIFA,6DAAAA,mBAA+D,EAA/D,EAA+D,KAA/D,EAA+D,CAA/D,EAA+D,EAA/D,EAA+D,IAA/D,EAA+D,CAA/D;MAEqFA,qDAAAA;MAAWA,2DAAAA;MAC5FA,6DAAAA,gBAAmD,EAAnD,EAAmD,KAAnD,EAAmD,CAAnD,EAAmD,EAAnD,EAAmD,KAAnD,EAAmD,CAAnD,EAAmD,EAAnD,EAAmD,KAAnD,EAAmD,CAAnD,EAAmD,EAAnD,EAAmD,OAAnD,EAAmD,CAAnD;MAI2BA,qDAAAA;MAAKA,2DAAAA;MACxBA,6DAAAA;MAAiCA,yDAAAA;QAAA,OAAU0O,uBAAV;MAA6B,CAA7B;MAC/B1O,6DAAAA;MAAwBA,qDAAAA;MAA0BA,2DAAAA;MAClDA,6DAAAA;MAA2BA,qDAAAA;MAA2EA,2DAAAA;MACtGA,yDAAAA;MACAA,6DAAAA;MAAwBA,qDAAAA;MAA0BA,2DAAAA;MAClDA,yDAAAA;MACAA,6DAAAA;MAA0BA,qDAAAA;MAAkBA,2DAAAA;MAGlDA,wDAAAA;MAEFA,2DAAAA;MACAA,6DAAAA;MACEA,yDAAAA;MAOAA,wDAAAA;MAEFA,2DAAAA;MAGJA,6DAAAA,gBAA6B,EAA7B,EAA6B,OAA7B;MACSA,qDAAAA;MAAUA,2DAAAA;MACjBA,wDAAAA;MAEFA,2DAAAA;MAIAA,6DAAAA,gBAAwC,EAAxC,EAAwC,iBAAxC,EAAwC,EAAxC;MASmBA,yDAAAA;QAAA,OAAa0O,uBAAb;MAAgC,CAAhC;MAAkC1O,2DAAAA;MAGvDA,6DAAAA;MAEIA,yDAAAA;QAAA,OAAU0O,uBAAV;MAA6B,CAA7B;;MAOA1O,6DAAAA,gBAAkB,EAAlB,EAAkB,KAAlB,EAAkB,EAAlB;MACkCA,qDAAAA;MAAgDA,2DAAAA;MAC9EA,6DAAAA;MAA8BA,qDAAAA;MAAmEA,2DAAAA;MACjGA,6DAAAA,gBAAoC,EAApC,EAAoC,QAApC,EAAoC,EAApC;MAMQA,yDAAAA;QAAA,OAAS0O,mBAAT;MAAwB,CAAxB;;;;MAA0B1O,qDAAAA;MAAMA,2DAAAA;MACpCA,6DAAAA;MAKIA,yDAAAA;QAAA,OAAS0O,kBAAT;MAAuB,CAAvB;;;;;MAAyB1O,qDAAAA;MAAMA,2DAAAA;MAI/CA,6DAAAA;MACUA,yDAAAA;QAAA,OAAU0O,oBAAV;MAA0B,CAA1B;;MAMR1O,6DAAAA,gBAAkB,EAAlB,EAAkB,KAAlB,EAAkB,EAAlB;MACgCA,qDAAAA;MAAiDA,2DAAAA;MAC/EA,6DAAAA,gBAAoC,EAApC,EAAoC,QAApC,EAAoC,EAApC;MAMUA,yDAAAA;QAAA,OAAS0O,qBAAT;MAA0B,CAA1B;;;;MACN1O,qDAAAA;MACFA,2DAAAA;MACAA,6DAAAA;MAKQA,yDAAAA;QAAA,OAAS0O,oBAAT;MAAyB,CAAzB;;;;;MACN1O,qDAAAA;MACFA,2DAAAA;MAINA,6DAAAA;MACUA,yDAAAA;QAAA,OAAU0O,4BAAV;MAAkC,CAAlC;;MAMR1O,6DAAAA,gBAAkB,EAAlB,EAAkB,KAAlB,EAAkB,EAAlB;MACgCA,qDAAAA;MAA+CA,2DAAAA;MAC7EA,6DAAAA,gBAAoC,EAApC,EAAoC,QAApC,EAAoC,EAApC;MAMUA,yDAAAA;QAAA,OAAS0O,kBAAT;MAAuB,CAAvB;;;;MACN1O,qDAAAA;MACFA,2DAAAA;MACAA,6DAAAA;MAKQA,yDAAAA;QAAA,OAAS0O,iBAAT;MAAsB,CAAtB;;;;;MACN1O,qDAAAA;MACFA,2DAAAA;;;;MAvJcA,wDAAAA;MAAAA,yDAAAA,gBAAAA,0DAAAA,sBAA8C,QAA9C,EAA8C,eAA9C,EAA8C,iBAA9C,EAA8CA,0DAAAA,oBAA9C,EAA8C,iBAA9C,EAA8CA,0DAAAA,iBAA9C,EAA8C,qBAA9C,EAA8CA,0DAAAA,gBAA9C,EAA8C,kBAA9C,EAA8CA,0DAAAA,sBAA9C,EAA8C,cAA9C,EAA8CA,0DAAAA,sBAA9C,EAA8C,gBAA9C,EAA8C,IAA9C,EAA8C,wBAA9C,EAA8CA,0DAAAA,oBAA9C,EAA8C,4BAA9C,EAA8CA,0DAAAA,gBAA9C;MAmBVA,wDAAAA;MAAAA,yDAAAA;MAM4BA,wDAAAA;MAAAA,iEAAAA;MACGA,wDAAAA;MAAAA,iEAAAA;MAClBA,wDAAAA;MAAAA,yDAAAA;MACeA,wDAAAA;MAAAA,iEAAAA;MACfA,wDAAAA;MAAAA,yDAAAA;MACiBA,wDAAAA;MAAAA,iEAAAA;MAOvBA,wDAAAA;MAAAA,yDAAAA;MAcQA,wDAAAA;MAAAA,yDAAAA,wBAAsB,kBAAtB,EAAsB0O,gBAAtB;MAMlB1O,wDAAAA;MAAAA,yDAAAA,YAAAA,8DAAAA;MAGcA,wDAAAA;MAAAA,yDAAAA,iCAA2B,YAA3B,EAA2B0O,uBAA3B,EAA2B,YAA3B,EAA2BA,mBAA3B,EAA2B,SAA3B,EAA2BA,uBAA3B,EAA2B,cAA3B,EAA2B,UAA3B,EAA2B,aAA3B,EAA2B,IAA3B;MAUjB1O,wDAAAA;MAAAA,yDAAAA,6BAA2B,eAA3B,EAA2B,IAA3B,EAA2B,WAA3B,EAA2B0O,gBAA3B,EAA2B,YAA3B,EAA2B,mBAA3B,EAA2B,gBAA3B,EAA2B,IAA3B,EAA2B,WAA3B,EAA2B1O,0DAAAA,kBAA3B;MAaYA,wDAAAA;MAAAA,yDAAAA,UAAAA,0DAAAA,qBAAyC,MAAzC,EAAyCA,0DAAAA,kBAAzC,EAAyC,OAAzC,EAAyCA,0DAAAA,mBAAzC;MASAA,wDAAAA;MAAAA,yDAAAA,CAAAA,0DAAAA;MAHAA,yDAAAA,UAAAA,0DAAAA,qBAAyC,MAAzC,EAAyCA,0DAAAA,kBAAzC,EAAyC,OAAzC,EAAyCA,0DAAAA,oBAAzC;MAQNA,wDAAAA;MAAAA,yDAAAA,+BAA6B,eAA7B,EAA6B,IAA7B,EAA6B,WAA7B,EAA6B0O,sBAA7B,EAA6B,YAA7B,EAA6B,mBAA7B,EAA6B,gBAA7B,EAA6B,IAA7B,EAA6B,WAA7B,EAA6B1O,0DAAAA,mBAA7B;MAWIA,wDAAAA;MAAAA,yDAAAA,UAAAA,0DAAAA,sBAAyC,MAAzC,EAAyCA,0DAAAA,mBAAzC,EAAyC,OAAzC,EAAyCA,0DAAAA,oBAAzC;MAWAA,wDAAAA;MAAAA,yDAAAA,CAAAA,0DAAAA;MAHAA,yDAAAA,UAAAA,0DAAAA,sBAAyC,MAAzC,EAAyCA,0DAAAA,mBAAzC,EAAyC,OAAzC,EAAyCA,0DAAAA,oBAAzC;MAUJA,wDAAAA;MAAAA,yDAAAA,uBAAqB,eAArB,EAAqB,IAArB,EAAqB,WAArB,EAAqB0O,qBAArB,EAAqB,YAArB,EAAqB,mBAArB,EAAqB,gBAArB,EAAqB,IAArB,EAAqB,WAArB,EAAqB1O,0DAAAA,mBAArB;MAWIA,wDAAAA;MAAAA,yDAAAA,UAAAA,0DAAAA,sBAAyC,MAAzC,EAAyCA,0DAAAA,mBAAzC,EAAyC,OAAzC,EAAyCA,0DAAAA,oBAAzC;MAWAA,wDAAAA;MAAAA,yDAAAA,CAAAA,0DAAAA;MAHAA,yDAAAA,UAAAA,0DAAAA,sBAAyC,MAAzC,EAAyCA,0DAAAA,mBAAzC,EAAyC,OAAzC,EAAyCA,0DAAAA,oBAAzC;;;;;;;;;;;;;;;;;;;;;;;;;;;AClJwF;AAClC;AACmB;;;;;;;;ICIjF,6EAAuD;IAAA,uDAAgB;IAAA,4DAAS;;;IAA9C,gFAAoB;IAAC,0DAAgB;IAAhB,gFAAgB;;;IAOvE,6EAA6D;IAAA,uDAAgB;IAAA,4DAAS;;;IAA9C,gFAAoB;IAAC,0DAAgB;IAAhB,gFAAgB;;ADA5E,MAAM,yBAAyB;IAkBpC,YACU,iBAAoC,EACpC,eAAgC,EAChC,cAA8B;QAF9B,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,oBAAe,GAAf,eAAe,CAAiB;QAChC,mBAAc,GAAd,cAAc,CAAgB;QApB9B,gBAAW,GAAG,IAAI,uDAAY,EAAgB,CAAC;QAClD,eAAU,GAAW,EAAE,CAAC;QACxB,aAAQ,GAAW,EAAE,CAAC;QAGtB,kBAAa,GAAU,EAAE,CAAC;QAC1B,kBAAa,GAAW,EAAE,CAAC;QAC3B,mBAAc,GAAG,EAAE,CAAC;QACpB,OAAE,GAAc,IAAI,qDAAS,CAAC;YACnC,KAAK,EAAE,IAAI,uDAAW,CAAC,IAAI,EAAE,CAAC,gEAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,QAAQ,EAAE,IAAI,uDAAW,CAAC,IAAI,CAAC;YAC/B,KAAK,EAAE,IAAI,uDAAW,CAAC,EAAE,CAAC;YAC1B,QAAQ,EAAE,IAAI,uDAAW,CAAC,EAAE,CAAC;YAC7B,QAAQ,EAAE,IAAI,uDAAW,CAAC,cAAc,CAAC;YACzC,cAAc,EAAE,IAAI,uDAAW,CAAC,EAAE,CAAC;YACnC,YAAY,EAAE,IAAI,uDAAW,CAAC,EAAE,CAAC;SAClC,CAAC;IAMF,CAAC;IACD,WAAW;IAEX,CAAC;IACD,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC;QACtE,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC;IACxE,CAAC;IACM,YAAY;QACjB,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE,EAAE;YACtC,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;YACxB,4BAA4B;YAC5B,OAAO;SACR;QACD,4BAA4B;QAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAC/F,CAAC;IACM,WAAW,CAAC,MAAW;QAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAChC,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;IACxC,CAAC;IAEM,WAAW;QAChB,IAAI,MAAM,GAAiB;YACzB,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,IAAI;YACjB,UAAU,EAAE,IAAI;YAChB,UAAU,EAAE,IAAI;YAChB,qBAAqB,EAAE,IAAI;YAC3B,mBAAmB,EAAE,IAAI;YACzB,gBAAgB,EAAE,IAAI;YACtB,cAAc,EAAE,IAAI;YACpB,WAAW,EAAE,IAAI;SAClB,CAAC;QAEF,IAAI,cAAc,GAAS,IAAI,CAAC;QAChC,IAAI,YAAY,GAAS,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,EAAE;YACxE,cAAc,GAAG,gGAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC;SAC3E;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE;YACpE,YAAY,GAAG,gGAAmB,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;SACrF;QAED,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK;YAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;QACtG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;YAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAC9G,oCAAoC;QACpC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK;YAAE,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC;QACtG,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK;YAAE,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,CAAC;QAC9G,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,KAAK,IAAI,cAAc,EAAE;YAC9E,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;YACvC,MAAM,CAAC,YAAY,GAAG,YAAY,CAAC;SACpC;aAAM,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE;YAClC,MAAM,CAAC,mBAAmB,GAAG,cAAc,CAAC;YAC5C,MAAM,CAAC,iBAAiB,GAAG,YAAY,CAAC;SACzC;QACD,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC,MAAM,CAAC,cAAc,IAAI,CAAC,MAAM,CAAC,YAAY;YAC9G,CAAC,MAAM,CAAC,mBAAmB,IAAI,CAAC,MAAM,CAAC,iBAAiB,EAAE;YAC1D,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;YACjD,OAAO;SACR;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAChC,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAClB,CAAC;;kGA1FU,yBAAyB;uHAAzB,yBAAyB;QCbtC,wEAAmF;QAAA,sEAAW;QAAA,4DAAK;QACnG,0EAAuB;QAEA,kEAAO;QAAA,4DAAQ;QAClC,4EAAgF;QAAhD,kJAAU,uBAAmB,SAAE,kBAAc,IAAE;QAC7E,4EAAgD;QAAA,yEAAc;QAAA,4DAAS;QACvE,2HAAgF;QAClF,4DAAS;QAEX,uEAAK;QACiB,oEAAQ;QAAA,4DAAQ;QACpC,6EAAkE;QAA/B,0JAAU,uBAAmB,IAAC;QAC/D,6EAAgD;QAAA,2EAAe;QAAA,4DAAS;QACxE,6HAAsF;QACxF,4DAAS;QAEX,uEAAK;QACgB,+EAAmB;QAAA,4DAAQ;QAC9C,uEAAyF;QAC3F,4DAAM;QACN,uEAAK;QACmB,uEAAW;QAAA,4DAAQ;QACzC,wEAA8E;QAChF,4DAAM;QACN,2EAA8C;QACtB,2EAAe;QAAA,4DAAQ;QAC7C,uEAAK;QAED,2EAAc;QAAA,6EACiG;QAA1F,yJAAU,uBAAmB,IAAC;QADrC,4DACiG;QAGnH,uEAAK;QAED,4EAAe;QAAA,6EAC6F;QAAtF,yJAAU,uBAAmB,IAAC;QADrC,4DAC6F;QAIlH,2EAA8C;QAChB,uEAAW;QAAA,4DAAQ;QAC/C,uEAAK;QACuE,yJAAU,uBAAmB,IAAC;QAAxG,4DAC2B;QAE7B,uEAAK;QACmE,yJAAU,uBAAmB,IAAC;QAApG,4DAC2B;QAKjC,2EAA+C;QAGG,kJAAS,iBAAa,IAAC;;;;;QACrE,oEACF;QAAA,4DAAS;QACT,8EAEwE;QAAxB,kJAAS,iBAAa,IAAC;;;;;QACrE,mEACF;QAAA,4DAAS;QAEX,kEACM;;QAhEA,0DAAgB;QAAhB,6EAAgB;QAIK,0DAAiB;QAAjB,0EAAiB;QACf,0DAAS;QAAT,+EAAS;QAMX,0DAAiB;QAAjB,0EAAiB;QAChB,0DAAgB;QAAhB,sFAAgB;QA0ClC,2DAAuC;QAAvC,oIAAuC;QAFC,+IAAyC;QAOjF,0DAAuC;QAAvC,oIAAuC;QAFC,+IAAyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1DtB;AAC+C;AAQrD;AAIlC;AACoD;;;;;;;;;;;;ICb/E,0EAAmK;IAAA,uDAAyD;IAAA,4DAAM;;;IAA/D,0DAAyD;IAAzD,sIAAyD;;;IAC5N,0EAAiK;IAAA,uDAA2F;IAAA,4DAAM;;;IAAjG,0DAA2F;IAA3F,wKAA2F;;;IAC5P,0EAAoE;IAAA,oHAAyD;IAAA,4DAAM;;;IACnI,0EAA0E;IAAA,iGAAsC;IAAA,4DAAM;;;IACtH,0EAAiE;IAAA,sGAA2C;IAAA,4DAAM;;;IAClH,0EAA4D;IAAA,mIAAwE;IAAA,4DAAM;;;;IA0BtI,6EAO+B;IAAvB,2SAAS,8EAAY,KAAC;;;;;IAC5B,wEACF;IAAA,4DAAS;;IAHD,kIAAuC;IAHvC,6IAAyC;;;IAS/C,6EAAuD;IAAA,uDAAgB;IAAA,4DAAS;;;IAA9C,iFAAoB;IAAC,0DAAgB;IAAhB,iFAAgB;;;;IAQzE,6EAOkC;IAA1B,kTAAS,iFAAe,KAAC;;;;;IAC/B,2EACF;IAAA,4DAAS;;IAHD,kIAAuC;IAHvC,6IAAyC;;;IAS/C,6EAAoD;IAAA,uDAAK;IAAA,4DAAS;;;IAA1B,wEAAW;IAAC,0DAAK;IAAL,sEAAK;;;;IAf/D,0EAA+J;IAErI,oEAAS;IAAA,4DAAQ;IACvC,kIASS;IACT,6EAC6C;IAArC,0SAAU,2FAAyB,KAAC;IAC1C,iIAAkE;IACpE,4DAAS;IACT,qFAAoH;IACtH,4DAAM;;;IAdK,0DAAc;IAAd,iFAAc;IAWC,0DAAgB;IAAhB,yFAAgB;;;IAsC5C,oEAAmC;IAAA,uHAA4D;IAAA,4DAAI;;ADpFrG,MAAM,SAAS,GAAG,mBAAO,CAAC,sBAAY,CAAC,CAAC;AAMjC,MAAM,uBAAuB;IAsBlC,YACU,eAAgC,EAChC,WAAwB,EACxB,iBAAoC,EACpC,cAA8B,EAC9B,WAAwB,EAAS,cAAiC;QAJlE,oBAAe,GAAf,eAAe,CAAiB;QAChC,gBAAW,GAAX,WAAW,CAAa;QACxB,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,mBAAc,GAAd,cAAc,CAAgB;QAC9B,gBAAW,GAAX,WAAW,CAAa;QAAS,mBAAc,GAAd,cAAc,CAAmB;QApBrE,uBAAkB,GAAkB,IAAI,CAAC;QACzC,2BAAsB,GAAY,IAAI,CAAC;QACvC,kBAAa,GAAQ,aAAa,CAAC;QACnC,qBAAgB,GAAY,IAAI,CAAC;QAGjC,OAAE,GAAc,IAAI,qDAAS,CAAC;YACnC,YAAY,EAAE,IAAI,uDAAW,CAAS,IAAI,CAAC;YAC3C,UAAU,EAAE,IAAI,uDAAW,CAAS,IAAI,CAAC;YACzC,KAAK,EAAE,IAAI,uDAAW,CAAS,IAAI,EAAE,CAAC,gEAAoB,CAAC,CAAC,CAAC,CAAC,CAAC;YAC/D,QAAQ,EAAE,IAAI,uDAAW,CAAS,IAAI,CAAC;YACvC,YAAY,EAAE,IAAI,uDAAW,CAAgB,KAAK,EAAE,+DAAmB,CAAC;SACzE,CAAC;IAUE,CAAC;IAEL,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;YACnB,uDAAuD;QACzD,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,2BAA2B,EAAE,2BAA2B,CAAC,CAAC;QACtF,CAAC,CAAC;QACF,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YAC1C,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;YAClB,IAAI,IAAI,CAAC,UAAU;gBAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC9C,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,0BAA0B,EAAE,0BAA0B,CAAC,CAAC;QACpF,CAAC,CAAC;QACF,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACxC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAChD,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAEjD,IAAI,mBAAmB,GAAG,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,qBAAqB;mBACrH,CAAC,CAAC,WAAW,IAAI,eAAe,CAAC,CAAC;YACvC,IAAI,iBAAiB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,CAAC;YAEhF,IAAI,CAAC,aAAa,GAAG,wEAAW,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;YACpE,IAAI,CAAC,SAAS,GAAG,iBAAiB,CAAC;YACnC,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,CAAC,CAAC;IACJ,CAAC;IAEM,uBAAuB;QAC5B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;QACtC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,YAAY,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC;QAEtE,IAAI,EAAE,EAAE;YACN,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC,aAAa,CAAC;SAC5C;QACD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEM,aAAa;QAClB,IAAI,CAAC,kBAAkB,GAAG,EAAE,CAAC;QAC7B,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;QACtC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEM,UAAU;QACf,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;QACnC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACvB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACzB,CAAC;IAEM,WAAW,CAAC,MAAW;QAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC;QAChC,IAAI,MAAM;YAAE,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAClD,MAAM,EAAE,YAAY,EAAE,UAAU,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;QAC7D,MAAM,MAAM,GAAQ;YAClB,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;YAC9C,SAAS,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;YAC9B,YAAY,EAAE,YAAY,CAAC,KAAK,IAAI,IAAI;YACxC,UAAU,EAAE,UAAU,CAAC,KAAK,IAAI,IAAI;YACpC,sBAAsB,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;YAClF,QAAQ,EAAE,IAAI;SACf,CAAC;QACF,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QACnC,IAAI,CAAC,0FAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,CAAC,0FAAgB,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE;YAChF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;aAAM;YACL,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,EAAE;gBAC5E,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;gBACxB,OAAO;aACR;iBACI,IAAI,SAAS,CAAC,OAAO,EAAE,GAAG,OAAO,CAAC,OAAO,EAAE,EAAE;gBAChD,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;gBACxB,OAAO;aACR;iBACI;gBACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAC9B;SACF;QAED,IAAI,CAAC,iBAAiB,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;YAClH,mDAAmD;YACnD,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;YAC9B,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;QACtC,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,IAAI,CAAC,aAAa,GAAG,OAAO,CAAC;YAC7B,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;YACpC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,qCAAqC,EAAE,sCAAsC,CAAC,CAAC;QAC3G,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,KAAK,CAAC,CAAM;QACjB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE;YAClB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;YAC5D,OAAO;SACR;QAED,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC;QAEnC,IAAI,YAAY,GAAW,IAAI,CAAC;QAChC,IAAI,UAAU,GAAW,IAAI,CAAC;QAC9B,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,EAAE;YACpE,YAAY,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,KAAK,CAAC;SAClD;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,EAAE;YAChE,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC;SAC9C;QAED,MAAM,MAAM,GAAmB;YAC7B,cAAc,EAAE,IAAI,CAAC,UAAU,CAAC,cAAc;YAC9C,SAAS,EAAE,KAAK,CAAC,KAAK,IAAI,IAAI;YAC9B,YAAY,EAAE,YAAY;YAC1B,UAAU,EAAE,UAAU;YACtB,sBAAsB,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC,IAAI;YAClF,QAAQ,EAAE,IAAI;SACf,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE;YAC9B,MAAM,CAAC,sBAAsB,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;SAChE;QAED,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,KAAK,IAAI,KAAK,EAAE;YAChD,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAgB,CAAC,CAAC;YAE7F,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;SAC/B;aACI;YACH,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAgB,CAAC,CAAC;YAC/F,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC;iBACjF,IAAI,CAAE,4CAAK,EAAE,CAAE;iBACf,SAAS,CAAC;gBACT,IAAI,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI,EAAE,GAAG,iBAAiB,CAAC;oBAC3B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAa,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;oBAC3D,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,KAAK,EAAE,GAAG,CAAC,EAAE;oBACb,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,+BAA+B,EAAE,gCAAgC,CAAC,CAAC;gBAC7F,CAAC;aACF,CAAC,CAAC;YAEH,IAAI,CAAC,iBAAiB,CAAC,oBAAoB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC;iBAChF,IAAI,CAAC,4CAAK,EAAE,CAAC;iBACb,SAAS,CAAC;gBACT,IAAI,EAAE,GAAG,CAAC,EAAE;oBACV,IAAI,EAAE,GAAG,qBAAqB,CAAC;oBAC/B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAa,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;oBAC3D,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;oBAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBACnD,CAAC;gBACD,KAAK,EAAE,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;oBACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,qCAAqC,EAAE,sCAAsC,CAAC,CAAC;gBAC3G,CAAC;aACF,CAAC,CAAC;SACN;IACH,CAAC;IACO,cAAc,CAAC,MAAU;QAC/B,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,MAAM,CAAC;aAC/E,IAAI,CAAC,4CAAK,EAAE,CAAC;aACb,SAAS,CAAC;YACT,IAAI,EAAE,GAAG,CAAC,EAAE;gBACV,IAAI,EAAE,GAAG,iBAAiB,CAAC;gBAC3B,IAAI,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,GAAa,CAAC,EAAE,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,CAAC;gBAC3D,SAAS,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;gBAC3B,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC;YACD,KAAK,EAAE,GAAG,EAAE;gBACV,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,+BAA+B,EAAE,gCAAgC,CAAC,CAAC;YAC/F,CAAC;SACF,CAAC,CAAC;IACP,CAAC;IACD,qBAAqB;IACrB,IAAW,QAAQ;QACjB,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK;IACxC,CAAC;IACD,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK;IACrC,CAAC;;8FA7NU,uBAAuB;qHAAvB,uBAAuB;QCxBpC,yEAAgC;QAC9B,mHAAkO;QAClO,mHAAkQ;QAClQ,mHAAmI;QACnI,mHAAsH;QACtH,mHAAkH;QAClH,mHAA0I;QAC5I,4DAAM;QACN,0EAAuB;QAIf,6EACF;QAAA,4DAAQ;QACR,6EAC0F;QAAnF,mJAAQ,uBAAmB,IAAC;QADnC,4DAC0F;QAC1F,sFAA+G;QACjH,4DAAM;QAER,0EAAqB;QAGf,2EACF;QAAA,4DAAQ;QACR,6EAC0F;QAAnF,mJAAQ,uBAAmB,IAAC;QADnC,4DAC0F;QAC1F,sFAA6G;QAC/G,4DAAM;QAER,2EAA+B;QAER,kEAAM;QAAA,4DAAQ;QACjC,6HASS;QACT,8EAAsH;QAA/B,wJAAU,uBAAmB,IAAC;QACnH,8EAA4C;QAAA,0EAAc;QAAA,4DAAS;QACnE,4HAAgF;QAClF,4DAAS;QACT,sFAAuG;QACzG,4DAAM;QAER,sHAmBM;QACN,0EAA6B;QACL,+EAAmB;QAAA,4DAAQ;QACjD,2EAA8C;QAGxC,iEACA;QAAA,6EACqF;QAA9E,uJAAU,uBAAmB,IAAC;QADrC,4DACqF;QAGzF,uEAAK;QAED,gEAAG;QAAA,6EACmF;QAA5E,uJAAU,uBAAmB,IAAC;QADrC,4DACmF;QAI5F,sFAA8G;QAChH,4DAAM;QAER,2EAAmC;QAOzB,gJAAS,cAAU,IAAC;;;;;QAE1B,sEACF;QAAA,4DAAS;QACT,sFAA+H;QACjI,4DAAM;QACJ,kHAAmG;QACrG,4DAAM;;QAtGE,0DAAqH;QAArH,+MAAqH;QACrH,0DAAoH;QAApH,8MAAoH;QACpH,0DAAwB;QAAxB,0FAAwB;QACxB,0DAAkC;QAAlC,oGAAkC;QAClC,0DAA4B;QAA5B,8FAA4B;QAC5B,0DAAuB;QAAvB,uFAAuB;QAEzB,0DAAgB;QAAhB,6EAAgB;QAyBP,2DAAW;QAAX,2EAAW;QASyB,0DAAiB;QAAjB,0EAAiB;QAC3C,0DAAiB;QAAjB,0EAAiB;QACX,0DAAS;QAAT,+EAAS;QAKN,0DAA6H;QAA7H,2MAA6H;QA8CrJ,2DAAuC;QAAvC,oIAAuC;QAHvC,+IAAyC;QAU7C,0DAA6B;QAA7B,6FAA6B;;;;;;;;;;;;;;;;;;;;;;ACpG4B;;;;AAOxD,MAAM,sBAAsB;IAQjC,YAAsB,cAA8B,EAAY,gBAAkC;QAA5E,mBAAc,GAAd,cAAc,CAAgB;QAAY,qBAAgB,GAAhB,gBAAgB,CAAkB;QAPxF,mBAAc,GAAW,EAAE,CAAC;QAC5B,yBAAoB,GAAW,EAAE,CAAC;QAClC,iBAAY,GAAiB,IAAI,8CAAY,EAAE,CAAC;QAC1D,kBAAa,GAAY,KAAK,CAAC;QAC/B,qBAAgB,GAAY,KAAK,CAAC;IAIlC,CAAC;IAED,QAAQ;QACN,IAAI,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,IAAI,CAAC,8CAAQ,CAAC,GAAG,EAAE;YACxF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAC/C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAClB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC7B,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,oCAAoC,EAAE,qCAAqC,GAAG,GAAG,CAAC,CAAC;QAC/G,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAES,uBAAuB,CAAC,UAAkB;QAClD,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC;QACvC,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC7B,CAAC;IAES,mBAAmB;QAC3B,IAAI,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC,IAAI,CAAC,8CAAQ,CAAC,GAAG,EAAE;YACvG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;YACzC,6GAA6G;YAC7G,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC7B,CAAC,EAAE,MAAM,CAAC,CAAC;QACb,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC9B,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,oCAAoC,EAAE,KAAK,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;IACL,CAAC;IAES,yBAAyB,CAAC,SAAiB,IAAI,CAAC,oBAAoB,EAAE,QAAgB,IAAI,CAAC,cAAc;QACjH,IAAI,uBAAuB,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAkC,CAAC;QAC/F,OAAO,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,uBAAuB,CAAC,CAAC,IAAI,CACzE,yCAAG,CAAC,CAAC,MAAc,EAAE,EAAE;YACrB,IAAI,CAAC,mBAAmB,EAAE,CAAC;YAC3B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAES,yBAAyB,CAAC,KAAU;QAC5C,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;SAC9B;IACH,CAAC;IAES,wBAAwB,CAAC,KAAU;QAC3C,KAAK,CAAC;QACN,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,wDAAwD,GAAG,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,CAAC;IAClI,CAAC;;4FAjEU,sBAAsB;oHAAtB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;ACNoC;;;;;;;;;;;ICDnE,yEAA8C;IAG2B,kZAAmB,kPAAW,4EAAW,KAAtB;IAAxF,4DAAmI;IACnI,uDACF;IAAA,4DAAQ;IACR,oFACsB;IACxB,4DAAM;;;;IALsC,0DAA4B;IAA5B,wFAA4B;IACpE,0DACF;IADE,mGACF;;ADOC,MAAM,2BAA2B;IAQtC,YAAoB,WAAwB,EAAU,WAAwB,EACpE,cAA8B,EAAU,WAAwB;QADtD,gBAAW,GAAX,WAAW,CAAa;QAAU,gBAAW,GAAX,WAAW,CAAa;QACpE,mBAAc,GAAd,cAAc,CAAgB;QAAU,gBAAW,GAAX,WAAW,CAAa;QANnE,iBAAY,GAAW,SAAS,CAAC;IAMsC,CAAC;IAC/E,QAAQ;QAEN,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE;YAC3C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;IAEX,CAAC;IAEO,WAAW,CAAC,IAAY;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,QAAQ,GAAG,wEAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;YAChD,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC;aAC7C;iBAAM;gBACL,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;aAClD;SACF;aACI;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;IACH,CAAC;IAEM,SAAS;QACd,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,sBAAsB,EAAE,CAAC,CAAC;QACrF,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YAC3D,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;gBAC5C,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACnD,CAAC,CAAC,CAAC;QAEL,CAAC,EAAE,GAAG,CAAC,EAAE;YACP,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,oCAAoC,EAAE,sCAAsC,GAAG,GAAG,CAAC,CAAC;QAChH,CAAC,CAAC,CAAC;IACL,CAAC;;sGAjDU,2BAA2B;yHAA3B,2BAA2B;QCdxC,6EAAmE;QAE/D,uHASM;QAER,4DAAU;;QAXyB,0DAAW;QAAX,iFAAW;;;;;;;;;;;;;;;;ACFzC,SAAS,mBAAmB,CAAC,eAAuB,EAAE,gBAAyB,KAAK,EAAE,YAAoB,CAAC,EAAE,eAAuB,CAAC;IAC1I,IAAI,SAAS,GAAG,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC;IAC1C,IAAI,cAAc,GAAG,SAAS,CAAC,iBAAiB,EAAE,CAAC;IAEnD,IAAI,aAAa,GAAG,cAAc,GAAG,EAAE,CAAC;IACxC,IAAI,eAAe,GAAG,cAAc,GAAG,EAAE,CAAC;IAE1C,IAAI,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC;IAC3E,IAAI,YAAY,GAAG,aAAa,CAAC,CAAC,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC,CAAC,eAAe,CAAC;IAEpF,SAAS,CAAC,aAAa,CAAC,SAAS,CAAC,aAAa,EAAE,GAAG,YAAY,CAAC,CAAC;IAClE,SAAS,CAAC,WAAW,CAAC,SAAS,CAAC,WAAW,EAAE,GAAG,UAAU,CAAC,CAAC;IAC5D,OAAO,SAAS,CAAC;AACnB,CAAC;;;;;;;;;;;;;;;ACbM,SAAS,gBAAgB,CAAC,aAA8B;IAC7D,IAAI,WAAW,GAAG,aAAa,KAAK,SAAS,CAAC;IAC9C,IAAI,MAAM,GAAG,aAAa,KAAK,IAAI,CAAC;IAEpC,IAAI,CAAC,WAAW,IAAI,CAAC,MAAM;QACzB,aAAa,GAAG,aAAa,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;IAElD,IAAI,OAAO,GAAG,aAAa,KAAK,EAAE,CAAC;IACnC,OAAO,CAAC,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC;AAC7C,CAAC;;;;;;;;;;;;;;;ACRM,MAAM,cAAc;CAK1B;;;;;;;;;;;;;;;ACND,IAAY,SAIX;AAJD,WAAY,SAAS;IACnB,4DAA+C;IAC/C,6DAAgD;IAChD,6DAAgD;AAClD,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;;;;;;;;;;;;;;;ACJD,IAAY,mBAKT;AALH,WAAY,mBAAmB;IAC3B,sEAA+C;IAC/C,wEAAiD;IACjD,uEAAgD;IAChD,uEAAgD;AAClD,CAAC,EALS,mBAAmB,KAAnB,mBAAmB,QAK5B;;;;;;;;;;;;;;;ACJI,MAAM,OAAO;;AAgBF,kBAAU,GAAG,sCAAsC,CAAC;AACpD,wBAAgB,GAAG,sCAAsC,CAAC;AAC1D,uBAAe,GAAG,sCAAsC,CAAC;;;;;;;;;;;;;;;;AClBhC;AAGpC,MAAM,YAAY;IAuCvB,YAAY,GAAS;QAtCrB,YAAY;QACZ,eAAe;QACR,mBAAc,GAAuB,EAAE,CAAC;QAC/C,eAAe;QACR,oBAAe,GAAuB,EAAE,CAAC;QAChD,eAAe;QACR,mBAAc,GAAuB,EAAE,CAAC;QAC/C,gBAAgB;QACT,qBAAgB,GAAuB,EAAE,CAAC;QACjD,gBAAgB;QACT,aAAQ,GAAuB,EAAE,CAAC;QACzC,gBAAgB;QACT,aAAQ,GAAuB,EAAE,CAAC;QACzC,gBAAgB;QACT,SAAI,GAAuB,EAAE,CAAC;QACrC,cAAc;QACP,UAAK,GAAuB,EAAE,CAAC;QACtC,cAAc;QACP,QAAG,GAAuB,EAAE,CAAC;QACpC,eAAe;QACR,UAAK,GAAuB,EAAE,CAAC;QAC/B,gBAAW,GAAwB,KAAK,CAAC;QACzC,eAAU,GAAwB,KAAK,CAAC;QACxC,sBAAiB,GAAwB,KAAK,CAAC;QAC/C,kBAAa,GAAwB,KAAK,CAAC;QAClD,gBAAgB;QACT,cAAS,GAAuB,EAAE,CAAC;QAG1C,gBAAgB;QACT,mBAAc,GAAuB,EAAE,CAAC;QAMxC,qBAAgB,GAAuB,EAAE,CAAC;QAG/C,IAAI,GAAG;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IACD,IAAW,sBAAsB;QAC/B,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,OAAO,IAAI,CAAC;QACxC,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxC,OAAO,CAAC,CAAC;IACX,CAAC;IAEM,wBAAwB;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QACpC,IAAI,IAAI,GAAS,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACjD,IAAI,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAC,EAAE;gBACrC,gBAAgB;gBAChB,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,MAAM,CAAQ,CAAC;gBACvD,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBACzC,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBACzC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;gBACrD,KAAK,CAAC,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC;gBACvC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;aACvB;iBAAM;gBACJ,EAAE,CAAC,IAAY,CAAC,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;gBACnD,EAAE,CAAC,IAAY,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACrD,EAAE,CAAC,IAAY,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;gBACjE,EAAU,CAAC,aAAa,GAAG,EAAE,CAAC,aAAa,CAAC;gBAC5C,EAAU,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;aACpB;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,IAAS;QACrB,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO,SAAS,CAAC;QAC3C,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,2EAA8B,EAAE,CAAC,CAAC;QAClI,IAAI,CAAC,OAAO;YAAE,OAAO,UAAU,CAAC;QAChC,OAAO,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;IAClD,CAAC;IAED,mBAAmB,CAAC,IAAS;QAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,2EAA8B,EAAE,CAAC,CAAC;QAClI,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC,YAAY,CAAC;IAC9B,CAAC;IAEM,qBAAqB,CAAC,gBAAsB;QACjD,IAAI,CAAC,IAAI,CAAC,qBAAqB;YAAE,OAAO,IAAI,CAAC;QAC7C,IAAI,IAAI,GAAS,EAAE,CAAC;QACpB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YAC1D,IAAI,CAAC,GAAG,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,EAAE;gBACxD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;gBAC5B,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,cAAc,CAAC,CAAC;gBAC9D,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;gBAChF,IAAI,CAAC,EAAE;oBACL,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;oBAC/C,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;iBAClB;aACF;iBAAM;gBACL,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAE,CAAS,CAAC,YAAY,CAAC,CAAC,CAAC;gBAC7D,EAAE,CAAC,iBAAiB,GAAG,CAAC,CAAC,iBAAiB,CAAC;gBAC3C,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;gBAC/B,IAAI,CAAC,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAC,iBAAiB,CAAC,CAAC;gBAChF,IAAI,CAAC,EAAE;oBACL,IAAI,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC;oBAC/C,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC;oBACjB,EAAE,CAAC,QAAQ,GAAG,CAAC,CAAC,QAAQ,CAAC;oBACzB,EAAE,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;iBAChC;gBACD,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,iBAAiB,CAAC,CAAC;gBAC9C,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACf;SAEF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF;;;;;;;;;;;;;;;;ACzHuD;AAUxD;;GAEG;AACI,MAAM,WAAW,GAAG;IACvB,KAAK,EAAE;QACH,OAAO,EAAE,UAAqB;QAC9B,KAAK,EAAE,EAAmB;QAC1B,OAAO,EAAE,IAAI;KAChB;IACD,uBAAuB,EAAE;QACrB,OAAO,EAAE,iBAA4B;QACrC,KAAK,EAAE,CAAC,6EAAsB,CAAC;KAClC;IACD,iBAAiB,EAAE;QACf,OAAO,EAAE,iBAA4B;QACrC,KAAK,EAAE,CAAC,gFAAyB,CAAC;KACrC;IACD,iBAAiB,EAAE;QACf,OAAO,EAAE,SAAoB;QAC7B,KAAK,EAAE,CAAC,6EAAsB,CAAC;KAClC;IACD,WAAW,EAAE;QACT,OAAO,EAAE,SAAoB;QAC7B,KAAK,EAAE,CAAC,gFAAyB,CAAC;KACrC;IACD,iBAAiB,EAAE;QACf,OAAO,EAAE,UAAqB;QAC9B,KAAK,EAAE,CAAC,gFAAyB,CAAC;KACrC;IACD,kBAAkB,EAAE;QAChB,OAAO,EAAE,UAAqB;QAC9B,KAAK,EAAE,CAAC,6EAAsB,CAAC;KAClC;IACD,cAAc,EAAE;QACZ;YACI,OAAO,EAAE,UAAqB;YAC9B,KAAK,EAAE,CAAC,6EAAsB,CAAC;SAClC;QACD;YACI,OAAO,EAAE,SAAoB;YAC7B,KAAK,EAAE,CAAC,6EAAsB,CAAC;SAClC;QACD;YACI,OAAO,EAAE,iBAA4B;YACrC,KAAK,EAAE,CAAC,6EAAsB,CAAC;SAClC;KACJ;IACD,aAAa,EAAE;QACX;YACI,OAAO,EAAE,iBAA4B;YACrC,KAAK,EAAE,CAAC,gFAAyB,CAAC;SACrC;QACD;YACI,OAAO,EAAE,SAAoB;YAC7B,KAAK,EAAE,CAAC,gFAAyB,CAAC;SACrC;QACD;YACI,OAAO,EAAE,UAAqB;YAC9B,KAAK,EAAE,CAAC,gFAAyB,CAAC;SACrC;KAEJ;CACJ;;;;;;;;;;;;;;;ACvED,IAAY,WAEX;AAFD,WAAY,WAAW;IACnB,sCAAuB;AAC3B,CAAC,EAFW,WAAW,KAAX,WAAW,QAEtB;;;;;;;;;;;;;;;;;;ACFwC;AACU;AACiC;AAE7E,MAAM,eAAgB,SAAQ,kDAAM;IAGzC,YAAY,GAAS;QACnB,KAAK,CAAC,GAAG,CAAC,CAAC;QAEX,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;YACzD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACnD,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,IAAI,6FAA0B,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;aACjF;SACF;IACH,CAAC;IAED,IAAW,OAAO;QAChB,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAC;QACvD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,IAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAEM,WAAW,CAAC,KAAa;QAC9B,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,EAAE;YACnJ,OAAO,CAAC,iEAAgB,CAAC,CAAC;SAC3B;QAED,IAAI,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,CAAC,WAAW,EAAE,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC/H,OAAO,aAAa,CAAC;IACvB,CAAC;IACD,IAAW,eAAe;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACtH,OAAO,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;QAAA,CAAC;IAC7D,CAAC;IACM,UAAU,CAAC,IAAY;QAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;QACtH,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;IACvC,CAAC;CACF;;;;;;;;;;;;;;;;ACnCM,MAAM,MAAM;IA0EjB,YAAY,GAAS;QAXZ,iBAAY,GAA8B,EAAE,CAAC;QAC7C,gBAAW,GAAO,EAAE,CAAC;QAW5B,IAAI,GAAG;YAAE,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,aAAa;QACX,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrF,CAAC;IAED,aAAa;QACX,OAAO,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACrF,CAAC;CACF;AAEM,SAAS,WAAW,CAAC,IAAY;IACtC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IAC7C,IAAI,IAAI,GAAmB,EAAE,CAAC;IAE9B,IAAI,CAAC,YAAY;SAChB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC;SAChD,OAAO,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,EAAE;QAC5B,MAAM,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,cAAc,IAAI,YAAY,CAAC,cAAc,CAAC;QAEnF,IAAG,SAAS,EAAC;YAAE,OAAM;SAAE;QAEvB,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IAC1B,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC;AACd,CAAC;;;;;;;;;;;;;;;ACzGD,IAAY,WAOX;AAPD,WAAY,WAAW;IACrB,4BAAW;IACX,8CAA6B;IAC7B,wCAAuB;IACvB,gDAA+B;IAC/B,gCAAe;IACf,4BAAW;AACb,CAAC,EAPW,WAAW,KAAX,WAAW,QAOtB;;;;;;;;;;;;;;;;ACRkD;AAE5C,MAAM,0BAA0B;IAcrC,YAAY,GAAgC;QAC1C,IAAI,GAAG,EAAE;YACP,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;YACzC,IAAI,CAAC,gBAAgB,GAAG,GAAG,CAAC,gBAAgB,CAAC;YAC7C,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;YACnC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;YACjC,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC,iBAAiB,CAAC;YAC/C,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;YACvC,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;YAC/B,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;YACrC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,YAAY,CAAC;YACrC,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC,aAAa,CAAC;YACvC,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC,cAAc,CAAC;SAC1C;IACH,CAAC;IAED,IAAW,OAAO;QAChB,IAAI,IAAI,CAAC,WAAW,IAAI,YAAY;YAAE,OAAO,uEAAsB,CAAC;QACpE,IAAI,IAAI,CAAC,WAAW,IAAI,eAAe;YAAE,OAAO,0EAAyB,CAAC;QAC1E,IAAI,IAAI,CAAC,WAAW,IAAI,MAAM;YAAE,OAAO,iEAAgB,CAAC;QACxD,IAAI,IAAI,CAAC,WAAW,IAAI,gBAAgB;YAAE,OAAO,2EAA0B,CAAC;QAC5E,IAAI,IAAI,CAAC,WAAW,IAAI,QAAQ;YAAE,OAAO,mEAAkB,CAAC;QAC5D,OAAO,iEAAgB,CAAC;IAC1B,CAAC;CACF;;;;;;;;;;;;;;;;;;;ACrCM,MAAM,YAAY;IACvB,YAAoB,SAAuB;QAAvB,cAAS,GAAT,SAAS,CAAc;IAE3C,CAAC;IACD,SAAS,CAAC,IAAY;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;;wEANU,YAAY;wHAAZ,YAAY;;;;;;;;;;;;;;;;;;;;ACJgC;AAED;AAGmB;;;AAOpE,MAAM,WAAW;IAiBtB,YACU,IAAgB;QAAhB,SAAI,GAAJ,IAAI,CAAY;QAdlB,qBAAgB,GAAQ,IAAI,CAAC;QACrC,0EAA0E;QAClE,iBAAY,GAAW,CAAC,CAAC;QAG1B,kBAAa,GAAY,KAAK,CAAC;QAC9B,kBAAa,GAAY,KAAK,CAAC;QAC/B,qBAAgB,GAAY,KAAK,CAAC;QACnC,aAAQ,GAA2B,IAAI,CAAC;QAExC,aAAQ,GAA4B,IAAI,iDAAe,CAAC,sBAAsB,CAAC,CAAC;QAChF,oBAAe,GAAkC,IAAI,uDAAY,CAAC,IAAI,CAAC,CAAC;QAK7E,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;IAGM,GAAG;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,WAAW,CAAC,CAAC;IACzC,CAAC;IACM,SAAS;QACd,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,kBAAkB,CAAC,CAAC;IAChD,CAAC;IAEM,KAAK,CAAC,KAAU;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAEM,MAAM,CAAC,QAAgB,EAAE,wBAAgC,GAAG;QACjE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuD,6BAA6B,QAAQ,EAAE,EAAE,qBAAqB,CAAC,CAAC;IAC9I,CAAC;IAEM,QAAQ,CAAC,QAAa;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,oBAAoB,EAAE,QAAQ,CAAC,CAAC;IAC7D,CAAC;IAEM,YAAY,CAAC,MAAc,EAAE,IAAY;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,iCAAiC,MAAM,SAAS,IAAI,EAAE,EAAE,IAAI,CAAC,CAAC;IAC3F,CAAC;IAEM,cAAc,CAAC,MAAW;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,0BAA0B,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAEM,aAAa,CAAC,KAAU;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC/D,CAAC;IAEM,uBAAuB,CAAC,MAAW;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,mCAAmC,EAAE,MAAM,CAAC,CAAC;IAC1E,CAAC;IAEM,UAAU,CAAC,YAAiB;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,kBAAkB,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;IAEM,YAAY,CAAC,YAAiB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,oBAAoB,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAEM,eAAe,CAAC,aAAqC;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAO,2BAA2B,EAAE,aAAa,CAAC,CAAC;IAC1E,CAAC;IAEM,eAAe,CAAC,0BAAkD;QACvE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,2BAA2B,EAAE,0BAA0B,CAAC,CAAC;IACtF,CAAC;IAEM,+BAA+B,CAAC,MAAc;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA0B,oDAAoD,MAAM,EAAE,CAAC,CAAC;IAC9G,CAAC;IAEM,WAAW,CAAC,eAAwB,KAAK;QAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE;gBAC1D,IAAI,CAAC,aAAa,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,QAAQ,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,SAAS,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;gBAC5I,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE;oBAC1B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAC7B,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,uBAAuB,CAAC,CAAC,IAAI,CAAC,yCAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,mFAAe,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;wBAC7H,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;wBACzB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;wBAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;wBAC1B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE;4BACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;yBAC3B;wBACD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;wBACvB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC3C,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;wBAChB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;wBAC9B,MAAM,CAAC,KAAK,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;iBACJ;qBACI;oBACH,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;iBACnC;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB,CAAC,OAAY;QACtC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACzB,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;YACpC,CAAC,EAAE,IAAI,CAAC,CAAC;SACV;;YACI,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC9B,CAAC;IAEM,OAAO,CAAC,IAAY;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACjC,OAAO,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC/B,CAAC;IAEM,aAAa,CAAC,UAAkB;QACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAClB,OAAO,KAAK,CAAC;SACd;QACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE;gBAAE,OAAO,IAAI,CAAC;aAAE;SAClE;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAEM,cAAc,CAAC,MAAW;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,0BAA0B,EAAE,MAAM,CAAC,CAAC;IACjE,CAAC;IAEM,iBAAiB;QACtB,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAC3B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;QAC9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACvB,CAAC;IAEM,gBAAgB,CAAC,KAAa;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,kCAAkC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,2BAA2B,CAAC,CAAC;IACzD,CAAC;IAEM,UAAU,CAAC,KAAa;QAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,8BAA8B,KAAK,EAAE,CAAC,CAAC;IACnE,CAAC;;sEAzJU,WAAW;4GAAX,WAAW,WAAX,WAAW,mBAFV,MAAM;;;;;;;;;;;;;;;;;;ACR4B;;;;AAYzC,MAAM,iBAAiB;IAI5B,YAAoB,IAAgB,EAAU,cAA8B;QAAxD,SAAI,GAAJ,IAAI,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAHpE,WAAM,GAAU,EAAE,CAAC;QACnB,aAAQ,GAAU,EAAE,CAAC;QAC7B,YAAO,GAAkB,EAAE,CAAC;IACoD,CAAC;IAE1E,UAAU;QACf,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACvC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;aACvB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBAC3E,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;oBACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACxB,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,2BAA2B,EAAE,6BAA6B,GAAG,KAAK,CAAC,CAAC;oBAC9F,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,0BAA0B,CAAC,KAAa;QAC7C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAwB,8CAA8C,KAAK,EAAE,CAAC,CAAC;IACrG,CAAC;IAEM,yCAAyC,CAAC,KAAa;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAA+B,8DAA8D,KAAK,EAAE,CAAC,CAAC;IAC5H,CAAC;IAEM,sBAAsB,CAAC,KAAa,EAAE,YAAoB;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,0CAA0C,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;IACjG,CAAC;IAEM,2BAA2B,CAAC,KAAa,EAAE,YAAoB;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkC,+CAA+C,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;IAChI,CAAC;IAEM,eAAe,CAAC,KAAa,EAAE,YAAoB,EAAE,iBAAmC;QAC7F,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAa,sCAAsC,KAAK,IAAI,YAAY,EAAE,EAAE,iBAAiB,CAAC,CAAC;IACvH,CAAC;IAEM,cAAc,CAAC,KAAa,EAAE,UAAkB,EAAE,UAAsB;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,mCAAmC,KAAK,IAAI,UAAU,EAAE,EAAE,UAAU,CAAC,CAAC;IAC1G,CAAC;IAEM,gBAAgB,CAAC,KAAY,EAAE,YAAmB,EAAE,EAAM;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,8CAA8C,KAAK,IAAI,YAAY,EAAE,EAAE,EAAE,CAAC,CAAC;IACnG,CAAC;IAEM,kBAAkB,CAAC,KAAa,EAAE,YAAoB,EAAE,aAAqB,EAAE,EAAoB;QACxG,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAc,uCAAuC,KAAK,IAAI,YAAY,IAAI,aAAa,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3H,CAAC;IAEM,gBAAgB,CAAC,YAAoB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,mBAAmB,YAAY,EAAE,CAAC,CAAC;IAC7D,CAAC;IAEM,oBAAoB,CAAC,KAAa,EAAE,YAAoB;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,wCAAwC,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;IAC/F,CAAC;IAEM,0BAA0B,CAAC,KAAa,EAAE,YAAoB,EAAE,gBAAwB;QAC7F,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,8CAA8C,KAAK,IAAI,YAAY,IAAI,gBAAgB,EAAE,CAAC,CAAC;IAE9H,CAAC;IAEM,yBAAyB,CAAC,KAAa,EAAE,YAAoB;QAClE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,6CAA6C,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;IACpG,CAAC;IACM,0BAA0B,CAAC,KAAa,EAAE,YAAoB;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,8CAA8C,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;IACrG,CAAC;IACM,8BAA8B,CAAC,KAAa,EAAE,YAAoB,EAAE,SAAkB,KAAK;QAChG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,kDAAkD,KAAK,IAAI,YAAY,WAAW,MAAM,EAAE,CAAC,CAAC;IAC1H,CAAC;IACM,+BAA+B,CAAC,IAAS,EAAE,SAAkB,KAAK;QACvE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAQ,2DAA2D,MAAM,EAAE,EAAE,IAAI,CAAC,CAAC;IAC1G,CAAC;IAEM,2BAA2B,CAAC,YAAkB,EAAE,UAAgB,EAAE,SAAiB;QACxF,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,+CAA+C,YAAY,IAAI,UAAU,IAAI,SAAS,EAAE,CAAC,CAAC;IACxH,CAAC;IAEM,wBAAwB,CAAC,KAAa,EAAE,MAAsB;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IACnF,CAAC;IACM,mBAAmB,CAAC,KAAa,EAAE,MAAsB;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACzH,CAAC;IACM,mBAAmB,CAAC,KAAa,EAAE,MAAsB;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,qCAAqC,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACzH,CAAC;IACM,oBAAoB,CAAC,KAAa,EAAE,MAAsB;QAC/D,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,KAAK,EAAE,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IAC9H,CAAC;;kFA/FU,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB;;;;;;;;;;;;;;;;;;;ACZqB;;;;AAU5C,MAAM,eAAe;IAY1B,YAAoB,IAAgB,EAAU,cAA8B;QAAxD,SAAI,GAAJ,IAAI,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAXpE,cAAS,GAAU,EAAE,CAAC;QACtB,qBAAgB,GAAU,EAAE,CAAC;QAC7B,WAAM,GAAU,EAAE,CAAC;QACnB,aAAQ,GAAU,EAAE,CAAC;QAC7B,cAAS,GAAkB,EAAE,CAAC;QACtB,iBAAY,GAAiB,IAAI,CAAC;QAClC,yBAAoB,GAA0B,IAAI,CAAC;QACnD,sBAAiB,GAAqB,IAAI,CAAC;QAC3C,mBAAc,GAAiB,IAAI,CAAC;QACrC,8BAAyB,GAA+B,IAAI,CAAC;QAC7D,0BAAqB,GAAyC,IAAI,iDAAe,CAAC,EAAE,CAAC,CAAC;IACb,CAAC;IAE1E,mBAAmB,CAAC,eAAwB,KAAK;QAEtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,YAAY,EAAE;gBAC3C,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;aACjC;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,gCAAgC,CAAC,CAAC,SAAS,CAAC,CAAC,QAA0B,EAAE,EAAE;oBACzG,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC;oBAClC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;gBAClC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,iCAAiC,EAAE,mCAAmC,GAAG,KAAK,CAAC,CAAC;oBAC1G,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE;gBAC3C,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBAC3E,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,2BAA2B,EAAE,6BAA6B,GAAG,KAAK,CAAC,CAAC;oBAC9F,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACM,WAAW,CAAC,eAAwB,KAAK;QAC9C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;gBAC1D,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,2BAA2B,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBAC1E,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,2BAA2B,EAAE,6BAA6B,GAAG,KAAK,CAAC,CAAC;oBAC9F,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACM,SAAS,CAAC,eAAwB,KAAK;QAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;gBACtD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACtB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,yBAAyB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBACxE,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;oBACvB,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAS,CAAC,EAAE,CAAC;wBAC7B,IAAI,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;wBACvC,IAAI,MAAM,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;wBACvC,IAAI,MAAM,GAAG,MAAM,EAAE;4BACnB,OAAO,CAAC,CAAC,CAAC;yBACX;wBACD,IAAI,MAAM,GAAG,MAAM,EAAE;4BACnB,OAAO,CAAC,CAAC;yBACV;wBACD,OAAO,CAAC,CAAC;oBACX,CAAC,CAAC,CAAC;oBACH,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACvB,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,0BAA0B,EAAE,4BAA4B,GAAG,KAAK,CAAC,CAAC;oBAC5F,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACM,YAAY,CAAC,eAAwB,KAAK;QAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;gBAC5D,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;aACzB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,4BAA4B,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBAC3E,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;oBAC1B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC1B,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,+BAA+B,EAAE,gCAAgC,GAAG,KAAK,CAAC,CAAC;oBACrG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACM,mBAAmB,CAAC,eAAwB,KAAK;QACtD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE;gBAC1E,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAChC;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,mCAAmC,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBAClF,IAAI,CAAC,gBAAgB,GAAG,QAAQ,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;gBACjC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,qCAAqC,EAAE,uCAAuC,GAAG,KAAK,CAAC,CAAC;oBAClH,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACM,eAAe,CAAC,eAAwB,KAAK;QAClD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,YAAY,EAAE;gBACtC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aAC5B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,4BAA4B,CAAC,CAAC,SAAS,CAAC,CAAC,QAAsB,EAAE,EAAE;oBACpF,IAAI,CAAC,YAAY,GAAG,QAAQ,CAAC;oBAC7B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAC7B,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,oCAAoC,EAAE,8BAA8B,GAAG,KAAK,CAAC,CAAC;oBACxG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,uBAAuB,CAAC,cAAsB,EAAE,eAAwB,KAAK;QAClF,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,oBAAoB,IAAI,CAAC,YAAY,EAAE;gBAC9C,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aACpC;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,sCAAsC,cAAc,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,QAA+B,EAAE,EAAE;oBACvH,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACrC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,qCAAqC,EAAE,sCAAsC,GAAG,KAAK,CAAC,CAAC;oBACjH,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IACM,mBAAmB,CAAC,GAAU,EAAE,GAAU;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,kCAAkC,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;IAC5E,CAAC;IACM,iBAAiB,CAAC,MAAc;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,gCAAgC,MAAM,EAAE,CAAC,CAAC;IACtE,CAAC;IACM,kBAAkB,CAAC,GAAW,EAAE,GAAW,EAAE,IAAW;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,8BAA8B,IAAI,IAAI,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;IAChF,CAAC;IAEM,iBAAiB,CAAC,eAAwB,KAAK;QACpD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,YAAY,EAAE;gBACxC,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;aAC9B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,8BAA8B,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBAC/E,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;oBAC/B,OAAO,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;gBAC/B,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,+BAA+B,EAAE,iCAAiC,GAAG,KAAK,CAAC,CAAC;oBACtG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,4BAA4B,CAAC,eAAwB,KAAK;QAC/D,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,yBAAyB,IAAI,CAAC,YAAY,EAAE;gBACnD,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;aACzC;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,yCAAyC,CAAC,CAAC,SAAS,CAAC,CAAC,QAA6B,EAAE,EAAE;oBACxH,IAAI,CAAC,yBAAyB,GAAG,QAAQ,CAAC;oBAC1C,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAC1C,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;gBAC1C,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,2CAA2C,EAAE,6CAA6C,GAAG,KAAK,CAAC,CAAC;oBAC9H,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;;8EA7LU,eAAe;gHAAf,eAAe,WAAf,eAAe;;;;;;;;;;;;;;;;;;;ACX8C;AACnC;;;;AAKhC,MAAM,WAAW;IAEtB,YAAoB,IAAgB,EAAE,cAA8B;QAAhD,SAAI,GAAJ,IAAI,CAAY;QAClC,0EAA0E;QAC1E,sGAAsG;IACxG,CAAC;IAED,sBAAsB,CAAC,KAAa,EAAE,UAAiB,EAAE,IAAU,EACjE,WAAmB,iCAAiC,KAAK,IAAI,UAAU,EAAE;QACzE,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;QAE1C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE9B,MAAM,GAAG,GAAG,IAAI,6DAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACtD,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,8BAA8B,CAAC,KAAa,EAAE,YAAoB,EAAE,SAAiB,EAAE,IAAU,EAC/F,WAAmB,yCAAyC,KAAK,IAAI,YAAY,IAAI,SAAS,EAAE;QAChG,MAAM,QAAQ,GAAa,IAAI,QAAQ,EAAE,CAAC;QAE1C,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAE9B,MAAM,GAAG,GAAG,IAAI,6DAAW,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE;YACtD,cAAc,EAAE,IAAI;YACpB,YAAY,EAAE,MAAM;SACrB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IACM,0BAA0B,CAAC,KAAa,EAAE,YAAoB;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,wCAAwC,KAAK,IAAI,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;IACvI,CAAC;IACM,qBAAqB,CAAC,KAAa,EAAE,YAAoB;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAmC,KAAK,IAAI,YAAY,EAAE,EAAE,EAAC,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,EAAC,CAAC,CAAC;IAC9H,CAAC;IAEM,gBAAgB,CAAC,YAAoB;QAC1C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,8BAA8B,YAAY,EAAE,EAAE,EAAC,OAAO,EAAC,UAAU,EAAE,YAAY,EAAC,MAAM,EAAC,CAAC,CAAC;IAChH,CAAC;IAEM,qBAAqB,CAAC,KAAa,EAAE,YAAoB;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,mCAAmC,KAAK,IAAI,YAAY,EAAE,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC;aAC1H,IAAI,CACH,yCAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,IAAI,CAAC,CAAC,GAAa,CAAC,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC,CACxD,CAAC;IACJ,CAAC;;sEAlDU,WAAW;4GAAX,WAAW,WAAX,WAAW;;;;;;;;;;;;;;;;;;;ACMsD;;;;AAIvE,MAAM,iBAAiB;IAC5B,YAAoB,IAAgB,EAAU,cAA8B;QAAxD,SAAI,GAAJ,IAAI,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAgB;QAqF5D,yBAAoB,GAAG,CAAC,cAAc,EAAC,cAAc,EAAC,aAAa,EAAC,kBAAkB,CAAC,CAAC;QASxG,iFAAiF;QACjF,iBAAY,GAAG,+BAA+B,CAAC;IA/FiC,CAAC;IAC1E,uBAAuB,CAAC,EAAU;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,2CAA2C,EAAE,EAAE,CAAC,CAAC;IAC7E,CAAC;IACM,gBAAgB;QACrB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAc,mCAAmC,CAAC,CAAC;IACzE,CAAC;IACM,qBAAqB;QAC1B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,wCAAwC,CAAC,CAAC;IACnF,CAAC;IACM,oCAAoC;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkC,uDAAuD,CAAC,CAAC;IACjH,CAAC;IACM,sBAAsB,CAAC,EAAU;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAmB,0CAA0C,EAAE,EAAE,CAAC,CAAC;IACzF,CAAC;IACM,iCAAiC,CAAC,WAAmB;QAC1D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiC,qDAAqD,WAAW,EAAE,CAAC,CAAC;IAC3H,CAAC;IACM,uBAAuB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiC,0CAA0C,CAAC,CAAC;IACnG,CAAC;IACM,+BAA+B,CAAC,mCAA2C;QAChF,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,mDAAmD,mCAAmC,EAAE,EAAE,IAAI,CAAC,CAAC;IACjI,CAAC;IACM,cAAc,CAAC,WAAmB,EAAE,KAAuB;QAChE,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAY,mCAAmC,WAAW,EAAE,EAAE,KAAK,CAAC,CAAC;IAC7F,CAAC;IACM,qBAAqB,CAAC,kBAA0B,EAAE,KAAuB;QAC9E,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAmB,0CAA0C,kBAAkB,EAAE,EAAE,KAAK,CAAC,CAAC;IAClH,CAAC;IACM,iBAAiB;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,oCAAoC,CAAC,CAAC;IAC3E,CAAC;IACM,yBAAyB,CAAC,SAAiB;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,6CAA6C,SAAS,EAAE,CAAC,CAAC;IAC/F,CAAC;IACM,mBAAmB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,yCAAyC,KAAK,EAAE,CAAC,CAAC;IAC9F,CAAC;IACM,sBAAsB,CAAC,KAAa,EAAE,SAAiB;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,0CAA0C,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;IAC1G,CAAC;IACM,oBAAoB,CAAC,KAAa,EAAE,OAA0B;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAA2B,wCAAwC,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5G,CAAC;IACM,oBAAoB,CAAC,KAAa,EAAE,OAA0B;QACnE,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,2CAA2C,KAAK,EAAE,EAAE,OAAO,CAAC,CAAC;IACvG,CAAC;IACM,sBAAsB,CAAC,KAAa,EAAE,sBAA8B,EAAE,KAAuB;QAClG,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAoB,6CAA6C,KAAK,IAAI,sBAAsB,EAAE,EAAE,KAAK,CAAC,CAAC;IACnI,CAAC;IACM,uBAAuB,CAAC,KAAa,EAAE,UAAgC;QAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAuB,2CAA2C,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;IAC9G,CAAC;IACM,uBAAuB,CAAC,KAAa,EAAE,UAAgC;QAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAuB,8CAA8C,KAAK,EAAE,EAAE,UAAU,CAAC,CAAC;IAChH,CAAC;IACM,yBAAyB,CAAC,KAAa,EAAE,yBAAiC,EAAE,KAAuB;QACxG,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAuB,gDAAgD,KAAK,IAAI,yBAAyB,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5I,CAAC;IACM,sBAAsB,CAAC,KAAa,EAAE,WAAmB,EAAE,OAAY;QAC5E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAU,0CAA0C,KAAK,IAAI,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5G,CAAC;IACM,sBAAsB,CAAC,KAAa,EAAE,SAAiB,EAAE,UAAe;QAC7E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAa,6CAA6C,KAAK,IAAI,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;IACnH,CAAC;IACM,YAAY,CAAC,KAAa,EAAE,YAAoB,EAAE,SAAiB,EAAE,OAAgB;QAC1F,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAU,6CAA6C,KAAK,IAAI,YAAY,IAAI,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC;IAC5H,CAAC;IACM,eAAe,CAAC,KAAa,EAAE,YAAoB,EAAE,SAAiB,EAAE,UAAsB;QACnG,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAa,gDAAgD,KAAK,IAAI,YAAY,IAAI,SAAS,EAAE,EAAE,UAAU,CAAC,CAAC;IACrI,CAAC;IACM,cAAc,CAAC,KAAa,EAAE,YAAoB,EAAE,SAAiB,EAAE,KAAuB;QACnG,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAU,6CAA6C,KAAK,IAAI,YAAY,IAAI,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5H,CAAC;IACM,iBAAiB,CAAC,KAAa,EAAE,YAAoB,EAAE,SAAiB,EAAE,KAAuB;QACtG,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAa,gDAAgD,KAAK,IAAI,YAAY,IAAI,SAAS,EAAE,EAAE,KAAK,CAAC,CAAC;IAClI,CAAC;IACM,0BAA0B,CAAC,YAAmB;QACnD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,8CAA8C,YAAY,EAAE,CAAC,CAAC;IACxF,CAAC;IACM,uBAAuB,CAAC,YAAmB;QAChD,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,2CAA2C,YAAY,EAAE,CAAC,CAAC;IACrF,CAAC;IAEM,cAAc,CAAC,EAAU;QAC9B,IAAI,0FAAgB,CAAC,EAAE,CAAC,EAAE;YACxB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC;YACvG,OAAO,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;SAC5B;;YACI,OAAO,KAAK,CAAC;IACpB,CAAC;IAID,UAAU,CAAC,GAAW;QACpB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE;YACjC,OAAO,KAAK,CAAC;SACd;QAED,OAAO,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,aAAa,CAAC,GAAW;QACvB,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACvD,IAAI,MAAM,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;QACvD,IAAI,GAAG,GAAG,CAAC,CAAC;QAEZ,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACtC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;SACtC;QAED,OAAO,GAAG,GAAG,EAAE,CAAC;IAClB,CAAC;;kFAlHU,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB;;;;;;;;;;;;;;;;;;ACfkC;;;;AAGzD,MAAM,cAAc;IAKzB,YAAoB,IAAgB,EAAU,eAA+B;QAAzD,SAAI,GAAJ,IAAI,CAAY;QAAU,oBAAe,GAAf,eAAe,CAAgB;QAHrE,qBAAgB,GAAG,IAAI,CAAC;QACxB,sBAAiB,GAAG,IAAI,CAAC;IAGjC,CAAC;IAEM,OAAO,CAAC,OAAe,EAAE,iBAAgC,IAAI,EAAE,YAAqB,IAAI,CAAC,iBAAiB,EAAE,WAAmB,IAAI,CAAC,gBAAgB;QACzJ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,kEAAmB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzE,IAAI,cAAc,IAAI,IAAI;YAAE,cAAc,GAAG,OAAO,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK,CAAC,OAAe,EAAE,iBAAgC,IAAI,EAAE,YAAqB,IAAI,CAAC,iBAAiB,EAAE,WAAmB,IAAI,CAAC,gBAAgB;QACvJ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,+DAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,cAAc,IAAI,IAAI;YAAE,cAAc,GAAG,OAAO,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;IACM,IAAI,CAAC,OAAe,EAAE,iBAAgC,IAAI,EAAE,YAAqB,IAAI,CAAC,iBAAiB,EAAE,WAAmB,IAAI,CAAC,gBAAgB;QACtJ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,+DAAgB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACtE,IAAI,cAAc,IAAI,IAAI;YAAE,cAAc,GAAG,OAAO,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IAC/B,CAAC;IACM,OAAO,CAAC,OAAe,EAAE,iBAAgC,IAAI,EAAE,YAAqB,IAAI,CAAC,iBAAiB,EAAE,WAAmB,IAAI,CAAC,gBAAgB;QACzJ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,kEAAmB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzE,IAAI,cAAc,IAAI,IAAI;YAAE,cAAc,GAAG,OAAO,CAAC;QACrD,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAClC,CAAC;IACM,KAAK,CAAC,OAAe,EAAE,iBAAgC,IAAI,EAAE,YAAqB,IAAI,CAAC,iBAAiB,EAAE,WAAmB,IAAI,CAAC,gBAAgB;QACvJ,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,gEAAiB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACvE,IAAI,cAAc,IAAI,IAAI;YAAE,cAAc,GAAG,OAAO,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;IACM,WAAW,CAAC,OAAe,EAAE,iBAAgC,IAAI;QACtE,IAAI,cAAc,IAAI,IAAI;YAAE,cAAc,GAAG,OAAO,CAAC;QACrD,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC;IAChC,CAAC;IAED,QAAQ,CAAC,OAAe;QACtB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,CAAC,OAAe;QACrB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,CAAC;IACD,UAAU,CAAC,OAAe;QACxB,OAAO,CAAC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IACnC,CAAC;IACD,QAAQ,CAAC,OAAe;QACtB,OAAO,CAAC,KAAK,CAAC,eAAe,GAAG,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IAIO,OAAO,CAAC,KAAa,EAAE,OAAe;QAC5C,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,YAAY,KAAK,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,EAAE;YACvF,OAAO,CAAC,KAAK,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,gBAAgB,CAAC,IAAY,EAAE,IAAiB,EAAE,SAAkB,EAAE,QAAgB;QAC5F,QAAQ,IAAI,EAAE;YACZ,KAAK,gEAAiB;gBACpB,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACtD,MAAM;YACR,KAAK,+DAAgB;gBACnB,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACrD,MAAM;YACR,KAAK,kEAAmB;gBACtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,kEAAmB;gBACtB,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,CAAC;gBACxD,MAAM;YACR;gBACE,OAAO,CAAC,GAAG,CAAC,oDAAoD,GAAG,IAAI,CAAC,CAAC;SAC5E;IACH,CAAC;;4EA/EU,cAAc;+GAAd,cAAc,WAAd,cAAc;;;;;;;;;;;;;;;;;ACIpB,MAAM,kBAAkB;IAE7B,gBAAgB,CAAC;IAEV,aAAa,CAAC,IAAqB,EAAE,aAA+B,EAAE,eAAiC,EAAE;QAE9G,2DAA2D;QAC3D,IAAI,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAE/D,IAAI,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;QAErE,8CAA8C;QAC9C,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzJ,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,gBAAgB,CAAC,IAAqB,EAAE,KAAuB;QACrE,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,EAAE,IAAI,CAAC,aAAa,EAAE,CAAC,CAAC;aAC3E,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;aACjB,IAAI,EAAE,CAAC;IACZ,CAAC;IAEO,cAAc,CAAC,OAAgB,EAAE,UAAwB;QAE/D,IAAI,UAAU,EAAE;YACd,QAAQ,OAAO,EAAE;gBACf,KAAK,iBAAiB;oBACpB,OAAO,UAAU,CAAC,iBAAiB,CAAC;gBACtC,KAAK,SAAS;oBACZ,OAAO,UAAU,CAAC,aAAa,CAAC;gBAClC,KAAK,UAAU;oBACb,OAAO,UAAU,CAAC,UAAU,CAAC;aAChC;SACF;aACI;YACH,OAAO,KAAK,CAAC;SACd;IACH,CAAC;;oFArCU,kBAAkB;mHAAlB,kBAAkB,WAAlB,kBAAkB,mBAFjB,MAAM;;;;;;;;;;;;;;;;;;;;;ACL4B;;;;;AAUzC,MAAM,gBAAgB;IAI3B,YACU,IAAgB,EAChB,cAA8B,EAC9B,kBAAsC;QAFtC,SAAI,GAAJ,IAAI,CAAY;QAChB,mBAAc,GAAd,cAAc,CAAgB;QAC9B,uBAAkB,GAAlB,kBAAkB,CAAoB;QALhD,oBAAe,GAA2B,IAAI,CAAC;IAO/C,CAAC;IAED,uDAAuD;IAChD,kBAAkB,CAAC,eAAwB,KAAK;QACrD,IAAI,IAAI,CAAC,eAAe,IAAI,CAAC,YAAY,EAAE;YACzC,OAAO,wCAAE,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC;SACjC;aACI;YACH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,gCAAgC,CAAC,CAAC,IAAI,CAAC,yCAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC,CAAC,CAAC;SACtH;IACH,CAAC;IAEM,gBAAgB,CAAC,uBAAqD;QAC3E,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAS,iCAAiC,EAAE,uBAAuB,CAAC,CAAC;IAC5F,CAAC;IAEM,YAAY,CAAC,MAAc;QAChC,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;;gFA3BU,gBAAgB;iHAAhB,gBAAgB,WAAhB,gBAAgB,mBAFf,MAAM;;;;;;;;;;;;;;;;;;;;;ACAb,MAAM,cAAc;IACzB,YAAoB,IAAgB,EAAU,cAA8B;QAAxD,SAAI,GAAJ,IAAI,CAAY;QAAU,mBAAc,GAAd,cAAc,CAAgB;IAE5E,CAAC;IACM,gBAAgB,CAAC,UAAkB;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,4CAA4C,UAAU,EAAE,CAAC,CAAC;IACzF,CAAC;IACM,wBAAwB,CAAC,KAAa;QAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,sCAAsC,KAAK,EAAE,CAAC,CAAC;IACtF,CAAC;IACM,6BAA6B;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,mCAAmC,CAAC,CAAC;IAC5E,CAAC;IACM,mBAAmB,CAAC,KAAa;QACtC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAQ,gCAAgC,KAAK,EAAE,CAAC,CAAC;IACvE,CAAC;IACM,aAAa,CAAC,UAAkB,EAAE,EAAkB;QACzD,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,6BAA6B,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;;4EAlBU,cAAc;+GAAd,cAAc,WAAd,cAAc,mBAFb,MAAM;;;;;;;;;;;;;;;;;;;;ACNuD;AAID;;;;AAW1E,uEAAuE;AAGhE,MAAM,WAAW;IAkBtB,YACU,IAAgB,EAChB,cAA8B;IACtC,yCAAyC;IACzC,+BAA+B;;QAHvB,SAAI,GAAJ,IAAI,CAAY;QAChB,mBAAc,GAAd,cAAc,CAAgB;QAhBhC,qBAAgB,GAAQ,IAAI,CAAC;QACrC,0EAA0E;QAClE,iBAAY,GAAW,CAAC,CAAC;QAEzB,cAAS,GAAW,WAAW,CAAC;QACjC,kBAAa,GAAY,KAAK,CAAC;QAC9B,kBAAa,GAAG,KAAK,CAAC;QAEvB,SAAI,GAAiB,IAAI,CAAC;QAC1B,SAAI,GAAwB,IAAI,CAAC;QACjC,kBAAa,GAA6B,IAAI,CAAC;IAUtD,CAAC;IAGM,GAAG;QACR,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,WAAW,CAAC,CAAC;IACzC,CAAC;IAEM,mBAAmB;QACxB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE;gBACjD,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;aAC3B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,4BAA4B,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBAC7F,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;oBAC5B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC5B,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,kCAAkC,EAAE,2BAA2B,GAAG,KAAK,CAAC,CAAC;oBACnG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACD,CAAC;IAEM,WAAW;QAChB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE;gBAC3C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACxB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAY,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBACzE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;oBACzB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACzB,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,kCAAkC,EAAE,2BAA2B,GAAG,KAAK,CAAC,CAAC;oBACnG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW,CAAC,MAAc;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,IAAI,CAAC,SAAS,SAAS,MAAM,EAAE,CAAC,CAAC;IACnE,CAAC;IAEM,cAAc,CAAC,KAAa;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,GAAG,IAAI,CAAC,SAAS,gBAAgB,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;IAEM,uBAAuB,CAAC,KAAa;QAC1C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,CAAC,IAAI,CAAC,oBAAoB,IAAI,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,EAAE;gBACnE,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;aACpC;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAwB,GAAG,IAAI,CAAC,SAAS,yBAAyB,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBAClH,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAyD,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,OAAO,CAAC,CAAC;oBAE/H,IAAI,CAAC,oBAAoB,GAAG,QAAQ,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;gBACrC,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,qCAAqC,EAAE,8BAA8B,GAAG,KAAK,CAAC,CAAC;oBACzG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,gBAAgB,CAAC,UAAc;QACpC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,GAAG,IAAI,CAAC,SAAS,sBAAsB,EAAE,UAAU,CAAC,CAAC;IACjF,CAAC;IACM,MAAM,CAAC,KAAa;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,GAAG,IAAI,CAAC,SAAS,YAAY,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,yCAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kFAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACnH,CAAC;IACD;;OAEG;IAEI,YAAY,CAAC,eAAwB,KAAK;QAC/C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,wBAAwB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBACvE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,4BAA4B,EAAE,8BAA8B,GAAG,KAAK,CAAC,CAAC;oBAChG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,mBAAmB,CAAC,OAAe;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAiB,gCAAgC,GAAG,OAAO,CAAC,CAAC;IACnF,CAAC;IAEM,aAAa,CAAC,eAAwB,KAAK;QAChD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,oBAAoB,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBACnE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,yBAAyB,EAAE,2BAA2B,GAAG,KAAK,CAAC,CAAC;oBAC1F,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,cAAc,CAAC,eAAwB,KAAK;QACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,YAAY,EAAE;gBAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,0BAA0B,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBACzE,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;oBACrB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACrB,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,mCAAmC,EAAE,qCAAqC,GAAG,KAAK,CAAC,CAAC;oBAC9G,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,gBAAgB,CAAC,eAAwB,KAAK;QACnD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrC,IAAI,IAAI,CAAC,aAAa,IAAI,CAAC,YAAY,EAAE;gBACvC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;aAC7B;iBAAM;gBACL,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,4BAA4B,CAAC,CAAC,SAAS,CAAC,CAAC,QAAa,EAAE,EAAE;oBAC3E,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;oBAC9B,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;gBAC9B,CAAC,EAAE,CAAC,KAAU,EAAE,EAAE;oBAChB,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,6BAA6B,EAAE,+BAA+B,GAAG,KAAK,CAAC,CAAC;oBAClG,MAAM,CAAC,KAAK,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,2BAA2B,CAAC,IAAY;QAC7C,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;QAC/B,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,IAAI,CAAC,GAAG;YAAE,IAAI,CAAC,GAAG,GAAG,EAAE,CAAC;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QAC7C,IAAI,CAAC,IAAI,CAAC,yBAAyB;YAAE,IAAI,CAAC,yBAAyB,GAAG,EAAE,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,gBAAgB;YAAE,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,eAAe;YAAE,IAAI,CAAC,eAAe,GAAG,EAAE,CAAC;QACrD,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAC/C,IAAI,CAAC,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,aAAa,GAAG,EAAE,CAAC;IACnD,CAAC;IAEM,YAAY,CAAC,EAAS;QAC3B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,sBAAsB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,yCAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kFAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjG,CAAC;IACM,UAAU,CAAC,EAAS;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,oBAAoB,GAAG,EAAE,CAAC,CAAC,IAAI,CAAC,yCAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,kFAAY,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAC/F,CAAC;IACM,gBAAgB,CAAC,EAAe;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAc,4BAA4B,EAAE,EAAE,CAAC,CAAC;IACvE,CAAC;IACM,iBAAiB,CAAC,EAAgB;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,CAAM,6BAA6B,EAAE,EAAE,CAAC,CAAC;IAChE,CAAC;IACM,YAAY,CAAC,OAAe;QACjC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,wBAAwB,EAAE,OAAO,CAAC,CAAC;IAC/D,CAAC;IACM,UAAU,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,sBAAsB,EAAE,OAAO,CAAC,CAAC;IAC7D,CAAC;IACM,eAAe,CAAC,EAAgB;QACrC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,4BAA4B,GAAG,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAClF,CAAC;IACM,aAAa,CAAC,EAAgB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,0BAA0B,GAAG,EAAE,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAChF,CAAC;IACM,yBAAyB,CAAC,EAAC,cAAc,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,QAAQ,EAAuB;QACzH,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,uCAAuC,cAAc,IAAI,qBAAqB,IAAI,iBAAiB,IAAI,QAAQ,EAAE,CAAC,CAAC;IAClK,CAAC;IACM,4BAA4B,CAAC,EAAC,cAAc,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,QAAQ,EAAuB;QAC7H,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAyB,0CAA0C,cAAc,IAAI,sBAAsB,IAAI,iBAAiB,IAAI,QAAQ,EAAE,CAAC,CAAC;IACtK,CAAC;IACM,iBAAiB,CAAC,EAAwB;QAC/C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,+BAA+B,EAAE,CAAC,cAAc,IAAI,EAAE,CAAC,qBAAqB,IAAI,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;IACvI,CAAC;IACM,iBAAiB,CAAC,KAAa,EAAE,MAAc,EAAE,MAAc;QACpE,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,+BAA+B,KAAK,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC,CAAC;IAC3F,CAAC;IACM,yBAAyB,CAAC,KAAa,EAAE,MAAc;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,CAAM,uCAAuC,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;IACzF,CAAC;IACM,wBAAwB,CAAC,WAAwB;QACtD,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,oCAAoC,EAAE,WAAW,CAAC,CAAC;IAC/E,CAAC;IACM,WAAW,CAAC,CAAkB;QACnC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,uBAAuB,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC;IACM,QAAQ,CAAC,CAAkB;QAChC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IACM,UAAU,CAAC,CAAkB;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,4CAA4C,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IACM,eAAe,CAAC,KAAa;QAClC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,6BAA6B,KAAK,EAAE,CAAC,CAAC;IAClE,CAAC;IACM,sBAAsB,CAAC,KAAa;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,uCAAuC,KAAK,EAAE,CAAC,CAAC;IAC5E,CAAC;IACM,0BAA0B,CAAC,KAAa,EAAE,MAAc;QAC7D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,wCAAwC,KAAK,IAAI,MAAM,EAAE,CAAC,CAAC;IACvF,CAAC;IACM,qBAAqB,CAAC,KAAa,EAAE,YAAoB;QAC9D,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,4CAA4C,KAAK,IAAI,YAAY,EAAE,CAAC,CAAC;IACjG,CAAC;IACM,sBAAsB,CAAC,KAAa;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,oCAAoC,KAAK,EAAE,CAAC,CAAC;IACzE,CAAC;IACM,sBAAsB,CAAC,KAAa;QACzC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAe,oCAAoC,KAAK,EAAE,CAAC,CAAC;IAClF,CAAC;IACM,kBAAkB,CAAC,UAAe;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,8BAA8B,EAAE,UAAU,CAAC,CAAC;IACxE,CAAC;IACM,oBAAoB;QACzB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,6BAA6B,CAAC,CAAC;IAC3D,CAAC;IACM,oBAAoB,CAAC,CAAkB;QAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,kCAAkC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;IACrF,CAAC;IACM,sBAAsB,CAAC,CAAkB;QAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAM,oCAAoC,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,CAAC;IACvF,CAAC;IACM,uBAAuB,CAAC,EAAU;QACvC,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAkB,oCAAoC,GAAG,EAAE,CAAC,CAAC;IACnF,CAAC;;sEA5QU,WAAW;4GAAX,WAAW,WAAX,WAAW;;;;;;;;;;;;;;;;;;;;;;;;ACfjB,SAAS,wBAAwB,CAAC,KAAY,EAAE,aAAqB,EAAE,aAAqB,EAAE,oBAA6B,KAAK;IACrI,IAAI,UAAU,GAAQ,EAAE,CAAC;IACzB,IAAI,iBAAiB,EAAE;QACrB,UAAU,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC;KACrB;IACD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAS,EAAE,EAAE;QAC1B,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IACH,OAAO,UAAU,CAAC;AACpB,CAAC;AAEM,MAAM,SAAS,GAAG,sCAAsC,CAAC;AAEzD,SAAS,WAAW,CAAuB,IAAS,EAAE,QAAW;IACtE,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,MAAc,EAAE,OAAO,EAAE,EAAE;QACxD,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE;YACrB,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;SAChC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC,EAAE,EAAE,CAAC,CAAC;IAEP,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC;AACjC,CAAC;AAGM,MAAM,cAAc;IACzB,YACU,IAAgB,EAChB,cAA8B;QAD9B,SAAI,GAAJ,IAAI,CAAY;QAChB,mBAAc,GAAd,cAAc,CAAgB;IAExC,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAS,+BAA+B,CAAC,CAAC;IAChE,CAAC;;4EATU,cAAc;+GAAd,cAAc,WAAd,cAAc;;;;;;;;;;;;;;;;;;;;;;;AC9ByD;AACL;AACzB;;;;;;;;ICEhD,oEAA0C;;;;;IAF5C,qEAA4D;IAC2B,kWAAS,iGAA6B,KAAC;IAAC,uDAAoB;IAAA,4DAAS;IAC1J,qHAA0C;IAC5C,4DAAK;;;;IAFkB,0DAA4B;IAA5B,mJAA4B;IAA4E,0DAAoB;IAApB,oFAAoB;IAC1H,0DAAW;IAAX,0EAAW;;ADQjC,MAAM,oBAAoB;IAO/B,YACU,eAA+B,EAC/B,MAAc,EACd,eAA+B,EAC/B,cAA8B;QAH9B,oBAAe,GAAf,eAAe,CAAgB;QAC/B,WAAM,GAAN,MAAM,CAAQ;QACd,oBAAe,GAAf,eAAe,CAAgB;QAC/B,mBAAc,GAAd,cAAc,CAAgB;QAVhC,iBAAY,GAAiB,IAAI,8CAAY,EAAE,CAAC;QACjD,gBAAW,GAAiB,EAAE,CAAC;QAE/B,2BAAsB,GAAe,IAAI,CAAC;IAQjD,CAAC;IAED,QAAQ;QACN,MAAM,oBAAoB,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,8CAAQ,CAAC,GAAG,EAAE;YACtF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAC9C,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAe,EAAE,EAAE;YAChC,IAAI,CAAC,MAAM,EAAE;gBACX,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC3C;QACH,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QACrD,CAAC,CAAC,CAAC;QAEH,MAAM,6BAA6B,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;aACrD,IAAI,CAAC,4CAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,YAAY,0DAAa,CAAC,CAAC;aACrD,SAAS,CAAC,GAAG,EAAE;YACd,6BAA6B;YAC7B,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,EAAE,EAAE,EAAgB,CAAC;YAC9E,6CAA6C;YAC7C,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACzD,CAAC,EAAE,KAAK,CAAC,EAAE;YACP,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAC9D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,6BAA6B,CAAC,CAAC;QACzD,CAAC,CAAC,CAAC;IACL,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAEO,iBAAiB,CAAC,KAAqB,EAAE,MAAc,EAAE,EAAE,cAA4B,EAAE;QAC/F,MAAM,QAAQ,GAAqB,KAAK,CAAC,QAAQ,CAAC;QAElD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;YACzB,OAAO,WAAW,CAAC;SACpB;QAED,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE;YAC5B,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,WAAW,CAAC;YAE/C,sCAAsC;YACtC,IAAI,WAAW,CAAC,IAAI,EAAE;gBACpB,MAAM,QAAQ,GAAW,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnF,IAAI,QAAQ,KAAK,EAAE,EAAE;oBACnB,GAAG,IAAI,IAAI,QAAQ,EAAE,CAAC;iBACvB;gBAED,0GAA0G;gBAC1G,2CAA2C;gBAC3C,IAAI,eAAe,GAAG,IAAI,CAAC,2BAA2B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBAEzE,IAAI,kBAAkB,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,oBAAoB,CAAC,qBAAqB,CAAC,CAAC;gBACzF,IAAI,2BAA2B,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAEvE,IAAI,kBAAkB,IAAI,IAAI,IAAI,kBAAkB,IAAI,SAAS,EAAE;oBACjE,oGAAoG;oBACpG,IAAI,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,CAAC,CAAC;oBAEvE,IAAI,2BAA2B,GAAG,IAAI,CAAC,uBAAuB,CAAC,IAAI,CAAC,sBAAsB,EAAE,iBAAiB,CAAC,CAAC;oBAC/G,IAAI,2BAA2B,EAAE;wBAC/B,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,2BAA2B,EAAgB,CAAC,CAAC;qBACpJ;yBACI;wBACH,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,QAAQ,IAAI,iBAAiB,IAAI,EAAE,EAAE;4BACrE,IAAI,CAAC,cAAc,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,GAAG,EAAE,GAAG,EAAE,SAAS,EAAE,2BAA2B,EAAgB,CAAC,CAAC;yBACnH;wBACD,2FAA2F;wBAC3F,IAAI,OAAO,CAAC,iBAAiB,CAAC,IAAI,QAAQ,EAAE;4BAC1C,IAAI,cAAc,GAAI,iBAAgC,CAAC;4BAEvD,0IAA0I;4BAC1I,gGAAgG;4BAChG,IAAI,cAAc,CAAC,SAAS,KAAK,IAAI,IAAI,cAAc,CAAC,SAAS,KAAK,SAAS,EAAE;gCAC/E,cAAc,CAAC,SAAS,GAAG,2BAA2B,CAAC;6BACxD;4BACD,IAAI,cAAc,CAAC,KAAK,KAAK,IAAI,IAAI,cAAc,CAAC,KAAK,KAAK,SAAS,EAAE;gCACvE,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,CAAC;6BAC3E;4BACD,IAAI,cAAc,CAAC,GAAG,KAAK,IAAI,IAAI,cAAc,CAAC,GAAG,KAAK,SAAS,EAAE;gCACnE,cAAc,CAAC,GAAG,GAAG,GAAG,CAAC;6BAC1B;4BAED,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,CAAC;yBACrC;qBACF;iBACF;qBACI;oBACH,wDAAwD;oBACxD,IAAI,CAAC,cAAc,CAAC,EAAE,SAAS,EAAE,2BAA2B,EAAE,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC,4BAA4B,CAAC,eAAe,CAAC,EAAgB,CAAC,CAAC;iBACpJ;gBAED,IAAI,CAAC,sBAAsB,GAAG,kBAAkB,CAAC;aAClD;YAED,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;SAC7D;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,uBAAuB,CAAC,eAAoC,EAAE,gBAAqC;QACzG,IAAI,OAAO,CAAC,eAAe,CAAC,IAAI,QAAQ,IAAI,OAAO,CAAC,gBAAgB,CAAC,IAAI,QAAQ,EAAE;YACjF,OAAO,eAAe,IAAI,gBAAgB,IAAI,eAAe,CAAC,SAAS,KAAK,gBAAgB,CAAC,SAAS,IAAI,eAAe,CAAC,KAAK,KAAK,gBAAgB,CAAC,KAAK;mBACrJ,eAAe,CAAC,GAAG,KAAK,gBAAgB,CAAC,GAAG,CAAC;SACnD;QAED,OAAO,eAAe,KAAK,gBAAgB,CAAC;IAG9C,CAAC;IAEO,cAAc,CAAC,UAAsB;QAC3C,IAAI,IAAI,CAAC,WAAW,IAAI,UAAU,EAAE;YAClC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACnC;IACH,CAAC;IAGD,2HAA2H;IAC3H,wHAAwH;IAChH,4BAA4B,CAAC,GAAW,EAAE,0BAAkC,EAAE,EAAE,8BAAsC,EAAE;QAC9H,IAAI,iBAAiB,GAAG,GAAG,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC7D,IAAI,kBAAkB,GAAG,GAAG,CAAC,SAAS,CAAC,iBAAiB,GAAG,uBAAuB,CAAC,MAAM,EAAE,iBAAiB,GAAG,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QACrJ,IAAI,cAAc,GAAG,GAAG,CAAC,OAAO,CAAC,uBAAuB,GAAG,kBAAkB,EAAE,2BAA2B,GAAG,kBAAkB,CAAC,WAAW,EAAE,CAAC,CAAC;QAC/I,OAAO,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE;YACnC,cAAc,GAAG,IAAI,CAAC,4BAA4B,CAAC,cAAc,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;SAC9E;QACD,OAAO,cAAc,CAAC;IACxB,CAAC;IAGO,2BAA2B,CAAC,SAAiB;QACnD,IAAI,4BAA4B,GAAG,SAAS,CAAC;QAC7C,IAAI,4BAA4B,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC/C,sCAAsC;YACtC,IAAI,YAAY,GAAG,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,eAAe,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,YAAY,GAAG,CAAC,CAAC,CAAC;YAC/D,qBAAqB;YACrB,4BAA4B,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC;YACpE,0EAA0E;YAC1E,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE;gBAC1B,4BAA4B,GAAG,4BAA4B,GAAG,SAAS,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;gBACrH,4BAA4B,GAAG,IAAI,CAAC,2BAA2B,CAAC,4BAA4B,CAAC,CAAC;aAC/F;SACF;QACD,OAAO,4BAA4B,CAAC;IACtC,CAAC;IAED,iBAAiB,CAAC,KAAiB;QACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;IACpC,CAAC;;AAlKe,0CAAqB,GAAG,YAAa;wFAH1C,oBAAoB;kHAApB,oBAAoB;;;;;;QCZjC,yEAAkC;QAE9B,8GAGK;QACP,4DAAK;;QAJwB,0DAAgB;QAAhB,oFAAgB;;;;;;;;;;;;;;;;;;;;ACDK;;;;AAQ7C,MAAM,eAAe;IAI1B;QAHO,2BAAsB,GAAY,KAAK;QAEvC,oBAAe,GAA0B,mEAAyB,CAAC;IAC1D,CAAC;IAEjB,QAAQ;IACR,CAAC;IAEM,kBAAkB,KAAK,IAAI,CAAC,sBAAsB,GAAG,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,EAAC,CAAC;IAElF,gBAAgB,CAAC,IAAY;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACtC,CAAC;IAEM,YAAY;QACjB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;;8EAxBU,eAAe;6GAAf,eAAe;QCT5B,yEAA8B;QAGM,kIAAS,qBAAiB,2BAA2B,CAAC,IAAC;QAAC,4EAAiB;QAAA,4DAAI;QAC3G,wEAA4B;QACyC,sEAAW;QAAA,4DAAI;QAClF,oFAA2J;QAC7J,4DAAK;QACL,sEAAI;QAAqF,oEAAQ;QAAA,4DAAI;QACrG,sEAAI;QAAyF,wEAAY;QAAA,4DAAI;QAGjH,8EAAiD;QAE5B,+GAAmD;QAAA,4DAAK;QACzE,0EAAiB;QAA0B,mIAAS,qBAAiB,qCAAqC,CAAC,IAAC;QAAC,0EAAc;QAAA,4DAAI;QAAC,iEAAI;QAAA,4DAAK;QACzI,0EAAiB;QAA0B,mIAAS,qBAAiB,mCAAmC,CAAC,IAAC;QAAC,4EAAgB;QAAA,4DAAI;QAAC,mEAAM;QAAA,4DAAK;QAG/I,+EAAyD;QAE/B,uFAA2B;QAAA,4DAAK;QACtD,sEAAI;QAC6E,wEAAY;QAAA,4DAAI;QAMvG,gFACuH;QADzF,4IAAU,wBAAoB,IAAC;;QAE3D,2EAAmC;QAE/B,oIACF;QAAA,4DAAI;QACJ,2EAAgC;QAG5B,wIAAS,cAAU,IAAC;;;;;QAAC,8DAAE;QAAA,4DAAS;QAClC,8EAE2B;QAAzB,wIAAS,kBAAc,IAAC;;;;;QAAC,kEAAM;QAAA,4DAAS;;QAnCnB,0DAAwC;QAAxC,qGAAwC;QAuBP,2DAAsB;QAAtB,+EAAsB;QAQlC,0DAAuC;QAAvC,oIAAuC;QAD/D,+IAAyC;QAIjB,0DAAuC;QAAvC,oIAAuC;QAD/D,+IAAyC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtCb;AAGE;;;;;;;;;;;;ICMpD,4EAI6C;IAJd,gSAAS,oFAAmB,KAAC;;;;;IAIf,6EAAkB;IAAA,4DAAS;;IAAtE,qIAA0C;IAH1C,6IAAyC;;;IAOwC,2EAAsE;IAAA,uDAAY;IAAA,4DAAO;;;IAAnB,0DAAY;IAAZ,4EAAY;;;IAAzK,yEAAuF;IAAA,oHAAyF;IAAA,4DAAM;;;IAAhD,0DAAqB;IAArB,8FAAqB;;ADJpJ,MAAM,eAAe;IAO1B,YACU,MAAc,EACd,WAAwB,EACxB,eAAgC;QAFhC,WAAM,GAAN,MAAM,CAAQ;QACd,gBAAW,GAAX,WAAW,CAAa;QACxB,oBAAe,GAAf,eAAe,CAAiB;QARlC,iBAAY,GAAG,IAAI,8CAAY,EAAE,CAAC;QAC1C,mBAAc,GAAY,KAAK,CAAC;QAEzB,mBAAc,GAAY,KAAK,CAAC;QAMrC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM;aAC/B,IAAI,CAAC,4CAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,YAAY,0DAAa,CAAC,EACnD,8CAAQ,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACjC,CAAC,CAAC,CAAC;aACJ,SAAS,CACR,CAAC,KAAU,EAAE,EAAE;YACb,IAAI,KAAK,YAAY,0DAAa,EAAE;gBAClC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE;oBAClD,IAAI,CAAC,cAAc,GAAI,GAAG,CAAC,cAAc,CAAC;oBAC1C,IAAI,GAAG,CAAC,QAAQ,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,EAAE;wBACrC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;qBAC5B;yBAAM,IAAI,KAAK,CAAC,GAAG,KAAK,GAAG,IAAI,KAAK,CAAC,GAAG,KAAK,YAAY,EAAE;wBAC1D,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;qBAC7B;yBAAM;wBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;qBAC5B;gBACH,CAAC,CAAC;aACH;QACH,CAAC,CAAC,CAAC;IACT,CAAC;IACD,QAAQ;QACN,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9D,iDAAiD;QACnD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;YACzD,IAAI,CAAC,kBAAkB,GAAG,GAAG,CAAC;QAChC,CAAC,CAAC;IACJ,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IAC/B,CAAC;IAEM,iBAAiB;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC,SAAS,CAAC;YACxD,IAAI,EAAE,CAAC,GAAG,EAAE,EAAE;gBACZ,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC;gBAChC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,GAAW,EAAE,EAAE;oBACtD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;oBAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;gBACpC,CAAC,CAAC;gBACF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9B,CAAC;YACD,KAAK,EAAE,CAAC,CAAC,EAAE,EAAE;gBACX,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACjB,CAAC;SACF,CAAC,CAAC;IACL,CAAC;;8EAlEU,eAAe;6GAAf,eAAe;QCd5B,yEAA8B;QAEvB,kIAAS,iBAAa,IAAC;QACxB,gFAAuH;QACzH,4DAAI;QAEN,yEAAiC;QAC/B,0EAA6B;QAC/B,4DAAM;QACN,yEAAmB;QACjB,kHAIwE;QAC1E,4DAAM;QACN,yEAA2B;QAC7B,4DAAM;QACN,2GAAsL;;QAjBxI,0DAA6D;QAA7D,0HAA6D;QAEpF,0DAA+C;QAA/C,wGAA+C;QAOzD,0DAAoB;QAApB,oFAAoB;QAQD,0DAAqD;QAArD,yHAAqD;;;;;;;;;;;;;;;;;;ACjB1B;;AAKpD,MAAM,uBAAuB;IAElC,gBAAgB,CAAC;IAEV,SAAS,CAAC,KAAa;QAC5B,QAAQ,KAAK,EAAE;YACb,KAAK,MAAM;gBACT,OAAO,yEAAoB,CAAC;YAC9B,KAAK,KAAK;gBACR,OAAO,wEAAmB,CAAC;YAC7B,KAAK,OAAO;gBACV,OAAO,0EAAqB,CAAC;YAC/B,KAAK,OAAO;gBACV,OAAO,0EAAqB,CAAC;YAC/B,KAAK,MAAM;gBACT,OAAO,yEAAoB,CAAC;YAC9B,KAAK,OAAO;gBACV,OAAO,0EAAqB,CAAC;YAC/B;gBACE,OAAO,0EAAqB,CAAC;SAChC;IACH,CAAC;;8FArBU,uBAAuB;kJAAvB,uBAAuB;;;;;;;;;;;;;;;ACNpC,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,kCAAe;IACf,gCAAa;IACb,oCAAiB;IACjB,oCAAiB;IACjB,kCAAe;IACf,oCAAiB;AACnB,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B;;;;;;;;;;;;;;;;;;ACN4C;AACc;;;AAOpD,MAAM,mBAAmB;IAe9B;QARU,YAAO,GAAG,IAAI,uDAAY,EAAE,CAAC;QAK/B,cAAS,GAAG,2BAA2B,CAAC;QACxC,qBAAgB,GAAG,EAAE,CAAC;QAG5B,IAAI,CAAC,KAAK,GAAG,0EAAqB,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,gBAAgB,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,MAAM;QACvB,IAAI,CAAC,gBAAgB,GAAG,+CAA+C,CAAC;QACxE,IAAI,CAAC,KAAK,GAAG,kBAAkB,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;IACxB,CAAC;IAdD,IAAI,KAAK,CAAC,GAAY;QACpB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACtB,CAAC;IAcD,QAAQ;IACR,CAAC;IAED,IACI,OAAO;QACT,OAAO,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;IAEM,OAAO;QACZ,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC5C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5B;IACH,CAAC;IACM,UAAU;QACf,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC;IACxC,CAAC;IACM,YAAY;QACjB,OAAO,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;IACpC,CAAC;IACM,WAAW;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,IAAI,CAAC;SACb;IACH,CAAC;;sFAlDU,mBAAmB;iHAAnB,mBAAmB;;;QCThC,4EAAuI;QAA/H,2IAAS,aAAS,IAAC;QACvB,gFAA6H;QAC7H,0EAAsB;QAAA,uDAAoB;QAAA,4DAAO;;QAF4B,mFAA2B;QAAhF,6EAAoB;QAC3B,0DAAoB;QAApB,iFAAoB;QACf,0DAAoB;QAApB,qFAAoB;;;;;;;;;;;;;;;;;;;ACFkC;;;;AAUzE,MAAM,kBAAkB;IA6B7B,YAAoB,WAA6B,EAAU,aAA+B,EAC/E,IAAiB,EAAU,iBAAqC;QADvD,gBAAW,GAAX,WAAW,CAAkB;QAAU,kBAAa,GAAb,aAAa,CAAkB;QAC/E,SAAI,GAAJ,IAAI,CAAa;QAAU,sBAAiB,GAAjB,iBAAiB,CAAoB;IAAI,CAAC;IA3BhF;;;;MAIE;IACF,IAAoB,YAAY,CAAC,EAAC,IAAI,EAAE,WAAW,EAAE,qBAAqB,GAAG,EAAE,EAAkB;QAE/F,IAAG,CAAC,IAAI,EAAC;YAAE,OAAM;SAAE;QAEnB,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC,CAAC,8BAA8B;QAC1D,MAAM,kBAAkB,GAAG,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAE5D,IAAG,kBAAkB,IAAI,IAAI,CAAC,OAAO,EAAC;YACpC,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACxD,OAAO;SACR;QAED,MAAM,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,qBAAqB,CAAC;QACpG,IAAG,aAAa,EAAC;YACf,IAAI,CAAC,aAAa,CAAC,kBAAkB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;SACzD;aACG;YACF,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;SAC5B;IACH,CAAC;;oFA3BU,kBAAkB;gHAAlB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACViF;AAC9C;AAKmB;AAChB;;;;;;;;;;;;;;;;ICqBjE,yEAAoE;IAED,yXAAkC,KAAK,KAAC;IACtD,qEAAS;IAAA,6DAAI;IAC9D,sFACsB;IACxB,6DAAO;;;;IASL,yEAA2E;IAAG,mYAAkC,KAAK,KAAC;IAAyF,qFAAyB;IAAA,6DAAI;;;;IAC5O,yEAAkH;IAAG,mYAAkC,KAAK,KAAC;IAAwF,8EAAkB;IAAA,6DAAI;;;;IAC3Q,yEAAmC;IAAG,mYAAkC,KAAK,KAAC;IAA0F,+EAAmB;IAAA,6DAAI;;;IATnM,0EAAiG;IAGvE,yFAA6B;IAAA,6DAAO;IAAA,uEAAW;IAAA,4EAAwB;IAAA,6DAAM;IAAA,6DAAO;IAAA,4EAAoB;IAAA,kEAAO;IAAA,6DAAO;IAG9I,0EAAqF;IACnF,oHAAiP;IACjP,oHAAgR;IAChR,oHAAoM;IACtM,6DAAK;;;IAHc,4DAAwD;IAAxD,mIAAwD;IACxD,2DAA+F;IAA/F,iLAA+F;IAC/F,2DAAgB;IAAhB,oFAAgB;;;;IAYjC,yEAA0E;IAAG,mYAAkC,KAAK,KAAC;IAA+E,uFAA2B;IAAA,6DAAI;;;;IACnO,yEAAoC;IAAG,mYAAkC,KAAK,KAAC;IAAoF,yFAA6B;IAAA,6DAAI;;;;IACpM,yEAA0E;IAAG,mYAAkC,KAAK,KAAC;IAAoF,qFAAyB;IAAA,6DAAI;;;;IACtO,yEAAgG;IAAG,mYAAkC,KAAK,KAAC;IAA4F,yFAA6B;IAAA,6DAAI;;;;IACxQ,yEAA0I;IAAG,mYAAkC,KAAK,KAAC;IAA4F,uFAA2B;IAAA,6DAAI;;;;IAChT,yEAAwE;IAAG,mYAAkC,KAAK,KAAC;IAA6F,wFAA4B;IAAA,6DAAI;;;;IAChP,yEAAoI;IAAG,mYAAkC,KAAK,KAAC;IAA0F,8EAAkB;IAAA,6DAAI;;;;;;IAfnS,0EAEuJ;IAG7H,+EAAmB;IAAA,6DAAO;IAAA,+EAAmB;IAAA,4EAAwB;IAAA,6DAAM;IAAA,6DAAO;IAAA,4EAAoB;IAAA,kEAAO;IAAA,6DAAO;IAG5I,0EAA6F;IAC3F,oHAAwO;IACxO,oHAAyM;IACzM,oHAA2O;IAC3O,oHAA6Q;IAC7Q,oHAAqT;IACrT,oHAAqP;IACrP,oHAAoS;IAEtS,6DAAK;;;IARc,4DAAuD;IAAvD,gIAAuD;IACvD,2DAAiB;IAAjB,qFAAiB;IACjB,2DAAuD;IAAvD,gIAAuD;IACvD,2DAA6E;IAA7E,iRAA6E;IAC7E,2DAAuH;IAAvH,gNAAuH;IACvH,2DAAqD;IAArD,gIAAqD;IACrD,2DAAiH;IAAjH,8TAAiH;;;;IAKtI,yEAAqN;IAChN,4XAAkC,KAAK,KAAC;IACzC,gFACF;IAAA,6DAAI;;;;IASF,yEAAsD;IAAG,4XAAkC,KAAK,KAAC;IAA6G,wEAAY;IAAA,6DAAI;;;;IAE9N,yEAAqD;IAAG,4XAAkC,KAAK,KAAC;IAAwG,uEAAW;IAAA,6DAAI;;;;IAI3N,0EAAuG;IAG7E,0EAAc;IAAA,6DAAO;IAAA,0EAAc;IAAA,4EAAwB;IAAA,6DAAM;IAAA,6DAAO;IAAA,4EAAoB;IAAA,kEAAO;IAAA,6DAAO;IAElI,0EAAwF;IACnE,6XAAkC,KAAK,KAAC;IAAqF,wEAAW;IAAA,6DAAI;IAC/J,0EAAgB;IAAG,6XAAkC,KAAK,KAAC;IAA0F,sFAAyB;IAAA,6DAAI;IAClL,0EAAgB;IAAG,6XAAkC,KAAK,KAAC;IAA+E,4EAAe;IAAA,6DAAI;IAC7J,0EAAgB;IAAG,6XAAkC,KAAK,KAAC;IAAuF,iFAAoB;IAAA,6DAAI;IAC1K,0EAAgB;IAAG,6XAAkC,KAAK,KAAC;IAA4F,+EAAkB;IAAA,6DAAI;IAC7K,0EAAgB;IAAG,6XAAkC,KAAK,KAAC;IAAqF,+EAAkB;IAAA,6DAAI;IACtK,0EAAgB;IAAG,6XAAkC,KAAK,KAAC;IAAuF,iFAAoB;IAAA,6DAAI;IAC1K,0EAAgB;IAAG,6XAAkC,KAAK,KAAC;IAAyF,0FAA6B;IAAA,6DAAI;IACrL,0EAAgB;IAAG,6XAAkC,KAAK,KAAC;IAAiF,oEAAO;IAAA,6DAAI;IACvJ,0EAAgB;IAAG,6XAAkC,KAAK,KAAC;IAA6D,+EAAkB;IAAA,6DAAI;;;;IAU9I,yEAAmD;IAA2H,wDAAgB;IAAA,6DAAI;;;IAAjG,2DAA4E;IAA5E,sKAA4E;IAAC,2DAAgB;IAAhB,kFAAgB;;;IAC9L,yEAA+C;IAA2H,wDAAgB;IAAA,6DAAI;;;IAAjG,2DAA4E;IAA5E,sKAA4E;IAAC,2DAAgB;IAAhB,kFAAgB;;;IAP9L,0EAAkI;IAGxG,mEAAO;IAAA,6DAAO;IAAA,mEAAO;IAAA,4EAAwB;IAAA,6DAAM;IAAA,6DAAO;IAAA,4EAAoB;IAAA,kEAAO;IAAA,6DAAO;IAEpH,0EAAyE;IACvE,oHAAuM;IACvM,oHAAmM;IACrM,6DAAK;;;IAF2B,4DAAmB;IAAnB,6FAAmB;IACnB,2DAAe;IAAf,yFAAe;;;;;;AD/F9C,MAAM,gBAAgB;IAc3B,YAAoB,eAA+B,EAAU,WAAwB,EAAU,aAA6B;QAAxG,oBAAe,GAAf,eAAe,CAAgB;QAAU,gBAAW,GAAX,WAAW,CAAa;QAAU,kBAAa,GAAb,aAAa,CAAgB;QAXpH,wBAAmB,GAAG,IAAI,+CAAY,EAAE,CAAC;QAE1C,yBAAoB,GAAY,KAAK,CAAC;QACrC,+BAA0B,GAAuC,IAAI,8FAAkC,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAE/F,mBAAc,GAAkD,IAAI,qDAAS,EAAE,CAAC;QAG3H,qBAAgB,GAAU,EAAE,CAAC;QAC7B,iBAAY,GAAmB,EAAE,CAAC;IAIzC,CAAC;IAEM,QAAQ;QAEb,IAAI,kBAAkB,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAC5D,0CAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACb,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YACvB,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;YACjC,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC;YACzC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,EAAE;gBACrF,IAAI,CAAC,aAAa,CAAC,6BAA6B,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE;oBACjE,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;gBAC1B,CAAC,CAAC,CAAC;aACJ;QACH,CAAC,CAAC,EACF,gDAAS,CAAC,GAAG,EAAE;YACb,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnB,OAAO,IAAI,CAAC,aAAa,CAAC,wBAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;aACpF;iBACI;gBACH,OAAO,yCAAE,CAAC,EAAE,CAAC,CAAC;aACf;QACH,CAAC,CAAC,CACH,CAAC,SAAS,CAAC;YACV,IAAI,EAAE,CAAC,OAA4B,EAAE,EAAE;gBACrC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;gBAChC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YACnD,CAAC;YACD,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE;gBACf,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;gBACjD,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,CAAC;YACtE,CAAC;SACF,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;QAE/B,iBAAiB;QACjB,MAAM,iCAAiC,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,KAAyC,EAAE,EAAE;YAC3I,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;YACxC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,EAAE;gBACzD,IAAI,gBAAgB,KAAK,KAAK,EAAE;oBAC9B,IAAI,CAAC,oBAAoB,EAAE,CAAC;iBAC7B;qBAAM;oBACL,IAAI,CAAC,YAAY,CAAC,gBAAgB,CAAC,CAAC;iBACrC;YACH,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAEhE,oCAAoC;QACpC,MAAM,mBAAmB,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,KAAa,EAAE,EAAE;YACnF,QAAQ,KAAK,EAAE;gBACb,KAAK,MAAM;oBACT,uBAAuB;oBACvB,IAAI,CAAC,2BAA2B,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,MAAM;oBACT,yBAAyB;oBACzB,IAAI,CAAC,2BAA2B,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,MAAM;oBACT,wBAAwB;oBACxB,IAAI,CAAC,2BAA2B,EAAE,CAAC;oBACnC,MAAM;gBACR,KAAK,MAAM;oBACT,2BAA2B;oBAC3B,sBAAsB;oBACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACxB,gCAAgC;oBAChC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;oBACxC,MAAM;gBACR,KAAK,MAAM;oBACT,0BAA0B;oBAC1B,sBAAsB;oBACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBACxB,oCAAoC;oBACpC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,CAAC;oBACxC,MAAM;gBACR;oBACE,OAAO,CAAC,GAAG,CAAC,iEAAiE,GAAG,KAAK,CAAC,CAAC;aAC1F;QACH,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QAElD,oBAAoB;QACpB,MAAM,yBAAyB,GAAG,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC,KAAa,EAAE,EAAE;YAC9F,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACrC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAExD,gBAAgB;QAChB,MAAM,0BAA0B,GAAG,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,KAAyC,EAAE,EAAE;YAC7H,8CAA8C;YAC9C,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;QAC1C,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QAEzD,gCAAgC;QAChC,MAAM,iCAAiC,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,KAAyC,EAAE,EAAE;YAC3I,IAAI,CAAC,2BAA2B,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAEhE,uBAAuB;QACvB,MAAM,uCAAuC,GAAG,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,KAAyC,EAAE,EAAE;YACzJ,2BAA2B;YAC3B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QAEtE,qBAAqB;QACrB,MAAM,4BAA4B,GAAG,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,KAAc,EAAE,EAAE;YACtG,IAAI,CAAC,gBAAgB,EAAE,CAAC;QAC1B,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC7D,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;SACxC;IACH,CAAC;IAEO,YAAY,CAAC,OAA2C;QAC9D,IAAI,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACpE,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SAC5B;IACH,CAAC;IACO,oBAAoB;QAC1B,kDAAkD;QAClD,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,IAAI,IAAI,CAAC,0BAA0B,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACpH,eAAe;YACf,IAAI,CAAC,0BAA0B,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACnD;IACH,CAAC;IAED,sBAAsB;IACd,gBAAgB;QACtB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE;YAClD,IAAI,SAAS,CAAC,QAAQ,EAAE;gBACtB,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC9B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAGD;;OAEG;IACI,mBAAmB;QACxB,IAAI,CAAC,oBAAoB,GAAG,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACzD,CAAC;IAED;;OAEG;IACK,2BAA2B,CAAC,WAAoB,IAAI;QAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,oBAAoB;QACpB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC5B,4CAA4C;YAC5C,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;YACrD,IAAI,SAAS,KAAK,SAAS,EAAE;gBAC3B,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;aACnD;SACF;aAAM;YACL,gBAAgB;YAChB,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,EAAE;gBAClC,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBAChD,yBAAyB;gBACzB,MAAM,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;gBAC3C,IAAI,SAAS,KAAK,SAAS,EAAE;oBAC3B,IAAI,CAAC,uBAAuB,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;iBACnD;aACF;SACF;IACH,CAAC;IAED;;OAEG;IACK,2BAA2B,CAAC,WAAoB,IAAI;QAC1D,IAAI,KAAK,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAChD,gBAAgB;QAChB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,CAAC,QAAQ,EAAE;gBACb,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;aAC1D;SACF;aAAM;YACL,iBAAiB;YACjB,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,KAAK,EAAE;gBACnC,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;gBACxC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC7B,IAAI,CAAC,QAAQ,EAAE;oBACb,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,KAAK,CAAC,CAAC;iBAC3D;aACF;SACF;IACH,CAAC;IACO,uBAAuB,CAAC,SAA6C,EAAE,WAAoB,IAAI;QACrG,IAAI,QAAQ,EAAE;YACZ,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,SAAS,CAAC,CAAC;SACjE;aAAM;YACL,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC;SAC/D;IACH,CAAC;IACD;;OAEG;IACK,eAAe;QACrB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,gBAAgB,EAAE,KAAK,EAAE,EAAE;YAChE,IAAI,gBAAgB,KAAK,IAAI,CAAC,0BAA0B,EAAE;gBACxD,QAAQ,GAAG,KAAK,CAAC;aAClB;QACH,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IAClB,CAAC;IACD;;OAEG;IACK,gBAAgB,CAAC,gBAAoD;QAC3E,IAAI,gBAAgB,IAAI,gBAAgB,CAAC,KAAK,EAAE;YAC9C,gBAAgB,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC;SACpE;IAEH,CAAC;IAED,sDAAsD;IACtD,IAAW,WAAW;QACpB,OAAO,uEAAW;IACpB,CAAC;;gFA5PU,gBAAgB;+GAAhB,gBAAgB;mEAQb,8FAAkC;;;;;QCzBlD,0EAAyD;QAC7B,yIAAS,yBAAqB,IAAC;QAEvD,iFACkB;QACpB,6DAAS;QACT,6EACiF;QADvD,yIAAS,yBAAqB,IAAC;QAEvD,iFACkB;QACpB,6DAAS;QACT,yEAAgF;QAGjB,mKAAkC,KAAK,IAAC;QACR,uEAAW;QAAA,6DAAI;QACxG,sFACsB;QACxB,6DAAO;QAET,0EAAgB;QAE+C,oKAAkC,KAAK,IAAC;QACtD,kEAAK;QAAA,6DAAI;QACtD,sFACsB;QACxB,6DAAO;QAET,8GAOK;QACL,+GAWK;QACL,gHAkBK;QAEL,8GAIK;QACL,2EAA6C;QAGnB,wEAAW;QAAA,6DAAO;QAAA,wEAAW;QAAA,6EAAwB;QAAA,8DAAM;QAAA,6DAAO;QAAA,6EAAoB;QAAA,mEAAO;QAAA,6DAAO;QAG5H,2EAAqF;QACnF,8GAAmO;QACnO,0EAAgB;QAAG,oKAAkC,KAAK,IAAC;QAAuG,uEAAU;QAAA,6DAAI;QAChL,8GAA4N;QAC9N,6DAAK;QAGP,+GAkBK;QACL,+GAUK;QACL,0EAAgB;QAEZ,4EAA6B;QAC/B,6DAAM;;QArHF,2DAAwE;QAAxE,kMAAwE;QAC7D,2DAAiD;QAAjD,2GAAiD;QAI5D,2DAAwE;QAAxE,kMAAwE;QAC7D,2DAAuD;QAAvD,iHAAuD;QAGxD,2DAA8C;QAA9C,uKAA8C;QAiB7C,4DAAiD;QAAjD,0HAAiD;QAQpB,2DAAiD;QAAjD,0HAAiD;QAa1F,2DAC+I;QAD/I,4XAC+I;QAkBnI,2DAAkM;QAAlM,8bAAkM;QAY1M,4DAAmC;QAAnC,wGAAmC;QAEvB,2DAAkC;QAAlC,uGAAkC;QAIT,2DAAuD;QAAvD,gIAAuD;QAmBvD,2DAAkF;QAAlF,+JAAkF;;;;;;;;;;;;;;;;;;;;ACzGyB;AACzH;AAE6C;;;AAK1E,MAAM,kCAAkC;IAiH9C,YACS,eAA+B,EAChC,KAAkB;QADjB,oBAAe,GAAf,eAAe,CAAgB;QAChC,UAAK,GAAL,KAAK,CAAa;QAlHK,aAAQ,GAAY,KAAK,CAAC;QACtB,iBAAY,GAAY,KAAK,CAAC;QACjE,gBAAW,GAAY,KAAK,CAAC;QAC6C,iBAAY,GAAgD,IAAI,oDAAS,EAAE,CAAC;QAEtJ,iBAAY,GAAW,KAAK,CAAC;QAsG7B,uBAAuB;QAEd,wBAAmB,GAAG,IAAI,8CAAY,EAAE,CAAC;QAOjD,oDAAoD;QACpD,MAAM,yCAAyC,GAAG,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,SAAS,CAAC,CAAC,KAAyC,EAAE,EAAE;YAC5J,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;gBACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpE,qBAAqB;oBACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;iBACxB;aACD;QACA,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;QAE1E,aAAa;QACX,MAAM,+BAA+B,GAAG,IAAI,CAAC,eAAe,CAAC,mBAAmB,CAAC,SAAS,CAAC,CAAC,KAAyC,EAAE,EAAE;YAC1I,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;gBACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;iBACzB;aACD;QACA,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAEhE,YAAY;QACV,MAAM,8BAA8B,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,KAAyC,EAAE,EAAE;YACxI,IAAI,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,SAAS,EAAE;gBACvC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,aAAa,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBACpE,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,qBAAqB;oBACrB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;iBACxB;aACD;QACA,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAChE,CAAC;IA5ID,cAAc;QACb,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IAED,oBAAoB;IACpB,YAAY;IAEZ,OAAO,CAAC,KAAU;QACjB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,IAAI,IAAI,CAAC,QAAQ,KAAK,KAAK,IAAI,IAAI,CAAC,YAAY,EAAE;gBACjD,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;aACvB;SACD;IACF,CAAC;IACD,yBAAyB;IAEzB,QAAQ,CAAC,KAAU;QAClB,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,cAAc,EAAE,CAAC;SACtB;IACF,CAAC;IACD,oBAAoB;IAEpB,uBAAuB;IACvB,sDAAsD;IACtD,kCAAkC;IAClC,KAAK;IAEL,KAAK,CAAC,CAAgB;QACrB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IACA,WAAW;IAEX,UAAU,CAAC,CAAgB;QAC1B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAGF,sDAAsD;IACtD,2CAA2C;IAC3C,mBAAmB;IACnB,aAAa;IAEb,YAAY,CAAC,CAAgB;QAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,YAAY;IAEZ,WAAW,CAAC,CAAgB;QAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;IACD,sDAAsD;IAEtD,sDAAsD;IACtD,8BAA8B;IAC9B,QAAQ;IAER,OAAO,CAAC,CAAgB;QACvB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACjE,CAAC;IACD,QAAQ;IAER,OAAO,CAAC,CAAgB;QACvB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACjE,CAAC;IACD,aAAa;IAEb,WAAW,CAAC,CAAgB;QAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACjE,CAAC;IACD,WAAW;IAEX,SAAS,CAAC,CAAgB;QACzB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,6BAA6B,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IACD,sDAAsD;IAEtD,OAAO;IAEP,OAAO,CAAC,CAAgB;QACvB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,IAAI,CAAC,CAAC;QACnD,iCAAiC;QACjC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACtB,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;SAC3D;IACF,CAAC;IA4CD,QAAQ;QACP,IAAI,CAAC,YAAY,EAAE,CAAC;IACrB,CAAC;IACD,WAAW;QACR,IAAI,IAAI,CAAC,mBAAmB,EAAE;YAC5B,IAAI,CAAC,mBAAmB,CAAC,WAAW,EAAE,CAAC;SAC1C;IACF,CAAC;IACD;;OAEG;IACH,cAAc;QACb,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC3B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACxB;aAAM;YACN,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SACvB;IACF,CAAC;IAEM,WAAW,CAAC,GAAY;QAC9B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IACzB,CAAC;IACD;;OAEG;IACH,YAAY;QACX,6CAA6C;QAC7C,0CAA0C;QAC1C,uBAAuB;QACvB,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QAC5C,6CAA6C;QAC7C,uCAAuC;QACvC,IAAI,IAAI,CAAC,WAAW,EAAE;YACrB,sBAAsB;YACtB,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;SACxB;IACF,CAAC;;oHA5LW,kCAAkC;gIAAlC,kCAAkC;+EAI7B,0FAAgC;;;;;kKAJrC,0BAAsB,oLAAtB,mBAAe,oGAAf,oBAAgB,gHAAhB,iBAAa,4HAAb,sBAAkB,8HAAlB,wBAAoB,4HAApB,uBAAmB,oHAAnB,mBAAe,oHAAf,mBAAe,4HAAf,uBAAmB,wHAAnB,qBAAiB,oGAAjB,mBAAe;;;;;;;;;;;;;;;;;;;;;;ACRwC;;;;AAO7D,MAAM,gCAAgC;IA0E5C,sDAAsD;IAEtD,YACW,eAA+B,EAC/B,MAAc,EACjB,KAAkB;QAFf,oBAAe,GAAf,eAAe,CAAgB;QAC/B,WAAM,GAAN,MAAM,CAAQ;QACjB,UAAK,GAAL,KAAK,CAAa;IAAI,CAAC;IA7E/B,oDAAoD;IACpD,gCAAgC;IAChC,KAAK;IAEL,KAAK,CAAC,CAAgB;QACrB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,KAAK,CAAC,CAAC;QAC5D,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,WAAW;IAEX,UAAU,CAAC,CAAgB;QAC1B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,CAAC;QAC3D,IAAI,CAAC,eAAe,CAAC,yBAAyB,CAAC,IAAI,CAAC,CAAC;IACtD,CAAC;IACD,6EAA6E;IAC7E,aAAa;IAEb,YAAY,CAAC,CAAgB;QAC5B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,wDAAwD;QACxD,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACjE,CAAC;IACD,YAAY;IAEZ,WAAW,CAAC,CAAgB;QAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,wDAAwD;QACxD,IAAI,CAAC,eAAe,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;QAC9C,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,cAAc,CAAC,CAAC;IACjE,CAAC;IACD,6EAA6E;IAC7E,KAAK;IAEL,KAAK,CAAC,CAAgB;QACrB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,iCAAiC,CAAC,IAAI,CAAC,CAAC;IAC9D,CAAC;IACD,mDAAmD;IAGnD,oDAAoD;IACpD,yCAAyC;IACzC,YAAY;IAEZ,WAAW,CAAC,CAAgB;QAC3B,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,aAAa,CAAC,CAAC;IAChE,CAAC;IACD,UAAU;IAEV,SAAS,CAAC,CAAgB;QACzB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,iBAAiB,CAAC,CAAC;IACpE,CAAC;IACD,oDAAoD;IAEpD,sDAAsD;IACtD,+BAA+B;IAC/B,WAAW;IAEX,OAAO,CAAC,CAAgB;QACvB,CAAC,CAAC,cAAc,EAAE,CAAC;QACnB,oBAAoB;QAClB,MAAM,MAAM,GAAG,CAAC,CAAC,MAA2B,CAAC;QAC7C,IAAI,MAAM,IAAI,MAAM,CAAC,QAAQ,EAAE;YAC7B,sBAAsB;YACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;SAC3C;IACF,CAAC;;gHAzEW,gCAAgC;8HAAhC,gCAAgC;0KAAhC,iBAAa,0HAAb,sBAAkB,4HAAlB,wBAAoB,0HAApB,uBAAmB,8GAAnB,iBAAa,0HAAb,uBAAmB,sHAAnB,qBAAiB,kHAAjB,mBAAe;;;;;;;;;;;;;;;;;;;;;ACP4F;AACpF;AAEiD;AACJ;;;AAK1E,MAAM,kCAAkC;IAwB9C,YACS,eAA+B,EAChC,KAAkB;QADjB,oBAAe,GAAf,eAAe,CAAgB;QAChC,UAAK,GAAL,KAAK,CAAa;QAzB1B,gBAAgB;QACR,6BAAwB,GAAqC,IAAI,0FAAgC,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QACjE,iBAAY,GAAgD,IAAI,oDAAS,EAAE,CAAC;QAI9I,+BAA0B,GAAuC,IAAI,8FAAkC,CAAC,IAAI,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;QAEjJ,eAAe;QACN,kCAA6B,GAAG,IAAI,8CAAY,EAAE,CAAC;QAkBzD,MAAM,qBAAqB,GAAG,IAAI,CAAC,eAAe,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,KAAyC,EAAE,EAAE;YAClI,IAAI,CAAC,0BAA0B,GAAG,KAAK,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;QAE9D,MAAM,oCAAoC,GAAG,IAAI,CAAC,eAAe,CAAC,wBAAwB,CAAC,SAAS,CAAC,CAAC,KAAa,EAAE,EAAE;YACxH,6DAA6D;YAC7D,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC1D,QAAQ,KAAK,EAAE;oBACd,KAAK,cAAc;wBAClB,IAAI,CAAC,uBAAuB,EAAE,CAAC;wBAC/B,MAAM;oBACP,KAAK,aAAa;wBACjB,IAAI,CAAC,0BAA0B,EAAE,CAAC;wBAClC,MAAM;oBACP,KAAK,iBAAiB;wBACrB,IAAI,CAAC,8BAA8B,EAAE,CAAC;wBACtC,MAAM;oBACP,KAAK,aAAa;wBACjB,IAAI,CAAC,sBAAsB,EAAE,CAAC;wBAC/B,MAAM;oBACN;wBACC,OAAO,CAAC,GAAG,CAAC,kEAAkE,GAAG,KAAK,CAAC,CAAC;iBACzF;aACD;QACA,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;QAE7E,MAAM,sCAAsC,GAAG,IAAI,CAAC,eAAe,CAAC,0BAA0B,CAAC,SAAS,CAAC,CAAC,KAAc,EAAE,EAAE;YAC7H,IAAI,IAAI,CAAC,0BAA0B,IAAI,IAAI,CAAC,aAAa,EAAE;gBAC1D,mDAAmD;gBACnD,IAAI,CAAC,eAAe,CAAC,+BAA+B,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;aACtF;QACA,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,6BAA6B,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;IAElF,CAAC;IApDD,YAAY;IAEZ,OAAO,CAAC,KAAU;QACjB,IAAI,CAAC,eAAe,CAAC,4BAA4B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACvE,CAAC;IACD,WAAW;IAEX,MAAM,CAAC,KAAU;QAChB,IAAI,CAAC,eAAe,CAAC,2BAA2B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtE,CAAC;IA6CD,WAAW;QACR,IAAI,IAAI,CAAC,6BAA6B,EAAC;YACrC,IAAI,CAAC,6BAA6B,CAAC,WAAW,EAAE,CAAC;SACpD;IACF,CAAC;IAID,oBAAoB;IACpB;;OAEG;IACM,sBAAsB;QAC9B,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE;YACjC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;SACpD;IACF,CAAC;IAED;;OAEG;IACK,uBAAuB;QAC9B,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,KAAK,EAAE;YAClC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;SACrD;IACF,CAAC;IACD;;OAEG;IACK,0BAA0B;QACjC,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9C,gBAAgB;QAChB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;SAClC;aAAM;YACN,iBAAiB;YACjB,IAAI,CAAC,uBAAuB,EAAE,CAAC;SAC/B;IACF,CAAC;IACD;;OAEG;IACK,8BAA8B;QACrC,IAAI,KAAK,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAC9C,gBAAgB;QAChB,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE;YACvB,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;SAClC;aAAM;YACN,gBAAgB;YAChB,IAAI,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,EAAE;gBACjC,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;aACpD;SACD;IACF,CAAC;IACD;;OAEG;IACK,kBAAkB;QACzB,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,EAAE,EAAE;YAC1D,IAAI,WAAW,KAAK,IAAI,CAAC,wBAAwB,EAAE;gBAClD,QAAQ,GAAG,KAAK,CAAC;aACjB;QACF,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IACjB,CAAC;IACD;;OAEG;IACK,sBAAsB,CAAC,WAA6C;QAC3E,IAAI,WAAW,IAAI,WAAW,CAAC,KAAK,EAAE;YACrC,IAAI,CAAC,wBAAwB,GAAG,WAAW,CAAC;YAC5C,qFAAqF;YACrF,UAAU,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;SAChF;IACF,CAAC;;oHAhJW,kCAAkC;gIAAlC,kCAAkC;+EAMhC,8FAAkC;+EAH/B,0FAAgC;;;;;;0KAHrC,mBAAe,8GAAf,kBAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;ACTyD;AACtC;AAC4B;AAKO;;;;;;;;;;ICNf,uEAAyB;IAAA,uDAA4H;;IAAA,4DAAO;;;IAAnI,0DAA4H;IAA5H,wQAA4H;;;IACsB,uEAAwC;IAAA,uDAAqE;IAAA,4DAAO;;;IAA5E,0DAAqE;IAArE,yJAAqE;;;IAAxV,0EAAsC;IAAM,uDAAuL;IAAA,4DAAO;IAAC,+HAAoH;IAAA,4DAAM;;;IAAzT,0DAAuL;IAAvL,gRAAuL;IAAe,0DAA+B;IAA/B,kGAA+B;;;IAQ/Q,yEAAmE;IAC5B,8EAAmB;IAAA,4DAAI;IAC5D,qFACsB;IACxB,4DAAM;;;;IAdV,6EAAiE;IAC7C,uDAA8C;IAAA,yHAA4J;IAAA,4DAAM;IAClO,uHAAqW;IACrW,yEAAqB;IAEO,uEAAY;IAAA,4DAAI;IACxC,oFACsB;IACxB,4DAAM;IACN,4EAAoE;IAA1B,+RAAS,gFAAe,KAAC;IAAC,kEAAM;IAAA,4DAAI;IAC9E,0HAIM;IACR,4DAAM;;;IAdY,0DAA8C;IAA9C,oIAA8C;IAAO,0DAAgB;IAAhB,mFAAgB;IACnE,0DAAgB;IAAhB,mFAAgB;IAQJ,0DAAmC;IAAnC,+GAAmC;;;IAOrE,6EAAkE;IAEf,gEAAK;IAAA,4DAAI;IAAC,+DACzD;IAAA,wEAAmC;IAAA,mEAAQ;IAAA,4DAAI;;ADJ5C,MAAM,iBAAiB;IAQ5B,YACU,WAAwB,EACxB,MAAc,EACd,YAAyB,EACzB,eAA+B;QAH/B,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAQ;QACd,iBAAY,GAAZ,YAAY,CAAa;QACzB,oBAAe,GAAf,eAAe,CAAgB;QAVlC,iBAAY,GAAW,SAAS,CAAC;QAGhC,iBAAY,GAAG,IAAI,8CAAY,EAAE,CAAC;QASxC,MAAM,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC,kBAAkB,CAAC,IAAI,CAAC,8CAAQ,CAAC,GAAG,EAAE;YAC1E,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAAe,EAAE,EAAE;YAChC,IAAI,MAAM,EAAE;gBACV,IAAI,CAAC,eAAe,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aAC5C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED,QAAQ;QACN,iCAAiC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,8CAAQ,CAAC,GAAG,EAAE;YAC/D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YACrB,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC3B,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,8CAA8C,GAAG,KAAK,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC;IACjC,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC;SACjC;IACH,CAAC;IAEO,WAAW,CAAC,IAAqB;QACtC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACtB,IAAI,IAAI,CAAC,QAAQ,CAAC,cAAc,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE;YAC7D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;YAClC,IAAI,CAAC,QAAQ,GAAG,wEAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC;SACjD;aACI;YACH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;IACH,CAAC;IAEM,aAAa;QAClB,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,kBAAkB,EAAgB,CAAC,CAAC;QAChG,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,8CAAQ,CAAC,GAAG,EAAE;YACnF,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YAClC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACpD,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,MAA4D,EAAE,EAAE;YAC7E,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,CAAC;YACrC,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,mFAAe,CAAC,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;QACvD,CAAC,EAAE,KAAK,CAAC,EAAE;YACT,OAAO,CAAC,GAAG,CAAC,2BAA2B,GAAG,KAAK,CAAC,CAAC;QACnD,CAAC,CAAC,CAAC;IACL,CAAC;;kFAlEU,iBAAiB;+GAAjB,iBAAiB;;;;;;QChB9B,sHAgBU;QACV,qHAKU;;QAtBmC,kFAAkB;QAiBlB,0DAAmB;QAAnB,mFAAmB;;;;;;;;;;;;;;;;;;AChBjC;;AAMxB,MAAM,cAAc;IAezB,4HAA4H;IAC5H;QAfA,4HAA4H;QAC5H,wBAAwB;QACxB,YAAO,GAAoB,IAAI,yCAAO,EAAU,CAAC;QACjD,iBAAY,GAAoB,IAAI,yCAAO,EAAU,CAAC;QACtD,0BAAqB,GAAgD,IAAI,yCAAO,EAAsC,CAAC;QACvH,mBAAc,GAAgD,IAAI,yCAAO,EAAsC,CAAC;QAChH,qBAAgB,GAAqB,IAAI,yCAAO,EAAW,CAAC;QAC5D,0BAAqB,GAAgD,IAAI,yCAAO,EAAsC,CAAC;QACvH,kCAA6B,GAAgD,IAAI,yCAAO,EAAsC,CAAC;QAC/H,6BAAwB,GAAoB,IAAI,yCAAO,EAAU,CAAC;QAClE,+BAA0B,GAAqB,IAAI,yCAAO,EAAW,CAAC;QACtE,uBAAkB,GAAqB,IAAI,yCAAO,EAAW,CAAC;QAC9D,wBAAmB,GAAgD,IAAI,yCAAO,EAAsC,CAAC;QACrH,uBAAkB,GAAgD,IAAI,yCAAO,EAAsC,CAAC;IAEpG,CAAC;IAEjB,yCAAyC;IACzC,gGAAgG;IACzF,6BAA6B,CAAC,KAAyC;QAC5E,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IACD,sDAAsD;IACtD,0CAA0C;IACnC,+BAA+B,CAAC,KAAyC;QAC9E,IAAI,CAAC,6BAA6B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,uGAAuG;IAChG,0BAA0B,CAAC,KAAa;QAC7C,IAAI,CAAC,wBAAwB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IACD,8EAA8E;IAC9E,sBAAsB;IACf,iCAAiC,CAAC,KAAc;QACrD,IAAI,CAAC,0BAA0B,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,kCAAkC;IAClC,+EAA+E;IACxE,gBAAgB,CAAC,KAAa;QACnC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;IACD,4BAA4B;IAC5B,4GAA4G;IACrG,qBAAqB,CAAC,KAAa;QACxC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAChC,CAAC;IACD,yBAAyB;IACzB,qBAAqB;IACd,uBAAuB,CAAC,KAAyC;QACtE,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IACD,yBAAyB;IAClB,yBAAyB,CAAC,KAAc;QAC7C,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;IACD,+BAA+B;IACxB,+BAA+B,CAAC,MAAe;QACpD,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvC,CAAC;IAEM,4BAA4B,CAAC,KAAyC;QAC3E,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACvC,CAAC;IACM,2BAA2B,CAAC,KAAyC;QAC1E,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACtC,CAAC;;4EAnEU,cAAc;+GAAd,cAAc,WAAd,cAAc,mBAFb,MAAM;;;;;;;;;;;;;;;;;ACJW;;AAMxB,MAAM,WAAW;IAWtB;QAVA,wDAAwD;QACxD,wBAAwB;QACxB,gBAAW,GAAqB,IAAI,yCAAO,EAAW,CAAC;QACvD,eAAU,GAAoB,IAAI,yCAAO,EAAU,CAAC;QACpD,cAAS,GAAiB,IAAI,yCAAO,EAAO,CAAC;QAC7C,wDAAwD;QACjD,sBAAiB,GAAW,CAAC,CAAC;IAIrB,CAAC;IAEV,mBAAmB,CAAC,KAAc;QACvC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/B,CAAC;IAEM,WAAW,CAAC,WAAuB;QACxC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACnC,CAAC;IAEM,mBAAmB,CAAC,KAAa;QACtC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC9B,CAAC;;sEAxBU,WAAW;4GAAX,WAAW,WAAX,WAAW,mBAFV,MAAM;;;;;;;;;;;;;;;;ACL0E;AAGvF,MAAM,iCAAkC,SAAQ,6FAAc;IAInE,YAAY,SAAyB;QACnC,KAAK,EAAE,CAAC;QAER,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE;YAC3C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;SAC/B;aACI;YACH,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;SAChC;QAED,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;QAC/C,IAAI,SAAS,CAAC,cAAc,KAAK,IAAI,IAAI,SAAS,CAAC,cAAc,KAAK,EAAE,IAAI,SAAS,CAAC,cAAc,KAAK,SAAS,EAAE;YAClH,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC,SAAS,GAAG,KAAK,GAAG,SAAS,CAAC,cAAc,CAAC;SACpF;aACI;YACH,IAAI,CAAC,oBAAoB,GAAG,SAAS,CAAC,SAAS,CAAC;SACjD;IACH,CAAC;CACF;;;;;;;;;;;;;;;;;;;;;;;;;;IEvB+C,uEAA0C;IAAA,uDAAyD;IAAA,4DAAO;;;IAAhE,0DAAyD;IAAzD,uIAAyD;;;IAA/I,qEAA4C;IAAA,2HAA0G;IAAA,4DAAK;;;IAAxG,0DAAiC;IAAjC,mGAAiC;;;IAFxF,sEAAsB;IAElB,kHAA2J;IAC7J,4DAAK;;;IADe,0DAAwB;IAAxB,iGAAwB;;;IAI9C,oEAAmB;IAAI,qEAAU;IAAA,4DAAK;;;IAUlC,qEAA6B;IACvB,uDAAY;IAAA,4DAAK;IACrB,qEAAI;IAAA,uDAAa;IAAA,4DAAK;;;IADlB,0DAAY;IAAZ,0EAAY;IACZ,0DAAa;IAAb,2EAAa;;;IAVvB,2EAA+E;IAGrE,+DAAI;IAAA,4DAAK;IACb,qEAAI;IAAA,gEAAK;IAAA,4DAAK;IAGlB,wEAAO;IACL,oHAGK;IACP,4DAAQ;;;IAJY,0DAAS;IAAT,kFAAS;;ADRxB,MAAM,kBAAkB;IAK7B,YAAY,IAAgB,EAAsB,OAAe,EACvD,WAAwB,EAAU,WAAwB;QAA1D,gBAAW,GAAX,WAAW,CAAa;QAAU,gBAAW,GAAX,WAAW,CAAa;QAL7D,cAAS,GAAsB,EAAE,CAAC;QAClC,aAAQ,GAAkB,IAAI,CAAC;QAC/B,WAAM,GAAS,EAAE,CAAC;QAIvB,IAAI,CAAC,GAAG,CAAoB,OAAO,GAAG,iBAAiB,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;YAC1E,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;QAC1B,CAAC,EAAE,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;QAClC,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAE,CAAC,CAAC,CAAC;QAChD,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAE,CAAC,CAAC,CAAC;QACjD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,sCAAsC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9F,CAAC;;oFAfU,kBAAkB,iMAKS,UAAU;gHALrC,kBAAkB;QCX/B,wEAAoB;QAAA,2EAAgB;QAAA,4DAAK;QAEzC,oEAAG;QAAA,qHAA0D;QAAA,4DAAI;QACjE,8GAKM;QACN,0GAA0C;QAE1C,kHAaQ;;QArBF,0DAAc;QAAd,8EAAc;QAMhB,0DAAa;QAAb,6EAAa;QAEgD,0DAAY;QAAZ,4EAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;IEczE,0EAAqF;;;;IAOjF,6EACF;IAAA,4DAAI;;IAND,0DAAyC;IAAzC,6IAAyC;;ADjB3C,MAAM,aAAa;IAMxB,YAAoB,WAAwB,EAAU,eAAgC;QAAlE,gBAAW,GAAX,WAAW,CAAa;QAAU,oBAAe,GAAf,eAAe,CAAiB;QAJ/E,2BAAsB,GAAY,KAAK;IAI4C,CAAC;IAE3F,QAAQ;QACN,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE;YACxC,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACtB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;YACjD,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,IAAI,cAAc,CAAC,EAAE,SAAS;QAClF,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,kBAAkB,KAAK,IAAI,CAAC,sBAAsB,GAAG,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,EAAE,EAAC,CAAC;IAElF,gBAAgB,CAAC,IAAY;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QACvB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;IACrC,CAAC;IAEM,QAAQ;QACb,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QACvC,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;IACtC,CAAC;IAEM,YAAY;QACjB,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;IACvB,CAAC;;0EAhCU,aAAa;2GAAb,aAAa;QCV1B,yEAAyC;QACwC,kEAAO;QAAA,4DAAK;QAC3F,yEAA4B;QAGtB,iTACA;QAAA,0EAA+C;QAA0E,yEAAc;QAAA,4DAAI;QAAQ,2FACjJ;QAAA,2EAA+C;QAAqE,2FAA+B;QAAA,4DAAI;QAAQ,8XACnK;QAAA,4DAAI;QACJ,qEAAG;QACD,yZACF;QAAA,4DAAI;QACJ,uEAAK;QAAA,iGAAqC;QAAA,4DAAM;QAChD,sEAAI;QAEA,kJACF;QAAA,4DAAK;QACL,sEAAI;QACF,8JACF;QAAA,4DAAK;QAEP,qEAAG;QACD,8MAAiJ;QAAA,2EAA+C;QAAqC,wDAAgB;QAAA,4DAAI;QAAO,8DAClQ;QAAA,4DAAI;QAEN,2GASM;QACR,4DAAM;QAGR,gFACuH;QADzF,0IAAU,wBAAoB,IAAC;;QAE3D,2EAAmC;QAE/B,oIACF;QAAA,4DAAI;QACJ,2EAAgC;QAG5B,sIAAS,cAAU,IAAC;;;;;QAAC,8DAAE;QAAA,4DAAS;QAClC,8EAE2B;QAAzB,sIAAS,kBAAc,IAAC;;;;;QAAC,kEAAM;QAAA,4DAAS;;QA5B2J,2DAAiC;QAAjC,2JAAiC;QAAC,0DAAgB;QAAhB,iFAAgB;QAG1N,0DAAoD;QAApD,yJAAoD;QAazB,0DAAsB;QAAtB,+EAAsB;QAQlC,0DAAuC;QAAvC,oIAAuC;QAD/D,+IAAyC;QAIjB,0DAAuC;QAAvC,oIAAuC;QAD/D,+IAAyC;;;;;;;;;;;;;;;;;;;;;;AChDqB;AAEM;;;;;;;;;ICM1F,uEAA6B;IAAA,uDAAoB;IAAA,4DAAO;;;IAA3B,0DAAoB;IAApB,wFAAoB;;;IACjD,oEAAgE;;;IAArC,4JAA8B;;ADCtD,MAAM,sBAAsB;IAYjC,YAAoB,MAAc,EAAU,aAAoC;QAA5D,WAAM,GAAN,MAAM,CAAQ;QAAU,kBAAa,GAAb,aAAa,CAAuB;QAVhF,UAAK,GAAW,EAAE,CAAC;QACV,cAAS,GAAS,MAAM,CAAC;QACzB,eAAU,GAAW,MAAM,CAAC;QAC5B,cAAS,GAAW,MAAM,CAAC;QAC3B,qBAAgB,GAAW,EAAE,CAAC;QAC9B,yBAAoB,GAAqC,oEAA0B,CAAC;QACpF,kBAAa,GAAW,KAAK,CAAC;QAEvC,kBAAa,GAAwB,IAAI,CAAC,aAAa,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,mEAAyB,CAAC,CAAC,CAAC,mEAAyB,CAAC;IAExC,CAAC;IAErF,QAAQ;QAEN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,YAAY,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC;IACjI,CAAC;;4FAjBU,sBAAsB;oHAAtB,sBAAsB;;;;;;QCVnC,yEAIgC;QAC9B,+EAAiN;;QACnN,4DAAM;QACN,0FAAgC;QAC5B,oHAAwD;QACxD,kHAAgE;QACpE,4DAAiB;;;QAVZ,uEAAyB;QAKZ,0DAAe;QAAf,4EAAe;QAGtB,0DAAoB;QAApB,oFAAoB;QACrB,0DAAmB;QAAnB,mFAAmB;;;;;;;;;;;;;;;;ACTtB,MAAM,WAAW,GAAG;IACzB,UAAU,EAAE,KAAK;IACjB,SAAS,EAAE;QACT,OAAO,EAAE,0CAA0C;KACpD;IACD,aAAa,EAAE,isBAAisB;CACjtB,CAAC;;;;;;;;;;;;;;;;;;;;;ACN6C;AAEK;AAEP;AACY;AAEzD,qFAAqF;AACrF,IAAI,gFAAyB,EAAE;IAC7B,4EAA4B,CAAC,gFAAyB,CAAC,CAAC;CACzD;KACI;IACH,4EAA4B,CAAC,isBAAisB,CAAC,CAAC;CACjuB;AAEM,SAAS,UAAU;IACxB,OAAO,QAAQ,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACvD,CAAC;AAED,MAAM,SAAS,GAAG;IAChB,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,IAAI,EAAE,EAAW,EAAE;CACnE,CAAC;AAEF,IAAI,6EAAsB,EAAE;IAC1B,6DAAc,EAAE,CAAC;CAClB;AAED,uEAAuB,SAAS,CAAC,CAAC,eAAe,CAAC,sDAAS,CAAC;KACzD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC","sources":["./src/app/about/about.component.ts","./src/app/about/about.component.html","./src/app/ag-grid/components/editors/cas-number-cell-editor/cas-number-cell-editor.component.ts","./src/app/ag-grid/components/editors/cas-number-cell-editor/cas-number-cell-editor.component.html","./src/app/ag-grid/components/editors/date-cell-editor/date-cell-editor.component.ts","./src/app/ag-grid/components/editors/date-cell-editor/date-cell-editor.component.html","./src/app/ag-grid/components/editors/ng-select-editor/ng-select-editor.component.ts","./src/app/ag-grid/components/editors/ng-select-editor/ng-select-editor.component.html","./src/app/ag-grid/components/editors/numeric-cell-editor/numeric-cell-editor.component.ts","./src/app/ag-grid/components/editors/numeric-cell-editor/numeric-cell-editor.component.html","./src/app/ag-grid/components/editors/radio-button-cell-editor/radio-button-cell-editor.component.ts","./src/app/ag-grid/components/editors/radio-button-cell-editor/radio-button-cell-editor.component.html","./src/app/ag-grid/components/editors/settable-checkbox-editor/settable-checkbox-editor.component.ts","./src/app/ag-grid/components/editors/settable-checkbox-editor/settable-checkbox-editor.component.html","./src/app/ag-grid/components/editors/settable-text-cell-editor/settable-text-cell-editor.component.ts","./src/app/ag-grid/components/editors/settable-text-cell-editor/settable-text-cell-editor.component.html","./src/app/ag-grid/components/editors/user-role-cell-editor/user-role-cell-editor.component.ts","./src/app/ag-grid/components/editors/user-role-cell-editor/user-role-cell-editor.component.html","./src/app/ag-grid/components/renderers/admin-functions-cell/admin-functions-cell.component.ts","./src/app/ag-grid/components/renderers/admin-functions-cell/admin-functions-cell.component.html","./src/app/ag-grid/components/renderers/always-active-checkbox-cell/always-active-checkbox-cell.component.ts","./src/app/ag-grid/components/renderers/always-active-checkbox-cell/always-active-checkbox-cell.component.html","./src/app/ag-grid/components/renderers/amend-cell/amend-cell.component.ts","./src/app/ag-grid/components/renderers/amend-cell/amend-cell.component.html","./src/app/ag-grid/components/renderers/approve-deny-delete-cell/approve-deny-delete-cell.component.ts","./src/app/ag-grid/components/renderers/approve-deny-delete-cell/approve-deny-delete-cell.component.html","./src/app/ag-grid/components/renderers/checkbox-renderer/checkbox-renderer.component.ts","./src/app/ag-grid/components/renderers/checkbox-renderer/checkbox-renderer.component.html","./src/app/ag-grid/components/renderers/date-cell-renderer/date-cell-renderer.component.ts","./src/app/ag-grid/components/renderers/date-cell-renderer/date-cell-renderer.component.html","./src/app/ag-grid/components/renderers/download-xml-cell/download-xml-cell.component.ts","./src/app/ag-grid/components/renderers/download-xml-cell/download-xml-cell.component.html","./src/app/ag-grid/components/renderers/edit-delete-cell/edit-delete-cell.component.ts","./src/app/ag-grid/components/renderers/edit-delete-cell/edit-delete-cell.component.html","./src/app/ag-grid/components/renderers/edit-history-cell/edit-history-cell.component.ts","./src/app/ag-grid/components/renderers/edit-history-cell/edit-history-cell.component.html","./src/app/ag-grid/components/renderers/header-button-renderer/header-button-renderer.component.ts","./src/app/ag-grid/components/renderers/header-button-renderer/header-button-renderer.component.html","./src/app/ag-grid/components/renderers/history-cell-renderer/history-cell-renderer.component.ts","./src/app/ag-grid/components/renderers/history-cell-renderer/history-cell-renderer.component.html","./src/app/ag-grid/components/renderers/impersonate-user-cell/impersonate-user-cell.component.ts","./src/app/ag-grid/components/renderers/impersonate-user-cell/impersonate-user-cell.component.html","./src/app/ag-grid/components/renderers/inline-editor-cell-renderer/inline-editor-cell-renderer.component.ts","./src/app/ag-grid/components/renderers/inline-editor-cell-renderer/inline-editor-cell-renderer.component.html","./src/app/ag-grid/components/renderers/open-delete-cell/open-delete-cell.component.ts","./src/app/ag-grid/components/renderers/open-delete-cell/open-delete-cell.component.html","./src/app/ag-grid/components/renderers/open-rollback-cell/open-rollback-cell.component.ts","./src/app/ag-grid/components/renderers/open-rollback-cell/open-rollback-cell.component.html","./src/app/ag-grid/components/renderers/radio-button-cell-renderer/radio-button-cell-renderer.component.ts","./src/app/ag-grid/components/renderers/radio-button-cell-renderer/radio-button-cell-renderer.component.html","./src/app/ag-grid/components/renderers/send-activation-email-cell/send-activation-email-cell.component.ts","./src/app/ag-grid/components/renderers/send-activation-email-cell/send-activation-email-cell.component.html","./src/app/ag-grid/components/renderers/unlock-user-cell/unlock-user-cell.component.ts","./src/app/ag-grid/components/renderers/unlock-user-cell/unlock-user-cell.component.html","./src/app/ag-grid/components/renderers/validated-field-cell-renderer/validated-field-cell-renderer.component.ts","./src/app/ag-grid/components/renderers/validated-field-cell-renderer/validated-field-cell-renderer.component.html","./src/app/ag-grid/ff-ag-grid.module.ts","./src/app/ag-grid/models/disclosure-validation-id-type.enum.ts","./src/app/ag-grid/models/inline-editor-cell-renderer/inline-editor-trigger-action-type.enum.ts","./src/app/ag-grid/services/ag-grid-helper-service.ts","./src/app/ag-grid/services/grid.service.ts","./src/app/api-authorization/api-authorization.constants.ts","./src/app/api-authorization/authorize.interceptor.ts","./src/app/api-authorization/authorize.service.ts","./src/app/api-authorization/guards/authorize-by-role.guard.ts","./src/app/api-authorization/guards/authorize.guard.ts","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/common/common.module.ts","./src/app/common/components/dashboard-notifications/dashboard-notifications.component.ts","./src/app/common/components/dashboard-notifications/dashboard-notifications.component.html","./src/app/common/components/dashboard/dashboard.component.ts","./src/app/common/components/dashboard/dashboard.component.html","./src/app/common/components/disclosure-list/disclosure-list.component.ts","./src/app/common/components/disclosure-list/disclosure-list.component.html","./src/app/common/components/disclosure-search/disclosure-search.component.ts","./src/app/common/components/disclosure-search/disclosure-search.component.html","./src/app/common/components/filter-download/filter-download.component.ts","./src/app/common/components/filter-download/filter-download.component.html","./src/app/common/components/recaptcha-base/recaptcha-base-component.ts","./src/app/common/components/switch-organization/switch-organization.component.ts","./src/app/common/components/switch-organization/switch-organization.component.html","./src/app/common/functions/date-string-to-utc-date.function.ts","./src/app/common/functions/is-not-null-or-empty.function.ts","./src/app/common/models/disclosures/cas-number-short.model.ts","./src/app/common/models/enums/lu-status.enum.ts","./src/app/common/models/enums/third-party-chemical-status.enum.ts","./src/app/common/models/organizations/org-role.model.ts","./src/app/common/models/organizations/organization.model.ts","./src/app/common/models/perimitted-roles.model.ts","./src/app/common/models/system-roles-enum.ts","./src/app/common/models/users/ff-user-with-roles.model.ts","./src/app/common/models/users/ff-user.model.ts","./src/app/common/models/users/org-role-type.enum.ts","./src/app/common/models/users/user-mapping-with-related-orgs.model.ts","./src/app/common/pipes/safe-html.pipe.ts","./src/app/common/services/auth.service.ts","./src/app/common/services/disclosure.service.ts","./src/app/common/services/dropdown.service.ts","./src/app/common/services/file.service.ts","./src/app/common/services/ingredient.service.ts","./src/app/common/services/logging.service.ts","./src/app/common/services/permissions.service.ts","./src/app/common/services/recaptcha.service.ts","./src/app/common/services/reports.service.ts","./src/app/common/services/user.service.ts","./src/app/common/services/utilities.service.ts","./src/app/common/ui/components/breadcrumbs/breadcrumbs.component.ts","./src/app/common/ui/components/breadcrumbs/breadcrumbs.component.html","./src/app/common/ui/components/footer/footer.component.ts","./src/app/common/ui/components/footer/footer.component.html","./src/app/common/ui/components/header/header.component.ts","./src/app/common/ui/components/header/header.component.html","./src/app/common/ui/components/icon-button/icon-button-color-enum.pipe.ts","./src/app/common/ui/components/icon-button/icon-button-color.enum.ts","./src/app/common/ui/components/icon-button/icon-button.component.ts","./src/app/common/ui/components/icon-button/icon-button.component.html","./src/app/common/ui/components/main-nav/canaccess.directive.ts","./src/app/common/ui/components/main-nav/main-nav.component.ts","./src/app/common/ui/components/main-nav/main-nav.component.html","./src/app/common/ui/components/main-nav/nav-sub-menu-header.directive.ts","./src/app/common/ui/components/main-nav/nav-sub-menu-item.directive.ts","./src/app/common/ui/components/main-nav/nav-sub-menu-parent.directive.ts","./src/app/common/ui/components/user-info/user-info.component.ts","./src/app/common/ui/components/user-info/user-info.component.html","./src/app/common/ui/services/main-nav.service.ts","./src/app/common/ui/services/main.service.ts","./src/app/disclosure/components/ingredients/cas-number-dropdown/cas-number-with-ng-select-display-field.model.ts","./src/app/fetch-data/fetch-data.component.ts","./src/app/fetch-data/fetch-data.component.html","./src/app/home/home.component.ts","./src/app/home/home.component.html","./src/app/popper-tool-tip/popper-tool-tip.component.ts","./src/app/popper-tool-tip/popper-tool-tip.component.html","./src/environments/environment.devtest.ts","./src/main.ts"],"sourcesContent":["import { Component, OnInit } from '@angular/core';\r\nimport { DropdownService } from '../common/services/dropdown.service';\r\n\r\n@Component({\r\n selector: 'app-about',\r\n templateUrl: './about.component.html',\r\n styleUrls: ['./about.component.scss']\r\n})\r\nexport class AboutComponent implements OnInit {\r\n public isOpenPageModalShowing: boolean = false\r\n public linkToOpen: string = '';\r\n globalDefaults: any[] | null;\r\n public supportEmail: any;\r\n\r\n constructor(private dropdownService: DropdownService) { }\r\n\r\n ngOnInit(): void {\r\n this.dropdownService.getGlobalDefaults().then(gd => {\r\n this.supportEmail = gd.find(x => x.globalDefaultId == \"SupportEmail\")?.textValue\r\n });\r\n }\r\n\r\n public closeOpenPageModal() { this.isOpenPageModalShowing = false, this.linkToOpen = '' }\r\n\r\n public openExternalLink(link: string) {\r\n this.linkToOpen = link;\r\n this.isOpenPageModalShowing = true;\r\n }\r\n\r\n public handleOk() {\r\n window.open(this.linkToOpen, \"_blank\");\r\n this.isOpenPageModalShowing = false;\r\n }\r\n\r\n public handleCancel() {\r\n this.isOpenPageModalShowing = false;\r\n this.linkToOpen = '';\r\n }\r\n\r\n}\r\n","
\r\n

About

\r\n
\r\n

\r\n FracFocus is managed by the Ground Water Protection Council. The original development of FracFocus was a\r\n joint effort between the Ground Water Protection Council (GWPC) and the Interstate Oil and Gas Compact\r\n Commission (IOGCC). FracFocus has been developed, and will continue to be refined, based on the goals laid\r\n out in 2010 by members of both GWPC and IOGCC: to disseminate information on the chemical constituents used\r\n in hydraulic fracturing through the regulatory authority of the states.. The main goals of this site are to\r\n provide a central warehousing site for industry to provide chemical constituent data, on a well-by-well\r\n basis, and provide education on the processes and chemicals used to hydraulically fracture an oil and gas\r\n well in the U.S. For more information please visit the \r\n \r\n FracFocus Public Site\r\n or email FracFocus Industry support at: {{supportEmail}}.\r\n

\r\n

\r\n Note: Use of this website and the data made available on the website is covered under the “Web\r\n Site Terms and Conditions of Use” document. This document is available from a link at the bottom of the\r\n page.\r\n

\r\n
\r\n Ground Water Protection Council\r\n

The Ground Water Protection Council is a national association of state ground water and underground\r\n injection control agencies whose mission is to promote the protection and conservation of ground water\r\n resources for all beneficial uses, recognizing ground water as a critical component of the ecosystem.\r\n

\r\n

The Ground Water Protection Council provides a forum for stakeholder communication and research in order\r\n to improve governments’ role in the protection and conservation of ground water.

\r\n
\r\n
\r\n
\r\n\r\n
\r\n

\r\n The system is about to open an external page, do you wish to continue?\r\n

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport { AfterViewInit, Component, ElementRef, HostListener, OnDestroy, ViewChild } from '@angular/core';\r\nimport { IngredientService } from '../../../../common/services/ingredient.service';\r\nimport { CASNumber } from '../../../../common/models/disclosures/cas-number.model';\r\nimport { ICASNumberCellEditorParams } from '../../../models/cas-number-cell-editor-params.model';\r\nimport { CASNumberWithNgSelectDisplayField } from '../../../../disclosure/components/ingredients/cas-number-dropdown/cas-number-with-ng-select-display-field.model';\r\nimport { CASNumberShort } from '../../../../common/models/disclosures/cas-number-short.model';\r\nimport { NgSelectComponent } from '@ng-select/ng-select';\r\nimport { Ingredient } from '../../../../common/models/disclosures/ingredient.model';\r\nimport { SettableTextCellEditorComponent } from '../settable-text-cell-editor/settable-text-cell-editor.component';\r\nimport { ColumnResizedEvent, GridApi, TextCellEditor } from 'ag-grid-community';\r\nimport { isNotNullOrEmpty } from '../../../../common/functions/is-not-null-or-empty.function';\r\nimport { debounceTime, distinctUntilChanged, Subject, Subscription } from 'rxjs';\r\nimport { OnLeavingEditorParams } from '../../../models/base-cell-editor/on-leaving-editor-params.model';\r\n\r\n@Component({\r\n selector: 'cas-number-cell-editor',\r\n templateUrl: './cas-number-cell-editor.component.html',\r\n styleUrls: ['./cas-number-cell-editor.component.scss']\r\n})\r\nexport class CASNumberCellEditorComponent implements ICellEditorAngularComp, AfterViewInit, OnDestroy {\r\n private params: ICASNumberCellEditorParams;\r\n public casNumberValue: string;\r\n public casShortNumberValue: CASNumberWithNgSelectDisplayField;\r\n public cellWidth: string = \"\";\r\n public cellHeight: string = \"\";\r\n public isValid: boolean = false;\r\n public itemExistsAlready: boolean = true;\r\n public existingCASNumbers: Array = [];\r\n public existingCASNumbersWithNgSelectDisplayField: Array = [];\r\n private inlineEditorColId: string = \"inlineEditor\";\r\n private subscription: Subscription = new Subscription();\r\n public originalValue: string = \"\";\r\n private readonly currentValue = new Subject();\r\n private ingredientNamePatchInfo: { fieldToPatch: string, valueToPatch: any } = null;\r\n\r\n @ViewChild('casDropdown') dropdown: NgSelectComponent;\r\n @ViewChild('casInput') casInput: ElementRef;\r\n\r\n constructor(private ingredientService: IngredientService) {\r\n }\r\n\r\n public agInit(params: ICASNumberCellEditorParams): void {\r\n this.params = params;\r\n\r\n if (params) {\r\n\r\n if (this.params.dataChangedEvent) {\r\n this.subscription.add(this.currentValue\r\n .pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe((currentValue) => {\r\n if (this.params.dataChangedEvent) {\r\n this.params.dataChangedEvent.emit({ value: currentValue, field: this.params.colDef.field, itemId: this.params.node.id });\r\n }\r\n this.validateCasNumber();\r\n }));\r\n }\r\n\r\n this.existingCASNumbers = params.existingCasNumbers;\r\n if (params.existingCasNumbers && params.existingCasNumbers.length > 0)\r\n this.existingCASNumbersWithNgSelectDisplayField = this.buildCASNumbersWithDisplayFields(params.existingCasNumbers);\r\n\r\n if (params.inlineEditorColId !== null && params.inlineEditorColId !== undefined)\r\n this.inlineEditorColId = params.inlineEditorColId;\r\n }\r\n\r\n (this.params.api as GridApi).addEventListener(\"columnResized\",\r\n (event: ColumnResizedEvent) => {\r\n if ((event.column && event.column.getId() == this.params.colDef.colId) || event.column === null || this.params.colDef.colId === undefined)\r\n this.cellWidth = (params.column.getActualWidth()) - 23 + 'px';\r\n }\r\n );\r\n\r\n this.setInitialState(this.params);\r\n this.cellWidth = (params.column.getActualWidth()) - 23 + 'px';\r\n this.cellHeight = (params.node.rowHeight) + 'px';\r\n this.isValid = this.ingredientService.isFracCasValid(this.casNumberValue) && isNotNullOrEmpty(this.casNumberValue);\r\n\r\n }\r\n\r\n public ngAfterViewInit() {\r\n this.checkForMatchesInExistingCasNumbers(this.params.value, true);\r\n this.validateCasNumber();\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.focusOut();\r\n\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n buildCASNumbersWithDisplayFields(casNumbers: Array): Array {\r\n let builtCasNumbers: Array = [];\r\n casNumbers.forEach(x => builtCasNumbers.push(new CASNumberWithNgSelectDisplayField(x)));\r\n return builtCasNumbers;\r\n }\r\n\r\n setInitialState(params: ICASNumberCellEditorParams) {\r\n if (params.value != undefined && params.value != null) {\r\n this.originalValue = JSON.parse(JSON.stringify(params.value));\r\n }\r\n this.casNumberValue = params.value;\r\n this.checkForMatchesInExistingCasNumbers(params.value, true);\r\n this.handleExpandingClaimantInfo();\r\n }\r\n\r\n getValue(): any {\r\n return this.casNumberValue;\r\n }\r\n\r\n afterGuiAttached(): void {\r\n let focusedCell = this.params.api.getFocusedCell();\r\n if (!focusedCell) {\r\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.colDef.colId, this.params.node.rowPinned);\r\n focusedCell = this.params.api.getFocusedCell();\r\n } \r\n if (focusedCell.column.getColId() == this.params.colDef.colId) {\r\n this.focusIn();\r\n }\r\n }\r\n\r\n focusOut(): void {\r\n //On focus out, check if the value has changed, and is Valid, if so patch it\r\n if (this.originalValue != this.casNumberValue && this.params.onLeavingEditor) {\r\n let leavingEditorParams = {\r\n data: this.params.data,\r\n patchInfo: [{\r\n fieldToPatch: \"/\" + this.params.colDef.field,\r\n valueToPatch: this.casNumberValue\r\n }]\r\n } as OnLeavingEditorParams;\r\n\r\n if (this.ingredientNamePatchInfo != null) {\r\n leavingEditorParams.patchInfo.push(this.ingredientNamePatchInfo);\r\n }\r\n\r\n this.params.onLeavingEditor(leavingEditorParams);\r\n this.ingredientNamePatchInfo = null;\r\n\r\n this.params.node.data[this.params.colDef.field] = JSON.parse(JSON.stringify(this.casNumberValue));\r\n this.originalValue = JSON.parse(JSON.stringify(this.casNumberValue));\r\n }\r\n };\r\n\r\n focusIn(): void {\r\n if (this.casInput && this.casInput.nativeElement) {\r\n this.casInput.nativeElement.focus();\r\n }\r\n else if (this.dropdown) {\r\n this.dropdown.focus();\r\n }\r\n };\r\n\r\n validateCasNumber() {\r\n this.isValid = this.ingredientService.isFracCasValid(this.casNumberValue) && isNotNullOrEmpty(this.casNumberValue);\r\n this.handleExpandingClaimantInfo();\r\n }\r\n\r\n checkForMatchesInExistingCasNumbers(searchString: string, setMatchingValue:boolean = false) {\r\n if (this.existingCASNumbersWithNgSelectDisplayField && this.existingCASNumbersWithNgSelectDisplayField.length > 0) {\r\n let matchingCASNumbers = this.existingCASNumbersWithNgSelectDisplayField.filter(x => x.numberAndDescription.includes(searchString));\r\n let ingredient = this.params.data as Ingredient;\r\n if (matchingCASNumbers.length > 0) {\r\n let alsoMatchingIngredientName = matchingCASNumbers.filter(x => x.ingredientName.toLowerCase() == ingredient.ingredientName.toLowerCase());\r\n if (setMatchingValue) {\r\n //Check if we have one where the common name matches\r\n if (alsoMatchingIngredientName.length > 0) {\r\n this.casShortNumberValue = alsoMatchingIngredientName[0];\r\n }\r\n else {\r\n\r\n this.casShortNumberValue = searchString != \"\" ? matchingCASNumbers[0] : null;\r\n }\r\n }\r\n this.itemExistsAlready = true;\r\n }\r\n else {\r\n this.existingCASNumbersWithNgSelectDisplayField = this.existingCASNumbersWithNgSelectDisplayField.filter(x => !x.isATemporaryEntry);\r\n this.itemExistsAlready = false;\r\n let newItem = new CASNumberWithNgSelectDisplayField({ casNumber: searchString, ingredientName: \"\" } as CASNumberShort);\r\n this.existingCASNumbersWithNgSelectDisplayField = [...this.existingCASNumbersWithNgSelectDisplayField, newItem];\r\n }\r\n }\r\n }\r\n\r\n stripLeadingZeros(casNumber: string): string {\r\n let fixedString = \"\";\r\n let pastLeadingZeros = false;\r\n if (isNotNullOrEmpty(casNumber)) {\r\n for (let x = 0; x < casNumber.length; x++) {\r\n if (!pastLeadingZeros && casNumber[x] != '0') {\r\n pastLeadingZeros = true;\r\n fixedString += casNumber[x];\r\n }\r\n else {\r\n if (pastLeadingZeros) {\r\n fixedString += casNumber[x];\r\n }\r\n }\r\n }\r\n\r\n return fixedString;\r\n }\r\n\r\n return casNumber;\r\n }\r\n\r\n casNumberDropdownSearch(searchParams: { term: string; items: CASNumberWithNgSelectDisplayField[]; }) {\r\n\r\n let leading0StrippedSearchParams = this.stripLeadingZeros(searchParams.term);\r\n this.dropdown.searchTerm = leading0StrippedSearchParams;\r\n this.dropdown.searchInput.nativeElement.value = leading0StrippedSearchParams;\r\n this.casNumberValue = leading0StrippedSearchParams;\r\n this.validateCasNumber();\r\n if (isNotNullOrEmpty(leading0StrippedSearchParams)) {\r\n this.checkForMatchesInExistingCasNumbers(leading0StrippedSearchParams); \r\n this.emitDataChangedEvent();\r\n }\r\n }\r\n\r\n handleExpandingClaimantInfo() {\r\n if (this.ingredientService.validCASAlternatives.filter(x => x.toLowerCase() == this.casNumberValue.toLowerCase()).length > 0) {\r\n this.params.node.setExpanded(true);\r\n }\r\n else if (this.params.node.expanded) {\r\n this.params.node.setExpanded(false);\r\n (this.params.data as Ingredient).claimantCompany = \"\";\r\n (this.params.data as Ingredient).claimantEmail = \"\";\r\n (this.params.data as Ingredient).claimantFirstName = \"\";\r\n (this.params.data as Ingredient).claimantLastName = \"\";\r\n (this.params.data as Ingredient).claimantPhone = \"\";\r\n }\r\n }\r\n\r\n casNumberDropdownChanged(casNumber: CASNumberWithNgSelectDisplayField) {\r\n this.casNumberValue = casNumber != null ? casNumber.casNumber : \"\";\r\n\r\n let ingredientNameCellEditorInstances = this.params.api.getCellEditorInstances({ columns: ['ingredientName'] });\r\n let ingredientNameCellEditorInstance = ingredientNameCellEditorInstances[0] as SettableTextCellEditorComponent;\r\n if (ingredientNameCellEditorInstance) {\r\n let ingredientName = casNumber != null ? casNumber.ingredientName : \"\";\r\n ingredientNameCellEditorInstance.setValue(ingredientName);\r\n this.ingredientNamePatchInfo = { fieldToPatch: \"/ingredientName\", valueToPatch: ingredientName };\r\n }\r\n\r\n let commonNameCellEditorInstances = this.params.api.getCellEditorInstances({ columns: ['commonName'] });\r\n let commonNameCellEditorInstance = commonNameCellEditorInstances[0] as SettableTextCellEditorComponent;\r\n if (commonNameCellEditorInstance) {\r\n commonNameCellEditorInstance.setValue(casNumber != null ? casNumber.commonName : \"\");\r\n }\r\n\r\n this.validateCasNumber();\r\n this.emitDataChangedEvent();\r\n }\r\n\r\n emitDataChangedEvent(): void {\r\n let valueToEmit = null;\r\n\r\n //Only emit the new value once it's valid, else emit null\r\n if (this.params.dataChangedEvent && this.isValid) {\r\n valueToEmit = this.casNumberValue;\r\n }\r\n\r\n this.params.dataChangedEvent.emit({ value: valueToEmit, field: this.params.colDef.field, itemId: this.params.node.id });\r\n }\r\n\r\n public onKeyUp(event: any): void {\r\n\r\n if (event.key == \"0\") {\r\n }\r\n\r\n this.currentValue.next(event.target.value);\r\n\r\n if (event.key == \"Escape\") {\r\n this.focusOut();\r\n }\r\n }\r\n}\r\n"," 0\" >\r\n \r\n \r\n
{{item.numberAndDescription}}
\r\n
\r\n
\r\n
\r\n\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { ICellEditorAngularComp, ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { dateStringToUtcDate } from '../../../../common/functions/date-string-to-utc-date.function';\r\nimport { IDateCellEditorParams } from '../../../models/date-cell-editor.-params.model';\r\n\r\n@Component({\r\n selector: 'date-cell-editor',\r\n templateUrl: './date-cell-editor.component.html',\r\n styleUrls: ['./date-cell-editor.component.scss']\r\n})\r\nexport class DateCellEditorComponent implements ICellEditorAngularComp {\r\n\r\n private cellName: string = '';\r\n\r\n public data: any;\r\n public originalData: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public readOnly: boolean;\r\n\r\n public dateBind = \"\";\r\n public dateViewBind = \"\";\r\n\r\n public hasError = false;\r\n private params: IDateCellEditorParams;\r\n\r\n @ViewChild('dateInput') input: ElementRef;\r\n\r\n constructor() { }\r\n\r\n agInit(params: IDateCellEditorParams): void {\r\n this.params = params;\r\n this.data = params.data;\r\n //console.log('aginit data', this.data);\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n try {\r\n this.cellName = params?.colDef?.field?.toString() || '';\r\n } catch (ee) {\r\n alert(\"error getting cell name\")\r\n }\r\n if (!this.data) return;\r\n this.originalData = JSON.parse(JSON.stringify(this.data));\r\n this.handleDateData(this.data[this.cellName]);\r\n }\r\n\r\n refresh(params: IDateCellEditorParams): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n handleDateData(date: any) {\r\n //console.log('handledatedata', date);\r\n if (!date) {\r\n console.log('no date in date data');\r\n return;\r\n }\r\n var d = new Date(date);\r\n //console.log('date', d);\r\n this.dateBind = d.getFullYear() + \"-\" + this.pad((d.getMonth() + 1), 2) + \"-\" + this.pad(d.getDate(), 2);\r\n this.dateViewBind = this.genDVB(d);\r\n\r\n }\r\n\r\n public dateUpdated($event: any) {\r\n if (!this.dateBind) {\r\n this.data[this.cellName] = null;\r\n return;\r\n }\r\n var d = new Date(this.dateBind);\r\n console.log('date', d);\r\n this.dateViewBind = this.genDVB(d);\r\n }\r\n\r\n pad(num: number, size: number): string {\r\n let s = num + \"\";\r\n while (s.length < size) s = \"0\" + s;\r\n return s;\r\n }\r\n\r\n public getValue() {\r\n let dateString = dateStringToUtcDate(this.dateBind).toISOString();\r\n return dateString;\r\n }\r\n\r\n private genDVB(d: Date) {\r\n return `${(d.getMonth() + 1)}/${d.getDate()}/${d.getFullYear()}`;\r\n }\r\n\r\n afterGuiAttached(): void {\r\n let focusedCell = this.params.api.getFocusedCell();\r\n if (!focusedCell) {\r\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.colDef.colId, this.params.node.rowPinned);\r\n focusedCell = this.params.api.getFocusedCell();\r\n }\r\n if (focusedCell.column.getColId() == this.params.colDef.colId) {\r\n this.focusIn();\r\n }\r\n }\r\n\r\n focusOut(): void {\r\n };\r\n\r\n focusIn(): void {\r\n if (this.input.nativeElement) {\r\n this.input.nativeElement.focus();\r\n }\r\n };\r\n}\r\n","{{dateViewBind}}\r\n\r\n","import { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\r\nimport { INgSelectEditorParams } from '../../../models/ng-select-editor-params.model';\r\nimport { ColumnResizedEvent, GridApi } from 'ag-grid-community';\r\nimport { NgSelectComponent } from '@ng-select/ng-select';\r\nimport { OnLeavingEditorParams } from '../../../models/base-cell-editor/on-leaving-editor-params.model';\r\nimport { debounceTime, distinctUntilChanged, Subject, Subscription } from 'rxjs';\r\nimport { isNotNullOrEmpty } from '../../../../common/functions/is-not-null-or-empty.function';\r\n\r\n\r\n@Component({\r\n selector: 'ng-select-cell',\r\n templateUrl: './ng-select-editor.component.html',\r\n styleUrls: ['./ng-select-editor.component.scss']\r\n})\r\nexport class NgSelectEditorComponent implements ICellEditorAngularComp, OnDestroy {\r\n\r\n itemChangedHandler: ((result: (any | Array), params: INgSelectEditorParams) => void);\r\n\r\n public isMultiSelect: boolean = false;\r\n public isEnabled: boolean = true;\r\n public clearable: boolean = true;\r\n public bindLabel: string = \"\";\r\n public bindValue: string = \"\";\r\n public placeholder: string = \"\";\r\n public options: any;\r\n public cellWidth: string = \"\";\r\n public cellHeight: string = \"\";\r\n public useBindValue: boolean = false;\r\n public value: any;\r\n public isValid: boolean = false;\r\n public isRequired: boolean = true;\r\n private originalValue: any;\r\n\r\n private params: INgSelectEditorParams;\r\n private subscription: Subscription = new Subscription();\r\n private readonly currentValue = new Subject();\r\n\r\n @ViewChild('bindValueNgSelect') bindValueInput: NgSelectComponent;\r\n @ViewChild('nonBindValueNgSelect') nonBindValueInput: NgSelectComponent;\r\n\r\n public agInit(params: INgSelectEditorParams): void {\r\n this.params = params;\r\n\r\n (this.params.api as GridApi).addEventListener(\"columnResized\",\r\n (event: ColumnResizedEvent) => {\r\n if ((event.column && event.column.getId() == this.params.colDef.colId) || event.column === null || this.params.colDef.colId === undefined) {\r\n this.cellWidth = (params.column.getActualWidth()) - 2 + 'px';\r\n this.cellHeight = (params.node.rowHeight) + 'px';\r\n }\r\n }\r\n );\r\n\r\n if (params.isValid != null && params.isValid != undefined) {\r\n if (params.isValid instanceof Function) {\r\n if (params.initialDisclosureValidationStatements && params.initialDisclosureValidationStatements.length > 0)\r\n this.isValid = params.isValid(params.initialDisclosureValidationStatements, this.params.fieldName, this.params.idType, this.params.node.id);\r\n }\r\n else\r\n this.isValid = params.isValid;\r\n }\r\n else\r\n this.isValid = true;\r\n\r\n if (this.params.dataChangedEvent) {\r\n this.subscription.add(this.currentValue\r\n .pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe((currentValue) => {\r\n this.params.dataChangedEvent.emit({ value: currentValue, field: this.params.colDef.field, itemId: this.params.node.id });\r\n this.checkValidity(currentValue);\r\n }));\r\n }\r\n\r\n if (params.isRequired != null && params.isRequired != undefined) {\r\n this.isRequired = params.isRequired;\r\n this.checkValidity(params.value);\r\n }\r\n else\r\n this.isRequired = false;\r\n\r\n this.isMultiSelect = params.isMultiSelect;\r\n if (params.isEnabled)\r\n this.isEnabled = params.isEnabled(params);\r\n else\r\n this.isEnabled = true;\r\n if (params.clearable != null && params.clearable != undefined)\r\n this.clearable = params.clearable;\r\n this.bindLabel = params.bindLabel;\r\n this.bindValue = params.bindValue;\r\n this.placeholder = params.placeholder;\r\n this.itemChangedHandler = params.itemChangedEventHandler;\r\n this.useBindValue = params.bindValue != null && params.bindValue != undefined && params.bindValue != \"\";\r\n this.options = params.options;\r\n this.setInitialState(this.params);\r\n this.cellWidth = params.column.getActualWidth() - 2 + 'px';\r\n this.cellHeight = params.node.rowHeight + 'px';\r\n\r\n }\r\n\r\n private checkValidity(currentValue: any): void {\r\n this.isValid = (this.isRequired && (currentValue === \"\" || currentValue === null || currentValue === undefined)) ? false : true;\r\n }\r\n\r\n setInitialState(params: INgSelectEditorParams) {\r\n this.value = params.value;\r\n this.originalValue = JSON.parse(JSON.stringify(params.value));\r\n this.checkValidity(params.value);\r\n if (this.params.dataChangedEvent) {\r\n this.params.dataChangedEvent.emit({ value: params.value, field: this.params.colDef.field, itemId: this.params.node.id });\r\n }\r\n }\r\n\r\n getValue(): any {\r\n return this.value;\r\n }\r\n\r\n afterGuiAttached(): void {\r\n let focusedCell = this.params.api.getFocusedCell();\r\n if (!focusedCell) {\r\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.colDef.colId, this.params.node.rowPinned);\r\n focusedCell = this.params.api.getFocusedCell();\r\n }\r\n if (focusedCell.column.getColId() == this.params.colDef.colId) {\r\n this.focusIn();\r\n }\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.focusOut();\r\n\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n focusOut(): void {\r\n //On focus out, check if the value has changed, if so patch it\r\n if (this.originalValue != this.value && this.params.onLeavingEditor && !this.params.node.isRowPinned()) {\r\n this.params.onLeavingEditor({\r\n data: this.params.data,\r\n patchInfo: [{\r\n fieldToPatch: \"/\" + this.params.colDef.field,\r\n valueToPatch: this.value\r\n }]\r\n } as OnLeavingEditorParams);\r\n\r\n this.params.node.data[this.params.colDef.field] = JSON.parse(JSON.stringify(this.value));\r\n this.originalValue = JSON.parse(JSON.stringify(this.value));\r\n }\r\n };\r\n\r\n focusIn(): void {\r\n let input: NgSelectComponent = null;\r\n if (this.useBindValue && this.bindValueInput) {\r\n input = this.bindValueInput;\r\n }\r\n else if (!this.useBindValue && this.nonBindValueInput) {\r\n input = this.nonBindValueInput;\r\n }\r\n input.focus();\r\n };\r\n\r\n onNgModelChanged(event: any | Array) {\r\n this.currentValue.next(event);\r\n this.checkValidity(event);\r\n if (this.itemChangedHandler != null && this.itemChangedHandler != undefined) {\r\n this.itemChangedHandler(event, this.params);\r\n }\r\n }\r\n}\r\n","\r\n\r\n","import { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport { ColumnResizedEvent, GridApi } from 'ag-grid-community';\r\nimport { Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\r\nimport { INumericCellEditorParams } from '../../../models/numeric-cell-editor-params.model';\r\nimport { debounceTime, distinctUntilChanged, Subject, Subscription } from 'rxjs';\r\nimport { isNotNullOrEmpty } from '../../../../common/functions/is-not-null-or-empty.function';\r\nimport { OnLeavingEditorParams } from '../../../models/base-cell-editor/on-leaving-editor-params.model';\r\n\r\n@Component({\r\n selector: 'numeric-cell-editor',\r\n templateUrl: './numeric-cell-editor.component.html',\r\n styleUrls: ['./numeric-cell-editor.component.scss']\r\n})\r\nexport class NumericCellEditorComponent implements ICellEditorAngularComp, OnDestroy {\r\n private params: any;\r\n public value: number;\r\n public cellWidth: string = \"\";\r\n public cellHeight: string = \"\";\r\n public isRequired: boolean = true;\r\n public isValid: boolean = true;\r\n public min: number = null;\r\n public max: number = null;\r\n private subscription: Subscription = new Subscription();\r\n public originalValue: number;\r\n private readonly currentValue = new Subject();\r\n\r\n @ViewChild('numericInput') input: ElementRef;\r\n\r\n public agInit(params: INumericCellEditorParams): void {\r\n this.params = params;\r\n this.min = params.minValue;\r\n this.max = params.maxValue;\r\n\r\n this.setInitialState(this.params);\r\n\r\n if (this.params.dataChangedEvent) {\r\n this.subscription.add(this.currentValue\r\n .pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe((currentValue) => {\r\n this.params.dataChangedEvent.emit({ value: currentValue, field: this.params.colDef.field, itemId: this.params.node.id });\r\n this.checkValidity(currentValue);\r\n }));\r\n }\r\n\r\n if (params.isRequired != null && params.isRequired != undefined) {\r\n this.isRequired = params.isRequired;\r\n this.enforceRangeAndBroadcast({ target: { value: params.value } });\r\n this.checkValidity(params.value);\r\n }\r\n else\r\n this.isRequired = false;\r\n\r\n (this.params.api as GridApi).addEventListener(\"columnResized\",\r\n (event: ColumnResizedEvent) => {\r\n if ((event.column && event.column.getId() == this.params.colDef.colId) || event.column === null || this.params.colDef.colId === undefined)\r\n this.cellWidth = (params.column.getActualWidth()) - 2 + 'px';\r\n }\r\n );\r\n\r\n if (params.isValid != null && params.isValid != undefined) {\r\n if (params.isValid instanceof Function) {\r\n if (params.initialDisclosureValidationStatements && params.initialDisclosureValidationStatements.length > 0)\r\n this.isValid = params.isValid(params.initialDisclosureValidationStatements, this.params.fieldName, this.params.idType, this.params.node.id);\r\n }\r\n else\r\n this.isValid = params.isValid;\r\n }\r\n else if (!this.isRequired) {\r\n this.isValid = true;\r\n }\r\n\r\n this.cellWidth = (params.column.getActualWidth()) - 23 + 'px';\r\n this.cellHeight = (params.node.rowHeight) - 2 + 'px';\r\n }\r\n\r\n private checkValidity(currentValue: number): void {\r\n this.isValid = (this.isRequired && !isNotNullOrEmpty(currentValue)) ? false : true;\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.focusOut();\r\n\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n afterGuiAttached(): void {\r\n let focusedCell = this.params.api.getFocusedCell();\r\n if (!focusedCell) {\r\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.colDef.colId, this.params.node.rowPinned);\r\n focusedCell = this.params.api.getFocusedCell();\r\n }\r\n if (focusedCell.column.getColId() == this.params.colDef.colId) {\r\n this.focusIn();\r\n }\r\n }\r\n\r\n setInitialState(params: INumericCellEditorParams) {\r\n this.value = params.value;\r\n if (params.value != undefined && params.value != null) {\r\n this.originalValue = JSON.parse(JSON.stringify(params.value));\r\n }\r\n }\r\n\r\n public setValidityStatus(isValid: boolean) {\r\n this.isValid = isValid;\r\n }\r\n\r\n getValue(): any {\r\n return this.value;\r\n }\r\n\r\n focusOut(): void {\r\n //On focus out, check if the value has changed, if so patch it\r\n if (this.originalValue != this.value && this.params.onLeavingEditor && !this.params.node.isRowPinned()) {\r\n this.params.onLeavingEditor({\r\n data: this.params.data,\r\n patchInfo: [{\r\n fieldToPatch: \"/\" + this.params.colDef.field,\r\n valueToPatch: this.value\r\n }],\r\n } as OnLeavingEditorParams);\r\n\r\n this.params.node.data[this.params.colDef.field] = JSON.parse(JSON.stringify(this.value));\r\n this.originalValue = JSON.parse(JSON.stringify(this.value));\r\n }\r\n };\r\n\r\n focusIn(): void {\r\n if (this.input.nativeElement) {\r\n let input = this.input.nativeElement as HTMLInputElement;\r\n //If the input is disabled, just move on to next cell\r\n if (input.disabled) {\r\n input.disabled = false;\r\n input.focus();\r\n input.disabled = true;\r\n }\r\n else {\r\n this.input.nativeElement.focus();\r\n }\r\n }\r\n };\r\n\r\n public onChange(event: any): void {\r\n this.enforceRangeAndBroadcast(event);\r\n }\r\n\r\n public onKeyDown(event: any): void {\r\n if (event.key == \"Escape\") {\r\n this.focusOut();\r\n }\r\n }\r\n\r\n public onKeyUp(event: any): void {\r\n this.enforceRangeAndBroadcast(event);\r\n }\r\n\r\n private enforceRangeAndBroadcast(event: any): void {\r\n if (!Number.isNaN(event.target.valueAsNumber)) {\r\n let numericValue = isNotNullOrEmpty(event.target.value) && event.target.value != NaN ? Number(event.target.value) : event.target.value;\r\n if (numericValue < this.min)\r\n numericValue = this.min;\r\n else if (numericValue > this.max)\r\n numericValue = this.max;\r\n\r\n this.value = numericValue;\r\n this.currentValue.next(numericValue);\r\n }\r\n }\r\n}\r\n","\r\n","import { AfterViewInit, Component, ElementRef, ViewChild } from '@angular/core';\r\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport { IRadioButtonCellEditorParams } from '../../../models/radio-button-cell-editor-params.model';\r\n\r\n@Component({\r\n selector: 'radio-button-cell-editor',\r\n templateUrl: './radio-button-cell-editor.component.html',\r\n styleUrls: ['./radio-button-cell-editor.component.scss']\r\n})\r\nexport class RadioButtonCellEditorComponent implements ICellEditorAngularComp, AfterViewInit {\r\n public cellWidth: string = \"\";\r\n public cellHeight: string = \"\";\r\n public value: string = \"\";\r\n public name: string = \"\";\r\n public id: string = \"\";\r\n public isSelected: boolean = false;\r\n public isEnabled: boolean = true;\r\n public allowRadioButtonDeselection: boolean = false;\r\n\r\n private params: IRadioButtonCellEditorParams;\r\n\r\n @ViewChild('checkableRadioButton') input: ElementRef;\r\n\r\n constructor() {\r\n }\r\n\r\n public agInit(params: IRadioButtonCellEditorParams): void {\r\n this.params = params;\r\n this.allowRadioButtonDeselection = params.allowRadioButtonDeselection;\r\n this.name = params.name;\r\n this.id = params.id(this.params);\r\n this.isSelected = params.isSelected(this.params);\r\n this.isEnabled = params.isEnabled(this.params);\r\n this.setInitialState(params);\r\n this.cellWidth = (params.column.getActualWidth()) + 'px';\r\n this.cellHeight = (params.node.rowHeight) + 'px';\r\n }\r\n\r\n public ngAfterViewInit() {\r\n }\r\n\r\n getValue(): any {\r\n this.params.onChange(this.params);\r\n return this.value;\r\n }\r\n\r\n setInitialState(params: IRadioButtonCellEditorParams) {\r\n this.value = params.currentValue(params);\r\n }\r\n\r\n setValue(newValue: string) {\r\n this.value = newValue;\r\n }\r\n\r\n afterGuiAttached(): void {\r\n let focusedCell = this.params.api.getFocusedCell();\r\n if (!focusedCell) {\r\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.colDef.colId, this.params.node.rowPinned);\r\n focusedCell = this.params.api.getFocusedCell();\r\n }\r\n if (focusedCell.column.getColId() == this.params.colDef.colId) {\r\n this.focusIn();\r\n }\r\n }\r\n\r\n focusOut(): void {\r\n };\r\n\r\n focusIn(): void {\r\n if (this.input.nativeElement) {\r\n let input = this.input.nativeElement as HTMLInputElement;\r\n this.input.nativeElement.focus();\r\n }\r\n };\r\n\r\n public selectionChanged(changeEvent: Event) {\r\n this.value = this.params.valueOnSelect != undefined && this.params.valueOnSelect != null ? this.params.valueOnSelect(this.params) : true;\r\n this.params.data[this.params.colDef.field] = this.value;\r\n this.isSelected = this.params.isSelected(this.params);\r\n this.isEnabled = this.params.isEnabled(this.params);\r\n }\r\n\r\n public uncheckSelectedRadioButton(changeEvent: Event) {\r\n if (this.allowRadioButtonDeselection) {\r\n this.value = this.params.valueOnDeSelect != undefined && this.params.valueOnDeSelect != null ? this.params.valueOnDeSelect(this.params) : false;\r\n this.params.data[this.params.colDef.field] = this.value;\r\n this.isSelected = this.params.isSelected(this.params);\r\n this.isEnabled = this.params.isEnabled(this.params);\r\n }\r\n }\r\n}\r\n","\r\n\r\n\r\n","import { AfterViewInit, Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\r\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport { ColumnResizedEvent } from 'ag-grid-community';\r\nimport { GridApi } from 'ag-grid-enterprise';\r\nimport { OnLeavingEditorParams } from '../../../models/base-cell-editor/on-leaving-editor-params.model';\r\nimport { ISettableCheckBoxEditorParams } from '../../../models/settable-checkbox-editor-params.model';\r\n\r\n@Component({\r\n selector: 'app-settable-checkbox-editor',\r\n templateUrl: './settable-checkbox-editor.component.html',\r\n styleUrls: ['./settable-checkbox-editor.component.scss']\r\n})\r\n\r\nexport class SettableCheckboxEditorComponent implements ICellEditorAngularComp, AfterViewInit, OnDestroy {\r\n public cellWidth: string = \"\";\r\n public cellHeight: string = \"\";\r\n public isEnabled: boolean = true;\r\n public isChecked: boolean = false;\r\n public value: string = \"\";\r\n public val: boolean = false;\r\n public originalValue: string = \"\";\r\n\r\n private params: ISettableCheckBoxEditorParams;\r\n\r\n @ViewChild('checkBoxInput') input: ElementRef;\r\n\r\n constructor() {\r\n }\r\n\r\n public agInit(params: ISettableCheckBoxEditorParams): void {\r\n this.params = params;\r\n \r\n\r\n (this.params.api as GridApi).addEventListener(\"columnResized\",\r\n (event: ColumnResizedEvent) => {\r\n if ((event.column && event.column.getId() == this.params.colDef.colId) || event.column === null || this.params.colDef.colId === undefined)\r\n this.cellWidth = (params.column.getActualWidth()) - 2 + 'px';\r\n }\r\n );\r\n\r\n this.setInitialState(params);\r\n this.cellWidth = (params.column.getActualWidth()) - 2 + 'px';\r\n this.cellHeight = (params.node.rowHeight) + 'px';\r\n }\r\n\r\n public ngAfterViewInit() {\r\n }\r\n\r\n getValue(): any {\r\n if (this.value != null && this.value != undefined)\r\n return this.value;\r\n }\r\n\r\n setInitialState(params: ISettableCheckBoxEditorParams) {\r\n this.value = params.currentValue(params);\r\n if (params.value != undefined && params.value != null) {\r\n this.originalValue = JSON.parse(JSON.stringify(params.value));\r\n }\r\n\r\n this.isChecked = params.isChecked(this.params);\r\n\r\n if (params.isEnabled != null && params.isEnabled != undefined) {\r\n if (params.isEnabled instanceof Function)\r\n this.isEnabled = params.isEnabled(params);\r\n else\r\n this.isEnabled = params.isEnabled;\r\n }\r\n else\r\n this.isEnabled = true;\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.focusOut();\r\n }\r\n\r\n afterGuiAttached(): void {\r\n let focusedCell = this.params.api.getFocusedCell();\r\n if (!focusedCell) {\r\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.colDef.colId, this.params.node.rowPinned);\r\n focusedCell = this.params.api.getFocusedCell();\r\n }\r\n if (focusedCell.column.getColId() == this.params.colDef.colId) {\r\n this.focusIn();\r\n }\r\n }\r\n\r\n focusOut(): void {\r\n //On focus out, check if the value has changed, if so patch it\r\n if (this.originalValue != this.value && this.params.onLeavingEditor && !this.params.node.isRowPinned()) {\r\n this.params.onLeavingEditor({\r\n data: this.params.data,\r\n patchInfo: [{\r\n fieldToPatch: \"/\" + this.params.colDef.field,\r\n valueToPatch: this.value\r\n }]\r\n } as OnLeavingEditorParams);\r\n\r\n this.params.node.data[this.params.colDef.field] = JSON.parse(JSON.stringify(this.value));\r\n this.originalValue = JSON.parse(JSON.stringify(this.value));\r\n }\r\n };\r\n\r\n focusIn(): void {\r\n if (this.input.nativeElement) {\r\n let input = this.input.nativeElement as HTMLInputElement;\r\n //If the input is disabled, just move on to next cell\r\n if (input.disabled) {\r\n input.disabled = false;\r\n input.focus();\r\n input.disabled = true;\r\n }\r\n else {\r\n this.input.nativeElement.focus();\r\n }\r\n }\r\n };\r\n\r\n setValue(newValue: string) {\r\n this.value = newValue;\r\n }\r\n\r\n public selectionChanged(event:any) {\r\n this.value = this.params.valueOnSelect(this.params);\r\n this.params.data[this.params.colDef.field] = this.value;\r\n this.isChecked = this.params.isChecked(this.params);\r\n\r\n if (this.params.isEnabled instanceof Function) {\r\n this.isEnabled = this.params.isEnabled(this.params);\r\n }\r\n }\r\n}\r\n","
\r\n \r\n
\r\n","import { AfterViewInit, Component, ElementRef, OnDestroy, ViewChild } from '@angular/core';\r\nimport { ICellEditorAngularComp } from 'ag-grid-angular';\r\nimport { CellPosition, ColumnResizedEvent, TabToNextCellParams } from 'ag-grid-community';\r\nimport { GridApi } from 'ag-grid-enterprise';\r\nimport { debounceTime, distinctUntilChanged, Subject, Subscription, switchMap } from 'rxjs';\r\nimport { isNullOrUndefined } from 'util';\r\nimport { isNotNullOrEmpty } from '../../../../common/functions/is-not-null-or-empty.function';\r\nimport { OnLeavingEditorParams } from '../../../models/base-cell-editor/on-leaving-editor-params.model';\r\nimport { ISettableTextCellEditorParams } from '../../../models/settable-text-cell-editor-params.model';\r\n\r\n@Component({\r\n selector: 'settable-text-cell-editor',\r\n templateUrl: './settable-text-cell-editor.component.html',\r\n styleUrls: ['./settable-text-cell-editor.component.scss']\r\n})\r\nexport class SettableTextCellEditorComponent implements ICellEditorAngularComp, AfterViewInit, OnDestroy {\r\n public cellWidth: string = \"\";\r\n public cellHeight: string = \"\";\r\n public isValid: boolean = true;\r\n public isEnabled: boolean = true;\r\n public isRequired: boolean = true;\r\n public originalValue: string = \"\";\r\n public value: string = \"\";\r\n private params: ISettableTextCellEditorParams;\r\n private subscription: Subscription = new Subscription();\r\n private readonly specialCharRegex = /[^\\w\\d\\s'&\"\\-,.=+_!@#$%*():;\\/\\\\]/gi;\r\n private readonly currentValue = new Subject();\r\n\r\n @ViewChild('textInput') input: ElementRef;\r\n\r\n constructor() {\r\n }\r\n\r\n public agInit(params: ISettableTextCellEditorParams): void {\r\n this.params = params;\r\n this.setInitialState(params);\r\n\r\n if (this.params.dataChangedEvent) {\r\n this.subscription.add(this.currentValue\r\n .pipe(\r\n debounceTime(300),\r\n distinctUntilChanged(),\r\n )\r\n .subscribe((currentValue) => {\r\n this.params.dataChangedEvent.emit({ value: currentValue, field: this.params.colDef.field, itemId: this.params.node.id });\r\n this.checkValidity(currentValue);\r\n }));\r\n }\r\n\r\n if (params.isRequired != null && params.isRequired != undefined) {\r\n this.isRequired = params.isRequired;\r\n this.checkValidity(params.value);\r\n }\r\n else\r\n this.isRequired = false;\r\n\r\n if (params.isEnabled != null && params.isEnabled != undefined) {\r\n if (params.isEnabled instanceof Function)\r\n this.isEnabled = params.isEnabled(params);\r\n else\r\n this.isEnabled = params.isEnabled;\r\n }\r\n else\r\n this.isEnabled = true;\r\n \r\n\r\n if (params.isValid != null && params.isValid != undefined) {\r\n if (params.isValid instanceof Function) {\r\n if (params.initialDisclosureValidationStatements && params.initialDisclosureValidationStatements.length > 0)\r\n this.isValid = params.isValid(params.initialDisclosureValidationStatements, this.params.fieldName, this.params.idType, this.params.node.id);\r\n }\r\n else\r\n this.isValid = params.isValid;\r\n }\r\n else\r\n this.isValid = true;\r\n\r\n (this.params.api as GridApi).addEventListener(\"columnResized\",\r\n (event: ColumnResizedEvent) => {\r\n if ((event.column && event.column.getId() == this.params.colDef.colId) || event.column === null || this.params.colDef.colId === undefined)\r\n this.cellWidth = (params.column.getActualWidth()) - 23 + 'px';\r\n }\r\n );\r\n\r\n this.cellWidth = (params.column.getActualWidth()) - 23 + 'px';\r\n this.cellHeight = (params.node.rowHeight) - 2 + 'px'; \r\n }\r\n\r\n private checkValidity(currentValue: string): void {\r\n this.isValid = (this.isRequired && !isNotNullOrEmpty(currentValue)) ? false : true;\r\n }\r\n\r\n public ngAfterViewInit() {\r\n }\r\n\r\n public ngOnDestroy() {\r\n this.focusOut();\r\n\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n getValue(): any {\r\n if (this.value != null && this.value != undefined)\r\n return this.value.trim();\r\n }\r\n\r\n setInitialState(params: ISettableTextCellEditorParams) {\r\n if (params.value != undefined && params.value != null) {\r\n this.originalValue = JSON.parse(JSON.stringify(params.value));\r\n }\r\n this.value = params.value;\r\n this.currentValue.next(this.value);\r\n }\r\n\r\n public setValidityStatus(isValid: boolean): void {\r\n this.isValid = isValid;\r\n }\r\n\r\n afterGuiAttached(): void {\r\n let focusedCell = this.params.api.getFocusedCell();\r\n if (!focusedCell) {\r\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.colDef.colId, this.params.node.rowPinned);\r\n focusedCell = this.params.api.getFocusedCell();\r\n }\r\n if (focusedCell.column.getColId() == this.params.colDef.colId) {\r\n this.focusIn();\r\n }\r\n }\r\n\r\n focusOut(): void {\r\n //On focus out, check if the value has changed, if so patch it\r\n if (this.originalValue != this.value && this.params.onLeavingEditor && !this.params.node.isRowPinned()) {\r\n this.params.onLeavingEditor({\r\n data: this.params.data,\r\n patchInfo: [{\r\n fieldToPatch: \"/\" + this.params.colDef.field,\r\n valueToPatch: this.value\r\n }]\r\n } as OnLeavingEditorParams);\r\n\r\n this.params.node.data[this.params.colDef.field] = JSON.parse(JSON.stringify(this.value));\r\n this.originalValue = JSON.parse(JSON.stringify(this.value));\r\n }\r\n };\r\n\r\n focusIn(): void {\r\n if (this.input.nativeElement) {\r\n let input = this.input.nativeElement as HTMLInputElement;\r\n //If the input is disabled, just move on to next cell\r\n if (input.disabled) {\r\n input.disabled = false;\r\n input.focus();\r\n input.disabled = true; \r\n }\r\n else {\r\n this.input.nativeElement.focus();\r\n }\r\n }\r\n \r\n };\r\n\r\n setValue(newValue: string): void {\r\n this.value = newValue;\r\n this.params.node.data[this.params.colDef.field] = newValue;\r\n this.checkValidity(newValue);\r\n if (this.params.dataChangedEvent) {\r\n this.params.dataChangedEvent.emit({ value: newValue, field: this.params.colDef.field, itemId: this.params.node.id });\r\n }\r\n }\r\n\r\n public onKeyDown(event: any): void {\r\n this.sanitizeString(event.target.value);\r\n\r\n if (event.key == \"Escape\") {\r\n this.focusOut();\r\n }\r\n }\r\n\r\n public onKeyUp(event: any): void {\r\n this.sanitizeString(event.target.value);\r\n\r\n this.currentValue.next(event.target.value);\r\n }\r\n\r\n sanitizeString(value: string) {\r\n let invalidCharactersPresent = this.specialCharRegex.test(value);\r\n if (invalidCharactersPresent) {\r\n value = value.replace(this.specialCharRegex, \"\");\r\n this.value = this.value.replace(this.specialCharRegex, \"\");\r\n }\r\n }\r\n}\r\n","\r\n\r\n","import { Component, ElementRef, HostListener, ViewChild } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n selector: 'app-user-role-cell-editor',\r\n templateUrl: './user-role-cell-editor.component.html',\r\n styleUrls: ['./user-role-cell-editor.component.scss']\r\n})\r\nexport class UserRoleCellEditorComponent implements ICellRendererAngularComp {\r\n //@HostListener('window:keydown', ['$event'])\r\n //keyEvent(event: KeyboardEvent) {\r\n // if (event.key == \"Tab\" && this.supervisorInput && this.supervisorInput.nativeElement\r\n // && this.supervisorIsFocused) {\r\n // // Your row selection code\r\n // this.dataSubmitterInput.nativeElement.focus();\r\n // event.stopImmediatePropagation();\r\n // }\r\n //};\r\n\r\n private cellName: string = '';\r\n public params: any;\r\n public data: any;\r\n public originalData: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public roles: string[] = [];\r\n public isDataSubmitter: boolean;\r\n public isSupervisor: boolean;\r\n private supervisorIsFocused: boolean = false;\r\n public isInactive: boolean = false;\r\n\r\n @ViewChild('supervisorCheckboxInput') supervisorInput: ElementRef;\r\n @ViewChild('dataSubmitterCheckboxInput') dataSubmitterInput: ElementRef;\r\n\r\n constructor() {\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n if (this.data.status === \"Inactive\") {\r\n this.isInactive = true;\r\n }\r\n if (!this.data.roles) return;\r\n this.roles = this.data.roles.split(',').filter((item: any, pos: any, self: any) => {\r\n return self.indexOf(item) == pos;\r\n });\r\n if (this.roles.find(x => x === \"Data Submitter\")) {\r\n this.isDataSubmitter = true;\r\n }\r\n if (this.roles.find(x => x === \"Supervisor\")) {\r\n this.isSupervisor = true;\r\n }\r\n }\r\n\r\n eventCheck(event: any) {\r\n if (event.target.checked) {\r\n this.roles.push(event.target.name);\r\n } else {\r\n this.roles = this.roles.filter(elem => elem !== event.target.name);\r\n }\r\n this.data.rolesUpdated = this.roles.join(\",\");\r\n }\r\n\r\n refresh(params: any): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n afterGuiAttached(): void {\r\n let focusedCell = this.params.api.getFocusedCell();\r\n if (!focusedCell) {\r\n this.params.api.setFocusedCell(this.params.rowIndex, this.params.colDef.colId, this.params.node.rowPinned);\r\n focusedCell = this.params.api.getFocusedCell();\r\n }\r\n if (focusedCell.column.getColId() == this.params.colDef.colId) {\r\n this.focusIn();\r\n }\r\n }\r\n\r\n focusOut(): void {\r\n };\r\n\r\n focusIn(): void {\r\n if (this.supervisorInput.nativeElement) {\r\n this.supervisorInput.nativeElement.focus();\r\n this.supervisorIsFocused = true;\r\n }\r\n };\r\n\r\n handleKeyDown(event: KeyboardEvent): void {\r\n if (event.key == \"Tab\") {\r\n //this.params.api.setTabToNextCell((params: TabToNextCellParams) => {\r\n // return {} as CellPosition;\r\n //});\r\n }\r\n }\r\n\r\n}\r\n","
\r\n Supervisor
\r\n Data Submitter\r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { GridApi, ICellRendererParams } from 'ag-grid-enterprise';\r\n\r\n@Component({\r\n selector: 'admin-functions-cell',\r\n templateUrl: './admin-functions-cell.component.html',\r\n styleUrls: ['./admin-functions-cell.component.scss']\r\n})\r\nexport class AdminFunctionsCellComponent implements OnInit, ICellRendererAngularComp {\r\n public data: any;\r\n public api: GridApi;\r\n public rowIndex: number = -1;\r\n public readOnly: boolean = true;\r\n public params: ICellRendererParams;\r\n constructor(private router: Router) {\r\n console.log('opendeletecell constructed');\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.params = params;\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n console.log('ag init', this.data)\r\n }\r\n refresh(params: ICellRendererParams): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n viewPdf(): void {\r\n window.open(\"/api/file/GetDisclosurePdfByName/\" + this.data.disclosureId + \"/\" + encodeURIComponent(this.data.pdfName), \"_blank\");\r\n }\r\n\r\n delete(): void {\r\n if ((this.api as any).onActionTrigger) {\r\n (this.api as any).onActionTrigger({ row: this.rowIndex, action: \"delete\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n move(): void {\r\n this.params.node.setExpanded(!this.params.node.expanded);\r\n }\r\n}\r\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-enterprise';\r\n\r\n\r\n@Component({\r\n selector: 'always-active-checkbox-cell',\r\n templateUrl: './always-active-checkbox-cell.component.html',\r\n styleUrls: ['./always-active-checkbox-cell.component.scss']\r\n})\r\nexport class AlwaysActiveCheckboxCellComponent implements ICellRendererAngularComp {\r\n\r\n private cellName: string = '';\r\n\r\n public data: any;\r\n public val: boolean = false;\r\n public originalData: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public columnName: any;\r\n public isDisabled:boolean = false\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n }\r\n\r\n public agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.val = params.value;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n this.cellName = params?.colDef?.cellRenderer?.toString() || '';\r\n this.columnName = (params.column as any).colId;\r\n if (this.columnName === 'role-Supervisor') {\r\n //If disabled value is not null, set it. Otherwise keep default value\r\n const disabled = params.data.isCheckboxDisabled || params.data.cannotEdit;\r\n this.isDisabled = !!disabled ? disabled : this.isDisabled;\r\n }\r\n if (this.columnName === 'role-DataSubmitter') {\r\n this.isDisabled = params.data.cannotEdit;\r\n }\r\n }\r\n\r\n public refresh(params: any): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n\r\n public save(): void {\r\n if (this.api.onActionTrigger) {\r\n //this.api.onActionTrigger({ row: this.rowIndex, action: \"editComplete\", data: this.data });\r\n }\r\n }\r\n public valChanged(event:any) {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"roleUpdate\", data: this.data, column: this.columnName, value: this.val });\r\n }\r\n }\r\n}\r\n","
\r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { Disclosure } from '../../../../common/models/disclosures/disclosure.model';\r\n\r\n@Component({\r\n selector: 'app-amend-cell',\r\n templateUrl: './amend-cell.component.html',\r\n styleUrls: ['./amend-cell.component.scss']\r\n})\r\nexport class AmendCellComponent implements OnInit, ICellRendererAngularComp {\r\n\r\n public api: any\r\n public data: any\r\n public rowIndex: number = -1\r\n public readOnly: boolean = true\r\n public disclosure: Disclosure;\r\n\r\n constructor(private router: Router) {} \r\n\r\n ngOnInit(): void { }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n this.disclosure = params.data as Disclosure;\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n open(): void {\r\n if (this.disclosure.publicStatus === 'Submitted') {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"startAmend\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n return;\r\n }\r\n this.router.navigate(['/disclosure/edit-disclosure/', this.data.disclosureId]);\r\n }\r\n\r\n viewPdf(): void {\r\n window.open(\"/api/file/GetDisclosurePdfByName/\" + this.data.disclosureId + \"/\" + encodeURIComponent(this.data.pdfName), \"_blank\");\r\n }\r\n\r\n}\r\n","\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-enterprise';\r\n\r\n@Component({\r\n selector: 'app-approve-deny-delete-cell',\r\n templateUrl: './approve-deny-delete-cell.component.html',\r\n styleUrls: ['./approve-deny-delete-cell.component.scss']\r\n})\r\nexport class ApproveDenyDeleteCellComponent implements ICellRendererAngularComp {\r\n private cellName: string = '';\r\n public params: any;\r\n public data: any;\r\n public originalData: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public isActivated: boolean = false;\r\n public isDenied: boolean = false;\r\n public isEmailConfirmed: boolean = false;\r\n public emailSent: boolean = false;\r\n public isPendingApproval: boolean = false;\r\n public isDeactivated: boolean = false;\r\n \r\n constructor() { }\r\n\r\n public agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n this.cellName = params?.colDef?.cellRenderer?.toString() || '';\r\n this.originalData = JSON.parse(JSON.stringify(this.data));\r\n this.isActivated = this.data.isActivated;\r\n this.isDenied = this.data.isDenied;\r\n this.isEmailConfirmed = this.data.emailConfirmed;\r\n this.isPendingApproval = this.isEmailConfirmed \r\n && !this.isActivated \r\n && !this.isDenied \r\n && this.data.activatedDate == null\r\n && this.data.deactivatedDate == null;\r\n }\r\n\r\n public refresh(params: any): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n public approve(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"approve\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public activate(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"activate\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public deactivate(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"deactivate\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public deny(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"deny\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public delete(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"delete\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public resendEmail(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"resendEmail\", data: this.data });\r\n this.emailSent = true;\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'app-checkbox-renderer',\r\n templateUrl: './checkbox-renderer.component.html',\r\n styleUrls: ['./checkbox-renderer.component.scss']\r\n})\r\nexport class CheckboxRendererComponent implements ICellRendererAngularComp {\r\n public params: any;\r\n public isEnabled : boolean;\r\n constructor() { }\r\n\r\n agInit(params: any): void {\r\n this.params = params;\r\n this.isEnabled = params.isEnabled;\r\n }\r\n refresh(params: any): boolean {\r\n return true;\r\n }\r\n\r\n onChange(event: Event) {\r\n const checked = (event.target as HTMLInputElement).checked;\r\n this.params.setValue(checked);\r\n } \r\n}\r\n","
\r\n \r\n
\r\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { isNotNullOrEmpty } from '../../../../common/functions/is-not-null-or-empty.function';\r\nimport { IDateCellRendererParams } from '../../../models/date-cell-renderer-params.model';\r\n\r\n@Component({\r\n selector: 'date-cell-renderer',\r\n templateUrl: './date-cell-renderer.component.html',\r\n styleUrls: ['./date-cell-renderer.component.scss']\r\n})\r\nexport class DateCellRendererComponent implements ICellRendererAngularComp {\r\n public dateViewBind = \"\";\r\n public id: string = \"\";\r\n private params: IDateCellRendererParams;\r\n noDatePlaceholder: string = \"N/A\"\r\n constructor() {\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n return false;\r\n }\r\n\r\n public agInit(params: IDateCellRendererParams): void {\r\n this.params = params;\r\n\r\n if (isNotNullOrEmpty(this.params.noDatePlaceholder)) {\r\n this.noDatePlaceholder = this.params.noDatePlaceholder;\r\n }\r\n\r\n if (isNotNullOrEmpty(this.params.value)) {\r\n this.dateViewBind = new Date(this.params.value).toLocaleDateString();\r\n if (this.params.includeTimeString) {\r\n this.dateViewBind += \" \" + (new Date(this.params.value)).toLocaleTimeString();\r\n }\r\n }\r\n else {\r\n this.dateViewBind = this.noDatePlaceholder;\r\n }\r\n }\r\n\r\n public ngAfterViewInit() {\r\n }\r\n}\r\n","{{dateViewBind}}\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { GridApi, ICellRendererParams } from 'ag-grid-community';\r\nimport { Disclosure } from '../../../../common/models/disclosures/disclosure.model';\r\n\r\n@Component({\r\n selector: 'app-download-xml-cell',\r\n templateUrl: './download-xml-cell.component.html',\r\n styleUrls: ['./download-xml-cell.component.scss']\r\n})\r\nexport class DownloadXmlCellComponent implements OnInit, ICellRendererAngularComp {\r\n\r\n private disclosure: Disclosure;\r\n private gridApi: any;\r\n public rowIndex: number = -1;\r\n\r\n constructor() { }\r\n \r\n ngOnInit(): void { }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.disclosure = params.data;\r\n this.gridApi = params.api;\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n viewXML(): void{\r\n if (this.gridApi.onActionTrigger) {\r\n this.gridApi.onActionTrigger({ row: this.rowIndex, action: \"viewXml\", data: this.disclosure });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n}\r\n","","import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-enterprise';\r\n\r\n@Component({\r\n selector: 'edit-delete-cell',\r\n templateUrl: './edit-delete-cell.component.html',\r\n styleUrls: ['./edit-delete-cell.component.scss']\r\n})\r\nexport class EditDeleteCellComponent implements ICellRendererAngularComp {\r\n\r\n private cellName: string = '';\r\n\r\n public data: any;\r\n public originalData: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public readOnly: boolean;\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef\r\n ) {\r\n //this.readOnly = gridService.readOnly.getValue();\r\n }\r\n\r\n public agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n this.cellName = params?.colDef?.cellRenderer?.toString() || '';\r\n this.originalData = JSON.parse(JSON.stringify(this.data));\r\n }\r\n\r\n public refresh(params: any): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n public toggleReadOnly(): void {\r\n this.readOnly = !this.readOnly;\r\n //this.gridService.selectedTable.next(this.cellName);\r\n //this.gridService.readOnly.next(this.readOnly);\r\n this.data.disabled = this.readOnly;\r\n if (!this.readOnly) {\r\n this.api.redrawRows();\r\n this.api.startEditingCell({\r\n rowIndex: this.rowIndex,\r\n colKey: '0'\r\n });\r\n } else {\r\n this.api.stopEditing(true);\r\n this.api.redrawRows();\r\n }\r\n }\r\n\r\n public deleteRow(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"delete\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public save(): void {\r\n this.readOnly = true;\r\n //this.gridService.readOnly.next(this.readOnly);\r\n this.data.disabled = this.readOnly;\r\n this.api.redrawRows();\r\n this.api.stopEditing();\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"editComplete\", data: this.data });\r\n }\r\n }\r\n\r\n}\r\n","\r\n\r\n\r\n","import { Component, OnInit, ChangeDetectorRef } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-enterprise';\r\nimport { GridService } from '../../../services/grid.service';\r\n\r\n@Component({\r\n selector: 'edit-history-cell',\r\n templateUrl: './edit-history-cell.component.html',\r\n styleUrls: ['./edit-history-cell.component.scss']\r\n})\r\nexport class EditHistoryCellComponent implements ICellRendererAngularComp {\r\n\r\n private cellName: string = '';\r\n public params: any;\r\n public data: any;\r\n public originalData: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public readOnly: boolean = true;\r\n public isPending: boolean = false;\r\n public isDisabled: boolean = false;\r\n public hideDelete: boolean = false;\r\n public modalEdit: boolean = false;\r\n public showModalEditButton: boolean = false;\r\n public editTitle: string = \"Edit\";\r\n public historyTitle: string = \"History\";\r\n public deleteTitle: string = \"Delete\";\r\n public cancelTitle: string = \"Cancel\";\r\n public saveTitle: string = \"Save\";\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n protected gridService: GridService\r\n ) {\r\n this.readOnly = gridService.readOnly.getValue();\r\n }\r\n\r\n public agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n this.cellName = params?.colDef?.cellRenderer?.toString() || '';\r\n this.originalData = JSON.parse(JSON.stringify(this.data));\r\n this.isPending = (this.data.status && this.data.status === \"Pending\");\r\n if (this.data.cannotEdit) {\r\n this.isDisabled = true;\r\n }\r\n if (params.context && params.context.userAdmin) {\r\n this.hideDelete = true;\r\n }\r\n if (params.context && params.context.modalEdit) {\r\n this.modalEdit = true;\r\n this.readOnly = false;\r\n }\r\n this.showModalEditButton = this.modalEdit && (this.data.status === \"Active\" || this.data.status === \"Pending Approval\");\r\n if (params.context && params.context.parent) {\r\n const parent = params.context.parent; \r\n switch (parent) {\r\n case \"manage-org-users\":\r\n this.editTitle = \"Edit user's account\";\r\n this.historyTitle = \"View user's account history with this organization\";\r\n this.deleteTitle = \"Delete user's pending account\";\r\n this.cancelTitle = \"Cancel user's account edit without saving changes\";\r\n this.saveTitle = \"Save user's account edits\";\r\n break;\r\n case \"manage-org-relations\":\r\n this.editTitle = \"Edit relationship\";\r\n this.historyTitle = \"View expanded history\";\r\n this.cancelTitle = \"Cancel edit without saving changes\";\r\n this.saveTitle = \"Save edits\";\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n }\r\n }\r\n\r\n public refresh(params: any): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n public toggleReadOnly(): void {\r\n this.readOnly = !this.readOnly;\r\n console.log('start of togglereadonly', this.readOnly);\r\n const gridData = this.getFilteredAndSorted();\r\n if (gridData.length > 0) {\r\n this.rowIndex = gridData.indexOf(this.data);\r\n }\r\n this.gridService.selectedTable.next(this.cellName);\r\n this.gridService.readOnly.next(this.readOnly);\r\n this.gridService.rowIdex.next(this.rowIndex);\r\n //this.data.disabled = this.readOnly = !this.readOnly;\r\n this.data.disabled = this.readOnly;\r\n //this.gridService.selectedTable.next(this.cellName);\r\n //this.gridService.readOnly.next(this.readOnly);\r\n\r\n console.log('before actions togglereadonly', this.readOnly);\r\n if (!this.readOnly) {\r\n //console.log('startediting togglereadonly', this.readOnly);\r\n this.api.startEditingCell({\r\n rowIndex: this.rowIndex,\r\n colKey: '0'\r\n });\r\n } else {\r\n //console.log('stopediting togglereadonly', this.readOnly);\r\n this.api.stopEditing(true);\r\n this.api.redrawRows();\r\n }\r\n\r\n /*\r\n if (this.api.onActionTrigger) {\r\n console.log('at togglereadonly', this.readOnly);\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"toggleReadOnly\", data: this.data, cellName: this.cellName, ro: this.readOnly });\r\n this.api.redrawRows();\r\n }\r\n */\r\n //this.changeDetectorRef.detectChanges();\r\n console.log('end of togglereadonly', this.readOnly);\r\n }\r\n\r\n public deleteRow(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"delete\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public showHistory(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"showHistory\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public triggerEdit(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"triggerEdit\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public save(): void {\r\n this.data.disabled = this.readOnly = true;\r\n this.gridService.readOnly.next(this.readOnly);\r\n this.api.redrawRows();\r\n this.api.stopEditing();\r\n\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"editComplete\", data: this.data, originalData: this.originalData });\r\n }\r\n }\r\n\r\n getFilteredAndSorted(): any[] {\r\n let data: any[] = [];\r\n this.api.forEachNodeAfterFilterAndSort(function(node: { data: any; }) {\r\n data.push(node.data);\r\n });\r\n return data;\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import { Component, ElementRef, OnInit, ViewChild } from '@angular/core';\r\nimport { IHeaderAngularComp } from 'ag-grid-angular';\r\nimport { IHeaderButtonRendererButtonParams } from '../../../models/header-button-renderer/header-button-renderer-button-params';\r\nimport { IHeaderButtonRendererParams } from '../../../models/header-button-renderer/header-button-renderer-params.model';\r\n\r\n@Component({\r\n selector: 'header-button-renderer',\r\n templateUrl: './header-button-renderer.component.html',\r\n styleUrls: ['./header-button-renderer.component.scss']\r\n})\r\nexport class HeaderButtonRendererComponent implements IHeaderAngularComp {\r\n public params!: IHeaderButtonRendererParams;\r\n\r\n public ascSort = 'inactive';\r\n public descSort = 'inactive';\r\n public noSort = 'inactive';\r\n\r\n @ViewChild('menuButton', { read: ElementRef }) public menuButton!: ElementRef;\r\n\r\n agInit(params: IHeaderButtonRendererParams): void {\r\n this.params = params;\r\n\r\n params.column.addEventListener(\r\n 'sortChanged',\r\n this.onSortChanged.bind(this)\r\n );\r\n\r\n this.onSortChanged();\r\n }\r\n\r\n onMenuClicked() {\r\n this.params.showColumnMenu(this.menuButton.nativeElement);\r\n }\r\n\r\n onSortChanged() {\r\n this.ascSort = this.descSort = this.noSort = 'inactive';\r\n if (this.params.column.isSortAscending()) {\r\n this.ascSort = 'active';\r\n } else if (this.params.column.isSortDescending()) {\r\n this.descSort = 'active';\r\n } else {\r\n this.noSort = 'active';\r\n }\r\n }\r\n\r\n onSortRequested(order: 'asc' | 'desc' | null, event: any) {\r\n this.params.setSort(order, event.shiftKey);\r\n }\r\n\r\n refresh(params: IHeaderButtonRendererParams) {\r\n return false;\r\n }\r\n\r\n public buttonDisabled(button: IHeaderButtonRendererButtonParams): boolean {\r\n if (button.enabledFunction instanceof Function) {\r\n return button.enabledFunction(button);\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n\r\n public buttonClicked(button: IHeaderButtonRendererButtonParams): void {\r\n if (button.clickFunction instanceof Function) {\r\n button.clickFunction(button);\r\n }\r\n }\r\n}\r\n","
\r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\n\r\n@Component({\r\n selector: 'app-history-cell-renderer',\r\n templateUrl: './history-cell-renderer.component.html',\r\n styleUrls: ['./history-cell-renderer.component.scss']\r\n})\r\nexport class HistoryCellRendererComponent implements ICellRendererAngularComp {\r\n params: any;\r\n public data: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public historyContainerHeight: string = \"\";\r\n history: any[];\r\n public linkTitle: string = \"Close history\"\r\n\r\n constructor() { }\r\n\r\n agInit(params: any): void {\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n this.history = params.history;\r\n\r\n //default height: History / Close History row\r\n const defaultHeight = 35;\r\n //27: single history row with margin bottom\r\n const rowHeight = 27;\r\n\r\n let historyLength = this.history.length;\r\n\r\n if (historyLength === 0) {\r\n //For \"No history data found\" row\r\n historyLength = 1;\r\n }\r\n \r\n let calculatedHeight = defaultHeight + (historyLength * rowHeight);\r\n this.historyContainerHeight = calculatedHeight + \"px\";\r\n if (params.parent) {\r\n const parent = params.parent;\r\n switch (parent) {\r\n case \"manage-org-users\":\r\n this.linkTitle = \"Close user's account history\";\r\n break;\r\n \r\n default:\r\n break;\r\n }\r\n \r\n }\r\n\r\n }\r\n\r\n refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n public formatDate(date: string) {\r\n return new Date(date).toLocaleDateString();\r\n }\r\n\r\n public closeHistory(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"hideHistory\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n}\r\n","
\r\n
\r\n
History
\r\n \r\n
\r\n
\r\n
{{item.changeDetails}} on {{formatDate(item.changeDate)}} by {{item.changeBy}}
\r\n
\r\n
\r\n No history data found\r\n
\r\n
\r\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n selector: 'app-impersonate-user-cell',\r\n templateUrl: './impersonate-user-cell.component.html',\r\n styleUrls: ['./impersonate-user-cell.component.scss']\r\n})\r\nexport class ImpersonateUserCellComponent implements ICellRendererAngularComp {\r\n public data: any;\r\n public originalData: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public emailConfirmed: boolean = null;\r\n public isActivated: boolean = null;\r\n public isDenied: boolean = null;\r\n public readOnly: boolean;\r\n public disabled: boolean = true;\r\n public isPrimaryOrg: boolean = true;\r\n\r\n constructor() { }\r\n\r\n public agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n this.emailConfirmed = this.data.emailConfirmed;\r\n this.isActivated = this.data.isActivated;\r\n this.isDenied = this.data.isDenied;\r\n this.isPrimaryOrg = (this.data.primaryOrganizationId && this.data.organizationId === this.data.primaryOrganizationId);\r\n this.disabled = this.data.status !== \"Active\";\r\n if (this.data.status === \"Locked\") {\r\n this.disabled = !this.isActivated || this.isDenied || !this.isPrimaryOrg;\r\n }\r\n }\r\n\r\n public refresh(params: any): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n public impersonate() {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"impersonate\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n}\r\n","\r\n \r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { GridApi, RowEditingStartedEvent, RowEditingStoppedEvent, RowNode, StartEditingCellParams } from 'ag-grid-community';\r\nimport { finalize, Subscription } from 'rxjs';\r\nimport { isNotNullOrEmpty } from '../../../../common/functions/is-not-null-or-empty.function';\r\nimport { DisclosureValidationStatement } from '../../../../common/models/disclosures/disclosure-validation-statement.model';\r\nimport { DisclosureValidationIdType } from '../../../models/disclosure-validation-id-type.enum';\r\nimport { InlineEditorActionTriggerParams } from '../../../models/inline-editor-cell-renderer/inline-editor-action-trigger-params.model';\r\nimport { IInlineEditorCellRendererParams } from '../../../models/inline-editor-cell-renderer/inline-editor-cell-renderer-params.model';\r\nimport { InlineEditorTriggerActionType } from '../../../models/inline-editor-cell-renderer/inline-editor-trigger-action-type.enum';\r\n\r\n@Component({\r\n selector: 'inline-editor-cell-renderer',\r\n templateUrl: './inline-editor-cell-renderer.component.html',\r\n styleUrls: ['./inline-editor-cell-renderer.component.scss']\r\n})\r\nexport class InlineEditorCellRendererComponent implements ICellRendererAngularComp, OnDestroy {\r\n private cellName: string = '';\r\n public params: IInlineEditorCellRendererParams;\r\n public data: any;\r\n public originalData: any;\r\n public currentStateOfData: any;\r\n public api: GridApi;\r\n public readOnly: boolean = true;\r\n public canDelete: boolean = false;\r\n public onlyHandleDelete: boolean = false;\r\n public canAdd: boolean = true;\r\n public canSave: boolean = true;\r\n public canRenew: boolean = false;\r\n public allowMultipleOngoingEdits: boolean = false;\r\n private columnToStartEditKey: string = '0';\r\n public disclosureValidationStatements: Array = [];\r\n private subscription: Subscription = new Subscription();\r\n\r\n constructor() {\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n\r\n if (this.api) {\r\n if (this.allowMultipleOngoingEdits) {\r\n this.api.removeEventListener(\"rowEditingStarted\", this.rowEditingStartedEventHandler.bind(this));\r\n }\r\n //else {\r\n // this.api.removeEventListener(\"rowEditingStopped\", this.rowEditingStoppedEventHandler.bind(this));\r\n //}\r\n }\r\n }\r\n\r\n rowEditingStoppedEventHandler(event: RowEditingStartedEvent): void {\r\n let itemId = this.params.itemRowIdGetter(this.params);\r\n if (itemId == event.node.id) {\r\n this.stopEditing(true, true);\r\n //event.event.stopImmediatePropagation();\r\n }\r\n }\r\n\r\n rowEditingStartedEventHandler(event: RowEditingStartedEvent): void {\r\n let itemId = this.params.itemRowIdGetter(this.params);\r\n if (itemId == event.node.id)\r\n this.startEditing(true);\r\n }\r\n\r\n rowIsBeingEdited(): boolean {\r\n let editingCells = this.params.api.getEditingCells();\r\n if (editingCells && editingCells.length > 0 && editingCells.some(x => x.rowIndex == this.params.rowIndex))\r\n return true;\r\n else\r\n return false;\r\n }\r\n\r\n public agInit(params: IInlineEditorCellRendererParams): void {\r\n this.data = params.data;\r\n this.currentStateOfData = JSON.parse(JSON.stringify(params.data));\r\n this.api = params.api;\r\n this.cellName = params?.colDef?.cellRenderer?.toString() || '';\r\n this.params = params;\r\n\r\n if (this.params.allowMultipleOngoingEdits) {\r\n this.allowMultipleOngoingEdits = this.params.allowMultipleOngoingEdits\r\n }\r\n \r\n if (params.validityChangedEvent) {\r\n let validityChanged$ = params.validityChangedEvent.subscribe((result: Array) => {\r\n this.params.disclosureValidationStatements = result;\r\n this.filterDisclosureValidation();\r\n this.subscription.add(validityChanged$);\r\n }, error => {\r\n console.log('Error listening for updated validation info ' + error);\r\n this.subscription.add(validityChanged$);\r\n });\r\n }\r\n\r\n if (params.dataChangedEvent/* && this.params.node.rowPinned*/) {\r\n let dataChanged$ = params.dataChangedEvent.subscribe((event: { value: any, field: string, itemId?: string }) => {\r\n if ((isNotNullOrEmpty(event.itemId) && this.params.itemRowIdGetter(this.params) == event.itemId) ||\r\n (params.node.rowPinned == \"bottom\" && event.itemId == \"b-0\")) {\r\n this.currentStateOfData[event.field] = event.value;\r\n if (this.params.canAdd !== null && this.params.canAdd !== undefined) {\r\n this.canAdd = this.params.canAdd instanceof Function ? this.params.canAdd(this.currentStateOfData) : this.params.canAdd;\r\n }\r\n\r\n if (this.params.canSave !== null && this.params.canSave !== undefined) {\r\n this.canSave = this.params.canSave instanceof Function ? this.params.canSave(this.currentStateOfData) : this.params.canSave;\r\n }\r\n }\r\n this.subscription.add(dataChanged$);\r\n }, error => {\r\n console.log('Error listening for updated validation info ' + error);\r\n this.subscription.add(dataChanged$);\r\n });\r\n }\r\n\r\n this.filterDisclosureValidation();\r\n\r\n this.originalData = JSON.parse(JSON.stringify(this.data));\r\n\r\n if (params.columnToStartEditKey !== null && params.columnToStartEditKey !== undefined)\r\n this.columnToStartEditKey = params.columnToStartEditKey;\r\n\r\n let isRowPinned = this.params.node.rowPinned;\r\n\r\n if (this.api) {\r\n if (this.allowMultipleOngoingEdits) {\r\n this.api.addEventListener(\"rowEditingStarted\", this.rowEditingStartedEventHandler.bind(this));\r\n }\r\n //else {\r\n // this.api.addEventListener(\"rowEditingStopped\", this.rowEditingStoppedEventHandler.bind(this));\r\n //}\r\n }\r\n\r\n if (this.params.onlyHandleDelete !== null && this.params.onlyHandleDelete !== undefined) {\r\n this.onlyHandleDelete = this.params.onlyHandleDelete;\r\n }\r\n\r\n if (this.params.canDelete !== null && this.params.canDelete !== undefined) {\r\n this.canDelete = this.params.canDelete instanceof Function ? this.params.canDelete(params) : this.params.canDelete;\r\n }\r\n\r\n if (this.params.canAdd !== null && this.params.canAdd !== undefined) {\r\n this.canAdd = this.params.canAdd instanceof Function ? this.params.canAdd(params) : this.params.canAdd;\r\n }\r\n\r\n if (this.params.canSave !== null && this.params.canSave !== undefined) {\r\n this.canSave = this.params.canSave instanceof Function ? this.params.canSave(params.data) : this.params.canSave;\r\n }\r\n\r\n if (this.params.canRenew !== null && this.params.canRenew !== undefined) {\r\n this.canRenew = this.params.canRenew instanceof Function ? this.params.canRenew(params) : this.params.canRenew;\r\n }\r\n\r\n this.readOnly = params.isBeingEdited ? !params.isBeingEdited(params) : true;\r\n \r\n }\r\n\r\n filterDisclosureValidation() {\r\n //Filter out statements that don't pertain to our data type\r\n let itemId = this.params.itemRowIdGetter(this.params);\r\n if (this.params.idType) {\r\n switch (this.params.idType) {\r\n case DisclosureValidationIdType.Purpose:\r\n this.disclosureValidationStatements = this.params.disclosureValidationStatements.filter(x => x.purposeId == itemId && (x.ingredientsId == null || x.ingredientsId == undefined));\r\n break;\r\n case DisclosureValidationIdType.Ingredient:\r\n this.disclosureValidationStatements = this.params.disclosureValidationStatements.filter(x => x.ingredientsId == itemId);\r\n break;\r\n case DisclosureValidationIdType.WaterSource:\r\n\r\n break;\r\n }\r\n }\r\n\r\n }\r\n\r\n public refresh(params: any): boolean {\r\n return false;\r\n }\r\n\r\n public startEditing(hereFromEventListener: boolean = false): void {\r\n\r\n if (this.params.onActionTriggerHandler) {\r\n this.params.onActionTriggerHandler({\r\n context: this.params.context,\r\n row: this.params.node.rowIndex,\r\n rowId: this.params.itemRowIdGetter(this.params),\r\n action: InlineEditorTriggerActionType.StartedEditingRow,\r\n data: this.data\r\n } as InlineEditorActionTriggerParams);\r\n\r\n\r\n if (this.params.isBeingEdited !== undefined && this.params.isBeingEdited !== null) {\r\n this.readOnly = !this.params.isBeingEdited(this.params);\r\n }\r\n }\r\n\r\n if (!hereFromEventListener) {\r\n //Needed to get style rules to refresh and disable non edited rows.\r\n this.api.redrawRows();\r\n this.api.startEditingCell({\r\n rowIndex: this.params.node.rowIndex,\r\n colKey: this.columnToStartEditKey,\r\n rowPinned: this.params.node.rowPinned\r\n } as StartEditingCellParams);\r\n }\r\n\r\n console.log('end of togglereadonly Purpose', this.readOnly);\r\n }\r\n\r\n public stopEditing(revertData: boolean = true, hereFromEventHandler: boolean = false): void {\r\n //this.readOnly = true;\r\n\r\n if ((this.originalData || this.params.originalData) && revertData) {\r\n\r\n if (this.params.originalData != null && this.params.originalData != undefined) {\r\n if (this.params.originalData instanceof Function) {\r\n var paramData = this.params.originalData(this.currentStateOfData);\r\n if(paramData)\r\n this.originalData = JSON.parse(JSON.stringify(this.params.originalData(this.currentStateOfData)));\r\n }\r\n else {\r\n this.originalData = JSON.parse(JSON.stringify(this.params.originalData));\r\n }\r\n\r\n }\r\n\r\n let rowId = this.params.itemRowIdGetter(this.params);\r\n let rowNode: RowNode;\r\n\r\n if (this.params.node.rowPinned == 'bottom') {\r\n rowNode = (this.api as GridApi).getPinnedBottomRow(this.params.node.rowIndex);\r\n }\r\n else if (this.params.node.rowPinned == 'top') {\r\n rowNode = (this.api as GridApi).getPinnedTopRow(this.params.node.rowIndex);\r\n }\r\n else {\r\n rowNode = (this.api as GridApi).getRowNode(rowId);\r\n }\r\n\r\n rowNode.data = JSON.parse(JSON.stringify(this.originalData));\r\n this.params.data = JSON.parse(JSON.stringify(this.originalData));\r\n if (this.params.node.detailNode) {\r\n this.params.node.detailNode.data = JSON.parse(JSON.stringify(this.originalData));\r\n }\r\n }\r\n\r\n if (this.params.onActionTriggerHandler) {\r\n this.params.onActionTriggerHandler({\r\n context: this.params.context,\r\n row: this.params.node.rowIndex,\r\n rowId: this.params.itemRowIdGetter(this.params),\r\n action: InlineEditorTriggerActionType.StoppedEditingRow,\r\n data: this.data\r\n } as InlineEditorActionTriggerParams);\r\n }\r\n\r\n if (this.params.isBeingEdited !== undefined && this.params.isBeingEdited !== null) {\r\n this.readOnly = !this.params.isBeingEdited(this.params);\r\n }\r\n\r\n if (!hereFromEventHandler) {\r\n this.api.stopEditing(revertData);\r\n //Needed to get style rules to refresh and re-enable non edited rows.\r\n this.api.redrawRows();\r\n }\r\n\r\n console.log('end of togglereadonly Purpose', this.readOnly);\r\n }\r\n\r\n public add(): void {\r\n this.stopEditing(false, false);\r\n\r\n if (this.params.onActionTriggerHandler) {\r\n this.params.onActionTriggerHandler({\r\n context: this.params.context,\r\n row: this.params.node.rowIndex,\r\n rowId: this.params.itemRowIdGetter(this.params),\r\n action: InlineEditorTriggerActionType.AddItemAsNewRow,\r\n data: this.data\r\n } as InlineEditorActionTriggerParams);\r\n }\r\n }\r\n\r\n public save(): void {\r\n this.stopEditing(false, false);\r\n if (this.params.onActionTriggerHandler) {\r\n this.params.onActionTriggerHandler({\r\n context: this.params.context,\r\n row: this.params.node.rowIndex,\r\n rowId: this.params.itemRowIdGetter(this.params),\r\n action: InlineEditorTriggerActionType.SaveRow,\r\n data: this.data\r\n } as InlineEditorActionTriggerParams);\r\n }\r\n }\r\n\r\n public deleteRow(): void {\r\n this.readOnly = true;\r\n this.api.stopEditing(true);\r\n\r\n if (this.params.onActionTriggerHandler) {\r\n this.params.onActionTriggerHandler({\r\n context: this.params.context,\r\n row: this.params.node.rowIndex,\r\n rowId: this.params.itemRowIdGetter(this.params),\r\n action: InlineEditorTriggerActionType.DeleteRow,\r\n data: this.data\r\n } as InlineEditorActionTriggerParams);\r\n }\r\n }\r\n\r\n public renew(): void {\r\n if (this.params.onActionTriggerHandler) {\r\n this.params.onActionTriggerHandler({\r\n context: this.params.context,\r\n row: this.params.node.rowIndex,\r\n rowId: this.params.itemRowIdGetter(this.params),\r\n action: InlineEditorTriggerActionType.RenewRow,\r\n data: this.data\r\n } as InlineEditorActionTriggerParams);\r\n }\r\n }\r\n\r\n hasError(): boolean {\r\n if (this.disclosureValidationStatements && this.disclosureValidationStatements.length > 0) {\r\n let errorExists = this.disclosureValidationStatements.filter(x => x.messageType == \"Error\" || x.messageType == \"Critical Error\").length > 0;\r\n if (errorExists)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n hasWarning(): boolean {\r\n if (this.disclosureValidationStatements && this.disclosureValidationStatements.length > 0) {\r\n let warningExists = this.disclosureValidationStatements.filter(x => x.messageType == \"Warning\").length > 0;\r\n if (warningExists)\r\n return true;\r\n }\r\n return false;\r\n }\r\n\r\n getErrorOrWarningMessage(type: string) {\r\n let message = \"\";\r\n\r\n if (this.hasError && type == \"validationError\") {\r\n let errorStatements = this.disclosureValidationStatements.filter(x => x.messageType == \"Error\" || x.messageType == \"Critical Error\");\r\n errorStatements.forEach(x => message += x.message + \" \");\r\n }\r\n else if (this.hasError && type == \"validationWarning\") {\r\n let warningStatements = this.disclosureValidationStatements.filter(x => x.messageType == \"Warning\")\r\n warningStatements.forEach(x => message += x.message + \" \");\r\n }\r\n\r\n return message;\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-enterprise';\r\n\r\n@Component({\r\n selector: 'open-delete-cell',\r\n templateUrl: './open-delete-cell.component.html',\r\n styleUrls: ['./open-delete-cell.component.scss']\r\n})\r\nexport class OpenDeleteCellComponent implements OnInit, ICellRendererAngularComp {\r\n public data: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public readOnly: boolean = true;\r\n constructor(private router: Router) {\r\n console.log('opendeletecell constructed');\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n console.log('ag init', this.data)\r\n }\r\n refresh(params: ICellRendererParams): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n open(): void {\r\n this.router.navigate(['/disclosure/edit-disclosure/', this.data.disclosureId]);\r\n }\r\n\r\n delete(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"delete\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n selector: 'app-open-rollback-cell',\r\n templateUrl: './open-rollback-cell.component.html',\r\n styleUrls: ['./open-rollback-cell.component.scss']\r\n})\r\nexport class OpenRollbackCellComponent implements OnInit, ICellRendererAngularComp {\r\n public data: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public readOnly: boolean = true;\r\n\r\n constructor(private router: Router) { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n }\r\n\r\n open(): void {\r\n this.router.navigate(['/disclosure/edit-disclosure/', this.data.disclosureId]);\r\n }\r\n\r\n rollback() {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"rollback\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n}\r\n","
\r\n \r\n \r\n
","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\nimport { IRadioButtonCellEditorParams } from '../../../models/radio-button-cell-editor-params.model';\r\nimport { IRadioButtonCellRendererParams } from '../../../models/radio-button-cell-renderer-params.model';\r\n\r\n@Component({\r\n selector: 'radio-button-cell-renderer',\r\n templateUrl: './radio-button-cell-renderer.component.html',\r\n styleUrls: ['./radio-button-cell-renderer.component.scss']\r\n})\r\nexport class RadioButtonCellRendererComponent implements ICellRendererAngularComp {\r\n public cellWidth: string = \"\";\r\n public cellHeight: string = \"\";\r\n public value: string = \"\";\r\n public name: string = \"\";\r\n public id: string = \"\";\r\n public isSelected: boolean = false;\r\n private params: IRadioButtonCellRendererParams;\r\n constructor() {\r\n }\r\n\r\n refresh(params: ICellRendererParams): boolean {\r\n return false;\r\n }\r\n\r\n public agInit(params: IRadioButtonCellRendererParams): void {\r\n this.params = params;\r\n this.name = params.name;\r\n this.id = params.id(this.params);\r\n this.isSelected = params.isSelected(this.params);\r\n }\r\n\r\n public ngAfterViewInit() {\r\n }\r\n}\r\n","\r\n\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-enterprise';\r\n\r\n@Component({\r\n selector: 'app-send-activation-email-cell',\r\n templateUrl: './send-activation-email-cell.component.html',\r\n styleUrls: ['./send-activation-email-cell.component.scss']\r\n})\r\nexport class SendActivationEmailCellComponent implements ICellRendererAngularComp {\r\n public data: any;\r\n public val: boolean = false;\r\n public originalData: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public columnName: any;\r\n private cellName: string = '';\r\n public isPending: boolean = false;\r\n public disabled: boolean = true;\r\n\r\n constructor() { }\r\n\r\n public agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.val = params.value;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n this.cellName = params?.colDef?.cellRenderer?.toString() || '';\r\n this.columnName = (params.column as any).colId;\r\n\r\n this.isPending = this.data.status === \"Pending\";\r\n this.disabled = this.data.disabled === undefined ? true : this.data.disabled;\r\n }\r\n\r\n public refresh(params: any): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n public sendActivationEmail(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"sendActivationEmail\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n}\r\n","\r\n
{{data.lastSuccessfulTwoFALogin | date: 'MM/dd/yyyy'}}
\r\n","import { Component } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ICellRendererParams } from 'ag-grid-community';\r\n\r\n@Component({\r\n selector: 'app-unlock-user-cell',\r\n templateUrl: './unlock-user-cell.component.html',\r\n styleUrls: ['./unlock-user-cell.component.scss']\r\n})\r\nexport class UnlockUserCellComponent implements ICellRendererAngularComp {\r\n public data: any;\r\n public originalData: any;\r\n public api: any;\r\n public rowIndex: number = -1;\r\n public status: string;\r\n public isLocked: boolean = false;\r\n public isInactive: boolean = false;\r\n\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public agInit(params: ICellRendererParams): void {\r\n this.data = params.data;\r\n this.api = params.api;\r\n this.rowIndex = params.rowIndex;\r\n this.status = this.data.status;\r\n this.isLocked = this.data.status === \"Locked\";\r\n this.isInactive = this.data.status === \"Inactive\";\r\n }\r\n\r\n public refresh(params: any): boolean {\r\n this.rowIndex = params.rowIndex;\r\n return false;\r\n }\r\n\r\n public unlock(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"unlock\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n public reactivate(): void {\r\n if (this.api.onActionTrigger) {\r\n this.api.onActionTrigger({ row: this.rowIndex, action: \"reactivate\", data: this.data });\r\n } else {\r\n console.error(\"OnActionTrigger not defined\");\r\n }\r\n }\r\n\r\n}\r\n","
\r\n{{status}}\r\n
\r\n
\r\n Unlock\r\n Re-activate\r\n
\r\n","import { Component, OnDestroy } from '@angular/core';\r\nimport { ICellRendererAngularComp } from 'ag-grid-angular';\r\nimport { ColumnResizedEvent, GridApi } from 'ag-grid-community';\r\nimport { finalize, Subscription } from 'rxjs';\r\nimport { DisclosureValidationStatement } from '../../../../common/models/disclosures/disclosure-validation-statement.model';\r\nimport { IValidatedFieldCellRendererParams } from '../../../models/validated-field-cell-renderer-params.model';\r\n\r\n@Component({\r\n selector: 'validated-field-cell-renderer',\r\n templateUrl: './validated-field-cell-renderer.component.html',\r\n styleUrls: ['./validated-field-cell-renderer.component.scss']\r\n})\r\nexport class ValidatedFieldCellRendererComponent implements ICellRendererAngularComp, OnDestroy {\r\n public cellWidth: string = \"\";\r\n public cellHeight: string = \"\";\r\n public isValid: boolean = true;\r\n public params: IValidatedFieldCellRendererParams;\r\n public fieldValue: any;\r\n private amountToSubstractForWidth: number = 25;\r\n private amountToSubstractForHeight: number = 8;\r\n private subscription: Subscription = new Subscription();\r\n public makeFocusable: boolean = false;\r\n constructor() {\r\n }\r\n\r\n refresh(params: IValidatedFieldCellRendererParams): boolean {\r\n return false;\r\n }\r\n\r\n getTabIndex(): string {\r\n return this.params.rowIndex.toString();\r\n }\r\n\r\n public agInit(params: IValidatedFieldCellRendererParams): void {\r\n this.params = params;\r\n if (this.params.makeFocusable) {\r\n this.makeFocusable = this.params.makeFocusable;\r\n }\r\n\r\n //Need to substract more when this is the inner renderer of a group cell\r\n if (params.colDef.cellRenderer == \"agGroupCellRenderer\") {\r\n this.amountToSubstractForWidth += 47;\r\n }\r\n\r\n if (params.validityChangedEvent && params.isValid instanceof Function) {\r\n let validityChanged$ = params.validityChangedEvent.pipe(finalize(() => {\r\n this.subscription.add(validityChanged$);\r\n })).subscribe((result: Array) => {\r\n this.isValid = params.isValid(result, this.params.fieldName, this.params.idType, this.params.node.id);\r\n }, error => {\r\n console.log('Error listening for updated validation info ' + error);\r\n });\r\n }\r\n\r\n if (params.initialDisclosureValidationStatements && params.initialDisclosureValidationStatements.length > 0) {\r\n this.isValid = params.isValid(params.initialDisclosureValidationStatements, this.params.fieldName, this.params.idType, this.params.node.id);\r\n }\r\n\r\n (this.params.api as GridApi).addEventListener(\"columnResized\",\r\n (event: ColumnResizedEvent) => {\r\n if ((event.column && event.column.getId() == this.params.colDef.colId) || event.column === null || this.params.colDef.colId === undefined) {\r\n this.cellWidth = (params.column.getActualWidth()) - this.amountToSubstractForWidth + 'px';\r\n this.cellHeight = (params.node.rowHeight) - this.amountToSubstractForHeight + 'px';\r\n }\r\n }\r\n );\r\n\r\n this.fieldValue = this.isNotNullOrUndefined(params.valueFormatted) ? params.valueFormatted : this.isNotNullOrUndefined(params.value)? params.value : \"\";\r\n\r\n this.cellWidth = (params.column.getActualWidth()) - this.amountToSubstractForWidth + 'px';\r\n this.cellHeight = (params.node.rowHeight) - this.amountToSubstractForHeight + 'px'; \r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription)\r\n this.subscription.unsubscribe();\r\n }\r\n\r\n isNotNullOrUndefined(value: any): boolean {\r\n return value !== null && value !== undefined;\r\n }\r\n\r\n public setValidityStatus(isValid: boolean) {\r\n this.isValid = isValid;\r\n }\r\n\r\n public ngAfterViewInit() {\r\n }\r\n}\r\n","
\r\n\r\n","import { AgGridModule } from 'ag-grid-angular';\r\nimport { CommonModule } from '@angular/common';\r\nimport { NgModule } from '@angular/core';\r\nimport { IconSpriteModule } from 'ng-svg-icon-sprite';\r\nimport { UiLibrarySharedModule } from 'ui-library-shared';\r\nimport { IconButtonComponent } from '../common/ui/components/icon-button/icon-button.component';\r\nimport { IconButtonColorEnumPipe } from '../common/ui/components/icon-button/icon-button-color-enum.pipe';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { NgSelectModule } from '@ng-select/ng-select';\r\nimport { AdminFunctionsCellComponent } from './components/renderers/admin-functions-cell/admin-functions-cell.component';\r\nimport { InlineEditorCellRendererComponent } from './components/renderers/inline-editor-cell-renderer/inline-editor-cell-renderer.component';\r\nimport { CASNumberCellEditorComponent } from './components/editors/cas-number-cell-editor/cas-number-cell-editor.component';\r\nimport { SettableTextCellEditorComponent } from './components/editors/settable-text-cell-editor/settable-text-cell-editor.component';\r\nimport { AGGridHelperService } from './services/ag-grid-helper-service';\r\nimport { NumericCellEditorComponent } from './components/editors/numeric-cell-editor/numeric-cell-editor.component';\r\nimport { OpenDeleteCellComponent } from './components/renderers/open-delete-cell/open-delete-cell.component';\r\nimport { OpenRollbackCellComponent } from './components/renderers/open-rollback-cell/open-rollback-cell.component';\r\nimport { EditHistoryCellComponent } from './components/renderers/edit-history-cell/edit-history-cell.component';\r\nimport { AlwaysActiveCheckboxCellComponent } from './components/renderers/always-active-checkbox-cell/always-active-checkbox-cell.component';\r\nimport { RadioButtonCellEditorComponent } from './components/editors/radio-button-cell-editor/radio-button-cell-editor.component';\r\nimport { NgSelectEditorComponent } from './components/editors/ng-select-editor/ng-select-editor.component';\r\nimport { RadioButtonCellRendererComponent } from './components/renderers/radio-button-cell-renderer/radio-button-cell-renderer.component';\r\nimport { EditDeleteCellComponent } from './components/renderers/edit-delete-cell/edit-delete-cell.component';\r\nimport { ValidatedFieldCellRendererComponent } from './components/renderers/validated-field-cell-renderer/validated-field-cell-renderer.component';\r\nimport { SafeHtmlPipe } from '../common/pipes/safe-html.pipe';\r\nimport { AmendCellComponent } from './components/renderers/amend-cell/amend-cell.component';\r\nimport { SendActivationEmailCellComponent } from './components/renderers/send-activation-email-cell/send-activation-email-cell.component';\r\nimport { HistoryCellRendererComponent } from './components/renderers/history-cell-renderer/history-cell-renderer.component';\r\nimport { DateCellEditorComponent } from './components/editors/date-cell-editor/date-cell-editor.component';\r\nimport { DownloadXmlCellComponent } from './components/renderers/download-xml-cell/download-xml-cell.component';\r\nimport { ImpersonateUserCellComponent } from './components/renderers/impersonate-user-cell/impersonate-user-cell.component';\r\nimport { UnlockUserCellComponent } from './components/renderers/unlock-user-cell/unlock-user-cell.component';\r\nimport { UserRoleCellEditorComponent } from './components/editors/user-role-cell-editor/user-role-cell-editor.component';\r\nimport { DateCellRendererComponent } from './components/renderers/date-cell-renderer/date-cell-renderer.component';\r\nimport { HeaderButtonRendererComponent } from './components/renderers/header-button-renderer/header-button-renderer.component';\r\nimport { SettableCheckboxEditorComponent } from './components/editors/settable-checkbox-editor/settable-checkbox-editor.component';\r\nimport { CheckboxRendererComponent } from './components/renderers/checkbox-renderer/checkbox-renderer.component';\r\n\r\n@NgModule({\r\n declarations: [\r\n AdminFunctionsCellComponent,\r\n IconButtonComponent,\r\n IconButtonColorEnumPipe,\r\n InlineEditorCellRendererComponent,\r\n CASNumberCellEditorComponent,\r\n SettableTextCellEditorComponent,\r\n NumericCellEditorComponent,\r\n RadioButtonCellEditorComponent,\r\n NgSelectEditorComponent,\r\n OpenDeleteCellComponent,\r\n OpenRollbackCellComponent,\r\n AlwaysActiveCheckboxCellComponent,\r\n EditHistoryCellComponent,\r\n EditDeleteCellComponent,\r\n AmendCellComponent,\r\n RadioButtonCellRendererComponent,\r\n EditHistoryCellComponent,\r\n SafeHtmlPipe,\r\n ValidatedFieldCellRendererComponent,\r\n SettableCheckboxEditorComponent,\r\n SendActivationEmailCellComponent,\r\n HistoryCellRendererComponent,\r\n DateCellEditorComponent,\r\n DownloadXmlCellComponent,\r\n ImpersonateUserCellComponent,\r\n UnlockUserCellComponent,\r\n UserRoleCellEditorComponent,\r\n DateCellRendererComponent,\r\n HeaderButtonRendererComponent,\r\n CheckboxRendererComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n AgGridModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n IconSpriteModule,\r\n UiLibrarySharedModule,\r\n NgSelectModule\r\n ],\r\n exports: [\r\n AgGridModule,\r\n AdminFunctionsCellComponent,\r\n IconButtonComponent,\r\n IconButtonColorEnumPipe,\r\n InlineEditorCellRendererComponent,\r\n CASNumberCellEditorComponent,\r\n SettableTextCellEditorComponent,\r\n SettableCheckboxEditorComponent,\r\n NumericCellEditorComponent,\r\n RadioButtonCellEditorComponent,\r\n RadioButtonCellRendererComponent,\r\n NgSelectEditorComponent,\r\n EditHistoryCellComponent,\r\n EditDeleteCellComponent,\r\n AlwaysActiveCheckboxCellComponent,\r\n SafeHtmlPipe,\r\n ValidatedFieldCellRendererComponent,\r\n AmendCellComponent,\r\n SendActivationEmailCellComponent,\r\n DownloadXmlCellComponent,\r\n DateCellRendererComponent,\r\n HeaderButtonRendererComponent\r\n ],\r\n providers: [\r\n AGGridHelperService\r\n ]\r\n})\r\nexport class FFAgGridModule { }\r\n","export enum DisclosureValidationIdType {\r\n Ingredient = 'Ingredient',\r\n Purpose = 'Purpose',\r\n WaterSource = 'WaterSource',\r\n}\r\n","export enum InlineEditorTriggerActionType {\r\n StartedEditingRow = \"startedEdit\",\r\n StoppedEditingRow = \"stoppedEdit\",\r\n DeleteRow = 'delete',\r\n SaveRow = 'editComplete',\r\n AddItemAsNewRow = 'addRow',\r\n RenewRow = 'renew',\r\n}\r\n","import { Injectable } from \"@angular/core\";\r\nimport { ColDef, CsvExportParams, ExcelDataType, ExcelExportParams, ExcelStyle, GridApi, GridOptions, ProcessCellForExportParams, RowNode, SuppressKeyboardEventParams, ValueFormatterFunc, ValueFormatterParams } from \"ag-grid-enterprise\";\r\nimport { isNullOrUndefined } from \"util\";\r\nimport { isNotNullOrEmpty } from \"../../common/functions/is-not-null-or-empty.function\";\r\nimport { ThirdPartyPurpose } from \"../../common/models/disclosures/3rd-party-purpose\";\r\nimport { DisclosureValidationStatement } from \"../../common/models/disclosures/disclosure-validation-statement.model\";\r\nimport { Purpose } from \"../../common/models/disclosures/purpose.model\";\r\nimport { RefThirdPartyStatus } from \"../../common/models/enums/third-party-chemical-status.enum\";\r\nimport { DisclosureValidationIdType } from \"../models/disclosure-validation-id-type.enum\";\r\nimport { IngredientService } from '../../common/services/ingredient.service';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AGGridHelperService {\r\n \r\n constructor(private ingredientService: IngredientService) {\r\n }\r\n\r\n getDefaultExcelStyles(): ExcelStyle[]{\r\n return [\r\n {\r\n id: 'body',\r\n dataType: 'String',\r\n interior: {\r\n color: '#dddddd',\r\n pattern: 'Solid',\r\n },\r\n alignment: { horizontal: 'Left' },\r\n } as ExcelStyle,\r\n {\r\n id: 'numberType',\r\n numberFormat: {\r\n format: '0',\r\n },\r\n } as ExcelStyle,\r\n {\r\n id: 'subContentNumberWithNoDecimalsType',\r\n dataType: 'Number',\r\n interior: {\r\n color: '#dddddd',\r\n pattern: 'Solid',\r\n },\r\n numberFormat: {\r\n format: '0',\r\n },\r\n alignment: { horizontal: 'Left' },\r\n } as ExcelStyle,\r\n {\r\n id: 'currencyFormat',\r\n numberFormat: {\r\n format: '#,##0.00 €',\r\n },\r\n } as ExcelStyle,\r\n {\r\n id: 'negativeInBrackets',\r\n numberFormat: {\r\n format: '$[blue] #,##0;$ [red](#,##0)',\r\n },\r\n } as ExcelStyle,\r\n {\r\n id: 'booleanType',\r\n dataType: 'Boolean',\r\n } as ExcelStyle,\r\n {\r\n id: 'stringType',\r\n dataType: 'String',\r\n alignment: { horizontal: 'Left' },\r\n } as ExcelStyle,\r\n {\r\n id: 'dateType',\r\n dataType: 'DateTime',\r\n } as ExcelStyle,\r\n {\r\n id: 'header',\r\n interior: {\r\n color: '#aaaaaa',\r\n pattern: 'Solid',\r\n },\r\n alignment:{ horizontal:'Left'}\r\n } as ExcelStyle,\r\n ]\r\n }\r\n\r\n getDefaultColumnDef(suppressEnterWhileEditing: boolean = false): ColDef {\r\n let defaultColDef = {\r\n sortable: true,\r\n filter: true,\r\n resizable: true,\r\n flex: 1,\r\n } as ColDef;\r\n\r\n if (suppressEnterWhileEditing) {\r\n //This is to prevent pressing the enter key from ending editing to preserve data reset on cancel\r\n defaultColDef.suppressKeyboardEvent = (event: SuppressKeyboardEventParams) => {\r\n let shouldSuppress: boolean = false;\r\n\r\n if (event.event.keyCode == 13)\r\n shouldSuppress = true;\r\n\r\n return shouldSuppress;\r\n }\r\n }\r\n\r\n return defaultColDef;\r\n }\r\n\r\n errorAppliesToField(validationStatements: Array, fieldName: string, idType: DisclosureValidationIdType, itemId: string): boolean {\r\n let isValid = true;\r\n\r\n for (let x = 0; x < validationStatements.length; x++) {\r\n let relevantStatement = validationStatements[x];\r\n\r\n let fieldName1 = \"\";\r\n let fieldName2 = \"\";\r\n let fieldName3 = \"\";\r\n let fieldName4 = \"\";\r\n\r\n if (relevantStatement.field1 != null && relevantStatement.field1 != undefined) {\r\n fieldName1 = relevantStatement.field1;\r\n }\r\n\r\n if (relevantStatement.field2 != null && relevantStatement.field2 != undefined) {\r\n fieldName2 = fieldName2;\r\n }\r\n\r\n if (relevantStatement.field3 != null && relevantStatement.field3 != undefined) {\r\n fieldName3 = fieldName3;\r\n }\r\n\r\n if (relevantStatement.field4 != null && relevantStatement.field4 != undefined) {\r\n fieldName4 = fieldName4;\r\n }\r\n\r\n switch (idType) {\r\n case DisclosureValidationIdType.Purpose:\r\n if (relevantStatement.purposeId != null && relevantStatement.purposeId != undefined && relevantStatement.purposeId == itemId\r\n && (fieldName1 == fieldName || fieldName2 == fieldName || fieldName3 == fieldName || fieldName4 == fieldName)) {\r\n isValid = false;\r\n }\r\n break;\r\n case DisclosureValidationIdType.Ingredient:\r\n if (relevantStatement.ingredientsId != null && relevantStatement.ingredientsId != undefined && relevantStatement.ingredientsId == itemId\r\n && (fieldName1 == fieldName || fieldName2 == fieldName || fieldName3 == fieldName || fieldName4 == fieldName)) {\r\n isValid = false;\r\n }\r\n break;\r\n case DisclosureValidationIdType.WaterSource:\r\n if (relevantStatement.waterSourceId != null && relevantStatement.waterSourceId != undefined && relevantStatement.waterSourceId == itemId\r\n && (fieldName1 == fieldName || fieldName2 == fieldName || fieldName3 == fieldName || fieldName4 == fieldName)) {\r\n isValid = false;\r\n }\r\n break;\r\n }\r\n }\r\n\r\n return isValid;\r\n }\r\n\r\n public exportDataToExcel(fileName: string, sheetName: string, gridOptions: GridOptions, selectedOnly: boolean = false, excelExportParams?: ExcelExportParams, skipPinnedRows: boolean = true): void {\r\n const params = {\r\n skipHeader: false,\r\n allColumns: true,\r\n fileName: fileName,\r\n sheetName: sheetName,\r\n onlySelected: selectedOnly,\r\n onlySelectedAllPages: selectedOnly,\r\n excelExportParams: excelExportParams,\r\n skipPinnedTop: skipPinnedRows,\r\n skipPinnedBottom: skipPinnedRows,\r\n getCustomContentBelowRow: excelExportParams?.getCustomContentBelowRow,\r\n processCellCallback: (params: ProcessCellForExportParams) => this.processCallback(params)\r\n } as ExcelExportParams;\r\n gridOptions.api.exportDataAsExcel(params);\r\n }\r\n\r\n private processCallback(params: any): string {\r\n const colDef: ColDef = params.column.getColDef();\r\n let returnValue = params.value;\r\n colDef.valueFormatter = colDef.valueFormatter as ValueFormatterFunc\r\n if (colDef.valueFormatter) {\r\n const valueFormatterParams: ValueFormatterParams = {\r\n ...params,\r\n data: params.node.data,\r\n node: params.node!,\r\n colDef: params.column.getColDef()\r\n };\r\n returnValue = colDef.valueFormatter(valueFormatterParams);\r\n }\r\n return returnValue;\r\n }\r\n\r\n dateFilterComparer(filterLocalDateAtMidnight: string, cellValue: string) {\r\n var filterDate = new Date(filterLocalDateAtMidnight);\r\n var cellDate = new Date(cellValue);\r\n \r\n var filterDateUTC = new Date(Date.UTC(filterDate.getUTCFullYear(), filterDate.getUTCMonth(), filterDate.getUTCDate()));\r\n var cellDateUTC = new Date(Date.UTC(cellDate.getUTCFullYear(), cellDate.getUTCMonth(), cellDate.getUTCDate()));\r\n \r\n if (cellDateUTC < filterDateUTC) {\r\n return -1;\r\n } else if (cellDateUTC > filterDateUTC) {\r\n return 1;\r\n } else {\r\n return 0;\r\n }\r\n }\r\n thirdPartyStatusComparer(status1: string, status2: string) {\r\n let convertedStatus1 = ConvertStatusToRankedVersions(status1);\r\n let convertedStatus2 = ConvertStatusToRankedVersions(status2);\r\n if (convertedStatus1 < convertedStatus2) {\r\n return -1;\r\n }\r\n if (convertedStatus1 > convertedStatus2) {\r\n return 1;\r\n }\r\n return 0;\r\n\r\n\r\n function ConvertStatusToRankedVersions(status: string): number {\r\n switch (status) {\r\n case RefThirdPartyStatus.Pending:\r\n return 4;\r\n case RefThirdPartyStatus.Active:\r\n return 3;\r\n case RefThirdPartyStatus.Inactive:\r\n return 2;\r\n case RefThirdPartyStatus.Deleted:\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n }\r\n\r\n public calculateMinMaxGridHeightAsNum(numRows: number, numPinnedRows: number = 1, min: number, max: number, rowHeight: number = 40.5): number {\r\n if (numRows < min) {\r\n numRows = min;\r\n }\r\n if (numRows > max) {\r\n numRows = max;\r\n }\r\n //50 : header, 47: paging\r\n let rowHeights = 50 + 47 + ((numRows + numPinnedRows) * rowHeight);\r\n return rowHeights;\r\n }\r\n\r\n //used for outer min/max grids\r\n public calculateMinMaxGridHeight(numRows: number, numPinnedRows: number = 1, min: number, max: number, rowHeight: number = 40.5): string {\r\n let rowHeights = this.calculateMinMaxGridHeightAsNum(numRows, numPinnedRows, min, max, rowHeight);\r\n return rowHeights + \"px\";\r\n }\r\n\r\n //used for inner/full height grids\r\n public calculateGridHeight(numRows: number, numPinnedRows: number = 0, appendPX:boolean = true): string | number {\r\n\r\n if (numRows < 1) {\r\n numRows = 1;\r\n }\r\n\r\n let rowHeights = 50 + ((numRows + numPinnedRows) * 41);\r\n\r\n return appendPX ? rowHeights + \"px\" : rowHeights;\r\n }\r\n\r\n public calculateDetailPanelHeight(numRows: number, numPinnedRows: number = 0): number {\r\n if (numRows < 1) {\r\n numRows = 1;\r\n }\r\n return (numRows + numPinnedRows + 2) * 41;\r\n }\r\n\r\n public calculateHistoryDetailPanelHeight(numRows: number): number {\r\n if (numRows === 0) {\r\n //for \"No history data found\" line\r\n numRows = 1;\r\n }\r\n //default height: History / Close History row\r\n const defaultHeight = 35;\r\n //27: single history row with margin bottom\r\n const rowHeight = 27;\r\n //padding for detail cell\r\n const detailCellPadding = 32;\r\n\r\n return defaultHeight + (numRows * rowHeight) + detailCellPadding;\r\n }\r\n\r\n public calculateDetailRowHeightWithAdditionalInformation(node: RowNode): number {\r\n let numRows = node.data.ingredients ? node.data.ingredients.length : 0;\r\n let numRowsWithAdditionalInfo = 0;\r\n if (numRows > 0) {\r\n numRowsWithAdditionalInfo = node.data.ingredients.filter((x:any) => this.ingredientService.validCASAlternatives.some(y => y.toLowerCase() == x.casNumber.toLowerCase())).length;\r\n }\r\n //calc details panel height\r\n let detailPanelHeight = this.calculateDetailPanelHeight(numRows);\r\n detailPanelHeight += 80 * numRowsWithAdditionalInfo;\r\n\r\n return detailPanelHeight;\r\n }\r\n\r\n public calculateExpandedGridHeight(unexpandedGridHeight: string, combinedExpandedRowHeight:number): string {\r\n let unexpandedGridHeightNum = parseInt(unexpandedGridHeight.slice(0, unexpandedGridHeight.length - 2));\r\n let combinedGridHeight = combinedExpandedRowHeight + unexpandedGridHeightNum;\r\n return combinedGridHeight.toString() + \"px\";\r\n }\r\n\r\n public formatAPINumber(apiNumber: string): string {\r\n if (!isNotNullOrEmpty(apiNumber)) {\r\n return apiNumber;\r\n }\r\n\r\n const mask = '00-000-00000-00-00';\r\n let formattedValue = '';\r\n let index = 0;\r\n for (let i = 0; i < mask.length; i++) {\r\n if (mask[i] === '0') {\r\n if (index < apiNumber.length) {\r\n formattedValue += apiNumber[index];\r\n index++;\r\n } else {\r\n formattedValue += '0';\r\n }\r\n } else {\r\n formattedValue += mask[i];\r\n }\r\n }\r\n return formattedValue;\r\n }\r\n\r\n public gridInfoHelpText: string = `\r\n
    \r\n
  • Each column in the grid below can be sorted by clicking on the column header.

  • \r\n
  • You can filter on any column by first clicking on this icon then you can then choose and enter filtering rules to search for text, values or dates.
    You can add multiple filters on each column for detailed searches in the grid.

  • \r\n
  • You can add additional columns to the grid by clicking the icon and clicking on additional columns. In addition, you can remove columns that are checked.

  • \r\n
  • Grid data can be exported by clicking on the \"Export Data\" button.

  • \r\n
\r\n `;\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject, BehaviorSubject } from 'rxjs';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class GridService {\r\n public readOnly: BehaviorSubject = new BehaviorSubject(true);\r\n public rowIdex: Subject = new Subject();\r\n // public readOnlyPurpose: BehaviorSubject = new BehaviorSubject(true);\r\n // public rowIdexPurpose: Subject = new Subject();\r\n public readOnlyIngredient: BehaviorSubject = new BehaviorSubject(true);\r\n public rowIdexIngredient: Subject = new Subject();\r\n public selectedTable: Subject = new Subject();\r\n\r\n constructor() { }\r\n}\r\n","//THIS IS DEPRECATED AND NO LONGER USED, KEEPING FOR NOW AS A REFERENCE\r\n\r\nexport const ApplicationName = 'FracFocus.Web';\r\n\r\nexport const ReturnUrlType = 'returnUrl';\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: ReturnUrlType,\r\n Message: 'message'\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register',\r\n ConfirmEmail: 'confirm-email',\r\n ForgotPassword: 'forgot-password',\r\n ResetPassword: 'reset-password',\r\n ResendEmailConfirmation: 'resend-email-confirmation',\r\n TwoFactorCodeEntry: 'two-factor-code-entry'\r\n};\r\n\r\nlet applicationPaths: ApplicationPathsType = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `_configuration/${ApplicationName}`,\r\n Login: `authentication/${LoginActions.Login}`,\r\n LoginFailed: `authentication/${LoginActions.LoginFailed}`,\r\n LoginCallback: `authentication/${LoginActions.LoginCallback}`,\r\n Register: `authentication/${LoginActions.Register}`,\r\n Profile: `authentication/${LoginActions.Profile}`,\r\n LogOut: `authentication/${LogoutActions.Logout}`,\r\n LoggedOut: `authentication/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `authentication/${LogoutActions.LogoutCallback}`,\r\n LoginPathComponents: [],\r\n LoginFailedPathComponents: [],\r\n LoginCallbackPathComponents: [],\r\n RegisterPathComponents: [],\r\n ProfilePathComponents: [],\r\n LogOutPathComponents: [],\r\n LoggedOutPathComponents: [],\r\n LogOutCallbackPathComponents: [],\r\n IdentityRegisterPath: 'Identity/Account/Register',\r\n IdentityManagePath: 'Identity/Account/Manage',\r\n ConfirmEmailPath: `authentication/${LoginActions.ConfirmEmail}`,\r\n ForgotPassword: `authentication/${LoginActions.ForgotPassword}`,\r\n ResetPassword: `authentication/${LoginActions.ResetPassword}`,\r\n ResendEmailConfirmation: `authentication/${LoginActions.ResendEmailConfirmation}`,\r\n TwoFactorCodeEntry: `authentication/${LoginActions.TwoFactorCodeEntry}/:sessionId/:userId`\r\n};\r\n\r\napplicationPaths = {\r\n ...applicationPaths,\r\n LoginPathComponents: applicationPaths.Login.split('/'),\r\n LoginFailedPathComponents: applicationPaths.LoginFailed.split('/'),\r\n RegisterPathComponents: applicationPaths.Register.split('/'),\r\n ProfilePathComponents: applicationPaths.Profile.split('/'),\r\n LogOutPathComponents: applicationPaths.LogOut.split('/'),\r\n LoggedOutPathComponents: applicationPaths.LoggedOut.split('/'),\r\n LogOutCallbackPathComponents: applicationPaths.LogOutCallback.split('/')\r\n};\r\n\r\ninterface ApplicationPathsType {\r\n readonly DefaultLoginRedirectPath: string;\r\n readonly ApiAuthorizationClientConfigurationUrl: string;\r\n readonly Login: string;\r\n readonly LoginFailed: string;\r\n readonly LoginCallback: string;\r\n readonly Register: string;\r\n readonly Profile: string;\r\n readonly LogOut: string;\r\n readonly LoggedOut: string;\r\n readonly LogOutCallback: string;\r\n readonly LoginPathComponents: string [];\r\n readonly LoginFailedPathComponents: string [];\r\n readonly LoginCallbackPathComponents: string [];\r\n readonly RegisterPathComponents: string [];\r\n readonly ProfilePathComponents: string [];\r\n readonly LogOutPathComponents: string [];\r\n readonly LoggedOutPathComponents: string [];\r\n readonly LogOutCallbackPathComponents: string [];\r\n readonly IdentityRegisterPath: string;\r\n readonly IdentityManagePath: string;\r\n readonly ConfirmEmailPath: string;\r\n readonly ForgotPassword: string;\r\n readonly ResetPassword: string;\r\n readonly ResendEmailConfirmation: string;\r\n readonly TwoFactorCodeEntry: string;\r\n}\r\n\r\nexport const ApplicationPaths: ApplicationPathsType = applicationPaths;\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthorizeService } from './authorize.service';\r\nimport { mergeMap } from 'rxjs/operators';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthorizeInterceptor implements HttpInterceptor {\r\n constructor(private authorize: AuthorizeService) { }\r\n\r\n intercept(req: HttpRequest, next: HttpHandler): Observable> {\r\n return this.authorize.getAccessToken()\r\n .pipe(mergeMap(token => this.processRequestWithToken(token, req, next)));\r\n }\r\n\r\n // Checks if there is an access_token available in the authorize service\r\n // and adds it to the request in case it's targeted at the same origin as the\r\n // single page application.\r\n private processRequestWithToken(token: string | null, req: HttpRequest, next: HttpHandler) {\r\n if (!!token && this.isSameOriginUrl(req)) {\r\n req = req.clone({\r\n setHeaders: {\r\n Authorization: `Bearer ${token}`\r\n }\r\n });\r\n }\r\n\r\n return next.handle(req);\r\n }\r\n\r\n private isSameOriginUrl(req: any) {\r\n // It's an absolute url with the same origin.\r\n if (req.url.startsWith(`${window.location.origin}/`)) {\r\n return true;\r\n }\r\n\r\n // It's a protocol relative url with the same origin.\r\n // For example: //www.example.com/api/Products\r\n if (req.url.startsWith(`//${window.location.host}/`)) {\r\n return true;\r\n }\r\n\r\n // It's a relative url like /api/Products\r\n if (/^\\/[^\\/].*/.test(req.url)) {\r\n return true;\r\n }\r\n\r\n // It's an absolute or protocol relative url that\r\n // doesn't have the same origin.\r\n return false;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { User, UserManager } from 'oidc-client';\r\nimport { BehaviorSubject, concat, from, Observable } from 'rxjs';\r\nimport { filter, map, mergeMap, take, tap } from 'rxjs/operators';\r\nimport { ApplicationPaths, ApplicationName } from './api-authorization.constants';\r\n\r\nexport type IAuthenticationResult =\r\n SuccessAuthenticationResult |\r\n FailureAuthenticationResult |\r\n RedirectAuthenticationResult;\r\n\r\nexport interface SuccessAuthenticationResult {\r\n status: AuthenticationResultStatus.Success;\r\n state: any;\r\n}\r\n\r\nexport interface FailureAuthenticationResult {\r\n status: AuthenticationResultStatus.Fail;\r\n message: string;\r\n}\r\n\r\nexport interface RedirectAuthenticationResult {\r\n status: AuthenticationResultStatus.Redirect;\r\n}\r\n\r\nexport enum AuthenticationResultStatus {\r\n Success,\r\n Redirect,\r\n Fail\r\n}\r\n\r\nexport interface IUser {\r\n name?: string;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthorizeService {\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n\r\n private popUpDisabled = true;\r\n private userManager?: UserManager;\r\n private userSubject: BehaviorSubject = new BehaviorSubject(null);\r\n\r\n public isAuthenticated(): Observable {\r\n return this.getUser().pipe(map(u => !!u));\r\n }\r\n\r\n public getUser(): Observable {\r\n return concat(\r\n this.userSubject.pipe(take(1), filter(u => !!u)),\r\n this.getUserFromStorage().pipe(filter(u => !!u), tap(u => this.userSubject.next(u))),\r\n this.userSubject.asObservable());\r\n }\r\n\r\n public getAccessToken(): Observable {\r\n return from(this.ensureUserManagerInitialized())\r\n .pipe(mergeMap(() => from(this.userManager!.getUser())),\r\n map(user => user && user.access_token));\r\n }\r\n\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n public async signIn(state: any): Promise {\r\n await this.ensureUserManagerInitialized();\r\n let user: User | null = null;\r\n try {\r\n user = await this.userManager!.signinSilent(this.createArguments());\r\n this.userSubject.next(user.profile);\r\n return this.success(state);\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n console.log('Silent authentication error: ', silentError);\r\n\r\n try {\r\n if (this.popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'authorize.service.ts:AuthorizeService.popupDisabled\\' to false to enable it.');\r\n }\r\n user = await this.userManager!.signinPopup(this.createArguments());\r\n this.userSubject.next(user.profile);\r\n return this.success(state);\r\n } catch (popupError: any) {\r\n if (popupError.message === 'Popup window closed') {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error('The user closed the window.');\r\n } else if (!this.popUpDisabled) {\r\n console.log('Popup authentication error: ', popupError);\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n //await this.userManager!.signinRedirect(this.createArguments(state));\r\n this.completeSignIn(\"/\");\r\n return this.redirect();\r\n } catch (redirectError: any) {\r\n console.log('Redirect authentication error: ', redirectError);\r\n return this.error(redirectError);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public async completeSignIn(url: string): Promise {\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager!.signinCallback(url);\r\n this.userSubject.next(user && user.profile);\r\n return this.success(user && user.state);\r\n } catch (error) {\r\n console.log('There was an error signing in: ', error);\r\n return this.error('There was an error signing in.');\r\n }\r\n }\r\n\r\n public async signOut(state: any): Promise {\r\n try {\r\n if (this.popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'authorize.service.ts:AuthorizeService.popupDisabled\\' to false to enable it.');\r\n }\r\n\r\n await this.ensureUserManagerInitialized();\r\n await this.userManager!.signoutPopup(this.createArguments());\r\n this.userSubject.next(null);\r\n return this.success(state);\r\n } catch (popupSignOutError: any) {\r\n console.log('Popup signout error: ', popupSignOutError);\r\n try {\r\n await this.userManager!.signoutRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectSignOutError: any) {\r\n console.log('Redirect signout error: ', redirectSignOutError);\r\n return this.error(redirectSignOutError);\r\n }\r\n }\r\n }\r\n\r\n public async completeSignOut(url: string): Promise {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const response = await this.userManager!.signoutCallback(url);\r\n const text = await this.userManager!.revokeAccessToken();\r\n this.userSubject.next(null);\r\n return this.success(response && response.state);\r\n } catch (error: any) {\r\n console.log(`There was an error trying to log out '${error}'.`);\r\n return this.error(error);\r\n }\r\n }\r\n\r\n private createArguments(state?: any): any {\r\n return { useReplaceToNavigate: true, data: state };\r\n }\r\n\r\n private error(message: string): IAuthenticationResult {\r\n return { status: AuthenticationResultStatus.Fail, message };\r\n }\r\n\r\n private success(state: any): IAuthenticationResult {\r\n return { status: AuthenticationResultStatus.Success, state };\r\n }\r\n\r\n private redirect(): IAuthenticationResult {\r\n return { status: AuthenticationResultStatus.Redirect };\r\n }\r\n\r\n private async ensureUserManagerInitialized(): Promise {\r\n if (this.userManager !== undefined) {\r\n return;\r\n }\r\n\r\n const response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`);\r\n }\r\n\r\n const settings: any = await response.json();\r\n settings.automaticSilentRenew = true;\r\n settings.includeIdTokenInSilentRenew = true;\r\n this.userManager = new UserManager(settings);\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager!.removeUser();\r\n this.userSubject.next(null);\r\n });\r\n }\r\n\r\n private getUserFromStorage(): Observable {\r\n return from(this.ensureUserManagerInitialized())\r\n .pipe(\r\n mergeMap(() => this.userManager!.getUser()),\r\n map(u => u && u.profile));\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../../common/services/auth.service';\r\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization.constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthorizeGuardRole implements CanActivate {\r\n constructor(private authorize: AuthService, private router: Router) {\r\n }\r\n canActivate(\r\n _next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable | Promise | boolean {\r\n let roles = _next.data[\"roles\"] as Array;\r\n return new Promise((resolve, reject) => {\r\n this.authorize.getUserInfo().then(user => {\r\n let hasRole = false;\r\n // Checking if userMappings has the requested roles\r\n if (user && user.roles) {\r\n hasRole = user.roles.some(role => roles.includes(role));\r\n }\r\n\r\n if (this.authorize.authenticated && hasRole) {\r\n resolve(true);\r\n } else {\r\n if (this.authorize.authenticated) {\r\n // navigate to dashboard\r\n this.router.navigateByUrl('/dashboard');\r\n } else {\r\n this.router.navigate(ApplicationPaths.LoginPathComponents, {\r\n queryParams: {\r\n [QueryParameterNames.ReturnUrl]: state.url\r\n }\r\n });\r\n reject(false);\r\n }\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n this.router.navigate(ApplicationPaths.LoginPathComponents, {\r\n queryParams: {\r\n [QueryParameterNames.ReturnUrl]: state.url\r\n }\r\n });\r\n return error;\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router } from '@angular/router';\r\nimport { Observable } from 'rxjs';\r\nimport { AuthService } from '../../common/services/auth.service';\r\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization.constants';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthorizeGuard implements CanActivate {\r\n constructor(private authorize: AuthService, private router: Router) {\r\n }\r\n canActivate(\r\n _next: ActivatedRouteSnapshot,\r\n state: RouterStateSnapshot): Observable | Promise | boolean {\r\n\r\n return new Promise((resolve, reject) => {\r\n //Special case coming from the login to not rely on cached user info\r\n let forceRefetch = window.location.href.includes(ApplicationPaths.Login);\r\n this.authorize.getUserInfo(forceRefetch).then(user => {\r\n if (this.authorize.authenticated) {\r\n resolve(true);\r\n } else {\r\n this.router.navigate(ApplicationPaths.LoginPathComponents, {\r\n queryParams: {\r\n [QueryParameterNames.ReturnUrl]: state.url\r\n }\r\n });\r\n reject(false);\r\n }\r\n });\r\n })\r\n .catch(error => {\r\n this.router.navigate(ApplicationPaths.LoginPathComponents, {\r\n queryParams: {\r\n [QueryParameterNames.ReturnUrl]: state.url\r\n }\r\n });\r\n return error;\r\n });\r\n }\r\n}\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { DashboardComponent } from './common/components/dashboard/dashboard.component';\r\nimport { FetchDataComponent } from './fetch-data/fetch-data.component';\r\nimport { HomeComponent } from './home/home.component';\r\nimport { SystemRoles } from './common/models/system-roles-enum';\r\nimport { AboutComponent } from './about/about.component';\r\nimport { SwitchOrganizationComponent } from './common/components/switch-organization/switch-organization.component';\r\nimport { BreadCrumb } from './common/ui/models/bread-crumb.model';\r\nimport { AuthorizeGuard } from './api-authorization/guards/authorize.guard';\r\nimport { AuthorizeGuardRole } from './api-authorization/guards/authorize-by-role.guard';\r\n\r\nconst routes: Routes = [\r\n\r\n {\r\n path: 'administration',\r\n canActivate: [AuthorizeGuardRole],\r\n data: {\r\n roles: [SystemRoles.Administrator],\r\n breadcrumb: { label: 'Administration', clickable: false } as BreadCrumb\r\n },\r\n loadChildren: () => import('./admin/admin.module').then(m => m.AdminModule),\r\n },\r\n {\r\n path: 'organization',\r\n canActivate: [AuthorizeGuard],\r\n loadChildren: () => import('./organization/organization.module').then(m => m.OrganizationModule),\r\n },\r\n {\r\n path: 'user',\r\n canActivate: [AuthorizeGuard],\r\n loadChildren: () => import('./user/user.module').then(m => m.UserModule),\r\n },\r\n {\r\n path: 'disclosure',\r\n canActivate: [AuthorizeGuard],\r\n loadChildren: () => import('./disclosure/disclosure.module').then(m => m.DisclosureModule),\r\n },\r\n {\r\n path: 'organization-reports',\r\n canActivate: [AuthorizeGuard],\r\n loadChildren: () => import('./reports/reports.module').then(m => m.ReportsModule),\r\n },\r\n {\r\n path: 'authentication',\r\n data: {\r\n action: \"authentication\",\r\n },\r\n loadChildren: () => import('./api-authorization/api-authorization.module').then(m => m.ApiAuthorizationModule),\r\n },\r\n {\r\n path: 'dashboard', component: DashboardComponent, canActivate: [AuthorizeGuard], data: { action: \"dashboard\" } },\r\n { path: 'switch-organization', component: SwitchOrganizationComponent, canActivate: [AuthorizeGuard], data: { action: \"switchOrganization\" } },\r\n { path: 'fetch-data', component: FetchDataComponent, canActivate: [AuthorizeGuardRole], data: { roles: [SystemRoles.Administrator], breadcrumb: 'Fetch Data Test' } },\r\n { path: 'about', component: AboutComponent },\r\n { path: '', component: HomeComponent },\r\n { path: '**', redirectTo: 'dashboard', pathMatch: 'full' }\r\n];\r\n\r\n\r\n\r\n\r\n@NgModule({\r\n imports: [\r\n RouterModule.forRoot(routes)\r\n ],\r\n exports: [RouterModule],\r\n providers: []\r\n})\r\nexport class AppRoutingModule { }\r\n","import { AfterViewInit, ChangeDetectorRef, Component, ElementRef, HostBinding, NgZone, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { concatMap, finalize, Subscription, tap } from 'rxjs';\r\nimport { MainService } from '../app/common/ui/services/main.service';\r\nimport { LoaderSize, LoaderStyle, FADE_IN_OUT, ToasterPosition, ModalComponent, LoaderComponent } from 'ui-library-shared';\r\nimport { DEFAULT_INTERRUPTSOURCES, Idle } from '@ng-idle/core';\r\nimport { AuthService } from './common/services/auth.service';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { FFUserWithRoles } from './common/models/users/ff-user-with-roles.model';\r\nimport { LoaderData } from './common/ui/models/loader-data.model';\r\nimport { DropdownService } from './common/services/dropdown.service';\r\nimport { ClientConfig } from './common/models/client-config.model';\r\nimport { AnalyticsOptions } from './common/models/analytics-options.model';\r\nimport { LoggingService } from './common/services/logging.service';\r\n\r\ndeclare const gtag: Function;\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.scss'],\r\n animations: [FADE_IN_OUT],\r\n host: {\r\n '(window:resize)': 'onResize($event)'\r\n }\r\n})\r\n\r\nexport class AppComponent implements OnInit, OnDestroy, AfterViewInit {\r\n title = 'Frac Focus';\r\n private mainSubscription = new Subscription();\r\n public isDashboardLayout: boolean = false;\r\n public loadingText: string | null;\r\n public loaderSize: LoaderSize = LoaderSize.MEDIUM;\r\n public loaderStyle: LoaderStyle = LoaderStyle.DIM_DARK;\r\n public toasterPosition: ToasterPosition;\r\n public displayTimeoutModal: boolean = false;\r\n public IDLE_INTERVAL_IN_SECONDS = 10;\r\n private TIMEOUT_INTERVAL_IN_SECONDS = 10;\r\n public secondsLeftToLogout = 10;\r\n private clientConfig: ClientConfig = null;\r\n private _analyticsOptions: AnalyticsOptions = null;\r\n\r\n lastPing?: Date = null;\r\n\r\n @ViewChild('main') main!: ElementRef;\r\n @ViewChild('userTimeoutModal') userTimeoutModal: ModalComponent;\r\n @ViewChild('loader') loader: LoaderComponent;\r\n\r\n @HostBinding('class.dashboard') get t() {\r\n return this.isDashboardLayout;\r\n }\r\n\r\n constructor(\r\n private _mainService: MainService,\r\n private _authService: AuthService,\r\n private _dropdownService: DropdownService,\r\n private _idle: Idle,\r\n public _router: Router,\r\n private _changeDetection: ChangeDetectorRef,\r\n private _loggingService: LoggingService,\r\n private _zone: NgZone ) {\r\n \r\n }\r\n\r\n ngOnInit(): void {\r\n this._dropdownService.getAnalyticsOptions().then(analyticsOptions => {\r\n this._analyticsOptions = analyticsOptions;\r\n }).then(() => {\r\n this._router.events.subscribe((event) => {\r\n if (event instanceof NavigationEnd) {\r\n gtag('config', this._analyticsOptions.tag_Id, { 'page_path': event.urlAfterRedirects });\r\n }\r\n })\r\n });\r\n\r\n \r\n\r\n this._dropdownService.getClientConfig().then(config => {\r\n this.clientConfig = config;\r\n }).then(() => {\r\n //The source config values are in minutes, so convert\r\n this.TIMEOUT_INTERVAL_IN_SECONDS = this.clientConfig.idleTimeout * 60;\r\n this.IDLE_INTERVAL_IN_SECONDS = this.clientConfig.idleWarningInterval * 60;\r\n // sets the idle interval\r\n this._idle.setIdle(this.IDLE_INTERVAL_IN_SECONDS);\r\n // sets an idle timeout\r\n this._idle.setTimeout(this.TIMEOUT_INTERVAL_IN_SECONDS);\r\n // sets the default interrupts, in this case, things like clicks, scrolls, touches to the document\r\n this._idle.setInterrupts(DEFAULT_INTERRUPTSOURCES);\r\n });\r\n\r\n this.toasterPosition = ToasterPosition.TOP_RIGHT;\r\n\r\n const dashboardSubscription$ = this._mainService.isDashboard.pipe(finalize(() => {\r\n this.mainSubscription.add(dashboardSubscription$);\r\n })).subscribe((value: boolean) => {\r\n setTimeout(() => {\r\n this.isDashboardLayout = value;\r\n })\r\n }, error => {\r\n console.log(\"Failed to fetch the dashboard layout.\");\r\n });\r\n\r\n const loaderSubscription$ = this._mainService.isLoading.pipe(finalize(() => {\r\n this.mainSubscription.add(loaderSubscription$);\r\n })).subscribe((loadingData: LoaderData) => {\r\n this.loader.isLoading = loadingData.loading;\r\n if (loadingData.loadingText) {\r\n this.loader.loaderText = loadingData.loadingText;\r\n }\r\n }, error => {\r\n console.log(\"Failed to check whether we're loading'.\");\r\n });\r\n\r\n //hook up to auth service emitter\r\n const srv$ = this._authService.userInfoEmitter.pipe(finalize(() => {\r\n this.mainSubscription.add(srv$);\r\n })).subscribe(result => {\r\n if (this._authService.authenticated) {\r\n this._idle.watch();\r\n }\r\n }, error => {\r\n console.log('Error listening for auth service user info. ' + error);\r\n this._loggingService.errorSilent(\"app.component Error listening for auth service user info\", \"app.component Error listening for auth service user info \" + error);\r\n });\r\n\r\n const idleStartSubscription$ = this._idle.onIdleStart.pipe(finalize(() => {\r\n this.mainSubscription.add(idleStartSubscription$);\r\n })).subscribe(() => {\r\n //this._loggingService.info(\"onIdleStart\");\r\n this.displayTimeoutModal = true;\r\n }, error => {\r\n console.log(\"Failed to handle idleStart status.\" + error);\r\n this._loggingService.errorSilent(\"onIdleStart Error\", \"onIdleStart Error \" + error);\r\n });\r\n\r\n const idleEndSubscription$ = this._idle.onIdleEnd.pipe(finalize(() => {\r\n this.mainSubscription.add(idleEndSubscription$);\r\n })).subscribe(() => {\r\n //this._loggingService.info(\"onIdleEnd\");\r\n this.displayTimeoutModal = false;\r\n this.userTimeoutModal.closeModal();\r\n this._changeDetection.detectChanges();\r\n }, error => {\r\n console.log(\"Failed to handle idleEnd status.\" + error);\r\n this._loggingService.errorSilent(\"onIdleEnd Error\", \"onIdleEnd Error \" + error);\r\n });\r\n\r\n let idleTimeoutSubscription$ = this._idle.onTimeout.pipe(\r\n tap(() => {\r\n this.displayTimeoutModal = false;\r\n this.userTimeoutModal.closeModal();\r\n }),\r\n concatMap(() => {\r\n return this._authService.logout(this._authService.userInfo.id);\r\n })\r\n ).subscribe((result: number) => {\r\n //this._loggingService.info(\"onTimeout\");\r\n this.mainSubscription.add(idleTimeoutSubscription$);\r\n this._authService.resetServiceState();\r\n this._authService.userInfoEmitter.emit(new FFUserWithRoles);\r\n this._zone.run(() => {\r\n this._router.navigate([\"/\"]);\r\n });\r\n }, error => {\r\n this.mainSubscription.add(idleTimeoutSubscription$);\r\n console.log(\"Error trying to log user out on timeout\" + error);\r\n this._loggingService.errorSilent(\"onTimeout Error\", \"onTimeout Error \" + error);\r\n });\r\n\r\n const idleTimeoutWarningSubscription$ = this._idle.onTimeoutWarning.pipe(finalize(() => {\r\n //this._loggingService.info(\"onTimeoutWarning\");\r\n this.mainSubscription.add(idleTimeoutWarningSubscription$);\r\n })).subscribe((countdown) => {\r\n this.secondsLeftToLogout = countdown;\r\n }, error => {\r\n console.log(\"Failed to handle idle timeout warning.\" + error);\r\n this._loggingService.errorSilent(\"onTimeoutWarning Error\", \"onTimeoutWarning Error \" + error);\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n //set initial height\r\n this.onResize();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.mainSubscription) {\r\n this.mainSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n onResize(): void {\r\n /******************************************/\r\n //TODO: debounce?\r\n // 18 = account for
bottom padding (1rem = 16px) + border (1px) top/bottom: may not 2px in future if not using borders\r\n this._mainService.availableMainHeight(this.main.nativeElement.offsetHeight - 18);\r\n /******************************************/\r\n }\r\n}\r\n","
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n

\r\n You have been idle for {{IDLE_INTERVAL_IN_SECONDS/60}} minutes.
\r\n You will automatically be logged out in {{secondsLeftToLogout}} seconds.\r\n

\r\n
\r\n
\r\n\r\n\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { NgModule } from '@angular/core';\r\nimport { FormsModule } from '@angular/forms';\r\nimport { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http';\r\n\r\nimport { AppComponent } from './app.component';\r\n\r\nimport { HomeComponent } from './home/home.component';\r\nimport { FetchDataComponent } from './fetch-data/fetch-data.component';\r\nimport { AuthorizeInterceptor } from './api-authorization/authorize.interceptor';\r\n\r\n\r\nimport { AuthService } from 'src/app/common/services/auth.service';\r\nimport { LoggingService } from 'src/app/common/services/logging.service';\r\nimport { UserService } from 'src/app/common/services/user.service';\r\nimport { DropdownService } from 'src/app/common/services/dropdown.service';\r\nimport { FracFocusCommonModule} from './common/common.module';\r\n\r\nimport { AppRoutingModule } from './app-routing.module';\r\nimport { MainService } from 'src/app/common/ui/services/main.service';\r\nimport { MainNavService } from 'src/app/common/ui/services/main-nav.service';\r\n\r\nimport { IconSpriteModule } from 'ng-svg-icon-sprite';\r\nimport { AboutComponent } from './about/about.component';\r\nimport { NgIdleKeepaliveModule } from '@ng-idle/keepalive';\r\nimport { RECAPTCHA_V3_SITE_KEY } from 'ng-recaptcha';\r\nimport { ReCaptchaService } from './common/services/recaptcha.service';\r\nimport { environment } from '../environments/environment';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n HomeComponent,\r\n FetchDataComponent,\r\n AboutComponent,\r\n ],\r\n imports: [\r\n BrowserModule.withServerTransition({ appId: 'ng-cli-universal' }),\r\n BrowserAnimationsModule,\r\n HttpClientModule,\r\n FormsModule,\r\n AppRoutingModule,\r\n FracFocusCommonModule,\r\n IconSpriteModule,\r\n NgIdleKeepaliveModule.forRoot(),\r\n ],\r\n providers: [\r\n {\r\n provide: HTTP_INTERCEPTORS,\r\n useClass: AuthorizeInterceptor,\r\n multi: true\r\n },\r\n AuthService,\r\n LoggingService,\r\n UserService,\r\n DropdownService,\r\n MainService,\r\n MainNavService,\r\n { provide: RECAPTCHA_V3_SITE_KEY, useValue: environment.recaptcha.siteKey },\r\n ReCaptchaService\r\n ],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule { }\r\n","import { NgModule } from \"@angular/core\";\r\nimport { CommonModule } from '@angular/common';\r\nimport { RouterModule } from \"@angular/router\";\r\nimport { FormsModule, ReactiveFormsModule } from \"@angular/forms\";\r\nimport { UserService } from \"./services/user.service\";\r\nimport { FooterComponent } from './ui/components/footer/footer.component';\r\nimport { MainNavComponent } from './ui/components/main-nav/main-nav.component';\r\nimport { NavSubMenuHeaderDirectiveDirective } from './ui/components/main-nav/nav-sub-menu-header.directive';\r\nimport { NavSubMenuItemDirectiveDirective } from './ui/components/main-nav/nav-sub-menu-item.directive';\r\nimport { NavSubMenuParentDirectiveDirective } from './ui/components/main-nav/nav-sub-menu-parent.directive';\r\nimport { BreadcrumbsComponent } from './ui/components/breadcrumbs/breadcrumbs.component';\r\nimport { HeaderComponent } from \"./ui/components/header/header.component\";\r\nimport { DashboardComponent } from \"./components/dashboard/dashboard.component\";\r\nimport { UiLibrarySharedModule } from 'ui-library-shared';\r\nimport { DisclosureSearchComponent } from \"./components/disclosure-search/disclosure-search.component\";\r\nimport { DisclosureListComponent } from \"./components/disclosure-list/disclosure-list.component\";\r\nimport { DisclosureService } from \"./services/disclosure.service\";\r\nimport { IngredientService } from \"./services/ingredient.service\";\r\nimport { FileService } from \"./services/file.service\";\r\nimport { IconSpriteModule } from 'ng-svg-icon-sprite';\r\nimport { RecaptchaFormsModule, RecaptchaModule, RecaptchaV3Module, RECAPTCHA_V3_SITE_KEY } from \"ng-recaptcha\";\r\nimport { ApproveDenyDeleteCellComponent } from '../ag-grid/components/renderers/approve-deny-delete-cell/approve-deny-delete-cell.component';\r\nimport { UserInfoComponent } from './ui/components/user-info/user-info.component';\r\nimport { DpDatePickerModule } from 'ng2-date-picker';\r\nimport { RecaptchaBaseComponent } from \"./components/recaptcha-base/recaptcha-base-component\";\r\nimport { SwitchOrganizationComponent } from './components/switch-organization/switch-organization.component';\r\nimport { FFAgGridModule } from \"../ag-grid/ff-ag-grid.module\";\r\nimport { NgSelectModule } from \"@ng-select/ng-select\";\r\nimport { SafeHtmlPipe } from \"./pipes/safe-html.pipe\";\r\nimport { FilterDownloadComponent } from './components/filter-download/filter-download.component';\r\nimport { UtilityService } from \"./services/utilities.service\";\r\nimport { CanaccessDirective } from \"./ui/components/main-nav/canaccess.directive\";\r\nimport { DashboardNotificationsComponent } from \"./components/dashboard-notifications/dashboard-notifications.component\";\r\nimport { PopperToolTipComponent } from \"../popper-tool-tip/popper-tool-tip.component\";\r\nimport { NgxPopperjsModule } from 'ngx-popperjs';\r\nimport { ReportsService } from \"./services/reports.service\";\r\n\r\n@NgModule({\r\n declarations: [\r\n HeaderComponent,\r\n FooterComponent,\r\n MainNavComponent,\r\n NavSubMenuHeaderDirectiveDirective,\r\n NavSubMenuItemDirectiveDirective,\r\n NavSubMenuParentDirectiveDirective,\r\n BreadcrumbsComponent,\r\n DisclosureSearchComponent,\r\n DisclosureListComponent,\r\n DashboardComponent,\r\n DashboardNotificationsComponent,\r\n ApproveDenyDeleteCellComponent,\r\n UserInfoComponent,\r\n ApproveDenyDeleteCellComponent,\r\n RecaptchaBaseComponent,\r\n SwitchOrganizationComponent,\r\n FilterDownloadComponent,\r\n CanaccessDirective,\r\n PopperToolTipComponent\r\n ],\r\n imports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n UiLibrarySharedModule,\r\n IconSpriteModule,\r\n RecaptchaModule,\r\n RecaptchaV3Module,\r\n RecaptchaFormsModule,\r\n DpDatePickerModule,\r\n FFAgGridModule,\r\n NgSelectModule,\r\n NgxPopperjsModule,\r\n ],\r\n exports: [\r\n CommonModule,\r\n RouterModule,\r\n FormsModule,\r\n ReactiveFormsModule,\r\n HeaderComponent,\r\n FooterComponent,\r\n MainNavComponent,\r\n NavSubMenuHeaderDirectiveDirective,\r\n NavSubMenuItemDirectiveDirective,\r\n NavSubMenuParentDirectiveDirective,\r\n BreadcrumbsComponent,\r\n DisclosureListComponent,\r\n DisclosureSearchComponent,\r\n RecaptchaModule,\r\n RecaptchaV3Module,\r\n RecaptchaFormsModule,\r\n UiLibrarySharedModule,\r\n IconSpriteModule,\r\n DpDatePickerModule,\r\n RecaptchaBaseComponent,\r\n FFAgGridModule,\r\n NgSelectModule,\r\n PopperToolTipComponent,\r\n NgxPopperjsModule,\r\n FilterDownloadComponent\r\n ],\r\n providers: [\r\n UserService,\r\n DisclosureService, IngredientService,\r\n FileService, ReportsService,\r\n UtilityService\r\n ]\r\n})\r\n\r\nexport class FracFocusCommonModule { }\r\n","import { Component, Input, OnInit, ViewChild } from '@angular/core';\r\nimport { UntypedFormControl, UntypedFormGroup } from '@angular/forms';\r\nimport { Router } from '@angular/router';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { ColDef, GridOptions, GridReadyEvent } from 'ag-grid-community';\r\nimport { DateCellRendererComponent } from '../../../ag-grid/components/renderers/date-cell-renderer/date-cell-renderer.component';\r\nimport { AGGridHelperService } from '../../../ag-grid/services/ag-grid-helper-service';\r\nimport { DashboardNotification } from '../../models/dashboard-notification';\r\nimport { DropdownService } from '../../services/dropdown.service';\r\nimport { LoggingService } from '../../services/logging.service';\r\nimport { MainService } from '../../ui/services/main.service';\r\n\r\n@Component({\r\n selector: 'dashboard-notifications',\r\n templateUrl: './dashboard-notifications.component.html',\r\n styleUrls: ['./dashboard-notifications.component.scss']\r\n})\r\nexport class DashboardNotificationsComponent implements OnInit {\r\n public modalVisible = false;\r\n private isReadOnly = false;\r\n\r\n @Input() public notifications: DashboardNotification[] = null;\r\n public filterForm: UntypedFormGroup = new UntypedFormGroup({\r\n status: new UntypedFormControl(\"Editing\")\r\n });\r\n\r\n public readonly columnDefs: ColDef[] = [\r\n {\r\n field: 'notificationMessage',\r\n editable: false,\r\n wrapText: true,\r\n width: 510,\r\n suppressColumnsToolPanel: true,\r\n lockVisible: true\r\n },\r\n {\r\n field: 'notificationType',\r\n resizable: true,\r\n initialHide:true,\r\n width: 210\r\n },\r\n {\r\n field: 'url',\r\n hide: true,\r\n\r\n },\r\n {\r\n field: 'dateOfNotification',\r\n headerName: 'Date',\r\n width: 120,\r\n editable: false,\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n buttons: ['reset'],\r\n dateFormat: 'mm/dd/yyyy',\r\n comparator: this.agGridHelperService.dateFilterComparer\r\n },\r\n cellRenderer: DateCellRendererComponent,\r\n }\r\n ];\r\n\r\n\r\n public editMode = false;\r\n public gridOptions: GridOptions = {\r\n defaultColDef: {\r\n resizable: true,\r\n sortable: true,\r\n filter: true,\r\n },\r\n pagination: true,\r\n editType: 'fullRow',\r\n accentedSort: true,\r\n rowHeight: 40,\r\n suppressContextMenu: true,\r\n suppressClickEdit: true,\r\n suppressMenuHide: true,\r\n rowClassRules: {\r\n 'disabled': (params: any) => {\r\n return this.editMode === true && params.data.disabled === true\r\n }\r\n }\r\n };\r\n\r\n public gridHeight: string = \"\";\r\n public gridHelpText: string = \"\";\r\n\r\n public frameworkComponents: any = {\r\n };\r\n\r\n @ViewChild(AgGridAngular) agGrid!: AgGridAngular;\r\n public gridApi: any;\r\n possibleOrgsToAdd: any;\r\n public selectedNotification: DashboardNotification = null;\r\n\r\n constructor(\r\n private dropdownService: DropdownService,\r\n private mainService: MainService,\r\n private loggingService: LoggingService,\r\n private agGridHelperService: AGGridHelperService,\r\n private router: Router\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gridHelpText = this.agGridHelperService.gridInfoHelpText;\r\n }\r\n\r\n public onGridReady(params: GridReadyEvent) {\r\n\r\n //calc min/max grid height \r\n this.gridHeight = this.agGridHelperService.calculateMinMaxGridHeight(this.notifications.length, 1, 3, 5);\r\n\r\n this.gridApi = params.api;\r\n this.gridApi.onActionTrigger = (event: any) => {\r\n this.triggerAction(event);\r\n };\r\n\r\n this.gridApi.sizeColumnsToFit();\r\n\r\n window.onresize = () => {\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n }\r\n\r\n private triggerAction(event: any) {\r\n switch (event.action) {\r\n case \"dismiss\":\r\n //this.modalVisible = true;\r\n this.selectedNotification = event.data as DashboardNotification;\r\n break;\r\n }\r\n }\r\n public exportToCSV()\r\n {\r\n this.agGridHelperService.exportDataToExcel(\"Notifications\", \"sheet1\", this.gridOptions, false);\r\n }\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n","import { Component, OnInit, OnDestroy, AfterViewInit } from '@angular/core';\r\nimport { NavigationEnd, NavigationStart, Router } from '@angular/router';\r\nimport { filter, finalize, Subscription } from 'rxjs';\r\nimport { Organization } from '../../models/organizations/organization.model';\r\nimport { FFUserWithRoles } from '../../models/users/ff-user-with-roles.model';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { DisclosureService } from '../../services/disclosure.service';\r\nimport { UserService } from '../../services/user.service';\r\nimport { MainService } from '../../ui/services/main.service';\r\nimport { getUserOrgs } from '../../models/users/ff-user.model';\r\n\r\n\r\n@Component({\r\n selector: 'dashboard',\r\n templateUrl: './dashboard.component.html',\r\n styleUrls: ['./dashboard.component.scss']\r\n})\r\nexport class DashboardComponent implements OnInit, AfterViewInit, OnDestroy {\r\n public disclosures: any[] = [];\r\n private subscription: Subscription = new Subscription();\r\n public userInfo: FFUserWithRoles;\r\n primaryOrg: Organization;\r\n public notifications: any[];\r\n public userOrgs: Organization[];\r\n\r\n constructor(\r\n private _mainService: MainService,\r\n private disclosureService: DisclosureService,\r\n private authService: AuthService,\r\n private userService: UserService,\r\n private router: Router\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.authService.getUserInfo().then(res => {\r\n this.userInfo = res;\r\n this.primaryOrg = this.userInfo.getCurrentOrg();\r\n if (this.primaryOrg) {\r\n this.disclosureService.getMyCompanyOrgDisclosures(this.primaryOrg.organizationId).subscribe(res => {\r\n this.disclosures = res;\r\n }, error => {\r\n this.disclosures = [];\r\n });\r\n this.userService.getNotificationsForOrg(this.primaryOrg.organizationId).subscribe(res => {\r\n this.notifications = res;\r\n }, err => {\r\n\r\n })\r\n } else {\r\n this.userOrgs = getUserOrgs(this.userInfo);\r\n if (this.userOrgs && this.userOrgs.length > 0) {\r\n this._mainService.showLoading({ loading: false });\r\n this.router.navigate([\"/switch-organization\"]);\r\n }\r\n }\r\n })\r\n\r\n //We need to know whenever they navigate away from the dashboard to shift the layout\r\n let routerNavigationSubscription$ = this.router.events.pipe(\r\n filter(event => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n this._mainService.mainDashboardLayout(false);\r\n this.subscription.add(routerNavigationSubscription$);\r\n }, error => {\r\n console.log(\"Failed to mainDashboardLayout value to false.\");\r\n this.subscription.add(routerNavigationSubscription$);\r\n });\r\n }\r\n\r\n ngAfterViewInit(): void {\r\n this._mainService.mainDashboardLayout(true);\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n \r\n}\r\n","
\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, ChangeDetectorRef, OnDestroy, ViewChild, Input, SimpleChanges, ChangeDetectionStrategy } from '@angular/core';\r\nimport { AgGridAngular } from 'ag-grid-angular';\r\nimport { GridOptions, GridReadyEvent, ValueGetterParams } from 'ag-grid-community';\r\nimport { ColDef } from 'ag-grid-enterprise';\r\nimport { DropdownService } from '../../services/dropdown.service';\r\nimport { OpenDeleteCellComponent } from '../../../ag-grid/components/renderers/open-delete-cell/open-delete-cell.component';\r\nimport { UntypedFormControl, UntypedFormGroup } from \"@angular/forms\";\r\nimport { Disclosure } from '../../models/disclosures/disclosure.model';\r\nimport { MainService } from '../../ui/services/main.service';\r\nimport { DisclosureService } from '../../services/disclosure.service';\r\nimport { LoggingService } from '../../services/logging.service';\r\nimport { OpenRollbackCellComponent } from '../../../ag-grid/components/renderers/open-rollback-cell/open-rollback-cell.component';\r\nimport { AmendCellComponent } from '../../../ag-grid/components/renderers/amend-cell/amend-cell.component';\r\nimport { Router } from '@angular/router';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { first } from 'rxjs';\r\nimport { FileService } from '../../services/file.service';\r\nimport { DownloadXmlCellComponent } from '../../../ag-grid/components/renderers/download-xml-cell/download-xml-cell.component';\r\nimport { AGGridHelperService } from '../../../ag-grid/services/ag-grid-helper-service';\r\nimport { FFUserWithRoles } from '../../models/users/ff-user-with-roles.model';\r\nimport { ColdObservable } from 'rxjs/internal/testing/ColdObservable';\r\nimport { DateCellRendererComponent } from '../../../ag-grid/components/renderers/date-cell-renderer/date-cell-renderer.component';\r\nimport { IDateCellRendererParams } from '../../../ag-grid/models/date-cell-renderer-params.model';\r\nimport { UserService } from '../../services/user.service';\r\nimport { LU_Status } from '../../models/enums/lu-status.enum';\r\nimport { OrganizationRelation } from '../../models/organizations/organization-relation.model';\r\n\r\nconst FileSaver = require('file-saver');\r\n@Component({\r\n selector: 'disclosure-list',\r\n changeDetection: ChangeDetectionStrategy.OnPush,\r\n templateUrl: './disclosure-list.component.html',\r\n styleUrls: ['./disclosure-list.component.scss']\r\n})\r\nexport class DisclosureListComponent implements OnInit, OnDestroy {\r\n public wellApiNum: string = \"\";\r\n public wellName: string = \"\";\r\n public states: any[];\r\n public counties: any[];\r\n public countyOptions:any[] = [];\r\n public pending: Disclosure[] = [];\r\n public submitted: Disclosure[] = [];\r\n public amending: Disclosure[] = [];\r\n public deleted: Disclosure[] = [];\r\n public all: Disclosure[] = [];\r\n public deletedByOperator: any[] = [];\r\n public totalPending: number = 0;\r\n public totalSubmitted: number = 0;\r\n public totalAmending: number = 0;\r\n public totalDeleted: number = 0;\r\n public totalDeletedByOperator: number = 0;\r\n public totalAll: number = 0;\r\n public disclosuresFiltered: any[] = [];\r\n public modalVisible = false;\r\n public modalAmendVisible = false;\r\n public modalRollbkVisible = false\r\n private isReadOnly = false;\r\n public isServiceComp = false;\r\n private primaryOrganizationId: string;\r\n private currentOrganizationId: string;\r\n public selectedDisclosure: Disclosure = null;\r\n public userInfo: FFUserWithRoles;\r\n public gridOptions: GridOptions;\r\n public gridHeight: string = \"\";\r\n orgRelations: OrganizationRelation[] = [];\r\n public gridHelpText: string = \"\";\r\n\r\n @Input() public parentComponentName: string = \"\";\r\n @Input() public disclosures: any[] = [];\r\n public filterForm: UntypedFormGroup = new UntypedFormGroup({\r\n status: new UntypedFormControl(\"Editing\")\r\n });\r\n public readonly columnDefs: ColDef[] = [\r\n /* Default */\r\n { \r\n field: 'apiNumber', \r\n headerName: 'API Number',\r\n filter: \"agTextColumnFilter\",\r\n cellClass: 'stringType',\r\n editable: false,\r\n width: 110,\r\n valueGetter: this.apiValueGetter.bind(this),\r\n suppressColumnsToolPanel: true,\r\n lockVisible: true\r\n },\r\n {\r\n colId: 'operatorName',\r\n field: 'operatorName', \r\n headerName: 'Operator Name',\r\n filter: \"agTextColumnFilter\",\r\n editable: false,\r\n hide: false,\r\n width: 120,\r\n cellRenderer: (data: any) => {\r\n if (data?.data) {\r\n const disclosure = data.data as Disclosure\r\n return disclosure.operatorName\r\n }\r\n\r\n return ''\r\n }\r\n },\r\n {\r\n headerName: 'Well Name and Number',\r\n field: 'wellName',\r\n filter: \"agTextColumnFilter\",\r\n resizable: true,\r\n width: 110\r\n },\r\n {\r\n field: 'jobStartDate',\r\n headerName: 'Job Start Date',\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n buttons: ['reset'],\r\n dateFormat: 'mm/dd/yyyy',\r\n comparator: this.agGridHelperService.dateFilterComparer\r\n },\r\n headerTooltip:'Start date filter of the range of jobs performed',\r\n width: 100,\r\n editable: false,\r\n cellRenderer: DateCellRendererComponent\r\n },\r\n {\r\n field: 'jobEndDate',\r\n headerName: 'Job End Date',\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n buttons: ['reset'],\r\n dateFormat: 'mm/dd/yyyy',\r\n comparator: this.agGridHelperService.dateFilterComparer\r\n },\r\n headerTooltip:'End date filter of the range of jobs performed',\r\n editable: false,\r\n width: 120,\r\n cellRenderer: DateCellRendererComponent\r\n },\r\n {\r\n field: 'lastModifiedDate',\r\n headerName: 'Last Edit',\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n buttons: ['reset'],\r\n dateFormat: 'mm/dd/yyyy',\r\n comparator: this.agGridHelperService.dateFilterComparer\r\n },\r\n editable: false,\r\n width: 100,\r\n cellRenderer: DateCellRendererComponent\r\n },\r\n /* Optional */\r\n {\r\n field: 'longitude',\r\n headerName: 'Longitude',\r\n filter: \"agNumberColumnFilter\",\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.longitude\r\n }\r\n\r\n return ''\r\n },\r\n },\r\n {\r\n field: 'latitude',\r\n headerName: 'Latitude',\r\n filter: \"agNumberColumnFilter\",\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.latitude\r\n }\r\n \r\n return ''\r\n },\r\n },\r\n {\r\n field: 'projection',\r\n headerName: 'Datum',\r\n filter: \"agSetColumnFilter\",\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.projection\r\n }\r\n\r\n return ''\r\n },\r\n },\r\n {\r\n field: 'tvd',\r\n headerName: 'TVD',\r\n filter:'agNumberColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.tvd\r\n }\r\n\r\n return ''\r\n },\r\n },\r\n {\r\n field: 'isFederalWell',\r\n headerName: 'Federal Well',\r\n filter: 'agSetColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.isFederalWell\r\n }\r\n\r\n return ''\r\n },\r\n },\r\n {\r\n field: 'isIndianWell',\r\n headerName: 'Indian Well',\r\n filter: 'agSetColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.isIndianWell\r\n }\r\n\r\n return ''\r\n },\r\n },\r\n {\r\n field: 'lastModifiedBy',\r\n headerName: 'Last Editor',\r\n filter:'agTextColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.lastModifiedBy\r\n }\r\n\r\n return ''\r\n },\r\n },\r\n {\r\n field: 'totalBaseWaterVolume',\r\n headerName: 'Total Water',\r\n filter:'agNumberColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.totalBaseWaterVolume\r\n }\r\n\r\n return ''\r\n },\r\n },\r\n {\r\n field: 'entryMethod',\r\n headerName: 'Entry Method',\r\n filter: 'agSetColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.entryMethod\r\n }\r\n\r\n return ''\r\n },\r\n },\r\n {\r\n field: 'createdDate',\r\n headerName: 'Create Date',\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n buttons: ['reset'],\r\n dateFormat: 'mm/dd/yyyy',\r\n comparator: this.agGridHelperService.dateFilterComparer\r\n },\r\n cellRenderer: DateCellRendererComponent\r\n },\r\n {\r\n field: 'serviceCompanyName',\r\n colId: 'serviceCompanyName',\r\n headerName: 'Service Company Name',\r\n filter:'agTextColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 120,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure = data.data as Disclosure\r\n return disclosure.serviceCompanyName\r\n }\r\n \r\n return '' \r\n }\r\n }, \r\n ];\r\n \r\n public filteredColDefs: ColDef[] = []\r\n\r\n public editMode = false;\r\n\r\n public buildGridOptions() {\r\n\r\n this.gridOptions = {\r\n defaultColDef: {\r\n resizable: true,\r\n sortable: true,\r\n },\r\n excelStyles:this.agGridHelperService.getDefaultExcelStyles(),\r\n pagination: true,\r\n editType: 'fullRow',\r\n accentedSort: true,\r\n rowHeight: 40,\r\n suppressContextMenu: true,\r\n suppressClickEdit: true,\r\n suppressMenuHide: true,\r\n rowClassRules: {\r\n 'disabled': (params: any) => {\r\n return this.editMode === true && params.data.disabled === true\r\n }\r\n }\r\n } as GridOptions;\r\n }\r\n\r\n public frameworkComponents: any = {\r\n OpenDeleteCellComponent: OpenDeleteCellComponent,\r\n OpenRollbackCellComponent: OpenRollbackCellComponent,\r\n OpenCellComponent: AmendCellComponent,\r\n DownloadXmlCellComponent: DownloadXmlCellComponent\r\n };\r\n\r\n @ViewChild(AgGridAngular) agGrid!: AgGridAngular;\r\n public gridApi: any;\r\n possibleOrgsToAdd: any;\r\n\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private dropdownService: DropdownService,\r\n private mainService: MainService,\r\n private disclosureService: DisclosureService,\r\n private loggingService: LoggingService,\r\n private router: Router,\r\n private authService: AuthService,\r\n private fileService: FileService,\r\n private agGridHelperService: AGGridHelperService,\r\n private userService: UserService\r\n ) {\r\n }\r\n\r\n ngOnInit(): void {\r\n this.gridHelpText = this.agGridHelperService.gridInfoHelpText;\r\n this.buildGridOptions();\r\n this.authService.getUserInfo()\r\n .then(user => {\r\n this.userInfo = user;\r\n if (user.currentOrganizationId !== null && user.currentOrganizationId !== undefined) {\r\n this.mainService.showLoading({ loading: true });\r\n }\r\n this.currentOrganizationId = user.currentOrganizationId;\r\n this.isReadOnly = !user.hasOrgRole('DataSubmitter') && !user.isAdmin;\r\n let currentOrg = user.getCurrentOrg();\r\n this.isServiceComp = (currentOrg) ? currentOrg.isServiceComp : false;\r\n if (currentOrg.isRegisteredAgent) {\r\n this.userService.getMyCompany(currentOrg.organizationId).subscribe(res => {\r\n this.orgRelations = res.organizationRelations.filter(x => x.organization.isOperator && x.statusId === LU_Status.Active);\r\n this.mainService.showLoading({ loading: false });\r\n }, err => {\r\n this.loggingService.error(\"Error retrieving organization information\");\r\n this.mainService.showLoading({ loading: false });\r\n });\r\n }\r\n this.filteredColDefs = this.getColumnDefs(\"Editing\");\r\n this.changeDetectorRef.detectChanges(); \r\n });\r\n \r\n this.dropdownService.getCounties().then(ctys => this.counties = ctys);\r\n this.dropdownService.getStates().then(states => this.states = states);\r\n\r\n }\r\n\r\n public onGridReady(params: GridReadyEvent) {\r\n\r\n this.gridApi = params.api;\r\n this.gridApi.onActionTrigger = (event: any) => {\r\n this.triggerAction(event);\r\n };\r\n \r\n this.gridApi.setColumnDefs(this.filteredColDefs);\r\n this.gridApi.sizeColumnsToFit();\r\n\r\n window.onresize = () => {\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n }\r\n\r\n private triggerAction(event: any) {\r\n switch(event.action){\r\n case \"delete\":\r\n this.modalVisible = true;\r\n this.selectedDisclosure = event.data as Disclosure;\r\n break;\r\n\r\n case \"startAmend\":\r\n this.modalAmendVisible = true;\r\n this.selectedDisclosure = event.data as Disclosure;\r\n break;\r\n\r\n case \"rollback\":\r\n this.modalRollbkVisible = true;\r\n this.selectedDisclosure = event.data as Disclosure;\r\n break;\r\n\r\n case \"viewPdf\":\r\n this.viewPdf(event.data);\r\n break;\r\n\r\n case \"viewXml\":\r\n this.viewXml(event.data);\r\n break;\r\n }\r\n }\r\n\r\n statusFormatter(params: any) {\r\n //if (params.value === \"Editing\") return \"Pending\";\r\n return params.value;\r\n }\r\n\r\n public formUpdated($event: any) {\r\n const value = $event.target.value\r\n\r\n switch (value) {\r\n case \"Editing\":\r\n this.disclosuresFiltered = this.pending;\r\n this.filteredColDefs = this.getColumnDefs(value);\r\n break;\r\n\r\n case \"Submitted\":\r\n this.disclosuresFiltered = this.submitted;\r\n this.filteredColDefs = this.getColumnDefs(value);\r\n break;\r\n \r\n case \"Amending\":\r\n this.disclosuresFiltered = this.amending;\r\n this.filteredColDefs = this.getColumnDefs(value);\r\n break;\r\n\r\n case \"Deleted\":\r\n this.disclosuresFiltered = this.deleted;\r\n this.filteredColDefs = this.getColumnDefs(value);\r\n break;\r\n \r\n case \"Deleted by Operator\":\r\n this.disclosuresFiltered = this.deletedByOperator;\r\n this.filteredColDefs = this.getColumnDefs(value);\r\n break;\r\n\r\n default:\r\n this.disclosuresFiltered = this.all;\r\n this.filteredColDefs = this.getColumnDefs(\"All\");\r\n }\r\n\r\n this.changeDetectorRef.detectChanges(); //Called because grid was not resizing properly with modified filteredColDefs\r\n this.gridApi.setColumnDefs(this.filteredColDefs);\r\n this.gridApi.sizeColumnsToFit();\r\n }\r\n\r\n private getColumnDefs(view: \"Editing\" | \"Submitted\" | \"Amending\" | \"Deleted\" | \"All\" | \"Deleted by Operator\"): ColDef[]{\r\n const primaryOrg = this.userInfo.getCurrentOrg();\r\n let isServiceComp = false;\r\n let isOperator = false;\r\n let isRegisteredAgent = false;\r\n if (primaryOrg) {\r\n isServiceComp = primaryOrg.isServiceComp;\r\n isOperator = primaryOrg.isOperator;\r\n isRegisteredAgent = primaryOrg.isRegisteredAgent;\r\n }\r\n\r\n let defs: ColDef[] = [...this.columnDefs];\r\n\r\n let amendDateCol = {\r\n field: 'submitTimeStamp',\r\n colId: 'amendDate',\r\n headerName: 'Amend Date',\r\n editable: false,\r\n hide: true,\r\n width: 120,\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n buttons: ['reset'],\r\n dateFormat: 'mm/dd/yyyy',\r\n comparator: this.agGridHelperService.dateFilterComparer\r\n },\r\n cellRenderer: DateCellRendererComponent,\r\n } as ColDef;\r\n\r\n let amendReasonCol = {\r\n field: 'amendedReason',\r\n colId: 'amendReason',\r\n headerName: 'Amend Reason',\r\n filter:'agTextColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 120,\r\n cellRenderer: (data: any) => {\r\n if (data?.data) {\r\n const disclosure = data.data as Disclosure\r\n return disclosure.amendedReason\r\n }\r\n\r\n return ''\r\n }\r\n } as ColDef;\r\n \r\n let publicStatus = {\r\n field: 'publicStatus',\r\n colId: 'publicStatus',\r\n headerName: 'Status',\r\n filter:'agTextColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 120,\r\n } as ColDef;\r\n\r\n let ffVersionCol = {\r\n field: 'ffVersion',\r\n colId: 'ffVersion',\r\n headerName: 'FFVersion',\r\n filter:'agNumberColumnFilter',\r\n editable: false,\r\n hide: true,\r\n width: 120,\r\n cellRenderer: (data: any) => {\r\n if (data?.data) {\r\n const disclosure = data.data as Disclosure\r\n return disclosure.ffVersion\r\n }\r\n\r\n return ''\r\n }\r\n } as ColDef;\r\n\r\n let submitDate = {\r\n field: 'submitTimeStamp',\r\n colId: 'submitTimeStamp',\r\n headerName: 'Submit Date',\r\n editable: false,\r\n hide: false,\r\n width: 120,\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n buttons: ['reset'],\r\n dateFormat: 'mm/dd/yyyy',\r\n comparator: this.agGridHelperService.dateFilterComparer\r\n },\r\n cellRenderer: DateCellRendererComponent,\r\n }\r\n\r\n let statusCol = {\r\n width: 90,\r\n field: 'publicStatus',\r\n headerName: \"Status\",\r\n filter: 'agSetColumnFilter',\r\n valueFormatter: this.statusFormatter,\r\n } as ColDef;\r\n\r\n let routedByCol = {\r\n field: 'routedBy',\r\n colId: 'routedBy',\r\n headerName: 'Routed By',\r\n filter:'agTextColumnFilter',\r\n editable: false,\r\n hide: false,\r\n width: 120,\r\n cellRenderer: (data: any) => {\r\n if (data?.data) {\r\n const disclosure: Disclosure = data.data;\r\n return disclosure.routedBy;\r\n }\r\n\r\n return '';\r\n }\r\n } as ColDef;\r\n\r\n let uploadedDirectly = {\r\n field: 'uploadedDirectly',\r\n colId: 'uploadedDirectly',\r\n headerName: 'Direct Upload',\r\n filter: 'agSetColumnFilter',\r\n editable: false,\r\n hide: false,\r\n width: 120,\r\n cellRenderer: (data: any) => {\r\n if (data?.data) {\r\n const disclosure: Disclosure = data.data;\r\n return disclosure.uploadedDirectly ? 'Yes' : 'No';\r\n }\r\n\r\n return '';\r\n }\r\n } as ColDef;\r\n\r\n let origSubmitDate = {\r\n field: 'originalSubmitTimeStamp',\r\n colId: 'originalSubmitTimeStamp',\r\n headerName: 'Original Submit Date',\r\n editable: false,\r\n hide: true,\r\n width: 100,\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n buttons: ['reset'],\r\n dateFormat: 'mm/dd/yyyy',\r\n comparator: this.agGridHelperService.dateFilterComparer\r\n },\r\n cellRenderer: DateCellRendererComponent,\r\n } as ColDef;\r\n\r\n let submittedByCol = {\r\n field: 'submittedBy',\r\n colId: 'submitUser',\r\n headerName: 'Submitted By',\r\n filter:'agTextColumnFilter',\r\n editable: false,\r\n hide: false,\r\n width: 120,\r\n cellRenderer: (data: any) => {\r\n if (data?.data && data.data.submittedBy) {\r\n const disclosure: Disclosure = data.data;\r\n return disclosure.submittedBy;\r\n }\r\n\r\n return ''\r\n }\r\n } as ColDef;\r\n\r\n switch(view){\r\n case \"Editing\":\r\n if(!this.isReadOnly){\r\n defs.push({\r\n colId: 'actions',\r\n cellRenderer: OpenDeleteCellComponent,\r\n width: 90,\r\n hide: false\r\n })\r\n }\r\n if(!this.isReadOnly && isServiceComp){\r\n defs.push(\r\n {\r\n colId: 'actions',\r\n cellRenderer: DownloadXmlCellComponent,\r\n width: 50,\r\n hide: false\r\n }\r\n );\r\n }\r\n break;\r\n\r\n case \"Submitted\":\r\n if(isServiceComp){\r\n defs.push(\r\n statusCol,\r\n routedByCol,\r\n uploadedDirectly,\r\n );\r\n\r\n if(!this.isReadOnly){\r\n defs.push(\r\n {\r\n colId: 'actions',\r\n cellRenderer: DownloadXmlCellComponent,\r\n width: 50,\r\n hide: false\r\n }\r\n );\r\n }\r\n }\r\n else{\r\n defs.push(\r\n submitDate,\r\n submittedByCol,\r\n origSubmitDate,\r\n amendDateCol,\r\n amendReasonCol,\r\n publicStatus,\r\n ffVersionCol,\r\n );\r\n \r\n if(!this.isReadOnly){\r\n defs.push({\r\n colId: 'actions',\r\n cellRenderer: AmendCellComponent,\r\n width: 100,\r\n hide: false\r\n })\r\n }\r\n }\r\n\r\n break;\r\n \r\n case \"Amending\":\r\n defs.push(\r\n submitDate,\r\n submittedByCol,\r\n origSubmitDate,\r\n {\r\n field: 'lastModifiedBy',\r\n colId: 'lastModifiedBy',\r\n headerName: 'Amended By',\r\n filter:'agTextColumnFilter',\r\n editable: false,\r\n hide: false,\r\n width: 120,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure: Disclosure = data.data\r\n return disclosure.lastModifiedBy\r\n }\r\n \r\n return ''\r\n }\r\n },\r\n amendDateCol,\r\n amendReasonCol,\r\n publicStatus,\r\n ffVersionCol,\r\n );\r\n\r\n if(!this.isReadOnly){\r\n defs.push({\r\n colId: 'actions',\r\n cellRenderer: OpenRollbackCellComponent,\r\n width: 90,\r\n hide: false\r\n });\r\n }\r\n\r\n break;\r\n \r\n case \"All\":\r\n if(isRegisteredAgent){\r\n defs.push(\r\n {\r\n field: 'lastModifiedBy',\r\n colId: 'lastModifiedBy',\r\n headerName: 'Last Modified By',\r\n filter:'agTextColumnFilter',\r\n editable: false,\r\n hide: false,\r\n width: 120,\r\n cellRenderer: (data: any) => {\r\n if(data?.data){\r\n const disclosure: Disclosure = data.data\r\n return disclosure.lastModifiedBy\r\n }\r\n \r\n return ''\r\n }\r\n },\r\n statusCol,\r\n );\r\n }\r\n if(isServiceComp){\r\n defs.push(\r\n statusCol,\r\n routedByCol,\r\n );\r\n }\r\n else{\r\n defs.push(\r\n submitDate,\r\n submittedByCol,\r\n origSubmitDate,\r\n amendDateCol,\r\n amendReasonCol,\r\n publicStatus,\r\n ffVersionCol,\r\n );\r\n }\r\n\r\n break\r\n \r\n case \"Deleted\":\r\n case \"Deleted by Operator\":\r\n if(isServiceComp){\r\n defs.push(\r\n routedByCol,\r\n uploadedDirectly,\r\n {\r\n field: 'deleteDate',\r\n headerName: 'Delete Date',\r\n filter: 'agDateColumnFilter',\r\n filterParams: {\r\n buttons: ['reset'],\r\n dateFormat: 'mm/dd/yyyy',\r\n comparator: this.agGridHelperService.dateFilterComparer\r\n },\r\n editable: false,\r\n width: 120,\r\n cellRenderer: DateCellRendererComponent,\r\n },\r\n )\r\n }\r\n\r\n break;\r\n }\r\n \r\n if(isOperator){\r\n defs = defs.filter(d => d.colId !== 'operatorName');\r\n }\r\n\r\n if(isServiceComp){\r\n defs = defs.filter(d => d.colId !== 'serviceCompanyName');\r\n }\r\n\r\n return defs;\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges) {\r\n const disclosures = changes.disclosures.currentValue as Disclosure[];\r\n if (disclosures) {\r\n this.mainService.showLoading({ loading: false });\r\n this.setCollectionsAndTotals(disclosures)\r\n .then(() => {\r\n\r\n this.disclosuresFiltered = this.pending;\r\n if (this.parentComponentName === \"manage\") { \r\n //grid height calc for Manage Disclosures\r\n this.gridHeight = this.agGridHelperService.calculateMinMaxGridHeight(this.disclosuresFiltered.length, 0, 11, 100);\r\n } else {\r\n //grid height calc for Dashboard\r\n this.gridHeight = this.agGridHelperService.calculateMinMaxGridHeight(this.disclosuresFiltered.length, 0, 3, 10);\r\n }\r\n\r\n \r\n this.changeDetectorRef.detectChanges(); // To update grid view\r\n });\r\n } else {\r\n this.mainService.showLoading({ loading: false });\r\n }\r\n }\r\n\r\n ascendingDateComparer(firstDate:Date, secondDate:Date){\r\n if (firstDate === null || firstDate === undefined) {\r\n return 1;\r\n }\r\n if (secondDate === null || secondDate === undefined) {\r\n return -1;\r\n }\r\n const dateA = new Date(firstDate).getTime();\r\n const dateB = new Date(secondDate).getTime();\r\n\r\n if (dateA < dateB) {\r\n return -1;\r\n }\r\n if (dateA > dateB) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n descendingDateComparer(firstDate:Date, secondDate:Date){\r\n if (firstDate === null || firstDate === undefined) {\r\n return 1;\r\n }\r\n if (secondDate === null || secondDate === undefined) {\r\n return -1;\r\n }\r\n const dateA = new Date(firstDate).getTime();\r\n const dateB = new Date(secondDate).getTime();\r\n\r\n if (dateA > dateB) {\r\n return -1;\r\n }\r\n if (dateA < dateB) {\r\n return 1;\r\n }\r\n return 0;\r\n }\r\n\r\n ascendingStringComparer(a:string, b:string){\r\n if (a === null || a === undefined) {\r\n return 1;\r\n }\r\n if (b === null || b === undefined) {\r\n return -1;\r\n }\r\n return a.localeCompare(b);\r\n }\r\n\r\n descendingStringComparer(a:string, b:string){\r\n if (a === null || a === undefined) {\r\n return 1;\r\n }\r\n if (b === null || b === undefined) {\r\n return -1;\r\n }\r\n return b.localeCompare(a);\r\n }\r\n\r\n async setCollectionsAndTotals(disclosures: Disclosure[]) { \r\n const user = await this.authService.getUserInfo();\r\n let userCurrentOrg = user.getCurrentOrg();\r\n \r\n if (userCurrentOrg && userCurrentOrg.isServiceComp) {\r\n //Disclosures not yet routed to operator\r\n const serviceCompDisclosures = disclosures.filter(d => d.currentOrgId === user.currentOrganizationId);\r\n\r\n this.pending = serviceCompDisclosures.filter(x => x.publicStatus === \"Pending\")?.sort((a, b) => {\r\n return this.descendingDateComparer(a.lastModifiedDate, b.lastModifiedDate);\r\n });\r\n\r\n this.amending = serviceCompDisclosures.filter(d_1 => d_1.publicStatus === \"Amending\")?.sort((a, b) => {\r\n return this.ascendingDateComparer(a.lastModifiedDate, b.lastModifiedDate);\r\n });\r\n \r\n this.deleted = serviceCompDisclosures.filter(x_1 => x_1.publicStatus === \"Deleted\")?.sort((a, b) => {\r\n return this.ascendingStringComparer(a.apiNumber, b.apiNumber);\r\n });\r\n\r\n this.submitted = disclosures.filter(d_2 => d_2.currentOrgId !== user.currentOrganizationId && d_2.publicStatus !== 'Archived' && d_2.publicStatus !== 'Deleted');\r\n this.deletedByOperator = disclosures.filter(d_3 => d_3.publicStatus === \"Deleted\" && d_3.currentOrgId !== user.primaryOrganizationId);\r\n this.all = disclosures.filter(x_5 => x_5.publicStatus !== \"Archived\");\r\n } else if (userCurrentOrg && userCurrentOrg.isRegisteredAgent) {\r\n\r\n const regAgentDisclosures = disclosures.filter(d => this.orgRelations.find(o => o.organizationId === d.operatorOrganizationId) != null);\r\n \r\n this.pending = regAgentDisclosures.filter(x_2 => x_2.publicStatus === \"Pending\")?.sort((a, b) => {\r\n return this.descendingDateComparer(a.lastModifiedDate, b.lastModifiedDate);\r\n });\r\n\r\n this.deleted = regAgentDisclosures.filter(x_2 => x_2.publicStatus === \"Deleted\")?.sort((a, b) => {\r\n return this.ascendingStringComparer(a.apiNumber, b.apiNumber);\r\n });\r\n\r\n this.amending = regAgentDisclosures.filter(d_4 => d_4.publicStatus === \"Amending\")?.sort((a, b) => {\r\n return this.descendingDateComparer(a.lastModifiedDate, b.lastModifiedDate);\r\n });\r\n\r\n this.submitted = regAgentDisclosures.filter(x_4 => x_4.publicStatus === \"Submitted\" && !this.amending.some(d_5 => d_5.fracJobId === x_4.fracJobId))?.sort((a, b) => {\r\n return this.ascendingStringComparer(a.apiNumber, b.apiNumber);\r\n });\r\n\r\n }\r\n else {\r\n this.pending = disclosures.filter(x_2 => x_2.publicStatus === \"Pending\")?.sort((a, b) => {\r\n return this.descendingDateComparer(a.lastModifiedDate, b.lastModifiedDate);\r\n });\r\n\r\n this.deleted = disclosures.filter(x_3 => x_3.publicStatus === \"Deleted\")?.sort((a, b) => {\r\n return this.ascendingStringComparer(a.apiNumber, b.apiNumber);\r\n });\r\n \r\n this.amending = disclosures.filter(d_4 => d_4.publicStatus === \"Amending\")?.sort((a, b) => {\r\n return this.descendingDateComparer(a.lastModifiedDate, b.lastModifiedDate);\r\n });\r\n\r\n this.submitted = disclosures.filter(x_4 => x_4.publicStatus === \"Submitted\" && !this.amending.some(d_5 => d_5.fracJobId === x_4.fracJobId))?.sort((a, b) => {\r\n return this.ascendingStringComparer(a.apiNumber, b.apiNumber);\r\n });\r\n\r\n this.all = disclosures\r\n .filter(x_5 => x_5.publicStatus !== \"Archived\")\r\n .filter(x_5 => {\r\n if(x_5.publicStatus === \"Submitted\"){\r\n const isDisclosureAmending = this.amending.some(d_5 => d_5.fracJobId === x_5.fracJobId);\r\n return !isDisclosureAmending;\r\n }\r\n return true;\r\n })\r\n ?.sort((a, b) => {\r\n return this.ascendingStringComparer(a.apiNumber, b.apiNumber);\r\n });\r\n }\r\n\r\n this.totalPending = this.pending.length;\r\n this.totalSubmitted = this.submitted.length;\r\n this.totalAmending = this.amending.length;\r\n this.totalDeleted = this.deleted.length;\r\n this.totalDeletedByOperator = this.deletedByOperator.length;\r\n this.totalAll = this.all.length;\r\n }\r\n\r\n cancelDelete() {\r\n this.modalVisible = false;\r\n }\r\n confirmDelete() {\r\n this.mainService.showLoading({ loading: true });\r\n this.modalVisible = false;\r\n this.disclosureService.deleteDisclosure(this.selectedDisclosure.disclosureId).subscribe({\r\n next: () => {\r\n this.mainService.showLoading({ loading: false });\r\n this.loggingService.success(\"Disclosure was deleted\");\r\n const deleted = this.disclosures.find(x => x.disclosureId === this.selectedDisclosure.disclosureId);\r\n if (deleted) {\r\n deleted.status = \"Deleted\";\r\n deleted.publicStatus = \"Deleted\";\r\n }\r\n \r\n this.setCollectionsAndTotals(this.disclosures)\r\n .then( () => {\r\n this.disclosuresFiltered = this.pending;\r\n this.changeDetectorRef.detectChanges();\r\n });\r\n },\r\n error: (e) => {\r\n this.mainService.showLoading({ loading: false });\r\n this.loggingService.error(\"Error deleting disclosure\");\r\n }\r\n });\r\n }\r\n\r\n modalClosed(e: any) {\r\n this.cancelDelete();\r\n }\r\n\r\n cancelAmend() {\r\n this.modalAmendVisible = false;\r\n }\r\n\r\n confirmAmend() {\r\n this.mainService.showLoading({ loading: true });\r\n this.modalAmendVisible = false;\r\n\r\n const { currentOrganizationId } = this.userInfo;\r\n\r\n this.disclosureService.SetMyDisclosureToAmending(currentOrganizationId, this.selectedDisclosure.disclosureId).subscribe(res => {\r\n this.mainService.showLoading({ loading: false });\r\n this.router.navigate(['/disclosure/edit-disclosure/', res.disclosureId]);\r\n }, err => {\r\n this.mainService.showLoading({ loading: false });\r\n this.loggingService.error(\"Error setting disclosure to amending\");\r\n });\r\n /*this.disclosureService.deleteDisclosure(this.selectedDisclosure.disclosureId).subscribe({\r\n next: () => {\r\n this.mainService.showLoading({ loading: false });\r\n this.loggingService.success(\"Disclosure was deleted\");\r\n const deleted = this.disclosures.find(x => x.disclosureId === this.selectedDisclosure.disclosureId);\r\n if (deleted) {\r\n deleted.status = \"Deleted\";\r\n }\r\n this.setCollectionsAndTotals(this.disclosures);\r\n this.filterForm.controls.status.patchValue(\"Editing\");\r\n this.changeDetectorRef.detectChanges();\r\n },\r\n error: (e) => {\r\n this.mainService.showLoading({ loading: false });\r\n this.loggingService.error(\"Error deleting disclosure\");\r\n }\r\n });*/\r\n }\r\n\r\n modalAmendClosed(e: any) {\r\n this.cancelAmend();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n }\r\n\r\n confirmRollback(){\r\n this.modalRollbkVisible = false\r\n \r\n this.authService.getUserInfo()\r\n .then(user => { \r\n \r\n this.disclosureService.rollBackMyDisclosure(user.currentOrganizationId, this.selectedDisclosure.disclosureId)\r\n .pipe( first() )\r\n .subscribe( \r\n {\r\n next: () => {\r\n this.loggingService.success('Disclosure Rollback successful');\r\n this.selectedDisclosure.publicStatus = 'Deleted';\r\n const submitted = this.disclosures.filter(x => x.publicStatus === \"Submitted\");\r\n const submittedDisclosure: Disclosure = submitted.find((d: Disclosure) => d.fracJobId === this.selectedDisclosure.fracJobId);\r\n submittedDisclosure.editCount = 0; //So amend cell will render\r\n \r\n this.setCollectionsAndTotals(this.disclosures)\r\n .then( () => {\r\n this.disclosuresFiltered = this.amending;\r\n this.changeDetectorRef.detectChanges(); // To update grid view\r\n });\r\n },\r\n error: () => this.loggingService.error('Error rolling back disclosure')\r\n }\r\n )\r\n })\r\n .finally( () => this.mainService.showLoading({ loading: false }) )\r\n }\r\n\r\n cancelRollback(){\r\n this.modalRollbkVisible = false\r\n }\r\n\r\n apiValueGetter(params: ValueGetterParams) {\r\n let formattedValue = this.agGridHelperService.formatAPINumber(params.data.apiNumber);\r\n return formattedValue;\r\n }\r\n\r\n viewXml(disclosure: Disclosure): void{\r\n this.fileService.generateDisclosureXml(this.currentOrganizationId, disclosure.disclosureId)\r\n .pipe( first() )\r\n .subscribe({\r\n next: xml => {\r\n FileSaver.saveAs(xml, (disclosure.wellName ? disclosure.wellName : \"Disclosure\") + '.xml');\r\n },\r\n error: e => {\r\n this.loggingService.error(\"Error getting disclosure Xml\", \"Error getting disclosure Xml \" + e);\r\n }\r\n });\r\n }\r\n\r\n viewPdf(disclosure: Disclosure): void {\r\n const matched = this.all.find(x => x.disclosureId === disclosure.disclosureId);\r\n if (matched) {\r\n window.open(`/api/file/GetDisclosurePdfByName/${disclosure.disclosureId}/${encodeURIComponent(matched.pdfName)}`, \"_blank\");\r\n }\r\n }\r\n\r\n public exportToCSV()\r\n {\r\n this.agGridHelperService.exportDataToExcel(\"Disclosures\", \"sheet1\", this.gridOptions, false);\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n
\r\n
\r\n

Disclosures

\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n \r\n
\r\n
Are you sure you want to delete this disclosure?
\r\n
The disclosure will be held in a delete pending state for 6 months.
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
Are you sure you want to rollback this amendment?
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n
Are you sure you want to amend this disclosure?
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnInit, ChangeDetectorRef, OnDestroy, Output, EventEmitter } from '@angular/core';\r\nimport { FormControl, FormGroup, Validators } from '@angular/forms';\r\nimport { dateStringToUtcDate } from '../../functions/date-string-to-utc-date.function';\r\nimport { SearchFilter } from '../../models/lookup/search-filter';\r\nimport { DropdownService } from '../../services/dropdown.service';\r\nimport { LoggingService } from '../../services/logging.service';\r\n\r\n\r\n@Component({\r\n selector: 'disclosure-search',\r\n templateUrl: './disclosure-search.component.html',\r\n styleUrls: ['./disclosure-search.component.scss']\r\n})\r\nexport class DisclosureSearchComponent implements OnInit, OnDestroy {\r\n @Output() SearchStart = new EventEmitter();\r\n public wellApiNum: string = \"\";\r\n public wellName: string = \"\";\r\n public states: any[];\r\n public counties: any[];\r\n public countyOptions: any[] = [];\r\n public selectedState: string = \"\";\r\n public selectedCounty = \"\";\r\n public fg: FormGroup = new FormGroup({\r\n state: new FormControl(null, [Validators.maxLength(2)]),\r\n countyId: new FormControl(null),\r\n apiNo: new FormControl(\"\"),\r\n wellName: new FormControl(\"\"),\r\n dateType: new FormControl(\"jobStartDate\"),\r\n startDateRange: new FormControl(\"\"),\r\n endDateRange: new FormControl(\"\"),\r\n })\r\n constructor(\r\n private changeDetectorRef: ChangeDetectorRef,\r\n private dropdownService: DropdownService,\r\n private loggingService: LoggingService\r\n ) {\r\n }\r\n ngOnDestroy(): void {\r\n\r\n }\r\n ngOnInit(): void {\r\n this.dropdownService.getCounties().then(ctys => this.counties = ctys);\r\n this.dropdownService.getStates().then(states => this.states = states);\r\n }\r\n public stateChanged() {\r\n if (this.fg.controls.state.value == \"\") {\r\n this.countyOptions = [];\r\n // this.selectedCounty = \"\";\r\n return;\r\n }\r\n // this.selectedCounty = \"\";\r\n this.countyOptions = this.counties.filter(x => x.statE_ABBR == this.fg.controls.state.value);\r\n }\r\n public formUpdated($event: any) {\r\n console.log('form updated');\r\n let val = this.fg.getRawValue();\r\n val.propertyName = $event.target.name;\r\n }\r\n\r\n public startSearch() {\r\n var search: SearchFilter = {\r\n \"wellName\": null,\r\n \"apiNumber\": null,\r\n \"countyId\": null,\r\n \"statusId\": null,\r\n \"submissionDateStart\": null,\r\n \"submissionDateEnd\": null,\r\n \"startDateStart\": null,\r\n \"startDateEnd\": null,\r\n \"stateAbbr\": null\r\n };\r\n\r\n let startDateRange: Date = null;\r\n let endDateRange: Date = null;\r\n if (this.fg.get(\"startDateRange\") && this.fg.get(\"startDateRange\").value) {\r\n startDateRange = dateStringToUtcDate(this.fg.get(\"startDateRange\").value);\r\n }\r\n if (this.fg.get(\"endDateRange\") && this.fg.get(\"endDateRange\").value) {\r\n endDateRange = dateStringToUtcDate(this.fg.get(\"endDateRange\").value, true, 23, 59);\r\n }\r\n\r\n if (this.fg.get(\"state\") && this.fg.get(\"state\").value) search.stateAbbr = this.fg.get(\"state\").value;\r\n if (this.fg.get(\"countyId\") && this.fg.get(\"countyId\").value) search.countyId = this.fg.get(\"countyId\").value;\r\n //if (this.fg.get('50029204930000'))\r\n if (this.fg.get(\"apiNo\") && this.fg.get(\"apiNo\").value) search.apiNumber = this.fg.get(\"apiNo\").value;\r\n if (this.fg.get(\"wellName\") && this.fg.get(\"wellName\").value) search.wellName = this.fg.get(\"wellName\").value;\r\n if (this.fg.get('dateType') && this.fg.get(\"dateType\").value == \"jobStartDate\") {\r\n search.startDateStart = startDateRange;\r\n search.startDateEnd = endDateRange;\r\n } else if (this.fg.get('dateType')) {\r\n search.submissionDateStart = startDateRange;\r\n search.submissionDateEnd = endDateRange;\r\n }\r\n if (!search.stateAbbr && !search.apiNumber && !search.wellName && !search.startDateStart && !search.startDateEnd &&\r\n !search.submissionDateStart && !search.submissionDateEnd) {\r\n this.loggingService.error(\"No criteria defined\");\r\n return;\r\n }\r\n this.SearchStart.emit(search);\r\n }\r\n\r\n public resetSearch() {\r\n this.fg.reset();\r\n }\r\n}\r\n","

Disclosures

\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { ChangeDetectorRef, Component, OnInit } from '@angular/core';\r\nimport { AbstractControl, FormControl, FormGroup, ValidationErrors, ValidatorFn, Validators } from '@angular/forms';\r\nimport { Status } from '../../models/lookup/status.model';\r\nimport { Organization } from '../../models/organizations/organization.model';\r\nimport { FFUserWithRoles } from '../../models/users/ff-user-with-roles.model';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { DisclosureService } from '../../services/disclosure.service';\r\nimport { DropdownService } from '../../services/dropdown.service';\r\nimport { LoggingService } from '../../services/logging.service';\r\nimport { getDistinct } from '../../services/utilities.service';\r\nimport { LoaderData } from '../../ui/models/loader-data.model';\r\nimport { MainService } from '../../ui/services/main.service';\r\nimport { UserMappingWithRelatedOrgs } from '../../models/users/user-mapping-with-related-orgs.model';\r\nimport { first } from 'rxjs';\r\nimport { isNotNullOrEmpty } from '../../functions/is-not-null-or-empty.function';\r\nimport { dateStringToUtcDate } from '../../functions/date-string-to-utc-date.function';\r\nimport { DownloadFilter } from '../../models/disclosures/download-filter.model';\r\n\r\nconst FileSaver = require('file-saver');\r\n@Component({\r\n selector: 'filter-download',\r\n templateUrl: './filter-download.component.html',\r\n styleUrls: ['./filter-download.component.scss']\r\n})\r\nexport class FilterDownloadComponent implements OnInit {\r\n userInfo: FFUserWithRoles;\r\n currentOrg: Organization;\r\n public statuss: Status[];\r\n public states: any[];\r\n public orgId: string;\r\n public operatorNames: string[];\r\n public selectedOperatorId: string | null = null;\r\n public isSubmissionDatesValid: boolean = true;\r\n public downloadCount: any = 'Calculating';\r\n public IsValidInputDate: boolean = true;\r\n private operators: UserMappingWithRelatedOrgs[];\r\n \r\n public fg: FormGroup = new FormGroup({\r\n jobDateStart: new FormControl(null),\r\n jobDateEnd: new FormControl(null),\r\n state: new FormControl(null, [Validators.maxLength(2)]),\r\n operator: new FormControl(null),\r\n downloadType: new FormControl<'XML' | 'CSV'>(\"XML\", Validators.required),\r\n })\r\n\r\n\r\n constructor(\r\n private dropdownService: DropdownService,\r\n private mainService: MainService,\r\n private disclosureService: DisclosureService,\r\n private loggingService: LoggingService,\r\n private authService: AuthService, public changeDetector: ChangeDetectorRef\r\n\r\n ) { }\r\n\r\n ngOnInit(): void {\r\n this.dropdownService.getStatus().then(res => {\r\n this.statuss = res;\r\n /// not sure how to address pending vs amending here...\r\n }, err => {\r\n this.loggingService.error(\"Error retrieving status'.\", \"Error retrieving status'.\");\r\n })\r\n this.dropdownService.getStates().then(res => {\r\n this.states = res;\r\n if (this.currentOrg) this.formUpdated(null);\r\n }, err => {\r\n this.loggingService.error(\"Error retrieving states.\", \"Error retrieving states.\");\r\n })\r\n this.authService.getUserInfo().then(res => {\r\n this.userInfo = res;\r\n this.currentOrg = this.userInfo.getCurrentOrg();\r\n this.orgId = this.userInfo.currentOrganizationId; \r\n \r\n let relevantPermissions = this.userInfo.orgPermissions.filter(x => x.organizationId == this.userInfo.currentOrganizationId\r\n && x.orgRoleName == \"DataSubmitter\");\r\n let relevantOperators = relevantPermissions.filter(x => x.operatorName != null);\r\n\r\n this.operatorNames = getDistinct(relevantOperators, \"operatorName\");\r\n this.operators = relevantOperators;\r\n if (this.states) this.formUpdated(null);\r\n })\r\n }\r\n\r\n public selectedOperatorNameSet(): void{\r\n const { operator } = this.fg.controls;\r\n const op = this.operators.find(x => x.operatorName == operator.value);\r\n\r\n if (op) {\r\n this.selectedOperatorId = op.operatorOrgId;\r\n }\r\n this.formUpdated(null);\r\n }\r\n\r\n public clearOperator(): void{\r\n this.selectedOperatorId = '';\r\n const { operator } = this.fg.controls;\r\n operator.patchValue(null);\r\n this.formUpdated(null);\r\n }\r\n\r\n public clearState(): void{\r\n const { state } = this.fg.controls;\r\n state.patchValue(null);\r\n this.formUpdated(null);\r\n }\r\n\r\n public formUpdated($event: any) {\r\n console.log('form updated');\r\n let val = this.fg.getRawValue();\r\n if ($event) val.propertyName = $event.target.name;\r\n const { jobDateStart, jobDateEnd, state } = this.fg.controls;\r\n const filter: any = {\r\n OrganizationId: this.currentOrg.organizationId,\r\n StateAbbr: state.value ?? null,\r\n jobDateStart: jobDateStart.value ?? null,\r\n jobDateEnd: jobDateEnd.value ?? null,\r\n OperatorOrganizationId: (this.selectedOperatorId) ? this.selectedOperatorId : null,\r\n StatusId: null,\r\n };\r\n this.downloadCount = 'Calculating';\r\n if (!isNotNullOrEmpty(jobDateStart.value) || !isNotNullOrEmpty(jobDateEnd.value)) {\r\n this.IsValidInputDate = true;\r\n } else {\r\n let startDate = new Date(jobDateStart.value);\r\n let endDate = new Date(jobDateEnd.value);\r\n if (($event != null) && (startDate.getTime() <= 0 || endDate.getTime() <= 0)) {\r\n this.IsValidInputDate = false;\r\n this.downloadCount = \"\";\r\n return;\r\n }\r\n else if (startDate.getTime() > endDate.getTime()) {\r\n this.IsValidInputDate = false;\r\n this.downloadCount = \"\";\r\n return;\r\n }\r\n else {\r\n this.IsValidInputDate = true;\r\n }\r\n }\r\n \r\n this.disclosureService.filteredXMLDownloadCount(this.currentOrg.organizationId, filter).subscribe((resCount: any) => {\r\n //this.mainService.showLoading({ loading: false });\r\n this.downloadCount = resCount;\r\n this.changeDetector.detectChanges();\r\n }, err => {\r\n this.downloadCount = 'Error';\r\n this.changeDetector.detectChanges();\r\n this.loggingService.error(\"Error generating XML download count\", \"Error generating XML download count.\");\r\n });\r\n }\r\n\r\n public isNaN(x: any) {\r\n return isNaN(x);\r\n }\r\n\r\n public download(): void{\r\n if (!this.fg.valid) {\r\n this.loggingService.error(\"Select all the required fields\");\r\n return;\r\n }\r\n\r\n const { state } = this.fg.controls;\r\n\r\n let jobDateStart: string = null;\r\n let jobDateEnd: string = null;\r\n if (this.fg.get(\"jobDateStart\") && this.fg.get(\"jobDateStart\").value) {\r\n jobDateStart = this.fg.get(\"jobDateStart\").value;\r\n }\r\n if (this.fg.get(\"jobDateEnd\") && this.fg.get(\"jobDateEnd\").value) {\r\n jobDateEnd = this.fg.get(\"jobDateEnd\").value;\r\n }\r\n\r\n const filter: DownloadFilter = {\r\n organizationId: this.currentOrg.organizationId,\r\n stateAbbr: state.value ?? null,\r\n jobDateStart: jobDateStart,\r\n jobDateEnd: jobDateEnd,\r\n operatorOrganizationId: (this.selectedOperatorId) ? this.selectedOperatorId : null,\r\n statusId: null,\r\n };\r\n \r\n if (this.currentOrg.isOperator) {\r\n filter.operatorOrganizationId = this.currentOrg.organizationId;\r\n }\r\n\r\n if (this.fg.controls.downloadType.value == \"XML\") {\r\n this.mainService.showLoading({ loading: true, loadingText: \"Downloading Data\" } as LoaderData);\r\n\r\n this.getXMLDownload(filter);\r\n }\r\n else {\r\n this.mainService.showLoading({ loading: true, loadingText: \"Downloading Data\" } as LoaderData);\r\n this.disclosureService.filteredCSVDownload(this.currentOrg.organizationId, filter)\r\n .pipe( first() )\r\n .subscribe({\r\n next: res => {\r\n var fn = \"disclosures.csv\";\r\n var data = new Blob([res as string], { type: 'text/csv' });\r\n FileSaver.saveAs(data, fn);\r\n this.mainService.showLoading({ loading: false });\r\n }, \r\n error: err => {\r\n this.mainService.showLoading({ loading: false });\r\n this.loggingService.error(\"Error generating CSV download\", \"Error generating CSV download.\");\r\n }\r\n });\r\n\r\n this.disclosureService.filteredCSVDownload2(this.currentOrg.organizationId, filter)\r\n .pipe(first())\r\n .subscribe({\r\n next: res => {\r\n var fn = \"disclosurewater.csv\";\r\n var data = new Blob([res as string], { type: 'text/csv' });\r\n FileSaver.saveAs(data, fn);\r\n this.mainService.showLoading({ loading: false });\r\n },\r\n error: err => {\r\n this.mainService.showLoading({ loading: false });\r\n this.loggingService.error(\"Error generating CSV water download\", \"Error generating CSV water download.\");\r\n }\r\n });\r\n }\r\n }\r\n private getXMLDownload(filter:any) {\r\n this.disclosureService.filteredXMLDownload(this.currentOrg.organizationId, filter)\r\n .pipe(first())\r\n .subscribe({\r\n next: res => {\r\n var fn = \"disclosures.xml\";\r\n var data = new Blob([res as string], { type: 'text/xml' });\r\n FileSaver.saveAs(data, fn);\r\n this.mainService.showLoading({ loading: false });\r\n },\r\n error: () => {\r\n this.mainService.showLoading({ loading: false });\r\n this.loggingService.error(\"Error generating XML download\", \"Error generating XML download.\");\r\n }\r\n });\r\n }\r\n /* Getters for DOM */\r\n public get operator(): string | null{\r\n return this.fg.controls.operator.value\r\n }\r\n public get state(): string | null{\r\n return this.fg.controls.state.value\r\n }\r\n}\r\n","
\r\n
Number of disclosures to be downloaded: {{downloadCount}}
\r\n
250 && IsValidInputDate\" style=\"background-color: darksalmon\">Number of disclosures available: {{downloadCount}}. Only the latest 250 will be downloaded.
\r\n
No disclosures available for download with current filter
\r\n
Calculating disclosure download count.
\r\n
Error retrieving disclosure download count.
\r\n
Invalid date range provided, please provide a valid range and try again.
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
0\">\r\n
\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n

Submission Start Date must be less than Submission End Date.

\r\n
\r\n","\r\nimport { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { finalize, Observable, Subscription, tap } from 'rxjs';\r\nimport { CaptchaSettings } from '../../models/captcha-settings.model';\r\nimport { CreateAssessmentRequestModel } from '../../models/create-assessment-request.model';\r\nimport { LoggingService } from '../../services/logging.service';\r\nimport { ReCaptchaService } from '../../services/recaptcha.service';\r\n\r\n@Component({ template: ''})\r\nexport class RecaptchaBaseComponent implements OnInit, OnDestroy {\r\n protected recaptchaToken: string = \"\";\r\n protected recaptchaTokenAction: string = \"\";\r\n protected subscription: Subscription = new Subscription();\r\n captchaFailed: boolean = false;\r\n captchaSucceeded: boolean = false;\r\n captchaSettings: CaptchaSettings;\r\n\r\n constructor(protected loggingService: LoggingService, protected recaptchaService: ReCaptchaService) {\r\n }\r\n\r\n ngOnInit(): void {\r\n let getRecaptchaSettings$ = this.recaptchaService.getCaptchaSettings().pipe(finalize(() => {\r\n this.subscription.add(getRecaptchaSettings$);\r\n })).subscribe(res => {\r\n this.captchaSettings = res;\r\n }, err => {\r\n this.loggingService.error(\"Error fetching Recaptcha settings.\", \"Error fetching Recaptcha settings: \" + err);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n protected setRecaptchaTokenAction(actionName: string) {\r\n this.recaptchaTokenAction = actionName;\r\n this.fetchRecaptchaToken();\r\n }\r\n\r\n protected fetchRecaptchaToken(): void {\r\n var recaptchaService$ = this.recaptchaService.requestToken(this.recaptchaTokenAction).pipe(finalize(() => {\r\n this.subscription.add(recaptchaService$);\r\n //Tokens expire every two minutes, so upon fetching the first one, get ready to fetch another in two minutes.\r\n setTimeout(() => {\r\n this.fetchRecaptchaToken();\r\n }, 120000);\r\n })).subscribe(token => {\r\n this.recaptchaToken = token;\r\n }, error => {\r\n console.log('Failed to fetch a recaptcha token.', error);\r\n });\r\n }\r\n\r\n protected createRecaptchaAssessment(action: string = this.recaptchaTokenAction, token: string = this.recaptchaToken): Observable {\r\n let createAssessmentRequest = { action: action, token: token } as CreateAssessmentRequestModel;\r\n return this.recaptchaService.createAssessment(createAssessmentRequest).pipe(\r\n tap((result: number) => {\r\n this.fetchRecaptchaToken();\r\n return result;\r\n }));\r\n }\r\n\r\n protected recaptchaCheckboxResolved(event: any) {\r\n if (event) {\r\n this.captchaSucceeded = true;\r\n }\r\n }\r\n\r\n protected recaptchaCheckboxErrored(event: any) {\r\n event;\r\n this.captchaSucceeded = false;\r\n this.loggingService.logError(\"An error occurred with the recaptcha checkbox for the \" + this.recaptchaTokenAction + \" action.\");\r\n }\r\n}\r\n","import { Component, OnDestroy, OnInit } from '@angular/core';\r\nimport { OrgRole } from '../../models/organizations/org-role.model';\r\nimport { Organization } from '../../models/organizations/organization.model';\r\nimport { FFUser, getUserOrgs } from '../../models/users/ff-user.model';\r\nimport { AuthService } from '../../services/auth.service';\r\nimport { LoggingService } from '../../services/logging.service';\r\nimport { UserService } from '../../services/user.service';\r\nimport { MainService } from '../../ui/services/main.service';\r\n\r\n@Component({\r\n selector: 'app-switch-organization',\r\n templateUrl: './switch-organization.component.html',\r\n styleUrls: ['./switch-organization.component.scss']\r\n})\r\nexport class SwitchOrganizationComponent implements OnInit, OnDestroy {\r\n\r\n public userInfo: FFUser;\r\n public verifiedUser: FFUser = undefined;\r\n public userOrgs: Organization[];\r\n public currentOrg: Organization;\r\n orgId: string;\r\n\r\n constructor(private authService: AuthService, private userService: UserService,\r\n private loggingService: LoggingService, private mainService: MainService) { }\r\n ngOnInit(): void {\r\n\r\n this.authService.getUserInfo().then(result => {\r\n this.setUserInfo(result);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n\r\n }\r\n\r\n private setUserInfo(user: FFUser) {\r\n this.userInfo = user;\r\n if (this.userInfo.emailConfirmed && this.userInfo.isActivated) {\r\n this.verifiedUser = this.userInfo;\r\n this.userOrgs = getUserOrgs(this.userInfo);\r\n this.currentOrg = this.userInfo.getCurrentOrg();\r\n if (this.currentOrg) {\r\n this.orgId = this.currentOrg.organizationId;\r\n } else {\r\n this.mainService.showLoading({ loading: false });\r\n }\r\n }\r\n else {\r\n this.verifiedUser = null;\r\n }\r\n }\r\n\r\n public orgChange() {\r\n this.mainService.showLoading({ loading: true, loadingText: \"Setting Organization\" });\r\n this.userService.setMyDefaultOrg(this.orgId).subscribe(res => {\r\n this.authService.getUserInfo(true).then(res => {\r\n this.mainService.showLoading({ loading: false });\r\n });\r\n \r\n }, err => {\r\n this.mainService.showLoading({ loading: false });\r\n this.loggingService.error(\"Error setting default organization\", \"Error setting default organization: \" + err);\r\n });\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n","export function dateStringToUtcDate(inputDateString: string, offsetTheTime: boolean = false, hourToSet: number = 0, minutesToSet: number = 0): Date {\r\n let inputDate = new Date(inputDateString);\r\n let timezoneOffset = inputDate.getTimezoneOffset();\r\n\r\n let timeDiffHours = timezoneOffset / 60;\r\n let timeDiffMinutes = timezoneOffset % 60;\r\n\r\n let hoursToAdd = offsetTheTime ? hourToSet - timeDiffHours : timeDiffHours;\r\n let minutesToAdd = offsetTheTime ? minutesToSet - timeDiffMinutes : timeDiffMinutes;\r\n\r\n inputDate.setUTCMinutes(inputDate.getUTCMinutes() + minutesToAdd);\r\n inputDate.setUTCHours(inputDate.getUTCHours() + hoursToAdd);\r\n return inputDate;\r\n}\r\n","export function isNotNullOrEmpty(objectToCheck: string | number) {\r\n let isUndefined = objectToCheck === undefined;\r\n let isNull = objectToCheck === null;\r\n\r\n if (!isUndefined && !isNull)\r\n objectToCheck = objectToCheck.toString().trim();\r\n\r\n let isEmpty = objectToCheck === '';\r\n return !isUndefined && !isNull && !isEmpty;\r\n}\r\n","\r\nexport class CASNumberShort {\r\n public casNumber: string;\r\n public commonName: string;\r\n public isCommonName: boolean;\r\n public ingredientName: string;\r\n}\r\n","export enum LU_Status {\r\n Active = \"fba424d5-3e03-48f9-80a5-97edfa469ddd\",\r\n Pending = \"bf6b465f-49ec-46db-8e5d-24265773f2cc\",\r\n Deleted = \"ab7f02e8-d4ac-4e03-8311-9ed7f54ea35a\",\r\n}\r\n","export enum RefThirdPartyStatus {\r\n Active = \"fba424d5-3e03-48f9-80a5-97edfa469ddd\",\r\n Inactive = \"cf3aa8ea-5425-4838-a059-60d8ba462227\",\r\n Pending = \"bf6b465f-49ec-46db-8e5d-24265773f2cc\",\r\n Deleted = \"ab7f02e8-d4ac-4e03-8311-9ed7f54ea35a\",\r\n }","\r\nexport class OrgRole {\r\n //[Required]\r\n //MaxLength(16)\r\n public orgRoleId: string | undefined;\r\n //MaxLength(50)\r\n public value: string | undefined;\r\n //MaxLength(100)\r\n public description: string | undefined;\r\n //MaxLength(100)\r\n public createdBy: string | undefined;\r\n //MaxLength(8)\r\n public createdDate: string | undefined;\r\n //MaxLength(100)\r\n public lastModifiedBy: string | undefined;\r\n //MaxLength(8)\r\n public lastModifiedDate: string | undefined;\r\n public static USERROLEID = \"E11949AD-DA31-459B-94BE-6AEFFE4495AE\";\r\n public static SUPERVISORROLEID = \"0BB027BC-34BA-4ACF-B235-94FFAF83CCA2\";\r\n public static DATASUBMITTERID = \"38ADD49F-B1DE-4CBC-974A-0835742A304A\";\r\n}\r\n","import { UserMapping } from \"../users/user-mapping.model\";\r\nimport { OrgRole } from \"./org-role.model\";\r\nimport { OrganizationRelation } from \"./organization-relation.model\";\r\n\r\nexport class Organization {\r\n //[Required]\r\n //MaxLength(16)\r\n public organizationId: string | undefined = \"\";\r\n //MaxLength(50)\r\n public govAgencyNumber: string | undefined = \"\";\r\n //MaxLength(50)\r\n public operatorNumber: string | undefined = \"\";\r\n //MaxLength(150)\r\n public organizationName: string | undefined = \"\";\r\n //MaxLength(200)\r\n public address1: string | undefined = \"\";\r\n //MaxLength(200)\r\n public address2: string | undefined = \"\";\r\n //MaxLength(150)\r\n public city: string | undefined = \"\";\r\n //MaxLength(2)\r\n public state: string | undefined = \"\";\r\n //MaxLength(5)\r\n public zip: string | undefined = \"\";\r\n //MaxLength(12)\r\n public phone: string | undefined = \"\";\r\n public isGovAgency: boolean | undefined = false;\r\n public isOperator: boolean | undefined = false;\r\n public isRegisteredAgent: boolean | undefined = false;\r\n public isServiceComp: boolean | undefined = false;\r\n //MaxLength(100)\r\n public createdBy: string | undefined = \"\";\r\n //MaxLength(8)\r\n public createdDate: string | undefined;\r\n //MaxLength(100)\r\n public lastModifiedBy: string | undefined = \"\";\r\n //MaxLength(8)\r\n public lastModifiedDate: string | undefined;\r\n public userMappings: UserMapping[] | undefined;\r\n public organizationRelations: OrganizationRelation[] | undefined;\r\n public organizationDefaults: any[];\r\n public nameChangeReason: string | undefined = \"\";\r\n\r\n constructor(obj?: any) {\r\n if (obj) Object.assign(this, obj);\r\n }\r\n public get LastModifiedDateAsDate() {\r\n if (!this.lastModifiedDate) return null;\r\n var d = new Date(this.lastModifiedDate);\r\n return d;\r\n }\r\n\r\n public getFlattenedUsersFromMap() {\r\n if (!this.userMappings) return null;\r\n let yous:any[] = [];\r\n for (let m = 0; m < this.userMappings.length; m++) {\r\n let mp = this.userMappings[m];\r\n if (yous.find(x => x.id == mp.userId)) {\r\n // add role here\r\n const match = yous.find(x => x.id == mp.userId) as any;\r\n match['role-' + mp.orgRole.value] = true;\r\n match.status = this.getUserStatus(match);\r\n match.officeRegion = this.getUserOfficeRegion(match);\r\n match.createdByName = mp.createdByName;\r\n match.disabled = true;\r\n } else {\r\n (mp.user as any)['role-' + mp.orgRole.value] = true;\r\n (mp.user as any).status = this.getUserStatus(mp.user);\r\n (mp.user as any).officeRegion = this.getUserOfficeRegion(mp.user);\r\n (mp as any).createdByName = mp.createdByName;\r\n (mp as any).user.disabled = true;\r\n yous.push(mp.user);\r\n }\r\n }\r\n return yous;\r\n }\r\n\r\n getUserStatus(user: any): string {\r\n if (!user.emailConfirmed) return \"Pending\";\r\n const mapping = this.userMappings.find(x => x.userId == user.id && x.orgRoleId.toLowerCase() == OrgRole.USERROLEID.toLowerCase());\r\n if (!mapping) return \"Inactive\";\r\n return mapping.isActive ? \"Active\" : \"Inactive\";\r\n }\r\n\r\n getUserOfficeRegion(user: any): string {\r\n const mapping = this.userMappings.find(x => x.userId == user.id && x.orgRoleId.toLowerCase() == OrgRole.USERROLEID.toLowerCase());\r\n if (!mapping) return \"\";\r\n return mapping.officeRegion;\r\n }\r\n\r\n public getFlattenedRelations(orgRelationTypes:any[]) {\r\n if (!this.organizationRelations) return null;\r\n let orgs:any[] = [];\r\n for (let i = 0; i < this.organizationRelations.length; i++) {\r\n let o = this.organizationRelations[i];\r\n if (orgs.find(x => x.organizationId == o.organizationId)) {\r\n console.log('reltypeid', o);\r\n let no = orgs.find(x => x.organizationId == o.organizationId);\r\n let t = orgRelationTypes.find(x => x.orgRelationTypeId == no.orgRelationTypeId);\r\n if (t) {\r\n let tname = t.value.replace('Operator - ', '');\r\n no[tname] = true;\r\n }\r\n } else {\r\n let no = JSON.parse(JSON.stringify((o as any).organization));\r\n no.orgRelationTypeId = o.orgRelationTypeId;\r\n no.createdDate = o.createdDate;\r\n let t = orgRelationTypes.find(x => x.orgRelationTypeId == no.orgRelationTypeId);\r\n if (t) {\r\n let tname = t.value.replace('Operator - ', '');\r\n no[tname] = true;\r\n no.statusId = o.statusId;\r\n no.removedDate = o.removedDate;\r\n }\r\n console.log('reltypeid', o.orgRelationTypeId);\r\n orgs.push(no);\r\n }\r\n\r\n }\r\n return orgs;\r\n }\r\n}\r\n","import { OrgRoleType } from \"./users/org-role-type.enum\"\r\n\r\nexport interface PermittedRoles{\r\n orgType: OrgType,\r\n roles: OrgRoleType[],\r\n isAdmin?: boolean // for the admin role\r\n}\r\n\r\nexport type OrgType = 'RegisteredAgent' | 'Service' | 'Operator'\r\n\r\n/**\r\n * Common roles for user access permissions\r\n */\r\nexport const CommonRoles = {\r\n Admin: {\r\n orgType: 'Operator' as OrgType,\r\n roles: [] as OrgRoleType[],\r\n isAdmin: true\r\n },\r\n RegisteredAgtSupervisor: {\r\n orgType: 'RegisteredAgent' as OrgType,\r\n roles: [OrgRoleType.Supervisor]\r\n },\r\n RegisteredAgtUser: {\r\n orgType: 'RegisteredAgent' as OrgType,\r\n roles: [OrgRoleType.DataSubmitter]\r\n },\r\n ServiceSupervisor: {\r\n orgType: 'Service' as OrgType,\r\n roles: [OrgRoleType.Supervisor]\r\n },\r\n ServiceUser: {\r\n orgType: 'Service' as OrgType,\r\n roles: [OrgRoleType.DataSubmitter]\r\n },\r\n OperatorSubmitter: {\r\n orgType: 'Operator' as OrgType,\r\n roles: [OrgRoleType.DataSubmitter]\r\n },\r\n OperatorSupervisor: {\r\n orgType: 'Operator' as OrgType,\r\n roles: [OrgRoleType.Supervisor]\r\n },\r\n AllSupervisors: [ \r\n {\r\n orgType: 'Operator' as OrgType,\r\n roles: [OrgRoleType.Supervisor]\r\n },\r\n {\r\n orgType: 'Service' as OrgType,\r\n roles: [OrgRoleType.Supervisor]\r\n },\r\n {\r\n orgType: 'RegisteredAgent' as OrgType,\r\n roles: [OrgRoleType.Supervisor]\r\n }\r\n ],\r\n AllSubmitters: [\r\n {\r\n orgType: 'RegisteredAgent' as OrgType,\r\n roles: [OrgRoleType.DataSubmitter]\r\n },\r\n {\r\n orgType: 'Service' as OrgType,\r\n roles: [OrgRoleType.DataSubmitter]\r\n },\r\n {\r\n orgType: 'Operator' as OrgType,\r\n roles: [OrgRoleType.DataSubmitter]\r\n },\r\n\r\n ]\r\n}","\r\nexport enum SystemRoles {\r\n Administrator = \"Admin\",\r\n}\r\n","import { OrgRole } from \"../organizations/org-role.model\";\r\nimport { FFUser } from \"./ff-user.model\";\r\nimport { OrgRoleType } from \"./org-role-type.enum\";\r\nimport { UserMappingWithRelatedOrgs } from \"./user-mapping-with-related-orgs.model\";\r\n\r\nexport class FFUserWithRoles extends FFUser {\r\n public roles: Array;\r\n public orgPermissions: Array;\r\n constructor(obj?: any) {\r\n super(obj);\r\n\r\n if (this.orgPermissions && this.orgPermissions.length > 0) {\r\n for (let x = 0; x < this.orgPermissions.length; x++) {\r\n this.orgPermissions[x] = new UserMappingWithRelatedOrgs(this.orgPermissions[x]);\r\n }\r\n }\r\n }\r\n\r\n public get isAdmin(): boolean {\r\n if (!this.roles || this.roles.length < 1) return false;\r\n return (this.roles.find(x => x == \"Admin\")!=null);\r\n }\r\n\r\n public getOrgRoles(orgId: string): Array {\r\n if (!this.orgPermissions || this.orgPermissions.length < 1 || !this.orgPermissions.some(x => x.organizationId.toLowerCase() == orgId.toLowerCase())) {\r\n return [OrgRoleType.None];\r\n }\r\n\r\n let matchingRoles = this.orgPermissions.filter(x => x.organizationId.toLowerCase() == orgId.toLowerCase()).map(y => y.OrgRole);\r\n return matchingRoles;\r\n }\r\n public get primaryOrgRoles() {\r\n let fullArr = this.orgPermissions.filter(x => x.organizationId == this.currentOrganizationId).map(y => y.orgRoleName);\r\n return fullArr.filter((n, i) => fullArr.indexOf(n) === i);;\r\n }\r\n public hasOrgRole(role: string) {\r\n let fullArr = this.orgPermissions.filter(x => x.organizationId == this.currentOrganizationId).map(y => y.orgRoleName);\r\n return fullArr.some(x => x === role);\r\n }\r\n}\r\n","import { Organization } from \"../organizations/organization.model\";\r\nimport { OrgRoleType } from \"./org-role-type.enum\";\r\nimport { UserMapping } from \"./user-mapping.model\";\r\n\r\nexport class FFUser {\r\n //[Required]\r\n //MaxLength(900)\r\n public id: string | undefined;\r\n //MaxLength(512)\r\n public userName: string | undefined;\r\n //MaxLength(512)\r\n public normalizedUserName: string | undefined;\r\n //MaxLength(512)\r\n public email: string | undefined;\r\n //MaxLength(512)\r\n public normalizedEmail: string | undefined;\r\n //[Required]\r\n public emailConfirmed: boolean | undefined;\r\n public passwordHash: string | undefined;\r\n public securityStamp: string | undefined;\r\n public concurrencyStamp: string | undefined;\r\n public phoneNumber: string | undefined;\r\n //[Required]\r\n public phoneNumberConfirmed: boolean | undefined;\r\n //[Required]\r\n public twoFactorEnabled: boolean | undefined;\r\n //MaxLength(10)\r\n public lockoutEnd: string | undefined;\r\n //[Required]\r\n public lockoutEnabled: boolean | undefined;\r\n //[Required]\r\n public accessFailedCount: number | undefined;\r\n //MaxLength(50)\r\n public firstName: string | undefined;\r\n //MaxLength(50)\r\n public lastName: string | undefined;\r\n //MaxLength(150)\r\n public primaryOrganizationId: string | undefined;\r\n //MaxLength(150)\r\n public currentOrganizationId: string | undefined;\r\n //MaxLength(200)\r\n public addressLine1: string | undefined;\r\n //MaxLength(200)\r\n public addressLine2: string | undefined;\r\n //MaxLength(150)\r\n public city: string | undefined;\r\n //MaxLength(2)\r\n public state: string | undefined;\r\n //MaxLength(5)\r\n public zip: string | undefined;\r\n public isActivated: boolean | undefined;\r\n public isCoRep: boolean | undefined;\r\n public isDenied: boolean | undefined;\r\n public deniedByAdmin: boolean | undefined;\r\n public pDFID: number | undefined;\r\n //MaxLength(16)\r\n public validationQuestionId: string | undefined;\r\n //MaxLength(150)\r\n public validationAnswer: string | undefined;\r\n //MaxLength(100)\r\n public createdBy: string | undefined;\r\n //MaxLength(8)\r\n public createdDate: string | undefined;\r\n //MaxLength(100)\r\n public lastModifiedBy: string | undefined;\r\n //MaxLength(8)\r\n public lastModifiedDate: string | undefined;\r\n public userMappings: UserMapping[] | undefined = [];\r\n public permissions: [] = [];\r\n public organization: string | undefined;\r\n public organizationType: string | undefined;\r\n public useEmailForTwoFA: boolean | undefined;\r\n public useMobileNumberForTwoFA: boolean | undefined;\r\n public mobilePhoneNumberForTwoFA: string | undefined;\r\n public isImpersonated: boolean | undefined;\r\n public officeRegion: string | undefined;\r\n public lastSuccessfulTwoFALogin: string | undefined;\r\n\r\n constructor(obj?: any) {\r\n if (obj) Object.assign(this, obj);\r\n }\r\n\r\n getPrimaryOrg(): Organization {\r\n return getUserOrgs(this).find(x => x.organizationId == this.primaryOrganizationId);\r\n }\r\n\r\n getCurrentOrg(): Organization {\r\n return getUserOrgs(this).find(x => x.organizationId == this.currentOrganizationId);\r\n }\r\n}\r\n\r\nexport function getUserOrgs(user: FFUser) {\r\n if (!user || !user.userMappings) return null;\r\n var orgs: Organization[] = [];\r\n\r\n user.userMappings\r\n .filter(m => (m && m.organization) && m.isActive)\r\n .forEach(({ organization }) => {\r\n const orgInList = !!orgs.find(x => x.organizationId == organization.organizationId)\r\n \r\n if(orgInList){ return }\r\n\r\n orgs.push(organization);\r\n })\r\n\r\n return orgs;\r\n}\r\n","\r\nexport enum OrgRoleType {\r\n User='User',\r\n DataSubmitter='DataSubmitter',\r\n Supervisor='Supervisor',\r\n Representative='Representative',\r\n Delete='Delete',\r\n None='None'\r\n}\r\n","import { OrgRoleType } from \"./org-role-type.enum\";\r\n\r\nexport class UserMappingWithRelatedOrgs {\r\n public organizationId: string;\r\n public organizationName: string;\r\n public isGovAgency: boolean;\r\n public isOperator: boolean;\r\n public isRegisteredAgent: boolean;\r\n public isServiceComp: boolean;\r\n public orgRoleName: string;\r\n public orgRoleId: string;\r\n public relationType: string;\r\n public operatorName: string;\r\n public operatorOrgId: string;\r\n public operatorNumber: string;\r\n\r\n constructor(obj?: UserMappingWithRelatedOrgs) {\r\n if (obj) {\r\n this.organizationId = obj.organizationId;\r\n this.organizationName = obj.organizationName;\r\n this.isGovAgency = obj.isGovAgency;\r\n this.isOperator = obj.isOperator;\r\n this.isRegisteredAgent = obj.isRegisteredAgent;\r\n this.isServiceComp = obj.isServiceComp;\r\n this.orgRoleName = obj.orgRoleName;\r\n this.orgRoleId = obj.orgRoleId;\r\n this.relationType = obj.relationType;\r\n this.operatorName = obj.operatorName;\r\n this.operatorOrgId = obj.operatorOrgId;\r\n this.operatorNumber = obj.operatorNumber;\r\n }\r\n }\r\n\r\n public get OrgRole(): OrgRoleType {\r\n if (this.orgRoleName == \"Supervisor\") return OrgRoleType.Supervisor;\r\n if (this.orgRoleName == \"DataSubmitter\") return OrgRoleType.DataSubmitter;\r\n if (this.orgRoleName == \"User\") return OrgRoleType.User;\r\n if (this.orgRoleName == \"Representative\") return OrgRoleType.Representative;\r\n if (this.orgRoleName == \"Delete\") return OrgRoleType.Delete;\r\n return OrgRoleType.None;\r\n }\r\n}\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { DomSanitizer } from \"@angular/platform-browser\";\r\n\r\n@Pipe({ name: 'safeHtml' })\r\nexport class SafeHtmlPipe implements PipeTransform {\r\n constructor(private sanitizer: DomSanitizer) {\r\n\r\n }\r\n transform(html: string) {\r\n return this.sanitizer.bypassSecurityTrustHtml(html);\r\n }\r\n}\r\n","import { Injectable, EventEmitter } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, BehaviorSubject, map } from 'rxjs';\r\nimport { TwoFALoginRequestModel } from '../models/two-fa-login-request.model';\r\nimport { TwoFACodeGenerateModel } from '../models/two-fa-code-generate-request.model';\r\nimport { FFUserWithRoles } from '../models/users/ff-user-with-roles.model';\r\nimport { TwoFACodeGenerateResponseModel } from '../models/two-fa-code-generate-response.model';\r\nimport { UserCommunicationDetail } from '../models/users/user-communication-detail';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n\r\n private warningTimeout: any;\r\n private logoutTimeout: any;\r\n private authTimeoutValue: any = null;\r\n //The number of minutes before the auto-logout to show the Warning message\r\n private warningTimer: number = 5;\r\n private warningToast: any;\r\n\r\n public authenticated: boolean = false;\r\n private infoRetrieved: boolean = false;\r\n private infoBeingFetched: boolean = false;\r\n public userInfo: FFUserWithRoles | null = null;\r\n\r\n public setTitle: BehaviorSubject = new BehaviorSubject('Water Wells Database');\r\n public userInfoEmitter: EventEmitter = new EventEmitter(true);\r\n\r\n constructor(\r\n private http: HttpClient\r\n ) {\r\n this.resetServiceState();\r\n }\r\n\r\n\r\n public get(): Observable {\r\n return this.http.get('/api/auth');\r\n }\r\n public getClaims(): Observable {\r\n return this.http.get('/api/auth/claims');\r\n }\r\n\r\n public login(login: any): Observable {\r\n return this.http.post('/api/auth/login', login);\r\n }\r\n\r\n public logout(logoutId: string, postLogoutRedirectUri: string = \"/\"): Observable {\r\n return this.http.post<{ iFrameUrl: string, postLogoutRedirectUri: string }>(`/api/auth/logout?logoutId=${logoutId}`, postLogoutRedirectUri);\r\n }\r\n\r\n public register(register: any): Observable {\r\n return this.http.post('/api/auth/register', register);\r\n }\r\n\r\n public confirmEmail(userId: string, code: string): Observable {\r\n return this.http.post(`/api/auth/confirmEmail?userId=${userId}&code=${code}`, null);\r\n }\r\n\r\n public forgotPassword(forgot: any): Observable {\r\n return this.http.post('/api/auth/forgotPassword', forgot);\r\n }\r\n\r\n public resetPassword(reset: any): Observable {\r\n return this.http.post('/api/auth/resetPassword', reset);\r\n }\r\n\r\n public resendEmailConfirmation(resend: any): Observable {\r\n return this.http.post('/api/auth/resendEmailConfirmation', resend);\r\n }\r\n\r\n public inviteUser(registerInfo: any): Observable {\r\n return this.http.post('/api/auth/invite', registerInfo);\r\n }\r\n\r\n public reInviteUser(registerInfo: any): Observable {\r\n return this.http.post('/api/auth/reinvite', registerInfo);\r\n }\r\n\r\n public submitTwoFaCode(twoFactorCode: TwoFALoginRequestModel): Observable {\r\n return this.http.post('/api/auth/submitTwoFaCode', twoFactorCode);\r\n }\r\n\r\n public resendTwoFACode(twoFactorCodeResendRequest: TwoFACodeGenerateModel): Observable {\r\n return this.http.post('/api/auth/resendTwoFaCode', twoFactorCodeResendRequest);\r\n }\r\n\r\n public getUserCommunicationModeDetails(userId: string): Observable {\r\n return this.http.get(`/api/auth/GetUserCommunicationModeDetails?userId=${userId}`);\r\n }\r\n \r\n public getUserInfo(forceRefetch: boolean = false): Promise {\r\n return new Promise((resolve, reject) => {\r\n if ((this.userInfo || this.infoRetrieved) && !forceRefetch) {\r\n this.authenticated = (this.userInfo != null && this.userInfo != undefined && this.userInfo.email != undefined && this.userInfo.email != \"\");\r\n resolve(this.userInfo);\r\n } else {\r\n if (!this.infoBeingFetched) {\r\n this.infoBeingFetched = true;\r\n this.http.get('/api/Auth/GetUserInfo').pipe(map(res => new FFUserWithRoles(res))).subscribe((response: any) => {\r\n this.userInfo = response;\r\n this.infoBeingFetched = false;\r\n this.infoRetrieved = true;\r\n if (this.userInfo && this.userInfo.id) {\r\n this.authenticated = true;\r\n }\r\n resolve(this.userInfo);\r\n this.userInfoEmitter.emit(this.userInfo);\r\n }, (error: any) => {\r\n this.infoBeingFetched = false;\r\n reject(error);\r\n });\r\n }\r\n else { \r\n this.checkForUpdatedInfo(resolve);\r\n }\r\n }\r\n });\r\n }\r\n\r\n private checkForUpdatedInfo(resolve: any) {\r\n if (this.infoBeingFetched) {\r\n setTimeout(() => {\r\n this.checkForUpdatedInfo(resolve);\r\n }, 1000);\r\n }\r\n else resolve(this.userInfo);\r\n }\r\n\r\n public hasRole(role: string): boolean {\r\n if (!this.userInfo) return false;\r\n return this.userInfo.isAdmin;\r\n }\r\n\r\n public hasPermission(permission: string): boolean {\r\n if (!this.userInfo) {\r\n return false;\r\n }\r\n for (let i = 0; i < this.userInfo.permissions.length; i++) {\r\n if (this.userInfo.permissions[i] === permission) { return true; }\r\n }\r\n return false;\r\n }\r\n\r\n public updatePassword(update: any): Observable {\r\n return this.http.post('/api/auth/updatePassword', update);\r\n }\r\n\r\n public resetServiceState(): void {\r\n this.infoRetrieved = false;\r\n this.authenticated = false;\r\n this.infoBeingFetched = false;\r\n this.userInfo = null;\r\n }\r\n\r\n public impersonateLogin(email: string) {\r\n return this.http.get(`/api/Impersonation/Login?email=${email}`);\r\n }\r\n\r\n public impersonateLogout() {\r\n return this.http.get(`/api/Impersonation/Logout`);\r\n }\r\n\r\n public unlockUser(email: string) {\r\n return this.http.get(`/api/auth/unlockUser?email=${email}`);\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, Subscription } from 'rxjs';\r\nimport { LoggingService } from './logging.service';\r\nimport { Status } from \"../models/lookup/status.model\";\r\nimport { PatchOperation } from '../models/patch-operation.model';\r\nimport { WaterSource } from '../models/disclosures/water-source.model';\r\nimport { Disclosure } from '../models/disclosures/disclosure.model';\r\nimport { DisclosureValidationStatement } from '../models/disclosures/disclosure-validation-statement.model';\r\nimport { DownloadFilter } from '../models/disclosures/download-filter.model';\r\nimport { DashboardDisclosure } from '../models/disclosures/dashboard-disclosure.model';\r\nimport { OperatorApprovalDisclosure } from '../models/disclosures/operator-approval-disclosure.model';\r\n\r\n@Injectable()\r\nexport class DisclosureService {\r\n private states: any[] = [];\r\n private counties: any[] = [];\r\n dStatus: Array = [];\r\n constructor(private http: HttpClient, private loggingService: LoggingService) { }\r\n\r\n public getStatuss(): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.dStatus && this.dStatus.length) {\r\n resolve(this.dStatus);\r\n } else {\r\n this.http.get('/api/Dropdown/AllStatus').subscribe((response: any) => {\r\n this.dStatus = response;\r\n resolve(this.dStatus);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting status list\", \"Error getting status list: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public getMyCompanyOrgDisclosures(orgId: string): Observable {\r\n return this.http.get(`/api/Disclosure/MyOrganizationsDisclosures/${orgId}`);\r\n }\r\n\r\n public GetMyDisclosuresForOperatorApprovalsAsync(orgId: string): Observable {\r\n return this.http.get(`/api/Disclosure/MyOrganizationsOperatorApprovalDisclosures/${orgId}`);\r\n }\r\n\r\n public GetMyCompanyDisclosure(orgId: string, disclosureId: string): Observable {\r\n return this.http.get(`/api/Disclosure/GetMyCompanyDisclosure/${orgId}/${disclosureId}`);\r\n }\r\n\r\n public ValidateMyCompanyDisclosure(orgId: string, disclosureId: string): Observable {\r\n return this.http.get(`/api/Disclosure/ValidateMyCompanyDisclosure/${orgId}/${disclosureId}`);\r\n }\r\n\r\n public patchDisclosure(orgId: string, disclosureId: string, disclosurePatches: PatchOperation[]): Observable {\r\n return this.http.patch(`/api/Disclosure/MyDisclosureUpdate/${orgId}/${disclosureId}`, disclosurePatches);\r\n }\r\n\r\n public postDisclosure(orgId: string, operatorId: string, disclosure: Disclosure): Observable {\r\n return this.http.post(`/api/Disclosure/AddMyDisclosure/${orgId}/${operatorId}`, disclosure);\r\n }\r\n\r\n public addMyWaterSource(orgId:string, disclosureId:string, ws:any): Observable {\r\n return this.http.post(`/api/Disclosure/AddMyDisclosureWaterSource/${orgId}/${disclosureId}`, ws);\r\n }\r\n\r\n public patchMyWaterSource(orgId: string, disclosureId: string, waterSourceId: string, ws: PatchOperation[]): Observable {\r\n return this.http.patch(`/api/Disclosure/MyWaterSourceUpdate/${orgId}/${disclosureId}/${waterSourceId}`, ws);\r\n }\r\n\r\n public deleteDisclosure(disclosureId: string ): Observable {\r\n return this.http.delete(`/api/Disclosure/${disclosureId}`);\r\n }\r\n\r\n public rollBackMyDisclosure(orgId: string, disclosureId: string): Observable {\r\n return this.http.get(`/api/Disclosure/RollbackMyDisclosure/${orgId}/${disclosureId}`);\r\n }\r\n\r\n public updateMyDisclosureOperator(orgId: string, disclosureId: string, newOperatorOrgId: string): Observable{\r\n return this.http.get(`/api/Disclosure/UpdateMyDisclosureOperator/${orgId}/${disclosureId}/${newOperatorOrgId}`);\r\n\r\n }\r\n\r\n public SetMyDisclosureToAmending(orgId: string, disclosureId: string): Observable {\r\n return this.http.get(`/api/Disclosure/SetMyDisclosureToAmending/${orgId}/${disclosureId}`);\r\n }\r\n public SetMyDisclosureToSubmitted(orgId: string, disclosureId: string): Observable {\r\n return this.http.get(`/api/Disclosure/SetMyDisclosureToSubmitted/${orgId}/${disclosureId}`);\r\n }\r\n public TransferMyDisclosureToOperator(orgId: string, disclosureId: string, direct: boolean = false): Observable {\r\n return this.http.get(`/api/Disclosure/TransferMyDisclosureToOperator/${orgId}/${disclosureId}?direct=${direct}`);\r\n }\r\n public TransferMyDisclosuresToOperator(data: any, direct: boolean = false): Observable {\r\n return this.http.post(`/api/Disclosure/TransferMyDisclosuresToOperator/?direct=${direct}`, data);\r\n }\r\n\r\n public validateDisclosureApiNumber(jobStartDate: Date, jobEndDate: Date, apiNumber: string): Observable {\r\n return this.http.get(`/api/Disclosure/ValidateDisclosureApiNumber/${jobStartDate}/${jobEndDate}/${apiNumber}`);\r\n }\r\n\r\n public filteredXMLDownloadCount(orgId: string, filter: DownloadFilter): Observable {\r\n return this.http.post(`/api/Download/DownloadFilteredXMLCount/${orgId}`, filter);\r\n }\r\n public filteredXMLDownload(orgId: string, filter: DownloadFilter) {\r\n return this.http.post(`/api/Download/DownloadFilteredXML/${orgId}`, filter, { observe: 'body', responseType: 'text' });\r\n }\r\n public filteredCSVDownload(orgId: string, filter: DownloadFilter) {\r\n return this.http.post(`/api/Download/DownloadFilteredCSV/${orgId}`, filter, { observe: 'body', responseType: 'text' });\r\n }\r\n public filteredCSVDownload2(orgId: string, filter: DownloadFilter) {\r\n return this.http.post(`/api/Download/DownloadFilteredWaterCSV/${orgId}`, filter, { observe: 'body', responseType: 'text' });\r\n } \r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { Status } from \"../models/lookup/status.model\";\r\nimport { ClientConfig } from '../models/client-config.model';\r\nimport { OrganizationDefault } from '../models/organizations/organization-defaults.model';\r\nimport { AnalyticsOptions } from '../models/analytics-options.model';\r\nimport { LoggingService } from './logging.service';\r\nimport { BasicNotification } from '../../admin/models/notifications/basic-notification.model';\r\nimport { StateShort } from '../models/lookup/state-short.model';\r\n\r\n@Injectable()\r\nexport class DropdownService {\r\n private wellTypes: any[] = [];\r\n private waterSourceTypes: any[] = [];\r\n private states: any[] = [];\r\n private counties: any[] = [];\r\n AllStatus: Array = [];\r\n private clientConfig: ClientConfig = null;\r\n private organizationDefaults: OrganizationDefault[] = null;\r\n private _analyticsOptions: AnalyticsOptions = null;\r\n private globalDefaults: any[] | null = null;\r\n public currentBasicNotifications: BasicNotification[] | null = null;\r\n public setBasicNotifications: BehaviorSubject = new BehaviorSubject([]);\r\n constructor(private http: HttpClient, private loggingService: LoggingService) { }\r\n\r\n public getAnalyticsOptions(forceRefetch: boolean = false): Promise {\r\n\r\n return new Promise((resolve, reject) => {\r\n if (this._analyticsOptions && !forceRefetch) {\r\n resolve(this._analyticsOptions);\r\n } else {\r\n this.http.get('/api/Dropdown/AnalyticsOptions').subscribe((response: AnalyticsOptions) => {\r\n this._analyticsOptions = response;\r\n resolve(this._analyticsOptions);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting Analytics Options\", \"Error getting Analytics Options: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public getStatus(): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.AllStatus && this.AllStatus.length) {\r\n resolve(this.AllStatus);\r\n } else {\r\n this.http.get('/api/Dropdown/AllStatus').subscribe((response: any) => {\r\n this.AllStatus = response;\r\n resolve(this.AllStatus);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting status list\", \"Error getting status list: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n public getCounties(forceRefetch: boolean = false): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.counties && this.counties.length && !forceRefetch) {\r\n resolve(this.counties);\r\n } else {\r\n this.http.get('/api/Dropdown/AllCounties').subscribe((response: any) => {\r\n this.counties = response;\r\n resolve(this.counties);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting county list\", \"Error getting county list: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n public getStates(forceRefetch: boolean = false): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.states && this.states.length && !forceRefetch) {\r\n resolve(this.states);\r\n } else {\r\n this.http.get('/api/Dropdown/AllStates').subscribe((response: any) => {\r\n this.states = response;\r\n this.states?.sort(function(a, b) {\r\n var stateA = a.stateName.toUpperCase();\r\n var stateB = b.stateName.toUpperCase();\r\n if (stateA < stateB) {\r\n return -1;\r\n }\r\n if (stateA > stateB) {\r\n return 1;\r\n }\r\n return 0;\r\n });\r\n resolve(this.states);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting state list\", \"Error getting state list: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n public getWellTypes(forceRefetch: boolean = false): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.wellTypes && this.wellTypes.length && !forceRefetch) {\r\n resolve(this.wellTypes);\r\n } else {\r\n this.http.get('/api/Dropdown/AllWellTypes').subscribe((response: any) => {\r\n this.wellTypes = response;\r\n resolve(this.wellTypes);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting Well Types list\", \"Error getting WellTypes list: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n public getWaterSourceTypes(forceRefetch: boolean = false): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.waterSourceTypes && this.waterSourceTypes.length && !forceRefetch) {\r\n resolve(this.waterSourceTypes);\r\n } else {\r\n this.http.get('/api/Dropdown/AllWaterSourceTypes').subscribe((response: any) => {\r\n this.waterSourceTypes = response;\r\n resolve(this.waterSourceTypes);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting WaterSourceTypes list\", \"Error getting WaterSourceTypes list: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n public getClientConfig(forceRefetch: boolean = false): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (this.clientConfig && !forceRefetch) {\r\n resolve(this.clientConfig);\r\n } else {\r\n this.http.get('/api/Dropdown/ClientConfig').subscribe((response: ClientConfig) => {\r\n this.clientConfig = response;\r\n resolve(this.clientConfig);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting Client Configuration\", \"Error getting ClientConfig: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public getOrganizationDefaults(organizationId: string, forceRefetch: boolean = false): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (this.organizationDefaults && !forceRefetch) {\r\n resolve(this.organizationDefaults);\r\n } else {\r\n this.http.get(`/api/Dropdown/OrganizationDefaults/${organizationId}`).subscribe((response: OrganizationDefault[]) => {\r\n this.organizationDefaults = response;\r\n resolve(this.organizationDefaults);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting organization defaults\", \"Error getting OrganizationDefaults: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n public getCountyAtLocation(lon:number, lat:number) {\r\n return this.http.get(`/api/Dropdown/CountyAtLocation/${lon}/${lat}`);\r\n }\r\n public getCountyByAPINum(apiNum: string) {\r\n return this.http.get(`/api/Dropdown/CountyByAPINum/${apiNum}`);\r\n }\r\n public getCalculatedPoint(lon: number, lat: number, proj:string) {\r\n return this.http.get(`/api/Dropdown/ProjectPoint/${proj}/${lon}/${lat}`);\r\n }\r\n\r\n public getGlobalDefaults(forceRefetch: boolean = false): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (this.globalDefaults && !forceRefetch) {\r\n resolve(this.globalDefaults);\r\n } else {\r\n this.http.get('/api/Dropdown/GlobalDefaults').subscribe((response: any) => {\r\n this.globalDefaults = response;\r\n resolve(this.globalDefaults);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting Global Defaults\", \"Error getting Global Defaults: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public getCurrentBasicNotifications(forceRefetch: boolean = false): Promise {\r\n return new Promise((resolve, reject) => {\r\n if (this.currentBasicNotifications && !forceRefetch) {\r\n resolve(this.currentBasicNotifications);\r\n } else {\r\n this.http.get('/api/Dropdown/CurrentBasicNotifications').subscribe((response: BasicNotification[]) => {\r\n this.currentBasicNotifications = response;\r\n this.setBasicNotifications.next(response);\r\n resolve(this.currentBasicNotifications);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting Current Basic Notifications\", \"Error getting Current Basic Notifications: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpEvent, HttpRequest } from '@angular/common/http';\r\nimport { Observable, map } from 'rxjs';\r\nimport { LoggingService } from './logging.service';\r\nimport { FracJob } from '../models/disclosures/frac-job.model';\r\n\r\n@Injectable()\r\nexport class FileService {\r\n\r\n constructor(private http: HttpClient, _logginService: LoggingService) {\r\n //replaced bootstrap toastr service here, although it's not being used yet\r\n //to call use something like this: this._logginService.info(\"INFO: auto hides after 2 seconds\", null);\r\n }\r\n\r\n uploadNewXmlDisclosure(orgid: string, operatorId:string, file: File,\r\n location: string = `/api/file/UploadDisclosureXML/${orgid}/${operatorId}`): Observable> {\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('file', file);\r\n\r\n const req = new HttpRequest('POST', location, formData, {\r\n reportProgress: true,\r\n responseType: 'json'\r\n });\r\n\r\n return this.http.request(req);\r\n }\r\n\r\n uploadXmlForExistingDisclosure(orgId: string, disclosureId: string, behaviour: string, file: File,\r\n location: string = `/api/file/UploadExistingDisclosureXML/${orgId}/${disclosureId}/${behaviour}`): Observable> {\r\n const formData: FormData = new FormData();\r\n\r\n formData.append('file', file);\r\n\r\n const req = new HttpRequest('POST', location, formData, {\r\n reportProgress: true,\r\n responseType: 'json'\r\n });\r\n\r\n return this.http.request(req);\r\n }\r\n public admingenerateDisclosurePdf(orgId: string, disclosureId: string) {\r\n return this.http.get(`/api/file/adminGenerateDisclosurePdf/${orgId}/${disclosureId}`, { observe: 'response', responseType: 'blob' });\r\n }\r\n public generateDisclosurePdf(orgId: string, disclosureId: string) {\r\n return this.http.get(`/api/file/GenerateDisclosurePdf/${orgId}/${disclosureId}`, {observe:'response', responseType:'blob'});\r\n }\r\n\r\n public getDisclosurePdf(disclosureId: string) {\r\n return this.http.get(`/api/file/GetDisclosurePdf/${disclosureId}`, {observe:'response', responseType:'blob'});\r\n }\r\n\r\n public generateDisclosureXml(orgId: string, disclosureId: string): Observable{\r\n return this.http.get(`/api/file/GenerateDisclosureXml/${orgId}/${disclosureId}`, { observe: 'body', responseType: 'text' })\r\n .pipe(\r\n map(res => new Blob([res as string], { type: 'text' }))\r\n );\r\n }\r\n\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable } from 'rxjs';\r\nimport { LoggingService } from './logging.service';\r\nimport { PatchOperation } from '../models/patch-operation.model';\r\nimport { ThirdPartyPurpose } from '../models/disclosures/3rd-party-purpose';\r\nimport { ThirdPartyIngredient } from '../models/disclosures/3rd-party-ingredient';\r\nimport { Purpose } from '../models/disclosures/purpose.model';\r\nimport { Ingredient } from '../models/disclosures/ingredient.model';\r\nimport { CASNumber } from '../models/disclosures/cas-number.model';\r\nimport { CASNumberShort } from '../models/disclosures/cas-number-short.model';\r\nimport { CasNumberWithIngredientCounts } from '../models/disclosures/cas-number-with-ingredient-counts.model';\r\nimport { CASNumberSynonym } from '../models/disclosures/cas-number-synonym.model';\r\nimport { isNotNullOrEmpty } from '../functions/is-not-null-or-empty.function';\r\nimport { CasNumberSynonymWithUseCount } from '../models/disclosures/cas-number-synonym-with-use-count.model';\r\n\r\n@Injectable()\r\nexport class IngredientService {\r\n constructor(private http: HttpClient, private loggingService: LoggingService) { }\r\n public ValidateCASNumberFormat(cn: string) {\r\n return this.http.get(`/api/Ingredient/ValidateCASNumberFormat/${cn}`);\r\n }\r\n public GetAllCASNumbers() {\r\n return this.http.get(`/api/Ingredient/GetAllCASNumbers/`);\r\n }\r\n public GetAllShortCASNumbers() {\r\n return this.http.get(`/api/Ingredient/GetAllShortCASNumbers/`);\r\n }\r\n public GetAllCasNumbersWithIngredientCounts() {\r\n return this.http.get(`/api/Ingredient/GetAllCasNumbersWithIngredientCounts/`);\r\n }\r\n public GetCASNumbersByPartial(cn: string) {\r\n return this.http.get(`/api/Ingredient/GetCASNumbersByPartial/${cn}`);\r\n }\r\n public GetCasNumberSynonymsByCasNumberId(casNumberId: string) {\r\n return this.http.get(`/api/Ingredient/GetCasNumberSynonymsByCasNumberId/${casNumberId}`);\r\n }\r\n public GetAllCasNumberSynonyms() : Observable{\r\n return this.http.get(`/api/Ingredient/GetAllCasNumberSynonyms/`);\r\n }\r\n public SetCasNumberSynonymAsCommonName(casNumberSynonymIdToSetAsCommonName: string) {\r\n return this.http.post(`/api/Ingredient/SetCasNumberSynonymAsCommonName/${casNumberSynonymIdToSetAsCommonName}`, null);\r\n }\r\n public patchCasNumber(casNumberId: string, patch: PatchOperation[]): Observable {\r\n return this.http.patch(`/api/Ingredient/UpdateCasNumber/${casNumberId}`, patch);\r\n }\r\n public patchCasNumberSynonym(casNumberSynonymId: string, patch: PatchOperation[]): Observable {\r\n return this.http.patch(`/api/Ingredient/UpdateCasNumberSynonym/${casNumberSynonymId}`, patch);\r\n }\r\n public GetAllIngredients(): Observable {\r\n return this.http.get(`/api/Ingredient/GetAllIngredients/`);\r\n }\r\n public GetIngredientsByCasNumber(casNumber: string): Observable {\r\n return this.http.get(`/api/Ingredient/GetIngredientsByCasNumber/${casNumber}`);\r\n }\r\n public get3rdPartyPurposes(orgId: string): Observable {\r\n return this.http.get(`/api/Ingredient/GetMy3rdPartyPurposes/${orgId}`);\r\n }\r\n public RenewMy3rdPartyPurpose(orgId: string, purposeId: string): Observable {\r\n return this.http.get(`/api/Ingredient/RenewMy3rdPartyPurpose/${orgId}/${purposeId}`);\r\n }\r\n public addMy3rdPartyPurpose(orgId: string, purpose: ThirdPartyPurpose): Observable> {\r\n return this.http.post>(`/api/Ingredient/AddMy3rdPartyPurpose/${orgId}`, purpose);\r\n }\r\n public putMy3rdPartyPurpose(orgId: string, purpose: ThirdPartyPurpose): Observable {\r\n return this.http.put(`/api/Ingredient/UpdateMy3rdPartyPurpose/${orgId}`, purpose);\r\n }\r\n public patchMy3rdPartyPurpose(orgId: string, refThirdPartyPurposeId: string, patch: PatchOperation[]): Observable {\r\n return this.http.patch(`/api/Ingredient/UpdateMyThirdPartyPurpose/${orgId}/${refThirdPartyPurposeId}`, patch);\r\n }\r\n public addMy3rdPartyIngredient(orgId: string, ingredient: ThirdPartyIngredient): Observable {\r\n return this.http.post(`/api/Ingredient/AddMy3rdPartyIngredient/${orgId}`, ingredient);\r\n }\r\n public putMy3rdPartyIngredient(orgId: string, ingredient: ThirdPartyIngredient): Observable {\r\n return this.http.put(`/api/Ingredient/UpdateMy3rdPartyIngredient/${orgId}`, ingredient);\r\n }\r\n public patchMy3rdPartyIngredient(orgId: string, refThirdPartyIngredientId: string, patch: PatchOperation[]): Observable {\r\n return this.http.patch(`/api/Ingredient/UpdateMyThirdPartyIngredient/${orgId}/${refThirdPartyIngredientId}`, patch);\r\n }\r\n public addPurposeToDisclosure(orgId: string, dislosureId: string, purpose: any): Observable {\r\n return this.http.post(`/api/Ingredient/AddMyDisclosurePurpose/${orgId}/${dislosureId}`, purpose);\r\n }\r\n public addIngredientToPurpose(orgId: string, purposeId: string, ingredient: any): Observable {\r\n return this.http.post(`/api/Ingredient/AddMyDisclosureIngredient/${orgId}/${purposeId}`, ingredient);\r\n }\r\n public putMyPurpose(orgId: string, disclosureId: string, purposeId: string, purpose: Purpose): Observable {\r\n return this.http.put(`/api/Ingredient/UpdateMyDisclosurePurpose/${orgId}/${disclosureId}/${purposeId}`, purpose);\r\n }\r\n public putMyIngredient(orgId: string, ingredientId: string, purposeId: string, ingredient: Ingredient): Observable {\r\n return this.http.put(`/api/Ingredient/UpdateMyDisclosureIngredient/${orgId}/${ingredientId}/${purposeId}`, ingredient);\r\n }\r\n public patchMyPurpose(orgId: string, disclosureId: string, purposeId: string, patch: PatchOperation[]): Observable {\r\n return this.http.patch(`/api/Ingredient/UpdateMyDisclosurePurpose/${orgId}/${disclosureId}/${purposeId}`, patch);\r\n }\r\n public patchMyIngredient(orgId: string, ingredientId: string, purposeId: string, patch: PatchOperation[]): Observable {\r\n return this.http.patch(`/api/Ingredient/UpdateMyDisclosureIngredient/${orgId}/${ingredientId}/${purposeId}`, patch);\r\n }\r\n public deleteThirdPartyIngredient(ingredientId:string):Observable{\r\n return this.http.delete(`/api/Ingredient/DeleteThirdPartyIngredient/${ingredientId}`);\r\n }\r\n public deleteThirdPartyPurpose(ingredientId:string):Observable{\r\n return this.http.delete(`/api/Ingredient/DeleteThirdPartyPurpose/${ingredientId}`);\r\n }\r\n public readonly validCASAlternatives = [\"confidential\",\"trade secret\",\"proprietary\",\"cas not assigned\"];\r\n public isFracCasValid(cn: string): boolean {\r\n if (isNotNullOrEmpty(cn)) {\r\n if (this.validCASAlternatives.filter(x => x.toLowerCase() == cn.toLowerCase()).length > 0) return true;\r\n return this.isCasValid(cn);\r\n }\r\n else return false;\r\n }\r\n\r\n //https://metamolecular.com/blog/2013/10/11/validating-cas-numbers-in-javascript/\r\n fullCasRegex = /([0-9]{2,7})-([0-9]{2})-[0-9]/;\r\n isCasValid(cas: string) {\r\n if (!cas.match(this.fullCasRegex)) {\r\n return false;\r\n }\r\n\r\n return this.getCheckDigit(cas).toString() === cas.slice(-1);\r\n }\r\n getCheckDigit(cas: string) {\r\n var match = cas.match(/([0-9]{2,7})-([0-9]{2})-[0-9]/);\r\n var digits = (match[1] + match[2]).split('').reverse();\r\n var sum = 0;\r\n\r\n for (var i = 0; i < digits.length; i++) {\r\n sum += (i + 1) * parseInt(digits[i]);\r\n }\r\n\r\n return sum % 10;\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { ToasterType, ToasterService } from 'ui-library-shared';\r\n\r\n@Injectable()\r\nexport class LoggingService {\r\n\r\n private _toasterDuration = 5000;\r\n private _toasterAutoClose = true;\r\n\r\n constructor(private http: HttpClient, private _toasterService: ToasterService) {\r\n }\r\n\r\n public success(message: string, detailedString: string | null = null, autoClose: boolean = this._toasterAutoClose, duration: number = this._toasterDuration) {\r\n this.shownotification(message, ToasterType.SUCCESS, autoClose, duration);\r\n if (detailedString == null) detailedString = message;\r\n this.logInfo(detailedString);\r\n }\r\n\r\n public debug(message: string, detailedString: string | null = null, autoClose: boolean = this._toasterAutoClose, duration: number = this._toasterDuration) {\r\n this.shownotification(message, ToasterType.INFO, autoClose, duration);\r\n if (detailedString == null) detailedString = message;\r\n this.logDebug(detailedString);\r\n }\r\n public info(message: string, detailedString: string | null = null, autoClose: boolean = this._toasterAutoClose, duration: number = this._toasterDuration) {\r\n this.shownotification(message, ToasterType.INFO, autoClose, duration);\r\n if (detailedString == null) detailedString = message;\r\n this.logInfo(detailedString);\r\n }\r\n public warning(message: string, detailedString: string | null = null, autoClose: boolean = this._toasterAutoClose, duration: number = this._toasterDuration) {\r\n this.shownotification(message, ToasterType.WARNING, autoClose, duration);\r\n if (detailedString == null) detailedString = message;\r\n this.logWarning(detailedString);\r\n }\r\n public error(message: string, detailedString: string | null = null, autoClose: boolean = this._toasterAutoClose, duration: number = this._toasterDuration) {\r\n this.shownotification(message, ToasterType.ERROR, autoClose, duration);\r\n if (detailedString == null) detailedString = message;\r\n this.logError(detailedString);\r\n }\r\n public errorSilent(message: string, detailedString: string | null = null) {\r\n if (detailedString == null) detailedString = message;\r\n this.logError(detailedString);\r\n }\r\n\r\n logDebug(message: string) {\r\n this.postLog('debug', message);\r\n }\r\n logInfo(message: string) {\r\n this.postLog('info', message);\r\n }\r\n logWarning(message: string) {\r\n console.warn(\"Log message: \" + message);\r\n this.postLog('warning', message);\r\n }\r\n logError(message: string) {\r\n console.error(\"Log message: \" + message);\r\n this.postLog('error', message);\r\n }\r\n\r\n\r\n\r\n private postLog(level: string, message: string) {\r\n this.http.post(`/api/Log/${level}`, { value: message }).subscribe(res => { }, err => {\r\n console.error(\"Error logging log \", err);\r\n });\r\n }\r\n\r\n private shownotification(text: string, type: ToasterType, autoClose: boolean, duration: number): void {\r\n switch (type) {\r\n case ToasterType.ERROR:\r\n this._toasterService.error(text, duration, autoClose);\r\n break;\r\n case ToasterType.INFO:\r\n this._toasterService.info(text, duration, autoClose);\r\n break;\r\n case ToasterType.SUCCESS:\r\n this._toasterService.success(text, duration, autoClose);\r\n break;\r\n case ToasterType.WARNING:\r\n this._toasterService.warning(text, duration, autoClose);\r\n break;\r\n default:\r\n console.log(\"missed case in main.service.ts > showToast, type: \" + type);\r\n }\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Organization } from '../models/organizations/organization.model';\r\nimport { OrgType, PermittedRoles } from '../models/perimitted-roles.model';\r\nimport { FFUserWithRoles } from '../models/users/ff-user-with-roles.model';\r\nimport { OrgRoleType } from '../models/users/org-role-type.enum';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PermissionsService {\r\n\r\n constructor() { }\r\n\r\n public canUserAccess(user: FFUserWithRoles, requiredRoles: PermittedRoles[], blockedRoles: PermittedRoles[] = []): boolean{\r\n \r\n //Find the permission with the users primary organization \r\n let matchingRoles = this.getMatchingRoles(user, requiredRoles);\r\n\r\n let matchingBlockedRoles = this.getMatchingRoles(user, blockedRoles);\r\n\r\n //Check if they have any of the required roles\r\n const isPermitted = matchingRoles.some(role => user.hasOrgRole(role.toString())) && !matchingBlockedRoles.some(role => user.hasOrgRole(role.toString()));\r\n return isPermitted;\r\n }\r\n\r\n private getMatchingRoles(user: FFUserWithRoles, roles: PermittedRoles[]): Array {\r\n return roles.filter(p => this.userHasOrgType(p.orgType, user.getCurrentOrg()))\r\n .map(r => r.roles)\r\n .flat();\r\n }\r\n\r\n private userHasOrgType(orgType: OrgType, primaryOrg: Organization): boolean{\r\n\r\n if (primaryOrg) {\r\n switch (orgType) {\r\n case 'RegisteredAgent':\r\n return primaryOrg.isRegisteredAgent;\r\n case 'Service':\r\n return primaryOrg.isServiceComp;\r\n case 'Operator':\r\n return primaryOrg.isOperator;\r\n }\r\n }\r\n else {\r\n return false;\r\n }\r\n }\r\n}\r\n","import { Injectable, HostListener } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { map, Observable, of, tap } from 'rxjs';\r\nimport { LoggingService } from '../../common/services/logging.service';\r\nimport { CaptchaSettings } from '../models/captcha-settings.model';\r\nimport { ReCaptchaV3Service } from 'ng-recaptcha';\r\nimport { CreateAssessmentRequestModel } from '../models/create-assessment-request.model';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReCaptchaService {\r\n\r\n captchaSettings: CaptchaSettings | null = null;\r\n\r\n constructor(\r\n private http: HttpClient,\r\n private loggingService: LoggingService,\r\n private recaptchaV3Service: ReCaptchaV3Service\r\n ) {\r\n }\r\n\r\n //This isn't going to change, so once fetched, keep it.\r\n public getCaptchaSettings(forceRefresh: boolean = false): Observable {\r\n if (this.captchaSettings && !forceRefresh) {\r\n return of(this.captchaSettings);\r\n }\r\n else {\r\n return this.http.get(`/api/recaptcha/captchasettings`).pipe(tap(res => this.captchaSettings = res));\r\n }\r\n }\r\n\r\n public createAssessment(createAssessmentRequest: CreateAssessmentRequestModel): Observable {\r\n return this.http.post(`/api/recaptcha/createassessment`, createAssessmentRequest);\r\n }\r\n\r\n public requestToken(action: string): Observable {\r\n return this.recaptchaV3Service.execute(action);\r\n }\r\n\r\n}\r\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { Report } from '../../admin/models/reports/report.model';\r\nimport { SimpleReport } from '../../admin/models/reports/simple-report.model';\r\nimport { LoggingService } from '../../common/services/logging.service';\r\nimport { DownloadFilter } from '../models/disclosures/download-filter.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ReportsService {\r\n constructor(private http: HttpClient, private loggingService: LoggingService) {\r\n\r\n }\r\n public getReportOptions(reportType: string) {\r\n return this.http.get(`/api/report/GetReportOptionsByReportType/${reportType}`);\r\n }\r\n public getAvailableReportsBasic(orgId: string) {\r\n return this.http.get(`/api/report/GetSimpleReportOptions/${orgId}`);\r\n }\r\n public getAvailableAdminReportsBasic() {\r\n return this.http.get(`/api/report/GetAdminReportOptions`);\r\n }\r\n public getAvailableReports(orgId: string) {\r\n return this.http.get(`/api/report/GetReportOptions/${orgId}`);\r\n }\r\n public getReportData(reportType: string, df: DownloadFilter) {\r\n return this.http.post(`/api/report/GetReportData/${reportType}`, df);\r\n }\r\n}\r\n","import { Injectable, HostListener } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { Observable, Subject, BehaviorSubject, mergeMap, map } from 'rxjs';\r\nimport { FFUser } from '../models/users/ff-user.model';\r\nimport { OrganizationShort } from '../../admin/models/organizations/organization-short.model';\r\nimport { FFUserShort } from '../models/users/ff-user-short.model';\r\nimport { Organization } from '../models/organizations/organization.model';\r\nimport { OrganizationRelation } from '../models/organizations/organization-relation.model';\r\nimport { OrgRole } from '../models/organizations/org-role.model';\r\nimport { UserMapping } from '../models/users/user-mapping.model';\r\nimport { OrgRelationType } from \"../models/users/org-relation-type.model\";\r\nimport { LoggingService } from './logging.service';\r\nimport { FFUserWithRoles } from '../models/users/ff-user-with-roles.model';\r\nimport { OrganizationDefault } from '../models/organizations/organization-defaults.model';\r\nimport { FFUserFlat } from '../models/users/ff-user-flat.model';\r\nimport { OrgRegistration } from '../models/users/org-registration.model';\r\n\r\n//import { ApplicationUser } from '../../models/ApplicationUser.model';\r\n\r\n@Injectable()\r\nexport class UserService {\r\n\r\n private warningTimeout: any;\r\n private logoutTimeout: any;\r\n private authTimeoutValue: any = null;\r\n //The number of minutes before the auto-logout to show the Warning message\r\n private warningTimer: number = 5;\r\n private warningToast: any;\r\n private baseRoute: string = '/api/User';\r\n public authenticated: boolean = false;\r\n private infoRetrieved = false;\r\n public userInfo!: FFUserWithRoles;\r\n public orgs: any[] | null = null;\r\n public usrs: FFUserFlat[] | null = null;\r\n public registrations: OrgRegistration[] | null = null;\r\n private orgRoles: OrgRole[];\r\n private organizationDefaults: OrganizationDefault[];\r\n private orgRelTypes: OrgRelationType[];\r\n constructor(\r\n private http: HttpClient,\r\n private loggingService: LoggingService\r\n //private loggingService: LoggingService,\r\n //private toastr: ToastrService\r\n ) {\r\n }\r\n\r\n\r\n public get(): Observable {\r\n return this.http.get('/api/User');\r\n }\r\n\r\n public getOrgRelationTypes(): Promise {\r\n return new Promise((resolve, reject) => {\r\n if ((this.orgRelTypes && this.orgRelTypes.length)) {\r\n resolve(this.orgRelTypes);\r\n } else {\r\n this.http.get('/api/User/OrgRelationTypes').subscribe((response: any) => {\r\n this.orgRelTypes = response;\r\n resolve(this.orgRelTypes);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting Organization Roles\", \"Error getting org Roles: \" + error);\r\n reject(error);\r\n });\r\n }\r\n});\r\n }\r\n\r\n public getOrgRoles(): Promise {\r\n return new Promise((resolve, reject) => {\r\n if ((this.orgRoles && this.orgRoles.length)) {\r\n resolve(this.orgRoles);\r\n } else {\r\n this.http.get('/api/User/OrgRoles').subscribe((response: any) => {\r\n this.orgRoles = response;\r\n resolve(this.orgRoles);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting Organization Roles\", \"Error getting org Roles: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public getUserById(userId: string): Observable {\r\n return this.http.get(`${this.baseRoute}/User/${userId}`);\r\n }\r\n\r\n public getUserByEmail(email: string): Observable {\r\n return this.http.get(`${this.baseRoute}/UserByEmail/${email}`);\r\n }\r\n\r\n public getOrganizationDefaults(orgId: string): Promise {\r\n return new Promise((resolve, reject) => {\r\n if ((this.organizationDefaults && this.organizationDefaults.length)) {\r\n resolve(this.organizationDefaults);\r\n } else {\r\n this.http.get(`${this.baseRoute}/OrganizationDefaults/${orgId}`).subscribe((response: any) => {\r\n response.map((x: { [x: string]: any; value: any; defaultType: string; }) => x.value = x[x.defaultType.toLowerCase() + \"Value\"])\r\n \r\n this.organizationDefaults = response;\r\n resolve(this.organizationDefaults);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting Organization Defaults\", \"Error getting org defaults: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public updateOrgDefault(orgDefault:any) {\r\n return this.http.put(`${this.baseRoute}/UpdateMyOrgDefault/`, orgDefault);\r\n }\r\n public getOrg(orgId: string): Observable {\r\n return this.http.get(`${this.baseRoute}/Company/${orgId}`).pipe(map(res => new Organization(res)));\r\n }\r\n /*private toOrgObj(x:Promise) {\r\n return Observable.fromPromise(new Organization(x));\r\n }*/\r\n\r\n public getOrgsShort(forceRefetch: boolean = false): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.orgs && !forceRefetch) {\r\n resolve(this.orgs);\r\n } else {\r\n this.http.get('/api/User/AllCompanies').subscribe((response: any) => {\r\n this.orgs = response;\r\n resolve(this.orgs);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting company list\", \"Error getting company list: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public GetOrgsByNameString(orgname: string) {\r\n return this.http.get('/api/User/GetOrgsByNameString/' + orgname);\r\n }\r\n\r\n public getUsersShort(forceRefetch: boolean = false): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.usrs && !forceRefetch) {\r\n resolve(this.usrs);\r\n } else {\r\n this.http.get('/api/User/AllUsers').subscribe((response: any) => {\r\n this.usrs = response;\r\n resolve(this.usrs);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting user list\", \"Error getting user list: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public getSupervisors(forceRefetch: boolean = false): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.usrs && !forceRefetch) {\r\n resolve(this.usrs);\r\n } else {\r\n this.http.get('/api/User/AllSupervisors').subscribe((response: any) => {\r\n this.usrs = response;\r\n resolve(this.usrs);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting confirmed user list\", \"Error getting confirmed user list: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public getRegistrations(forceRefetch: boolean = false): Promise> {\r\n return new Promise((resolve, reject) => {\r\n if (this.registrations && !forceRefetch) {\r\n resolve(this.registrations);\r\n } else {\r\n this.http.get('/api/User/GetRegistrations').subscribe((response: any) => {\r\n this.registrations = response;\r\n resolve(this.registrations);\r\n }, (error: any) => {\r\n this.loggingService.error(\"Error getting registrations\", \"Error getting registrations: \" + error);\r\n reject(error);\r\n });\r\n }\r\n });\r\n }\r\n\r\n public updateMissingRequiredFields(user: FFUser) {\r\n if (!user.addressLine1) user.addressLine1 = \"\";\r\n if (!user.addressLine2) user.addressLine2 = \"\";\r\n if (!user.city) user.city = \"\";\r\n if (!user.state) user.state = \"\";\r\n if (!user.zip) user.zip = \"\";\r\n if (!user.userMappings) user.userMappings = [];\r\n if (!user.validationAnswer) user.validationAnswer = \"\";\r\n if (!user.organization) user.organization = \"\";\r\n if (!user.organizationType) user.organizationType = \"\";\r\n if (!user.phoneNumber) user.phoneNumber = \"\";\r\n if (!user.mobilePhoneNumberForTwoFA) user.mobilePhoneNumberForTwoFA = \"\";\r\n if (!user.concurrencyStamp) user.concurrencyStamp = \"\";\r\n if (!user.normalizedEmail) user.normalizedEmail = \"\";\r\n if (!user.passwordHash) user.passwordHash = \"\";\r\n if (!user.securityStamp) user.securityStamp = \"\";\r\n }\r\n\r\n public getMyCompany(id:string) {\r\n return this.http.get('/api/User/MyCompany/' + id).pipe(map(res => new Organization(res)));\r\n }\r\n public getCompany(id:string) {\r\n return this.http.get('/api/User/Company/' + id).pipe(map(res => new Organization(res)));\r\n }\r\n public addMyUserMapping(um: UserMapping) {\r\n return this.http.post(\"/api/User/AddMyUserMapping\", um);\r\n }\r\n public addMyOrganization(co: Organization) {\r\n return this.http.post(`/api/User/AddMyOrganization`, co);\r\n }\r\n public updateMyUser(userObj: FFUser) {\r\n return this.http.put(`/api/User/UpdateMyUser`, userObj);\r\n }\r\n public updateUser(userObj: FFUser) {\r\n return this.http.put(`/api/User/UpdateUser`, userObj);\r\n }\r\n public updateMyCompany(co: Organization) {\r\n return this.http.put(`/api/User/UpdateMyCompany/` + co.organizationId, co);\r\n }\r\n public updateCompany(co: Organization) {\r\n return this.http.put(`/api/User/UpdateCompany/` + co.organizationId, co);\r\n }\r\n public addMyOrganizationRelation({organizationId, relatedOrganizationId, orgRelationTypeId, statusId}: OrganizationRelation) {\r\n return this.http.get(`/api/User/AddMyOrganizationRelation/${organizationId}/${relatedOrganizationId}/${orgRelationTypeId}/${statusId}`);\r\n }\r\n public updateMyOrganizationRelation({organizationId, organizationRelationId, orgRelationTypeId, statusId}: OrganizationRelation) {\r\n return this.http.get(`/api/User/UpdateMyOrganizationRelation/${organizationId}/${organizationRelationId}/${orgRelationTypeId}/${statusId}`);\r\n }\r\n public removeOrgRelation(co: OrganizationRelation) {\r\n return this.http.delete(`/api/User/removeOrgRelation/${co.organizationId}/${co.relatedOrganizationId}/${co.orgRelationTypeId}`);\r\n }\r\n public removeUserMapping(orgId: string, userId: string, roleId: string) {\r\n return this.http.delete(`/api/User/removeUserMapping/${orgId}/${userId}/${roleId}`);\r\n }\r\n public removePendingUserMappings(orgId: string, userId: string) {\r\n return this.http.delete(`/api/User/removePendingUserMappings/${orgId}/${userId}`);\r\n }\r\n public updateDefaultUserMapping(userMapping: UserMapping) {\r\n return this.http.put(`/api/User/UpdateDefaultUserMapping`, userMapping);\r\n }\r\n public approveUser(o: OrgRegistration) {\r\n return this.http.put(`/api/User/ApproveUser`, o);\r\n }\r\n public denyUser(o: OrgRegistration) {\r\n return this.http.put(`/api/User/DenyUser`, o);\r\n }\r\n public deleteUser(o: OrgRegistration) {\r\n return this.http.put(`/api/User/DeletePrimaryOrganizationMapping`, o);\r\n }\r\n public setMyDefaultOrg(orgid: string) {\r\n return this.http.get(`/api/User/SetMyDefaultOrg/${orgid}`);\r\n }\r\n public getNotificationsForOrg(orgid: string) {\r\n return this.http.get(`/api/User/GetDashboardNotifications/${orgid}`);\r\n }\r\n public getOrganizationUserHistory(orgId: string, userId: string) {\r\n return this.http.get(`/api/User/GetOrganizationUserHistory/${orgId}/${userId}`);\r\n }\r\n public getOrgRelationHistory(orgId: string, relatedOrgId: string) {\r\n return this.http.get(`/api/User/GetOrganizationRelationHistory/${orgId}/${relatedOrgId}`);\r\n }\r\n public getOrganizationHistory(orgId: string) {\r\n return this.http.get(`/api/User/GetOrganizationHistory/${orgId}`);\r\n }\r\n public getMyOperatorApprovals(orgId: string) {\r\n return this.http.get(`/api/User/GetMyOperatorApprovals/${orgId}`);\r\n }\r\n public updateMyOrgDefault(orgDefault: any) {\r\n return this.http.put(`/api/User/UpdateMyOrgDefault`, orgDefault);\r\n }\r\n public getOrganizationStats() {\r\n return this.http.get('/api/User/OrganizationStats');\r\n }\r\n public activateOrganization(o: OrgRegistration) {\r\n return this.http.put(`/api/User/activateOrganization/${o.organizationId}`, o);\r\n }\r\n public deactivateOrganization(o: OrgRegistration) {\r\n return this.http.put(`/api/User/deactivateOrganization/${o.organizationId}`, o);\r\n }\r\n public getRegistrationByUserId(id: string) {\r\n return this.http.get('/api/User/GetRegistrationByUserId/' + id);\r\n }\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from \"@angular/core\";\r\nimport { Observable } from \"rxjs\";\r\nimport { LoggingService } from \"./logging.service\";\r\n\r\nexport function convertArrayToDictionary(items: any[], labelProperty: string, valueProperty: string, includeEmptyValue: boolean = false): any {\r\n let dictionary: any = {};\r\n if (includeEmptyValue) {\r\n dictionary[''] = '';\r\n }\r\n items.forEach((item: any) => {\r\n dictionary[item[labelProperty]] = item[valueProperty];\r\n });\r\n return dictionary;\r\n}\r\n\r\nexport const EmptyGuid = \"00000000-0000-0000-0000-000000000000\";\r\n\r\nexport function getDistinct(data: T[], property: K): T[K][] {\r\n const allValues = data.reduce((values: T[K][], current) => {\r\n if (current[property]) {\r\n values.push(current[property]);\r\n }\r\n return values;\r\n }, []);\r\n\r\n return [...new Set(allValues)];\r\n}\r\n\r\n@Injectable()\r\nexport class UtilityService {\r\n constructor(\r\n private http: HttpClient,\r\n private loggingService: LoggingService\r\n ) {\r\n }\r\n\r\n public generateGuid(): Observable {\r\n return this.http.get('/api/Utilities/generate-guid/');\r\n }\r\n}\r\n","import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { ActivatedRoute, NavigationEnd, Route, Router } from '@angular/router';\r\nimport { filter, finalize, Subscription } from 'rxjs';\r\nimport { LoggingService } from '../../../services/logging.service';\r\nimport { BreadCrumb } from '../../models/bread-crumb.model';\r\nimport { MainNavService } from '../../services/main-nav.service';\r\n\r\n@Component({\r\n selector: 'ui-breadcrumbs',\r\n templateUrl: './breadcrumbs.component.html',\r\n styleUrls: ['./breadcrumbs.component.scss']\r\n})\r\nexport class BreadcrumbsComponent implements OnInit, OnDestroy {\r\n private subscription: Subscription = new Subscription();\r\n public breadCrumbs: BreadCrumb[] = [];\r\n static readonly ROUTE_DATA_BREADCRUMB = 'breadcrumb';\r\n public mostRecentlyFoundCrumb: BreadCrumb = null;\r\n\r\n @ViewChild('afterNavMenu') afterNavAnchor!: ElementRef;\r\n constructor(\r\n private _mainNavService: MainNavService,\r\n private router: Router,\r\n private _loggingService: LoggingService,\r\n private activatedRoute: ActivatedRoute) {\r\n }\r\n\r\n ngOnInit(): void {\r\n const mainNavSubscription$ = this._mainNavService.setFocusOutsideNav.pipe(finalize(() => {\r\n this.subscription.add(mainNavSubscription$);\r\n })).subscribe((before: boolean) => {\r\n if (!before) {\r\n this.afterNavAnchor.nativeElement.focus();\r\n }\r\n }, error => {\r\n console.log(\"Failed to set focus outside of nav.\");\r\n });\r\n\r\n const routerNavigationSubscription$ = this.router.events\r\n .pipe(filter(event => event instanceof NavigationEnd))\r\n .subscribe(() => {\r\n //Initialize the bread crumbs\r\n this.breadCrumbs = [{ label: \"Home\", clickable: true, url: \"\" } as BreadCrumb]\r\n //build everything past home off of the route\r\n this.createBreadcrumbs(this.activatedRoute.root);\r\n this.subscription.add(routerNavigationSubscription$);\r\n }, error => {\r\n console.log(\"Something went wrong in breadcrumb generation.\");\r\n this.subscription.add(routerNavigationSubscription$);\r\n });\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n private createBreadcrumbs(route: ActivatedRoute, url: string = '', breadcrumbs: BreadCrumb[] = []): BreadCrumb[] {\r\n const children: ActivatedRoute[] = route.children;\r\n\r\n if (children.length === 0) {\r\n return breadcrumbs;\r\n }\r\n\r\n for (const child of children) {\r\n const routeConfig = child.snapshot.routeConfig;\r\n\r\n //If there is an empty path, ignore it\r\n if (routeConfig.path) {\r\n const routeURL: string = child.snapshot.url.map(segment => segment.path).join('/');\r\n if (routeURL !== '') {\r\n url += `/${routeURL}`;\r\n }\r\n\r\n //We don't want to use the url for label generation as that can get messy when there are parameters in it.\r\n //so strip out parameters if there are any.\r\n let cleanedRouteUrl = this.buildRouteWithoutParameters(routeConfig.path);\r\n\r\n let breadCrumbSnapshot = child.snapshot.data[BreadcrumbsComponent.ROUTE_DATA_BREADCRUMB];\r\n let breadCrumbShouldBeClickable = routeConfig.component ? true : false;\r\n\r\n if (breadCrumbSnapshot != null && breadCrumbSnapshot != undefined) {\r\n //Since missing data items anywhere along the route can lead to duplicates, make them unique objects\r\n let breadCrumbOrLabel = JSON.parse(JSON.stringify(breadCrumbSnapshot));\r\n\r\n let breadcrumbIsIdenticalToLast = this.breadCrumbsAreIdentical(this.mostRecentlyFoundCrumb, breadCrumbOrLabel);\r\n if (breadcrumbIsIdenticalToLast) {\r\n this.pushBreadCrumb({ label: this.formatFinalUrlSegmentAsLabel(cleanedRouteUrl), url: url, clickable: breadCrumbShouldBeClickable } as BreadCrumb);\r\n }\r\n else {\r\n if (typeof (breadCrumbOrLabel) == \"string\" && breadCrumbOrLabel != \"\") {\r\n this.pushBreadCrumb({ label: breadCrumbOrLabel, url: url, clickable: breadCrumbShouldBeClickable } as BreadCrumb);\r\n }\r\n //If it's an object we assume it is a type that at least overlaps with the BreadCrumb class\r\n if (typeof (breadCrumbOrLabel) == \"object\") {\r\n let castBreadCrumb = (breadCrumbOrLabel as BreadCrumb);\r\n\r\n //Unless the breadcrumb's clickable flag was explicitly set to false, or one wasn't provided and it just fell back to the most recent one,\r\n //set it based on if a component was tied to the route. If a component is associated, it's true.\r\n if (castBreadCrumb.clickable === null || castBreadCrumb.clickable === undefined) {\r\n castBreadCrumb.clickable = breadCrumbShouldBeClickable;\r\n }\r\n if (castBreadCrumb.label === null || castBreadCrumb.label === undefined) {\r\n castBreadCrumb.label = this.formatFinalUrlSegmentAsLabel(cleanedRouteUrl);\r\n }\r\n if (castBreadCrumb.url === null || castBreadCrumb.url === undefined) {\r\n castBreadCrumb.url = url;\r\n }\r\n\r\n this.pushBreadCrumb(castBreadCrumb);\r\n }\r\n }\r\n }\r\n else {\r\n //If no breadcrumb info was specified, try to create one\r\n this.pushBreadCrumb({ clickable: breadCrumbShouldBeClickable, url: url, label: this.formatFinalUrlSegmentAsLabel(cleanedRouteUrl) } as BreadCrumb);\r\n }\r\n\r\n this.mostRecentlyFoundCrumb = breadCrumbSnapshot;\r\n }\r\n\r\n return this.createBreadcrumbs(child, url, this.breadCrumbs);\r\n }\r\n\r\n return breadcrumbs;\r\n }\r\n\r\n private breadCrumbsAreIdentical(firstBreadCrumb: BreadCrumb | string, secondBreadCrumb: BreadCrumb | string): boolean {\r\n if (typeof (firstBreadCrumb) == \"object\" && typeof (secondBreadCrumb) == \"object\") {\r\n return firstBreadCrumb && secondBreadCrumb && firstBreadCrumb.clickable === secondBreadCrumb.clickable && firstBreadCrumb.label === secondBreadCrumb.label\r\n && firstBreadCrumb.url === secondBreadCrumb.url;\r\n }\r\n\r\n return firstBreadCrumb === secondBreadCrumb;\r\n\r\n \r\n }\r\n\r\n private pushBreadCrumb(breadCrumb: BreadCrumb): void {\r\n if (this.breadCrumbs && breadCrumb) {\r\n this.breadCrumbs.push(breadCrumb);\r\n }\r\n }\r\n\r\n\r\n //To handle cases where an explicit breadcrumb wasn't provided, we try to format the label off of the current final segment\r\n //Capitalize the first letter, and replace all instances of '-' with empty spaces, capitalizing the following character.\r\n private formatFinalUrlSegmentAsLabel(url: string, segmentDelimitingString: string = \"\", segmentDelimiterReplacement: string = \"\"): string {\r\n let segmentStartIndex = url.indexOf(segmentDelimitingString);\r\n let segmentFirstLetter = url.substring(segmentStartIndex + segmentDelimitingString.length, segmentStartIndex + (segmentDelimitingString.length + 1));\r\n let segmentAsLabel = url.replace(segmentDelimitingString + segmentFirstLetter, segmentDelimiterReplacement + segmentFirstLetter.toUpperCase());\r\n while (segmentAsLabel.includes(\"-\")) {\r\n segmentAsLabel = this.formatFinalUrlSegmentAsLabel(segmentAsLabel, \"-\", \" \");\r\n }\r\n return segmentAsLabel;\r\n }\r\n\r\n \r\n private buildRouteWithoutParameters(routePath: string): string {\r\n let routeWithoutParametersString = routePath;\r\n if (routeWithoutParametersString.includes(\"/:\")) {\r\n //find first occurrence of a parameter\r\n let indexOfParam = routePath.indexOf(\"/:\");\r\n let indexOfParamEnd = routePath.indexOf(\"/\", indexOfParam + 2);\r\n //strip out the param\r\n routeWithoutParametersString = routePath.substring(0, indexOfParam);\r\n //If there's a / further in the list, add the portion following it back on\r\n if (indexOfParamEnd !== -1) {\r\n routeWithoutParametersString = routeWithoutParametersString + routePath.substring(indexOfParamEnd, routePath.length);\r\n routeWithoutParametersString = this.buildRouteWithoutParameters(routeWithoutParametersString);\r\n }\r\n }\r\n return routeWithoutParametersString;\r\n }\r\n\r\n onBreadCrumbClick(event: BreadCrumb) {\r\n this.router.navigate([event.url]);\r\n }\r\n\r\n}\r\n","
\r\n
    \r\n
  • \r\n \r\n
    \r\n
  • \r\n
\r\n
\r\n","import { Component, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { NgxPopperjsPlacements} from 'ngx-popperjs';\r\n\r\n@Component({\r\n selector: 'ui-footer',\r\n templateUrl: './footer.component.html',\r\n styleUrls: ['./footer.component.scss'],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class FooterComponent implements OnInit {\r\n public isOpenPageModalShowing: boolean = false\r\n public linkToOpen: string;\r\n public popperPlacement: NgxPopperjsPlacements = NgxPopperjsPlacements.TOP;\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n public closeOpenPageModal() { this.isOpenPageModalShowing = false, this.linkToOpen = '' }\r\n\r\n public openExternalLink(link: string) {\r\n this.linkToOpen = link;\r\n this.isOpenPageModalShowing = true;\r\n }\r\n\r\n public handleOk() {\r\n window.open(this.linkToOpen, \"_blank\");\r\n this.isOpenPageModalShowing = false;\r\n }\r\n\r\n public handleCancel() {\r\n this.isOpenPageModalShowing = false;\r\n this.linkToOpen = '';\r\n }\r\n}\r\n","
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
    \r\n
  • © Copyright GWPC, 2023
  • \r\n
  • \r\n Terms of Use\r\n
  • \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n

\r\n The system is about to open an external page, do you wish to continue?\r\n

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core';\r\nimport { filter, finalize, Subscription } from 'rxjs';\r\n\r\nimport { AuthService } from '../../../services/auth.service';\r\nimport { NavigationEnd, Router } from '@angular/router';\r\nimport { FFUser } from '../../../../common/models/users/ff-user.model';\r\nimport { DropdownService } from '../../../services/dropdown.service';\r\n\r\n@Component({\r\n selector: 'ui-header',\r\n templateUrl: './header.component.html',\r\n styleUrls: ['./header.component.scss'],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class HeaderComponent implements OnInit, OnDestroy {\r\n\r\n private subscription = new Subscription();\r\n isCursorEnable: boolean = false;\r\n public basicNotifications: any[];\r\n public isImpersonated: boolean = false;\r\n\r\n constructor(\r\n private router: Router,\r\n private authService: AuthService,\r\n private dropdownService: DropdownService) {\r\n const header$ = this.router.events\r\n .pipe(filter(event => event instanceof NavigationEnd),\r\n finalize(() => {\r\n this.subscription.add(header$);\r\n }))\r\n .subscribe(\r\n (event: any) => {\r\n if (event instanceof NavigationEnd) {\r\n this.authService.getUserInfo().then((res: FFUser) => {\r\n this.isImpersonated = res.isImpersonated;\r\n if (res.userName && event.url === '/') {\r\n this.isCursorEnable = true;\r\n } else if (event.url === '/' || event.url === '/dashboard') {\r\n this.isCursorEnable = false;\r\n } else {\r\n this.isCursorEnable = true;\r\n }\r\n })\r\n }\r\n });\r\n }\r\n ngOnInit(): void {\r\n this.dropdownService.getCurrentBasicNotifications().then(nots => {\r\n //this.dropdownService.currentBasicNotifications;\r\n });\r\n this.dropdownService.setBasicNotifications.subscribe(res => {\r\n this.basicNotifications = res;\r\n })\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n public onLogoClick() {\r\n let path = this.authService.authenticated ? \"/dashboard\" : \"/\";\r\n this.router.navigate([path]);\r\n }\r\n\r\n public exitImpersonation(): void {\r\n var srv$ = this.authService.impersonateLogout().subscribe({\r\n next: (res) => {\r\n const returnUrl = res.returnUrl;\r\n this.authService.getUserInfo(true).then((res: FFUser) => {\r\n this.isImpersonated = false;\r\n this.router.navigate([returnUrl]);\r\n })\r\n this.subscription.add(srv$);\r\n },\r\n error: (e) => {\r\n console.log(e);\r\n }\r\n });\r\n }\r\n\r\n}\r\n","
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
{{not.text}}
\r\n","import { Pipe, PipeTransform } from '@angular/core';\r\nimport { IconButtonColor } from './icon-button-color.enum';\r\n\r\n@Pipe({\r\n name: 'iconButtonColorEnumPipe'\r\n})\r\nexport class IconButtonColorEnumPipe implements PipeTransform {\r\n\r\n constructor() { }\r\n\r\n public transform(value: string): IconButtonColor {\r\n switch (value) {\r\n case 'BLUE':\r\n return IconButtonColor.BLUE;\r\n case 'RED':\r\n return IconButtonColor.RED;\r\n case 'BLACK':\r\n return IconButtonColor.BLACK;\r\n case 'GREEN':\r\n return IconButtonColor.GREEN;\r\n case 'GRAY':\r\n return IconButtonColor.GRAY;\r\n case 'WHITE':\r\n return IconButtonColor.WHITE;\r\n default:\r\n return IconButtonColor.BLACK;\r\n }\r\n }\r\n}\r\n","export enum IconButtonColor {\r\n BLUE = '--blue',\r\n RED = '--red',\r\n BLACK = '--black',\r\n GREEN = '--green',\r\n GRAY = '--gray',\r\n WHITE = '--white',\r\n}\r\n","import { Component, HostBinding, Input, OnInit, Output } from '@angular/core';\r\nimport { EventEmitter } from '@angular/core';\r\nimport { IconButtonColor } from './icon-button-color.enum';\r\n\r\n@Component({\r\n selector: 'ui-icon-button',\r\n templateUrl: './icon-button.component.html',\r\n styleUrls: ['./icon-button.component.scss']\r\n})\r\nexport class IconButtonComponent implements OnInit {\r\n @Input() color: IconButtonColor;\r\n @Input() iconName: string;\r\n @Input() heightInPx: string;\r\n @Input() widthInPx: string;\r\n @Input() screenReaderText: string;\r\n @Input() title: string;\r\n @Output() clicked = new EventEmitter();\r\n @Input() disabled: boolean;\r\n set state(dis: boolean) {\r\n this.disabled = dis;\r\n }\r\n private spriteURL = \"assets/sprite/sprite.svg#\";\r\n private iconPercentScale = .5;\r\n\r\n constructor() {\r\n this.color = IconButtonColor.BLACK;\r\n this.iconName = \"icon-trash-can\";\r\n this.heightInPx = \"18px\";\r\n this.widthInPx = \"18px\"\r\n this.screenReaderText = \"Please add screenReaderText for accessibility\";\r\n this.title = \"Please add title\";\r\n this.disabled = false;\r\n }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n @HostBinding('class')\r\n get classes(): string {\r\n return `${this.color}`;\r\n }\r\n\r\n public onClick(): void {\r\n if (!this.disabled || this.disabled === null) {\r\n this.clicked.emit(\"click\");\r\n }\r\n }\r\n public getIconSrc(): string {\r\n return this.spriteURL + this.iconName;\r\n }\r\n public getIconClass(): string {\r\n return this.iconName + this.color;\r\n }\r\n public getDisabled(): boolean | null{\r\n if (this.disabled) {\r\n return true;\r\n } else {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\n","\r\n","import { Directive, Input, TemplateRef, ViewContainerRef } from '@angular/core';\r\nimport { type } from 'os';\r\nimport { PermissionsService } from 'src/app/common/services/permissions.service';\r\nimport { PermittedRoles } from '../../../models/perimitted-roles.model';\r\nimport { FFUserWithRoles } from '../../../models/users/ff-user-with-roles.model';\r\nimport { AuthService } from '../../../services/auth.service';\r\n\r\n@Directive({\r\n selector: '[appCanaccess]'\r\n})\r\nexport class CanaccessDirective {\r\n \r\n \r\n /**\r\n * Will check if the user has any of the provided roles. \r\n * Works like *ngIf.\r\n * Will render element if user has permissions. Will hide it if else.\r\n */\r\n @Input() public set appCanaccess({user, permissions, hiddenFromPermissions = []}: canAccessParams){\r\n\r\n if(!user){ return }\r\n \r\n this.viewContainer.clear(); //Prevents duplicated elements\r\n const hasAdminPermission = permissions.some(p => p.isAdmin);\r\n \r\n if(hasAdminPermission && user.isAdmin){\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n return;\r\n }\r\n \r\n const canUserAccess = this.permissionService.canUserAccess(user, permissions, hiddenFromPermissions)\r\n if(canUserAccess){\r\n this.viewContainer.createEmbeddedView(this.templateRef);\r\n }\r\n else{ \r\n this.viewContainer.clear();\r\n }\r\n }\r\n\r\n constructor(private templateRef: TemplateRef, private viewContainer: ViewContainerRef,\r\n private auth: AuthService, private permissionService: PermissionsService) { }\r\n}\r\n\r\nexport type canAccessParams = {\r\n user: FFUserWithRoles,\r\n permissions: PermittedRoles[],\r\n hiddenFromPermissions?: PermittedRoles[]\r\n}\r\n","import { Component, Input, OnDestroy, OnInit, QueryList, ViewChildren, ViewEncapsulation } from '@angular/core';\r\nimport { concatMap, finalize, of, Subscription, tap } from 'rxjs';\r\nimport { Organization } from '../../../models/organizations/organization.model';\r\nimport { FFUserWithRoles } from '../../../models/users/ff-user-with-roles.model';\r\nimport { AuthService } from '../../../services/auth.service';\r\nimport { MainNavService } from '../../services/main-nav.service';\r\nimport { NavSubMenuHeaderDirectiveDirective } from './nav-sub-menu-header.directive';\r\nimport { CommonRoles } from '../../../models/perimitted-roles.model';\r\nimport { ReportsService } from '../../../services/reports.service';\r\nimport { SimpleReport } from '../../../../admin/models/reports/simple-report.model';\r\n\r\n@Component({\r\n selector: 'ui-main-nav',\r\n templateUrl: './main-nav.component.html',\r\n styleUrls: ['./main-nav.component.scss'],\r\n encapsulation: ViewEncapsulation.Emulated\r\n})\r\nexport class MainNavComponent implements OnInit, OnDestroy {\r\n\r\n\r\n private mainNavSubscription = new Subscription();\r\n\r\n public hamburgerMenuDisplay: boolean = false;\r\n private currentActiveSubMenuHeader: NavSubMenuHeaderDirectiveDirective = new NavSubMenuHeaderDirectiveDirective(this._mainNavService, undefined);\r\n\r\n @ViewChildren(NavSubMenuHeaderDirectiveDirective) menuSubHeaders: QueryList = new QueryList();\r\n public userInfo: FFUserWithRoles;\r\n public currentOrg: Organization;\r\n public availableReports: any[] = [];\r\n public adminReports: SimpleReport[] = [];\r\n\r\n constructor(private _mainNavService: MainNavService, private authService: AuthService, private reportService: ReportsService) {\r\n\r\n }\r\n\r\n public ngOnInit(): void {\r\n\r\n let userInfoAndReport$ = this.authService.userInfoEmitter.pipe(\r\n tap((result) => {\r\n this.userInfo = result;\r\n console.log('userInfo ', result);\r\n this.currentOrg = result.getCurrentOrg();\r\n if (this.userInfo && this.userInfo.roles && this.userInfo.roles.indexOf(\"Admin\") > -1) {\r\n this.reportService.getAvailableAdminReportsBasic().subscribe(res => {\r\n this.adminReports = res;\r\n });\r\n }\r\n }),\r\n concatMap(() => {\r\n if (this.currentOrg) {\r\n return this.reportService.getAvailableReportsBasic(this.currentOrg.organizationId);\r\n }\r\n else {\r\n return of([]);\r\n }\r\n })\r\n ).subscribe({\r\n next: (reports: Array) => {\r\n this.availableReports = reports;\r\n this.mainNavSubscription.add(userInfoAndReport$);\r\n },\r\n error: (error) => {\r\n this.mainNavSubscription.add(userInfoAndReport$);\r\n console.log('Error listening for auth service user info. ' + error);\r\n }\r\n });\r\n\r\n this.authService.getUserInfo();\r\n\r\n //sub menu header\r\n const selectedSubMenuHeaderSubscription = this._mainNavService.selectedSubMenuHeader.subscribe((value: NavSubMenuHeaderDirectiveDirective) => {\r\n this.currentActiveSubMenuHeader = value;\r\n this.menuSubHeaders.toArray().forEach((navSubMenuHeader) => {\r\n if (navSubMenuHeader === value) {\r\n this.expandCurrentSubMenu();\r\n } else {\r\n this.closeSubMenu(navSubMenuHeader);\r\n }\r\n });\r\n });\r\n this.mainNavSubscription.add(selectedSubMenuHeaderSubscription);\r\n\r\n //sub menu tab, sub menu right arrow\r\n const manuKeySubscription = this._mainNavService.menuKey.subscribe((value: string) => {\r\n switch (value) {\r\n case \"h-st\":\r\n //menu header shift tab\r\n this.setNavMenuPreviousItemFocus();\r\n break;\r\n case \"h-ar\":\r\n //menu header arrow right\r\n this.setMainNavNextMenuItemFocus();\r\n break;\r\n case \"h-al\":\r\n //menu header arrow left\r\n this.setNavMenuPreviousItemFocus();\r\n break;\r\n case \"s-ar\":\r\n //sub menu item arrow right\r\n // close open sub menu\r\n this.closeOpenSubMenu();\r\n // set next top level item focus\r\n this.setMainNavNextMenuItemFocus(false);\r\n break;\r\n case \"s-al\":\r\n //sub menu item arrow left\r\n // close open sub menu\r\n this.closeOpenSubMenu();\r\n // set previous top level item focus\r\n this.setNavMenuPreviousItemFocus(false);\r\n break;\r\n default:\r\n console.log(\"missed case in main-nav-menu.component.ts mainNavSubscription: \" + value);\r\n }\r\n });\r\n this.mainNavSubscription.add(manuKeySubscription);\r\n\r\n //sub menu shift tab\r\n const menuShipftTabSubscription = this._mainNavService.menuShiftTab.subscribe((value: string) => {\r\n this.setNavMenuPreviousItemFocus();\r\n });\r\n this.mainNavSubscription.add(menuShipftTabSubscription);\r\n\r\n //sub menu focus\r\n const subHeaderFocusSubscription = this._mainNavService.subHeaderFocus.subscribe((value: NavSubMenuHeaderDirectiveDirective) => {\r\n //set currently selected first level menu item\r\n this.currentActiveSubMenuHeader = value;\r\n });\r\n this.mainNavSubscription.add(subHeaderFocusSubscription);\r\n\r\n //tabbed sub menu header button \r\n const subMenuHeaderTabClickSubscription = this._mainNavService.subMenuHeaderTabClick.subscribe((value: NavSubMenuHeaderDirectiveDirective) => {\r\n this.setMainNavNextMenuItemFocus();\r\n this._mainNavService.broadcastSelectedHeaderNoExpand(value);\r\n });\r\n this.mainNavSubscription.add(subMenuHeaderTabClickSubscription);\r\n\r\n //ESC from submenu item\r\n const selectSubMenuHeaderNoExpandSubscription = this._mainNavService.selectedSubMenuHeaderNoExpand.subscribe((value: NavSubMenuHeaderDirectiveDirective) => {\r\n //just highlight the header\r\n this.setMainItemFocus(value);\r\n });\r\n this.mainNavSubscription.add(selectSubMenuHeaderNoExpandSubscription);\r\n\r\n //sub menu open/close\r\n const closeOpenSubMenuSubscription = this._mainNavService.closeOpenSubMenu.subscribe((value: boolean) => {\r\n this.closeOpenSubMenu();\r\n });\r\n this.mainNavSubscription.add(closeOpenSubMenuSubscription);\r\n }\r\n\r\n public ngOnDestroy(): void {\r\n if (this.mainNavSubscription) {\r\n this.mainNavSubscription.unsubscribe();\r\n }\r\n }\r\n\r\n private closeSubMenu(subMenu: NavSubMenuHeaderDirectiveDirective): void {\r\n if (subMenu.elRef && subMenu.elRef.nativeElement.children.length > 0) {\r\n subMenu.setExpanded(false);\r\n }\r\n }\r\n private expandCurrentSubMenu(): void {\r\n //catch for single top level link with no sub menu\r\n if (this.currentActiveSubMenuHeader.elRef && this.currentActiveSubMenuHeader.elRef.nativeElement.children.length > 0) {\r\n //open sub menu\r\n this.currentActiveSubMenuHeader.setExpanded(true);\r\n }\r\n }\r\n\r\n /* sub menu headers */\r\n private closeOpenSubMenu(): void {\r\n this.menuSubHeaders.toArray().forEach((subHeader) => {\r\n if (subHeader.expanded) {\r\n subHeader.setExpanded(false);\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Update property to show/hide hamburger/X\r\n */\r\n public toggleMenuHamburger(): void {\r\n this.hamburgerMenuDisplay = !this.hamburgerMenuDisplay;\r\n }\r\n\r\n /**\r\n * Previous: First level menu item focus\r\n */\r\n private setNavMenuPreviousItemFocus(noExpand: boolean = true): void {\r\n let index = this.getNavMenuIndex();\r\n const prev = this.menuSubHeaders.get(index - 1);\r\n //set previous focus\r\n if (prev && prev.elRef) {\r\n this.setMainItemFocus(prev);\r\n //broadcast shift-tab target sub menu header\r\n const subHeader = this.menuSubHeaders.get(index - 1);\r\n if (subHeader !== undefined) {\r\n this.broadcastSelectedHeader(subHeader, noExpand);\r\n }\r\n } else {\r\n //set LAST focus\r\n if (this.menuSubHeaders.last.elRef) {\r\n this.setMainItemFocus(this.menuSubHeaders.last);\r\n //broadcast select header\r\n const subHeader = this.menuSubHeaders.last;\r\n if (subHeader !== undefined) {\r\n this.broadcastSelectedHeader(subHeader, noExpand);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Current Selected Link: First level menu item focus\r\n */\r\n private setMainNavNextMenuItemFocus(noExpand: boolean = true): void {\r\n let index = this.getNavMenuIndex();\r\n const next = this.menuSubHeaders.get(index + 1);\r\n //set next focus\r\n if (next && next.elRef) {\r\n this.setMainItemFocus(next);\r\n if (!noExpand) {\r\n this._mainNavService.broadcastSelectedHeaderExpand(next);\r\n }\r\n } else {\r\n //set first focus\r\n if (this.menuSubHeaders.first.elRef) {\r\n const first = this.menuSubHeaders.first;\r\n this.setMainItemFocus(first);\r\n if (!noExpand) {\r\n this._mainNavService.broadcastSelectedHeaderExpand(first);\r\n }\r\n }\r\n }\r\n }\r\n private broadcastSelectedHeader(subHeader: NavSubMenuHeaderDirectiveDirective, noExpand: boolean = true): void {\r\n if (noExpand) {\r\n this._mainNavService.broadcastSelectedHeaderNoExpand(subHeader);\r\n } else {\r\n this._mainNavService.broadcastSelectedHeaderExpand(subHeader);\r\n }\r\n }\r\n /**\r\n * First level currently focused index\r\n */\r\n private getNavMenuIndex(): any {\r\n let rtnIndex = -1;\r\n this.menuSubHeaders.toArray().forEach((navSubMenuHeader, index) => {\r\n if (navSubMenuHeader === this.currentActiveSubMenuHeader) {\r\n rtnIndex = index;\r\n }\r\n });\r\n return rtnIndex;\r\n }\r\n /**\r\n * Main set focus\r\n */\r\n private setMainItemFocus(navSubMenuHeader: NavSubMenuHeaderDirectiveDirective): void {\r\n if (navSubMenuHeader && navSubMenuHeader.elRef) {\r\n navSubMenuHeader.elRef.nativeElement.focus({ focusVisible: true });\r\n }\r\n\r\n }\r\n\r\n /* For accessing the common roles object in the DOM */\r\n public get CommonRoles() {\r\n return CommonRoles\r\n }\r\n}\r\n","\r\n","import { ContentChildren, Directive, ElementRef, HostBinding, HostListener, Input, OnDestroy, OnInit, Output, QueryList, ViewChildren } from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { MainNavService } from '../../services/main-nav.service';\r\nimport { NavSubMenuItemDirectiveDirective } from './nav-sub-menu-item.directive';\r\n\r\n@Directive({\r\n\tselector: '[appNavSubMenuHeaderDirective]'\r\n})\r\nexport class NavSubMenuHeaderDirectiveDirective implements OnInit, OnDestroy {\r\n\t@HostBinding('class.expanded') expanded: boolean = false;\r\n\t@HostBinding('attr.aria-expanded') expandedAria: boolean = false;\r\n\tisClickOnly: boolean = false;\r\n\t@ContentChildren(NavSubMenuItemDirectiveDirective, { descendants: true }) subMenuItems: QueryList = new QueryList();\r\n\r\n\tisParentOver:boolean = false;\r\n\r\n\t@HostListener('window:resize', ['$event'])\r\n\tonWindowResize() {\r\n\t\tthis.setClickOnly();\r\n\t}\r\n\r\n\t/* MOUSE EVENTS > */\r\n\t//mouse over\r\n\t@HostListener('mouseenter', ['$event'])\r\n\thasOver(event: any) {\r\n\t\tif (!this.isClickOnly) {\r\n\t\t\tif (this.expanded === false && this.isParentOver) {\r\n\t\t\t\tthis.setExpanded(true);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t//click -tablet and below\r\n\t@HostListener('click', ['$event'])\r\n\thasClick(event: any) {\r\n\t\tif (this.isClickOnly) {\r\n\t\t\tthis.toggleExpanded();\r\n\t\t}\r\n\t}\r\n\t/* < MOUSE EVENTS */\r\n\r\n\t/* KEYBOARD EVENTS > */\r\n\t//***************************************************/\r\n\t//EVENTS THAT TRAVERSE OUT OF MENU\r\n\t//TAB\r\n\t@HostListener('keydown.tab', ['$event'])\r\n\tonTab(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSetFocusOutsideNavMenu(false);\r\n\t}\r\n\t\t//SHIFT TAB\r\n\t\t@HostListener('keydown.shift.tab', ['$event'])\r\n\t\tonShiftTab(e: KeyboardEvent) {\r\n\t\t\te.preventDefault();\r\n\t\t\tthis._mainNavService.broadcastSetFocusOutsideNavMenu(true);\r\n\t\t}\r\n\r\n\r\n\t//***************************************************/\r\n\t//EVENTS THAT CHANGE FIRST LEVEL LINK FOCUS\r\n\t//LEFT/RIGHT ARROWS\r\n\t//arrow right\r\n\t@HostListener('keydown.arrowright', ['$event'])\r\n\tonRightArrow(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastMenuKey(\"h-ar\");\r\n\t}\r\n\t//arrow left\r\n\t@HostListener('keydown.arrowleft', ['$event'])\r\n\tonLeftArrow(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastMenuKey(\"h-al\");\r\n\t}\r\n\t//***************************************************/\r\n\r\n\t//***************************************************/\r\n\t//EVENTS THAT OPEN THE SUBMENU\r\n\t// enter\r\n\t@HostListener('keydown.enter', ['$event'])\r\n\tonEnter(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSelectedHeaderExpand(this);\r\n\t\tthis._mainNavService.broadcastSetSelectedHeader(\"firstSubItem\");\r\n\t}\r\n\t// space\r\n\t@HostListener('keydown.space', ['$event'])\r\n\tonSpace(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSelectedHeaderExpand(this);\r\n\t\tthis._mainNavService.broadcastSetSelectedHeader(\"firstSubItem\");\r\n\t}\r\n\t// arrow down\r\n\t@HostListener('keydown.arrowdown', ['$event'])\r\n\tonArrowDown(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSelectedHeaderExpand(this);\r\n\t\tthis._mainNavService.broadcastSetSelectedHeader(\"firstSubItem\");\r\n\t}\r\n\t// arrow up\r\n\t@HostListener('keydown.arrowup', ['$event'])\r\n\tonArrowUp(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSelectedHeaderExpand(this);\r\n\t\tthis._mainNavService.broadcastSetSelectedHeader(\"lastSubItem\");\r\n\t}\r\n\t//***************************************************/\r\n\r\n\t//focus\r\n\t@HostListener('focus', ['$event'])\r\n\tonFocus(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSubHeaderFocus(this);\r\n\t\t//only trigger for keyboard event\r\n\t\tif (!this.isClickOnly) {\r\n\t\t\tthis._mainNavService.broadcastSelectedHeaderNoExpand(this);\r\n\t\t}\r\n\t}\r\n\t/* < KEYBOARD EVENTS */\r\n\r\n private mainNavSubscription = new Subscription();\r\n\r\n\r\n\tconstructor(\r\n\t\tprivate _mainNavService: MainNavService,\r\n\t\tpublic elRef?: ElementRef) {\r\n\r\n\t\t//Esc from submenu item, need to close the open menu\r\n\t\tconst selectedSubMenuHeaderNoExpandSubscription = this._mainNavService.selectedSubMenuHeaderNoExpand.subscribe((value: NavSubMenuHeaderDirectiveDirective) => {\r\n\t\t\tif (value && value.elRef !== undefined) {\r\n\t\t\t\tif (value === this && value.elRef.nativeElement.children.length > 0) {\r\n\t\t\t\t\t//close the open menu\r\n\t\t\t\t\tthis.setExpanded(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n });\r\n this.mainNavSubscription.add(selectedSubMenuHeaderNoExpandSubscription);\r\n\r\n\t\t//parent over\r\n const isSubMenuParentOverSubscription = this._mainNavService.isSubMenuParentOver.subscribe((value: NavSubMenuHeaderDirectiveDirective) => {\r\n\t\t\tif (value && value.elRef !== undefined) {\r\n\t\t\t\tif (value === this && value.elRef.nativeElement.children.length > 0) {\r\n\t\t\t\t\tthis.isParentOver = true;\r\n\t\t\t\t}\r\n\t\t\t}\r\n });\r\n this.mainNavSubscription.add(isSubMenuParentOverSubscription);\r\n\r\n\t\t//parent out\r\n const isSubMenuParentOutSubscription = this._mainNavService.isSubMenuParentOut.subscribe((value: NavSubMenuHeaderDirectiveDirective) => {\r\n\t\t\tif (value && value.elRef !== undefined) {\r\n\t\t\t\tif (value === this && value.elRef.nativeElement.children.length > 0) {\r\n\t\t\t\t\tthis.isParentOver = false;\r\n\t\t\t\t\t//close the open menu\r\n\t\t\t\t\tthis.setExpanded(false);\r\n\t\t\t\t}\r\n\t\t\t}\r\n });\r\n this.mainNavSubscription.add(isSubMenuParentOutSubscription);\r\n\t}\r\n\r\n\tngOnInit(): void {\r\n\t\tthis.setClickOnly();\r\n\t}\r\n\tngOnDestroy(): void {\r\n if (this.mainNavSubscription) {\r\n this.mainNavSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * Opens/closes sub menu\r\n\t */\r\n\ttoggleExpanded(): void {\r\n\t\tif (this.expanded === true) {\r\n\t\t\tthis.setExpanded(false);\r\n\t\t} else {\r\n\t\t\tthis.setExpanded(true);\r\n\t\t}\r\n\t}\r\n\r\n\tpublic setExpanded(val: boolean): void {\r\n\t\tthis.expanded = val;\r\n\t\tthis.expandedAria = val;\r\n\t}\r\n\t/**\r\n\t * Don't fire keyboard events on tablet and below\r\n\t */\r\n\tsetClickOnly(): void {\r\n\t\t//******************************************/\r\n\t\t//must match this number in variables.scss\r\n\t\t// $screen-lg-min:1040;\r\n\t\tthis.isClickOnly = window.innerWidth < 1040;\r\n\t\t//******************************************/\r\n\t\t//are we moving from tablet to desktop?\r\n\t\tif (this.isClickOnly) {\r\n\t\t\t//close any open menus\r\n\t\t\tthis.setExpanded(false);\r\n\t\t}\r\n\t}\r\n}\r\n","import { Directive, HostListener, ElementRef } from '@angular/core';\r\nimport { Router } from '@angular/router';\r\nimport { MainNavService } from '../../services/main-nav.service';\r\n\r\n@Directive({\r\n\tselector: '[appNavSubMenuItemDirective]'\r\n})\r\nexport class NavSubMenuItemDirectiveDirective {\r\n\r\n\t//*************************************************/\r\n\t//EVENTS THAT CLOSE THE SUB MENU\r\n\t//tab\r\n\t@HostListener('keydown.tab', ['$event'])\r\n\tonTab(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSetFocusOutsideNavMenu(false);\r\n\t\tthis._mainNavService.broadcastCloseOpenSubMenu(true);\t\r\n\t}\r\n\t//shift tab\r\n\t@HostListener('keydown.shift.tab', ['$event'])\r\n\tonShiftTab(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSetFocusOutsideNavMenu(true);\r\n\t\tthis._mainNavService.broadcastCloseOpenSubMenu(true);\t\r\n\t}\r\n\t//**************************************************************************/\r\n\t//arrow right\r\n\t@HostListener('keydown.arrowright', ['$event'])\r\n\tonRightArrow(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\t//this._mainNavService.broadcastCloseOpenSubMenu(true);\t\r\n\t\tthis._mainNavService.broadcastMenuKey(\"s-ar\");\r\n\t\tthis._mainNavService.broadcastSetSelectedHeader(\"firstSubItem\");\r\n\t}\r\n\t//arrow left\r\n\t@HostListener('keydown.arrowleft', ['$event'])\r\n\tonLeftArrow(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\t//this._mainNavService.broadcastCloseOpenSubMenu(true);\t\r\n\t\tthis._mainNavService.broadcastMenuKey(\"s-al\");\r\n\t\tthis._mainNavService.broadcastSetSelectedHeader(\"firstSubItem\");\r\n\t}\r\n\t//**************************************************************************/\r\n\t//esc\r\n\t@HostListener('keydown.esc', ['$event'])\r\n\tonEsc(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSelectHeaderBySubItemEsc(true);\r\n\t}\r\n\t//************************************************/\r\n\r\n\r\n\t//*************************************************/\r\n\t//EVENTS THAT MOVE BETWEEN SUB MENU ITEMS\r\n\t//arrow down\r\n\t@HostListener('keydown.arrowdown', ['$event'])\r\n\tonDownArrow(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSetSelectedHeader(\"nextSubItem\");\r\n\t}\r\n\t//arrow up\r\n\t@HostListener('keydown.arrowup', ['$event'])\r\n\tonUpArrow(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\tthis._mainNavService.broadcastSetSelectedHeader(\"previousSubItem\");\r\n\t}\r\n\t//*************************************************/\r\n\r\n\t//***************************************************/\r\n\t//EVENT THAT TRIGGERS GO TO URL\r\n\t//space bar\r\n\t@HostListener('keydown.space', ['$event'])\r\n\tonEnter(e: KeyboardEvent) {\r\n\t\te.preventDefault();\r\n\t\t//get anchor element\r\n const target = e.target as HTMLAnchorElement;\r\n if (target && target.pathname) {\r\n //navigate to the href\r\n this.router.navigate([target.pathname]);\r\n\t\t}\r\n\t}\r\n\t//***************************************************/\r\n\r\n\tconstructor(\r\n private _mainNavService: MainNavService,\r\n private router: Router,\r\n\t\tpublic elRef?: ElementRef) { }\r\n\r\n}\r\n","import { ContentChild, ContentChildren, Directive, ElementRef, HostListener, OnDestroy, QueryList} from '@angular/core';\r\nimport { Subscription } from 'rxjs';\r\nimport { MainNavService } from '../../services/main-nav.service';\r\nimport { NavSubMenuHeaderDirectiveDirective } from './nav-sub-menu-header.directive';\r\nimport { NavSubMenuItemDirectiveDirective } from './nav-sub-menu-item.directive';\r\n\r\n@Directive({\r\n\tselector: '[appNavSubMenuParentDirective]'\r\n})\r\nexport class NavSubMenuParentDirectiveDirective implements OnDestroy{\r\n\t//sub menu items\r\n\tprivate currentActiveSubMenuItem: NavSubMenuItemDirectiveDirective = new NavSubMenuItemDirectiveDirective(this._mainNavService, undefined);\r\n\t@ContentChildren(NavSubMenuItemDirectiveDirective, { descendants: true }) subMenuItems: QueryList = new QueryList();\r\n\r\n\t//sub menu header button\r\n\t@ContentChild(NavSubMenuHeaderDirectiveDirective) subMenuButton!: NavSubMenuHeaderDirectiveDirective;\r\n\tprivate currentSelectSubMenuHeader: NavSubMenuHeaderDirectiveDirective = new NavSubMenuHeaderDirectiveDirective(this._mainNavService, undefined);\r\n\r\n\t//subscriptions\r\n\t private mainNavMenuParentSubscription = new Subscription();\r\n\r\n\r\n\t//mouse over\r\n\t@HostListener('mouseenter', ['$event']) \r\n\thasOver(event: any) {\r\n\t\tthis._mainNavService.broadcastIsSubMenuParentOver(this.subMenuButton);\r\n\t}\r\n\t//mouse out\r\n\t@HostListener('mouseleave', ['$event'])\r\n\thasOut(event: any) {\r\n\t\tthis._mainNavService.broadcastIsSubMenuParentOut(this.subMenuButton);\r\n\t}\t\r\n\r\n\tconstructor(\r\n\t\tprivate _mainNavService: MainNavService,\r\n\t\tpublic elRef?: ElementRef) {\r\n\r\n const selectedSubMenuHeader = this._mainNavService.selectedSubMenuHeader.subscribe((value: NavSubMenuHeaderDirectiveDirective) => {\r\n\t\t\tthis.currentSelectSubMenuHeader = value;\r\n });\r\n this.mainNavMenuParentSubscription.add(selectedSubMenuHeader);\r\n\r\n const setSelectedSubMenuHeaderSubscription = this._mainNavService.setSelectedSubMenuHeader.subscribe((value: string) => {\r\n\t\t\t//only call if this matches the currently selected sub header\r\n\t\t\tif (this.currentSelectSubMenuHeader == this.subMenuButton) {\r\n\t\t\t\tswitch (value) {\r\n\t\t\t\t\tcase \"firstSubItem\":\r\n\t\t\t\t\t\tthis.setFirstSubNavItemFocus();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"nextSubItem\":\r\n\t\t\t\t\t\tthis.setNextSubNavMenuItemFocus();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"previousSubItem\":\r\n\t\t\t\t\t\tthis.setPreviousSubNavMenuItemFocus();\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\tcase \"lastSubItem\":\r\n\t\t\t\t\t\tthis.setLastSubNavItemFocus();\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t\tdefault:\r\n\t\t\t\t\t\tconsole.log(\"Missed case in NavSubMenuParentDirectiveDirective subscription: \" + value);\r\n\t\t\t\t}\r\n\t\t\t}\r\n });\r\n this.mainNavMenuParentSubscription.add(setSelectedSubMenuHeaderSubscription);\r\n\r\n const selectedSubMenuHeaderByEscSubscription = this._mainNavService.selectedSubMenuHeaderByEsc.subscribe((value: boolean) => {\r\n\t\t\tif (this.currentSelectSubMenuHeader == this.subMenuButton) {\r\n\t\t\t\t//send top level highlight, without sub menu expand\r\n\t\t\t\tthis._mainNavService.broadcastSelectedHeaderNoExpand(this.currentSelectSubMenuHeader);\r\n\t\t\t}\r\n });\r\n\r\n this.mainNavMenuParentSubscription.add(selectedSubMenuHeaderByEscSubscription);\r\n\r\n\t}\r\n\r\n\tngOnDestroy():void{\r\n if (this.mainNavMenuParentSubscription){\r\n this.mainNavMenuParentSubscription.unsubscribe();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t/* SUB menu items */\r\n\t/**\r\n\t * Highlight last sub menu item\r\n\t */\r\n\t private setLastSubNavItemFocus(): void {\r\n\t\tif (this.subMenuItems.last.elRef) {\r\n\t\t\tthis.setNavSubmenuItemFocus(this.subMenuItems.last);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * Highlight first sub menu item\r\n\t */\r\n\tprivate setFirstSubNavItemFocus(): void {\r\n\t\tif (this.subMenuItems.first.elRef) {\r\n\t\t\tthis.setNavSubmenuItemFocus(this.subMenuItems.first);\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * Highlight next sub menu item\r\n\t */\r\n\tprivate setNextSubNavMenuItemFocus(): void {\r\n\t\tlet index = this.getNavSubMenuIndex();\r\n\t\tconst next = this.subMenuItems.get(index + 1);\r\n\t\t//set next focus\r\n\t\tif (next && next.elRef) {\r\n\t\t\tthis.setNavSubmenuItemFocus(next);\r\n\t\t} else {\r\n\t\t\t//set FIRST focus\r\n\t\t\tthis.setFirstSubNavItemFocus();\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * Highlight previous sub menu item\r\n\t */\r\n\tprivate setPreviousSubNavMenuItemFocus(): void {\r\n\t\tlet index = this.getNavSubMenuIndex();\r\n\t\tconst prev = this.subMenuItems.get(index - 1);\r\n\t\t//set prev focus\r\n\t\tif (prev && prev.elRef) {\r\n\t\t\tthis.setNavSubmenuItemFocus(prev);\r\n\t\t} else {\r\n\t\t\t//set LAST focus\r\n\t\t\tif (this.subMenuItems.last.elRef) {\r\n\t\t\t\tthis.setNavSubmenuItemFocus(this.subMenuItems.last);\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * Returns index of currently active sub menu item\r\n\t */\r\n\tprivate getNavSubMenuIndex(): any {\r\n\t\tlet rtnIndex = -1;\r\n\t\tthis.subMenuItems.toArray().forEach((navMenuItem, index) => {\r\n\t\t\tif (navMenuItem === this.currentActiveSubMenuItem) {\r\n\t\t\t\trtnIndex = index;\r\n\t\t\t}\r\n\t\t});\r\n\t\treturn rtnIndex;\r\n\t}\r\n\t/**\r\n\t * Focus and set currently selected sub menu item\r\n\t */\r\n\tprivate setNavSubmenuItemFocus(navMenuItem: NavSubMenuItemDirectiveDirective): void {\r\n\t\tif (navMenuItem && navMenuItem.elRef) {\r\n\t\t\tthis.currentActiveSubMenuItem = navMenuItem;\r\n\t\t\t//@ts-ignore (had to set timeout to get the focus to work, seems to be a known issue)\r\n\t\t\tsetTimeout(() => navMenuItem.elRef.nativeElement.focus({ focusVisible: true }));\r\n\t\t}\r\n\t}\r\n}\r\n\r\n\r\n","import { Component, ElementRef, OnDestroy, OnInit, ViewChild } from '@angular/core';\r\nimport { finalize, Subscription } from 'rxjs';\r\nimport { FFUser, getUserOrgs } from '../../../models/users/ff-user.model';\r\nimport { Organization } from '../../../models/organizations/organization.model';\r\nimport { AuthService } from '../../../services/auth.service';\r\nimport { MainNavService } from '../../services/main-nav.service';\r\nimport { Router } from '@angular/router';\r\nimport { FFUserWithRoles } from '../../../models/users/ff-user-with-roles.model';\r\nimport { MainService } from '../../services/main.service';\r\nimport { LoaderData } from '../../models/loader-data.model';\r\n\r\n@Component({\r\n selector: 'ui-user-info',\r\n templateUrl: './user-info.component.html',\r\n styleUrls: ['./user-info.component.scss']\r\n})\r\nexport class UserInfoComponent implements OnInit, OnDestroy {\r\n public userInfo: FFUser;\r\n public verifiedUser: FFUser = undefined;\r\n public userOrgs: Organization[];\r\n public currentOrg: Organization;\r\n private subscription = new Subscription();\r\n @ViewChild('beforeNavMenu') beforeNavAnchor!: ElementRef;\r\n\r\n constructor(\r\n private authService: AuthService,\r\n private router: Router,\r\n private _mainService: MainService,\r\n private _mainNavService: MainNavService\r\n ) {\r\n const mainNav$ = this._mainNavService.setFocusOutsideNav.pipe(finalize(() => {\r\n this.subscription.add(mainNav$);\r\n })).subscribe((before: boolean) => {\r\n if (before) {\r\n this.beforeNavAnchor.nativeElement.focus();\r\n }\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n //hook up to auth service emitter\r\n const srv$ = this.authService.userInfoEmitter.pipe(finalize(() => {\r\n this.subscription.add(srv$);\r\n })).subscribe(result => {\r\n this.setUserInfo(result);\r\n }, error => {\r\n console.log('Error listening for auth service user info. ' + error);\r\n });\r\n\r\n this.authService.getUserInfo();\r\n }\r\n\r\n ngOnDestroy(): void {\r\n if (this.subscription) {\r\n this.subscription.unsubscribe();\r\n }\r\n }\r\n\r\n private setUserInfo(user: FFUserWithRoles) {\r\n this.userInfo = user;\r\n if (this.userInfo.emailConfirmed && this.userInfo.isActivated) {\r\n this.verifiedUser = this.userInfo;\r\n this.userOrgs = getUserOrgs(this.userInfo);\r\n this.currentOrg = this.userInfo.getCurrentOrg();\r\n }\r\n else {\r\n this.verifiedUser = null;\r\n }\r\n }\r\n\r\n public onLogoutClick(): void {\r\n this._mainService.showLoading({ loading: true, loadingText: \"Logging you out.\" } as LoaderData);\r\n const logoutSub$ = this.authService.logout(this.userInfo.id, \"/\").pipe(finalize(() => {\r\n this.subscription.add(logoutSub$);\r\n this._mainService.showLoading({ loading: false });\r\n })).subscribe((result: { iFrameUrl: string, postLogoutRedirectUri: string }) => {\r\n this.authService.resetServiceState();\r\n this.authService.userInfoEmitter.emit(new FFUserWithRoles);\r\n this.router.navigate([result.postLogoutRedirectUri]);\r\n }, error => {\r\n console.log('Error trying to log out. ' + error);\r\n });\r\n }\r\n}\r\n","
\r\n
{{userInfo.firstName}} {{userInfo.lastName}}, {{(currentOrg.organizationName.length > 20)? (currentOrg.organizationName | slice:0:20)+'..':(currentOrg.organizationName)}}
\r\n
{{currentOrg.isOperator ? 'Operator' : currentOrg.isServiceComp ? 'Service Company' : currentOrg.isRegisteredAgent ? 'Registered Agent' : currentOrg.isGovAgency ? 'Gov. Agency' : ''}} | Num: {{currentOrg.operatorNumber ? currentOrg.operatorNumber : ''}}
\r\n
\r\n
\r\n User Account\r\n \r\n \r\n
\r\n Logout \r\n
1\">\r\n Switch Organization\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n Login or\r\n Register\r\n
\r\n
\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { NavSubMenuHeaderDirectiveDirective } from '../../ui/components/main-nav/nav-sub-menu-header.directive';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MainNavService {\r\n /**************************************************************************************************************************/\r\n //TODO Make Observables?\r\n menuKey: Subject = new Subject();\r\n menuShiftTab: Subject = new Subject();\r\n subMenuHeaderTabClick: Subject = new Subject();\r\n subHeaderFocus: Subject = new Subject();\r\n closeOpenSubMenu: Subject = new Subject();\r\n selectedSubMenuHeader: Subject = new Subject();\r\n selectedSubMenuHeaderNoExpand: Subject = new Subject();\r\n setSelectedSubMenuHeader: Subject = new Subject();\r\n selectedSubMenuHeaderByEsc: Subject = new Subject();\r\n setFocusOutsideNav: Subject = new Subject();\r\n isSubMenuParentOver: Subject = new Subject();\r\n isSubMenuParentOut: Subject = new Subject();\r\n /**************************************************************************************************************************/\r\n constructor() { }\r\n\r\n //set selected header and expand sub menu\r\n //1. sub menu header focus event on desktop, 2. sub menu header tab click, 3. sub menu shift tab\r\n public broadcastSelectedHeaderExpand(value: NavSubMenuHeaderDirectiveDirective) {\r\n this.selectedSubMenuHeader.next(value);\r\n }\r\n //select a sub menu header but not expand the sub menu\r\n //1. triggered by selectSubMenuHeaderByEsc\r\n public broadcastSelectedHeaderNoExpand(value: NavSubMenuHeaderDirectiveDirective) {\r\n this.selectedSubMenuHeaderNoExpand.next(value);\r\n }\r\n\r\n //1. Sub menu header select the first menu item, 2. sub menu item arrow up, 3. sub menu item arrow down\r\n public broadcastSetSelectedHeader(value: string) {\r\n this.setSelectedSubMenuHeader.next(value);\r\n }\r\n //esc on submenu item, need to close menu and select top level sub menu button\r\n //1. sub menu item esc\r\n public broadcastSelectHeaderBySubItemEsc(value: boolean) {\r\n this.selectedSubMenuHeaderByEsc.next(value);\r\n }\r\n //open submenu, tab keyboard event\r\n //1. sub menu header arrow right, 2. sub menu item tab, 3. sub menu right arrow\r\n public broadcastMenuKey(value: string) {\r\n this.menuKey.next(value);\r\n }\r\n //open menu, shift tab event\r\n //1. sub header shift tab, 2. sub header arrow left, 3. sub menu item shift tab, 4. sub menu item arrow left\r\n public broadcastMenuShiftTab(value: string) {\r\n this.menuShiftTab.next(value);\r\n }\r\n //sub header button focus\r\n //1. sub header focus\r\n public broadcastSubHeaderFocus(value: NavSubMenuHeaderDirectiveDirective) {\r\n this.subHeaderFocus.next(value);\r\n }\r\n //close any open sub menu\r\n public broadcastCloseOpenSubMenu(value: boolean) {\r\n this.closeOpenSubMenu.next(value);\r\n }\r\n //move foucs outside on nav bar\r\n public broadcastSetFocusOutsideNavMenu(before: boolean): void {\r\n this.setFocusOutsideNav.next(before);\r\n }\r\n\r\n public broadcastIsSubMenuParentOver(value: NavSubMenuHeaderDirectiveDirective) {\r\n this.isSubMenuParentOver.next(value);\r\n }\r\n public broadcastIsSubMenuParentOut(value: NavSubMenuHeaderDirectiveDirective) {\r\n this.isSubMenuParentOut.next(value);\r\n }\r\n}\r\n","import { Injectable } from '@angular/core';\r\nimport { Subject } from 'rxjs';\r\nimport { LoaderData } from '../models/loader-data.model';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class MainService {\r\n /******************************************************/\r\n //TODO Make Observables?\r\n isDashboard: Subject = new Subject();\r\n mainHeight: Subject = new Subject();\r\n isLoading: Subject = new Subject();\r\n /******************************************************/\r\n public initialMainHeight: number = 0;\r\n\r\n\r\n\r\n constructor() { }\r\n\r\n public mainDashboardLayout(value: boolean) {\r\n this.isDashboard.next(value);\r\n }\r\n\r\n public showLoading(loadingData: LoaderData) {\r\n this.isLoading.next(loadingData);\r\n }\r\n\r\n public availableMainHeight(value: number) {\r\n this.initialMainHeight = value;\r\n this.mainHeight.next(value);\r\n }\r\n\r\n}\r\n","import { CASNumberShort } from \"../../../../common/models/disclosures/cas-number-short.model\";\r\nimport { CASNumber } from \"../../../../common/models/disclosures/cas-number.model\";\r\n\r\nexport class CASNumberWithNgSelectDisplayField extends CASNumberShort {\r\n numberAndDescription: string;\r\n isATemporaryEntry: boolean;\r\n\r\n constructor(casNumber: CASNumberShort) {\r\n super();\r\n\r\n if (!casNumber || !casNumber.ingredientName) {\r\n this.isATemporaryEntry = true;\r\n }\r\n else {\r\n this.isATemporaryEntry = false;\r\n }\r\n\r\n this.casNumber = casNumber.casNumber;\r\n this.commonName = casNumber.commonName;\r\n this.isCommonName = casNumber.isCommonName;\r\n this.ingredientName = casNumber.ingredientName;\r\n if (casNumber.ingredientName !== null && casNumber.ingredientName !== \"\" && casNumber.ingredientName !== undefined) {\r\n this.numberAndDescription = casNumber.casNumber + \" : \" + casNumber.ingredientName;\r\n }\r\n else {\r\n this.numberAndDescription = casNumber.casNumber;\r\n }\r\n }\r\n}\r\n","import { Component, Inject } from '@angular/core';\r\nimport { HttpClient } from '@angular/common/http';\r\nimport { FFUser } from '../common/models/users/ff-user.model';\r\nimport { UserService } from '../common/services/user.service';\r\nimport { Organization } from '../common/models/organizations/organization.model';\r\nimport { AuthService } from '../common/services/auth.service';\r\n\r\n@Component({\r\n selector: 'app-fetch-data',\r\n templateUrl: './fetch-data.component.html'\r\n})\r\nexport class FetchDataComponent {\r\n public forecasts: WeatherForecast[] = [];\r\n public userInfo: FFUser | null = null;\r\n public claims:any[] = [];\r\n\r\n constructor(http: HttpClient, @Inject('BASE_URL') baseUrl: string,\r\n private authService: AuthService, private userService: UserService) {\r\n http.get(baseUrl + 'weatherforecast').subscribe(result => {\r\n this.forecasts = result;\r\n }, error => console.error(error));\r\n this.authService.getClaims().subscribe(res => { this.claims = res; }, err => { });\r\n this.authService.getUserInfo().then(res => this.userInfo = res);\r\n this.userService.getOrgsShort().then(res => {});\r\n this.userService.getUsersShort().then(res => {});\r\n this.userService.getMyCompany(\"0898C2D7-5A42-450D-B7F6-A11832E65F57\").subscribe(res => { });\r\n }\r\n}\r\n\r\ninterface WeatherForecast {\r\n date: string;\r\n temperatureC: number;\r\n temperatureF: number;\r\n summary: string;\r\n}\r\n","

Weather forecast

\r\n\r\n

This component demonstrates fetching data from the server.

\r\n
\r\n
    \r\n
  • {{m.organization.organizationName}} - {{m.orgRole.value}}
  • \r\n
\r\n\r\n
\r\n

Loading...

\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
TypeValue
{{ c.type }}{{ c.value }}
\r\n","import { Component, OnInit } from '@angular/core';\r\nimport { FFUser } from '../common/models/users/ff-user.model';\r\nimport { AuthService } from '../common/services/auth.service';\r\nimport { DropdownService } from '../common/services/dropdown.service';\r\n\r\n@Component({\r\n selector: 'app-home',\r\n templateUrl: './home.component.html',\r\n styleUrls: ['./home.component.scss']\r\n})\r\nexport class HomeComponent implements OnInit {\r\n public userInfo: FFUser;\r\n public isOpenPageModalShowing: boolean = false\r\n public linkToOpen: string;\r\n public supportEmail: any;\r\n\r\n constructor(private authService: AuthService, private dropdownService: DropdownService) { }\r\n\r\n ngOnInit(): void {\r\n this.authService.getUserInfo().then(res => {\r\n this.userInfo = res;\r\n });\r\n this.dropdownService.getGlobalDefaults().then(gd => {\r\n this.supportEmail = gd.find(x => x.globalDefaultId == \"SupportEmail\")?.textValue\r\n });\r\n }\r\n\r\n public closeOpenPageModal() { this.isOpenPageModalShowing = false, this.linkToOpen = '' }\r\n\r\n public openExternalLink(link: string) {\r\n this.linkToOpen = link;\r\n this.isOpenPageModalShowing = true;\r\n }\r\n\r\n public handleOk() {\r\n window.open(this.linkToOpen, \"_blank\");\r\n this.isOpenPageModalShowing = false;\r\n }\r\n\r\n public handleCancel() {\r\n this.isOpenPageModalShowing = false;\r\n this.linkToOpen = '';\r\n }\r\n}\r\n","
\r\n

Welcome

\r\n
\r\n
\r\n

\r\n This Chemical Disclosure Registry website (FracFocus) facilitates the data collection of chemicals used during the fracturing of oil and gas wells. For access to the data and educational materials on FracFocus please visit the public website at \r\n FracFocus.Org. These websites, hosted by the \r\n Ground Water Protection Council (GWPC), provide a central location for public and industry to communicate and relay information on the chemicals used during the process of hydraulic fracturing of oil and gas wells. The FracFocus website provides education tools to the public on the topic of hydraulic fracturing in relation to the data collected here.\r\n

\r\n

\r\n GWPC is uniquely suited to host these websites due to their impartial nature and ties to the regulatory community. This website provides a means for industry to supply hydraulic fracturing chemical data in a consistent and centralized location. This open process assists both public and industry by supplying a centralized repository for the data.\r\n

\r\n
These websites provide the following:
\r\n
    \r\n
  • \r\n A means to Search for submitted chemical records by State/County, Operator and Well.\r\n
  • \r\n
  • \r\n An Education and Informative site for the public and industry on Hydraulic Fracturing Chemicals.\r\n
  • \r\n
\r\n

\r\n FracFocus has instituted a Help Desk to address any issues you may have in using the system. You can reach the Help Desk by sending an email to: {{supportEmail}}.\r\n

\r\n
\r\n \r\n
\r\n
\r\n\r\n\r\n
\r\n

\r\n The system is about to open an external page, do you wish to continue?\r\n

\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n","import { Component, ElementRef, Input, NgZone, OnInit, ViewChild } from '@angular/core';\r\nimport { createPopper } from '@popperjs/core';\r\nimport { NgxPopperjsOptions, NgxPopperjsPlacements, NgxPopperjsTriggers } from 'ngx-popperjs';\r\nimport { DeviceDetectorService } from 'ngx-device-detector';\r\n\r\n@Component({\r\n selector: 'app-popper-tool-tip',\r\n templateUrl: './popper-tool-tip.component.html',\r\n styleUrls: ['./popper-tool-tip.component.scss']\r\n})\r\nexport class PopperToolTipComponent implements OnInit {\r\n @ViewChild('tooltipElement', { static: true }) tooltipElement!: ElementRef;\r\n title: string = \"\";\r\n @Input() iconColor: string=\"BLUE\";\r\n @Input() heightInPx: string = \"16px\";\r\n @Input() widthInPx: string = \"16px\";\r\n @Input() screenReaderText: string = \"\";\r\n @Input() popperPlacementParam: NgxPopperjsPlacements | Function = NgxPopperjsPlacements.AUTO;\r\n @Input() isHtmlContent:boolean = false;\r\n popperPlacement: NgxPopperjsPlacements;\r\n popperTrigger: NgxPopperjsTriggers = this.deviceService.isDesktop() ? NgxPopperjsTriggers.hover : NgxPopperjsTriggers.click;\r\n\r\n constructor(private ngZone: NgZone, private deviceService: DeviceDetectorService) { }\r\n\r\n ngOnInit(): void {\r\n\r\n this.popperPlacement = this.popperPlacementParam instanceof Function ? this.popperPlacementParam() : this.popperPlacementParam;\r\n }\r\n\r\n}\r\n","
\r\n \r\n
\r\n\r\n {{screenReaderText}}\r\n
\r\n
\r\n\r\n","export const environment = {\r\n production: false,\r\n recaptcha: {\r\n siteKey: '6LdTbvoiAAAAABfbwVs-wlU-lT0z-036wSM5O4t4',\r\n },\r\n aggridlicense: 'Using_this_AG_Grid_Enterprise_key_( AG-049717 )_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_( legal@ag-grid.com )___For_help_with_changing_this_key_please_contact_( info@ag-grid.com )___( Johnson, Mirmiran & Thompson, Inc. )_is_granted_a_( Multiple Applications )_Developer_License_for_( 7 )_Front-End_JavaScript_developers___All_Front-End_JavaScript_developers_need_to_be_licensed_in_addition_to_the_ones_working_with_AG_Grid_Enterprise___This_key_has_been_granted_a_Deployment_License_Add-on_for_( 7 )_Production_Environments___This_key_works_with_AG_Grid_Enterprise_versions_released_before_( 5 March 2025 )____[v2]_MTc0MTEzMjgwMDAwMA==0f2cd7d7465a1234d1857645752bade9'\r\n};\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\nimport { LicenseManager } from 'ag-grid-enterprise';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\n//If the key is set in the environment use it, else fall back to last known good key.\r\nif (environment.aggridlicense) {\r\n LicenseManager.setLicenseKey(environment.aggridlicense);\r\n}\r\nelse {\r\n LicenseManager.setLicenseKey(\"Using_this_AG_Grid_Enterprise_key_( AG-049717 )_in_excess_of_the_licence_granted_is_not_permitted___Please_report_misuse_to_( legal@ag-grid.com )___For_help_with_changing_this_key_please_contact_( info@ag-grid.com )___( Johnson, Mirmiran & Thompson, Inc. )_is_granted_a_( Multiple Applications )_Developer_License_for_( 7 )_Front-End_JavaScript_developers___All_Front-End_JavaScript_developers_need_to_be_licensed_in_addition_to_the_ones_working_with_AG_Grid_Enterprise___This_key_has_been_granted_a_Deployment_License_Add-on_for_( 7 )_Production_Environments___This_key_works_with_AG_Grid_Enterprise_versions_released_before_( 5 March 2025 )____[v2]_MTc0MTEzMjgwMDAwMA==0f2cd7d7465a1234d1857645752bade9\");\r\n}\r\n\r\nexport function getBaseUrl() {\r\n return document.getElementsByTagName('base')[0].href;\r\n}\r\n\r\nconst providers = [\r\n { provide: 'BASE_URL', useFactory: getBaseUrl, deps: [] as any[] }\r\n];\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic(providers).bootstrapModule(AppModule)\r\n .catch(err => console.log(err));\r\n"],"names":["UserManager","BehaviorSubject","concat","from","filter","map","mergeMap","take","tap","ApplicationPaths","ApplicationName","AuthenticationResultStatus","AuthorizeService","constructor","isAuthenticated","getUser","pipe","u","userSubject","getUserFromStorage","next","asObservable","getAccessToken","ensureUserManagerInitialized","userManager","user","access_token","signIn","state","signinSilent","createArguments","profile","success","silentError","console","log","popUpDisabled","Error","signinPopup","popupError","message","error","completeSignIn","redirect","redirectError","url","signinCallback","signOut","signoutPopup","popupSignOutError","signoutRedirect","redirectSignOutError","completeSignOut","response","signoutCallback","text","revokeAccessToken","useReplaceToNavigate","data","status","Fail","Success","Redirect","undefined","fetch","ApiAuthorizationClientConfigurationUrl","ok","settings","json","automaticSilentRenew","includeIdTokenInSilentRenew","events","addUserSignedOut","removeUser","factory","providedIn","ChangeDetectorRef","SimpleChanges","AgGridAngular","OpenDeleteCellComponent","UntypedFormControl","UntypedFormGroup","OpenRollbackCellComponent","AmendCellComponent","first","DownloadXmlCellComponent","DateCellRendererComponent","LU_Status","i0","FileSaver","require","DisclosureListComponent","changeDetectorRef","dropdownService","mainService","disclosureService","loggingService","router","authService","fileService","agGridHelperService","userService","field","headerName","cellClass","editable","width","valueGetter","apiValueGetter","bind","suppressColumnsToolPanel","lockVisible","colId","hide","cellRenderer","disclosure","operatorName","resizable","filterParams","buttons","dateFormat","comparator","dateFilterComparer","headerTooltip","longitude","latitude","projection","tvd","isFederalWell","isIndianWell","lastModifiedBy","totalBaseWaterVolume","entryMethod","serviceCompanyName","OpenCellComponent","buildGridOptions","gridOptions","defaultColDef","sortable","excelStyles","getDefaultExcelStyles","pagination","editType","accentedSort","rowHeight","suppressContextMenu","suppressClickEdit","suppressMenuHide","rowClassRules","params","editMode","disabled","ngOnInit","gridHelpText","gridInfoHelpText","getUserInfo","then","userInfo","currentOrganizationId","showLoading","loading","isReadOnly","hasOrgRole","isAdmin","currentOrg","getCurrentOrg","isServiceComp","isRegisteredAgent","getMyCompany","organizationId","subscribe","res","orgRelations","organizationRelations","x","organization","isOperator","statusId","Active","err","filteredColDefs","getColumnDefs","detectChanges","getCounties","ctys","counties","getStates","states","onGridReady","gridApi","api","onActionTrigger","event","triggerAction","setColumnDefs","sizeColumnsToFit","window","onresize","action","modalVisible","selectedDisclosure","modalAmendVisible","modalRollbkVisible","viewPdf","viewXml","statusFormatter","value","formUpdated","$event","target","disclosuresFiltered","pending","submitted","amending","deleted","deletedByOperator","all","view","primaryOrg","defs","columnDefs","amendDateCol","amendReasonCol","amendedReason","publicStatus","ffVersionCol","ffVersion","submitDate","statusCol","valueFormatter","routedByCol","routedBy","uploadedDirectly","origSubmitDate","submittedByCol","submittedBy","push","d","ngOnChanges","changes","disclosures","currentValue","setCollectionsAndTotals","parentComponentName","gridHeight","calculateMinMaxGridHeight","length","ascendingDateComparer","firstDate","secondDate","dateA","Date","getTime","dateB","descendingDateComparer","ascendingStringComparer","a","b","localeCompare","descendingStringComparer","userCurrentOrg","serviceCompDisclosures","currentOrgId","sort","lastModifiedDate","d_1","x_1","apiNumber","d_2","d_3","primaryOrganizationId","x_5","regAgentDisclosures","find","o","operatorOrganizationId","x_2","d_4","x_4","some","d_5","fracJobId","x_3","isDisclosureAmending","totalPending","totalSubmitted","totalAmending","totalDeleted","totalDeletedByOperator","totalAll","cancelDelete","confirmDelete","deleteDisclosure","disclosureId","e","modalClosed","cancelAmend","confirmAmend","SetMyDisclosureToAmending","navigate","modalAmendClosed","ngOnDestroy","confirmRollback","rollBackMyDisclosure","submittedDisclosure","editCount","finally","cancelRollback","formattedValue","formatAPINumber","generateDisclosureXml","xml","saveAs","wellName","matched","open","encodeURIComponent","pdfName","exportToCSV","exportDataToExcel","selectors","viewQuery","ctx"],"sourceRoot":"webpack:///","x_google_ignoreList":[]}