{"version":3,"file":"js/app.6d31d805.js","mappings":";;;;;;;;;;;;AAA0C;AAC0C;AAE7E,MAAM,WAAW;IAkDpB,MAAM,KAAK,QAAQ;QACf,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,OAAO,IAAI,CAAC,yBAAyB,CAAC;SACzC;QACD,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;QAChE,QAAQ,MAAM,EAAE;YACZ,KAAK,UAAU;gBACX,OAAO,WAAW,CAAC,4BAA4B,CAAC;YAEpD,QAAQ;YACR,KAAK,MAAM;gBACP,OAAO,WAAW,CAAC,wBAAwB,CAAC;YAChD,KAAK,MAAM;gBACP,OAAO,WAAW,CAAC,wBAAwB,CAAC;YAChD,KAAK,OAAO;gBACR,OAAO,WAAW,CAAC,yBAAyB,CAAC;YACjD,KAAK,QAAQ;gBACT,OAAO,WAAW,CAAC,0BAA0B,CAAC;YAClD,KAAK,MAAM;gBACP,OAAO,WAAW,CAAC,wBAAwB,CAAC;SACnD;IACL,CAAC;IAqFD,MAAM,CAAC,aAAa,CAAC,OAAe;QAChC,0CAA0C;QAC1C,IAAI,SAAS,GAAG,OAAO;aAClB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;aACvB,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC;aACrB,OAAO,CAAC,iBAAiB,EAAE,iBAAiB,CAAC,CAAC;QACnD,OAAO,SAAS,CAAC;IACrB,CAAC;;AAjKM,uBAAW,GAAG,aAAa,CAAC,CAAC,6DAA6D;AAC1F,oBAAQ,GAAG,yEAAgB,CAAC;AAC5B,qBAAS,GAAG,CAAC,YAAoB,KAAK,aAAa,CAAC,CAAC;AAE5D,eAAe;AACA,oBAAQ,GAAG,iCAAiC,CAAC;AAC7C,oBAAQ,GAAG,kCAAkC,CAAC;AAC9C,yBAAa,GAAG,2CAA2C,CAAC;AAC5D,mBAAO,GAAG,qCAAqC,CAAC;AAChD,kBAAM,GAAG,oCAAoC,CAAC;AAC9C,oBAAQ,GAAG,2BAA2B,CAAC;AACvC,sBAAU,GAAG,uBAAuB,CAAC;AACrC,qBAAS,GAAG,2BAA2B,CAAC;AAExC,mCAAuB,GAAG,IAAI,CAAC;AAEvC,mBAAO,GACV,CAAC,WAAW,CAAC,SAAS,CAAC;IACnB,CAAC,CAAC,WAAW,CAAC,OAAO,CAAE,eAAe;IACtC,CAAC,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,gBAAgB;AAEzC,yBAAa,GAAG,WAAW,CAAC,aAAa,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;AAEtE,kBAAkB;AACX,iCAAqB,GAAG,4EAA4E,CAAC;AACrG,kCAAsB,GAAG,wEAAwE,CAAC;AAClG,6BAAiB,GAAG,wEAAwE,CAAC;AAC7F,+BAAmB,GAAG,wEAAwE,CAAC;AAEtG,uBAAuB;AAChB,iCAAqB,GAAG,wEAAwE,CAAC;AACjG,iCAAqB,GAAG,wEAAwE,CAAC;AACjG,kCAAsB,GAAG,wEAAwE,CAAC;AAClG,mCAAuB,GAAG,wEAAwE,CAAC;AACnG,iCAAqB,GAAG,wEAAwE,CAAC;AACjG,iCAAqB,GAAG,wEAAwE,CAAC;AAExG,kBAAkB;AACX,qCAAyB,GAAG,wEAAwE,CAAC;AACrG,wCAA4B,GAAG,wEAAwE,CAAC;AACxG,oCAAwB,GAAG,wEAAwE,CAAC;AACpG,oCAAwB,GAAG,wEAAwE,CAAC;AACpG,qCAAyB,GAAG,wEAAwE,CAAC;AACrG,sCAA0B,GAAG,wEAAwE,CAAC;AACtG,oCAAwB,GAAG,wEAAwE,CAAC;AAEpG,0BAAc,GAAG,CAAC,WAAW,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,KAAK,WAAW,CAAC,SAAS,IAAI,WAAW,CAAC,OAAO,KAAK,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,uBAAuB,CAAC;AAyB7M,WAAW;AACJ,qBAAS,GAAG,sCAAsC,CAAC;AACnD,qBAAS,GAAW,CAAC,WAAW,CAAC,SAAS,CAAC;IAC9C,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,KAAK,WAAW,CAAC,QAAQ,CAAC,CAAC;QAC7C,WAAW,CAAC,sBAAsB;QAClC,CAAC,CAAC,WAAW,CAAC,qBAAqB,CAAC;IACxC,CAAC,CAAC,WAAW,CAAC,iBAAiB,CAAC;AAC7B,yBAAa,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,+BAA+B,CAAC,CAAC,CAAC,+BAA+B,CAAC;AAC/G,sBAAU,GAAG,KAAK,CAAC;AACnB,sBAAU,GAAG,MAAM,CAAC;AACpB,2BAAe,GAAG,KAAK,CAAC;AACxB,yBAAa,GAAG,KAAK,CAAC;AACtB,wBAAY,GAAG,MAAM,CAAC;AACtB,wBAAY,GAAG,IAAI,CAAC;AACpB,+BAAmB,GAAG,IAAI,CAAC;AAC3B,gCAAoB,GAAY,KAAK,CAAC;AACtC,uBAAW,GAAG,EAAE,CAAC;AAGxB,OAAO;AACA,sBAAU,GAAG,kBAAkB,CAAC;AAChC,qBAAS,GAAG,aAAa,CAAC;AAC1B,oBAAQ,GAAG,kBAAkB,CAAC;AAC9B,qBAAS,GAAG,gBAAgB,CAAC;AAEpC,UAAU;AACH,eAAG,GAAG,KAAK,CAAC;AACZ,eAAG,GAAG,KAAK,CAAC;AACZ,eAAG,GAAG,KAAK,CAAC;AAEnB,SAAS;AACF,0BAAc,GAAG,SAAS,CAAC;AAC3B,4BAAgB,GAAG,SAAS,CAAC;AAC7B,4BAAgB,GAAG,SAAS,CAAC;AAC7B,4BAAgB,GAAG,SAAS,CAAC;AAEpC,oBAAoB;AACb,kCAAsB,GAAG,iHAAuB,CAAC;AAExD,SAAS;AACF,6BAAiB,GAAG,mCAAmC,CAAC;AACxD,yBAAa,GAAG,sCAAsC,CAAC;AACvD,yBAAa,GAAG,8BAA8B,CAAC;AAC/C,2BAAe,GAAG,4BAA4B,CAAC;AAC/C,uBAAW,GAAG,gCAAgC,CAAC;AAC/C,uBAAW,GAAG,gCAAgC,CAAC;AAC/C,4BAAgB,GAAG,qCAAqC,CAAC;AACzD,4BAAgB,GAAG,qCAAqC,CAAC;AACzD,2BAAe,GAAG,iCAAiC,CAAC;AACpD,0BAAc,GAAG,iCAAiC,CAAC;AAE1D,SAAS;AACF,gCAAoB,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,yBAAyB,CAAC,CAAC;AAE9F,SAAS;AACF,yBAAa,GAAG,SAAS,CAAC;AAEjC,YAAY;AACL,0BAAc,GAAG,gBAAgB,CAAC;AAEzC,OAAO;AAEA,sBAAU,GAAG,6CAA6C,CAAC;AAElE,MAAM;AACC,6BAAiB,GAAG,+BAA+B,CAAC;AACpD,sBAAU,GAAG,oCAAoC,CAAC;AAEzD,WAAW;AACJ,uBAAW,GAAW,yFAAyF,CAAC;AAEhH,0BAAc,GAAG;IACpB,MAAM,EAAE,yCAAyC;IACjD,UAAU,EAAE,oCAAoC;IAChD,WAAW,EAAE,2CAA2C;IACxD,SAAS,EAAE,oBAAoB;IAC/B,aAAa,EAAE,gCAAgC;IAC/C,iBAAiB,EAAE,cAAc;IACjC,KAAK,EAAE,2CAA2C;IAClD,aAAa,EAAE,cAAc;CAChC,CAAC;AAYF,sBAAsB;AACf,4BAAgB,GAAG,IAAI,CAAC;AACxB,gCAAoB,GAAG,IAAI,CAAC;AAC5B,oCAAwB,GAAG,IAAI,CAAC;AAChC,uCAA2B,GAAG,KAAK,CAAC;AACpC,qCAAyB,GAAG,IAAI,CAAC;AAExC,sBAAsB;AACf,iCAAqB,GAAG,IAAI,CAAC;AAC7B,oCAAwB,GAAG,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjL5C,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,uDAAO;IACP,qDAAM;IACN,uDAAO;AACX,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAGD,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,6CAAI;IACJ,6CAAI;IACJ,+CAAK;IACL,mDAAO;AACX,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,6CAAI;IACJ,+CAAK;IACL,6CAAI;IACJ,6CAAI;AACR,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAGD,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,6DAAQ;IACR,mEAAW;IACX,2DAAO;AACX,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAGD,IAAY,aAUX;AAVD,WAAY,aAAa;IACrB,iDAAI;IACJ,uDAAO;IACP,iEAAY;IACZ,+DAAW;IACX,mEAAa;IACb,uDAAO;IACP,mEAAa;IACb,+DAAW;IACX,6DAAU;AACd,CAAC,EAVW,aAAa,KAAb,aAAa,QAUxB;AAED,IAAY,UASX;AATD,WAAY,UAAU;IAClB,qDAAS;IACT,iDAAO;IACP,+CAAM;IACN,iDAAO;IACP,6CAAK;IACL,qDAAS;IACT,iDAAO;IACP,mDAAQ;AACZ,CAAC,EATW,UAAU,KAAV,UAAU,QASrB;AAGD,aAAa;AACb,kEAAkE;AAElE,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,6CAAK;IACL,2CAAI;IACJ,2CAAI;IACJ,2CAAI;IACJ,2CAAI;IACJ,+CAAM;IACN,+CAAM;AACV,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAED,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC1B,0BAA0B;IAC1B,qFAAiB;IACjB,2EAAY;IACZ,2FAAoB;AACxB,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAED,IAAY,iBAMX;AAND,WAAY,iBAAiB;IACzB,yDAAI;IACJ,+DAAO;IACP,qEAAU;IACV,+DAAO;IACP,qEAAc;AAClB,CAAC,EANW,iBAAiB,KAAjB,iBAAiB,QAM5B;AAED,IAAY,0BAMX;AAND,WAAY,0BAA0B;IAClC,2EAAQ;IACR,+EAAU;IACV,2FAAgB;IAChB,uGAAsB;IACtB,6GAAyB;AAC7B,CAAC,EANW,0BAA0B,KAA1B,0BAA0B,QAMrC;AAED,IAAY,oBASX;AATD,WAAY,oBAAoB;IAC5B,+DAAQ;IACR,6FAAmB;IACnB,2FAAkB;IAClB,+EAAY;IACZ,iGAAqB;IACrB,6FAAmB;IACnB,6GAA2B;IAC3B,6EAAW;AACf,CAAC,EATW,oBAAoB,KAApB,oBAAoB,QAS/B;AAED,IAAY,kBAaX;AAbD,WAAY,kBAAkB;IAC1B,2DAAQ;IACR,6EAAiB;IACjB,2EAAgB;IAChB,qEAAa;IACb,2EAAgB;IAChB,qEAAa;IACb,mFAAoB;IACpB,yEAAe;IACf,yFAAuB;IACvB,mFAAoB;IACpB,4EAAiB;IACjB,kGAA4B;AAChC,CAAC,EAbW,kBAAkB,KAAlB,kBAAkB,QAa7B;AAED,iCAAiC;AACjC,UAAU;AACV,UAAU;AACV,WAAW;AACX,UAAU;AACV,eAAe;AACf,aAAa;AACb,YAAY;AACZ,SAAS;AACT,SAAS;AACT,IAAI;AAEJ,IAAY,WAQX;AARD,WAAY,WAAW;IACnB,6CAAI;IACJ,6CAAI;IACJ,mDAAO;IACP,2CAAG;IACH,6CAAI;IACJ,+CAAK;IACL,qDAAQ;AACZ,CAAC,EARW,WAAW,KAAX,WAAW,QAQtB;AAED,IAAY,WAMX;AAND,WAAY,WAAW;IACnB,6CAAI;IACJ,iDAAM;IACN,uDAAS;IACT,qDAAQ;IACR,+CAAK;AACT,CAAC,EANW,WAAW,KAAX,WAAW,QAMtB;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,+CAAK;IACL,2DAAW;IACX,uDAAS;AACb,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,IAAY,YASX;AATD,WAAY,YAAY;IACpB,+CAAQ;IACR,mDAAM;IACN,qDAAO;IACP,yDAAS;IACT,uDAAQ;IACR,mDAAM;IACN,uDAAQ;IACR,mDAAM;AACV,CAAC,EATW,YAAY,KAAZ,YAAY,QASvB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACnB,yDAAU;IACV,+CAAK;AACT,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,IAAY,WAGX;AAHD,WAAY,WAAW;IACnB,qDAAQ;IACR,mDAAO;AACX,CAAC,EAHW,WAAW,KAAX,WAAW,QAGtB;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,6CAAI;IACJ,uDAAS;IACT,yDAAU;IACV,+DAAa;AACjB,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAED,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC5B,6DAAG;IACH,+DAAI;IACJ,+DAAI;AACR,CAAC,EAJW,oBAAoB,KAApB,oBAAoB,QAI/B;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,qDAAG;IACH,6EAAe;IACf,uDAAI;AACR,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,IAAY,YAOX;AAPD,WAAY,YAAY;IACpB,6CAAG;IACH,uDAAQ;IACR,iDAAK;IACL,6DAAW;IACX,iDAAK;IACL,iDAAK;AACT,CAAC,EAPW,YAAY,KAAZ,YAAY,QAOvB;AAED,IAAY,UAOX;AAPD,WAAY,UAAU;IAClB,2CAAQ;IACR,6CAAS;IACT,2CAAQ;IACR,+CAAU;IACV,yDAAe;IACf,oDAAa;AACjB,CAAC,EAPW,UAAU,KAAV,UAAU,QAOrB;AAED,IAAY,OAIX;AAJD,WAAY,OAAO;IACf,6CAAQ;IACR,qDAAY;IACZ,6CAAQ;AACZ,CAAC,EAJW,OAAO,KAAP,OAAO,QAIlB;AAED,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,6DAAS;IACT,iEAAW;IACX,2DAAQ;AACZ,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAED,IAAY,oBAQX;AARD,WAAY,oBAAoB;IAC5B,iGAAyB;IACzB,+FAAwB;IACxB,iFAAiB;IACjB,2EAAc;IACd,mFAAkB;IAClB,uFAAoB;IACpB,uFAAoB;AACxB,CAAC,EARW,oBAAoB,KAApB,oBAAoB,QAQ/B;AAED,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,uDAAW;IACX,2DAAa;IACb,6DAAc;IACd,qDAAU;AACd,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,uDAAQ;IACR,iEAAa;AACjB,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,mDAAW;IACX,2CAAO;IACP,2CAAO;AACX,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,OAAO;AACP,IAAY,eAMX;AAND,WAAY,eAAe;IACvB,qDAAQ;IACR,mEAAe;IACf,mEAAe;IACf,6DAAY;IACZ,iEAAc;AAClB,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,IAAY,cAQX;AARD,WAAY,cAAc;IACtB,mDAAQ;IACR,6DAAa;IACb,iEAAe;IACf,uDAAU;IACV,uDAAU;IACV,6DAAa;IACb,2DAAY;AAChB,CAAC,EARW,cAAc,KAAd,cAAc,QAQzB;AAED,IAAY,gBAMX;AAND,WAAY,gBAAgB;IACxB,uDAAQ;IACR,mEAAc;IACd,2DAAU;IACV,6DAAW;IACX,qEAAe;AACnB,CAAC,EANW,gBAAgB,KAAhB,gBAAgB,QAM3B;AAED,IAAY,aAMX;AAND,WAAY,aAAa;IACrB,iDAAQ;IACR,uDAAW;IACX,mDAAS;IACT,uDAAW;IACX,2DAAa;AACjB,CAAC,EANW,aAAa,KAAb,aAAa,QAMxB;AAED,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,iDAAQ;IACR,uDAAW;IACX,mDAAS;IACT,2DAAa;AACjB,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,iDAAQ;IACR,yDAAY;IACZ,mDAAS;IACT,+CAAO;AACX,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAGD,IAAY,aAGX;AAHD,WAAY,aAAa;IACrB,iDAAQ;IACR,+CAAO;AACX,CAAC,EAHW,aAAa,KAAb,aAAa,QAGxB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,mDAAQ;IACR,2DAAY;AAChB,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,IAAY,YAIX;AAJD,WAAY,YAAY;IACpB,+CAAQ;IACR,iDAAS;IACT,6DAAe;AACnB,CAAC,EAJW,YAAY,KAAZ,YAAY,QAIvB;AAED,IAAY,aAIX;AAJD,WAAY,aAAa;IACrB,iDAAQ;IACR,iDAAQ;IACR,qDAAU;AACd,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB;AAED,IAAY,eAGX;AAHD,WAAY,eAAe;IACvB,qDAAQ;IACR,qDAAQ;AACZ,CAAC,EAHW,eAAe,KAAf,eAAe,QAG1B;AAED,IAAY,aAKX;AALD,WAAY,aAAa;IACrB,6DAAc;IACd,qDAAU;IACV,yDAAY;IACZ,uDAAW;AACf,CAAC,EALW,aAAa,KAAb,aAAa,QAKxB;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,gDAAU;IACV,+CAAS;IACT,iDAAU;AACd,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,2CAAQ;IACR,2CAAQ;IACR,uDAAc;IACd,2DAAgB;IAChB,iDAAW;IACX,iDAAW;IACX,iDAAW;AACf,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAED,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,2DAAQ;IACR,2DAAQ;IACR,yEAAe;AACnB,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAED,IAAY,UAQX;AARD,WAAY,UAAU;IAClB,qDAAa;IACb,6CAAS;IACT,2DAAgB;IAChB,6CAAS;IACT,iEAAmB;IACnB,6CAAS;IACT,+CAAU;AACd,CAAC,EARW,UAAU,KAAV,UAAU,QAQrB;AAED,IAAY,eAwCX;AAxCD,WAAY,eAAe;IACvB,qDAAQ;IACR,WAAW;IACX,6EAAgB;IAChB,iFAAkB;IAClB,iFAAkB;IAClB,6EAAgB;IAChB,yEAAc;IACd,qFAAoB;IACpB,6FAAwB;IACxB,2FAAuB;IACvB,uEAAa;IACb,0EAAc;IACd,8EAAgB;IAChB,4EAAe;IACf,wEAAa;IACb,gEAAS;IACT,8DAAQ;IACR,kEAAU;IACV,sEAAY;IACZ,gEAAS;IACT,sFAAoB;IACpB,gGAAyB;IACzB,4EAAe;IACf,wEAAa;IACb,oEAAW;IACX,8EAAgB;IAChB,kFAAkB;IAClB,0EAAc;IACd,wEAAa;IACb,oFAAmB;IACnB,0EAAc;IACd,kFAAkB;IAClB,8EAAgB;IAChB,oFAAmB;IACnB,kFAAkB;IAClB,wFAAqB;IACrB,sEAAY;IACZ,oEAAW;IACX,kEAAU;AACd,CAAC,EAxCW,eAAe,KAAf,eAAe,QAwC1B;AAED,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,yCAAQ;IACR,2CAAS;IACT,6CAAU;AACd,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qDAAS;IACT,uDAAU;AACd,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,IAAY,cAIX;AAJD,WAAY,cAAc;IACtB,mDAAQ;IACR,uDAAU;IACV,iDAAO;AACX,CAAC,EAJW,cAAc,KAAd,cAAc,QAIzB;AAED,IAAY,qBAIX;AAJD,WAAY,qBAAqB;IAC7B,yEAAY;IACZ,uEAAW;IACX,iEAAQ;AACZ,CAAC,EAJW,qBAAqB,KAArB,qBAAqB,QAIhC;AAED,IAAY,cAUX;AAVD,WAAY,cAAc;IACtB,qEAAa;IACb,iEAAW;IACX,yEAAe;IACf,iEAAW;IACX,uDAAM;IACN,2DAAQ;IACR,+DAAU;IACV,yEAAe;IACf,iEAAW;AACf,CAAC,EAVW,cAAc,KAAd,cAAc,QAUzB;AAED,IAAY,YAMX;AAND,WAAY,YAAY;IACpB,kDAAU;IACV,gDAAS;IACT,+CAAI;IACJ,yDAAS;IACT,mDAAM;AACV,CAAC,EANW,YAAY,KAAZ,YAAY,QAMvB;AAED,IAAY,aAQX;AARD,WAAY,aAAa;IACrB,mDAAK;IACL,iDAAI;IACJ,iDAAI;IACJ,iDAAI;IACJ,uDAAO;IACP,iDAAI;IACJ,iDAAI;AACR,CAAC,EARW,aAAa,KAAb,aAAa,QAQxB;AAED,IAAY,UAMX;AAND,WAAY,UAAU;IAClB,2CAAI;IACJ,yCAAG;IACH,2CAAI;IACJ,yCAAG;IACH,+CAAM;AACV,CAAC,EANW,UAAU,KAAV,UAAU,QAMrB;AAED,IAAY,mBAKX;AALD,WAAY,mBAAmB;IAC3B,mEAAW;IACX,+DAAS;IACT,qEAAY;IACZ,6EAAgB;AACpB,CAAC,EALW,mBAAmB,KAAnB,mBAAmB,QAK9B;AAED,IAAY,WAKX;AALD,WAAY,WAAW;IACnB,6CAAQ;IACR,+CAAS;IACT,+CAAS;IACT,+CAAS;AACb,CAAC,EALW,WAAW,KAAX,WAAW,QAKtB;AAGD,IAAY,cAGX;AAHD,WAAY,cAAc;IACtB,qDAAS;IACT,qDAAS;AACb,CAAC,EAHW,cAAc,KAAd,cAAc,QAGzB;AAED,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,2DAAI;IACJ,iEAAO;IACP,6DAAK;AACT,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAED,IAAY,aAgBX;AAhBD,WAAY,aAAa;IACrB,uDAAW;IACX,qEAAkB;IAClB,uEAAmB;IACnB,uEAAmB;IACnB,2DAAa;IACb,2DAAa;IACb,mEAAiB;IACjB,mEAAiB;IACjB,iEAAgB;IAChB,6DAAc;IACd,4DAAc;IACd,sDAAW;IACX,4DAAc;IACd,4DAAc;IACd,wFAA4B;AAChC,CAAC,EAhBW,aAAa,KAAb,aAAa,QAgBxB;AAED,IAAY,eAMX;AAND,WAAY,eAAe;IACvB,yDAAU;IACV,yDAAU;IACV,uDAAS;IACT,uEAAiB;IACjB,2DAAW;AACf,CAAC,EANW,eAAe,KAAf,eAAe,QAM1B;AAED,IAAY,WAIX;AAJD,WAAY,WAAW;IACnB,6CAAQ;IACR,6CAAQ;IACR,yDAAc;AAClB,CAAC,EAJW,WAAW,KAAX,WAAW,QAItB;AAED,IAAY,SAIX;AAJD,WAAY,SAAS;IACjB,gDAAY;IACZ,uDAAe;IACf,+CAAW;AACf,CAAC,EAJW,SAAS,KAAT,SAAS,QAIpB;AAED,IAAY,oBAMX;AAND,WAAY,oBAAoB;IAC5B,+DAAQ;IACR,yFAAqB;IACrB,6FAAuB;IACvB,mFAAkB;IAClB,mFAAkB;AACtB,CAAC,EANW,oBAAoB,KAApB,oBAAoB,QAM/B;AAED,IAAY,eAIX;AAJD,WAAY,eAAe;IACvB,qDAAQ;IACR,iFAAsB;IACtB,yFAA0B;AAC9B,CAAC,EAJW,eAAe,KAAf,eAAe,QAI1B;AAED,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC3B,mEAAO;IACP,2EAAW;IACX,uFAAiB;AACrB,CAAC,EAJW,mBAAmB,KAAnB,mBAAmB,QAI9B;AAED,IAAY,cAMX;AAND,WAAY,cAAc;IACtB,mDAAQ;IACR,6DAAa;IACb,qEAAiB;IACjB,qEAAiB;IACjB,6DAAa;AACjB,CAAC,EANW,cAAc,KAAd,cAAc,QAMzB;AAED,IAAY,cAaX;AAbD,WAAY,cAAc;IACtB,mDAAQ;IACR,qEAAiB;IACjB,mEAAgB;IAChB,uEAAkB;IAClB,qEAAiB;IACjB,yEAAmB;IACnB,yEAAmB;IACnB,2EAAoB;IACpB,iFAAuB;IACvB,2EAAoB;IACpB,sFAA0B;IAC1B,sFAA0B;AAC9B,CAAC,EAbW,cAAc,KAAd,cAAc,QAazB;AAED,IAAY,aASX;AATD,WAAY,aAAa;IACrB,iDAAQ;IACR,mEAAiB;IACjB,2DAAa;IACb,2EAAqB;IACrB,uEAAmB;IACnB,qEAAkB;IAClB,+DAAe;IACf,uEAAmB;AACvB,CAAC,EATW,aAAa,KAAb,aAAa,QASxB;AAED,IAAY,kBAUX;AAVD,WAAY,kBAAkB;IAC1B,2DAAQ;IACR,+EAAkB;IAClB,iGAA2B;IAC3B,+FAA0B;IAC1B,2EAAgB;IAChB,+FAA0B;IAC1B,qFAAqB;IACrB,qFAAqB;IACrB,uFAAsB;AAC1B,CAAC,EAVW,kBAAkB,KAAlB,kBAAkB,QAU7B;AAED,IAAY,UAgCX;AAhCD,WAAY,UAAU;IAClB,gBAAgB;IAChB,2DAAgB;IAChB,yDAAe;IACf,iDAAW;IACX,mEAAoB;IACpB,uEAAsB;IACtB,iEAAmB;IACnB,uEAAsB;IACtB,+DAAkB;IAClB,qEAAqB;IACrB,WAAW;IACX,qDAAa;IACb,wEAAuB;IACvB,8DAAkB;IAClB,4DAAiB;IACjB,4DAAiB;IACjB,4DAAiB;IACjB,0DAAgB;IAChB,kEAAoB;IACpB,cAAc;IACd,kEAAoB;IACpB,8DAAkB;IAClB,8DAAkB;IAClB,4DAAiB;IACjB,0DAAgB;IAChB,oDAAa;IACb,OAAO;IACP,8CAAU;IACV,gEAAmB;IACnB,0DAAgB;IAChB,0DAAgB;AACpB,CAAC,EAhCW,UAAU,KAAV,UAAU,QAgCrB;AAED,IAAY,iBAKX;AALD,WAAY,iBAAiB;IACzB,+DAAW;IACX,uFAAuB;IACvB,yEAAgB;IAChB,2EAAiB;AACrB,CAAC,EALW,iBAAiB,KAAjB,iBAAiB,QAK5B;AAED,IAAY,eAOX;AAPD,WAAY,eAAe;IACvB,mDAAO;IACP,qDAAQ;IACR,qDAAQ;IACR,yDAAU;IACV,yDAAU;IACV,2DAAW;AACf,CAAC,EAPW,eAAe,KAAf,eAAe,QAO1B;AAED,IAAY,iBAgBX;AAhBD,WAAY,iBAAiB;IACzB,iEAAY;IACZ,uEAAe;IACf,mEAAa;IACb,6DAAU;IACV,yEAAgB;IAChB,iEAAY;IACZ,mEAAa;IACb,iEAAY;IACZ,+DAAW;IACX,6DAAU;IACV,0DAAS;IACT,gEAAY;IACZ,gEAAY;IACZ,8DAAW;IACX,gEAAY;AAChB,CAAC,EAhBW,iBAAiB,KAAjB,iBAAiB,QAgB5B;AAED,IAAY,eAAuD;AAAnE,WAAY,eAAe;IAAG,8DAAa;IAAE,2DAAW;IAAE,mDAAO;AAAC,CAAC,EAAvD,eAAe,KAAf,eAAe,QAAwC;AAEnE,IAAY,aAAgE;AAA5E,WAAY,aAAa;IAAG,0DAAa;IAAE,mEAAiB;IAAE,yDAAY;AAAC,CAAC,EAAhE,aAAa,KAAb,aAAa,QAAmD;AAE5E,IAAY,eAAuC;AAAnD,WAAY,eAAe;IAAG,iEAAU;IAAE,2DAAO;AAAC,CAAC,EAAvC,eAAe,KAAf,eAAe,QAAwB;AAEnD,IAAY,kBAOX;AAPD,WAAY,kBAAkB;IAC1B,mCAAa;IACb,oFAA8D;IAC9D,kEAA4C;IAC5C,2EAAqD;IACrD,4DAAsC;IACtC,kGAA4E;AAChF,CAAC,EAPW,kBAAkB,KAAlB,kBAAkB,QAO7B;;;;;;;;;;;;;ACrqBM,MAAM,OAAO;IAKhB,YAAY,MAAc,EAAE,SAAkB,EAAE,KAAW;QAMpD,aAAQ,GAAG,GAAW,EAAE;YAC3B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE;YACrD,OAAO,oBAAoB,IAAI,CAAC,MAAM,WAAW,OAAO,GAAG,CAAC;QAChE,CAAC;QARG,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;CAMJ;AAEM,MAAM,YAAa,SAAQ,OAAO;IAGrC,YACI,MAAc,EACd,SAAkB,EAClB,KAAW,EACX,IAAoB;QAEpB,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/B2B;AACY;AACH;AAC2C;AAC6B;AAGvC;AAChC;AACc;AACA;AACJ;AAEM;AAKA;AACN;AAEE;AACE;AACF;AACA;AACI;AACE;AACP;AAuB1B;AACuB;AACE;AAEkB;AACe;AAEzB;AACqC;AACjE;AACsB;AAEN;AACC;AACX;AAGmB;AACH;AAEpB;AACa;AACf;AAIN;AAC0B;AAC8B;AACV;AAE7D,MAAM,SAAS;IA2ElB;QAzEA,eAAe;QACf,YAAO,GAAgB,EAAE,CAAC;QAC1B,iBAAY,GAAmB,EAAE,CAAC;QAElC,eAAU,GAAe,EAAE,CAAC;QAE5B,qBAAgB,GAAY,KAAK,CAAC;QAClC,sBAAiB,GAAY,KAAK,CAAC;QACnC,oBAAe,GAAY,KAAK,CAAC;QACjC,UAAK,GAAG,KAAK,CAAC;QACd,sBAAiB,GAAG,KAAK,CAAC;QAC1B,aAAQ,GAAG,EAAE,CAAC;QACd,WAAM,GAAW,CAAC,CAAC;QAEnB,iBAAY,GAAW,CAAC,CAAC;QACzB,iBAAY,GAAW,CAAC,CAAC;QAQzB,eAAU,GAAY,KAAK,CAAC;QAC5B,YAAO,GAAc,wEAAc,CAAC;QAGpC,6BAAwB,GAAY,KAAK,CAAC;QAE1C,0BAAqB,GAAG,IAAI,CAAC;QAC7B,mBAAc,GAAc,IAAI,CAAC;QACjC,uBAAkB,GAAG,KAAK,CAAC;QAM3B,SAAI,GAAmB,EAAE,CAAC;QAI1B,gBAAW,GAAY,KAAK,CAAC;QAC7B,gBAAW,GAAY,KAAK,CAAC;QAC7B,aAAQ,GAAY,KAAK,CAAC;QAO1B,WAAM,GAA+B,EAAE,CAAC;QAExC,cAAS,GAAG,QAAQ,CAAC;QAErB,iBAAY,GAAG,IAAI,CAAC;QAEpB,iBAAY,GAAG,IAAI,CAAC;QAEpB,yBAAoB,GAAG,KAAK,CAAC;QAE7B,+BAA0B,GAAG,KAAK,CAAC;QAEnC,YAAO,GAAG;YACN,WAAW,EAAE,CAAC;YACd,YAAY,EAAE,CAAC;YACf,cAAc,EAAE,CAAC;YACjB,UAAU,EAAE,CAAC;SAChB,CAAC;QAIF,aAAQ,GAAG,gCAAgC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAwFtE,uBAAkB,GAAY,IAAI,CAAC;QA8CnC,sBAAiB,GAAY,IAAI,CAAC;QA+tElC,YAAY;QAGZ,mBAAmB;QAEnB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,yBAAoB,GAAG,KAAK,CAAC;QAC7B,qBAAgB,GAAG,KAAK,CAAC;QA2wEzB,YAAY;QAGZ,mBAAmB;QAEnB,kBAAa,GAAG,KAAK,CAAC;QA6gBtB,YAAY;QAGZ,mBAAmB;QAEnB,kBAAa,GAAG,KAAK,CAAC;QAi+BtB,wBAAwB;QAGxB,kBAAkB;QAElB,gCAA2B,GAAG,KAAK,CAAC;QACpC,sBAAiB,GAAG,EAAE,CAAC;QACvB,mBAAc,GAAG,EAAE,CAAC;QAg1BpB,mBAAmB;QAGnB,uBAAuB;QAEvB,UAAK,GAAY,IAAI,CAAC;QACtB,gBAAW,GAAiB,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC;QAC3C,gBAAW,GAAiB,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC;QAC3C,gBAAW,GAAiB,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC;QAC3C,gBAAW,GAAiB,EAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,EAAC,CAAC;QAC3C,aAAQ,GAAoC,EAAE,CAAC;QA78N3C,iDAAS,CAAC,IAAI,CAAC,SAAS,EAAE,GAAG,EAAE;YAC3B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClB,mEAAW,CAAC,EAAC,IAAI,EAAE,iFAAa,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;QAC/C,CAAC,CAAC,CAAC;QAEH,QAAQ,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,KAAK,CAAC,EAAE;YACnD,IAAI,CAAC,YAAY,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC;QACzC,CAAC,CAAC,CAAC,CAAC;IACR,CAAC;IAED,QAAQ;QACJ,IAAI,KAAK,GAAG,KAAK,CAAC;QAClB,CAAC,UAAU,CAAC;YACR,IAAI,0TAA0T,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,ykDAAykD,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBAAE,KAAK,GAAG,IAAI,CAAC;QAC37D,CAAC,CAAC,CAAC,SAAS,CAAC,SAAS,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC;QAC5C,OAAO,KAAK,CAAC;IACjB,CAAC;IAAA,CAAC;IAEF,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,YAAY,CAAC;IAC7B,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IAED,IAAI,iBAAiB,CAAC,KAAc;QAChC,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACvC,CAAC;IAED,IAAI,KAAK;QACL,OAAO,YAAoB,KAAK,aAAa,CAAC;IAClD,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,kFAAY,CAAC;IACxB,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,oFAAe,CAAC;IAC3B,CAAC;IAED,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IACjC,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,aAAa,CAAC,GAAW;QACzB,IAAI,CAAC,cAAc,GAAG,GAAG,CAAC;QAC1B,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;YAC3B,mGAAmG;SACtG;IACL,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED,IAAI,cAAc,CAAC,GAAW;QAC1B,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;QAC3B,kCAAkC;QAClC,mGAAmG;IACvG,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,MAAM,CAAC;QACX,IAAI,uGAA0B,IAAI,SAAS,EAAE;YACzC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,uGAA0B,CAAC,CAAC;YAChD,0CAA0C;SAC7C;aAAM;YACH,MAAM,GAAG,IAAI,KAAK,EAAa,CAAC;SACnC;QACD,OAAO,uGAAuB,CAAC,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,QAAQ,CAAC,OAAoB;QAC7B,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,yFAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACzE,6CAA6C;QAC7C,+EAAc,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAID,IAAI,gBAAgB;QAChB,IAAI,IAAI,CAAC,IAAI,KAAK,4EAAiB,EAAE;YACjC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,OAAO,IAAI,CAAC;SACf;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,IAAI,CAAC,GAAG,IAAI,kBAAkB,IAAI,IAAI,CAAC,GAAG,IAAI,uFAAqB,IAAI,IAAI,CAAC,GAAG,IAAI,qFAAoB;oBACvG,IAAI,CAAC,GAAG,IAAI,uFAAqB,EAAE;oBACnC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;iBAClC;YACL,CAAC,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;SACnC;QACD,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAI,kBAAkB;QAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAE7B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,IAAI,CAAC,GAAG,IAAI,kBAAkB,IAAI,IAAI,CAAC,GAAG,IAAI,uFAAqB,IAAI,IAAI,CAAC,GAAG,IAAI,qFAAoB,EAAE;oBACzG,gBAAgB,GAAG,IAAI,CAAC;iBAC3B;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,gBAAgB,EAAE;gBAClB,OAAO,KAAK,CAAC;aAChB;YAED,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,IAAI,CAAC,GAAG,IAAI,gBAAgB,EAAE;oBAC9B,QAAQ,GAAG,IAAI,CAAC;iBACnB;YACL,CAAC,CAAC,CAAC;SACN;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAID,IAAI,eAAe;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,4EAAiB,EAAE;YACjC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,OAAO,IAAI,CAAC;SACf;QAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,qBAAqB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE;oBAChP,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;iBACjC;YACL,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC,iBAAiB,CAAC;SACjC;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAGD,IAAI,KAAK;QACL,IAAI,KAAe,CAAC;QACpB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACvB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;SACvC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,kBAAkB;IAElB,IAAI,cAAc;QACd,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,MAAc;QAC7B,+EAAc,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,MAAe;QAC7B,+EAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,WAAW;QACX,OAAO,qGAA4B,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,MAAe;QAC3B,+EAAiB,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,MAAiB;QAChC,+EAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,YAAY;QACZ,yCAAyC;QACzC,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAW;QACxB,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAW;QACxB,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAGD,OAAO;IAEP,IAAI,cAAc;QACd,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,cAAc,CAAC,GAAW;QAC1B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,eAAe,CAAC,GAAW;QAC3B,+EAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,0FAAoB,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,GAAW;QACpB,0FAAoB,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,4FAAqB,CAAC;IACjC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,4FAAqB,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,IAAI,KAAK;QACL,OAAO,oFAAiB,CAAC;IAC7B,CAAC;IAED,IAAI,KAAK,CAAC,GAAW;QACjB,oFAAiB,GAAG,GAAG,CAAC;IAC5B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,0FAAoB,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,GAAW;QACpB,0FAAoB,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,0FAAoB,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,GAAW;QACpB,0FAAoB,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED,IAAI,MAAM;QACN,oDAAoD;QACpD,OAAO,2FAAoB,CAAC;IAChC,CAAC;IAED,IAAI,MAAM,CAAC,GAAiB;QACxB,mCAAmC;QACnC,IAAI,GAAG,EAAE;YACL,wFAAmB,GAAG,GAAG,CAAC,OAAO,CAAC;YAClC,wFAAmB,GAAG,GAAG,CAAC,OAAO,CAAC;YAClC,sFAAkB,GAAG,GAAG,CAAC,MAAM,CAAC;YAChC,oFAAiB,GAAG,GAAG,CAAC,KAAK,CAAC;SACjC;aAAM;YACH,wFAAmB,GAAG,EAAE,CAAC;YACzB,wFAAmB,GAAG,EAAE,CAAC;YACzB,sFAAkB,GAAG,CAAC,CAAC,CAAC;YACxB,oFAAiB,GAAG,EAAE,CAAC;SAC1B;QAED,+EAAc,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,IAAI,SAAS;QACT,OAAO,sFAAkB,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,4FAAqB,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,IAAI,MAAM;QACN,OAAO,sFAAkB,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM,CAAC,GAAW;QAClB,sFAAkB,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,4FAAqB,CAAC;IACjC,CAAC;IAED,IAAI,SAAS,CAAC,GAAY;QACtB,4FAAqB,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,4FAAqB,CAAC;IACjC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,4FAAqB,GAAG,GAAG,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,+FAAsB,CAAC;IAClC,CAAC;IAED,IAAI,QAAQ,CAAC,GAAgB;QACzB,+EAAc,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,kGAAwB,CAAC;IACpC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;IACnC,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,0FAAoB,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,GAAW;QACpB,0FAAoB,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED,IAAI,WAAW;QACX,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,IAAI,IAAI,CAAC,YAAY,KAAK,CAAC,EAAE;YACpD,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACnB,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC;oBAC3B,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;gBAC1D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;aAC7D;YACG,oCAAoC;YACpC,8BAA8B;YAC9B,kCAAkC;YAClC,kCAAkC;YAClC,QAAQ;YAER,+DAA+D;YAC/D,+DAA+D;YACnE,IAAI;iBACC,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC7B,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACpB,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC;oBAC3B,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,GAAG,CAAC;gBAC/B,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;gBAC3D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;aAC9D;SACJ;QACD,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,SAAS;QACT,OAAO,iGAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,OAAgB;QAC1B,IAAI,OAAO,IAAI,IAAI,CAAC,SAAS,EAAE;YAC3B,+EAAiB,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;SACnD;IACL,CAAC;IAED,IAAI,UAAU;QACV,OAAO,mGAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,UAAmB;QAC9B,8FAAsB,GAAG,UAAU,CAAC;QACpC,+EAAiB,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAGD,IAAI,OAAO;QACP,OAAO,sFAAkB,IAAI,oGAAyB,GAAG,CAAC,IAAI,sFAAkB,KAAK,uFAAqB,CAAC;IAC/G,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,oFAAiB,IAAI,kGAAwB,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,aAAa;IAEb,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAY;QAC1B,oGAAyB,GAAG,GAAG,CAAC;QAChC,+EAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,wGAA2B,GAAG,GAAG,CAAC;QAClC,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,wGAA2B,GAAG,GAAG,CAAC;QAClC,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,WAAW;QACX,OAAO,qGAA4B,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,GAAY;QACxB,gGAAuB,GAAG,GAAG,CAAC;QAC9B,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,UAAU;QACV,OAAO,mGAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,GAAW;QACtB,8FAAsB,GAAG,GAAG,CAAC;QAC7B,+EAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAa;QAC3B,oGAAyB,GAAG,GAAG,CAAC;QAChC,+EAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,uHAAqC,CAAC;IACjD,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAa;QAClC,kHAAgC,GAAG,GAAG,CAAC;QACvC,+EAAiB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAY;QAC1B,oGAAyB,GAAG,GAAG,CAAC;QAChC,+EAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,sGAA0B,GAAG,GAAG,CAAC;QACjC,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAGD,MAAM;IAEN,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,qHAAoC,CAAC;IAChD,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAY;QAChC,+EAAiB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,gBAAgB;QAChB,qFAAqF;QACrF,OAAO,+GAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,kGAAwB,GAAG,GAAG,CAAC;QAC/B,uDAAuD;QACvD,+EAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAW;QAC3B,wGAA2B,GAAG,GAAG,CAAC;QAClC,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAa;QAC1B,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,6CAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,mGAAqC,CAAC;IACjD,CAAC;IAED,IAAI,UAAU,CAAC,GAAW;QACtB,sCAAsC;QACtC,+EAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAGD,IAAI,SAAS;QACT,OAAO,6CAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,qGAAsC,CAAC;IAClD,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAW;QAC5B,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAGD,IAAI,cAAc;QACd,OAAO,6CAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,+GAA2C,CAAC;IACvD,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAW;QAC5B,+EAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAGD,IAAI,UAAU;QACV,OAAO,6CAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAAuC,CAAC;IACnD,CAAC;IAED,IAAI,YAAY,CAAC,GAAW;QACxB,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAGD,IAAI,SAAS;QACT,OAAO,6CAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,WAAW;QACX,OAAO,qGAAsC,CAAC;IAClD,CAAC;IAED,IAAI,WAAW,CAAC,GAAW;QACvB,gGAAuB,GAAG,GAAG,CAAC;QAC9B,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,KAAK;QACL,OAAO,yFAAsB,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,KAAa;QACnB,oFAAiB,GAAG,KAAK,CAAC;QAC1B,6CAA6C;QAC7C,+EAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9C,CAAC;IAGD,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU;QACV,OAAO,mGAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,GAAY;QACvB,wFAAmB,GAAG,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;YACxB,+EAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;YAC7C,2GAA4B,GAAG,GAAG,CAAC;SACtC;IACL,CAAC;IAED,IAAI,MAAM;QACN,OAAO,2FAAuB,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,GAAY;QACnB,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YACpB,sFAAkB,GAAG,GAAG,CAAC;YACzB,+EAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SAC5C;IACL,CAAC;IAED,IAAI,WAAW;QACX,OAAO,qGAA4B,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,GAAY;QACxB,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;YACzB,gGAAuB,GAAG,GAAG,CAAC;YAC9B,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SACjD;IACL,CAAC;IAED,IAAI,MAAM;QACN,OAAO,2FAAuB,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,GAAY;QACnB,IAAI,GAAG,IAAI,IAAI,CAAC,MAAM,EAAE;YACpB,sFAAkB,GAAG,GAAG,CAAC;YACzB,+EAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SAC5C;IACL,CAAC;IAED,IAAI,OAAO;QACP,IAAI,IAAI,CAAC,IAAI,KAAK,4EAAiB,EAAE;YACjC,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAGD,IAAI,WAAW;QACX,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,KAAK,4EAAiB,IAAI,IAAI,CAAC,IAAI,KAAK,4EAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACxG,OAAO,IAAI,CAAC;SACf;aAAM;YACH,OAAO,KAAK,CAAC;SAChB;IACL,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,IAAI,GAAG,IAAI,IAAI,CAAC,cAAc,EAAE;YAC5B,sGAA0B,GAAG,GAAG,CAAC;YACjC,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SACpD;IACL,CAAC;IAED,IAAI,UAAU;QACV,OAAO,mGAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,GAAY;QACvB,IAAI,GAAG,IAAI,IAAI,CAAC,UAAU,EAAE;YACxB,8FAAsB,GAAG,GAAG,CAAC;YAC7B,+EAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SAChD;IACL,CAAC;IAED,IAAI,WAAW;QACX,+EAA+E;QAC/E,IAAI,EAAE,GAAG,qGAA4B,CAAC;QACtC,IAAI,EAAE,KAAK,CAAC,EAAE;YACV,EAAE,GAAG,CAAC,CAAC;SACV;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,WAAW,CAAC,GAAW;QACvB,IAAI,GAAG,KAAK,IAAI,CAAC,WAAW,EAAE;YAC1B,sDAAsD;YACtD,gGAAuB,GAAG,GAAG,CAAC;YAC9B,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SACjD;IACL,CAAC;IAGD,IAAI,IAAI;QACJ,OAAO,6FAAwB,CAAC;IACpC,CAAC;IAED,IAAI,IAAI,CAAC,GAAW;QAChB,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE;YAClB,kFAAgB,GAAG,GAAG,CAAC;YACvB,+EAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SAC7C;IACL,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,oBAAoB;IAEpB,IAAI,eAAe;QACf,OAAO,6GAA6B,CAAC;IACzC,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,+EAAc,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,GAAa;QAC5B,+EAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,GAAa;QAC5B,+EAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAGD,IAAI,cAAc;QACd,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,GAAa;QAC5B,+EAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,uBAAuB;QACvB,wFAAwF;QACxF,gDAAgD;QAChD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,uBAAuB;QACvB,OAAO,6HAAqC,CAAC;IAEjD,CAAC;IAED,IAAI,uBAAuB,CAAC,GAAS;QACjC,+EAAc,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,wHAAmC,GAAG,GAAG,CAAC;IAC9C,CAAC;IAED,IAAI,WAAW;QACX,OAAO,qGAAyB,CAAC;IACrC,CAAC;IAED,IAAI,WAAW,CAAC,GAAY;QACxB,+EAAc,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,uHAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAY;QACjC,+EAAc,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA2B,CAAC;IACvC,CAAC;IAED,IAAI,aAAa,CAAC,GAAY;QAC1B,+EAAc,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA0B,CAAC;IACtC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,+EAAc,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,qHAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAY;QAChC,+EAAc,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,6BAA6B;QAC7B,OAAO,yIAA2C,CAAC;IACvD,CAAC;IAED,IAAI,6BAA6B,CAAC,GAAY;QAC1C,+EAAc,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,6BAA6B;QAC7B,OAAO,yIAA2C,CAAC;IACvD,CAAC;IAED,IAAI,6BAA6B,CAAC,GAAY;QAC1C,+EAAc,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACjE,CAAC;IAED,IAAI,wBAAwB;QACxB,OAAO,+HAAsC,CAAC;IAClD,CAAC;IAED,IAAI,wBAAwB,CAAC,GAAY;QACrC,+EAAc,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5D,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,uBAAuB;QACvB,OAAO,6HAAqC,CAAC;IACjD,CAAC;IAED,IAAI,uBAAuB,CAAC,GAAY;QACpC,+EAAc,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,uBAAuB;QACvB,OAAO,6HAAqC,CAAC;IACjD,CAAC;IAED,IAAI,uBAAuB,CAAC,GAAY;QACpC,+EAAc,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,eAAe;QACf,OAAO,6GAA6B,CAAC;IACzC,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,+EAAc,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,uHAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAY;QACjC,+EAAc,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,+GAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,0GAA4B,GAAG,GAAG,CAAC;QACnC,+EAAc,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,iBAAiB;QACjB,uFAAuF;QACvF,OAAO,iHAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,wDAAwD;QACxD,+EAAc,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAGD,IAAI,cAAc;QACd,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,mHAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAY;QAC/B,+EAAc,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,qHAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAY;QAChC,+EAAc,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,iHAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,+EAAc,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,+GAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,+EAAc,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,+GAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,+EAAc,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,mHAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAY;QAC/B,+EAAc,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,6GAA6B,CAAC;IACzC,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,+EAAc,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA0B,CAAC;IACtC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,+EAAc,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,+GAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,+EAAc,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,+GAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,+EAAc,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAGD,IAAI,eAAe;QACf,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAY;QAC1B,+EAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,iHAAkC,CAAC;IAC9C,CAAC;IAED,uEAAuE;IACvE,sFAAsF;IACtF,IAAI,iBAAiB,CAAC,GAAY;QAC9B,+EAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAGD,IAAI,cAAc;QACd,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,+GAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,+EAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,+GAAiC,CAAC;IAC7C,CAAC;IAGD,IAAI,kBAAkB,CAAC,GAAY;QAC/B,+EAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,uBAAuB;QACvB,OAAO,yHAAsC,CAAC;IAClD,CAAC;IAED,IAAI,uBAAuB,CAAC,GAAY;QACpC,+EAAiB,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5D,CAAC;IAGD,IAAI,iBAAiB;QACjB,OAAO,iHAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,+EAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,mHAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAU;QAC7B,+EAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAGD,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,WAAW;QACX,OAAO,qGAA4B,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,GAAY;QACxB,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,WAAW;QACX,OAAO,qGAA4B,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,GAAY;QACxB,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,WAAW;QACX,OAAO,qGAA4B,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,GAAY;QACxB,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,kGAAwB,GAAG,GAAG,CAAC;QAC/B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAY;QAC1B,+EAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,sGAA0B,GAAG,GAAG,CAAC;QACjC,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAY;QAC1B,oGAAyB,GAAG,GAAG,CAAC;QAChC,+EAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,mHAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAY;QAC/B,+EAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,qHAAoC,CAAC;IAChD,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAc;QAClC,+EAAiB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,EAAE;IACF,mCAAmC;IACnC,6CAA6C;IAC7C,IAAI;IACJ,EAAE;IACF,sCAAsC;IACtC,uCAAuC;IACvC,uDAAuD;IACvD,IAAI;IAEJ,IAAI,aAAa;QACb,OAAO,qGAA4B,CAAC;IACxC,CAAC;IAED,IAAI,aAAa,CAAC,GAAY;QAC1B,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,cAAc,CAAC,GAAW;QAC1B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,qGAA4B,CAAC;IACxC,CAAC;IAED,IAAI,aAAa,CAAC,GAAW;QACzB,+EAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAW;QAC5B,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAW;QAC5B,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,sBAAsB;QACtB,OAAO,uHAAqC,CAAC;IACjD,CAAC;IAED,IAAI,sBAAsB,CAAC,GAAY;QACnC,+EAAiB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,yBAAyB;QACzB,OAAO,6HAAwC,CAAC;IACpD,CAAC;IAED,IAAI,yBAAyB,CAAC,GAAoB;QAC9C,+EAAiB,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC9D,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAChE,CAAC;IAED,IAAI,UAAU;QACV,IAAI,IAAY,CAAC;QACjB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC3B,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,yCAAyC;YACzC,IAAI,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;YAClB,KAAK,IAAI,GAAG,GAAG,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC3C,IAAI,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,MAAM,CAAC,QAAQ,KAAK,CAAC,EAAE;oBACvB,IAAI,GAAG,MAAM,CAAC;oBACd,MAAM;iBACT;aACJ;SACJ;QACD,+CAA+C;QAC/C,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,qHAAoC,CAAC;IAChD,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAW;QAC/B,+EAAiB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,QAAQ;QACR,OAAO;YACH,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAClE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAClE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;YAClE,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,CAAC;SACpC,CAAC;IACN,CAAC;IAED,0BAA0B;IAC1B,aAAa;IACb,wCAAwC;IACxC,wCAAwC;IACxC,wCAAwC;IACxC,iDAAiD;IACjD,wCAAwC;IACxC,wCAAwC;IACxC,uCAAuC;IACvC,OAAO;IACP,IAAI;IAEJ,IAAI,UAAU;QACV,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG;YACjG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;SACrG,CAAC;IACN,CAAC;IAED,IAAI,UAAU;QACV,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;IAC1F,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,qBAAqB;QACrB,OAAO,qHAAoC,CAAC;IAChD,CAAC;IAED,IAAI,qBAAqB,CAAC,GAAW;QACjC,+EAAiB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAGD,IAAI,mBAAmB;QACnB,OAAO,iHAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAW;QAC/B,+EAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,iHAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAW;QAC/B,+EAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,wBAAwB;QACxB,OAAO,2HAAuC,CAAC;IACnD,CAAC;IAED,IAAI,wBAAwB,CAAC,GAAY;QACrC,+EAAiB,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,qBAAqB;QACrB,OAAO,qHAAoC,CAAC;IAChD,CAAC;IAED,IAAI,qBAAqB,CAAC,GAAY;QAClC,+EAAiB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,oBAAoB;QACpB,wDAAwD;QACxD,OAAO,mHAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAY;QACjC,wDAAwD;QACxD,+EAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACrD,mBAAmB;QACvB,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,IAAI,sBAAsB;QACtB,OAAO,uHAAqC,CAAC;IACjD,CAAC;IAED,IAAI,sBAAsB,CAAC,GAAW;QAClC,+EAAiB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAGD,IAAI,iBAAiB;QACjB,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAW;QAC7B,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,2GAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,+EAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAGD,IAAI,oBAAoB;QACpB,OAAO,mHAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAW;QAChC,+EAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAW;QAC7B,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,+GAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAW;QAC9B,+EAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAGD,IAAI,iBAAiB;QACjB,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,+GAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAW;QAC9B,+EAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAGD,IAAI,mBAAmB;QACnB,OAAO,iHAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAY;QAChC,+EAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,iHAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAY;QAChC,+EAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAGD,IAAI,kBAAkB;QAClB,OAAO,+GAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAY;QAC/B,+EAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,sBAAsB;QACtB,OAAO,uHAAqC,CAAC;IACjD,CAAC;IAED,IAAI,sBAAsB,CAAC,GAAW;QAClC,+EAAiB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,wBAAwB;QACxB,OAAO,2HAAuC,CAAC;IACnD,CAAC;IAED,IAAI,wBAAwB,CAAC,GAAW;QACpC,+EAAiB,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC7D,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,+EAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAW;QAC9B,+EAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAW;QAC7B,+EAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAW;QAC7B,+EAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,4BAA4B,CAAC,GAAoB;QACjD,+EAAiB,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,4BAA4B,CAAC,GAAoB;QACjD,+EAAiB,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnE,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,eAAe;QACf,0CAA0C;QAC1C,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,IAAI,CAAC,QAAQ,IAAI,sGAA0B,GAAG,kFAAqB,EAAE;YACrE,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;SACxE;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAiC;QAC/C,+EAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,aAAa;QACb,kEAAkE;QAClE,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,MAAe;QAC7B,0CAA0C;QAC1C,+EAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,oBAAoB;QACpB,gFAAgF;QAChF,OAAO,uHAAqC,CAAC;IACjD,CAAC;IAED,IAAI,oBAAoB,CAAC,MAAe;QACpC,iDAAiD;QACjD,+EAAiB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,0FAAoB,CAAC;IAChC,CAAC;IAED,IAAI,QAAQ,CAAC,MAAe;QACxB,0FAAoB,GAAG,MAAM,CAAC;IAClC,CAAC;IAED,IAAI,OAAO;QACP,OAAO,wFAAmB,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO,CAAC,MAAe;QACvB,wFAAmB,GAAG,MAAM,CAAC;IACjC,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,MAAe;QAC7B,+EAAiB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,uHAAqC,CAAC;IACjD,CAAC;IAED,IAAI,oBAAoB,CAAC,MAAe;QACpC,+EAAiB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAGD,IAAI,SAAS;QACT,OAAO,iGAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,MAAmB;QAC7B,+EAAiB,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU;QACV,OAAO,mGAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,MAAc;QACzB,+EAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,UAAU;QACV,OAAO,mGAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,MAAc;QACzB,+EAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,YAAY;IAGZ,kBAAkB;IAElB,OAAO;QACH,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACnB;IACL,CAAC;IAED,eAAe;QACX,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,4EAAiB,IAAI,IAAI,CAAC,IAAI,KAAK,4EAAiB,CAAC;eACrE,IAAI,CAAC,gBAAgB;eACrB,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,QAAQ;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,oBAAoB,CAAC;QACpC,kEAAkE;QAClE,IAAI,WAAW,GAAG,gGAAuB,CAAC;QAE1C,IAAI,kFAAY,EAAE,EAAE;YAChB,IAAI,CAAC,YAAY,GAAG,sFAAkB,CAAC;YACvC,IAAI,IAAI,CAAC,gBAAgB,EAAE;gBACvB,IAAI,CAAC,sBAAsB,EAAE,CAAC;gBAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;gBACnB,IAAI,CAAC,oBAAoB,EAAE,CAAC;gBAC5B,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC;qBAC9B,IAAI,CAAC,GAAG,EAAE;oBACP,IAAI,kFAAY,EAAE,EAAE;wBAChB,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACzB,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;4BACxB,8GAAyB,EAAE,CAAC;yBAC/B;qBACJ;yBAAM;wBACH,oEAAU,CAAC,MAAM,EAAE,oCAAoC,oFAAiB,EAAE,CAAC,CAAC;wBAC5E,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,0FAAyB,CAAC,CAAC;wBAC1E,wFAAe,CAAC,MAAM,CAAC,CAAC;wBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;qBACjC;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,EAAE;wBACjC,sEAAW,CAAC,MAAM,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;qBAC1E;gBACL,CAAC,CAAC;gBACN,kDAAkD;gBAElD,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;gBAC/B,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;gBAElC,IAAI,QAAQ,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;gBACzC,IAAI,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,WAAW;gBAC5C,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,gFAAgB,CAAC,4BAA4B,EAAE,WAAW,GAAG,IAAI,CAAC,CAAC;gBACnE,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;gBAEpD,IAAI,sFAAkB,IAAI,sFAAkB,EAAE;oBAC1C,IAAI,WAAW,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;oBAC3C,IAAI,cAAc,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;oBAC9C,gFAAgB,CAAC,+BAA+B,EAAE,cAAc,GAAG,IAAI,CAAC,CAAC;oBACzE,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;iBACpD;gBAED,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;gBAC1C,IAAI,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;gBAC7C,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;aACpD;iBAAM;gBACH,IAAI,IAAI,CAAC,eAAe,EAAE;oBACtB,IAAI,UAAU,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;oBAC1C,IAAI,aAAa,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,UAAU;oBAC7C,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;iBACpD;gBACD,8CAA8C;gBAC9C,MAAM,IAAI,GAAG,IAAI,6DAAM,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC9B,IAAI,CAAC,UAAU,GAAG,sGAA0B,CAAC;gBAC7C,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtB,EAAE;gBACF,sDAAsD;gBACtD,4EAA4E;gBAC5E,kCAAkC;gBAClC,2BAA2B;gBAC3B,wBAAwB;gBACxB,4DAA4D;gBAC5D,EAAE;gBACF,YAAY;gBACZ,aAAa;gBACb,uBAAuB;gBACvB,QAAQ;gBACR,OAAO;aAGV;SACJ;aAAM;YACH,oEAAU,CAAC,MAAM,EAAE,kBAAkB,oFAAiB,EAAE,CAAC,CAAC;YAC1D,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,0FAAyB,CAAC,CAAC;YAC1E,wFAAe,CAAC,MAAM,CAAC,CAAC;SAC3B;IACL,CAAC;IAED,wBAAwB;QACpB,IAAI,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;QACzC,IAAI,UAAU,KAAK,SAAS,EAAE;YAC1B,OAAO,SAAS,CAAC;SACpB;aAAM,IAAI,UAAU,KAAK,SAAS,EAAE;YACjC,OAAO,SAAS,CAAC;SACpB;aAAM,IAAI,UAAU,KAAK,QAAQ,EAAE;YAChC,OAAO,QAAQ,CAAC;SACnB;aAAM;YACH,OAAO,2BAA2B,CAAC;SACtC;IACL,CAAC;IAGD,sBAAsB;QAClB,MAAM,MAAM,GAAG,kCAAkC,CAAC;QAClD,IAAI;YAEA,IAAI,sBAAsB,GAAG,cAAc,IAAI,MAAM,IAAI,0EAAW,EAAE,CAAC;YACvE,IAAI,sBAAsB,EAAE;gBACxB,IAAI,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;gBACzC,6DAA6D;gBAC7D,IAAI,UAAU,KAAK,QAAQ,EAAE;oBACzB,IAAI,UAAU,KAAK,SAAS,EAAE;wBAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;qBACtB;oBACD,IAAI,UAAU,KAAK,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;wBACrF,IAAI,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,4OAA4O,EAAE,UAAU,EAAE,WAAW,CAAC;6BACpT,IAAI,CAAC,WAAW,CAAC,EAAE;4BAChB,IAAI,WAAW,EAAE;gCACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;6BAC9B;wBACL,CAAC,CAAC;qBACT;iBACJ;qBAAM;oBACH,oEAAU,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAC;oBAC/C,8DAA8D;iBACjE;aACJ;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,+CAA+C,CAAC,CAAC;gBACpE,2EAA2E;aAC9E;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,IAAI,GAAG,GAAG,cAAc,GAAG,EAAE,CAAC;YAC9B,IAAI,GAAG,CAAC,QAAQ,CAAC,8BAA8B,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,gBAAgB,CAAC,EAAE;gBAChF,oEAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;aAC3B;iBAAM;gBACH,sEAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;aAC5B;SACJ;IACL,CAAC;IAED,mBAAmB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,+BAA+B,CAAC;QAC/C,YAAY,CAAC,iBAAiB,EAAE;aAC3B,IAAI,CAAC,GAAG,CAAC,EAAE;YACR,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,IAAI,OAAO,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;YAC7B,IAAI,OAAO,CAAC,QAAQ,CAAC,+BAA+B,CAAC,EAAE;gBACnD,oEAAU,CAAC,MAAM,EAAE,4BAA4B,GAAG,EAAE,CAAC,CAAC;gBACtD,0EAA0E;aAC7E;iBAAM,IAAI,OAAO,CAAC,QAAQ,CAAC,kCAAkC,CAAC,EAAE;gBAC7D,oEAAU,CAAC,MAAM,EAAE,iCAAiC,GAAG,EAAE,CAAC,CAAC;gBAC3D,0EAA0E;aAC7E;iBAAM;gBACH,sEAAW,CAAC,MAAM,EAAE,4BAA4B,GAAG,EAAE,CAAC,CAAC;aAC1D;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,mBAAmB,CAAC,UAAkC;QAClD,MAAM,MAAM,GAAG,+BAA+B,CAAC;QAC/C,+CAA+C;QAE/C,IAAI,UAAU,KAAK,SAAS,EAAE;YAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,uEAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAC,QAAQ,EAAE,2FAAuB,EAAC,CAAC;qBACxD,IAAI,CAAC,YAAY,CAAC,EAAE;oBACjB,IAAI,YAAY,EAAE;wBACd,0CAA0C;wBAC1C,qGAA0B,CAAC,YAAY,CAAC;6BACnC,IAAI,CAAC,YAAY,CAAC,EAAE;4BACjB,IAAI,YAAY,EAAE;gCACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;6BAC3B;iCAAM;gCACH,sEAAW,CAAC,MAAM,EAAE,0EAA0E,CAAC,CAAC;gCAChG,sBAAsB;gCACtB,uCAAuC;gCACvC,+BAA+B;6BAClC;wBACL,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,IAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,MAAM,MAAK,GAAG,EAAE;gCAClD,sEAAW,CAAC,MAAM,EAAE,0BAA0B,GAAG,EAAE,CAAC,CAAC;6BACxD;wBACL,CAAC,CAAC,CAAC;wBACP,kCAAkC;wBAClC,uCAAuC;qBAC1C;yBAAM;wBACH,2BAA2B;wBAC3B,oEAAU,CAAC,MAAM,EAAE,qEAAqE,CAAC,CAAC;qBAC7F;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACX,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;wBAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACpC,IAAI,SAAS,IAAI,IAAI,EAAE;4BACnB,oEAAU,CAAC,MAAM,EAAE,4BAA4B,SAAS,EAAE,CAAC,CAAC;yBAC/D;6BAAM,IAAI,SAAS,IAAI,SAAS,CAAC,OAAO,CAAC,0BAA0B,CAAC,KAAK,CAAC,CAAC,EAAE;4BAC1E,oEAAU,CAAC,MAAM,EAAE,mDAAmD,SAAS,EAAE,CAAC,CAAC;yBACtF;6BAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,8CAA8C,EAAE;4BAC3E,oEAAU,CAAC,MAAM,EAAE,uDAAuD,SAAS,EAAE,CAAC,CAAC;yBAC1F;6BAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,kCAAkC,EAAE;4BAC/D,oEAAU,CAAC,MAAM,EAAE,2CAA2C,SAAS,EAAE,CAAC,CAAC;yBAC9E;6BAAM,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,KAAK,8BAA8B,EAAE;4BAC3D,oEAAU,CAAC,MAAM,EAAE,sCAAsC,SAAS,EAAE,CAAC,CAAC;4BACtE,IAAI,CAAC,SAAS,CAAC,6FAA6F,EAAE,SAAS,CAAC,CAAC;yBAC5H;6BAAM;4BACH,sEAAW,CAAC,MAAM,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;yBAC/D;qBACJ;gBACL,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC;aAC/D;SACJ;IACL,CAAC;IAGD,WAAW;QACP,MAAM,MAAM,GAAG,uBAAuB;QACtC,sBAAsB;QACtB,IAAI;YACA,IAAI,CAAC,KAAK,GAAG,sEAAa,CAAC,iGAA0B,CAAC,CAAC;YACvD,IAAI,CAAC,SAAS,GAAG,2EAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1C,wEAAS,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;gBAClC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC5B,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;QAAC,OAAO,GAAG,EAAE;YACV,oEAAU,CAAC,MAAM,EAAE,kCAAkC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAC/E;IACL,CAAC;IAGD,WAAW;QACP,MAAM,MAAM,GAAG,uBAAuB,CAAC;QAEvC,uEAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAC,QAAQ,EAAE,2FAAuB,EAAC,CAAC;aACxD,IAAI,CAAC,CAAC,YAAY,EAAE,EAAE;YACnB,IAAI,YAAY,EAAE;gBACd,2CAA2C;gBAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;aACtC;iBAAM;gBACH,2BAA2B;gBAC3B,kFAAiB,CAAC,qEAAqE,CAAC,CAAC;gBACzF,sBAAsB;gBACtB,uCAAuC;gBACvC,+BAA+B;aAClC;QACL,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,oEAAU,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;YACxC,8BAA8B;YAC9B,0DAA0D;YAC1D,+BAA+B;QACnC,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,qBAAqB;QACjB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAC1C,IAAI,IAAI,CAAC,SAAS,EAAE;YAEhB,uEAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,EAAC,QAAQ,EAAE,2FAAuB,EAAC,CAAC;iBACxD,IAAI,CAAC,CAAC,cAAc,EAAE,EAAE;gBACrB,kDAAkD;gBAClD,IAAI,CAAC,eAAe,CAAC,cAAc,CAAC,CAAC;YACzC,CAAC,CAAC;iBACD,KAAK,CAAC,UAAU,GAAG;gBAChB,sEAAW,CAAC,MAAM,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;SACV;aAAM;YACH,oEAAU,CAAC,MAAM,EAAE,uCAAuC,CAAC,CAAC;SAC/D;IACL,CAAC;IAGD,eAAe,CAAC,cAAsB;QAClC,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAC3C,2DAA2D;QAC3D,IAAI,sFAAkB,EAAE;YACpB,qGAA0B,CAAC,cAAc,CAAC;iBACrC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACd,IAAI,SAAS,EAAE;oBACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;iBAC3B;qBAAM;oBACH,oFAAkB,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;iBAChE;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,oEAAU,CAAC,MAAM,EAAE,uBAAuB,GAAG,EAAE,CAAC,CAAC;YACrD,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAGD,SAAS,CAAC,OAAO;QACb,MAAM,MAAM,GAAG,qBAAqB,CAAC;QAErC,IAAI;YACA,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,EAAE;gBACzB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;gBAC1B,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACjC,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;gBAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;gBAEpC,kEAAS,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACvB,4CAA4C;gBAC5C,8FAA8F;gBAC9F,2FAA2F;gBAC3F,8CAA8C;gBAE9C,QAAQ,IAAI,CAAC,MAAM,EAAE;oBACjB,KAAK,aAAa;wBACd,+DAA+D;wBAC/D,wEAAwE;wBACxE,IAAI,QAAQ,GAAG,KAAK,CAAC;wBACrB,IAAI,KAAK,EAAE;4BACP,QAAQ,GAAG,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,OAAO,CAAC;4BAChD,IAAI,QAAQ,EAAE;gCACV,0GAA0G;6BAC7G;iCAAM,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gCAC9C,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gCACxC,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;gCACrD,0FAA0F;6BAC7F;yBACJ;wBAED,qDAAqD;wBACrD,IAAI,QAAQ,EAAE;4BACV,oEAAoE;4BACpE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;yBAC3B;6BAAM;4BACH,kEAAkE;yBACrE;wBACD,MAAM;oBAEV,uBAAuB;oBACvB,oBAAoB;oBACpB,6DAA6D;oBAC7D,gCAAgC;oBAChC,MAAM;oBACN,WAAW;oBAEX,KAAK,aAAa;wBACd,wDAAwD;wBACxD,2BAA2B;wBAC3B,IAAI,IAAI,CAAC,YAAY,EAAE;4BACnB,IAAI,CAAC,aAAa,EAAE,CAAC;yBACxB;wBACD,MAAM;oBAEV;wBACI,2DAA2D;wBAC3D,MAAM;iBACb;gBAED,4BAA4B;gBAC5B,UAAU,CAAC,GAAG,EAAE;oBACZ,gEAAgE;oBAChE,kEAAS,CAAC,MAAM,EAAE,aAAa,IAAI,CAAC,MAAM,WAAW,IAAI,CAAC,KAAK,SAAS,GAAG,EAAE,CAAC;oBAC9E,uGAA2B,CAAC,IAAI,CAAC,KAAK,EAAE,qFAAsB,CAAC;gBACnE,CAAC,EAAE,GAAG,CAAC,CAAC;aAEX;iBAAM;gBACH,sEAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;aACzE;SACJ;QAAC,OAAO,GAAG,EAAE;YACV,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,QAAQ,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;SAC3E;IACL,CAAC;IAGD,IAAI,YAAY;QACZ,sGAAsG;QACtG,IAAI,SAAS,GAAG,IAAI,CAAC,gBAAgB,GAAG,CAAC,IAAI,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC3F,OAAO,SAAS,CAAC;IACrB,CAAC;IAGD,WAAW;QACP,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACvC,6FAAsB,EAAE;aACnB,IAAI,CAAC,KAAK,CAAC,EAAE;;YACV,qDAAqD;YACrD,sCAAsC;YACtC,IAAI,KAAK,CAAC,OAAO;gBAAE,4FAAqB,GAAG,KAAK,CAAC,OAAO,CAAC;YACzD,IAAI,KAAK,CAAC,SAAS;gBAAE,4FAAqB,GAAG,KAAK,CAAC,SAAS,CAAC;YAC7D,4FAAqB,GAAG,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,4EAAiB,CAAC,CAAC,CAAC,sFAAsB,CAAC;YAC7F,8FAAsB,GAAG,KAAK,CAAC,QAAQ,CAAC;YACxC,8FAAsB,GAAG,KAAK,CAAC,UAAU,CAAC;YAC1C,kGAAwB,GAAG,KAAK,CAAC,OAAO,CAAC;YACzC,gGAAuB,GAAG,KAAK,CAAC,SAAS,CAAC;YAC1C,sFAAkB,GAAG,KAAK,CAAC,MAAM,CAAC;YAClC,4FAAqB,GAAG,KAAK,CAAC,WAAW,CAAC;YAC1C,4FAAqB,GAAG,KAAK,CAAC,YAAY,CAAC;YAC3C,4FAAqB,GAAG,KAAK,CAAC,SAAS,CAAC;YACxC,wGAA2B,GAAG,WAAK,CAAC,UAAU,mCAAI,8GAAuB,CAAC;YAE1E,IAAI,KAAK,CAAC,eAAe;gBAAE,oGAAyB,GAAG,KAAK,CAAC,eAAe,CAAC;YAC7E,IAAI,KAAK,CAAC,iBAAiB;gBAAE,wGAA2B,GAAG,KAAK,CAAC,iBAAiB,CAAC;YACnF,IAAI,KAAK,CAAC,eAAe;gBAAE,8FAAsB,GAAG,KAAK,CAAC,eAAe,CAAC;YAC1E,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAChB,IAAI;oBACA,IAAI,KAAK,GAAG,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;wBAC5B,0FAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC5C,0FAAoB,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;qBAC/C;iBACJ;gBAAC,OAAO,GAAG,EAAE;oBACV,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;wBAC3B,sEAAW,CAAC,MAAM,EAAE,oBAAoB,GAAG,EAAE,CAAC,CAAC;qBAClD;iBACJ;aACJ;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,cAAc,CAAC,GAAW;QACtB,IAAI,SAAS,GAAW,CAAC,CAAC;QAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE;YACxB,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;SAC/B;aAAM;YACH,IAAI,GAAG,GAAG,CAAC,EAAE;gBACT,SAAS,GAAG,CAAC;aAChB;YAED,IAAI,GAAG,GAAG,GAAG,EAAE;gBACX,SAAS,GAAG,GAAG;aAClB;SAEJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAGD,YAAY;QACR,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,wBAAwB,CAAC;QAExC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO;YAEzC,IAAI,KAAK,GAAe,EAAE,CAAC;YAC3B,KAAK,CAAC,OAAO,GAAG,4FAAqB,CAAC;YACtC,KAAK,CAAC,SAAS,GAAG,4FAAqB,CAAC;YACxC,KAAK,CAAC,QAAQ,GAAG,4FAAqB,KAAK,4EAAiB,CAAC;YAC7D,KAAK,CAAC,QAAQ,GAAG,8FAAsB,CAAC;YACxC,KAAK,CAAC,SAAS,GAAG,gGAAuB,CAAC;YAC1C,KAAK,CAAC,MAAM,GAAG,sFAAkB,CAAC;YAClC,KAAK,CAAC,OAAO,GAAG,kGAAwB,CAAC;YACzC,KAAK,CAAC,UAAU,GAAG,8FAAsB,CAAC;YAC1C,KAAK,CAAC,QAAQ,GAAG,sGAA0B,CAAC;YAC5C,KAAK,CAAC,YAAY,GAAG,4FAAqB,CAAC;YAC3C,KAAK,CAAC,SAAS,GAAG,4FAAqB,CAAC;YACxC,KAAK,CAAC,WAAW,GAAG,4FAAqB,CAAC;YAC1C,KAAK,CAAC,eAAe,GAAG,oGAAyB,CAAC;YAClD,KAAK,CAAC,iBAAiB,GAAG,wGAA2B,CAAC;YACtD,KAAK,CAAC,eAAe,GAAG,8FAAsB,CAAC;YAC/C,KAAK,CAAC,gBAAgB,GAAG,0GAA4B,CAAC;YACtD,KAAK,CAAC,SAAS,GAAG,4GAA6B,CAAC;YAChD,KAAK,CAAC,eAAe,GAAG,wGAA2B,CAAC;YAEpD,+CAA+C;YAE/C,6FAA6F;YAC7F,IAAI,MAAM,GAAG,0FAAoB,CAAC;YAClC,IAAI,MAAM,GAAG,0FAAoB,CAAC;YAClC,IAAI,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,CAAC,EAAE;gBAC9B,KAAK,CAAC,QAAQ,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;aAC1C;YAED,6CAA6C;YAC7C,iCAAiC;YACjC,6FACgB,CAAC,KAAK,CAAC;iBAClB,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBACjC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;oBAC3B,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACtC,sEAAW,CAAC,MAAM,EAAE,gCAAgC,SAAS,gBAAgB,GAAG,oBAAoB,oFAAiB,EAAE,CAAC,CAAC;iBAC5H;gBACD,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,0BAA0B;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,sCAAsC,CAAC;QAEtD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO;YAEzC,yHAC8B,CAAC,wGAA2B,CAAC;iBACtD,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;iBACjC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;oBAC3B,sEAAW,CAAC,MAAM,EAAE,gDAAgD,wGAA2B,gBAAgB,GAAG,oBAAoB,oFAAiB,EAAE,CAAC,CAAC;iBAC9J;gBACD,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,kBAAkB,CAAC,IAAmB;QAClC,IAAI;YACA,IAAI,UAAU,GAAiB,IAAI,CAAC;YACpC,IAAI,CAAC,UAAU,EAAE;gBACb,UAAU,GAAG;oBAET,UAAU,EAAE,IAAI,CAAC,UAAU;oBAC3B,WAAW,EAAE,IAAI,CAAC,kBAAkB;oBACpC,YAAY,EAAE,IAAI,CAAC,gBAAgB;oBACnC,WAAW,EAAE,IAAI,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,gBAAgB;iBAE9D;aACJ;YACD,MAAM,SAAS,GAAG,kFAAiB,EAAE,CAAC;YACtC,IAAI,SAAS,EAAE;gBACX,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC9B;SACJ;QAAC,OAAO,MAAM,EAAE;YACb,oEAAU,CAAC,oBAAoB,EAAE,sCAAsC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;SAClG;IACL,CAAC;IAED,eAAe;QACX,wDAAgB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IACrC,CAAC;IAEK,MAAM,CAAC,eAAwB,KAAK;;YACtC,qCAAqC;YACrC,4CAA4C;YAC5C,+BAA+B;YAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YAExB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;YAEjC,gFAAgF;YAChF,IAAI,CAAC,YAAY,EAAE;gBACf,iHAAgC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;gBACrD,IAAI,CAAC,kBAAkB,CAAC,EAAC,YAAY,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAC,CAAC,CAAC;aAC7G;YAED,gBAAgB;YAChB,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;YAChC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAE/B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;YAC7B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAC9B,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,KAAK,CAAC;YAE1C,yBAAyB;YACzB,IAAI,CAAC,KAAK,GAAG,uFAAqB,CAAC;YACnC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;YACxB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,KAAK,EAAa,CAAC;YACvC,6BAA6B;YAC7B,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;YAC9B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,wEAAc,CAAC;YAC9B,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC;YAC9B,iCAAiC;YACjC,yCAAyC;YACzC,kCAAkC;YAClC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;YACvB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;YACrB,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,GAAG,SAAS,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,SAAS,CAAC;gBAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;gBAChC,IAAI,CAAC,MAAM,CAAC,OAAO,GAAG,SAAS,CAAC;aACnC;YACD,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;YAC1B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;YAEnB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YAEvB,IAAI,CAAC,MAAM,GAAG,IAAI,KAAK,EAAW,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAU,CAAC;YACjC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,EAAU,CAAC;YACnC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,EAAU,CAAC;YAEjC,IAAI,IAAI,CAAC,YAAY,EAAE;gBACnB,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,EAAiB,CAAC;aAClD;YAED,IAAI,IAAI,CAAC,IAAI,EAAE;gBACX,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,KAAK,EAAW,CAAC;gBAC5C,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,KAAK,EAAS,CAAC;aAC/C;YAED,8FAAsB,GAAG,KAAK,CAAC;YAC/B,sIAA0C,GAAG,KAAK,CAAC;YACnD,gGAAuB,GAAG,EAAE,CAAC;YAC7B,4GAA6B,GAAG,CAAC,CAAC;YAElC,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,oGAAqB,GAAG,IAAI,CAAC;YAC7B,wHAA+B,EAAE,CAAC;YAClC,sGAAsB,GAAG,0EAAgB,CAAC;YAC1C,+EAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;YAEhD,+EAAgB,CAAC,oFAAe,CAAC,CAAC;QAEtC,CAAC;KAAA;IAYD,iBAAiB,CAAC,WAAmB;QACjC,MAAM,MAAM,GAAG,6BAA6B,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,gGACW,EAAE;aACf,IAAI,CAAC,KAAK,CAAC,EAAE;YAEV,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;YACnC,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;YAC5C,kGAAwB,GAAG,KAAK,CAAC,YAAY,CAAC;YAC9C,sDAAsD;YAEtD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,WAAW,IAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE;gBAC/C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;gBAC1C,IAAI,KAAK,EAAE;oBACP,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,8GAA8B,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;oBACvG,IAAI,8GAA8B,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBAAE,8FAAsB,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,8FAAsB,CAAC,CAAC;oBAC9H,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;oBAC1D,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;oBAC9B,2BAA2B;iBAC9B;qBAAM;oBACH,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;oBACtD,IAAI,SAAS,EAAE;wBACX,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC;wBAChF,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;wBAChC,IAAI,UAAU,EAAE;4BACZ,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC;4BACnC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;yBAChC;qBACJ;iBACJ;aACJ;YAED,IAAI,IAAI,CAAC,wBAAwB,EAAE;gBAC/B,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;aACzC;QAEL,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gBAC3B,IAAI,MAAM,GAAG,WAAW,CAAC;gBACzB,IAAI,GAAG,CAAC,QAAQ,EAAE;oBACd,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;iBAC3B;qBAAM,IAAI,GAAG,CAAC,OAAO,EAAE;oBACpB,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;iBACxB;gBACD,IAAI,MAAM,KAAK,4CAA4C,EAAE;oBACzD,oEAAU,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,CAAC;iBAC9C;qBAAM;oBACH,sEAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAAC,CAAC;iBACrD;aACJ;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,iBAAiB;QACb,MAAM,MAAM,GAAG,6BAA6B,CAAC;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC;QAGlB,gGACkB,EAAE;aACf,IAAI,CAAC,KAAK,CAAC,EAAE;YACV,yDAAyD;YACzD,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;YAC7C,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;QAClD,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,sCAAsC;YACtC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gBAC3B,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC5B,IAAI,MAAM,KAAK,4CAA4C,EAAE;oBACzD,oEAAU,CAAC,MAAM,EAAE,aAAa,GAAG,MAAM,CAAC,CAAC;iBAC9C;qBAAM;oBACH,sEAAW,CAAC,MAAM,EAAE,mBAAmB,GAAG,MAAM,CAAC,CAAC;iBACrD;aACJ;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,oGAAoG;IACpG,gBAAgB,CAAC,KAAa,EAAE,QAAgB;QAC5C,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAC;QAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,CAAC,SAAS,gBAAgB;YACtB,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,YAAY,IAAI,QAAQ,EAAE;oBAC/C,QAAQ,GAAG,KAAK,CAAC;oBACjB,UAAU,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;iBAC1C;qBAAM;oBACH,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;oBAClB,mEAAW,CAAC,EAAC,IAAI,EAAE,iFAAa,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;iBAC9C;aACJ;QAEL,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,cAAc,CAAC,KAAa,EAAE,QAAgB;QAC1C,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,QAAQ,GAAG,QAAQ,IAAI,KAAK,CAAC;QAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;QAEjB,CAAC,SAAS,aAAa;YACnB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE;gBAChC,IAAI,QAAQ,IAAI,KAAK,IAAI,CAAC,EAAE;oBACxB,yEAAyE;oBACzE,QAAQ,GAAG,KAAK,CAAC;oBACjB,UAAU,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;iBACpC;qBAAM;oBACH,IAAI,IAAI,CAAC,oBAAoB,IAAI,KAAK,EAAE;wBACpC,MAAM,mBAAmB,GAAG,6CAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,cAAc,CAAC,CAAC;wBAC3E,4FAA4F;wBAC5F,IAAI,IAAI,CAAC,WAAW,IAAI,mBAAmB,IAAI,QAAQ,GAAG,EAAE,EAAE;4BAC1D,4IAA4I;4BAC5I,QAAQ,EAAE,CAAC;4BACX,kFAAkF;4BAClF,IAAI,CAAC,aAAa,EAAE,CAAC;yBACxB;wBAED,UAAU,CAAC,aAAa,EAAE,QAAQ,CAAC,CAAC;qBACvC;yBAAM;wBACH,kFAAiB,CAAC,+BAA+B,EAAE,IAAI,IAAI,EAAE,CAAC,YAAY,EAAE,CAC3E,CAAC;qBACL;iBACJ;aACJ;QACL,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAED,aAAa;QAET,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACzC,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAEzD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACpB,gEAAgE;YAChE,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;SAC/B;aAAM;YACH,8CAA8C;SACjD;IACL,CAAC;IAGD,aAAa;QACT,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,0CAA0C;QAC1C,qGAA0B,EAAE;aACvB,IAAI,CAAC,KAAK,CAAC,EAAE;YACV,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,oFAAkB,CAAC,4BAA4B,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QACtE,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,WAAW,CAAC,KAAa,EAAE,QAAgB,EAAE,OAAe;QACxD,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,QAAQ,GAAG,QAAQ,IAAI,GAAG,CAAC;QAC3B,qCAAqC;QACrC,yCAAyC;QACzC,uDAAuD;QAEvD,CAAC,SAAS,UAAU;YAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,OAAO;aACV;YAED,IAAI,OAAO,CAAC;YACZ,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YAClC,IAAI,KAAK,EAAE;gBACP,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;aAC3B;YAED,IAAI,QAAQ,IAAI,KAAK,IAAI,CAAC,EAAE;gBACxB,iEAAiE;gBACjE,QAAQ,GAAG,KAAK,CAAC;gBACjB,UAAU,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;aACjC;iBAAM;gBACH,IAAI,IAAI,CAAC,iBAAiB,IAAI,KAAK,EAAE;oBACjC,MAAM,iBAAiB,GAAG,6CAAM,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,CAAC,CAAC;oBACvE,yFAAyF;oBACzF,IAAI,IAAI,CAAC,WAAW,IAAI,iBAAiB,IAAI,QAAQ,GAAG,EAAE,EAAE;wBACxD,uIAAuI;wBACvI,QAAQ,EAAE,CAAC;wBACX,0EAA0E;wBAC1E,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;qBAC3B;oBAED,UAAU,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;iBACpC;qBAAM;oBACH,mEAAmE;iBACtE;aACJ;QACL,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IAGD,SAAS,CAAC,WAAoB;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,qBAAqB,CAAC;QAErC,mCAAmC;QAEnC,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE;YAE/B,OAAO,IAAI,OAAO,CAAO,OAAO,CAAC,EAAE;gBAE/B,IAAI,OAAe,CAAC;gBACpB,IAAI,WAAW,EAAE;oBACb,OAAO,GAAG,WAAW;iBACxB;qBAAM;oBACH,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;wBACvB,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;qBAC3C;iBACJ;gBAED,IAAI,IAAI,CAAC,gBAAgB,IAAI,KAAK,EAAE;oBAChC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;oBAE7B,wFAAoB,CAAC,OAAO,CAAC;yBACxB,IAAI,CAAC,MAAM,CAAC,EAAE;wBACX,qDAAqD;wBACrD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAC7B,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,IAAI,KAAK,EAAE;4BACjC,sEAAW,CAAC,MAAM,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;yBAC1E;oBACL,CAAC,CAAC;yBACD,OAAO,CAAC;wBACL,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;wBAC9B,OAAO,EAAE,CAAC;oBACd,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,OAAO,EAAE,CAAC;iBACb;YAGL,CAAC,CAAC,CAAC;SAEN;IAEL,CAAC;IAGD,WAAW,CAAC,MAAe;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,+CAA+C;QAE/C,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,IAAI,KAAK,EAAE;YAErC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YACxB,4CAA4C;YAE5C,IAAI,cAAc,GAAG,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9G,IAAI,cAAc,EAAE;gBAChB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;oBACtD,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnB,2CAA2C;iBAC9C;aACJ;YAED,gEAAgE;YAChE,4FAA4F;YAC5F,4CAA4C;YAC5C,2EAA2E;YAC3E,uBAAuB;YACvB,6CAA6C;YAC7C,wBAAwB;YACxB,IAAI;YAEJ,mCAAmC;YAEnC,IAAI,aAAa,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9D,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;YAED,IAAI,aAAa,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC9D,IAAI,aAAa,EAAE;gBACf,IAAI,CAAC,WAAW,EAAE,CAAC;aACtB;SAEJ;IAEL,CAAC;IAGD,kBAAkB,CAAC,UAAsB,EAAE,UAAmB;QAC1D,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,UAAU,EAAE;YACZ,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACnB,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,6EAAiB,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,EAAE;oBACpD,QAAQ,CAAC,CAAC,GAAG,EAAE;wBAEX,KAAK,8EAAmB;4BACpB,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BAC5B,MAAM;wBAEV,KAAK,4EAAkB;4BACnB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BAC3B,MAAM;wBAEV,KAAK,kFAAqB;4BACtB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BAC3B,MAAM;wBAEV,KAAK,4EAAkB;4BACnB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BAC3B,MAAM;wBAEV,KAAK,4EAAkB;4BACnB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BAC3B,MAAM;wBAEV,KAAK,4EAAkB;4BACnB,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BAC3B,MAAM;qBACb;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAGD,iBAAiB,CAAC,YAA4B;QAC1C,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,YAAY,EAAE;YACd,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACrB,IAAI,CAAC,EAAE;oBACH,IAAI,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAC/B,IAAI,EAAE,EAAE;wBACJ,+BAA+B;wBAC/B,4BAA4B;qBAC/B;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAGD,UAAU,CAAC,KAAc;QACrB,qDAAqD;QACrD,qCAAqC;QACrC,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC7B,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1C,sBAAsB;IAC1B,CAAC;IAGD,YAAY,CAAC,MAAmB;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI;gBACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC7C,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;gBACvC,IAAI,iBAAiB,EAAE;oBACnB,mDAAmD;oBACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iBAC7B;qBAAM;oBACH,IAAI,QAAQ,IAAI,IAAI,EAAE;wBAClB,uDAAuD;wBACvD,QAAQ,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;qBAC9B;yBAAM;wBACH,kDAAkD;wBAClD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC3B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC3B;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAGD,WAAW,CAAC,MAAiB;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,MAAM,CAAC,OAAO,CAAC,UAAU,KAAK;gBAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC7C,IAAI,iBAAiB,GAAG,KAAK,CAAC,SAAS,CAAC;gBACxC,IAAI,iBAAiB,EAAE;oBACnB,iDAAiD;oBACjD,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;iBAC9B;qBAAM;oBACH,IAAI,QAAQ,IAAI,IAAI,EAAE;wBAClB,2DAA2D;wBAC3D,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBAC1B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE;4BAChE,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;yBACrC;qBACJ;yBAAM;wBACH,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC5B,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC3B;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAGD,UAAU,CAAC,MAAgB;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI;gBACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC;gBACvC,IAAI,iBAAiB,EAAE;oBACnB,+CAA+C;oBAC/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iBAC7B;qBAAM;oBACH,IAAI,QAAQ,IAAI,IAAI,EAAE;wBAClB,yDAAyD;wBACzD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;qBAC3B;yBAAM;wBACH,mDAAmD;wBACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACzB;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAGD,UAAU,CAAC,MAAgB;QACvB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,MAAM,CAAC,OAAO,CAAC,UAAU,IAAI;gBACzB,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,IAAI,CAAC,eAAe,EAAE;oBACtB,+CAA+C;oBAC/C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iBAC7B;qBAAM;oBACH,IAAI,QAAQ,IAAI,IAAI,EAAE;wBAClB,wDAAwD;wBACxD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;qBAC3B;yBAAM;wBACH,mDAAmD;wBACnD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACzB;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAGD,YAAY,CAAC,MAAgB;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,MAAM,CAAC,OAAO,CAAC,UAAU,MAAM;gBAC3B,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,MAAM,CAAC,eAAe,EAAE;oBACxB,mDAAmD;oBACnD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;iBACtC;qBAAM;oBACH,IAAI,QAAQ,IAAI,IAAI,EAAE;wBAClB,gEAAgE;wBAChE,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;wBAC5B,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;qBAClC;yBAAM;wBACH,2DAA2D;wBAC3D,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBAC7B;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAGD,UAAU,CAAC,MAAgB;QAEvB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,KAAK,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACtD,MAAM,IAAI,GAAG,EAAc,CAAC;YAC5B,MAAM,OAAO,GAAG,EAAc,CAAC;YAC/B,MAAM,GAAG,GAAG,EAAc,CAAC;YAC3B,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI;gBAClE,IAAI,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3C,IAAI,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;gBAC7C,IAAI,iBAAiB,EAAE;oBACnB,IAAI,QAAQ,EAAE;wBACV,wDAAwD;wBACxD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC;wBACtB,KAAK,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;qBACzC;iBACJ;qBAAM;oBACH,IAAI,QAAQ,IAAI,IAAI,EAAE;wBAClB,wDAAwD;wBACxD,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACxB,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAClB;yBAAM;wBACH,wDAAwD;wBACxD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBACpB,yBAAyB;wBACzB,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBACnB;iBACJ;YACL,CAAC,CAAC,CAAC;YACH,gHAA2B,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,CAAC;SACnD;IACL,CAAC;IAGD,UAAU,CAAC,MAAgB;QACvB,4BAA4B;QAE5B,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YAClB,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7D,IAAI,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;YAC7C,IAAI,iBAAiB,EAAE;gBACnB,6CAA6C;gBAC7C,IAAI,QAAQ,EAAE;oBACV,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACzB;aACJ;iBAAM;gBACH,IAAI,QAAQ,IAAI,IAAI,EAAE;oBAClB,6CAA6C;oBAC7C,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;iBAC3B;qBAAM;oBACH,6CAA6C;oBAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACzB;aACJ;QACL,CAAC,CAAC,CAAC;IAEP,CAAC;IAGD,sBAAsB;IAGtB,mBAAmB;IAGnB,SAAS;QACL,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,QAAQ,0FAAoB,EAAE;YAC1B,KAAK,6EAAkB;gBACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAC7B,IAAI,KAAK,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,EAAE;wBACnC,OAAO,CAAC,CAAC;qBACZ;yBAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE;wBACxC,OAAO,CAAC,CAAC,CAAC;qBACb;oBACD,OAAO,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC;gBACH,MAAM;YAEV,KAAK,2EAAiB;gBAClB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAC7B,OAAO,KAAK,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBAC9D,CAAC,CAAC,CAAC;gBACH,MAAM;YAEV,KAAK,yFAAwB;gBACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;oBAC7B,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE;wBACnC,OAAO,CAAC,CAAC,CAAC;qBACb;yBAAM,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,EAAE;wBAC5C,OAAO,CAAC,CAAC;qBACZ;oBACD,OAAO,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC;gBACH,MAAM;SACb;IACL,CAAC;IAGD,WAAW;QACP,QAAQ,gGAAuB,EAAE;YAC7B,KAAK,4EAAkB;gBACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;oBAC7B,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;wBACjC,OAAO,CAAC,CAAC,CAAC;qBACb;yBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;wBAC1C,OAAO,CAAC,CAAC;qBACZ;oBACD,OAAO,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC;gBACH,MAAM;YAEV,KAAK,4EAAkB;gBACnB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;oBAC7B,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE;wBAC5C,WAAW,EAAE,MAAM;qBACtB,CAAC,CAAC;gBACP,CAAC,CAAC,CAAC;gBACH,MAAM;YAEV,KAAK,gFAAoB;gBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE;oBAC7B,IAAI,IAAI,CAAC,iBAAiB,KAAK,EAAE,IAAI,IAAI,CAAC,iBAAiB,KAAK,EAAE,EAAE;wBAChE,OAAO,CAAC,CAAC;qBACZ;yBAAM,IACH,IAAI,CAAC,iBAAiB,KAAK,EAAE;wBAC7B,IAAI,CAAC,iBAAiB,KAAK,EAAE,EAC/B;wBACE,OAAO,CAAC,CAAC,CAAC;qBACb;yBAAM,IACH,IAAI,CAAC,iBAAiB,KAAK,EAAE;wBAC7B,IAAI,CAAC,iBAAiB,KAAK,EAAE,EAC/B;wBACE,OAAO,CAAC,CAAC;qBACZ;oBAED,IAAI,IAAI,CAAC,iBAAiB,KAAK,EAAE,IAAI,IAAI,CAAC,iBAAiB,KAAK,EAAE,EAAE;wBAChE,IAAI,SAAS,GAAG,IAAI,CAAC,iBAAiB,CAAC,aAAa,CAChD,IAAI,CAAC,iBAAiB,EACtB,IAAI,EACJ,EAAC,WAAW,EAAE,MAAM,EAAC,CACxB,CAAC;wBAEF,IAAI,SAAS,KAAK,CAAC,EAAE;4BACjB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,EAAE;gCACjC,OAAO,CAAC,CAAC,CAAC;6BACb;iCAAM,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,SAAS,EAAE;gCAC1C,OAAO,CAAC,CAAC;6BACZ;4BACD,OAAO,CAAC,CAAC;yBACZ;6BAAM;4BACH,OAAO,SAAS,CAAC;yBACpB;qBACJ;gBACL,CAAC,CAAC,CAAC;gBACH,MAAM;SACb;IACL,CAAC;IAGD,WAAW;QACP,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,QAAQ,gGAAuB,EAAE;YAC7B,KAAK,8EAAoB;gBACrB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;oBACnC,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBACtD,IAAI,UAAU,GAAG,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;oBAEtD,IAAI,UAAU,IAAI,CAAC,UAAU,EAAE;wBAC3B,OAAO,CAAC,CAAC;qBACZ;yBAAM,IAAI,CAAC,UAAU,IAAI,UAAU,EAAE;wBAClC,OAAO,CAAC,CAAC,CAAC;qBACb;oBAED,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,IAAI,EAAE;wBAC/B,OAAO,CAAC,CAAC;qBACZ;yBAAM,IAAI,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;wBACtC,OAAO,CAAC,CAAC,CAAC;qBACb;yBAAM,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE;wBACvC,OAAO,CAAC,CAAC;qBACZ;oBACD,OAAO,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAChF,CAAC,CAAC,CAAC;gBACH,MAAM;YAEV,KAAK,4FAA2B;gBAC5B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE;oBACnC,IAAI,OAAO,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,EAAE;wBAC3C,OAAO,CAAC,CAAC,CAAC;qBACb;oBACD,OAAO,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC;gBACH,MAAM;SACb;IACL,CAAC;IAGD,SAAS;QACL,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,QAAQ,4FAAqB,EAAE;YAC3B,KAAK,6EAAmB;gBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;oBAC/B,OAAO,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;gBAC9E,CAAC,CAAC,CAAC;gBACH,MAAM;YAEV,KAAK,qFAAuB;gBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,EAAE;oBAC/B,IAAI,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE;wBACnC,OAAO,CAAC,CAAC,CAAC;qBACb;yBAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,QAAQ,EAAE;wBAC5C,OAAO,CAAC,CAAC;qBACZ;oBACD,OAAO,CAAC,CAAC;gBACb,CAAC,CAAC,CAAC;gBACH,MAAM;SACb;IACL,CAAC;IAGD,sBAAsB;IAGtB,mBAAmB;IAGnB,SAAS,CAAC,OAAe;QACrB,IAAI,KAAc,CAAC;QACnB,IAAI,OAAO,IAAI,OAAO,IAAI,EAAE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACnE,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;SACvD;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,UAAU,CAAC,QAAgB;QACvB,IAAI,KAAa,CAAC;QAClB,IAAI,QAAQ,IAAI,QAAQ,IAAI,EAAE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACvE,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;SACzD;QACD,IAAI,CAAC,KAAK,IAAI,QAAQ,IAAI,IAAI,CAAC,MAAM,EAAE;YACnC,KAAK,GAAG,+FAAuB,CAAC;SACnC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,QAAQ,CAAC,MAAc;QACnB,IAAI,KAAa,CAAC;QAClB,IAAI,MAAM,IAAI,MAAM,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;gBACnC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;iBAChD;aACJ;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,qCAAqC;IACrC,uBAAuB;IACvB,kCAAkC;IAClC,iDAAiD;IACjD,2DAA2D;IAC3D,QAAQ;IACR,MAAM;IACN,kBAAkB;IAClB,IAAI;IAGJ,WAAW,CAAC,MAAc;QACtB,IAAI,KAAgB,CAAC;QACrB,IAAI,MAAM,IAAI,MAAM,IAAI,EAAE,EAAE;YACxB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;aACrD;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,QAAQ,CAAC,MAAc;QACnB,IAAI,KAAa,CAAC;QAClB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC;SACnD;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,QAAQ,CAAC,MAAc;QACnB,IAAI,KAAa,CAAC;QAClB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC;SACpD;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,sBAAsB;IAGtB,oBAAoB;IAEpB,YAAY,CAAC,KAAc,EAAE,UAAU,GAAG,KAAK;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACxC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,IAAI,uFAAqB,EAAE;YACnD,0FAAqB,CAAC,KAAK,CAAC;iBACvB,IAAI,CAAC,YAAY,CAAC,EAAE;gBACjB,kEAAkE;gBAElE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;oBACzB,IAAI,CAAC,UAAU,EAAE;wBACb,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;qBACzC;iBACJ;qBAAM;oBACH,8BAA8B;oBAC9B,iDAAiD;oBACjD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;oBAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;iBACvB;gBAED,qBAAqB;YACzB,CAAC,CAAC,CAAC;SACV;aAAM;YACH,oEAAU,CAAC,MAAM,EAAE,iBAAiB,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAClD,IAAI,MAAM,GAAG,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;YAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACjC;IAEL,CAAC;IAED,oBAAoB,CAAC,KAAc,EAAE,UAAU,GAAG,KAAK;QACnD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,OAAO,0FAAqB,CAAC,KAAK,CAAC;aAC9B,IAAI,CAAC,YAAY,CAAC,EAAE;YACjB,kEAAkE;YAElE,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE;gBACzB,IAAI,CAAC,UAAU,EAAE;oBACb,KAAK,CAAC,KAAK,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;iBACzC;gBAED,OAAO,YAAY,CAAC;aACvB;iBAAM;gBACH,8BAA8B;gBAC9B,iDAAiD;gBACjD,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;gBAC/B,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAC;aACf;YAED,qBAAqB;QACzB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC,CAAC;IAEX,CAAC;IAGD,aAAa,CAAC,QAAkB;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,aAAa,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QACvE,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;QAEzE,IAAI,SAAS,GAAG,sFAAkB,IAAI,oGAAyB,GAAG,CAAC,CAAC;QACpE,IAAI,cAAc,GAAG,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;QAC/D,IAAI,SAAS,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;QAChD,IAAI,gBAAgB,GAAa,EAAE,CAAC;QACpC,IAAI,cAAc,GAAc,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,cAAc,IAAI,SAAS,EAAE;YAE1C,sBAAsB;YAEtB,0FACe,CAAC,aAAa,EAAE,QAAQ,CAAC;iBACnC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,0CAA0C;gBAC1C,IAAI,MAAM,EAAE;oBACR,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAEzB,IAAI,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;oBACnC,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBACrC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;4BACxB,IAAI,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;4BAC7B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,IAAI,OAAO,CAAC,CAAC;4BAC1D,IAAI,KAAK,EAAE;gCACP,gDAAgD;gCAChD,KAAK,CAAC,eAAe,GAAG,MAAM,CAAC,WAAW,CAAC;gCAC3C,KAAK,CAAC,iBAAiB,GAAG,MAAM,CAAC,aAAa,CAAC;gCAC/C,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gCACrC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;gCACrC,gCAAgC;gCAEhC,qDAAqD;gCACrD,oDAAoD;gCACpD,sDAAsD;gCACtD,sDAAsD;gCAEtD,IAAI,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;gCAC/B,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;gCAC3D,IAAI,MAAM,EAAE;oCACR,kDAAkD;oCAClD,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,CAAC,QAAQ,EAAE;wCAC7C,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;wCAC9B,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,SAAS,CAAC;wCAC9B,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC;wCACjC,MAAM,CAAC,QAAQ,GAAG,GAAG,CAAC;wCAEtB,IAAI,cAAc,KAAK,QAAQ,EAAE;4CAC7B,IAAI,CAAC,WAAW,EAAE,CAAC;yCACtB;qCAEJ;yCAAM;wCACH,2CAA2C;qCAC9C;iCACJ;6BACJ;iCAAM;gCACH,gFAAgB,CAAC,MAAM,EAAE,mBAAmB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;gCAC9D,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gCAC/B,sCAAsC;gCACtC,oDAAoD;6BACvD;wBACL,CAAC,CAAC,CAAC;wBACH,mCAAmC;wBACnC,mEAAmE;wBACnE,gBAAgB;wBAChB,kCAAkC;wBAClC,WAAW;wBACX,YAAY;wBACZ,MAAM;wBACN,MAAM;wBACN,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,EAAE;4BAC7B,0HAAgC,CAAC,gBAAgB,CAAC,CAAC;yBACtD;wBACD,IAAI,CAAC,YAAY,EAAE,CAAC;qBACvB;iBACJ;gBAED,2CAA2C;gBAC3C,iDAAiD;YACrD,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBAET,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;oBAC3B,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;oBAC/D,sEAAW,CAAC,MAAM,EAAE,cAAc,OAAO,EAAE,CAAC,CAAC;iBAChD;YACL,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAGD,IAAI,MAAM;QACN,OAAO,2FAAuB,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,MAAiB;QACxB,+EAAiB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAGD,QAAQ,CAAC,KAAc;QACnB,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QACrE,IAAI,KAAK,IAAI,KAAK,IAAI,CAAC,CAAC,EAAE;YACtB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;SAC3B;IACL,CAAC;IAED,sBAAsB,CAAC,GAAW,EAAE,GAAW;QAC3C,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,GAAG,kCAAkC;QAC/C,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAClD,IAAI,CAAC,cAAc,CAAC,uBAAuB,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC;iBACvD,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACZ,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAExB,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,gBAAgB,CAAC,GAAW,EAAE,GAAW,EAAE,YAAY,GAAG,KAAK;QAC3D,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,GAAG,4BAA4B;QACzC,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAClD,IAAI,CAAC,cAAc,CAAC,6BAA6B,EAAE,GAAG,EAAE,GAAG,EAAE,YAAY,CAAC;iBACrE,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACZ,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;YACnC,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;YAExB,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IAEP,CAAC;IAGD,UAAU,CAAC,KAAc,EAAE,QAAkB,EAAE,EAAE,SAAmB;QAChE,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACtC,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,0FACa,CAAC,KAAK,EAAE,SAAS,CAAC;iBAC1B,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,+CAA+C;gBAC/C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,OAAO,EAAE,yEAAe,CAAC,CAAC;gBACrE,IAAI,WAAW,EAAE;oBACb,OAAO,CAAC,KAAK,CAAC,CAAC;iBAClB;qBAAM,IAAI,MAAM,CAAC,YAAY,EAAE;oBAC5B,sEAAW,CAAC,MAAM,EAAE,6CAA6C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC9H,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;iBAC1E;qBAAM;oBACH,sEAAW,CAAC,MAAM,EAAE,8BAA8B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAC/G,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;iBAC3C;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;oBAC3B,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;oBAChD,kGAAkG;oBAClG,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,YAAY,4DAAO,CAAC,CAAC,CAAC;wBACvC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;wBAC/C,CAAC,CAAC,GAAG,CAAC;oBACV,IAAI,MAAM,KAAK,GAAG,EAAE;wBAChB,oEAAU,CAAC,MAAM,EAAE,cAAc,OAAO,EAAE,CAAC,CAAC;qBAC/C;yBAAM;wBACH,IAAI;4BACA,sEAAW,CAAC,MAAM,EAAE,cAAc,OAAO;;yBAEhD,KAAK,CAAC,IAAI;4BACP,KAAK,CAAC,OAAO;6BACZ,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO;0BAC/B,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;yBACtB;wBAAC,OAAO,CAAC,EAAE;4BACR,sEAAW,CAAC,MAAM,EAAE,cAAc,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;yBACpF;qBACJ;iBACJ;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,WAAW,CAAC,KAAc;QACtB,+EAAiB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAGD,aAAa,CAAC,KAAc,EAAE,QAAiB,EAAE,SAAS,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK;QACtG,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,yBAAyB;QAExC,sBAAsB;QAEtB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,gGACgB,CAAC,KAAK,EAAE,SAAS,EAAE,UAAU,CAAC;iBACzC,IAAI,CAAC,MAAM,CAAC,EAAE;gBAEX,uFAAuF;gBAEvF,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE;oBAChE,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACnC,+CAA+C;iBAClD;gBAED,+CAA+C;gBAC/C,4BAA4B;gBAE5B,IAAI,WAAW,GAAG,IAAI,CAAC,CAAC,iDAAiD;gBACzE,sEAAsE;gBACtE,yDAAyD;gBACzD,IAAI,WAAW,EAAE;oBAEb,gCAAgC;oBAChC,wFAAmB,GAAG,KAAK,CAAC,GAAG,CAAC;oBAChC,wFAAmB,GAAG,KAAK,CAAC,GAAG,CAAC;oBAEhC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;wBACvB,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;qBAC/C;yBAAM;wBACH,qCAAqC;wBACrC,sDAAsD;wBACtD,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC5B,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;wBAC/C,IAAI,UAAU,EAAE;4BACZ,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;yBACpC;6BAAM;4BACH,oEAAU,CAAC,MAAM,EAAE,2BAA2B,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;yBAClE;qBACJ;oBACD,IAAI,QAAQ;wBAAE,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;oBACjD,IAAI,CAAC,UAAU,EAAE;wBACb,wDAAwD;wBACxD,IAAI,CAAC,WAAW,EAAE,CAAC;qBACtB;oBACD,OAAO,CAAC,WAAW,CAAC,CAAC;iBACxB;qBAAM;oBACH,IAAI,MAAM,CAAC,YAAY,EAAE;wBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,sDAAsD,CAAC,CAAC,CAAC;qBAC7E;yBAAM;wBACH,MAAM,CAAC,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC,CAAC;qBAC7C;iBACJ;YAEL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;oBAC3B,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;oBAChD,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAC9B,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,CAAC;wBAC3F,GAAG,CAAC,KAAK,KAAK,eAAe,EAAE;wBAC/B,oEAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAC;qBAC/C;yBAAM,IAAI,MAAM,KAAK,GAAG,EAAE;wBACvB,oEAAU,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;qBAC3C;yBAAM;wBACH,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;qBAC5C;iBACJ;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,SAAS,CAAC,KAAc,EAAE,QAAyB,EAAE,QAAkB,EAAE,EAAE,OAAgB;QACvF,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACrC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,yCAAyC;YACzC,IAAI,KAAK,EAAE;gBACP,8GACuB,CAAC,KAAK,CAAC;qBACzB,IAAI,CAAC,SAAS,CAAC,EAAE;oBACd,IAAI,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBAErC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;wBACzC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC1B,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;wBAC7B,IAAI,CAAC,MAAM,GAAG,uFAAkB,EAAE,CAAC;wBACnC,IAAI,IAAI,CAAC,mBAAmB,EAC5B;4BACI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;4BACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;yBAC/B;qBACJ;oBAED,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;oBAE3D,IAAI,SAAS,GAAG,KAAK,CAAC;oBACtB,QAAQ,QAAQ,EAAE;wBACd,KAAK,CAAC;4BACF,SAAS,GAAG,IAAI,CAAC;4BACjB,MAAM;wBAEV,KAAK,CAAC,CAAC,CAAC;4BACJ,SAAS,GAAG,IAAI,CAAC;4BACjB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,KAAK,CAAC,CAAC;4BAC9D,MAAM;yBACT;wBACD,KAAK,CAAC,CAAC,CAAC;4BACJ,SAAS,GAAG,KAAK,CAAC;4BAClB,MAAM;yBACT;qBACJ;oBACD,8BAA8B;oBAC9B,IAAI,KAAK,CAAC,IAAI,EAAE;wBACZ,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC;6BAChD,IAAI,CAAC,UAAU,CAAC,EAAE;4BACf,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;4BAC1B,IAAI,CAAC,SAAS,CAAC,mBAAmB,UAAU,CAAC,IAAI,EAAE,EAAE,SAAS,CAAC,CAAC;4BAChE,OAAO,CAAC,UAAU,CAAC,CAAC;wBACxB,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gCAC3B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gCACpC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;gCAC7D,IAAI,CAAC,SAAS,CAAC,sBAAsB,GAAG,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;gCACjE,sEAAW,CAAC,MAAM,EAAE,wBAAwB,SAAS,gBAAgB,SAAS,gBAAgB,OAAO,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;6BAChJ;4BACD,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,CAAC,CAAC,CAAC;qBACV;yBAAM;wBACH,IAAI,CAAC,SAAS,CAAC,qDAAqD,EAAE,OAAO,CAAC,CAAC;qBAClF;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;wBAC3B,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBACvC,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC;wBAC7D,sEAAW,CAAC,MAAM,EAAE,gCAAgC,QAAQ,aAAa,OAAO,gBAAgB,SAAS;2BAC1G,UAAU,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBAEpD;oBACD,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,MAAM,SAAS,GAAG,KAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;gBACnF,sEAAW,CAAC,MAAM,EAAE,uBAAuB,QAAQ,aAAa,OAAO,gBAAgB,SAAS,IAAI,CAAC,CAAC;gBACtG,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;aACnC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,eAAe,CAAC,OAAe;QAC3B,IAAI,OAAO,IAAI,OAAO,KAAK,EAAE,EAAE;YAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;YACzD,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;aAC3B;SACJ;IACL,CAAC;IAGD,WAAW,CAAC,KAAc;QACtB,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAChC;SACJ;aAAM;YACH,oFAAkB,CAAC,eAAe,CAAC,CAAC;SACvC;IACL,CAAC;IAGD,WAAW,CAAC,KAAc;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,uBAAuB,CAAC;QAEvC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO;YAEzC,sBAAsB;YAEtB,IAAI,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC;YAClC,IAAI,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;YACtC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAE3B,0CAA0C;YAE1C,IAAI;iBACC,gBAAgB,CAAC,KAAK,CAAC;iBACvB,IAAI,CAAC,aAAa,CAAC,EAAE;gBAClB,mEAAmE;gBACnE,IAAI,aAAa,EAAE;oBAEf,gCAAgC;oBAChC,IAAI,cAAc,GAAG,YAAY,IAAI,aAAa,CAAC,QAAQ,CAAC;oBAC5D,IAAI,cAAc,GAAG,cAAc,IAAI,aAAa,CAAC,UAAU,CAAC;oBAChE,IAAI,SAAS,GAAG,cAAc,IAAI,cAAc,CAAC;oBACjD,IAAI,SAAS,EAAE;wBACX,sGAAsG;wBACtG,IAAI;6BACC,qBAAqB,CAAC,aAAa,EAAE,cAAc,EAAE,YAAY,CAAC;6BAClE,IAAI,CAAC,SAAS,CAAC,EAAE;4BACd,KAAK,CAAC,QAAQ,GAAG,aAAa,CAAC,QAAQ,CAAC;4BACxC,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC,UAAU,CAAC;4BAC5C,sFAAsF;4BACtF,OAAO,CAAC,SAAS,CAAC;wBACtB,CAAC,CAAC;qBACT;yBAAM;wBACH,OAAO,CAAC,KAAK,CAAC;qBACjB;iBACJ;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC;iBACjB;YACL,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC;IAGO,qBAAqB,CAAC,KAAc,EAAE,aAAiC,EAAE,WAAmB;QAChG,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;QACnC,MAAM,aAAa,GAAG,KAAK,CAAC,UAAU,CAAC;QAEvC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO;YAEzC,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC;YAC9D,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,MAAM,EAAE;gBAClC,IAAI,cAAc,GAAG,WAAW,IAAI,WAAW,CAAC;gBAChD,IAAI,cAAc,GAAG,aAAa,IAAI,aAAa,CAAC;gBACpD,IAAI,cAAc,IAAI,cAAc,EAAE;oBAElC,IAAI,OAAO,GAAG,WAAW,KAAK,IAAI,CAAC,MAAM,CAAC;oBAC1C,IAAI,cAAc,IAAI,CAAC,cAAc,EAAE;wBACnC,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC,4FAA2B,CAAC,CAAC,CAAC,0FAA0B,CAAC;qBACzF;oBAED,uGAAuG;oBACvG,IAAI,MAAM,GAAG,IAAI,oEAAY,EAAE,CAAC;oBAChC,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC/B,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;oBACrC,MAAM,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;oBACrC,MAAM,CAAC,QAAQ,GAAG,WAAW,CAAC;oBAC9B,MAAM,CAAC,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC;oBACvC,gGAAgG;oBAEhG,8GAA+B,CAAC,MAAM,CAAC;yBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE;wBAEb,sDAAsD;wBACtD,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;wBACrC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,cAAc,CAAC;wBACvC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC5B,IAAI,CAAC,WAAW,EAAE,CAAC;wBACnB,OAAO,CAAC,IAAI,CAAC;wBAEb,8CAA8C;wBAC9C,IAAI,QAAQ,EAAE;4BACV,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gCACjC,IAAI,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;gCACvD,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oCAExB,8BAA8B;oCAC9B,qEAAqE;oCACrE,KAAK;oCAEL,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;wCACpB,kCAAkC;wCAClC,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;wCACjE,IAAI,YAAY,EAAE;4CACd,gGAAgG;4CAChG,IAAI,SAAS,GAAG,GAAG,YAAY,CAAC,QAAQ,KAAK,YAAY,CAAC,IAAI,GAAG,CAAC;4CAClE,IAAI,SAAS,GAAG,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC;4CAC5D,IAAI,GAAG,GAAG,iCAAiC,SAAS,YAAY,SAAS,GAAG;4CAC5E,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC;yCACjC;oCACL,CAAC,CAAC;iCACL;6BACJ;yBACJ;6BAAM;4BACH,oFAAkB,CAAC,yBAAyB,CAAC,CAAC;yBACjD;oBAEL,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,0CAA0C;wBAC1C,KAAK,CAAC,QAAQ,GAAG,WAAW,CAAC;wBAC7B,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;wBACjC,OAAO,CAAC,KAAK,CAAC;wBACd,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;oBAC1D,CAAC,CAAC;iBACT;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC;oBACd,mEAAmE;iBACtE;aACJ;iBAAM;gBACH,OAAO,CAAC,KAAK,CAAC;gBACd,oFAAkB,CAAC,6BAA6B,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aACpE;QAEL,CAAC,CAAC,CAAC;IAEP,CAAC;IAGD,aAAa,CAAC,WAAoB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI;aACC,gBAAgB,CAAC,WAAW,CAAC,IAAI,EAAE,WAAW,CAAC,UAAU,CAAC;aAC1D,IAAI,CAAC,SAAS,CAAC,EAAE;YACd,oEAAoE;YACpE,IAAI,YAAY,GAAG,IAAI,oEAAY,EAAE,CAAC;YACtC,YAAY,CAAC,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;YAC3C,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC;YACpC,YAAY,CAAC,UAAU,GAAG,WAAW,CAAC,UAAU,CAAC;YACjD,YAAY,CAAC,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC;YAC7C,8GAA+B,CAAC,YAAY,CAAC;iBACxC,IAAI,CAAC,GAAG,EAAE;gBACP,WAAW,CAAC,UAAU,GAAG,YAAY,CAAC,UAAU,CAAC;gBACjD,WAAW,CAAC,eAAe,EAAE,CAAC;gBAC9B,+DAA+D;YACnE,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,qBAAqB,CAAC,WAAoB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,uBAAuB,CAAC;QAEvC,4CAA4C;QAE5C,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,WAAW,EAAE;gBAEb,IAAI;qBACC,iBAAiB,CAAC,iBAAiB,WAAW,CAAC,IAAI,EAAE,EAAE,6CAA6C,CAAC;qBACrG,IAAI,CAAC,WAAW,CAAC,EAAE;oBAChB,yDAAyD;oBACzD,IAAI,WAAW,EAAE;wBACb,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;wBAChC,IAAI;6BACC,YAAY,CAAC,GAAG,CAAC;6BACjB,IAAI,CAAC,GAAG,EAAE;4BACP,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;4BAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;4BAEpB,IAAI,IAAI,CAAC,MAAM,EAAE;gCACb,IAAI,OAAO,GAAG,WAAW,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC;gCACnD,IAAI,CAAC,OAAO,EAAE;oCACV,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;iCACvC;6BACJ;4BAED,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;4BAC3C,OAAO,CAAC,IAAI,CAAC,CAAC;wBAClB,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gCAC3B,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;gCACzC,IAAI,CAAC,SAAS,CAAC,wBAAwB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;6BAC1D;4BACD,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,CAAC,CAAC,CAAC;qBAEV;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,oFAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,oFAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAC5C,MAAM,CAAC,UAAU,CAAC,CAAC;aACtB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,sBAAsB,CAAC,QAAkB;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,kCAAkC,CAAC;QAElD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,QAAQ,EAAE;gBACV,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClC,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC5B,IAAI,UAAU,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACjD,IAAI,KAAK,GAAG,WAAW,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC7C,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,8CAA8C,CAAC,CAAC,CAAC,gDAAgD,CAAC;gBAC5H,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;qBAC9B,IAAI,CAAC,SAAS,CAAC,EAAE;oBACd,IAAI,SAAS,EAAE;wBACX,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;6BACtB,IAAI,CAAC,GAAG,CAAC,EAAE;4BACR,IAAI,WAAW,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;4BACtC,IAAI,WAAW,EAAE;gCACb,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,UAAU,UAAU,EAAE,SAAS,CAAC,CAAC;6BAC/D;iCAAM;gCACH,IAAI,CAAC,SAAS,CAAC,kDAAkD,EAAE,SAAS,CAAC,CAAC;6BACjF;4BACD,OAAO,CAAC,WAAW,CAAC,CAAC;wBACzB,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,MAAM,CAAC,GAAG,CAAC,CAAC;4BACZ,2CAA2C;4BAC3C,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;wBACrE,CAAC,CAAC,CAAC;qBACV;yBAAM;wBACH,OAAO,CAAC,KAAK,CAAC,CAAC;qBAClB;gBACL,CAAC,CAAC;aAET;iBAAM;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;aACzC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,YAAY,CAAC,QAAkB;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAElD,kGACiB,CAAC,QAAQ,CAAC;iBACtB,IAAI,CAAC,MAAM,CAAC,EAAE;gBAEX,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,8EAAmB,EAAE,6EAAiB,CAAC,CAAC;gBACzE,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;gBACxC,OAAO,CAAC,SAAS,CAAC,CAAC;YAEvB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,sBAAsB,CAAC,WAAoB;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;QACjC,kCAAkC;QAElC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,WAAW,EAAE;gBACb,IAAI;qBACC,iBAAiB,CAAC,kBAAkB,WAAW,CAAC,IAAI,EAAE,EAAE,8CAA8C,CAAC;qBACvG,IAAI,CAAC,WAAW,CAAC,EAAE;oBAChB,oEAAoE;oBACpE,IAAI,WAAW,EAAE;wBACb,IAAI,GAAG,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;wBAChC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;6BAClB,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;4BACjB,IAAI,UAAU,EAAE;gCAEZ,IAAI,IAAI,CAAC,MAAM,EAAE;oCACb,IAAI,OAAO,GAAG,WAAW,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC;oCACnD,IAAI,CAAC,OAAO,EAAE;wCACV,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC;qCACvC;iCACJ;gCAED,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;6BAC/C;iCAAM;gCACH,IAAI,CAAC,SAAS,CAAC,gDAAgD,EAAE,OAAO,CAAC,CAAC;6BAC7E;4BACD,OAAO,CAAC,IAAI,CAAC,CAAC;wBAClB,CAAC,CAAC;qBACT;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,oFAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAClE,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,oFAAkB,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;gBAC5C,MAAM,CAAC,UAAU,CAAC,CAAC;aACtB;QACL,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,WAAW,CAAC,KAAc;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,GAAG,uBAAuB,CAAC;QACrC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,YAAY;QAEhB,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,2BAA2B,CAAC,KAAc;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,MAAM,GAAG,uCAAuC,CAAC;QAErD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,UAAU,CAAC;iBAC9C,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;gBAC1B,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAE;qBAC1C,IAAI,CAAC,GAAG,EAAE;oBACP,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC;gBAC/C,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,MAAM,IAAI,iBAAiB,CAAC;oBAC5B,oFAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;oBAChE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;gBAC/D,CAAC,CAAC,CAAC;gBACP,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,IAAI,oBAAoB,CAAC;gBAC/B,oFAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChE,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC;IAED,uBAAuB,CAAC,QAAkB;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,mCAAmC,CAAC;QAEnD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,QAAQ,EAAE;gBACV,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAClC,IAAI,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC;gBAC5B,IAAI,UAAU,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC;gBACjD,IAAI,KAAK,GAAG,YAAY,KAAK,IAAI,UAAU,EAAE,CAAC;gBAC9C,IAAI,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,+CAA+C,CAAC,CAAC,CAAC,iDAAiD,CAAC;gBAC9H,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;qBAC9B,IAAI,CAAC,SAAS,CAAC,EAAE;oBACd,IAAI,SAAS,EAAE;wBACX,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC;6BACvB,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;4BACjB,IAAI,UAAU,EAAE;gCACZ,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,UAAU,WAAW,EAAE,SAAS,CAAC,CAAC;6BAChE;iCAAM;gCACH,IAAI,CAAC,SAAS,CAAC,gDAAgD,EAAE,OAAO,CAAC,CAAC;6BAC7E;4BACD,OAAO,CAAC,UAAU,CAAC,CAAC;wBACxB,CAAC,CAAC;qBACT;yBAAM;wBACH,OAAO,CAAC,KAAK,CAAC,CAAC;qBAClB;gBACL,CAAC,CAAC;aAET;iBAAM;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC,CAAC;aACzC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,aAAa,CAAC,QAAkB;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO;YAEzC,oGAA0B,CAAC,QAAQ,CAAC;iBAC/B,IAAI,CAAC,GAAG,EAAE;gBACP,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;oBAClB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnE,CAAC,CAAC,CAAC;gBACH,6CAA6C;gBAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,UAAU,CAAC,QAAkB;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAChD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACrB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,SAAS,EAAE,mDAAmD,CAAC;qBACzH,IAAI,CAAC,WAAW,CAAC,EAAE;oBAChB,IAAI,WAAW,EAAE;wBACb,gGAAwB,CAAC,QAAQ,CAAC;6BAC7B,IAAI,CAAC,KAAK,CAAC,EAAE;4BACV,IAAI,KAAK,GAAG,IAAI,+DAAO,EAAE,CAAC;4BAC1B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;4BACjC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;4BACjC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;4BACpB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC;4BACtB,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;4BAC1B,KAAK,CAAC,IAAI,GAAG,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;4BACtE,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;4BACnB,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;4BACd,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC;4BACd,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;4BACxC,KAAK,CAAC,IAAI,GAAG,EAAE,CAAC;4BAChB,KAAK,CAAC,UAAU,GAAG,SAAS,CAAC;4BAC7B,0FAAqB,CAAC,KAAK,EAAE,IAAI,CAAC;iCAC7B,IAAI,CAAC,GAAG,EAAE;gCACP,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gCACxB,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,SAAS,CAAC,CAAC;4BAC5D,CAAC,CAAC;iCACD,KAAK,CAAC,GAAG,EAAE;gCACR,IAAI,CAAC,SAAS,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;4BAC3D,CAAC,CAAC;wBAEV,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,EAAE;4BACR,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;wBACtD,CAAC,CAAC;qBACT;gBACL,CAAC,CAAC;aAET;iBAAM;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;aACtC;QAEL,CAAC,CAAC;IAEN,CAAC;IAGD,YAAY;IAGZ,mBAAmB;IAEnB,SAAS,CAAC,QAAiB,EAAE,KAAe;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,gDAAgD;QAEhD,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;YAClC,IAAI,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC;YAC7B,IAAI;iBACC,eAAe,CAAC,KAAK,CAAC;iBACtB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,EAAE;oBAEL,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;oBACnC,IAAI,KAAK,GAAG,GAAG,CAAC,UAAU,CAAC;oBAC3B,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC;oBAC1B,yFAAyF;oBAEzF,IAAI;yBACC,eAAe,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,CAAC;yBAC1C,IAAI,CAAC,WAAW,CAAC,EAAE;wBAChB,IAAI,WAAW,EAAE;4BACb,IAAI,CAAC,SAAS,CAAC,SAAS,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,eAAe,EAAE,SAAS,CAAC,CAAC;4BAC/E,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gCACjB,IAAI,MAAM,EAAE;oCACR,uBAAuB;oCACvB,6BAA6B;oCAC7B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iCAC7B;gCACD,6BAA6B;gCAC7B,mGAAmG;4BACvG,CAAC,CAAC,CAAC;4BAEH,IAAI,CAAC,WAAW,EAAE,CAAC;4BACnB,OAAO,CAAC,IAAI,CAAC,CAAC;4BAEd,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;4BACrC,IAAI,QAAQ,EAAE;gCACV,IAAI,GAAG,CAAC,KAAK,EAAE;oCACX,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;oCAC5B,QAAQ,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;oCAC5B,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,IAAI,CAAC;yCAC7B,IAAI,CAAC,QAAQ,CAAC,EAAE;wCACb,IAAI,QAAQ;4CAAE,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC;oCACxD,CAAC,CAAC,CAAC;iCACV;qCAAM;oCACH,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;iCAC1C;6BACJ;yBACJ;6BAAM;4BACH,OAAO,CAAC,KAAK,CAAC,CAAC;4BACf,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;yBACtD;oBACL,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,OAAO,CAAC,KAAK,CAAC,CAAC;wBACf,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;oBACvD,CAAC,CAAC,CAAC;iBACV;YACL,CAAC,CAAC,CAAC;QAGX,CAAC,CAAC,CAAC;IAGP,CAAC;IAGD,SAAS,CAAC,OAAgB,EAAE,KAAe;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,qDAAqD;QACrD,IAAI,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACzB,IAAI,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QAClC,IAAI,UAAU,GAAG,SAAS,CAAC,QAAQ,CAAC;QACpC,IAAI,WAAW,GAAG,SAAS,CAAC,SAAS,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC;QACxD,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC;QAC5D,IAAI,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,WAAW,CAAC,CAAC;QAC/D,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5C,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;QAClD,IAAI,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC;QAErD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACxD,MAAM,GAAG,SAAS,CAAC;SACtB;QAED,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;YAElC,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAEnC,IAAI;iBACC,cAAc,CAAC,MAAM,EAAE,QAAQ,GAAG,KAAK,EAAE,SAAS,GAAG,KAAK,CAAC;iBAC3D,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACb,IAAI,QAAQ,EAAE;oBACV,0GAA0G;oBAC1G,IAAI,QAAQ,GAAG,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;oBAC1C,IAAI,SAAS,GAAG,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC;oBAC5C,IAAI,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAC7B,sFAAsF;oBAEtF,IAAI;yBACC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;yBAClF,IAAI,CAAC,WAAW,CAAC,EAAE;wBAChB,IAAI,WAAW,EAAE;4BACb,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;4BACpD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gCACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC;gCAClC,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;gCACzB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gCAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;gCAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gCAC3B,mGAAmG;4BACvG,CAAC,CAAC,CAAC;4BACH,qBAAqB;4BACrB,OAAO,CAAC,IAAI,CAAC,CAAC;yBACjB;6BAAM;4BACH,OAAO,CAAC,KAAK,CAAC,CAAC;4BACf,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;yBACrD;oBACL,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,OAAO,CAAC,KAAK,CAAC,CAAC;wBACf,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;oBACtD,CAAC,CAAC,CAAC;iBACV;YACL,CAAC,CAAC,CAAC;QAGX,CAAC,CAAC,CAAC;IAGP,CAAC;IAGD,UAAU,CAAC,GAAkB,EAAE,GAAa,EAAE,SAAiB;QAC3D,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;YAClC,6FACe,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC;iBAC/B,IAAI,CAAC,WAAW,CAAC,EAAE;gBAChB,IAAI,GAAG,KAAK,4EAAkB,EAAE;oBAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACnC,4CAA4C;iBAC/C;gBAED,OAAO,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,UAAU,CAAC,GAAkB,EAAE,GAAa,EAAE,SAAiB;QAC3D,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAC7B,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;YAClC,6FACe,CAAC,GAAG,EAAE,GAAG,EAAE,SAAS,CAAC;iBAC/B,IAAI,CAAC,WAAW,CAAC,EAAE;gBAEhB,IAAI,GAAG,KAAK,4EAAkB,EAAE;oBAC5B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBACnC,4CAA4C;iBAC/C;gBAED,OAAO,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,WAAW,CAAC,MAAe,EAAE,GAAa,EAAE,MAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAiB;QAC7G,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE;YACzC,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;gBAClC,2FACc,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,CAAC;qBACrD,IAAI,CAAC,WAAW,CAAC,EAAE;oBAEhB,IAAI,CAAC,MAAM,EAAE;wBACT,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACnC,6CAA6C;qBAChD;oBAED,OAAO,CAAC,WAAW,CAAC,CAAC;gBACzB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnB,CAAC,CAAC,CAAC;YACX,CAAC,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,SAAS,CAAC,gFAAgF,EAAE,SAAS,CAAC,CAAC;SAC/G;IAEL,CAAC;IAGD,eAAe,CAAC,GAAa,EAAE,KAAa,EAAE,KAAa,EAAE,MAAgB;QACzE,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;YAClC,2FACc,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;iBACtC,IAAI,CAAC,WAAW,CAAC,EAAE;gBAChB,OAAO,CAAC,WAAW,CAAC,CAAC;YACzB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,iBAAiB,CAAC,KAAc;QAC5B,OAAO,IAAI,OAAO,CAAmB,UAAU,OAAO,EAAE,MAAM;YAC1D,wGAA4B,CAAC,KAAK,CAAC;iBAC9B,IAAI,CAAC,SAAS,CAAC,EAAE;gBACd,OAAO,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,OAAO,CAAC,GAAG,CAAC,CAAC;YACjB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC;IACN,CAAC;IAED,SAAS,CAAC,IAAY,EAAE,WAAoB,EAAE,QAAiB,EAAE,SAAkB;QAC/E,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,2DAA2D;QAE3D,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;iBAClC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,IAAI,MAAM,EAAE;oBACR,6CAA6C;oBAE7C,IAAI,IAAI,CAAC,mBAAmB,EAAE;wBAC1B,MAAM,UAAU,GAAG,wGAA2B,CAAC;wBAC/C,MAAM,UAAU,GAAiB;4BAC7B,QAAQ,EAAE,UAAU,KAAK,gHAAwB;gCAC7C,UAAU,KAAK,wIAAoC;4BACvD,MAAM,EAAE,UAAU,KAAK,wHAA4B;gCAC/C,UAAU,KAAK,wIAAoC;yBAC1D;wBACD,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC;qBAC5B;oBAED,uFACY,CAAC,IAAI,EAAE,WAAW,CAAC;yBAC1B,IAAI,CAAC,MAAM,CAAC,EAAE;wBACX,gEAAgE;;wBAEhE,IAAI,aAAM,CAAC,KAAK,0CAAE,MAAM,IAAG,CAAC,EAAE;4BAC1B,MAAM,oBAAoB,GAAG,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;4BACnF,IAAI,oBAAoB,KAAK,CAAC,CAAC,EAAE;gCAC7B,MAAM,eAAe,GAAG,MAAM,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;gCAC3D,IAAI,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;gCACrC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;6BAChD;yBACJ;wBACD,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;4BACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;yBACtC;wBACD,uDAAuD;wBAEvD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBAEzB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,yEAAe,CAAC,CAAC;wBACnE,IAAI,WAAW,EAAE;4BAEb,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;4BACjD,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;4BACnD,uGAAuG;4BAEvG,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;4BAC1B,IAAI,CAAC,WAAW,EAAE,CAAC;4BAEnB,IAAI,kGAAwB,EAAE;gCAC1B,UAAU,CAAC,GAAG,EAAE;oCACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oCACzB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oCAC1B,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gCACpC,CAAC,EAAE,GAAG,CAAC,CAAC;6BACX;4BAED,OAAO,CAAC,IAAI,CAAC,CAAC;yBAEjB;6BAAM,IAAI,MAAM,CAAC,YAAY,EAAE;4BAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;yBAC1E;6BAAM;4BACH,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;yBAC1C;oBACL,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC,CAAC;iBAClB;YACL,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,eAAe,CAAC,KAAe,EAAE,WAAoB;QACjD,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,+CAA+C;QAE/C,OAAO,IAAI,OAAO,CAAU,OAAO,CAAC,EAAE;YAClC,WAAW,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;iBACrC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,IAAI,MAAM,EAAE;oBAER,yFACa,CAAC,KAAK,EAAE,WAAW,CAAC;yBAC5B,IAAI,CAAC,WAAW,CAAC,EAAE;wBAChB,IAAI,WAAW,EAAE;4BAEb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BACnC,6DAA6D;4BAE7D,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gCACjB,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;4BAC9B,CAAC,CAAC,CAAC;4BACH,IAAI,CAAC,WAAW,EAAE,CAAC;yBACtB;wBACD,OAAO,CAAC,WAAW,CAAC,CAAC;oBACzB,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnB,CAAC,CAAC,CAAC;iBAGV;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;iBACtD;YACL,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IAEP,CAAC;IAGD,oBAAoB,CAAC,IAAY,EAAE,QAAkB,EAAE,EAAE,UAAU,GAAG,KAAK;QACvE,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,IAAI,EAAE;gBAEN,IAAI;qBACC,iBAAiB,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,EAAE,4CAA4C,CAAC;qBAC5F,IAAI,CAAC,WAAW,CAAC,EAAE;oBAChB,IAAI,WAAW,EAAE;wBAEb,IAAI,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC;6BACnD,IAAI,CAAC,GAAG,CAAC,EAAE;4BACR,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;4BAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;wBAClB,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,IAAI,CAAC,SAAS,CAAC,uBAAuB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;4BACtD,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;4BAC7C,IAAI,KAAK,GAAG,GAAc,CAAC;4BAC3B,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gCAC3B,sEAAW,CAAC,MAAM,EAAE,2BAA2B,UAAU,aAAa,QAAQ,cAAc,GAAG,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;6BAC1I;iCAAM;gCACH,oEAAU,CAAC,MAAM,EAAE,2BAA2B,UAAU,aAAa,QAAQ,cAAc,GAAG,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;6BACzI;4BACD,yHAAyH;4BACzH,kCAAkC;4BAClC,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,CAAC,CAAC,CAAC;qBACV;yBAAM;wBACH,OAAO,CAAC,KAAK,CAAC;qBACjB;gBAEL,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,oFAAkB,CAAC,cAAc,CAAC,CAAC;gBACnC,MAAM,CAAC,SAAS,CAAC,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,qBAAqB,CAAC,KAAe,EAAE,QAAkB,EAAE,EAAE,UAAU,GAAG,IAAI;QAC1E,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAEhD,oCAAoC;QAEpC,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAClD,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC;YACzD,IAAI,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC;YACzB,IAAI,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE;gBACpB,IAAI,UAAU,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;gBAC/C,IAAI,CAAC,iBAAiB,CAAC,cAAc,EAAE,mCAAmC,KAAK,IAAI,UAAU,GAAG,CAAC;qBAC5F,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,GAAG,EAAE;wBACL,IAAI;6BACC,WAAW,CAAC,KAAK,EAAE,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC;6BAClD,IAAI,CAAC,GAAG,CAAC,EAAE;4BAER,IAAI,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,MAAM,EAAE;gCAC5B,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,UAAU,UAAU,EAAE,SAAS,CAAC,CAAC;gCAC5D,qBAAqB;6BACxB;iCAAM;gCACH,IAAI,CAAC,SAAS,CAAC,iDAAiD,EAAE,SAAS,CAAC,CAAC;6BAChF;4BACD,OAAO,CAAC,GAAG,CAAC,CAAC;wBACjB,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gCAC3B,sEAAW,CAAC,MAAM,EAAE,2BAA2B,UAAU,WAAW,KAAK,cAAc,KAAK,eAAe,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;gCACtK,0HAA0H;gCAC1H,kCAAkC;6BACrC;4BACD,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;4BACjE,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,CAAC,CAAC,CAAC;qBACV;gBACL,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,CAAC,oBAAoB,CAAC,CAAC;aAChC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,WAAW,CAAC,KAAe,EAAE,QAAkB,EAAE,EAAE,UAAU,GAAG,KAAK;QACjE,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACvC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAE7B,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAClD,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,SAAS,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAClF,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAEhC,iCAAiC;YACjC,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,IAAI,OAAO,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,EAAE;oBACjC,kCAAkC;oBAClC,sEAAW,CAAC,MAAM,EAAE,4CAA4C,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,gBAAgB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACxK;gBAED,IAAI,YAAY,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;gBAE/C,IAAI,WAAW,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBAE7C,+FACgB,CAAC,OAAO,CAAC;qBACpB,IAAI,CAAC,MAAM,CAAC,EAAE;oBAEX,IAAI,WAAW,EAAE;wBACb,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;qBACtC;oBACD,4BAA4B;oBAC5B,EAAE;oBACF,2EAA2E;oBAC3E,2CAA2C;oBAE3C,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBAClB,IAAI,IAAI,GAAG,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;wBAC/B,IAAI,IAAI,EAAE;4BACN,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;4BACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;yBAC9B;6BAAM;4BACH,8DAA8D;yBACjE;oBACL,CAAC,CAAC,CAAC;oBAEH,IAAI,YAAY,EAAE;wBACd,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;qBACrB;oBAED,IAAI,CAAC,UAAU,EAAE;wBACb,IAAI,CAAC,WAAW,EAAE,CAAC;qBACtB;oBAED,OAAO,CAAC,OAAO,CAAC,CAAC;oBACjB,sBAAsB;gBAE1B,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,EAAE,CAAC;aACZ;QACL,CAAC,CAAC,CAAC;IAEP,CAAC;IAGD,YAAY,CAAC,IAAY,EAAE,MAAM,GAAG,KAAK;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,6FACe,CAAC,IAAI,CAAC;iBAChB,IAAI,CAAC,MAAM,CAAC,EAAE;gBAEX,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;iBACtC;gBACD,8CAA8C;gBAE9C,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEzB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,uEAAc,CAAC,CAAC;gBAClE,iEAAiE;gBACjE,IAAI,WAAW,EAAE;oBAEb,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;wBACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;qBACtC;oBACD,8CAA8C;oBAE9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC3B,IAAI,MAAM,EAAE;wBACR,IAAI,CAAC,WAAW,EAAE,CAAC;qBACtB;oBACD,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM,IAAI,MAAM,CAAC,YAAY,EAAE;oBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC,CAAC;iBAC5E;qBAAM;oBACH,MAAM,CAAC,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC,CAAC;iBAC5C;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,aAAa,CAAC,IAAY,EAAE,MAAc,EAAE,MAAe;QACvD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO;gBACzC,+FACgB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;qBACjC,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;oBAEhB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;wBACd,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;qBACtC;oBACD,+CAA+C;oBAE/C,OAAO,CAAC,SAAS,CAAC;gBACtB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;SACN;aAAM;YACH,2DAA2D;YAC3D,sEAAW,CAAC,yBAAyB,EAAE,iDAAiD,GAAG,IAAI,GAAG,YAAY,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;SACjI;IACL,CAAC;IAGD,cAAc,CAAC,MAAc;QACzB,IAAI,MAAM,EAAE;YACR,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACjC,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACzB;SACJ;IACL,CAAC;IAGD,UAAU,CAAC,IAAY;QACnB,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACtC,IAAI,IAAI,EAAE;YACN,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC/B;iBAAM;gBACH,sEAAW,CAAC,MAAM,EAAE,uBAAuB,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;aAC5D;SACJ;aAAM;YACH,sEAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;SACvC;IACL,CAAC;IAGD,WAAW;QACP,uCAAuC;QACvC,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;YAC5C,IAAI,QAAQ,GAAa,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YACrD,iEAAiE;YACjE,IAAI,CAAC,WAAW,CAAC,KAAK,GAAG,QAAQ,CAAC;SACrC;IACL,CAAC;IAGD,WAAW;QACP,6BAA6B;QAC7B,IAAI,OAAO,GAAG,IAAI,CAAC,mBAAmB,GAAG,CAAC,CAAC;QAC3C,IAAI,CAAC,mBAAmB,GAAG,OAAO,CAAC;IACvC,CAAC;IAGD,YAAY;QACR,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAUD,IAAI,KAAK;QACL,OAAO,yFAAsB,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,KAAe;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,+FAA+F;QAE/F,yBAAyB;QACzB,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,mEAAmE;QACnE,UAAU,CAAC,GAAG,EAAE;YACZ,+EAAiB,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QAC9C,CAAC,EAAE,CAAC,CAAC,CAAC;QAGN,4BAA4B;QAC5B,+BAA+B;QAC/B,+BAA+B;QAC/B,uBAAuB;QACvB,iDAAiD;QACjD,WAAW;QACX,IAAI;QACJ,SAAS;QACT,YAAY;QACZ,+CAA+C;QAC/C,IAAI;IACR,CAAC;IAED,kBAAkB;QACd,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,2BAA2B;QAE1C,IAAI,8GAA8B,EAAE;YAEhC,wBAAwB;YACxB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAEtC,IAAI,UAAU,GAA4B,EAAE;YAC5C,IAAI,UAAU,GAA8B,EAAE;YAE9C,WAAW;YACX,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;oBACnB,IAAI,OAAO,EAAE;wBACT,IAAI,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC;wBAC3B,IAAI,IAAI,GAAG,kFAAgB,CAAC,IAAI,CAAC;wBACjC,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC5B,IAAI,CAAC,IAAI,EAAE;4BACP,IAAI,GAAG,EAAE,CAAC;4BACV,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;4BACxB,UAAU,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;yBAC3B;wBACD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;qBACtB;gBACL,CAAC,CAAC;gBAEF,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM;gBAC5C,IAAI,OAAO,GAAG,CAAC,EAAE;oBACb,KAAK,IAAI,IAAI,IAAI,UAAU,EAAE;wBACzB,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;wBAC5B,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;wBAE5B,8CAA8C;wBAC9C,UAAU,CAAC,GAAG,EAAE;4BACZ,IAAI,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BAClC,IAAI,CAAC,SAAS,EAAE;gCAEZ,gGACsB,CAAC,IAAI,EAAE,IAAI,CAAC;qCAC7B,IAAI,CAAC,OAAO,CAAC,EAAE;oCACZ,kDAAkD;gCACtD,CAAC,CAAC,CAAC;6BACV;wBACL,CAAC,EAAE,CAAC,CAAC;qBAGR;iBACJ;aACJ;SACJ;IACL,CAAC;IAGD,YAAY,CAAC,IAAY;QACrB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,6BAA6B;SAChC;aAAM;YACH,oFAAkB,CAAC,mBAAmB,CAAC,CAAC;SAC3C;IACL,CAAC;IAGD,cAAc,CAAC,MAAc;QACzB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAC1C,IAAI,MAAM,EAAE;YACR,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACrD,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACzB;iBAAM;gBACH,oFAAkB,CAAC,MAAM,EAAE,0BAA0B,EAAE,MAAM,CAAC,CAAC;aAClE;SACJ;aAAM;YACH,oFAAkB,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;SACvD;IACL,CAAC;IAGD,UAAU,CAAC,IAAY;QACnB,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACtC,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC/B;SACJ;aAAM;YACH,oFAAkB,CAAC,MAAM,EAAE,oBAAoB,CAAC,CAAC;SACpD;IACL,CAAC;IAGD,OAAO,CAAC,IAAY,EAAE,QAAkB;QACpC,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACnC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,OAAO,CAAC;iBAClC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACT,IAAI,IAAI,EAAE;oBACN,uFACY,CAAC,IAAI,CAAC;yBACb,IAAI,CAAC,MAAM,CAAC,EAAE;wBAEX,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;wBAEzB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,yEAAe,CAAC,CAAC;wBACnE,IAAI,WAAW,EAAE;4BAEb,IAAI,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;4BACnD,0DAA0D;4BAC1D,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;4BACxB,IAAI,CAAC,WAAW,EAAE,CAAC;4BAEnB,IAAI,kGAAwB,EAAE;gCAC1B,UAAU,CAAC,GAAG,EAAE;oCAEZ,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;oCAEvB,4BAA4B;oCAC5B,4BAA4B;gCAChC,CAAC,EAAE,GAAG,CAAC,CAAC;6BACX;4BAED,OAAO,CAAC,WAAW,CAAC,CAAC;yBACxB;6BAAM,IAAI,MAAM,CAAC,YAAY,EAAE;4BAC5B,oEAAU,CAAC,MAAM,EAAE,4CAA4C,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;4BACxF,MAAM,CAAC,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;yBAC9E;6BAAM;4BACH,sEAAW,CAAC,MAAM,EAAE,kCAAkC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;4BAC/E,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;yBAC9C;oBACL,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC,CAAC;iBAClB;YACL,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,oBAAoB,CAAC,OAAe;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO;YACzC,IAAI,SAAS,GAAG,OAAO,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;YACvE,IAAI,SAAS,EAAE;gBAEX,IAAI,KAAK,GAAG,cAAc,CAAC;gBAC3B,IAAI,IAAI,GAAG,sEAAsE,CAAC;gBAClF,IAAI;qBACC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;qBAC9B,IAAI,CAAC,WAAW,CAAC,EAAE;oBAChB,OAAO,CAAC,WAAW,CAAC;gBACxB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,YAAY,CAAC,IAAY,EAAE,QAAkB,EAAE;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACxC,wDAAwD;QACxD,IAAK,IAAI,CAAC,SAAiB,CAAC,GAAG;YAAE,IAAI,CAAC,SAAS,GAAI,IAAI,CAAC,SAAiB,CAAC,GAAG,CAAC;QAC9E,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAChD,6FACe,CAAC,IAAI,CAAC;iBAChB,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,oEAAoE;gBACpE,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEzB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,uEAAc,CAAC,CAAC;gBAClE,IAAI,WAAW,EAAE;oBACb,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM,IAAI,MAAM,CAAC,YAAY,EAAE;oBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;iBAChF;qBAAM;oBACH,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;iBAC9C;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;oBAC3B,IAAI;wBACA,IAAI,QAAQ,CAAC;wBACb,IAAI;4BACA,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;yBAC5C;wBAAC,OAAO,CAAC,EAAE;4BACR,sEAAW,CAAC,MAAM,EAAE,4BAA4B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;4BAC3G,QAAQ,GAAG,GAAG,IAAI,CAAC,MAAM,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;yBAC9C;wBACD,sEAAW,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;kBAC/D,QAAQ,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBACzC;oBAAC,OAAO,CAAC,EAAE;wBACR,sEAAW,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;qBAChG;iBACJ;gBACD,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,oBAAoB,CAAC,IAAY;QAC7B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,sBAAsB;QAEtB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI;iBACC,iBAAiB,CAAC,oBAAoB,IAAI,CAAC,IAAI,EAAE,EAAE,gDAAgD,CAAC;iBACpG,IAAI,CAAC,WAAW,CAAC,EAAE;gBAChB,iEAAiE;gBACjE,IAAI,WAAW,EAAE;oBACb,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;oBACzB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;oBAEvB,IAAI;yBACC,aAAa,CAAC,OAAO,CAAC;yBACtB,IAAI,CAAC,GAAG,EAAE;wBACP,gDAAgD;wBAChD,uDAAuD;wBACvD,wBAAwB;wBACxB,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;oBAClD,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,IAAI,GAAG,EAAE;4BACL,IAAI,GAAG,IAAI,GAAG,CAAC,SAAS,EAAE;gCACtB,oEAAU,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;6BAC3C;iCAAM;gCACH,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;6BAC5C;yBACJ;6BAAM;4BACH,sEAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;yBACxC;wBACD,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;wBACjE,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;iBAEV;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC,CAAC;iBAClB;YACL,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,qBAAqB,CAAC,OAAiB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,uCAAuC;QAEvC,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAClD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC1C,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC3B,IAAI,YAAY,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC;gBACzD,IAAI;qBACC,iBAAiB,CAAC,kBAAkB,EAAE,mCAAmC,KAAK,IAAI,YAAY,GAAG,CAAC;qBAClG,IAAI,CAAC,IAAI,CAAC,EAAE;oBACT,0DAA0D;oBAC1D,IAAI,IAAI,EAAE;wBACN,IAAI;6BACC,aAAa,CAAC,OAAO,CAAC;6BACtB,IAAI,CAAC,GAAG,CAAC,EAAE;4BACR,IAAI,GAAG,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;gCAC9B,OAAO,CAAC,GAAG,CAAC;gCACZ,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,YAAY,UAAU,EAAE,SAAS,CAAC,CAAC;6BACjE;iCAAM;gCACH,IAAI,CAAC,SAAS,CAAC,qDAAqD,EAAE,SAAS,CAAC,CAAC;6BACpF;wBAEL,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gCAC3B,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;6BAC5C;4BACD,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;wBACrE,CAAC,CAAC,CAAC;qBACV;gBACL,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,CAAC,oBAAoB,CAAC,CAAC;aAChC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,cAAc,CAAC,IAAY,EAAE,QAAkB,EAAE;QAC7C,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAC1C,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAChD,IAAI,IAAI,EAAE;gBACN,6DAA6D;gBAE7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;qBAC7C,IAAI,CAAC,KAAK,CAAC,EAAE;oBACV,IAAI,KAAK,EAAE;wBACP,uEAAuE;wBACvE,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;wBACtB,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;wBAEtB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;wBACrB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;wBAErB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC;6BACtC,IAAI,CAAC,QAAQ,CAAC,EAAE;4BACb,iDAAiD;4BACjD,IAAI,QAAQ,EAAE;gCACV,kEAAkE;gCAClE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gCAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC;gCACjC,IAAI,CAAC,WAAW,EAAE,CAAC;gCACnB,OAAO,CAAC,SAAS,CAAC,CAAC;6BACtB;iCAAM;gCACH,iBAAiB;gCACjB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;gCAClB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;gCAClB,IAAI,CAAC,SAAS,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;6BAC1D;wBACL,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,iBAAiB;4BACjB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;4BAClB,IAAI,CAAC,GAAG,GAAG,MAAM,CAAC;4BAClB,oFAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;4BAChE,IAAI,CAAC,SAAS,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;wBAC3D,CAAC,CAAC,CAAC;qBAEV;gBACL,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,CAAC,SAAS,CAAC,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,eAAe,CAAC,KAAc;QAC1B,IAAI,MAAM,GAAG,2BAA2B,CAAC;QACzC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;iBACpB,IAAI,CAAC,GAAG,EAAE;gBACP,OAAO,CAAC,WAAW,CAAC;YACxB,CAAC,CAAC;YAEN,kCAAkC;YAClC,kBAAkB;YAClB,2BAA2B;YAC3B,OAAO;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,aAAa,CAAC,OAAiB;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAElD,IAAI,OAAO,EAAE;gBACT,+FACgB,CAAC,OAAO,CAAC;qBACpB,IAAI,CAAC,MAAM,CAAC,EAAE;oBACX,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBACzB,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,4EAAkB,EAAE,6EAAiB,CAAC,CAAC;oBACxE,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACxC,OAAO,CAAC,SAAS,CAAC,CAAC;gBACvB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,MAAM,CAAC,GAAG,CAAC,CAAC;oBACZ,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;gBAC1D,CAAC,CAAC,CAAC;aAEV;iBAAM;gBAEH,MAAM,CAAC,YAAY,CAAC,CAAC;aACxB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,WAAW;QACP,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;IAC5B,CAAC;IAED,SAAS,CAAC,KAAe;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAS,CAAC,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,CAAC,eAAe,EAAE;iBACjB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACZ,8CAA8C;gBAC9C,IAAI,KAAK,EAAE;oBACP,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACjB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;wBACvB,IAAI,2GAA4B,CAAC,KAAK,CAAC,EAAE;4BACrC,iFAAiF;4BACjF,6FAAsB,CAAC,IAAI,CAAC;iCACvB,IAAI,CAAC,GAAG,EAAE;gCACP,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,SAAS,CAAC;gCACvD,OAAO,CAAC,KAAK,CAAC,CAAC;4BACnB,CAAC,CAAC;iCACD,KAAK,CAAC,GAAG,CAAC,EAAE;gCACT,MAAM,CAAC,GAAG,CAAC,CAAC;gCACZ,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC;4BAErD,CAAC,CAAC;yBACT;6BAAM;4BACH,IAAI,CAAC,SAAS,CAAC,6CAA6C,EAAE,OAAO,CAAC,CAAC;yBAC1E;oBAEL,CAAC,CAAC;iBAEL;YACL,CAAC,CAAC;QAEV,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,SAAS,CAAC,KAAe;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAS,CAAC,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,CAAC,eAAe,EAAE;iBACjB,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBACZ,8CAA8C;gBAC9C,IAAI,KAAK,EAAE;oBACP,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACjB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;wBACvB,IAAI,2GAA4B,CAAC,KAAK,CAAC,EAAE;4BACrC,iFAAiF;4BACjF,6FAAsB,CAAC,IAAI,CAAC;iCACvB,IAAI,CAAC,GAAG,EAAE;gCACP,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,SAAS,CAAC;gCACvD,OAAO,CAAC,KAAK,CAAC,CAAC;4BACnB,CAAC,CAAC;iCACD,KAAK,CAAC,GAAG,CAAC,EAAE;gCACT,MAAM,CAAC,GAAG,CAAC,CAAC;gCACZ,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC;4BAErD,CAAC,CAAC;yBACT;6BAAM;4BACH,IAAI,CAAC,SAAS,CAAC,6CAA6C,EAAE,OAAO,CAAC,CAAC;yBAC1E;oBAEL,CAAC,CAAC;iBAEL;YACL,CAAC,CAAC;QAEV,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,UAAU,CAAC,KAAe;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAChD,IAAI,KAAK,EAAE;gBACP,KAAK,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC5B,IAAI,CAAC,eAAe,EAAE;qBACjB,IAAI,CAAC,IAAI,CAAC,EAAE;oBACT,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;wBACjB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;wBACtB,6FAAsB,CAAC,IAAI,CAAC;6BACvB,IAAI,CAAC,GAAG,EAAE;4BACP,OAAO,CAAC,MAAM,CAAC,CAAC;4BAChB,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,SAAS,CAAC;wBACnD,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,EAAE;4BACR,IAAI,CAAC,SAAS,CAAC,4BAA4B,EAAE,OAAO,CAAC;wBACzD,CAAC,CAAC;oBACV,CAAC,CAAC,CAAC;gBACP,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,EAAE;oBACR,oFAAkB,CAAC,2CAA2C,CAAC;gBACnE,CAAC,CAAC;aACT;iBAAM;gBACH,MAAM,CAAC,qCAAqC,CAAC;aAChD;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAUD,IAAI,KAAK;QACL,6DAA6D;QAC7D,OAAO,yFAAsB,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,GAAa;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,2DAA2D;QAE3D,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAE1B,4BAA4B;YAC5B,UAAU,CAAC,GAAG,EAAE;gBACZ,+EAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;YAC5C,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC;SAGtB;aAAM;YACH,+EAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SAC3C;IACL,CAAC;IAGD,IAAI,QAAQ;QACR,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,OAAO,+FAAyB,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,CAAC,IAAa;QACtB,+EAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAGH,SAAS,CAAC,IAAY,EAAE,QAAkB;QACxC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,MAAM,WAAW,GAAG,wGAA2B,CAAC;YAChD,IAAI,IAAI,CAAC,mBAAmB,IAAI,WAAW,GAAG,8GAAuB,EAAE;gBACrE,IAAI,CAAC,MAAM,GAAG,IAAI,qEAAY,EAAE,CAAC;gBACjC,IAAI,CAAC,MAAM,CAAC,QAAQ,GAAG,WAAW,KAAK,gHAAwB,IAAI,WAAW,KAAK,wIAAoC,CAAC;gBACxH,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,WAAW,KAAK,wHAA4B,IAAI,WAAW,KAAK,wIAAoC,CAAC;gBAC1H,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;aAClC;YACD,yFACW,CAAC,CAAC,IAAI,CAAC,CAAC;iBAChB,IAAI,CAAC,MAAM,CAAC,EAAE;gBACb,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACzB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,yEAAe,CAAC,CAAC;gBACnE,IAAI,WAAW,EAAE;oBACf,IAAI,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;oBACnD,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBACxB,IAAI,CAAC,WAAW,EAAE,CAAC;oBAEnB,IAAI,kGAAwB,EAAE;wBAC5B,UAAU,CAAC,GAAG,EAAE;4BACd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;4BACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;4BAChC,6BAA6B;wBAC/B,CAAC,EAAE,GAAG,CAAC,CAAC;qBACT;oBAED,OAAO,CAAC,WAAW,CAAC,CAAC;iBACtB;qBAAM,IAAI,MAAM,CAAC,YAAY,EAAE;oBAC9B,MAAM,CAAC,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC;iBACxE;qBAAM;oBACL,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;iBACxC;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,MAAM,CAAC,GAAG,CAAC,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAEC,cAAc,CAAC,IAAY,EAAE,WAAoB,EAAE,QAAkB;QACjE,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAC1C,gCAAgC;QAEhC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAE5C,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC;iBAC/C,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,4DAA4D;gBAE5D,IAAI,MAAM,EAAE;oBACR,gCAAgC;oBAGhC,IAAI,OAAO,GAAG,WAAW,CAAC,OAAO,CAAC;oBAClC,IAAI,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,EAAE,OAAO,CAAC;yBAC7C,IAAI,CAAC,OAAO,CAAC,EAAE;wBACZ,IAAI,OAAO,EAAE;4BAET,IAAI,OAAO,EAAE;gCACT,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;6BACtB;4BAED,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;4BAEjD,IAAI,kGAAwB,EAAE;gCAC1B,UAAU,CAAC,GAAG,EAAE;oCACZ,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oCACzB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;gCACpC,CAAC,EAAE,GAAG,CAAC,CAAC;6BACX;yBACJ;wBACD,OAAO,CAAC,OAAO,CAAC,CAAC;oBACrB,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,IAAI,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;wBACxD,2CAA2C;wBAC3C,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC;iBACT;qBAAM;oBACH,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;iBACtD;YACL,CAAC,CAAC,CAAC;QAGX,CAAC,CAAC,CAAC;IAEP,CAAC;IAGD,eAAe,CAAC,KAAe,EAAE,KAAc,EAAE,OAAe;QAC5D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAC3C,iCAAiC;QAEjC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,CAAC;iBACtC,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,4DAA4D;gBAC5D,IAAI,MAAM,EAAE;oBAER,uGACoB,CAAC,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC;yBAC9C,IAAI,CAAC,QAAQ,CAAC,EAAE;wBACb,yCAAyC;wBACzC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;4BACjB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;4BACpB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;4BAE7B,IAAI,OAAO,EAAE;gCACT,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;gCACnB,OAAO,EAAE,CAAC;6BACb;4BAED,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;4BACtB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;wBACxB,CAAC,CAAC,CAAC;wBAEH,IAAI,CAAC,WAAW,EAAE,CAAC;wBACnB,IAAI,CAAC,WAAW,EAAE,CAAC;wBACnB,OAAO,CAAC,IAAI,CAAC,CAAC;wBACd,IAAI,CAAC,SAAS,CAAC,sCAAsC,GAAG,KAAK,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;wBAC/E,gDAAgD;oBACpD,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,IAAI,CAAC,SAAS,CAAC,uCAAuC,CAAC,CAAC;wBACxD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;4BAC3B,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;yBAC5C;wBACD,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;iBAEV;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC,CAAC;oBACf,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;iBACtD;YACL,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,oBAAoB,CAAC,IAAY;QAC7B,MAAM,MAAM,GAAG,qCAAqC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,IAAI,EAAE;gBAEN,IAAI;qBACC,iBAAiB,CAAC,gBAAgB,IAAI,CAAC,IAAI,EAAE,EAAE,4CAA4C,CAAC;qBAC5F,IAAI,CAAC,WAAW,CAAC,EAAE;oBAChB,IAAI,WAAW,EAAE;wBAEb,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;wBACzB,IAAI,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC;wBAEvB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;6BACpB,IAAI,CAAC,GAAG,CAAC,EAAE;4BACR,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;4BAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;wBAClB,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,IAAI,CAAC,SAAS,CAAC,uBAAuB,GAAG,EAAE,EAAE,OAAO,CAAC,CAAC;4BACtD,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gCAC3B,sEAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;6BAClE;4BACD,MAAM,CAAC,GAAG,CAAC,CAAC;wBAChB,CAAC,CAAC,CAAC;qBACV;yBAAM;wBACH,OAAO,CAAC,KAAK,CAAC,CAAC;qBAClB;gBACL,CAAC,CAAC,CAAC;aAGV;iBAAM;gBACH,oFAAkB,CAAC,cAAc,CAAC,CAAC;gBACnC,MAAM,CAAC,SAAS,CAAC,CAAC;aACrB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,qBAAqB,CAAC,OAAiB;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAEhD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/B,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC;gBAC1C,IAAI,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC;gBAC3B,IAAI,YAAY,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC;gBACjD,IAAI;qBACC,iBAAiB,CAAC,cAAc,EAAE,mCAAmC,KAAK,IAAI,YAAY,GAAG,CAAC;qBAC9F,IAAI,CAAC,SAAS,CAAC,EAAE;oBACd,IAAI,SAAS,EAAE;wBACX,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC;6BACpB,IAAI,CAAC,GAAG,CAAC,EAAE;4BACR,IAAI,WAAW,GAAG,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC;4BACtC,IAAI,WAAW,EAAE;gCACb,IAAI,CAAC,SAAS,CAAC,GAAG,KAAK,IAAI,YAAY,UAAU,EAAE,SAAS,CAAC,CAAC;gCAC9D,qBAAqB;6BACxB;iCAAM;gCACH,IAAI,CAAC,SAAS,CAAC,iDAAiD,EAAE,SAAS,CAAC,CAAC;6BAChF;4BACD,OAAO,CAAC,WAAW,CAAC,CAAC;wBACzB,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gCAC3B,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;6BAC5C;4BACD,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;wBACrE,CAAC,CAAC,CAAC;qBACV;gBACL,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,CAAC,oBAAoB,CAAC,CAAC;aAChC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,WAAW,CAAC,OAAiB;QACzB,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACvC,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAClD,IAAI,OAAO,EAAE;gBACT,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAEhC,+FACgB,CAAC,OAAO,CAAC;qBACpB,IAAI,CAAC,MAAM,CAAC,EAAE;oBAEX,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oBAEzB,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,4EAAkB,EAAE,6EAAiB,CAAC,CAAC;oBACxE,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBACxC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAEvB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,EAAE,CAAC;aACZ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,UAAU,CAAC,IAAY;QACnB,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACtC,IAAI,IAAI,EAAE;YACN,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC/B;SACJ;aAAM;YACH,sEAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;SACvC;IACL,CAAC;IAGD,YAAY,CAAC,IAAY;QACrB,IAAI,IAAI,EAAE;YACN,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YAC7D,0DAA0D;YAC1D,IAAI,CAAC,OAAO,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACtB,6BAA6B;aAChC;SACJ;aAAM;YACH,kFAAiB,CAAC,cAAc,CAAC,CAAC;SACrC;IACL,CAAC;IAGD,cAAc,CAAC,MAAc;QACzB,wCAAwC;QACxC,IAAI,MAAM,EAAE;YACR,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACrD,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACzB;SACJ;IACL,CAAC;IAGD,WAAW;QACP,uCAAuC;QAEvC,IAAI,QAAQ,GAAY,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAG,yFAAsB,CAAC;QACnC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAE3B,0CAA0C;YAC1C,sDAAsD;YACtD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtB,IAAI,GAAG,GAAG,8EAAc,CAAC,IAAI,CAAC,CAAC;gBAC/B,oDAAoD;gBACpD,qBAAqB;gBACrB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;SACN;QAED,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,aAAa;QACT,IAAI,QAAQ,GAAG,uGAA6B,GAAG,CAAC,CAAC;QACjD,IAAI,OAAO,GAAG,6GAAgC,GAAG,CAAC,CAAC;QACnD,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;IACL,CAAC;IAGD,WAAW;QACP,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;IAC5B,CAAC;IAGD,sBAAsB;IAGtB,mBAAmB;IAEnB,IAAI,KAAK;QACL,OAAO,yFAAsB,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,GAAa;QACnB,+EAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACpC,CAAC;IAED,IAAI,aAAa;QACb,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,kFAAoB,CAAC,CAAC;QACvE,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,YAAY,CAAC,IAAY;QACrB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,6BAA6B;SAChC;aAAM;YACH,kFAAiB,CAAC,cAAc,CAAC,CAAC;SACrC;IACL,CAAC;IAGD,gBAAgB,CAAC,IAAY;QACzB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEjC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,6BAA6B;SAChC;aAAM;YACH,kFAAiB,CAAC,cAAc,CAAC,CAAC;SACrC;IACL,CAAC;IAGD,UAAU,CAAC,IAAY;QACnB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YACxC,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aAC/B;SACJ;aAAM;YACH,kFAAiB,CAAC,cAAc,CAAC,CAAC;SACrC;QACD,6BAA6B;IACjC,CAAC;IAGD,cAAc,CAAC,MAAc;QACzB,IAAI,MAAM,IAAI,MAAM,KAAK,EAAE,EAAE;YACzB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;YACrD,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACzB;YACD,sEAAsE;YACtE,yDAAyD;YACzD,0CAA0C;YAC1C,IAAI;SACP;IACL,CAAC;IAGD,SAAS,CAAC,IAAY;QAClB,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAChD,uFACY,CAAC,IAAI,CAAC;iBACb,IAAI,CAAC,MAAM,CAAC,EAAE;gBAEX,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEzB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,yEAAe,CAAC,CAAC;gBACnE,IAAI,WAAW,EAAE;oBACb,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM,IAAI,MAAM,CAAC,YAAY,EAAE;oBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;iBAC9E;qBAAM;oBACH,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;iBAC9C;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,YAAY,CAAC,IAAY;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAChD,6FACe,CAAC,IAAI,CAAC;iBAChB,IAAI,CAAC,MAAM,CAAC,EAAE;gBAEX,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEzB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,uEAAc,CAAC,CAAC;gBAClE,IAAI,WAAW,EAAE;oBACb,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM,IAAI,MAAM,CAAC,YAAY,EAAE;oBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAC,CAAC;iBAChF;qBAAM;oBACH,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;iBAChD;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,aAAa,CAAC,OAAiB;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,yBAAyB,CAAC;QAEzC,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAClD,IAAI,OAAO,EAAE;gBACT,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChC,IAAI,IAAI,GAAW,EAAE,CAAC;gBACtB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAClF,IAAI,KAAK,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,kBAAkB,GAAG,IAAI,CAAC,CAAC,CAAC,kBAAkB,GAAG,OAAO,CAAC,MAAM,GAAG,YAAY,CAAC;gBACnH,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC;oBAC5B,CAAC,CAAC,gDAAgD;oBAClD,CAAC,CAAC,kDAAkD,CAAC;gBACzD,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;qBAC9B,IAAI,CAAC,WAAW,CAAC,EAAE;oBAChB,IAAI,WAAW,EAAE;wBACb,+FACgB,CAAC,OAAO,CAAC;6BACpB,IAAI,CAAC,MAAM,CAAC,EAAE;4BACX,IAAI,IAAI,GAAG,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,uBAAuB,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,YAAY,CAAC;4BAC1I,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;4BAEhC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;4BAEzB,IAAI,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,4EAAkB,EAAE,6EAAiB,CAAC,CAAC;4BACxE,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;4BACxC,OAAO,CAAC,SAAS,CAAC,CAAC;wBAEvB,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,MAAM,CAAC,GAAG,CAAC,CAAC;4BACZ,0CAA0C;4BAC1C,IAAI,CAAC,SAAS,CAAC,6BAA6B,GAAG,GAAG,EAAE,OAAO,CAAC,CAAC;wBACjE,CAAC,CAAC,CAAC;qBACV;gBACL,CAAC,CAAC;aAET;iBAAM;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;aAChC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,wCAAwC;IACxC,qBAAqB;IACrB,iDAAiD;IACjD,6DAA6D;IAC7D,0HAA0H;IAC1H,+BAA+B;IAC/B,gCAAgC;IAChC,WAAW;IACX,wBAAwB;IACxB,sBAAsB;IACtB,YAAY;IACZ,QAAQ;IACR,IAAI;IAEJ,WAAW;QACP,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACvB,CAAC;IAGD,YAAY;IAGZ,sBAAsB;IAGtB,IAAI,IAAI;QACJ,OAAO,uFAAqB,CAAC;IACjC,CAAC;IAED,IAAI,IAAI,CAAC,IAAiB;QACtB,+EAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACpC,CAAC;IAGD,YAAY,CAAC,IAAe;QACxB,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SAC3B;aAAM;YACH,oFAAkB,CAAC,cAAc,CAAC,CAAC;SACtC;IACL,CAAC;IAGD,UAAU,CAAC,IAAe,EAAE,QAAgB;QACxC,IACI,IAAI;YACJ,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM;gBAC3B,CAAC,QAAQ,KAAK,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,EACpD;YACE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;YACvC,6BAA6B;SAChC;aAAM;YACH,kFAAiB,CAAC,kCAAkC,CAAC,CAAC;SACzD;IACL,CAAC;IAGD,UAAU,CAAC,IAAe;QACtB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;YAC1C,IAAI,KAAK,GAAG,CAAC,CAAC,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;aACjC;SACJ;aAAM;YACH,kFAAiB,CAAC,cAAc,CAAC,CAAC;SACrC;QACD,6BAA6B;IACjC,CAAC;IAGD,cAAc,CAAC,KAAa;QACxB,IAAI,CAAC,KAAK,EAAE;YACR,OAAO;SACV;QACD,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,KAAK,CAAC,CAAC;QAC3D,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;SAC/B;IACL,CAAC;IAGD,iBAAiB,CAAC,MAAc;QAC5B,IAAI,QAAQ,GAAgB,EAAE,CAAC;QAC/B,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACxB,IAAI,MAAM,IAAI,IAAI,EAAE;gBAChB,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,MAAM,EAAE;oBAChC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACtB;aACJ;QACL,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,iBAAiB,CAAC,MAAc;QAC5B,IAAI,QAAQ,GAAgB,EAAE,CAAC;QAC/B,IAAI,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;YACvB,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACxB,IAAI,MAAM,IAAI,IAAI,EAAE;gBAChB,IAAI,MAAM,CAAC,WAAW,EAAE,IAAI,MAAM,EAAE;oBAChC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACtB;aACJ;QACL,CAAC,CAAC,CAAC;QACH,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,SAAS,CAAC,IAAe;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAY,UAAU,OAAO,EAAE,MAAM;YACnD,iGACe,CAAC,IAAI,CAAC;iBAChB,IAAI,CAAC,MAAM,CAAC,EAAE;gBAEX,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEzB,IAAI,WAAW,GAAG,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,EAAE,yEAAe,CAAC,CAAC;gBACnE,IAAI,WAAW,EAAE;oBACb,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM,IAAI,MAAM,CAAC,YAAY,EAAE;oBAC5B,MAAM,CAAC,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC,CAAC;iBAC9E;qBAAM;oBACH,MAAM,CAAC,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC,CAAC;iBAC9C;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,iBAAiB,CAAC,IAAe;QAC7B,OAAO,IAAI,OAAO,CAAY,UAAU,OAAO,EAAE,MAAM;YACnD,IAAI,IAAI,GAAG,IAAI,CAAC;YAEhB,iHACuB,CAAC,IAAI,CAAC;iBACxB,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAE9B,IAAI,WAAW,GAAG,KAAK,CAAC;gBAExB,IAAI,MAAM,CAAC,UAAU,EAAE;oBACnB,IAAI,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CACvC,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,GAAG,KAAK,kFAAqB;wBAC/B,CAAC,CAAC,IAAI,KAAK,GAAG;wBACd,CAAC,CAAC,GAAG,KAAK,uEAAc;wBACxB,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAC5B,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;oBAClB,IAAI,YAAY,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE;wBAC3C,WAAW,GAAG,IAAI,CAAC;qBACtB;iBACJ;gBAED,IAAI,WAAW,EAAE;oBACb,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM,IAAI,MAAM,CAAC,cAAc,GAAG,CAAC,EAAE;oBAClC,MAAM,CACF,IAAI,KAAK,CACL,yDAAyD,CAC5D,CACJ,CAAC;oBACF,sBAAsB;oBACtB,uEAAuE;oBACvE,MAAM;iBACT;qBAAM;oBACH,MAAM,CAAC,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC,CAAC;oBAC7C,4DAA4D;iBAC/D;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,oFAAkB,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,iBAAiB,CAAC,OAAiB;QAC/B,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAClD,IAAI,IAAI,GAAG,IAAI,CAAC;YAEhB,IAAI,OAAO,EAAE;gBACT,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;aACnC;YAED,iHACuB,CAAC,OAAO,CAAC;iBAC3B,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;gBAE9B,IAAI,iBAAiB,GAAa,EAAE,CAAC;gBAErC,IAAI,MAAM,CAAC,UAAU,EAAE;oBACnB,qEAAqE;oBACrE,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC,MAAM,CACxC,CAAC,CAAC,EAAE,CACA,CAAC,CAAC,GAAG,KAAK,kFAAqB;wBAC/B,CAAC,CAAC,IAAI,KAAK,GAAG;wBACd,CAAC,CAAC,GAAG,KAAK,6EAAiB,CAClC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;iBACrB;gBACD,4EAA4E;gBAE5E,OAAO,CAAC,iBAAiB,CAAC,CAAC;YAC/B,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,oFAAkB,CAAC,GAAG,CAAC,CAAC;gBACxB,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,YAAY;IAGZ,qBAAqB;IAErB,IAAI,OAAO;QACP,qEAAqE;QACrE,OAAO,6FAAwB,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,OAAiB;QACzB,+EAAiB,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC1C,CAAC;IAGD,UAAU,CAAC,MAAc;QACrB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,iGAAwB,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAC5C,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC5B,OAAO,EAAE,CAAC;iBACb;qBAAM;oBACH,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;iBACjD;YACL,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC;IAED,YAAY,CAAC,MAAY,EAAE,GAAW;QAClC,MAAM,MAAM,GAAG,sBAAsB,CAAC;QACtC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,MAAM,IAAI,MAAM,CAAC,IAAI,GAAG,CAAC,EAAE;YAC3B,IAAI,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC9B,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACnC,IAAI,GAAG,GAAG,GAAG,mFAAmB,qBAAqB,GAAG,EAAE,CAAC;YAC3D,OAAO,sGACE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAC,OAAO,EAAE,EAAC,cAAc,EAAE,qBAAqB,EAAC,EAAC,CAAC;iBACvE,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,EAAE;oBACL,IAAI,GAAG,CAAC,IAAI,EAAE;wBACV,IAAI,MAAM,GAAG,qFAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC7C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;4BACxB,4BAA4B;4BAC5B,IAAI,GAAG,IAAI,sFAAkB,EAAE;gCAC3B,2EAA2E;gCAC3E,UAAU,CAAC,GAAG,EAAE;oCACZ,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gCACzB,CAAC,EAAE,GAAG,CAAC,CAAC;6BAEX;4BACD,wBAAwB;4BACxB,UAAU,CAAC,GAAG,EAAE;gCACZ,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;gCACtD,IAAI,MAAM,EAAE;oCACR,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;iCAClC;qCAAM;oCACH,kBAAkB;oCAClB,sEAAW,CAAC,MAAM,EAAE,YAAY,GAAG,kCAAkC,oFAAiB,EAAE,CAAC;iCAC5F;4BACL,CAAC,EAAE,GAAG,CAAC,CAAC;yBACX;qBACJ;yBAAM;wBACH,sEAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,EAAE,CAAC;qBAC3F;iBACJ;qBAAM;oBACH,sEAAW,CAAC,MAAM,EAAE,YAAY,GAAG,2BAA2B,oFAAiB,EAAE,CAAC;iBACrF;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,UAAU,GAAG;gBAChB,oFAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;gBACnD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;oBAC3B,sEAAW,CAAC,MAAM,EAAE,uBAAuB,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;iBAChE;qBAAM;oBACH,sEAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;iBAClE;YACL,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAED,YAAY,CAAC,OAAe,EAAE,OAAe,EAAE,MAAc,EAAE,MAAc;QACzE,OAAO,qGAA0B,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IACxE,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzC,6GAA8B,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;gBAClD,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC5B,+EAA+E;oBAC/E,OAAO,EAAE,CAAC;iBACb;qBAAM;oBACH,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;iBACjD;YACL,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC;IAGD,YAAY,CAAC,WAA2B;QACpC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,IAAI,OAAO,CAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7D,+GAA+B,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBACxD,IAAI,KAAK,EAAE;oBACP,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;wBACvB,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACX,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnB,CAAC,CAAC,CAAC;iBACN;qBAAM;oBACH,2CAA2C;oBAC3C,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;iBACjD;YAEL,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC;IAED,eAAe,CAAC,KAA4B;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,IAAI,OAAO,CAA2B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC7D,+GAA+B,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAChD,IAAI,KAAK,EAAE;oBACP,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;wBACvB,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;wBACX,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnB,CAAC,CAAC,CAAC;iBACN;qBAAM;oBACH,2CAA2C;oBAC3C,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;iBACjD;YAEL,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC;IACN,CAAC;IAGD,SAAS,CAAC,MAAc;QACpB,oFAAkB,CAAC,gBAAgB,EAAE,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC1D,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1B,sBAAsB;IAC1B,CAAC;IAGD,YAAY,CAAC,QAAgB;QACzB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,QAAQ,EAAE;YACV,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YAC3D,IAAI,MAAM,EAAE;gBACR,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC7C,IAAI,SAAS,IAAI,CAAC,EAAE;oBAChB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;oBAClC,OAAO,GAAG,IAAI,CAAC;iBAClB;gBACD,sBAAsB;aACzB;YACD,yEAAyE;YACzE,uDAAuD;YACvD,gEAAgE;YAChE,yCAAyC;YACzC,oBAAoB;YACpB,2BAA2B;YAC3B,IAAI;SACP;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,aAAa,CAAC,UAAoB;QAC9B,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC;QAC1B,sBAAsB;IAC1B,CAAC;IAGD,kBAAkB,CAAC,KAAc;QAC7B,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAE9C,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAClC,mGAAyB,CAAC,KAAK,CAAC,OAAO,CAAC;qBACnC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,GAAG,CAAC,SAAS,EAAE;wBACf,QAAQ,GAAG,CAAC,SAAS,EAAE;4BACnB,KAAK,0GAAkC;gCACnC,kDAAkD;gCAClD,IAAI,CAAC,SAAS,CAAC,gDAAgD,EAAE,SAAS,CAAC,CAAC;gCAC5E,MAAM;4BAEV;gCACI,oFAAkB,CAAC,MAAM,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;gCACxD,IAAI,CAAC,SAAS,CAAC,4EAA4E;oCACvF,iCAAiC,EAAE,SAAS,CAAC,CAAC;gCAClD,MAAM;yBACb;wBACD,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;qBAC1B;yBAAM;wBACH,IAAI,CAAC,SAAS,CAAC,wBAAwB,EAAE,SAAS,CAAC,CAAC;wBACpD,OAAO,CAAC,CAAC,CAAC,CAAC;qBACd;oBACD,mDAAmD;gBACvD,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;wBAC3B,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;wBAChD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAClC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,CAAC;4BAC3F,GAAG,CAAC,KAAK,KAAK,eAAe,EAAE;4BAC/B,oEAAU,CAAC,MAAM,EAAE,kBAAkB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;yBAC/D;6BAAM,IAAI,MAAM,KAAK,GAAG,EAAE;4BACvB,oEAAU,CAAC,MAAM,EAAE,kBAAkB,OAAO,EAAE,CAAC,CAAC;yBACnD;6BAAM,IAAI,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,qCAAqC,EAAE;4BAC/E,kDAAkD;4BAClD,oEAAU,CAAC,MAAM,EAAE,yBAAyB,OAAO,EAAE,CAAC,CAAC;4BACvD,IAAI,CAAC,SAAS,CAAC,4CAA4C,EAAE,SAAS,CAAC,CAAC;yBAC3E;6BAAM;4BACH,sEAAW,CAAC,MAAM,EAAE,qBAAqB,MAAM,SAAS,OAAO,EAAE,CAAC,CAAC;4BACnE,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC;yBACxC;qBACJ;oBAED,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,EAAE,CAAC;aACZ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,aAAa;QACT,uCAAuC;QACvC,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACzB,CAAC;IAYD,oBAAoB,CAAC,SAAiB;QAClC,IAAI,YAAoB,CAAC;QACzB,QAAO,SAAS,EAAE;YACd,KAAK,CAAC;gBACF,YAAY,GAAG,iFAAuB,CAAC;gBACvC,MAAM;YACV,KAAK,CAAC;gBACF,YAAY,GAAG,mGAAgC,CAAC;gBAChD,MAAM;YACV,KAAK,CAAC;gBACF,YAAY,GAAG,qGAAiC,CAAC;gBACjD,MAAM;YACV,KAAK,CAAC;gBACF,YAAY,GAAG,uFAA0B,CAAC;gBAC1C,MAAM;YACV,KAAK,CAAC;gBACF,YAAY,GAAG,iHAAuC,CAAC;gBACvD,MAAM;YACV;gBACI,YAAY,GAAG,uFAA0B,CAAC;gBAC1C,MAAM;SACb;QACD,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,eAAe,CAAC,kBAAkB,GAAG,KAAK;QACtC,IAAI,CAAC,cAAc,GAAG,6GAA0C,CAAC;QACjE,iHAAgC,CAAC,IAAI,CAAC,cAAwB,CAAC;aAC1D,IAAI,CAAC,MAAM,CAAC,EAAE;YACX,IAAI,MAAM,CAAC,OAAO,EAAE;gBAChB,IAAI,kBAAkB,EAAE;oBACpB,MAAM,YAAY,GAAG,iEAAiE,CAAC;oBACvF,yHAAoC,EAAE;yBACjC,IAAI,CAAC,OAAO,CAAC,EAAE;wBACZ,IAAI,OAAO,EAAE;4BACT,yEAAc,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;4BAChC,IAAI,CAAC,SAAS,CAAC,wDAAwD,IAAI,CAAC,cAAc,EAAE,EAAE,SAAS,CAAC,CAAC;4BACzG,IAAI,CAAC,2BAA2B,GAAG,KAAK,CAAC;yBAC5C;6BAAM;4BACH,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;yBACzC;oBACL,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,sEAAW,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;wBACjE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;oBAC1C,CAAC,CAAC;iBACT;qBAAM;oBACH,yEAAc,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAC,CAAC;oBAChC,IAAI,CAAC,SAAS,CAAC,eAAe,IAAI,CAAC,cAAc,uBAAuB,EAAE,SAAS,CAAC,CAAC;iBACxF;aACJ;iBAAM;gBACH,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;aACnD;QACL,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,sEAAW,CAAC,2BAA2B,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAC9D,IAAI,CAAC,SAAS,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;QAC/E,CAAC,CAAC;IACV,CAAC;IAED,kBAAkB;QACV,IAAI,CAAC,CAAC,6GAAgC,EAAE;YACpC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;gBACvC,mEAAW,CAAC,EAAC,IAAI,EAAE,qFAAe,EAAE,KAAK,EAAE,+FAAyB,EAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACnF,CAAC,CAAC,CAAC;aACN;iBACI;gBACD,uHAAmC,CAAC,6GAA0C,CAAC;qBAC1E,IAAI,CAAC,MAAM,CAAC,EAAE;oBACX,IAAI,MAAM,CAAC,OAAO,EAAE;wBAChB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,EAAE;4BAChD,IAAI,CAAC,eAAe,EAAE,CAAC;yBAC1B;6BACI,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;4BAC3B,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;4BAC3C,IAAI,CAAC,2BAA2B,GAAG,IAAI,CAAC;yBAC3C;qBACJ;yBAAM;wBACH,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;qBAC3C;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,sEAAW,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjE,IAAI,CAAC,SAAS,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;gBAC/E,CAAC,CAAC;aACT;SACJ;IACT,CAAC;IAGD,IAAI,eAAe;QACf,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,oBAAoB;QAChB,IAAI;YAEA,MAAM,cAAc,GAAG,2FAAuB,KAAK,YAAY,CAAC,CAAC;gBAC7D,6CAAM,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC;gBAChC,2FAAuB,CAAC;YAE5B,+GAA+B,EAAE;iBAC5B,IAAI,CAAC,aAAa,CAAC,EAAE;gBAClB,MAAM,kBAAkB,GAAG,6CAAM,CAAC,cAAc,EAAE,aAAa,CAAC,CAAC;gBACjE,MAAM,iBAAiB,GAAG,6CAAM,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;gBAC/D,MAAM,QAAQ,GAAG,iBAAiB,CAAC,IAAI,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;gBACpE,IAAI,QAAQ,GAAG,CAAC,EAAE;oBACd,+EAAiB,CAAC,iBAAiB,EAAE,4GAAqC,CAAC,CAAC;iBAC/E;qBAAM,IAAI,QAAQ,GAAG,CAAC,EAAE;oBACrB,+EAAiB,CAAC,iBAAiB,EAAE,gGAA+B,CAAC,CAAC;iBACzE;qBAAM;oBACH,+EAAiB,CAAC,iBAAiB,EAAE,wFAA2B,CAAC,CAAC;iBACrE;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,oEAAU,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC,CAAC;SACV;QAAC,OAAO,GAAG,EAAE;YACV,oEAAU,CAAC,8BAA8B,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;SACnE;IACL,CAAC;IAGD,mBAAmB;QACf,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,QAAQ,GAAG,sDAAe,CAAC,6CAAM,EAAE,CAAC,IAAI,CAAC,6CAAM,CAAC,gHAA+B,CAAC,CAAC,CAAC,CAAC;QACvF,IAAI,oFAAiB,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YAC7C,IAAI,CAAC,wBAAwB,GAAG,IAAI,CAAC;YACrC,OAAO,GAAG,IAAI,CAAC;SAClB;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,QAAQ,CAAC,MAAoB;QACzB,oCAAoC;QACpC,4CAA4C;QAC5C,sCAAsC;QACtC,wCAAwC;QACxC,qCAAqC;QACrC,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;QAC1B,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,SAAS,EAAE;YAClC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACzB;aAAM;YACH,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC;YAClC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SAC1B;QAED,wBAAwB;QACxB,wBAAwB;IAC5B,CAAC;IAGD,MAAM,CAAC,cAAc;QACjB,gFAAgF;QAEhF,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,EAAE;YAChD,IAAI,SAAS,CAAC,aAAa,EAAE;gBACzB,SAAS,CAAC,WAAW,CAAC,kBAAkB,CACpC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,EAC7B,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,EACtB,EAAC,UAAU,EAAE,IAAI,GAAG,EAAE,GAAG,EAAE,EAAE,OAAO,EAAE,IAAI,EAAC,CAC9C,CAAC;aACL;iBAAM;gBACH,OAAO,CAAC,IAAI,CAAC;aAChB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,eAAe;QACX,IAAI,SAAS,CAAC,aAAa,KAAK,CAAC,EAAE;YAC/B,OAAO,SAAS,CAAC;SACpB;aAAM,IAAI,SAAS,CAAC,aAAa,KAAK,CAAC,EAAE;YACtC,OAAO,QAAQ,CAAC;SACnB;aAAM,IAAI,SAAS,CAAC,aAAa,KAAK,CAAC,CAAC,EAAE;YACvC,OAAO,QAAQ,CAAC;SACnB;IACL,CAAC;IAGD,qBAAqB;QACjB,MAAM,MAAM,GAAG,iCAAiC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACrD,uCAAuC;YACvC,IAAI,IAAI,CAAC,KAAK,KAAK,uFAAqB,IAAI,IAAI,CAAC,MAAM,KAAK,uFAAqB,EAAE;gBAC/E,IAAI,CAAC,SAAS,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE;oBACtC,oEAAU,CAAC,MAAM,EAAE,+EAA+E,CAAC,CAAC;oBACpG,OAAO,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,+EAA+E,CAAC,CAAC,CAAC;iBAC1H;gBACD,SAAS,CAAC,WAAW;qBAChB,KAAK,CAAC,EAAC,IAAI,EAAE,aAAa,EAAC,CAAC;qBAC5B,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;oBACb,4BAA4B;oBAC5B,8CAA8C;oBAC9C,4EAA4E;oBAC5E,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,EAAE;wBAC5B,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;wBAC5B,OAAO,CAAC,MAAM,CAAC,CAAC;qBACnB;yBAAM,IAAI,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE;wBAClC,OAAO,CAAC,MAAM,CAAC,CAAC;qBACnB;yBAAM,EAAE,SAAS;wBACd,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;wBAC7B,OAAO,CAAC,MAAM,CAAC,CAAC;qBACnB;oBAED,MAAM,CAAC,QAAQ,GAAG,GAAG,EAAE;wBACnB,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACtC,CAAC;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;;oBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;wBAC3B,MAAM,OAAO,GAAG,UAAI,CAAC,SAAS,CAAC,GAAG,CAAC,0CAAE,IAAI,EAAE,CAAC;wBAC5C,IAAI,OAAO,KAAK,IAAI,EAAE;4BAClB,oEAAU,CAAC,MAAM,EAAE,eAAe,OAAO,GAAG,CAAC,CAAC;yBACjD;6BAAM;4BACH,sEAAW,CAAC,MAAM,EAAE,eAAe,OAAO,GAAG,CAAC,CAAC;yBAClD;qBACJ;gBACL,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,gCAAgC,oFAAiB,eAAe,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAClG,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,0FAAyB,CAAC,CAAC;gBAC1E,wFAAe,CAAC,MAAM,CAAC,CAAC;aAC3B;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,2BAA2B;QACvB,4CAA4C;QAC5C,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,SAAS,CAAC,WAAW,CAAC,kBAAkB,CACpC,GAAG,EAAE;gBACD,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;gBAC5B,OAAO,CAAC,IAAI,CAAC;YACjB,CAAC,EACD,GAAG,EAAE;gBACD,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC,CAAC;gBAC7B,OAAO,CAAC,KAAK,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC;IACN,CAAC;IAED,cAAc,CAAC,KAAK;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,uDAAuD;QACvD,IAAI,KAAK,KAAK,SAAS,EAAE;YACrB,SAAS,CAAC,aAAa,GAAG,CAAC,CAAC;YAC5B,6BAA6B;YAC7B,SAAS;iBACJ,cAAc,EAAE;iBAChB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;gBACV,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE;oBACnB,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;oBAC9B,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS;oBAC9B,6CAA6C;oBAC7C,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC;iBAC5D;YACL,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAGD,eAAe,CAAC,SAAsB;QAClC,IAAI,KAAK,GAAG,eAAe,CAAC;QAC5B,IAAI,OAAO,GAAG,uCAAuC,CAAC;QAEtD,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,QAAQ,SAAS,EAAE;gBACf,KAAK,oFAAqB;oBACtB,OAAO,GAAG,uCAAuC,CAAC;oBAClD,MAAM;gBACV,KAAK,sFAAsB;oBACvB,OAAO;wBACH,6DAA6D,CAAC;oBAClE,MAAM;gBACV,KAAK,4FAAyB;oBAC1B,OAAO;wBACH,oEAAoE,CAAC;oBACzE,MAAM;gBACV;oBACI,OAAO,GAAG,8BAA8B,CAAC;oBACzC,MAAM;aACb;YACD,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;SACxC;aAAM;YACH,+EAA+E;YAE/E,uBAAuB;YACvB,gCAAgC;YAChC,mJAAmJ;YACnJ,aAAa;YACb,iCAAiC;YACjC,qJAAqJ;YACrJ,aAAa;YACb,oCAAoC;YACpC,gLAAgL;YAChL,aAAa;YACb,aAAa;YACb,2IAA2I;YAC3I,aAAa;YACb,IAAI;SACP;IACL,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,KAAa,EAAE,IAAY;QACzC,wBAAwB;QACxB,kCAAkC;QAClC,yCAAyC;QACzC,uCAAuC;QAEvC,IAAI,MAAM,GAAQ,QAAQ,CAAC,aAAa,CAAC,aAAa,CAAC,CAAC;QACxD,IAAI,QAAQ,GAAQ,QAAQ,CAAC,aAAa,CAAC,kBAAkB,CAAC,CAAC;QAC/D,IAAI,OAAO,GAAQ,QAAQ,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;QAE7D,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;QAC3B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,MAAM,CAAC,MAAM,EAAE,CAAC;IACpB,CAAC;IAGD,YAAY;IAGZ,gBAAgB;IAGhB,sEAAsE;IACtE,SAAS,CAAC,IAAY,EAAE,KAAc;QAClC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;QACjD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC/B,CAAC;IAKD,iBAAiB,CAAC,KAAa,EAAE,IAAY,EAAE,OAAgB,EAAE,OAAgB,EAAE,gBAAyB,KAAK,EAAE,mBAAoC,IAAI;QAEvJ,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC5B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,gBAAgB,GAAG,OAAO,IAAI,KAAK,CAAC;YACzC,IAAI,CAAC,gBAAgB,GAAG,OAAO,IAAI,IAAI,CAAC;YACxC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,CAAC,sBAAsB,GAAG,aAAa,CAAC;YAC5C,IAAI,CAAC,yBAAyB,GAAG,gBAAgB,CAAC;YAClD,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;YAClC,kCAAkC;QACtC,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,SAAS,CAAC,WAAoB,EAAE,WAAoB,KAAK;QACrD,oCAAoC;QACpC,IAAI,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QACrC,IAAI,WAAW,IAAI,QAAQ;YAAE,IAAI,CAAC,yBAAyB,EAAE,CAAC;IAClE,CAAC;IAKD,eAAe,CAAC,SAAkB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,sBAAsB,GAAG,SAAS,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QAEpC,CAAC,CAAC,CAAC;IAEP,CAAC;IAGD,WAAW,CAAC,KAAa;QACrB,oDAAoD;QACpD,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAID,kBAAkB;QACd,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACjC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,wBAAwB,GAAG,OAAO,CAAC;YACxC,yCAAyC;QAC7C,CAAC,CAAC,CAAC;IAEP,CAAC;IAqBD,eAAe,CAAC,SAAkB;QAC9B,iCAAiC;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QACpC,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,WAAW,CAAC,aAAqB;QAC7B,oEAAoE;QACpE,IAAI,CAAC,gBAAgB,CAAC,aAAa,CAAC,CAAC;IACzC,CAAC;IAKD,cAAc,CAAC,GAAY,EAAE,SAAkB,EAAE,UAAmB;QAChE,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,oDAAoD;QAEpD,IAAI,CAAC,oBAAoB,GAAG,GAAG,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;QACnC,IAAI,CAAC,kBAAkB,GAAG,UAAU,CAAC;QACrC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YACnC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,IAAY;QACnB,+DAA+D;QAC/D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAKD,eAAe,CAAC,KAAa;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,0FAA0F;QAC1F,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE;YACxC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAI,sBAAsB;QACtB,OAAO,2HAAuC,CAAC;IACnD,CAAC;IAED,IAAI,sBAAsB,CAAC,GAAY;QACnC,+EAAiB,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;IACrD,CAAC;IAED,IAAI,wBAAwB;QACxB,OAAO,+HAAyC,CAAC;IACrD,CAAC;IAED,IAAI,wBAAwB,CAAC,GAAQ;QACjC,+EAAiB,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,sBAAsB,CAAC,KAAa,EAAE,UAAe,GAAG,EAAE,CAAC,IAAI;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAChC,IAAI,CAAC,wBAAwB,GAAG,OAAO;QACvC,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,0FAA0F;QAC1F,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE;YACxC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QACpC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,wBAAwB,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;IACjE,CAAC;IAED,WAAW,CAAC,IAAiB;QACzB,+DAA+D;QAC/D,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAKD,cAAc,CAAC,KAAa,EAAE,GAAW,EAAE,GAAW,EAAE,eAAwB,KAAK,EAAE,cAAuB,KAAK;QAC/G,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;QAC/B,IAAI,CAAC,mBAAmB,GAAG,GAAG,CAAC;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,wBAAwB,GAAG,YAAY,CAAC;QAC7C,IAAI,CAAC,qBAAqB,GAAG,WAAW,CAAC;QACzC,mDAAmD;QAEnD,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,EAAE;YACvC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,IAAgB;QACvB,gEAAgE;QAChE,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAKD,gBAAgB,CAAC,IAAY,EAAE,MAA0B;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACnC,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC;QACvC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,mDAAmD;QACnD,OAAO,IAAI,OAAO,CAAqB,CAAC,OAAO,EAAE,EAAE;YAC/C,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,IAAwB;QACjC,gEAAgE;QAChE,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAKD,gBAAgB,CAAC,WAAoB;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,uBAAuB,GAAG,WAAW,CAAC;QAC3C,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,+DAA+D;QAC/D,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,WAAoB;QAC7B,4FAA4F;QAC5F,IAAI,CAAC,iBAAiB,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAOD,IAAI,eAAe;QACf,OAAO,yGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,+EAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,mHAAmC,CAAC;IAC/C,CAAC;IAED,aAAa,CAAC,KAAc;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,+EAAiB,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACvD,+EAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACjD,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,aAAa,CAAC,QAAiB;QAC3B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAKD,IAAI,cAAc;QACd,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,+GAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAW;QAC9B,+EAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,QAAiB;QAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAID,IAAI,iBAAiB;QACjB,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,qBAAqB;QACrB,OAAO,qHAAoC,CAAC;IAChD,CAAC;IAED,IAAI,qBAAqB,CAAC,GAAc;QACpC,+EAAiB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,eAAe,CAAC,OAAkB;QAC9B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,qBAAqB,GAAG,OAAO,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAC9B,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC;QACtC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,eAAe,CAAC,QAAiB;QAC7B,IAAI,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAID,IAAI,cAAc;QACd,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,+GAAiC,CAAC;IAC7C,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,+EAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACpD,+EAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAChD,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,QAAiB;QAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAKD,IAAI,cAAc;QACd,OAAO,uGAA0B,CAAC;IACtC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,+GAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAW;QAC9B,+EAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,YAAY,CAAC,IAAY;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY,CAAC,QAAiB;QAC1B,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAGD,IAAI,gBAAgB;QAChB,OAAO,2GAA4B,CAAC;IACxC,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,+EAAc,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,sBAAsB;QACtB,OAAO,uHAAkC,CAAC;IAC9C,CAAC;IAID,cAAc,CAAC,MAAc;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,+EAAiB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;QAC1D,+EAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QAClD,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,cAAc,CAAC,QAAiB;QAC5B,IAAI,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAKD,IAAI,cAAc;QACd,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,6GAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,+EAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAGD,YAAY,CAAC,SAAkB,EAAE,SAAmB;QAChD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,CAAC,mBAAmB,GAAG,SAAS,CAAC;QACrC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;QACD,wHAAwH;QACxH,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;YACpC,2BAA2B;YAC3B,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC;QACnC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,UAAU,CAAC,QAAiB;QACxB,yDAAyD;QACzD,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACnC,CAAC;IAED,cAAc,CAAC,SAAU;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAE1C,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,KAAK,GAAG,qFAAkB,EAAE,CAAC;YAEjC,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;iBAClC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBACb,mDAAmD;gBAEnD,IAAI,cAAc,GAAG,KAAK,CAAC,UAAU,CAAC;gBAEtC,IAAI,cAAc,GAAG,KAAK,CAAC,QAAQ,KAAK,IAAI,CAAC,MAAM,CAAC;gBACpD,iEAAiE;gBACjE,IAAI,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC;gBAC/B,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;gBACzC,IAAI,YAAY,GAAG,cAAc,IAAI,UAAU,IAAI,SAAS,CAAC;gBAC7D,IAAI,YAAY,EAAE;oBAEd,+BAA+B;oBAC/B,oDAAoD;oBACpD,MAAM,UAAU,GAAG,IAAI,oEAAY,EAAE,CAAC;oBACtC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;oBACnC,UAAU,CAAC,UAAU,GAAG,0FAA0B,CAAC;oBACnD,UAAU,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;oBACrC,UAAU,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;oBAEzC,8GAA+B,CAAC,UAAU,CAAC;yBACtC,IAAI,CAAC,GAAG,EAAE;wBACP,KAAK,CAAC,UAAU,GAAG,0FAA0B;oBACjD,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,8DAA8D;wBAC9D,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAClC,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;wBACrD,sEAAW,CAAC,MAAM,EAAE,kCAAkC,UAAU,QAAQ,OAAO,EAAE,CAAC,CAAC;wBACnF,IAAI,SAAS;4BAAE,SAAS,CAAC,UAAU,GAAG,cAAc,CAAC;oBACzD,CAAC,CAAC;yBACD,OAAO,CAAC,GAAG,EAAE;wBACV,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;wBACrB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAC9B,CAAC,CAAC;iBACT;qBAAM;oBACH,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;oBACrB,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;iBAC7B;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;oBAC3B,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;oBAChD,IAAI,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC;oBAC1E,IAAI,CAAC,SAAS,CAAC,0BAA0B,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;oBAC7D,IAAI,MAAM,KAAK,GAAG,EAAE;wBAChB,oEAAU,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;qBAC3C;yBAAM;wBACH,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;qBAC5C;iBACJ;YACL,CAAC,CAAC,CAAC;SACV;aAAM;YACH,sEAAW,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;YACpC,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC,CAAC;SAC9C;QACD,gBAAgB;IACpB,CAAC;IAcD,OAAO,CAAC,MAAc,EAAE,QAA4B;QAChD,oBAAoB;QAEpB,OAAO,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAE/C,IAAI,IAAgB,CAAC;YACrB,qCAAqC;YACrC,IAAI,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,UAAU,EAAE;gBACZ,IAAI,GAAG,UAAU,CAAC;gBAClB,oCAAoC;gBACpC,OAAO,CAAC,IAAI,CAAC,CAAC;aACjB;iBAAM;gBACH,sCAAsC;gBAEtC,IAAI,KAAK,GAAG,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;gBACnC,IAAI,KAAK,KAAK,OAAO,EAAE;oBACnB,sCAAsC;oBACtC,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;oBACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;oBAC7B,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM;oBACH,8CAA8C;oBAC9C,iBAAiB;oBACjB,0EAA0E;oBAC1E,2BAA2B;oBAC3B,6CAA6C;oBAC7C,mBAAmB;oBACnB,2DAA2D;oBAC3D,4CAA4C;oBAC5C,oCAAoC;oBACpC,qBAAqB;oBACrB,OAAO;oBACP,sBAAsB;oBACtB,oDAAoD;oBACpD,MAAM,MAAM,GAAG;wBACX,OAAO,EAAE,yFAAsB;wBAC/B,YAAY,EAAE,MAAM;wBACpB,OAAO,EAAE,EAAE;qBACQ,CAAC;oBACxB,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,4BAA4B,CAAC;oBAErD,oGACQ,CAAC,MAAM,EAAE,MAAM,CAAC;yBACnB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC;yBACrB,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;yBACvC,IAAI,CAAC,GAAG,CAAC,EAAE;wBACR,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;wBACrC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;wBAC7B,8CAA8C;wBAC9C,OAAO,CAAC,IAAI,CAAC,CAAC;oBAClB,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;4BAC3B,oFAAkB,CAAC,cAAc,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;yBACtD;wBACD,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;oBAEP,MAAM;iBACT;aACJ;YAGD,0BAA0B;YAC1B,0DAA0D;YAC1D,4DAA4D;YAC5D,6CAA6C;YAC7C,0CAA0C;YAC1C,wEAAwE;YACxE,0CAA0C;YAG1C,cAAc;QAGlB,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,WAAW,CAAC,OAAmB;QAC3B,IAAI,IAAI,GAAiB,IAAI,CAAC,WAAW,CAAC;QAC1C,QAAQ,OAAO,EAAE;YACb,KAAK,yEAAe;gBAChB,wBAAwB;gBACxB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBACxB,gCAAgC;gBAChC,MAAM;YACV,KAAK,yEAAe,CAAC;YACrB,KAAK,yEAAe,CAAC;YACrB,KAAK,6EAAiB;gBAClB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBACxB,MAAM;YACV,KAAK,6EAAiB;gBAClB,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBACxB,MAAM;SACb;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,OAAmB,EAAE,UAAyB;QACzD,kBAAkB;QAClB,IAAI,MAAoB,CAAC;QACzB,IAAI,UAAU,EAAE;YACZ,MAAM,GAAG,UAAU,CAAC;SACvB;aAAM;YAEH,QAAQ,OAAO,EAAE;gBAEb,2BAA2B;gBAC3B,KAAK,yEAAe;oBAChB,MAAM,GAAG,IAAI,CAAC,KAAK;wBACf,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;wBAC1B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC/B,8BAA8B;oBAC9B,+BAA+B;oBAC/B,gCAAgC;oBAChC,MAAM;gBAEV,KAAK,yEAAe,CAAC;gBACrB,KAAK,yEAAe;oBAChB,MAAM,GAAG,IAAI,CAAC,KAAK;wBACf,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;wBAC1B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC/B,MAAM;gBAEV,KAAK,6EAAiB;oBAClB,MAAM,GAAG,IAAI,CAAC,KAAK;wBACf,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;wBAC1B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC/B,MAAM;gBAEV,KAAK,6EAAiB;oBAClB,MAAM,GAAG,IAAI,CAAC,KAAK;wBACf,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC;wBAC1B,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;oBAC/B,MAAM;gBAEV;oBACI,mCAAmC;oBACnC,MAAM;aACb;SAEJ;QACD,8DAA8D;QAC9D,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,kBAAkB;QACd,+EAAiB,CAAC,oBAAoB,CAAC,CAAC;IAC5C,CAAC;IAED,WAAW;IAEX,iBAAiB,CAAC,MAAc;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,IAAI,CAAC;QAChC,MAAM,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;QAC3B,8DAA8D;QAC9D,IAAI,KAAK,CAAC,gBAAgB,KAAK,YAAY,EAAE;YACzC,OAAO,KAAK,CAAC;SAChB;aAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,QAAQ,EAAE;YAC5C,IAAI,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,WAAW;gBAAE,OAAO,IAAI,CAAC;YACrD,OAAO,KAAK,CAAC;SAChB;aAAM,IAAI,KAAK,CAAC,gBAAgB,KAAK,yBAAyB,EAAE;YAC7D,8BAA8B;YAC9B,gCAAgC;YAChC,iCAAiC;YACjC,+BAA+B;YAC/B,kCAAkC;YAClC,KAAK;YACL,oDAAoD;YACpD,OAAO,IAAI,CAAC;SACf;aAAM;YACH,MAAM,OAAO,GAAa,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAChF,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAAE,OAAO,KAAK,CAAC;YACjD,OAAO,IAAI,CAAC;SACf;IACL,CAAC;IAED,EAAE;IACF,WAAW,CAAC,KAAK;QACb,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW,CAAC,CAAS;QACjB,MAAM,GAAG,GAAG,kBAAkB,CAAC;QAC/B,OAAO,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,OAAO,CAAC,CAAS;QACb,MAAM,SAAS,GAAG,gBAAgB,CAAC;QACnC,OAAO,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,CAAS;QACnB,MAAM,IAAI,GAAG,oBAAoB,CAAC;QAClC,wFAAwF;QACxF,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,WAAW,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IACzF,CAAC;IAED,oBAAoB,CAAC,KAAK;QACtB,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QAC3B,IAAI,QAAgB,CAAC;QACrB,MAAM,YAAY,GAAG,SAAS,CAAC;QAC/B,MAAM,GAAG,GAAG,qCAAqC,CAAC;QAClD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE;YAC3B,aAAa;YACb,IAAI,KAAK,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;gBAClC,aAAa;gBACb,QAAQ,GAAG,KAAK,CAAC,GAAG,CAAC;aACxB;iBAAM;gBACH,QAAQ,GAAG,YAAY,CAAC;gBACxB,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;aACpE;SACJ;aAAM;YACH,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;gBAClB,QAAQ,GAAG,YAAY,CAAC;gBACxB,IAAI,CAAC,SAAS,CAAC,uCAAuC,EAAE,OAAO,CAAC,CAAC;aACpE;YACD,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SACjC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,eAAe,CAAC,GAAG;QACf,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,uGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,+EAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,aAAa;QACb,OAAO,yGAA2B,CAAC;IACvC,CAAC;IAED,IAAI,aAAa,CAAC,GAAY;QAC1B,+EAAc,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACjD,CAAC;IAED,uBAAuB;QACnB,UAAU,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;YAC1C,UAAU,CAAC,GAAG,EAAE;gBACZ,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;gBAC3C,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;gBACrC,UAAU,CAAC,GAAG,EAAE;oBACZ,IAAI,CAAC,6BAA6B,GAAG,IAAI,CAAC;oBAC1C,UAAU,CAAC,GAAG,EAAE;wBACZ,IAAI,CAAC,uBAAuB,GAAG,KAAK,CAAC;wBACrC,UAAU,CAAC,GAAG,EAAE;4BACZ,IAAI,CAAC,6BAA6B,GAAG,KAAK,CAAC;wBAC/C,CAAC,EAAE,uHAAqC,CAAC,CAAC;oBAC9C,CAAC,EAAE,2HAAuC,CAAC,CAAC;gBAChD,CAAC,EAAE,qHAAoC,CAAC,CAAC;YAC7C,CAAC,EAAE,6GAAgC,CAAC,CAAC;QACzC,CAAC,EAAE,qGAA4B,CAAC,CAAC;IACrC,CAAC;IAED,iBAAiB;QACb,IAAI,CAAC,IAAI,CAAC,gBAAgB,IAAI,CAAC,IAAI,CAAC,uBAAuB,EAAE;YACzD,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,GAAG,IAAI,EAAE,KAAK,CAAC,CAAC;SACvD;IACL,CAAC;;AAjwOM,uBAAa,GAAW,CAAC,CAAC;AAC1B,wBAAc,GAAY,KAAK,CAAC;AAowO3C,iEAAe,IAAI,SAAS,EAAE,EAAC;;;;;;;;;;;;;;ACp4OO;AAE/B,MAAM,SAAS;IAAtB;QAEI,WAAM,GAAG;YACL,MAAM,EAAE;gBACJ;oBACI,IAAI,EAAE,MAAM;oBACZ,OAAO,EAAE,MAAM;iBAClB;aACJ;SACJ,CAAC;QACF,YAAO,GAAG;YACN,UAAU,EAAE;gBACR,UAAU,EAAE,KAAK;gBACjB,MAAM,EAAE,KAAK;gBACb,OAAO,EAAE,CAAC;wBACN,IAAI,EAAE,MAAM;wBACZ,GAAG,EAAE,wDAAwD;qBAChE,CAAC;aACL;SACJ,CAAC;QACF,aAAa;QACb,OAAE,GAAG,IAAI,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAoCnE,CAAC;IAlCG,MAAM,CAAC,KAAK,EAAE,GAAG;QACb,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAClC,IAAI,CAAC,EAAE;aACF,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC;aAClB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;IAC3D,CAAC;IAAA,CAAC;IAEF,MAAM,CAAC,KAAK;QACR,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAClC,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACjC,OAAO,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAAA,CAAC;IAGF,GAAG,CAAC,KAAK,EAAE,IAAI;QACX,MAAM,MAAM,GAAG,eAAe,CAAC;QAC/B,IAAI,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC;aACnB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAAA,CAAC;IAEF,IAAI;QACA,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAChC,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC5E,CAAC;IAED,eAAe,CAAC,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,IAAI;QAClC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,IAAI,EAAE,CAAC,IAAI;YAAE,IAAI,GAAG,EAAE,CAAC,IAAI,CAAC;QAC5B,IAAI,EAAE,CAAC,OAAO;YAAE,IAAI,GAAG,EAAE,CAAC,OAAO,CAAC;QAClC,IAAI,IAAI,IAAI,GAAG;YAAE,sEAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,eAAe,IAAI,eAAe,GAAG,EAAE,CAAC,CAAC;;YAC9F,sEAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,QAAQ,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;IAChF,CAAC;CACJ;AAED,iEAAe,IAAI,SAAS,EAAE,EAAC;;;;;;;;;;;;AC7DhB,MAAM,QAAQ;;AAClB,qBAAY,GAAG,eAAe,CAAC;AAC/B,eAAM,GAAG,QAAQ,CAAC;AAClB,qBAAY,GAAG,YAAY,CAAC;AAC5B,mBAAU,GAAG,YAAY,CAAC;AAC1B,oBAAW,GAAG,cAAc,CAAC;;;;;;;;;;;;ACLzB,MAAM,OAAO;;AACjB,gBAAQ,GAAG,UAAU,CAAC;AACtB,aAAK,GAAG,OAAO,CAAC;AAChB,qBAAa,GAAG,eAAe,CAAC;AAChC,eAAO,GAAG,KAAK,CAAC;AAChB,iBAAS,GAAG,QAAQ,CAAC;AACrB,eAAO,GAAG,SAAS,CAAC;AACpB,4BAAoB,GAAG,iBAAiB,CAAC;AACzC,eAAO,GAAG,SAAS,CAAC;AACpB,eAAO,GAAG,SAAS,CAAC;AACpB,aAAK,GAAG,OAAO,CAAC;AAChB,iBAAS,GAAG,OAAO,CAAC;AACpB,sBAAc,GAAG,gBAAgB,CAAC;AAClC,mBAAW,GAAG,aAAa,CAAC;AAC5B,uBAAe,GAAG,cAAc,CAAC;AACjC,eAAO,GAAG,SAAS,CAAC;AACpB,mBAAW,GAAG,aAAa,CAAC;AAC5B,eAAO,GAAG,SAAS,CAAC;;;;;;;;;;;;ACjBhB,MAAM,SAAS;;AACnB,mBAAS,GAAG,aAAa,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;ACAqD;AACpD;AACQ;AACL;AACe;AACJ;AACC;AACZ;AACE;AACO;AACtB;AAG5B,MAAM,KAAK;IAUP;QALQ,iBAAY,GAAG,EAAE,CAAC;QAClB,iBAAY,GAAG,CAAC,CAAC;QACjB,iBAAY,GAAG,KAAK,CAAC;QAS7B,WAAM,GAAuB;YACzB,OAAO,EAAE,wFAAsB;YAC/B,OAAO,EAAE,kFAAmB;YAC5B,OAAO,EAAE;gBACL,MAAM,EAAE,kBAAkB;gBAC1B,SAAS,EAAE,oFAAiB;gBAC5B,eAAe,EAAE,UAAU;gBAC3B,cAAc,EAAE,kBAAkB;gBAClC,OAAO,EAAE,0FAAuB;aACnC;SACJ,CAAC;QAfE,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,IAAI,CAAC,mBAAmB,EAAE,CAAC;IAC/B,CAAC;IAgBD,mBAAmB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,aAAa,GAAG,oEAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,MAA0B;YAC5E,MAAM,MAAM,GAAG,uBAAuB,CAAC;YAEvC,IAAI,GAAG,GAAG,oFAAiB,CAAC;YAC5B,IAAI,4FAAqB,CAAC,GAAG,CAAC,EAAE;gBAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;gBACf,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,GAAG,CAAC;gBAElC,IAAI,CAAC,YAAY,EAAE;qBACd,IAAI,CAAC,KAAK,CAAC,EAAE;oBAEV,IAAI,CAAC,4FAAqB,CAAC,KAAK,CAAC,EAAE;wBAC/B,IAAI,CAAC,UAAU,EAAE,CAAC;wBAClB,sEAAW,CAAC,MAAM,EAAE,oDAAoD,CAAC,CAAC;wBAC1E,MAAM,IAAI,oEAAY,CAAC,kBAAkB,CAAC,CAAC;qBAC9C;oBACD,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC;gBAExC,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,MAAM,IAAI,oEAAY,CAAC,kBAAkB,CAAC,CAAC;gBAC/C,CAAC,CAAC;aACT;iBAAM;gBACH,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,oEAAU,CAAC,MAAM,EAAE,iBAAiB,oFAAiB,cAAc,0FAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,qFAAyB,CAAC,CAAC;gBAC1E,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBAEzB,MAAM,IAAI,oEAAY,CAAC,kBAAkB,CAAC,CAAC;aAC9C;YAED,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACxC,UAAU,IAAmB;YACzB,MAAM,MAAM,GAAG,2BAA2B,CAAC;YAC3C,IAAI,IAAI,EAAE;gBACN,IAAI,IAAI,CAAC,MAAM,EAAE;oBACb,+EAA+E;oBAC/E,qGAAqG;iBACxG;qBAAM;oBACH,sEAAW,CAAC,MAAM,EAAE,4BAA4B,IAAI,EAAE,CAAC,CAAC;iBAC3D;aACJ;iBAAM;gBACH,sEAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;aACtC;YAED,IAAI,CAAC,UAAU,EAAE,CAAC;YAClB,OAAO,IAAI,CAAC;QAChB,CAAC,EAED,UAAU,KAAiB;;YACvB,MAAM,MAAM,GAAG,0BAA0B,CAAC;YAE1C,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,EAAE;gBAEb,MAAM,GAAG,GAAG,iBAAK,CAAC,MAAM,0CAAE,GAAG,mCAAI,EAAE,CAAC;gBACpC,MAAM,MAAM,GAAG,uBAAK,CAAC,MAAM,0CAAE,MAAM,0CAAE,WAAW,EAAE,mCAAI,EAAE,CAAC;gBACzD,IAAI,KAAK,GAAG,iBAAK,CAAC,MAAM,0CAAE,OAAO,CAAC,WAAW,CAAC,mCAAI,sFAAqB,CAAC;gBACxE,IAAI,OAAO,GAAG,iBAAK,CAAC,MAAM,0CAAE,IAAI,mCAAI,EAAE,CAAC;gBACvC,IAAI,OAAO,GAAG,CAAC,KAAK,IAAI,oFAAiB,CAAC,CAAC,CAAC,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,KAAK,qBAAqB,oFAAiB,EAAE;gBAClI,IAAI,OAAO,GAAG,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,OAAO,EAAE,CAAC;gBAC9D,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;gBACxD,IAAI,OAAO,GAAG,GAAG,MAAM,IAAI,GAAG,OAAO,MAAM,IAAI,OAAO,IAAI,OAAO,EAAE,CAAC;gBAEpE,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;oBAEvB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;oBACpC,IAAI,KAAK,CAAC,QAAQ,EAAE;wBAChB,+CAA+C;wBAE/C,gCAAgC;wBAChC,IAAI,CAAC,KAAK,IAAI,oFAAiB,EAAE;4BAC7B,sEAAW,CAAC,MAAM,EAAE,8BAA8B,oFAAiB,EAAE,CAAC,CAAC;4BACvE,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,oFAAiB,CAAC;4BACtD,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,oFAAiB,CAAC;yBACxD;wBAED,QAAQ,MAAM,EAAE;4BAEZ,KAAK,GAAG,CAAC,CAAC;gCAEN,MAAM,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC;gCACrC,IAAI,CAAC,iBAAiB,EAAE;qCACnB,IAAI,CAAC,UAAU,QAAQ;oCACpB,mFAAmF;oCAEnF,OAAO;oCACP,IAAI,CAAC,QAAQ,IAAI,oFAAiB,EAAE;wCAChC,sEAAW,CAAC,MAAM,EAAE,0DAA0D,oFAAiB,EAAE,CAAC,CAAC;wCACnG,QAAQ,GAAG,oFAAiB,CAAC;qCAChC;oCACD,eAAe,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,QAAQ,CAAC;oCAChD,0DAAK,CAAC,eAAe,CAAC;yCACjB,IAAI,CAAC,IAAI,CAAC,EAAE;wCACT,IAAI,CAAC,UAAU,EAAE,CAAC;oCACtB,CAAC,CAAC;yCACD,KAAK,CAAC,KAAK,CAAC,EAAE;wCACX,IAAI,CAAC,UAAU,EAAE,CAAC;wCAClB,oEAAU,CAAC,MAAM,EAAE,SAAS,eAAe,CAAC,GAAG,gBAAgB,QAAQ,QAAQ,KAAK,EAAE,CAAC;wCACvF,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oCACjC,CAAC,CAAC,CAAC;gCACX,CAAC,CAAC;qCACD,KAAK,CAAC,UAAU,CAAC,EAAE;oCAChB,IAAI,CAAC,UAAU,EAAE,CAAC;oCAClB,6DAA6D;oCAC7D,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,yFAA2B,CAAC,CAAC;oCACrF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;oCACzB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;gCAClC,CAAC,CAAC,CAAC;6BAEV;4BACD,KAAK,GAAG,CAAC,CAAC;gCACN,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClB,oEAAU,CAAC,MAAM,EAAE,GAAG,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;gCAChD,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,yFAA2B,CAAC,CAAC;gCAChF,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gCACzB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;6BACjC;4BACD,KAAK,GAAG,CAAC,CAAC;gCACN,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClB,oEAAU,CAAC,MAAM,EAAE,KAAK,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;gCAClD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;6BAC5D;4BACD,KAAK,GAAG,CAAC,CAAC;gCACN,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClB,oEAAU,CAAC,MAAM,EAAE,KAAK,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;gCAClD,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,6EAAqB,CAAC,CAAC;gCAC1E,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gCACzB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;6BACjC;4BACD,KAAK,GAAG,CAAC,CAAC;gCACN,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClB,oEAAU,CAAC,MAAM,EAAE,KAAK,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;gCAClD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;6BAC5D;4BACD,KAAK,GAAG,CAAC;4BACT,KAAK,GAAG,CAAC,CAAC;gCACN,8DAA8D;gCAC9D,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClB,oEAAU,CAAC,MAAM,EAAE,GAAG,OAAO,6BAA6B,OAAO,EAAE,CAAC,CAAC;gCACrE,OAAO,OAAO,CAAC,MAAM,CAAC,EAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,QAAQ,CAAC,IAAI,EAAC,CAAC,CAAC;6BACpE;4BACD,KAAK,GAAG,CAAC,CAAC;gCACN,0FAA0F;gCAC1F,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClB,oEAAU,CAAC,MAAM,EAAE,GAAG,OAAO,qCAAqC,OAAO,EAAE,CAAC,CAAC;gCAC7E,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;6BAC5D;4BACD,yBAAyB;4BACzB,KAAK,GAAG,CAAC,CAAC;gCACN,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClB,oEAAU,CAAC,MAAM,EAAE,kBAAkB,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;gCAC/D,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;6BAC3D;4BACD,KAAK,GAAG,CAAC,CAAC;gCACN,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClB,oEAAU,CAAC,MAAM,EAAE,mBAAmB,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;gCAChE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;6BAC3D;4BAED,OAAO,CAAC,CAAC;gCACL,IAAI,CAAC,UAAU,EAAE,CAAC;gCAClB,sEAAW,CAAC,MAAM,EAAE,GAAG,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;gCACjD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;6BAC5D;yBACJ;qBACJ;yBAAM;wBACH,IAAI,CAAC,UAAU,EAAE,CAAC;wBAClB,IAAI,KAAK,CAAC,OAAO,EAAE;4BACf,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;4BAC5C,sEAAW,CAAC,MAAM,EAAE,gBAAgB,KAAK,CAAC,OAAO,MAAM,OAAO,EAAE,CAAC,CAAC;yBACrE;6BAAM;4BACH,gBAAgB;4BAChB,sEAAW,CAAC,MAAM,EAAE,4BAA4B,KAAK,CAAC,OAAO,MAAM,OAAO,EAAE,CAAC,CAAC;yBACjF;wBACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,MAAM,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;qBAC5D;iBACJ;qBAAM,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,gBAAgB,EAAE;oBACnD,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;iBACxD;qBAAM;oBACH,IAAI,CAAC,UAAU,EAAE,CAAC;oBAClB,sCAAsC;oBACtC,IAAI,UAAU,GAAG,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB,CAAC;oBAChF,IAAI,UAAU,EAAE;wBACZ,oEAAU,CAAC,MAAM,EAAE,cAAc,OAAO,EAAE,CAAC,CAAC;wBAC5C,IAAI,KAAK,GAAG,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,+BAA+B,CAAC,CAAC;wBACpE,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;wBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;qBAChC;yBAAM;wBACH,sEAAW,CAAC,MAAM,EAAE,oCAAoC,OAAO,EAAE,CAAC,CAAC;wBACnE,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC;qBACzD;iBACJ;aACJ;iBAAM;gBACH,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;oBAC5B,oEAAU,CAAC,MAAM,EAAE,eAAe,KAAK,CAAC,OAAO,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;iBACnF;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACxD;QACL,CAAC,CACJ,CAAC;IACN,CAAC;IAGD,mBAAmB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,aAAa,GAAG,oEAAY,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAE/C,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,MAA0B;YAC5E,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CACxC,UAAU,IAAmB;YACzB,MAAM,MAAM,GAAG,2BAA2B,CAAC;YAE3C,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;oBACd,sEAAW,CAAC,MAAM,EAAE,4BAA4B,IAAI,EAAE,CAAC,CAAC;iBAC3D;aACJ;iBAAM;gBACH,sEAAW,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;aACtC;YAED,OAAO,IAAI,CAAC;QAChB,CAAC,EAED,UAAU,KAAiB;YACvB,MAAM,MAAM,GAAG,0BAA0B,CAAC;YAE1C,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YAC5C,IAAI,CAAC,UAAU,EAAE;gBAEb,IAAI,KAAK,EAAE;oBAEP,IAAI,KAAK,CAAC,MAAM,EAAE;wBAEd,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;wBAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;wBACjD,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC;wBAClC,IAAI,WAAW,GAAG,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,OAAO,EAAE,CAAC;wBAClE,IAAI,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC;wBAC1D,IAAI,OAAO,GAAG,GAAG,MAAM,IAAI,GAAG,OAAO,MAAM,IAAI,WAAW,EAAE,CAAC;wBAC7D,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;wBAEpC,IAAI,KAAK,CAAC,QAAQ,EAAE;4BAChB,QAAQ,MAAM,EAAE;gCACZ,KAAK,GAAG;oCACJ,IAAI,MAAM,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;oCAC/B,IAAI,UAAU,GAAG,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;oCACjD,IAAI,UAAU,EAAE;wCACZ,sEAAsE;wCACtE,oEAAU,CAAC,MAAM,EAAE,GAAG,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;qCACnD;yCAAM;wCACH,sEAAW,CAAC,MAAM,EAAE,GAAG,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;qCACpD;oCACD,MAAM;gCAEV,KAAK,GAAG,CAAC;gCACT,KAAK,GAAG,CAAC;gCACT,KAAK,GAAG;oCACJ,oEAAU,CAAC,MAAM,EAAE,GAAG,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;oCAChD,MAAM;gCAEV;oCACI,sEAAW,CAAC,MAAM,EAAE,GAAG,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;oCACjD,MAAM;6BACb;yBACJ;6BAAM;4BACH,sEAAW,CAAC,MAAM,EAAE,gBAAgB,KAAK,CAAC,OAAO,MAAM,OAAO,QAAQ,OAAO,EAAE,CAAC,CAAC;yBACpF;qBACJ;yBAAM;wBACH,sEAAW,CAAC,MAAM,EAAE,cAAc,KAAK,EAAE,CAAC,CAAC;qBAC9C;iBACJ;qBAAM;oBACH,sEAAW,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;iBACnC;gBAED,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAChC;iBAAM;gBACH,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;oBAC5B,oEAAU,CAAC,MAAM,EAAE,eAAe,KAAK,CAAC,OAAO,QAAQ,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;iBAC1E;gBACD,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,4DAAO,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;aACtD;QAEL,CAAC,CACJ,CAAC;IAEN,CAAC;IAGD,aAAa,CAAC,KAAsB;QAChC,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;YACvC,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAEzC,SAAS;gBACL,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBACpC,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC;SAC9C;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAGD,cAAc,CAAC,KAAsB;QACjC,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,KAAK,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;YACvC,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YACzC,IAAI,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;YAEzC,UAAU;gBACN,MAAM,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBACpC,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBACtC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAC9B,QAAQ,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;oBACtC,QAAQ,CAAC,OAAO,CAAC,iBAAiB,CAAC,GAAG,CAAC,CAAC;oBACxC,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;SACxC;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAGD,WAAW,CAAC,KAAe;QACvB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;QAEvB,oEAAU,CAAC,cAAc,EAAE,kBAAkB,KAAK,EAAE,CAAC,CAAC;QACtD,0EAA0E;QAC1E,6EAAiB,EAAE,CAAC;QAGpB,IAAI,KAAK,YAAY,iEAAY,EAAE;YAC/B,IAAI,MAAM,GAAG,KAAqB,CAAC;YACnC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,UAAU,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;SACxD;aAAM;YACH,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,gFAAa,CAAC,CAAC;SAC1C;IAEL,CAAC;IAGD,aAAa,CAAC,QAAQ;QAClB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACrC,CAAC;IAGD,OAAO;QACH,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;gBACxB,mFAAoB,GAAG,IAAI,CAAC;aAC/B;SACJ;IACL,CAAC;IAGD,UAAU;QACN,IAAI,IAAI,CAAC,YAAY,IAAI,KAAK,EAAE;YAC5B,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,IAAI,IAAI,CAAC,YAAY,IAAI,CAAC,EAAE;gBACxB,mFAAoB,GAAG,KAAK,CAAC;gBAC7B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;aACzB;SACJ;IACL,CAAC;IAGM,QAAQ;QACX,IAAI,KAAK,GAAG,oFAAiB,CAAC;QAC9B,IAAI,QAAQ,GAAG,4FAAqB,CAAC,KAAK,CAAC,CAAC;QAC5C,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGM,YAAY;QACf,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,MAAM,MAAM,GAAG,oBAAoB,CAAC;QAEpC,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAEhD,IAAI,YAAY,GAAG,KAAK,CAAC;YACzB,IAAI,KAAK,GAAG,oFAAiB,CAAC;YAC9B,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE;gBACjB,IAAI,GAAG,GAAG,6CAAM,EAAE,CAAC;gBACnB,IAAI,WAAW,GAAG,mFAAoB,CAAC;gBACvC,IAAI,QAAQ,GAAG,sDAAe,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;gBACtD,IAAI,QAAQ,CAAC,MAAM,EAAE,GAAG,GAAG,EAAE;oBACzB,YAAY,GAAG,IAAI,CAAC;iBACvB;gBACD,sHAAsH;aACzH;YAED,IAAI,YAAY,EAAE;gBACd,iDAAiD;gBACjD,OAAO,CAAC,KAAK,CAAC;aACjB;iBAAM;gBACH,yDAAyD;gBAEzD,IAAI,CAAC,iBAAiB,EAAE;qBACnB,IAAI,CAAC,UAAU,QAAgB;oBAC5B,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACtB,CAAC,CAAC;qBACD,KAAK,CAAC,EAAE,CAAC,EAAE;oBACR,IAAI,GAAG,GAAG,IAAI,iEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,qFAAyB,CAAC,CAAC;oBACrE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM,CAAC,GAAG,CAAC;gBACf,CAAC,CAAC,CAAC;aACV;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAKY,iBAAiB;;YAC1B,OAAO,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC5C,CAAC;KAAA;IAEa,mBAAmB;;YAC7B,MAAM,IAAI,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;gBACtB,6DAA6D;gBAC7D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;gBAC1C,mDAAmD;aACtD;YACD,OAAO,IAAI,CAAC,cAAc,CAAC;QAC/B,CAAC;KAAA;IAGO,YAAY;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAChD,gGAAwB,EAAE;iBACrB,IAAI,CAAC,UAAU,QAAgB;gBAC5B,iGAAiG;gBACjG,OAAO,CAAC,QAAQ,CAAC,CAAC;gBAClB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC/B,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,CAAC;gBACZ,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC/B,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;;AA/dM,kBAAY,GAAG,KAAK,CAAC;AAoehC,iEAAe,IAAI,KAAK,EAAE,EAAC;;;;;;;;;;;;;AC1fW;AAE/B,MAAM,QAAQ;IAArB;QAEI,SAAI,GAAG,EAAE,CAAC;QACV,YAAO,GAAG,EAAE,CAAC;QACb,WAAM,GAAG,EAAE,CAAC;IAsEhB,CAAC;IApEG,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;IACnC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,OAAc,EAAE,OAAc,EAAE,cAAsB;QAEnE,IAAI,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QACxB,uDAAuD;QAEvD,IAAI,MAAM,IAAI,MAAM,EAAE;YAClB,IAAI,MAAM,GAAU,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC;YAEtE,+BAA+B;YAC/B,6HAA6H;YAC7H,KAAK;YACL,2EAA2E;SAC9E;aAAM,IAAI,MAAM,EAAE;YACf,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;SACzB;aAAM,IAAI,MAAM,EAAE;YACf,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;SAC5B;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,OAAc,EAAE,OAAc,EAAE,cAAsB;QAEvE,IAAI,MAAM,GAAG,IAAI,QAAQ,EAAE,CAAC;QAC5B,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QACxB,IAAI,MAAM,GAAG,MAAM,GAAG,CAAC,CAAC;QACxB,uDAAuD;QAEvD,IAAI,MAAM,IAAI,MAAM,EAAE;YAClB,IAAI,MAAM,GAAU,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACvE,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACtE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,cAAc,CAAC,CAAC;SACzE;aAAM,IAAI,MAAM,EAAE;YACf,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;SACzB;aAAM,IAAI,MAAM,EAAE;YACf,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;SAC5B;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,KAAK,CAAC,MAAe;QACjB,IAAI,OAAO,GAAG,QAAQ,IAAI,CAAC,IAAI,CAAC,MAAM,aAAa,IAAI,CAAC,OAAO,CAAC,MAAM,YAAY,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACvG,kFAAiB,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACvC,CAAC;CAEJ;AAED,gCAAgC;;;;;;;;;;;;;;;;;;;AC9EQ;AACM;AACZ;AACQ;AACU;AACF;AAE3C,MAAM,KAAK;IACd,MAAM,KAAK,cAAc;QACrB,OAAO,oFAAoB,IAAI,yEAAgB,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,oFAAoB,IAAI,yEAAgB,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,oFAAoB,IAAI,2EAAiB,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAG,cAAqB;QACtC,IAAI,sFAAqB,IAAI,KAAK,CAAC,cAAc,EAAE;YAC/C,OAAO,CAAC,GAAG,CAAC,GAAG,cAAc,CAAC,CAAC;SAClC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAG,cAAqB;QACvC,IAAI,sFAAqB,IAAI,KAAK,CAAC,cAAc,EAAE;YAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,CAAC;SACnC;IACL,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,GAAG,cAAqB;QACxC,IAAI,sFAAqB,IAAI,KAAK,CAAC,aAAa,EAAE;YAC9C,OAAO,CAAC,KAAK,CAAC,GAAG,cAAc,CAAC,CAAC;SACpC;IACL,CAAC;IAED,MAAM,CAAC,GAAG,CAAC,MAAc,EAAE,OAAe;QACtC,IAAI,sFAAqB;YAAE,KAAK,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC7D,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAc,EAAE,OAAe;QACvC,IAAI,sFAAqB;YAAE,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC9D,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAc,EAAE,OAAe;QACxC,IAAI,sFAAqB;YAAE,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,yEAAyE;IACzE,oDAAoD;IACpD,MAAM,CAAC,oBAAoB,CAAC,GAAU,EAAE,GAAG,gBAAgB;QAEvD,IAAI,SAAS,GAAG,cAAc,GAAG,CAAC,OAAO;;;MAG3C,GAAG,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC;QAEhB,KAAK,IAAI,GAAG,IAAI,gBAAgB,EAAE;YAC9B,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI;gBACA,IAAI,CAAC,GAAG,CAAC,KAAK;oBAAE,GAAG,CAAC,KAAK,GAAG,eAAe,CAAC;gBAC5C,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAAE,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;gBAC9E,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;aAClC;YAAC,OAAO,CAAC,EAAE;gBACR,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC;aACnB;YACD,SAAS,IAAI;;QAEjB,GAAG,CAAC,KAAK,IAAI,EAAE;QACf,GAAG,EAAE,CAAC;SACL;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAEO,MAAM,CAAC,MAAM,CAAC,MAAc,EAAE,OAAe,EAAE,QAAgB;QAEnE,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAEhC,IAAI,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,oFAAiB,CAAC,MAAM,CAAC,EAAE;YAC5B,MAAM,GAAG,sFAAqB,CAAC;SAClC;QAED,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QACzB,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAC3B,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACvB,MAAM,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QACjC,MAAM,CAAC,GAAG,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC5B,MAAM,CAAC,OAAO,GAAG,0FAAuB,CAAC;QACzC,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;QAE9B,IAAI,GAAG,GAAG,GAAG,kFAAmB,iBAAiB,CAAC;QAElD,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;aACrD,KAAK,CAAC,KAAK,CAAC,EAAE;YACX,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE;gBACvC,KAAK,CAAC,YAAY,CAAC,cAAc,EAAE,kBAAkB,GAAG,gBAAgB,oFAAiB,cAAc,OAAO,QAAQ,KAAK,CAAC,OAAO,OAAO,CAAC,CAAC;aAC/I;QACL,CAAC,CAAC,CAAC;IAEX,CAAC;CACJ;AAGM,MAAM,YAAY;IAUrB,MAAM;;QACF,IAAI,IAAI,GAAG;YACP,MAAM,EAAE,UAAI,CAAC,MAAM,mCAAI,sFAAqB;YAC5C,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,UAAU,EAAE,IAAI,CAAC,OAAO;YACxB,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,MAAM,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;ACvIwC;AACgB;AACL;AACE;AACR;AAYvC,MAAM,eAAe;IA0BxB,MAAM,CAAC,QAAQ,CAAC,IAAU;QACtB,IAAI,IAAI,GAAoB,IAAI,CAAC;QACjC,IAAI,IAAI,EAAE;YAEN,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;YAE7B,uCAAuC;YAEvC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;gBAClB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpB,QAAQ,GAAG,EAAE;oBACT,KAAK,QAAQ;wBACT,IAAI,MAAM,GAAG,6CAAqB,CAAC,GAAG,CAAC,CAAC;wBACxC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;wBACrB,sCAAiB,GAAG,MAAM,CAAC;wBAC3B,MAAM;oBAEV,KAAK,KAAK;wBACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;wBACf,MAAM;oBACV,KAAK,KAAK;wBACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;wBACf,MAAM;oBAEV,KAAK,KAAK;wBACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;wBACf,oCAAgB,GAAG,GAAG,CAAC;wBACvB,MAAM;oBACV,KAAK,KAAK;wBACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;wBACf,sCAAiB,GAAG,GAAG,CAAC;wBACxB,4CAAkB,GAAG,GAAG,CAAC;wBACzB,MAAM;oBACV,KAAK,IAAI;wBACL,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;wBACd,0CAAmB,GAAG,GAAG,CAAC;wBAC1B,gDAAoB,GAAG,GAAG,CAAC;wBAC3B,kCAAkC;wBAClC,MAAM;oBACV,KAAK,IAAI;wBACL,IAAI,CAAC,EAAE,GAAG,GAAG,CAAC;wBACd,0CAAmB,GAAG,GAAG,CAAC;wBAC1B,gDAAoB,GAAG,GAAG,CAAC;oBAC/B,wCAAwC;oBAExC,KAAK,KAAK;wBACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;wBACf,oCAAgB,GAAG,GAAG,CAAC;wBACvB,MAAM;oBACV,KAAK,KAAK;wBACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;wBACf,4CAAoB,GAAG,GAAG,CAAC;wBAC3B,kDAAqB,GAAG,GAAG,CAAC;wBAC5B,MAAM;oBAEV,KAAK,MAAM;wBACP,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;wBAChB,MAAM;oBAEV,KAAK,OAAO;wBACR,0CAAmB,GAAG,sDAAuB,CAAC,GAAG,CAAC,CAAC;wBACnD,wDAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAC/C,mDAAmD;wBACnD,MAAM;oBAEV,KAAK,QAAQ;wBACT,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;wBAClB,sCAAiB,GAAG,GAAG,CAAC;wBACxB,MAAM;oBACV,KAAK,KAAK;wBACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;wBACf,4CAAoB,GAAG,GAAG,CAAC;wBAC3B,kDAAqB,GAAG,GAAG,CAAC;wBAC5B,MAAM;oBACV,KAAK,KAAK,CAAC;oBACX,KAAK,QAAQ;wBACT,iBAAiB;wBACjB,0CAAmB,GAAG,GAAG,CAAC;wBAC1B,gDAAoB,GAAG,GAAG,CAAC;wBAC3B,MAAM;oBACV,KAAK,KAAK;wBACN,iBAAiB;wBACjB,oCAAgB,GAAG,GAAG,CAAC;wBACvB,MAAM;oBACV,KAAK,IAAI;wBACL,gBAAgB;wBAChB,wCAAkB,GAAG,GAAG,CAAC;wBACzB,MAAM;oBACV,KAAK,MAAM;wBACP,kBAAkB;wBAClB,wCAAkB,GAAG,GAAG,CAAC;wBACzB,MAAM;oBACV,KAAK,MAAM;wBACP,kBAAkB;wBAClB,4CAAoB,GAAG,GAAG,CAAC;wBAC3B,MAAM;oBACV,KAAK,IAAI;wBACL,gBAAgB;wBAChB,kDAAuB,GAAG,GAAG,CAAC;wBAC9B,MAAM;oBACV,KAAK,KAAK,CAAC;oBACX,KAAK,SAAS;wBACV,qBAAqB;wBACrB,uDAAoB,GAAG,GAAG,CAAC;wBAC3B,wDAAwB,GAAG,GAAG,CAAC;wBAC/B,MAAM;oBACV,KAAK,OAAO;wBACR,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;wBACjB,oCAAgB,GAAG,GAAG,CAAC;wBACvB,MAAM;oBACV,KAAK,OAAO;wBACR,mBAAmB;wBACnB,4CAAoB,GAAG,GAAG,CAAC;wBAC3B,MAAM;oBACV,KAAK,MAAM;wBACP,kBAAkB;wBAClB,kCAAe,GAAG,GAAG,CAAC;wBACtB,MAAM;oBACV,KAAK,UAAU;wBACX,sBAAsB;wBACtB,8CAAqB,GAAG,GAAG,CAAC;wBAC5B,MAAM;oBAEV,KAAK,OAAO,CAAC;oBACb,KAAK,OAAO;wBACR,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC;wBACjB,sCAAiB,GAAG,GAAG,IAAI,CAAC,CAAC;wBAC7B,sCAAsC;wBACtC,MAAM;oBAEV,KAAK,YAAY;wBACb,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;wBACtB,4DAA0B,GAAG,GAAG,CAAC;wBACjC,MAAM;oBAEV,KAAK,MAAM,CAAC;oBACZ,KAAK,KAAK;wBACN,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC;wBAChB,kCAAe,GAAG,GAAG,CAAC;wBACtB,MAAM;oBAEV,KAAK,KAAK;wBACN,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;wBACf,MAAM;oBAEV;wBACI,iDAAiD;wBACjD,MAAM;iBACb;gBAED,4BAA4B;gBAC5B,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;oBAC/B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;oBACd,kCAAe,GAAG,CAAC,CAAC;iBACvB;gBAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAClC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC;iBAClB;aAEJ;SACJ;QACD,OAAO,IAAI;IACf,CAAC;CAEJ;;;;;AC/MkC;AAE5B,MAAM,SAAS;IAAtB;QACI,mBAAc,GAAY,KAAK,CAAC;QAgBhC,sBAAiB,GAAY,KAAK,CAAC;QAEnC,kBAAa,GAAY,KAAK,CAAC;IA+GnC,CAAC;IA1GG,MAAM,CAAC,QAAQ,CAAC,IAAI;QAChB,IAAI,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;QAE9B,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;gBAClB,QAAQ,GAAG,CAAC,WAAW,EAAE,EAAE;oBACvB,KAAK,OAAO;wBACR,oCAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBACxB,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC1B,MAAM;oBACV,KAAK,QAAQ;wBACT,sCAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBACzB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC3B,MAAM;oBACV,KAAK,UAAU;wBACX,0CAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC3B,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC7B,MAAM;oBACV,KAAK,UAAU;wBACX,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC7B,MAAM;oBACV,KAAK,QAAQ;wBACT,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC3B,MAAM;oBACV,KAAK,MAAM;wBACP,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBACzB,MAAM;oBACV,KAAK,OAAO;wBACR,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC1B,MAAM;oBACV,KAAK,SAAS;wBACV,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC5B,MAAM;oBACV,KAAK,WAAW;wBACZ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC9B,MAAM;oBAEV,KAAK,QAAQ;wBACT,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC3B,MAAM;oBAEV,KAAK,oBAAoB;wBACrB,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBACvC,MAAM;oBAEV,KAAK,mBAAmB;wBACpB,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBACtC,MAAM;oBAEV,KAAK,WAAW;wBACZ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC9B,MAAM;oBAEV,KAAK,eAAe;wBAChB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAClC,MAAM;oBAEV,KAAK,WAAW;wBACZ,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC9B,MAAM;oBAEV,KAAK,UAAU;wBACX,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAC7B,MAAM;oBAEV,KAAK,eAAe;wBAChB,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;wBAClC,MAAM;iBACb;aACJ;SACJ;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM;QACF,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACpB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5B;QAED,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;SAC5B;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,EAAE;YACtB,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACpB,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;SAChC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;;;;;;;;;;;;;;;;;;ACpIuC;AACY;AACmB;AACjC;AACQ;AACF;AACE;AACO;AACf;AAEV;AACM;AACgB;AAEI;AAC2D;AAG1G,MAAM,cAAc;IAGvB,MAAM,CAAC,aAAa,CAAC,QAAgB;QACjC,wBAAwB;QACxB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC3C,IAAI,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,OAAO,GAAG,8CAAmB,CAAC;YAClC,IAAI,GAAG,GAAG,GAAG,OAAO,4BAA4B,OAAO,EAAE,CAAC;YAC1D,mBAAmB;YAEnB,oCAAW,EAAE,CAAC;YACd,wDACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,0CAAc,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACxB,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACX,0CAAc,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,QAAgB,EAAE,QAAgB;QAC3C,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAkB,UAAU,OAAO,EAAE,MAAM;YACzD,IAAI,KAAK,GAAG,IAAI,qBAAM,EAAE,CAAC;YACzB,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC1B,KAAK,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC1B,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC7B,MAAM,GAAG,GAAG,kDAAqB;gBAC7B,CAAC,CAAC,kDAAqB;gBACvB,CAAC,CAAC,kDAAqB,CAAC;YAE5B,IAAI,GAAG,GAAG,GAAG,8CAAmB,sBAAsB,GAAG,EAAE,CAAC;YAE5D,oCAAW,EAAE,CAAC;YACd,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBAER,0CAAc,EAAE,CAAC;gBACjB,MAAM,IAAI,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;gBAC7B,IAAI,aAAa,GAAoB,IAAI,CAAC;gBAC1C,IAAI,IAAI,IAAI,IAAI,EAAE;oBACd,aAAa,GAAG,wBAAwB,CAAC,IAAI,CAAC,CAAC;iBAClD;gBACD,OAAO,CAAC,aAAa,CAAC,CAAC;YAC3B,CAAC,CAAC;iBACD,KAAK,CAAC,KAAK,CAAC,EAAE;gBACX,0CAAc,EAAE,CAAC;gBACjB,IAAI,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC,QAAQ,IAAK,KAAK,CAAC,QAAQ,CAAC,IAAqB,CAAC;gBAC/E,IAAI,OAAO,EAAE;oBACT,MAAM,CAAC,OAAO,CAAC,CAAC;iBACnB;qBAAM;oBACH,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjB;YACL,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE,CAAC,0CAAc,EAAE,CAAC;QAExC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,oBAAoB;QACvB,MAAM,MAAM,GAAG,qCAAqC,CAAC;QAErD,OAAO,IAAI,OAAO,CAAY,UAAU,OAAO,EAAE,MAAM;YACnD,0BAAS,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;YAC9D,IAAI,GAAG,GAAG,GAAG,8CAAmB,kCAAkC,CAAC;YACnE,0DACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,8DAA2B,EAAC,CAAC;iBACvD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;oBACpB,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,IAAI,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;oBACvC,oCAAa,GAAG,IAAI,CAAC;oBACrB,OAAO,CAAC,OAAO,CAAC,CAAC;iBACpB;qBAAM;oBACH,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,IAAI,KAAK,YAAY,uBAAO,EAAE;oBAC1B,4CAAkB,CAAC,eAAe,CAAC,CAAC;iBACvC;qBAAM;oBACH,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC7D,4BAAU,CACN,MAAM,EACN,SAAS,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CACtC,CAAC;oBACF,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjB;YACL,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,eAAe;QAClB,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,OAAO,IAAI,OAAO,CAA+B,UAAU,OAAO,EAAE,MAAM;YACtE,0BAAS,CAAC,MAAM,EAAE,2CAA2C,CAAC,CAAC;YAC/D,IAAI,GAAG,GAAG,GAAG,8CAAmB,6BAA6B,CAAC;YAC9D,0DACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,wDAAwB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,uBAAuB,GAAG,IAAoC,CAAC;gBACnE,OAAO,CAAC,uBAAuB,CAAC,CAAC;YACrC,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,IAAI,KAAK,YAAY,uBAAO,EAAE;oBAC1B,4CAAkB,CAAC,eAAe,CAAC,CAAC;iBACvC;qBAAM;oBACH,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;oBAC7D,4BAAU,CACN,MAAM,EACN,SAAS,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CACtC,CAAC;oBACF,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjB;YACL,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,MAAc,EAAE,QAAgB,EAAE,KAAa;QACrE,MAAM,MAAM,GAAG,mCAAmC,CAAC;QAEnD,OAAO,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAE9C,IAAI,sCAAY,EAAE,EAAE;gBAEhB,IAAI,IAAI,GAAG;oBACP,MAAM,EAAE,MAAM;oBACd,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,KAAK;oBACZ,MAAM,EAAE,oDAAsB;iBACjC,CAAC;gBACF,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACnC,0BAAS,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,CAAC;gBACtD,IAAI,GAAG,GAAG,GAAG,8CAAmB,8BAA8B,CAAC;gBAC/D,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACvD;;;;;;;;;;;;;;;;;;;;;;;;;;;yBA2BS;aACZ;iBAAM;gBACH,4BAAU,CAAC,MAAM,EAAE,iBAAiB,0CAAiB,cAAc,gDAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,qDAAyB,CAAC,CAAC;gBAC1E,4CAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QACL,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,MAAc,EAAE,SAAiB,EAAE,QAAgB,EAAE,WAAmB,EAAE,YAAoB,EAAE,SAAiB,EACjH,UAAkB,EAAE,YAAoB,EAAE,UAAkB;QACpF,MAAM,MAAM,GAAG,qCAAqC,CAAC;QAErD,OAAO,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAE9C,IAAI,sCAAY,EAAE,EAAE;gBAEhB,IAAI,IAAI,GAAG;oBACP,QAAQ,EAAE,MAAM;oBAChB,SAAS;oBACT,QAAQ;oBACR,WAAW;oBACX,aAAa,EAAE,YAAY;oBAC3B,UAAU,EAAE,SAAS;oBACrB,UAAU;oBACV,YAAY;oBACZ,UAAU;iBACb,CAAC;gBACF,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBACrC,0BAAS,CAAC,MAAM,EAAE,wBAAwB,GAAG,OAAO,CAAC,CAAC;gBACtD,IAAI,GAAG,GAAG,GAAG,8CAAmB,gCAAgC,CAAC;gBAEjE,IAAI,CAAC,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;aAE1D;iBAAM;gBACH,4BAAU,CAAC,MAAM,EAAE,iBAAiB,0CAAiB,cAAc,gDAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,qDAAyB,CAAC,CAAC;gBAC1E,4CAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QACL,CAAC,CAAC,CAAC;IAEP,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAW,EAAE,OAAe,EAAE,OAAO,EAAE,MAAM;QACnE,MAAM,MAAM,GAAG,gCAAgC;QAC/C,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,8DAA2B,EAAC,CAAC;aAC1D,IAAI,CAAC,GAAG,CAAC,EAAE;YACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,gDAAgD;YAChD,IAAI,OAAO,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;YACvC,oCAAa,GAAG,IAAI,CAAC;YACrB,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;YACb,IAAI,KAAK,YAAY,uBAAO,EAAE;gBAC1B,4CAAkB,CAAC,eAAe,CAAC,CAAC;gBACpC,MAAM,CAAC,KAAK,CAAC,CAAC;aACjB;iBAAM;gBACH,8BAA8B;gBAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7D,IAAI,MAAM,KAAK,GAAG,EAAE;oBAChB,IAAI,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;oBAC9B,OAAO,CAAC,OAAO,CAAC,CAAC;iBACpB;qBAAM;oBACH,4BAAU,CACN,MAAM,EACN,SAAS,MAAM,KAAK,KAAK,CAAC,OAAO,KAAK,OAAO,EAAE,CAClD,CAAC;oBACF,MAAM,CAAC,KAAK,CAAC,CAAC;iBACjB;aACJ;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAED,MAAM,CAAC,yBAAyB,CAC5B,eAAuB,EACvB,IAAY,EACZ,MAAc,EACd,KAAa,EACb,OAAe,EACf,MAAc,EACd,YAAqB,EACrB,cAAuB,EACvB,YAAoB,EAAE;QAGtB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,IAAI,GAAG;gBACP,QAAQ,EAAE,0CAAgB;gBAC1B,MAAM,EAAE,sCAAc;gBACtB,eAAe,EAAE,eAAe;gBAChC,IAAI,EAAE,IAAI;gBACV,MAAM,EAAE,MAAM;gBACd,KAAK,EAAE,KAAK;gBACZ,OAAO,EAAE,OAAO;gBAChB,MAAM,EAAE,MAAM;gBACd,SAAS,EAAE,IAAI;gBACf,YAAY,EAAE,YAAY;gBAC1B,mBAAmB,EAAE,cAAc;gBACnC,gBAAgB,EAAE,SAAS;aAC9B,CAAC;YAEF,qCAAqC;YACrC,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;gBAChF,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,OAAO,EAAE;gBAC5B,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;gBAEnC,IAAI,GAAG,GAAG,GAAG,8CAAmB,+BAA+B,CAAC;gBAEhE,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,8DAA2B,EAAC,CAAC;qBAC1D,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,GAAG,GAAG,IAAI,uBAAO,CAAC,GAAG,EAAE,KAAK,EAAE,8BAA8B,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAC1F,MAAM,CAAC,GAAG,CAAC,CAAC;aACf;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,kBAAkB;QACrB,MAAM,MAAM,GAAG,mCAAmC,CAAC;QAEnD,OAAO,IAAI,OAAO,CAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC1D,IAAI,sCAAY,EAAE,EAAE;gBAChB,0BAAS,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;gBAClD,IAAI,GAAG,GAAG,GAAG,8CAAmB,6BAA6B,CAAC;gBAC9D,0DACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,8DAA2B,EAAC,CAAC;qBACvD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,MAAM,IAAI,GAAgC,IAAI;oBAC9C,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;wBACjB,IAAI,QAAQ,GAAG,IAAI,0BAAS,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;wBAC/C,0CAAgB,GAAG,CAAC,QAAQ,EAAE,GAAG,0CAAgB,CAAC,CAAC;wBACnD,OAAO,CAAC,kEAA0B,CAAC,CAAC;qBACvC;yBAAM;wBACH,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;qBAC3B;gBAEL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,IAAI,KAAK,YAAY,uBAAO,EAAE;wBAC1B,4CAAkB,CAAC,eAAe,CAAC,CAAC;qBACvC;yBAAM;wBACH,8BAA8B;wBAC9B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;wBAC7D,4BAAU,CACN,MAAM,EACN,SAAS,MAAM,KAAK,KAAK,CAAC,OAAO,EAAE,CACtC,CAAC;qBAEL;oBACD,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,4BAAU,CAAC,MAAM,EAAE,iBAAiB,0CAAiB,cAAc,gDAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,qDAAyB,CAAC,CAAC;gBAC1E,4CAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,QAAgB,EAAE,MAAc,EAAE,QAAgB,EAAE,aAAsB,KAAK;QACrG,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,8CAAmB,CAAC;YAClC,IAAI,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,OAAO,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC3C,IAAI,GAAG,GAAG,GAAG,OAAO,wCAAwC,OAAO,WAAW,MAAM,aAAa,OAAO,GAAG,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YAE1I,MAAM,MAAM,GAAG,oDAAsB,CAAC;YAEtC,0DACS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,oDAAoD;gBACpD,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,4DAA4D;gBAC5D,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7D,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC3D,QAAQ,MAAM,EAAE;oBACZ,KAAK,GAAG,CAAC,CAAC;wBACN,OAAO,CAAC,KAAK,CAAC,CAAC;wBACf,MAAM;qBACT;oBACD,KAAK,GAAG,CAAC,CAAC;wBACN,gEAA2B,GAAG,yBAAyB,CAAC;wBACxD,8DAA0B,GAAG,SAAS,GAAG,QAAQ,CAAC;wBAClD,8DAA0B,GAAG,OAAO,CAAC;wBACrC,8DAA0B,GAAG,IAAI,CAAC;wBAClC,MAAM;qBACT;oBACD,OAAO,CAAC,CAAC;wBACL,gEAA2B,GAAG,oCAAoC,CAAC;wBACnE,8DAA0B,GAAG,6GAA6G,CAAC;wBAC3I,8DAA0B,GAAG,OAAO,CAAC;wBACrC,8DAA0B,GAAG,IAAI,CAAC;wBAClC,MAAM;qBACT;iBACJ;gBAED,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,KAAa;QAClC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,KAAK,IAAI,kDAAqB,CAAC,KAAK,CAAC,EAAE;gBACvC,kCAAkC;gBAClC,oEAAoE;gBACpE,IAAI,GAAG,GAAG,GAAG,8CAAmB,qCAAqC,KAAK,EAAE,CAAC;gBAE7E,mFAAmF;gBACnF,0DACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;qBAClD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,KAAK,CAAC,EAAE;oBACX,qBAAqB;oBACrB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,0CAAiB,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;aACvD;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,SAAS;QACZ,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAE1C,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAEhD,IAAI,KAAK,GAAG,IAAI,qBAAM,EAAE,CAAC;YACzB,KAAK,CAAC,QAAQ,GAAG,0CAAgB,CAAC;YAClC,KAAK,CAAC,QAAQ,GAAG,gDAAoB,CAAC;YACtC,KAAK,CAAC,SAAS,GAAG,4CAAiB,CAAC;YAEpC,0CAA0C;YAC1C,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,KAAK,WAAW,EAAE;gBAElD,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,GAAG,GAAG,GAAG,8CAAmB,gBAAgB,CAAC;gBAEjD,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;qBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,wCAAgB,CAAC,gBAAgB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBAC7C,IAAI,QAAQ,GAAG,GAAG,CAAC,IAAc,CAAC;oBAClC,oCAAa,GAAG,QAAQ,CAAC;oBACzB,0CAAiB,GAAG,QAAQ,CAAC;oBAC7B,gDAAmB,GAAG,gBAAM,EAAE,CAAC,OAAO,EAAE,CAAC;oBACzC,0BAAS,CAAC,MAAM,EAAE,YAAY,QAAQ,EAAE,CAAC;oBAEzC,uDAAuD;oBACvD,qJAAqJ;oBACrJ,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACtB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBAC1C,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,IAAG,aAAH,GAAG,uBAAH,GAAG,CAAE,OAAO,MAAK,qCAAqC,EAAE;wBACxD,4BAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,GAAG,CAAC,MAAM,cAAc,WAAW,gBAAgB,OAAO,EAAE,CAAC,CAAC;qBAC5G;yBAAM;wBACH,4BAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,GAAG,CAAC,MAAM,cAAc,WAAW,gBAAgB,OAAO,EAAE,CAAC,CAAC;qBAC5G;oBACD,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,4BAAU,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;gBAC5C,MAAM,CAAC,IAAI,uBAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;aACnC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,GAAW,EAAE,UAAkB,EAAE,WAAmB;QAC3E,MAAM,MAAM,GAAG,oCAAoC,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,IAAI,OAAO,GAAG,EAAC,GAAG,EAAE,UAAU,EAAE,WAAW,EAAC,CAAC;YAC7C,0DACS,CAAC,GAAG,8CAAmB,wBAAwB,EAAE,OAAO,CAAC;iBAC7D,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,oBAAoB,CAAC,GAAW,EAAE,KAAa;QAClD,MAAM,MAAM,GAAG,qCAAqC,CAAC;QACrD,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,GAAG,GAAG,GAAG,8CAAmB,iCAAiC,GAAG,eAAe,KAAK,EAAE,CAAC;QAC3F,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnC,wDACQ,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;gBACnC,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;QACV,CAAC,CAAC;IACN,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,GAAG,EAAE,MAAc;QACvC,IAAI,GAAG,EAAE;YACL,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAClC,IAAI,GAAG,CAAC,SAAS,IAAI,KAAK,EAAE;gBACxB,IAAI,GAAG,CAAC,OAAO,KAAK,qCAAqC,EAAE;oBACvD,4BAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iBAC/B;qBAAM;oBACH,8BAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iBAChC;aACJ;SACJ;aAAM;YACH,8BAAW,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;SACxC;IACL,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW,EAAE,KAAa;QACzC,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAE5C,IAAI,KAAK,GAAG,EAAgB,CAAC;QAC7B,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACnB,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACpB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAEnC,IAAI,GAAG,IAAI,GAAG,KAAK,kDAAqB,EAAE;gBACtC,yFAAyF;gBACzF,0DACS,CAAC,GAAG,8CAAmB,sBAAsB,EAAE,KAAK,CAAC;qBACzD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;wBACvB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAClC,8BAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,WAAW,KAAK,QAAQ,OAAO,EAAE,CAAC,CAAC;qBAC/E;oBACD,MAAM,EAAE,CAAC;gBACb,CAAC,CAAC;aAET;iBAAM;gBACH,4BAAU,CAAC,MAAM,EAAE,eAAe,GAAG,EAAE,CAAC,CAAC;gBACzC,IAAI,MAAM,GAAG,IAAI,uBAAO,CAAC,GAAG,EAAE,IAAI,EAAE,oBAAoB,CAAC,CAAC;gBAC1D,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QACL,CAAC,CAAC;IACN,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;;;AC/iBD,IAAY,YAYX;AAZD,WAAY,YAAY;IACpB,+CAAQ;IACR,yDAAa;IACb,6DAAe;IACf,6DAAe;IACf,+DAAgB;IAChB,2DAAc;IACd,6EAAuB;IACvB,+DAAgB;IAChB,mFAA0B;IAC1B,qFAA2B;IAC3B,4EAAuB;AAC3B,CAAC,EAZW,YAAY,KAAZ,YAAY,QAYvB;;;;;;;;;AClBuC;AAIM;AACZ;AACO;AACY;AAC+C;AAC9D;AAC+C;AACjC;AAM7C,MAAM,oBAAoB;IAE7B,MAAM,CAAC,mBAAmB,CAAC,KAAuB;QAC9C,OAAO,IAAI,OAAO,CAAoB,UAAU,OAAO,EAAE,MAAM;YAC3D,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,GAAG,GAAG,GAAG,8CAAmB,8BAA8B,CAAC;YAE/D,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,8DAA2B,EAAC,CAAC;iBAC1D,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,OAAO,CAAoB,IAAI,CAAC,CAAC;YACrC,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACtB,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,UAAkB;QACpC,OAAO,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI,GAAG,GAAG,GAAG,8CAAmB,sCAAsC,UAAU,EAAE,CAAC;YACnF,wDACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,OAAO,CAAiB,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACtB,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,UAAkB;QACjC,OAAO,IAAI,OAAO,CAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACnD,IAAI,GAAG,GAAG,GAAG,8CAAmB,mCAAmC,UAAU,EAAE,CAAC;YAChF,wDACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,OAAO,CAAiB,IAAI,CAAC,CAAC;YAClC,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;gBACtB,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,aAA4B;QACnD,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACrC,OAAO,IAAI,OAAO,CAAO,UAAU,OAAO,EAAE,MAAM;YAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;YAC5C,IAAI,GAAG,GAAG,GAAG,8CAAmB,8BAA8B,CAAC;YAC/D,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;iBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAA8B,GAAG,CAAC,IAAI,CAAC;gBACjD,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,SAAS,IAAI,IAAI,CAAC,KAAK,IAAI,iBAAiB,CAAC,EAAE;oBAC7F,OAAO,EAAE,CAAC;iBACb;qBAAM;oBACH,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACxC,IAAI,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;oBACjE,8BAAW,CAAC,MAAM,EAAE,WAAW,GAAG,CAAC,MAAM,YAAY,OAAO,cAAc,QAAQ,kBAAkB,OAAO,EAAE,CAAC,CAAC;oBAC/G,MAAM,CAAC,IAAI,CAAC,CAAC;iBAChB;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;;gBACtB,MAAM,QAAQ,GAAG,iBAAK,CAAC,KAAK,0CAAE,QAAQ,0CAAE,IAAI,CAAC;gBAC7C,MAAM,OAAO,GAAG,QAAQ,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;gBAC/E,8BAAW,CAAC,MAAM,EAAE,WAAW,KAAK,CAAC,MAAM,YAAY,OAAO,eAAe,QAAQ,kBAAkB,OAAO,EAAE,CAAC,CAAC;gBAClH,MAAM,CAAC,QAAQ,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,iBAAiB;QACpB,MAAM,MAAM,GAAG,iCAAiC,CAAC;QACjD,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAiB,UAAU,OAAO,EAAE,MAAM;YAExD,IAAI,sCAAY,EAAE,EAAE;gBAEhB,IAAI,GAAG,GAAG,GAAG,8CAAmB,4BAA4B,CAAC;gBAC7D,wDACQ,CAAC,GAAG,CAAC;qBACR,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;wBACpB,OAAO,CAAC,IAAI,CAAC,CAAC;qBACjB;yBAAM;wBACH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACtB,MAAM,UAAU,GAAmB,IAAI,CAAC;wBACxC,UAAU,CAAC,OAAO,GAAG,iDAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACxD,IAAI,UAAU,CAAC,UAAU,EAAE;4BACvB,gEAA8B,GAAG,IAAI,CAAC;yBACzC;6BACI,IAAI,kDAAuB,EAAE;4BAC9B,4DAA4B,EAAE,CAAC;yBAClC;wBACD,OAAO,CAAC,UAAU,CAAC,CAAC;qBACvB;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,4BAAU,CAAC,MAAM,EAAE,iBAAiB,0CAAiB,cAAc,gDAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,qDAAyB,CAAC,CAAC;gBAC1E,4CAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,oBAAoB;QACvB,OAAO,IAAI,OAAO,CAAiB,UAAU,OAAO,EAAE,MAAM;YACxD,IAAI,GAAG,GAAG,GAAG,8CAAmB,+BAA+B,CAAC;YAChE,wDACQ,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;oBACpB,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM;oBACH,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBAEtB,IAAI,YAAY,GAAG,IAAsB,CAAC;oBAC1C,kDAAuB,GAAG,YAAY,CAAC,SAAS,CAAC,KAAK,CAAC;oBACvD,YAAY,CAAC,OAAO,GAAG,iDAAoB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;oBAC1D,OAAO,CAAC,YAAY,CAAC,CAAC;iBACzB;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,WAAmB,EAAE,eAAuB;QAC3D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAoB,UAAU,OAAO,EAAE,MAAM;YAE3D,IAAI,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAC/C,IAAI,KAAK,GAAG,kBAAkB,CAAC,eAAe,CAAC;YAC/C,IAAI,GAAG,GAAG,GAAG,8CAAmB,8BAA8B,QAAQ,aAAa,KAAK,EAAE,CAAC;YAC3F,0DACS,CAAC,GAAG,EAAE,IAAI,CAAC;iBACf,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,0CAA0C;gBAC1C,yBAAyB;gBACzB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;oBACjB,IAAI,QAAQ,GAAG,GAAG,CAAC,IAA6B,CAAC;oBACjD,WAAW;oBACX,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE;wBACjB,oCAAgB,GAAG,QAAQ,CAAC,KAAK,CAAC;wBAClC,OAAO,CAAC,iDAAyB,CAAC,CAAC;qBACtC;yBAAM;wBACH,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;qBAC3B;iBACJ;qBAAM;oBACH,OAAO,CAAC,6DAA+B,CAAC;iBAC3C;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,uCAAuC;gBACvC,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,eAAe;QAClB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,GAAG,GAAG,GAAG,8CAAmB,0BAA0B,CAAC;YAC3D,0DACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,QAAQ;QACX,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,MAAM,IAAI,GAAG,oDAAsB,CAAC;YACpC,IAAI,GAAG,GAAG,GAAG,8CAAmB,mBAAmB,CAAC;YACpD,0DACS,CAAC,GAAG,EAAE,IAAI,CAAC;iBACf,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,CAAC,MAAM,KAAK,GAAG,EAAE;oBACpB,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;qBAAM;oBACH,OAAO,CAAC,KAAK,CAAC,CAAC;iBAClB;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,WAAW;QACd,OAAO,IAAI,OAAO,CAAuB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACzD,IAAI,GAAG,GAAG,GAAG,8CAAmB,sBAAsB,CAAC;YACvD,0DACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,CAAC,IAAI,EAAE;oBACV,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;wBACjB,OAAO,CAAC,8CAAyB,CAAC,CAAC;qBACtC;yBAAM;wBACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBAC3B;iBACJ;qBAAM;oBACH,OAAO,CAAC,kEAAmC,CAAC,CAAC;iBAChD;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,eAAe;QAClB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,GAAG,GAAG,GAAG,8CAAmB,0BAA0B,CAAC;YAC3D,0DACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,8CAAyB,EAAE;oBAC/D,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACvB,OAAO;iBACV;gBACD,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAW,EAAE,GAAW,EAAE,GAAW;QACnD,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAChD,IAAI,GAAG,GAAG,GAAG,8CAAmB,2BAA2B,GAAG,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC;YAEvF,IAAI,8CAAqB,EAAE;gBACvB,wDACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,OAAO,CAAc,IAAI,CAAC,CAAC;gBAC/B,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACtB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,wDACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,OAAO,CAAc,IAAI,CAAC,CAAC;gBAC/B,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAc,EAAE,EAAE;oBACtB,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;;;;;;;;;;;;;;;;ACrSuC;AACM;AACZ;AACJ;AAGvB,MAAM,YAAY;IAGrB,MAAM,CAAC,iBAAiB,CAAC,YAAoB;QACzC,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAElD,IAAI,GAAG,GAAG,GAAG,kFAAmB,2CAA2C,YAAY,EAAE,CAAC;YAC1F,uCAAuC;YAEvC,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,UAAU,GAAa,EAAE,CAAC;gBAC9B,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACf,UAAU,CAAC,IAAI,CAAC,+EAAe,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1C,CAAC,CAAC,CAAC;gBACH,OAAO,CAAC,UAAU,CAAC,CAAC;YACxB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,iBAAiB,CAAC,YAAoB,EAAE,YAAoB,EAAE,YAAoB;QACrF,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,GAAG,GAAG,GAAG,kFAAmB,2CAA2C,YAAY,wBAAwB,YAAY,wBAAwB,YAAY,EAAE,CAAC;YAClK,uCAAuC;YACvC,qGACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,YAAoB,EAAE,WAAmB,EAAE,WAAmB,EAAE,OAAe;QAChG,OAAO,IAAI,OAAO,CAAqB,UAAU,OAAO,EAAE,MAAM;YAE5D,MAAM,WAAW,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACpD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YACjD,MAAM,UAAU,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAE/C,MAAM,GAAG,GAAG,GAAG,kFAAmB,uCAAuC,YAAY;uBAC1E,QAAQ,gBAAgB,WAAW,YAAY,UAAU,EAAE,CAAC;YAEvE,qGACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,KAA2B,CAAC,CAAC;YAClD,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,oBAAoB,CAAC,YAAoB,EAAE,iBAAyB;QACvE,MAAM,MAAM,GAAG,mCAAmC,CAAC;QACnD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;YACpD,8BAA8B;YAC9B,IAAI,GAAG,GAAG,GAAG,kFAAmB,qCAAqC,YAAY,gBAAgB,OAAO,EAAE,CAAC;YAC3G,kDAAkD;YAElD,qGACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,6CAA6C;gBAC7C,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,2BAA2B,CAAC,YAAoB,EAAE,WAAmB,EAAE,iBAAyB;QACnG,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;YACpD,IAAI,GAAG,GAAG,GAAG,kFAAmB,4CAA4C,YAAY,iBAAiB,WAAW,gBAAgB,OAAO,EAAE,CAAC;YAC9I,qGACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,+BAA+B,CAAC,gBAAwB,EAAE,eAAuB,EAAE,iBAAyB;QAC/G,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,kBAAkB,CAAC,iBAAiB,CAAC,CAAC;YACpD,IAAI,GAAG,GAAG,GAAG,kFAAmB,gDAAgD,gBAAgB,iBAAiB,eAAe,gBAAgB,OAAO,EAAE,CAAC;YAC1J,qGACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,cAAc,CAAC,QAAgB,EAAE,OAAe;QACnD,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAEhD,IAAI,SAAS,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,OAAO,CAAC;YACxD,IAAI,GAAG,GAAG,GAAG,kFAAmB,sBAAsB,QAAQ,IAAI,SAAS,EAAE,CAAC;YAE9E,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,+EAAe,CAAC,IAAI,CAAC,CAAC;gBACnC,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,aAAa;QAChB,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAElD,IAAI,GAAG,GAAG,GAAG,kFAAmB,uBAAuB,CAAC;YACxD,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;oBACxC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,IAAI,QAAQ,GAAG,yFAAoB,CAAC,IAAI,CAAC,CAAC;oBAC1C,OAAO,CAAC,QAAQ,CAAC,CAAC;iBACrB;qBAAM;oBACH,OAAO,CAAC,EAAE,CAAC,CAAC;iBACf;YAEL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,4EAAkB,CAAC,gCAAgC,EAAE,GAAG,CAAC,CAAC;gBAC1D,mCAAmC;gBACnC,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;CAGJ;;;;;;;;;;;;;;;;;;;ACjLuC;AACM;AACJ;AACI;AACZ;AACE;AACc;AAE3C,MAAM,aAAa;IACtB,MAAM,CAAC,cAAc,CAAC,MAAc;QAChC,OAAO,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,MAAM,IAAI,MAAM,KAAK,0FAAoB,EAAE,EAAE;gBAC7C,IAAI,GAAG,GAAG,GAAG,kFAAmB,yBAAyB,MAAM,EAAE,CAAC;gBAClE,yCAAyC;gBAEzC,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,MAAM,IAAI,GAAG,IAAI,kEAAS,CAAC,IAAI,CAAC,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;aACxC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,MAAc;QACvC,OAAO,IAAI,OAAO,CAAY,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC9C,IAAI,MAAM,IAAI,MAAM,KAAK,0FAAoB,EAAE,EAAE;gBAC7C,IAAI,GAAG,GAAG,GAAG,kFAAmB,6BAA6B,MAAM,EAAE,CAAC;gBACtE,yCAAyC;gBAEzC,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,MAAM,IAAI,GAAG,IAAI,kEAAS,CAAC,IAAI,CAAC,CAAC;oBACjC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,CAAC,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC,CAAC;aACxC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,GAAc;QAC5B,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,CAAC,GAAG,CAAC,SAAS;gBAAE,GAAG,CAAC,SAAS,GAAG,gGAA0B,CAAC;YAC/D,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,IAAI,GAAG,GAAG,GAAG,kFAAmB,kBAAkB,2EAAW,QAAQ,GAAG,CAAC,MAAM,OAAO,qFAAgB,EAAE,CAAC;YACzG,yCAAyC;YAEzC,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,GAAc;QACpC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YAC3C,IAAI,GAAG,GAAG,GAAG,kFAAmB,kBAAkB,2EAAW,QAAQ,GAAG,CAAC,MAAM,OAAO,qFAAgB,EAAE,CAAC;YACzG,4CAA4C;YAE5C,mGACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,MAAgB;QACtC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YACrC,IAAI,GAAG,GAAG,GAAG,kFAAmB,kBAAkB,2EAAW,OAAO,qFAAgB,EAAE,CAAC;YACvF,+GACW,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAC7D,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,OAAiB;QACxC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAEtC,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,IAAI,GAAG,GAAG,GAAG,kFAAmB,0BAA0B,CAAC;YAC3D,8CAA8C;YAE9C,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;ACvI2B;AAErB,MAAM,QAAQ;IAoBjB,YAAY,IAAY;QACpB,IAAI,SAAS,GAAa,IAAI,CAAC;QAE/B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,YAAY,GAAG,SAAS,CAAC,YAAY,CAAC;QAC3C,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;IACzC,CAAC;IAED,IAAI,cAAc;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,kBAAkB;QAClB,QAAQ,IAAI,CAAC,YAAY,EAAE;YACvB,KAAK,CAAC,CAAC;gBACH,OAAO,iBAAiB,CAAC;YAC7B,KAAK,CAAC;gBACF,OAAO,KAAK,CAAC;YACjB,KAAK,CAAC;gBACF,OAAO,SAAS,CAAC;YACrB,KAAK,CAAC;gBACF,OAAO,UAAU,CAAC;YAEtB;gBACI,OAAO,SAAS,CAAC;SACxB;IACL,CAAC;IAED,IAAI,gBAAgB;QAChB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,YAAY,GAAG,gBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YAC1D,IAAI,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE;gBAC3B,OAAO,EAAE,CAAC;aACb;YACD,OAAO,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;SACtC;aAAM;YACH,OAAO,EAAE,CAAC;SACb;IACL,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAmB;QACpC,IAAI,OAAO,GAAe,EAAE,CAAC;QAC7B,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;gBAC5B,IAAI,IAAI,GAAG,IAAI,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC9B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAEM,MAAM,mBAAmB;IAM5B,YAAY,IAAY;QACpB,IAAI,SAAS,GAAwB,IAAI,CAAC;QAC1C,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC,cAAc,CAAC;QAC/C,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,aAAa,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;IACrE,CAAC;CACJ;;;;;;;;;;;;;;;;;;;ACzG2B;AAC2D;AAC1B;AASX;AACJ;AACZ;AACO;AACW;AACd;AACY;AAEX;AAGhC,MAAM,aAAa;IAGtB,kBAAkB;IAElB,MAAM,CAAC,UAAU,CAAC,MAAc;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAC9C,IAAI,GAAG,GAAG,GAAG,8CAAmB,gCAAgC,MAAM,CAAC,UAAU,EAAE,CAAC;YACpF,4DAA4D;YAC5D,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;iBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,YAAY,CAAC,MAAc;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,CAAC,MAAM,IAAI,MAAM,KAAK,kDAAqB;gBAAE,OAAO,MAAM,CAAC,IAAI,uBAAO,CAAC,GAAG,EAAE,IAAI,EAAE,0CAA0C,CAAC,CAAC,CAAC;YACnI,IAAI,GAAG,GAAG,GAAG,8CAAmB,mCAAmC,MAAM,EAAE,CAAC;YAC5E,iEACW,CAAC,GAAG,CAAC;iBACX,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,eAAuB,EAAE,WAAmB;QAChE,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,SAAS,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAChD,IAAI,SAAS,GAAG,kBAAkB,CAAC,eAAe,CAAC,CAAC;YACpD,IAAI,GAAG,GAAG,GAAG,8CAAmB,6CAA6C,SAAS,gBAAgB,SAAS,EAAE,CAAC;YAClH,0DACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,cAAc,CAAC,QAAgB;QAClC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,uGAAuG;YACvG,IAAI,SAAS,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;gBACtB,IAAI,GAAG,GAAG,GAAG,8CAAmB,2BAA2B,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC1F,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAC,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,CAAC,IAAI,EAAE,EAAC,CAAC,CAAC;gBAEtE,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;qBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,EAAE,CAAC;aACZ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,oBAAoB,CAAC,MAAc,EAAE,WAAmB;QAC3D,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,GAAG,GAAG,oCAAgB,CAAC;YAC3B,IAAI,QAAQ,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;YAC/C,IAAI,GAAG,GAAG,GAAG,8CAAmB,8BAA8B,MAAM,gBAAgB,QAAQ,EAAE,CAAC;YAC/F,0DACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,qBAAqB;IAGrB,mBAAmB;IAGnB,MAAM,CAAC,gBAAgB,CAAC,IAAY;QAChC,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,IAAI,IAAI,EAAE;gBACN,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC;qBAC3E,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;qBAC1B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;aACpC;iBAAM;gBACH,8BAAW,CAAC,MAAM,EAAE,4CAA4C,IAAI,CAAC,SAAS,CAAC,IAAI,qBAAM,EAAE,CAAC,gBAAgB,IAAI,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjI,MAAM,EAAE,CAAC;aACZ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,YAAY,CAAC,OAAe,EAAE,OAAe,EAAE,MAAc,EAAE,MAAc;QAChF,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAE5C,IAAI,CAAC,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAChC,IAAI,KAAK,GAAG,4DAA0B,CAAC;YACvC,8BAAW,CAAC,4BAA4B,EAAE,WAAW,OAAO,gBAAgB,KAAK,EAAE,CAAC;SACvF;QAED,OAAO,IAAI,OAAO,CAAe,UAAU,OAAO,EAAE,MAAM;YACtD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAC7C,MAAM,QAAQ,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAE7C,MAAM,GAAG,GAAG,GAAG,8CAAmB,qBAAqB,MAAM,SAAS,MAAM,UAAU,QAAQ,UAAU,QAAQ,EAAE,CAAC;YACnH,MAAM,OAAO,GAAG,EAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAC,CAAC;YACnD,OAAO,0DACE,CAAC,GAAG,EAAE,OAAO,CAAC;iBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,EAAE;oBACL,IAAI,GAAG,CAAC,IAAI,EAAE;wBACV,MAAM,MAAM,GAAG,6CAAqB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;wBAC/C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;4BACxB,IAAI,MAAM,IAAI,4CAAkB,EAAE;gCAC9B,sCAAiB,GAAG,MAAM,CAAC;6BAC9B;4BAED,oBAAoB;4BACpB,IAAI,MAAM,GAAG,kDAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;4BAC9D,IAAI,MAAM,EAAE;gCACR,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;6BAClC;iCAAM;gCACH,mBAAmB;6BACtB;4BAED,OAAO,CAAC,MAAM,CAAC,CAAC;yBAEnB;6BAAM;4BACH,IAAI,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;4BAC9E,IAAI,GAAG,GAAG,GAAG,OAAO,eAAe,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,0CAAiB,mBAAmB,OAAO,EAAE;4BACpH,8BAAW,CAAC,MAAM,EAAE,eAAe,GAAG,EAAE,CAAC,CAAC;4BAC1C,MAAM,EAAE,CAAC;yBACZ;qBACJ;yBAAM;wBACH,4BAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,0CAAiB,mBAAmB,OAAO,EAAE,CAAC;wBACjH,MAAM,EAAE,CAAC;qBACZ;iBACJ;qBAAM;oBACH,8BAAW,CAAC,MAAM,EAAE,YAAY,GAAG,2BAA2B,0CAAiB,mBAAmB,OAAO,EAAE,CAAC;oBAC5G,MAAM,EAAE,CAAC;iBACZ;YACL,CAAC,CAAC;QACV,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,sBAAsB;IAGtB,iBAAiB;IAGjB,MAAM,CAAC,YAAY,CAAC,MAAc;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAgB,UAAU,OAAO,EAAE,MAAM;YAEvD,IAAI,GAAG,GAAG,GAAG,8CAAmB,6BAA6B,MAAM,EAAE,CAAC;YACtE,0DACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;;gBACR,OAAO,CAAC,SAAG,CAAC,IAAI,mCAAI,EAAE,CAAC,CAAC;YAC5B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,qBAAqB;IAGrB,oBAAoB;IAEpB,MAAM,CAAC,mBAAmB,CAAC,OAAe;QACtC,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAE5C,IAAI,GAAG,GAAG,GAAG,8CAAmB,wCAAwC,kBAAkB,CAAC,OAAO,CAAC,EAAE,CAAC;YACtG,0DACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,YAAiC;QACjD,OAAO,IAAI,OAAO,CAA6B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC/D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;YAC7C,MAAM,GAAG,GAAG,GAAG,8CAAmB,uBAAuB,CAAC;YAC1D,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;iBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,OAAO,CAA4B,IAAI,CAAC,CAAC;YAC7C,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,OAA8B;QACnD,OAAO,IAAI,OAAO,CAA2B,UAAU,OAAO,EAAE,MAAM;YAElE,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,GAAG,8CAAmB,4BAA4B,CAAC;YAC7D,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;iBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,OAAO,CAA2B,IAAI,CAAC,CAAC;YAC5C,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,OAA8B;QAClD,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACxC,MAAM,GAAG,GAAG,GAAG,8CAAmB,2BAA2B,CAAC;QAC9D,OAAO,0DACE,CAAC,GAAG,EAAE,OAAO,CAAC;aAClB,IAAI,CAAC,GAAG,CAAC,EAAE,CAA8B,GAAG,CAAC,IAAI,CAAC,CAAC;IAC5D,CAAC;IAGD,MAAM,CAAC,WAAW;QACd,IAAI,GAAG,GAAG,GAAG,8CAAmB,sBAAsB,CAAC;QACvD,OAAO,wDAAqB,CAAC,GAAG,CAAC;aAC5B,IAAI,CAAC,GAAG,CAAC,EAAE;YACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,KAAK,GAA6B,IAAI,CAAC;YAC3C,OAAO,KAAK,CAAC;QACjB,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,aAAqB,EAAE,YAAoB;QAC/D,IAAI,GAAG,GAAG,oCAAgB,CAAC;QAC3B,IAAI,IAAI,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QAC7C,IAAI,MAAM,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAC9C,IAAI,GAAG,GAAG,GAAG,8CAAmB,kDAAkD,IAAI,eAAe,MAAM,EAAE,CAAC;QAC9G,OAAO,wDACC,CAAC,GAAG,CAAC;aACR,IAAI,CAAC,GAAG,CAAC,EAAE;YACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,QAAQ,GAA4B,IAAI,CAAC;YAC7C,OAAO,QAAQ,CAAC;QACpB,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,MAAM,CAAC,WAAW,CAAC,aAAqB,EAAE,YAAoB;QAC1D,IAAI,QAAQ,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAChD,IAAI,WAAW,GAAG,kBAAkB,CAAC,aAAa,CAAC,CAAC;QACpD,IAAI,GAAG,GAAG,GAAG,8CAAmB,6CAA6C,WAAW,iBAAiB,QAAQ,EAAE,CAAC;QACpH,OAAO,0DACE,CAAC,GAAG,CAAC;aACT,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAGD,MAAM,CAAC,gBAAgB;QACnB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAoB,UAAU,OAAO,EAAE,MAAM;YAE3D,IAAI,GAAG,GAAG,GAAG,8CAAmB,wBAAwB,CAAC;YACzD,wDACQ,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,gBAAgB,GAAsB,IAAI,CAAC;gBAC/C,gBAAgB,CAAC,OAAO,GAAG,iDAAoB,CAC3C,gBAAgB,CAAC,OAAO,CAC3B,CAAC;gBACF,gBAAgB,CAAC,eAAe,GAAG,sBAAsB,CACrD,gBAAgB,CAAC,eAAe,CACnC,CAAC;gBACF,gBAAgB,CAAC,WAAW,GAA2B,IAAI,CAAC,WAAW,CAAC;gBAExE,IAAI,gBAAgB,CAAC,WAAW,EAAE;oBAC9B,gBAAgB,CAAC,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;wBAC1C,IAAI,UAAU,GAAG,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAC5C,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,CACtC,CAAC;wBAEF,IAAI,UAAU,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;4BACrC,IAAI,MAAM,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;4BAC3B,MAAM,CAAC,WAAW,GAAG,oBAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;4BACzD,MAAM,CAAC,OAAO,GAAG,oBAAU,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC;yBACxD;oBACL,CAAC,CAAC,CAAC;iBACN;gBAED,OAAO,CAAC,gBAAgB,CAAC,CAAC;YAC9B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,aAAqB;QACtC,IAAI,GAAG,GAAG,GAAG,8CAAmB,qCAAqC,aAAa,EAAE,CAAC;QACrF,OAAO,iEACI,CAAC,GAAG,CAAC;aACX,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,cAA4B;QAC7C,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC7C,IAAI,GAAG,GAAG,GAAG,8CAAmB,+BAA+B,CAAC;QAChE,OAAO,0DACE,CAAC,GAAG,EAAE,OAAO,CAAC;aAClB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAGD,uBAAuB;IAGvB,oBAAoB;IAEpB,MAAM,CAAC,eAAe;QAClB,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAkB,UAAU,OAAO,EAAE,MAAM;YAEzD,IAAI,GAAG,GAAG,GAAG,8CAAmB,uBAAuB,CAAC;YACxD,wDACQ,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,aAAa,GAAG,IAAI,iDAAe,CAAC,IAAI,CAAC,CAAC;gBAC9C,IAAI,aAAa,EAAE;oBACf,oDAAwB,GAAG,aAAa,CAAC;iBAC5C;gBACD,OAAO,CAAC,aAAa,CAAC,CAAC;YAC3B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;CA4CJ;;;;;;;;;;;;;;;;;;ACjdM,MAAM,SAAS;IAUlB,YAAY,IAAa;QACrB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;IACL,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,IAAI,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;QAE9B,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,UAAU;oBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,WAAW;oBACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC9B,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,EAAE,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC9B,MAAM;gBACV,KAAK,UAAU;oBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,iGAAiG;gBACjG,wDAAwD;gBACxD,oDAAoD;gBACpD,0CAA0C;aAC7C;SACJ;IACL,CAAC;CACJ;;;;;;;;;;;;;;;ACrDmD;AACE;AAEV;AACE;AACZ;AACI;AACG;AACG;AAIrC,MAAM,UAAU;IAGnB,MAAM,CAAC,eAAe,CAAC,UAAiC;QACpD,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAsB,UAAU,OAAO,EAAE,MAAM;YAC7D,IAAI;gBACA,4CAA4C;gBAC5C,oDAAoD;gBACpD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,GAAG,GAAG,GAAG,8CAAmB,yBAAyB,CAAC;gBAC1D,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,0DAAyB,EAAC,CAAC;qBACxD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,IAAI,KAAK,GAAwB,IAAI,CAAC;oBACtC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,mCAAmC;oBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;YAAC,OAAO,GAAG,EAAE;gBACV,8BAAW,CAAC,MAAM,EAAE,gEAAgE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;gBAClH,MAAM,CAAC,GAAG,CAAC,CAAC;aACf;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,cAAwB;QAC1C,OAAO,IAAI,OAAO,CAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACxD,MAAM,MAAM,GAAiC,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;YAC/E,MAAM,CAAC,OAAO,GAAG,EAAC,cAAc,EAAE,qBAAqB,EAAC,CAAC;YAEzD,IAAI,GAAG,GAAG,GAAG,8CAAmB,yBAAyB,CAAC;YAC1D,0DACS,CAAC,GAAG,EAAE,cAAc,EAAE,MAAM,CAAC;iBACjC,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,QAAQ,GAAG,GAAG,CAAC,IAA2B,CAAC;gBACjD,IAAI,CAAC,CAAC,QAAQ,EAAE;oBACZ,OAAO,CAAC,QAAQ,CAAC,CAAC;iBACrB;qBAAM;oBACH,MAAM,CAAC,IAAI,KAAK,CAAC,oCAAoC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;iBACtE;gBACD,OAAO,GAAG,CAAC;YACf,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,QAAQ,CAAC;gBACT,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBACrB,mCAAmC;gBAEnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,gBAAgB;QACnB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,GAAG,GAAG,GAAG,8CAAmB,0BAA0B,CAAC;YAC3D,0DACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,SAAS;QACZ,OAAO,IAAI,OAAO,CAAY,UAAU,OAAO,EAAE,MAAM;YAEnD,IAAI,GAAG,GAAG,GAAG,8CAAmB,qCAAqC,4CAAoB,EAAE,CAAC;YAC5F,wDACQ,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,MAAM,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;gBACpC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,iBAAiB;QACpB,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAY,UAAU,OAAO,EAAE,MAAM;YAEnD,IAAI,GAAG,GAAG,GAAG,8CAAmB,sCAAsC,4CAAoB,EAAE,CAAC;YAC7F,0DACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,OAAO,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;gBAClC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,YAAY,CAAC,KAAe,EAAE,WAAmB;QACpD,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAa,UAAU,OAAO,EAAE,MAAM;YAEpD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,GAAG,GAAG,GAAG,8CAAmB,+BAA+B,4CAAoB,gBAAgB,WAAW,EAAE,CAAC;YAEjH,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;iBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,cAAc,GAAyB,IAAI,CAAC;gBAChD,OAAO,CAAC,cAAc,CAAC,CAAC;YAC5B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,OAAiB,EAAE,OAAe,EAAE,SAAiB;QAEtE,6DAA6D;QAC7D,kBAAkB;QAElB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,MAAM,QAAQ,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC;YAC/C,IAAI,GAAG,GAAG,GAAG,8CAAmB,uCAAuC,QAAQ,YAAY,OAAO,EAAE,CAAC;YACrG,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;iBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,oBAAoB;QACvB,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAEhD,IAAI,GAAG,GAAG,GAAG,8CAAmB,yBAAyB,CAAC;YAC1D,wDACQ,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,GAAG,CAAC,IAAc,CAAC,CAAC;YAChC,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,WAAW;QACd,MAAM,MAAM,GAAG,wBAAwB,CAAC;QAExC,OAAO,IAAI,OAAO,CAAa,UAAU,OAAO,EAAE,MAAM;YAEpD,IAAI,KAAK,GAAG,0CAAiB,CAAC;YAC9B,IAAI,sCAAY,EAAE,IAAI,8CAAqB,EAAE;gBAEzC,IAAI,GAAG,GAAG,GAAG,8CAAmB,mBAAmB,CAAC;gBAEpD,wDACQ,CAAC,GAAG,CAAC;qBACR,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,GAAG,EAAE;wBACL,IAAI,GAAG,CAAC,IAAI,EAAE;4BACV,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;4BACtB,oCAAoC;4BACpC,IAAI,QAAQ,GAAe,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;4BAC5C,OAAO,CAAC,QAAQ,CAAC,CAAC;yBACrB;6BAAM;4BACH,8BAAW,CAAC,MAAM,EAAE,OAAO,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,0CAAiB,EAAE,CAAC,CAAC;4BACpF,MAAM,EAAE,CAAC;yBACZ;qBACJ;yBAAM;wBACH,8BAAW,CAAC,MAAM,EAAE,OAAO,GAAG,2BAA2B,0CAAiB,EAAE,CAAC,CAAC;wBAC9E,MAAM,EAAE,CAAC;qBACZ;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,wDAA0B,CAAC,GAAG,CAAC,EAAE;wBACjC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAClC,IAAI,GAAG,GAAG,kBAAkB,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,KAAK,gBAAgB,OAAO,EAAE,CAAC;wBAC/F,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,CAAC;4BAC3F,GAAG,CAAC,KAAK,KAAK,eAAe,EAAE;4BAC/B,4BAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;yBAC3B;6BAAM;4BACH,8BAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;yBAC5B;qBACJ;oBACD,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,4BAAU,CAAC,MAAM,EAAE,kBAAkB,0CAAiB,EAAE,CAAC,CAAC;gBAC1D,IAAI,MAAM,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,qDAAyB,CAAC,CAAC;gBAC1E,4CAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,WAAW,CAAC,KAAiB;QAChC,yCAAyC;QAEzC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YACpC,uCAAuC;YACvC,IAAI,GAAG,GAAG,GAAG,8CAAmB,mBAAmB,CAAC;YACpD,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;iBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,yBAAyB,CAAC,IAAwB;QACrD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,GAAG,GAAG,GAAG,8CAAmB,qBAAqB,CAAC;YACtD,0DACS,CAAC,GAAG,EAAE,OAAO,CAAC;iBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;ACxRyE;AAC5B;AACZ;AACmB;AAEG;AAClB;AACG;AACU;AACC;AAG7C,MAAM,UAAU;IAEnB,IAAI,OAAO;QACP,OAAO,+DAAU,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,SAAiB;QACpC,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAE5C,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,0CAA0C;YAE1C,IAAI,iFAAY,EAAE,EAAE;gBAEhB,IAAI,SAAS,IAAI,+EAAkB,IAAI,qFAAqB,EAAE;oBAE1D,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAC,SAAS,EAAE,SAAS,EAAC,CAAC,CAAC;oBACrD,IAAI,GAAG,GAAG,GAAG,kFAAmB,uBAAuB,CAAC;oBAExD,qGACS,CAAC,GAAG,EAAE,OAAO,CAAC;yBAClB,IAAI,CAAC,GAAG,CAAC,EAAE;wBACR,wDAAwD;wBACxD,OAAO,CAAC,IAAI,CAAC,CAAC;oBAClB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;wBACX,IAAI,MAAM,GAAG,UAAU,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;wBAC3C,IAAI,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAEjC,IAAI,+FAAuB,CAAC,GAAG,CAAC,EAAE;4BAC9B,IAAI,MAAM,IAAI,GAAG,EAAE;gCACf,oEAAU,CAAC,MAAM,EAAE,wBAAwB,GAAG,gBAAgB,oFAAiB,iBAAiB,OAAO,gBAAgB,MAAM,GAAG,CAAC,CAAC;6BACrI;iCAAM,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,CAAC;mCAC/F,GAAG,CAAC,OAAO,KAAK,eAAe,EAAE;gCACpC,oEAAU,CAAC,MAAM,EAAE,kBAAkB,MAAM,EAAE,CAAC,CAAC;6BAClD;iCAAM,IAAI,MAAM,KAAK,GAAG,EAAE;gCACvB,oEAAU,CAAC,MAAM,EAAE,cAAc,MAAM,EAAE,CAAC,CAAC;6BAC9C;iCAAM;gCACH,sEAAW,CAAC,MAAM,EAAE,qBAAqB,GAAG,gBAAgB,oFAAiB,gBAAgB,OAAO,gBAAgB,MAAM,GAAG,CAAC,CAAC;6BAClI;yBACJ;wBAED,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,6CAA6C;oBAC7C,MAAM,CAAC,IAAI,2DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;iBACnC;aAEJ;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,iBAAiB,oFAAiB,cAAc,0FAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,gEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,KAAK;QACtB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,KAAK,EAAE;YACP,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,EAAE;gBACvB,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC;gBAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;gBACnC,IAAI,KAAK,CAAC,QAAQ,EAAE;oBAChB,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;iBAC1D;aACJ;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,mGAAmG;IACnG,4DAA4D;IAC5D,EAAE;IACF,iEAAiE;IACjE,EAAE;IACF,8CAA8C;IAC9C,2DAA2D;IAC3D,gBAAgB;IAChB,4BAA4B;IAC5B,uBAAuB;IACvB,wEAAwE;IACxE,+BAA+B;IAC/B,WAAW;IACX,4BAA4B;IAC5B,8CAA8C;IAC9C,yBAAyB;IACzB,YAAY;IACZ,EAAE;IACF,QAAQ;IACR,IAAI;IAGJ,MAAM,CAAC,cAAc,CAAC,OAAe;QACjC,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAC3C,OAAO,IAAI,OAAO,CAAsB,UAAU,OAAO,EAAE,MAAM;YAE7D,0DAA0D;YAC1D,yCAAyC;YAEzC,IAAI,GAAG,GAAG,GAAG,kFAAmB,sBAAsB,OAAO,EAAE,CAAC;YAChE,IAAI,iFAAY,EAAE,EAAE;gBAChB,mGACQ,CAAC,GAAG,CAAC;qBACR,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,sDAAsD;oBACtD,OAAO,CAAC,GAAG,CAAC,IAA2B,CAAC,CAAC;gBAC7C,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,CAAC,EAAC,OAAO,EAAE,eAAe,EAAC,CAAC,CAAC;aACtC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,kBAAkB,CAAC,QAAgB;QACtC,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAM,UAAU,OAAO,EAAE,MAAM;YAE7C,IAAI,GAAG,GAAG,GAAG,kFAAmB,gCAAgC,QAAQ,EAAE,CAAC;YAC3E,qGACS,CAAC,GAAG,CAAC;iBACT,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,qEAAqE;gBACrE,OAAO,CAAC,GAAG,CAAC;YAChB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,KAAa,EAAE,QAAQ;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAE1C,OAAO,IAAI,OAAO,CAAe,UAAU,OAAO,EAAE,MAAM;YAEtD,IAAI,GAAG,GAAG,GAAG,kFAAmB,gCAAgC,QAAQ,UAAU,KAAK,EAAE,CAAC;YAC1F,mGACQ,CAAC,GAAG,CAAC;iBACR,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,uCAAuC;gBACvC,IAAI,MAAM,GAAiB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBAC9C,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,KAAa,EAAE,MAAoB;QACvD,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,MAAM,MAAM,GAAG,6BAA6B,CAAC;QAE7C,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,iFAAY,EAAE,EAAE;gBAEhB,IAAI,GAAG,GAAG,GAAG,kFAAmB,gCAAgC,KAAK,WAAW,MAAM,EAAE,CAAC;gBACzF,qGACS,CAAC,GAAG,CAAC;qBACT,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,kBAAkB,oFAAiB,EAAE,CAAC,CAAC;gBAC1D,IAAI,MAAM,GAAG,IAAI,gEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,uBAAuB,CAAC,KAAc;QACzC,MAAM,MAAM,GAAG,oCAAoC,CAAC;QACpD,IAAI,IAAI,GAAG,IAAI,6EAAU,EAAE,CAAC;QAC5B,IAAI;YACA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,8FAA4B,CAAC;YAC7C,IAAI,CAAC,KAAK,GAAG,UAAU,KAAK,CAAC,IAAI,YAAY,CAAC;YAC9C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;YAC3B,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAC5B;iBAAM;gBACH,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;aACpE;YAED,uBAAuB;YACvB,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3F,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,IAAI,KAAK,CAAC,SAAS,KAAK,CAAC,EAAE;gBAChD,IAAI,CAAC,IAAI,GAAG,GAAG,KAAK,CAAC,eAAe,MAAM,KAAK,CAAC,aAAa,MAAM,SAAS,EAAE,CAAC;aAClF;iBAAM;gBACH,IAAI,CAAC,IAAI,GAAG,GAAG,SAAS,EAAE,CAAC;aAC9B;SACJ;QAAC,OAAO,EAAE,EAAE;YACT,sEAAW,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,MAAM,CAAC,qBAAqB,CAAC,KAAc;QACvC,MAAM,MAAM,GAAG,kCAAkC,CAAC;QAClD,IAAI,IAAI,GAAG,IAAI,6EAAU,EAAE,CAAC;QAC5B,IAAI;YACA,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,wFAAyB,CAAC;YAC1C,IAAI,CAAC,KAAK,GAAG,UAAU,KAAK,CAAC,IAAI,GAAG,CAAC;YACrC,IAAI,CAAC,IAAI,GAAG,gCAAgC,CAAC;YAC7C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,cAAc,CAAC;YAC7B,IAAI,KAAK,CAAC,QAAQ,EAAE;gBAChB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAC5B;iBAAM;gBACH,IAAI,CAAC,QAAQ,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;aACpE;YAED,uBAAuB;YACvB,8FAA8F;YAC9F,wDAAwD;YACxD,oFAAoF;YACpF,IAAI;YACJ,SAAS;YACT,gCAAgC;YAChC,IAAI;SACP;QAAC,OAAO,EAAE,EAAE;YACT,sEAAW,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,CAAC,CAAC;SAC3C;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CAGJ;;;;;;;;;;;;;;;;;;;;;;;;AC7QuD;AAChB;AACF;AACI;AACF;AACM;AACZ;AACI;AACkB;AACJ;AACC;AAET;AAErC,MAAM,YAAY;IAMrB,MAAM,CAAC,yBAAyB,CAAC,QAAkB;QAC/C,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,OAAO,IAAI,OAAO,CAAwB,UAAU,OAAO,EAAE,MAAM;YAE/D,IAAI,GAAG,GAAG,GAAG,kFAAmB,gBAAgB,CAAC;YACjD,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,KAAK,IAAI,2EAAa,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBAEjE,6CAA6C;gBAC7C,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;gBAEvC,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;oBAER,IAAI,GAAG,CAAC,IAAI,EAAE;wBACV,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACtB,+CAA+C;wBAC/C,IAAI,UAAU,GAAG,gGAA0B,CAAC,IAAI,CAAC,CAAC;wBAClD,OAAO,CAAC,UAAU,CAAC,CAAC;qBACvB;yBAAM;wBACH,OAAO,EAAE,CAAC;qBACb;gBAEL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,gBAAgB,2EAAa,SAAS,QAAQ,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBACxF,MAAM,CAAC,EAAC,OAAO,EAAE,qBAAqB,EAAC,CAAC,CAAC;aAC5C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,kBAAkB,CAAC,MAAoB;QAC1C,MAAM,MAAM,GAAG,iCAAiC,CAAC;QAEjD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,GAAG,GAAG,GAAG,kFAAmB,gBAAgB,CAAC;YAEjD,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,KAAK,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE;gBAE1D,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC9B,wCAAwC;gBAExC,mGACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBACpD,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;qBACzB,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,sEAAW,CAAC,MAAM,EAAE,gBAAgB,2EAAa,cAAc,MAAM,CAAC,QAAQ,UAAU,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,UAAU,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;gBAC1J,4JAA4J;gBAC5J,MAAM,CAAC,EAAC,OAAO,EAAE,yBAAyB,EAAC,CAAC,CAAC;aAChD;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,kBAAkB,CAAC,MAAoB;QAC1C,MAAM,MAAM,GAAG,iCAAiC,CAAC;QAEjD,OAAO,IAAI,OAAO,CAAsB,UAAU,OAAO,EAAE,MAAM;YAE7D,IAAI,iFAAY,EAAE,EAAE;gBAEhB,IAAI,GAAG,GAAG,GAAG,kFAAmB,gBAAgB,CAAC;gBACjD,IAAI,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC;gBAC9B,wCAAwC;gBACxC,IAAI,MAAM,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,QAAQ,EAAE;oBAC7C,mGACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;yBACpD,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;wBACjB,IAAI,UAAU,IAAI,UAAU,CAAC,IAAI,EAAE;4BAC/B,IAAI,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;4BAC3B,0CAA0C;4BAC1C,IAAI,OAAO,GAAG,0GAAwB,CAAC,IAAI,CAAC,CAAC;4BAC7C,OAAO,CAAC,OAAO,CAAC,CAAC;yBACpB;6BAAM;4BACH,OAAO,EAAE;yBACZ;oBAEL,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBACb,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClB,CAAC,CAAC,CAAC;iBAEV;qBAAM;oBACH,oEAAU,CAAC,MAAM,EAAE,gBAAgB,2EAAa,cAAc,MAAM,CAAC,QAAQ,UAAU,MAAM,CAAC,OAAO,YAAY,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;oBACtI,MAAM,CAAC,EAAC,OAAO,EAAE,uBAAuB,EAAC,CAAC,CAAC;iBAC9C;aACJ;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,iBAAiB,oFAAiB,cAAc,0FAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,QAAQ,CAAC,KAAc;QAC1B,MAAM,MAAM,GAAG,uBAAuB,CAAC;QACvC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,IAAI,YAAY,CAAC,UAAU,IAAI,OAAO,EAAE;gBACpC,MAAM,KAAK,GAAG,2EAAa,CAAC;gBAC5B,MAAM,GAAG,GAAG,GAAG,kFAAmB,sBAAsB,KAAK,QAAQ,OAAO,EAAE,CAAC;gBAC/E,YAAY,CAAC,UAAU,GAAG,OAAO,CAAC;gBAClC,IAAI,KAAK,IAAI,OAAO,IAAI,iFAAY,EAAE,EAAE;oBACpC,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;yBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;wBACR,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC;wBACpC,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACtB,wCAAwC;wBACxC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACrB,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,EAAE;4BAC3B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;yBACpC;wBACD,uFAAmB,CAAC,KAAK,CAAC,CAAC;wBAC3B,OAAO,CAAC,KAAK,CAAC,CAAC;oBACnB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBACb,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC;wBACpC,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClB,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,YAAY,CAAC,UAAU,GAAG,SAAS,CAAC;oBACpC,MAAM,GAAG,GAAG,0BAA0B,KAAK,QAAQ,OAAO,QAAQ,oFAAiB,eAAe,qFAAkB,EAAE,CAAC;oBACvH,iFAAiF;oBACjF,IAAI,qFAAkB,EAAE;wBACpB,sEAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;qBAC5B;yBAAM;wBACH,oEAAU,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;qBAC3B;oBAED,MAAM,CAAC,EAAC,OAAO,EAAE,4BAA4B,GAAG,EAAE,EAAC,CAAC,CAAC;iBACxD;aACJ;iBAAM;gBACH,wFAAwF;gBACxF,yBAAyB;gBACzB,sCAAsC;gBACtC,MAAM,CAAC,EAAC,OAAO,EAAE,8BAA8B,EAAC,CAAC,CAAC;aACrD;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,+CAA+C;IAC/C,MAAM,CAAC,kBAAkB,CAAC,KAAc;QACpC,MAAM,MAAM,GAAG,iCAAiC,CAAC;QACjD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;YAC9B,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,kFAAmB,sBAAsB,2EAAa,QAAQ,OAAO,EAAE,CAAC;YACvF,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,sFAAqB,EAAE;gBACvD,OAAO,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,8BAA8B,OAAO,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,WAAW,EAAE,CAAC,CAAC,CAAC;aAC7G;YACD,IAAI,CAAC,2EAAa,IAAI,2EAAa,KAAK,sFAAqB,EAAE;gBAC3D,OAAO,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,8BAA8B,OAAO,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,WAAW,EAAE,CAAC,CAAC,CAAC;aAC7G;YAED,IAAI,2EAAa,IAAI,OAAO,IAAI,KAAK,CAAC,KAAK,EAAE;gBACzC,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;oBACrB,IAAI,KAAK,CAAC,aAAa,KAAK,CAAC,EAAE;wBAC3B,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;qBACpC;oBACD,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,GAAG,GAAG,0BAA0B,2EAAa,QAAQ,OAAO,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;gBACxF,sEAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;gBACzB,MAAM,CAAC,EAAC,OAAO,EAAE,qBAAqB,EAAC,CAAC,CAAC;aAC5C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,KAAc,EAAE,SAAmB;QAC/C,MAAM,MAAM,GAAG,uBAAuB,CAAC;QAEvC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,CAAC,SAAS;gBAAE,SAAS,GAAG,KAAK,CAAC;YAClC,IAAI,CAAC,KAAK,CAAC,SAAS;gBAAE,KAAK,CAAC,SAAS,GAAG,2EAAa,CAAC;YAEtD,IAAI,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YACnE,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,IAAI,GAAG,GAAG,GAAG,kFAAmB,sBAAsB,2EAAa,QAAQ,KAAK,CAAC,OAAO,OAAO,qFAAkB,EAAE,CAAC;YACpH,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,sFAAqB;gBAAE,OAAO,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,8BAA8B,OAAO,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,WAAW,EAAE,CAAC,CAAC,CAAC;YACrK,IAAI,2EAAa,IAAI,KAAK,CAAC,OAAO,EAAE;gBAChC,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,GAAG,EAAE;wBACL,IAAI,GAAG,CAAC,IAAI,EAAE;4BACV,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;4BACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;4BAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;4BACtB,OAAO,CAAC,MAAM,CAAC,CAAC;yBACnB;6BAAM;4BACH,oEAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;4BACjH,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;yBACnC;qBACJ;yBAAM;wBACH,sEAAW,CAAC,MAAM,EAAE,YAAY,GAAG,2BAA2B,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;wBAC5G,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;qBACnC;gBAEL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,IAAI,OAAO,GAAG,0BAA0B,2EAAa,QAAQ,KAAK,CAAC,OAAO,QAAQ,KAAK,CAAC,KAAK,EAAE,CAAC;gBAChG,sEAAW,CAAC,4BAA4B,EAAE,OAAO,CAAC,CAAC;gBACnD,MAAM,CAAC,EAAC,OAAO,EAAE,wBAAwB,EAAC,CAAC,CAAC;aAC/C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,WAAW,CAAC,KAAc,EAAE,SAAmB,EAAE,UAAoB;QACxE,IAAI,MAAM,GAAG,0BAA0B,CAAC;QAExC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,UAAU,IAAI,IAAI,EAAE;gBACpB,UAAU,GAAG,KAAK,CAAC;aACtB;YACD,IAAI,SAAS,IAAI,IAAI,EAAE;gBACnB,SAAS,GAAG,KAAK,CAAC;aACrB;YAED,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAEpC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE;gBAClB,KAAK,CAAC,SAAS,GAAG,2EAAa,CAAC;aACnC;YAED,IAAI,OAAO,GAAG,IAAI,CAAC;YACnB,IAAI,SAAS,EAAE;gBACX,IAAI,QAAQ,GAAG,KAAK,CAAC,kBAAkB,EAAE,CAAC;gBAC1C,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;aACtC;iBAAM;gBACH,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;aAC5C;YAED,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,sFAAqB;gBAAE,OAAO,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,8BAA8B,OAAO,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,WAAW,EAAE,CAAC,CAAC,CAAC;YAErK,IAAI,QAAQ,GAAG,qFAAkB,CAAC;YAClC,IAAI,GAAG,GAAG,GAAG,kFAAmB,sBAAsB,2EAAa,QAAQ,KAAK,CAAC,OAAO,OAAO,QAAQ,eAAe,UAAU,EAAE,CAAC;YACnI,uBAAuB;YACvB,mBAAmB;YACnB,IAAI,2EAAa,IAAI,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,EAAE;gBAC9D,mGACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,GAAG,EAAE;wBACL,IAAI,GAAG,CAAC,IAAI,EAAE;4BACV,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;4BACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;4BAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;4BACtB,OAAO,CAAC,MAAM,CAAC,CAAC;yBACnB;6BAAM;4BACH,oEAAU,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;4BAChH,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;yBACnC;qBACJ;yBAAM;wBACH,sEAAW,CAAC,MAAM,EAAE,WAAW,GAAG,2BAA2B,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;wBAC3G,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;qBACnC;gBAEL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACX,IAAI,+FAAuB,CAAC,GAAG,CAAC,EAAE;wBAC9B,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;wBAEhD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;wBAClC,IAAI,GAAG,GAAG,WAAW,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,kBAAkB,OAAO,gBAAgB,OAAO,EAAE,CAAC;wBAC7H,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,OAAO,KAAK,eAAe,EAAE;4BACnF,oEAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,EAAE,CAAC,CAAC;yBAC9C;6BAAM,IAAI,MAAM,KAAK,GAAG,EAAE;4BACvB,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;yBAC5C;6BAAM;4BACH,sEAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;yBAC5C;wBACD,sIAAsI;qBACzI;oBACD,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,oEAAU,CACN,kBAAkB,EAClB,wBAAwB,2EAAa,QAAQ,KAAK,CAAC,OAAO,QAAQ,KAAK,CAAC,KAAK,EAAE,CAClF,CAAC;gBACF,MAAM,CAAC,EAAC,OAAO,EAAE,sBAAsB,EAAC,CAAC,CAAC;aAC7C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,YAAY,CAAC,QAAkB;QAClC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,MAAM,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,KAAK,KAAK,sFAAqB;gBAAE,OAAO,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,8BAA8B,OAAO,MAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,KAAK,KAAI,WAAW,EAAE,CAAC,CAAC,CAAC;YAErK,IAAI,QAAQ,EAAE;gBACV,QAAQ,GAAG,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;gBAClD,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAErB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBACvC,IAAI,GAAG,GAAG,GAAG,kFAAmB,sBAAsB,2EAAa,OAAO,qFAAkB,EAAE,CAAC;oBAC/F,+GACW,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,wFAAsB,EAAC,CAAC;yBAC7D,IAAI,CAAC,GAAG,CAAC,EAAE;wBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACtB,IAAI,MAAM,GAAG,gFAAgB,CAAC,IAAI,CAAC,CAAC;wBACpC,OAAO,CAAC,MAAM,CAAC,CAAC;oBACpB,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;wBACb,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClB,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,MAAM,CAAC,EAAC,OAAO,EAAE,2BAA2B,EAAC,CAAC,CAAC;iBAClD;aACJ;iBAAM;gBACH,MAAM,CAAC,EAAC,OAAO,EAAE,2BAA2B,EAAC,CAAC,CAAC;aAClD;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,KAAc;QACjC,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAE9C,OAAO,IAAI,OAAO,CAAmB,UAAU,OAAO,EAAE,MAAM;YAE1D,IAAI,iFAAY,EAAE,EAAE;gBAEhB,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,OAAO,KAAK,sFAAqB,EAAE;oBACnD,OAAO,MAAM,CAAC,IAAI,4DAAO,CAAC,GAAG,EAAE,IAAI,EAAE,gCAAgC,KAAK,aAAL,KAAK,uBAAL,KAAK,CAAE,OAAO,EAAE,CAAC,CAAC,CAAC;iBAC3F;gBACD,sCAAsC;gBACtC,yDAAyD;gBACzD,IAAI,GAAG,GAAG,GAAG,kFAAmB,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC;gBAC7E,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAwB,CAAC;oBAC1C,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC;aAET;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,iBAAiB,oFAAiB,cAAc,0FAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,QAAkB;QACjC,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAClD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAEvC,IAAI,GAAG,GAAG,GAAG,kFAAmB,kBAAkB,CAAC;YACnD,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,KAAK,GAAG,kGAAyB,CAAC,IAAI,CAAC,CAAC;gBAC5C,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,QAAkB;QACnC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YACvC,IAAI,GAAG,GAAG,GAAG,kFAAmB,oBAAoB,CAAC;YACrD,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,SAAS,CAAC,UAAkB,EAAE,UAAkB,EAAE,OAAiB,EAAE,UAAmB,KAAK,EAAE,SAAiB,EAAE;QACrH,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,GAAG,kFAAmB,6BAA6B,UAAU,eAAe,UAAU,YAAY,OAAO,WAAW,MAAM,EAAE,CAAC;YACvI,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,SAAS,CAAC,UAAkB,EAAE,UAAkB,EAAE,OAAiB,EAAE,UAAmB,KAAK,EAAE,SAAiB,EAAE;QACrH,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,IAAI,GAAG,GAAG,GAAG,kFAAmB,8BAA8B,UAAU,eAAe,UAAU,YAAY,OAAO,WAAW,MAAM,EAAE,CAAC;YACxI,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YAC7B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,mCAAmC;gBACnC,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,YAAY,CAAC,KAAc;QAC9B,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,GAAG,GAAG,GAAG,kFAAmB,6BAA6B,KAAK,CAAC,OAAO,EAAE,CAAC;YAC7E,qGACS,CAAC,GAAG,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAClD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;CAEJ;;;;;;;;;;;;;;;;;;;;;;;;AC5emD;AACZ;AACY;AACI;AACE;AACZ;AACZ;AACJ;AACuB;AACH;AAGN;AACe;AAEpD,MAAM,YAAY;IAAzB;QAEI,eAAe;QAEf,gCAAgC;QAChC,wDAAwD;QACxD,wBAAwB;QACxB,yBAAyB;QACzB,2BAA2B;QAC3B,0BAA0B;QAC1B,uCAAuC;QAEvC,cAAS,GAAG,4FAAqB,CAAC;QAClC,gBAAW,GAAG,gGAAuB,CAAC;QACtC,gBAAW,GAAqB,IAAI,CAAC;QAgkBrC,sBAAsB;IAG1B,CAAC;IAhkBG,IAAI,OAAO;QACP,OAAO,+DAAU,CAAC;IACtB,CAAC;IAED,kBAAkB;IAGlB,sBAAsB;IAEtB,MAAM,CAAC,iBAAiB,CAAC,KAAa,EAAE,QAAQ,GAAG,KAAK;QACpD,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,KAAa,EAAE,QAAkC;QACvE,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,KAAa,EAAE,QAAkC;QACvE,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,OAAO,MAAM,CAAC,kBAAkB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAGD,MAAM,CAAC,cAAc,CAAC,OAAe;QACjC,MAAM,MAAM,GAAG,6BAA6B,CAAC;QAE7C,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACnC,MAAM,MAAM,GAAG,kBAAkB,CAAC,OAAO,CAAC,CAAC;YAE3C,IAAI,iFAAY,EAAE,EAAE;gBAEhB,IAAI,GAAG,GAAG,GAAG,kFAAmB,kCAAkC,MAAM,EAAE,CAAC;gBAC3E,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,GAAG,EAAE;wBACL,IAAI,GAAG,CAAC,IAAI,EAAE;4BACV,wBAAwB;4BACxB,IAAI,OAAO,GAAG,GAAG,CAAC,IAAe,CAAC;4BAClC,OAAO,CAAC,OAAO,CAAC,CAAC;yBACpB;6BAAM;4BACH,gDAAgD;4BAChD,oHAAoH;4BACpH,OAAO,CAAC,IAAI,CAAC,CAAC;yBACjB;qBACJ;yBAAM;wBACH,8DAAW,CAAC,MAAM,EAAE,YAAY,GAAG,2BAA2B,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;wBAC5G,MAAM,EAAE,CAAC;qBACZ;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,4DAAU,CAAC,MAAM,EAAE,iBAAiB,oFAAiB,cAAc,0FAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,mJAAmJ;IACnJ,uDAAuD;IACvD,EAAE;IACF,4DAA4D;IAC5D,0CAA0C;IAC1C,oDAAoD;IACpD,kDAAkD;IAClD,EAAE;IACF,4BAA4B;IAC5B,EAAE;IACF,2KAA2K;IAC3K,0BAA0B;IAC1B,uDAAuD;IACvD,yBAAyB;IACzB,uBAAuB;IACvB,8BAA8B;IAC9B,uCAAuC;IACvC,mDAAmD;IACnD,kCAAkC;IAClC,gBAAgB;IAChB,qBAAqB;IACrB,iEAAiE;IACjE,qIAAqI;IACrI,+BAA+B;IAC/B,gBAAgB;IAChB,cAAc;IACd,mBAAmB;IACnB,2HAA2H;IAC3H,wBAAwB;IACxB,cAAc;IACd,aAAa;IACb,8BAA8B;IAC9B,2BAA2B;IAC3B,cAAc;IACd,QAAQ;IACR,aAAa;IACb,oGAAoG;IACpG,mFAAmF;IACnF,iCAAiC;IACjC,uCAAuC;IACvC,QAAQ;IACR,EAAE;IACF,QAAQ;IACR,IAAI;IAEI,iBAAiB,CAAC,KAAa,EAAE,QAAQ,GAAG,KAAK;QACrD,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAEhD,OAAO,IAAI,OAAO,CAAmB,UAAU,OAAO,EAAE,MAAM;YAE1D,IAAI,iFAAY,EAAE,EAAE;gBAEhB,IAAI,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,SAAS,GAAW,QAAQ,CAAC,CAAC,CAAC,+GAAuB,CAAC,CAAC,CAAC,oGAAyB,CAAC;gBACvF,IAAI,SAAS,GAAW,QAAQ,CAAC,CAAC,CAAC,+GAAuB,CAAC,CAAC,CAAC,oGAAyB,CAAC;gBACvF,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,kDAAkD;gBACnE,IAAI,SAAS,GAAG,EAAE,CAAC,CAAC,kCAAkC;gBACtD,IAAI,MAAM,GAAG,8GAA8B,CAAC,CAAC,CAAC,CAAC;gBAE/C,sCAAsC;gBACtC,IAAI,CAAC,GAAG,0FAAoB,CAAC;gBAC7B,IAAI,CAAC,GAAG,4FAAqB,CAAC;gBAC9B,IAAI,CAAC,GAAG,0FAAoB,CAAC;gBAC7B,IAAI,CAAC,GAAG,4FAAqB,CAAC;gBAC9B,IAAI,UAAU,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;gBAC3D,qDAAqD;gBACrD,IAAI,GAAG,GAAG,GAAG,kFAAmB,4BAA4B,QAAQ,OAAO,GAAG,IAAI,GAAG,WAAW,MAAM,SAAS,IAAI,UAAU,SAAS,WAAW,UAAU,EAAE,CAAC;gBAE9J,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,iEAAiE;oBACjE,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,IAAI,OAAO,GAAG,qHAAkC,CAAC,IAAI,CAAC,CAAC;oBACvD,sDAAsD;oBACtD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACvC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;4BACrB,MAAM,CAAC,IAAI,GAAG,wEAAgB,CAAC;4BAC/B,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,KAAK,EAAE,EAAE;gCAC1C,MAAM,CAAC,OAAO,GAAG,sFAAkB,EAAE,CAAC;6BACzC;wBACL,CAAC,CAAC,CAAC;qBACN;oBACD,OAAO,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;oBACX,4EAAkB,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;oBAClD,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,4DAAU,CAAC,MAAM,EAAE,iBAAiB,oFAAiB,cAAc,0FAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,iEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,iFAAiF;IACjF,oDAAoD;IACpD,EAAE;IACF,uCAAuC;IACvC,oFAAoF;IACpF,EAAE;IACF,+BAA+B;IAC/B,mBAAmB;IACnB,4BAA4B;IAC5B,eAAe;IACf,MAAM;IACN,uBAAuB;IACvB,4BAA4B;IAC5B,YAAY;IACZ,MAAM;IACN,EAAE;IACF,kBAAkB;IAClB,4BAA4B;IAC5B,cAAc;IACd,MAAM;IACN,wBAAwB;IACxB,4BAA4B;IAC5B,aAAa;IACb,MAAM;IACN,EAAE;IACF,wBAAwB;IACxB,wEAAwE;IACxE,kFAAkF;IAClF,MAAM;IACN,EAAE;IACF,mBAAmB;IACnB,IAAI;IAGJ,MAAM,CAAC,gBAAgB,CAAC,CAAS,EAAE,CAAS,EAAE,CAAS,EAAE,CAAS;QAC9D,MAAM,MAAM,GAAG,+BAA+B,CAAC;QAE/C,kCAAkC;QAClC,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;QAE/E,IAAI,aAAa,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YACT,aAAa,GAAG,IAAI,CAAC;YACrB,CAAC,GAAG,CAAC,EAAE,CAAC;SACX;aAAM,IAAI,CAAC,GAAG,EAAE,EAAE;YACf,aAAa,GAAG,IAAI,CAAC;YACrB,CAAC,GAAG,CAAC;SACR;QAED,IAAI,CAAC,GAAG,EAAE,EAAE;YACR,aAAa,GAAG,IAAI,CAAC;YACrB,CAAC,GAAG,EAAE,CAAC;SACV;aAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;YAChB,aAAa,GAAG,IAAI,CAAC;YACrB,CAAC,GAAG,CAAC,CAAC;SACT;QAED,IAAI,aAAa,EAAE;YACf,8DAAW,CAAC,MAAM,EAAE,mCAAmC,MAAM,EAAE,CAAC,CAAC;YACjE,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9E;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAGO,kBAAkB,CAAC,KAAa,EAAE,QAAkC;QAExE,OAAO,IAAI,OAAO,CAAmB,UAAU,OAAO;YAElD,IAAI,OAAO,GAAqB,EAAE,CAAC;YACnC,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YAE/C,IAAI,QAAQ,IAAI,WAAW,GAAG,CAAC,EAAE;gBAC7B,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;oBACtB,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC1C,IAAI,OAAO,EAAE;wBACT,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACzB,IAAI,EAAE,GAAG,IAAI,6EAAc,EAAE,CAAC;wBAC9B,EAAE,CAAC,IAAI,GAAG,4EAAkB,CAAC;wBAC7B,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;wBACpB,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC1B,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;wBAClB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;wBAClB,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;wBAEzB,2BAA2B;wBAC3B,2CAA2C;wBAC3C,2CAA2C;wBAG3C,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBACpB;iBACJ;aACJ;YAED,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;IAGO,kBAAkB,CAAC,KAAa,EAAE,QAAkC;QAExE,iDAAiD;QAEjD,OAAO,IAAI,OAAO,CAAmB,UAAU,OAAO;YAElD,IAAI,OAAO,GAAqB,EAAE,CAAC;YACnC,IAAI,QAAQ,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;YACnC,IAAI,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;YAC1C,wDAAwD;YAExD,IAAI,QAAQ,IAAI,MAAM,GAAG,CAAC,EAAE;gBACxB,KAAK,IAAI,GAAG,IAAI,QAAQ,EAAE;oBACtB,IAAI,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC1C,IAAI,OAAO,EAAE;wBACT,IAAI,IAAI,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;wBACzB,IAAI,EAAE,GAAG,IAAI,6EAAc,EAAE,CAAC;wBAC9B,EAAE,CAAC,IAAI,GAAG,4EAAkB,CAAC;wBAC7B,EAAE,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;wBACpB,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;wBAC1B,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;wBAClB,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;wBAClB,EAAE,CAAC,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC;wBACzB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;wBACjB,0CAA0C;qBAC7C;iBACJ;aACJ;YAED,OAAO,CAAC,OAAO,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,4EAA4E;IAC5E,wEAAwE;IACxE,yBAAyB;IACzB,yDAAyD;IACzD,gCAAgC;IAChC,wBAAwB;IACxB,QAAQ;IACR,aAAa;IACb,sBAAsB;IACtB,MAAM;IACN,EAAE;IACF,2BAA2B;IAC3B,4CAA4C;IAC5C,kCAAkC;IAClC,0BAA0B;IAC1B,QAAQ;IACR,aAAa;IACb,wBAAwB;IACxB,MAAM;IACN,EAAE;IACF,6CAA6C;IAC7C,wBAAwB;IACxB,0CAA0C;IAC1C,EAAE;IACF,qEAAqE;IACrE,oDAAoD;IACpD,QAAQ;IACR,EAAE;IACF,mEAAmE;IACnE,mDAAmD;IACnD,QAAQ;IACR,EAAE;IACF,qEAAqE;IACrE,uEAAuE;IACvE,0DAA0D;IAC1D,EAAE;IACF,sBAAsB;IACtB,0BAA0B;IAC1B,aAAa;IACb,mBAAmB;IACnB,MAAM;IACN,IAAI;IAGJ,yBAAyB;IAGzB,mBAAmB;IAEnB,MAAM,CAAC,OAAO,CAAC,UAAkB;QAC7B,IAAI,WAAW,GAAG,UAAU,CAAC;QAC7B,IAAI,UAAU,IAAI,IAAI,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,IAAI,WAAW,CAAC,MAAM,IAAI,GAAG,EAAE;gBAC3B,WAAW,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;aAC5C;YAED,IAAI,OAAO,GAAG,kGAAwB,CAAC,UAAU,CAAC,CAAC;YACnD,kCAAkC;YAClC,IAAI,OAAO,EAAE;gBACT,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;gBACzC,gCAAgC;aACnC;iBAAM;gBACH,OAAO,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;gBAC1C,kCAAkC;aACrC;SACJ;IACL,CAAC;IAGD,MAAM,CAAC,YAAY,CAAC,UAAkB;QAElC,OAAO,IAAI,OAAO,CAAmB,UAAU,OAAO,EAAE,MAAM;YAE1D,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,IAAI,KAAK,IAAI,IAAI,EAAE;gBACf,IAAI,KAAK,GAAG,UAAU,CAAC;gBACvB,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,IAAI,IAAI,GAAG,IAAI,CAAC;gBAChB,IAAI,GAAG,GAAG,4DAA4D,KAAK,aAAa,IAAI,WAAW,MAAM,EAAE,CAAC;gBAChH,4CAA4C;gBAE5C,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,IAAI,OAAO,GAAqB,EAAE,CAAC;oBACnC,IAAI,MAAM,GAAG,oGAAyB,CAAC,UAAU,CAAC,CAAC;oBACnD,IAAI,MAAM,IAAI,IAAI,IAAI,MAAM,CAAC,MAAM,IAAI,CAAC,EAAE;wBACtC,IAAI,EAAE,GAAG,IAAI,6EAAc,EAAE,CAAC;wBAC9B,EAAE,CAAC,IAAI,GAAG,4EAAkB,CAAC;wBAC7B,EAAE,CAAC,IAAI,GAAG,UAAU,CAAC;wBACrB,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC;wBACxB,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBACnB,EAAE,CAAC,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBACnB,EAAE,CAAC,OAAO,GAAG,UAAU,CAAC;wBACxB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;qBACpB;oBAED,IAAI,QAAQ,GAAG,yHAAoC,CAAC,IAAI,CAAC,CAAC;oBAC1D,IAAI,QAAQ,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACxC,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;4BACtB,MAAM,CAAC,IAAI,GAAG,4EAAkB,CAAC;wBACrC,CAAC,CAAC,CAAC;wBACH,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;qBACtC;oBAED,OAAO,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,CAAC,EAAC,OAAO,EAAE,uBAAuB,EAAC,CAAC,CAAC;aAC9C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,kEAAkE;IAClE,EAAE;IACF,qEAAqE;IACrE,EAAE;IACF,gCAAgC;IAChC,+BAA+B;IAC/B,2BAA2B;IAC3B,4CAA4C;IAC5C,yBAAyB;IACzB,yBAAyB;IACzB,EAAE;IACF,iDAAiD;IACjD,mDAAmD;IACnD,iDAAiD;IACjD,mDAAmD;IACnD,sGAAsG;IACtG,EAAE;IACF,4IAA4I;IAC5I,uDAAuD;IACvD,EAAE;IACF,0BAA0B;IAC1B,yDAAyD;IACzD,yBAAyB;IACzB,mCAAmC;IACnC,wEAAwE;IACxE,yDAAyD;IACzD,0CAA0C;IAC1C,gDAAgD;IAChD,kBAAkB;IAClB,cAAc;IACd,8BAA8B;IAC9B,aAAa;IACb,8BAA8B;IAC9B,2BAA2B;IAC3B,cAAc;IACd,EAAE;IACF,eAAe;IACf,sDAAsD;IACtD,QAAQ;IACR,QAAQ;IACR,IAAI;IAGJ,MAAM,CAAC,SAAS,CAAC,KAAa,EAAE,QAAiB;QAC7C,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACxC,OAAO,IAAI,OAAO,CAAmB,UAAU,OAAO,EAAE,MAAM;YAE1D,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,KAAK,sFAAqB,EAAE;gBAClD,IAAI,QAAQ,GAAG,kBAAkB,CAAC,KAAK,CAAC,CAAC;gBACzC,IAAI,SAAS,GAAW,oGAAyB,CAAC;gBAClD,IAAI,SAAS,GAAW,oGAAyB,CAAC;gBAClD,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAC/B,IAAI,EAAE,GAAG,kBAAkB,CAAC,GAAG,GAAG,IAAI,GAAG,EAAE,CAAC,CAAC;gBAE7C,iDAAiD;gBAEjD,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,kDAAkD;gBACnE,wDAAwD;gBAExD,IAAI,CAAC,GAAG,4FAAqB,CAAC;gBAC9B,IAAI,CAAC,GAAG,0FAAoB,CAAC;gBAC7B,IAAI,CAAC,GAAG,4FAAqB,CAAC;gBAC9B,IAAI,CAAC,GAAG,0FAAoB,CAAC;gBAE7B,kCAAkC;gBAClC,IAAI,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE/E,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;oBACT,8DAAW,CAAC,MAAM,EAAE,4CAA4C,MAAM,EAAE,CAAC,CAAC;oBAC1E,CAAC,GAAG,CAAC,EAAE,CAAC;iBACX;qBAAM,IAAI,CAAC,GAAG,EAAE,EAAE;oBACf,8DAAW,CAAC,MAAM,EAAE,6CAA6C,MAAM,EAAE,CAAC,CAAC;oBAC3E,CAAC,GAAG,CAAC;iBACR;gBACD,IAAI,CAAC,GAAG,EAAE,EAAE;oBACR,8DAAW,CAAC,MAAM,EAAE,6CAA6C,MAAM,EAAE,CAAC,CAAC;oBAC3E,CAAC,GAAG,EAAE,CAAC;iBACV;qBAAM,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;oBAChB,8DAAW,CAAC,MAAM,EAAE,4CAA4C,MAAM,EAAE,CAAC,CAAC;oBAC1E,CAAC,GAAG,CAAC,CAAC;iBACT;gBAED,6BAA6B;gBAC7B,MAAM,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;gBAE3E,IAAI,SAAS,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;gBAE3C,iFAAiF;gBACjF,IAAI,MAAM,GAAG,8FAAsB,CAAC;gBACpC,IAAI,WAAW,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAEpC,IAAI,OAAO,GAAG,GAAG,kFAAmB,kBAAkB,CAAC;gBACvD,IAAI,GAAW,CAAC;gBAChB,IAAI,QAAQ,EAAE;oBACV,GAAG,GAAG,GAAG,OAAO,WAAW,QAAQ,OAAO,EAAE,WAAW,WAAW,SAAS,IAAI,WAAW,SAAS,EAAE,CAAC;iBACzG;qBAAM;oBACH,GAAG,GAAG,GAAG,OAAO,YAAY,QAAQ,OAAO,EAAE,WAAW,WAAW,SAAS,IAAI,WAAW,SAAS,EAAE,CAAC;iBAC1G;gBAED,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,IAAI,OAAO,GAAG,6GAA8B,CAAC,IAAI,CAAC,CAAC;oBACnD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBACvC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;4BACrB,MAAM,CAAC,IAAI,GAAG,wEAAgB,CAAC;wBACnC,CAAC,CAAC,CAAC;qBACN;oBACD,OAAO,CAAC,OAAO,CAAC,CAAC;gBACrB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,MAAM,CAAC,EAAC,OAAO,EAAE,uBAAuB,EAAC,CAAC,CAAC;aAC9C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,cAAc,CAAC,GAAW,EAAE,GAAW;QACnC,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAEhD,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;YACzB,IAAI,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YACxB,IAAI,KAAK,IAAI,IAAI,EAAE;gBAEf,IAAI,OAAO,GAAG,GAAG,kFAAmB,oBAAoB,CAAC;gBACzD,IAAI,GAAG,GAAG,GAAG,OAAO,QAAQ,GAAG,QAAQ,GAAG,EAAE,CAAC;gBAE7C,mGACQ,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBAC3C,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACtB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,MAAM,CAAC,EAAC,OAAO,EAAE,uBAAuB,EAAC,CAAC,CAAC;aAC9C;QACL,CAAC,CAAC,CAAC;IACP,CAAC;CAKJ;;;;;;;;;;;;;;;;;;;;AChmByC;AACI;AACZ;AACJ;AACK;AACiB;AACb;AACW;AAE3C,MAAM,WAAW;IAGpB,MAAM,CAAC,OAAO,CAAC,IAAY;QAEvB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAE5C,IAAI,GAAG,GAAG,GAAG,kFAAmB,oBAAoB,2EAAW,QAAQ,IAAI,CAAC,MAAM,OAAO,qFAAgB,EAAE,CAAC;YAC5G,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,sBAAsB,CAAC,OAAiB,EAAE,OAAe;QAE5D,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAGtC,IAAI,GAAG,GAAG,GAAG,kFAAmB,+BAA+B,2EAAW,YAAY,OAAO,OAAO,qFAAgB,EAAE,CAAC;YACvH,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY;QAC1B,MAAM,MAAM,GAAG,wBAAwB,CAAC;QAExC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,uBAAuB;YACvB,IAAI,cAAc,GAAG,0GAA4B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAClE,IAAI,cAAc,EAAE;gBAChB,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;gBAEhC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC5C,IAAI,GAAG,GAAG,GAAG,kFAAmB,oBAAoB,2EAAW,QAAQ,IAAI,CAAC,MAAM,OAAO,qFAAgB,EAAE,CAAC;gBAC5G,mGACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,GAAG,CAAC,IAAI,EAAE;wBACV,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;wBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;qBACnB;yBAAM;wBACH,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;wBACxB,4DAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,MAAM,gBAAgB,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;wBAC7G,MAAM,CAAC,IAAI,2DAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;qBACtC;gBAEL,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,MAAM,KAAK,GAAG,IAAI,KAAK,EAAE,CAAC,KAAK,CAAC;gBAEhC,8DAAW,CAAC,MAAM,EAAE,sBAAsB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,cAAc,KAAK,EAAE,CAAC;gBAC9F,MAAM,CAAC,IAAI,2DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;aACnC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAiB;QAChC,MAAM,MAAM,GAAG,yBAAyB;QAExC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,GAAG,kFAAmB,oBAAoB,2EAAW,OAAO,qFAAgB,EAAE,CAAC;YAEzF,+GACW,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAC7D,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,EAAE;oBACL,IAAI,GAAG,CAAC,IAAI,EAAE;wBACV,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;wBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;qBACnB;yBAAM;wBACH,4DAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;wBACnH,MAAM,CAAC,IAAI,2DAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;qBAC1C;iBACJ;qBAAM;oBACH,8DAAW,CAAC,MAAM,EAAE,cAAc,GAAG,2BAA2B,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;oBAC9G,MAAM,CAAC,IAAI,2DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;iBACnC;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;;;;;;;;;;;;;;;;AC5HyC;AACI;AACZ;AACC;AAE5B,MAAM,WAAW;IAEpB,MAAM,CAAC,OAAO,CAAC,IAAY;QACvB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,IAAI,GAAG,GAAG,GAAG,kFAAmB,oBAAoB,2EAAW,QAAQ,IAAI,CAAC,MAAM,OAAO,qFAAgB,EAAE,CAAC;YAC5G,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY;QAC1B,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;YAEzB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,GAAG,GAAG,GAAG,kFAAmB,oBAAoB,2EAAW,QAAQ,IAAI,CAAC,MAAM,OAAO,qFAAgB,EAAE,CAAC;YAC5G,mGACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,OAAiB;QAChC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,GAAG,kFAAmB,oBAAoB,2EAAW,OAAO,qFAAgB,EAAE,CAAC;YACzF,+GACW,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBAC7D,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,8DAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;CACJ;;;;;;;;;;;;;;;;;;;;;;;;ACpEM,MAAM,eAAe;IAMxB,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACf,KAAK,CAAC,IAAI,CAAkB,GAAG,CAAC,CAAC;YACrC,CAAC,CAAC,CAAC;SACN;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;;;ACfM,MAAM,oBAAoB;IAI7B,YAAY,MAAc,EAAE,SAAe;QACvC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACzB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,IAAc;QAC3B,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,EAAE;YACN,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBACd,IAAI,OAAO,GAAQ,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CACN,IAAI,oBAAoB,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CACxE,CAAC;YACN,CAAC,CAAC,CAAC;SACN;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;;;;;;;;;;;;;;;ACtBuC;AACA;AACF;AAEI;AAC0B;AACK;AAC3B;AACZ;AACC;AAEe;AACX;AACa;AAE7C,MAAM,WAAW;IAGpB,MAAM,CAAC,QAAQ;QACX,2BAA2B;QAE3B,OAAO,IAAI,OAAO,CAAW,UAAU,OAAO,EAAE,MAAM;YAElD,IAAI,KAAK,GAAG,IAAI,qBAAM,EAAE,CAAC;YACzB,IAAI,KAAK,CAAC,KAAK,EAAE;gBAEb,IAAI,GAAG,GAAG,GAAG,8CAAmB,cAAc,CAAC;gBAC/C,wDAAqB,CAAC,GAAG,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;qBACxD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;oBACtB,IAAI,KAAK,GAAG,gDAAoB,CAAC,IAAI,CAAC,CAAC;oBACvC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC;oBACtC,OAAO,CAAC,KAAK,CAAC,CAAC;gBACnB,CAAC,CAAC;qBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;oBACb,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,4CAAkB,CAAC,sBAAsB,EAAE,uBAAuB,CAAC,CAAC;gBACpE,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC;aACvB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,OAAO,CAAC,IAAY,EAAE,KAAc;QACvC,MAAM,MAAM,GAAG,qBAAqB,CAAC;QAErC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,IAAI,GAAG,GAAG,GAAG,8CAAmB,oBAAoB,KAAK,CAAC,SAAS,QAAQ,IAAI,CAAC,MAAM,OAAO,8CAAgB,EAAE,CAAC;YAChH,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,EAAE;oBACL,IAAI,GAAG,CAAC,IAAI,EAAE;wBACV,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACtB,IAAI,MAAM,GAAG,IAAI,sBAAO,EAAE,CAAC;wBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;qBACnB;yBAAM;wBACH,8BAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,0CAAiB,mBAAmB,OAAO,EAAE,CAAC;wBAClH,MAAM,EAAE,CAAC;qBACZ;iBACJ;qBAAM;oBACH,8BAAW,CAAC,MAAM,EAAE,YAAY,GAAG,2BAA2B,0CAAiB,mBAAmB,OAAO,EAAE,CAAC;oBAC5G,MAAM,EAAE,CAAC;iBACZ;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,QAAQ,CAAC,KAAe,EAAE,KAAc;QAC3C,MAAM,MAAM,GAAG,sBAAsB,CAAC;QAEtC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;YACzD,2CAA2C;YAC3C,IAAI,GAAG,GAAG,GAAG,8CAAmB,wBAAwB,KAAK,CAAC,OAAO,OAAO,8CAAgB,EAAE,CAAC;YAC/F,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;gBACd,yBAAyB;gBACzB,8BAA8B;gBAC9B,yBAAyB;gBACzB,mBAAmB;YACvB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACX,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;gBAChD,IAAI,MAAM,IAAI,GAAG,EAAE;oBACf,4BAAU,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBACtI;qBAAM;oBACH,8BAAW,CAAC,MAAM,EAAE,eAAe,GAAG,cAAc,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,eAAe,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;iBAEvI;gBACD,iHAAiH;gBACjH,kDAAkD;gBAClD,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,QAAQ,CAAC,KAAe;QAE3B,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAC5C,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACjB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC/B,CAAC,CAAC,CAAC;YACH,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAErC,qCAAqC;YACrC,IAAI,GAAG,GAAG,GAAG,8CAAmB,mBAAmB,8CAAgB,EAAE,CAAC;YACtE,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,sBAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,mDAAmD;gBACnD,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,KAAe,EAAE,OAAe,EAAE,OAAgB;QAErE,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACvC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,0CAA0C;YAE1C,IAAI,SAAS,GAAG,EAAE;YAClB,IAAI,OAAO,EAAE;gBACT,SAAS,GAAG,YAAY,OAAO,EAAE;aACpC;YAED,IAAI,GAAG,GAAG,GAAG,8CAAmB,4BAA4B,OAAO,OAAO,8CAAgB,GAAG,SAAS,EAAE,CAAC;YACzG,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,IAAY;QAE1B,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YAC5C,yDAAyD;YACzD,IAAI,GAAG,GAAG,GAAG,8CAAmB,oBAAoB,oCAAW,QAAQ,IAAI,CAAC,MAAM,OAAO,8CAAgB,EAAE,CAAC;YAC5G,wDACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,sBAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,WAAW,CAAC,IAAY,EAAE,MAAc,EAAE,MAAe;QAC5D,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO;YACzC,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;YACvD,IAAI,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjD,IAAI,GAAG,GAAG,GAAG,8CAAmB,yBAAyB,MAAM,GAAG,QAAQ,OAAO,8CAAgB,EAAE,CAAC;YACpG,wDACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,EAAE;gBACP,gDAAgD;gBAChD,OAAO,CAAC,IAAI,CAAC;YACjB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,WAAW,CAAC,OAAiB;QAChC,MAAM,MAAM,GAAG,yBAAyB;QAExC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,GAAG,8CAAmB,mBAAmB,8CAAgB,EAAE,CAAC;YACtE,iEACW,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBAC7D,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,IAAI,GAAG,EAAE;oBACL,IAAI,GAAG,CAAC,IAAI,EAAE;wBACV,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACtB,IAAI,MAAM,GAAG,IAAI,sBAAO,EAAE,CAAC;wBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;wBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;qBACnB;yBAAM;wBACH,4BAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,GAAG,CAAC,MAAM,uBAAuB,OAAO,EAAE,CAAC;wBACtF,MAAM,CAAC,IAAI,uBAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;qBACnC;iBACJ;qBAAM;oBACH,4BAAU,CAAC,MAAM,EAAE,cAAc,GAAG,6BAA6B,OAAO,EAAE,CAAC;oBAC3E,MAAM,CAAC,IAAI,uBAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;iBACnC;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAGX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,WAAW,CAAC,OAAiB;QAEhC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YACjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,GAAG,8CAAmB,mBAAmB,8CAAgB,EAAE,CAAC;YACtE,iEACW,CAAC,GAAG,EAAE,EAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBAC7D,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,MAAM,GAAG,IAAI,sBAAO,EAAE,CAAC;gBAC3B,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACtB,OAAO,CAAC,MAAM,CAAC,CAAC;YACpB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAGX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,GAAkB,EAAE,GAAa,EAAE,SAAiB;QAElE,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAClC,yEAAyE;YAEzE,IAAI,QAAQ,GAAG,0CAAiB,CAAC,SAAS,CAAC,CAAC;YAC5C,IAAI,GAAG,GAAG,GAAG,8CAAmB,yBAAyB,GAAG,UAAU,QAAQ,OAAO,8CAAgB,EAAE,CAAC;YACxG,wDACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,yBAAyB;gBACzB,8BAA8B;gBAC9B,yBAAyB;gBACzB,mDAAmD;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,GAAkB,EAAE,GAAa,EAAE,SAAiB;QAElE,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAClC,yEAAyE;YAEzE,IAAI,GAAG,GAAG,GAAG,8CAAmB,yBAAyB,GAAG,UAAU,SAAS,OAAO,8CAAgB,EAAE,CAAC;YACzG,wDACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,yBAAyB;gBACzB,8BAA8B;gBAC9B,yBAAyB;gBACzB,mDAAmD;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,SAAS,CAAC,GAAa,EAAE,MAAc,EAAE,QAAgB,EAAE,QAAgB,EAAE,SAAiB;QAEjG,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAClC,2EAA2E;YAE3E,IAAI,GAAG,GAAG,GAAG,8CAAmB,2BAA2B,MAAM,QAAQ,QAAQ,SAAS,QAAQ,UAAU,SAAS,OAAO,8CAAgB,EAAE,CAAC;YAC/I,wDACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,mDAAmD;gBACnD,OAAO,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,SAAS,CAAC,GAAa,EAAE,KAAa,EAAE,KAAa,EAAE,MAAe;QAEzE,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YAClC,sEAAsE;YAEtE,IAAI,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,WAAW;YAC/C,IAAI,GAAG,GAAG,GAAG,8CAAmB,UAAU,MAAM,UAAU,KAAK,UAAU,KAAK,OAAO,8CAAgB,EAAE,CAAC;YACxG,wDACQ,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACpD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,mDAAmD;gBACnD,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;oBAC5B,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC;oBAC/B,IAAI,OAAO,KAAK,GAAG,IAAI,OAAO,KAAK,GAAG,EAAE;wBACpC,OAAO,CAAC,KAAK,CAAC,CAAC;qBAClB;yBAAM;wBACH,OAAO,CAAC,IAAI,CAAC,CAAC;qBACjB;iBACJ;qBAAM;oBACH,OAAO,CAAC,IAAI,CAAC,CAAC;iBACjB;YAEL,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QAEX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,qBAAqB,CAAC,OAAiB;QAE1C,OAAO,IAAI,OAAO,CAAoB,UAAU,OAAO,EAAE,MAAM;YAE3D,IAAI,GAAG,GAAG,GAAG,8CAAmB,8BAA8B,CAAC;YAC/D,mDAAmD;YAEnD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAEtC,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,YAAY,GAAG,yBAAyB,CAAC,IAAI,CAAC,CAAC;gBACnD,OAAO,CAAC,YAAY,CAAC,CAAC;YAC1B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,sBAAsB,CAAC,OAAiB;QAE3C,OAAO,IAAI,OAAO,CAAyB,UAAU,OAAO,EAAE,MAAM;YAEhE,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,GAAG,GAAG,GAAG,8CAAmB,8BAA8B,CAAC;YAC/D,0DACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,oDAAsB,EAAC,CAAC;iBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACR,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACtB,IAAI,YAAY,GAAG,8BAA8B,CAAC,IAAI,CAAC,CAAC;gBACxD,OAAO,CAAC,YAAY,CAAC,CAAC;YAC1B,CAAC,CAAC;iBACD,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE;gBACb,MAAM,CAAC,KAAK,CAAC,CAAC;YAClB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;CAEJ;;;;;;;;;;;;;;;;;;;;;;ACvZ6C;AACN;AACE;AACR;AACO;AACH;AACA;AACc;AACC;AACH;AACN;AAGrC,MAAM,UAAU;IAGnB,MAAM,CAAC,aAAa;QAChB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAG1C,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,iFAAY,EAAE,EAAE;gBAEhB,IAAI,OAAO,GAAG,EAAE;gBAChB,IAAI,WAAW,GAAG,gGAAuB,CAAC;gBAC1C,gEAAgE;gBAChE,IAAI,WAAW,IAAI,IAAI,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC9D,OAAO,GAAG,QAAQ,WAAW,EAAE;iBAClC;gBAED,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;gBACzB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC7C,IAAI,GAAG,GAAG,GAAG,kFAAmB,yBAAyB,KAAK,CAAC,KAAK,GAAG,OAAO,EAAE,CAAC;gBAEjF,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;qBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;wBACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;wBACpB,qCAAqC;wBACrC,IAAI,KAAK,GAAG,gFAAgB,CAAC,IAAI,CAAC,CAAC;wBACnC,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;4BACxB,qFAAqB,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;yBACpD;wBACD,OAAO,CAAC,KAAK,CAAC,CAAC;qBAClB;yBAAM;wBACH,MAAM,EAAE;qBACX;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,KAAK,CAAC,EAAE;oBACX,MAAM,CAAC,KAAK,CAAC,CAAC;gBAClB,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,sEAAW,CAAC,MAAM,EAAE,kBAAkB,oFAAiB,EAAE,CAAC,CAAC;gBAC3D,IAAI,MAAM,GAAG,IAAI,gEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,aAAa;QAChB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAE1C,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,iFAAY,EAAE,IAAI,qFAAqB,EAAE;gBAEzC,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;gBACzB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;gBAE7C,IAAI,QAAQ,GAAG,KAAK,IAAI,4FAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAC3D,IAAI,QAAQ,EAAE;oBACV,uFAAuF;oBAEvF,IAAI,GAAG,GAAG,GAAG,kFAAmB,yBAAyB,KAAK,CAAC,KAAK,EAAE,CAAC;oBAEvE,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;yBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;wBACR,IAAI,GAAG,EAAE;4BACL,IAAI,GAAG,CAAC,IAAI,EAAE;gCACV,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gCACpB,oCAAoC;gCACpC,IAAI,KAAK,GAAG,gFAAgB,CAAC,IAAI,CAAC,CAAC;gCACnC,iEAAiE;gCACjE,OAAO,CAAC,KAAK,CAAC,CAAC;6BAClB;iCAAM;gCACH,oEAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;gCACjH,MAAM,CAAC,IAAI,2DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;6BACnC;yBACJ;6BAAM;4BACH,sEAAW,CAAC,MAAM,EAAE,YAAY,GAAG,2BAA2B,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;4BAC5G,MAAM,CAAC,IAAI,2DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;4BAChC,MAAM,EAAE;yBACX;oBACL,CAAC,CAAC;yBACD,KAAK,CAAC,KAAK,CAAC,EAAE;wBACX,mBAAmB;wBACnB,MAAM,CAAC,KAAK,CAAC,CAAC;oBAClB,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,oEAAU,CAAC,MAAM,EAAE,uBAAuB,oFAAiB,UAAU,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;iBACvF;aAEJ;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,iBAAiB,oFAAiB,cAAc,0FAAoB,EAAE,CAAC,CAAC;gBAC3F,IAAI,MAAM,GAAG,IAAI,gEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,SAAS,CAAC,WAA0B;QACvC,MAAM,MAAM,GAAG,sBAAsB,CAAC;QAEtC,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,iFAAY,EAAE,EAAE;gBAEhB,IAAI,KAAK,GAAG,IAAI,6DAAM,EAAE,CAAC;gBACzB,IAAI,QAAQ,GAAG,4FAAqB,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;gBAClD,IAAI,QAAQ,EAAE;oBAEV,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;oBACnB,IAAI,UAAU,GAAW,qFAAqB,CAAC;oBAC/C,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC7C,IAAI,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,QAAQ,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACvD,IAAI,GAAG,GAAG,GAAG,kFAAmB,0BAA0B,KAAK,CAAC,KAAK,GAAG,OAAO,OAAO,UAAU,EAAE,CAAC;oBAEnG,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;yBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;wBACR,IAAI,GAAG,EAAE;4BACL,IAAI,GAAG,CAAC,IAAI,EAAE;gCACV,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gCACpB,IAAI,KAAK,GAAG,gFAAgB,CAAC,IAAI,CAAC,CAAC;gCACnC,4BAA4B;gCAC5B,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;oCACxB,qFAAqB,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iCACpD;gCACD,OAAO,CAAC,KAAK,CAAC,CAAC;6BAClB;iCAAM;gCACH,sEAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,kBAAkB,OAAO,EAAE,CAAC,CAAC;gCAClH,MAAM,EAAE,CAAC;6BACZ;yBACJ;6BAAM;4BACH,oEAAU,CAAC,MAAM,EAAE,YAAY,GAAG,2BAA2B,oFAAiB,iBAAiB,OAAO,EAAE,CAAC,CAAC;4BAC1G,MAAM,EAAE,CAAC;yBACZ;oBACL,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,IAAI,+FAA0B,CAAC,GAAG,CAAC,EAAE;4BACjC,IAAI,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;4BACxB,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG,EAAE;gCAChC,oEAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,mBAAmB,OAAO,gBAAgB,GAAG,EAAE,CAAC;6BACvI;iCAAM;gCACH,oEAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,mBAAmB,OAAO,gBAAgB,GAAG,EAAE,CAAC;6BACvI;yBACJ;wBACD,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,IAAI,qFAAkB,EAAE;wBACpB,sEAAW,CAAC,MAAM,EAAE,iBAAiB,KAAK,CAAC,KAAK,iBAAiB,WAAW,EAAE,CAAC,CAAC;qBACnF;oBACD,MAAM,CAAC,IAAI,2DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAC;iBACnC;aAEJ;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,kBAAkB,oFAAiB,EAAE,CAAC,CAAC;gBAC1D,IAAI,MAAM,GAAG,IAAI,gEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,OAAe,EAAE,QAAkB;QACjD,MAAM,MAAM,GAAG,yBAAyB,CAAC;QAEzC,OAAO,IAAI,OAAO,CAAiB,UAAU,OAAO,EAAE,MAAM;YAExD,IAAI,iFAAY,EAAE,EAAE;gBAEhB,IAAI,gBAAgB,GAAW,yFAAoB,CAAC;gBACpD,IAAI,GAAG,GAAG,GAAG,kFAAmB,oBAAoB,OAAO,OAAO,gBAAgB,EAAE,CAAC;gBAErF,IAAI,QAAQ,GAAG,2EAAa,IAAI,yFAAoB,GAAG,CAAC,CAAC;gBACzD,IAAI,SAAS,GAAG,6EAAc,IAAI,2FAAqB,GAAG,CAAC,CAAC;gBAC5D,IAAI,WAAW,GAAG,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,CAAC;gBAClD,IAAI,SAAS,IAAI,QAAQ,IAAI,WAAW,EAAE;oBACtC,6CAA6C;oBAC7C,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;oBAEvC,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;yBACrD,IAAI,CAAC,GAAG,CAAC,EAAE;wBACR,IAAI,GAAG,EAAE;4BACL,IAAI,GAAG,CAAC,IAAI,EAAE;gCACV,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gCACtB,4BAA4B;gCAC5B,IAAI,KAAK,GAAG,gFAAgB,CAAC,IAAI,CAAC,CAAC;gCACnC,IAAI,KAAK,CAAC,QAAQ,IAAI,IAAI,EAAE;oCACxB,yFAAoB,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iCACnD;gCAED,IAAI,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,OAAO,CAAC,CAAC;gCAClE,IAAI,SAAS,IAAI,SAAS,CAAC,QAAQ,EAAE;oCACjC,yDAAyD;oCACzD,iGAAwB,GAAG,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iCAC3D;gCAED,OAAO,CAAC,KAAK,CAAC,CAAC;gCAEf,+CAA+C;gCAC/C,2DAA2D;gCAC3D,sBAAsB;6BACzB;iCAAM;gCACH,sEAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;gCAC9G,MAAM,CAAC,IAAI,2DAAO,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gCACtC,OAAO,EAAE,CAAC;6BACb;yBACJ;6BAAM;4BACH,sEAAW,CAAC,MAAM,EAAE,QAAQ,GAAG,2BAA2B,oFAAiB,mBAAmB,OAAO,EAAE,CAAC;4BACxG,MAAM,CAAC,IAAI,2DAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;yBAClC;oBAEL,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;wBAEX,IAAI,+FAA0B,CAAC,GAAG,CAAC,EAAE;4BACjC,IAAI,GAAG,EAAE;gCACL,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;gCACjC,IAAI,GAAG,GAAG,QAAQ,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,oFAAiB,mBAAmB,OAAO,gBAAgB,OAAO,EAAE,CAAC;gCAC3H,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,EAAE;oCAC3F,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;oCACrB,oEAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,EAAE,CAAC,CAAC;iCAChD;qCAAM;oCACH,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,EAAE;wCACjC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;wCACrB,oEAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,EAAE,CAAC,CAAC;qCAC7C;yCAAM;wCACH,IAAI,GAAG,CAAC,KAAK,IAAI,sBAAsB,EAAE;4CACrC,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;4CACrB,oEAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,EAAE,CAAC,CAAC;yCACjD;6CAAM;4CACH,sEAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,EAAE,CAAC,CAAC;yCACpD;qCACJ;iCACJ;6BACJ;yBACJ;wBAED,kJAAkJ;wBAClJ,MAAM,CAAC,GAAG,CAAC,CAAC;oBAChB,CAAC,CAAC,CAAC;iBACV;qBAAM;oBACH,oEAAU,CAAC,MAAM,EAAE,cAAc,6EAAc,SAAS,OAAO,WAAW,2EAAa,SAAS,QAAQ,EAAE,CAAC,CAAC;oBAC5G,MAAM,CAAC,EAAC,OAAO,EAAE,mBAAmB,EAAC,CAAC,CAAC;iBAC1C;aAEJ;iBAAM;gBACH,oEAAU,CAAC,MAAM,EAAE,kBAAkB,oFAAiB,EAAE,CAAC,CAAC;gBAC1D,IAAI,MAAM,GAAG,IAAI,gEAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,yFAAyB,CAAC,CAAC;gBAC1E,uFAAe,CAAC,MAAM,CAAC,CAAC;gBACxB,OAAO,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;aACjC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;CAGJ;;;;;;;;;;;;;;;;ACzR2B;AAsErB,MAAM,gBAAgB;IAOzB,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAI,cAAc;QACd,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,KAAK,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC;IAC9D,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,6CAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,YAAY,IAAkB;QAtB9B,aAAQ,GAAY,KAAK,CAAC;QAuBtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACrB,CAAC;CACJ;AASM,MAAM,iBAAiB;CAM7B;AAEM,MAAM,eAAe;IAQxB,YAAY,IAAa;QACrB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;IACL,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,cAAc;oBACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC9B,MAAM;gBACV,KAAK,cAAc;oBACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC9B,MAAM;gBACV,KAAK,iBAAiB;oBAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjC,MAAM;gBACV,KAAK,iBAAiB;oBAClB,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjC,MAAM;gBACV,KAAK,eAAe;oBAChB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM;gBACV,KAAK,kBAAkB;oBACnB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,MAAM;aACb;SACJ;IACL,CAAC;CACJ;;;;;;;;;;;;ACvJM,MAAM,SAAS;IAMlB,YAAY,IAAa;QACrB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;IACL,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,IAAI,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;QAE9B,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,QAAQ;oBACT,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;wBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;qBACtB;yBAAM;wBACH,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;qBACvB;oBACD,MAAM;gBACV,KAAK,KAAK,CAAC;gBACX,KAAK,SAAS;oBACV,IAAI,CAAC,OAAO,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,MAAM;gBACV,KAAK,UAAU;oBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;aACb;SACJ;IACL,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAmB;QACpC,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACrB,IAAI,UAAU,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;YACrC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC,CAAC,CAAC;QAEH,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,MAAM,CAAC,SAAoB;QAC9B,OAAO;YACH,MAAM,EAAE,SAAS,CAAC,MAAM;YACxB,OAAO,EAAE,SAAS,CAAC,OAAO;YAC1B,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,GAAG,EAAE,SAAS,CAAC,GAAG;SACrB,CAAC;IACN,CAAC;CACJ;;;;;;;;;;;;ACnDD,IAAY,qBAYX;AAZD,WAAY,qBAAqB;IAC7B,iEAAQ;IACR,mFAAiB;IACjB,qFAAkB;IAClB,mFAAiB;IACjB,mFAAiB;IACjB,uFAAmB;IACnB,yFAAoB;IACpB,+FAAuB;IACvB,yFAAoB;IACpB,0GAA6B;IAC7B,oGAA0B;AAC9B,CAAC,EAZW,qBAAqB,KAArB,qBAAqB,QAYhC;;;;;;;;;;;;;;;ACjBD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IACzB,yDAAQ;IACR,uEAAe;IACf,uEAAe;AACnB,CAAC,EAJW,iBAAiB,KAAjB,iBAAiB,QAI5B;AAED,IAAY,gBAIX;AAJD,WAAY,gBAAgB;IACxB,yDAAS;IACT,iEAAa;IACb,6DAAW;AACf,CAAC,EAJW,gBAAgB,KAAhB,gBAAgB,QAI3B;AAED,IAAY,SAEX;AAFD,WAAY,SAAS;IACjB,2CAAS;AACb,CAAC,EAFW,SAAS,KAAT,SAAS,QAEpB;AAED,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC1B,2DAAQ;IACR,6DAAS;IACT,qEAAa;IACb,qFAAqB;AACzB,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;;;;;;;;;;;;;;ACpBwC;AACO;AAEzC,MAAM,WAAW;IAYpB,MAAM,CAAC,OAAO,CAAC,KAAkB;QAC7B,OAAO,GAAG,wFAAsB,GAAG,KAAK,CAAC,OAAO,MAAM,2EAAgB,EAAE,CAAC;IAC7E,CAAC;CACJ;;;;;;;;;;;;;;ACjBM,MAAM,kBAAkB;CAS9B;AAEM,MAAM,UAAU;CAetB;AAGM,MAAM,UAAU;IAEnB,MAAM,CAAC,aAAa,CAAC,SAAiB;QAClC,IAAI,QAAQ,GAAiB,EAAE,CAAC;QAChC,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;gBACvB,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;gBACpC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACvB;SACJ;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAU;QACtB,IAAI,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC5B,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACpB,OAAO,IAAI,CAAC;IAChB,CAAC;IAOD,QAAQ,CAAC,IAAU;QACf,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,gBAAgB;gBAChB,KAAK,OAAO;oBACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,UAAU;oBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,eAAe;aAClB;SACJ;IACL,CAAC;CACJ;;;;;;;;;;;;ACvEc,MAAM,WAAW;IAAhC;QAqBI,SAAI,GAAG,CAAC,CAAC;QACT,aAAQ,GAAW,EAAE,CAAC;IAoH1B,CAAC;IAlHG,MAAM,CAAC,aAAa,CAAC,SAAmB;QACpC,IAAI,OAAO,GAAkB,EAAE,CAAC;QAChC,IAAI,SAAS,IAAI,IAAI,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3C,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;gBAC5B,IAAI,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACN;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QACxB,IAAI,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAC/B,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,gBAAgB;gBAChB,KAAK,KAAK;oBACN,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,KAAK;oBACN,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK;oBACN,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK;oBACN,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,MAAM;oBACP,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,MAAM;oBACP,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,MAAM;oBACP,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,QAAQ;oBACT,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK;oBACN,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,KAAK;oBACN,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,MAAM;oBACP,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,MAAM;oBACP,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,OAAO;oBACR,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,MAAM;oBACP,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,MAAM;oBACP,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,OAAO;oBACR,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,IAAI;oBACL,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM,CAAC,qDAAqD;gBAChE,KAAK,IAAI;oBACL,MAAM,CAAC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,OAAO;oBACR,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,MAAM;oBACP,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBAEV,eAAe;aAClB;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,MAAM;QACF,IAAI,IAAI,GAAG;YACP,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,MAAM;YAChB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,EAAE,EAAE,IAAI,CAAC,EAAE;YACX,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE7B,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvD,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACnD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAChD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACvD,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAEtD,OAAO,IAAI,CAAC;IAChB,CAAC;CAGJ;;;;;;;;;;;;;;;;;;;;;;AC5I2B;AACY;AACF;AACE;AACY;AACG;AACT;AACM;AAE4B;AAEzE,MAAM,SAAS;IA4BlB,KAAK;QACD,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QAC7C,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,IAAI,aAAa;QACb,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,OAAO,4FAAqB,KAAK,qFAAsB;gBACnD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM;gBACnD,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,WAAW,GAAG,EAAE,CAAC,GAAG,EAAE,GAAG,MAAM,CAAC;SAChE;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,aAAa;QACb,IAAI,IAAI,CAAC,IAAI,EAAE;YAEX,wDAAwD;YACxD,mDAAmD;YACnD,0CAA0C;YAC1C,0DAA0D;YAC1D,IAAI,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;YACvC,kDAAkD;YAElD,OAAO,QAAQ,CAAC;YAGhB,+CAA+C;YAC/C,oCAAoC;YACpC,oBAAoB;SACvB;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACnC,CAAC;IAED,IAAI,iBAAiB;QACjB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,mFAAiB,EAAE;YACtD,IAAI,MAAM,GAAG,qFAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClD,IAAI,MAAM,EAAE;gBACR,OAAO,MAAM,CAAC,QAAQ,CAAC;aAC1B;SACJ;QAED,OAAO,0FAAuB,CAAC;IACnC,CAAC;IAED,IAAI,iBAAiB;QACjB,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,OAAO,GAAG,sDAAe,CAAC,IAAI,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC;SAChE;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,+FAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC7C,sDAAsD;IAC1D,CAAC;IAED,IAAI,aAAa;QACb,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,+EAAmB;gBACpB,OAAO,UAAU,CAAC;YAEtB,KAAK,iFAAoB;gBACrB,OAAO,WAAW,CAAC;YAEvB,KAAK,uEAAe;gBAChB,OAAO,YAAY,CAAC;YAExB,KAAK,2EAAiB;gBAClB,OAAO,OAAO,CAAC;YAEnB,KAAK,yEAAgB;gBACjB,OAAO,MAAM,CAAC;SACrB;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,SAAS;QACT,IAAI,IAAI,CAAC,IAAI,KAAK,+EAAmB,EAAE;YACnC,OAAO,SAAS,CAAC;SACpB;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAKD,IAAW,UAAU;QACjB,IAAI,UAAU,GAAW,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE;YACtD,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YAC9B,8DAA8D;SACjE;aAAM;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,mFAAiB,CAAC;YACzE,MAAM,UAAU,GAAG,+EAAkB,IAAI,6FAAyB,GAAG,CAAC,CAAC;YACvE,IAAI,WAAW,IAAI,UAAU,EAAE;gBAC3B,IAAI,MAAM,GAAG,qFAAqB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAClD,IAAI,MAAM,EAAE;oBACR,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACnC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;oBAC/B,uDAAuD;iBAC1D;aACJ;SAEJ;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAEM,QAAQ,CAAC,gBAAkC;;QAC9C,OAAO,UAAI,CAAC,KAAK,0CAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,gBAAgB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACxF,CAAC;IAEM,SAAS;;QACZ,OAAO,UAAI,CAAC,KAAK,0CAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,QAAQ,KAAK,iHAAsB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAChG,CAAC;IAEM,QAAQ,CAAC,KAAa;QACzB,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,KAAK,EAAE;YACrD,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,KAAK,CAAC,CAAC;SAClC;aAAM;YACH,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IAEM,aAAa;QAChB,IAAI,IAAI,CAAC,SAAS,EAAE,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE;YAC7C,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC;SAC9B;aAAM;YACH,OAAO,SAAS,CAAC;SACpB;IACL,CAAC;IAED,2BAA2B;IAC3B,yBAAyB;IACzB,gCAAgC;IAChC,iCAAiC;IACjC,8BAA8B;IAC9B,qGAAqG;IACrG,yCAAyC;IACzC,8CAA8C;IAC9C,UAAU;IACV,eAAe;IACf,qGAAqG;IACrG,yCAAyC;IACzC,8CAA8C;IAC9C,UAAU;IACV,EAAE;IACF,4BAA4B;IAC5B,4CAA4C;IAC5C,EAAE;IACF,8BAA8B;IAC9B,8CAA8C;IAC9C,EAAE;IACF,6BAA6B;IAC7B,4CAA4C;IAC5C,MAAM;IACN,EAAE;IACF,eAAe;IACf,IAAI;IAEJ,iCAAiC;IACjC,yCAAyC;IACzC,iBAAiB;IACjB,MAAM;IACN,2BAA2B;IAC3B,IAAI;IAEJ,YAAY,IAAK;QA1MjB,cAAS,GAAG,KAAK,CAAC;QAuBlB,mBAAc,GAAY,KAAK,CAAC;QAChC,aAAQ,GAAW,CAAC,CAAC;QA8Fb,gBAAW,GAAW,IAAI,CAAC;QAC3B,cAAS,GAAW,IAAI,CAAC;QAoF7B,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;IACL,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAmB;QACpC,IAAI,KAAK,GAAgB,EAAE,CAAC;QAC5B,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;gBAC5B,IAAI,IAAI,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,CAAC;gBAC/B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,gBAAgB;gBAChB,KAAK,GAAG;oBACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,eAAe;aAClB;SACJ;IACL,CAAC;IAED,WAAW,CAAC,IAAe,EAAE,WAAoB,KAAK;QAClD,IAAI,QAAQ,EAAE;YACV,2DAA2D;YAC3D,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;SACnC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,uGAA8B,EAAE;YAChC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,mBAAK,KAAK,EAAE,CAAC,CAAC;SAC5D;IACL,CAAC;IAED,MAAM;QACF,IAAI,IAAI,GAAG;YACP,GAAG,EAAE,IAAI,CAAC,MAAM;YAChB,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,EAAE,EAAE,IAAI,CAAC,MAAM;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;YAC7B,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC;QAGF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACnD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACnD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,mFAAiB;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACtF,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAEhD,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YAChD,IAAI,MAAM,GAAG,4FAAqB,CAAC;YACnC,sEAAW,CAAC,kBAAkB,EAAE,2BAA2B,IAAI,qBAAqB,MAAM,EAAE,CAAC,CAAC;SACjG;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;CACJ;;;;;;;;;;;;;;;;;;;ACrXuD;AAChB;AACA;AACA;AACM;AACN;AAEc;AAI/C,MAAM,OAAO;IAApB;QAWI,eAAU,GAAe,EAAE,CAAC;QAC5B,mBAAc,GAAW,CAAC,CAAC;QAG3B,YAAO,GAAa,EAAE,CAAC;QACvB,UAAK,GAAa,EAAE,CAAC;QACrB,WAAM,GAAc,EAAE,CAAC;QACvB,UAAK,GAAa,EAAE,CAAC;QACrB,YAAO,GAAgB,EAAE,CAAC;QAC1B,UAAK,GAAa,EAAE,CAAC;QACrB,UAAK,GAAa,EAAE,CAAC;QACrB,eAAU,GAAmB,EAAE,CAAC;IAiPpC,CAAC;IAxOG,IAAI,OAAO;QACP,OAAO,+DAAU,CAAC;IACtB,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,mBAAmB;IAEnB,MAAM,CAAC,QAAQ,CAAC,IAAU;QACtB,IAAI,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,QAAQ,CAAC,IAAU;QAGf,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBAET,KAAK,cAAc;oBACf,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC9B,qDAAqD;oBACrD,MAAM;gBAEV,SAAS;gBACT,KAAK,OAAO;oBACR,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAChC,MAAM;gBAEV,KAAK,OAAO;oBACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACnC,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,WAAW;oBACZ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBAEV,KAAK,OAAO,CAAC;gBACb,KAAK,OAAO;oBACR,yEAAyE;oBACzE,IAAI,CAAC,OAAO,GAAG,yFAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM;gBAEV,KAAK,MAAM,CAAC;gBACZ,KAAK,YAAY;oBACb,IAAI,CAAC,OAAO,GAAG,8FAAuB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAClD,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC;oBACjC,MAAM;gBAEV,KAAK,QAAQ,CAAC;gBACd,KAAK,QAAQ;oBACT,IAAI,CAAC,MAAM,GAAG,2FAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC/C,MAAM;gBAEV,KAAK,QAAQ,CAAC;gBACd,KAAK,OAAO,CAAC;gBACb,KAAK,WAAW;oBACZ,IAAI,CAAC,KAAK,GAAG,wFAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7C,iFAAiF;oBACjF,MAAM;gBAEV,KAAK,OAAO,CAAC;gBACb,KAAK,WAAW;oBACZ,IAAI,CAAC,KAAK,GAAG,wFAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7C,MAAM;gBAEV,KAAK,OAAO,CAAC;gBACb,KAAK,OAAO,CAAC,CAAC;oBACV,IAAI,CAAC,KAAK,GAAG,wFAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7C,MAAM;iBACT;gBAED,KAAK,OAAO,CAAC,CAAC;oBACV,uDAAuD;oBACvD,IAAI,CAAC,KAAK,GAAG,wFAAoB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;oBACzC,MAAM;iBACT;gBAED,KAAK,SAAS,CAAC,CAAC;oBACZ,IAAI,CAAC,WAAW,GAAG,IAAI,+DAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC1C,yBAAyB;oBACzB,MAAM;iBACT;gBACD,KAAK,SAAS;oBACV,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAe,CAAC;oBAC1C,MAAM;gBAEV,KAAK,WAAW;oBACZ,qDAAqD;oBACrD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAChC,MAAM;gBAEV,KAAK,KAAK,EAAE,WAAW;oBACnB,qDAAqD;oBACrD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBAEV,KAAK,QAAQ,EAAE,WAAW;oBACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBAEV,KAAK,QAAQ,EAAE,WAAW;oBACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBAEV,KAAK,QAAQ,EAAE,WAAW;oBACtB,IAAI,CAAC,UAAU,GAAG,gGAA0B,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACxD,MAAM;aAEb;SACJ;QAED,sCAAsC;QACtC,6CAA6C;QAC7C,8CAA8C;QAC9C,MAAM;QACN,MAAM;QACN,2CAA2C;QAC3C,sDAAsD;QACtD,IAAI;QAEJ,8EAA8E;QAC9E,4EAA4E;QAC5E,0EAA0E;QAC1E,4EAA4E;QAC5E,8EAA8E;QAC9E,4EAA4E;QAC5E,0EAA0E;QAC1E,sBAAsB;IAC1B,CAAC;IAGD,kBAAkB,CAAC,IAAY;QAC3B,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAChC,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;aACb;SACJ;IACL,CAAC;IAED,sBAAsB;IAGtB,OAAO;QACH,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,OAAO,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC9C,OAAO,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,OAAO,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,OAAO,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;YAChD,OAAO,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,OAAO,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5C,OAAO,GAAG,KAAK,CAAC;SACnB;aAAM,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YACtD,OAAO,GAAG,KAAK,CAAC;SACnB;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IACnC,CAAC;IAGM,WAAW,CAAC,GAAW,EAAE,GAAe;QAC3C,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;YACzF,IAAI,MAAM,EAAE;gBACR,WAAW,GAAG,IAAI,CAAC;aACtB;SACJ;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAGM,WAAW,CAAC,UAAyB,EAAE,GAAe;QACzD,IAAI,OAAO,GAAe,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,IAAI,CAAC,CAAC,GAAG,KAAK,GAAG,IAAI,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;SAClG;QACD,qEAAqE;QACrE,OAAO,OAAO,CAAC;IACnB,CAAC;CAEJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClR2B;AAKsB;AACsB;AAC1B;AACR;AACyC;AAE7B;AACE;AACA;AACF;AACI;AAC5B;AACY;AAE/B,MAAM,SAAS;IAAtB;QAcI,gBAAW,GAAI,CAAC,CAAC;QACjB,eAAU,GAAI,KAAK,CAAC;IAoBxB,CAAC;IAlBG,MAAM,CAAC,iBAAiB,CAAC,IAAe;QACpC,IAAI,YAAY,GAAG,KAAK,CAAC;QACzB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,QAAQ,IAAI,CAAC,GAAG,EAAE;gBACd,KAAK,wEAAe;oBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;wBAAE,YAAY,GAAG,IAAI,CAAC;oBAChE,MAAM;gBACV,KAAK,wEAAe;oBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;wBAAE,YAAY,GAAG,IAAI,CAAC;oBAChE,MAAM;gBACV,KAAK,wEAAe;oBAChB,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,SAAS;wBAAE,YAAY,GAAG,IAAI,CAAC;oBAChE,MAAM;aACb;SACJ;QACD,OAAO,YAAY,CAAC;IACxB,CAAC;CAEJ;AAGM,MAAM,KAAK;IAAlB;QAEI,sBAAsB;QA0LtB,QAAG,GAAW,CAAC,CAAC;QAChB,QAAG,GAAW,CAAC,CAAC;QAChB,QAAG,GAAW,CAAC,CAAC;QAChB,SAAI,GAAe,wEAAe,CAAC;QAOnC,YAAO,GAAY,IAAI,CAAC;QACxB,aAAQ,GAAY,IAAI,CAAC;QACzB,YAAO,GAAY,KAAK,CAAC;QACzB,YAAO,GAAY,KAAK,CAAC;QACzB,eAAU,GAAY,KAAK,CAAC;QAC5B,WAAM,GAAY,KAAK,CAAC;QACxB,aAAQ,GAAW,CAAC,CAAC;QACrB,YAAO,GAAW,CAAC,CAAC;QACpB,UAAK,GAAY,KAAK,CAAC;QAEvB,WAAM,GAAY,KAAK,CAAC;QACxB,eAAU,GAAW,CAAC,CAAC;QAEvB,UAAK,GAAW,CAAC,CAAC;QAClB,QAAG,GAAW,CAAC,CAAC;QAChB,SAAI,GAAW,EAAE,CAAC;QAEV,oBAAe,GAAW,CAAC,CAAC;QAC5B,uBAAkB,GAAW,CAAC,CAAC;QAC/B,uBAAkB,GAAW,CAAC,CAAC;QAOvC,aAAQ,GAAW,CAAC,CAAC;QACrB,mBAAc,GAAW,CAAC,CAAC;QAC3B,eAAU,GAAY,KAAK,CAAC;QAC5B,cAAS,GAAY,KAAK,CAAC;QAma3B,aAAQ,GAAW,SAAS,CAAC;IAyoCjC,CAAC;IA3wDG,MAAM,CAAC,SAAS,CAAC,KAAc;QAC3B,IAAI,GAAG,GAAU,IAAI,CAAC;QACtB,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,GAAG,0EAAgB,CAAC;YAC5B,GAAG,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,CAAC;YACvB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC;YACvB,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACpB,GAAG,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,KAAK,CAAC;SACrB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QACxB,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9B,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,GAAU,EAAE,IAAY;QACzC,IAAI,KAAK,GAAG,0GAAwB,CAAC;QACrC,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;YAC/B,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACzB,GAAG,CAAC,IAAI,GAAG,wEAAe,CAAC;YAC3B,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACjC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACtC,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;YACtC,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACjC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;YACvB,uDAAuD;YAGvD,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,IAAI,IAAI,IAAI,EAAE;gBACd,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;gBAClB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAE9B,+CAA+C;gBAC/C,yFAAyF;gBACzF,IAAI;gBAEJ,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACxC,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC5C,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;gBACtE,GAAG,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACxB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;aAC5B;iBAAM;gBACH,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;gBACxC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;gBACrB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;aAC/C;SAEJ;IACL,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,IAAa;QAC7B,IAAI,GAAG,GAAU,IAAI,CAAC;QACtB,IAAI,KAAK,GAAG,0GAAwB,CAAC;QACrC,IAAI,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YAClC,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,GAAG,wEAAe,CAAC;YAC3B,0CAA0C;YAC1C,GAAG,CAAC,EAAE,GAAG,sFAAkB,EAAE,CAAC;YAC9B,GAAG,CAAC,aAAa,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC,CAAC;YAEzC,gEAAgE;YAChE,IAAI,SAAgB,CAAC;YACrB,IAAI,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,4GAAyB,CAAC,CAAC;YACtF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,IAAI,cAAc,CAAC,MAAM,IAAI,CAAC,EAAE;oBAC5B,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;iBACjC;qBAAM;oBACH,IAAI,YAAY,GAAG,IAAI;yBAClB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,4GAAyB,CAAC;yBAC3D,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE;wBACb,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;4BAAE,OAAO,CAAC,CAAC,CAAC;wBAC/B,IAAI,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG;4BAAE,OAAO,CAAC,CAAC;wBAC9B,OAAO,CAAC,CAAC;oBACb,CAAC,CAAC;oBACN,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,CAAC;iBAC/B;aACJ;iBAAM;gBACH,SAAS,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aACvB;YAGD,IAAI,SAAS,EAAE;gBACX,IAAI,SAAS,GAAG,kGAAwB,CAAC,SAAS,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC;gBACvE,GAAG,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,MAAM,YAAY,SAAS,EAAE,CAAC;gBAClD,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;gBACxB,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;gBACxB,GAAG,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;gBACxB,GAAG,CAAC,OAAO,GAAG,SAAS,CAAC,GAAG,CAAC;aAC/B;iBAAM;gBACH,oFAAkB,CAAC,6BAA6B,EAAE,IAAI,EAAE,SAAS,CAAC,CAAC;aACtE;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QACxB,IAAI,GAAG,GAAU,IAAI,CAAC;QACtB,IAAI,IAAI,EAAE;YACN,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,GAAG,wEAAe,CAAC;YAC3B,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC;YACpB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,6BAA6B;YAC7B,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrB,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;YAClB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YACjC,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC;SAC1B;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QACxB,IAAI,GAAG,GAAU,IAAI,CAAC;QACtB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,GAAG,wEAAe,CAAC;YAC3B,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;YACrB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACnB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;YAChB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YAGrB,IAAI,KAAK,GAAG,0GAAwB,CAAC;YACrC,IAAI,KAAK,EAAE;gBACP,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC;aACrE;SAEJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,MAAc;QAC5B,IAAI,GAAG,GAAU,IAAI,CAAC;QACtB,IAAI,MAAM,IAAI,IAAI,EAAE;YAChB,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;YAClB,GAAG,CAAC,IAAI,GAAG,4EAAiB,CAAC;YAC7B,GAAG,CAAC,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC;YACvB,GAAG,CAAC,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC;YAE5B,yEAAyE;YACzE,+DAA+D;YAE/D,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,GAAG,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC;YAC1B,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC;YAEpB,8CAA8C;YAC9C,oEAAoE;SACvE;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAmDD,IAAI,IAAI;QACJ,OAAO,kFAAY,CAAC;IACxB,CAAC;IAGD,IAAI,OAAO;QACP,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE;YAC/B,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,IAAI,OAAO;QACP,IAAI,IAAI,CAAC,IAAI,IAAI,wEAAe,IAAI,IAAI,CAAC,IAAI,EAAE;YAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC/B;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,IAAI,iBAAiB;QACjB,IAAI,IAAI,CAAC,IAAI,KAAK,wEAAe,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACnE,OAAO,IAAI,CAAC;SACf;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,IAAI,cAAc;QACd,IAAI,IAAI,CAAC,IAAI,KAAK,wEAAe,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;YACpE,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;SACrC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,IAAI,eAAe;QACf,IACI,IAAI,CAAC,IAAI,KAAK,wEAAe;YAC7B,IAAI,CAAC,IAAI;YACT,IAAI,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,IAAI,CAAC,MAAM;YAChB,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EACtB;YACE,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;YAC/B,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE;gBAC/B,OAAO,IAAI,CAAC;aACf;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,IAAI,OAAO;QACP,IAAI,IAAI,CAAC,IAAI,IAAI,wEAAe,IAAI,IAAI,CAAC,IAAI,EAAE;YAC3C,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YAEjC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC3B,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;aACvB;YAED,OAAO,CAAC,CAAC;YACT,uBAAuB;SAC1B;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IAGD,IAAI,WAAW;QACX,IAAI,IAAI,CAAC,IAAI,KAAK,wEAAe,EAAE;YAC/B,OAAO,EAAE,CAAC;SACb;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAGD,IAAI,UAAU;QACV,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,OAAO,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC;iBAC/B;gBACD,MAAM;YAEV,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,OAAO,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC;iBACpC;gBACD,MAAM;YAEV,KAAK,0EAAgB;gBACjB,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,OAAO,gBAAgB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,CAAC;iBACtD;gBACD,MAAM;SACb;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAGD,IAAI,YAAY;QACZ,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;iBAClC;gBACD,MAAM;YAEV,KAAK,0EAAgB;gBACjB,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,OAAO,eAAe,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;iBACtD;gBACD,MAAM;SACb;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAGD,IAAI,QAAQ;QACR,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;iBACjC;gBACD,MAAM;YAEV,KAAK,0EAAgB;gBAEjB,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,QAAQ,GAAG,eAAe,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC;oBACvD,+DAA+D;iBAClE;gBAED,MAAM;SAEb;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,IAAI,cAAc;QACd,MAAM,UAAU,GAAG,6CAAM,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QACrF,MAAM,QAAQ,GAAG,gBAAgB,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,IAAI,SAAS;QACT,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC;QACf,QAAQ,IAAI,CAAC,IAAI,EAAE;YAEf,KAAK,0EAAgB;gBACjB,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,KAAK,GAAG,CAAC,CAAC;iBACb;gBACD,MAAM;YAEV,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,IAAI,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;wBACpB,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;qBAC7B;yBAAM;wBACH,KAAK,GAAG,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC;qBAC/B;iBACJ;gBACD,MAAM;YAEV,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBACjD;gBACD,MAAM;YAEV,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;iBACjD;gBACD,MAAM;SACb;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,UAAU,CAAC,MAAM,EAAE,MAAM;QACrB,IAAI,UAAU,GAAG,MAAM,CAAC;QACxB,IAAI,CAAC,MAAM,EAAE;YACT,UAAU,GAAG,SAAS,MAAM,EAAE,CAAC;SAClC;QACD,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;YACxC,MAAM,SAAS,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC3C,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,SAAS,CAAC;YACxC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2BAA2B;SAClD;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,IAAI,aAAa;QACb,IAAI,OAAO,GAAG,EAAE;QAChB,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC;iBACrC;gBACD,MAAM;YAEV,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACnD;gBACD,MAAM;SACb;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,IAAI,OAAO;QACP,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;iBAC5B;gBACD,MAAM;YAEV,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;iBAC5B;gBACD,MAAM;YAEV,KAAK,wEAAe;gBAChB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;iBAC5B;gBACD,MAAM;YAGV,KAAK,0EAAgB;gBACjB,0CAA0C;gBAC1C,IAAI,IAAI,CAAC,KAAK,EAAE;oBACZ,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;oBAC1B,oDAAoD;iBACvD;gBACD,MAAM;YACV,uBAAuB;YACvB,WAAW;SACd;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAGD,IAAI,OAAO;QACP,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,CAAC,IAAI,KAAK,wEAAe,EAAE;YAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACrB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YAElC,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,GAAG,GAAG,qFAAyB,CAAC;aACnC;iBAAM;gBACH,IAAI,IAAI,IAAI,KAAK,EAAE;oBACf,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;iBAC3C;aACJ;SACJ;aAAM;YACH,GAAG,GAAG,CAAC,CAAC,CAAC;SACZ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAGD,IAAI,UAAU;QACV,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,yFAAyF;QACzF,IAAI,QAAQ,GAAG,CAAC,wEAAe,EAAE,0EAAgB,CAAC,CAAC;QACnD,IAAI,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE;YACtC,UAAU,GAAG,IAAI,CAAC;SACrB;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAGD,IAAI,GAAG;QACH,IAAI,GAAW,CAAC;QAChB,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,gBAAgB;YAChB,KAAK,0EAAgB;gBACjB,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBACzB,MAAM;YACV,KAAK,wEAAe;gBAChB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBACvB,MAAM;YACV,KAAK,wEAAe;gBAChB,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;gBACvB,MAAM;YACV,KAAK,wEAAe,CAAC,CAAC;gBAClB,IAAI,IAAI,CAAC,IAAI,EAAE;oBACX,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;iBAC1B;gBACD,qCAAqC;gBACrC,MAAM;aACT;YACD,eAAe;SAClB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,SAAS;QACT,IAAI,QAAgB,CAAC;QACrB,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,gBAAgB;YAChB,KAAK,wEAAe;gBAChB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC/B,MAAM;YACV,KAAK,wEAAe;gBAChB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC/B,MAAM;YACV,KAAK,wEAAe;gBAChB,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAC/B,MAAM;YACV,eAAe;SAClB;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,SAAS,CAAC,QAAgB;QAC1B,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,gBAAgB;YAChB,KAAK,wEAAe;gBAChB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC/B,MAAM;YACV,KAAK,wEAAe;gBAChB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC/B,MAAM;YACV,KAAK,wEAAe;gBAChB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;gBAC/B,MAAM;YACV,eAAe;SAClB;IACL,CAAC;IAGD,IAAI,SAAS;QACT,IAAI,SAAiB,CAAC;QACtB,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,gBAAgB;YAChB,KAAK,wEAAe;gBAChB,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC,MAAM;YACV,KAAK,wEAAe;gBAChB,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC,MAAM;YACV,KAAK,wEAAe;gBAChB,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBAChC,MAAM;YACV,eAAe;SAClB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,SAAS,CAAC,SAAiB;QAC3B,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,gBAAgB;YAChB,KAAK,wEAAe;gBAChB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAChC,MAAM;YACV,KAAK,wEAAe;gBAChB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAChC,MAAM;YACV,KAAK,wEAAe;gBAChB,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;gBAChC,MAAM;YACV,eAAe;SAClB;IACL,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,MAAM,EAAE,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC9C,MAAM,GAAG,GAAG,QAAQ,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1C,GAAG,CAAC,GAAG,GAAG,iCAAiC,CAAC;QAC5C,GAAG,CAAC,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC;QAC5B,OAAO,CAAC,EAAE,GAAG,uBAAuB;QAEpC,OAAO,CAAC,KAAK,CAAC,KAAK,GAAG,MAAM,CAAC;QAC7B,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC9B,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACzB,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;QACxB,OAAO,EAAE,CAAC;IACd,CAAC;IAED,kBAAkB;QACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;IACzB,CAAC;IAID,IAAI,OAAO;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,EAAE;SACvC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAGD,IAAI,OAAO;QACP,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE;YAChB,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;SACjD;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAID,IAAI,OAAO;QACP,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,GAAG,GAAG,gHAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACpD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,OAAO,GAAG,CAAC;SACd;aAAM;YACH,IAAI;iBACC,YAAY,EAAE;iBACd,IAAI,CAAC,MAAM,CAAC,EAAE;gBACX,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;YAC3B,CAAC,CAAC,CAAC;SACV;QACD,kEAAkE;QAClE,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAGD,YAAY;QACR,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,oBAAoB,CAAC;QACpC,IAAI,GAAW,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAS,CAAC,OAAO,EAAE,EAAE;YAEnC,QAAQ,IAAI,CAAC,IAAI,EAAE;gBAEf,KAAK,0EAAgB,CAAC,CAAC;oBACnB,GAAG,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACzB,OAAO,CAAC,GAAG,CAAC,CAAC;oBACb,MAAM;iBACT;gBAED,KAAK,wEAAe,CAAC,CAAC;oBAClB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACrB,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;wBACxB,IAAI,GAAG,GAAG,gHAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACpD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;4BACvB,4CAA4C;4BAC5C,OAAO,CAAC,GAAG,CAAC,CAAC;yBAChB;6BAAM;4BACH,KAAK;iCACA,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;iCAC1C,IAAI,CAAC,OAAO,CAAC,EAAE;gCACZ,oDAAoD;gCACpD,OAAO,CAAC,OAAO,CAAC,CAAC;4BACrB,CAAC,CAAC,CAAC;yBACV;qBAEJ;oBACD,MAAM;iBACT;gBAED,KAAK,wEAAe,CAAC,CAAC;oBAClB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACrB,IAAI,IAAI,EAAE;wBACN,IAAI,GAAG,GAAG,gHAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACpD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;4BACvB,OAAO,CAAC,GAAG,CAAC,CAAC;yBAChB;6BAAM;4BACH,KAAK;iCACA,iBAAiB,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;iCAC7C,IAAI,CAAC,OAAO,CAAC,EAAE;gCACZ,GAAG,GAAG,OAAO,CAAC;gCACd,OAAO,CAAC,GAAG,CAAC,CAAC;4BACjB,CAAC,CAAC,CAAC;yBACV;wBACD,2FAA2F;qBAC9F;oBACD,eAAe;oBACf,MAAM;iBACT;gBAED,KAAK,wEAAe,CAAC,CAAC;oBAClB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;oBACrB,IAAI,IAAI,EAAE;wBAEN,IAAI,GAAG,GAAG,gHAA2B,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACpD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;4BACvB,OAAO,CAAC,GAAG,CAAC,CAAC;yBAChB;6BAAM;4BACH,KAAK;iCACA,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,OAAO,CAAC;iCAC1C,IAAI,CAAC,OAAO,CAAC,EAAE;gCACZ,OAAO,CAAC,OAAO,CAAC,CAAC;4BACrB,CAAC,CAAC,CAAC;4BACP,8DAA8D;yBACjE;qBACJ;oBACD,eAAe;oBACf,MAAM;iBACT;gBAED,KAAK,4EAAiB,CAAC,CAAC;oBACpB,iCAAiC;oBACjC,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;oBACzB,IAAI,MAAM,EAAE;wBACR,IAAI,MAAM,CAAC,QAAQ,EAAE;4BACjB,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC;4BACtB,0CAA0C;yBAC7C;qBACJ;yBAAM;wBACH,oFAAkB,CAAC,qBAAqB,CAAC,CAAC;qBAC7C;oBACD,OAAO,CAAC,GAAG,CAAC,CAAC;oBACb,MAAM;iBACT;aACJ;QAEL,CAAC,CAAC,CAAC;IAEP,CAAC;IAGD,IAAI,QAAQ;QACR,IAAI,QAAQ,CAAC;QACb,IAAI,IAAI,CAAC,IAAI;YAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;aAC/B,IAAI,IAAI,CAAC,IAAI;YAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;aACpC,IAAI,IAAI,CAAC,MAAM;YAAE,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;aACxC,IAAI,IAAI,CAAC,KAAK;YAAE,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC;aACtC,IAAI,IAAI,CAAC,IAAI;YAAE,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QACzC,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGO,WAAW;QACf,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC1C,QAAQ,KAAK,CAAC,OAAO,EAAE;gBACnB,KAAK,CAAC;oBACF,GAAG,GAAG,GAAG,UAAU,sCAAsC,CAAC;oBAC1D,MAAM;gBACV,KAAK,CAAC;oBACF,GAAG,GAAG,GAAG,UAAU,8BAA8B,CAAC;oBAClD,MAAM;gBACV,KAAK,CAAC;oBACF,GAAG,GAAG,GAAG,UAAU,mCAAmC,CAAC;oBACvD,MAAM;gBACV,KAAK,CAAC;oBACF,GAAG,GAAG,GAAG,UAAU,qCAAqC,CAAC;oBACzD,MAAM;gBACV,KAAK,CAAC;oBACF,GAAG,GAAG,GAAG,UAAU,gCAAgC,CAAC;oBACpD,MAAM;gBACV,KAAK,CAAC;oBACF,GAAG,GAAG,GAAG,UAAU,4CAA4C,CAAC;oBAChE,MAAM;gBAEV;oBACI,GAAG,GAAG,sCAAsC,CAAC;oBAC7C,sEAAW,CAAC,mBAAmB,EAAE,6BAA6B,KAAK,CAAC,OAAO,cAAc,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;oBAC1G,MAAM;aACb;SACJ;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAGD,IAAI,MAAM;QACN,qDAAqD;QACrD,IAAI,CAAC,GAAG,CAAC,CAAC;QAEV,oDAAoD;QACpD,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAE5C,QAAQ,IAAI,CAAC,IAAI,EAAE;YAEf,KAAK,wEAAe,CAAC;YACrB,KAAK,wEAAe;gBAChB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClB,CAAC,GAAG,CAAC,CAAC;oBACN,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;oBACvC,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE;wBACtD,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM;qBACjD;oBAED,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE;wBACrD,CAAC,GAAG,SAAS,GAAG,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;qBAChC;iBACJ;gBACD,MAAM;YAEV,KAAK,wEAAe;gBAChB,CAAC,GAAG,CAAC,CAAC;gBACN,MAAM;YACV,KAAK,4EAAiB;gBAClB,CAAC,GAAG,CAAC,CAAC;gBACN,MAAM;SAEb;QAED,+CAA+C;QAC/C,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,2EAA2E;QAC3E,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,IAAI,KAAK;QACL,qDAAqD;QACrD,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,KAAK,wEAAe;gBAChB,KAAK,GAAG,CAAC,CAAC;gBACV,MAAM;YACV,KAAK,wEAAe;gBAChB,KAAK,GAAG,EAAE,GAAG,EAAE,CAAC;gBAChB,MAAM;SACb;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,IAAI,KAAK,wEAAe,CAAC;IACzC,CAAC;IAGD,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,IAAI,KAAK,wEAAe,CAAC;IACzC,CAAC;IAGD,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;IAC/D,CAAC;IAED,YAAY;IAGJ,eAAe,CAAC,IAAY,EAAE,KAAc;QAEhD,IAAI,GAAG,GAAG,CAAC,CAAC;QACZ,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,GAAG,GAAG,qFAAyB,CAAC;SACnC;aAAM;YAEH,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,GAAG,GAAG,qFAAyB,CAAC;aACnC;iBAAM;gBAEH,IAAI,IAAI,CAAC,OAAO,EAAE;oBACd,GAAG,GAAG,+EAAsB,CAAC;oBAE7B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,sFAAsB,EAAE;wBACzD,GAAG,GAAG,2FAA4B,CAAC;qBACtC;yBAAM,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,IAAI,4EAAiB,EAAE;wBAC3D,GAAG,GAAG,2FAA4B,CAAC;qBACtC;iBACJ;qBAAM;oBACH,sCAAsC;oBACtC,GAAG,GAAG,2FAA4B,CAAC;iBACtC;aACJ;SACJ;QAED,OAAO,GAAG,CAAC;IACf,CAAC;IAGD,aAAa;QAET,IAAI,IAAI,GAAG,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QACpC,wEAAwE;QACxE,IAAI,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC5C,QAAQ,IAAI,CAAC,IAAI,EAAE;YAEf,KAAK,0EAAgB,CAAC,CAAC;gBACnB,IAAI,GAAG,EAAC,GAAG,EAAE,0EAAgB,EAAE,GAAG,EAAE,KAAK,CAAC,OAAO,EAAC,CAAC;gBACnD,MAAM;aACT;YAED,KAAK,wEAAe,CAAC,CAAC;gBAClB,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE;oBACjB,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;iBAC1D;qBAAM;oBACH,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;iBACtD;gBACD,MAAM;aACT;YAED,KAAK,wEAAe,CAAC,CAAC;gBAClB,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAChD,MAAM;aACT;YAED,KAAK,wEAAe,CAAC,CAAC;gBAClB,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;gBAChD,MAAM;aACT;YAED,KAAK,4EAAiB,CAAC,CAAC;gBACpB,kDAAkD;gBAClD,MAAM;aACT;YAED;gBACI,oFAAkB,CAAC,sBAAsB,EAAE,IAAI,CAAC,IAAI,CAAC;gBACrD,MAAM;SAEb;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,iBAAiB,CAAC,IAAe,EAAE,UAAmB;QAC1D,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,IAAI,EAAE;YACN,IAAI,GAAG;gBACH,GAAG,EAAE,wEAAe;gBACpB,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,IAAI,CAAC,SAAS;gBACrB,GAAG,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;SACL;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,iBAAiB,CAAC,IAAe,EAAE,UAAmB;QAC1D,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,IAAI,EAAE;YACN,2FAA2F;YAC3F,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC/B,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;YACxB,IAAI,CAAC,SAAS;gBAAE,SAAS,GAAG,SAAS,GAAG,sHAAkC,CAAC,GAAG,CAAC,CAAC;YAChF,IAAI,GAAG;gBACH,GAAG,EAAE,wEAAe;gBACpB,UAAU,EAAE,UAAU;gBACtB,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,IAAI,CAAC,KAAK;aAClB,CAAC;SACL;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,iBAAiB,CAAC,KAAc,EAAE,IAAe,EAAE,UAAmB;QAC1E,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACrB,IAAI,IAAI,EAAE;YACN,IAAI,GAAG,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YAC5C,IAAI,KAAK,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,gGAA0B,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;YACpE,IAAI,GAAG;gBACH,GAAG,EAAE,IAAI,CAAC,IAAI;gBACd,GAAG,EAAE,GAAG;gBACR,KAAK,EAAE,KAAK;gBACZ,UAAU,EAAE,UAAU;gBACtB,GAAG,EAAE,IAAI,CAAC,OAAO;gBACjB,GAAG,EAAE,IAAI,CAAC,GAAG;gBACb,MAAM,EAAE,IAAI,CAAC,WAAW;gBACxB,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;gBAC5C,GAAG,EAAE,IAAI,CAAC,UAAU;gBACpB,GAAG,EAAE,IAAI,CAAC,KAAK;gBACf,MAAM,EAAE,IAAI,CAAC,QAAQ,EAAE;aAC1B,CAAC;YAEF,kCAAkC;YAClC,kHAAkH;YAClH,IAAI;YAEJ,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;gBAC9C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACjD;YACD,+BAA+B;SAClC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAEO,oBAAoB,CAAC,IAAe,EAAE,UAAmB;QAC7D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,sCAAsC;QACtC,IAAI,GAAG,GAAG,qFAAyB,CAAC;QACpC,IAAI,KAAK,GAAG,4FAAqB,CAAC;QAClC,IAAI,UAAU,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5E,uEAAuE;QACvE,IAAI,UAAU,EAAE;YACZ,KAAK,GAAG,gGAA0B,CAAC;SACtC;aAAM;YACH,IAAI,QAAQ,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;YACtE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBACvB,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;aACvB;SACJ;QAED,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC1F,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACtB,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC;SACnC;QAED,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAErC,IAAI,GAAG;YACH,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,GAAG,EAAE,GAAG;YACR,KAAK,EAAE,KAAK;YACZ,UAAU,EAAE,UAAU;YACtB,GAAG,EAAE,MAAM;YACX,GAAG,EAAE,IAAI,CAAC,KAAK;YACf,WAAW,EAAE,WAAW;YACxB,UAAU,EAAE,UAAU;SACzB,CAAC;QAEF,sDAAsD;QAEtD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,WAAW;QACP,IAAI,WAAW,GAAG,GAAG;QACrB,IAAI,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACtE,IAAI,YAAY,GAAG,CAAC,EAAE;YAClB,IAAI,WAAW,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,wGAAuB,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;YACpF,WAAW,GAAG,WAAW,GAAG,YAAY,CAAC;SAC5C;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAGD,qBAAqB;IAErB,YAAY,CAAC,GAAU;QACnB,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,IAAI,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,EAAE;YACvB,kFAAiB,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;YACxD,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,EAAE;YAC/B,kFAAiB,CAAC,mBAAmB,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;YACpE,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,EAAE;YACzB,kFAAiB,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;YAC3D,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE;YAC3B,kFAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/D,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;YAC7B,kFAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;YAC7B,kFAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;YAC7B,kFAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,UAAU,IAAI,GAAG,CAAC,UAAU,EAAE;YACnC,kFAAiB,CAAC,qBAAqB,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;YAC1E,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;YACrB,kFAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;YACrB,kFAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,GAAG,EAAE;YACrB,kFAAiB,CAAC,cAAc,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACrD,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;YAC7B,kFAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;YAC7B,kFAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;SAChB;QACD,IAAI,IAAI,CAAC,OAAO,IAAI,GAAG,CAAC,OAAO,EAAE;YAC7B,kFAAiB,CAAC,kBAAkB,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACjE,OAAO,KAAK,CAAC;SAChB;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,YAAY,CAAC,GAAW,EAAE,GAAW;QACjC,IAAI,UAAkB,CAAC;QACvB,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC,EAAE;YAC1D,IAAI,GAAG,KAAK,IAAI,CAAC,kBAAkB,IAAI,GAAG,KAAK,IAAI,CAAC,kBAAkB,EAAE;gBACpE,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC;gBAClC,iDAAiD;aACpD;iBAAM;gBACH,IAAI,UAAU,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;gBAC3C,IAAI,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;gBACnD,UAAU,GAAG,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,eAAe,GAAG,UAAU,CAAC;gBAClC,qDAAqD;aACxD;YACD,OAAO,UAAU,CAAC;SACrB;IACL,CAAC;IAGD,gDAAgD;IAChD,yBAAyB;IACzB,wCAAwC;IACxC,0BAA0B;IAC1B,iDAAiD;IACjD,eAAe;IACf,0BAA0B;IAC1B,iDAAiD;IACjD,eAAe;IACf,uBAAuB;IACvB,kDAAkD;IAClD,eAAe;IACf,uBAAuB;IACvB,kDAAkD;IAClD,eAAe;IACf,eAAe;IACf,0BAA0B;IAC1B,eAAe;IACf,MAAM;IACN,mBAAmB;IACnB,IAAI;IAEJ,gDAAgD;IAChD,yBAAyB;IACzB,wCAAwC;IACxC,0BAA0B;IAC1B,kDAAkD;IAClD,eAAe;IACf,0BAA0B;IAC1B,kDAAkD;IAClD,eAAe;IACf,uBAAuB;IACvB,kDAAkD;IAClD,eAAe;IACf,uBAAuB;IACvB,kDAAkD;IAClD,eAAe;IACf,eAAe;IACf,0BAA0B;IAC1B,eAAe;IACf,MAAM;IACN,mBAAmB;IACnB,IAAI;IAEJ,8DAA8D;IAC9D,2BAA2B;IAC3B,uDAAuD;IACvD,EAAE;IACF,8CAA8C;IAC9C,yCAAyC;IACzC,QAAQ;IACR,IAAI;IAEJ,MAAM,CAAC,UAAU,CAAC,EAAS,EAAE,EAAS;QAClC,IAAI,EAAE,IAAI,EAAE,EAAE;YACV,IAAI,OAAO,GAAG,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,CAAC;YAC9B,IACI,OAAO,KAAK,CAAC;gBACb,EAAE,CAAC,IAAI,KAAK,wEAAe;gBAC3B,EAAE,CAAC,IAAI,KAAK,wEAAe,EAC7B;gBACE,mBAAmB;gBACnB,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,IAAI,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE;oBACxC,IAAI,MAAM,GAAG,6CAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACvC,IAAI,MAAM,GAAG,6CAAM,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBAEvC,IAAI,MAAM,GAAG,MAAM,EAAE;wBACjB,OAAO,CAAC,CAAC,CAAC;qBACb;yBAAM,IAAI,MAAM,KAAK,MAAM,EAAE;wBAC1B,OAAO,CAAC,CAAC;qBACZ;oBACD,OAAO,CAAC,CAAC;iBACZ;aACJ;YACD,OAAO,OAAO,CAAC;SAClB;QAED,OAAO,CAAC,CAAC;IACb,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,EAAS,EAAE,EAAS;QACnC,IAAI,EAAE,IAAI,EAAE,EAAE;YACV,OAAO,EAAE,CAAC,eAAe,GAAG,EAAE,CAAC,eAAe,CAAC;SAClD;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,EAAS,EAAE,EAAS;QACnC,IAAI,EAAE,IAAI,EAAE,EAAE;YACV,IAAI,CAAC,GAAW,EAAE,CAAC,KAAK,CAAC;YACzB,IAAI,CAAC,GAAW,EAAE,CAAC,KAAK,CAAC;YACzB,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;SACzD;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IAED,WAAW;IAGX,yBAAyB;IAGzB,MAAM,CAAC,cAAc,CAAC,IAAe;QACjC,IAAI,GAAG,GAAG,EAAE,CAAC;QACb,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,EAAE;YAChB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YAC1C,QAAQ,IAAI,CAAC,GAAG,EAAE;gBACd,KAAK,CAAC;oBACF,OAAO,GAAG,UAAU,sCAAsC,CAAC;gBAC/D,KAAK,CAAC;oBACF,OAAO,GAAG,UAAU,8BAA8B,CAAC;gBACvD,KAAK,CAAC;oBACF,OAAO,GAAG,UAAU,mCAAmC,CAAC;gBAC5D,KAAK,CAAC;oBACF,OAAO,GAAG,UAAU,qCAAqC,CAAC;gBAC9D,KAAK,CAAC;oBACF,OAAO,GAAG,UAAU,gCAAgC,CAAC;gBACzD,KAAK,CAAC;oBACF,OAAO,GAAG,UAAU,4CAA4C,CAAC;gBACrE;oBACI,sEAAW,CAAC,uBAAuB,EAAE,6BAA6B,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;oBAC9E,OAAO,sCAAsC,CAAC;aACrD;SACJ;QAED,4CAA4C;QAC5C,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAe;QAC7B,6DAA6D;QAC7D,IAAI,IAAI,GAAG,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;YAAE,IAAI,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;YAAE,IAAI,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;YAAE,IAAI,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;YAAE,IAAI,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,CAAC;YAAE,IAAI,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,CAAC;QAC1D,IAAI,SAAS,CAAC,iBAAiB,CAAC,IAAI,CAAC;YAAE,IAAI,IAAI,QAAQ,qFAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACvF,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YAAE,IAAI,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1E,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,KAAK,IAAI;YAAE,IAAI,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1E,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;YAAE,IAAI,IAAI,QAAQ,IAAI,CAAC,UAAU,EAAE,CAAC;QACnF,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,IAAI,IAAI,QAAQ,IAAI,CAAC,MAAM,EAAE,CAAC;QACvE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI;YAAE,IAAI,IAAI,SAAS,IAAI,CAAC,MAAM,EAAE,CAAC;QACxE,IAAI,IAAI,GAAG,2CAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACxB,yCAAyC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;IAWD,MAAM,CAAC,cAAc,CAAC,GAAW,EAAE,QAAQ;QACvC,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,CAAC,SAAS,EAAE;YACZ,SAAS,GAAG,EAAE,CAAC;YACf,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;SACtC;QACD,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC7B,CAAC;IAGD,MAAM,CAAC,cAAc,CAAC,IAAY,EAAE,GAAW;QAC3C,IAAI,SAAS,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QACxC,IAAI,SAAS,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACZ,yDAAyD;gBACzD,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE;oBACzB,QAAQ,CAAC,GAAG,CAAC,CAAC;gBAClB,CAAC,CAAC;YACN,CAAC,EAAE,CAAC,CAAC;SACR;QACD,OAAO,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACnC,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAY,EAAE,IAAe;QAC/C,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAC3C,MAAM,OAAO,GAAc,+DAAU,CAAC;QAEtC,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YACvB,OAAO,GAAG,CAAC;SACd;aAAM;YACH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,SAAS,GAAG,sHAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC7D,IAAI,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;YAC5C,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YAC3B,OAAO,GAAG,CAAC;SACd;IACL,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,SAAiB;QACrC,IAAI,OAAO,GAAG,mgCAAmgC,CAAC;QAClhC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,SAAS,CAAC;QAC7C,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,MAAM,CAAC,cAAc,CAAC,IAAY,EAAE,IAAe;QAC/C,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAE3C,OAAO,IAAI,OAAO,CAAS,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;YAElD,MAAM,OAAO,GAAc,+DAAU,CAAC;YAEtC,IAAI,OAAO,GAAG,CAAC;YACf,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAC/B,IAAI,GAAG,EAAE;gBACL,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;oBAChB,OAAO,CAAC,GAAG,CAAC,CAAC;iBAChB;qBAAM;oBACH,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;iBACvC;aACJ;iBAAM;gBAEH,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;gBAE1B,IAAI,QAAgB,CAAC;gBACrB,IAAI,YAAY,GAAG,MAAM;gBACzB,IAAI,YAAY,GAAG,MAAM;gBACzB,IAAI,cAAc,GAAG,MAAM;gBAC3B,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;gBACvD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACzE,wFAAwF;gBAExF,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,YAAY,GAAG,MAAM,CAAC;oBACtB,cAAc,GAAG,MAAM,CAAC;iBAC3B;gBAED,IAAI,IAAI,CAAC,WAAW,GAAG,CAAC,EAAE;oBACtB,YAAY,GAAG,MAAM,CAAC;oBACtB,cAAc,GAAG,MAAM,CAAC;oBACxB,gEAAgE;oBAChE,+EAA+E;iBAClF;gBAED,QAAQ,IAAI,CAAC,GAAG,EAAE;oBAEd,KAAK,+EAAsB;wBAEvB,mBAAmB;wBACnB,IAAI,IAAI,CAAC,UAAU,EAAE;4BACjB,IAAI,IAAI,CAAC,OAAO,EAAE;gCACd,YAAY,GAAG,SAAS,CAAC;6BAC5B;4BACD,IAAI,IAAI,CAAC,OAAO,EAAE;gCACd,YAAY,GAAG,SAAS,CAAC;6BAC5B;yBACJ;6BAAM;4BACH,IAAI,IAAI,CAAC,OAAO,EAAE;gCACd,cAAc,GAAG,SAAS,CAAC;gCAC3B,YAAY,GAAG,SAAS,CAAC;6BAC5B;4BACD,IAAI,IAAI,CAAC,OAAO,EAAE;gCACd,cAAc,GAAG,SAAS,CAAC;gCAC3B,YAAY,GAAG,SAAS,CAAC;6BAC5B;yBACJ;wBAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;4BAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;gCACzC,IAAI,GAAG,GAAG,sHAAkC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gCACvD,0BAA0B;gCAC1B,YAAY,GAAG,GAAG,CAAC;6BACtB;yBACJ;wBACD,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;wBACzB,MAAM;oBAEV,KAAK,qFAAyB;wBAC1B,YAAY,GAAG,MAAM,CAAC;wBACtB,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,KAAK;wBAChC,QAAQ,GAAG,GAAG,CAAC;wBACf,YAAY,GAAG,MAAM,CAAC;wBACtB,OAAO,GAAG,CAAC,CAAC;wBACZ,MAAM;oBAEV,KAAK,2FAA4B;wBAC7B,YAAY,GAAG,MAAM,CAAC;wBACtB,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,MAAM;wBAC/B,QAAQ,GAAG,GAAG,CAAC;wBACf,OAAO,GAAG,CAAC,CAAC;wBACZ,MAAM;oBAEV,KAAK,2FAA4B;wBAC7B,YAAY,GAAG,MAAM,CAAC;wBACtB,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,OAAO;wBACjC,QAAQ,GAAG,GAAG,CAAC;wBACf,OAAO,GAAG,CAAC,CAAC;wBACZ,MAAM;oBAEV,KAAK,qFAAyB;wBAC1B,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;4BACd,OAAO,GAAG,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC;4BACzB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC;yBAC5B;6BAAM;4BACH,IAAI,IAAI,CAAC,UAAU,EAAE;gCACjB,OAAO,GAAG,GAAG,KAAK,CAAC,SAAS,GAAG,CAAC;gCAChC,OAAO,GAAG,CAAC,CAAC;6BACf;iCAAM;gCACH,OAAO,GAAG,GAAG,CAAC;gCACd,OAAO,GAAG,CAAC,CAAC;6BACf;yBACJ;wBACD,MAAM;iBACb;gBAED,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;oBAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;oBACrE,IAAI,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;oBACjC,OAAO,GAAG,GAAG,OAAO,GAAG,KAAK,CAAC,SAAS,EAAE,CAAC;oBACzC,QAAQ,GAAG,GAAG,CAAC;oBACf,IAAI,OAAO,GAAG,CAAC,EAAE;wBACb,QAAQ,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;qBACxC;iBACJ;qBAAM,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;oBAC7B,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC;oBAC1B,QAAQ,GAAG,GAAG,CAAC;iBAClB;gBAED,IAAI,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,EAAE;oBAC1C,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,GAAG,CAAC,EAAE;wBACzC,QAAQ,IAAI,CAAC,GAAG,EAAE;4BACd,KAAK,4EAAiB,CAAC;4BACvB,KAAK,wEAAe,CAAC;4BACrB,KAAK,gFAAmB,CAAC;4BACzB,KAAK,sFAAsB;gCACvB,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gCACvD,MAAM;4BACV,KAAK,0EAAgB;gCACjB,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;gCACvD,MAAM;yBACb;qBACJ;iBACJ;gBAED,IAAI,aAAa,GAAG,GAAG;gBACvB,IAAI,QAAQ,EAAE;oBACV,aAAa,GAAG,QAAQ,CAAC;iBAC5B;qBAAM;oBACH,IAAI,OAAO,GAAG,CAAC,EAAE;wBACb,aAAa,GAAG,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;qBAC7C;iBACJ;gBAED,mBAAmB;gBACnB,8IAA8I;gBAC9I,IAAI;gBAEJ,IAAI,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,OAAO,CAAC,CAAC;gBAE5H,IAAI,KAAK,GAAG,EAAE,CAAC;gBACf,IAAI,MAAM,GAAG,EAAE,CAAC;gBAChB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAC1C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;gBACb,KAAK,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;aACnC;QACL,CAAC,EAAC,CAAC;IAEP,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAY,EAAE,SAAiB,EAAE,WAAmB,EAAE,SAAiB,EAAE,SAAiB,EAAE,QAAgB,EAAE,OAAe;QACjJ,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,sCAAsC;QACtC,IAAI,OAAO,GAAG,GAAG;QACjB,IAAI,OAAO,GAAG,CAAC,EAAE;YACb,OAAO,GAAG,GAAG,CAAC;YACd,IAAI,OAAO,GAAG,CAAC,EAAE;gBACb,OAAO,GAAG,GAAG,CAAC;aACjB;SACJ;QAED,IAAI,SAAS,GAAG,4GAA6B,CAAC,SAAS,EAAE,CAAC,EAAE,CAAC,CAAC;QAC9D,IAAI,SAAS,KAAK,MAAM,EAAE;YACtB,OAAO,GAAG,s/CAAs/C;SACngD;aAAM;YACH,OAAO,GAAG,6nDAA6nD;SAC1oD;QACD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC;QACxC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC;QAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC;QAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC;QACvD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC;QAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC;QAClD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,QAAQ,EAAE,CAAC;QAC3D,iCAAiC;QACjC,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,6IAA6I;IAC7I,6BAA6B;IAC7B,sBAAsB;IACtB,iCAAiC;IACjC,EAAE;IACF,+aAA+a;IAC/a,6BAA6B;IAC7B,mEAAmE;IACnE,mDAAmD;IACnD,8BAA8B;IAC9B,EAAE;IACF,gCAAgC;IAChC,uCAAuC;IACvC,mCAAmC;IACnC,kCAAkC;IAClC,MAAM;IACN,WAAW;IACX,2CAA2C;IAC3C,kCAAkC;IAClC,sCAAsC;IACtC,EAAE;IACF,uCAAuC;IACvC,mCAAmC;IACnC,oEAAoE;IACpE,kCAAkC;IAClC,MAAM;IACN,EAAE;IACF,oBAAoB;IACpB,2BAA2B;IAC3B,MAAM;IACN,WAAW;IACX,sBAAsB;IACtB,6BAA6B;IAC7B,kDAAkD;IAClD,QAAQ;IACR,MAAM;IACN,EAAE;IACF,mCAAmC;IACnC,4FAA4F;IAC5F,8BAA8B;IAC9B,EAAE;IACF,8BAA8B;IAC9B,sCAAsC;IACtC,oBAAoB;IACpB,EAAE;IACF,IAAI;IAGJ,MAAM,CAAC,iBAAiB,CAAC,IAAY,EAAE,IAAe;QAClD,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAE3C,OAAO,IAAI,OAAO,CAAS,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;YAElD,MAAM,OAAO,GAAc,+DAAU,CAAC;YACtC,IAAI,cAAc,GAAG,MAAM;YAC3B,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,4FAAqB,CAAC,CAAE,gCAAgC;YACrG,IAAI,YAAY,GAAG,4GAA6B,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YACpE,wFAAwF;YAExF,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,cAAc,GAAG,MAAM;gBACvB,YAAY,GAAG,MAAM,CAAC;aACzB;YAED,IAAI,KAAK,GAAG,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;YAE/E,IAAI,KAAK,GAAG,GAAG,CAAC;YAChB,IAAI,MAAM,GAAG,GAAG,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;YAC3C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,EAAC,CAAC;IAEP,CAAC;IAGD,6EAA6E;IAC7E,gDAAgD;IAChD,EAAE;IACF,4DAA4D;IAC5D,EAAE;IACF,6CAA6C;IAC7C,EAAE;IACF,iCAAiC;IACjC,kCAAkC;IAClC,8DAA8D;IAC9D,2EAA2E;IAC3E,+FAA+F;IAC/F,EAAE;IACF,6BAA6B;IAC7B,gCAAgC;IAChC,+BAA+B;IAC/B,QAAQ;IACR,EAAE;IACF,sFAAsF;IACtF,EAAE;IACF,yBAAyB;IACzB,0BAA0B;IAC1B,uBAAuB;IACvB,wBAAwB;IACxB,+CAA+C;IAC/C,0BAA0B;IAC1B,yCAAyC;IACzC,2BAA2B;IAC3B,8CAA8C;IAC9C,WAAW;IACX,wBAAwB;IACxB,0GAA0G;IAC1G,qBAAqB;IACrB,iDAAiD;IACjD,YAAY;IACZ,EAAE;IACF,QAAQ;IACR,EAAE;IACF,IAAI;IAGJ,MAAM,CAAC,gBAAgB,CAAC,SAAiB,EAAE,SAAiB,EAAE,WAAmB;QAC7E,IAAI,OAAO,GAAG,6wCAA6wC;QAC3xC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;QACnD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;QACnD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC;QACtD,iCAAiC;QACjC,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,yFAAyF;IACzF,6BAA6B;IAC7B,+BAA+B;IAC/B,wBAAwB;IACxB,EAAE;IACF,qCAAqC;IACrC,+BAA+B;IAC/B,+BAA+B;IAC/B,EAAE;IACF,qCAAqC;IACrC,+BAA+B;IAC/B,+BAA+B;IAC/B,EAAE;IACF,8VAA8V;IAC9V,kDAAkD;IAClD,+BAA+B;IAC/B,4BAA4B;IAC5B,EAAE;IACF,8BAA8B;IAC9B,sCAAsC;IACtC,oBAAoB;IACpB,EAAE;IACF,IAAI;IAGJ,MAAM,CAAC,cAAc,CAAC,IAAY,EAAE,IAAe;QAC/C,MAAM,MAAM,GAAG,sBAAsB,CAAC;QAEtC,OAAO,IAAI,OAAO,CAAS,CAAO,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC;YAElD,MAAM,OAAO,GAAc,+DAAU,CAAC;YAEtC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,cAAc,GAAG,MAAM;YAC3B,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;YACvD,IAAI,YAAY,GAAG,4GAA6B,CAAC,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YAEpE,IAAI,IAAI,CAAC,UAAU,EAAE;gBACjB,cAAc,GAAG,MAAM;gBACvB,YAAY,GAAG,MAAM,CAAC;aACzB;YAED,IAAI,GAAG,GAAG,KAAK,CAAC,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;YAE7E,IAAI,KAAK,GAAG,GAAG,CAAC;YAChB,IAAI,MAAM,GAAG,GAAG,CAAC;YACjB,MAAM,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;YAC1C,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YAC3B,OAAO,CAAC,GAAG,CAAC,CAAC;QACjB,CAAC,EAAC,CAAC;IAEP,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,SAAiB,EAAE,SAAiB,EAAE,WAAmB;QAC7E,IAAI,OAAO,GAAG,qsCAAqsC;QACntC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;QACnD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,SAAS,CAAC;QACnD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,WAAW,CAAC;QACtD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,yFAAyF;IACzF,kCAAkC;IAClC,6BAA6B;IAC7B,+BAA+B;IAC/B,wBAAwB;IACxB,EAAE;IACF,qCAAqC;IACrC,+BAA+B;IAC/B,+BAA+B;IAC/B,EAAE;IACF,qCAAqC;IACrC,+BAA+B;IAC/B,+BAA+B;IAC/B,EAAE;IACF,gUAAgU;IAChU,mDAAmD;IACnD,gCAAgC;IAChC,6BAA6B;IAC7B,EAAE;IACF,8BAA8B;IAC9B,sCAAsC;IACtC,oBAAoB;IACpB,EAAE;IACF,IAAI;IAEI,MAAM,CAAC,aAAa,CAAC,KAAa,EAAE,IAAY;QACpD,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACrC,MAAM,GAAG,GAAG,4BAA4B,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC9D,wEAAW,CAAC,MAAM,EAAE,EAAC,IAAI,EAAE,GAAG,EAAE,GAAG,EAAC,CAAC;QACrC,OAAO,GAAG,CAAC;IACf,CAAC;IAGD,WAAW;IAEX,MAAM,CAAC,MAAM,CAAC,GAAU;;QACpB,OAAO;YACH,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,IAAI,EAAE,UAAG,CAAC,IAAI,0CAAE,MAAM,EAAE,KAAI,IAAI;YAChC,IAAI,EAAE,UAAG,CAAC,IAAI,0CAAE,MAAM,EAAE,KAAI,IAAI;YAChC,IAAI,EAAE,UAAG,CAAC,IAAI,0CAAE,MAAM,EAAE,KAAI,IAAI;YAChC,MAAM,EAAE,UAAG,CAAC,MAAM,0CAAE,MAAM,EAAE,KAAI,IAAI;YACpC,KAAK,EAAE,UAAG,CAAC,KAAK,0CAAE,MAAM,EAAE,KAAI,IAAI;YAClC,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,MAAM,EAAE,GAAG,CAAC,MAAM;YAClB,UAAU,EAAE,GAAG,CAAC,UAAU;YAC1B,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,GAAG,EAAE,GAAG,CAAC,GAAG;YACZ,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,yBAAyB;YACzB,oCAAoC;SACvC;IACL,CAAC;;AA1fM,eAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM;AACzD,aAAO,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM;AAC7D,eAAS,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,MAAM;AACzD,cAAQ,GAAG,oBAAoB,CAAC,CAAC,MAAM;AAC9C,gDAAgD;AAChD,uEAAuE;AACxD,iBAAW,GAA6B,EAAE,CAAC;AAyfvD,MAAM,QAAS,SAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;CAkBzC;AAGM,MAAM,SAAU,SAAQ,CAAC,CAAC,GAAG,CAAC,MAAM;CAE1C;AAGD,uDAAuD;AACvD,2CAA2C;AAC3C,EAAE;AACF,qBAAqB;AACrB,EAAE;AACF,2CAA2C;AAC3C,wCAAwC;AACxC,oDAAoD;AACpD,kBAAkB;AAClB,oCAAoC;AACpC,MAAM;AACN,WAAW;AACX,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,4BAA4B;AAC5B,gCAAgC;AAChC,gCAAgC;AAChC,kCAAkC;AAClC,8DAA8D;AAC9D,gFAAgF;AAChF,+FAA+F;AAC/F,EAAE;AACF,6BAA6B;AAC7B,iCAAiC;AACjC,+BAA+B;AAC/B,QAAQ;AACR,EAAE;AACF,0BAA0B;AAC1B,EAAE;AACF,qCAAqC;AACrC,EAAE;AACF,8BAA8B;AAC9B,iCAAiC;AACjC,gCAAgC;AAChC,wCAAwC;AACxC,cAAc;AACd,gCAAgC;AAChC,wCAAwC;AACxC,cAAc;AACd,YAAY;AACZ,iBAAiB;AACjB,gCAAgC;AAChC,0CAA0C;AAC1C,wCAAwC;AACxC,cAAc;AACd,gCAAgC;AAChC,0CAA0C;AAC1C,wCAAwC;AACxC,cAAc;AACd,YAAY;AACZ,EAAE;AACF,0DAA0D;AAC1D,2DAA2D;AAC3D,sEAAsE;AACtE,yCAAyC;AACzC,kCAAkC;AAClC,cAAc;AACd,YAAY;AACZ,iBAAiB;AACjB,EAAE;AACF,wCAAwC;AACxC,iCAAiC;AACjC,2CAA2C;AAC3C,0BAA0B;AAC1B,iCAAiC;AACjC,iBAAiB;AACjB,EAAE;AACF,2CAA2C;AAC3C,iCAAiC;AACjC,0CAA0C;AAC1C,0BAA0B;AAC1B,iBAAiB;AACjB,EAAE;AACF,2CAA2C;AAC3C,iCAAiC;AACjC,4CAA4C;AAC5C,0BAA0B;AAC1B,iBAAiB;AACjB,EAAE;AACF,wCAAwC;AACxC,8BAA8B;AAC9B,sCAAsC;AACtC,YAAY;AACZ,iBAAiB;AACjB,QAAQ;AACR,EAAE;AACF,sCAAsC;AACtC,2CAA2C;AAC3C,0CAA0C;AAC1C,mDAAmD;AACnD,wBAAwB;AACxB,2BAA2B;AAC3B,gDAAgD;AAChD,UAAU;AACV,QAAQ;AACR,EAAE;AACF,sDAAsD;AACtD,uDAAuD;AACvD,8BAA8B;AAC9B,oCAAoC;AACpC,kCAAkC;AAClC,sCAAsC;AACtC,yCAAyC;AACzC,sEAAsE;AACtE,qBAAqB;AACrB,mCAAmC;AACnC,sEAAsE;AACtE,qBAAqB;AACrB,YAAY;AACZ,UAAU;AACV,QAAQ;AACR,EAAE;AACF,qHAAqH;AACrH,6DAA6D;AAC7D,0CAA0C;AAC1C,oDAAoD;AACpD,oCAAoC;AACpC,EAAE;AACF,MAAM;AACN,EAAE;AACF,mBAAmB;AACnB,EAAE;AACF,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACh+DwB;AACY;AACA;AAEU;AACE;AACA;AACd;AACoC;AAC5B;AACO;AACqB;AACzB;AACa;AAG9D,IAAY,kBAIX;AAJD,WAAY,kBAAkB;IAC1B,oEAAa;IACb,mEAAY;IACZ,iEAAW;AACf,CAAC,EAJW,kBAAkB,KAAlB,kBAAkB,QAI7B;AAGD,IAAY,kBAKX;AALD,WAAY,kBAAkB;IAC1B,kEAAY;IACZ,iEAAW;IACX,+DAAM;IACN,mEAAQ;AACZ,CAAC,EALW,kBAAkB,KAAlB,kBAAkB,QAK7B;AAGM,MAAM,WAAW;IAAxB;QACI,aAAQ,GAAG,KAAK,CAAC;QACjB,eAAU,GAAG,EAAE,CAAC;QAChB,UAAK,GAAG,KAAK,CAAC;IAClB,CAAC;CAAA;AAGM,MAAM,YAAY;IAcrB,MAAM,CAAC,aAAa,CAAC,SAAiB;QAClC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,IAAI,GAAmB,EAAE,CAAC;QAC9B,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;gBAC5B,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;gBAChC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;oBAClB,QAAQ,GAAG,EAAE;wBACT,gBAAgB;wBAChB,kDAAkD;wBAClD,KAAK,KAAK;4BACN,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC3B,MAAM;wBACV,KAAK,KAAK;4BACN,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;4BACjC,MAAM;wBACV,KAAK,KAAK;4BACN,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC/B,MAAM;wBACV,KAAK,QAAQ;4BACT,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC9B,MAAM;wBACV,KAAK,QAAQ;4BACT,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC9B,MAAM;wBACV,KAAK,KAAK;4BACN,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC5B,MAAM;wBACV,KAAK,KAAK;4BACN,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC7B,MAAM;wBACV,KAAK,KAAK;4BACN,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;4BAC7B,MAAM;wBACV,KAAK,KAAK;4BACN,MAAM,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;4BACtC,MAAM;wBACV,KAAK,KAAK;4BACN,MAAM,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;4BACtC,MAAM;wBAEV,eAAe;qBAClB;iBACJ;gBACD,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAEtB,CAAC,CAAC,CAAC;SACN;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,MAAM;QACF,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,OAAO;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7C,IAAI,IAAI,CAAC,aAAa;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,aAAa,CAAC;QACzD,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACrD,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACtD,IAAI,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACtD,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/C,IAAI,IAAI,CAAC,cAAc;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3D,OAAO,IAAY,CAAC;IACxB,CAAC;CAEJ;AAGM,MAAM,OAAO;IAEhB,MAAM,CAAC,UAAU;QACb,oCAAoC;QACpC,IAAI,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,YAAY,IAAK;QA+CjB,mBAAmB;QAEnB,cAAS,GAAG,KAAK,CAAC;QAClB,YAAO,GAAG,CAAC,CAAC;QAIZ,gBAAW,GAAY,KAAK,CAAC;QAC7B,eAAU,GAAY,KAAK,CAAC;QAC5B,aAAQ,GAAY,KAAK,CAAC;QAC1B,gBAAW,GAAY,KAAK,CAAC;QAC7B,eAAU,GAAY,KAAK,CAAC;QAG5B,QAAG,GAAW,CAAC,CAAC;QAChB,QAAG,GAAW,CAAC,CAAC;QAGhB,YAAO,GAAW,CAAC,CAAC;QAIpB,cAAS,GAAW,CAAC,CAAC;QACtB,aAAQ,GAAW,CAAC,CAAC;QACrB,cAAS,GAAW,CAAC,CAAC;QACtB,cAAS,GAAW,CAAC,CAAC;QACtB,eAAU,GAAW,CAAC,CAAC;QACvB,eAAU,GAAW,SAAS,CAAC;QAC/B,UAAK,GAAa,EAAE,CAAC;QACrB,eAAU,GAAuB,kBAAkB,CAAC,OAAO,CAAC;QAC5D,eAAU,GAAuB,kBAAkB,CAAC,QAAQ,CAAC;QAC7D,kBAAa,GAAG,CAAC,CAAC;QAClB,kBAAa,GAAG,CAAC,CAAC;QAGlB,eAAU,GAAY,KAAK,CAAC;QAC5B,eAAU,GAAY,KAAK,CAAC;QAC5B,eAAU,GAAY,KAAK,CAAC;QAC5B,oBAAe,GAAW,CAAC,CAAC;QAC5B,sBAAiB,GAAW,CAAC,CAAC,CAAC,CAAC,0EAA0E;QAC1G,WAAM,GAAY,KAAK,CAAC;QAGxB,mBAAc,GAAY,KAAK,CAAC;QAChC,qBAAgB,GAAW,CAAC,CAAC;QAC7B,aAAQ,GAAG,KAAK,CAAC;QAEjB,aAAQ,GAAW,CAAC,CAAC;QACrB,kBAAa,GAAW,CAAC,CAAC;QAiK1B,mBAAc,GAAY,KAAK,CAAC;QAahC,gBAAW,GAAY,KAAK,CAAC;QAa7B,kBAAa,GAAY,KAAK,CAAC;QA+FvB,qBAAgB,GAAW,IAAI,CAAC;QAuBhC,gBAAW,GAAW,IAAI,CAAC;QAC3B,cAAS,GAAW,IAAI,CAAC;QA8MjC,oBAAe,GAAW,IAAI,CAAC;QAiB/B,qBAAgB,GAAW,IAAI,CAAC;QA8BxB,oBAAe,GAAW,IAAI,CAAC;QA4QvC,uBAAkB,GAAW,CAAC,CAAC,CAAC,+BAA+B;QAC/D,sBAAiB,GAAW,CAAC,CAAC,CAAC,8BAA8B;QAErD,mBAAc,GAAW,IAAI,CAAC;QA55BlC,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;aAAM;YACH,IAAI,CAAC,OAAO,GAAG,sFAAkB,EAAE,CAAC;YACpC,IAAI,CAAC,SAAS,GAAG,2EAAgB,CAAC;YAClC,IAAI,CAAC,QAAQ,GAAG,6EAAiB,CAAC;YAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YAEhC,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;YACrB,qDAAqD;YACrD,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,GAAG,4FAAqB,GAAG,IAAI,CAAC,CAAC;YAC5D,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,sCAAsC;YACtC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;YAEtB,8CAA8C;YAE9C,IAAI,CAAC,UAAU,GAAG,8FAAsB,CAAC;YACzC,IAAI,CAAC,OAAO,GAAG,kGAAwB,CAAC;YAExC,IAAI,CAAC,QAAQ,GAAG,8FAAsB,CAAC;YACvC,8DAA8D;YAE9D,IAAI,CAAC,WAAW,GAAG,gGAAuB,CAAC;YAC3C,IAAI,CAAC,UAAU,GAAG,8FAAsB,CAAC;YACzC,gEAAgE;YAGhE,6BAA6B;YAC7B,8BAA8B;YAC9B,2BAA2B;YAC3B,4BAA4B;YAE5B,IAAI,CAAC,YAAY,GAAG,wGAA2B,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,aAAa,GAAG,wGAA2B,CAAC,UAAU,CAAC,CAAC;YAC7D,IAAI,CAAC,UAAU,GAAG,wGAA2B,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,CAAC,WAAW,GAAG,gGAAuB,CAAC;YAE3C,IAAI,CAAC,GAAG,GAAG,0FAAoB,CAAC;YAChC,IAAI,CAAC,GAAG,GAAG,0FAAoB,CAAC;YAEhC,gDAAgD;SACnD;IACL,CAAC;IAoDD,kCAAkC;IAClC,0CAA0C;IAC1C,cAAc;IACd,gCAAgC;IAChC,MAAM;IACN,0BAA0B;IAC1B,IAAI;IAEJ,IAAI,OAAO;QACP,OAAO,+DAAU,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,mFAAO,CAAC;IACnB,CAAC;IAED,IAAI,KAAK;QACL,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;SAC5C;QACD,OAAO,CAAC,CAAC;IACb,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;IACnC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;IACpC,CAAC;IAED,gBAAgB;QACZ,IAAI,IAAU,CAAC;QACf,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,gDAAgD;YAChD,IAAI,GAAG,6CAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,4FAAqB,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;SAChF;aAAM;YACH,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;SAC1B;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,IAAI,OAAO;QACP,IAAI,OAAe,CAAC;QACpB,IAAI,kGAAwB,EAAE;YAC1B,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;YACzC,IAAI,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,CAAC,CAAC;YACjE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;gBACnB,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;aACjC;YACD,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SACzC;QACD,0CAA0C;QAC1C,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,IAAI,OAAO;QACP,IAAI,OAAO,GAAG,CAAC,CAAC;QAChB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,OAAO,GAAG,CAAC,CAAC;SACf;aAAM;YACH,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,OAAO,GAAG,CAAC,CAAC;aACf;iBAAM;gBACH,OAAO,GAAG,CAAC,CAAC;aACf;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,IAAI,MAAM;QACN,IAAI,cAAsB,CAAC;QAC3B,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE;gBACR,cAAc,GAAG,MAAM,CAAC;aAC3B;iBAAM;gBACH,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;gBACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC;gBAC5B,cAAc,GAAG,IAAI,CAAC;aACzB;SACJ;QACD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,4BAA4B;IAC5B,2BAA2B;IAC3B,uBAAuB;IACvB,wCAAwC;IACxC,MAAM;IACN,sBAAsB;IACtB,IAAI;IAEJ,IAAI,QAAQ;QACR,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/D,IAAI,UAAU,GAAG,CAAC,EAAE;YAChB,IAAI,GAAG,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC;SAC9C;QACD,OAAO,IAAI,GAAG,GAAG,CAAC;IACtB,CAAC;IAED,gBAAgB;QACZ,OAAO,IAAI,CAAC,UAAU,KAAK,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS;IAC/E,CAAC;IAED,eAAe;QAEX,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE;YACzB,IAAI,CAAC,iBAAiB,GAAG,CAAC;SAC7B;QACD,IAAI,IAAI,GAAG,GAAG,CAAC;QACf,IAAI,UAAU,GAAG,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;QAC/D,IAAI,UAAU,IAAI,CAAC,EAAE;YACjB,IAAI,IAAI,CAAC,iBAAiB,IAAI,CAAC,CAAC,EAAE;gBAC9B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC3B,UAAU,EAAE,CAAC;aAChB;YACD,IAAI,GAAG,GAAG,IAAI,CAAC,iBAAiB,OAAO,UAAU,WAAW,CAAC;SAChE;QAED,IAAI,UAAU,IAAI,CAAC,EAAE;YACjB,IAAI,GAAG,UAAU,CAAC;SACrB;QACD,IAAI,UAAU,IAAI,CAAC,CAAC,EAAE;YAClB,IAAI,GAAG,cAAc;SACxB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,UAAU;QACV,OAAO,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC;IACtC,CAAC;IAED,IAAI,WAAW;QACX,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;IAC7B,CAAC;IAED,IAAI,WAAW;QACX,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IAC5B,CAAC;IAED,IAAI,MAAM;QACN,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,SAAS,IAAI,CAAC,CAAC;SAClB;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,SAAS,IAAI,CAAC,CAAC;SAClB;QACD,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,SAAS,IAAI,CAAC,CAAC;SAClB;QAED,OAAO,SAAS,CAAC;IACrB,CAAC;IAID,IAAI,aAAa;QACb,IAAI,wGAA2B,CAAC,UAAU,CAAC,EAAE;YACzC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;SAC9B;QACD,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,aAAa,CAAC,KAAc;QAC5B,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAChC,CAAC;IAID,IAAI,UAAU;QACV,IAAI,wGAA2B,CAAC,OAAO,CAAC,EAAE;YACtC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;SAC3B;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC5B,CAAC;IAED,IAAI,UAAU,CAAC,KAAc;QACzB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC7B,CAAC;IAID,IAAI,YAAY;QACZ,IAAI,wGAA2B,CAAC,SAAS,CAAC,EAAE;YACxC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC7B;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC9B,CAAC;IAED,IAAI,YAAY,CAAC,KAAc;QAC3B,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC/B,CAAC;IAGD,IAAI,SAAS;QACT,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,EAAE,IAAI,IAAI,CAAC,QAAQ,KAAK,mFAAiB,EAAE;YAC9E,SAAS,GAAG,IAAI,CAAC;SACpB;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,IAAI,QAAQ;QACR,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAC1C,IAAI,WAAW,EAAE;YACb,OAAO,IAAI,CAAC,OAAO,KAAK,WAAW,CAAC,OAAO,CAAC;SAC/C;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,SAAS;QACT,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,OAAO,aAAa,CAAC;SACxB;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAGD,IAAI,SAAS;QACT,IAAI,OAAO,GAAG,8FAAyB,CAAC;QAExC,IAAI,IAAI,CAAC,UAAU,KAAK,kBAAkB,CAAC,QAAQ,EAAE;YACjD,OAAO,GAAG,kGAA2B,CAAC;SACzC;aAAM,IAAI,IAAI,CAAC,QAAQ,EAAE;YACtB,OAAO,GAAG,8FAAyB,CAAC;SACvC;aAAM;YACH,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,OAAO,GAAG,sGAA6B,CAAC;aAC3C;iBAAM;gBACH,OAAO,GAAG,8FAAyB,CAAC;aACvC;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,0CAA0C;IAE1C,4BAA4B;IAC5B,8CAA8C;IAC9C,yDAAyD;IACzD,iDAAiD;IACjD,wDAAwD;IACxD,QAAQ;IACR,aAAa;IACb,kFAAkF;IAClF,+DAA+D;IAC/D,UAAU;IACV,kCAAkC;IAClC,6DAA6D;IAC7D,UAAU;IACV,eAAe;IACf,kCAAkC;IAClC,mEAAmE;IACnE,YAAY;IACZ,iBAAiB;IACjB,+DAA+D;IAC/D,YAAY;IACZ,UAAU;IACV,QAAQ;IACR,MAAM;IACN,kCAAkC;IAClC,IAAI;IAEJ,IAAI,iBAAiB;QACjB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,mFAAiB,EAAE;YACtD,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE;gBACR,OAAO,MAAM,CAAC,QAAQ,CAAC;aAC1B;SACJ;QAED,OAAO,0FAAuB,CAAC;IACnC,CAAC;IAID,IAAI,aAAa;QACb,IAAI,IAAI,GAAW,EAAE,CAAC;QACtB,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;SAEhC;aAAM;YACH,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,GAAG,6CAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;gBACzD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;aAChC;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,+FAAsB,CAAC,IAAI,CAAC,SAAS,CAAC;QAC7C,sDAAsD;IAC1D,CAAC;IAMD,IAAW,UAAU;QACjB,IAAI,UAAU,GAAW,EAAE,CAAC;QAC5B,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,EAAE;YACtD,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;YAC9B,8DAA8D;SACjE;aAAM;YACH,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,mFAAiB,CAAC;YACzE,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAC3E,IAAI,WAAW,IAAI,UAAU,EAAE;gBAC3B,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,MAAM,EAAE;oBACR,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC;oBAC7B,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,QAAQ,CAAC;oBACnC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC;oBAC/B,uDAAuD;iBAC1D;aACJ;SAEJ;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAGD,IAAI,CAAC,QAA0B;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QACnB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;QAEnB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,sFAAkB,EAAE,CAAC;QACpC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC;QACzC,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,YAAY,GAA6B,EAAE,CAAC;QAEhD,6BAA6B;QAC7B,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,yDAAyD;SAC5D;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,6CAAM,EAAE,CAAC,MAAM,EAAE,CAAC;YACnC,mDAAmD;SACtD;QAED,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAClC,wDAAwD;SAC3D;aAAM;YACH,IAAI,YAAY,GAAG,6CAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;YAC/D,IAAI,aAAa,GAAG,6CAAM,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;YAC9D,IAAI,CAAC,UAAU,GAAG,aAAa;YAC/B,wDAAwD;SAC3D;QAED,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;YAChB,aAAa;YAEb,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE;gBAE/B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBAEtB,IAAI,SAAS,GAAG,KAAK,CAAC;oBACtB,IAAI,QAAQ,IAAI,CAAC,QAAQ,KAAK,CAAC,CAAC,EAAE;wBAC9B,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;4BAClB,SAAS,GAAG,IAAI,CAAC;yBACpB;qBACJ;yBAAM;wBACH,SAAS,GAAG,IAAI,CAAC;qBACpB;oBAED,IAAI,SAAS,EAAE;wBAEX,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACvC,IAAI,QAAQ,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE;4BACvC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;4BAC1B,sCAAsC;4BACtC,IAAI,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,WAAW,EAAE;gCAClD,YAAY,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;6BAC/C;4BAED,kCAAkC;4BAClC,IAAI,IAAI,CAAC,WAAW,EAAE;gCAClB,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,WAAW,EAAE;oCAClC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;iCACtC;6BACJ;4BACD,IAAI,IAAI,CAAC,WAAW,EAAE;gCAClB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE;oCACjC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC,MAAM,CAAC;iCACtC;6BACJ;yBACJ;qBAEJ;gBACL,CAAC,CAAC,CAAC;gBAEH,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;oBACtB,IAAI,IAAI,CAAC,QAAQ,EAAE;wBACf,IAAI,WAAW,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;wBACpC,IAAI,WAAW,EAAE;4BACb,WAAW,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE;gCAC7B,IAAI,OAAO,YAAY,CAAC,UAAU,CAAC,KAAK,WAAW,EAAE;oCACjD,IAAI,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC;oCACzC,IAAI,SAAS,EAAE;wCACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;qCAC3B;iCACJ;4BACL,CAAC,CAAC,CAAC;yBACN;qBACJ;gBACL,CAAC,CAAC,CAAC;aAEN;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,IAAI,KAAK,GAAG,IAAI,OAAO,EAAE,CAAC;QAC1B,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,KAAK,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACrB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEjC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,gDAAgD;QAGhD,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACvC,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACzC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACrC,KAAK,CAAC,eAAe,GAAG,IAAI,CAAC,eAAe,CAAC;QAC7C,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACjD,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACzB,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC;QAC/C,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC3C,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACvB,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACjC,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC/B,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3B,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAE7B,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,YAAY;QAChB,IAAI,OAAO,GAAG,SAAS,6CAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;QACvD,IAAI,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;QACvE,IAAI,cAAc,EAAE;YAChB,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,QAAQ,GAAG,GAAG,CAAC;YACnB,IAAI,IAAI,GAAG,KAAK,CAAC;YACjB,OAAO,CAAC,IAAI,EAAE;gBACV,OAAO,EAAE,CAAC;gBACV,OAAO,GAAG,SAAS,6CAAM,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,OAAO,GAAG,CAAC;gBAChE,cAAc,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC;gBACnE,IAAI,CAAC,cAAc,EAAE;oBACjB,IAAI,GAAG,IAAI,CAAC;iBACf;qBAAM;oBACH,IAAI,OAAO,IAAI,QAAQ,EAAE;wBACrB,IAAI,GAAG,IAAI,CAAC;wBACZ,MAAM;qBACT;iBACJ;aACJ;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,IAAI,YAAY;QACZ,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,mFAAiB,EAAE;YACtD,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpD,IAAI,MAAM,EAAE;gBACR,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;gBAChD,OAAO,MAAM,CAAC,QAAQ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aACjE;SACJ;QACD,OAAO,0FAAuB,CAAC;IACnC,CAAC;IAID,IAAI,cAAc;QACd,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;SAC/B;aAAM;YACH,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;gBACtB,IAAI,GAAG,0FAAuB,CAAC;aAClC;iBAAM;gBACH,IAAI,CAAC,eAAe,GAAG,mGAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAClE,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC;aAC/B;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAID,IAAI,eAAe;QACf,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACvB,IAAI,GAAG,IAAI,CAAC,gBAAgB,CAAC;SAChC;aAAM;YACH,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;gBACtB,IAAI,GAAG,0FAAuB,CAAC;aAClC;YACD,oEAAoE;YACpE,4DAA4D;YAC5D,sDAAsD;YACtD,4CAA4C;YAE5C,IAAI,GAAG,mGAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAGlD,kDAAkD;YAClD,iDAAiD;YAEjD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAE7B,mEAAmE;YACnE,sDAAsD;YACtD,yBAAyB;SAC5B;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAID,IAAI,cAAc;QACd,IAAI,IAAI,CAAC,eAAe,EAAE;YACtB,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;aAAM;YACH,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;gBACtB,OAAO,0FAAuB,CAAC;aAClC;YACD,IAAI,CAAC,eAAe,GAAG,mGAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAElE,oEAAoE;YACpE,yEAAyE;YACzE,6DAA6D;YAE7D,6DAA6D;YAC7D,oGAAoG;YAEpG,OAAO,IAAI,CAAC,eAAe,CAAC;SAC/B;IACL,CAAC;IAED,IAAI,gBAAgB;QAChB,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,GAAG,4FAAqB,CAAC;YACjC,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,IAAI,IAAI,qFAAsB,EAAE;gBAChC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClD,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;aAC3B;iBAAM;gBACH,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAClD,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;aAC3B;YACD,IAAI,QAAQ,GAAG,mGAA0B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9D,WAAW,GAAG,SAAS,QAAQ,OAAO,QAAQ,EAAE,CAAC;SACpD;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,IAAI,eAAe;QACf,IAAI,IAAY;QAChB,QAAQ,IAAI,CAAC,UAAU,EAAE;YACrB,gBAAgB;YAChB,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,IAAI,GAAG,SAAS,CAAC;gBACjB,MAAM;YACV,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,IAAI,GAAG,SAAS,CAAC;gBACjB,MAAM;YACV,KAAK,kBAAkB,CAAC,MAAM;gBAC1B,IAAI,GAAG,aAAa,CAAC;gBACrB,MAAM;YACV,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,IAAI,GAAG,UAAU,CAAC;gBAClB,MAAM;YACV,eAAe;SAClB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,gBAAgB;QAChB,QAAQ,IAAI,CAAC,UAAU,EAAE;YAErB,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,OAAO,UAAU,CAAC;YAEtB,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,OAAO,UAAU,CAAC;YAEtB,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,OAAO,SAAS,CAAC;SACxB;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,IAAI,gBAAgB;QAChB,QAAQ,IAAI,CAAC,UAAU,EAAE;YAErB,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,OAAO,YAAY,CAAC;YAExB,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,OAAO,WAAW,CAAC;YAEvB,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,OAAO,YAAY,CAAC;SAC3B;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAGD,IAAI,eAAe;QACf,OAAO,6CAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,gBAAgB;QAChB,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC;QACtE,IAAI,UAAU,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;QACxC,IAAI,QAAQ,GAAG,+FAAsB,CAAC,UAAU,CAAC,CAAC;QAClD,2DAA2D;QAC3D,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,IAAI,mBAAmB;QACnB,IAAI,SAAS,GAAG,6CAAM,EAAE,CAAC;QACzB,IAAI,WAAW,GAAG,6CAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,SAAS,CAAC;QAEd,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,SAAS,GAAG,6CAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SACvC;aAAM;YACH,SAAS,GAAG,6CAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;SACrE;QAED,IAAI,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACrE,IAAI,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAEpE,IAAI,QAAQ,GAAG,YAAY;YACvB,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC;YAC1B,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE/E,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE;YACrC,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;gBACtB,OAAO,wBAAwB,QAAQ,GAAG,CAAC;aAC9C;iBAAM;gBACH,OAAO,wBAAwB,QAAQ,OAAO,MAAM,GAAG,CAAC;aAC3D;SACJ;aAAM,IAAI,IAAI,CAAC,WAAW,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAC7C,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;gBACtB,OAAO,wBAAwB,QAAQ,GAAG,CAAC;aAC9C;iBAAM;gBACH,OAAO,wBAAwB,QAAQ,OAAO,MAAM,GAAG,CAAC;aAC3D;SACJ;aAAM,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,UAAU,EAAE;YAC7C,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;gBACtB,OAAO,yBAAyB,QAAQ,GAAG,CAAC;aAC/C;iBAAM;gBACH,OAAO,yBAAyB,QAAQ,OAAO,MAAM,GAAG,CAAC;aAC5D;SACJ;QAED,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,EAAE;YACtB,OAAO,qBAAqB,QAAQ,GAAG,CAAC;SAC3C;aAAM;YACH,OAAO,qBAAqB,QAAQ,OAAO,MAAM,GAAG,CAAC;SACxD;IACL,CAAC;IAED,IAAI,oBAAoB;QACpB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YACxB,OAAO,4BAA4B,CAAC;SACvC;aAAM;YACH,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,OAAO,sBAAsB,IAAI,CAAC,OAAO,GAAG,CAAC;aAChD;YACD,OAAO,sBAAsB,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,CAChE,CAAC,CACJ,GAAG,CAAC;SACR;IACL,CAAC;IAED,IAAI,cAAc;QACd,OAAO,OAAO,CAAC,iBAAiB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;IAED,IAAI,cAAc;QACd,+BAA+B;QAC/B,IAAI,GAAW,CAAC;QAChB,QAAQ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;YACnC,gBAAgB;YAChB,KAAK,SAAS;gBACV,GAAG,GAAG,SAAS,CAAC;gBAChB,MAAM;YACV,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW;gBACZ,GAAG,GAAG,UAAU,CAAC;gBACjB,MAAM;YACV,KAAK,SAAS;gBACV,GAAG,GAAG,UAAU,CAAC;gBACjB,MAAM;YACV;gBACI,GAAG,GAAG,SAAS,CAAC;gBAChB,MAAM;YACV,eAAe;SAClB;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,cAAc;QACd,uCAAuC;QACvC,IAAI,IAAI,GAAkB,iFAAqB,CAAC;QAChD,QAAQ,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,EAAE;YACnC,gBAAgB;YAChB,KAAK,SAAS;gBACV,IAAI,GAAG,iFAAqB,CAAC;gBAC7B,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,GAAG,iFAAqB,CAAC;gBAC7B,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,GAAG,+EAAoB,CAAC;gBAC5B,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,GAAG,+EAAoB,CAAC;gBAC5B,MAAM;YACV;gBACI,IAAI,GAAG,iFAAqB,CAAC;gBAC7B,MAAM;YACV,eAAe;SAClB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,MAAM,CAAC,iBAAiB,CAAC,UAAkB;QACvC,uCAAuC;QACvC,IAAI,IAAY,CAAC;QACjB,QAAQ,UAAU,CAAC,WAAW,EAAE,EAAE;YAC9B,gBAAgB;YAChB,KAAK,SAAS;gBACV,IAAI,GAAG,SAAS,CAAC;gBACjB,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,GAAG,SAAS,CAAC;gBACjB,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,GAAG,QAAQ,CAAC;gBAChB,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,GAAG,QAAQ,CAAC;gBAChB,MAAM;YACV;gBACI,IAAI,GAAG,SAAS,CAAC;gBACjB,MAAM;YACV,eAAe;SAClB;QACD,qDAAqD;QACrD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,UAAkB;QACnC,uCAAuC;QACvC,IAAI,IAAY,CAAC;QACjB,QAAQ,UAAU,CAAC,WAAW,EAAE,EAAE;YAC9B,gBAAgB;YAChB,KAAK,SAAS;gBACV,IAAI,GAAG,SAAS,CAAC;gBACjB,MAAM;YACV,KAAK,SAAS;gBACV,IAAI,GAAG,SAAS,CAAC;gBACjB,MAAM;YACV,KAAK,WAAW;gBACZ,IAAI,GAAG,WAAW,CAAC;gBACnB,MAAM;YACV,KAAK,QAAQ;gBACT,IAAI,GAAG,WAAW,CAAC;gBACnB,MAAM;YACV;gBACI,IAAI,GAAG,SAAS,CAAC;gBACjB,MAAM;YACV,eAAe;SAClB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAQD,IAAI,aAAa;QACb,IAAI,QAAQ,GAAG,0FAAuB,CAAC;QACvC,IAAI,IAAI,CAAC,cAAc,EAAE;YACrB,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC;SAClC;aAAM;YACH,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC,EAAE;gBACrB,IAAI,IAAI,GAAG,uGAAsB,CAAC;gBAClC,oCAAoC;gBACpC,yCAAyC;gBACzC,IAAI,IAAI,IAAI,qFAAsB,EAAE;oBAChC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9C,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;iBAC3B;qBAAM;oBACH,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;oBAC9C,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;iBAC3B;gBACD,IAAI,CAAC,cAAc,GAAG,QAAQ,CAAC;aAClC;SACJ;QACD,OAAO,QAAQ,CAAC;QAEhB,wBAAwB;QACxB,eAAe;IACnB,CAAC;IAED,IAAI,WAAW;QACX,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,YAAY,GAAY,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACjD,IAAI,WAAW,GAAG,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAE3C,IAAI,YAAY,IAAI,WAAW,EAAE;YAC7B,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC;YAChC,IAAI,IAAI,MAAM,CAAC;YACf,IAAI;gBACA,6GAA6G,CAAC;SACrH;aAAM,IAAI,YAAY,EAAE;YACrB,IAAI,GAAG,IAAI,CAAC,mBAAmB,CAAC;SACnC;aAAM,IAAI,WAAW,EAAE;YACpB,IAAI;gBACA,6GAA6G,CAAC;SACrH;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,YAAY;QACZ,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;YACtB,QAAQ,IAAI,CAAC,UAAU,EAAE;gBACrB,KAAK,CAAC;oBACF,IAAI,GAAG,UAAU,CAAC;oBAClB,MAAM;gBACV,KAAK,CAAC;oBACF,IAAI,GAAG,UAAU,CAAC;oBAClB,MAAM;gBACV,KAAK,CAAC;oBACF,IAAI,GAAG,OAAO,CAAC;oBACf,MAAM;gBACV;oBACI,MAAM;aACb;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,mBAAmB;QACnB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;YACtB,QAAQ,IAAI,CAAC,UAAU,EAAE;gBACrB,KAAK,CAAC;oBACF,IAAI;wBACA,6FAA6F,CAAC;oBAClG,MAAM;gBACV,KAAK,CAAC;oBACF,IAAI,GAAG,UAAU,CAAC;oBAClB,MAAM;gBACV,KAAK,CAAC;oBACF,IAAI;wBACA,+EAA+E,CAAC;oBACpF,MAAM;gBACV;oBACI,MAAM;aACb;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,mBAAmB;QACnB,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;YACtB,QAAQ,IAAI,CAAC,UAAU,EAAE;gBACrB,KAAK,CAAC;oBACF,IAAI;wBACA,iIAAiI,CAAC;oBACtI,MAAM;gBACV,KAAK,CAAC;oBACF,IAAI,GAAG,UAAU,CAAC;oBAClB,MAAM;gBACV,KAAK,CAAC;oBACF,IAAI;wBACA,kHAAkH,CAAC;oBACvH,MAAM;gBACV;oBACI,MAAM;aACb;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,mBAAmB;QACf,OAAO,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,mBAAmB;QACf,OAAO,OAAO,CAAC,mBAAmB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxD,CAAC;IAED,kBAAkB;QACd,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAED,kBAAkB;QACd,OAAO,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACvD,CAAC;IAGD,MAAM,CAAC,mBAAmB,CAAC,MAAc;QACrC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,QAAQ,MAAM,EAAE;YACZ,gBAAgB;YAChB,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,uBAAuB,CAAC;gBAC7E,MAAM;YACV,KAAK,kBAAkB,CAAC,MAAM;gBAC1B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBAC/E,MAAM;YACV,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC;gBACzE,MAAM;YACV,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC;gBAC3E,MAAM;YACV,eAAe;SAClB;QACD,mDAAmD;QACnD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,UAAkB;QACzC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,QAAQ,UAAU,EAAE;YAChB,gBAAgB;YAChB,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,sBAAsB,CAAC;gBAC3E,MAAM;YACV,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,wBAAwB,CAAC;gBAC/E,MAAM;YACV,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,qBAAqB,CAAC;gBACzE,MAAM;YACV,eAAe;SAClB;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,MAAM,CAAC,kBAAkB,CAAC,MAAc;QACpC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,QAAQ,MAAM,EAAE;YACZ,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,sBAAsB,CAAC;gBACrF,MAAM;YACV,KAAK,kBAAkB,CAAC,MAAM;gBAC1B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,uBAAuB,CAAC;gBACvF,MAAM;YACV,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,oBAAoB,CAAC;gBACjF,MAAM;YACV,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,qBAAqB,CAAC;gBACnF,MAAM;SACb;QACD,8CAA8C;QAC9C,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,MAAc;QACpC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,QAAQ,MAAM,EAAE;YACZ,gIAAgI;YAChI,KAAK,kBAAkB,CAAC,OAAO;gBAC3B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,4BAA4B,CAAC,CAAC,CAAC,uBAAuB,CAAC;gBACvF,MAAM;YACV,KAAK,kBAAkB,CAAC,QAAQ;gBAC5B,KAAK,GAAG,qFAAqB,CAAC,CAAC,CAAC,yBAAyB,CAAC,CAAC,CAAC,oBAAoB,CAAC;gBACjF,MAAM;SACb;QACD,uCAAuC;QACvC,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,eAAe;QACX,+BAA+B;QAC/B,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAChC,CAAC;IAGD,WAAW;IAGX,kBAAkB;IAElB,MAAM,CAAC,aAAa,CAAC,SAAiB;QAClC,IAAI,MAAM,GAAc,EAAE,CAAC;QAC3B,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;gBACvB,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,KAAK,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;gBAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;aACtB;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,WAAW,CAAC,IAAU;QAClB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,mDAAmD;YACnD,QAAQ,GAAG,EAAE;gBACT,6DAA6D;gBAC7D,KAAK,SAAS,CAAC,CAAC;oBACZ,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;oBACzB,MAAM;iBACT;gBAED,KAAK,QAAQ,CAAC,CAAC;oBACX,qFAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,MAAM;iBACT;gBAED,KAAK,QAAQ,CAAC,CAAC;oBACX,qFAAqB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAClC,MAAM;iBACT;aACJ;SACJ;IACL,CAAC;IAED,QAAQ,CAAC,IAAU;QACf,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,kBAAkB;QACjC,iDAAiD;QAEjD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAGvB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,gBAAgB;gBAChB,KAAK,GAAG;oBACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,MAAM;gBACV,KAAK,IAAI,CAAC;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK,CAAC,CAAC;oBACR,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrC,MAAM;iBACT;gBACD,KAAK,KAAK,CAAC,CAAC;oBACR,IAAI,CAAC,UAAU,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACtC,uDAAuD;oBACvD,MAAM;iBACT;gBACD,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;wBAAE,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;oBAC/D,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACjC,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACnC,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC/B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBAEV,KAAK,MAAM,CAAC,CAAC;oBACT,8BAA8B;oBAC9B,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,QAAQ,GAAG,wFAAoB,CAAC,SAAS,CAAC,CAAC;oBAC/C,oDAAoD;oBACpD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;oBAC1B,MAAM;iBACT;aAEJ;SACJ;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YACZ,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;YACf,oFAAkB,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;SAC5D;QACD,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;IACxB,CAAC;IAGD,UAAU,CAAC,QAAkB;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,UAAU,IAAI;gBACnE,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC1C,IAAI,iBAAiB,GAAG,IAAI,CAAC,eAAe,CAAC;gBAC7C,IAAI,iBAAiB,EAAE;oBACnB,IAAI,QAAQ,EAAE;wBACV,wDAAwD;wBACxD,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;qBACxC;iBACJ;qBAAM;oBACH,IAAI,QAAQ,IAAI,IAAI,EAAE;wBAClB,8DAA8D;wBAC9D,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;qBAC3B;yBAAM;wBACH,wDAAwD;wBACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;qBACtB;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;IACL,CAAC;IAED,SAAS,CAAC,KAAc;QACpB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,qDAAqD;QAErD,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC7B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAEnC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAEnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QAEjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QAEnC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC,eAAe,CAAC;QAC7C,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC,iBAAiB,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;QACzC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAE7B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM;QACF,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAChC,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE;YACnD,IAAI;gBACA,IAAI,KAAK,GAAG,sGAA0B,EAAE,CAAC;gBACzC,IAAI,OAAO,GAAG,WAAW,IAAI,CAAC,OAAO,YAAY,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,UAAU,KAAK,EAAE,CAAC;gBAC7H,sEAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;aAChC;YAAC,OAAO,CAAC,EAAE;gBACR,oFAAkB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;aACpC;SACJ;QAED,IAAI,IAAI,GAAG;YACP,EAAE,EAAE,IAAI,CAAC,IAAI;YACb,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,GAAG,EAAE,IAAI,CAAC,SAAS;gBACf,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE;gBAC1B,CAAC,CAAC,6CAAM,EAAE;qBACL,MAAM,EAAE;qBACR,OAAO,EAAE;YAClB,GAAG,EAAE,IAAI,CAAC,UAAU;gBAChB,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE;gBAC3B,CAAC,CAAC,6CAAM,CAAC,IAAI,CAAC,SAAS,CAAC;qBACnB,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC;qBAC9B,MAAM,EAAE;qBACR,OAAO,EAAE;YAClB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,EAAE,EAAE,IAAI,CAAC,OAAO;YAChB,IAAI,EAAE,IAAI,CAAC,UAAU;YACrB,GAAG,EAAE,IAAI,CAAC,UAAU;YACpB,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,KAAK,EAAE,IAAI,CAAC,SAAS;YAErB,KAAK,EAAE,IAAI;YACX,KAAK,EAAE,IAAI,CAAC,WAAW;YACvB,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,sBAAsB;YAEtB,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,GAAG,EAAE,IAAI,CAAC,UAAU;YACpB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,MAAM,EAAE,IAAI,CAAC,UAAU;YACvB,KAAK,EAAE,IAAI,CAAC,aAAa;YACzB,KAAK,EAAE,IAAI,CAAC,aAAa;SAC5B,CAAC;QAEF,qBAAqB;QACrB,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE;YAC3B,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;SAC5B;QACD,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;SAC5B;QACD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,KAAK,mFAAiB,EAAE;YACtD,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;SAC9B;QAED,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QAEtC,cAAc;QACd,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,IAAI,CAAC,GAAG,GAAG,6CAAM,EAAE;iBACd,MAAM,EAAE;iBACR,OAAO,EAAE,CAAC;SAClB;QACD,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE;YACX,IAAI,CAAC,GAAG,GAAG,6CAAM,EAAE;iBACd,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC;iBACf,MAAM,EAAE;iBACR,OAAO,EAAE,CAAC;SAClB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;QACd,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QAEzB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACpB,IAAI,MAAM,GAAG,EAAE,CAAC;YAChB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE;gBACxB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACnB,iDAAiD;aACpD;YACD,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;SACzB;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,QAAkB,EAAE,aAAsB,KAAK;QAC3D,IAAI,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACzB,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;YACpB,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;YACpC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,SAAS,CAAC,KAAa,EAAE,QAAkB;QACvC,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,OAAO,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAClC,OAAO,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QACzB,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAEpC,IAAI,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACrD,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC;QACvB,OAAO,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;QAE/B,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,aAAa;QACT,IAAI,WAAW,GAAG,IAAI,KAAK,EAAU,CAAC;QACtC,IAAI,IAAI,CAAC,YAAY,EAAE;YACnB,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,UAAU,EAAE;YACjB,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,aAAa,EAAE;YACpB,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAChC;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,SAAS,CAAC,IAAc;QACpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,8DAA8D;IAC9D,iCAAiC;IACjC,yCAAyC;IACzC,iBAAiB;IACjB,MAAM;IACN,2BAA2B;IAC3B,IAAI;IAEJ,WAAW;IAEX,UAAU,CAAC,IAAY,EAAE,OAAe,EAAE,GAAW,EAAE,GAAW;QAC9D,IAAI,IAAI,GAAG,IAAI,4DAAM,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,SAAS,GAAG,4FAAqB,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,4FAAqB,CAAC;QACvC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,IAAI,kGAAwB;YAAE,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;QAClF,wDAAwD;QACxD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB,CAAC,IAAY;QAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;QACxE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAErC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3B;QAED,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACrC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3B;QAED,mFAAmF;QACnF,4CAA4C;QAC5C,eAAe;QACf,6GAA6G;QAC7G,8EAA8E;QAC9E,qDAAqD;QACrD,yFAAyF;QACzF,IAAI;QAEJ,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,OAAO,CAAC,IAAY;QAChB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC,gBAAgB,EAAE,CAAC;IAC5B,CAAC;IAGD,cAAc,CAAC,MAAc;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAED,UAAU,CAAC,IAAY;QACnB,IAAI,IAAI,EAAE;YACN,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,gBAAgB,EAAE,CAAC;aAC3B;SACJ;IACL,CAAC;IAED,gBAAgB;QACZ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;QACpE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC;IACzE,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC1B,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC;SAC7C;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,IAAY;QACpB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC1B,OAAO,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,MAAM,CAAC;SAC7C;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,MAAc;QACnB,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,eAAe;QAEX,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC5B,wEAAwE;SAC3E;QAED,4BAA4B;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,SAAS,GAAG,2GAA4B,CAAC,IAAI,CAAC,SAAS,EAAE,4FAAqB,CAAC,CAAC;YACpF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAC5B,oDAAoD;SACvD;IACL,CAAC;IAED,cAAc;QACV,IAAI,OAAO,GAAa,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,sEAAsE;YAEtE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtB,wBAAwB;gBACxB,IAAI,YAAY,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;oBACtB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;oBACpB,0BAA0B;oBAC1B,sDAAsD;iBACzD;gBAED,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;oBAChB,4DAA4D;iBAC/D;qBAAM;oBAEH,IAAI,IAAI,CAAC,WAAW,EAAE;wBAElB,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;wBAC1B,6DAA6D;wBAC7D,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;wBACrE,gCAAgC;wBAChC,IAAI,GAAG,IAAI,IAAI,EAAE;4BACb,YAAY,GAAG,IAAI,CAAC;4BACpB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;4BACvB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;yBACjC;6BAAM;4BACH,gEAAgE;4BAChE,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;gCAC1C,4BAA4B;gCAC5B,gCAAgC;gCAChC,IAAI;gCACJ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gCACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;6BACnB;yBACJ;qBACJ;yBAAM;wBACH,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;wBACzB,IAAI,MAAM,IAAI,IAAI,EAAE;4BAChB,yCAAyC;4BACzC,YAAY,GAAG,IAAI,CAAC;yBACvB;6BAAM;4BACH,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACzC,IAAI,IAAI,IAAI,IAAI,EAAE;gCACd,YAAY,GAAG,IAAI,CAAC;6BACvB;iCAAM;gCACH,iDAAiD;gCACjD,IAAI,IAAI,CAAC,qBAAqB,EAAE,IAAI,IAAI,EAAE;oCACtC,yDAAyD;oCAEzD,IAAI,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;oCAC/D,IAAI,GAAG,IAAI,IAAI,EAAE;wCACb,4DAA4D;wCAC5D,YAAY,GAAG,IAAI,CAAC;wCACpB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;qCAC1B;yCAAM;wCAEH,+DAA+D;wCAE/D,2DAA2D;wCAC3D,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,EAAE;4CAC1C,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;4CACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC;yCACnB;qCACJ;iCACJ;qCAAM;oCACH,YAAY,GAAG,IAAI,CAAC;iCACvB;6BACJ;yBACJ;qBACJ;iBACJ;gBAED,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC;gBAC7B,IAAI,YAAY,EAAE;oBACd,IAAI,OAAO,IAAI,IAAI,EAAE;wBACjB,OAAO,GAAG,EAAE,CAAC;qBAChB;oBACD,yDAAyD;oBACzD,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACtB;qBAAM;oBACH,4DAA4D;iBAC/D;YACL,CAAC,CAAC,CAAC;SACN;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,kBAAkB;QACd,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC;QACnC,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,iBAAiB;QACb,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,QAAQ,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QACrC,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;YACzC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACnB,IAAI,GAAG,CAAC,UAAU,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,IAAI,EAAE,EAAE;oBAC7C,OAAO,GAAG,IAAI,CAAC;iBAClB;YACL,CAAC,CAAC,CAAC;SACN;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC;IACpC,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,2CAA2C;QAC3C,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;QAC3C,uDAAuD;QACvD,IAAI,UAAU,IAAI,IAAI,EAAE;YACpB,QAAQ,GAAG,IAAI,CAAC;SACnB;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,cAAc,CAAC,IAAY;QACvB,IAAI,SAAS,GAAW,IAAI,CAAC;QAC7B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;YACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;gBACxC,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC;gBACtB,IAAI,GAAG,IAAI,IAAI,EAAE;oBACb,IAAI,GAAG,CAAC,WAAW,EAAE,IAAI,MAAM,EAAE;wBAC7B,SAAS,GAAG,IAAI,CAAC;wBACjB,MAAM;qBACT;iBACJ;aACJ;SACJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,yCAAyC;IACzC,kCAAkC;IAClC,EAAE;IACF,uDAAuD;IACvD,+CAA+C;IAC/C,mCAAmC;IACnC,iCAAiC;IACjC,iCAAiC;IACjC,6BAA6B;IAC7B,gDAAgD;IAChD,gCAAgC;IAChC,cAAc;IACd,YAAY;IACZ,UAAU;IACV,UAAU;IACV,MAAM;IACN,sBAAsB;IACtB,IAAI;IAEJ,gBAAgB,CAAC,OAAe;QAC5B,IAAI,SAAS,GAAG,KAAK,CAAC;QACtB,IAAI,QAAQ,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACtB,IAAI,SAAS,IAAI,KAAK,EAAE;oBACpB,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;oBAC3B,IAAI,OAAO,IAAI,IAAI,EAAE;wBACjB,IAAI,OAAO,CAAC,WAAW,EAAE,IAAI,QAAQ,EAAE;4BACnC,SAAS,GAAG,IAAI,CAAC;yBACpB;qBACJ;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAGD,UAAU,CAAC,WAAmB,EAAE,SAAiB,EAAE,UAA0B,IAAI;QAC7E,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,oDAAoD;QAEpD,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO;YAEzC,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;YAChD,qDAAqD;YACrD,IAAI,CAAC,YAAY,EAAE;gBAEf,IAAI,KAAK,GAAG,OAAO,IAAI,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;gBACjE,IAAI,KAAK,IAAI,IAAI,EAAE;oBAGf,6BAA6B;oBAC7B,IAAI,IAAI,CAAC,aAAa,CAAC,SAAS,CAAC,EAAE;wBAE/B,kBAAkB;wBAClB,IAAI,WAAW,IAAI,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,EAAE;4BAEnD,IAAI,KAAK,GAAG,UAAU,CAAC;4BACvB,IAAI,IAAI,GAAG,iEAAiE,CAAC;4BAC7E,IAAI,CAAC,OAAO;iCACP,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC;iCAC9B,IAAI,CAAC,WAAW,CAAC,EAAE;gCAChB,wCAAwC;gCACxC,OAAO,CAAC,WAAW,CAAC;4BACxB,CAAC,CAAC,CAAC;4BAEP,+DAA+D;4BAC/D,sEAAsE;4BACtE,oEAAoE;4BACpE,kEAAkE;4BAClE,gEAAgE;4BAChE,EAAE;4BACF,oCAAoC;4BACpC,sBAAsB;4BACtB,uEAAuE;4BACvE,EAAE;4BACF,iDAAiD;4BACjD,mBAAmB;4BACnB,MAAM;4BACN,gDAAgD;4BAChD,oBAAoB;4BACpB,MAAM;4BACN,mBAAmB;yBAGtB;6BAAM;4BACH,OAAO,CAAC,IAAI,CAAC,CAAC;yBACjB;qBACJ;yBAAM;wBACH,2CAA2C;wBAC3C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC,CAAC;wBAC1C,OAAO,CAAC,KAAK,CAAC,CAAC;wBAEf,+CAA+C;wBAE/C,8DAA8D;wBAE9D,iCAAiC;wBACjC,gDAAgD;wBAChD,eAAe;wBACf,oCAAoC;wBACpC,2BAA2B;wBAC3B,yBAAyB;wBACzB,uDAAuD;wBACvD,QAAQ;wBACR,sBAAsB;wBACtB,QAAQ;qBACX;iBAEJ;qBAAM;oBACH,oFAAkB,CAAC,sBAAsB,CAAC,CAAC;oBAC3C,OAAO,CAAC,KAAK,CAAC,CAAC;iBAClB;aACJ;iBAAM;gBACH,oFAAkB,CAAC,2BAA2B,CAAC,CAAC;gBAChD,OAAO,CAAC,KAAK,CAAC,CAAC;aAClB;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,aAAa,CAAC,KAAa;QACvB,oDAAoD;QACpD,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACpB,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,KAAK,IAAI,QAAQ,EAAE;gBACvC,MAAM,GAAG,IAAI,CAAC;aACjB;SACJ;QACD,+DAA+D;QAC/D,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,WAAiB,EAAE,YAAkB,EAAE,WAAoB,EAAE,UAAmB,EAAE,SAAiB;QACvH,IAAI,QAAgB,CAAC;QAErB,IAAI,WAAW,GAAG,6CAAM,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,SAAS,CAAC;QACd,IAAI,UAAU,EAAE;YAEZ,SAAS,GAAG,6CAAM,CAAC,YAAY,CAAC,CAAC;SACpC;aAAM;YAGH,SAAS,GAAG,6CAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;SAC7D;QAED,IAAI,SAAS,GAAG,+FAAsB,CAAC,WAAW,CAAC,CAAC;QACpD,IAAI,UAAU,GAAG,+FAAsB,CAAC,YAAY,CAAC,CAAC;QACtD,IAAI,QAAQ,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QAE7C,IAAI,WAAW,EAAE;YAEb,IAAI,QAAQ,EAAE;gBACV,QAAQ,GAAG,GAAG,SAAS,EAAE,CAAC;aAC7B;iBAAM;gBACH,QAAQ,GAAG,GAAG,SAAS,OAAO,UAAU,EAAE,CAAC;aAC9C;SACJ;aAAM;YAEH,IAAI,UAAU,EAAE;gBACZ,QAAQ,GAAG,eAAe,UAAU,EAAE,CAAC;aAC1C;iBAAM;gBAEH,IAAI,QAAQ,EAAE;oBAGV,QAAQ,GAAG,kBAAkB,CAAC;iBACjC;qBAAM;oBAEH,QAAQ,GAAG,kBAAkB,CAAC;iBACjC;aACJ;SACJ;QAGD,mCAAmC;QACnC,oBAAoB;QACpB,iCAAiC;QACjC,MAAM;QACN,WAAW;QACX,kDAAkD;QAClD,MAAM;QACN,IAAI;QACJ,yCAAyC;QACzC,oBAAoB;QACpB,uDAAuD;QACvD,MAAM;QACN,WAAW;QACX,wEAAwE;QACxE,MAAM;QACN,IAAI;QACJ,yCAAyC;QACzC,oBAAoB;QACpB,wDAAwD;QACxD,MAAM;QACN,WAAW;QACX,yEAAyE;QACzE,MAAM;QACN,IAAI;QACJ,SAAS;QACT,oBAAoB;QACpB,qDAAqD;QACrD,MAAM;QACN,WAAW;QACX,sEAAsE;QACtE,MAAM;QACN,IAAI;QACJ,OAAO,QAAQ,CAAC;IACpB,CAAC;CA6DJ;AAEM,MAAM,aAAa;CAOzB;;;;;;;;;;;;;;;;AC7qEmD;AACuB;AAC7B;AAEvC,MAAM,cAAc;IAyBvB,YAAY,IAAa;QAxBzB,OAAE,GAAW,EAAE,CAAC;QAChB,SAAI,GAAW,EAAE,CAAC;QAClB,YAAO,GAAW,EAAE,CAAC;QACrB,YAAO,GAAW,EAAE,CAAC;QACrB,SAAI,GAAW,CAAC,CAAC;QACjB,QAAG,GAAW,GAAG,CAAC;QAClB,QAAG,GAAW,GAAG,CAAC;QAClB,WAAM,GAAW,GAAG,CAAC;QACrB,WAAM,GAAW,GAAG,CAAC;QAErB,QAAG,GAAW,EAAE,CAAC;QACjB,UAAK,GAAW,EAAE,CAAC;QACnB,UAAK,GAAW,EAAE,CAAC;QACnB,gBAAW,GAAW,CAAC,CAAC;QACxB,SAAI,GAAW,EAAE,CAAC;QAGlB,UAAK,GAAW,EAAE,CAAC;QAKnB,mBAAc,GAAY,KAAK,CAAC;QAG5B,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;IACL,CAAC;IAED,IAAI,MAAM;QACN,IAAI,IAAI,CAAC,EAAE,EAAE;YACT,OAAO,IAAI,CAAC,EAAE,CAAC;SAClB;aAAM,IAAI,IAAI,CAAC,OAAO,EAAE;YACrB,OAAO,IAAI,CAAC,OAAO,CAAC;SACvB;aAAM,IAAI,IAAI,CAAC,IAAI,EAAE;YAClB,OAAO,IAAI,CAAC,IAAI,CAAC;SACpB;aAAM;YACH,OAAO,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;SAC9B;IACL,CAAC;IAED,WAAW;QACP,IAAI,GAAG,GAAG,SAAS,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,OAAO,WAAW,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,GAAG,UAAU,IAAI,CAAC,GAAG,EAAE,CAAC;QAC7G,OAAO,GAAG,CAAC;IACf,CAAC;IAED,IAAI,IAAI;QACJ,IAAI,OAAO,GAAG,YAAY,CAAC;QAC3B,QAAQ,IAAI,CAAC,IAAI,EAAE;YACf,gBAAgB;YAChB,KAAK,wEAAgB;gBACjB,OAAO,GAAG,gBAAgB,CAAC;gBAC3B,MAAM;YACV,KAAK,4EAAkB;gBACnB,OAAO,GAAG,UAAU,CAAC;gBACrB,MAAM;YACV,KAAK,4EAAkB;gBACnB,OAAO,GAAG,qBAAqB,CAAC;gBAChC,MAAM;YACV,KAAK,4EAAkB;gBACnB,OAAO,GAAG,kBAAkB,CAAC;gBAC7B,MAAM;YACV,eAAe;SAClB;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,4BAA4B;IAC5B,4CAA4C;IAC5C,+CAA+C;IAC/C,kBAAkB;IAClB,4BAA4B;IAC5B,QAAQ;IACR,yCAAyC;IACzC,iDAAiD;IACjD,iCAAiC;IACjC,oCAAoC;IACpC,kBAAkB;IAClB,uDAAuD;IACvD,kBAAkB;IAClB,uDAAuD;IACvD,kBAAkB;IAClB,uDAAuD;IACvD,kBAAkB;IAClB,uDAAuD;IACvD,kBAAkB;IAClB,uDAAuD;IACvD,kBAAkB;IAClB,uDAAuD;IACvD,EAAE;IACF,mBAAmB;IACnB,gDAAgD;IAChD,UAAU;IACV,eAAe;IACf,oCAAoC;IACpC,kBAAkB;IAClB,iDAAiD;IACjD,kBAAkB;IAClB,iDAAiD;IACjD,kBAAkB;IAClB,iDAAiD;IACjD,kBAAkB;IAClB,iDAAiD;IACjD,kBAAkB;IAClB,iDAAiD;IACjD,kBAAkB;IAClB,iDAAiD;IACjD,EAAE;IACF,mBAAmB;IACnB,gDAAgD;IAChD,UAAU;IACV,QAAQ;IACR,MAAM;IACN,eAAe;IACf,IAAI;IAEJ,QAAQ,CAAC,IAAY;QACjB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,IAAI;oBACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBAEV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,aAAa;oBACd,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,UAAU;oBACX,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,cAAc;gBACd,0BAA0B;gBAC1B,WAAW;gBACX,cAAc;gBACd,0BAA0B;gBAC1B,WAAW;gBACX,cAAc;gBACd,0BAA0B;gBAC1B,WAAW;gBACX,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBAEV,KAAK,aAAa;oBACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAkB,CAAC;oBAC9C,MAAM;gBAEV,KAAK,UAAU;oBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;aACjC;SACJ;IACL,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAmB;QACpC,IAAI,OAAO,GAAqB,EAAE,CAAC;QACnC,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;gBAC5B,IAAI,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;gBACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY;QAC1B,IAAI,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QAClC,MAAM,CAAC,IAAI,GAAG,wEAAgB,CAAC;QAC/B,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,MAAM;oBACP,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,UAAU;oBACX,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,mBAAmB;oBACpB,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,UAAU;oBACX,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;oBAChC,IAAI,QAAQ,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC;oBACpC,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;oBAC7B,MAAM;aACb;SACJ;QAED,4BAA4B;QAC5B,IAAI,MAAM,CAAC,IAAI,IAAI,IAAI,IAAI,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;YAC1C,MAAM,CAAC,IAAI,GAAG,sGAA0B,CAAC,MAAM,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;SAChE;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,CAAC,mBAAmB,CAAC,IAAY;QACnC,IAAI,OAAO,GAAqB,EAAE,CAAC;QAEnC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,aAAa;oBACd,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,SAAS,IAAI,IAAI,EAAE;wBACnB,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;4BAC5B,IAAI,MAAM,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,CAAC;4BACtC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACzB,CAAC,CAAC,CAAC;qBACN;oBACD,MAAM;aACb;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAAe;QAClC,IAAI,OAAO,GAAqB,EAAE,CAAC;QAEnC,IAAI,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACrB,IAAI,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;gBAClC,MAAM,CAAC,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC;gBACnB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;gBACnB,MAAM,CAAC,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC;gBACvB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC;gBACnB,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC/B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC/B,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;oBAC/B,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;iBACnC;gBACD,IAAI,CAAC,CAAC,GAAG,EAAE;oBACP,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;iBACzB;gBACD,MAAM,CAAC,SAAS,GAAG,IAAI,CAAC;gBAExB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,uBAAuB,CAAC,IAAY;QACvC,IAAI,OAAO,GAAqB,EAAE,CAAC;QACnC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,SAAS;oBACV,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,SAAS,IAAI,IAAI,EAAE;wBACnB,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;4BAC5B,IAAI,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;4BAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACzB,CAAC,CAAC,CAAC;qBACN;oBACD,MAAM;aACb;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,IAAY;QACrC,IAAI,OAAO,GAAqB,EAAE,CAAC;QACnC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,SAAS;oBACV,IAAI,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,IAAI,SAAS,IAAI,IAAI,EAAE;wBACnB,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;4BAC5B,IAAI,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;4BAC7C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;wBACzB,CAAC,CAAC,CAAC;qBACN;oBACD,MAAM;aACb;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;CACJ;AAEM,MAAM,oBAAoB;CAShC;AAaM,MAAM,MAAM;CAKlB;AAeM,MAAM,SAAS;IAAtB;QAuCW,gBAAW,GAAW,CAAC,CAAC,CAAC;QACzB,YAAO,GAAY,KAAK,CAAC;IACpC,CAAC;CAAA;AAEM,MAAM,WAAW;IAQpB,IAAI,WAAW;QACX,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACnB,KAAK,UAAU,CAAC,IAAI;gBAChB,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,OAAO,WAAW,CAAC,WAAW,CAAC;iBAClC;gBACD,OAAO,WAAW,CAAC,gBAAgB,CAAC;YAExC,KAAK,UAAU,CAAC,IAAI;gBAChB,IAAI,IAAI,CAAC,UAAU,EAAE;oBACjB,OAAO,WAAW,CAAC,WAAW,CAAC;iBAClC;gBACD,OAAO,WAAW,CAAC,gBAAgB,CAAC;YAExC;gBACI,OAAO,EAAE,CAAC;SACjB;IACL,CAAC;IAED,IAAI,WAAW;QACX;YACI,QAAQ,IAAI,CAAC,QAAQ,EAAE;gBACnB,KAAK,UAAU,CAAC,IAAI;oBAChB,OAAO,SAAS,CAAC;gBAErB,KAAK,UAAU,CAAC,IAAI;oBAChB,OAAO,aAAa,CAAC;gBAEzB;oBACI,OAAO,UAAU,CAAC;aACzB;SACJ;IACL,CAAC;IAED,YAAY,IAAY;QAtCxB,eAAU,GAAY,KAAK,CAAC;QAuCxB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAe,IAAI,CAAC,EAAE,CAAC;IACxC,CAAC;CACJ;AAEM,MAAM,YAAY;IAarB,YAAY,KAAoB;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;QACrB,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC;QAChB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC;QACxB,iBAAiB;QACjB,IAAI,UAAU,GAAW;YACrB,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,GAAG,EAAE,KAAK,CAAC,GAAG;YACd,EAAE,EAAE,UAAU,CAAC,IAAI;YACnB,GAAG,EAAE,CAAC;SACT,CAAC;QACF,IAAI,MAAM,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,CAAC,UAAU,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxB,IAAI,KAAK,CAAC,KAAK,EAAE;YACb,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACpB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC;gBACpC,IAAI,CAAC,CAAC,EAAE,KAAa,UAAU,CAAC,IAAI,EAAE;oBAClC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;oBACpB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC;oBACpB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,EAAE,CAAC;iBACxB;YACL,CAAC,CAAC,CAAC;SACN;aAAM;YACH,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;YACvB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC;SAC1B;IACL,CAAC;CACJ;AAED,wBAAwB;AAExB,iBAAiB;AACjB,yBAAyB;AAEzB,aAAa;AACb,wBAAwB;AAExB,gBAAgB;AAChB,yBAAyB;AAEzB,yBAAyB;AAEzB,yBAAyB;AAEzB,yBAAyB;AAEzB,cAAc;AACd,yBAAyB;AAEzB,iBAAiB;AACjB,2BAA2B;AAE3B,iBAAiB;AACjB,2BAA2B;AAE3B,sBAAsB;AACtB,qCAAqC;AACrC,wCAAwC;AAExC,gCAAgC;;;;;;;;;;;;;;;;;;ACrgBQ;AAEU;AAEf;AACiB;AACd;AACwB;AAGvD,MAAM,MAAM;IAEf,YAAY,IAAK;QAiCjB,eAAe;QAEf,cAAS,GAAG,KAAK,CAAC;QAKlB,QAAG,GAAW,CAAC,CAAC;QAChB,QAAG,GAAW,CAAC,CAAC;QAEhB,aAAQ,GAAW,CAAC,CAAC;QAGrB,gBAAW,GAAY,KAAK,CAAC;QAM7B,mBAAc,GAAY,KAAK,CAAC;QAEhC,uBAAuB;QACvB,4BAA4B;QAC5B,2BAA2B;QAE3B,aAAQ,GAAW,CAAC,CAAC;QAcrB,yBAAyB;QACzB,sCAAsC;QACtC,sBAAsB;QACtB,qBAAqB;QACrB,qBAAqB;QACrB,OAAO;QACP,6FAA6F;QAC7F,4CAA4C;QAC5C,kBAAkB;QAClB,IAAI;QAEJ,aAAQ,GAAW,EAAE,CAAC;QAlFlB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;aAAM;YACH,IAAI,CAAC,MAAM,GAAG,sFAAkB,EAAE,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,2EAAW,CAAC;YAC7B,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;SAC9B;IACL,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QACxB,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;SAC3B;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAmB;QACpC,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;gBACvB,IAAI,IAAI,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC1B,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;SACJ;QAED,OAAO,KAAK,CAAC;IACjB,CAAC;IA8BD,IAAI,cAAc;QACd,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE;YAC/B,OAAO,EAAE,CAAC;SACb;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,CAAC;IAcD,IAAI,OAAO;QACP,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,GAAG,GAAG,6EAAc,CAAC,IAAI,CAAC,CAAC;QAC/B,IAAI,GAAG,EAAE;YACL,IAAI,GAAG,GAAG,gHAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;aACvB;iBAAM;gBACH,GAAG,CAAC,YAAY,EAAE;qBACb,IAAI,CAAC,OAAO,CAAC,EAAE;oBACZ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;oBACxB,wDAAwD;gBAC5D,CAAC,CAAC;aACT;SACJ;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAGD,4BAA4B;IAC5B,oEAAoE;IACpE,mHAAmH;IACnH,4CAA4C;IAC5C,kBAAkB;IAClB,EAAE;IACF,mCAAmC;IACnC,oDAAoD;IACpD,wGAAwG;IACxG,IAAI;IAEJ,IAAI,eAAe;QACf,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAE/B,IAAI,SAAS,EAAE;YAEX,IAAI,KAAK,GAAG,IAAI,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;YACjC,IAAI,UAAU,GAAG,KAAK,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YAC7C,IAAI,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,UAAU,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAEpE,WAAW,GAAG,GAAG,QAAQ,EAAE,GAAG,OAAO,CAAC;YACtC,iCAAiC;SACpC;QACD,+CAA+C;QAC/C,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,aAAa,CAAC,WAAoB;QAC9B,IAAI,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC;QACvC,qCAAqC;QACrC,qBAAqB;QACrB,IAAI;QACJ,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB;IAGlB,KAAK;QACD,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC7C,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,IAAY;QAEjB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,kCAAkC;YAClC,QAAQ,GAAG,EAAE;gBACT,KAAK,GAAG;oBACJ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;aACb;SACJ;IAGL,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAEhC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM;QACF,IAAI,IAAI,GAAG;YACP,GAAG,EAAE,IAAI,CAAC,MAAM;YAChB,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,EAAE,EAAE,IAAI,CAAC,IAAI;YACb,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,KAAK;YACf,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,EAAE,EAAE,IAAI,CAAC,SAAS;SACrB,CAAC;QAEF,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;SAC5C;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;SAC5B;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC9B;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,WAAW,CAAC,SAAe,EAAE,OAAa;QACtC,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,2DAA2D;QAC3D,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,IAAI,YAAY,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAChD,IAAI,YAAY,IAAI,IAAI,EAAE;YAEtB,IAAI,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;YACtD,IAAI,OAAO,IAAI,IAAI,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,OAAO,GAAG,IAAI,CAAC;aAClB;iBAAM;gBACH,OAAO,GAAG,KAAK,CAAC;aACnB;SACJ;aAAM;YACH,OAAO,GAAG,IAAI,CAAC;SAClB;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,YAAY;QACR,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,4FAAqB,CAAC;QAC1E,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,qBAAqB;QACjB,IAAI,KAAK,GAAa,IAAI,CAAC;QAC3B,IAAI,OAAO,GAAG,sFAAmB,EAAE,CAAC;QACpC,IAAI,OAAO,IAAI,IAAI,EAAE;YACjB,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;gBACrB,uBAAuB;gBACvB,IAAI,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC;gBACzB,IAAI,IAAI,IAAI,IAAI,EAAE;oBACd,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;wBACrB,IAAI,KAAK,IAAI,IAAI,EAAE;4BACf,KAAK,GAAG,EAAE,CAAC;yBACd;wBACD,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;qBACtB;iBACJ;gBACD,GAAG;YACP,CAAC,CAAC,CAAC;SACN;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,cAAc,CAAC,SAAe,EAAE,OAAa;QACzC,IAAI,OAAO,GAAmB,IAAI,CAAC;QAEnC,IAAI,KAAK,GAAG,IAAI,CAAC,qBAAqB,EAAE,CAAC;QACzC,IAAI,KAAK,IAAI,IAAI,EAAE;YAEf,IAAI,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAEjC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACjB,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;gBAC1C,IAAI,WAAW,IAAI,IAAI,EAAE;oBACrB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACtB,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;wBACnC,IAAI,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;wBAC/B,uBAAuB;wBACvB,qBAAqB;wBAErB,uDAAuD;wBACvD,gDAAgD;wBAChD,mCAAmC;wBACnC,mCAAmC;wBACnC,GAAG;wBACH,QAAQ;wBACR,qBAAqB;wBACrB,qCAAqC;wBACrC,iCAAiC;wBACjC,GAAG;wBAEH,IAAI,gBAAgB,GAAG,QAAQ,IAAI,UAAU,IAAI,MAAM,IAAI,QAAQ,CAAC;wBACpE,IAAI,aAAa,GAAG,QAAQ,IAAI,UAAU,IAAI,MAAM,IAAI,UAAU,CAAC;wBACnE,IAAI,cAAc,GAAG,QAAQ,IAAI,QAAQ,IAAI,MAAM,IAAI,QAAQ,CAAC;wBAChE,IAAI,KAAK,GAAG,gBAAgB,IAAI,aAAa,IAAI,cAAc,CAAC;wBAEhE,IAAI,KAAK,EAAE;4BACP,IAAI,OAAO,IAAI,IAAI,EAAE;gCACjB,OAAO,GAAG,EAAE,CAAC;6BAChB;4BACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;4BAClB,yDAAyD;yBAC5D;oBACL,CAAC,CAAC,CAAC;iBACN;YACL,CAAC,CAAC,CAAC;SACN;aAAM;YACH,oDAAoD;SACvD;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;CAEJ;AAGD,wBAAwB;AACxB,mCAAmC;AACnC,gCAAgC;AAChC,qBAAqB;AACrB,qCAAqC;AACrC,EAAE;AACF,sCAAsC;AACtC,4BAA4B;AAC5B,qDAAqD;AACrD,wCAAwC;AACxC,eAAe;AACf,kBAAkB;AAClB,mCAAmC;AACnC,QAAQ;AACR,MAAM;AACN,EAAE;AACF,6BAA6B;AAC7B,yCAAyC;AACzC,EAAE;AACF,uDAAuD;AACvD,6CAA6C;AAC7C,8BAA8B;AAC9B,mCAAmC;AACnC,6BAA6B;AAC7B,mBAAmB;AACnB,6BAA6B;AAC7B,gDAAgD;AAChD,YAAY;AACZ,YAAY;AACZ,QAAQ;AACR,MAAM;AACN,sBAAsB;AACtB,IAAI;;;;;;;;;;;;;;;;;;;AClaG,MAAM,YAAY;IAIrB,YAAY,SAAe,EAAE,OAAa;QACtC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC;QACvB,IAAI,CAAC,GAAG,GAAG,OAAO,CAAC;IACvB,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,KAAK;oBACN,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACjC,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC3B,MAAM;aACb;SACJ;IACL,CAAC;IAED,MAAM;QACF,IAAI,IAAI,GAAG;YACP,GAAG,EAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE;YACzB,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE;SAC1B,CAAC;QACF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,QAAQ;QACJ,OAAO,gBAAgB,IAAI,CAAC,KAAK,MAAM,IAAI,CAAC,GAAG,EAAE,CAAC;IACtD,CAAC;CACJ;AAED,4CAA4C;AAC5C,kDAAkD;AAClD,8CAA8C;AAC9C,yCAAyC;AACzC,sBAAsB;AACtB,IAAI;;;;;;;;;;;;;ACxCwB;AACwB;AACF;AACI;AACb;AACH;AACc;AAE7C,MAAM,MAAM;IAwBf,KAAK;QACD,IAAI,SAAS,GAAG,IAAI,MAAM,EAAE,CAAC;QAC7B,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,SAAS,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAC3B,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACzB,SAAS,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QACrC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACvC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QACnC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,SAAS,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/C,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAEnC,mCAAmC;QACnC,+CAA+C;QAE/C,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,YAAY,IAAK;QA7CjB,oBAAe,GAAG,KAAK,CAAC;QAKxB,SAAI,GAAgB,qCAAgB,CAAC;QAKrC,aAAQ,GAAW,CAAC,CAAC;QAOrB,eAAU,GAAY,KAAK,CAAC;QAC5B,mBAAc,GAAY,KAAK,CAAC;QAEhC,aAAQ,GAAW,CAAC,CAAC;QA0BjB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;aAAM;YACH,IAAI,CAAC,SAAS,GAAG,oCAAgB,CAAC;YAClC,IAAI,CAAC,MAAM,GAAG,4CAAkB,EAAE,CAAC;SACtC;IACL,CAAC;IAGD,IAAI,MAAM;QACN,IAAI,MAAM,GAAa,EAAE,CAAC;QAE1B,IAAI,IAAI,CAAC,IAAI,IAAI,yCAAkB,EAAE;YACjC,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;SAClC;aAAM;YACH,IAAI,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC;YACrB,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YACpC,IAAI,GAAG,GAAG,CAAC,KAAK,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC;YAEpC,IAAI,GAAG,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC7B,IAAI,GAAG,IAAI,CAAC;gBAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SAEhC;QACD,oCAAoC;QACpC,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,MAAM,CAAC,QAAkB;QACzB,IAAI,KAAK,GAAW,CAAC,CAAC;QACtB,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;YACtB,gBAAgB;YAChB,QAAQ,MAAM,EAAE;gBACZ,KAAK,CAAC;oBACF,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;oBAC3B,MAAM;gBACV,KAAK,CAAC;oBACF,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;oBAC3B,MAAM;gBACV,KAAK,CAAC;oBACF,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;oBAC3B,MAAM;gBACV,KAAK,CAAC;oBACF,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;oBAC3B,MAAM;gBACV,KAAK,CAAC;oBACF,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;oBAC3B,MAAM;gBACV,KAAK,CAAC;oBACF,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;oBAC3B,MAAM;gBACV,KAAK,CAAC;oBACF,KAAK,GAAG,KAAK,GAAG,UAAU,CAAC;oBAC3B,MAAM;gBACV;oBACI,MAAM;aACb;YACD,eAAe;QACnB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,GAAG,KAAK,CAAC;IACrB,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO;QACP,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;IAC9B,CAAC;IAGD,IAAI,QAAQ;QACR,IAAI,cAAc,GAAG,gBAAM,EAAE;aACxB,OAAO,CAAC,KAAK,CAAC;aACd,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC;aAClC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,IAAI,YAAY,GAAG,gBAAM,EAAE;aACtB,OAAO,CAAC,KAAK,CAAC;aACd,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC;aACnC,MAAM,CAAC,OAAO,CAAC,CAAC;QACrB,OAAO,GAAG,cAAc,MAAM,YAAY,EAAE,CAAC;IACjD,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAmB;QACpC,6CAA6C;QAC7C,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;gBAC5B,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;gBAC5B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,gBAAgB;YAChB,QAAQ,GAAG,EAAE;gBACT,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK,CAAC,CAAC;oBACR,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,kDAAkD;oBAClD,MAAM;iBACT;gBACD,KAAK,KAAK;oBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;aACb;YACD,eAAe;SAClB;IACL,CAAC;IAED,QAAQ,CAAC,IAAY;QACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,kDAAkD;QAClD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAE9B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAED,MAAM;QACF,IAAI,IAAI,GAAG;YACP,GAAG,EAAE,IAAI,CAAC,MAAM;YAChB,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,GAAG,EAAE,IAAI,CAAC,UAAU;YACpB,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI,CAAC,QAAQ;SACrB,CAAC;QAEF,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;SAC/B;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,gDAAgD;IAEhD,MAAM,CAAC,YAAY;QACf,IAAI,QAAkB,CAAC;QACvB,IAAI,KAAK,GAAG,oCAAgB,CAAC;QAC7B,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAClB,QAAQ,GAAG,EAAE,CAAC;YACd,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACjB,IAAI,IAAI,CAAC,IAAI,IAAI,yCAAkB,EAAE;oBACjC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;iBACvB;YACL,CAAC,CAAC,CAAC;SACN;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;IAED,OAAO,CAAC,GAAS;QACb,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,WAAW,GAAG,IAAI,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAExC,IAAI,OAAO,GAAmB,IAAI,CAAC;QACnC,qCAAqC;QAErC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;YAC5B,OAAO,GAAG,IAAI,CAAC,aAAa,CAAC;SAChC;aAAM;YACH,IAAI,GAAG,GAAG,gBAAM,CAAC,GAAG,CAAC;iBAChB,OAAO,CAAC,SAAS,CAAC;iBAClB,OAAO,EAAE,CAAC;YACf,IAAI,GAAG,GAAG,GAAG,CAAC;YAEd,yGAAyG;YACzG,IAAI,OAAO,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC;YAC5B,IAAI,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC;YAClC,IAAI,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC;YAEpC,sDAAsD;YACtD,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,UAAU,EAAE;gBACnC,YAAY,GAAG,IAAI,CAAC,SAAS,GAAG,WAAW,CAAC;aAC/C;YAED,IAAI,GAAG,GAAG,OAAO,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ;YACtD,IAAI,WAAW,GAAG,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,MAAM,EAAE,CAAC,CAAC;YACrD,IAAI,UAAU,GAAG,WAAW,GAAG,CAAC,CAAC;YACjC,4EAA4E;YAE5E,4CAA4C;YAC5C,iCAAiC;YACjC,oEAAoE;YAGpE,KAAK,IAAI,MAAM,GAAG,WAAW,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,EAAE,EAAE;gBAC3D,GAAG,GAAG,GAAG,GAAG,MAAM,GAAG,WAAW,CAAC;gBACjC,2CAA2C;gBAE3C,IAAI,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;gBACtC,IAAI,MAAM,EAAE;oBACR,iDAAiD;oBACjD,mDAAmD;oBACnD,IAAI,YAAY,GAAG,YAAY,GAAG,GAAG,CAAC;oBACtC,IAAI,aAAa,GAAG,aAAa,GAAG,GAAG,CAAC;oBAExC,mBAAmB;oBACnB,IAAI,aAAa,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC;oBAC3C,IAAI,MAAM,GAAG,aAAa,CAAC,iBAAiB,EAAE,GAAG,IAAI,CAAC,CAAC,QAAQ;oBAC/D,IAAI,GAAG,IAAI,MAAM,EAAE;wBACf,kDAAkD;wBAClD,IAAI,QAAQ,GAAG,MAAM,GAAG,GAAG,CAAC;wBAC5B,YAAY,IAAI,QAAQ,CAAC;wBACzB,aAAa,IAAI,QAAQ,CAAC;wBAC1B,GAAG,GAAG,MAAM,CAAC;qBAChB;oBAED,IAAI,GAAG,GAAG,IAAI,YAAY,CAAC,IAAI,IAAI,CAAC,YAAY,CAAC,EAAE,IAAI,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC;oBAC5E,IAAI,OAAO,IAAI,IAAI,EAAE;wBACjB,OAAO,GAAG,EAAE,CAAC;qBAChB;oBACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBAErB;aACJ;SACJ;QAED,+BAA+B;QAE/B,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,WAAW,CAAC,MAAc;QACtB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,IAAI,CAAC,IAAI,IAAI,yCAAkB,EAAE;YACjC,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;YAC5C,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YACzB,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE;gBACrB,IAAI,UAAU,GAAG,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;gBAC/C,IAAI,SAAS,IAAI,UAAU,EAAE;oBACzB,MAAM,GAAG,IAAI,CAAC;iBACjB;YACL,CAAC,CAAC,CAAC;SACN;aAAM;YACH,MAAM,GAAG,IAAI,CAAC;SACjB;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,eAAe,CAAC,YAAoB;QAChC,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,QAAQ,YAAY,EAAE;YAClB,gBAAgB;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,eAAe;SAClB;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,cAAc,CAAC,MAAc;QACzB,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,gBAAgB;QAChB,QAAQ,MAAM,EAAE;YACZ,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB,KAAK,CAAC;gBACF,MAAM,GAAG,CAAC,CAAC;gBACX,MAAM,CAAC,KAAK;YAChB;gBACI,MAAM;SACb;QACD,eAAe;QACf,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,MAAM;QACN,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,EAAE;YACtB,OAAO,EAAE,CAAC;SACb;QACD,IAAI,IAAI,GAAG,EAAC,GAAG,EAAE,oCAAe,EAAE,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAC,CAAC;QACtD,IAAI,IAAI,GAAG,yCAAgB,CAAC,IAAI,CAAC;QACjC,IAAI,GAAG,GAAG,iDAAoB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,GAAG,CAAC;IACf,CAAC;IAGD,IAAI,YAAY;QACZ,IAAI,IAAI,GAAG,kEAA6B,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;QAC1F,mFAAmF;QACnF,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,WAAW;QACX,IAAI,IAAI,GAAG,kEAA6B,CAAC,IAAI,CAAC,SAAS,GAAG,KAAK,EAAE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;QAC1F,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACzB,IAAI,IAAI,GAAG;YACX,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,IAAI,KAAK;YAC9B,IAAI,IAAI,CAAC,OAAO;gBAAE,IAAI,IAAI,KAAK;YAC/B,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,IAAI,KAAK;YACjC,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,IAAI,KAAK;YAChC,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,IAAI,KAAK;YAC9B,IAAI,IAAI,CAAC,QAAQ;gBAAE,IAAI,IAAI,KAAK;YAChC,IAAI,IAAI,CAAC,MAAM;gBAAE,IAAI,IAAI,KAAK;SACjC;aAAM;YACH,IAAI,GAAG,cAAc,CAAC;SACzB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;CAGJ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClewC;AAEzC,MAAM,WAAW,GACb,CAAC,eAAe,EAAE,cAAc,EAAE,UAAU,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB;IACxG,uBAAuB,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,WAAW,EAAE,0BAA0B,EAAE,oBAAoB;IACpI,mBAAmB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,mBAAmB;IACzG,2BAA2B,EAAE,iBAAiB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,4BAA4B;IAChH,aAAa,EAAE,OAAO,EAAE,kCAAkC,EAAE,cAAc,EAAE,cAAc,CAAC,CAAC;AAEpG,SAAS,gBAAgB,CAAC,MAAkB;IACxC,OAAO;QACH,EAAE,EAAE,MAAM;QACV,IAAI,EAAE,WAAW,CAAC,MAAM,CAAC;KAC5B;AACL,CAAC;AAED,SAAS,mBAAmB,CAAC,IAAY,EAAE,EAAU;IACjD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9F,CAAC;AAED,MAAM,IAAI,GAAG;IACT;QACI,EAAE,EAAE,oDAAuB;QAC3B,IAAI,EAAE,WAAW,CAAC,oDAAuB,CAAC;QAC1C,QAAQ,EAAE;YACN,mBAAmB,CAAC,kDAAsB,EAAE,8DAA4B,CAAC;SAC5E;KACJ;IACD;QACI,EAAE,EAAE,8CAAoB;QACxB,IAAI,EAAE,WAAW,CAAC,oDAAuB,CAAC;QAC1C,QAAQ,EAAE;YACN,mBAAmB,CAAC,gEAA6B,EAAE,4CAAmB,CAAC;SAC1E;KACJ;IACD;QACI,EAAE,EAAE,sCAAgB;QACpB,IAAI,EAAE,WAAW,CAAC,oDAAuB,CAAC;QAC1C,QAAQ,EAAE;YACN,mBAAmB,CAAC,wDAAyB,EAAE,kDAAsB,CAAC;SACzE;KACJ;CACJ;AAED,wDAAe,oDAAI,IAAC;AAEC;;;AC9CO;AAIY;AAEU;AACE;AACF;AACsD;AACrE;AACkB;AACG;AACuB;AAC9B;AACX;AACY;AACQ;AAGnD,MAAM,MAAM;IAEf,sBAAsB;IAEtB,MAAM,CAAC,aAAa,CAAC,SAAiB;QAClC,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;gBACvB,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBACzB,IAAI,IAAI,GAAG,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;gBAC3B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;aACpB;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,kBAAkB,CAAC,SAAiB;QACvC,wGAAwG;QACxG,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,KAAK,IAAI,GAAG,IAAI,SAAS,EAAE;gBACvB,IAAI,GAAG,IAAI,OAAO,EAAE;oBAChB,IAAI,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;oBACzB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iBACrD;aACJ;SACJ;QACD,OAAO,KAAK;IAChB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAU;QACtB,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,EAAE;YACN,IAAI,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;SAC3B;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QACxB,IAAI,IAAI,GAAW,IAAI,CAAC;QACxB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM,GAAG,4CAAkB,EAAE,CAAC;YACnC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACpC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,mBAAmB;YACnB,iBAAiB;YACjB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,IAAI,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;aACnC;iBAAM;gBACH,IAAI,CAAC,SAAS,GAAG,4EAAkC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;aACtE;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,YAAY,IAAK;QAQjB,yBAAyB;QAGzB,eAAe;QAEf,oBAAe,GAAG,KAAK,CAAC;QAQxB,aAAQ,GAAW,GAAG,CAAC;QACvB,cAAS,GAAW,CAAC,CAAC;QACtB,WAAM,GAAW,CAAC,CAAC;QACnB,QAAG,GAAW,CAAC,CAAC;QAChB,QAAG,GAAW,CAAC,CAAC;QAChB,QAAG,GAAW,CAAC,CAAC;QAGhB,gBAAW,GAAW,CAAC,CAAC;QACxB,eAAU,GAAW,CAAC,CAAC;QACvB,gBAAW,GAAW,CAAC,CAAC;QACxB,eAAU,GAAW,CAAC,CAAC;QACvB,eAAU,GAAY,KAAK,CAAC;QAM5B,gBAAW,GAAY,KAAK,CAAC;QAS7B,cAAS,GAAW,SAAS,CAAC;QAC9B,WAAM,GAAY,KAAK,CAAC;QAExB,aAAQ,GAAG,KAAK,CAAC;QACjB,eAAU,GAAW,CAAC,CAAC,CAAC;QACxB,mBAAc,GAAY,KAAK,CAAC;QAEhC,uBAAuB;QACvB,6BAA6B;QAC7B,qBAAgB,GAAG,CAAC,CAAC;QACrB,kBAAa,GAAc,IAAI,CAAC;QAEhC,WAAM,GAAiB,EAAE,CAAC;QAE1B,8BAA8B;QAC9B,cAAS,GAAW,CAAC,CAAC;QAsCtB,aAAQ,GAAW,SAAS,CAAC;QApGzB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;aAAM;YACH,IAAI,CAAC,MAAM,GAAG,4CAAkB,EAAE,CAAC;SACtC;IACL,CAAC;IA2DD,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,SAAS;IACzB,CAAC;IAED,IAAI,QAAQ,CAAC,GAAW;QACpB,8BAA8B;QAC9B,IAAI,CAAC,SAAS,GAAG,GAAG;IACxB,CAAC;IAGD,IAAI,OAAO;QACP,OAAO,wBAAU,CAAC;IACtB,CAAC;IAED,IAAI,IAAI;QACJ,OAAO,6BAAO,CAAC;IACnB,CAAC;IAED,IAAI,UAAU;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAoB,CAAC,CAAC,CAAC,oDAAuB,CAAC;IAC7E,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,WAAW,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,EAAE;YACnE,IAAI,OAAO,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClD,IAAI,OAAO,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAClD,WAAW,GAAG,GAAG,OAAO,MAAM,OAAO,EAAE,CAAC;SAC3C;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAGD,IAAI,OAAO;QACP,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qCAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,qCAAc,CAAC,IAAI,CAAC,CAAC;QACpE,IAAI,GAAG,EAAE;YACL,IAAI,GAAG,GAAG,2DAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;aACvB;iBAAM;gBACH,GAAG,CAAC,YAAY,EAAE;qBACb,IAAI,CAAC,OAAO,CAAC,EAAE;oBACZ,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;oBACxB,wDAAwD;gBAC5D,CAAC,CAAC;aACT;SACJ;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAGD,IAAI,QAAQ;QACR,0FAA0F;QAC1F,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;gBACf,IAAI,GAAG,kEAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;aACvE;iBAAM;gBACH,IAAI,GAAG,cAAc,GAAG,kEAA6B,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;aACxF;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,aAAa;QACb,+CAA+C;QAC/C,OAAO,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACtD,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,IAAY,EAAE,SAAiB;QAChD,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,+CAA+C;QAC/C,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,YAAY,GAAG,SAAS,CAAC;QAE7B,IAAI,SAAS,IAAI,CAAC,EAAE;YAChB,UAAU,GAAG,IAAI,CAAC;SACrB;aAAM;YACH,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE;gBACrB,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC1B,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,kDAAqB,CAAC;aACrE;iBAAM;gBACH,YAAY,GAAG,kDAAqB,CAAC;aACxC;SACJ;QACD,WAAW,GAAG,MAAM,CAAC,sBAAsB,CAAC,UAAU,EAAE,YAAY,CAAC;QACrE,OAAO,WAAW,CAAC;IACvB,CAAC;IAGD,MAAM,CAAC,sBAAsB,CAAC,UAAmB,EAAE,SAAiB;QAChE,IAAI,WAAW,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,aAAa,SAAS,GAAG,CAAC,CAAC,CAAC,YAAY,SAAS,GAAG,CAAC;QACtF,OAAO,WAAW,CAAC;IACvB,CAAC;IAGD,wDAAwD;IAExD,WAAW;IACX,6BAA6B;IAC7B,8BAA8B;IAC9B,+DAA+D;IAC/D,UAAU;IACV,6CAA6C;IAC7C,+BAA+B;IAC/B,kEAAkE;IAClE,UAAU;IACV,QAAQ;IACR,MAAM;IACN,wBAAwB;IACxB,IAAI;IAGJ,IAAI,aAAa;QACb,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,iEAAiE;QAEjE,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,IAAI,CAAC,UAAU,IAAI,KAAK,EAAE;YAClD,IAAI,OAAO,GAAW,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC;YACjE,IAAI,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;YAC7C,QAAQ,IAAI,CAAC,UAAU,EAAE;gBACrB,KAAK,sCAAgB;oBACjB,IAAI,GAAG,UAAU,QAAQ,OAAO,CAAC;oBACjC,MAAM;gBAEV,KAAK,oCAAe;oBAChB,IAAI,GAAG,SAAS,QAAQ,OAAO,CAAC;oBAChC,MAAM;gBAEV,KAAK,wCAAiB;oBAClB,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;oBACvB,MAAM;gBAEV,KAAK,kDAAsB;oBACvB,IAAI,GAAG,aAAa,CAAC;oBACrB,MAAM;gBAEV,KAAK,4CAAmB;oBACpB,IAAI,GAAG,UAAU,CAAC;oBAClB,MAAM;aACb;SACJ;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,UAAU;QACV,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,UAAU,IAAI,CAAC,EAAE;YACtB,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC;YACzC,IAAI,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,QAAQ,CAAC;SAC9C;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,IAAI,UAAU;QACV,IAAI,WAAW,GAAG,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,IAAI,GAAG,kDAAqB,CAAC;YACjC,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,IAAI,IAAI,IAAI,iDAAsB,EAAE;gBAChC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChD,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;gBACxB,sDAAsD;aACzD;iBAAM;gBACH,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAChD,QAAQ,GAAG,GAAG,IAAI,KAAK,CAAC;gBACxB,sDAAsD;aACzD;YAED,uEAAuE;YACvE,iEAAiE;YAEjE,IAAI,QAAQ,GAAG,4DAA0B,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YAE5D,uDAAuD;YACvD,kCAAkC;YAElC,mDAAmD;YAEnD,WAAW,GAAG,SAAS,QAAQ,OAAO,QAAQ,EAAE,CAAC;SACpD;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,IAAI,KAAK;QACL,IAAI,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;QACxB,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,IAAI,CAAC,QAAQ,CAAC;QAChE,wEAAwE;QACxE,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,kBAAkB;IAGlB,8BAA8B;IAE9B,OAAO;QACH,IAAI,SAAS,GAAG,IAAI,CAAC;QACrB,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;YACrB,SAAS,GAAG,0CAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAChD;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAGD,IAAI,WAAW;QAEX,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,aAAa,GAAG,IAAI,CAAC,aAAa,EAAE,CAAC;QACzC,IAAI,aAAa,EAAE;YACf,WAAW,GAAG,IAAI,CAAC;YACnB,uFAAuF;SAC1F;aAAM;YACH,IAAI,IAAI,CAAC,MAAM,EAAE;gBACb,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC9C,IAAI,IAAI,EAAE;oBACN,uBAAuB;oBACvB,WAAW,GAAG,IAAI,CAAC;oBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;oBACzC,6HAA6H;iBAChI;aACJ;SACJ;QAED,yEAAyE;QACzE,OAAO,WAAW,CAAC;IACvB,CAAC;IAGD,IAAI,OAAO;QACP,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,wDAAwD;QACxD,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;YACxE,IAAI,IAAI,EAAE;gBACN,OAAO,GAAG,IAAI,CAAC;aAClB;iBAAM;gBACH,kGAAkG;gBAClG,2FAA2F;aAC9F;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,OAAO;QACH,IAAI,IAAY,CAAC;QACjB,IAAI,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QACzB,IAAI,MAAM,EAAE;YACR,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;SACxC;QAED,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,aAAa,EAAE,EAAE;YAC/B,IAAI,GAAG,IAAI,oBAAM,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACzC,yGAAyG;YACzG,qGAAqG;SACxG;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,cAAc,CAAC,IAAY;QACvB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,EAAE;YACN,gCAAgC;YAChC,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YAClC,IAAI,KAAK,IAAI,IAAI,EAAE;gBACf,IAAI,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC;gBAC5B,IAAI,MAAM,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;gBACtC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;aACnD;SACJ;aAAM;YACH,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,IAAI,IAAI,IAAI,EAAE;gBACd,OAAO,GAAG,IAAI,CAAC;aAClB;iBAAM;gBACH,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;gBAClC,IAAI,KAAK,IAAI,IAAI,EAAE;oBACf,IAAI,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;oBAChC,IAAI,UAAU,GAAG,KAAK,CAAC,gBAAgB,EAAE,CAAC;oBAC1C,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;iBACrD;aACJ;SAEJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,OAAO;QACH,IAAI,QAAgB,CAAC;QACrB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,EAAE;YACzB,IAAI,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YAClC,IAAI,KAAK,IAAI,IAAI,EAAE;gBACf,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;aAC9C;SACJ;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,cAAc;QACV,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,SAAS,GAAc,IAAI,CAAC;QAEhC,IAAI,IAAI,CAAC,aAAa,IAAI,IAAI,EAAE;YAC5B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrB,IAAI,GAAG,GAAG,IAAI,CAAC,gBAAgB,GAAG,EAAE,GAAG,IAAI,EAAE;gBACzC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;aAClC;iBAAM;gBACH,SAAS;gBACT,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;aAC7B;SACJ;QAED,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,kCAAkC;YAClC,IAAI,IAAI,GAAG,4DAA4B,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACf,IAAI,SAAS,IAAI,IAAI,EAAE;wBACnB,SAAS,GAAG,GAAG,CAAC;qBACnB;yBAAM;wBACH,SAAS,GAAG,GAAG,CAAC;wBAChB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;qBACtC;gBACL,CAAC,CAAC,CAAC;aACN;SACJ;QACD,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,aAAa;QACT,2EAA2E;QAC3E,2DAA2D;QAE3D,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QAC7F,IAAI,OAAO,EAAE;YACT,IAAI,OAAO,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;YAC9D,IAAI,OAAO,EAAE;gBACT,OAAO,GAAG,CAAC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;aACvD;iBAAM;gBACH,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnB,4BAAU,CAAC,sBAAsB,EAAE,sBAAsB,IAAI,CAAC,QAAQ,eAAe,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;aAC1G;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,aAAa,CAAC,WAAoB;QAC9B,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3B,IAAI,IAAI,KAAK,CAAC,EAAE;YACZ,IAAI,CAAC,WAAW,EAAE;gBACd,OAAO,GAAG,IAAI;aACjB;SACJ;aAAM;YACH,OAAO,GAAG,IAAI,CAAC;SAClB;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,aAAa,CAAC,WAAoB;QAC9B,IAAI,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC;QAC3B,IAAI,IAAI,KAAK,CAAC,EAAE;YACZ,IAAI,CAAC,WAAW,EAAE;gBACd,IAAI,GAAG,CAAC,CAAC;gBACT,4BAA4B;gBAC5B,gCAAgC;gBAChC,IAAI;aACP;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,iCAAiC;IAGjC,IAAI,CAAC,UAAkB;;QACnB,IAAI,OAAO,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;QACxC,OAAO,CAAC,OAAO,GAAG,UAAU,CAAC;QAC7B,OAAO,CAAC,MAAM,GAAG,4CAAkB,EAAE,CAAC;QACtC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;QAC3B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC;QACzB,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,UAAU,GAAG,CAAC,CAAC;QACvB,OAAO,CAAC,WAAW,GAAG,CAAC,CAAC;QACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;QACtB,OAAO,CAAC,MAAM,GAAG,aAAO,CAAC,MAAM,mCAAI,EAAE,CAAC;QAEtC,gDAAgD;QAChD,IAAI,OAAO,CAAC,MAAM,EAAE;YAChB,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;YAC9B,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,uCAAiB,EAAE;gBAC3C,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;aACzB;SACJ;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,SAAiB;QAEtB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,sFAAsF;QACtF,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC,OAAO,CAAC;QACjC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC,UAAU,CAAC;QACvC,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC;QAC7B,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,SAAS,CAAC;QACrC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,SAAS,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE;YAC1D,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;SAC1F;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,0BAA0B;IAC9B,CAAC;IAED,QAAQ,CAAC,IAAU;QAGf,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,KAAK,GAAG;oBACJ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;oBACrC,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;aACb;SACJ;QAED,+CAA+C;QAC/C,oFAAoF;QACpF,IAAI;QAGJ,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,6BAA6B;IACjC,CAAC;IAED,MAAM,CAAC,aAAsB,KAAK,EAAE,aAAsB,KAAK;QAE3D,2CAA2C;QAC3C,+BAA+B;QAE/B,IAAI,IAAI,GAAG;YACP,GAAG,EAAE,IAAI,CAAC,OAAO;YACjB,GAAG,EAAE,IAAI,CAAC,MAAM;YAChB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,GAAG,EAAE,IAAI,CAAC,IAAI;YACd,GAAG,EAAE,IAAI,CAAC,MAAM;YAChB,GAAG,EAAE,IAAI,CAAC,QAAQ;YAClB,GAAG,EAAE,IAAI,CAAC,SAAS;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,GAAG,EAAE,IAAI,CAAC,UAAU;YACpB,GAAG,EAAE,IAAI,CAAC,WAAW;YACrB,GAAG,EAAE,IAAI,CAAC,UAAU;YACpB,KAAK,EAAE,IAAI,CAAC,UAAU;YACtB,MAAM,EAAE,IAAI,CAAC,QAAQ;YACrB,EAAE,EAAE,IAAI,CAAC,SAAS;SACrB,CAAC;QAEF,IAAI,UAAU,EAAE;YACZ,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,CAAC;YACtC,aAAa;YACb,IAAI,SAAS,EAAE;gBACX,4CAA4C;gBAC5C,IAAI,IAAI,CAAC,MAAM,EAAE;oBACb,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;oBAC1B,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC,EAAE;wBACzB,IAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;qBACpC;yBAAM;wBACG,IAAK,CAAC,GAAG,GAAG,kDAAqB,CAAC;qBAC3C;iBACJ;qBAAM;oBACG,IAAK,CAAC,GAAG,GAAG,kDAAqB,CAAC;iBAC3C;aACJ;iBAAM;gBACG,IAAK,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;aACpC;SACJ;QAED,qBAAqB;QACrB,IAAI,IAAI,CAAC,WAAW;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;QACrD,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC3D,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QACpE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACrE,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QACtE,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,UAAU,CAAC;QACjF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAC9E,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,UAAU;YAAE,IAAI,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;QAC/E,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;QAClE,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QACxE,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAEjF,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,EAAE;YAC1B,IAAI,QAAQ,GAAG,EAAE,CAAC;YAClB,KAAK,IAAI,GAAG,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC9B,IAAI,EAAE,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,OAAO,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;gBAC1B,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACvB,iDAAiD;aACpD;YACD,IAAI,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;YAEvB,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;gBACtD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;aACnB;SACJ;aAAM,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE;YAC5C,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC/B;QAED,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,2BAA2B;QAG3B,IAAI,IAAI,CAAC,GAAG,KAAK,IAAI;YAAE,IAAI,CAAC,IAAI,GAAG,mDAAuB,CAAC;QAE3D,+EAA+E;QAC/E,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;QAClD,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK,IAAI;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,SAAS,CAAC;QAElD,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC9C,IAAI,IAAI,CAAC,MAAM;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC3C,IAAI,IAAI,CAAC,QAAQ;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9C,IAAI,IAAI,CAAC,SAAS;YAAE,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAChD,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,IAAI,CAAC;YAAE,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAExE,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,KAAc;QACxB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;QAC3B,IAAI,EAAE,IAAI,IAAI,EAAE;YACZ,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE;gBACnB,OAAO,GAAG,IAAI,CAAC;aAClB;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,aAAa,CAAC,KAAc;QACxB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,EAAE,GAAG,KAAK,CAAC,WAAW,CAAC;QAC3B,IAAI,EAAE,IAAI,IAAI,EAAE;YACZ,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,EAAE;gBACnB,OAAO,GAAG,IAAI,CAAC;aAClB;SACJ;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,WAAW,CAAC,IAAY,EAAE,SAAe,EAAE,OAAa;QACpD,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,oEAAoE;YACpE,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACzD,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,kCAAkC;gBAClC,OAAO,GAAG,IAAI,CAAC;aAClB;iBAAM;gBACH,OAAO,GAAG,KAAK,CAAC;gBAChB,4CAA4C;aAC/C;SACJ;QACD,kCAAkC;QAClC,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,cAAc,CAAC,WAAoB,EAAE,UAAmB,EAAE,UAAkB;QACxE,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,IAAI,UAAU,IAAI,CAAC,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE;YAC/C,QAAQ,GAAG,KAAK,CAAC;SACpB;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAEzB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,cAAc,CAAC,IAAY,EAAE,SAAe,EAAE,UAAgB;QAC1D,IAAI,OAAO,GAAmB,IAAI,CAAC;QACnC,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,UAAU,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;YACrC,IAAI,WAAW,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;YACvC,yDAAyD;YACzD,iDAAiD;YAEjD,IAAI,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1C,IAAI,WAAW,IAAI,IAAI,EAAE;gBACrB,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACtB,IAAI,QAAQ,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;oBACnC,IAAI,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBAClC,yGAAyG;oBAEzG,IAAI,gBAAgB,GAAG,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,WAAW,CAAC;oBAC1E,IAAI,aAAa,GAAG,QAAQ,IAAI,UAAU,IAAI,SAAS,IAAI,UAAU,CAAC;oBACtE,IAAI,cAAc,GAAG,QAAQ,IAAI,WAAW,IAAI,SAAS,IAAI,WAAW,CAAC;oBAEzE,IAAI,gBAAgB,IAAI,aAAa,IAAI,cAAc,EAAE;wBACrD,yDAAyD;wBACzD,mDAAmD;wBACnD,qDAAqD;wBACrD,qDAAqD;wBACrD,0EAA0E;wBAC1E,IAAI,OAAO,IAAI,IAAI,EAAE;4BACjB,OAAO,GAAG,EAAE,CAAC;yBAChB;wBACD,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;qBACrB;yBAAM;wBACH,qDAAqD;qBACxD;gBACL,CAAC,CAAC,CAAC;aACN;SACJ;aAAM;YACH,gDAAgD;SACnD;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,aAAa;QACT,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,cAAc,CAAC,SAAe,EAAE,UAAgB,EAAE,MAAY,EAAE,OAAa;QACzE,yBAAyB;QACzB,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,MAAM,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;QAC9B,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;QAChC,IAAI,OAAO,GAAG,SAAS,CAAC,OAAO,EAAE,CAAC;QAClC,IAAI,QAAQ,GAAG,UAAU,CAAC,OAAO,EAAE,CAAC;QAEpC,IAAI,gBAAgB,GAAG,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,QAAQ,CAAC;QAChE,IAAI,aAAa,GAAG,MAAM,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC;QAC5D,IAAI,cAAc,GAAG,MAAM,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,CAAC;QAE/D,IAAI,gBAAgB,IAAI,aAAa,IAAI,cAAc,EAAE;YACrD,WAAW,GAAG,IAAI,CAAC;SACtB;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,cAAc;QACV,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC/B,CAAC;IAGD,sBAAsB;IAEtB,aAAa;QACT,IAAI,aAAa,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC;QACnD,IAAI,aAAa,EAAE;YACf,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;SAChC;IACL,CAAC;IAED,OAAO,CAAC,MAAc;QAClB,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QAED,WAAW;QACX,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC;QAEzB,4FAA4F;QAC5F,IAAI,CAAC,KAAK,GAAG,MAAM,CAAC;QACpB;;;;;;;;;;;;;;;;;WAiBG;QACH,MAAM,MAAM,GAAG,gBAAgB,CAAC;QAChC,oDAAsB,CAAC,IAAI,CAAC;aACvB,IAAI,CAAC,MAAM,CAAC,EAAE;YACX,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACf,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gBACnC,8BAAW,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5C;QACL,CAAC,CAAC;IACN,CAAC;IAED,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,MAAM,EAAE;YACT,OAAO;SACV;QAED,WAAW;QACX,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;QAEvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,4FAA4F;QAC5F;;;;;;;;;;;;;;;;;;;;;;;;;;YA0BI;QACJ,MAAM,MAAM,GAAG,mBAAmB,CAAC;QACnC,OAAO,oDAAsB,CAAC,IAAI,CAAC;aAC9B,IAAI,CAAC,MAAM,CAAC,EAAE;YACX,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QACrC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC,EAAE;gBACnC,8BAAW,CAAC,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;aAC5C;QACL,CAAC,CAAC;IACV,CAAC;IAED,YAAY,CAAC,OAAiB,EAAE,MAAc;QAC1C,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,IAAI,OAAO,EAAE;YACT,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAClB,IAAI,GAAG,IAAI,MAAM,EAAE;oBACf,WAAW,GAAG,IAAI,CAAC;iBACtB;YACL,CAAC,CAAC,CAAC;SACN;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,UAAU;QACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,UAAU;QACN,IAAI,UAAoB,CAAC;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QAEtB,IAAI,IAAI,EAAE;YACN,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAC1C,IAAI,KAAK,GAAG,aAAa,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;gBAClB,UAAU,GAAG,KAAK,CAAC;aACtB;SACJ;QAED,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,QAAQ;QACJ,IAAI,WAAW,GAAa,EAAE,CAAC;QAC/B,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAC/B,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;YACrC,IAAI,QAAQ,EAAE;gBACV,IAAI,SAAS,GAAa,IAAI,KAAK,EAAU,CAAC;gBAE9C,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE;oBACpB,IAAI,QAAQ,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACzC,IAAI,QAAQ,EAAE;wBACV,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;qBAC5B;gBACL,CAAC,CAAC,CAAC;gBAEH,WAAW,GAAG,SAAS,CAAC;aAC3B;SACJ;QACD,OAAO,WAAW,CAAC;IACvB,CAAC;IAED,QAAQ;QACJ,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,WAAW,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClC,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,OAAO,GAAG,IAAI,CAAC;SAClB;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,SAAS,CAAC,MAAc;QACpB,8BAA8B;QAC9B,IAAI,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC;QAC3B,IAAI,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC;QACnC,IAAI,SAAS,IAAI,YAAY,EAAE;YAC3B,IAAI,MAAM,GAAG,SAAS,CAAC,WAAW,EAAE,KAAK,YAAY,CAAC,WAAW,EAAE,CAAC;YACpE,IAAI,MAAM,IAAI,KAAK,EAAE;gBACjB,0CAAiB,CACb,aAAa,MAAM,yBAAyB,SAAS,gBAAgB,YAAY,GAAG,CACvF,CAAC;aACL;SACJ;IACL,CAAC;IAED,yBAAyB;IAGzB,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;CAGJ;;;;;;;;;;;;AC3nCM,MAAM,YAAY;CAOxB;;;;;;;;;;;;ACJM,MAAM,SAAS;IAiBlB,MAAM,CAAC,gBAAgB,CAAC,KAAmB;;QACvC,MAAM,OAAO,GAAG,IAAI,SAAS,EAAE,CAAC;QAChC,yDAAyD;QACzD,uEAAuE;QACvE,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC9B,OAAO,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACpC,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;QAC5B,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC,QAAQ,CAAC;QACzC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC,SAAS,CAAC;QACrC,OAAO,CAAC,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC;QACjC,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC;QACrC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC9B,OAAO,CAAC,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC;QACxC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC;QACnC,OAAO,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5D,OAAO,CAAC,OAAO,GAAG,WAAK,CAAC,OAAO,mCAAI,EAAE,CAAC;QACtC,OAAO,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QACjD,OAAO,OAAO,CAAC;IACnB,CAAC;CAEJ;;;;;;;;;;;;;;;;;;;;;ACxCmC;AACgB;AACN;AACI;AACE;AACd;AAG/B,MAAM,MAAM;IAGf,qBAAqB;IAErB;QA4EA,aAAQ,GAAW,CAAC,CAAC;QAUrB,oBAAe,GAAG,KAAK,CAAC;QACxB,eAAU,GAAW,CAAC,CAAC;QAKvB,WAAM,GAAW,CAAC,CAAC;QAGnB,mBAAc,GAAY,KAAK,CAAC;QAChC,WAAM,GAAW,CAAC,CAAC;QAInB,aAAQ,GAAW,CAAC,CAAC;QAnGjB,IAAI,qFAAgB,EAAE;YAClB,IAAI,CAAC,MAAM,GAAG,sFAAkB,CAAC;YACjC,IAAI,CAAC,QAAQ,GAAG,0FAAoB,CAAC;YACrC,IAAI,CAAC,IAAI,GAAG,0FAAoB,CAAC;YACjC,IAAI,CAAC,KAAK,GAAG,oFAAiB,CAAC;YAC/B,IAAI,CAAC,KAAK,GAAG,oFAAiB,CAAC;YAC/B,IAAI,CAAC,SAAS,GAAG,4FAAqB,CAAC;YACvC,IAAI,CAAC,QAAQ,GAAG,0FAAoB,CAAC;YACrC,IAAI,CAAC,SAAS,GAAG,4FAAqB,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,sGAA0B,CAAC;SAChD;QAED,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,wFAAmB,EAAE,CAAC;QACnC,IAAI,CAAC,GAAG,GAAG,oFAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,oFAAiB,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,MAAM,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;QAC5B,IAAI,CAAC,OAAO,GAAG,0FAAuB,KAAK,YAAY,CAAC,CAAC;YACrD,GAAG,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG;YAC5I,CAAC,CAAC,0FAAuB,CAAC;IAClC,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,IAAI,UAAU,GAAG,IAAI,MAAM,EAAE,CAAC;QAC9B,UAAU,CAAC,IAAI,GAAG,YAAY,CAAC;QAC/B,UAAU,CAAC,QAAQ,GAAG,iFAAc,CAAC;QACrC,UAAU,CAAC,MAAM,GAAG,6EAAY,CAAC;QACjC,OAAO,UAAU,CAAC;IACtB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAmB;QACpC,IAAI,OAAO,GAAa,EAAE,CAAC;QAC3B,IAAI,SAAS,IAAI,IAAI,EAAE;YACnB,SAAS,CAAC,OAAO,CAAC,UAAU,IAAI;gBAC5B,IAAI,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;gBACnC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACzB,CAAC,CAAC,CAAC;SACN;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,QAAQ,CAAC,IAAY;QACxB,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,GAAG,IAAI,MAAM,EAAE,CAAC;YACpB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;YACpB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;SACtB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,KAAK;QACD,qCAAqC;QACrC,OAAO,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAC1C,CAAC;IA8CD,IAAI,iBAAiB;QACjB,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;gBAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC;aACxB;iBAAM;gBACH,OAAO,GAAG,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC;aAC5C;SACJ;aAAM;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;IACL,CAAC;IAED,IAAI,cAAc;QACd,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,EAAE;YAC/B,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,QAAQ,EAAE;gBAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC;aACxB;iBAAM;gBACH,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;aACzB;SACJ;aAAM;YACH,OAAO,IAAI,CAAC,QAAQ,CAAC;SACxB;IACL,CAAC;IAED,IAAI,gBAAgB;QAChB,6DAA6D;QAC7D,IAAI,UAAU,GAAG,YAAY,CAAC;QAC9B,QAAQ,IAAI,CAAC,UAAU,EAAE;YACrB,gBAAgB;YAChB,KAAK,CAAC;gBACF,UAAU,GAAG,YAAY,CAAC;gBAC1B,MAAM;YACV,KAAK,CAAC;gBACF,UAAU,GAAG,QAAQ,CAAC;gBACtB,MAAM;YACV,KAAK,CAAC;gBACF,UAAU,GAAG,UAAU,CAAC;gBACxB,MAAM;YACV,KAAK,CAAC;gBACF,UAAU,GAAG,yBAAyB,CAAC;gBACvC,MAAM;YACV,eAAe;SAClB;QACD,OAAO,UAAU;IACrB,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,+FAAsB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACpD,CAAC;IAED,iBAAiB;IAGjB,MAAM;;QACF,IAAI,IAAI,GAAG,EAAE,CAAC;QAEd,IAAI,IAAI,CAAC,WAAW,EAAE;YAClB,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC/B;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,UAAI,CAAC,UAAU,mCAAI,CAAC,CAAC;QAEnC,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;SAC7B;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SACpC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SACjC;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SACnC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5B;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,UAAU,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SACpC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,GAAG,EAAE;YACV,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,QAAQ,EAAE;YACf,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SACtC;QACD,IAAI,IAAI,CAAC,IAAI,EAAE;YACX,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC5B;QACD,IAAI,IAAI,CAAC,SAAS,EAAE;YAChB,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE;YACb,IAAI,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;SAChC;QACD,IAAI,IAAI,CAAC,KAAK,EAAE;YACZ,IAAI,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;SAClC;QACD,IAAI,IAAI,CAAC,OAAO,EAAE;YACd,IAAI,CAAC,SAAS,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;SAClC;QAED,6DAA6D;QAC7D;;WAEG;QAEH,kDAAkD;QAClD,2BAA2B;QAE3B,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,QAAQ,CAAC,IAAY;QACjB,MAAM,MAAM,GAAG,iBAAiB;QAChC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,gBAAgB;gBAChB,KAAK,GAAG;oBACJ,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;oBAC5B,MAAM;gBACV,KAAK,KAAK,CAAC;gBACX,KAAK,QAAQ;oBACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK,CAAC;gBACX,KAAK,QAAQ;oBACT,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,IAAI,CAAC;gBACV,KAAK,OAAO,CAAC;gBACb,KAAK,UAAU;oBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC7B,MAAM;gBACV,KAAK,IAAI,CAAC;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACtB,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK;oBACN,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACrB,MAAM;gBACV,KAAK,KAAK,CAAC;gBACX,KAAK,UAAU;oBACX,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,KAAK,CAAC;gBACX,KAAK,YAAY;oBACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC5B,MAAM;gBACV,KAAK,IAAI;oBACL,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACvB,MAAM;gBACV,KAAK,OAAO;oBACR,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC1B,MAAM;gBACV,KAAK,SAAS;oBACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,SAAS;oBACV,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV,KAAK,QAAQ;oBACT,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACxB,MAAM;gBACV,KAAK,KAAK,CAAC;gBACX,KAAK,WAAW;oBACZ,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC3B,MAAM;gBACV,KAAK,KAAK;oBACN,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC;wBAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBAC9C,MAAM;gBACV,KAAK,MAAM;oBACP,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzB,MAAM;gBACV;oBACI,2DAA2D;oBAC3D,MAAM;gBACV,eAAe;aAClB;YAED,mBAAmB;YACnB,gGAAgG;YAChG,0GAA0G;YAC1G,IAAI;YAEJ,oGAAoG;SACvG;QAGD,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACb,sEAAW,CAAC,MAAM,EAAE,SAAS,IAAI,CAAC,KAAK,YAAY,IAAI,CAAC,MAAM,cAAc,IAAI,CAAC,QAAQ;uBAC9E,IAAI,CAAC,UAAU,eAAe,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC;SACpG;QAED,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC/B,CAAC;IAGD,UAAU,CAAC,MAAc;QACrB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;IACnC,CAAC;IAED,QAAQ;QACJ,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAClC,CAAC;;AAtSD,wBAAwB;AAGxB,cAAc;AAEP,iBAAU,GAAG,sFAAqB,CAAC;AAoSvC,MAAM,cAAc;IAA3B;QACI,aAAQ,GAAW,CAAC,CAAC;QACrB,WAAM,GAAW,CAAC,CAAC;IAMvB,CAAC;CAAA;AAGM,MAAM,eAAe;CAI3B;AAGM,MAAM,YAAY;IAAzB;QAEI,WAAM,GAAW,CAAC,CAAC;IAmCvB,CAAC;IA9BG,MAAM,CAAC,QAAQ,CAAC,IAAU;QACtB,IAAI,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC;YACpB,QAAQ,GAAG,EAAE;gBACT,gBAAgB;gBAChB,KAAK,KAAK;oBACN,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;oBACpB,MAAM;gBACV,KAAK,OAAO;oBACR,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC;oBACnB,MAAM;gBACV,KAAK,SAAS;oBACV,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;oBACrB,MAAM;gBACV,KAAK,SAAS;oBACV,MAAM,CAAC,OAAO,GAAG,GAAG,CAAC;oBACrB,MAAM;gBACV,KAAK,QAAQ;oBACT,MAAM,CAAC,MAAM,GAAG,GAAG,CAAC;oBACpB,MAAM;gBACV;oBACI,MAAM;gBACV,eAAe;aAClB;SACJ;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;CAEJ;AAGD,eAAe;AAEf,0DAA0D;AAC1D,wDAAwD;AACxD,IAAI;AAEJ,+BAA+B;AAC/B,6BAA6B;AAC7B,wBAAwB;AACxB,MAAM;AACN,eAAe;AACf,IAAI;AACJ,EAAE;AACF,+BAA+B;AAC/B,2BAA2B;AAC3B,cAAc;AACd,yBAAyB;AACzB,cAAc;AACd,0BAA0B;AAC1B,eAAe;AACf,0BAA0B;AAC1B,MAAM;AACN,IAAI;AAEJ,mCAAmC;AACnC,kEAAkE;AAClE,+BAA+B;AAC/B,kDAAkD;AAClD,oCAAoC;AACpC,EAAE;AACF,wCAAwC;AACxC,yBAAyB;AACzB,EAAE;AACF,gDAAgD;AAChD,kCAAkC;AAClC,EAAE;AACF,8CAA8C;AAC9C,gCAAgC;AAChC,MAAM;AACN,sBAAsB;AACtB,IAAI;AAGJ,yCAAyC;AACzC,kCAAkC;AAClC,iDAAiD;AACjD,0DAA0D;AAC1D,+CAA+C;AAC/C,0CAA0C;AAC1C,8DAA8D;AAC9D,8CAA8C;AAC9C,wCAAwC;AACxC,SAAS;AACT,wCAAwC;AACxC,IAAI;AACJ,EAAE;AACF,EAAE;AAEF,EAAE;AACF,EAAE;AACF,yCAAyC;AACzC,yBAAyB;AACzB,iBAAiB;AACjB,MAAM;AACN,iDAAiD;AACjD,2DAA2D;AAC3D,6CAA6C;AAC7C,8CAA8C;AAC9C,wCAAwC;AACxC,SAAS;AACT,wCAAwC;AACxC,IAAI;AAEJ,kBAAkB;;;;;;;;;;;;;;;ACtfU;AAGrB,MAAM,WAAW;CAGvB;AAGM,MAAM,WAAW;IAGpB,MAAM,KAAK,KAAK;QACZ,IAAI,KAAK,GAAG,6CAAM,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACjE,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,MAAM,KAAK,KAAK;QACZ,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC;IAC9B,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,IAAU,EAAE,KAAa;QAC3C,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,KAAK,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACzD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,IAAU,EAAE,OAAe;QAC/C,IAAI,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;QACzB,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,OAAO,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;QACtD,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,IAAU;QACxB,IAAI,SAAS,GAAG,6CAAM,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,6CAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC3E,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,IAAU,EAAE,UAAmB,KAAK;QACvD,IAAI,SAAS,GAAG,6CAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzF,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,IAAU;QAC3B,IAAI,SAAS,GAAG,6CAAM,EAAE,CAAC;QACzB,IAAI,SAAS,GAAG,6CAAM,CAAC,IAAI,CAAC,CAAC;QAC7B,IAAI,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC;QAC3F,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,MAAM,CAAC,cAAc,CAAC,SAAe,EAAE,UAAgB;QACnD,IAAI,GAAG,GAAG,6CAAM,EAAE,CAAC;QAEnB,IAAI,KAAK,GAAG,6CAAM,CAAC,SAAS,CAAC,CAAC;QAC9B,IAAI,YAAY,GAAG,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC5C,IAAI,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAEzE,IAAI,MAAM,GAAG,6CAAM,CAAC,UAAU,CAAC,CAAC;QAChC,IAAI,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QACjD,IAAI,UAAU,GAAG,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAE9E,OAAO,SAAS,GAAG,MAAM,GAAG,UAAU,CAAC;IAC3C,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,kBAA0B;QACxC,kHAAkH;QAClH,IAAI,IAAI,GAAG,6CAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7B,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,KAAa,EAAE,GAAW;QAC3C,GAAG,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC;QAC/C,IAAI,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;QACzC,IAAI,WAAW,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACnC,IAAI,aAAa,IAAI,WAAW,EAAE;YAC9B,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC;YAC5B,WAAW,GAAG,EAAE,GAAG,OAAO,CAAC;SAC9B;QACD,OAAO,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;IACxC,CAAC;IAGD,MAAM,CAAC,WAAW,CAAC,UAAkB,EAAE,SAAiB,EAAE,WAAmB,EAAE,QAAkB;QAC7F,8HAA8H;QAE9H,IAAI,KAAK,GAAa,EAAE,CAAC;QACzB,IAAI,KAAK,GAAG,6CAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACpC,KAAK,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC9B,IAAI,eAAe,GAAG,UAAU,GAAG,EAAE,GAAG,WAAW,CAAC;QACpD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,eAAe,EAAE,CAAC,EAAE,EAAE;YACtC,IAAI,IAAI,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC;YAC3D,IAAI,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;YACxC,IAAI,QAAQ,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YACzE,QAAQ,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAClE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;SACxB;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;CAGJ;AAGD,sEAAe,IAAI,WAAW,EAAE,EAAC;;;;;;;;;;;;;AC9G1B,MAAM,UAAU;IAInB,YAAY,GAAW,EAAE,GAAW;QAHpC,QAAG,GAAG,CAAC,CAAC;QACR,QAAG,GAAG,CAAC,CAAC;QAGJ,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACnB,CAAC;CACJ;AAGM,MAAM,UAAU;IAEnB,MAAM,CAAC,iBAAiB,CACpB,UAAyB,EACzB,IAAa,EACb,YAAwB;QAExB,IAAI,cAAc,GAAG,IAAI,KAAK,EAAS,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACb,IAAI,YAAY,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,EAAE;gBAC3C,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC1B;QACL,CAAC,CAAC,CAAC;QACH,wDAAwD;QAExD,IAAI,cAAc,GAAG,IAAI,KAAK,EAAS,CAAC;QACxC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YACvB,IAAI,QAAQ,GAAG,UAAU,CAAC,aAAa,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;YACvD,IAAI,QAAQ,EAAE;gBACV,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAC1B;QACL,CAAC,CAAC,CAAC;QACH,wDAAwD;QAExD,OAAO,cAAc,CAAC;IAC1B,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,KAAY,EAAE,IAAmB;QAClD,iCAAiC;QACjC,yEAAyE;QAEzE,IAAI,CAAC,GAAG,KAAK,CAAC,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC;QAEjC,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,EAAE;YAC3D,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YACvC,IAAI,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;YAEvC,IAAI,SAAS,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;mBAC/B,CAAC,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;YACnD,IAAI,SAAS;gBAAE,MAAM,GAAG,CAAC,MAAM,CAAC;SACnC;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAAA,CAAC;CAGL;;;;;;;;;;;;;AC9DqC;AAG/B,MAAM,UAAU;IACnB,MAAM,CAAC,iBAAiB,CAAC,KAAa;QAClC,IAAI,cAAc,GAAW,SAAS,CAAC;QACvC,wDAAwD;QAExD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE;YAChD,sEAAW,CAAC,8BAA8B,EAAE,KAAK,CAAC,CAAC;YACnD,IAAI,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,WAAW,CAAC,GAAG,EAAE;gBACjB,cAAc,GAAG,WAAW,CAAC,GAAG,CAAC;aACpC;SACJ;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC5C,cAAc,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC1C;aAAM,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;YAC3B,cAAc,GAAG,KAAK,CAAC;SAC1B;QAED,OAAO,cAAc,CAAC;IAC1B,CAAC;IAID,MAAM,CAAC,uBAAuB,CAAC,QAAgB;QAC3C,IAAI,GAAG,GAAW,UAAU,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACzB,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACvB,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAC1C,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,SAAiB;QACpC,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;QAC1C,IAAI,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC/B,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;YAChB,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;SACnB;QACD,OAAO,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC;IACjC,CAAC;IAGD,MAAM,CAAC,kBAAkB,CAAC,QAAgB,EAAE,GAAW;QACnD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,QAAQ,CAAC,CAAC,CAAC,IAAI,GAAG,EAAE;YACpB,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YAC7B,QAAQ,GAAG,IAAI,CAAC;SACnB;QAED,IAAI,GAAG,GAAG,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,EAAE,CAAC,GAAG,GAAG,CAAC;QAE1B,IAAI,CAAC,GAAG,GAAG;YAAE,CAAC,GAAG,GAAG,CAAC;aAChB,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC;QAEtB,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,GAAG,CAAC;QAEpC,IAAI,CAAC,GAAG,GAAG;YAAE,CAAC,GAAG,GAAG,CAAC;aAChB,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC;QAEtB,IAAI,CAAC,GAAG,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,GAAG,CAAC;QAE/B,IAAI,CAAC,GAAG,GAAG;YAAE,CAAC,GAAG,GAAG,CAAC;aAChB,IAAI,CAAC,GAAG,CAAC;YAAE,CAAC,GAAG,CAAC,CAAC;QAEtB,uEAAuE;QACvE,0HAA0H;QAE1H,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,GAAG,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;QAE/C,0BAA0B;QAC1B,OAAO,GAAG,CAAC;IACf,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACrB;;;;;WAKG;QAEH,IAAI,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC/C,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QACZ,IAAI,CAAC,MAAM,EAAE;YACT,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;SACT;QACD,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;YAC3B,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;SACT;QACD,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;YAC3B,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;SACT;QACD,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;YAC3B,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;SACT;QACD,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;YAC3B,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;SACT;QACD,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;YAC3B,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;SACT;QACD,IAAI,MAAM,IAAI,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE;YAC3B,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;YACN,CAAC,GAAG,CAAC,CAAC;SACT;QAED,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC9B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC9B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAE9B,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,IAAI,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SACrB;QACD,OAAO,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;IACpC,CAAC;IAGD,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;QACnB,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAC3B,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE;YACxB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;SACnC;QACD,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QACtB,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAChB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACpB,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC1B,QAAQ,CAAC,GAAG,CAAC,EAAE;YACX,KAAK,CAAC;gBACF,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,CAAC;gBACF,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,CAAC;gBACF,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,CAAC;gBACF,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,CAAC;gBACF,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;YACV,KAAK,CAAC;gBACF,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,MAAM;SACb;QAED,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAC/B,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAE/B,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SACrB;QACD,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACjB,IAAI,GAAG,GAAG,GAAG,IAAI,CAAC;SACrB;QACD,OAAO,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;IACpC,CAAC;IAGD,MAAM,CAAC,oBAAoB,CAAC,QAAgB;QACxC,IAAI,CAAC,QAAQ,EAAE;YACX,OAAO,IAAI,CAAC;SACf;QAED,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE;YACjB,UAAU,CAAC,GAAG,GAAG,EAAE,CAAC;YACpB,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAClC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAClC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC;YAClC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YACnC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;YACtC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;YACrC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;YAE1C,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;YACrC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YACnC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,YAAY,CAAC;YACzC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YACnC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YAEnC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;YACpC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;YAC1C,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YACnC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;YACrC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;YAEpC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,QAAQ,CAAC;YACrC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,aAAa,CAAC;YAC1C,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,OAAO,CAAC;YACpC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC;YACnC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;YACxC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,GAAG,WAAW,CAAC;SAC3C;QAED,QAAQ,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAC;QAElC,OAAO,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACpC,CAAC;IAGD,MAAM,CAAC,MAAM,CAAC,KAAK;QAEf,IAAI,MAAM,GAAG,KAAK,CAAC;QAEnB,wCAAwC;QACxC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAW;QAExB,6CAA6C;QAC7C,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;YACrB,qEAAqE;YACrE,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,4DAA4D,CAAC,CAAC;YAClF,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACb,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;SAChB;aAAM;YACH,8DAA8D;YAC9D,KAAK,GAAG,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC;YAC3E,CAAC,GAAG,KAAK,IAAI,EAAE,CAAC;YAChB,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,GAAG,CAAC;YACrB,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;SACnB;QAED,8EAA8E;QAC9E,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAErE,oEAAoE;QACpE,uBAAuB;QACvB,MAAM,GAAG,GAAG,GAAG,KAAK,CAAC;QACrB,OAAO,MAAM,CAAC;IAElB,CAAC;CAGJ;;;;;;;;;;;;;;;;;;;;;;;;ACnRqB;AACgB;AAEvB,MAAM,aAAa;IAC9B,MAAM,CAAC,GAAG,CAAC,MAAc,EAAE,OAAe;QACtC,iDAAY,CAAC,GAAG,EAAE,CAAC,0BAAS,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,MAAc,EAAE,OAAe;QACvC,iDAAY,CAAC,GAAG,EAAE,CAAC,4BAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,MAAc,EAAE,OAAe;QACxC,iDAAY,CAAC,GAAG,EAAE,CAAC,8BAAW,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,CAAC;CACJ;;;;;;ACPsB;AACuB;AACQ;AAC1B;AAGrB,MAAM,WAAW;IAIpB,oBAAoB;IAEpB,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAe;QACpC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAe;QAClC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAc;QAChC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,eAAe,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAgB;QACrC,IAAI,CAAC,gBAAgB,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,eAAe,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAgB;QAC5C,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAgB;QACtC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAgB;QACtC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAgB;QACtC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAe;QACpC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAGD,0FAA0F;IAC1F,0FAA0F;IAE1F,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAe;QAC1C,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAe;QAC3C,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAe;QACjC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAe;QAC1C,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,uBAAuB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,uBAAuB,CAAC,MAAe;QAC9C,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,uBAAuB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,uBAAuB,CAAC,MAAe;QAC9C,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,EAAE;IACF,gGAAgG;IAChG,mGAAmG;IAEnG,MAAM,KAAK,uBAAuB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,KAAK,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,uBAAuB,CAAC,MAAe;QAC9C,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,uBAAuB;QAC9B,OAAO,IAAI,CAAC,QAAQ,CAAC,yBAAyB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,KAAK,uBAAuB,CAAC,MAAY;QAC3C,IAAI,CAAC,SAAS,CAAC,yBAAyB,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;IAGD,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAe;QAClC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAe;QAC3C,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAe;QACpC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,KAAK;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,KAAK,CAAC,MAAc;QAC3B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,iFAAiF;IACjF,2EAA2E;IAE3E,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,KAAK;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,KAAK,CAAC,MAAc;QAC3B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,MAAM,CAAC,MAAc;QAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAc;QAClC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAc;QACtC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,iEAAiE;QACjE,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,eAAe;QACf,0CAA0C;QAC1C,IAAI;QACJ,SAAS;QACT,yCAAyC;QACzC,IAAI;QAEJ,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAe;QAChC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,GAAW;QACjC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAc;QACjC,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAY;QAC5B,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAc;QACjC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAGD,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAY;QACvC,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,sBAAsB;IACtB,MAAM,KAAK,GAAG;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,MAAc;QACzB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,KAAK,GAAG;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,MAAc;QACzB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,KAAK,GAAG;QACV,OAAO,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,GAAG,CAAC,MAAc;QACzB,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,YAAY;IAEZ,MAAM,KAAK,KAAK;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,KAAK,CAAC,MAAc;QAC3B,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,KAAK,MAAM,CAAC,MAAc;QAC5B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,OAAO;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,OAAO,CAAC,MAAc;QAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,KAAK,OAAO;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,OAAO,CAAC,MAAc;QAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAY;QAClC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAc;QAChC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,YAAY;IAGZ,sBAAsB;IAEtB,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,GAAW;QAC/B,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC9C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAChD,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAe;QAC1C,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAe;QACpC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC;IACxC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAc;QACjC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC;IAC3C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,gBAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAY;QAChC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAY;QACjC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,gBAAM,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACnF,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAY;QACnC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAY;QACpC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAc;QACrC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,kDAAwB,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAc;QACxC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,uCAAkB,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAc;QACxC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,qBAAqB;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,uCAAkB,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,qBAAqB,CAAC,MAAc;QAC3C,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,sBAAsB;QAC7B,OAAO,IAAI,CAAC,UAAU,CAAC,wBAAwB,EAAE,uCAAkB,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,KAAK,sBAAsB,CAAC,MAAc;QAC5C,IAAI,CAAC,WAAW,CAAC,wBAAwB,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,uCAAkB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAc;QACzC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,uCAAkB,CAAC,CAAC;IACvE,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAc;QAC1C,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAc;QACtC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAc;QACxC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAc;QACtC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAc;QACtC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAc;QACtC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAc;QACzC,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;IACzC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAc;QACjC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC;IAC3C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAmB;QACpC,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;IACzC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAmB;QAC1C,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC/C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAe;QAC1C,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,uCAAmB,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAc;QAChC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,uCAAkB,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAc;QACjC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAGD,YAAY;IAEZ,gBAAgB;IAEhB,yBAAyB;IAEzB,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAmB;QACvC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC;IAC5C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAc;QAChC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,MAAM,CAAC,MAAgB;QAC9B,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9B,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;IACzC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC,CAAC,UAAU;IACZ,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;IACzC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAe;QAClC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAe;QAChC,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAe;QAClC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAe;QAClC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAe;QACpC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,8BAA8B;QACrC,OAAO,IAAI,CAAC,QAAQ,CAAC,gCAAgC,EAAE,KAAK,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,KAAK,8BAA8B,CAAC,MAAe;QACrD,IAAI,CAAC,SAAS,CAAC,gCAAgC,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,wCAAmB,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAsB;QACxC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAc;QACrC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC/C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,sBAAsB;QAC7B,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,sBAAsB,CAAC,MAAe;QAC7C,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAe;QACjC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAe;QAC3C,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAe;QAC1C,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAe;QACjC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAc;QACnC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAe;QAClC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAe;QACjC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAGD,YAAY;IAGZ,0BAA0B;IAE1B,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAe;QACpC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,IAAI,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,2FAA2F;IAC3F,4FAA4F;IAE5F,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAe;QACpC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAc;QAC1C,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAgB;QAC1C,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAiB;QAC7C,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAgB;QAC1C,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAiB;QAC7C,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAgB;QAC1C,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,aAAa,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAiB;QAC7C,IAAI,CAAC,cAAc,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAGD,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAe;QACpC,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,iBAAiB,EAAE,KAAK,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAe;QACtC,IAAI,CAAC,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAGD,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAGD,YAAY;IAGZ,yBAAyB;IAEzB,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAGD,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC9C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,GAAW;QACrC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,GAAG,CAAC;IAC/C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAc;QACrC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,sGAAsG;IACtG,uGAAuG;IAEvG,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC9C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAc;QACxC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAClD,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAc;QACrC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,sGAAsG;IACtG,uGAAuG;IAEvG,gGAAgG;IAChG,sGAAsG;IACtG,EAAE;IACF,uGAAuG;IACvG,8CAA8C;IAC9C,gCAAgC;IAChC,gDAAgD;IAChD,IAAI;IACJ,EAAE;IACF,kGAAkG;IAClG,wGAAwG;IAExG,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAc;QACxC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAClD,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAc;QACxC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAClD,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,qBAAqB;QAC5B,OAAO,IAAI,CAAC,QAAQ,CAAC,uBAAuB,EAAE,IAAI,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,qBAAqB,CAAC,MAAe;QAC5C,IAAI,CAAC,SAAS,CAAC,uBAAuB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAc;QACxC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAClD,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,QAAQ,CAAC,mBAAmB,EAAE,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAe;QACxC,IAAI,CAAC,SAAS,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAc;QACrC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,sGAAsG;IACtG,uGAAuG;IAGvG,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,UAAU,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAc;QACtC,IAAI,CAAC,WAAW,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAGD,YAAY;IAGZ,kBAAkB;IAElB,MAAM,KAAK,OAAO;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,OAAO,CAAC,MAAc;QAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;IACvC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,OAAO;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,OAAO,CAAC,MAAc;QAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC;IACvC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAc;QAChC,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,MAAM,CAAC;IAC1C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC;IACxC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;IACzC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC;IACxC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC;IACzC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,CAAC,UAAU,EAAE,MAAM,CAAC;IACxC,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAc;QACnC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC;IAC7C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,aAAa;QACpB,OAAO,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,WAAW,CAAC,UAAU,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAc;QACnC,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC;IAC7C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;IAC5D,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAClD,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,CAAC,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC;IAClD,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,SAAS,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACjD,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,UAAU,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACjD,CAAC;IAAA,CAAC;IAGF,wGAAwG;IACxG,sGAAsG;IACtG,EAAE;IACF,4GAA4G;IAC5G,wGAAwG;IAExG,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,gEAA4B,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,gEAA4B,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC,WAAW,EAAE,gEAA4B,CAAC,CAAC;IACtE,CAAC;IAED,MAAM,KAAK,SAAS,CAAC,MAAc;QAC/B,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,4EAAkC,CAAC,CAAC;IAClF,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAA0B;QACjD,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,OAAO;QACd,OAAO,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,OAAO,CAAC,MAAc;QAC7B,IAAI,CAAC,WAAW,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACxC,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,eAAe;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,eAAe,CAAC,MAAc;QACrC,IAAI,CAAC,WAAW,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC/C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAc;QAClC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC;IAC5C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,eAAe,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAgB;QACpC,IAAI,CAAC,gBAAgB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAc;QAC1C,IAAI,CAAC,WAAW,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACpD,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,gBAAgB;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,kBAAkB,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,KAAK,gBAAgB,CAAC,MAAe;QACvC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,MAAM,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,MAAM,CAAC,MAAe;QAC7B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,cAAc;QACrB,OAAO,IAAI,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAe;QACrC,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAe;QACnC,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,MAAM;QACb,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,MAAM,CAAC,MAAe;QAC7B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAe;QACjC,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAc;QACjC,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,WAAW;QAClB,OAAO,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IAC/C,CAAC;IAED,MAAM,KAAK,WAAW,CAAC,MAAe;QAClC,IAAI,CAAC,SAAS,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,EAAE,IAAI,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAe;QAC1C,IAAI,CAAC,SAAS,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,IAAI;QACX,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,IAAI,CAAC,MAAc;QAC1B,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC;IACpC,CAAC;IAAA,CAAC;IAGF,MAAM,KAAK,YAAY;QACnB,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;IAC9C,CAAC;IAED,MAAM,KAAK,YAAY,CAAC,MAAc;QAClC,IAAI,CAAC,WAAW,CAAC,cAAc,EAAE,MAAM,CAAC;IAC5C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,aAAa;QACpB,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,CAAC,GAAG,EAAE,CAAC,CAAC;QACrD,IAAI,KAAK,GAAG,IAAI,EAAE;YACd,mBAAmB,CAAC,+BAA+B,EAAE,+BAA+B,KAAK,EAAE,CAAC,CAAC;YAC7F,KAAK,GAAG,CAAC,GAAG,EAAE,CAAC;YACf,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;SAC9B;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,KAAK,aAAa,CAAC,MAAc;QACnC,IAAI,MAAM,GAAG,IAAI,EAAE;YACf,mBAAmB,CAAC,+BAA+B,EAAE,iCAAiC,MAAM,EAAE,CAAC,CAAC;SACnG;QACD,IAAI,CAAC,WAAW,CAAC,eAAe,EAAE,MAAM,CAAC;IAC7C,CAAC;IAAA,CAAC;IAEF,MAAM,KAAK,cAAc;QACrB,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC;QACxD,IAAI,MAAM,GAAG,IAAI,EAAE;YACf,mBAAmB,CAAC,gCAAgC,EAAE,yBAAyB,MAAM,EAAE,CAAC,CAAC;YACzF,MAAM,GAAG,EAAE,GAAG,EAAE,CAAC;YACjB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;SAChC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,MAAM,KAAK,cAAc,CAAC,MAAc;QACpC,IAAI,MAAM,GAAG,IAAI,EAAE;YACf,mBAAmB,CAAC,gCAAgC,EAAE,4BAA4B,MAAM,EAAE,CAAC,CAAC;SAC/F;QACD,IAAI,CAAC,WAAW,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC9C,CAAC;IAGD,qBAAqB;IAErB,iBAAiB;IACjB,MAAM,KAAK,mBAAmB;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,KAAK,mBAAmB,CAAC,MAAc;QACzC,IAAI,CAAC,WAAW,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,oBAAoB;IAEpB,kBAAkB;IAClB,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,eAAe,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAc;QACxC,IAAI,CAAC,WAAW,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,oBAAoB;QAC3B,OAAO,IAAI,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;IAED,MAAM,KAAK,oBAAoB,CAAC,MAAe;QAC3C,IAAI,CAAC,SAAS,CAAC,sBAAsB,EAAE,MAAM,CAAC,CAAC;IACnD,CAAC;IAED,qBAAqB;IAErB,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,QAAQ,CAAC,oBAAoB,EAAE,KAAK,CAAC,CAAC;IACtD,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,KAAK,QAAQ;QACf,OAAO,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED,MAAM,KAAK,QAAQ,CAAC,MAAe;QAC/B,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,MAAM,KAAK,OAAO,CAAC,MAAe;QAC9B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,KAAK,iBAAiB;QACxB,OAAO,IAAI,CAAC,UAAU,CAAC,mBAAmB,EAAE,gBAAM,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAClH,CAAC;IAED,MAAM,KAAK,iBAAiB,CAAC,MAAc;QACvC,IAAI,CAAC,WAAW,CAAC,mBAAmB,EAAE,MAAM,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,wBAAwB;QAC/B,OAAO,IAAI,CAAC,QAAQ,CAAC,0BAA0B,EAAE,IAAI,CAAC,CAAC;IAC3D,CAAC;IAED,MAAM,KAAK,wBAAwB,CAAC,MAAe;QAC/C,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE,MAAM,CAAC,CAAC;IACvD,CAAC;IAGD,MAAM,KAAK,0BAA0B;QACjC,OAAO,IAAI,CAAC,eAAe,CAAC,4BAA4B,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,KAAK,0BAA0B,CAAC,MAAgB;QAClD,IAAI,CAAC,gBAAgB,CAAC,4BAA4B,EAAE,MAAM,CAAC,CAAC;IAChE,CAAC;IAED,MAAM,KAAK,kBAAkB;QACzB,OAAO,IAAI,CAAC,eAAe,CAAC,oBAAoB,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,KAAK,kBAAkB,CAAC,MAAgB;QAC1C,IAAI,CAAC,gBAAgB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACxD,CAAC;IAED,MAAM,KAAK,UAAU;QACjB,OAAO,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,KAAK,UAAU,CAAC,MAAgB;QAClC,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAED,qBAAqB;IAErB,MAAM,CAAC,QAAQ,CAAC,GAAW,EAAE,UAAmB;QAC5C,IAAI,GAAG,GAAG,UAAU,CAAC;QACrB,IAAI,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QAC9C,IAAI,MAAM,EAAE;YACR,GAAG,GAAG,MAAM,KAAK,MAAM,CAAC;SAC3B;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAW,EAAE,MAAe;QACzC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IAChE,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,GAAW,EAAE,GAAW;QACtC,IAAI,KAAK,GAAG,GAAG,CAAC;QAChB,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,WAAW,EAAE;YACb,KAAK,GAAG,CAAC,WAAW,CAAC;SACxB;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW,EAAE,MAAc;QAC1C,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IACxD,CAAC;IAGD,MAAM,CAAC,UAAU,CAAC,GAAW,EAAE,GAAW;QACtC,IAAI,KAAK,GAAG,GAAG,CAAC;QAChB,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,WAAW,EAAE;YACb,KAAK,GAAG,WAAW,CAAC;SACvB;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,WAAW,CAAC,GAAW,EAAE,MAAc;QAC1C,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,6EAA6E;IAC7E,qBAAqB;IACrB,qBAAqB;IACrB,0CAA0C;IAC1C,MAAM;IACN,kDAAkD;IAClD,wDAAwD;IACxD,uBAAuB;IACvB,0BAA0B;IAC1B,MAAM;IACN,iBAAiB;IACjB,IAAI;IACJ,uDAAuD;IACvD,8CAA8C;IAC9C,IAAI;IAEJ,MAAM,CAAC,QAAQ,CAAC,GAAW,EAAE,GAAS;QAClC,IAAI,KAAK,GAAG,GAAG,CAAC;QAChB,IAAI,WAAW,GAAG,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;QACnD,IAAI,WAAW,EAAE;YACb,KAAK,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC;SAClC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,SAAS,CAAC,GAAW,EAAE,MAAY;QACtC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,MAAM,CAAC,eAAe,CAAC,GAAW,EAAE,GAAa;QAC7C,IAAI,KAAe,CAAC;QACpB,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE;YACT,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;SAC7C;aAAM;YACH,IAAI,GAAG,EAAE;gBACL,KAAK,GAAG,GAAG,CAAC;aACf;SACJ;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,gBAAgB,CAAC,GAAW,EAAE,MAAgB;QACjD,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;IAGD,MAAM,CAAC,aAAa,CAAC,GAAW,EAAE,GAAY;QAC1C,IAAI,QAAmB,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACzC,IAAI,OAAO,EAAE;YACT,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBAChB,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACd,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,MAAM,CAAC,CAAC;oBACzB,IAAI,CAAC,QAAQ,EAAE;wBACX,QAAQ,GAAG,EAAE,CAAC;qBACjB;oBACD,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC;aACN;SACJ;aAAM;YACH,IAAI,GAAG,IAAI,IAAI,EAAE;gBACb,QAAQ,GAAG,CAAC,GAAG,CAAC,CAAC;aACpB;SACJ;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,GAAW,EAAE,MAAiB;QAChD,IAAI,CAAC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC7C,CAAC;;AAxzEM,sBAAU,GAAW,IAAI,CAAC;AAC1B,sBAAU,GAAW,CAAC,KAAK,CAAC;AA+zEvC,2FAA2F;AAC3F,4FAA4F;AAC5F,EAAE;;;;;;;;;;;;;;;;ACj1E4C;AACZ;AACW;AACO;AAE7C,MAAM,UAAU;IAEnB,MAAM,CAAC,uBAAuB,CAAC,KAAU;QACrC,OAAO,KAAK,KAAK,CAAC,IAAI,KAAK,KAAK,EAAE,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,OAAO;QACV,OAAO,sCAAsC,CAAC,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC;YACtE,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC;YACnE,OAAO,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAC1B,CAAC,CAAC,CAAC;IACP,CAAC;IAED,MAAM,CAAC,SAAS;QACZ,OAAO,sFAAqB,CAAC;IACjC,CAAC;IAGD,MAAM,CAAC,mBAAmB,CAAC,MAAM;QAC7B,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,KAAK,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE;YAC1B,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;SAC3C;QACD,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/B,CAAC;IAGD,MAAM,CAAC,eAAe;QAClB,IAAI,GAAG,GAAG,IAAI,KAAK,EAAE,CAAC;QACtB,IAAI,KAAK,GACL,GAAG,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC;QAC9E,IAAI,CAAC,KAAK,EAAE;YACR,OAAO,eAAe,CAAC;SAC1B;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAGD,yGAAyG;IACzG,yGAAyG;IACzG,oIAAoI;IACpI,MAAM,CAAC,MAAM,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,UAAU,CAAC,IAAY;QAC1B,OAAO,IAAI,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,sFAAqB,CAAC;IAC7E,CAAC;IAGD,MAAM,CAAC,QAAQ;;QACX,MAAM,MAAM,GAAG,qBAAqB,CAAC;QAErC,IAAI,IAAI,GAAG,UAAU,CAAC,aAAa,EAAE,CAAC;QACtC,IAAI,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACjB,IAAI,EAAE,EAAE;YACJ,EAAE,GAAG,EAAE;iBACF,OAAO,CAAC,SAAS,EAAE,KAAK,CAAC;iBACzB,OAAO,CAAC,OAAO,EAAE,KAAK,CAAC;iBACvB,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;SAClC;QAED,IAAI,KAAK,GAAG,GAAG,0FAAuB,KAAK,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,IAAI,EAAE,EAAE,CAAC;QAEhF,+CAA+C;QAC/C,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;YACnB,IAAI,GAAG,GAAG,gBAAgB,CAAC;YAC3B,IAAI,MAAM,GAAG,IAAI,iEAAY,EAAE,CAAC;YAChC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;YACvB,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC;YACpB,MAAM,CAAC,MAAM,GAAG,4FAAkB,mCAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACvD,MAAM,CAAC,OAAO,GAAG,0BAA0B,KAAK,EAAE,CAAC;YACnD,MAAM,CAAC,QAAQ,GAAG,CAAC,CAAC;YACpB,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YAE9C,qGACS,CAAC,GAAG,EAAE,OAAO,EAAE,EAAC,OAAO,EAAE,wFAAsB,EAAC,CAAC;iBACrD,KAAK,EAAE,CAAC;YAEb,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;SAC/B;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,MAAM,CAAC,MAAM;QACT,OAAO,MAAM,CAAC;QACd,2CAA2C;IAC/C,CAAC;IAED,MAAM,CAAC,MAAM;QACT,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,GAAG,GAAG,GAAG,CAAC,iBAAiB,EAAE,CAAC;QAClC,+BAA+B;QAC/B,OAAO,GAAG,CAAC;IACf,CAAC;IAED,MAAM,CAAC,aAAa;QAChB,IAAI,IAAI,GAAG;YACP,EAAE,EAAE,EAAE;YACN,OAAO,EAAE,EAAE;YACX,OAAO,EAAE,EAAE;SACd,CAAC;QAEF,IAAI,IAAI,GAAG,SAAS,CAAC,UAAU,CAAC;QAChC,IAAI,IAAI,GAAG,SAAS,CAAC,SAAS,CAAC;QAC/B,IAAI,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;QACpC,IAAI,WAAW,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxD,IAAI,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACtD,IAAI,UAAU,EAAE,SAAS,EAAE,EAAE,CAAC;QAE9B,iEAAiE;QACjE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YAC3C,WAAW,GAAG,OAAO,CAAC;YACtB,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3C,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SACnD;QACD,yDAAyD;aACpD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YAC/C,WAAW,GAAG,6BAA6B,CAAC;YAC5C,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SAC/C;QACD,gDAAgD;aAC3C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACjD,WAAW,GAAG,QAAQ,CAAC;YACvB,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SAC/C;QACD,mEAAmE;aAC9D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YACjD,WAAW,GAAG,QAAQ,CAAC;YACvB,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC;gBAC3C,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SACnD;QACD,kDAAkD;aAC7C,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE;YAClD,WAAW,GAAG,SAAS,CAAC;YACxB,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;SAC/C;QACD,oEAAoE;aAC/D,IACD,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACxC,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EACrC;YACE,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YACpD,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;YAC5C,IAAI,WAAW,CAAC,WAAW,EAAE,IAAI,WAAW,CAAC,WAAW,EAAE,EAAE;gBACxD,WAAW,GAAG,SAAS,CAAC,OAAO,CAAC;aACnC;SACJ;QACD,4DAA4D;QAC5D,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,EAAE,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;YACrC,WAAW,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAE/C,YAAY,GAAG,QAAQ,CAAC,EAAE,GAAG,WAAW,EAAE,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,CAAC,YAAY,CAAC,EAAE;YACrB,WAAW,GAAG,EAAE,GAAG,UAAU,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YACpD,YAAY,GAAG,QAAQ,CAAC,SAAS,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;SACrD;QAED,IAAI,MAAM,GAAG,YAAY,CAAC;QAC1B,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAE,MAAM,GAAG,SAAS,CAAC;QAClE,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAE,MAAM,GAAG,OAAO,CAAC;QAChE,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAAE,MAAM,GAAG,MAAM,CAAC;QAC/D,IAAI,SAAS,CAAC,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAAE,MAAM,GAAG,OAAO,CAAC;QAElE,IAAI,CAAC,OAAO,GAAG,WAAW,CAAC;QAC3B,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,CAAC;QACvC,IAAI,CAAC,EAAE,GAAG,MAAM,CAAC;QAEjB,OAAO,IAAI,CAAC;IAEhB,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,EAAU,EAAE,EAAU;QAC1C,sCAAsC;QACtC,IAAI,KAAK,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,IAAI,KAAK,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtC,IAAI,OAAO,GAAG,KAAK,IAAI,KAAK,CAAC;QAC7B,OAAO,OAAO,CAAC;IACnB,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,EAAU,EAAE,EAAU;QACzC,sCAAsC;QACtC,IAAI,IAAI,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,IAAI,IAAI,GAAG,EAAE,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACpC,IAAI,OAAO,GAAG,IAAI,IAAI,IAAI,CAAC;QAC3B,OAAO,OAAO,CAAC;IACnB,CAAC;;AA3JM,4BAAiB,GAAG,iEAAiE,CAAC;;;;;;;;;;;;;;AC5CrE;AAErB,MAAM,WAAW;IACpB,MAAM,CAAC,QAAQ,CACX,WAAmB,EACnB,CAAS,EACT,eAAwB;QAExB,IAAI,WAAW,CAAC,MAAM,IAAI,CAAC,EAAE;YACzB,OAAO,WAAW,CAAC;SACtB;QACD,IAAI,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7C,OAAO,CACH,CAAC,eAAe;YACZ,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACjD,CAAC,CAAC,SAAS,CAAC,GAAG,KAAK,CAC3B,CAAC;IACN,CAAC;IAMD,MAAM,CAAC,YAAY,CAAC,IAAU;QAC1B,IAAI,CAAC,GAAG,6CAAM,CAAC,IAAI,CAAC,CAAC;QACrB,IAAI,EAAE,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC;QACpB,qCAAqC;QACrC,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,GAAW,EAAE,GAAW;QACxC,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,KAAK,CAAC,EAAE;YACxB,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;gBACrE,KAAK,EAAE,CAAC;SACX;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,CAAC,cAAc,CAAC,QAAgB,EAAE,SAAiB;QACrD,IAAI,QAAQ,GAAG,QAAQ,CAAC;QACxB,IAAI,QAAQ,CAAC,MAAM,IAAI,SAAS,EAAE;YAC9B,QAAQ,GAAG,QAAQ,CAAC;SACvB;aAAM;YACH,IAAI,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;gBACvB,IAAI,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC;gBAC5B,IAAI,KAAK,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE,EAAE;oBACnB,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;iBAClC;qBAAM;oBACH,QAAQ,GAAG,KAAK,CAAC;iBACpB;aACJ;SACJ;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,QAAgB;QAChC,IAAI,SAAS,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;aACpC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,kDAAkD;QAClD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,aAAa,CAAC,SAAiB;QAClC,IAAI,MAAM,GAAa,IAAI,CAAC;QAC5B,IAAI,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;QAC7D,IAAI,OAAO,GAAG,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACrD,IAAI,OAAO,EAAE;YACT,IAAI,SAAS,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACrC,IAAI,SAAS,CAAC,MAAM,IAAI,CAAC,EAAE;gBACvB,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC9B,IAAI,GAAG,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;gBAC9B,MAAM,GAAG,EAAE,CAAC;gBACZ,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;gBAClB,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;aACrB;SACJ;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,MAAM,CAAC,cAAc,CAAC,OAAe;QAEjC,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,QAAQ,GAAG,sDAAe,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAEnD,IAAI,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,EAAE;YACrB,OAAO,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,QAAQ,CAAC,KAAK,EAAE,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC;SAC1F;aAAM,IAAI,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,EAAE;YAC7B,OAAO,GAAG,GAAG,QAAQ,CAAC,KAAK,EAAE,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC;SACtE;aAAM,IAAI,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE;YAC/B,OAAO,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC;SACjD;aAAM;YACH,OAAO,GAAG,GAAG,QAAQ,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC;SACjD;QAED,6BAA6B;QAC7B,2GAA2G;QAC3G,IAAI;QACJ,SAAS;QACT,uFAAuF;QACvF,IAAI;QACJ,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,MAAM,CAAC,KAAK,CAAC,GAAW,EAAE,MAAc;QACpC,IAAI,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,MAAM,CAAC,CAAC;QAClC,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,MAAM,CAAC;IAC7C,CAAC;IAGD,MAAM,CAAC,MAAM,CAAC,GAAW;QACrB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,KAAK,CAAC;IAC3C,CAAC;IAGD,uEAAuE;IAEvE,sBAAsB;IACtB,wDAAwD;IAExD,+BAA+B;IAC/B,iHAAiH;IACjH,MAAM;IACN,WAAW;IACX,yFAAyF;IACzF,MAAM;IACN,oBAAoB;IACpB,IAAI;IAEJ,0EAA0E;IAC1E,wEAAwE;IACxE,0EAA0E;IAC1E,wCAAwC;IACxC,2GAA2G;IAC3G,gDAAgD;IAChD,iBAAiB;IACjB,IAAI;IAGJ,MAAM,CAAC,iBAAiB,CAAC,SAAiB,EAAE,UAAkB;QAC1D,0DAA0D;QAC1D,OAAO,WAAW,CAAC,iBAAiB,CAAC,SAAS,GAAG,KAAK,EAAE,UAAU,GAAG,KAAK,CAAC,CAAC;IAChF,CAAC;IAED,MAAM,CAAC,iBAAiB,CAAC,SAAiB,EAAE,UAAkB;QAC1D,0DAA0D;QAC1D,IAAI,GAAG,GAAG,6CAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;QACjC,IAAI,KAAK,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;QAClD,IAAI,MAAM,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QACpD,IAAI,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,UAAU,GAAG,CAAC,SAAS,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;QACtG,IAAI,IAAI,GAAG,GAAG,SAAS,OAAO,UAAU,EAAE,CAAC;QAC3C,yCAAyC;QACzC,OAAO,IAAI,CAAC;IAChB,CAAC;;AA1IM,sBAAU,GAAW,IAAI,MAAM,CAClC,iDAAiD,CACpD,CAAC;;;;;;;;;;;;ACrBN,gBAAgB;AACT,MAAM,UAAU;IACnB,MAAM,CAAC,UAAU;QACb,IAAI,SAAS,GAAG,IAAI,OAAO,EAAE,CAAC;QAC9B,SAAS,CAAC,MAAM,CAAC,cAAc,EAAE,kBAAkB,CAAC,CAAC;QACrD,SAAS,CAAC,MAAM,CAAC,QAAQ,EAAE,kBAAkB,CAAC,CAAC;QAE/C,uCAAuC;QACvC,sCAAsC;QAEtC,OAAO,SAAS,CAAC;IACrB,CAAC;IAED,4EAA4E;IAC5E,4EAA4E;IAC5E,wEAAwE;IACxE,yCAAyC;IACzC,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,EAAE,SAAS;QACjC,IAAI,OAAO,CAAC;QACZ,OAAO;YACH,IAAI,OAAO,GAAG,IAAI,EACd,IAAI,GAAG,SAAS,CAAC;YACrB,IAAI,KAAK,GAAG;gBACR,OAAO,GAAG,IAAI,CAAC;gBACf,IAAI,CAAC,SAAS;oBAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YAC9C,CAAC,CAAC;YACF,IAAI,OAAO,GAAG,SAAS,IAAI,CAAC,OAAO,CAAC;YACpC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtB,OAAO,GAAG,UAAU,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;YAClC,IAAI,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC3C,CAAC,CAAC;IACN,CAAC;IAGD,MAAM,CAAC,MAAM,CAAC,QAAgB;QAC1B,IAAI,WAAW,GAAW,EAAE,CAAC;QAC7B,IAAI,QAAQ,EAAE;YACV,WAAW,GAAG,kBAAkB,CAAC,QAAQ,CAAC;YAC1C,+DAA+D;SAClE;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;CAGJ;;;;;;;;;;;;;;;AC7C8B;AACuB;AACL;AAG1C,MAAM,cAAc;IAEvB,IAAI,OAAO;QACP,OAAO,+DAAU,CAAC;IACtB,CAAC;IAED,EAAE;IACF,EAAE;IACF,gEAAgE;IAChE,qEAAqE;IACrE,EAAE;IACF,kEAAkE;IAClE,gEAAgE;IAChE,EAAE;IACF,kEAAkE;IAClE,gEAAgE;IAGhE,IAAI,SAAS;QACT,OAAO,2FAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,yEAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,2FAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,yEAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,2FAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,yEAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,OAAO;QACP,OAAO,uFAAwB,CAAC;IACpC,CAAC;IAED,IAAI,OAAO,CAAC,GAAW;QACnB,yEAAiB,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,6FAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,GAAW;QACtB,yEAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,WAAW;QACX,OAAO,+FAA4B,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,GAAY;QACxB,yEAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC1C,CAAC;IAED,IAAI,MAAM;QACN,OAAO,qFAAuB,CAAC;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,GAAa;QACpB,yEAAiB,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,2FAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,yEAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,2FAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,yEAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,SAAS;QACT,OAAO,2FAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,yEAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,yFAAyB,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,CAAC,GAAW;QACpB,yEAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,QAAQ;QACR,OAAO,yFAAyB,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,CAAC,GAAW;QACpB,yEAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,UAAU;QACV,OAAO,6FAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,GAAY;QACvB,yEAAiB,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;IACzC,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,2GAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAW;QAC7B,yEAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,mGAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAW;QACzB,yEAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe;QACf,OAAO,uGAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAuB;QACvC,yEAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;CAwCJ;AAED,iEAAe,IAAI,cAAc,EAAE,EAAC;;;;;;;;;;;;;;;;;AC/LN;AACsC;AAC9B;AAEc;AAE7C,MAAM,YAAY;IAErB,IAAI,gBAAgB;QAChB,OAAO,gFAAe,CAAC;IAC3B,CAAC;IAED,IAAI,gBAAgB,CAAC,KAAa;QAC9B,gFAAe,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,gFAAe,CAAC;IAC3B,CAAC;IAED,IAAI,kBAAkB,CAAC,KAAa;QAChC,gFAAe,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,gFAAe,CAAC;IAC3B,CAAC;IAAA,CAAC;IAEF,IAAI,gBAAgB,CAAC,KAAa;QAC9B,gFAAe,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,eAAe;QACf,OAAO,uGAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAW;QAC3B,yEAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,2GAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAW;QAC7B,yEAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,uGAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAW;QAC3B,yEAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,kBAAkB;QACd,MAAM,MAAM,GAAG,oBAAoB,CAAC;QACpC,OAAO,8GAA+B,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,kBAAkB,EAAE,IAAI,CAAC,gBAAgB,CAAC;aACxG,IAAI,CAAC,MAAM,CAAC,EAAE;YACX,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC;YAClC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC;YACpC,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC;YAElC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,EAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAC,CAAC,CAAC;YACpF,MAAM,UAAU,GAAG,IAAI,IAAI,EAAE;YAC7B,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,CAAC,CAAE,qBAAqB;YACnG,QAAQ,CAAC,MAAM,GAAG,UAAU,OAAO,mBAAmB,UAAU,CAAC,WAAW,EAAE,yBAAyB,CAAC;YAExG,OAAO,MAAM,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACX,sEAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;YAClE,OAAoB,EAAC,GAAG,EAAE,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,IAAI,CAAC,iBAAiB,EAAE,GAAG,EAAE,IAAI,CAAC,eAAe,EAAC,CAAC;QAC5G,CAAC,CAAC;IAEV,CAAC;CACJ;AAED,iEAAe,IAAI,YAAY,EAAE,EAAC;;;;;;;;;;;;;;;;;AC/EH;AACuB;AACL;AACD;AAIL;AAGpC,MAAM,aAAa;IAA1B;QAEI,yBAAoB,GAAG,EAAE,CAAC;IAiM9B,CAAC;IA/LG,IAAI,OAAO;QACP,OAAO,+DAAU,CAAC;IACtB,CAAC;IAED,IAAI,cAAc;QACd,OAAO,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;IACvC,CAAC;IAED,IAAI,cAAc,CAAC,MAAc;QAC7B,yEAAiB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAChD,CAAC;IAGD,IAAI,cAAc;QACd,OAAO,qGAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,yEAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,yGAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,yEAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,2GAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,yEAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;IAChD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,yGAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,yEAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,yGAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,yEAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,iGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,yEAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,yGAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,yEAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,yGAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,yEAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;IAC/C,CAAC;IAGD,UAAU;QACN,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAE1C,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,MAAM,CAAC;QAElD,0GAA6B,CAAC,QAAQ,CAAC;aAClC,IAAI,CAAC,GAAG,CAAC,EAAE;YACR,sEAAsE;YACtE,IAAI,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC;YAC5B,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC;YAC/D,mEAAmE;YACnE,IAAI,UAAU,KAAK,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;gBAChC,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACpB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACrB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;gBACzB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,UAAU,YAAY,EAAE,SAAS,CAAC,CAAC;gBAC7E,6CAA6C;gBAC7C,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,KAAK,EAAE,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAC;aAErE;iBAAM,IAAI,UAAU,KAAK,GAAG,EAAE;gBAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,UAAU,6BAA6B,EAAE,SAAS,CAAC,CAAC;aACjF;iBAAM;gBACH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,qCAAqC,UAAU,GAAG,EAAE,SAAS,CAAC,CAAC;aACzF;QAEL,CAAC,CAAC;aACD,KAAK,CAAC,KAAK,CAAC,EAAE;YACX,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;gBACtB,IAAI,UAAU,GAAG,KAAmB,CAAC;gBACrC,IAAI,UAAU,EAAE;oBACZ,IAAI,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;oBACnC,IAAI,QAAQ,EAAE;wBACV,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,8BAA8B,CAAC;wBAClE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,8DAA8D;4BAC5F,0EAA0E;4BAC1E,2HAA2H,CAAC;wBAChI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;wBAC5C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;qBAC1C;yBAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG,EAAE;wBAChC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,wDAAwD,CAAC;wBAC5F,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,2GAA2G,CAAC;wBAC9I,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;wBAC5C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;qBAC1C;yBAAM;wBACH,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,oCAAoC,CAAC;wBACxE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,8DAA8D;4BAC5F,0GAA0G,CAAC;wBAC/G,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;wBAC5C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;qBAC1C;iBACJ;aACJ;QACL,CAAC,CAAC,CAAC;IACX,CAAC;IAGD,mBAAmB,CAAC,KAAa,EAAE,QAAgB;QAC/C,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,sDAAsD;QACtD,IAAI,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,iBAAiB,CAAC;QAE/D,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,CAAC,SAAS,SAAS;YACf,IAAI,CAAC,IAAI,IAAI,QAAQ,GAAG,QAAQ,EAAE;gBAC9B,QAAQ,EAAE,CAAC;gBACX,8CAA8C;gBAE9C,gGAAwB,CAAC,KAAK,EAAE,QAAQ,CAAC;qBACpC,IAAI,CAAC,GAAG,CAAC,EAAE;oBACR,QAAQ,GAAG,EAAE;wBACT,KAAK,oFAAsB;4BACvB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,UAAU,iBAAiB,EAAE,SAAS,CAAC,CAAC;4BAClF,IAAI,GAAG,IAAI,CAAC;4BACZ,MAAM;wBACV,KAAK,8EAAmB;4BACpB,IAAI,GAAG,IAAI,CAAC;4BACZ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,UAAU,cAAc,EAAE,SAAS,CAAC,CAAC;4BAC/E,MAAM;wBACV,KAAK,0EAAiB;4BAClB,IAAI,QAAQ,GAAG,QAAQ,EAAE;gCACrB,2BAA2B;gCAC3B,UAAU,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,CAAC;6BACpC;iCAAM;gCACH,IAAI,GAAG,IAAI,CAAC;gCACZ,0DAA0D;gCAC1D,wFAAwF;6BAC3F;4BACD,MAAM;wBACV,KAAK,0EAAiB;4BAClB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,UAAU,qBAAqB,EAAE,SAAS,CAAC,CAAC;4BACtF,IAAI,GAAG,IAAI,CAAC;4BACZ,MAAM;wBACV,KAAK,4EAAkB;4BACnB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,UAAU,qBAAqB,EAAE,OAAO,CAAC,CAAC;4BACpF,IAAI,GAAG,IAAI,CAAC;4BACZ,MAAM;qBACb;gBAEL,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,GAAG,IAAI,CAAC;oBACZ,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,UAAU,qBAAqB,EAAE,OAAO,CAAC,CAAC;gBACxF,CAAC,CAAC;aACT;QACL,CAAC,CAAC,EAAE,CAAC;IAET,CAAC;CAGJ;AAED,iEAAe,IAAI,aAAa,EAAE,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7M5B,MAAM,WAAW;IAMpB,YAAY,IAAa;QAJzB,SAAI,GAAW,GAAG,CAAC;QAKf,IAAI,IAAI,IAAI,IAAI,EAAE;YACd,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SACvB;IACL,CAAC;IAGD,QAAQ,CAAC,IAAY;QACjB,KAAK,IAAI,GAAG,IAAI,IAAI,EAAE;YAClB,QAAQ,GAAG,EAAE;gBACT,aAAa;gBACb,2BAA2B;gBAC3B,WAAW;aACd;SACJ;IACL,CAAC;CAEJ;;;;;ACvBqC;AACY;AACJ;AACX;AACK;AACY;AACA;AACF;AACG;AACT;AACV;AAG3B,MAAM,cAAc;IAA3B;QAEI,SAAI,GAAG,KAAK,CAAC;QACb,SAAI,GAAG,EAAE,CAAC;QACV,YAAO,GAAG,EAAE;QAEZ,YAAO,GAAG,EAAE,CAAC;QACb,UAAK,GAAW,4CAAkB,EAAE,CAAC;IA8LzC,CAAC;IA3LG,MAAM,CAAC,QAAQ,CAAC,KAAc,EAAE,QAAkB;QAC9C,IAAI,MAAM,GAAG,IAAI,cAAc,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC5C,CAAC;IAEO,QAAQ,CAAC,KAAc,EAAE,QAAkB;QAC/C,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,MAAM,MAAM,GAAG,yBAAyB,CAAC;QACzC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QAEnB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,aAAa,GAAG,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;YAC/E,IAAI,aAAa,EAAE;gBAEf,IAAI,CAAC,IAAI,GAAG,GAAG,0DAAyB,eAAe,CAAC;gBACxD,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;gBACrD,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC;qBACjB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qBAC7B,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;aAC/B;iBAAM;gBACH,IAAI,KAAK,GAAG,4DAA0B,EAAE,CAAC;gBACzC,8BAAW,CAAC,MAAM,EAAE,wBAAwB,KAAK,CAAC,GAAG,KAAK,KAAK,CAAC,GAAG,cAAc,KAAK,CAAC,OAAO,QAAQ,KAAK,EAAE,CAAC,CAAC;gBAC/G,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC;aACtC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGO,UAAU,CAAC,OAAgB;QAC/B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAE3C,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,8CAAgB,EAAE;iBACb,IAAI,CAAC,UAAU,KAAa;gBAEzB,gCAAgC;gBAChC,KAAK,GAAG,0CAAiB,CAAC;gBAE1B,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;gBAC5B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE5C,IAAI,CAAC,SAAS,EAAE;qBACX,IAAI,CAAC,UAAU,MAAmB;oBAE/B,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;oBACvB,oCAAoC;oBACpC,QAAQ,IAAI,EAAE;wBAEV,KAAK,GAAG;4BACJ,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;4BACpC,gDAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BAC9B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;4BACpB,OAAO;4BACP,6CAA6C;4BAC7C,MAAM;wBAEV,KAAK,GAAG;4BACJ,IAAI,OAAO,IAAI,KAAK,EAAE;gCAClB,oCAAgB,GAAG,kDAAqB,CAAC;gCACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;qCAChB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;qCAC7B,KAAK,CAAC,EAAE,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;6BAC/B;iCAAM;gCACH,IAAI,OAAO,GAAG,IAAI,4BAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,qDAAyB,CAAC;gCAC3E,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gCAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;6BACnB;4BACD,MAAM;wBAEV,KAAK,GAAG,CAAC;wBACT,KAAK,GAAG;4BACJ,IAAI,OAAO,GAAG,IAAI,4BAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,qDAAyB,CAAC;4BAC3E,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;4BAC1B,MAAM,CAAC,OAAO,CAAC,CAAC;4BAChB,MAAM;wBAEV;4BACI,IAAI,UAAU,GAAG,IAAI,4BAAY,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,qDAAyB,CAAC,CAAC;4BAC/E,4CAAkB,CAAC,mBAAmB,IAAI,CAAC,IAAI,OAAO,IAAI,YAAY,KAAK,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;4BAChG,MAAM,CAAC,UAAU,CAAC,CAAC;4BACnB,MAAM;qBAEb;gBAEL,CAAC,CAAC;qBACD,KAAK,CAAC,UAAU,CAAC;oBACd,IAAI,CAAC,EAAE;wBACH,IAAI,OAAO,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;wBAC3B,IAAI,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,EAAE;4BAC1C,4BAAU,CAAC,MAAM,EAAE,gBAAgB,OAAO,MAAM,IAAI,CAAC,IAAI,gBAAgB,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;yBACzG;6BAAM;4BACH,8BAAW,CAAC,MAAM,EAAE,aAAa,OAAO,MAAM,IAAI,CAAC,IAAI,gBAAgB,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;yBACvG;qBACJ;yBAAM;wBACH,8BAAW,CAAC,MAAM,EAAE,6BAA6B,IAAI,CAAC,IAAI,gBAAgB,KAAK,QAAQ,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;qBAC1G;oBAED,MAAM,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC,CAAC;YAEV,CAAC,CAAC;iBACD,KAAK,CAAC,UAAU,EAAE;gBACf,IAAI,GAAG,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,qDAAyB,CAAC,CAAC;gBACrE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;gBACtB,MAAM,CAAC,EAAE,CAAC;YACd,CAAC,CAAC;QAEV,CAAC,CAAC,CAAC;IAEP,CAAC;IAGO,SAAS;QACb,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAC1C,IAAI,MAAM,GAAG,IAAI,WAAW,EAAE,CAAC;QAE/B,OAAO,IAAI,OAAO,CAAc,UAAU,OAAO,EAAE,MAAM;YACrD,IAAI,cAAc,GAAG,KAAK,CAAC;YAC3B,IAAI,SAAS,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEzC,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE;gBACrB,4BAAU,CAAC,MAAM,EAAE,iBAAiB,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,aAAa,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;gBACnG,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,IAAI,CAAC,IAAI,kBAAkB,EAAE,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;gBAC3F,SAAS,CAAC,KAAK,EAAE,CAAC;YACtB,CAAC,CAAC;YAEF,SAAS,CAAC,MAAM,GAAG,EAAE,CAAC,EAAE;gBACpB,6CAA6C;gBAC7C,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAE7B,6EAA6E;gBAC7E,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE;gBAC1B,IAAI,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE;oBAC1B,IAAI,CAAC,cAAc,EAAE;wBACjB,4CAAkB,CAAC,gBAAgB,CAAC,CAAC;wBACrC,IAAI,EAAE,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC;wBAC3B,IAAI,cAAc,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,MAAM,CAAC;wBACxC,IAAI,WAAW,GAAG,4DAA0B,CAAC,cAAc,CAAC,CAAC;wBAE7D,8BAAW,CAAC,MAAM,EAAE,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,OAAO,WAAW,MAAM,IAAI,CAAC,IAAI,YAAY,0CAAiB,WAAW,IAAI,CAAC,KAAK,eAAe,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;wBACjK,MAAM,CAAC,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC,CAAC;wBACxC,cAAc,GAAG,IAAI,CAAC;wBACtB,IAAI,SAAS,CAAC,UAAU,KAAK,CAAC,EAAE;4BAC5B,SAAS,CAAC,KAAK,EAAE,CAAC;yBACrB;qBACJ;gBACL,CAAC,EAAE,oDAAsB,CAAC,CAAC;gBAE3B,SAAS,CAAC,SAAS,GAAG,GAAG,CAAC,EAAE;oBACxB,cAAc,GAAG,IAAI,CAAC;oBACtB,YAAY,CAAC,OAAO,CAAC,CAAC;oBAEtB,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACnC,IAAI,OAAO,EAAE;wBACT,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;wBAC9B,MAAM,CAAC,IAAI,GAAG,OAAO,CAAC;wBACtB,kDAAkD;wBAClD,OAAO,CAAC,MAAM,CAAC,CAAC;qBACnB;yBAAM;wBACH,4CAAkB,CAAC,kCAAkC,CAAC,CAAC;wBACvD,MAAM,CAAC,IAAI,uBAAO,CAAC,GAAG,EAAE,KAAK,EAAE,8BAA8B,CAAC,CAAC,CAAC;wBAChE,iDAAiD;qBACpD;oBAED,SAAS,CAAC,KAAK,EAAE,CAAC;gBACtB,CAAC,CAAC;gBAEF,SAAS,CAAC,OAAO,GAAG,EAAE,CAAC,EAAE;oBACrB,mCAAmC;oBACnC,YAAY,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC,CAAC;YAEN,CAAC,CAAC;QAEN,CAAC,CAAC,CAAC;IACP,CAAC;IAGO,WAAW,CAAC,KAAe;QAC/B,4CAAe,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;CAEJ;;;;;;;;;;;;;ACpN2B;AACE;AACC;AACuB;AAChB;AAEc;AAS7B;AAEiB;AACA;AACM;AACI;AACZ;AAEJ;AACsB;AACJ;AAC9B;AAC8C;AAG7B;AACyB;AACR;AAEjD,MAAM,cAAc;IAA3B;QAGI,eAAe;QAGf,iBAAY,GAAY,KAAK,CAAC;QAC9B,iBAAY,GAAW,CAAC,CAAC;QACzB,eAAU,GAAW,QAAQ,CAAC;QAE9B,sBAAiB,GAAG;YAChB,UAAU,EAAE,IAAI;YAChB,KAAK,EAAE;gBACH,SAAS,EAAE,oBAAoB;gBAC/B,WAAW,EAAE,kBAAkB;gBAC/B,SAAS,EAAE,CAAC;aACf;SACJ,CAAC;QAEF,eAAU,GAAY,KAAK,CAAC;QAC5B,eAAU,GAAY,KAAK,CAAC;QAC5B,eAAU,GAAY,KAAK,CAAC;QAU5B,gBAAW,GAAW,CAAC,CAAC;QAExB,uBAAkB,GAAW,CAAC,CAAC;QAC/B,oBAAe,GAAY,EAAE,CAAC;QAE9B,qBAAgB,GAAW,CAAC,CAAC;QAC7B,qBAAgB,GAAW,CAAC,CAAC;QAC7B,qBAAgB,GAAW,CAAC,CAAC;QAC7B,eAAU,GAAa,EAAE,CAAC;QAC1B,eAAU,GAAa,EAAE,CAAC;QAC1B,eAAU,GAAa,EAAE,CAAC;QAE1B,oBAAe,GAAW,EAAE,CAAC;QAC7B,mBAAc,GAAW,EAAE,CAAC;QAC5B,eAAU,GAAW,EAAE,CAAC;QACxB,mBAAc,GAAW,EAAE,CAAC;QAC5B,qBAAgB,GAAW,EAAE,CAAC;QAC9B,qBAAgB,GAAW,EAAE,CAAC;QAE9B,uBAAkB,GAAW,CAAC,CAAC;QAC/B,sBAAiB,GAAW,CAAC,CAAC;QAC9B,oBAAe,GAAW,CAAC,CAAC;QAC5B,mBAAc,GAAW,CAAC,CAAC;QAE3B,yBAAoB,GAAW,CAAC,CAAC;QACjC,0BAAqB,GAAW,CAAC,CAAC;QAElC,gBAAW,GAAW,CAAC,CAAC;QAExB,kBAAa,GAAG,0DAAyB,CAAC;QAC1C,kBAAa,GAAG,0DAAyB,CAAC;IAipF9C,CAAC;IA/oFG,IAAI,OAAO;QACP,OAAO,wBAAU,CAAC;IACtB,CAAC;IAGD,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,sEAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,sCAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,sEAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAqB;QACtC,sCAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,0EAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAqB;QACxC,sCAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,0EAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAqB;QACxC,sCAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,4EAAoC,CAAC;IAChD,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAqB;QACzC,sCAAiB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,IAAI,KAAK;QACL,OAAO,gDAAsB,CAAC;IAClC,CAAC;IAED,IAAI,KAAK,CAAC,GAAa;QACnB,sCAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC5C,CAAC;IAED,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAGD,IAAI,eAAe;QACf,OAAO,oEAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,8DAA2B,GAAG,GAAG,CAAC;QAClC,sCAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,8DAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,wDAAwB,GAAG,GAAG,CAAC;QAC/B,sCAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,gEAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAY;QAC1B,0DAAyB,GAAG,GAAG,CAAC;QAChC,sCAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,eAAe,CAAC;IACtD,CAAC;IAED,IAAI,aAAa;QACb,IAAI,OAAO,GAAG,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,kBAAkB,CAAC;QAC5F,oMAAoM;QACpM,OAAO,CAAC,OAAO,CAAC;IACpB,CAAC;IAED,IAAI,eAAe;QACf,IAAI,UAAU,GAAG,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC;QACnF,iLAAiL;QACjL,OAAO,UAAU,CAAC;IACtB,CAAC;IAGD,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,4DAA0B,GAAG,GAAG,CAAC;QACjC,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,4DAA0B,GAAG,GAAG,CAAC;QACjC,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,4DAA0B,GAAG,GAAG,CAAC;QACjC,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,sEAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,gEAA4B,GAAG,GAAG,CAAC;QACnC,sCAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,0EAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAY;QAC/B,oEAA8B,GAAG,GAAG,CAAC;QACrC,sCAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,0EAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAY;QAC/B,oEAA8B,GAAG,GAAG,CAAC;QACrC,sCAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,0EAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAY;QAC/B,oEAA8B,GAAG,GAAG,CAAC;QACrC,sCAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,wCAAwC;IACxC,kDAAkD;IAClD,IAAI;IACJ,EAAE;IACF,2CAA2C;IAC3C,4CAA4C;IAC5C,4DAA4D;IAC5D,IAAI;IAGJ,IAAI,WAAW;QACX,OAAO,IAAI,CAAC,SAAS,IAAI,qCAAgB,CAAC;IAC9C,CAAC;IAED,IAAI,SAAS;QACT,OAAO,wDAAyC,CAAC;IACrD,CAAC;IAED,IAAI,SAAS,CAAC,GAAgB;QAC1B,IAAI,GAAG,IAAI,qCAAgB,EAAE;YACzB,IAAI,GAAG,KAAK,uCAAiB,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;gBACnD,GAAG,GAAG,uCAAiB,CAAC;aAC3B;YACD,wEAAgC,GAAG,GAAG,CAAC;SAC1C;QACD,sCAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,aAAa;QACb,OAAO,gEAAgD,CAAC;IAC5D,CAAC;IAED,IAAI,aAAa,CAAC,GAAmB;QACjC,kEAA6B,GAAG,GAAG,CAAC;QACpC,sCAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,SAAS;QACT,OAAO,wDAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,sCAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,UAAU;QACV,IAAI,MAAM,GAAG,CAAC,CAAC;QACf,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/C,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACvC,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,IAAI,YAAY;QACZ,wFAAwF;QACxF,OAAO,8DAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAY;QACzB,6DAA6D;QAC7D,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE;YACvD,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE;gBAC/B,6CAA6C;gBAC7C,QAAQ,GAAG,IAAI,CAAC;aACnB;SACJ;QAED,IAAI,CAAC,QAAQ,EAAE;YACX,sCAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;SAClD;IACL,CAAC;IAED,IAAI,cAAc;QACd,eAAe;QACf,OAAO,kEAA+B,CAAC;QACvC,yEAAyE;IAC7E,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,4DAA0B,GAAG,GAAG,CAAC;QACjC,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACjD,8EAA8E;IAClF,CAAC;IAGD,IAAI,gBAAgB;QAChB,eAAe;QACf,OAAO,sEAAiC,CAAC;QACzC,yEAAyE;IAC7E,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,gEAA4B,GAAG,GAAG,CAAC;QACnC,sCAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;QACnD,8EAA8E;IAClF,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,sEAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAY;QAC7B,gEAA4B,GAAG,GAAG,CAAC;QACnC,sCAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,wEAAkC,CAAC;IAC9C,CAAC;IAED,IAAI,iBAAiB,CAAC,GAAY;QAC9B,sCAAiB,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACxD,CAAC;IAED,IAAI,kBAAkB;QAClB,OAAO,0EAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAY;QAC/B,sCAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,8EAAqC,CAAC;IACjD,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAmB;QACxC,sCAAiB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,gBAAgB;QAChB,OAAO,sEAAiC,CAAC;IAC7C,CAAC;IAED,IAAI,gBAAgB,CAAC,GAAuB;QACxC,sCAAiB,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,CAAC;IAED,UAAU,CAAC,GAAW;QAClB,QAAQ,GAAG,EAAE;YACT,KAAK,CAAC;gBACF,OAAO,kBAAkB,CAAC;gBAC1B,MAAM;YACV,KAAK,CAAC;gBACF,OAAO,KAAK,CAAC;gBACb,MAAM;YAEV,KAAK,EAAE;gBACH,OAAO,oBAAoB,CAAC;gBAC5B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,kBAAkB,CAAC;gBAC1B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,6BAA6B,CAAC;gBACrC,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,uBAAuB,CAAC;gBAC/B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,mBAAmB,CAAC;gBAC3B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,oBAAoB,CAAC;gBAC5B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,qBAAqB,CAAC;gBAC7B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,kBAAkB,CAAC;gBAC1B,MAAM;YAEV,KAAK,EAAE;gBACH,OAAO,sBAAsB,CAAC;gBAC9B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,uBAAuB,CAAC;gBAC/B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,mBAAmB,CAAC;gBAC3B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,qBAAqB,CAAC;gBAC7B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,kBAAkB,CAAC;gBAC1B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,iBAAiB,CAAC;gBACzB,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,uBAAuB,CAAC;gBAC/B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,qBAAqB,CAAC;gBAC7B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,aAAa,CAAC;gBACrB,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,qBAAqB,CAAC;gBAC7B,MAAM;YACV,KAAK,EAAE;gBACH,OAAO,mBAAmB,CAAC;gBAC3B,MAAM;SACb;IACL,CAAC;IAED,WAAW,CAAC,GAAW;QACnB,IAAI,GAAG,GAAG,EAAE,EAAE;YACV,OAAO,MAAM,CAAC;SACjB;aAAM,IAAI,GAAG,GAAG,EAAE,EAAE;YACjB,OAAO,KAAK,CAAC;SAChB;aAAM;YACH,OAAO,OAAO,CAAC;SAClB;IACL,CAAC;IAED,kBAAkB;IAGlB,qBAAqB;IAErB,kBAAkB,CAAC,OAAe;QAC9B,IAAI,OAAO,EAAE;YACT,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC9C,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,OAAO,IAAI,OAAO,EAAE;oBAC1D,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;iBAE5B;aACJ;SACJ;IACL,CAAC;IAGD,IAAI,WAAW;QACX,IAAI,KAAK,GAAG,4DAA4B,CAAC;QACzC,yEAAyE;QACzE,OAAO,KAAK,CAAC;IACjB,CAAC;IAED,IAAI,WAAW,CAAC,KAAc;QAC1B,6EAA6E;QAC7E,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE;YAE3B,iDAAiD;YACjD,8EAA8E;YAE9E,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAClC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,CAAC,CAAC;YAGlC,IAAI,KAAK,EAAE;gBACP,IAAI,CAAC,QAAQ,GAAG,uCAAe,CAAC,KAAK,CAAC,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;gBACnC,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;oBAClC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;iBACzB;gBAED,iDAAiD;gBACjD,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,sDAAuB,KAAK,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC;gBACvG,IAAI,CAAC,OAAO,EAAE;oBACV,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;oBACjC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;iBACtC;gBAED,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;gBACnC,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC;gBAC3C,sDAAuB,GAAG,KAAK,CAAC,OAAO,CAAC;gBAExC,sEAAsE;aACzE;iBAAM;gBACH,sDAAuB,GAAG,EAAE,CAAC;aAChC;YACD,sCAAiB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;SACnD;IACL,CAAC;IAED,EAAE;IACF,gCAAgC;IAChC,mDAAmD;IACnD,+CAA+C;IAC/C,sBAAsB;IACtB,IAAI;IAGJ,iBAAiB;QACb,6DAA6D;QAC7D,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,IAAI,EAAE;YACnC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,KAAK,EAAE,CAAC,CAAC,CAAC;YACvD,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;SAC3D;aAAM;YACH,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC;SAC3D;IACL,CAAC;IAGD,YAAY;IAGZ,sBAAsB;IAEtB,IAAI,WAAW;QACX,IAAI,MAAa,CAAC;QAClB,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,EAAE;YAC3B,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YAC7B,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;aACpB;SACJ;QACD,iDAAiD;QACjD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,IAAI,WAAW,CAAC,GAAU;QACtB,iDAAiD;QACjD,IAAI,GAAG,EAAE;YACL,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC1B,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;SAC7B;aAAM;YACH,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;SAC1B;IACL,CAAC;IAED,IAAI,WAAW;QACX,wCAAwC;QACxC,qEAAqE;QACrE,OAAO,4DAA4B,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,GAA+C;QAC3D,qEAAqE;QACrE,sCAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,gEAA8B,CAAC;IAC1C,CAAC;IAED,IAAI,aAAa,CAAC,GAAkE;QAChF,sCAAiB,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,IAAI,oBAAoB;QACpB,OAAO,8EAAqC,CAAC;IACjD,CAAC;IAED,IAAI,oBAAoB,CAAC,GAAY;QACjC,sCAAiB,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,IAAI,eAAe;QACf,OAAO,oEAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAW;QAC3B,sCAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAW;QAC1B,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,WAAW;QACX,OAAO,4DAA4B,CAAC;IACxC,CAAC;IAED,IAAI,WAAW,CAAC,GAAiB;QAC7B,sCAAiB,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAClD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE;IACpD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAkB;QACjC,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE;IACpD,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,4EAAoC,CAAC;IAChD,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAa;QACjC,oEAA8B,GAAG,GAAG,CAAC;QACrC,sCAAiB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1D,CAAC;IAED,UAAU,CAAC,GAAU;QACjB,oDAAoD;QACpD,IAAI,UAAU,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;YAChB,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;SAChD;aAAM;YACH,IAAI,WAAW,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;YAC3C,IAAI,WAAW,IAAI,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE;gBACvC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,WAAW,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;oBAC1C,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC,CAAC,CAAC;oBACvB,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC3C,IAAI,UAAU,EAAE;wBACZ,MAAM;qBACT;iBACJ;aACJ;SACJ;QACD,OAAO,UAAU,CAAC;IACtB,CAAC;IAGD,eAAe,CAAC,GAAU,EAAE,cAAuB,EAAE,QAAkB;QACnE,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAEhC,IAAI,GAAG,EAAE;YACL,iGAAiG;YAEjG,IAAI,cAAc,EAAE;gBAEhB,IAAI,IAAI,CAAC,SAAS,KAAK,qCAAgB,EAAE;oBACrC,sDAAsD;oBAEtD,IAAI,GAAG,CAAC,SAAS,EAAE;wBACf,aAAa;wBACb,gBAAgB;qBACnB;yBAAM;wBACH,+CAA+C;wBAC/C,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,GAAG,EAAE;4BAC/D,oEAAoE;yBACvE;6BAAM;4BACH,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;4BACvD,IAAI,CAAC,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;yBAC7B;qBACJ;iBACJ;qBAAM;oBACH,YAAY;oBAEZ,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;wBAChB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC1B,MAAM,KAAK,GAAY,CAAC,GAAG,OAAO,CAAC,CAAC;wBACpC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBAChB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;wBAE1B,IAAI,GAAG,CAAC,aAAa,EAAE;4BACnB,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;yBACrE;qBACJ;yBAAM;wBACH,0EAA0E;wBAC1E,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;qBACvD;iBACJ;aAEJ;iBAAM;gBACH,eAAe;gBACf,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;gBAChC,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE;oBAChB,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;oBACvC,IAAI,MAAM,IAAI,CAAC,EAAE;wBACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;qBAC7B;iBACJ;qBAAM;oBACH,IAAI,CAAC,gBAAgB,CAAC,GAAG,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;iBAC9C;aAEJ;SAEJ;aAAM;YACH,4CAAkB,CAAC,sCAAsC,CAAC;SAC7D;IAEL,CAAC;IAGD,gBAAgB,CAAC,GAAU,EAAE,OAAgB,EAAE,YAAqB;QAChE,GAAG,CAAC,kBAAkB,EAAE;QACxB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAE1B,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;QACzC,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YACnC,MAAM,KAAK,GAAY,CAAC,GAAG,OAAO,CAAC,CAAC;YAEpC,IAAI,YAAY,EAAE;gBACd,gBAAgB;gBAChB,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAClB,IAAI,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAI,CAAC,iBAAiB,EAAE;wBACpB,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACxB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC1B,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;qBACjB;gBACL,CAAC,CAAC;aACL;iBAAM;gBACH,6BAA6B;gBAC7B,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBAClB,IAAI,iBAAiB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;oBAC5C,IAAI,iBAAiB,EAAE;wBACnB,CAAC,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBACxB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC1B,IAAI,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;wBAC1B,IAAI,GAAG,IAAI,CAAC,EAAE;4BACV,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;yBACxB;qBACJ;gBACL,CAAC,CAAC;aACL;YAED,IAAI,KAAK,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,EAAE;gBAChC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;aAC7B;SACJ;IACL,CAAC;IAEO,cAAc,CAAC,GAAU;QAC7B,IAAI,GAAG,CAAC,aAAa,IAAI,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YACnD,KAAK,IAAI,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE;gBAC1D,IAAI,CAAC,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;gBAC/B,IAAI,CAAC,CAAC,CAAC,aAAa,EAAE;oBAClB,GAAG,CAAC,aAAa,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;iBACpC;aACJ;SACJ;QACD,OAAO,GAAG,CAAC,aAAa,CAAC;IAC7B,CAAC;IAGD,WAAW,CAAC,GAAU;QAClB,mEAAmE;QACnE,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;YACtB,gDAAgD;YAChD,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;YAChC,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;YACvC,IAAI,MAAM,IAAI,CAAC,EAAE;gBACb,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;aAC7B;SACJ;IACL,CAAC;IAGD,kBAAkB;QACd,sCAAsC;QACtC,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;IAC3B,CAAC;IAGD,IAAI,YAAY;QACZ,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,oCAAe,EAAE;YAC9D,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;SAChC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,YAAY;IAGZ,oBAAoB;IAEpB,IAAI,UAAU;QACV,OAAO,0DAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,MAAiB;QAC5B,oDAAsB,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QACpD,sCAAiB,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAGD,kBAAkB,CAAC,KAAc;QAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACnC,sDAAsD;QAEtD,+BAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1C,CAAC;IAED,SAAS,CAAC,KAAc;QACpB,IAAI,KAAK,EAAE;YACP,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;gBAC1B,IAAI,aAAa,GAAG,iEAA4B,CAAC,KAAK,CAAC,SAAS,EAAE,kDAAqB,CAAC,CAAC;gBACzF,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;gBACjC,kDAAkD;aACrD;YACD,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;gBAClC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;aACjD;SACJ;IACL,CAAC;IAGD,eAAe,CAAC,MAAiB;QAC7B,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YACnB,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACnB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,KAAK,EAAE;oBAClC,IAAI,KAAK,CAAC,UAAU,IAAI,IAAI,EAAE;wBAC1B,IAAI,aAAa,GAAG,iEAA4B,CAAC,KAAK,CAAC,SAAS,EAAE,kDAAqB,CAAC,CAAC;wBACzF,KAAK,CAAC,UAAU,GAAG,aAAa,CAAC;wBACjC,wDAAwD;qBAC3D;oBACD,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;iBACrB;YACL,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SAC3B;IACL,CAAC;IAGD,UAAU,CAAC,KAAc,EAAE,YAAsB;QAC7C,kDAAkD;QAClD,IAAI,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC,CAAC;IACjD,CAAC;IAGD,mBAAmB,CAAC,eAAyB,EAAE,YAAsB;QACjE,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE;YAC5B,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC5B,IAAI,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YAC9B,IAAI,mBAAmB,GAAG,eAAe,CAAC;YAC1C,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAEnC,0BAA0B;YAC1B,iDAAiD;YACjD,8FAA8F;YAC9F,8BAA8B;YAC9B,oCAAoC;YACpC,iCAAiC;YACjC,eAAe;YACf,yFAAyF;YACzF,yCAAyC;YACzC,2CAA2C;YAC3C,iBAAiB;YACjB,2CAA2C;YAC3C,UAAU;YACV,QAAQ;YACR,MAAM;YACN,IAAI;YACJ,mBAAmB,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;gBAC7B,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACtB,IAAI,KAAK,CAAC,OAAO,KAAK,EAAE,EAAE;wBACtB,IAAI,KAAK,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE;4BACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;yBAChC;wBACD,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;wBACxC,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;4BACV,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;4BACzB,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;gCACrC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;6BACrC;yBACJ;6BAAM;4BACH,4BAAU,CAAC,wCAAwC,EAAE,EAAE,CAAC,CAAC;yBAC5D;qBACJ;gBACL,CAAC,CAAC;YACN,CAAC,CAAC;YACF,qCAAqC;YACrC,iDAAY,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;YAChC,CAAC,CAAC,CAAC;SAEN;IACL,CAAC;IAED,gBAAgB,CAAC,aAAwB,EAAE,YAAsB;QAC7D,kEAAkE;QAClE,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE;YAC1B,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAE5B,IAAI,SAAS,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;YAC3B,IAAI,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC;YAErC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YACnC,WAAW,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACxB,IAAI,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,EAAE;oBAEzB,IAAI,KAAK,IAAI,WAAW,IAAI,CAAC,YAAY,EAAE;wBACvC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;qBAChC;oBAED,MAAM,GAAG,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC;oBACjE,IAAI,GAAG,GAAG,CAAC,CAAC,EAAE;wBACV,SAAS,CAAC,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;wBAEzB,IAAI,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;4BACrC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;yBACrC;qBACJ;yBAAM;wBACH,4CAAkB,CAAC,qCAAqC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;qBACxF;iBACJ;qBAAM;oBACH,6DAA6D;oBAC7D,+FAA+F;iBAClG;YACL,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;SAC/B;aAAM;YACH,4CAAkB,CAAC,wCAAwC,CAAC,CAAC;SAChE;IACL,CAAC;IAGO,gBAAgB,CAAC,KAAc;QACnC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACnC,IAAI,KAAK,IAAI,WAAW,EAAE;YACtB,IAAI,QAAiB,CAAC;YACtB,IAAI,YAAY,GAAG,EAAE,CAAC;YACtB,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;YACxC,uDAAuD;YACvD,IAAI,QAAQ,EAAE;gBACV,YAAY,GAAG,wBAAwB,CAAC;gBACxC,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;aAC/B;iBAAM;gBACH,YAAY,GAAG,UAAU,CAAC;gBAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;aAC3B;YAED,kDAAkD;YAElD,+BAAW,CAAC,YAAY,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,4CAAkB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC,CAAC;YACzF,0FAA0F;SAC7F;IACL,CAAC;IAGO,gBAAgB,CAAC,KAAc;QACnC,IAAI,QAAQ,GAAY,IAAI,CAAC;QAC7B,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,CAAC,CAAC;QACtE,IAAI,GAAG,IAAI,CAAC,EAAE;YACV,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;YACvC,IAAI,OAAO,GAAG,SAAS,GAAG,CAAC,CAAC;YAC5B,IAAI,SAAS,GAAG,CAAC,EAAE;gBACf,IAAI,MAAM,GAAG,GAAG,IAAI,OAAO,CAAC;gBAC5B,IAAI,MAAM,EAAE;oBACR,eAAe;oBACf,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;oBACpC,qEAAqE;iBACxE;qBAAM,IAAI,GAAG,GAAG,OAAO,EAAE;oBACtB,cAAc;oBACd,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;oBACpC,oEAAoE;iBACvE;qBAAM;oBACH,4CAAkB,CAAC,sCAAsC,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;iBAC5E;aACJ;iBAAM;gBACH,mDAAmD;aACtD;SACJ;aAAM;YACH,4CAAkB,CAAC,uCAAuC,CAAC,CAAC;SAC/D;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,WAAW,CAAC,KAAc;QACtB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,MAAM,GAAG,KAAK,CAAC;QACnB,IAAI,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QAC5B,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/C,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE;gBAChC,IAAI,MAAM,IAAI,KAAK,EAAE;oBACjB,IAAI,SAAS,CAAC,OAAO,IAAI,OAAO,EAAE;wBAC9B,MAAM,GAAG,IAAI,CAAC;wBACd,MAAM,GAAG,IAAI,CAAC;qBACjB;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;QAED,OAAO,MAAM,CAAC;IAClB,CAAC;IAGD,YAAY;IAGZ,cAAc;IAGd,IAAI,QAAQ;QACR,OAAO,sDAAyB,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,CAAC,GAAU;QACnB,sCAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC;IAGD,cAAc,CAAC,IAAc,EAAE,OAAiB,EAAE,MAAgB;QAC9D,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,+BAA+B,CAAC;QAC/C,+CAA+C;QAE/C,IAAI,KAAK,GAAY,IAAI,CAAC,WAAW,CAAC;QACtC,IAAI,IAAI,CAAC,WAAW,EAAE;YAElB,KAAK,CAAC,cAAc,EAAE,CAAC;YAEvB,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjC,yDAAyD;YAEzD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAChB,yDAAyD;gBACzD,IAAI,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAAE,OAAO;gBAC9E,IAAI,GAAG,GAAG,qCAAc,CAAC,IAAI,CAAC,CAAC;gBAC/B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC1B,IAAI,IAAI,CAAC,SAAS,KAAK,qCAAgB,EAAE;oBACrC,IAAI,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,KAAK,IAAI,CAAC,MAAM,CAAC;oBAC5D,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,CAAC;oBAC1D,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;iBAClD;gBAED,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACtB,CAAC,CAAC,CAAC;YACH,kEAAkE;YAElE,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACnB,2DAA2D;gBAC3D,IAAI,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;gBAC3D,IAAI,MAAM,IAAI,CAAC,EAAE;oBACb,IAAI,GAAG,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;oBAC1B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC1B,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;iBAC7B;YACL,CAAC,CAAC,CAAC;YACH,qEAAqE;YAGrE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAClB,IAAI,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,GAAG,EAAE;oBACL,+CAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC/B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC1B,uFAAuF;iBAC1F;YACL,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SAC3B;IAEL,CAAC;IAGD,IAAI,QAAQ;QACR,8CAA8C;QAC9C,OAAO,sDAAyB,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,CAAC,IAAa;QACtB,qDAAqD;QACrD,sCAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;IAChD,CAAC;IAGD,WAAW;QACP,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAE5C,IAAI,QAAQ,GAAY,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAG,gDAAsB,CAAC;QACnC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBAEjB,IAAI,IAAI,EAAE;oBACN,IAAI,GAAG,GAAG,qCAAc,CAAC,IAAI,CAAC,CAAC;oBAC/B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;oBAEnB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,KAAK,IAAI,CAAC,MAAM,EAAE;wBAC1E,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;qBACzC;iBACJ;qBAAM;oBACH,4CAAkB,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;iBAC7C;YAEL,CAAC,CAAC,CAAC;SAEN;QACD,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,aAAa;QACT,IAAI,QAAQ,GAAG,8DAA6B,GAAG,CAAC,CAAC;QACjD,IAAI,OAAO,GAAG,oEAAgC,GAAG,CAAC,CAAC;QACnD,IAAI,QAAQ,IAAI,CAAC,OAAO,EAAE;YACtB,IAAI,CAAC,WAAW,EAAE,CAAC;SACtB;IACL,CAAC;IAED,IAAI,QAAQ;QACR,IAAI,CAAC,aAAa,EAAE,CAAC;QACrB,gEAAgE;QAChE,OAAO,sDAAyB,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,CAAC,IAAa;QACtB,2CAA2C;QAC3C,sCAAiB,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IAGD,IAAI,QAAQ;QACR,gEAAgE;QAChE,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;IACjC,CAAC;IAED,IAAI,QAAQ,CAAC,IAAa;QACtB,2CAA2C;QAC3C,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IACjC,CAAC;IAGD,IAAI,UAAU;QACV,OAAO,0DAA2B,CAAC;IACvC,CAAC;IAED,IAAI,UAAU,CAAC,IAAa;QACxB,sCAAiB,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IAC1C,CAAC;IAGD,iBAAiB;IAGjB,mBAAmB;IAEnB,IAAI,gBAAgB;QAChB,mJAAmJ;QACnJ,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,oCAAe,CAAC,CAAC;QAChE,IAAI,oEAA8B,IAAI,4DAA0B,EAAE;YAC9D,IAAI,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;SACrC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,IAAI,gBAAgB;QAEhB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,oCAAe,CAAC,CAAC;QAChE,IAAI,oEAA8B,IAAI,4DAA0B,EAAE;YAC9D,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,IAAI,gBAAgB;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,oCAAe,CAAC,CAAC;QAChE,IAAI,oEAA8B,IAAI,4DAA0B,EAAE;YAC9D,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;SACpC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,sCAAsC;IACtC,yEAAyE;IACzE,sFAAsF;IACtF,4EAA4E;IAC5E,0CAA0C;IAC1C,sFAAsF;IACtF,MAAM;IACN,iBAAiB;IACjB,IAAI;IAGJ,eAAe,CAAC,IAAa;QACzB,IAAI,QAAiB,CAAC;QACtB,IAAI,4DAA0B,EAAE;YAC5B,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,4DAA0B,EAAE,kEAA6B,CAAC,CAAC;YAC3G,QAAQ,GAAG,cAAc,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACxD,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,oEAA8B,CAAC,CAAC;YACtG,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,4DAA0B,EAAE,kEAA6B,CAAC,CAAC;YAC/G,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,8DAA2B,CAAC,CAAC;SACrF;aAAM;YACH,QAAQ,GAAG,IAAI,CAAC;SACnB;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,cAAc,CAAC,IAAa;QACxB,IAAI,QAAiB,CAAC;QACtB,IAAI,4DAA0B,EAAE;YAC5B,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,4DAA0B,EAAE,kEAA6B,CAAC,CAAC;YAC3G,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,oEAA8B,CAAC,CAAC;YACtG,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,4DAA0B,EAAE,kEAA6B,CAAC,CAAC;YAC/G,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,8DAA2B,CAAC,CAAC;YAClF,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;SACxD;aAAM;YACH,iDAAiD;YACjD,QAAQ,GAAG,IAAI,CAAC;SACnB;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,cAAc,CAAC,IAAa;QACxB,IAAI,QAAiB,CAAC;QACtB,IAAI,4DAA0B,EAAE;YAC5B,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,4DAA0B,EAAE,kEAA6B,CAAC,CAAC;YAC3G,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,EAAE,oEAA8B,CAAC,CAAC;YACtG,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,4DAA0B,EAAE,kEAA6B,CAAC,CAAC;YAC/G,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,QAAQ,EAAE,8DAA2B,CAAC,CAAC;SACrF;aAAM;YACH,QAAQ,GAAG,IAAI,CAAC;SACnB;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,gBAAgB,CAAC,IAAa;QAC1B,IAAI,QAAiB,CAAC;QACtB,IAAI,gEAA4B,EAAE;YAC9B,QAAQ,GAAG,cAAc,CAAC,eAAe,CAAC,IAAI,EAAE,gEAA4B,EAAE,IAAI,CAAC,CAAC;SACvF;aAAM;YACH,QAAQ,GAAG,IAAI,CAAC;SACnB;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,IAAa,EAAE,UAAkB,EAAE,SAAiB;QAEvE,IAAI,QAAQ,GAAY,EAAE,CAAC;QAC3B,IAAI,aAAa,GAAG,UAAU,IAAI,UAAU,KAAK,EAAE,CAAC;QACpD,IAAI,YAAY,GAAG,SAAS,IAAI,SAAS,KAAK,EAAE,CAAC;QAEjD,mJAAmJ;QAEnJ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,aAAa,IAAI,YAAY,EAAE;YACpD,UAAU,GAAG,aAAa,CAAC,CAAC,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC7D,SAAS,GAAG,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAE1D,wDAAwD;YAExD,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBAEf,IAAI,WAAW,GAAG,KAAK,CAAC;gBACxB,IAAI,aAAa,EAAE;oBACf,uCAAuC;oBACvC,WAAW,GAAG,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC;oBAChE,gHAAgH;iBACnH;gBAED,IAAI,UAAU,GAAG,KAAK,CAAC;gBACvB,IAAI,YAAY,EAAE;oBACd,mDAAmD;oBACnD,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;oBACzB,UAAU,GAAG,MAAM,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;iBACxE;gBACD,6GAA6G;gBAE7G,IAAI,CAAC,CAAC,aAAa,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,YAAY,IAAI,UAAU,CAAC,EAAE;oBAClE,0CAA0C;oBAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACtB;YACL,CAAC,CAAC,CAAC;SACN;aAAM;YACH,QAAQ,GAAG,IAAI,CAAC;SACnB;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,MAAM,CAAC,mBAAmB,CAAC,IAAa;QACpC,IAAI,QAAQ,GAAY,EAAE,CAAC;QAC3B,IAAI,cAAc,GAAG,4DAA0B,CAAC;QAChD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,cAAc,IAAI,wCAAoB,EAAE;YAC7D,QAAQ,GAAG,IAAI,CAAC;SACnB;aAAM,IAAI,cAAc,IAAI,gEAAgC,EAAE;YAC3D,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACf,qBAAqB;gBACrB,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,EAAE;oBAClC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;iBACtB;YACL,CAAC,CAAC,CAAC;SACN;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,IAAa,EAAE,KAAc,EAAE,QAAgB;QAClE,2CAA2C;QAE3C,IAAI,QAAQ,GAAY,EAAE,CAAC;QAE3B,IAAI,KAAK,EAAE;YACP,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YACpB,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;YAEpB,IAAI,QAAQ,IAAI,QAAQ,GAAG,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,EAAE;gBAChE,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;gBACpB,IAAI,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC;gBACpB,IAAI,WAAW,GAAG,GAAG,CAAC;gBACtB,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,IAAI,KAAK,IAAI,QAAQ,IAAI,GAAG,EAAE;oBAC3D,QAAQ,GAAG,IAAI,CAAC;iBACnB;qBAAM;oBACH,oBAAoB;oBACpB,IAAI,kDAAqB,IAAI,uCAAiB,EAAE;wBAC5C,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;qBACnC;yBAAM;wBACH,WAAW,GAAG,QAAQ,GAAG,MAAM,CAAC;qBACnC;oBACD,6CAA6C;oBAE7C,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;wBACf,IAAI,MAAM,GAAG,GAAG,CAAC,YAAY,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;wBACxC,IAAI,MAAM,IAAI,CAAC,EAAE;4BACb,2DAA2D;4BAC3D,IAAI,MAAM,IAAI,WAAW,EAAE;gCACvB,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;6BACtB;yBACJ;6BAAM;4BACH,4CAAkB,CAAC,0DAA0D,CAAC,CAAC;4BAC/E,wBAAwB;yBAC3B;oBACL,CAAC,CAAC,CAAC;iBACN;aAEJ;iBAAM;gBACH,QAAQ,GAAG,IAAI,CAAC;aACnB;SACJ;aAAM;YACH,QAAQ,GAAG,IAAI,CAAC;SACnB;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,MAAM,CAAC,eAAe,CAAC,IAAa,EAAE,QAAgB,EAAE,KAAc;QAClE,+BAA+B;QAE/B,IAAI,QAAQ,GAAY,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,MAAM,IAAI,CAAC,EAAE;YACxD,QAAQ,GAAG,IAAI,CAAC;SACnB;aAAM;YACH,IAAI,UAAU,GAAG,EAAE,CAAC;YACpB,IAAI,YAAY,GAAa,EAAE,CAAC;YAChC,IAAI,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;YAErC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;gBACnB,KAAK,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;gBAC5B,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE;oBACzB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;iBAClC;gBACD,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC7B,CAAC,CAAC,CAAC;YACH,iDAAiD;YAEjD,IAAI,KAAK,EAAE;gBACP,iDAAiD;gBACjD,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,IAAI,WAAW,GAAG,aAAa,GAAG,KAAK,GAAG,MAAM,CAAC;oBACjD,UAAU,IAAI,WAAW,CAAC;gBAC9B,CAAC,CAAC,CAAC;aACN;iBAAM;gBACH,+BAA+B;gBAC/B,YAAY,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE;oBACzB,IAAI,WAAW,GAAG,QAAQ,GAAG,KAAK,GAAG,KAAK,CAAC;oBAC3C,UAAU;wBACN,UAAU,IAAI,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,UAAU,GAAG,GAAG,GAAG,WAAW,CAAC;gBACxE,CAAC,CAAC,CAAC;aACN;YAED,IAAI,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,CAAC;YAEnC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACf,gGAAgG;gBAChG,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBACpB,IAAI,IAAI,IAAI,IAAI,EAAE;oBACd,IAAI,SAAS,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;oBACnC,IAAI,QAAQ,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;oBACrC,IAAI,QAAQ,EAAE;wBACV,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;wBACnB,gEAAgE;qBACnE;yBAAM;wBACH,mEAAmE;qBACtE;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,IAAa,EAAE,QAAgB;QACnD,IAAI,QAAQ,GAAY,EAAE,CAAC;QAE3B,IAAI,QAAQ,EAAE;YACV,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;gBAClD,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;aACvC;YACD,sDAAsD;YAEtD,kBAAkB;YAClB,IAAI,QAAQ,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;gBACjC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACb,IAAI,QAAQ,CAAC;oBACb,IAAI,CAAC,CAAC,SAAS,EAAE;wBACb,QAAQ,GAAG,CAAC,CAAC,SAAS,CAAC,WAAW,EAAE,CAAC;qBACxC;oBACD,sDAAsD;oBACtD,IAAI,QAAQ,EAAE;wBACV,IAAI,QAAQ,KAAK,QAAQ,EAAE;4BACvB,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBACpB;qBACJ;gBACL,CAAC,CAAC,CAAC;aACN;iBAAM;gBACH,QAAQ,GAAG,IAAI,CAAC;aACnB;SACJ;aAAM;YACH,QAAQ,GAAG,IAAI,CAAC;SACnB;QAED,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,MAAM,CAAC,gBAAgB,CAAC,IAAa;QACjC,IAAI,QAAQ,GAAY,EAAE,CAAC;QAC3B,IAAI,QAAQ,GAAG,oEAA8B,CAAC;QAC9C,IAAI,QAAQ,GAAG,oEAA8B,CAAC;QAC9C,IAAI,WAAW,GAAG,0EAAiC,CAAC;QACpD,mEAAmE;QAEnE,IAAI,UAAU,GAAG,QAAQ,GAAG,CAAC,GAAG,CAAC;QACjC,IAAI,UAAU,GAAG,QAAQ,GAAG,CAAC,CAAC;QAG9B,IAAI,CAAC,UAAU,IAAI,CAAC,UAAU,EAAE;YAC5B,QAAQ,GAAG,IAAI,CAAC;SACnB;aAAM;YACH,IAAI,GAAG,GAAG,gBAAM,EAAE,CAAC;YACnB,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAChD,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;YAEhD,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACb,IAAI,CAAC,CAAC,IAAI,EAAE;oBACR,IAAI,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;oBAElB,IAAI,WAAW,EAAE;wBACb,IAAI,IAAI,CAAC,SAAS,EAAE;4BAChB,IAAI,OAAO,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BACrC,IAAI,UAAU,IAAI,UAAU,EAAE;gCAC1B,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,EAAE;oCAC1C,qEAAqE;oCACrE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iCACpB;6BACJ;iCAAM;gCACH,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO,EAAE;oCAClC,qEAAqE;oCACrE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iCACpB;gCACD,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO,EAAE;oCAClC,qEAAqE;oCACrE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iCACpB;6BACJ;yBACJ;qBACJ;yBAAM;wBACH,0CAA0C;wBAC1C,IAAI,IAAI,CAAC,SAAS,EAAE;4BAChB,IAAI,OAAO,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;4BACrC,IAAI,UAAU,IAAI,UAAU,EAAE;gCAC1B,IAAI,QAAQ,GAAG,OAAO,IAAI,OAAO,IAAI,OAAO,IAAI,OAAO,CAAC;gCACxD,IAAI,CAAC,QAAQ,EAAE;oCACX,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;iCACpB;6BACJ;iCAAM;gCACH,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO;oCAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gCACvD,IAAI,UAAU,IAAI,OAAO,IAAI,OAAO;oCAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;6BAC1D;yBACJ;6BAAM;4BACH,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;yBACpB;qBAEJ;iBACJ;YACL,CAAC,CAAC,CAAC;SACN;QAED,mEAAmE;QACnE,OAAO,QAAQ,CAAC;IACpB,CAAC;IAGD,qBAAqB;IAGrB,qBAAqB;IAErB,qBAAqB,CAAC,YAA4B;QAC9C,MAAM,MAAM,GAAG,sCAAsC,CAAC;QACtD,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,IAAI,CAAC,OAAO,EAAE;gBACd,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC/B,IAAI,KAAK,IAAI,IAAI,EAAE;oBACf,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,IAAI,YAAY,CAAC,GAAG,IAAI,CAAC,EAAE;wBAChD,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;wBAC7B,KAAK,CAAC,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;wBAC7B,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;wBACrC,KAAK,CAAC,QAAQ,GAAG,KAAK,CAAC;wBACvB,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC;wBAClB,KAAK,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;wBAE3B,IAAI,CAAC,OAAO;6BACP,aAAa,CAAC,KAAK,EAAE,IAAI,CAAC;6BAC1B,IAAI,CAAC,QAAQ,CAAC,EAAE;4BACb,sDAAsD;4BACtD,OAAO,CAAC,IAAI,CAAC,CAAC;wBAClB,CAAC,CAAC;6BACD,KAAK,CAAC,GAAG,CAAC,EAAE;4BACT,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;4BAC/D,wDAAwD;wBAC5D,CAAC,CAAC,CAAC;qBACV;yBAAM;wBACH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,6BAA6B,EAAE,OAAO,CAAC,CAAC;qBAClE;iBAEJ;aACJ;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,iBAAiB,CAAC,GAAmB;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,kCAAkC,CAAC;QAClD,gFAAgF;QAEhF,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAEhD,IAAI,IAAY,CAAC;YACjB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;YAErC,QAAQ,GAAG,CAAC,IAAI,EAAE;gBAEd,KAAK,oCAAgB,CAAC,CAAC;oBACnB,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;oBACjE,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBAC5C,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;oBAC7B,IAAI,CAAC,OAAO;yBACP,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;yBAClC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;yBAC9B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;yBACzB,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;oBAC5C,MAAM;iBACT;gBAED,KAAK,wCAAkB,CAAC,CAAC;oBACrB,IAAI,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC;oBACzB,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACzC,IAAI,IAAI,EAAE;wBACN,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;wBACtC,IAAI,CAAC,OAAO;6BACP,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,CAAC;6BAClC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;6BAC9B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;6BACzB,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;qBAC/C;yBAAM;wBACH,4CAAkB,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;qBACnE;oBACD,MAAM;iBACT;gBAED,KAAK,wCAAkB,CAAC,CAAC;oBACrB,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;oBACjE,IAAI,IAAI,EAAE;wBACN,IAAI,CAAC,OAAO;6BACP,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC;6BACjC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;6BAC9B,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;6BACzB,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;qBAC/C;yBAAM;wBACH,4CAAkB,CAAC,MAAM,EAAE,mCAAmC,CAAC,CAAC;qBACnE;oBACD,MAAM;iBACT;gBAED;oBACI,4CAAkB,CAAC,MAAM,EAAE,iBAAiB,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;oBACxD,MAAM;aAEb;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,iBAAiB,CAAC,YAA4B;QAC1C,MAAM,MAAM,GAAG,kCAAkC,CAAC;QAClD,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;QAC3B,IAAI,GAAG,GAAG,YAAY,CAAC,GAAG,CAAC;QAE3B,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAEhD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBAEvB,IAAI,IAAI,GAAG,IAAI,oBAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC;gBAC9B,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;gBACpC,IAAI,CAAC,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC;gBAChC,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;gBACf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;gBACf,IAAI,CAAC,SAAS,GAAG,kDAAqB,CAAC;gBACvC,IAAI,YAAY,CAAC,QAAQ;oBAAE,IAAI,CAAC,QAAQ,GAAG,YAAY,CAAC,QAAQ,CAAC;gBACjE,IAAI,YAAY,CAAC,MAAM;oBAAE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;gBAC3D,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,0BAA0B;gBAE/C,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC;qBAC3B,IAAI,CAAC,OAAO,CAAC,EAAE;oBACZ,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY;wBAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;oBAC/D,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBACnC,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;oBAC/D,uDAAuD;gBAC3D,CAAC,CAAC;qBACD,OAAO,CAAC,GAAG,EAAE;oBACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC5B,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,4CAAkB,CAAC,2BAA2B,CAAC,CAAC;gBAChD,MAAM,CAAC,2BAA2B,CAAC,CAAC;aACvC;QAEL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,iBAAiB,CAAC,GAAmB;QACjC,MAAM,MAAM,GAAG,kCAAkC,CAAC;QAClD,IAAI,IAAI,GAAG,IAAI,CAAC;QAEhB,OAAO,IAAI,OAAO,CAAS,UAAU,OAAO,EAAE,MAAM;YAEhD,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;gBAClB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBAEvB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC7B,IAAI,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrE,IAAI,IAAI,GAAG,IAAI,CAAC,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;gBAChD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;gBACnB,IAAI,CAAC,OAAO,GAAG,kDAAqB,CAAC;gBAErC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,CAAC;qBAC7B,IAAI,CAAC,OAAO,CAAC,EAAE;oBACZ,+DAA+D;oBAC/D,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;gBACnE,CAAC,CAAC;qBACD,OAAO,CAAC,GAAG,EAAE;oBACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC5B,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,4CAAkB,CAAC,2BAA2B,CAAC,CAAC;gBAChD,MAAM,CAAC,2BAA2B,CAAC,CAAC;aACvC;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGO,oBAAoB,CAAC,GAAmB,EAAE,IAAY;QAC1D,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE;YACtC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACzB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;YACzB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC;YAC7B,IAAI,GAAG,CAAC,MAAM,EAAE;gBACZ,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC;aAC5B;SACJ;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,wBAAwB;IAGxB,sBAAsB;IAGtB,cAAc,CAAC,GAAU;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,+BAA+B;QAC9C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YAElB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;gBACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;gBAEpB,IAAI,IAAI,GAAG,IAAI,oBAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;gBAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;gBACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;gBAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC3B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;gBAExB,iFAAiF;gBACjF,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC;qBAC5B,IAAI,CAAC,OAAO,CAAC,EAAE;oBACZ,0DAA0D;oBAE1D,IAAI,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC9B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC1B,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;yBAC1B,IAAI,CAAC,SAAS,CAAC,EAAE;wBACd,0DAA0D;wBAC1D,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAE/B,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACT,mBAAmB;wBACnB,IAAI,CAAC,MAAM,GAAG,WAAW,CAAC;wBAC1B,8BAAW,CAAC,MAAM,EAAE,6BAA6B,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;oBACnF,CAAC,CAAC,CAAC;gBAEX,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;oBAC9C,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAClC,IAAI,MAAM,KAAK,GAAG,EAAE;wBAChB,4BAAU,CAAC,MAAM,EAAE,GAAG,MAAM,kBAAkB,OAAO,EAAE,CAAC,CAAC;qBAC5D;yBAAM;wBACH,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;qBAClE;gBACL,CAAC,CAAC;qBACD,OAAO,CAAC,GAAG,EAAE;oBACV,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBAC5B,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,0CAAiB,CAAC,MAAM,EAAE,eAAe,CAAC;aAC7C;SACJ;aAAM;YACH,0CAAiB,CAAC,MAAM,EAAE,2BAA2B,CAAC;SACzD;IACL,CAAC;IAGD,cAAc,CAAC,GAAU;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAE/B,8CAA8C;QAE9C,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;gBAE/B,oEAAoE;gBAEpE,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;gBACrB,IAAI,MAAM,GAAG,4CAAkB,EAAE,CAAC;gBAClC,IAAI,MAAc,CAAC;gBACnB,IAAI,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;gBAC1B,IAAI,IAAI,IAAI,IAAI,EAAE;oBACd,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;iBACxB;gBAED,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC;gBACxB,IAAI,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC;gBACpC,IAAI,gBAAgB,GAAG,IAAI,CAAC,MAAM,CAAC;gBAEnC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;gBACrB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;gBAErB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,CAAC;qBAC3C,IAAI,CAAC,SAAS,CAAC,EAAE;oBACd,oEAAoE;oBAEpE,IAAI,SAAS,EAAE;wBAEX,IAAI,IAAI,IAAI,IAAI,EAAE;4BACd,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;4BACrB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;yBAC9B;wBAED,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;wBACpC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;wBAEhC,IAAI,CAAC,WAAW,CAAC,eAAe,IAAI,CAAC,CAAC;wBACtC,IAAI,CAAC,WAAW,CAAC,iBAAiB,IAAI,CAAC,CAAC;wBAExC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;wBAC3B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;wBAEvB,wCAAwC;wBACxC,6BAA6B;wBAC7B,OAAO,CAAC,IAAI,CAAC;qBAChB;yBAAM;wBACH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;wBACxB,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC;wBACpB,IAAI,CAAC,SAAS,GAAG,cAAc,CAAC;wBAChC,IAAI,CAAC,MAAM,GAAG,gBAAgB,CAAC;wBAC/B,OAAO,CAAC,KAAK,CAAC;qBACjB;gBAEL,CAAC,CAAC;aAET;iBAAM;gBACH,8BAAW,CAAC,+BAA+B,EAAE,gCAAgC,CAAC,CAAC;gBAC/E,OAAO,CAAC,KAAK,CAAC,CAAC;aAClB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,aAAa,CAAC,IAAY;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACrB,IAAI,IAAI,GAAG,IAAI,0BAAS,EAAE,CAAC;QAC3B,IAAI,CAAC,MAAM,GAAG,4CAAkB,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QACpC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,2CAAmB,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC/B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;QACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACtB,OAAO,IAAI,CAAC;IAChB,CAAC;IAGD,cAAc,CAAC,GAAU;QACrB,MAAM,MAAM,GAAG,+BAA+B,CAAC;QAE/C,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;QACpB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAE7B,OAAO,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YAE5C,IAAI,IAAI,IAAI,IAAI,IAAI,KAAK,IAAI,IAAI,EAAE;gBAE/B,GAAG,CAAC,UAAU,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;gBACb,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;gBACtB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;gBACrB,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;gBAC3B,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;gBAE7B,IAAI,CAAC,OAAO;qBACP,YAAY,CAAC,IAAI,CAAC;qBAClB,IAAI,CAAC,IAAI,CAAC,EAAE;oBACT,wCAAwC;oBACxC,OAAO,CAAC,IAAI,CAAC,CAAC;gBAClB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,MAAM,GAAG,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;oBAChD,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,YAAY,uBAAO,CAAC,CAAC,CAAC;wBACvC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC;wBAC/C,CAAC,CAAC,GAAG,CAAC;oBACV,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE;wBAClC,4BAAU,CAAC,MAAM,EAAE,cAAc,MAAM,QAAQ,OAAO,EAAE,CAAC,CAAC;qBAC7D;yBAAM;wBACH,oBAAoB;wBACpB,GAAG,CAAC,UAAU,GAAG,IAAI,CAAC;wBACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;wBACvB,KAAK,CAAC,eAAe,IAAI,CAAC,CAAC;wBAC3B,KAAK,CAAC,iBAAiB,IAAI,CAAC,CAAC;wBAE7B,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;wBAC/D,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;wBAC/D,MAAM,CAAC,GAAG,CAAC,CAAC;qBACf;gBAEL,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,8BAAW,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;gBAC/B,MAAM,EAAE,CAAC;aACZ;QACL,CAAC,CAAC,CAAC;IAEP,CAAC;IAGD,aAAa,CAAC,GAAU,EAAE,QAAkB,EAAE,EAAE,UAAU,GAAG,KAAK;QAC9D,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,IAAY,CAAC;YACjB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI;gBAAE,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACrC,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI;gBAAE,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACrC,IAAI,IAAI,EAAE;gBAEN,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,EAAE,MAAM,CAAC,EAAE,UAAU,CAAC;qBAClE,IAAI,CAAC,SAAS,CAAC,EAAE;oBACd,IAAI,SAAS,EAAE;wBAEX,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE;4BACtB,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,KAAK,CAAC;4BAChC,4BAA4B;yBAC/B;qBACJ;oBACD,OAAO,CAAC,SAAS,CAAC,CAAC;gBACvB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,4CAAkB,CAAC,cAAc,CAAC,CAAC;gBACnC,MAAM,CAAC,YAAY,CAAC,CAAC;aACxB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,YAAY,CAAC,GAAU;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,6BAA6B,CAAC;QAC7C,sBAAsB;QAEtB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC;YAC7B,IAAI,MAAM,EAAE;gBAER,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC;qBACtC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACd,IAAI,SAAS,EAAE;wBACX,IAAI,CAAC,kBAAkB,EAAE,CAAC;qBAC7B;oBACD,OAAO,CAAC,SAAS,CAAC,CAAC;gBACvB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aACV;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,4BAA4B;IAC5B,2BAA2B;IAC3B,2BAA2B;IAC3B,gBAAgB;IAChB,cAAc;IACd,QAAQ;IACR,0DAA0D;IAC1D,2EAA2E;IAC3E,mDAAmD;IACnD,WAAW;IACX,EAAE;IACF,gCAAgC;IAChC,yDAAyD;IACzD,EAAE;IACF,2DAA2D;IAC3D,kCAAkC;IAClC,MAAM;IACN,IAAI;IAGJ,YAAY,CAAC,GAAU;QACnB,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,IAAY,CAAC;YACjB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI;gBAAE,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACrC,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC;qBAClC,IAAI,CAAC,SAAS,CAAC,EAAE;oBACd,IAAI,SAAS,EAAE;wBACX,IAAI,CAAC,kBAAkB,EAAE,CAAC;qBAC7B;oBACD,OAAO,CAAC,SAAS,CAAC,CAAC;gBACvB,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChB,CAAC,CAAC,CAAC;aAEV;iBAAM;gBACH,4CAAkB,CAAC,cAAc,CAAC,CAAC;gBACnC,MAAM,CAAC,YAAY,CAAC,CAAC;aACxB;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAGD,yBAAyB;IAGzB,uBAAuB;IAEvB,WAAW,CAAC,KAAc;QACtB,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;QAEnC,IAAI,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC;QACxB,IAAI,GAAG,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,EAAE;YACzD,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;SACnC;aAAM;YACH,IAAI,MAAM,GAAG,uCAAe,CAAC,KAAK,CAAC,CAAC;YACpC,IAAI,CAAC,eAAe,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;SAC5C;QAED,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;YAC5B,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC5B;IAEL,CAAC;IAGD,WAAW,CAAC,KAAc;QACtB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;IACrC,CAAC;IAED,gBAAgB,CAAC,KAAc;QAC3B,IAAI,MAAM,GAAG,iCAAiC,CAAC;QAC/C,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,OAAO,IAAI,OAAO,CAAmB,UAAU,OAAO,EAAE,MAAM;YAC1D,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,KAAK,CAAC;iBAChC,IAAI,CAAC,SAAS,CAAC,EAAE;gBACd,IAAI,SAAS,EAAE;oBACX,IAAI,CAAC,qBAAqB,GAAG,SAAS,CAAC,UAAU,CAAC;oBAClD,iEAAiE;iBACpE;gBACD,OAAO,CAAC,SAAS,CAAC,CAAC;YACvB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,MAAM,CAAC,GAAG,CAAC,CAAC;YAChB,CAAC,CAAC,CAAC;QACX,CAAC,CAAC,CAAC;IACP,CAAC;IAED,mBAAmB,CAAC,KAAe;QAC/B,MAAM,MAAM,GAAG,oCAAoC,CAAC;QACpD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC3B,mDAAmD;YACnD,2BAA2B;YAC3B,IAAI,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YACpC,IAAI,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YACvC,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE;gBAC/B,OAAO,KAAK,CAAC;aAChB;iBAAM;gBACH,gCAAgC;gBAChC,4BAAU,CAAC,MAAM,EAAE,uDAAuD,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC9F,IAAI,WAAW,GAAG,IAAI,KAAK,EAAU,CAAC;gBACtC,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACjB,IAAI,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC;oBAC7C,IAAI,IAAI,EAAE;wBACN,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;qBAC1B;gBACL,CAAC,CAAC;gBACF,OAAO,WAAW,CAAC;aACtB;SACJ;aAAM;YACH,OAAO,EAAE,CAAC;SACb;IACL,CAAC;IAGD,UAAU,CAAC,SAAmB,SAAS;QACnC,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAC3C,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,OAAO,IAAI,OAAO,CAAU,UAAU,OAAO,EAAE,MAAM;YAEjD,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClB,MAAM,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC/B,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,MAAM,aAAN,MAAM,cAAN,MAAM,GAAI,KAAK,CAAC,cAAc,EAAE,CAAC,CAAC;gBAEzE,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3B,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,EAAE;wBAClG,oCAAW,EAAE,CAAC;wBAEd,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;wBACzB,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC;6BAChC,IAAI,CAAC,UAAU,KAAc;4BAC1B,mCAAmC;4BAEnC,sDAAsD;4BACtD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;4BAE3B,+BAA+B;4BAC/B,uCAAuC;4BACvC,uCAAuC;4BAEvC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,eAAe,CAAC;4BAC3C,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,cAAc,CAAC;4BAC3C,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC;4BAEzC,OAAO,CAAC,IAAI,CAAC,CAAC;wBAElB,CAAC,CAAC;6BACD,KAAK,CAAC,UAAU,CAAC;4BACd,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC,CAAC;4BACtD,uDAAuD;4BACvD,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC;4BAC/C,4BAAU,CAAC,MAAM,EAAE,8BAA8B,SAAS,cAAc,CAAC,EAAE,CAAC,CAAC;4BAC7E,MAAM,CAAC,CAAC,CAAC,CAAC;wBACd,CAAC,CAAC;6BACD,OAAO,CAAC,GAAG,EAAE;4BACV,0CAAc,EAAE,CAAC;4BACjB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;wBAC9B,CAAC,CAAC;qBACT;yBAAM;wBACH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;wBAC1B,4CAAkB,CAAC,kCAAkC,CAAC,CAAC;wBACvD,MAAM,CAAC,iBAAiB,CAAC,CAAC;qBAC7B;iBACJ;qBAAM;oBACH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;oBAC1B,4CAAkB,CAAC,UAAU,CAAC,CAAC;oBAC/B,MAAM,CAAC,iBAAiB,CAAC,CAAC;iBAC7B;aACJ;iBAAM;gBACH,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;gBAC1B,4CAAkB,CAAC,iBAAiB,CAAC,CAAC;gBACtC,MAAM,CAAC,iBAAiB,CAAC,CAAC;aAC7B;QACL,CAAC,CAAC,CAAC;IACP,CAAC;IAED,0BAA0B;IAE1B,0BAA0B;IAC1B,YAAY,CAAC,GAAU;QACnB,IAAI,IAAY,CAAC;QACjB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;SACxB;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,eAAe,CAAC,GAAU;QACtB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;SAC9B;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,cAAc,CAAC,GAAU;QACrB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC;SAC3B;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,YAAY,CAAC,GAAU;QACnB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC;SAC5E;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,WAAW,CAAC,GAAU;QAClB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC;SAC9B;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,gBAAgB,CAAC,GAAU;QACvB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,gBAAgB,CAAC,GAAU;QACvB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;SACrC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB,CAAC,GAAU;QACzB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;SACjC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,kBAAkB,CAAC,GAAU;QACzB,IAAI,IAAI,GAAG,KAAK,CAAC;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,IAAI,KAAK,EAAE;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC;SACjC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC;IAED,aAAa,CAAC,GAAU;QACpB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,aAAa,CAAC,GAAU;QACpB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,CAAC,OAAO;iBACP,SAAS,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAC;iBACxB,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACd,IAAI,OAAO,EAAE;oBACT,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC3B,GAAG,CAAC,MAAM,GAAG,IAAI,CAAC;oBAClB,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;oBAC7B,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;oBAC1B,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;iBAC9B;YACL,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAED,gBAAgB,CAAC,GAAU;QACvB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YAEpB,IAAI,CAAC,OAAO;iBACP,WAAW,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,gDAAoB,EAAE,EAAE,IAAI,CAAC,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;iBAC9E,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE;gBAClB,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;gBACxB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;gBAClB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;gBACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBAC3B,GAAG,CAAC,MAAM,GAAG,KAAK,CAAC;gBACnB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAGD,eAAe,CAAC,GAAU;QACtB,8EAA8E;QAC9E,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,wDAAwD;QACxD,IAAI,KAAK,CAAC,UAAU,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,iMAAiM,EAAE,UAAU,EAAE,MAAM,CAAC;iBACtQ,IAAI,CAAC,SAAS,CAAC,EAAE;gBACd,IAAI,SAAS,EAAE;oBACX,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;oBACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBACvB;YACL,CAAC,CAAC;SACT;aAAM;YACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACvB;IAEL,CAAC;IAED,SAAS,CAAC,GAAU;QAChB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7B,IAAI,IAAI,IAAI,KAAK,EAAE;gBACf,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;gBAChC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;gBAEhC,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE;oBACxC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;iBAC1B;gBACD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;qBACvD,IAAI,CAAC,GAAG,EAAE;oBACP,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;oBACnB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;wBAC1D,IAAI,QAAQ,EAAE;4BACV,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;yBAC5B;qBACJ;oBACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC/B,CAAC,CAAC,CAAC;aACV;SACJ;IACL,CAAC;IAGD,eAAe,CAAC,GAAU;QACtB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,wDAAwD;QACxD,IAAI,KAAK,CAAC,UAAU,EAAE;YAElB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,oBAAoB,EAAE,iMAAiM,EAAE,UAAU,EAAE,MAAM,CAAC;iBACtQ,IAAI,CAAC,SAAS,CAAC,EAAE;gBACd,IAAI,SAAS,EAAE;oBACX,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC;oBACzB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;iBACvB;YACL,CAAC,CAAC;SACT;aAAM;YACH,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;SACvB;IACL,CAAC;IAED,SAAS,CAAC,GAAU;QAChB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;YAC7B,IAAI,IAAI,IAAI,KAAK,EAAE;gBACf,IAAI,OAAO,GAAG,KAAK,CAAC,WAAW,CAAC;gBAChC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC;gBAChC,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,EAAE;oBACxC,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;iBAC1B;gBACD,IAAI,CAAC,OAAO;qBACP,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;qBAC/C,IAAI,CAAC,GAAG,EAAE;oBACP,GAAG,CAAC,OAAO,GAAG,IAAI,CAAC;oBACnB,IAAI,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;wBAC/B,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;wBAC1D,IAAI,QAAQ,EAAE;4BACV,QAAQ,CAAC,OAAO,GAAG,KAAK,CAAC;yBAC5B;qBACJ;oBACD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC/B,CAAC,CAAC;aACT;SACJ;IACL,CAAC;IAED,iBAAiB,CAAC,GAAU;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,KAAK,EAAE;YACP,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO;iBACP,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;iBAC/C,IAAI,CAAC,GAAG,EAAE;gBACP,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC,CAAC;SACT;IACL,CAAC;IAGD,iBAAiB,CAAC,GAAU;QACxB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,IAAI,IAAI,KAAK,EAAE;YACf,KAAK,CAAC,WAAW,GAAG,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO;iBACP,aAAa,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;iBAC/C,IAAI,CAAC,GAAG,EAAE;gBACP,GAAG,CAAC,OAAO,GAAG,KAAK,CAAC;gBACpB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAC/B,CAAC,CAAC;SACT;IACL,CAAC;IAED,aAAa,CAAC,GAAU,EAAE,eAAwB,KAAK,EAAE,mBAAmB,GAAG,IAAI;QAC/E,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE;gBAChD,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;qBACnB,IAAI,CAAC,GAAG,EAAE;oBACP,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;oBAE3B,IAAI,YAAY,EAAE;wBACd,MAAM,MAAM,GAAG,8BAA8B,CAAC;wBAC9C,gEAA4B,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC;6BAC5C,IAAI,CAAC,QAAQ,CAAC,EAAE;4BACb,IAAI,QAAQ,EAAE;gCACV,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,QAAQ,CAAC;gCAC5C,IAAI,mBAAmB;oCAAE,mBAAmB,EAAE,CAAC;6BAClD;wBACL,CAAC,CAAC;6BACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;4BACX,4BAAU,CAAC,MAAM,EAAE,8BAA8B,GAAG,CAAC,IAAI,CAAC,MAAM,aAAa,GAAG,CAAC,IAAI,CAAC,MAAM,SAAS,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;wBAChI,CAAC,CAAC,CAAC;qBACN;gBACL,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACT,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,sBAAsB,CAAC;oBAC1D,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;oBAC9C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC;oBAC1C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;gBAC3C,CAAC,CAAC,CAAC;aACV;iBAAM;gBACH,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,+DAA+D,EAAE,OAAO,CAAC,CAAC;aACpG;SACJ;aAAM;YACH,8BAAW,CAAC,6BAA6B,EAAE,UAAU,CAAC,CAAC;SAC1D;IACL,CAAC;IAGD,aAAa,CAAC,GAAU;QACpB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;iBACnB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;iBACvC,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,uBAAuB,CAAC;gBAC3D,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,GAAG,CAAC,OAAO,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;YAC3C,CAAC,CAAC,CAAC;SACV;IACL,CAAC;IAED,eAAe,CAAC,GAAU;QACtB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC;SAC7B;QACD,OAAO,OAAO,CAAC;IACnB,CAAC;IAED,YAAY,CAAC,GAAU;QACnB,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;SAC9C;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED,mBAAmB,CAAC,IAAY,EAAE,KAAc;QAC5C,MAAM,MAAM,GAAG,oCAAoC,CAAC;QACpD,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,IAAI,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,IAAI,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;iBAC3C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;iBAC5E,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;SAC/C;IACL,CAAC;IAED,wBAAwB;IAExB,mBAAmB,CAAC,IAAY,EAAE,KAAc;QAC5C,MAAM,MAAM,GAAG,oCAAoC,CAAC;QACpD,IAAI,KAAK,IAAI,IAAI,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC;iBAC1C,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;iBAC5E,OAAO,CAAC,GAAG,EAAE;gBACN,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;gBACxB,yBAAyB;gBACzB,4CAA4C;gBAC5C,wBAAwB;gBACxB,gCAAgC;gBAChC,2EAA2E;gBAC3E,aAAa;gBACb,YAAY;gBACZ,sBAAsB;gBACtB,iGAAiG;gBACjG,UAAU;gBACV,+BAA+B;YACnC,CAAC,CACJ,CAAC;SACT;QACD,kCAAkC;QAClC,yBAAyB;QACzB,8CAA8C;IAClD,CAAC;IAED,oBAAoB,CAAC,KAAc;QAC/B,qFAAqF;QACrF,IAAI,SAAS,GAAW,CAAC,CAAC;QAC1B,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;aACvB,IAAI,CAAC,KAAK,CAAC,EAAE;YACV,0EAA0E;YAC1E,SAAS,GAAG,IAAI,CAAC,qBAAqB,CAAC;YACvC,IAAI,SAAS,IAAI,GAAG,EAAE;gBAClB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;aACtC;YACD,IAAI,SAAS,IAAI,GAAG,IAAI,SAAS,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE;gBAC3H,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;gBAC/C,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;gBACnC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC;gBAC1C,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gBAC5B,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC;aACzC;QACL,CAAC,CAAC;IAEV,CAAC;IAED,aAAa,CAAC,GAAU;QACpB,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YAC1B,IAAI,IAAI,GAAG,KAAK,CAAC,kBAAkB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAC9C,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC;iBAC3C,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;oBAAE,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC;YAC1G,CAAC,CAAC;iBACD,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC;SAC/C;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,aAAa,CAAC,GAAU;QACpB,IAAI,KAAK,GAAG,IAAI,CAAC,WAAW,CAAC;QAC7B,IAAI,KAAK,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YAC1B,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;SAC5C;QACD,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChD,CAAC;IAED,YAAY;IACZ,aAAa,CAAC,IAAI;QACd,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,YAAY,mBAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QAC/D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;IAC/B,CAAC;IAED,gBAAgB,CAAC,IAAI;QAEjB,MAAM,IAAI,GAAI,IAAc,aAAd,IAAI,uBAAJ,IAAI,CAAY,IAAI,CAAC;QAEnC,IAAI,IAAI,EAAE;YACN,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;YAC5B,IAAI,IAAI,EAAE;gBACN,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,wBAAwB,IAAI,CAAC,IAAI,EAAE,EAAE,qDAAqD,IAAI,CAAC,IAAI,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC;qBACtJ,IAAI,CAAC,OAAO,CAAC,EAAE;oBACZ,IAAI,OAAO,EAAE;wBACT,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC;6BACvB,IAAI,CAAC,GAAG,EAAE;4BACP,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;wBACzC,CAAC,CAAC;qBACT;gBACL,CAAC,CAAC,CAAC;aACV;SACJ;IAGL,CAAC;IAED,eAAe,CAAC,IAAI;QAChB,MAAM,IAAI,GAAG,IAAI,YAAY,mBAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,MAAM,QAAQ,GAAG,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,OAAO,EAAE,CAAC;QACjC,IAAI,QAAQ,EAAE;YACV,OAAO,QAAQ,CAAC,IAAI,CAAC;SACxB;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,qBAAqB,CAAC,IAAI;QACtB,MAAM,IAAI,GAAG,IAAI,YAAY,mBAAK,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;QACtD,OAAO,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;IAC/B,CAAC;IAED,cAAc,CAAC,GAAU,EAAE,UAAe,GAAG,EAAE,CAAC,IAAI,EAAE,SAAc,GAAG,EAAE,CAAC,IAAI;QAC1E,MAAM,MAAM,GAAG,+BAA+B;QAC9C,IAAI,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE;YACjB,IAAI,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC;YACpB,IAAI,IAAI,GAAG,IAAI,oBAAM,EAAE,CAAC;YAExB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;YAC5B,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC;YACpB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;YACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAChC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,IAAI,CAAC,OAAO,GAAG,4CAAkB,CAAC;YAElC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,EAAE,KAAK,CAAC;iBAC9B,IAAI,CAAC,OAAO,CAAC,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC;qBAC1B,IAAI,CAAC,SAAS,CAAC,EAAE;oBACd,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE;oBAC1B,OAAO,EAAE,CAAC;gBACd,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,8BAAW,CAAC,+BAA+B,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC;YAC/G,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC9C,IAAI,MAAM,KAAK,GAAG,EAAE;oBAChB,4BAAU,CAAC,MAAM,EAAE,qBAAqB,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;iBACxE;qBAAM;oBACH,8BAAW,CAAC,MAAM,EAAE,aAAa,GAAG,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAE,CAAC;iBACjE;gBACD,MAAM,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;SACV;aAAM;YACH,0CAAiB,CAAC,MAAM,EAAE,eAAe,CAAC;YAC1C,MAAM,EAAE,CAAC;SACZ;IACL,CAAC;IAAA,CAAC;IAEF,eAAe;QAEX,IAAI,MAAM,GAAG,6BAA6B,CAAC;QAE3C,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,IAAI,KAAK,CAAC;QAC7C,IAAI,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAC1C,oFAAsC,EAAE;iBACnC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE;gBACd,qEAAqE;gBACrE,IAAI,OAAO,CAAC,SAAS,EAAE;oBACnB,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,OAAO,CAAC,SAAS,CAAC,cAAc,CAAC;oBAC/D,2DAA0B,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;oBAC/D,+DAA4B,GAAG,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC;oBACnE,2DAA0B,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;iBAClE;gBACD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;gBACjD,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;gBACjD,IAAI,OAAO,CAAC,aAAa,EAAE;oBACvB,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC;oBACvD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,GAAG,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC;oBAErG,IAAI,CAAC,eAAe,GAAG,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC;oBAC7D,IAAI,CAAC,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC;oBAC3D,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;oBACxE,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;oBACtE,yBAAyB;oBACzB,+BAA+B;oBAC/B,gCAAgC;oBAChC,+BAA+B;oBAC/B,iCAAiC;oBACjC,qBAAqB;iBACxB;gBACD,IAAI,CAAC,eAAe,GAAG,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBACjD,IAAI,CAAC,cAAc,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC/C,2GAA2G;gBAC3G,iHAAiH;gBACjH,qGAAqG;YACzG,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,4CAAkB,CAAC,MAAM,EAAE,gCAAgC,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjF,CAAC,CAAC,CAAC;SACV;IAEL,CAAC;IAED,IAAI,SAAS;QACT,0EAA0E;QAC1E,OAAO,wDAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAW;QACrB,mDAAmD;QACnD,sCAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAGD,IAAI,SAAS;QACT,OAAO,wDAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAU;QACpB,sCAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;CAEJ;AAED,6DAAe,IAAI,cAAc,EAAE,EAAC;;;;;;;;;;;;;;;AClvFkB;AAExB;AAGvB,MAAM,YAAY;IAAzB;QACI,8BAA8B;QAM9B,gBAAW,GAAG,KAAK,CAAC;QAUpB,mBAAc,GAAc,EAAE,CAAC;IAGnC,CAAC;IAjBG,IAAI,OAAO;QACP,OAAO,+DAAU,CAAC;IACtB,CAAC;IAID,IAAI,kBAAkB;QAClB,OAAO,6GAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,MAAe;QAClC,yEAAiB,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;IACpD,CAAC;CAKJ;AAED,iEAAe,IAAI,YAAY,EAAE,EAAC;;;;;;;;;;;;;;;AC3BH;AACuB;AAK/C,MAAM,WAAW;IAAxB;QAMI,kBAAa,GAAa,EAAE,CAAC;QAoC7B,wEAAwE;QACxE,6EAA6E;QAC7E,EAAE;QACF,6EAA6E;QAC7E,gFAAgF;QAChF,EAAE;QACF,8EAA8E;QAC9E,oFAAoF;IACxF,CAAC;IAhDG,IAAI,OAAO;QACP,OAAO,+DAAU,CAAC;IACtB,CAAC;IAID,IAAI,kBAAkB;QAClB,OAAO,6GAAmC,CAAC;IAC/C,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAY;QAC/B,yEAAiB,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,YAAY;QACZ,OAAO,iGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAW;QACxB,yEAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,+GAAoC,CAAC;IAChD,CAAC;IAED,IAAI,mBAAmB,CAAC,GAAY;QAChC,yEAAiB,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;IAClD,CAAC;IAID,eAAe,CAAC,KAAa;QACzB,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;QAChC,0FAA0F;QAC1F,OAAO,IAAI,OAAO,CAAc,CAAC,OAAO,EAAE,EAAE;YACxC,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC;QACpC,CAAC,CAAC,CAAC;IACP,CAAC;CAUJ;AAED,iEAAe,IAAI,WAAW,EAAE,EAAC;;;;;;;;;;;;;;;AC1DF;AACuB;AAI/C,MAAM,WAAW;IAAxB;QAeI,kBAAa,GAAa,EAAE,CAAC;IASjC,CAAC;IAtBG,IAAI,OAAO;QACP,OAAO,+DAAU,CAAC;IACtB,CAAC;IAGD,IAAI,YAAY;QACZ,OAAO,iGAA6B,CAAC;IACzC,CAAC;IAED,IAAI,YAAY,CAAC,GAAW;QACxB,yEAAiB,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;IAC3C,CAAC;IAID,cAAc,CAAC,QAAgB;QAC3B,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,EAAE,CAAC,CAAC;QACpC,GAAG,GAAG,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;QACjC,OAAO,GAAG,CAAC;IACf,CAAC;CAGJ;AAED,iEAAe,IAAI,WAAW,EAAE,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACxBjC,IAAY,gBAGX;AAHD,WAAY,gBAAgB;IACxB,uDAAQ;IACR,2DAAM;AACV,CAAC,EAHW,gBAAgB,KAAhB,gBAAgB,QAG3B;;;ACV8B;AACqB;AACE;AACR;AACL;AAOH;AACgE;AAE/F,MAAM,cAAc;IACvB,WAAW;IAEX,IAAI,QAAQ;QACR,OAAO,sDAAyB,CAAC;IACrC,CAAC;IAED,IAAI,QAAQ,CAAC,GAAgB;QACzB,sCAAiB,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC;IAED,IAAI,eAAe;QACf,OAAO,oEAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,8DAA2B,GAAG,GAAG,CAAC;QAClC,sCAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,cAAc;QACd,OAAO,kEAA+B,CAAC;IAC3C,CAAC;IAED,IAAI,cAAc,CAAC,GAAY;QAC3B,sCAAiB,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,oEAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAc;QAC9B,sCAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC;IACtD,CAAC;IAED,IAAI,eAAe;QACf,OAAO,oEAAgC,CAAC;IAC5C,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC5B,sCAAiB,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,SAAS;QACT,OAAO,wDAA0B,CAAC;IACtC,CAAC;IAED,IAAI,SAAS,CAAC,GAAY;QACtB,gEAA4B,GAAG,GAAG,CAAC;QACnC,sCAAiB,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;IACxC,CAAC;IAED,YAAY;QACR,IAAI,CAAC,WAAW,EAAE;aACb,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,GAAG,IAAmB,CAAC;aACjD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,8BAAW,CAAC,gCAAgC,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;IACX,CAAC;IAED,WAAW;QACP,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAE9C,OAAO,0DAAyB,EAAE;aAC7B,IAAI,CAAC,CAAC,IAA8B,EAAE,EAAE;YACrC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAkB,EAAE,EAAE;;oBACtD,MAAM,OAAO,GAAG,IAAI,0BAAS,EAAE,CAAC;oBAChC,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC;oBAClC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;oBAChC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;oBACpC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACxC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC7B,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC;oBACpC,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;oBACvC,OAAO,CAAC,QAAQ,GAAG,EAAE,CAAC;oBACtB,OAAO,CAAC,MAAM,GAAG,EAAE,CAAC;oBAEpB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;oBAC7B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;oBAC3B,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;oBACnC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;oBAC1D,OAAO,CAAC,OAAO,GAAG,UAAI,CAAC,OAAO,mCAAI,EAAE,CAAC;oBACrC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;oBAE/C,OAAO,OAAO,CAAC;gBACnB,CAAC,CAAC,CAAC;gBACH,OAAO,QAAQ,CAAC;aACnB;iBAAM,IAAI,IAAI,CAAC,SAAS,KAAK,uBAAuB,EAAE;gBACnD,4CAAoB,CAAC,8CAA8C,EAAE,OAAO,CAAC,CAAC;gBAC9E,OAAO,EAAE,CAAC;aACb;iBAAM;gBACH,OAAO,EAAE,CAAC;aACb;QACL,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACT,IAAI,wDAA0B,CAAC,GAAG,CAAC,EAAE;gBACjC,MAAM,GAAG,GAAG,gBAAgB,GAAG,EAAE,CAAC;gBAClC,IAAI,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,cAAc,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,KAAK,eAAe,CAAC,CAAC;uBACxF,GAAG,CAAC,KAAK,KAAK,eAAe,EAAE;oBAClC,4BAAU,CAAC,MAAM,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAC;iBAC/C;qBAAM;oBACH,8BAAW,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;iBAC5B;aACJ;YACD,OAAO,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACX,CAAC;IAED,aAAa,CAAC,WAA0H;QACpI,MAAM,kBAAkB,GAAG;YACvB,cAAc,EAAE,WAAW,CAAC,cAAc;YAC1C,QAAQ,EAAE,WAAW,CAAC,IAAI;YAC1B,UAAU,EAAE,WAAW,CAAC,MAAM;YAC9B,eAAe,EAAE,WAAW,CAAC,eAAe;YAC5C,kBAAkB,EAAE,WAAW,CAAC,kBAAkB;SAC5B,CAAC;QAC3B,OAAO,oEAA8B,CAAC,kBAAkB,CAAC;aACpD,IAAI,CAAC,CAAC,KAAkC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7D,CAAC;IAED,WAAW,CAAC,OAAkB;QAC1B,MAAM,KAAK,GAAG;YACV,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,QAAQ,EAAE,OAAO,CAAC,eAAe;YACjC,SAAS,EAAE,OAAO,CAAC,UAAU;YAC7B,WAAW,EAAE,OAAO,CAAC,IAAI;YACzB,QAAQ,EAAE,OAAO,CAAC,WAAW;YAC7B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,IAAI,IAAI,EAAE;YACvB,SAAS,EAAE,OAAO,CAAC,QAAQ;SACd,CAAC;QAClB,OAAO,8DAA2B,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,aAAa,CAAC,KAAa;QACvB,OAAO,8DAA2B,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IAED,YAAY,CAAC,UAAkB,EAAE,QAAgB;QAC7C,OAAO,oEAA8B,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChE,CAAC;IAED,OAAO,CAAC,UAAkB,EAAE,KAAa;QACrC,OAAO,0DAAyB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACxD,CAAC;CACJ;AAED,8DAAe,IAAI,cAAc,EAAE,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrKe;AACM;AACO;AACP;AACF;AACJ;AACE;AACO;AACH;AACC;AACD;AACE;AACF;AACJ;AACF;AACE;AACI;AACM;AACC;AACF;AACA;AACT;AACA;AACwB;AACJ;AACZ;AACN;AACQ;AACC;AACL;;AAE3D,+BAA+B,0DAA0D,UAAU,mBAAI,EAAE,2CAA2C,YAAY,cAAc,8BAA8B,iBAAiB,QAAQ,+CAA+C,KAAK,0BAA0B,kCAAkC,yBAAyB,gCAAiB,EAAE,OAAO,qHAAqH,QAAQ,0DAA0D,2CAA2C,oCAAoC,YAAY,iEAAiE,kDAAkD,KAAK,oBAAK,EAAE,0BAA0B,sBAAsB,KAAK,6BAAc,EAAE,4CAA4C,gBAAgB,QAAQ,mBAAmB,kBAAkB,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,mCAAmC,2GAA2G,SAAS,UAAU,KAAK,0BAA0B,SAAS,8BAAe,EAAE,6BAA6B,KAAK,oBAAK,8BAA8B,yCAAgB,KAAK,uCAAc,gCAAgC,wBAAwB,4DAA4D,uBAAQ,2BAA2B,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,SAAS,2GAA2G,SAAS,UAAU,KAAK,yBAAyB,SAAS,8BAAe,KAAK,oBAAK,gCAAgC,yCAAgB,KAAK,uCAAc,+BAA+B,yBAAyB,wFAAwF,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,aAAa,8FAA8F,WAAW,2DAA2D,SAAS,UAAU,KAAK,wBAAwB,SAAS,8BAAe,KAAK,oBAAK,0CAA0C,yCAAgB,KAAK,uCAAc,8BAA8B,wBAAwB,0DAA0D,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,SAAS,2DAA2D,SAAS,UAAU,KAAK,wBAAwB,SAAS,8BAAe,KAAK,oBAAK,8BAA8B,yCAAgB,KAAK,uCAAc,kCAAkC,uBAAuB,8DAA8D,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,aAAa,oEAAoE,WAAW,2DAA2D,SAAS,UAAU,KAAK,wBAAwB,SAAS,8BAAe,2BAA2B,oBAAK,qCAAqC,qBAAM,EAAE,OAAO,4BAA4B,KAAK,oBAAK,6CAA6C,yCAAgB,KAAK,uCAAc,8BAA8B,yBAAyB,0DAA0D,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,SAAS,2DAA2D,SAAS,UAAU,KAAK,wBAAwB,SAAS,8BAAe,KAAK,oBAAK,wCAAwC,yCAAgB,KAAK,uCAAc,kCAAkC,yBAAyB,8DAA8D,uBAAQ,cAAc,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,SAAS,2DAA2D,SAAS,UAAU,KAAK,0BAA0B,SAAS,8BAAe,KAAK,oBAAK,oCAAoC,yCAAgB,KAAK,uCAAc,gCAAgC,yBAAyB,mFAAmF,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,SAAS,2DAA2D,SAAS,UAAU,KAAK,iCAAiC,SAAS,8BAAe,KAAK,oBAAK,sCAAsC,yCAAgB,KAAK,uCAAc,gCAAgC,yBAAyB,2FAA2F,uBAAQ,EAAE,OAAO,0CAA0C,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,EAAE,SAAS,2DAA2D,SAAS,UAAU,KAAK,0BAA0B,KAAK,8BAAe,KAAK,oBAAK,sCAAsC,yCAAgB,KAAK,uCAAc,gCAAgC,+BAA+B,qEAAqE,sDAAsD,+CAA+C,YAAY,aAAa,+HAA+H,KAAK,0BAA0B,YAAY,aAAa,uBAAuB,aAAa,aAAa,oDAAoD,mHAAmH,4BAA4B,yBAAyB,yBAAyB,+CAA+C,KAAK,oBAAK,sGAAsG,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,2CAA2C,wBAAS,SAAS,SAAS,2DAA2D,SAAS,UAAU,KAAK,2BAA2B,SAAS,8BAAe,KAAK,oBAAK,uCAAuC,yCAAgB,KAAK,uCAAc,2CAA2C,yBAAyB,8JAA8J,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,SAAS,4DAA4D,SAAS,UAAU,KAAK,8BAA8B,SAAS,8BAAe,KAAK,oBAAK,gCAAgC,yCAAgB,KAAK,uCAAc,oCAAoC,yBAAyB,gKAAgK,uBAAQ,EAAE,OAAO,+EAA+E,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,EAAE,SAAS,4DAA4D,SAAS,UAAU,KAAK,8BAA8B,KAAK,8BAAe,KAAK,oBAAK,gCAAgC,yCAAgB,KAAK,uCAAc,oCAAoC,+BAA+B,4DAA4D,6CAA6C,sCAAsC,YAAY,aAAa,oFAAoF,KAAK,8BAA8B,YAAY,+BAA+B,+DAA+D,YAAY,sBAAsB,UAAU,kBAAkB,0BAA0B,aAAa,wCAAwC,iMAAiM,aAAa,wBAAwB,iEAAiE,mBAAI,EAAE,mCAAmC,oFAAoF,QAAQ,2BAA2B,aAAa,aAAa,+BAA+B,qDAAqD,4BAA4B,yBAAyB,yBAAyB,oCAAoC,uCAAuC,KAAK,oBAAK,4CAA4C,uBAAQ,yCAAyC,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,SAAS,2DAA2D,SAAS,UAAU,KAAK,2BAA2B,SAAS,8BAAe,KAAK,oBAAK,kCAAkC,yCAAgB,KAAK,uCAAc,iCAAiC,yBAAyB,mFAAmF,uBAAQ,EAAE,OAAO,4EAA4E,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,EAAE,SAAS,2DAA2D,SAAS,UAAU,KAAK,2BAA2B,KAAK,8BAAe,KAAK,oBAAK,kCAAkC,yCAAgB,KAAK,uCAAc,iCAAiC,gCAAgC,kEAAkE,mDAAmD,4CAA4C,YAAY,aAAa,+IAA+I,KAAK,2BAA2B,YAAY,aAAa,uBAAuB,aAAa,aAAa,yEAAyE,8JAA8J,4BAA4B,yBAAyB,yBAAyB,4CAA4C,KAAK,oBAAK,0DAA0D,uBAAQ,4BAA4B,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,2BAA2B,6BAA6B,SAAS,8BAAe,KAAK,oBAAK,sCAAsC,yCAAgB,KAAK,uCAAc,6BAA6B,yBAAyB,iEAAiE,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,wBAAS,SAAS,2BAA2B,6BAA6B,SAAS,8BAAe,KAAK,oBAAK,0CAA0C,yCAAgB,KAAK,uCAAc,6BAA6B,yBAAyB,mEAAmE,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,kBAAkB,4CAA4C,iBAAiB,KAAK,mBAAI,SAAS,oCAAoC,2EAA2E,KAAK,yBAAyB,sBAAsB,SAAS,oBAAK,oCAAoC,yBAAyB,+EAA+E,sBAAO,EAAE,QAAQ,kEAAkE,QAAQ,4CAA4C,sDAAsD,6BAAc,EAAE,IAAI,yBAAyB,yBAAyB,uDAAuD,cAAc,8BAAa,EAAE,mCAAmC,4CAA4C,aAAa,oBAAoB,uBAAuB,OAAO,GAAG,UAAU,OAAO,YAAY,iEAAiE,sBAAO,cAAc,sBAAO,yCAAyC,mBAAI,EAAE,2CAA2C,wCAAwC,KAAK,oBAAK,EAAE,mBAAmB,gFAAgF,UAAU,qCAAqC,kBAAkB,EAAE,GAAG,2BAA2B,mBAAI,EAAE,gDAAgD,6BAA6B,KAAK,oBAAK,EAAE,mBAAmB,gIAAgI,mBAAI,EAAE,kDAAkD,iCAAiC,KAAK,oBAAK,EAAE,mBAAmB,gKAAgK,mBAAI,EAAE,uBAAuB,2BAA2B,mDAAmD,mBAAmB,uBAAuB,uBAAQ,EAAE,OAAO,2BAA2B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,mBAAI,SAAS,OAAO,WAAW,SAAS,oBAAK,EAAE,OAAO,mBAAmB,+CAA+C,yBAAyB,6IAA6I,uBAAQ,EAAE,OAAO,2BAA2B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,mBAAI,SAAS,OAAO,WAAW,SAAS,oBAAK,EAAE,OAAO,mBAAmB,gCAAgC,yBAAyB,8IAA8I,oBAAK,EAAE,OAAO,0EAA0E,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,sBAAO,SAAS,OAAO,yDAAyD,yBAAyB,mBAAI,EAAE,OAAO,qBAAqB,KAAK,oBAAK,qDAAqD,oBAAK,EAAE,aAAa,uFAAuF,QAAQ,+BAA+B,qCAAqC,gCAAgC,kDAAkD,qBAAqB,4BAA4B,KAAK,oBAAK,cAAc,sBAAO,EAAE,OAAO,sDAAsD,KAAK,yBAAyB,KAAK,mBAAI,EAAE,OAAO,qBAAqB,SAAS,oBAAK,KAAK,yBAAU,EAAE,aAAa,uBAAuB,sCAAsC,uBAAQ,KAAK,wBAAS,KAAK,8BAAe,KAAK,mBAAI,EAAE,OAAO,8DAA8D,KAAK,yBAAyB,2BAA2B,iGAAiG,wBAAS,KAAK,8BAAe,KAAK,mBAAI,EAAE,OAAO,2DAA2D,KAAK,yBAAyB,2BAA2B,yCAAyC,wBAAS,KAAK,8BAAe,KAAK,mBAAI,EAAE,OAAO,8CAA8C,KAAK,4BAA4B,2CAA2C,wBAAS,KAAK,8BAAe,KAAK,mBAAI,EAAE,OAAO,8CAA8C,KAAK,sBAAsB,qEAAqE,oBAAK,EAAE,aAAa,6BAA6B,QAAQ,UAAU,YAAY,aAAa,4DAA4D,KAAK,8BAAe,EAAE,OAAO,uDAAuD,oCAAoC,gCAAgC,8DAA8D,YAAY,4CAA4C,oEAAoE,KAAK,gCAAgC,KAAK,mBAAI,KAAK,oBAAK,EAAE,OAAO,YAAY,yDAAyD,8CAA8C,yCAAyC,YAAY,qCAAqC,gCAAgC,4JAA4J,wCAAwC,iJAAiJ,aAAa,yCAAyC,QAAQ,yCAAyC,qDAAqD,mBAAI,EAAE,uCAAuC,gBAAgB,KAAK,iCAAiC,oDAAoD,mBAAI,EAAE,0BAA0B,iBAAiB,KAAK,gCAAgC,KAAK,oBAAK,EAAE,OAAO,YAAY,6DAA6D,+BAA+B,YAAY,gCAAgC,0CAA0C,4JAA4J,wCAAwC,iJAAiJ,aAAa,yCAAyC,QAAQ,yCAAyC,qDAAqD,mBAAI,EAAE,oCAAoC,iCAAiC,8DAA8D,aAAa,4BAA4B,qCAAqC,mEAAmE,mBAAmB,wBAAS,EAAE,OAAO,6BAA6B,QAAQ,4DAA4D,6CAA6C,sCAAsC,YAAY,0EAA0E,YAAY,qCAAqC,0DAA0D,mBAAI,EAAE,OAAO,UAAU,KAAK,yBAAyB,qCAAqC,wEAAwE,IAAI,2BAA2B,2DAA2D,OAAO,8CAA8C,KAAK,mCAAmC,yDAAyD,OAAO,2CAA2C,KAAK,iCAAiC,+DAA+D,OAAO,iDAAiD,KAAK,uCAAuC,yDAAyD,OAAO,2CAA2C,KAAK,iCAAiC,yDAAyD,OAAO,2CAA2C,KAAK,iCAAiC,6DAA6D,OAAO,iDAAiD,KAAK,qCAAqC,+DAA+D,OAAO,gDAAgD,KAAK,+BAA+B,+DAA+D,OAAO,2CAA2C,KAAK,+BAA+B,6DAA6D,OAAO,mJAAmJ,KAAK,6BAA6B,iEAAiE,OAAO,iDAAiD,KAAK,iCAAiC,6DAA6D,OAAO,qIAAqI,KAAK,6BAA6B,iEAAiE,OAAO,kGAAkG,KAAK,iCAAiC,6FAA6F,OAAO,0FAA0F,KAAK,6BAA6B,8KAA8K,aAAa,oHAAoH,SAAS,qIAAqI,KAAK,0FAA0F,KAAK,sBAAO,EAAE,OAAO,kBAAkB,QAAQ,6DAA6D,gCAAgC,uCAAuC,KAAK,oBAAK,KAAK,mCAAU,EAAE,gCAAgC,4CAA4C,kCAAS,qKAAqK,uBAAQ,KAAK,qCAAY,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,UAAU,KAAK,yBAAyB,sCAAsC,yBAAyB,mBAAI,EAAE,OAAO,2BAA2B,KAAK,iCAAiC,2CAA2C,sBAAO,EAAE,OAAO,kBAAkB,QAAQ,qDAAqD,wBAAwB,+BAA+B,KAAK,oBAAK,KAAK,mCAAU,EAAE,gCAAgC,KAAK,oBAAK,EAAE,mBAAmB,wHAAwH,kCAAS,EAAE,wBAAwB,2LAA2L,mBAAI,EAAE,0BAA0B,eAAe,KAAK,4BAA4B,KAAK,oBAAK,EAAE,mBAAmB,uKAAuK,mBAAI,EAAE,0BAA0B,eAAe,KAAK,2BAA2B,KAAK,oBAAK,EAAE,mBAAmB,sUAAsU,uBAAQ,KAAK,qCAAY,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,UAAU,KAAK,yBAAyB,8BAA8B,qCAAqC,sBAAO,EAAE,OAAO,kBAAkB,QAAQ,yEAAyE,0DAA0D,mDAAmD,KAAK,oBAAK,KAAK,mCAAU,EAAE,gCAAgC,4CAA4C,kCAAS,EAAE,wBAAwB,kKAAkK,uBAAQ,KAAK,qCAAY,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,UAAU,KAAK,yBAAyB,kDAAkD,6BAA6B,mBAAI,EAAE,OAAO,4BAA4B,KAAK,yBAAyB,2CAA2C,iDAAiD,MAAK,EAAE,CAA8W;AACltzB;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjCmD;AACE;AACO;AACH;AACU;AACT;AACD;AACE;AACP;AACG;AACI;AACK;;AAEhE,IAAI,iDAAM,qBAAqB,0DAA0D,UAAU,mBAAI,EAAE,OAAO,oBAAoB,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,2BAA2B,wGAAwG,4CAA4C,QAAQ,+DAA+D,gDAAgD,yCAAyC,KAAK,oBAAK,EAAE,aAAa,+BAA+B,QAAQ,gBAAgB,KAAK,gCAAQ,EAAE,OAAO,6CAA6C,KAAK,8BAAa,+BAA+B,sBAAO,SAAS,kCAAS,EAAE,wDAAwD,kEAAkE,KAAK,yBAAU,EAAE,0BAA0B,6BAA6B,KAAK,mBAAI,EAAE,0BAA0B,qDAAqD,KAAK,2BAAY,EAAE,OAAO,6IAA6I,QAAQ,2CAA2C,cAAc,qBAAqB,iBAAiB,uBAAQ,KAAK,qCAAY,EAAE,oBAAoB,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,mBAAmB,KAAK,sBAAsB;AAC1/C;AACA,IAAI,0DAAe;;;;;;;ACbyC;AACN;AAC0B;AAC1C;AACY;AAInC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,eAAG;IAA/B;;QAIb,eAAe;QAEf,YAAO,GAAG,WAAW,CAAC;QA+EtB,YAAY;IAGd,CAAC;IAhFC,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,6BAAY,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,KAAK,CAAC,GAAW;QACnB,iCAAiC;QACjC,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;QACnB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IAChE,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAGD,kBAAkB;IAGlB,qBAAqB;IAGrB,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,WAAW,CAAC,KAAa;QACvB,IAAI,gEAA4B,CAAC,KAAK,CAAC,EAAE;YACvC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;SACnB;aAAM;YACL,8BAAW,CAAC,2BAA2B,EAAE,sBAAsB,KAAK,EAAE,CAAC,CAAC;SACzE;IACH,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,KAAK,CAAC,SAAkB;QACtB,IAAI,SAAS,EAAE;YACb,sDAAsD;YACtD,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACzC,CAAC;IAGD,mBAAmB;IAGnB,mBAAmB;IAEnB,OAAO;QACL,iEAAiE;QACjE,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;SAC/B;IACH,CAAC;CAKF;AAvFC;IAAC,oBAAI,CAAC,MAAM,CAAC;;gDAAwC;AADlC,aAAa;IADjC,qBAAS;GACW,aAAa,CAwFjC;4EAxFoB,aAAa;;;ACV2S,CAAC,oFAAe,qCAAG,EAAC;;;;ACArQ;AAC3B;AACL;;;AAG5D;AACA,CAAuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,6CAAM;AACR,EAAE,iDAAM;AACR,EAAE,0DAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,4DAAe;;;;;;;;AClBoC;AACE;AACO;AACH;AACL;AACM;AACD;AACE;AACP;AACG;AACE;AACM;AACJ;AACK;;AAEhE,IAAI,iDAAM,qBAAqB,0DAA0D,UAAU,mBAAI,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,2BAA2B,wGAAwG,4CAA4C,QAAQ,+DAA+D,gDAAgD,yCAAyC,KAAK,oBAAK,EAAE,aAAa,+BAA+B,QAAQ,gBAAgB,KAAK,gCAAQ,EAAE,OAAO,6CAA6C,KAAK,8BAAa,+BAA+B,sBAAO,SAAS,kCAAS,EAAE,wDAAwD,iEAAiE,KAAK,yBAAU,EAAE,aAAa,iBAAiB,KAAK,mBAAI,EAAE,OAAO,iCAAiC,KAAK,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,qDAAqD,KAAK,mBAAI,EAAE,wBAAwB,YAAY,aAAa,wBAAwB,0CAA0C,aAAa,qBAAqB,4DAA4D,sBAAO,EAAE,OAAO,qDAAqD,wBAAwB,+BAA+B,SAAS,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,qDAAqD,KAAK,mBAAI,EAAE,wBAAwB,YAAY,aAAa,wBAAwB,8CAA8C,aAAa,qBAAqB,mEAAmE,yBAAU,EAAE,sCAAsC,oBAAoB,QAAQ,qMAAqM,QAAQ,mDAAmD,sBAAsB,6BAA6B,qBAAqB,uBAAQ,KAAK,qCAAY,EAAE,oBAAoB,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,mBAAmB,KAAK,sBAAsB,0BAA0B,mBAAI,EAAE,OAAO,0DAA0D,KAAK,0BAA0B;AACv9E;AACA,IAAI,0DAAe;;;;;;;;;ACfyC;AACN;AAC0B;AACxC;AACU;AACE;AAIrC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,eAAG;IAA/B;;QA+Db,mBAAmB;QAGnB,kBAAkB;QAElB,iBAAY,GAAG,CAAC,CAAC;QACjB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,oBAAe,GAAG,CAAC,CAAC;QACpB,gBAAW,GAAG,KAAK,CAAC;QACpB,gBAAW,GAAG,CAAC,CAAC;QAkJhB,YAAY;IAGd,CAAC;IAxNC,gBAAgB;IAEhB,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,6BAAY,CAAC;IACtB,CAAC;IAGD,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IAChE,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAGD,kBAAkB;IAGlB,qBAAqB;IAGrB,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,YAAY;QACV,IAAI,SAAS,GAAW,IAAI,CAAC,WAAW,CAAC;QACzC,yCAAyC;QACzC,iEAAiE;QACjE,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAGD,QAAQ;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,KAAK,CAAC,SAAkB;QACtB,IAAI,SAAS,IAAI,SAAS,KAAK,CAAC,EAAE;YAChC,0DAA0D;YAC1D,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;SACtC;QACD,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACzC,CAAC;IAaD,4BAA4B;IAC5B,wBAAwB;IACxB,+BAA+B;IAE/B,IAAI,SAAS;QACX,2CAA2C;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,OAAO,GAAG,kEAA6B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClF,iEAAiE;QACjE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,aAAa;QACf,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;QAC/D,IAAI,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,YAAY,GAAG,4DAA0B,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAChF,IAAI,QAAQ,GAAG,SAAS,IAAI,CAAC,WAAW,IAAI,aAAa,IAAI,YAAY,CAAC,CAAC;QAC3E,oLAAoL;QACpL,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,IAAI,KAAK;QACP,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAEhB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBACjD,0DAA0D;oBAC1D,OAAO,IAAI,CAAC;iBACb;qBAAM;oBACL,0DAA0D;oBAC1D,OAAO,KAAK,CAAC;iBACd;YACH,CAAC;YACD,UAAU,EAAE,KAAK,CAAC,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE;oBACnD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,0DAA0D;oBAC1D,OAAO,IAAI,CAAC;iBACb;qBAAM;oBACL,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;oBAC/B,0DAA0D;oBAC1D,OAAO,kBAAkB;iBAC1B;YACH,CAAC;SACF;IACH,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC9B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,kDAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,6EAA6E;IAC/E,CAAC;IAED,IAAI,aAAa;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,kDAAqB,CAAC;QACnF,mJAAmJ;QACnJ,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa,CAAC,GAAW;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE;gBAC1B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;aAC5B;iBAAM;gBACL,IAAI,GAAG,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;iBAC1B;gBACD,IAAI,GAAG,GAAG,GAAG,EAAE;oBACb,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;oBACvB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;iBAC5B;aACF;SACF;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;SACvB;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,iGAAiG;IACnG,CAAC;IAED,2BAA2B;IAC3B,wBAAwB;IACxB,qBAAqB;IACrB,IAAI;IAEJ,4CAA4C;IAC5C,6BAA6B;IAC7B,6BAA6B;IAC7B,6BAA6B;IAC7B,MAAM;IACN,gFAAgF;IAChF,qBAAqB;IACrB,IAAI;IAEJ,2BAA2B;IAC3B,8CAA8C;IAC9C,8CAA8C;IAC9C,+EAA+E;IAC/E,IAAI;IAEJ,2BAA2B;IAC3B,yBAAyB;IACzB,iCAAiC;IACjC,iCAAiC;IACjC,oDAAoD;IACpD,kDAAkD;IAClD,kDAAkD;IAClD,QAAQ;IACR,aAAa;IACb,kCAAkC;IAClC,kDAAkD;IAClD,kDAAkD;IAClD,kDAAkD;IAClD,QAAQ;IACR,MAAM;IACN,oEAAoE;IACpE,IAAI;IAGJ,0BAA0B;IAG1B,mBAAmB;IAEnB,OAAO;QACL,iEAAiE;QACjE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,IAAI,CAAC,CAAC;QAEvC,+CAA+C;QAC/C,uCAAuC;QACvC,IAAI;IACN,CAAC;CAKF;AA1NC;IAAC,oBAAI,CAAC,MAAM,CAAC;;gDAAwC;AAHlC,aAAa;IADjC,qBAAS;GACW,aAAa,CA6NjC;4EA7NoB,aAAa;;;ACX2S,CAAC,oFAAe,qCAAG,EAAC;;ACArQ;AAC3B;AACL;;;AAG5D;AACA,CAAuI;AACvI,IAAI,uBAAS,GAAG,sCAAU;AAC1B,EAAE,6CAAM;AACR,EAAE,iDAAM;AACR,EAAE,0DAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,4DAAe,uBAAS;;;;;;;;;;;;;;AClBiC;AACA;AACN;AACE;AACO;AACH;AACL;AACM;AACD;AACE;AACN;AACF;AACE;AACI;AACO;AACF;AACD;AACC;AACT;AACD;AACK;AACF;AACC;AACE;AACK;AACE;AACN;AACK;;AAEhE,IAAI,4DAAM,qBAAqB,0DAA0D,UAAU,mBAAI,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,2BAA2B,wGAAwG,4CAA4C,QAAQ,8DAA8D,+CAA+C,wCAAwC,KAAK,oBAAK,EAAE,aAAa,+BAA+B,QAAQ,gBAAgB,KAAK,gCAAQ,EAAE,OAAO,6CAA6C,KAAK,8BAAa,kCAAkC,sBAAO,SAAS,kCAAS,EAAE,wDAAwD,kEAAkE,KAAK,yBAAU,EAAE,UAAU,yCAAyC,gBAAgB,6BAA6B,QAAQ,4CAA4C,eAAe,sBAAsB,KAAK,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,yBAAU,EAAE,0BAA0B,kBAAkB,KAAK,mBAAI,EAAE,OAAO,kBAAkB,KAAK,mBAAI,KAAK,mBAAI,EAAE,mBAAmB,KAAK,mBAAI,EAAE,0CAA0C,0CAA0C,KAAK,yBAAyB,KAAK,oBAAK,EAAE,OAAO,WAAW,oEAAoE,mBAAI,EAAE,0BAA0B,kBAAkB,KAAK,mBAAI,EAAE,qCAAqC,4FAA4F,KAAK,wBAAwB,KAAK,oBAAK,EAAE,OAAO,WAAW,6FAA6F,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,yBAAU,EAAE,0BAA0B,kBAAkB,KAAK,sBAAO,EAAE,oCAAoC,qFAAqF,kDAAkD,mBAAI,EAAE,OAAO,iCAAiC,KAAK,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,oBAAK,EAAE,2BAA2B,sIAAsI,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,gEAAgE,QAAQ,kDAAkD,qBAAqB,4BAA4B,QAAQ,UAAU,+CAA+C,kBAAkB,yBAAyB,qBAAqB,0BAAW,EAAE,OAAO,qDAAqD,KAAK,gCAAgC,oDAAoD,QAAQ,+CAA+C,kBAAkB,yBAAyB,kBAAkB,oBAAK,EAAE,4BAA4B,sIAAsI,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,iEAAiE,QAAQ,mDAAmD,sBAAsB,6BAA6B,QAAQ,UAAU,gDAAgD,mBAAmB,0BAA0B,sBAAsB,0BAAW,EAAE,OAAO,qDAAqD,KAAK,gCAAgC,sDAAsD,QAAQ,gDAAgD,mBAAmB,0BAA0B,sBAAsB,mBAAI,EAAE,0BAA0B,uDAAuD,KAAK,yBAAU,EAAE,aAAa,mBAAmB,QAAQ,0DAA0D,KAAK,yBAAyB,+BAA+B,QAAQ,kDAAkD,qBAAqB,4BAA4B,gCAAgC,sBAAO,EAAE,OAAO,2CAA2C,QAAQ,kDAAkD,qBAAqB,4BAA4B,qBAAqB,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,oBAAK,EAAE,aAAa,gBAAgB,QAAQ,WAAW,KAAK,6BAAc,EAAE,OAAO,kBAAkB,QAAQ,6CAA6C,gBAAgB,uBAAuB,qDAAqD,UAAU,wBAAS,EAAE,kCAAkC,yBAAyB,8BAA8B,KAAK,4BAAa,KAAK,sBAAO,EAAE,OAAO,aAAa,KAAK,mBAAI,EAAE,OAAO,mBAAmB,aAAa,yCAAgB,KAAK,uCAAc,EAAE,kCAAkC,iCAAiC,UAAU,wBAAwB,uBAAQ,KAAK,qCAAY,EAAE,oBAAoB,sBAAsB,mBAAI,EAAE,OAAO,mBAAmB,KAAK,yBAAyB,iCAAiC,sBAAO,KAAK,mBAAI,EAAE,OAAO,mBAAmB,KAAK,sBAAsB,0BAA0B,mBAAI,EAAE,OAAO,yEAAyE,KAAK,sBAAsB;AAChgL;AACA,IAAI,qEAAe;;;;;;;AC7BS;AACgC;AACN;AAC0B;AACxC;AACY;AACF;AAGnC,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,eAAG;IAA9B;QAEb,eAAe;;QAMf,WAAM,GAAG,CAAC,CAAC;QACX,YAAO,GAAG,CAAC,CAAC,CAAC;QACb,iBAAY,GAAG,wDAAwB,CAAC;QACxC,kBAAa,GAAG,0DAAyB,CAAC;QAC1C,mBAAc,GAAG,4DAA0B,CAAC;QAC5C,iBAAY,GAAW,IAAI,CAAC;QAC5B,cAAS,GAAG,KAAK,CAAC;QAClB,eAAU,GAAG,KAAK,CAAC;QACnB,SAAI,GAAG,EAAE,CAAC;QAgTV,YAAY;IAEd,CAAC;IAhTC,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,6BAAY,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,KAAa,CAAC;QAClB,QAAQ,IAAI,CAAC,MAAM,EAAE;YACjB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,KAAK,GAAG,eAAe,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,mBAAmB,CAAC;gBAC5B,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,oBAAoB,CAAC;gBAC7B,MAAM;YACN,eAAe;SAClB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IAChE,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,cAAc,CAAC;IACnD,CAAC;IAED,IAAI,OAAO;QACT,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,gBAAgB;QAChB,QAAQ,IAAI,CAAC,MAAM,EAAE;YACnB,KAAK,CAAC;gBACJ,OAAO,GAAG,IAAI,CAAC;gBACf,MAAM;YACR,KAAK,CAAC;gBACJ,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;gBAC9B,MAAM;SACT;QACD,eAAe;QACf,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,YAAY;QACd,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7C,4CAA4C;QAC5C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,aAAa;QAEf,IAAI,QAAgB,CAAC;QACrB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;YAC5C,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC3C;aAAM;YACL,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;SAC3D;QACD,kFAAkF;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS;QACX,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,yCAAyC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,CAAC,GAAG;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU,CAAC,GAAW;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAED,IAAI,SAAS;QACX,IAAI,KAAK,GAAW,EAAE,CAAC;QACvB,QAAQ,IAAI,CAAC,YAAY,EAAE;YACvB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,EAAE;gBACL,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR;gBACE,MAAM;YACN,eAAe;SAClB;QACD,OAAO,KAAK;IACd,CAAC;IAGD,IAAI,cAAc;QAEhB,MAAM,UAAU,GAAG,gBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC;QAC/D,MAAM,WAAW,GAAG,gBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,CAAC;QAElE,+DAA+D;QAC/D,IAAI,KAAK,GAAG,UAAU,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QACvC,MAAM,SAAS,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;QACnE,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QAElE,IAAI,gBAAgB,GAAG,SAAS,GAAG,WAAW,CAAC;QAC/C,IAAI,iBAAiB,GAAG,UAAU,GAAG,UAAU,CAAC;QAChD,IAAI,CAAC,gBAAgB,IAAI,CAAC,iBAAiB,EAAE;YAC3C,OAAO,gDAAgD,CAAC;SACzD;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,YAAY,CAAC,GAAW;QAC9B,IAAI,UAAU,GAAG,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,gBAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5C,OAAO,IAAI;IACb,CAAC;IAEO,YAAY,CAAC,EAAiB;QACpC,IAAI,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAEO,YAAY;QAClB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;YAC5C,YAAY,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa;SACxD;aAAM;YACL,YAAY,GAAG,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;SACrE;QACD,OAAO,YAAY,CAAC;IACtB,CAAC;IAED,kBAAkB;IAGlB,mBAAmB;IAEnB,YAAY,CAAC,CAAC;QACZ,OAAO,CAAC,GAAG,CAAC,CAAC;IACf,CAAC;IAED,cAAc,CAAC,CAAC;QACd,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,CAAC;IAED,WAAW,CAAC,CAAC;QACX,OAAO,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;IACtB,CAAC;IAGD,WAAW;IAGX,gBAAgB;IAGhB,WAAW;QACT,0CAA0C;QAC1C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,UAAU;QACR,0CAA0C;QAC1C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,WAAW;QACT,6BAA6B;QAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,uCAAuC;QACvC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACxC,CAAC;IAED,mBAAmB;IAGnB,yBAAyB;IAGzB,UAAU,CAAC,IAAY;QACrB,wEAAwE;QACxE,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC9C,IAAI,CAAC,QAAQ,EAAE,CAAC;IAClB,CAAC;IAGD,QAAQ;QACN,MAAM,MAAM,GAAG,uBAAuB;QACtC,sIAAsI;QACtI,+GAA+G;QAE/G,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YACzB,sFAAsF;YACtF,8BAA8B;SAC/B;aAAM;YACL,IAAI,GAAG,IAAI,oBAAM,EAAE,CAAC;YACpB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC5C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;YAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;YACpC,IAAI,CAAC,MAAM,GAAG,gDAAoB,EAAE,CAAC;YACrC,oEAAoE;SACrE;QAED,gIAAgI;QAGhI,+HAA+H;QAE/H,wDAAwB,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7C,0DAAyB,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/C,4DAA0B,GAAG,IAAI,CAAC,cAAc,CAAC;QAEjD,0FAA0F;QAE1F,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACxC,CAAC;IAGD,wBAAwB;IAGxB,mBAAmB;IAEnB,OAAO;QAEL,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,CAAC,wDAAwB,CAAC;QAC5F,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC,CAAC,CAAC,0DAAyB,CAAC;QACjG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC,CAAC,CAAC,4DAA0B,CAAC;QACrG,+HAA+H;QAC/H,gFAAgF;QAChF,kGAAkG;QAClG,2GAA2G;QAC3G,+GAA+G;IACjH,CAAC;CAIF;AA9TC;IAAC,oBAAI,CAAC,MAAM,CAAC;;kDAA2C;AACxD;IAAC,oBAAI,CAAC,MAAM,CAAC;;mDAA4C;AACzD;IAAC,oBAAI,CAAC,MAAM,CAAC;;oDAA6C;AANvC,YAAY;IADhC,qBAAS;GACW,YAAY,CAkUhC;2EAlUoB,YAAY;;;ACX2S,CAAC,mFAAe,oCAAG,EAAC;;ACAhW;;;;;AEAuG;AACvC;AACL;AAC3D,CAAqG;;;AAGrG;AACuI;AACvI,IAAI,sBAAS,GAAG,sCAAU;AAC1B,EAAE,4CAAM;AACR,EAAE,4DAAM;AACR,EAAE,qEAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,2DAAe,sBAAS;;;;ACnB2B;AACE;AACO;AACH;AACC;AACD;AACE;AACP;AACG;AACI;AACK;;AAEhE,IAAI,kDAAM,qBAAqB,0DAA0D,UAAU,mBAAI,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,2BAA2B,wGAAwG,4CAA4C,QAAQ,gEAAgE,iDAAiD,0CAA0C,KAAK,oBAAK,EAAE,aAAa,+BAA+B,QAAQ,gBAAgB,KAAK,gCAAQ,EAAE,OAAO,6CAA6C,KAAK,8BAAa,uDAAuD,sBAAO,SAAS,kCAAS,EAAE,wDAAwD,8CAA8C,KAAK,yBAAU,EAAE,OAAO,6BAA6B,KAAK,mBAAI,EAAE,0BAA0B,qDAAqD,KAAK,mBAAI,EAAE,gCAAgC,eAAe,QAAQ,qCAAqC,KAAK,mBAAI,EAAE,iEAAiE,wBAAwB,KAAK,yBAAyB,yBAAyB,iDAAiD,sCAAsC,mBAAI,EAAE,gCAAgC,eAAe,QAAQ,qCAAqC,KAAK,mBAAI,EAAE,gEAAgE,wBAAwB,KAAK,yBAAyB,yBAAyB,gDAAgD,4CAA4C,mBAAI,EAAE,gCAAgC,eAAe,QAAQ,qCAAqC,KAAK,mBAAI,EAAE,iEAAiE,wBAAwB,KAAK,yBAAyB,yBAAyB,iDAAiD,sCAAsC,mBAAI,EAAE,gCAAgC,eAAe,QAAQ,qCAAqC,KAAK,mBAAI,EAAE,kEAAkE,wBAAwB,KAAK,yBAAyB,yBAAyB,kDAAkD,mDAAmD,uBAAQ,KAAK,qCAAY,EAAE,4BAA4B,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,mBAAmB,KAAK,sBAAsB;AACnjF;AACA,IAAI,2DAAe;;;;;ACZyC;AACN;AAC0B;AAClB;AAI/C,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,eAAG;IAS7C,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,6BAAY,CAAC;IACtB,CAAC;IAGD,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,+DAA2B,CAAC,kDAA0B,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,WAAW;QACb,OAAO,+DAA2B,CAAC,gDAAyB,CAAC,CAAC;IAChE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,+DAA2B,CAAC,kDAA0B,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,aAAa;QACf,OAAO,+DAA2B,CAAC,oDAA2B,CAAC,CAAC;IAClE,CAAC;IAGD,kBAAkB;IAGlB,qBAAqB;IAGrB,YAAY;QACV,IAAI,CAAC,MAAM,GAAG,kDAA0B,CAAC;QACzC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,WAAW;QACT,IAAI,CAAC,MAAM,GAAG,gDAAyB,CAAC;QACxC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,MAAM,GAAG,kDAA0B,CAAC;QACzC,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,MAAM,GAAG,oDAA2B,CAAC;QAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAGD,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,YAAY;QACV,iEAAiE;QACjE,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,QAAQ;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,KAAK;QACH,qCAAqC;QACrC,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAC1C,CAAC;IAGD,mBAAmB;IAGnB,mBAAmB;IAEnB,OAAO;QACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;IAChC,CAAC;CAKF;AAzGC;IAAC,oBAAI,CAAC,MAAM,CAAC;;gDAA2B;AACxC;IAAC,oBAAI,CAAC,MAAM,CAAC;;kDAA6B;AAFvB,cAAc;IADlC,qBAAS;GACW,cAAc,CA0GlC;6EA1GoB,cAAc;;;ACT2S,CAAC,qFAAe,sCAAG,EAAC;;ACArQ;AAC3B;AACL;;;AAG7D;AACA,CAAuI;AACvI,IAAI,wBAAS,GAAG,sCAAU;AAC1B,EAAE,8CAAM;AACR,EAAE,kDAAM;AACR,EAAE,2DAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,6DAAe,wBAAS;;AClBiC;AACN;AACE;AACO;AACH;AACC;AACN;AACM;AACD;AACE;AACN;AACF;AACE;AACI;AACO;AACF;AACD;AACC;AACV;AACG;AACC;AACE;;AAE1D,IAAI,kDAAM,qBAAqB,0DAA0D,UAAU,mBAAI,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,2BAA2B,wGAAwG,4CAA4C,QAAQ,gEAAgE,iDAAiD,0CAA0C,KAAK,oBAAK,KAAK,mCAAU,EAAE,+BAA+B,mCAAmC,sBAAO,KAAK,mBAAI,EAAE,aAAa,0EAA0E,SAAS,UAAU,KAAK,yBAAyB,KAAK,oBAAK,kCAAkC,kCAAS,EAAE,2CAA2C,KAAK,yBAAU,EAAE,OAAO,6BAA6B,QAAQ,4CAA4C,eAAe,sBAAsB,KAAK,uBAAQ,EAAE,QAAQ,gCAAgC,oBAAK,KAAK,wBAAS,EAAE,IAAI,0BAA0B,wCAAwC,sBAAO,KAAK,oBAAK,iCAAiC,wBAAS,EAAE,IAAI,0BAA0B,uCAAuC,sBAAO,KAAK,oBAAK,8BAA8B,wBAAS,EAAE,IAAI,wBAAwB,4CAA4C,sBAAO,KAAK,oBAAK,wEAAwE,yBAAU,EAAE,gCAAgC,+BAA+B,QAAQ,kBAAkB,KAAK,mBAAI,EAAE,OAAO,kBAAkB,KAAK,mBAAI,KAAK,mBAAI,EAAE,0BAA0B,kBAAkB,KAAK,mBAAI,EAAE,qCAAqC,0CAA0C,KAAK,0BAA0B,KAAK,oBAAK,EAAE,OAAO,WAAW,wEAAwE,mBAAI,EAAE,0BAA0B,kBAAkB,KAAK,mBAAI,EAAE,qCAAqC,0CAA0C,KAAK,0BAA0B,KAAK,oBAAK,EAAE,OAAO,WAAW,oEAAoE,mBAAI,EAAE,mBAAmB,KAAK,mBAAI,EAAE,0CAA0C,0CAA0C,KAAK,wBAAwB,KAAK,oBAAK,EAAE,OAAO,WAAW,mGAAmG,uBAAQ,EAAE,QAAQ,gCAAgC,oBAAK,KAAK,wBAAS,EAAE,qCAAqC,2BAA2B,KAAK,2BAA2B,mCAAmC,wBAAS,EAAE,oCAAoC,2BAA2B,KAAK,0BAA0B,kCAAkC,wBAAS,EAAE,qCAAqC,2BAA2B,KAAK,2BAA2B,4EAA4E,yBAAU,EAAE,0BAA0B,kBAAkB,KAAK,mBAAI,EAAE,0BAA0B,qDAAqD,KAAK,mBAAI,EAAE,gCAAgC,eAAe,QAAQ,qCAAqC,KAAK,mBAAI,EAAE,kEAAkE,wBAAwB,KAAK,yBAAyB,yBAAyB,kDAAkD,uCAAuC,mBAAI,EAAE,gCAAgC,eAAe,QAAQ,qCAAqC,KAAK,mBAAI,EAAE,iEAAiE,wBAAwB,KAAK,yBAAyB,yBAAyB,iDAAiD,sCAAsC,mBAAI,EAAE,gCAAgC,eAAe,QAAQ,qCAAqC,KAAK,mBAAI,EAAE,kEAAkE,wBAAwB,KAAK,yBAAyB,yBAAyB,kDAAkD,4DAA4D,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,oBAAK,EAAE,OAAO,WAAW,KAAK,6BAAc,EAAE,OAAO,kBAAkB,QAAQ,+CAA+C,kBAAkB,yBAAyB,+CAA+C,UAAU,wBAAS,EAAE,kCAAkC,yBAAyB,kCAAkC,KAAK,4BAAa,KAAK,sBAAO,EAAE,OAAO,aAAa,KAAK,mBAAI,EAAE,OAAO,uBAAuB,aAAa,yCAAgB,KAAK,uCAAc,EAAE,kCAAkC,gDAAgD,UAAU,wBAAwB,uBAAQ,KAAK,qCAAY,wBAAwB,mBAAI,EAAE,OAAO,mBAAmB,KAAK,yBAAyB,iCAAiC,sBAAO,KAAK,mBAAI,EAAE,OAAO,mBAAmB,KAAK,sBAAsB,0BAA0B,mBAAI,EAAE,OAAO,oDAAoD,KAAK,sBAAsB;AACtoK;AACA,IAAI,2DAAe;;;;;;;;ACvBgD;AACb;AAC0B;AAEJ;AACtC;AACc;AAIrC,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,eAAG;IAAhC;;QAIb,eAAe;QACf,WAAM,GAAG,CAAC,CAAC;QACX,cAAS,GAAG,CAAC,CAAC,CAAC;QAEf,mBAAc,GAAG,CAAC,CAAC;QACnB,iBAAY,GAAG,EAAE,CAAC;QAClB,eAAU,GAAG,CAAC,CAAC;QACf,aAAQ,GAAG,EAAE,CAAC;QA0Md,YAAY;QACZ,kBAAa,GAAa,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QACpD,gBAAW,GAAG,MAAM,CAAC;IAmBvB,CAAC;IA5NC,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,6BAAY,CAAC;IACtB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IAChE,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAI,OAAO;QACT,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,IAAI,kDAA0B,CAAC,CAAC;QACxL,mLAAmL;QACnL,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,+DAA2B,CAAC,oDAA2B,CAAC,CAAC;IAClE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,+DAA2B,CAAC,kDAA0B,CAAC,CAAC;IACjE,CAAC;IAED,IAAI,aAAa;QACf,OAAO,+DAA2B,CAAC,oDAA2B,CAAC,CAAC;IAClE,CAAC;IAED,kBAAkB;IAGlB,qBAAqB;IAErB,WAAW;QACT,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAGD,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,YAAY;QACV,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAGD,YAAY;QACV,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAChD,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IAGD,aAAa;QACX,IAAI,CAAC,UAAU,GAAG,oDAA2B,CAAC;IAChD,CAAC;IAED,YAAY;QACV,IAAI,CAAC,UAAU,GAAG,kDAA0B,CAAC;IAC/C,CAAC;IAED,aAAa;QACX,IAAI,CAAC,UAAU,GAAG,oDAA2B,CAAC;IAChD,CAAC;IAGD,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,kGAAkG;QAClG,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9B,eAAe;IACjB,CAAC;IAED,QAAQ;QACN,MAAM,MAAM,GAAG,yBAAyB,CAAC;QAEzC,yGAAyG;QAEzG,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QACrC,IAAI,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC7B,IAAI,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QACjC,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAG3C,kDAAkD;QAClD,IAAI,cAAc,GAAG,QAAQ,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACtD,IAAI,SAAS,GAAG,UAAU,IAAI,kDAA0B,CAAC;QACzD,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACxC,IAAI,YAAY,GAAG,cAAc,IAAI,SAAS,IAAI,SAAS,CAAC;QAC5D,IAAI,YAAY,EAAE;YAEhB,UAAU,GAAG,oDAA2B,CAAC;YAEzC,MAAM,UAAU,GAAG,IAAI,4BAAY,EAAE,CAAC;YACtC,UAAU,CAAC,OAAO,GAAG,OAAO,CAAC;YAC7B,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;YACnC,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAC/B,UAAU,CAAC,UAAU,GAAG,UAAU,CAAC;YAEnC,sEAA+B,CAAC,UAAU,CAAC;iBACtC,IAAI,CAAC,GAAG,EAAE;gBAET,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;gBACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC;gBACnC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;gBAEb,oDAAoD;gBACpD,iCAAiC;gBACjC,+DAA+D;YACjE,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC;gBACrD,IAAI,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;gBAClC,IAAI,MAAM,GAAG,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;gBAC9C,IAAI,MAAM,IAAI,GAAG,EAAE;oBACjB,4BAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;iBAC7B;qBAAM;oBACL,8BAAW,CAAC,MAAM,EAAE,eAAe,UAAU,QAAQ,OAAO,EAAE,CAAC,CAAC;iBACjE;gBACD,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAC9C,CAAC,CAAC,CAAC;SACR;aAAM;YACL,IAAI,CAAC,SAAS,CAAC,UAAU,GAAG,UAAU,CAAC;YACvC,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YACxC,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YAC3C,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IAEH,CAAC;IAGD,eAAe;IACf,uGAAuG;IACvG,iDAAiD;IACjD,6CAA6C;IAC7C,gDAAgD;IAChD,kBAAkB;IAClB,IAAI;IAGJ,QAAQ;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAC1C,CAAC;IAGD,mBAAmB;IAGnB,mBAAmB;IAEnB,OAAO;QACL,wCAAwC;QAExC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC5C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QACxC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAE5C,IAAI,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,QAAQ,EAAE;YACnC,IAAI,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;YACvC,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACnC,IAAI,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC;YACtD,IAAI,MAAM,EAAE;gBACV,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;gBACvC,IAAI,KAAK,IAAI,CAAC,EAAE;oBACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;oBACvB,kEAAkE;iBACnE;qBAAM;oBACL,4CAAkB,CAAC,2CAA2C,CAAC,CAAC;iBACjE;aACF;iBAAM;gBACL,4CAAkB,CAAC,+CAA+C,CAAC,CAAC;aACrE;SACF;IAEH,CAAC;IAOD,mBAAmB,CAAC,GAAG;QACrB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,KAAK,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,KAAK,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtG,IAAI,CAAC,aAAa,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;QAC9B,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,WAAW,KAAK,KAAK,EAAE;YAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;YAClD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;SAC3B;aAAM;YACL,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,IAAY,EAAE,IAAY,EAAU,EAAE,CAAC,CAAC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpL,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B;IACH,CAAC;CAEF;AAzOC;IAAC,oBAAI,CAAC,uBAAO,CAAC;wEAAqB,uBAAO,oBAAP,uBAAO;iDAAa;AAwNvD;IAAC,qBAAK,CAAC,iBAAiB,CAAC;;;;yDAKxB;AA9NkB,cAAc;IADlC,qBAAS;GACW,cAAc,CA0OlC;6EA1OoB,cAAc;;;ACZ2S,CAAC,qFAAe,sCAAG,EAAC;;ACArQ;AAC3B;AACL;;;AAG7D;AACA,CAAuI;AACvI,IAAI,wBAAS,GAAG,sCAAU;AAC1B,EAAE,8CAAM;AACR,EAAE,kDAAM;AACR,EAAE,2DAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,6DAAe,wBAAS;;;;;;;;;;;;;;AClB2B;AACE;AACO;AACH;AACC;AACN;AACe;AACT;AACD;AACJ;AACA;AACF;AACS;AACK;AACb;AACG;AACE;AACL;AACI;AACH;AACK;AACK;AACF;AACF;;AAE3D,IAAI,8CAAM,qBAAqB,0DAA0D,UAAU,mBAAI,EAAE,OAAO,oBAAoB,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,4BAA4B,wGAAwG,2CAA2C,kBAAkB,iGAAiG,2CAA2C,EAAE,QAAQ,4DAA4D,6CAA6C,sCAAsC,KAAK,oBAAK,EAAE,0BAA0B,KAAK,mCAAU,EAAE,+BAA+B,oBAAoB,mBAAI,EAAE,aAAa,mBAAmB,QAAQ,2DAA2D,cAAc,uBAAQ,EAAE,OAAO,YAAY,sBAAsB,8BAA8B,WAAW,EAAE,iCAAiC,yBAAyB,wDAAwD,GAAG,kDAAkD,kCAAS,EAAE,2CAA2C,KAAK,yBAAU,EAAE,OAAO,6BAA6B,QAAQ,4CAA4C,eAAe,sBAAsB,KAAK,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,yBAAU,EAAE,wBAAwB,KAAK,mBAAI,EAAE,OAAO,qCAAqC,KAAK,mBAAI,EAAE,mBAAmB,KAAK,oBAAK,EAAE,kBAAkB,qBAAqB,QAAQ,2CAA2C,cAAc,qBAAqB,KAAK,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,yBAAU,EAAE,OAAO,+EAA+E,QAAQ,8CAA8C,iBAAiB,wBAAwB,SAAS,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,yBAAU,EAAE,OAAO,iFAAiF,QAAQ,6CAA6C,gBAAgB,uBAAuB,SAAS,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,yBAAU,EAAE,OAAO,sDAAsD,QAAQ,+CAA+C,kBAAkB,yBAAyB,SAAS,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,yBAAU,EAAE,OAAO,sDAAsD,QAAQ,+CAA+C,kBAAkB,yBAAyB,SAAS,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,wBAAS,EAAE,OAAO,+LAA+L,QAAQ,8CAA8C,iBAAiB,wBAAwB,qBAAqB,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,0BAA0B,YAAY,iDAAiD,qBAAqB,6BAA6B,mBAAI,KAAK,mBAAI,EAAE,OAAO,iBAAiB,2CAA2C,oBAAK,+CAA+C,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,0BAA0B,YAAY,wBAAwB,kCAAkC,mBAAI,KAAK,mBAAI,EAAE,OAAO,iBAAiB,KAAK,oBAAK,EAAE,OAAO,uBAAuB,oCAAoC,oBAAK,6EAA6E,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,2BAA2B,YAAY,wBAAwB,2BAA2B,mBAAI,KAAK,mBAAI,EAAE,OAAO,iBAAiB,KAAK,mBAAI,EAAE,OAAO,wDAAwD,2DAA2D,oBAAK,wGAAwG,mBAAI,EAAE,0BAA0B,kBAAkB,UAAU,+CAA+C,wCAAwC,4BAA4B,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,yBAAU,EAAE,OAAO,kJAAkJ,QAAQ,uDAAuD,0BAA0B,iCAAiC,SAAS,mBAAI,EAAE,0BAA0B,kBAAkB,UAAU,0CAA0C,oBAAoB,iEAAiE,mBAAI,EAAE,gCAAgC,sCAAsC,uBAAuB,OAAO,yEAAyE,KAAK,2BAA2B,kCAAkC,uBAAuB,OAAO,2EAA2E,KAAK,2BAA2B,mCAAmC,uBAAuB,OAAO,mFAAmF,KAAK,2BAA2B,uCAAuC,6CAA6C,mBAAI,EAAE,gCAAgC,sCAAsC,qHAAqH,OAAO,kCAAkC,+DAA+D,OAAO,mCAAmC,6DAA6D,OAAO,uCAAuC,4CAA4C,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,yBAAU,EAAE,aAAa,iBAAiB,KAAK,mBAAI,EAAE,0BAA0B,qDAAqD,KAAK,2BAAY,EAAE,OAAO,6IAA6I,QAAQ,2CAA2C,cAAc,qBAAqB,iBAAiB,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,yBAAU,EAAE,aAAa,iBAAiB,KAAK,mBAAI,EAAE,OAAO,iCAAiC,KAAK,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,qDAAqD,KAAK,mBAAI,EAAE,wBAAwB,YAAY,aAAa,wBAAwB,0CAA0C,aAAa,qBAAqB,4DAA4D,sBAAO,EAAE,OAAO,qDAAqD,wBAAwB,+BAA+B,SAAS,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,qDAAqD,KAAK,mBAAI,EAAE,wBAAwB,YAAY,aAAa,wBAAwB,8CAA8C,aAAa,qBAAqB,mEAAmE,yBAAU,EAAE,sCAAsC,oBAAoB,QAAQ,qMAAqM,QAAQ,mDAAmD,sBAAsB,6BAA6B,qBAAqB,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,yBAAU,EAAE,aAAa,iBAAiB,KAAK,mBAAI,EAAE,0BAA0B,qDAAqD,KAAK,mBAAI,EAAE,0BAA0B,MAAM,aAAa,aAAa,yCAAyC,0KAA0K,oBAAK,EAAE,OAAO,UAAU,QAAQ,+CAA+C,kBAAkB,yBAAyB,KAAK,mBAAI,EAAE,YAAY,yBAAyB,+BAA+B,0BAA0B,mBAAI,EAAE,YAAY,yBAAyB,+BAA+B,4BAA4B,mBAAI,EAAE,YAAY,yBAAyB,+BAA+B,kCAAkC,yBAAU,EAAE,OAAO,+CAA+C,kBAAkB,yBAAyB,KAAK,uBAAQ,EAAE,QAAQ,KAAK,0BAAW,EAAE,UAAU,yBAAyB,8CAA8C,QAAQ,gDAAgD,mBAAmB,0BAA0B,KAAK,qBAAM,EAAE,aAAa,qCAAqC,WAAW,yBAAyB,8BAA8B,KAAK,qBAAM,EAAE,aAAa,wBAAwB,WAAW,yBAAyB,8BAA8B,aAAa,uBAAQ,EAAE,QAAQ,KAAK,0BAAW,EAAE,UAAU,yBAAyB,8CAA8C,QAAQ,gDAAgD,mBAAmB,0BAA0B,KAAK,qBAAM,EAAE,cAAc,wCAAwC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,sCAAsC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,iDAAiD,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,2CAA2C,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,uCAAuC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,wCAAwC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,yCAAyC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,sCAAsC,WAAW,yBAAyB,+BAA+B,aAAa,uBAAQ,EAAE,QAAQ,KAAK,0BAAW,EAAE,UAAU,yBAAyB,8CAA8C,QAAQ,gDAAgD,mBAAmB,0BAA0B,KAAK,qBAAM,EAAE,cAAc,0CAA0C,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,2CAA2C,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,uCAAuC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,yCAAyC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,sCAAsC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,qCAAqC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,2CAA2C,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,yCAAyC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,iCAAiC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,yCAAyC,WAAW,yBAAyB,+BAA+B,KAAK,qBAAM,EAAE,cAAc,uCAAuC,WAAW,yBAAyB,+BAA+B,qCAAqC,qCAAY,uBAAuB,mBAAI,EAAE,OAAO,mBAAmB,KAAK,yBAAyB,iCAAiC,sBAAO,sBAAsB,mBAAI,EAAE,OAAO,mBAAmB,KAAK,yBAAyB,qBAAqB,oDAAoD,mBAAI,EAAE,OAAO,6DAA6D,KAAK,sBAAsB,oDAAoD,mBAAI,EAAE,OAAO,mEAAmE,KAAK,+BAA+B;AACh4Z;AACA,IAAI,uDAAe;;;;;;;;;;AC1ByC;AACN;AACd;AACF;AAE0C;AAC5B;AACF;AACqB;AAKxD,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,eAAG;IAA5B;QAGb,eAAe;;QAIf,WAAM,GAAG,CAAC,CAAC;QACX,cAAS,GAAG,CAAC,CAAC;QACd,UAAK,GAAY,KAAK,CAAC;QACvB,iBAAY,GAAG,EAAE,CAAC;QAClB,oBAAe,GAAG,EAAE,CAAC;QACrB,kBAAa,GAAG,EAAE,CAAC;QACnB,kBAAa,GAAG,EAAE,CAAC;QACnB,kBAAa,GAAG,CAAC,CAAC;QAClB,kBAAa,GAAG,EAAE,CAAC;QACnB,iBAAY,GAAG,EAAE,CAAC;QAClB,eAAU,GAAG,CAAC,CAAC;QAEf,aAAQ,GAAG,EAAE,CAAC;QACd,gBAAW,GAAG,EAAE,CAAC;QACjB,cAAS,GAAG,EAAE,CAAC;QACf,cAAS,GAAG,EAAE,CAAC;QACf,qBAAqB;QACrB,eAAU,GAAG,CAAC,CAAC;QACf,cAAS,GAAG,EAAE,CAAC;QACf,gBAAW,GAAG,EAAE,CAAC;QACjB,aAAQ,GAAG,EAAE,CAAC;QACd,YAAO,GAAG,EAAE,CAAC;QAEb,0BAAqB,GAAG,EAAE,CAAC;QAC3B,sBAAiB,GAAG,EAAE,CAAC;QAEvB,8BAAyB,GAA4B,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;QAClH,0BAAqB,GAA4B,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;QA4X9G,YAAY;QAGZ,uBAAuB;QAEvB,iBAAY,GAAG,CAAC,CAAC;QACjB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,oBAAe,GAAG,CAAC,CAAC;QACpB,gBAAW,GAAG,KAAK,CAAC;QACpB,gBAAW,GAAG,CAAC,CAAC;QAChB,gBAAW,GAAG,KAAK,CAAC;QACpB,qBAAgB,GAAG,CAAC,CAAC;QACb,qBAAgB,GAAG,CAAC,CAAC;QAkJ7B,0BAA0B;IAE5B,CAAC;IA1hBC,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,OAAO,CAAC,GAAW;QACrB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;IACzB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,6BAAY,CAAC;IACtB,CAAC;IAAA,CAAC;IAEF,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;IAC9B,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,KAAK,CAAC,GAAW;QACnB,iCAAiC;QACjC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC;QACrB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC;IAChE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,MAAE,IAAI,SAAS,CAAC,IAAI,gCAAgC;YACrE,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,gCAAgC;YAC9D,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,yCAAyC;YACjE,CAAC,CAAC,EAAE,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,4CAA4C;SAC9E,CAAC;QACF,+FAA+F;IACjG,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,qDAAqD,CAAC;IAC1G,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,kCAAkC,CAAC,CAAC;SACtE;IACH,CAAC;IAED,IAAI,sBAAsB;QACxB,IAAI,IAAI,CAAC,iBAAiB,EAAE;YAC1B,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,iCAAiC,CAAC,CAAC;SACpE;IACH,CAAC;IAED,YAAY,CAAC,IAAY;QACvB,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,EAAE;gBACpC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;oBACpD,IAAI,GAAG,KAAK,MAAM,EAAE;wBAClB,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG,IAAI,CAAC;qBACxC;yBAAM;wBACL,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;qBACzC;gBACH,CAAC,CAAC,CAAC;aACJ;SACF;aAAM;YACL,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC;YACrE,IAAI,WAAW,GAAG,KAAK,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;gBACpD,IAAI,GAAG,KAAK,MAAM,EAAE;oBAClB,IAAI,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,EAAE;wBACnC,WAAW,GAAG,IAAI,CAAC;qBACpB;iBACF;YACH,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,qBAAqB,CAAC,IAAI,GAAG,CAAC,WAAW,CAAC;SAChD;IACH,CAAC;IAED,UAAU;QACR,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,qCAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,qCAAc,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACtF,IAAI,GAAG,EAAE;YACP,IAAI,GAAG,GAAG,2DAA2B,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;aACpB;iBAAM;gBACL,GAAG,CAAC,YAAY,EAAE;qBACb,IAAI,CAAC,OAAO,CAAC,EAAE;oBACd,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;oBACvB,4DAA4D;gBAC9D,CAAC,CAAC;aACP;SACF;IACH,CAAC;IAED,UAAU;QACR,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,aAAa,CAAC,GAAG;QACf,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC;IACxB,CAAC;IAGD,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAC3B,CAAC;IAGD,IAAI,KAAK;QACP,IAAI,KAAK,GAAG,YAAY,CAAC;QACzB,QAAQ,IAAI,CAAC,MAAM,EAAE;YACjB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,KAAK,GAAG,cAAc,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;gBAChE,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,YAAY,CAAC;gBACrB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,iBAAiB,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,aAAa,CAAC;gBACtB,MAAM;YACN,eAAe;SAClB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,IAAI,OAAO;QACT,IAAI,YAAY,GAAG,8DAA2B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjF,IAAI,WAAW,GAAG,8DAA2B,CAAC,IAAI,CAAC,eAAe,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACtF,IAAI,aAAa,GAAG,8DAA2B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,aAAa,GAAG,8DAA2B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,aAAa,GAAG,4DAA0B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACrF,IAAI,aAAa,GAAG,8DAA2B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACpF,IAAI,YAAY,GAAG,8DAA2B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjF,IAAI,cAAc,GAAG,4DAA0B,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC;QACjF,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,YAAY,IAAI,WAAW,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,aAAa,IAAI,YAAY,IAAI,cAAc,CAAC;QAC9K,IAAI,sBAAsB,GAAG,KAAK,CAAC;QACnC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,MAAM,qBAAqB,GAAG,8DAA2B,CAAC,IAAI,CAAC,qBAAqB,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;YAC9G,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC;YAClJ,sBAAsB,GAAG,qBAAqB,IAAI,QAAQ,CAAC;SAC5D;QACD,OAAO,OAAO,IAAI,sBAAsB,CAAC;IAC3C,CAAC;IAGD,IAAI,YAAY;QACd,OAAO,8DAA2B,CAAC,IAAI,CAAC,aAAa,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;IACzE,CAAC;IAGD,YAAY;IAGZ,oBAAoB;IAEpB,YAAY;QACV,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;YACvB,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACpB;aAAM,IAAI,IAAI,CAAC,UAAU,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,GAAG,CAAC,EAAE;YACtD,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACpB;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;SACpB;IACH,CAAC;IAED,cAAc,CAAC,GAAG;QAChB,QAAQ,GAAG,EAAE;YACX,KAAK,CAAC;gBACJ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,CAAC,CAAC;YACP;gBACE,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;SACT;IACH,CAAC;IAED,WAAW;QACT,6BAA6B;QAC7B,QAAQ,IAAI,CAAC,MAAM,EAAE;YACjB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,MAAM;YACR,KAAK,CAAC;gBACJ,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBACpC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACzC,MAAM;YAER,KAAK,CAAC;gBACJ,MAAM;YACR;gBACE,MAAM;YACN,eAAe;SAClB;QACD,iEAAiE;QACjE,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC9C,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/B;QACD,wDAAwD;QACxD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAGD,uBAAuB;IAGvB,iBAAiB;IAGjB,QAAQ,CAAC,KAAY;QACnB,2BAA2B;QAE3B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,qCAAqC;QACrC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,WAAW,EAAE;YACf,2EAA2E;YAE3E,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;YACrC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YAC3C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACzC,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;YACnC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;YAEvC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;gBACpC,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,EAAE;oBACnC,IAAI,CAAC,iBAAiB,GAAG,EAAE,CAAC;iBAC7B;gBACD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE,CAAC;gBACnE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAChF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;gBAChF,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,qBAAqB,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;aACnF;YAED,IAAI,CAAC,OAAO;iBACP,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC;iBAC3B,IAAI,CAAC,GAAG,EAAE;gBACT,0DAA0D;gBAC1D,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;gBAC3B,KAAK,CAAC,eAAe,EAAE,CAAC;gBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,oEAAoE;gBACpE,WAAW;gBACX,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,OAAO,GAAG,IAAI,CAAC,eAAe,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC;gBACzC,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;gBAC7C,IAAI,CAAC,QAAQ,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;gBACvC,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;gBAEvC,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;oBACpC,IAAI,IAAI,CAAC,qBAAqB;wBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,GAAG,IAAI,CAAC,qBAAqB,CAAC;oBAChG,IAAI,IAAI,CAAC,yBAAyB,CAAC,KAAK;wBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,GAAG,IAAI,CAAC;oBAC/E,IAAI,IAAI,CAAC,yBAAyB,CAAC,OAAO;wBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;oBAC/E,IAAI,IAAI,CAAC,yBAAyB,CAAC,SAAS;wBAAE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC;iBAClF;YACH,CAAC,CAAC;SACP;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iEAAiE,EAAE,OAAO,CAAC,CAAC;SACpG;IACH,CAAC;IAED,WAAW;QACT,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAW,CAAC;QACrC,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK,CAAC,QAAkB;QACtB,IAAI,CAAC,KAAK,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,kBAAkB;QAChB,IAAI,IAAI,CAAC,OAAO,CAAC,mBAAmB,EAAE;YACpC,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;YACtE,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;YAElE,IAAI,CAAC,yBAAyB,GAAI,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAC,CAAC;YAC/F,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,EAAE;gBACjC,IAAI,CAAC,yBAAyB,CAAC,KAAK,GAAG,IAAI,CAAC;gBAC5C,IAAI,CAAC,yBAAyB,CAAC,IAAI,GAAG,KAAK,CAAC;aAC7C;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC/B,IAAI,CAAC,yBAAyB,CAAC,OAAO,GAAG,IAAI,CAAC;gBAC9C,IAAI,CAAC,yBAAyB,CAAC,IAAI,GAAG,KAAK,CAAC;aAC7C;YACD,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC/B,IAAI,CAAC,yBAAyB,CAAC,SAAS,GAAG,IAAI,CAAC;gBAChD,IAAI,CAAC,yBAAyB,CAAC,IAAI,GAAG,KAAK,CAAC;aAC7C;YACD,IAAI,CAAC,qBAAqB,qBAAO,IAAI,CAAC,yBAAyB,CAAC,CAAC;SAClE;IACH,CAAC;IAED,YAAY;IAGZ,mBAAmB;IAGnB,OAAO;QACL,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,iCAAY,CAAC;YACX,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,8DAA8D;IAChE,CAAC;IAED,UAAU;QACR,iEAAiE;QACjE,4DAA4D;QAC5D,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEvC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QACzC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;QAEvC,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAE1B,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,YAAY,EAAE;QAEnB,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAgBD,IAAI,SAAS;QACX,2CAA2C;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,OAAO,GAAG,kEAA6B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClF,iEAAiE;QACjE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,aAAa;QACf,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,KAAK,CAAC,CAAC;QAC/D,IAAI,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC;QACxD,IAAI,YAAY,GAAG,4DAA0B,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACvF,IAAI,QAAQ,GAAG,SAAS,IAAI,CAAC,WAAW,IAAI,aAAa,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC;QAC7F,oLAAoL;QACpL,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAC/B,sDAAsD;IACxD,CAAC;IAED,IAAI,KAAK;QACP,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAEhB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBACjD,0DAA0D;oBAC1D,OAAO,IAAI,CAAC;iBACb;qBAAM;oBACL,0DAA0D;oBAC1D,OAAO,KAAK,CAAC;iBACd;YACH,CAAC;YACD,UAAU,EAAE,KAAK,CAAC,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE;oBACnD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,0DAA0D;oBAC1D,OAAO,IAAI,CAAC;iBACb;qBAAM;oBACL,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;oBAC/B,0DAA0D;oBAC1D,OAAO,kBAAkB;iBAC1B;YACH,CAAC;SACF;IACH,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC9B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,yEAAyE;IAC3E,CAAC;IAED,IAAI,aAAa;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;QACnF,mJAAmJ;QACnJ,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa,CAAC,GAAW;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE;gBAC1B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;aAC5B;iBAAM;gBACL,IAAI,GAAG,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;iBAC1B;gBACD,IAAI,GAAG,GAAG,GAAG,EAAE;oBACb,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;oBACvB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;iBAC5B;aACF;SACF;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;SACvB;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,2EAA2E;IAC7E,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAEO,iBAAiB,CAAC,KAAY;QACpC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;SACvB;QACD,4EAA4E;QAC5E,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;QACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,uEAAuE;IACzE,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,aAAa,EAAE;gBACtB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;aAC1C;iBAAM;gBACL,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,kDAAqB,CAAC;gBACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;gBACpC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;aAC1C;SACF;QACD,kEAAkE;IACpE,CAAC;IAEO,eAAe;QACrB,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE;YAC1C,IAAI,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,IAAI,EAAE;gBACR,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE;aAC5C;iBAAM;gBACL,IAAI,CAAC,gBAAgB,GAAG,kDAAqB,CAAC;aAC/C;SACF;aAAM;YACL,IAAI,CAAC,gBAAgB,GAAG,kDAAqB,CAAC;SAC/C;QACD,uDAAuD;IACzD,CAAC;CAIF;AAzjBC;IAAC,oBAAI,CAAC,oBAAM,CAAC;yGAAoB,oBAAM,oBAAN,oBAAM;4CAAC;AALrB,UAAU;IAH9B,yBAAS,CAAC;QACP,UAAU,EAAE,EAAC,cAAc,iCAAC;KAC/B,CAAC;GACmB,UAAU,CA8jB9B;yEA9jBoB,UAAU;;;ACd2S,CAAC,iFAAe,kCAAG,EAAC;;ACA9V;;;;;AEAyF;AAC3B;AACL;AACzD,CAAwF;;;AAGxF;AACuI;AACvI,IAAI,oBAAS,GAAG,sCAAU;AAC1B,EAAE,0CAAM;AACR,EAAE,8CAAM;AACR,EAAE,uDAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAe,oBAAS;;ACnB2B;AACE;AACO;AACH;AACC;AACD;AACJ;AACF;AACC;AACG;AACQ;AACJ;;AAE3D,IAAI,6DAAM,qBAAqB,0DAA0D,UAAU,mBAAI,EAAE,OAAO,oBAAoB,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,4BAA4B,wGAAwG,2CAA2C,kBAAkB,iGAAiG,2CAA2C,EAAE,QAAQ,+DAA+D,gDAAgD,yCAAyC,KAAK,oBAAK,EAAE,gCAAgC,+BAA+B,QAAQ,gBAAgB,KAAK,mCAAU,EAAE,4CAA4C,mKAAmK,gBAAgB,mBAAI,EAAE,aAAa,mBAAmB,QAAQ,wFAAwF,cAAc,uBAAQ,EAAE,OAAO,YAAY,sBAAsB,8BAA8B,WAAW,EAAE,iCAAiC,yBAAyB,yEAAyE,GAAG,8EAA8E,kCAAS,EAAE,wDAAwD,uFAAuF,KAAK,mBAAI,EAAE,+BAA+B,qCAAqC,KAAK,yBAAU,EAAE,OAAO,+EAA+E,QAAQ,8CAA8C,iBAAiB,wBAAwB,SAAS,mBAAI,EAAE,gCAAgC,+BAA+B,QAAQ,4DAA4D,YAAY,wBAAwB,yCAAyC,uDAAuD,6DAA6D,mBAAI,EAAE,gCAAgC,+BAA+B,QAAQ,4DAA4D,YAAY,wBAAwB,mCAAmC,uDAAuD,kDAAkD,mBAAI,EAAE,gCAAgC,+BAA+B,QAAQ,4DAA4D,YAAY,wBAAwB,yCAAyC,uDAAuD,KAAK,oBAAK,EAAE,OAAO,4BAA4B,8MAA8M,mBAAI,EAAE,+BAA+B,4DAA4D,YAAY,wBAAwB,gCAAgC,uDAAuD,+EAA+E,mBAAI,EAAE,+BAA+B,kCAAkC,UAAU,wBAAwB,sCAAsC,mBAAI,EAAE,gCAAgC,qCAAqC,QAAQ,iBAAiB,yGAAyG,OAAO,kCAAkC,2DAA2D,OAAO,kHAAkH,KAAK,2BAA2B,gDAAgD,yDAAyD,OAAO,6FAA6F,KAAK,2BAA2B,kDAAkD,yDAAyD,OAAO,iGAAiG,KAAK,2BAA2B,oDAAoD,sDAAsD,qEAAqE,qEAAqE,aAAa,sEAAsE,KAAK,yBAAyB,6BAA6B,KAAK,oBAAK,EAAE,aAAa,mBAAmB,UAAU,mDAAmD,EAAE,gHAAgH,aAAa,qEAAqE,KAAK,yBAAyB,iCAAiC,KAAK,oBAAK,EAAE,aAAa,mBAAmB,UAAU,mDAAmD,EAAE,mGAAmG,OAAO,oDAAoD,UAAU,aAAa,mBAAmB,UAAU,mDAAmD,EAAE,sIAAsI,aAAa,sBAAsB,QAAQ,4BAA4B,YAAY,aAAa,wCAAwC,UAAU,yKAAyK,SAAS,0BAA0B,yCAAyC,aAAa,oHAAoH,QAAQ,2BAA2B,KAAK,yBAAyB,kCAAkC,KAAK,oBAAK,EAAE,OAAO,iBAAiB,kGAAkG,gCAAgC,mDAAmD,UAAU,uEAAuE,MAAM,yBAAyB,gCAAgC,wGAAwG,aAAa,sDAAsD,KAAK,mBAAI,EAAE,SAAS,6EAA6E,SAAS,qCAAqC,KAAK,yBAAyB,2BAA2B,oFAAoF,mBAAI,EAAE,SAAS,6EAA6E,SAAS,qCAAqC,KAAK,yBAAyB,gCAAgC,+DAA+D,mBAAI,EAAE,+BAA+B,qCAAqC,KAAK,yBAAU,EAAE,OAAO,gGAAgG,QAAQ,8CAA8C,iBAAiB,wBAAwB,uCAAuC,qCAAY,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,mBAAmB,KAAK,yBAAyB,4BAA4B,kCAAkC,mBAAI,EAAE,SAAS,uDAAuD,SAAS,2CAA2C,KAAK,yBAAyB,wBAAwB;AACj/P;AACA,IAAI,sEAAe;;;;;;;;;;;;;;;;;;;ACd2C;AACN;AACqB;AAC7B;AACuB;AACnB;AACZ;AACQ;AACoB;AACyB;AACrC;AAC1B;AACU;AACZ;AAEW;AACK;AAK7B,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,eAAG;IAA/B;;QAGb,UAAK,GAAY,KAAK,CAAC;QACvB,iBAAY,GAAG,EAAE,CAAC;QAClB,iBAAY,GAAG,EAAE,CAAC;QAElB,aAAQ,GAAG,EAAE,CAAC;QACd,aAAQ,GAAG,EAAE,CAAC;QAEd,cAAS,GAAG,KAAK,CAAC;QAClB,gBAAW,GAAW,IAAI,CAAC,YAAY,EAAE,CAAC;QAC1C,mBAAc,GAAG,KAAK,CAAC;QACvB,SAAI,GAAc,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC;QACrD,eAAU,GAAc,IAAI,0BAAS,EAAE,CAAC;QACxC,cAAS,GAAG,KAAK,CAAC;QAClB,qBAAgB,GAAG,KAAK,CAAC;QACzB,2BAAsB,GAAG,KAAK,CAAC;QAC/B,qBAAgB,GAAG,6CAAgB,CAAC;QAGpC,iBAAY,GAAG,KAAK,CAAC;QACrB,sBAAiB,GAAG,CAAC,CAAC;QACtB,sBAAiB,GAAG,CAAC,CAAC;IA6UxB,CAAC;IA3UC,IAAI,IAAI;QACN,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YACjC,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAChF,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC;aAC/B;iBAAM;gBACL,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzE,OAAO,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI,CAAC;aACrB;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,IAAI;;QACN,OAAO,gBAAI,CAAC,IAAI,0CAAE,IAAI,mCAAI,EAAE,CAAC;IAC/B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,wBAAU;IACnB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,6BAAO,CAAC;IACjB,CAAC;IAAA,CAAC;IAEF,IAAI,OAAO;QACT,IAAI,YAAY,GAAG,8DAA2B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjF,IAAI,YAAY,GAAG,8DAA2B,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACjF,OAAO,YAAY,IAAI,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC;IAC3D,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,qDAAqD,CAAC;IAC1G,CAAC;IAED,IAAI,iBAAiB;QACnB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,IAAI,IAAI,kCAAkC,CAAC,CAAC;SACtE;IACH,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,aAAa,KAAK,yDAAsB,EAAE;YACjD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;SACzD;QACD,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtD,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,KAAK,yDAAsB,CAAC;IACvD,CAAC;IAED,mBAAmB;;QACjB,OAAO,WAAI,CAAC,UAAU,CAAC,SAAS,EAAE,0CAAE,MAAM,IAAG,CAAC,IAAI,IAAI,CAAC,iBAAiB,GAAG,WAAI,CAAC,UAAU,CAAC,SAAS,EAAE,0CAAE,MAAM,IAAG,CAAC,CAAC;IACrH,CAAC;IAGD,aAAa;QACX,IAAI,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,EAAE;YACnE,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC3B,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC7B,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC,EAAE,GAAG,CAAC,CAAC;SACT;IACH,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;YAC9B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC3B,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC7B,CAAC,EAAE,GAAG,CAAC,CAAC;YACV,CAAC,EAAE,GAAG,CAAC,CAAC;SACT;IACH,CAAC;IAED,YAAY;QACV,OAAO,8CAAmB,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,8BAA8B;QAC5B,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,KAAK,iEAA0B,EAAE;YAClE,OAAO,OAAO,CAAC;SAChB;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,sBAAsB;QACpB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,KAAK,iEAA0B,EAAE;YAClE,OAAO,MAAM,CAAC;SACf;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,2BAA2B;QACzB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,eAAe,EAAE,kCAAkC,EAAE,eAAe,EAAE,QAAQ,CAAC;aAC3G,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;YAClB,IAAI,SAAS,EAAE;gBACb,MAAM,YAAY,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC5C,IAAI,YAAY,EAAE;oBAChB,YAAY,CAAC,GAAG,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;oBACzB,IAAI,IAAI,CAAC,aAAa,KAAK,yDAAsB,EAAE;wBACjD,IAAI,IAAI,CAAC,iBAAiB,GAAG,CAAC,EAAE;4BAC9B,IAAI,CAAC,iBAAiB,EAAE,CAAC;yBAC1B;qBACF;oBACD,IAAI,CAAC,YAAY,EAAE,CAAC;iBACrB;aACF;QACH,CAAC,CAAC,CAAC;IACP,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,cAAc,EAAE,4DAA4D,EAAE,KAAK,EAAE,IAAI,CAAC;iBACtH,IAAI,CAAC,CAAC,SAAS,EAAE,EAAE;gBAClB,IAAI,SAAS;oBAAE,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,CAAC,CAAC,CAAC;SACN;aAAM;YACL,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IAED,KAAK,CAAC,QAAkB;QACtB,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACzC,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAC1B,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACxC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACrC,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,wEAAgC,CAAC,IAAI,CAAC,UAAU,CAAC;aAC9C,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE;YACnB,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;gBACjB,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;gBACxC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,8BAA8B,EAAE,SAAS,CAAC,CAAC;aACnE;iBAAM;gBACL,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;gBACzC,IAAI,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;gBACzC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;gBACnF,8BAAW,CAAC,MAAM,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;aAC3E;QACH,CAAC,CAAC;aACD,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iDAAiD,EAAE,OAAO,CAAC,CAAC;YACnF,8BAAW,CAAC,MAAM,EAAE,yBAAyB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC;QACrE,CAAC,CAAC,CAAC;IACP,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,wBAAwB;QACtB,OAAO,wBAAwB,6CAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,WAAW,EAAE,CAAC;IACnI,CAAC;IAED,MAAM,CAAC,IAAsB;QAC3B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,sBAAsB,GAAG,KAAK,CAAC;QACpC,IAAI,IAAI,CAAC,eAAe,EAAE,EAAE;YAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;YAE9B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC3B,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;YAC7B,CAAC,EAAE,GAAG,CAAC,CAAC;SACT;aAAM;YACL,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;IACH,CAAC;IAED,WAAW;QACT,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;IAC7B,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC;IAC1C,CAAC;IAED,IAAI,WAAW;QACb,IAAI,EAAW,CAAC;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAmB,CAAC;QAC1C,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE;YAChC,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC;SACf;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,OAAO,IAAI,CAAC,MAAM,GAAG,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,oBAAoB;QAClB,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC;IAC7C,CAAC;IAED,YAAY;QACV,MAAM,MAAM,GAAG,4BAA4B;QAE3C,IAAI,QAAQ,GAAG,MAAM,CAAC,UAAU,CAAC;QACjC,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,EAAE;YACtB,QAAQ,GAAG,GAAG;SACf;aAAM;YAEL,IAAI,IAAI,CAAC,SAAS,EAAE;gBAElB,IAAI,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;gBAC5B,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,EAAE;oBAC5B,QAAQ,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;iBACnC;qBAAM;oBACL,4BAA4B;oBAC5B,QAAQ,GAAG,GAAG,CAAC;iBAChB;aACF;SAEF;QACD,IAAI,MAAM,GAAG,aAAa,GAAG,QAAQ,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC;QACxD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC;QAE1B,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC7B,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAS,CAAC,SAAS,EAAE,CAAC;IAChE,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,YAAY,GAAG,IAAI,wBAAI,CAAC;YAC3B,0BAA0B,EAAE,KAAK;YACjC,YAAY,EAAE;gBACZ,gBAAgB,EAAE,IAAI,CAAC,aAAa,KAAK,iEAA0B,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI;gBAC9E,gBAAgB,EAAE,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;aAC5D;YACD,WAAW,EAAE,IAAI;YACjB,iBAAiB,EAAE,CAAC,WAAW,EAAE,EAAE;gBACjC,WAAW,CAAC,EAAE,GAAG,4CAAkB,EAAE,CAAC;gBACtC,OAAO,IAAI,CAAC;YACd,CAAC;SACF,CAAC,CAAC,GAAG,CAAC,4BAAS,EAAE;YAChB,mBAAmB,EAAE,IAAI;SAC1B,CAAC,CAAC,GAAG,CAAC,sBAAG,EACR;YACE,WAAW,EAAE,IAAI;YACjB,QAAQ,EAAE,kEAA6B;YACvC,iBAAiB,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,UAAU,CAAC,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI;YAC5F,eAAe,CAAC,GAAG,EAAE,IAAI;;oBAC7B,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;oBACpD,MAAM,SAAS,GAAG,IAAI,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAS,CAAC,CAAC,QAAQ,EAAE,CAAC;oBAC3F,MAAM,aAAa,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,UAAU,CAC7C,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAC3E,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBACtD,GAAG,CAAC,SAAS,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;gBAChD,CAAC;aAAA;SACF,CAAC,CAAC;QAEL,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YAC1C,MAAM,YAAY,GAAG;gBACnB,QAAQ,EAAE,aAAa;gBACvB,OAAO,EAAE,gEAA8B;gBACvC,MAAM,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM;gBACxB,UAAU,EAAE,IAAI,CAAC,EAAE;gBACnB,UAAU,EAAE,IAAI,CAAC,IAAI;aACtB,CAAC;YACF,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;QACvD,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,gBAAgB,EAAE,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE;YACxD,MAAM,QAAQ,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,kEAA6B,EAAE,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,WAAW,CAAS,CAAC,UAAU,EAAE,CAAC;YAE/D,MAAM,SAAS,GAAG,IAAI,8BAAW,EAAE,CAAC;YACpC,SAAS,CAAC,OAAO,GAAG,QAAQ,CAAC;YAC7B,SAAS,CAAC,SAAS,GAAG,kDAAe,CAAC;YACtC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC;YACxC,SAAS,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC;YACpC,SAAS,CAAC,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;YAElC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;YACzB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC7B,IAAI,IAAI,CAAC,SAAS;gBAAE,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;YACvD,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,EAAE,EAAE;YAC1C,IAAI,IAAI,CAAC,aAAa,KAAK,yDAAsB,EAAE;gBACjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC;aACjE;YACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACtB,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACtC,MAAM,MAAM,GAAG,yBAAyB,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,8DAA8D,EAAE,OAAO,CAAC,CAAC;YAChG,8BAAW,CAAC,MAAM,EAAE,qCAAqC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAC1F,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAErD,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QAC7C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;QAEnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;IACpC,CAAC;CACF;AAnWC;IAAC,oBAAI,CAAC,OAAO,CAAC;;4CAAyB;AADpB,aAAa;IAHjC,yBAAS,CAAC;QACT,UAAU,EAAE,EAAE,cAAc,iCAAE;KAC/B,CAAC;GACmB,aAAa,CAoWjC;4EApWoB,aAAa;;;ACtB2S,CAAC,oFAAe,qCAAG,EAAC;;ACAjW;;;;;AEAwG;AACvC;AACL;AAC5D,CAAsG;;;AAGtG;AACuI;AACvI,IAAI,uBAAS,GAAG,sCAAU;AAC1B,EAAE,6CAAM;AACR,EAAE,6DAAM;AACR,EAAE,sEAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,4DAAe,uBAAS;;;;ACnBiC;AACA;AACN;AACE;AACO;AACH;AACC;AACN;AACM;AACD;AACJ;AACF;AACE;AACI;AACO;AACF;AACD;AACC;AACV;AACG;AACC;AACE;AACK;;AAE/D,IAAI,0DAAM,qBAAqB,0DAA0D,UAAU,mBAAI,EAAE,OAAO,oBAAoB,KAAK,sBAAO,EAAE,OAAO,4JAA4J,KAAK,wDAAwD,wGAAwG,6CAA6C,KAAK,oBAAK,EAAE,aAAa,gCAAgC,KAAK,mCAAU,EAAE,4CAA4C,gCAAgC,aAAa,aAAa,gGAAgG,oFAAoF,sBAAO,EAAE,OAAO,mBAAmB,KAAK,oBAAK,+MAA+M,OAAO,2CAA2C,2DAA2D,kCAAS,EAAE,wDAAwD,kEAAkE,KAAK,yBAAU,EAAE,OAAO,6BAA6B,QAAQ,4CAA4C,eAAe,sBAAsB,KAAK,uBAAQ,EAAE,QAAQ,gCAAgC,oBAAK,EAAE,aAAa,uBAAuB,KAAK,wBAAS,EAAE,OAAO,kBAAkB,KAAK,2BAA2B,oCAAoC,sBAAO,KAAK,oBAAK,0EAA0E,wBAAS,EAAE,IAAI,8BAA8B,mCAAmC,sBAAO,KAAK,oBAAK,6EAA6E,wBAAS,EAAE,IAAI,8BAA8B,mCAAmC,sBAAO,KAAK,oBAAK,8CAA8C,wBAAS,8CAA8C,yBAAU,EAAE,gCAAgC,+BAA+B,QAAQ,kBAAkB,KAAK,mBAAI,EAAE,OAAO,kBAAkB,KAAK,mBAAI,KAAK,mBAAI,EAAE,mBAAmB,KAAK,mBAAI,EAAE,0CAA0C,0CAA0C,KAAK,2BAA2B,KAAK,oBAAK,EAAE,OAAO,WAAW,6GAA6G,mBAAI,EAAE,0BAA0B,kBAAkB,KAAK,mBAAI,EAAE,qCAAqC,0CAA0C,KAAK,8BAA8B,KAAK,oBAAK,EAAE,OAAO,WAAW,iHAAiH,mBAAI,EAAE,mBAAmB,KAAK,mBAAI,EAAE,qCAAqC,0CAA0C,KAAK,8BAA8B,KAAK,oBAAK,EAAE,OAAO,WAAW,yGAAyG,uBAAQ,EAAE,wCAAwC,+BAA+B,QAAQ,kBAAkB,gCAAgC,oBAAK,KAAK,wBAAS,EAAE,OAAO,gCAAgC,KAAK,4BAA4B,qCAAqC,sBAAO,KAAK,oBAAK,sCAAsC,wBAAS,EAAE,OAAO,gCAAgC,KAAK,+BAA+B,mCAAmC,sBAAO,KAAK,oBAAK,sCAAsC,wBAAS,EAAE,OAAO,gCAAgC,KAAK,2BAA2B,oCAAoC,sBAAO,KAAK,oBAAK,+EAA+E,yBAAU,EAAE,0BAA0B,kBAAkB,KAAK,mBAAI,EAAE,OAAO,kBAAkB,KAAK,mBAAI,KAAK,mBAAI,EAAE,mBAAmB,KAAK,mBAAI,EAAE,0CAA0C,0EAA0E,KAAK,4BAA4B,KAAK,oBAAK,EAAE,OAAO,WAAW,0EAA0E,mBAAI,EAAE,0BAA0B,kBAAkB,KAAK,mBAAI,EAAE,qCAAqC,0EAA0E,KAAK,+BAA+B,KAAK,oBAAK,EAAE,OAAO,WAAW,wEAAwE,mBAAI,EAAE,mBAAmB,KAAK,mBAAI,EAAE,qCAAqC,0EAA0E,KAAK,2BAA2B,KAAK,oBAAK,EAAE,OAAO,WAAW,kGAAkG,uBAAQ,EAAE,qBAAqB,qCAAqC,KAAK,yBAAU,EAAE,oBAAoB,qDAAqD,QAAQ,kDAAkD,qBAAqB,4BAA4B,KAAK,oBAAK,EAAE,OAAO,WAAW,KAAK,6BAAc,EAAE,OAAO,kBAAkB,QAAQ,8CAA8C,iBAAiB,wBAAwB,+CAA+C,UAAU,wBAAS,EAAE,kCAAkC,yBAAyB,+BAA+B,KAAK,4BAAa,KAAK,sBAAO,EAAE,OAAO,aAAa,KAAK,mBAAI,EAAE,OAAO,uBAAuB,aAAa,yCAAgB,KAAK,uCAAc,EAAE,kCAAkC,kCAAkC,UAAU,wBAAwB,qCAAY,EAAE,aAAa,gCAAgC,uBAAuB,mBAAI,EAAE,OAAO,mBAAmB,KAAK,yBAAyB,iCAAiC,sBAAO,oBAAoB,mBAAI,EAAE,OAAO,qCAAqC,KAAK,mBAAmB;AACr7L;AACA,IAAI,mEAAe;;;;;;;;ACxByC;AACN;AAC0B;AACJ;AACtC;AACQ;AACF;AACQ;AAIrC,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,eAAG;IAA5B;;QAKb,eAAe;QAEf,WAAM,GAAG,CAAC,CAAC;QACX,aAAQ,GAAG,CAAC,CAAC,CAAC;QACd,iBAAiB;QACjB,iBAAY,GAAG,EAAE,CAAC;QAClB,oBAAe,GAAG,KAAK,CAAC;IA8M1B,CAAC;IA5MC,IAAI,KAAK;QACP,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACzE,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;QAC/B,OAAO,KAAK,CAAC;IACf,CAAC;IAGD,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,6BAAY,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,KAAK;QACP,IAAI,KAAK,GAAG,WAAW,CAAC;QACxB,QAAQ,IAAI,CAAC,MAAM,EAAE;YACjB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,WAAW,CAAC;gBACnD,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,eAAe,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACzC,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,YAAY,CAAC;gBACrB,MAAM;YACN,eAAe;SAClB;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,cAAc;QAChB,IAAI,MAAM,GAAc,EAAE,CAAC;QAC3B,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAE7B,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,eAAC,sBAAE,CAAC,IAAI,0CAAE,WAAW,EAAE,0CAAE,OAAO,CAAC,IAAI,CAAC,MAAK,CAAC,CAAC,IAAC,CAAC;SAC5E;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY;IAGZ,oBAAoB;IAEpB,gBAAgB;QACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,WAAW;QACT,6BAA6B;QAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,uBAAuB;IAGvB,aAAa;QACX,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAE3C,wDAAwB,GAAG,IAAI,CAAC;QAEhC,yCAAyC;QACzC,IAAI,IAAI,CAAC,KAAK,EAAE;YAEd,gCAAgC;YAChC,IAAI,CAAC,OAAO;iBACP,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,iDAAwB,EAAE,CAAC,MAAM,CAAC,CAAC;iBACzD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;iBACvB;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,mBAAmB,EAAE,OAAO,CAAC,CAAC;oBACrD,8BAAW,CAAC,MAAM,EAAE,6CAA6C,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;iBACrH;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,GAAG,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;gBACzE,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;oBAAE,8BAAW,CAAC,MAAM,EAAE,oBAAoB,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,EAAE,CAAC,CAAC;YACrK,CAAC,CAAC,CAAC;SACR;aAAM;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,KAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,8BAAW,CAAC,MAAM,EAAE,WAAW,SAAS,IAAI,CAAC,CAAC;SAC/C;IACH,CAAC;IAED,iBAAiB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,qDAAqD;QAErD,wDAAwB,GAAG,IAAI,CAAC;QAEhC,yCAAyC;QACzC,IAAI,IAAI,CAAC,KAAK,EAAE;YAGd,IAAI,CAAC,OAAO;iBACP,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,uDAA2B,EAAE,CAAC,MAAM,CAAC,CAAC;iBAC5D,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,GAAG,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;gBACzE,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;oBAAE,8BAAW,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;SAER;aAAM;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,KAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,8BAAW,CAAC,MAAM,EAAE,WAAW,SAAS,IAAI,CAAC,CAAC;SAC/C;IAEH,CAAC;IAED,aAAa;QACX,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,0BAA0B,CAAC;QAE1C,wDAAwB,GAAG,IAAI,CAAC;QAEhC,yCAAyC;QACzC,IAAI,IAAI,CAAC,KAAK,EAAE;YAEd,+BAA+B;YAC/B,IAAI,CAAC,OAAO;iBACP,SAAS,CAAC,IAAI,CAAC,KAAK,EAAE,+CAAuB,EAAE,CAAC,MAAM,CAAC,CAAC;iBACxD,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE;gBACb,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,sBAAsB,GAAG,CAAC,WAAW,EAAE,EAAE,OAAO,CAAC,CAAC;gBACzE,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,GAAG,CAAC;oBAAE,8BAAW,CAAC,MAAM,EAAE,cAAc,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC;YAC9F,CAAC,CAAC,CAAC;SAER;aAAM;YACL,IAAI,SAAS,GAAG,IAAI,CAAC,KAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,EAAE,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;YAC3F,8BAAW,CAAC,MAAM,EAAE,WAAW,SAAS,IAAI,CAAC,CAAC;SAC/C;IAEH,CAAC;IAGD,UAAU,CAAC,KAAc;QACvB,0EAA0E;QAC1E,uCAAuC;QACvC,qCAAgB,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;QACtC,kCAAkC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,IAAI,wDAAwB,IAAI,IAAI,EAAE;YACpC,IAAI,CAAC,wDAAwB,EAAE;gBAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACnC;SACF;QACD,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACzC,CAAC;IAGD,QAAQ,CAAC,KAAY;QACnB,oCAAoC;QACpC,KAAK,CAAC,eAAe,EAAE,CAAC;QAExB,IAAI,CAAC,OAAO,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAEvC,sBAAsB;QACtB,IAAI,CAAC,KAAK,EAAE,CAAC;QACb,GAAG;IACL,CAAC;IAED,KAAK;QAEH,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;QACpC,+DAA+D;IACjE,CAAC;IAED,OAAO;QACL,yFAAyF;QACzF,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,0EAA0E;IAC5E,CAAC;CAEF;AAxNC;IAAC,oBAAI,CAAC,OAAO,CAAC;;6CAAyC;AACvD;IAAC,oBAAI,CAAC,uBAAO,CAAC;yGAAqB,uBAAO,oBAAP,uBAAO;6CAAa;AAFpC,UAAU;IAD9B,qBAAS;GACW,UAAU,CAyN9B;yEAzNoB,UAAU;;;ACb2S,CAAC,iFAAe,kCAAG,EAAC;;ACA9V;;;;;AEAqG;AACvC;AACL;AACzD,CAAoG;;;AAGpG;AACuI;AACvI,IAAI,oBAAS,GAAG,sCAAU;AAC1B,EAAE,0CAAM;AACR,EAAE,0DAAM;AACR,EAAE,mEAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAe,oBAAS;;;;;;ACnBiC;AACN;AACE;AACO;AACH;AACC;AACO;AACR;AACE;AACN;AACF;AACE;AACI;AACM;AACF;AACC;AACT;AACD;AACG;AACE;AACD;AACE;AACK;AACF;AACI;AACN;;AAE3D,IAAI,2DAAM,qBAAqB,0DAA0D,UAAU,mBAAI,EAAE,OAAO,oBAAoB,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,4BAA4B,wGAAwG,2CAA2C,kBAAkB,iGAAiG,2CAA2C,EAAE,QAAQ,6DAA6D,8CAA8C,uCAAuC,KAAK,oBAAK,EAAE,0BAA0B,KAAK,mCAAU,EAAE,sCAAsC,gCAAgC,KAAK,mBAAI,EAAE,OAAO,oFAAoF,aAAa,UAAU,oDAAoD,yBAAyB,mBAAmB,iBAAiB,OAAO,GAAG,mDAAmD,kCAAS,EAAE,2CAA2C,KAAK,yBAAU,EAAE,OAAO,6BAA6B,QAAQ,4CAA4C,eAAe,sBAAsB,KAAK,uBAAQ,EAAE,qBAAqB,gBAAgB,QAAQ,YAAY,KAAK,mBAAI,EAAE,6BAA6B,8DAA8D,MAAM,UAAU,uDAAuD,YAAY,+BAA+B,YAAY,KAAK,oBAAK,EAAE,OAAO,cAAc,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,mBAAI,SAAS,gCAAgC,gCAAgC,0BAA0B,mBAAmB,wBAAwB,oBAAK,4DAA4D,oBAAK,mGAAmG,GAAG,KAAK,oBAAK,KAAK,wBAAS,EAAE,IAAI,yBAAyB,yBAAyB,KAAK,uCAAc,gCAAgC,wBAAS,EAAE,IAAI,yBAAyB,0BAA0B,KAAK,uCAAc,gDAAgD,wBAAwB,KAAK,oBAAK,EAAE,OAAO,cAAc,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,mBAAI,SAAS,gCAAgC,gCAAgC,0BAA0B,mBAAmB,8BAA8B,oBAAK,6DAA6D,oBAAK,+FAA+F,GAAG,KAAK,oBAAK,KAAK,wBAAS,EAAE,IAAI,yBAAyB,uBAAuB,KAAK,uCAAc,8BAA8B,wBAAS,EAAE,IAAI,yBAAyB,uBAAuB,KAAK,uCAAc,iDAAiD,wBAAwB,KAAK,oBAAK,EAAE,OAAO,cAAc,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,mBAAI,SAAS,gCAAgC,gCAAgC,0BAA0B,mBAAmB,KAAK,oBAAK,EAAE,sBAAsB,wHAAwH,GAAG,KAAK,oBAAK,KAAK,wBAAS,EAAE,IAAI,yBAAyB,2BAA2B,KAAK,uCAAc,6BAA6B,wBAAS,EAAE,IAAI,yBAAyB,6BAA6B,KAAK,uCAAc,+BAA+B,wBAAS,EAAE,IAAI,yBAAyB,2BAA2B,KAAK,uCAAc,gDAAgD,wBAAwB,KAAK,oBAAK,EAAE,OAAO,8DAA8D,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,mBAAI,SAAS,gCAAgC,iBAAiB,0BAA0B,mBAAmB,KAAK,oBAAK,4FAA4F,UAAU,oDAAoD,uBAAuB,8BAA8B,KAAK,oBAAK,KAAK,oBAAK,EAAE,OAAO,WAAW,KAAK,wBAAS,KAAK,8BAAe,KAAK,sBAAO,EAAE,OAAO,gDAAgD,mBAAmB,0BAA0B,SAAS,uCAAc,EAAE,wBAAwB,4BAA4B,wBAAS,KAAK,8BAAe,KAAK,sBAAO,EAAE,OAAO,mDAAmD,sBAAsB,6BAA6B,SAAS,uCAAc,EAAE,wBAAwB,+BAA+B,wBAAS,KAAK,8BAAe,KAAK,sBAAO,EAAE,OAAO,kDAAkD,qBAAqB,4BAA4B,SAAS,uCAAc,EAAE,wBAAwB,kCAAkC,qCAAY,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,4BAA4B,KAAK,yBAAyB,6BAA6B,0CAA0C,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,qCAAqC,KAAK,yBAAU,EAAE,OAAO,gDAAgD,QAAQ,oDAAoD,uBAAuB,8BAA8B,SAAS,mBAAI,EAAE,+BAA+B,qCAAqC,KAAK,wBAAS,EAAE,OAAO,mJAAmJ,QAAQ,+CAA+C,kBAAkB,yBAAyB,SAAS,mBAAI,EAAE,6BAA6B,+CAA+C,KAAK,sBAAsB,4CAA4C,YAAY,wCAAwC,yBAAyB,iBAAiB,WAAW,aAAa,qBAAqB,qGAAqG,uBAAQ,EAAE,OAAO,SAAS,sBAAsB,8BAA8B,YAAY,EAAE,WAAW,oBAAK,EAAE,OAAO,6BAA6B,sBAAsB,8BAA8B,SAAS,EAAE,WAAW,mBAAI,SAAS,OAAO,WAAW,0BAA0B,qFAAqF,oBAAK,EAAE,OAAO,kBAAkB,2CAA2C,aAAa,KAAK,oBAAK,EAAE,mBAAmB,KAAK,wBAAS,EAAE,+BAA+B,KAAK,uCAAc,EAAE,wBAAwB,qCAAqC,uBAAQ,KAAK,wBAAS,EAAE,IAAI,yBAAyB,gCAAgC,KAAK,uCAAc,EAAE,wBAAwB,uCAAuC,wBAAS,EAAE,IAAI,yBAAyB,gCAAgC,KAAK,uCAAc,EAAE,wBAAwB,yCAAyC,wBAAS,EAAE,IAAI,yBAAyB,gCAAgC,KAAK,uCAAc,EAAE,wBAAwB,mDAAmD,wBAAS,EAAE,IAAI,yBAAyB,iBAAiB,KAAK,uCAAc,EAAE,wBAAwB,sCAAsC,yBAAyB,uJAAuJ,6BAA6B,yBAAyB,iBAAiB,WAAW,+BAA+B,qBAAqB,+IAA+I,6BAA6B,yBAAyB,iBAAiB,WAAW,+BAA+B,yCAAyC,iEAAiE,oBAAK,EAAE,mCAAmC,yBAAyB,iBAAiB,uCAAuC,mBAAI,EAAE,6BAA6B,4CAA4C,KAAK,sBAAsB,2CAA2C,KAAK,yBAAyB,eAAe,YAAY,oCAAoC,WAAW,aAAa,qBAAqB,sCAAsC,yBAAyB,WAAW,+BAA+B,qBAAqB,4CAA4C,oBAAK,EAAE,+BAA+B,2CAA2C,uBAAQ,EAAE,QAAQ,KAAK,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,2CAA2C,KAAK,yBAAyB,iBAAiB,YAAY,oCAAoC,WAAW,aAAa,qBAAqB,qGAAqG,uBAAQ,EAAE,OAAO,0BAA0B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,oBAAK,SAAS,OAAO,sCAAsC,8BAA8B,yBAAyB,uJAAuJ,6BAA6B,yBAAyB,iBAAiB,WAAW,+BAA+B,qBAAqB,+IAA+I,6BAA6B,yBAAyB,iBAAiB,WAAW,+BAA+B,yCAAyC,iEAAiE,oBAAK,EAAE,+BAA+B,uCAAuC,mBAAI,EAAE,mBAAmB,KAAK,uBAAQ,SAAS,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,2CAA2C,KAAK,yBAAyB,iBAAiB,YAAY,oCAAoC,WAAW,aAAa,qBAAqB,sCAAsC,6BAA6B,yBAAyB,iBAAiB,WAAW,+BAA+B,qBAAqB,yDAAyD,oBAAK,EAAE,+BAA+B,2CAA2C,uBAAQ,EAAE,QAAQ,KAAK,mBAAI,EAAE,0BAA0B,4CAA4C,YAAY,wBAAwB,WAAW,aAAa,qBAAqB,+FAA+F,yBAAyB,KAAK,sBAAO,EAAE,4BAA4B,kBAAkB,QAAQ,8CAA8C,iBAAiB,wBAAwB,iCAAiC,uBAAQ,EAAE,mBAAmB,cAAc,mBAAI,EAAE,mBAAmB,mIAAmI,mBAAI,EAAE,mBAAmB,KAAK,mBAAI,EAAE,4DAA4D,yBAAyB,KAAK,sBAAsB,wCAAwC,oBAAK,EAAE,+BAA+B,wDAAwD,uBAAQ,EAAE,QAAQ,KAAK,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,oBAAK,EAAE,yBAAyB,6CAA6C,UAAU,wBAAS,EAAE,oBAAoB,yBAAyB,uCAAuC,KAAK,4BAAa,KAAK,sBAAO,EAAE,OAAO,aAAa,KAAK,mBAAI,EAAE,OAAO,6DAA6D,aAAa,uCAAc,EAAE,qCAAqC,qBAAqB,mDAAmD,gBAAgB,uBAAQ,EAAE,QAAQ,KAAK,mBAAI,EAAE,0BAA0B,4CAA4C,YAAY,wBAAwB,WAAW,aAAa,qBAAqB,4DAA4D,sBAAO,EAAE,4BAA4B,kBAAkB,QAAQ,gDAAgD,mBAAmB,0BAA0B,6BAA6B,uBAAQ,EAAE,mBAAmB,gCAAgC,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,oBAAK,EAAE,mBAAmB,8JAA8J,KAAK,sCAAsC,gBAAgB,wCAAwC,iBAAiB,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,gEAAgE,QAAQ,kDAAkD,qBAAqB,4BAA4B,QAAQ,gCAAgC,mDAAmD,sBAAsB,6BAA6B,KAAK,0BAAW,EAAE,OAAO,yBAAyB,KAAK,yBAAyB,iCAAiC,QAAQ,kDAAkD,qBAAqB,4BAA4B,SAAS,oBAAK,EAAE,+BAA+B,8JAA8J,KAAK,sCAAsC,gBAAgB,wCAAwC,iBAAiB,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,gEAAgE,QAAQ,sDAAsD,yBAAyB,gCAAgC,QAAQ,gCAAgC,mDAAmD,sBAAsB,6BAA6B,yBAAyB,0BAAW,EAAE,OAAO,4DAA4D,KAAK,gCAAgC,mDAAmD,QAAQ,kDAAkD,qBAAqB,4BAA4B,mCAAmC,uBAAQ,EAAE,QAAQ,KAAK,mBAAI,EAAE,0BAA0B,4CAA4C,YAAY,wBAAwB,WAAW,aAAa,qBAAqB,oDAAoD,yBAAyB,KAAK,sBAAO,EAAE,4BAA4B,kBAAkB,QAAQ,+CAA+C,kBAAkB,yBAAyB,kCAAkC,uBAAQ,EAAE,mBAAmB,+BAA+B,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,oBAAK,EAAE,mBAAmB,8JAA8J,KAAK,sCAAsC,gBAAgB,wCAAwC,iBAAiB,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,gEAAgE,QAAQ,mDAAmD,sBAAsB,6BAA6B,QAAQ,gCAAgC,oDAAoD,uBAAuB,8BAA8B,KAAK,0BAAW,EAAE,OAAO,yBAAyB,KAAK,yBAAyB,kCAAkC,QAAQ,mDAAmD,sBAAsB,6BAA6B,SAAS,oBAAK,EAAE,+BAA+B,8JAA8J,KAAK,sCAAsC,gBAAgB,wCAAwC,iBAAiB,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,gEAAgE,QAAQ,uDAAuD,0BAA0B,iCAAiC,QAAQ,gCAAgC,oDAAoD,uBAAuB,8BAA8B,0BAA0B,0BAAW,EAAE,OAAO,4DAA4D,KAAK,gCAAgC,mDAAmD,QAAQ,mDAAmD,sBAAsB,6BAA6B,mCAAmC,uBAAQ,EAAE,QAAQ,oDAAoD,OAAO,qIAAqI,KAAK,6BAA6B,0BAA0B,qCAAY,sBAAsB,sBAAO,cAAc,mBAAI,EAAE,OAAO,mBAAmB,KAAK,sBAAsB,yDAAyD,sBAAO,iCAAiC,mBAAI,EAAE,OAAO,qCAAqC,KAAK,sBAAsB,mEAAmE,mBAAI,EAAE,OAAO,qCAAqC,KAAK,qBAAqB;AAC1yjB;AACA,IAAI,oEAAe;;;;;;;;;;;;;;AC5BS;AACgC;AACN;AACsB;AAClC;AACU;AACd;AACc;AACA;AAEY;AACjC;AAC+B;AAK/C,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,eAAG;IAA7B;;QAIb,eAAe;QACf,WAAM,GAAW,CAAC,CAAC;QACnB,cAAS,GAAG,KAAK,CAAC;QAElB,gBAAW,GAAG,KAAK,CAAC;QACpB,gBAAW,GAAG,KAAK,CAAC;QACpB,eAAU,GAAG,KAAK,CAAC;QACnB,gBAAW,GAAG,EAAE,CAAC;QACjB,gBAAW,GAAG,EAAE,CAAC;QACjB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,yBAAoB,GAAG,KAAK,CAAC;QAC7B,sBAAiB,GAAG,KAAK,CAAC;QAC1B,wBAAmB,GAAG,KAAK;QAC3B,qBAAgB,GAAG,IAAI,CAAC;QACxB,sBAAiB,GAAG,IAAI,CAAC;QACzB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,sBAAiB,GAAG,SAAS,CAAC;QAC9B,wBAAmB,GAAG,CAAC,CAAC;QACxB,oBAAe,GAAG,KAAK,CAAC;QACxB,oBAAe,GAAG,EAAE,CAAC;QACrB,eAAU,GAAG,EAAE,CAAC;QAChB,gBAAW,GAAG,IAAI,CAAC;QACnB,iBAAY,GAAG,IAAI,CAAC;QACpB,aAAQ,GAAG,EAAE,CAAC;QAGd,yDAAyD;QACzD,yDAAyD;QACzD,uDAAuD;QACvD,yCAAyC;QACzC,yCAAyC;QACzC,uDAAuD;QACvD,2DAA2D;QAC3D,qDAAqD;QACrD,yDAAyD;QACzD,mDAAmD;QACnD,qDAAqD;QACrD,qDAAqD;QACrD,qDAAqD;QACrD,oDAAoD;QACpD,iDAAiD;QACjD,iDAAiD;QACjD,8CAA8C;QAE9C,qBAAgB,GAAW,EAAE,CAAC;QAC9B,8BAAyB,GAAW,EAAE,CAAC;QACvC,kBAAa,GAAW,EAAE,CAAC;QAC3B,mBAAc,GAAW,EAAE,CAAC;QAC5B,iBAAY,GAAW,EAAE,CAAC;QAC1B,gBAAW,GAAW,EAAE,CAAC;QACzB,gBAAW,GAAW,EAAE,CAAC;QAEzB,mBAAmB;QACnB,iBAAY,GAAG,CAAC,CAAC,CAAC;QAClB,eAAU,GAAG,KAAK,CAAC;QACnB,SAAI,GAAG,KAAK,CAAC;QACb,aAAQ,GAAG,IAAI,CAAC;QAChB,iBAAY,GAAG,EAAE,CAAC;QAClB,QAAG,GAAG,CAAC,CAAC;QACR,QAAG,GAAG,CAAC,CAAC;QACR,cAAS,GAAG,CAAC,CAAC;QACd,iBAAY,GAAG,IAAI,CAAC;QACpB,eAAU,GAAG,IAAI,CAAC;QAClB,kBAAa,GAAG,IAAI,CAAC;QACrB,mBAAc,GAAG,KAAK,CAAC;QACvB,UAAK,GAAa,uDAAuB,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QAErD,6CAA6C;QAC7C,kBAAa,GAAY,KAAK,CAAC;QAC/B,kBAAa,GAAY,KAAK,CAAC;QAC/B,wBAAmB,GAAG,KAAK,CAAC;QAE5B,+CAA+C;QAC/C,mBAAc,GAAY,KAAK,CAAC;QAChC,mBAAc,GAAY,KAAK,CAAC;QAChC,yBAAoB,GAAG,KAAK,CAAC;QAC7B,SAAI,GAAG,EAAE,CAAC;QAqkBV,uBAAuB;QAGvB,cAAS,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,oDAAsB,CAAC;QACvF,cAAS,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,oDAAsB,CAAC;IAqEzF,CAAC;IA5oBC,aAAa;QACX,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QAC9C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QACvC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;QACrD,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC;QACzD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC;QACvD,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QACjD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACnD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACnD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QACnD,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC;QAClD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC/C,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC/C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC;QAC5C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC;QAC9C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC;IAC1C,CAAC;IAED,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,2BAAa,CAAC;IACvB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,2CAAiB,CAAC;IAC3B,CAAC;IAGD,IAAI,WAAW;QACb,IAAI,IAAY,CAAC;QACjB,gBAAgB;QAChB,QAAQ,IAAI,CAAC,MAAM,EAAE;YACnB,KAAK,CAAC;gBACJ,IAAI,GAAG,iBAAiB,CAAC;gBACzB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,GAAG,kBAAkB,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,GAAG,eAAe,GAAG,IAAI,CAAC,UAAU,CAAC;gBACzC,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,GAAG,kBAAkB,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,GAAG,mBAAmB,CAAC;gBAC3B,MAAM;YAEN,gGAAgG;YAChG,kGAAkG;YACpG,KAAK,CAAC;gBACJ,IAAI,GAAG,8BAA8B,CAAC;gBACtC,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,GAAG,sCAAsC,CAAC;gBAC9C,MAAM;YACR;gBACE,IAAI,GAAG,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SAC/C;QACD,eAAe;QACf,OAAO,IAAI;IACb,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC;IAC/C,CAAC;IAED,SAAS;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa;IACjE,CAAC;IAED,YAAY;IAGZ,uBAAuB;IAEvB,IAAI,UAAU;QACZ,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACtB,2CAA2C;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa;QACf,IAAI,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;QACjC,8CAA8C;QAC9C,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,SAAS;QACX,qDAAqD;QACrD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,SAAS,CAAC,GAAS;QACrB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE;YACpB,IAAI,CAAC,YAAY,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,kDAAqB,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;SAC3F;IACH,CAAC;IAED,IAAI,gBAAgB;QAClB,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACzC,IAAI,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;QAC1C,IAAI,SAAS,GAAG,SAAS,GAAG,QAAQ,EAAE;YACpC,OAAO,IAAI,CAAC;SACb;aAAM;YACL,OAAO,KAAK,CAAC;SACd;IACH,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;IAClC,CAAC;IAED,IAAI,YAAY;QACd,IAAI,EAAE,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnC,6CAA6C;QAC7C,wCAAwC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY,CAAC,GAAW;QAC1B,IAAI,EAAE,GAAG,gBAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,SAAS,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;QAC7B,uDAAuD;IACzD,CAAC;IAED,IAAI,gBAAgB;QAClB,IAAI,QAAQ,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACnD,4CAA4C;QAC5C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,YAAY;QACd,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC;QACzD,yCAAyC;QACzC,iDAAiD;QACjD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,YAAY,CAAC,GAAW;QAC1B,IAAI,GAAG,GAAG,gBAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;QACnD,uDAAuD;IACzD,CAAC;IAED,IAAI,mBAAmB;QACrB,OAAO,qDAAsB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU,CAAC,GAAS;QACtB,sBAAsB;QACtB,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC;IAC1B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,aAAa;QACf,IAAI,EAAE,GAAG,gBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACjC,IAAI,IAAI,GAAG,EAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnC,oCAAoC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,aAAa,CAAC,GAAW;QAC3B,IAAI,EAAE,GAAG,gBAAM,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;QACnC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC;QAC9B,mDAAmD;IACrD,CAAC;IAED,IAAI,iBAAiB;QACnB,IAAI,QAAQ,GAAG,gBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QACpD,4CAA4C;QAC5C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,aAAa;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,gBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;QAC1D,yCAAyC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,IAAI,aAAa,CAAC,GAAW;QAC3B,IAAI,GAAG,GAAG,gBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACjD,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,MAAM,EAAE,CAAC;QACpD,yDAAyD;QACzD,qCAAqC;QACrC,8BAA8B;IAChC,CAAC;IAED,eAAe,CAAC,GAAW;QACzB,QAAQ,GAAG,EAAE;YACT,yBAAyB;YAC3B,KAAK,CAAC;gBACJ,IAAI,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;gBACrC,IAAI,YAAY,GAAG,gBAAM,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;gBACzE,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;gBACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;gBACjC,MAAM;YACN,4BAA4B;YAC9B,KAAK,CAAC;gBACJ,IAAI,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC;gBACtC,IAAI,aAAa,GAAG,gBAAM,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC;gBAC7E,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;gBAClC,IAAI,CAAC,YAAY,GAAG,aAAa,CAAC;gBAClC,MAAM;gBACN,MAAM;YACN,sBAAsB;YACxB,KAAK,CAAC;gBACJ,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;gBACvB,MAAM;SACT;IACH,CAAC;IAED,0BAA0B;IAG1B,wBAAwB;IAGxB,IAAI,WAAW;QACb,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QACrF,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,CAAC;IAC5D,CAAC;IAED,IAAI,aAAa;QACf,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QAC3F,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;IACvD,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,sBAAsB,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC;QAC5G,IAAI,oBAAoB,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACtG,IAAI,uBAAuB,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;QAE/G,IAAI,CAAC,YAAY,GAAG,sBAAsB,CAAC;QAC3C,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC;QACvC,IAAI,CAAC,aAAa,GAAG,uBAAuB,CAAC;QAC7C,IAAI,GAAG,GAAG,SAAS,CAAC;QACpB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,GAAG,IAAI,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;QACrC,GAAG,IAAI,CAAC,GAAG,IAAI,SAAS,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACxC,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACpB,CAAC;IAED,UAAU,CAAC,YAAoB;QAC7B,IAAI,GAAW,CAAC;QAChB,QAAQ,YAAY,CAAC,WAAW,EAAE,EAAE;YAChC,gBAAgB;YAClB,KAAK,SAAS;gBACZ,GAAG,GAAG,SAAS,CAAC;gBAChB,MAAM;YACR,KAAK,QAAQ,CAAC;YACd,KAAK,WAAW;gBACd,GAAG,GAAG,UAAU,CAAC;gBACjB,MAAM;YACR,KAAK,SAAS;gBACZ,GAAG,GAAG,UAAU,CAAC;gBACjB,MAAM;YACR;gBACE,GAAG,GAAG,SAAS,CAAC;gBAChB,MAAM;YACN,eAAe;SAClB;QACD,OAAO,GAAG;IACZ,CAAC;IAED,IAAI,cAAc;QAChB,IAAI,oBAAoB,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACpG,IAAI,CAAC,UAAU,GAAG,oBAAoB,CAAC;QACvC,oCAAoC;QACpC,OAAO,2DAAyB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACpD,CAAC;IAGD,sBAAsB;IAGtB,mBAAmB;IAEnB,IAAI,UAAU;QACZ,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;QAC3F,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;QAC7B,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC;IAC3B,CAAC;IAED,IAAI,UAAU,CAAC,GAAY;QACzB,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,CAAC;IAC1B,CAAC;IAED,IAAI,SAAS;QACX,IAAI,QAAQ,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;QACvF,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC;QAC3B,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC;IAC1B,CAAC;IAED,IAAI,SAAS,CAAC,GAAY;QACxB,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,CAAC;IACzB,CAAC;IAGD,IAAI,SAAS;QACX,OAAO,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS;IAClH,CAAC;IAGD,IAAI,kBAAkB;QACpB,wEAAwE;QACxE,OAAO,yDAAwB,CAC3B,IAAI,CAAC,SAAS,EACd,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,WAAW,EAChB,IAAI,CAAC,UAAU,EACf,IAAI,CAAC,SAAS,CACjB,CAAC;IACJ,CAAC;IAED,EAAE;IACF,0BAA0B;IAC1B,yDAAyD;IACzD,IAAI;IAGJ,IAAI,UAAU;QACZ,IAAI,IAAI,GAAG,EAAE,CAAC;QACd,IAAI,IAAI,CAAC,SAAS,EAAE;YAElB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,IAAI,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE;gBACpE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,CAAC;gBAC/C,IAAI,CAAC,SAAS,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;aACzC;YAED,IAAI,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;YACnC,IAAI,UAAU,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;YAC/C,IAAI,UAAU,EAAE;gBACd,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBACpD,IAAI,MAAM,EAAE;oBACV,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;oBAC9B,IAAI,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC;oBAC9B,IAAI,GAAG,MAAM,CAAC,iBAAiB,CAAC;iBACjC;qBAAM;oBACL,IAAI,GAAG,kBAAkB;iBAC1B;aACF;iBAAM;gBACL,IAAI,GAAG,YAAY;aACpB;SACF;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,6BAA6B;IAC7B,sBAAsB;IACtB,6DAA6D;IAC7D,mGAAmG;IACnG,sBAAsB;IACtB,kIAAkI;IAClI,wCAAwC;IACxC,2DAA2D;IAC3D,qCAAqC;IACrC,sEAAsE;IACtE,MAAM;IACN,iBAAiB;IACjB,IAAI;IAGJ,IAAI,cAAc;QAChB,IAAI,IAAY,CAAC;QACjB,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,QAAQ;SAC5C;QACD,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI,EAAE;YAC1B,IAAI,GAAG,4BAA4B,CAAC;SACrC;aAAM;YACL,IAAI,SAAS,GAAG,wDAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;YACzE,IAAI,GAAG,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;SAC5F;QACD,sCAAsC;QACtC,6BAA6B;QAC7B,IAAI;QACJ,OAAO,IAAI;IACb,CAAC;IAGD,IAAI,cAAc;QAChB,IAAI,mBAAmB,GAAG,CAAC,IAAI,CAAC,SAAS,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAC/F,IAAI,CAAC,SAAS,GAAG,mBAAmB,CAAC;QACrC,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,cAAc,CAAC,SAAiB;QAClC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACX,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;QAC3E,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;QACtB,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAED,IAAI,SAAS,CAAC,QAAgB;QAC5B,IAAI,CAAC,IAAI,GAAG,QAAQ,CAAC;IACvB,CAAC;IAED,YAAY;IAGZ,mBAAmB;IAEX,YAAY,CAAC,GAAW;QAC9B,IAAI,UAAU,GAAG,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,gBAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5C,OAAO,IAAI;IACb,CAAC;IAEO,YAAY,CAAC,EAAiB;QACpC,IAAI,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,sBAAsB;IAGtB,oBAAoB;IAEpB,oBAAoB;QAClB,OAAO,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED,YAAY,CAAC,QAAgB;QAC3B,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC;QAC5E,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,sCAAsC;QACtC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,yBAAyB,GAAG,IAAI,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;YAC9J,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;YAC7B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC3B,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;YACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;IACH,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;aAAM,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YAC/C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;aAAM;YACL,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,2FAA2F;YAC3F,gCAAgC;YAChC,4BAA4B;YAC5B,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IAGD,aAAa,CAAC,IAAa;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,GAAG,2BAA2B,CAAC;QACzC,mDAAmD;QACnD,IAAI,IAAI,EAAE;YACR,IAAI,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC;YAC1E,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,SAAS,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACpC,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YACtD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;YAEpD,IAAI,IAAI,CAAC,WAAW,IAAI,aAAa,EAAE;gBACrC,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,EAAE;aAChC;YAED,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YAC9C,qEAAqE;YACrE,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAChD,mHAAmH;YAEnH,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAClD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;YAChD,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;YAC/C,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAC5C,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;YAE5C,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;YACxC,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;YACxC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;YAEhD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,aAAa,EAAE,KAAK,CAAC;iBAChD,IAAI,CAAC,GAAG,EAAE;gBACT,mCAAmC;gBACnC,wCAAwC;gBACxC,sCAAsC;gBACtC,IAAI,iEAA8B,KAAK,CAAC,IAAI,wEAAkC,KAAK,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;oBAC7G,mDAAuB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;iBAChD;gBACD,IAAI,CAAC,KAAK,EAAE;gBACZ,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC;gBACxD,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC;YACrD,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,aAAa,EAAE,CAAC;gBACrB,4CAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC,CAAC;YAC5D,CAAC,CAAC,CAAC;YAGP,2BAA2B;SAE5B;aAAM;YACL,IAAI,CAAC,KAAK,EAAE;SACb;IACH,CAAC;IAED,KAAK;QACH,sCAAiB,CAAC,eAAe,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACpD,CAAC;IAED,aAAa;QACX,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC3C,IAAI,CAAC,aAAa,CAAC,WAAW,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACzD,IAAI,CAAC,aAAa,CAAC,aAAa,GAAG,IAAI,CAAC,oBAAoB,CAAC;QAC7D,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,YAAY,GAAG,IAAI,CAAC,mBAAmB,CAAC;QAC3D,IAAI,CAAC,aAAa,CAAC,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC;QACrD,4EAA4E;QAC5E,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;QACvD,IAAI,CAAC,aAAa,CAAC,OAAO,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACtD,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;QACnD,IAAI,CAAC,aAAa,CAAC,QAAQ,GAAG,IAAI,CAAC,eAAe,CAAC;IACrD,CAAC;IASD,UAAU,CAAC,KAAiB;QAC1B,+CAA+C;QAC/C,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC,EAAE;YACvC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;SAChC;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,+BAA+B,EAAE,OAAO,CAAC,CAAC;SAClE;IACH,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,GAAG,sBAAsB,CAAC;QACpC,IAAI,CAAC,OAAO,CAAC,sBAAsB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;aAC9D,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;YACd,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YAC1B,IAAI,CAAC,WAAW,GAAG,aAAa,CAAC;YACjC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;QAEb,CAAC,CAAC;IAER,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,yDAAyD;YACzD,IAAI,CAAC,aAAa,EAAE,CAAC;YACrB,IAAI,wDAAwB,EAAE;gBAC5B,QAAQ,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE;oBACpC,KAAK,CAAC;wBACJ,wDAAwB,GAAG,KAAK,CAAC;wBACjC,MAAM;oBACR,KAAK,CAAC;wBAAE;4BACN,wDAAwB,GAAG,KAAK,CAAC;4BACjC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;gCACjC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;6BACzB;yBAEF;wBACC,MAAM;oBACR,KAAK,CAAC;wBAAE;4BACN,wDAAwB,GAAG,KAAK,CAAC;4BACjC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;gCACjC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;6BACzB;yBAEF;wBACC,MAAM;oBACR,KAAK,CAAC;wBAAE;4BACN,wDAAwB,GAAG,KAAK,CAAC;4BACjC,IAAI,IAAI,CAAC,gBAAgB,IAAI,IAAI,EAAE;gCACjC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC;6BACzB;yBAEF;wBACC,MAAM;iBACT;aACF;SAEF;aAAM;YACL,4CAAkB,CAAC,qBAAqB,EAAE,mBAAmB,CAAC;SAC/D;IACH,CAAC;CAEF;AA7tBC;IAAC,oBAAI,CAAC,uBAAO,CAAC;0GAAqB,uBAAO,oBAAP,uBAAO;8CAAC;AADxB,WAAW;IAH/B,yBAAS,CAAC;QACT,UAAU,EAAE,EAAC,YAAY,+BAAC;KAC3B,CAAC;GACmB,WAAW,CA8tB/B;0EA9tBoB,WAAW;;;AClB2S,CAAC,iFAAe,mCAAG,EAAC;;ACA/V;;;;;AEAsG;AACvC;AACL;AAC1D,CAAqG;;;AAGrG;AACuI;AACvI,IAAI,qBAAS,GAAG,sCAAU;AAC1B,EAAE,0CAAM;AACR,EAAE,2DAAM;AACR,EAAE,oEAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,yDAAe,qBAAS;;;;;;;;ACnBiC;AACN;AACE;AACO;AACH;AACU;AACV;AACE;AACI;AACV;AACA;AACF;AACC;AACK;AACF;AACH;AACI;AACH;AACK;AACK;AACJ;AACK;;AAEhE,IAAI,4DAAM,qBAAqB,0DAA0D,UAAU,mBAAI,EAAE,OAAO,oBAAoB,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,4BAA4B,wGAAwG,2CAA2C,kBAAkB,iGAAiG,0CAA0C,EAAE,QAAQ,8DAA8D,+CAA+C,wCAAwC,KAAK,oBAAK,KAAK,gCAAQ,EAAE,OAAO,iEAAiE,KAAK,mBAAI,EAAE,OAAO,kGAAkG,KAAK,8BAAa,qEAAqE,kCAAS,EAAE,2CAA2C,KAAK,yBAAU,EAAE,OAAO,6BAA6B,QAAQ,4CAA4C,eAAe,sBAAsB,KAAK,uBAAQ,EAAE,QAAQ,KAAK,oBAAK,EAAE,0CAA0C,qBAAqB,QAAQ,2CAA2C,cAAc,qBAAqB,KAAK,mBAAI,EAAE,0BAA0B,oBAAoB,KAAK,yBAAU,EAAE,OAAO,4JAA4J,QAAQ,0CAA0C,aAAa,oBAAoB,SAAS,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,yBAAU,EAAE,OAAO,oLAAoL,QAAQ,2CAA2C,cAAc,qBAAqB,SAAS,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,sBAAO,EAAE,OAAO,mFAAmF,QAAQ,wDAAwD,2BAA2B,kCAAkC,aAAa,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,yBAAyB,iBAAiB,yCAAyC,sBAAO,eAAe,mBAAI,EAAE,aAAa,kCAAkC,QAAQ,kHAAkH,SAAS,oBAAK,2CAA2C,uBAAQ,EAAE,QAAQ,KAAK,oBAAK,EAAE,kBAAkB,iCAAiC,KAAK,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,sBAAO,EAAE,OAAO,wBAAwB,KAAK,mBAAI,EAAE,aAAa,kCAAkC,QAAQ,qGAAqG,aAAa,mBAAI,EAAE,0BAA0B,qCAAqC,sEAAsE,uBAAQ,KAAK,mBAAI,EAAE,0BAA0B,4CAA4C,YAAY,wBAAwB,gDAAgD,yBAAyB,KAAK,mBAAI,EAAE,0BAA0B,uCAAuC,KAAK,yBAAyB,eAAe,KAAK,oBAAK,EAAE,OAAO,WAAW,qCAAqC,uBAAQ,SAAS,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,oBAAK,EAAE,OAAO,UAAU,QAAQ,4CAA4C,eAAe,sBAAsB,KAAK,mBAAI,EAAE,YAAY,yBAAyB,cAAc,8BAA8B,mBAAI,EAAE,QAAQ,6BAA6B,uBAAQ,EAAE,QAAQ,cAAc,mBAAI,EAAE,mBAAmB,KAAK,yBAAU,EAAE,OAAO,iIAAiI,QAAQ,6CAA6C,gBAAgB,uBAAuB,aAAa,uBAAQ,EAAE,QAAQ,KAAK,mBAAI,EAAE,mBAAmB,KAAK,yBAAU,EAAE,OAAO,mQAAmQ,QAAQ,0CAA0C,aAAa,oBAAoB,yBAAyB,uBAAQ,EAAE,QAAQ,MAAM,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,2BAAY,EAAE,OAAO,6IAA6I,QAAQ,6CAA6C,gBAAgB,uBAAuB,cAAc,uBAAQ,EAAE,QAAQ,KAAK,mBAAI,EAAE,mBAAmB,4BAA4B,aAAa,qBAAqB,QAAQ,kBAAkB,8KAA8K,aAAa,qBAAqB,QAAQ,kBAAkB,4HAA4H,qCAAY,wBAAwB,mBAAI,EAAE,OAAO,UAAU,KAAK,yBAAyB,eAAe,kDAAkD,mBAAI,EAAE,OAAO,UAAU,KAAK,yBAAyB,4BAA4B,kDAAkD,mBAAI,EAAE,OAAO,UAAU,KAAK,yBAAyB,uDAAuD,+BAA+B,sBAAO,sCAAsC,mBAAI,EAAE,OAAO,UAAU,KAAK,mBAAmB,oEAAoE,mBAAI,EAAE,OAAO,4BAA4B,KAAK,yBAAyB,uBAAuB,+CAA+C,mBAAI,EAAE,OAAO,wDAAwD,KAAK,2BAA2B;AACx6M;AACA,IAAI,qEAAe;;;;;;;;ACvBW;AACwB;AAC0B;AACb;AAC3B;AACF;AAGvB,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,eAAG;IAA9B;;QAGb,WAAM,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/C,UAAK,GAAY,KAAK,CAAC;QAGvB,iBAAY,GAAW,CAAC,CAAC;QACzB,aAAQ,GAAW,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC;QAC9C,cAAS,GAAW,EAAE,CAAC;QAKvB,mFAAmF;QACnF,yBAAoB,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,yBAAyB,CAAC,CAAC;QACvF,SAAI,GAAS,IAAI,CAAC;QAElB,gBAAW,GAAG,EAAE,CAAC;QACjB,iBAAY,GAAG,EAAE,CAAC;QAClB,sBAAiB,GAAG,CAAC,CAAC;QACtB,kBAAa,GAAG,CAAC,CAAC;QAClB,mBAAc,GAAG,EAAE,CAAC;QACpB,iDAAiD;QACjD,mBAAc,GAAG,EAAE,CAAC;QACpB,iBAAY,GAAG,KAAK,CAAC;QAkCZ,qBAAgB,GAAG,OAAO,CAAC,CAAC,mCAAmC;QAExE,oCAAoC;QACpC,eAAU,GAAG;YACX,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,IAAI,sCAAsC;SACtF,CAAC;IA0dJ,CAAC;IA9fC,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,KAAK,EAAE;YACd,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,6CAA6C,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,6BAA6B;aACxG;SACF;IACH,CAAC;IAED,IAAI,SAAS;QACX,IAAI,IAAI,CAAC,IAAI,EAAE;YACb,OAAO;gBACL,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,IAAI,uBAAuB;gBAC7C,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,uEAAuE;aAC5G;SACF;IACH,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,OAAO;gBACL,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,gCAAgC;aACjE;SACF;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,CAAC,IAAI,CAAC,KAAK;YACd,6CAA6C,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC;YAC9D,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC;YACrB,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAUD,cAAc;QACZ,IAAI,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC;QAC7B,qHAAqH;QAErH,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,KAAK,CAAC;QACjC,IAAI,CAAC,iBAAiB,GAAG,MAAM,CAAC,UAAU,CAAC;QAC3C,IAAI,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC;QACnC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;QAErC,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,MAAM,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,OAAO,CAAC;QAEhC,6DAA6D;IAC/D,CAAC;IAGD,6BAA6B;IAC7B,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,WAAW;QACb,OAAO,4BAAc,CAAC;IACxB,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,UAAU;IACxB,CAAC;IAGD,gCAAgC;IAGhC,oCAAoC;IAEpC,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,MAAM,CAAC,GAAW;QACpB,IAAI,CAAC,QAAQ,GAAG,GAAG,CAAC;QACpB,oCAAoC;IACtC,CAAC;IAED,IAAI,OAAO;QACT,IAAI,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC;QAClF,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC;QAC5B,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,OAAO,CAAC,GAAW;QACrB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO;QACT,IAAI,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACjF,IAAI,CAAC,SAAS,GAAG,OAAO,CAAC;QACzB,OAAO,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,OAAO,CAAC,GAAW;QACrB,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACvC,CAAC;IAED,uCAAuC;IAEvC,uCAAuC;IACvC,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC;IAC3B,CAAC;IAED,IAAI,IAAI;QACN,IAAI,SAAS,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC1E,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,IAAI,CAAC,GAAW;QAClB,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,IAAI,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;YAChD,2DAA2D;YAC3D,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC;SAC1C;QACD,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,IAAI,KAAK,CAAC,GAAW;QACnB,IAAI,CAAC,OAAO,GAAG,GAAG,CAAC;IACrB,CAAC;IAGD,IAAI,kBAAkB;QACpB,IAAI,UAAU,GAAG,QAAQ,CAAC;QAC1B,IAAI,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;QACnC,QAAQ,UAAU,EAAE;YAChB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,UAAU,GAAG,YAAY,CAAC;gBAC1B,MAAM;YACR,KAAK,CAAC;gBACJ,UAAU,GAAG,QAAQ,CAAC;gBACtB,MAAM;YACR,KAAK,CAAC;gBACJ,UAAU,GAAG,UAAU,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,UAAU,GAAG,yBAAyB,CAAC;gBACvC,MAAM;YACN,eAAe;SAClB;QACD,mDAAmD;QACnD,OAAO,UAAU;IACnB,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAW;QAChC,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,QAAQ,GAAG,EAAE;YACT,gBAAgB;YAClB,KAAK,YAAY;gBACf,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;YACR,KAAK,QAAQ;gBACX,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;YACR,KAAK,UAAU;gBACb,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;YACR,KAAK,yBAAyB;gBAC5B,UAAU,GAAG,CAAC,CAAC;gBACf,MAAM;YACN,eAAe;SAClB;QACD,mDAAmD;QACnD,IAAI,CAAC,YAAY,GAAG,UAAU,CAAC;IACjC,CAAC;IAGD,0CAA0C;IAE1C,sBAAsB;IAEtB,SAAS;QACP,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QAChF,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,IAAI,CAAC,aAAa,EAAE,CAAC;IACvB,CAAC;IAGD,aAAa;QACX,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,GAAG,4BAA4B,CAAC;QAC1C,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QACnG,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,YAAY,CAAC;QAC3C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;QAC7C,aAAa;QACb,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACpB,iDAAiD;YACjD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;gBACd,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,uGAAuG;aACxG;iBAAM;gBACL,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,gBAAgB,EAAE;oBAC1C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBACzE,IAAI,CAAC,YAAY,EAAE,CAAC;oBACtB,CAAC,CAAC,CAAC;oBACH,sEAAsE;iBACvE;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kDAAkD,EAAE,OAAO,CAAC;iBACpF;aACF;SACF;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QACD,sEAAsE;QACtE,+BAA+B;IAGjC,CAAC;IAED,YAAY;QACV,MAAM,MAAM,GAAG,2BAA2B,CAAC;QAC3C,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC5F,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;iBACvC,IAAI,CAAC,GAAG,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;gBACzD,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;YAC/C,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,4CAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;YAClE,CAAC,CAAC,CAAC;SACR;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,sFAAsF,EAAE,OAAO,CAAC,CAAC;YACxH,8BAAW,CAAC,MAAM,EAAE,kDAAkD,CAAC,CAAC;SACzE;IACH,CAAC;IAGD,OAAO;QACL,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACzB,0BAA0B;SAC3B;aAAM,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;gBACrB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;aAC9B;iBAAM;gBACL,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;oBACrB,IAAI,IAAI,CAAC,IAAI,EAAE;wBACb,gDAAgD;wBAChD,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,OAAO,EAAE;4BAC/B,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC;yBAC/B;6BAAM;4BACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;yBAC9B;qBACF;yBAAM;wBACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;qBAC9B;iBACF;aACF;SACF;aAAM;YACL,IAAI,CAAC,SAAS,EAAE,CAAC;SAClB;IACH,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,sCAAsC;QACtC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;YACpB,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;aAAM;YACL,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,EAAE;gBACpB,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,KAAK,CAAC;gBACpC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;aAEjB;SACF;IACH,CAAC;IAED,KAAK;QACH,mCAAmC;QACnC,sCAAiB,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACrD,CAAC;IAGD,iBAAiB;QACf,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,WAAW,EAAE;YAEf,2EAA2E;YAC3E,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC;YACvC,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC;YACzC,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;YAEnD,gCAAgC;YAChC,IAAI,CAAC,OAAO;iBACP,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;iBAC/B,IAAI,CAAC,GAAG,EAAE;gBACT,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;gBAClD,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;gBAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,4CAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBAChE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,yBAAyB,EAAE,OAAO,CAAC,CAAC;YAC7D,CAAC,CAAC,CAAC;SACR;IACH,CAAC;IAED,WAAW;QACT,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAW,CAAC;QACrC,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD,iBAAiB,CAAC,IAAa;QAC7B,MAAM,MAAM,GAAG,gCAAgC,CAAC;QAChD,IAAI,IAAI,EAAE;YACR,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;YAC/F,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,CAAC;gBAElD,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC;gBAC3C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,YAAY,CAAC;gBAC3C,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC;gBAE7C,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;oBAC/B,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC;yBACvC,IAAI,CAAC,GAAG,EAAE;wBACT,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,qBAAqB,EAAE,SAAS,CAAC,CAAC;wBACzD,IAAI,CAAC,cAAc,CAAC,WAAW,GAAG,IAAI,IAAI,EAAE,CAAC;wBAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;oBACf,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACX,IAAI,CAAC,cAAc,EAAE,CAAC;wBACtB,4CAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAChE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;oBAClE,CAAC,CAAC,CAAC;oBACP,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;iBACjB;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,qCAAqC,EAAE,OAAO,CAAC,CAAC;oBACvE,4BAAU,CAAC,MAAM,EAAE,6CAA6C,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;iBACjG;aACF;iBAAM;gBACL,4BAAU,CAAC,MAAM,EAAE,8CAA8C,GAAG,IAAI,CAAC,cAAc,CAAC,CAAC;gBACzF,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,8FAA8F,EAAE,OAAO,CAAC,CAAC;aACjI;SACF;QAGD,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SACjB;IACH,CAAC;IAGD,yBAAyB;IAGzB,cAAc;QACZ,6DAA6D;QAE7D,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC;QAChD,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QAClD,IAAI,CAAC,cAAc,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC;QAElD,IAAI,CAAC,cAAc,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;QAC5C,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;QAC9C,IAAI,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,iBAAiB,CAAC;IAC1D,CAAC;IAED,EAAE;IACF,mBAAmB;IACnB,qBAAqB;IACrB,gDAAgD;IAChD,6CAA6C;IAC7C,oBAAoB;IACpB,kCAAkC;IAClC,qCAAqC;IACrC,4CAA4C;IAC5C,2CAA2C;IAC3C,kEAAkE;IAClE,wBAAwB;IACxB,iFAAiF;IACjF,uBAAuB;IACvB,iCAAiC;IACjC,0DAA0D;IAC1D,0CAA0C;IAC1C,6CAA6C;IAC7C,mCAAmC;IACnC,0EAA0E;IAC1E,4BAA4B;IAC5B,gDAAgD;IAChD,gBAAgB;IAChB,qBAAqB;IACrB,4BAA4B;IAC5B,gBAAgB;IAChB,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,wBAAwB;IACxB,YAAY;IACZ,WAAW;IACX,gCAAgC;IAChC,sBAAsB;IACtB,iCAAiC;IACjC,2EAA2E;IAC3E,2EAA2E;IAC3E,YAAY;IACZ,MAAM;IACN,IAAI;IAGJ,OAAO;QACL,IAAI,IAAI,CAAC,UAAU,EAAE;YACnB,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;aAAM;YACL,4CAAkB,CAAC,SAAS,EAAE,aAAa,CAAC;SAC7C;IACH,CAAC;IAGH,eAAe;IAGb,6BAA6B;IAC7B,8BAA8B;IAC9B,IAAI;IACJ,EAAE;IACF,gCAAgC;IAChC,6BAA6B;IAC7B,IAAI;IAEJ,qCAAqC;IACrC,qDAAqD;IACrD,sBAAsB;IACtB,sCAAsC;IACtC,MAAM;IACN,WAAW;IACX,6BAA6B;IAC7B,MAAM;IACN,kCAAkC;IAClC,iCAAiC;IACjC,MAAM;IACN,WAAW;IACX,8EAA8E;IAC9E,MAAM;IACN,IAAI;IAEJ,wCAAwC;IACxC,4BAA4B;IAC5B,sCAAsC;IACtC,sBAAsB;IACtB,MAAM;IACN,WAAW;IACX,sDAAsD;IACtD,MAAM;IACN,oCAAoC;IACpC,IAAI;IAGN,iCAAiC;IACjC,qBAAqB;IACrB,8FAA8F;IAC9F,mFAAmF;IACnF,2GAA2G;IAC3G,MAAM;IACN,oBAAoB;IACpB,IAAI;IACJ,EAAE;IACF,EAAE;IACF,gCAAgC;IAChC,iCAAiC;IACjC,oCAAoC;IACpC,6FAA6F;IAC7F,gFAAgF;IAChF,QAAQ;IACR,aAAa;IACb,8DAA8D;IAC9D,iFAAiF;IACjF,QAAQ;IACR,MAAM;IACN,wEAAwE;IACxE,iCAAiC;IACjC,IAAI;IAGJ,WAAW;IAGT,WAAW,CAAC,GAAG;QACb,qEAAqE;QACrE,IAAI,CAAC,YAAY,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;IAChF,CAAC;CACF;AAzhBC;IAAC,oBAAI,CAAC,qBAAM,CAAC;2GAAsB,qBAAM,oBAAN,qBAAM;gDAAC;AAohB1C;IAAC,qBAAK,CAAC,QAAQ,CAAC;;;;+CAIf;AAzhBkB,YAAY;IADhC,qBAAS;GACW,YAAY,CA0hBhC;2EA1hBoB,YAAY;;;ACV2S,CAAC,mFAAe,oCAAG,EAAC;;ACAzP;AACvC;AACL;;;AAG3D;AACA,CAAuI;AACvI,IAAI,sBAAS,GAAG,sCAAU;AAC1B,EAAE,4CAAM;AACR,EAAE,4DAAM;AACR,EAAE,qEAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,2DAAe,sBAAS;;AClB2B;AACE;AACI;AACC;AACD;AACE;AACN;;AAErD,IAAI,mDAAM,qBAAqB,0DAA0D,UAAU,sBAAO,EAAE,OAAO,iCAAiC,QAAQ,gEAAgE,iDAAiD,0CAA0C,KAAK,oBAAK,EAAE,mBAAmB,KAAK,mCAAU,EAAE,qDAAqD,YAAY,aAAa,YAAY,sCAAsC,oBAAK,EAAE,aAAa,uBAAuB,QAAQ,mDAAmD,qDAAqD,aAAa,2BAA2B,2DAA2D,mBAAI,EAAE,0BAA0B,8BAA8B,KAAK,oBAAK,EAAE,OAAO,eAAe,KAAK,mBAAmB,+BAA+B,uBAAQ,KAAK,kCAAS,EAAE,0CAA0C,aAAa,UAAU,oDAAoD,wHAAwH,iCAAiC,KAAK,mBAAI,EAAE,0BAA0B,kBAAkB,KAAK,qBAAqB,yBAAyB,mBAAI,EAAE,OAAO,gBAAgB,KAAK,mBAAmB;AACj0C;AACA,IAAI,4DAAe;;;;;ACTnB;;;;;;;;;;GAUG;AACmD;AACA;AAGvC,IAAM,eAAe,GAArB,MAAM,eAAgB,SAAQ,eAAG;IAE9C,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;YACvC,KAAK,SAAS;gBACZ,OAAO,cAAc,CAAC;YACxB;gBACE,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC;SAC1C;IACH,CAAC;IAAA,CAAC;IAEF,IAAI,SAAS;QACX,QAAQ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,EAAE;YACvC,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,SAAS;gBACZ,OAAO,SAAS,CAAC;YACnB,KAAK,OAAO;gBACV,OAAO,OAAO,CAAC;YACjB;gBACE,OAAO,OAAO,CAAC;SAClB;IACH,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe;YAAE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,EAAE,CAAC;QAC7F,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED;;;OAGG;IACH,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,KAAK,CAAC;QACxC,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,kBAAkB,EAAE,EAAE,IAAI,CAAC,CAAC;IAC5D,CAAC;CACF;AA9CoB,eAAe;IADnC,yBAAS,CAAC,EAAE,CAAC;GACO,eAAe,CA8CnC;8EA9CoB,eAAe;;;AChB2S,CAAC,yFAAe,uCAAG,EAAC;;ACAnW;;;;;AEA8F;AAC3B;AACL;AAC9D,CAA4F;;;AAG5F;AACuI;AACvI,IAAI,yBAAS,GAAG,sCAAU;AAC1B,EAAE,kDAAM;AACR,EAAE,mDAAM;AACR,EAAE,4DAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,iEAAe,yBAAS;;;;ACnBxB,IAAI,2DAAM,qBAAqB,0DAA0D;AACzF;AACA,IAAI,oEAAe;;;;;;;ACD0C;AACP;AAEc;AAChB;AAEd;AACV;AACY;AAGzB,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,eAAG;IAA7B;;QAEb,iBAAY,GAA0D,EAAE,CAAC;QACzE,WAAM,GAAG,CAAC,CAAC;QACX,oBAAe,GAAW,EAAE,CAAC;QAC7B,0BAAqB,GAAG,KAAK,CAAC;IAoHhC,CAAC;IAlHC,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,OAAO;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,eAAe,KAAK,EAAE,CAAC,CAAC;YACxC,gBAAM,CAAC,gBAAM,EAAE,CAAC,CAAC,IAAI,CAAC,gBAAM,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,YAAY,CAAC,EAAE,SAAS,CAAC,GAAG,CAAC;YAClF,CAAC;gBACD,KAAK,CAAC;QACV,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,MAAM,CAAC;IAC9C,CAAC;IAED,IAAI,OAAO,CAAC,GAAY;QACtB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,GAAG,CAAC;IACnC,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,WAAW;QACb,OAAO,EAAE,GAAG,CAAC,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACjD,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,MAAM,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IAChF,CAAC;IAGD,gBAAgB,CAAC,GAAG;QAClB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,EAAC,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC,CAAC;IACzG,CAAC;IAED,SAAS;QACP,gFAAoC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACjD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ;gBAAE,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;QAChE,CAAC,CAAC,CAAC;IACL,CAAC;IAEK,KAAK;;YACT,MAAM,WAAW,GAAG,iJAAiJ,CAAC;YACtK,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC,gBAAgB,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,CAAC;YACxG,IAAI,CAAC,OAAO;gBAAE,OAAO;YAErB,kEAA6B,GAAG,yCAAiB,CAAC;YAClD,sDAAsD;YACtD,sBAAsB;YACtB,IAAI,CAAC,SAAS,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YAE5B,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;gBACzB,MAAM,YAAY,GAAG;oBACnB,OAAO,EAAE,IAAI,CAAC,eAAe;iBAC9B,CAAC;gBAEF,IAAI,YAAY,GAAG,IAAI,CAAC;gBAExB,2EAA2E;gBAC3E,+DAA+D;gBAC/D,UAAU;gBACV,kFAAkF;gBAClF,8IAA8I;gBAC9I,mHAAmH;gBACnH,MAAM;gBACN,kBAAkB;gBAClB,mFAAmF;gBACnF,MAAM;gBACN,IAAI;gBAEJ,IAAI,YAAY,EAAE;oBAChB,0BAAS,CAAC,mBAAmB,EAAE,iBAAiB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC;oBACvF,wFAAwC,CAAC,YAAY,CAAC,OAAO,CAAC;yBACzD,IAAI,CAAC,IAAI,CAAC,EAAE;wBACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,wCAAwC,EAAE,SAAS,CAAC,CAAC;wBAC5E,IAAI,CAAC,OAAO,CAAC,QAAQ,GAAG,KAAK,CAAC;wBAC9B,IAAI,CAAC,OAAO,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAC3G,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;oBAC3C,CAAC,CAAC;yBACD,KAAK,CAAC,CAAC,GAA8B,EAAE,EAAE;wBACxC,8BAAW,CAAC,mBAAmB,EAAE,kBAAkB,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;wBAChE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,2CAA2C,EAAE,OAAO,CAAC,CAAC;wBAC7E,IAAI,CAAC,qBAAqB,GAAG,IAAI,CAAC;oBACpC,CAAC,CAAC,CAAC;iBACR;aACF;YACD,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,CAAC;KAAA;IAED,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAChB,oEAA8B,GAAG,IAAI,CAAC;QACtC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,eAAe,CAAC,IAAI;QAClB,IAAI,UAAU,GAAG,gBAAM,CAAC,IAAI,CAAC,CAAC;QAC9B,IAAI,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,IAAI;YAAE,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QAChE,OAAO,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACzC,CAAC;IAED,OAAO;QACL;;;;;;YAMI;IACN,CAAC;CAEF;AAtFC;IAAC,qBAAK,CAAC,aAAa,CAAC;;;;mDAGpB;AAtCkB,WAAW;IAD/B,qBAAS;GACW,WAAW,CAyH/B;0EAzHoB,WAAW;;;ACZ2S,CAAC,kFAAe,mCAAG,EAAC;;ACAzP;AACvC;AACL;;;AAG1D;AACA,CAAuI;AACvI,IAAI,qBAAS,GAAG,sCAAU;AAC1B,EAAE,2CAAM;AACR,EAAE,2DAAM;AACR,EAAE,oEAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAAe,qBAAS;;AClB2B;AACE;AACO;AACH;AACA;AACJ;AACE;AACI;AACK;;AAEhE,IAAI,0DAAM,qBAAqB,0DAA0D,UAAU,sBAAO,EAAE,OAAO,kBAAkB,QAAQ,kEAAkE,mDAAmD,4CAA4C,KAAK,gCAAQ,KAAK,8BAAa,wCAAwC,sBAAO,KAAK,mBAAI,EAAE,OAAO,UAAU,KAAK,mBAAmB,KAAK,oBAAK,mCAAmC,oBAAK,KAAK,kCAAS,EAAE,6BAA6B,+IAA+I,qCAAY,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,UAAU,KAAK,mBAAmB;AAC1uB;AACA,IAAI,mEAAe;;;;;ACXmC;AACA;AAGvC,IAAM,sBAAsB,GAA5B,MAAM,sBAAuB,SAAQ,eAAG;IAErD,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;IAC5C,CAAC;CACF;AAToB,sBAAsB;IAD1C,yBAAS,CAAC,EAAE,CAAC;GACO,sBAAsB,CAS1C;qFAToB,sBAAsB;;;ACL2S,CAAC,6FAAe,8CAAG,EAAC;;ACArQ;AAC3B;AACL;;;AAGrE;AACA,CAAuI;AACvI,IAAI,gCAAS,GAAG,sCAAU;AAC1B,EAAE,sDAAM;AACR,EAAE,0DAAM;AACR,EAAE,mEAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,qEAAe,gCAAS;;;;;;AClBT,MAAM,eAAe;IAApC;QACI,QAAG,GAAG,EAAE,CAAC;QACT,QAAG,GAAG,EAAE,CAAC;QACT,SAAI,GAAG,EAAE,CAAC;QACV,QAAG,GAAG,EAAE,CAAC;QACT,UAAK,GAAG,EAAE,CAAC;QACX,cAAS,GAAG,EAAE,CAAC;QACf,gBAAW,GAAG,EAAE,CAAC;QACjB,YAAO,GAAG,EAAE,CAAC;QACb,cAAS,GAAG,EAAE,CAAC;QACf,WAAM,GAAG,EAAE,CAAC;QACZ,cAAS,GAAG,EAAE,CAAC;QACf,OAAE,GAAG,EAAE,CAAC;QACR,SAAI,GAAG,EAAE,CAAC;QACV,SAAI,GAAG,CAAC,CAAC;QACT,WAAM,GAAW,EAAE,CAAC;QAEpB,QAAG,GAAG,EAAE,CAAC;QAET,QAAG,GAAG,EAAE,CAAC;QAET,QAAG,GAAG,EAAE,CAAC;IACb,CAAC;CAAA;;;;;;;;;ACtBkD;AACE;AACI;AACL;AACM;AACD;AACL;AACI;AACE;AACP;;AAEnD,IAAI,6DAAM,qBAAqB,0DAA0D,UAAU,mBAAI,KAAK,sBAAO,EAAE,OAAO,oHAAoH,KAAK,oBAAK,KAAK,kCAAS,EAAE,qCAAqC,kDAAkD,KAAK,yBAAU,EAAE,OAAO,6BAA6B,QAAQ,4CAA4C,eAAe,sBAAsB,KAAK,uBAAQ,EAAE,QAAQ,KAAK,yBAAU,EAAE,aAAa,iBAAiB,KAAK,mBAAI,EAAE,oBAAoB,KAAK,mBAAI,KAAK,mBAAI,UAAU,0BAA0B,0BAA0B,mBAAI,UAAU,0BAA0B,gHAAgH,mBAAI,oHAAoH,mBAAI,YAAY,aAAa,sFAAsF,uBAAuB,OAAO,qHAAqH,KAAK,2BAA2B,gEAAgE,uBAAuB,OAAO,mMAAmM,KAAK,2BAA2B,iEAAiE,uBAAuB,OAAO,2MAA2M,KAAK,2BAA2B,qEAAqE,sBAAsB,4BAA4B,KAAK,mBAAI,EAAE,sCAAsC,qBAAqB,QAAQ,0BAA0B,KAAK,yBAAyB,eAAe,uCAAuC,iCAAiC,yBAAyB,YAAY,OAAO,0CAA0C,eAAe,uBAAQ,EAAE,QAAQ,KAAK,yBAAU,EAAE,aAAa,iBAAiB,KAAK,mBAAI,YAAY,aAAa,sDAAsD,cAAc,aAAa,mCAAmC,QAAQ,gEAAgE,WAAW,cAAc,eAAe,OAAO,4DAA4D,WAAW,mBAAI,EAAE,oBAAoB,KAAK,mBAAI,KAAK,mBAAI,UAAU,0BAA0B,0BAA0B,mBAAI,UAAU,0BAA0B,uEAAuE,mBAAI,4JAA4J,4BAA4B,KAAK,mBAAI,EAAE,aAAa,KAAK,qBAAM,mEAAmE,gCAAgC,mBAAmB,KAAK,yBAAyB,eAAe,4BAA4B,mBAAI,EAAE,sCAAsC,qBAAqB,QAAQ,0BAA0B,KAAK,yBAAyB,eAAe,uCAAuC,iCAAiC,yBAAyB,YAAY,OAAO,0CAA0C,eAAe,uBAAQ,EAAE,QAAQ,KAAK,yBAAU,EAAE,aAAa,iBAAiB,KAAK,mBAAI,YAAY,aAAa,sDAAsD,cAAc,aAAa,mCAAmC,QAAQ,gEAAgE,WAAW,cAAc,eAAe,OAAO,iDAAiD,WAAW,mBAAI,EAAE,oBAAoB,KAAK,mBAAI,KAAK,mBAAI,UAAU,0BAA0B,0BAA0B,mBAAI,UAAU,0BAA0B,qEAAqE,mBAAI,8RAA8R,aAAa,kBAAkB,QAAQ,wEAAwE,+EAA+E,4BAA4B,KAAK,mBAAI,EAAE,aAAa,KAAK,qBAAM,mEAAmE,gCAAgC,mBAAmB,KAAK,yBAAyB,eAAe,4BAA4B,mBAAI,EAAE,sCAAsC,qBAAqB,QAAQ,0BAA0B,KAAK,yBAAyB,uCAAuC,iCAAiC,yBAAyB,YAAY,OAAO,0CAA0C;AACrsK;AACA,IAAI,sEAAe;;;;;;;ACXqC;AACA;AACe;AACa;AACC;AACH;AAC5B;AACN;AAGjC,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,eAAG;IAA/B;;QAEb,WAAM,GAAG,CAAC,CAAC;QAEX,uBAAkB,GAAG,+CAAkB,CAAC;QACxC,sBAAiB,GAAuB,IAAI,CAAC;QAC7C,4BAAuB,GAAuB,IAAI,CAAC;IA6ErD,CAAC;IA3EC,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,6BAAe,CAAC;IACzB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,6BAAY,CAAC;IACtB,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,IAAI,CAAC,iBAAiB,IAAI,IAAI,EAAE;YAClC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;SAC5D;QACD,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,IAAI,eAAe,CAAC,GAAuB;QACzC,IAAI,CAAC,iBAAiB,GAAG,GAAG,CAAC;IAC/B,CAAC;IAED,qBAAqB,CAAC,IAAwB;QAC5C,IAAI,IAAI,KAAK,yDAAuB,EAAE;YACpC,IAAI,CAAC,uBAAuB,GAAG,yDAAuB,CAAC;SACxD;aACI,IAAI,IAAI,CAAC,uBAAuB,KAAK,yDAAuB,EAAE;YACjE,IAAI,CAAC,uBAAuB,GAAG,IAAI,KAAK,2DAAwB,CAAC,CAAC,CAAC,2DAAwB,CAAC,CAAC,CAAC,mEAA4B,CAAC;SAC5H;aACI,IAAI,IAAI,CAAC,uBAAuB,KAAK,2DAAwB,EAAE;YAClE,IAAI,CAAC,uBAAuB,GAAG,IAAI,KAAK,2DAAwB,CAAC,CAAC,CAAC,yDAAuB,CAAC,CAAC,CAAC,mFAAoC,CAAC;SACnI;aACI,IAAI,IAAI,CAAC,uBAAuB,KAAK,mEAA4B,EAAE;YACtE,IAAI,CAAC,uBAAuB,GAAG,IAAI,KAAK,mEAA4B,CAAC,CAAC,CAAC,yDAAuB,CAAC,CAAC,CAAC,mFAAoC,CAAC;SACvI;aACI,IAAI,IAAI,CAAC,uBAAuB,KAAK,mFAAoC,EAAE;YAC9E,IAAI,CAAC,uBAAuB,GAAG,IAAI,KAAK,2DAAwB,CAAC,CAAC,CAAC,mEAA4B,CAAC,CAAC,CAAC,2DAAwB,CAAC;SAC5H;IACH,CAAC;IAED,WAAW;QACT,gBAAgB;QAChB,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,uBAAuB,CAAC;QACtD,IAAI,CAAC,YAAY,CAAC,eAAe,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3D,8DAA2B,GAAG,IAAI,CAAC,eAAe,CAAC;QAEnD,MAAM,SAAS,GAAG,GAAG,EAAE;YACrB,IAAI,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE;gBACzC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;gBACrC,IAAI,CAAC,OAAO,CAAC,wBAAwB,GAAG,KAAK,CAAC;gBAC9C,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,CAAC;aACxC;iBAAM;gBACL,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;gBACrC,UAAU,CAAC,GAAG,EAAE;oBACd,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;oBACzC,UAAU,CAAC,GAAG,EAAE;wBACd,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;oBAC5C,CAAC,EAAE,gFAAoC,CAAC,CAAC;gBAC3C,CAAC,EAAE,0EAAiC,CAAC,CAAC;aACvC;QACH,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;YAClD,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACb,SAAS,EAAE,CAAC;QACd,CAAC,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,eAAe,CAAC;QAC3D,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACxD,CAAC;CAEF;AAnFoB,aAAa;IADjC,yBAAS,CAAC,EAAE,UAAU,EAAE,EAAE,cAAc,iCAAE,EAAE,CAAC;GACzB,aAAa,CAmFjC;4EAnFoB,aAAa;;;ACZ2S,CAAC,wFAAe,qCAAG,EAAC;;ACAjW;;;;;AEAwG;AACvC;AACL;AAC5D,CAAuG;;;AAGvG;AACuI;AACvI,IAAI,uBAAS,GAAG,sCAAU;AAC1B,EAAE,iDAAM;AACR,EAAE,6DAAM;AACR,EAAE,sEAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,gEAAe,uBAAS;;;;ACjBI;AACM;AACoB;AACQ;AACoB;AACpC;AACH;AACL;AACuB;AACc;AACvB;AACN;AACiD;AACrC;AACQ;AACA;AAEF;AACA;AAEI;AACA;AACR;AACM;AAEtB;AAEgB;AAChB;AACc;AACG;AACH;AACM;AACS;AACW;AACtB;AACsB;AACJ;AAClB;AACR;AACc;AACpC;AACgC;AACM;AA0BvD,IAAM,GAAG,GAAT,MAAM,GAAI,SAAQ,eAAG;IAArB;QAGb,eAAe;;QAEf,eAAU,GAAG,CAAC,CAAC;QACf,iBAAY,GAAG,KAAK,CAAC;QACrB,cAAS,GAAG,EAAE,CAAC;QACf,WAAM,GAAG,IAAI,CAAC;QACd,YAAO,GAAG,KAAK,CAAC;QAChB,gBAAW,GAAG,IAAI,CAAC;QAEnB,sBAAiB,GAAG,CAAC,CAAC;QAEtB,iBAAiB;QACjB,uBAAkB,GAAG,KAAK,CAAC;QAC3B,mBAAc,GAAG,KAAK,CAAC;QACvB,uBAAkB,GAAG,CAAC,CAAC;QACvB,sBAAiB,GAAG,CAAC,CAAC;QACtB,oBAAe,GAAkB,IAAI,CAAC;QACtC,aAAQ,GAAG,EAAE,CAAC;QACd,aAAQ,GAAG,EAAE,CAAC;QACd,qBAAgB,GAAG,EAAE,CAAC;QACtB,4BAAuB,GAAG,8EAAmC,CAAC;QAC9D,4BAAuB,GAAG,KAAK,CAAC;QAChC,oBAAe,GAAG,KAAK,CAAC;QAk+BxB,YAAY;IAGd,CAAC;IAn+BC,IAAI,aAAa;QACf,OAAO,IAAI,CAAC,UAAU,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,eAAe;YACnD,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,sDAAuB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,kCAAa,CAAC;IAC5J,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;IACtC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,IAAI;QACN,OAAO,6BAAY;IACrB,CAAC;IAED,IAAI,aAAa;QACf,OAAO,6BAAe,CAAC;IACzB,CAAC;IAED,IAAI,YAAY;QACd,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC;QACtC,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC3D,0EAA0E;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,YAAY;QACd,IAAI,QAAQ,GAAG,IAAI,CAAC,UAAU,KAAK,EAAE,CAAC;QACtC,IAAI,KAAK,GAAG,QAAQ,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,iBAAiB,CAAC;QAC3D,0EAA0E;QAC1E,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;IACnC,CAAC;IAED,IAAI,YAAY;QACd,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,gBAAM,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/H,CAAC;IAED,WAAW,CAAC,GAAW;QACrB,IAAI,QAAQ,GAAY,KAAK,CAAC;QAE9B,gBAAgB;QAChB,QAAQ,GAAG,EAAE;YACX,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;oBACzB,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,EAAE;gBACL,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;oBAC1B,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,EAAE;gBACL,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;oBAC1B,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;YACR,KAAK,EAAE;gBACL,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE,EAAE;oBAC1B,QAAQ,GAAG,IAAI,CAAC;iBACjB;gBACD,MAAM;SACT;QACD,eAAe;QACf,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,QAAQ;QACN,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE;YACzB,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC;SAC/B;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,8CAAqB,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC;IACpE,CAAC;IAED,IAAI,OAAO;QACT,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE;YACxD,OAAO,iBAAiB,CAAC;SAC1B;QACD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,QAAQ,GAAG,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,CAAC,EAAE;YAC/B,IAAI,GAAG,GAAG,gBAAM,EAAE,CAAC;YACnB,IAAI,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAC3D,IAAI,QAAQ,GAAG,yBAAe,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YACrD,IAAI,YAAY,GAAG,QAAQ,CAAC,QAAQ,EAAE,CAAC;YACvC,QAAQ,GAAG,cAAc,YAAY,MAAM,CAAC;SAC7C;QACD,OAAO,QAAQ,CAAC;QAEhB,+FAA+F;IACjG,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC;IAC/B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,uCAAiB,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,KAAK,uCAAiB,CAAC;IAC5F,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;IAC7B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,SAAS;QACX,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/D,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,aAAa;QACf,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;YACzB,OAAO,iBAAiB,CAAC;SAC1B;aAAM,IAAI,IAAI,CAAC,UAAU,EAAE;YAC1B,OAAO,mBAAmB,CAAC;SAC5B;aAAM;YACL,OAAO,SAAS,CAAC;SAClB;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,wDAA0B,KAAK,2DAA+B,CAAC;IACxE,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,wDAA0B,KAAK,uEAAqC,CAAC;IAC9E,CAAC;IAED,IAAI,gBAAgB;QAClB,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,eAAe,EAAE;YAC7G,OAAO,GAAG,IAAI,CAAC,eAAe,aAAa,IAAI,CAAC,eAAe,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,YAAY,CAAC;SAC9F;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,6BAA6B;QAC/B,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;YAC1B,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC7B,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,UAAU;IACrB,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;YAC1B,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC7B,gBAAM,EAAE,CAAC,IAAI,CAAC,gBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE;YACzE,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,kBAAkB,CAAC;IAC9B,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,IAAI,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,OAAO,CAAC,kBAAkB,CAAC;IAC3F,CAAC;IAED,IAAI,sBAAsB;QACxB,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU;YAC1B,IAAI,CAAC,OAAO,CAAC,gBAAgB;YAC7B,gBAAM,EAAE,CAAC,IAAI,CAAC,gBAAM,CAAC,IAAI,CAAC,OAAO,CAAC,uBAAuB,CAAC,EAAE,OAAO,CAAC,GAAG,EAAE;YACzE,IAAI,CAAC,cAAc;YACnB,IAAI,CAAC,kBAAkB,CAAC;IAC9B,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,GAAG,GAAG,gBAAM,EAAE,CAAC;QACnB,IAAI,GAAG,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,iBAAiB,EAAE;YACxC,IAAI,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,CAAC,kBAAkB,EAAE;gBAC1C,OAAO,IAAI,CAAC;aACb;SACF;QACD,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,YAAY;QACd,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC;SACrC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,OAAO,IAAI,CAAC,QAAQ,CAAC;SACtB;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,UAAU;QACZ,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC;QAChC,OAAO,CAAC,OAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,CAAC,IAAI,sDAAuB,EAAE,CAAC,KAAI,CAAC,OAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,UAAU,CAAC,IAAI,kCAAa,EAAE,CAAC,EAAC;IACxG,CAAC;IAED,WAAW;QACT,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/C,CAAC;IAED,kBAAkB;IAGlB,uBAAuB;IAEvB,oBAAoB;IACpB,qDAAqD;IACrD,QAAQ;IACR,IAAI;IAEJ;;;;OAIG;IAEH,kBAAkB;QAChB,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,IAAI,IAAI,EAAE,CAAC;IACpD,CAAC;IAED,eAAe;QACb,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;IAC9B,CAAC;IAED,aAAa;QACX,MAAM,CAAC,IAAI,CAAC,mDAAmD,EAAE,QAAQ,CAAC,CAAC;IAC7E,CAAC;IAED,0BAA0B;QACxB,0BAAS,CAAC,2BAA2B,EAAE,kDAAkD,CAAC,CAAC;QAC3F,IAAI,CAAC,uBAAuB,GAAG,IAAI,CAAC;IACtC,CAAC;IAED,mBAAmB;QACjB,0BAAS,CAAC,2BAA2B,EAAE,0CAA0C,CAAC,CAAC;QACnF,MAAM,CAAC,IAAI,CAAC,+DAA+B,EAAE,QAAQ,CAAC,CAAC;IACzD,CAAC;IAED,aAAa;QACX,sFAAsF;QACtF,0BAA0B;QAC1B,cAAc;QACd,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;IACpC,CAAC;IAED,cAAc;QACZ,MAAM,CAAC,IAAI,CAAC,wDAAwD,4CAAoB,EAAE,EAAE,QAAQ,CAAC,CAAC;QACtG,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,SAAS;QACP,IAAI,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;QACnC,IAAI,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE;YAC/B,OAAO,GAAG,UAAU,CAAC;SACtB;QACD,qCAAqC;QACrC,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD,YAAY,CAAC,GAAG,EAAE,UAAoB;QACpC,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC,EAAE;YACzB,IAAI,GAAG,GAAG,EAAE,CAAC;YACb,IAAI,IAAI,CAAC,WAAW,EAAE;gBACpB,GAAG,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;aACnC;iBAAM;gBACL,IAAI,OAAO,GAAG,sDAAuB,CAAC;gBACtC,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;aACtD;YAED,IAAI,UAAU,EAAE;gBACd,IAAI,CAAC,IAAI,CAAC,SAAS,GAAG,uCAAiB,CAAC;aACzC;YAED,kCAAkC;YAClC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;SACxC;IACH,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACzE,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1E,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACxE,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACxE,CAAC;IAED,UAAU;QACR,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,OAAO,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACxE,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1E,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,SAAS,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC1E,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,UAAU,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3E,CAAC;IAED,aAAa;QACX,IAAI,IAAI,CAAC,UAAU,KAAK,CAAC;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,UAAU,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3E,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACxE,CAAC;IAED,eAAe;QACb,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,MAAM,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IACxE,CAAC;IAED,gBAAgB;QACd,IAAI,IAAI,CAAC,UAAU,KAAK,EAAE;YAAE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,aAAa,EAAC,CAAC,CAAC,KAAK,EAAE,CAAC;IAC/E,CAAC;IAGD,YAAY;IAGZ,sBAAsB;IAEtB,SAAS,CAAC,WAAoB,EAAE,WAAoB,KAAK;QACvD,0DAA0D;QAC1D,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAChD,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,gDAAgD;QAChD,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;IAClC,CAAC;IAGD,WAAW,CAAC,aAAqB;QAC/B,gEAAgE;QAChE,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC;IAC1C,CAAC;IAED,UAAU,CAAC,IAAY;QACrB,6CAA6C;QAC7C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,UAAU,CAAC,KAAiB;QAC1B,+CAA+C;QAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,YAAY,CAAC,MAA0B;QACrC,+CAA+C;QAC/C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAED,kCAAkC;IAClC,yCAAyC;IACzC,IAAI;IAGJ,YAAY,CAAC,KAAc;QACzB,+CAA+C;QAC/C,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;IAGD,aAAa,CAAC,QAAiB;QAC7B,wDAAwD;QACxD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAC;IACvC,CAAC;IAED,YAAY,CAAC,QAAiB;QAC5B,uDAAuD;QACvD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,eAAe,CAAC,QAAiB;QAC/B,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAED,YAAY,CAAC,QAAiB;QAC5B,uDAAuD;QACvD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAED,cAAc,CAAC,QAAiB;QAC9B,yDAAyD;QACzD,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxC,CAAC;IAED,YAAY,CAAC,QAAiB;QAC5B,uDAAuD;QACvD,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IACtC,CAAC;IAGD,UAAU,CAAC,KAAc;QACvB,+CAA+C;QAC/C,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;IAED,YAAY,CAAC,CAAC;QACZ,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,yBAAyB;QACzB,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7B,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAE7B,aAAa;YACb,IAAI,GAAG,GAAG,4CAAkB,CAAC;YAC7B,IAAI,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;YACpB,IAAI,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;YAC9B,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YAE9B,oCAAoC;YACpC,IAAI,GAAG,GAAG,GAAG,8CAAmB,qBAAqB,GAAG,EAAE,CAAC;YAC3D,0DACS,CACD,GAAG,EACH,QAAQ,EACR,EAAC,OAAO,EAAE,EAAC,cAAc,EAAE,qBAAqB,EAAC,EAAC,CACrD;iBACA,IAAI,CAAC,GAAG,CAAC,EAAE;gBACV,IAAI,GAAG,EAAE;oBACP,IAAI,GAAG,CAAC,IAAI,EAAE;wBACZ,IAAI,MAAM,GAAG,6CAAqB,CAAC,GAAG,CAAC,IAAI,CAAC;wBAC5C,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;4BAE1B,8BAA8B;4BAC9B,IAAI,GAAG,IAAI,4CAAkB,EAAE;gCAC7B,sCAAiB,GAAG,MAAM,CAAC;gCAC3B,kCAAkC;6BACnC;4BAED,oBAAoB;4BACpB,IAAI,MAAM,GAAG,kDAAuB,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,IAAI,GAAG,CAAC,CAAC;4BAC3D,IAAI,MAAM,EAAE;gCACV,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC;6BAChC;yBACF;qBACF;yBAAM;wBACL,8BAAW,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,GAAG,CAAC,MAAM,gBAAgB,0CAAiB,EAAE,CAAC;qBACzF;iBACF;qBAAM;oBACL,8BAAW,CAAC,MAAM,EAAE,YAAY,GAAG,2BAA2B,0CAAiB,EAAE,CAAC;iBACnF;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,UAAU,GAAG;gBAClB,8BAAW,CAAC,MAAM,EAAE,kBAAkB,GAAG,EAAE,CAAC,CAAC;YAC/C,CAAC,CAAC,CAAC;SACR;IACH,CAAC;IAGD,MAAM;QACJ,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,wBAAwB;QACxB,IAAI,CAAC,OAAO;aACP,SAAS,EAAE;aACX,OAAO,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,kBAAkB;;QAChB,MAAM,MAAM,GAAG,wBAAwB,CAAC;QACxC,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;QAG1D,IAAI;YACF,MAAM,UAAU,GAAG,oDAAsB,CAAC;YAC1C,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAoB,CAAC;YAC7D,MAAM,eAAe,GAAG,CAAC,CAAC,YAAY,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,YAAY,CAAC,GAAG,IAAI,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,WAAW,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC;YAEhK,IAAI,CAAC,eAAe,EAAE;gBACpB,YAAY,GAAG,IAAI,eAAe,EAAE,CAAC;aACtC;YAED,IAAI,gBAAgB,GAAG,EAAqB,CAAC;YAC7C,MAAM,UAAU,GAAG,gCAAW,CAAC,OAAO,CAAC,CAAC;YACxC,IAAI,UAAU,EAAE;gBACd,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAoB,CAAC;aAC9D;YACD,IAAI,IAAI,GAAG,IAAI,eAAe,EAAE,CAAC;YACjC,IAAI,CAAC,GAAG,GAAG,YAAM,CAAC,GAAG,CAAC,OAAO,CAAC,mCAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnG,IAAI,CAAC,GAAG,GAAG,YAAM,CAAC,GAAG,CAAC,OAAO,CAAC,mCAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnG,IAAI,CAAC,IAAI,GAAG,YAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,mCAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YACxG,IAAI,CAAC,GAAG,GAAG,YAAM,CAAC,GAAG,CAAC,OAAO,CAAC,mCAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACnG,IAAI,CAAC,KAAK,GAAG,YAAM,CAAC,GAAG,CAAC,OAAO,CAAC,mCAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;YAC3G,IAAI,CAAC,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,YAAY,CAAC,mCAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAChI,IAAI,CAAC,WAAW,GAAG,YAAM,CAAC,GAAG,CAAC,cAAc,CAAC,mCAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;YAC1I,IAAI,CAAC,OAAO,GAAG,YAAM,CAAC,GAAG,CAAC,UAAU,CAAC,mCAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC;YACtH,IAAI,CAAC,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,YAAY,CAAC,mCAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAChI,IAAI,CAAC,MAAM,GAAG,YAAM,CAAC,GAAG,CAAC,SAAS,CAAC,mCAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YACjH,IAAI,CAAC,SAAS,GAAG,YAAM,CAAC,GAAG,CAAC,WAAW,CAAC,mCAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC/H,IAAI,CAAC,EAAE,GAAG,YAAM,CAAC,GAAG,CAAC,IAAI,CAAC,mCAAI,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;YAC1G,IAAI,CAAC,GAAG,GAAG,YAAM,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACjG,IAAI,CAAC,GAAG,GAAG,YAAM,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACjG,IAAI,CAAC,GAAG,GAAG,YAAM,CAAC,GAAG,CAAC,KAAK,CAAC,mCAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;YACjG,IAAI,CAAC,MAAM,GAAG,YAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,mCAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAEhH,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YACnC,IAAI,OAAO,EAAE;gBACX,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE;oBAClB,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC;iBACpB;qBAAM;oBACL,IAAI,CAAC,IAAI,GAAG,sBAAgB,CAAC,IAAI,mCAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAClF;aACF;iBAAM;gBACL,IAAI,CAAC,IAAI,GAAG,sBAAgB,CAAC,IAAI,mCAAI,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;aAClF;YAED,MAAM,eAAe,GAAG,QAAQ,CAAC,YAAM,CAAC,GAAG,CAAC,cAAc,CAAC,mCAAI,GAAG,CAAC,CAAC;YAEpE,kEAA+B,GAAG,eAAe,KAAK,CAAC,CAAC;YAExD,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,6DAA2B,GAAG,IAAI,CAAC,GAAG,CAAC;aACxC;YACD,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,iEAA6B,GAAG,IAAI,CAAC,GAAG,CAAC;aAC1C;YACD,IAAI,IAAI,CAAC,GAAG,EAAE;gBACZ,6DAA2B,GAAG,IAAI,CAAC,GAAG,CAAC;aACxC;YAGD,IAAI;gBACF,MAAM,IAAI,GAAG,gCAAW,CAAC,0DAAyB,CAAC,CAAC;gBACpD,IAAI,IAAI,EAAE;oBACR,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;iBAClB;aACF;YAAC,OAAO,OAAO,EAAE;gBAChB,8BAAW,CAAC,MAAM,EAAE,mCAAmC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;aACnF;YAED,IAAI,IAAI,CAAC,EAAE,IAAI,CAAC,oDAAsB,IAAI,CAAC,gEAA4B,EAAE;gBACvE,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,KAAK,CAAC;aACjC;YAED,oDAAsB,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAC/C;QAAC,OAAO,GAAG,EAAE;YACZ,8BAAW,CAAC,MAAM,EAAE,sCAAsC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;SAClF;IACH,CAAC;IAED,eAAe;QACb,MAAM,MAAM,GAAG,qBAAqB,CAAC;QAErC,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI;YACF,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;YAC1D,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE;gBAClC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;aACtC;iBAAM,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC1C,IAAI,CAAC,OAAO,CAAC,iBAAiB,GAAG,IAAI,CAAC;aACvC;iBAAM,IAAI,MAAM,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE;gBAC7E,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;aACrC;YACD,gBAAgB;YAChB,QAAQ,MAAM,EAAE;gBACd,KAAK,OAAO;oBACV,kDAAqB,GAAG,4EAAkC,CAAC;oBAC3D,MAAM;gBACR,KAAK,QAAQ;oBACX,kDAAqB,GAAG,8EAAmC,CAAC;oBAC5D,MAAM;gBACR,KAAK,MAAM;oBACT,kDAAqB,GAAG,0EAAiC,CAAC;oBAC1D,MAAM;gBACR,KAAK,MAAM;oBACT,kDAAqB,GAAG,0EAAiC,CAAC;oBAC1D,MAAM;gBACR,KAAK,UAAU;oBACb,kDAAqB,GAAG,sEAA+B,CAAC;oBACxD,MAAM;gBACR,KAAK,MAAM;oBACT,kDAAqB,GAAG,0EAAiC,CAAC;oBAC1D,MAAM;gBACR,KAAK,MAAM;oBACT,kDAAqB,GAAG,kEAA6B,CAAC;oBACtD,MAAM;aACT;YACD,eAAe;SAChB;QAAC,OAAO,GAAG,EAAE;YACZ,8BAAW,CAAC,MAAM,EAAE,qBAAqB,MAAM,SAAS,GAAG,EAAE,CAAC,CAAC;SAChE;IACH,CAAC;IAED,QAAQ;QACN,kCAAkC;QAClC,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,EAAE,CAAC;QAChB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;YAClB,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,kCAAa,CAAC,CAAC;QACzC,CAAC,CAAC,CAAC;IAEL,CAAC;IAED,YAAY;IAGZ,cAAc;IAGd,gBAAgB,CAAC,KAAc;QAC7B,gDAAgD;QAChD,4BAA4B;QAC5B,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,kBAAkB,EAAE,CAAC;IACjC,CAAC;IAGD,UAAU,CAAC,KAAe;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,kBAAkB,CAAC;QAClC,sBAAsB;QAEtB,IAAI,MAAM,GAAG,4CAAkB,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACzF,8BAA8B;QAC9B,IAAI,cAAc,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC;QAEhG,IAAI,CAAC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACxC,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC;SACnC;aAAM;YACL,IAAI,CAAC,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;SAC3B;QAED,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,IAAI,cAAc,EAAE;YAC7E,uBAAuB;YACvB,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;SACtE;aAAM;YACL,oCAAoC;YACpC,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACtC,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;SAC9B;IAEH,CAAC;IAGD,UAAU,CAAC,KAAe;QACxB,iCAAiC;QACjC,IAAI,oEAA8B,EAAE;YAClC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;SACzB;IACH,CAAC;IAGD,UAAU,CAAC,KAAe;QACxB,iCAAiC;QACjC,IAAI,oEAA8B,EAAE;YAClC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;SAC5B;IACH,CAAC;IAGD,WAAW,CAAC,MAAiB;QAC3B,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,kCAAkC;QAElC,IAAI,MAAM,GAAG,4CAAkB,CAAC,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACtF,6CAA6C;QAE7C,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACpC,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE;YAC/B,IAAI,CAAC,WAAW,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;SAChC;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;SACvB;QAED,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,UAAU,IAAI,MAAM,CAAC,SAAS,EAAE;YAC3D,oHAAoH;YAEpH,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;gBAC/C,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;oBACzB,IAAI,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;wBAC5B,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;qBACzB;gBACH,CAAC,CAAC,CAAC;aACJ;SAEF;IAEH,CAAC;IAGD,eAAe,CAAC,UAAqB,EAAE,SAAoB;QACzD,2EAA2E;QAC3E,+CAA+C;QAC/C,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,gBAAgB,GAAG,KAAK,CAAC;QAC7B,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;QAEjD,IAAI,8CAAqB,EAAE;YACzB,+DAA+D;YAC/D,IAAI,aAAa,EAAE;gBACjB,MAAM,cAAc,GAAG,aAAa,IAAI,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC;gBAC1F,oEAAoE;gBACpE,IAAI,cAAc,EAAE;oBAClB,MAAM,aAAa,GAAG,QAAQ,IAAI,QAAQ,CAAC,OAAO,KAAK,aAAa,CAAC;oBACrE,IAAI,aAAa,EAAE;wBACjB,gBAAgB,GAAG,IAAI,CAAC;wBACxB,kEAAkE;qBACnE;yBAAM;wBACL,gBAAgB,GAAG,IAAI,CAAC;wBACxB,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,CAAC;wBAC5C,wEAAwE;qBACzE;iBACF;qBAAM;oBACL,IAAI,IAAI,CAAC,WAAW,EAAE;wBACpB,IAAI,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC;wBAC/E,gEAAgE;wBAChE,IAAI,aAAa,EAAE;4BACjB,gBAAgB,GAAG,IAAI,CAAC;4BAExB,0EAA0E;4BAC1E,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,aAAa,CAAC,CAAC;4BACnC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;4BACpD,+EAA+E;yBAChF;qBACF;iBACF;aACF;YAED,IAAI,CAAC,gBAAgB,EAAE;gBAErB,IAAI,QAAQ,EAAE;oBACZ,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,QAAQ,CAAC,OAAO,CAAC,CAAC;oBAClF,IAAI,QAAQ,IAAI,CAAC,EAAE;wBACjB,MAAM,cAAc,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,aAAa,CAAC,CAAC;wBACzE,uBAAuB;wBACvB,kEAAkE;wBAClE,GAAG;wBACH,QAAQ;wBACR,oEAAoE;wBAEpE,wCAAwC;wBAExC,iCAAiC;wBACjC,oCAAoC;wBACpC,0CAA0C;wBAC1C,6FAA6F;wBAC7F,GAAG;qBACJ;iBACF;qBAAM;oBACL,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;wBAEzB,IAAI,UAAU,GAAG,UAAU,CAAC,CAAC,CAAC,CAAC;wBAC/B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;wBAChC,IAAI,CAAC,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;wBACjD,sEAAsE;wBACtE,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;wBACzC,oEAAoE;qBACrE;yBAAM;wBACL,gDAAgD;wBAChD,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;wBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;qBAC/B;iBACF;aACF;YAED,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;SAC1B;IACH,CAAC;IAED,WAAW,CAAC,IAAiB;QAC3B,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAED,mBAAmB;QACjB,IAAI,CAAC,OAAO,CAAC,uBAAuB,GAAG,KAAK,CAAC;QAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,WAAW;IAGX,mBAAmB;IAEnB,OAAO;QACL,mDAAmD;QACnD,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,GAAG,8CAAmB,KAAK,QAAQ,CAAC;QAC5D,IAAI,CAAC,OAAO,CAAC,UAAU,GAAG,8CAAmB,KAAK,QAAQ,CAAC;QAC3D,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,kBAAkB,EAAE,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,iCAAc,CAAC,YAAY,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,CAAC,SAAS,CAAC;YACb,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,aAAa,EAAE,CAAC;QAErB,KAAK;QACL,8DAA6B,CAAC;YAC5B,UAAU,EAAE,IAAI;YAChB,WAAW,EAAE,8DAA6B;YAC1C,YAAY,EAAE,0DAA2B;YACzC,WAAW,EAAE,wDAA0B,IAAI,CAAC,0DAA2B;SACxE,CAAC;QAEF,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE;YAEpD,oFAAsC,EAAE;iBACnC,IAAI,CAAC,OAAO,CAAC,EAAE;gBACd,IAAI,OAAO,EAAE;oBACX,IAAI,OAAO,CAAC,SAAS,EAAE;wBACrB,8GAA8G;wBAC9G,IAAI,CAAC,kBAAkB,GAAG,OAAO,CAAC,SAAS,CAAC,gBAAgB,KAAK,mDAA0B,CAAC;wBAE5F,IAAI,OAAO,CAAC,SAAS,CAAC,gBAAgB,KAAK,mDAA0B,IAAI,OAAO,CAAC,SAAS,CAAC,gBAAgB,KAAK,SAAS,EAAE;4BACzH,IAAI,CAAC,eAAe,GAAG,gBAAM,CAAC,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;yBACjE;wBACD,2DAA0B,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;wBAC/D,+DAA4B,GAAG,OAAO,CAAC,SAAS,CAAC,iBAAiB,CAAC;wBACnE,2DAA0B,GAAG,OAAO,CAAC,SAAS,CAAC,eAAe,CAAC;qBAChE;oBAED,IAAI,CAAC,gBAAgB,GAAG,OAAO,CAAC,gBAAgB,CAAC;oBACjD,IAAI,OAAO,CAAC,aAAa,EAAE;wBACzB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC;wBAC5C,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,IAAI,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;4BACnF,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,SAAS,CAAC,OAAO,CAAC,aAAa,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;yBACxG;wBAED,qBAAqB;wBACrB,8BAA8B;wBAC9B,gCAAgC;wBAEhC,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,CAAC,CAAC;wBAC1E,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;qBACzE;oBACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;iBAC5B;YACH,CAAC,CAAC;SACP;IACH,CAAC;IAED,aAAa;QACX,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,IAAI,GAAG,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC;IACxD,CAAC;IAED,OAAO;QACL,IAAI,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,WAAW,EAAE,CAAC;QAC1C,QAAQ,IAAI,EAAE;YACV,gBAAgB;YAChB,uCAAuC;YACzC,KAAK,UAAU;gBACb,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,SAAS;gBACZ,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,UAAU;gBACb,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,QAAQ;gBACX,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,UAAU;gBACb,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,UAAU;gBACb,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,WAAW;gBACd,IAAI,CAAC,UAAU,GAAG,CAAC,CAAC;gBACpB,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,OAAO;gBACV,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACrB,MAAM;YACR,KAAK,cAAc;gBACjB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;gBACrB,MAAM;YACN,eAAe;SAClB;QACD,mDAAmD;IACrD,CAAC;CAMF;AAtSC;IAAC,qBAAK,CAAC,aAAa,CAAC;;yGACG,uBAAO,oBAAP,uBAAO;;2CAK9B;AAED;IAAC,qBAAK,CAAC,mBAAmB,CAAC;;;;qCA0B1B;AAED;IAAC,qBAAK,CAAC,eAAe,CAAC;;;;qCAMtB;AAED;IAAC,qBAAK,CAAC,eAAe,CAAC;;;;qCAMtB;AAED;IAAC,qBAAK,CAAC,gBAAgB,CAAC;;;;sCA4BvB;AAED;IAAC,qBAAK,CAAC,iBAAiB,CAAC;;;;0CA8ExB;AAx3BkB,GAAG;IAxBvB,yBAAS,CAAC;QACT,UAAU,EAAE;YACV,WAAW;YACX,sBAAsB;YACtB,WAAW;YACX,WAAW;YACX,UAAU;YACV,aAAa;YACb,UAAU;YACV,UAAU;YACV,YAAY;YACZ,cAAc;YACd,cAAc;YACd,YAAY;YACZ,SAAS;YACT,aAAa;YACb,aAAa;YACb,YAAY;YACZ,UAAU;YACV,eAAe;YACf,oBAAoB;YACpB,aAAa;SACd;KACF,CAAC;GACmB,GAAG,CA8/BvB;kEA9/BoB,GAAG;;;ACvEkS,CAAC,wEAAe,2BAAG,EAAC;;ACA9U;;;;;AEAA;;;;;AEAA;;;;;AEA8F;AACvC;AACL;AAClD,CAA6F;AACZ;AACD;;;AAGhF;AACoI;AACpI,IAAI,aAAS,GAAG,sCAAU;AAC1B,EAAE,iCAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,gDAAe,aAAS;;;;;;;;;;;;;;;;ACrBF;AACgB;AACR;AACU;AACO;AAET;AACA;AACQ;AACR;AACP;AACY;AAEX;AACsB;AACI;AAC9B;AACc;AAE1C,mDAAa,CAAC,SAAS,EAAE,sBAAO,CAAC,CAAC;AAClC,yEAAwB,GAAG,KAAK,CAAC;AACjC,IAAI,kDAAqB;IAAE,qEAAsB,GAAG,IAAI,CAAC;AAEzD,uCAAO,CAAC,4BAAO,EAAE;IACb,MAAM,EAAE,EAAC,EAAE,EAAE,cAAc,EAAC;IAC5B,OAAO,EAAE,MAAM;CAClB,EAAE,qBAAM,CAAC,CAAC;AAEX,uCAAO,CAAC,oBAAM,EAAE;IACZ,EAAE,EAAE,aAAa;IACjB;;;;;UAKM;IACN,KAAK,EAAE,KAAK;IACZ,aAAa,EAAE,KAAK;IACpB,4DAA4D;IAC5D,OAAO,EAAE,IAAI;IACb,KAAK,EAAE,kDAAqB;IAC5B,UAAU,EAAE,IAAI;IAChB,SAAS,EAAE,qBAAM;IACjB,4FAA4F;IAC5F,eAAe,EAAE,KAAK,CAAC,gDAAgD;CAC1E,CAAC,CAAC;AAEH,2CAAiB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IACjC,iDAAiD;IAEjD,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,kBAAkB,CAAC,KAAK,MAAM,EAAE;QAC3E,uBAAuB,EAAE,CAAC;QAC1B,OAAO;KACV;IAED,IAAI,UAAU,GAAY,8CAAkB,CAAC;IAC7C,IAAI,MAAM,GAAG,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAEnC,IAAI,UAAU,EAAE;QAEZ,IAAI,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC1G,IAAI,WAAW,EAAE;YACb,IAAI,wCAAe,EAAE;gBACjB,IAAI,EAAE,CAAC;aACV;SACJ;aAAM;YAEH,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE;gBAC7B,0EAAgC,GAAG,IAAI,CAAC;aAC3C;YACD,IAAI,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE;gBAC5F,IAAI,CAAC,UAAU,CAAC,CAAC;aACpB;iBAAM,IAAI,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE;gBACnF,IAAI,EAAE,CAAC;aACV;iBAAM;gBACH;;;;;;;;;;;;;;gCAcgB;gBAEhB,MAAM,YAAY,GAAG,wDAAuB,IAAI,0DAAwB,CAAC;gBACzE,MAAM,YAAY,GAAG,0DAAwB,CAAC;gBAC9C,MAAM,SAAS,GAAG,wDAAuB,KAAK,CAAC,CAAC;gBAChD,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;oBAC/B,IAAI,EAAE,CAAC;iBACV;qBAAM,IAAI,YAAY,EAAE;oBACrB,IAAI,YAAY,EAAE;wBACd,IAAI,EAAE,CAAC;qBACV;yBAAM,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;wBACpC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;wBAC7B,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC;wBAC7B,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;wBAC9B,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE;wBAC5B,IAAI,EAAE,CAAC;qBACV;yBAAM,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE;wBACxD,IAAI,CAAC,UAAU,CAAC,CAAC;qBACpB;yBAAM;wBACH,0CAAiB,CAAC,uBAAuB,CAAC,CAAC;wBAC3C,IAAI,CAAC,UAAU,CAAC,CAAC;qBACpB;iBACJ;qBAAM,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,EAAE;oBAC5E,IAAI,EAAE,CAAC;iBACV;qBAAM;oBACH,0CAAiB,CAAC,kBAAkB,CAAC,CAAC;oBACtC,IAAI,CAAC,UAAU,CAAC,CAAC;oBACjB,wBAAwB;iBAC3B;aACJ;SACJ;KACJ;SAAM;QACH,IAAI,aAAa,GACb,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC;YACzB,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC;YAC3B,MAAM,CAAC,UAAU,CAAC,WAAW,CAAC;YAC9B,MAAM,CAAC,UAAU,CAAC,kBAAkB,CAAC;YACrC,MAAM,CAAC,UAAU,CAAC,gBAAgB,CAAC;YACnC,MAAM,CAAC,UAAU,CAAC,iBAAiB,CAAC;YACpC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC;YACjC,MAAM,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;QACvC,IAAI,aAAa,EAAE;YACf,IAAI,EAAE,CAAC;SACV;aAAM;YACH,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,IAAI,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;gBAC5H,IAAI,CAAC,EAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,kCAAM,EAAE,CAAC,KAAK,KAAE,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,GAAC,EAAC,CAAC;aAClF;iBAAM;gBACH,IAAI,CAAC,QAAQ,CAAC,CAAC;aAClB;SACJ;KACJ;AAGL,CAAC,CAAC,CAAC;AAEH,yCAAgB,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,EAAE;IAC1B,QAAQ,CAAC,KAAK,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,4CAAmB,CAAC;AAC1D,CAAC,CAAC,CAAC;AAEH,MAAM,uBAAuB,GAAG,GAAG,EAAE;IACjC,MAAM,WAAW,GAAG,gCAAW,CAAC,UAAU,CAAC,CAAC;IAC5C,IAAI,WAAW,EAAE;QACb,sCAAc,EAAE,CAAC;QACjB,YAAY,CAAC,KAAK,EAAE,CAAC;QACrB,IAAI;YACA,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAClD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,iBAAiB,CAAC,EAAE;gBAC1D,sDAAuB,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;aAC/C;YACD,sCAAc,CAAC,UAAU,EAAE,EAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;YACnE,MAAM,MAAM,GAAG,gCAAgC,CAAC;YAEhD,IAAI,CAAC,4DAA0B,EAAE;gBAC7B,6DAAkB,CAAC;oBACnB,KAAK,EAAE,uBAAuB;oBAC9B,eAAe,EAAE,CAAC;iBACnB,CAAC,CAAC;aACJ;YAED,gDAAoB,CAAC,gDAAoB,EAAE,gDAAoB,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAC7E,IAAI,QAAQ,EAAE;oBACV,8CAAkB,GAAG,IAAI,CAAC;oBAC1B,0BAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;oBACtC,8CAAkB,GAAG,IAAI,CAAC;oBAC1B,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC;oBAC3B,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,CAAC;oBAC1B,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,IAAI,CAAC,CAAC;oBACnC,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC;oBACjC,MAAM,UAAU,GAAG,wDAAuB,CAAC,GAAG,CAAC,EAAE,CAAC,gBAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,gBAAM,EAAE,CAAC,CAAC,CAAC;oBACzF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC;oBACpC,kCAAY,GAAG,IAAI,CAAC;oBACpB,sCAAc,GAAG,MAAM,CAAC;oBACxB,kDAAoB,GAAG,KAAK,CAAC;oBAC7B,sCAAc,GAAG,MAAM,CAAC;oBACxB,0CAAgB,GAAG,KAAK,CAAC;oBACzB,gDAAmB,GAAG,qCAAgB,CAAC;oBACvC,sDAAuB,GAAG,qCAAgB,CAAC;oBAC3C,gEAA4B,GAAG,gDAAoB,CAAC;oBACpD,0CAAgB,EAAE,CAAC;oBACnB,gEAA2B,GAAG,KAAK,CAAC;oBACpC,8DAA0B,EAAE,CAAC;oBAE7B,+BAAW,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;wBAC9B,8EAAkC,GAAG,IAAI,CAAC;wBAC1C,gEAA2B,GAAG,IAAI,CAAC;wBACnC,wEAA+B,GAAG,IAAI,CAAC;wBACvC,wEAA+B,GAAG,IAAI,CAAC;oBAC3C,CAAC,CAAC,CAAC;iBACN;YACL,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACT,8BAAW,CAAC,MAAM,EAAE,kDAAkD,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC9F,gEAA2B,GAAG,yBAAyB,CAAC;gBACxD,8DAA0B,GAAG,kFAAkF,CAAC;gBAChH,8DAA0B,GAAG,OAAO,CAAC;gBACrC,8DAA0B,GAAG,IAAI,CAAC;YACtC,CAAC,CAAC,CAAC;SACN;QAAC,OAAM,CAAC,EAAE,GAAE;KAChB;AACL,CAAC;AAED,uBAAuB;AAEvB,MAAM,GAAG,GAAG,IAAI,+BAAG,CAAC;IAChB,MAAM;IACN,OAAO;IACP,YAAY;QACR,sCAAc,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,gDAAmB,CAAC,KAAK,CAAC,CAAC,CAAC;IACrE,CAAC;IACD,MAAM,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAG,CAAC;CACtB,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;AAElB,wCAAe,EAAE,CAAC;;;;;;;;;;;;;;;AC7NI;AACtB,gCAAgC;AACC;AAC4D;AAE7F,MAAM,cAAc,GAAG,oHAAsB,CAAC,oBAAoB,CAAC;AACnE,yEAAa,CAAC,oBAAoB,EAAE,cAAc,CAAC;AAEnD,6DAAO,CAAC,4DAAO,CAAC,CAAC;AAEjB,iEAAe,IAAI,4DAAO,CAAC;IACvB,KAAK,EAAE;QACH,IAAI,EAAE,IAAI;QACV,MAAM,EAAE;YACJ,IAAI,EAAE;gBACF,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,SAAS;aACxB;YACD,KAAK,EAAE;gBACH,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,SAAS;gBAChB,UAAU,EAAE,SAAS;aACxB;SAEJ;KACJ;CACJ,CAAC,EAAC;;;;;;;;;;;;;;;;AC/BmB;AACa;AACY;AACJ;AAE3C,6DAAO,CAAC,4DAAS,CAAC,CAAC;AAEnB,6BAA6B;AAC7B,mEAAmE;AACnE,kDAAkD;AAClD,mCAAmC;AAEnC,MAAM,aAAa,GAAG;IAClB;QACI,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,gFAAa;QACnB,SAAS,EAAE,GAAG,EAAE,CAAC,qJAAyE;QAC1F,IAAI,EAAE;YACF,KAAK,EAAE,UAAU,GAAG,0FAAmB;SAC1C;KACJ;IACD;QACI,IAAI,EAAE,eAAe;QACrB,IAAI,EAAE,oGAAuB;QAC7B,SAAS,EAAE,GAAG,EAAE,CAAC,qJAAmF;QACpG,IAAI,EAAE;YACF,KAAK,EAAE,8BAA8B;SACxC;KACJ;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,gGAAqB;QAC3B,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,GAAG,EAAE,CAAC,mGAAiD;QAClE,IAAI,EAAE;YACF,KAAK,EAAE,oBAAoB,0FAAmB,EAAE;SACnD;KACJ;IACD;QACI,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,kGAAsB;QAC5B,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,GAAG,EAAE,CAAC,kGAAkD;QACnE,IAAI,EAAE;YACF,KAAK,EAAE,qBAAqB,0FAAmB,EAAE;SACpD;KACJ;IACD;QACI,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,4FAAmB;QACzB,KAAK,EAAE,IAAI;QACX,SAAS,EAAE,GAAG,EAAE,CAAC,mGAA+C;QAChE,IAAI,EAAE;YACF,KAAK,EAAE,iBAAiB,0FAAmB,EAAE;SAChD;KACJ;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,SAAS,EAAE,GAAG,EAAE,CAAC,qJAAyE;QAC1F,IAAI,EAAE;YACF,KAAK,EAAE,UAAU,GAAG,0FAAmB;SAC1C;KACJ;IACD;QACI,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,sFAAgB;QACtB,SAAS,EAAE,GAAG,EAAE,CAAC,qJAAgF;QACjG,IAAI,EAAE;YACF,KAAK,EAAE,iBAAiB,GAAG,0FAAmB;SACjD;KACJ;IACD;QACI,IAAI,EAAE,kBAAkB;QACxB,IAAI,EAAE,8GAA4B;QAClC,SAAS,EAAE,GAAG,EAAE,CAAC,qJAAmF;QACpG,IAAI,EAAE;YACF,KAAK,EAAE,0BAA0B,GAAG,0FAAmB;SAC1D;KACJ;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,oFAAe;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA2E;QAC5F,IAAI,EAAE;YACF,KAAK,EAAE,YAAY,GAAG,0FAAmB;SAC5C;KACJ;IACD;QACI,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,GAAG,EAAE,CAAC,qJAAwE;KAC5F;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,oJAA2E;KAC/F;IACD;QACI,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,KAAK;QACX,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA2E;KAC/F;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA2E;KAC/F;IACD;QACI,IAAI,EAAE,GAAG;QACT,QAAQ,EAAE,UAAU;QACpB,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,GAAG,EAAE,CAAC,6GAA6E;KACjG;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,6GAA6E;KACjG;IACD;QACI,IAAI,EAAE,mBAAmB;QACzB,SAAS,EAAE,GAAG,EAAE,CAAC,6GAA6E;KACjG;IACD;QACI,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,QAAQ;QACd,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA4E;KAChG;IACD;QACI,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA0E;KAC9F;IACD;QACI,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA0E;KAC9F;IACD;QACI,IAAI,EAAE,QAAQ;QACd,IAAI,EAAE,OAAO;QACb,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA0E;KAC9F;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA6E;KACjG;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,SAAS;QACf,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA8E;KAClG;IACD;QACI,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,GAAG,EAAE,CAAC,qJAAgF;KACpG;IACD;QACI,IAAI,EAAE,WAAW;QACjB,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA4E;KAChG;IACD;QACI,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,oFAAe;QACrB,SAAS,EAAE,GAAG,EAAE,CAAC,4GAA4E;QAC7F,IAAI,EAAE;YACF,KAAK,EAAE,YAAY,GAAG,0FAAmB;SAC5C;QACD,KAAK,EAAE,QAAQ;KAClB;IAED;QACI,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA4E;KAChG;IACD;QACI,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,GAAG,EAAE,CAAC,oJAAyE;KAC7F;IACD;QACI,IAAI,EAAE,gBAAgB;QACtB,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA0E;KAC9F;IACD;QACI,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,GAAG,EAAE,CAAC,oJAA4E;KAChG;IACD;QACI,IAAI,EAAE,iBAAiB;QACvB,IAAI,EAAE,WAAW;QACjB,SAAS,EAAE,GAAG,EAAE,CAAC,qJAA2E;KAC/F;IACD,IAAI;IACJ,4BAA4B;IAC5B,uBAAuB;IACvB,iGAAiG;IACjG,KAAK;IACL;QACI,IAAI,EAAE,cAAc;QACpB,IAAI,EAAE,aAAa;QACnB,SAAS,EAAE,GAAG,EAAE,CAAC,oJAAmF;KACvG;CACJ,CAAC;AAEF,MAAM,MAAM,GAAG,IAAI,4DAAS,CAAC;IACzB,IAAI,EAAE,SAAS;IACf,IAAI,EAAE,GAAoB;IAC1B,MAAM,EAAE,aAAa;CACxB,CAAC,CAAC;AAEH,iEAAe,MAAM,EAAC;;;;;;;;;;;;;;;;;;;;;;ACvNP,MAAM,eAAe;IAApC;QACI,SAAI,GAAY,KAAK,CAAC;QACtB,UAAK,GAAW,EAAE,CAAC;QACnB,SAAI,GAAW,EAAE,CAAC;QAClB,SAAI,GAAW,EAAE,CAAC;QAClB,oBAAe,GAAoB,IAAI,CAAC;QACxC,oBAAe,GAAoB,IAAI,CAAC;IAC5C,CAAC;CAAA;;;;;ACPmD;AAGpD,qDAAe;IACX,KAAK,EAAE;QACH,QAAQ,EAAE,EAAiB;QAC3B,cAAc,EAAE,KAAK;QACrB,eAAe,EAAE,8DAA2B;QAC5C,eAAe,EAAE,IAAI;QACrB,eAAe,EAAE,KAAK;QACtB,SAAS,EAAE,gEAA4B;KAC1C;IACD,OAAO,EAAE;QAEL,QAAQ,CAAC,KAAK;YACV,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;KACJ;IACD,OAAO,EAAE;QACL,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAgB;YACtC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAc;YAC3C,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACnC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;KACJ;IACD,SAAS,EAAE;QACP,SAAS,CAAC,KAAK,EAAE,GAAgB;YAC7B,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QACzB,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAc;YACnC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAY;YAC1B,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;KACJ;CACJ,EAAC;;;ACvFuC;AAEzC,MAAM,YAAY,GAAG;IACjB,KAAK,EAAE;QACH,qBAAqB,EAAE,KAAK;QAC5B,sBAAsB,EAAE,EAAE;QAC1B,yBAAyB,EAAE,EAAE;QAC7B,iBAAiB,EAAE,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC;QAC5C,mBAAmB,EAAE,EAAC,OAAO,EAAE,oCAAe,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC;QAC/D,kBAAkB,EAAE,IAAI;KAC3B;IACD,OAAO,EAAE;QACL,qBAAqB,CAAC,KAAK;YACvB,OAAO,KAAK,CAAC,qBAAqB,CAAC;QACvC,CAAC;QACD,sBAAsB,CAAC,KAAK;YACxB,OAAO,KAAK,CAAC,sBAAsB,CAAC;QACxC,CAAC;QACD,yBAAyB,CAAC,KAAK;YAC3B,OAAO,KAAK,CAAC,yBAAyB,CAAC;QAC3C,CAAC;QACD,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QACD,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QACD,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;KACJ;IACD,OAAO,EAAE;QACL,qBAAqB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC/C,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,sBAAsB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAqB;YACzD,MAAM,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QACD,yBAAyB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAqB;YAC5D,MAAM,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QACD,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAA+C;YAC9E,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QACD,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAsD;YACvF,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAmB;YACnD,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;KAEJ;IACD,SAAS,EAAE;QACP,wBAAwB,CAAC,KAAK,EAAE,GAAY;YACxC,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC;QACtC,CAAC;QACD,yBAAyB,CAAC,KAAK,EAAE,GAAqB;YAClD,KAAK,CAAC,sBAAsB,GAAG,GAAG,CAAC;QACvC,CAAC;QACD,4BAA4B,CAAC,KAAK,EAAE,GAAqB;YACrD,KAAK,CAAC,yBAAyB,GAAG,GAAG,CAAC;QAC1C,CAAC;QACD,mBAAmB,CAAC,KAAK,EAAE,GAA+C;YACtE,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QACD,sBAAsB,CAAC,KAAK,EAAE,GAAsD;YAChF,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QACD,oBAAoB,CAAC,KAAK,EAAE,GAAmB;YAC3C,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;KACJ;CACJ,CAAC;AAEF,yDAAe,YAAY,EAAC;;;AC3EwB;AAGpD,MAAM,aAAa,GAAG;IAClB,KAAK,EAAE;QACH,kBAAkB,EAAE,oEAA8B;QAClD,mBAAmB,EAAE,oEAA8B;QACnD,iBAAiB,EAAE,4EAAkC;QACrD,kBAAkB,EAAE,0EAAiC;QACrD,iBAAiB,EAAE,wEAAgC;QACnD,kBAAkB,EAAE,sEAA+B;KACtD;IACD,OAAO,EAAE;QACL,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QACD,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QACD,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QACD,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QACD,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QACD,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;KACJ;IACD,OAAO,EAAE;QACL,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAkB;YAClD,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAmB;YACpD,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QACD,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAkB;YACjD,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAkB;YAClD,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAkB;YACjD,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAkB;YAClD,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;KACJ;IACD,SAAS,EAAE;QACP,qBAAqB,CAAC,KAAK,EAAE,GAAkB;YAC3C,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;YAC/B,oEAA8B,GAAG,GAAG,CAAC;QACzC,CAAC;QACD,sBAAsB,CAAC,KAAK,EAAE,GAAmB;YAC7C,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;YAChC,oEAA8B,GAAG,GAAG,CAAC;QACzC,CAAC;QACD,oBAAoB,CAAC,KAAK,EAAE,GAAkB;YAC1C,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;YAC9B,4EAAkC,GAAG,GAAG,CAAC;QAC7C,CAAC;QACD,qBAAqB,CAAC,KAAK,EAAE,GAAkB;YAC3C,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;YAC/B,0EAAiC,GAAG,GAAG,CAAC;QAC5C,CAAC;QACD,oBAAoB,CAAC,KAAK,EAAE,GAAkB;YAC1C,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;YAC9B,wEAAgC,GAAG,GAAG,CAAC;QAC3C,CAAC;QACD,qBAAqB,CAAC,KAAK,EAAE,GAAkB;YAC3C,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;YAC/B,sEAA+B,GAAG,GAAG,CAAC;QAC1C,CAAC;KACJ;CACJ,CAAC;AAEF,0DAAe,aAAa,EAAC;;;AC7E7B,MAAM,wBAAY,GAAG;IACjB,KAAK,EAAE;QACH,eAAe,EAAE,EAAE;QACnB,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,EAAE;QAClB,YAAY,EAAE,EAAE;QAChB,YAAY,EAAE,EAAE;KAEnB;IACD,OAAO,EAAE;QAEL,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QACD,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QACD,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QACD,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QACD,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;KAEJ;IACD,OAAO,EAAE;QAEL,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAiB;YAC9C,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAiB;YAC7C,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QACD,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAiB;YAC9C,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QACD,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAqB;YAC/C,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAqB;YAC/C,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;KAGJ;IACD,SAAS,EAAE;QAEP,iBAAiB,CAAC,KAAK,EAAE,GAAiB;YACtC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,GAAiB;YACrC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QACD,iBAAiB,CAAC,KAAK,EAAE,GAAiB;YACtC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QACD,aAAa,CAAC,KAAK,EAAE,GAAqB;YACtC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QACD,aAAa,CAAC,KAAK,EAAE,GAAqB;YACtC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;KAEJ;CACJ,CAAC;AAEF,kDAAe,wBAAY,EAAC;;;ACtE5B,MAAM,YAAY,GAAG;IACjB,KAAK,EAAE;QACH,cAAc,EAAE,KAAK;QACrB,kBAAkB,EAAE,KAAK;QACzB,mBAAmB,EAAE,IAAI;KAC5B;IACD,OAAO,EAAE;QACL,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QACD,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;KACJ;IACD,OAAO,EAAE;QACL,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QACD,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC7C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;KACJ;IACD,SAAS,EAAE;QACP,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;KACJ;CACJ,CAAC;AAEF,yDAAe,YAAY,EAAC;;;;;AC/CkB;AAE9C,MAAM,WAAW,GAAG;IAChB,KAAK,EAAE;QACH,eAAe,EAAE,sCAAe;QAChC,iBAAiB,EAAE,sCAAe;QAClC,eAAe,EAAE,sCAAe;KACnC;IACD,OAAO,EAAE;QACL,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QACD,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QACD,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;KACJ;IACD,OAAO,EAAE;QACL,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACxC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC1C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QACD,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACxC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;KACJ;IACD,SAAS,EAAE;QACP,kBAAkB,CAAC,KAAK,EAAE,GAAW;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QACD,oBAAoB,CAAC,KAAK,EAAE,GAAW;YACnC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QACD,kBAAkB,CAAC,KAAK,EAAE,GAAW;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;KACJ;CACJ,CAAC;AAEF,wDAAe,WAAW,EAAC;;;AC3CyB;AAEpD,MAAM,aAAa,GAAG;IAClB,KAAK,EAAE;QACH,YAAY,EAAE,wDAAwB;QACtC,mBAAmB,EAAE,sEAA+B;QACpD,uBAAuB,EAAE,8EAAmC;QAC5D,6BAA6B,EAAE,KAAK;QACpC,6BAA6B,EAAE,KAAK;QACpC,wBAAwB,EAAE,KAAK;QAC/B,uBAAuB,EAAE,8EAAmC;KAC/D;IACD,OAAO,EAAE;QACL,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,uBAAuB,CAAC,KAAK;YACzB,OAAO,KAAK,CAAC,uBAAuB,CAAC;QACzC,CAAC;QAED,6BAA6B,CAAC,KAAK;YAC/B,OAAO,KAAK,CAAC,6BAA6B,CAAC;QAC/C,CAAC;QAED,6BAA6B,CAAC,KAAK;YAC/B,OAAO,KAAK,CAAC,6BAA6B,CAAC;QAC/C,CAAC;QAED,wBAAwB,CAAC,KAAK;YAC1B,OAAO,KAAK,CAAC,wBAAwB,CAAC;QAC1C,CAAC;QAED,uBAAuB,CAAC,KAAK;YACzB,OAAO,KAAK,CAAC,uBAAuB,CAAC;QACzC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;KACJ;IACD,OAAO,EAAE;QACL,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC7C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,uBAAuB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACjD,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,6BAA6B,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvD,MAAM,CAAC,oCAAoC,EAAE,GAAG,CAAC,CAAC;QACtD,CAAC;QAED,6BAA6B,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvD,MAAM,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QAED,wBAAwB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAClD,MAAM,CAAC,8BAA8B,EAAE,GAAG,CAAC,CAAC;QAChD,CAAC;QAED,uBAAuB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACjD,MAAM,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,YAAqB;YAC/C,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAC1C,CAAC;KACJ;IACD,SAAS,EAAE;QACP,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,2BAA2B,CAAC,KAAK,EAAE,GAAY;YAC3C,KAAK,CAAC,uBAAuB,GAAG,GAAG,CAAC;QACxC,CAAC;QAED,kCAAkC,CAAC,KAAK,EAAE,GAAY;YAClD,KAAK,CAAC,6BAA6B,GAAG,GAAG,CAAC;QAC9C,CAAC;QAED,iCAAiC,CAAC,KAAK,EAAE,GAAY;YACjD,KAAK,CAAC,6BAA6B,GAAG,GAAG,CAAC;QAC9C,CAAC;QAED,4BAA4B,CAAC,KAAK,EAAE,GAAY;YAC5C,KAAK,CAAC,wBAAwB,GAAG,GAAG,CAAC;QACzC,CAAC;QAED,0BAA0B,CAAC,KAAK,EAAE,GAAY;YAC1C,KAAK,CAAC,uBAAuB,GAAG,GAAG,CAAC;QACxC,CAAC;KACJ;CACJ,CAAC;AAEF,0DAAe,aAAa,EAAC;;;ACrGuB;AAGpD,MAAM,SAAS,GAAG;IACd,KAAK,EAAE;QACH,mBAAmB,EAAE,KAAK;QAC1B,eAAe,EAAE,8DAA2B;QAC5C,eAAe,EAAE,KAAK;QACtB,oBAAoB,EAAE,KAAK;QAC3B,gBAAgB,EAAE,gEAA4B;QAC9C,cAAc,EAAE,KAAK;KACxB;IACD,OAAO,EAAE;QACL,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;KACJ;IACD,OAAO,EAAE;QACL,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,mBAA4B;YAC7D,MAAM,CAAC,wBAAwB,EAAE,mBAAmB,CAAC,CAAC;QAC1D,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAuB;YACpD,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC9C,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;KACJ;IACD,SAAS,EAAE;QACP,sBAAsB,CAAC,KAAK,EAAE,GAAY;YACtC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAuB;YAC5C,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,uBAAuB,CAAC,KAAK,EAAE,GAAY;YACvC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;KACJ;CACJ,CAAC;AAEF,sDAAe,SAAS,EAAC;;;ACzFH;AACE;AAI4B;AAOM;AACI;AAEV;AACJ;AACE;AACJ;AACE;AAEF;AACI;AACR;AAE1C,uCAAO,CAAC,wBAAI,CAAC,CAAC;AAEd,4CAAe,IAAI,oCAAU,CAAC;IAE1B,OAAO,EAAE;QACL,QAAQ,EAAE,cAAc;QACxB,OAAO,EAAE,kBAAY;QACrB,OAAO,EAAE,mBAAa;QACtB,KAAK,EAAE,WAAW;QAClB,MAAM,EAAE,kBAAY;QACpB,KAAK,EAAE,iBAAW;QAClB,OAAO,EAAE,mBAAa;QACtB,GAAG,EAAE,eAAS;KACjB;IACD,KAAK,EAAE;QACH,OAAO,EAAE,KAAK;QACd,YAAY,EAAE,KAAK;QACnB,WAAW,EAAE,IAAI;QACjB,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,IAAI;QACjB,kBAAkB,EAAE,IAAI;QACxB,cAAc,EAAE,EAAE;QAClB,MAAM,EAAE,IAAI,KAAK,EAAW;QAC5B,IAAI,EAAE,IAAI,KAAK,EAAa;QAC5B,KAAK,EAAE,IAAI,KAAK,EAAU;QAC1B,KAAK,EAAE,IAAI,KAAK,EAAU;QAC1B,OAAO,EAAE,IAAI,KAAK,EAAU;QAC5B,KAAK,EAAE,IAAI,KAAK,EAAU;QAC1B,UAAU,EAAE,IAAI,KAAK,EAAW;QAChC,UAAU,EAAE,8CAAmB,KAAK,QAAQ;QAC5C,WAAW,EAAE,sDAAuB;QACpC,MAAM,EAAE,4CAAkB;QAC1B,cAAc,EAAE,4DAA0B;QAC1C,YAAY,EAAE,wDAAwB;QACtC,UAAU,EAAE,oDAAsB;QAClC,WAAW,EAAE,sDAAuB;QACpC,MAAM,EAAE,4CAAkB;QAC1B,IAAI,EAAE,wCAAgB;QACtB,UAAU,EAAE,oDAAsB;QAClC,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,CAAC;QACd,YAAY,EAAE,CAAC;QACf,WAAW,EAAE,sDAAuB;QACpC,gBAAgB,EAAE,CAAC;QACnB,YAAY,EAAE,wDAAwB;QACtC,gBAAgB,EAAE,gEAA4B;QAC9C,eAAe,EAAE,8DAA2B;QAC5C,YAAY,EAAE,wDAAwB;QACtC,KAAK,EAAE,0CAAiB;QACxB,QAAQ,EAAE,IAAI;QACd,QAAQ,EAAE,IAAI,KAAK,EAAS;QAC5B,QAAQ,EAAE,IAAI,KAAK,EAAS;QAC5B,QAAQ,EAAE,IAAI,KAAK,EAAS;QAC5B,UAAU,EAAE,IAAI,KAAK,EAAS;QAC9B,KAAK,EAAE,IAAI,KAAK,EAAU;QAC1B,YAAY,EAAE,wDAAwB;QACtC,YAAY,EAAE,wDAAwB;QACtC,aAAa,EAAE,0DAAyB;QACxC,eAAe,EAAE,8DAA2B;QAC5C,eAAe,EAAE,8DAA2B;QAC5C,YAAY,EAAE,wDAAwB;QACtC,cAAc,EAAE,4DAA0B;QAC1C,cAAc,EAAE,4DAA0B;QAC1C,cAAc,EAAE,4DAA0B;QAC1C,aAAa,EAAE,0DAAyB;QACxC,cAAc,EAAE,4DAA0B;QAE1C,WAAW,EAAE,sDAAuB;QACpC,UAAU,EAAE,oDAAsB;QAClC,aAAa,EAAE,0DAAyB;QACxC,oBAAoB,EAAE,wEAAgC;QAEtD,6CAA6C;QAC7C,cAAc,EAAE,KAAK;QACrB,oBAAoB,EAAE,IAAI;QAE1B,cAAc,EAAE,4DAA0B;QAC1C,kBAAkB,EAAE,oEAA8B;QAClD,mBAAmB,EAAE,sEAA+B;QACpD,iBAAiB,EAAE,kEAA6B;QAChD,gBAAgB,EAAE,gEAA4B;QAC9C,gBAAgB,EAAE,gEAA4B;QAC9C,kBAAkB,EAAE,oEAA8B;QAClD,eAAe,EAAE,8DAA2B;QAC5C,YAAY,EAAE,wDAAwB;QACtC,gBAAgB,EAAE,gEAA4B;QAC9C,gBAAgB,EAAE,gEAA4B;QAE9C,yCAAyC;QACzC,YAAY,EAAE,KAAK;QACnB,gBAAgB,EAAE,IAAI;QAEtB,cAAc,EAAE,4DAA0B;QAC1C,iBAAiB,EAAE,kEAA6B;QAChD,eAAe,EAAE,8DAA2B;QAC5C,cAAc,EAAE,4DAA0B;QAC1C,sDAAsD;QACtD,uBAAuB,EAAE,8EAAmC;QAC5D,uBAAuB,EAAE,8EAAmC;QAC5D,WAAW,EAAE,sDAAuB;QACpC,oBAAoB,EAAE,wEAAgC;QACtD,aAAa,EAAE,0DAAyB;QACxC,YAAY,EAAE,wDAAwB;QACtC,8CAA8C;QAC9C,gDAAgD;QAChD,gDAAgD;QAChD,gDAAgD;QAChD,gDAAgD;QAChD,8CAA8C;QAC9C,oDAAoD;QACpD,oDAAoD;QACpD,oDAAoD;QACpD,gDAAgD;QAChD,sDAAsD;QACtD,0DAA0D;QAC1D,oDAAoD;QACpD,kDAAkD;QAClD,cAAc,EAAE,IAAI;QACpB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI;QAClB,YAAY,EAAE,IAAI,KAAK,EAAS;QAChC,SAAS,EAAE,CAAC;QACZ,aAAa,EAAE,kEAA6B;QAC5C,WAAW,EAAE,KAAK;QAClB,cAAc,EAAE,4DAA0B;QAC1C,gBAAgB,EAAE,gEAA4B;QAC9C,gBAAgB,EAAE,gEAA4B;QAC9C,cAAc,EAAE,KAAK;QACrB,eAAe,EAAE,8DAA2B;QAC5C,YAAY,EAAE,wDAAwB;QACtC,aAAa,EAAE,0DAAyB;QACxC,YAAY,EAAE,wDAAwB;QACtC,eAAe,EAAE,KAAK;QACtB,eAAe,EAAE,CAAC;QAClB,SAAS,EAAE,CAAC;QACZ,MAAM,EAAE;YACJ,OAAO,EAAE,8CAAmB;YAC5B,OAAO,EAAE,8CAAmB;YAC5B,MAAM,EAAE,4CAAkB;YAC1B,KAAK,EAAE,0CAAiB;YACxB,MAAM,EAAE,4CAAkB;SAC7B;QACD,4BAA4B;QAC5B,8BAA8B;QAC9B,gCAAgC;QAChC,gCAAgC;QAChC,YAAY,EAAE,KAAK;QACnB,eAAe,EAAE,KAAK;QAEtB,aAAa,EAAE,KAAK;QACpB,kBAAkB,EAAE,IAAI;QAExB,eAAe,EAAE,KAAK;QACtB,aAAa,EAAE,KAAK;QACpB,2BAA2B;QAC3B,iBAAiB,EAAE,KAAK;QACxB,eAAe,EAAE,KAAK;QACtB,YAAY,EAAE,KAAK;QACnB,gBAAgB,EAAE,IAAI;QACtB,cAAc,EAAE,KAAK;QACrB,2BAA2B;QAC3B,yBAAyB;QACzB,kBAAkB,EAAE,KAAK;QACzB,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,KAAK;QACnB,cAAc,EAAE,KAAK;QACrB,gBAAgB,EAAE,KAAK;QACvB,aAAa,EAAE,KAAK;QACpB,oBAAoB,EAAE,KAAK;QAC3B,SAAS,EAAE,IAAI;QACf,oBAAoB,EAAE,IAAI;QAC1B,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,oEAA8B;QAClD,kBAAkB,EAAE,oEAA8B;QAClD,kBAAkB,EAAE,oEAA8B;QAClD,yDAAyD;QACzD,gBAAgB,EAAE,EAAE;QACpB,kBAAkB,EAAE,EAAE;QACtB,kBAAkB,EAAE,EAAE;QACtB,mBAAmB,EAAE,EAAE;QACvB,YAAY,EAAE,EAAE;QAChB,aAAa,EAAE,SAAS;QACxB,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,KAAK;QACxB,kBAAkB,EAAE,IAAI;QACxB,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,wDAAwB;QACtC,aAAa,EAAE,KAAK;QACpB,cAAc,EAAE,4DAA0B;QAC1C,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,wDAAwB;QACtC,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,wDAAwB;QACtC,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,0DAAyB;QACxC,YAAY,EAAE,wDAAwB;QACtC,WAAW,EAAE,KAAK;QAClB,YAAY,EAAE,EAAE;QAChB,WAAW,EAAE,EAAE;QACf,cAAc,EAAE,EAAE;QAClB,cAAc,EAAE,EAAE;QAClB,oBAAoB,EAAE,KAAK;QAC3B,uBAAuB,EAAE,IAAI;QAC7B,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,4DAA0B;QAC1C,cAAc,EAAE,4DAA0B;QAC1C,cAAc,EAAE,4DAA0B;QAC1C,gBAAgB,EAAE,gEAA4B;QAC9C,mBAAmB,EAAE,CAAC;QACtB,eAAe,EAAE,KAAK;QACtB,kBAAkB,EAAE,KAAK;QACzB,oBAAoB,EAAE,EAAE;QACxB,eAAe,EAAE,KAAK;QACtB,eAAe,EAAE,CAAC;QAClB,cAAc,EAAE,KAAK;QACrB,kBAAkB,EAAE,wDAAwB;QAC5C,eAAe,EAAE,0DAAyB;QAC1C,gBAAgB,EAAE,4DAA0B;QAC5C,eAAe,EAAE,KAAK;QACtB,gBAAgB,EAAE,EAAE;QAEpB,cAAc,EAAE,KAAK;QACrB,mBAAmB,EAAE,EAAE;QACvB,iBAAiB,EAAE,CAAC;QACpB,iBAAiB,EAAE,CAAC;QACpB,sBAAsB,EAAE,KAAK;QAC7B,mBAAmB,EAAE,KAAK;QAE1B,gBAAgB,EAAE,KAAK;QACvB,oBAAoB,EAAE,EAAE;QACxB,sBAAsB,EAAE,CAAC;QAEzB,gBAAgB,EAAE,KAAK;QACvB,qBAAqB,EAAE,IAAI;QAC3B,gBAAgB,EAAE,IAAI;QACtB,mBAAmB,EAAE,IAAI;QACzB,iBAAiB,EAAE,KAAK;QAExB,SAAS,EAAE,kDAAqB;QAChC,SAAS,EAAE,kDAAqB;QAChC,SAAS,EAAE,kDAAqB;QAChC,OAAO,EAAE,wDAAwB;QACjC,UAAU,EAAE,oDAAsB;QAClC,WAAW,EAAE,sDAAuB;QACpC,MAAM,EAAE,4CAAkB;QAC1B,SAAS,EAAE,kDAAqB;QAChC,SAAS,EAAE,kDAAqB;QAChC,SAAS,EAAE,kDAAqB;QAChC,QAAQ,EAAE,gDAAoB;QAC9B,QAAQ,EAAE,gDAAoB;QAC9B,UAAU,EAAE,oDAAsB;QAClC,iBAAiB,EAAE,kEAA6B;QAChD,aAAa,EAAE,0DAAyB;QACxC,YAAY,EAAE,wDAAwB;QAEtC,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,KAAK;QACxB,iBAAiB,EAAE,IAAI;QAEvB,aAAa,EAAE,IAAI,eAAe,EAAE;QACpC,aAAa,EAAE,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC;QAC/B,aAAa,EAAE,EAAC,OAAO,EAAE,oCAAe,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC;QACzD,kBAAkB,EAAE,IAAI;QACxB,WAAW,EAAE,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAC;QAEtC,oBAAoB,EAAE,KAAK;QAC3B,eAAe,EAAE,EAAE;QACnB,cAAc,EAAE,EAAE;QAElB,WAAW,EAAE,IAAI;QACjB,cAAc,EAAE,KAAK;QACrB,cAAc,EAAE,IAAI;QACpB,cAAc,EAAE,KAAK;QACrB,aAAa,EAAE,KAAK;QACpB,oBAAoB,EAAE,KAAK;QAC3B,mBAAmB,EAAE,oEAA8B,IAAI,EAAE;QACzD,eAAe,EAAE,mDAA2B;QAC5C,mBAAmB,EAAE,KAAK;QAC1B,mBAAmB,EAAE,KAAK;QAC1B,sBAAsB,EAAE,KAAK;QAC7B,wBAAwB,EAAE,GAAG,EAAE,CAAC,IAAI;QACpC,SAAS,EAAE,IAAI;QACf,SAAS,EAAE,CAAC;QACZ,YAAY,EAAE,KAAK;QACnB,YAAY,EAAE,KAAK;QACnB,aAAa,EAAE,KAAK;QACpB,UAAU,EAAE,CAAC;QACb,UAAU,EAAE,CAAC;KAChB;IAED,OAAO,EAAE;QAEL,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,sBAAsB,CAAC,KAAK;YACxB,OAAO,KAAK,CAAC,sBAAsB,CAAC;QACxC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,sBAAsB,CAAC,KAAK;YACxB,OAAO,KAAK,CAAC,sBAAsB,CAAC;QACxC,CAAC;QAED,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB;QACrC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB;QACjC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAGD,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,uBAAuB,CAAC,KAAK;YACzB,OAAO,KAAK,CAAC,uBAAuB,CAAC;QACzC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY;QAC7B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW;QAC5B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY;QAC7B,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,qBAAqB,CAAC,KAAK;YACvB,OAAO,KAAK,CAAC,qBAAqB,CAAC;QACvC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,wCAAwC;QACxC,uCAAuC;QACvC,KAAK;QAEL,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,6DAA6D;YAC7D,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,KAAK,CAAC,KAAK;YACP,OAAO,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,QAAQ,CAAC,KAAK;YACV,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,oCAAoC;QACpC,mCAAmC;QACnC,KAAK;QAEL,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,mCAAmC;QACnC,kCAAkC;QAClC,KAAK;QAEL,qCAAqC;QACrC,oCAAoC;QACpC,KAAK;QAGL,KAAK,CAAC,KAAK;YACP,OAAO,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,mCAAmC;QACnC,kCAAkC;QAClC,KAAK;QACL,EAAE;QACF,mCAAmC;QACnC,kCAAkC;QAClC,KAAK;QAEL,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QACD,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QACD,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QACD,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,mCAAmC;QACnC,mCAAmC;QACnC,KAAK;QAEL,kCAAkC;QAClC,iCAAiC;QACjC,KAAK;QAEL,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,MAAM,CAAC,KAAK;YACR,OAAO,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QACD,EAAE;QACF,wBAAwB;QACxB,wBAAwB;QACxB,KAAK;QACL,EAAE;QACF,yBAAyB;QACzB,yBAAyB;QACzB,KAAK;QACL,EAAE;QACF,0BAA0B;QAC1B,0BAA0B;QAC1B,KAAK;QACL,EAAE;QACF,0BAA0B;QAC1B,0BAA0B;QAC1B,KAAK;QAEL,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,iCAAiC;QACjC,iCAAiC;QACjC,KAAK;QAEL,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,qCAAqC;QACrC,qCAAqC;QACrC,KAAK;QAEL,uBAAuB,CAAC,KAAK;YACzB,OAAO,KAAK,CAAC,uBAAuB,CAAC;QACzC,CAAC;QACD,uBAAuB,CAAC,KAAK;YACzB,OAAO,KAAK,CAAC,uBAAuB,CAAC;QACzC,CAAC;QAED,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,IAAI,CAAC,KAAK;YACN,OAAO,KAAK,CAAC,IAAI,CAAC;QACtB,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,QAAQ,CAAC,KAAK;YACV,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAED,QAAQ,CAAC,KAAK;YACV,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,QAAQ,CAAC,KAAK;YACV,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAED,4BAA4B;QAC5B,0BAA0B;QAC1B,KAAK;QAEL,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,MAAM,CAAC,KAAK;YACR,IAAI,MAAM,GAAc,EAAE,CAAC;YAC3B,IAAI,KAAK,CAAC,MAAM,EAAE;gBACd,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;aACzB;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,KAAK,CAAC,KAAK;YACP,OAAO,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,KAAK,CAAC,KAAK;YACP,OAAO,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,OAAO,CAAC,KAAK;YACT,OAAO,KAAK,CAAC,OAAO,CAAC;QACzB,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,OAAO,CAAC;QACzB,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAGD,KAAK,CAAC,KAAK;YACP,OAAO,KAAK,CAAC,KAAK,CAAC;QACvB,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,gBAAgB,CAAC,KAAK;YAClB,OAAO,KAAK,CAAC,gBAAgB,CAAC;QAClC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,MAAM,CAAC,KAAK;YACR,OAAO,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,MAAM,CAAC,KAAK;YACR,OAAO,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QAED,OAAO,CAAC,KAAK;YACT,OAAO,KAAK,CAAC,IAAI,CAAC;QACtB,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,OAAO,CAAC,KAAK;YACT,OAAO,KAAK,CAAC,OAAO,CAAC;QACzB,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,MAAM,CAAC,KAAK;YACR,OAAO,KAAK,CAAC,MAAM,CAAC;QACxB,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,QAAQ,CAAC,KAAK;YACV,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAED,QAAQ,CAAC,KAAK;YACV,OAAO,KAAK,CAAC,QAAQ,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,iBAAiB,CAAC,KAAK;YACnB,OAAO,KAAK,CAAC,iBAAiB,CAAC;QACnC,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,kBAAkB,CAAC,KAAK;YACpB,OAAO,KAAK,CAAC,kBAAkB,CAAC;QACpC,CAAC;QAED,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,WAAW,CAAC,KAAK;YACb,OAAO,KAAK,CAAC,WAAW,CAAC;QAC7B,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK;YAChB,OAAO,KAAK,CAAC,cAAc,CAAC;QAChC,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QACD,oBAAoB,CAAC,KAAK;YACtB,OAAO,KAAK,CAAC,oBAAoB,CAAC;QACtC,CAAC;QAED,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,eAAe,CAAC,KAAK;YACjB,OAAO,KAAK,CAAC,eAAe,CAAC;QACjC,CAAC;QAED,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,mBAAmB,CAAC,KAAK;YACrB,OAAO,KAAK,CAAC,mBAAmB,CAAC;QACrC,CAAC;QAED,sBAAsB,CAAC,KAAK;YACxB,OAAO,KAAK,CAAC,sBAAsB,CAAC;QACxC,CAAC;QAED,wBAAwB,CAAC,KAAK;YAC1B,OAAO,KAAK,CAAC,wBAAwB,CAAC;QAC1C,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS;QAC1B,CAAC;QAED,SAAS,CAAC,KAAK;YACX,OAAO,KAAK,CAAC,SAAS,CAAC;QAC3B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,KAAK;YACd,OAAO,KAAK,CAAC,YAAY,CAAC;QAC9B,CAAC;QAED,aAAa,CAAC,KAAK;YACf,OAAO,KAAK,CAAC,aAAa,CAAC;QAC/B,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;QAED,UAAU,CAAC,KAAK;YACZ,OAAO,KAAK,CAAC,UAAU,CAAC;QAC5B,CAAC;KAEJ;IAED,OAAO,EAAE;QAEL,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAA+C;YACxE,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC3C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC3C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC3C,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACzC,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAc;YAC/C,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC7C,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,sBAAsB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC/C,MAAM,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC5C,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC1C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC1C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,sBAAsB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAChD,MAAM,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC7C,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAmB;YACrD,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAuB;YACrD,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACzC,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC3C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACxC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACzC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACxC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC7C,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC5C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACpC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACvC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACvC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAGD,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC9C,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,uBAAuB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAoB;YACzD,MAAM,CAAC,4BAA4B,EAAE,GAAG,CAAC,CAAC;QAC9C,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC9C,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAgB;YACvC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAGD,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAU;YAC1C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC3C,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,qBAAqB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC/C,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACrC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACtC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAqB;YACnD,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAqB;YACrD,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAqB;YACrD,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAqB;YACtD,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,wDAAwD;QACxD,4CAA4C;QAC5C,KAAK;QAGL,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,8CAA8C;YAC9C,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAa;YAChC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAClC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QAGD,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAGD,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC3C,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC3C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAGD,KAAK,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAa;YAChC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QACzB,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QACD,EAAE;QACF,mDAAmD;QACnD,sCAAsC;QACtC,KAAK;QACL,EAAE;QACF,mDAAmD;QACnD,sCAAsC;QACtC,KAAK;QAEL,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACzC,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,kDAAkD;QAClD,uCAAuC;QACvC,KAAK;QAEL,kDAAkD;QAClD,qCAAqC;QACrC,KAAK;QAEL,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC7C,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC3C,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAiB;YACrC,MAAM,CAAC,SAAS,EAAE,GAAG,CAAC,CAAC;QAC3B,CAAC;QACD,EAAE;QACF,wCAAwC;QACxC,2BAA2B;QAC3B,KAAK;QACL,EAAE;QACF,yCAAyC;QACzC,4BAA4B;QAC5B,KAAK;QACL,EAAE;QACF,0CAA0C;QAC1C,6BAA6B;QAC7B,KAAK;QACL,EAAE;QACF,0CAA0C;QAC1C,6BAA6B;QAC7B,KAAK;QAEL,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACnC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAa;YACxC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAa;YAC/C,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAa;YACzC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAa;YACzC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAa;YACzC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC7C,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACzC,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,gDAAgD;QAChD,qCAAqC;QACrC,KAAK;QAEL,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC3C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QACD,EAAE;QACF,qDAAqD;QACrD,0CAA0C;QAC1C,KAAK;QAEL,uBAAuB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACjD,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,uBAAuB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACjD,MAAM,CAAC,mCAAmC,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC9C,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAc;YAC1C,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC;QAChC,CAAC;QAED,IAAI,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAgB;YAClC,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxB,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACzC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAGD,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC1C,MAAM,CAAC,oBAAoB,EAAE,GAAG,CAAC,CAAC;QACtC,CAAC;QAED,MAAM,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,MAAiB;YACrC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,KAAe;YAClC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,KAAe;YAClC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,OAAO,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,OAAiB;YACtC,MAAM,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/B,CAAC;QAED,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,KAAc;YACpC,KAAK,CAAC,eAAe,EAAE,CAAC;YACxB,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,KAAc;YACvC,MAAM,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;QAClC,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,MAAiB;YACzC,MAAM,CAAC,aAAa,EAAE,MAAM,CAAC,CAAC;QAClC,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,SAAkB;YACzC,MAAM,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;QACpC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,YAAqB;YAC/C,MAAM,CAAC,sBAAsB,EAAE,YAAY,CAAC,CAAC;QACjD,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,YAAqB;YACnD,MAAM,CAAC,qBAAqB,EAAE,YAAY,CAAC,CAAC;QAChD,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,eAAe;YAC5C,MAAM,CAAC,mBAAmB,EAAE,eAAe,CAAC,CAAC;QACjD,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,YAAsB;YAChD,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC;QAC1C,CAAC;QAED,KAAK,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,KAAa;YAChC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;QAC3B,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,SAAS;YACjC,MAAM,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;QACtC,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,UAAU;YAClC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,UAAU;YAClC,MAAM,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;QACvC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,WAAW;YACpC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QACzC,CAAC;QAED,gBAAgB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,gBAAgB;YAC9C,MAAM,CAAC,qBAAqB,EAAE,gBAAgB,CAAC,CAAC;QACpD,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,YAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAC;QAC3C,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,WAAW;YACpC,MAAM,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QACzC,CAAC;QAED,MAAM,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,MAAe;YACnC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACpC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACpC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,MAAe;YACnC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAC9B,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,IAAY;YACjC,MAAM,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;QAED,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAClC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAClC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAU;YAChC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACpC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,sCAAsC;YACtC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACtC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAChC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5B,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACnC,MAAM,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;QAC/B,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,MAAM,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAa;YACjC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;QAC1B,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACjC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,QAAQ,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACjC,MAAM,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC;QAC7B,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACpC,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC1C,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACrC,MAAM,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC;QACjC,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC3C,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC3C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC1C,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,iBAAiB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAC1C,MAAM,CAAC,qBAAqB,EAAE,GAAG,CAAC,CAAC;QACvC,CAAC;QAED,4BAA4B,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAoB;YAC9D,MAAM,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;QACnD,CAAC;QAED,4BAA4B,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAoB;YAC9D,MAAM,CAAC,kCAAkC,EAAE,GAAG,CAAC,CAAC;QACpD,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC;YAC9B,MAAM,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC1C,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAiC;YAC5D,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAsD;YACjF,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,kBAAkB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC5C,MAAM,CAAC,sBAAsB,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC9C,MAAM,CAAC,yBAAyB,EAAE,GAAG,CAAC,CAAC;QAC3C,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACxC,MAAM,CAAC,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACrC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACvC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,WAAW,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAiB;YAC1C,MAAM,CAAC,cAAc,EAAE,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAkB;YAC9C,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,cAAc,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACxC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,oBAAoB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC9C,MAAM,CAAC,0BAA0B,EAAE,GAAG,CAAC,CAAC;QAC5C,CAAC;QAED,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAa;YAC9C,MAAM,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzC,CAAC;QAED,eAAe,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAwB;YACrD,MAAM,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAC;QACpC,CAAC;QAED,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC7C,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,mBAAmB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAC7C,MAAM,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;QAC1C,CAAC;QAED,sBAAsB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YAChD,MAAM,CAAC,2BAA2B,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;QAED,wBAAwB,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAQ;YAC9C,MAAM,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC;QAC/C,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAU;YACjC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,SAAS,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YAClC,MAAM,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QAC9B,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,YAAY,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACtC,MAAM,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC;QAClC,CAAC;QAED,aAAa,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAY;YACvC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QAED,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACnC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;QACD,UAAU,CAAC,EAAC,KAAK,EAAE,MAAM,EAAC,EAAE,GAAW;YACnC,MAAM,CAAC,iBAAiB,EAAE,GAAG,CAAC,CAAC;QACnC,CAAC;KACJ;IAED,SAAS,EAAE;QAEP,YAAY,CAAC,KAAK,EAAE,GAA+C;YAC/D,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAY;YACpC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAY;YACpC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAY;YACnC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAW;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,sBAAsB,CAAC,KAAK,EAAE,GAAc;YACxC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,uBAAuB,CAAC,KAAK,EAAE,GAAW;YACtC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,yBAAyB,CAAC,KAAK,EAAE,GAAW;YACxC,KAAK,CAAC,sBAAsB,GAAG,GAAG,CAAC;QACvC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,sBAAsB,CAAC,KAAK,EAAE,GAAW;YACrC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAW;YACnC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAW;YACnC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,yBAAyB,CAAC,KAAK,EAAE,GAAY;YACzC,KAAK,CAAC,sBAAsB,GAAG,GAAG,CAAC;QACvC,CAAC;QAED,sBAAsB,CAAC,KAAK,EAAE,GAAY;YACtC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,sBAAsB,CAAC,KAAK,EAAE,GAAmB;YAC7C,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAuB;YAC7C,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAW;YACpC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAW;YACnC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAW;YAChC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAW;YACjC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAW;YAChC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,uBAAuB,CAAC,KAAK,EAAE,GAAW;YACtC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAW;YACpC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAW;YAC5B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAW;YAC3B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAW;YAC/B,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAW;YAC/B,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAY;YAC5B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,uBAAuB,CAAC,KAAK,EAAE,GAAY;YACvC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,0BAA0B,CAAC,KAAK,EAAE,GAAoB;YAClD,KAAK,CAAC,uBAAuB,GAAG,GAAG,CAAC;QACxC,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAW;YAC5B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAY;YAC/B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAY;YAC/B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAU;YAClC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAY;YACnC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAY;YAC/B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QACD,uBAAuB,CAAC,KAAK,EAAE,GAAY;YACvC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAgB;YAC9B,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,wBAAwB,CAAC,KAAK,EAAE,GAAY;YACxC,KAAK,CAAC,qBAAqB,GAAG,GAAG,CAAC;QACtC,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAW;YAC7B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAW;YAC9B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAqB;YAC3C,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAqB;YAC7C,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAqB;YAC7C,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAqB;YAC9C,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,iDAAiD;QACjD,sCAAsC;QACtC,KAAK;QAEL,aAAa,CAAC,KAAK,EAAE,GAAW;YAC5B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,GAAa;YACtB,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,SAAS,CAAC,KAAK,EAAE,GAAY;YACzB,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QACzB,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAY;YAC/B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAW;YACpC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAY;YAC/B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAY;YACnC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,GAAa;YACtB,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAW;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,2CAA2C;QAC3C,kCAAkC;QAClC,KAAK;QAEL,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QACD,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,sBAAsB,CAAC,KAAK,EAAE,GAAY;YACtC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAY;YACnC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAY;YACrC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,GAAiB;YAC5B,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACvB,CAAC;QACD,EAAE;QACF,+BAA+B;QAC/B,uBAAuB;QACvB,KAAK;QACL,EAAE;QACF,gCAAgC;QAChC,wBAAwB;QACxB,KAAK;QACL,EAAE;QACF,iCAAiC;QACjC,yBAAyB;QACzB,KAAK;QACL,EAAE;QACF,iCAAiC;QACjC,yBAAyB;QACzB,KAAK;QAEL,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAY;YAC/B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAa;YACjC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAa;YACjC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAa;YACjC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAY;YAC/B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAW;YAC3B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAa;YAChC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,uBAAuB,CAAC,KAAK,EAAE,GAAa;YACxC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,uBAAuB,CAAC,KAAK,EAAE,GAAW;YACtC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAY;YACnC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAGD,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,yCAAyC;QACzC,gCAAgC;QAChC,KAAK;QAEL,oBAAoB,CAAC,KAAK,EAAE,GAAY;YACpC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QACD,EAAE;QACF,8CAA8C;QAC9C,oCAAoC;QACpC,KAAK;QAEL,2BAA2B,CAAC,KAAK,EAAE,GAAY;YAC3C,KAAK,CAAC,uBAAuB,GAAG,GAAG,CAAC;QACxC,CAAC;QAED,iCAAiC,CAAC,KAAK,EAAE,GAAS;YAC9C,KAAK,CAAC,uBAAuB,GAAG,GAAG,CAAC;QACxC,CAAC;QAED,sBAAsB,CAAC,KAAK,EAAE,GAAY;YACtC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAGD,oBAAoB,CAAC,KAAK,EAAE,GAAY;YACpC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAc;YACjC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAW;YAC5B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAW;YAC5B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,KAAK,EAAE,GAAgB;YACxB,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QACrB,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAW;YAC9B,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAW;YAC/B,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAY;YAC/B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAY;YACjC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,kBAAkB,CAAC,KAAK,EAAE,GAAY;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAGD,YAAY,CAAC,KAAK,EAAE,KAAc;YAC9B,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;QAC9B,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,KAAc;YACvB,yCAAyC;QAC7C,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,MAAiB;YAC3B,mCAAmC;YACnC,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;QAC1B,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,KAAe;YACxB,uCAAO,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;YAC/B,wBAAwB;QAC5B,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,KAAe;YACxB,kCAAkC;YAClC,KAAK,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,OAAiB;YAC5B,uCAAuC;YACvC,KAAK,CAAC,OAAO,GAAG,OAAO,CAAC;YACxB,qCAAqC;QACzC,CAAC;QAED,WAAW,CAAC,KAAK,EAAE,MAAiB;YAChC,KAAK,CAAC,UAAU,GAAG,MAAM,CAAC;QAC9B,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAY;YAC1B,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACxB,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAY;YACpC,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAY;YACnC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAW;YAChC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAa;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,KAAK,CAAC,KAAK,EAAE,GAAW;YACpB,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC;QACtB,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAY;YAC5B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAY;YAC5B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAW;YAC3B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAW;YAC5B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAW;YAClC,KAAK,CAAC,gBAAgB,GAAG,GAAG,CAAC;QACjC,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAW;YAC7B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAW;YAC5B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,GAAY;YACvB,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACvB,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAY;YAC5B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAW;YAC3B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,OAAO,CAAC,KAAK,EAAE,GAAY;YACvB,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACvB,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,QAAQ,CAAC,KAAK,EAAE,GAAW;YACvB,KAAK,CAAC,IAAI,GAAG,GAAG,CAAC;QACrB,CAAC;QAGD,SAAS,CAAC,KAAK,EAAE,GAAY;YACzB,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QACzB,CAAC;QAED,SAAS,CAAC,KAAK,EAAE,GAAY;YACzB,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QACzB,CAAC;QAED,SAAS,CAAC,KAAK,EAAE,GAAU;YACvB,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QACzB,CAAC;QAED,WAAW,CAAC,KAAK,EAAE,GAAY;YAC3B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;QAGD,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAW;YACzB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAW;YACzB,oCAAoC;YACpC,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAW;YAC3B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAW;YACzB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAW;YACzB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAW;YACzB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,QAAQ,CAAC,KAAK,EAAE,GAAW;YACvB,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;QACxB,CAAC;QAED,WAAW,CAAC,KAAK,EAAE,GAAW;YAC1B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAY;YAC7B,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,GAAa;YACvB,KAAK,CAAC,MAAM,GAAG,GAAG,CAAC;QACvB,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAW;YACzB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAW;YACzB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAW;YACzB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,SAAS,CAAC,KAAK,EAAE,GAAW;YACxB,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QACzB,CAAC;QAED,SAAS,CAAC,KAAK,EAAE,GAAW;YACxB,KAAK,CAAC,QAAQ,GAAG,GAAG,CAAC;QACzB,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAY;YAC5B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAW;YAClC,KAAK,CAAC,iBAAiB,GAAG,GAAG,CAAC;QAClC,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAW;YAC7B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,aAAa,CAAC,KAAK,EAAE,GAAW;YAC5B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAY;YACnC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;QAC1E,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAW;YACnC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAC,KAAK,EAAE,GAAG,EAAC,CAAC,CAAC;QAC3E,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAW;YAClC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;QAC1E,CAAC;QAED,mBAAmB,CAAC,KAAK,EAAE,GAAW;YAClC,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAC,IAAI,EAAE,GAAG,EAAC,CAAC,CAAC;QAC1E,CAAC;QAED,+BAA+B,CAAC,KAAK,EAAE,GAAoB;YACvD,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAC,eAAe,EAAE,GAAG,EAAC,CAAC,CAAC;QACrF,CAAC;QAED,gCAAgC,CAAC,KAAK,EAAE,GAAoB;YACxD,KAAK,CAAC,aAAa,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,EAAE,EAAC,eAAe,EAAE,GAAG,EAAC,CAAC,CAAC;QACrF,CAAC;QAED,oBAAoB,CAAC,KAAK;YACtB,KAAK,CAAC,aAAa,GAAG,IAAI,eAAe,EAAE,CAAC;QAChD,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAiC;YACpD,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAsD;YACzE,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,oBAAoB,CAAC,KAAK,EAAE,GAAY;YACpC,KAAK,CAAC,kBAAkB,GAAG,GAAG,CAAC;QACnC,CAAC;QAED,uBAAuB,CAAC,KAAK,EAAE,GAAY;YACvC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,iBAAiB,CAAC,KAAK,EAAE,GAAW;YAChC,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAW;YAC/B,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,YAAY,CAAC,KAAK,EAAE,GAAiB;YACjC,KAAK,CAAC,WAAW,GAAG,GAAG,CAAC;QAC5B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAkB;YACtC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,cAAc,GAAG,GAAG,CAAC;QAC/B,CAAC;QAED,gBAAgB,CAAC,KAAK,EAAE,GAAY;YAChC,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,wBAAwB,CAAC,KAAK,EAAE,GAAY;YACxC,KAAK,CAAC,oBAAoB,GAAG,GAAG,CAAC;QACrC,CAAC;QAED,qBAAqB,CAAC,KAAK,EAAE,GAAa;YACtC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QACD,gBAAgB,CAAC,KAAK,EAAE,GAAwB;YAC5C,KAAK,CAAC,eAAe,GAAG,GAAG,CAAC;QAChC,CAAC;QAED,sBAAsB,CAAC,KAAK,EAAE,GAAY;YACtC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,sBAAsB,CAAC,KAAK,EAAE,GAAY;YACtC,KAAK,CAAC,mBAAmB,GAAG,GAAG,CAAC;QACpC,CAAC;QAED,yBAAyB,CAAC,KAAK,EAAE,GAAY;YACzC,KAAK,CAAC,sBAAsB,GAAG,GAAG,CAAC;QACvC,CAAC;QAED,2BAA2B,CAAC,KAAK,EAAE,GAAQ;YACvC,KAAK,CAAC,wBAAwB,GAAG,GAAG,CAAC;QACzC,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAU;YACxB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,UAAU,CAAC,KAAK,EAAE,GAAW;YACzB,KAAK,CAAC,SAAS,GAAG,GAAG,CAAC;QAC1B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,cAAc,CAAC,KAAK,EAAE,GAAY;YAC9B,KAAK,CAAC,YAAY,GAAG,GAAG,CAAC;QAC7B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAY;YAC/B,KAAK,CAAC,aAAa,GAAG,GAAG,CAAC;QAC9B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAW;YAC9B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;QAED,eAAe,CAAC,KAAK,EAAE,GAAW;YAC9B,KAAK,CAAC,UAAU,GAAG,GAAG,CAAC;QAC3B,CAAC;KACJ;CACJ,CAAC,EAAC;;;;;;;;;;;;;ACjtGmB;AAEtB,MAAM,UAAU,GAAG,IAAI,qDAAG,EAAE,CAAC;AAC7B,iEAAe,UAAU,EAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACHyB;AACE;AACO;AACH;AACA;AACL;AACG;AACI;AACK;;AAEhE,+BAA+B,0DAA0D,UAAU,sBAAO,EAAE,OAAO,oGAAoG,KAAK,4BAA4B,wGAAwG,2CAA2C,kBAAkB,iGAAiG,gCAAgC,EAAE,QAAQ,2DAA2D,4CAA4C,qCAAqC,KAAK,oBAAK,EAAE,OAAO,sBAAsB,KAAK,uBAAQ,EAAE,OAAO,iEAAiE,KAAK,yCAAa,qCAAqC,kCAAS,EAAE,2CAA2C,KAAK,mBAAI,EAAE,0BAA0B,oBAAoB,YAAY,wBAAwB,UAAU,wBAAwB,4KAA4K,wBAAwB,mMAAmM,wBAAwB,4PAA4P,qCAAY,KAAK,mBAAI,EAAE,OAAO,UAAU,KAAK,yBAAyB,kCAAkC,wBAAwB,sBAAO,wCAAwC,mBAAI,EAAE,OAAO,UAAU,KAAK,2BAA2B,uCAAuC,mBAAI,EAAE,OAAO,4BAA4B,KAAK,0BAA0B,qFAAqF,mBAAI,EAAE,OAAO,4BAA4B,KAAK,oCAAoC;AACvrE;AACA;;;;;;;;;;;;;;;;;;;;;;;ACXsD;AACb;AACQ;AACN;AAEyB;AACS;AACvC;AAEQ;AACJ;AAI3B,IAAM,WAAW,GAAjB,MAAM,WAAY,SAAQ,eAAG;IAA7B;;QAEb,kBAAa,GAAY,KAAK,CAAC;QAC/B,uBAAkB,GAAY,KAAK,CAAC;QACpC,eAAU,GAAY,KAAK,CAAC;QAE5B,qBAAgB,GAAW,EAAE,CAAC;QAC9B,eAAU,GAAY,KAAK,CAAC;QAC5B,gBAAW,GAAY,KAAK,CAAC;QAC7B,gBAAW,GAA4B,EAAE,CAAC;QAC1C,eAAU,GAAkB,EAAE,CAAC;IAsKjC,CAAC;IAnKC,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,QAAQ;QACN,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;IACrC,CAAC;IAED,OAAO;QACL,4CAA4C;QAC5C,IAAI,kCAAe,KAAK,uCAAiB,IAAI,kCAAe,KAAK,uCAAiB,EAAE;YAClF,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;aAAM;YACL,4CAAoB,CAAC,+DAA+D,EAAE,SAAS,CAAC,CAAC;SAClG;IAEH,CAAC;IAED,IAAI,cAAc;QAChB,6DAA6D;QAC7D,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,cAAc,CAAC,KAAqB;QACtC,4CAA4C;QAC5C,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAE7B,IAAI,IAAI,CAAC,eAAe,EAAE;YACxB,IAAI,EAAE,GAAG,IAAI,CAAC,eAAe,CAAC;YAC9B,IAAI,EAAE,CAAC,SAAS,EAAE;gBAChB,IAAI,CAAC,gBAAgB,GAAG,EAAE,CAAC,gBAAgB,CAAC;aAC7C;YAED,+BAA+B;YAC/B,oCAAoC;YACpC,4CAA4C;YAC5C,iEAAiE;YACjE,6HAA6H;YAC7H,gDAAgD;YAChD,iEAAiE;YACjE,8CAA8C;YAC9C,cAAc;YACd,gCAAgC;YAChC,2GAA2G;YAC3G,MAAM;YACN,2DAA2D;YAC3D,8BAA8B;YAC9B,aAAa;YACb,+BAA+B;YAC/B,MAAM;YACN,IAAI;YAGJ,IAAI,EAAE,CAAC,kBAAkB,EAAE;gBACzB,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;gBAC/B,IAAI,EAAE,CAAC,SAAS,CAAC,mBAAmB,EAAE;oBACpC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,sBAAsB,CAAC;oBAC1D,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,mFAAmF,CAAC;oBACtH,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC;oBACzC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,sCAAY,CAAC;oBAC1D,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;iBACxC;qBAAM;oBACL,IAAI,EAAE,CAAC,aAAa,IAAI,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE;wBACnD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;qBACxB;yBAAM;wBACL,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;qBACzB;iBACF;aACF;SAGF;IACH,CAAC;IAED,sBAAsB;QACpB,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACrC,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED,YAAY;QACV,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC;QACrC,kGAAkG;QAClG,IAAI,IAAI,CAAC,kBAAkB,EAAE;YAC3B,2CAA2C;YAC3C,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,sCAAe,EAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;YACvD,CAAC,CAAC,CAAC;SACJ;QACD,6GAA6G;aACxG;YACH,kDAAkD;YAClD,IAAI,CAAC,oBAAoB,EAAE,CAAC;SAC7B;IACH,CAAC;IAED,oBAAoB;QAClB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,0BAAS,CACL,sBAAsB,EACtB,yBAAyB,GAAG,kDAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAC5F,CAAC;QAEF,UAAU,CAAC;YACT,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,kDAAqB,GAAG,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC;QACvF,CAAC,EAAE,GAAG,CAAC,CAAC;IACV,CAAC;IAED,aAAa;QACX,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,4CAA4C,CAAC;QAChF,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,8GAA8G,CAAC;QACjJ,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,MAAM,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,IAAI,CAAC,oBAAoB,CAAC;QACvE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;QAGvC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,oBAAoB;QAClB,MAAM,MAAM,GAAG,kCAAkC,CAAC;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,0FAAyC,EAAE;aACtC,IAAI,CAAC,IAAI,CAAC,EAAE;YAEX,iCAAiC;YACjC,IAAI,IAAI,KAAK,IAAI,EAAE;gBACjB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,GAAG,2CAA2C,CAAC;gBAC/E,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,uEAAuE,CAAC;gBAC1G,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,OAAO,CAAC;gBAC1C,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,eAAe,GAAG,GAAG,EAAE;oBAChD,sCAAY,EAAE,CAAC;oBACf,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAC,IAAI,EAAE,kCAAa,EAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE;oBACrD,CAAC,CAAC,CAAC;gBACL,CAAC,CAAC;gBACF,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC;aACxC;iBAAM;gBACL,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC1B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;gBAC3B,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC3C,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;oBACvB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC;oBAC/B,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,cAAc,GAAG,IAAI,CAAC,CAAC,CAAC;iBACzD;gBAED,IAAI,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE;oBAC7C,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;oBACxB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;oBACtB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;wBACzB,IAAI,IAAI,GAAG,IAAI,kDAAgB,CAAC,EAAE,CAAC,CAAC;wBACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;wBACrB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBAC9B,CAAC,CAAC,CAAC;iBACJ;aACF;QACH,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,EAAE;gBACnC,8BAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC;aACzC;QACH,CAAC,CAAC,CAAC;IACT,CAAC;CAGF;AAhLoB,WAAW;IAD/B,qBAAS;GACW,WAAW,CAgL/B;0EAhLoB,WAAW;;;ACf2S,CAAC,kFAAe,mCAAG,EAAC;;;;ACAzP;AACvC;AACL;;;AAG1D;AACA,CAAuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,2CAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,0DAAe;;;;;;;;;;;;;;;;;AClBsC;;AAErD,+BAA+B,0DAA0D,qCAAqC,2CAA2C,wJAAwJ,UAAU,8IAA8I,oBAAoB,6SAA6S,MAAM,yBAAyB,sEAAsE,sCAAsC,aAAa,mHAAmH,UAAU,qFAAqF,EAAE,mBAAmB,oBAAK,EAAE,OAAO,0CAA0C,wJAAwJ,yCAAyC,+PAA+P,oDAAoD,4DAA4D,uFAAuF,oBAAK,EAAE,OAAO,mBAAmB,sHAAsH,oBAAK,EAAE,OAAO,mBAAmB,2DAA2D,iDAAiD,0EAA0E,aAAa,wKAAwK,sEAAsE,eAAe,aAAa,qEAAqE,KAAK,yBAAyB,4BAA4B,KAAK,oBAAK,EAAE,SAAS,mDAAmD,EAAE,8DAA8D,aAAa,sBAAsB,QAAQ,4BAA4B,YAAY,aAAa,wCAAwC,UAAU,sFAAsF,SAAS,0BAA0B;AAC/+F;AACA;;;;;;;;;;;;;;;;ACH8D;AACM;AACc;AAC1B;AAKzC,IAAM,cAAc,GAApB,MAAM,cAAe,SAAQ,eAAG;IAAhC;;QASF,UAAK,GAAG,OAAO,CAAC;QAChB,gBAAW,GAAG,OAAO,CAAC;QACtB,WAAM,GAAG,OAAO,CAAC;QAE1B,eAAU,GAAG,KAAK,CAAC;QAEnB,qBAAgB,GAAG,6CAAgB,CAAC;IA0ExC,CAAC;IAxEG,IAAI,OAAO;QACP,OAAO,wBAAU,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACL,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC;IAC5I,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC;IACxD,CAAC;IAED,IAAI,SAAS;QACT,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IACnD,CAAC;IAED,IAAI,aAAa;QACb,OAAO,IAAI,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACrD,CAAC;IAED,IAAI,MAAM;QACN,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC;IAC3J,CAAC;IAED,IAAI,iBAAiB;QACjB,OAAO,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IAChD,CAAC;IAED,IAAI,eAAe;QACf,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;YACzB,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;SAC5C;QACD,OAAO,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,OAAO,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;IACzG,CAAC;IAED,IAAI,eAAe;QACf,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE;YAC1B,OAAO,0BAA0B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;SACtI;aACI,IAAI,IAAI,CAAC,IAAI,KAAK,WAAW,EAAE;YAChC,OAAO,0BAA0B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;SAC/H;aAAM,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,EAAE;YACxD,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,8CAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,0BAA0B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC;SAC9K;IACL,CAAC;IAED,IAAI,mBAAmB;QACnB,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,SAAS,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAC/E,CAAC;IAED,WAAW;QACP,IAAI,CAAC,CAAC,IAAI,CAAC,KAAK;YAAE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;IAC7C,CAAC;IAED,YAAY;QACR,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,YAAY;QACR,OAAO,8CAAmB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,qBAAqB;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,QAAQ,KAAK,iEAA0B,EAAE;YACpD,OAAO,mBAAmB,CAAC;SAC9B;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,2BAA2B;QACvB,OAAO,KAAK,CAAC;IACjB,CAAC;CACJ;AAxFG;IAAC,oBAAI,EAAE;;4CAAqD;AAC5D;IAAC,oBAAI,EAAE;;4CAAkD;AACzD;IAAC,oBAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;;+CAAkB;AAC5D;IAAC,oBAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;wEAAQ,8BAAW,oBAAX,8BAAW;6CAAC;AAClE;IAAC,oBAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;;gDAAkB;AAChE;IAAC,oBAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;;mDAAiC;AAC/E;IAAC,oBAAI,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC;;4CAA2B;AAPxD,cAAc;IAHlC,yBAAS,CAAC;QACP,UAAU,EAAE,EAAE;KACjB,CAAC;GACmB,cAAc,CAyFlC;6EAzFoB,cAAc;;;ACT2S,CAAC,wFAAe,sCAAG,EAAC;;ACAlW;;;;;;;AEAyG;AACvC;AACL;AAC7D,CAAuG;;;AAGvG;AACuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,iDAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,gEAAe;;;;;;;;;;;;;;;;;;;ACnBoC;AACE;;AAErD,+BAA+B,0DAA0D,mCAAmC,0DAA0D,+CAA+C,KAAK,4BAA4B,wGAAwG,2CAA2C,kBAAkB,iGAAiG,0CAA0C,GAAG,KAAK,oBAAK,EAAE,qBAAqB,YAAY,2BAA2B,6BAA6B,+CAA+C,0BAA0B,4BAA4B,uCAAuC,mBAAI,EAAE,iCAAiC,0BAA0B,KAAK,uBAAuB,sDAAsD,mBAAI,EAAE,gCAAgC,mCAAmC,KAAK,sBAAsB;AACjiC;AACA;;;;;;;;;;;ACHsD;AACA;AAGvC,IAAM,SAAS,GAAf,MAAM,SAAU,SAAQ,eAAG;IAA3B;QAEb,eAAe;;QAEf,gBAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;QACxC,iBAAY,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc;QAC1C,gBAAW,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa;QACxC,mBAAc,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;QAC9C,mBAAc,GAAG,IAAI,CAAC,OAAO,CAAC,gBAAgB;QAwC9C,mBAAmB;IAErB,CAAC;IAxCC,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,kBAAkB;IAElB,OAAO;QACL,0EAA0E;QAC1E,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAE,IAAI,CAAC,KAAK,CAAC,aAA6B,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1E,CAAC;IAGD,qBAAqB;IAErB,OAAO,CAAC,KAAY;QAClB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAGD,QAAQ;QACN,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACpB,CAAC;IAED,SAAS;QACP,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,WAAoB;QACxB,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;IAC3B,CAAC;CAGF;AAlDoB,SAAS;IAD7B,qBAAS;GACW,SAAS,CAkD7B;wEAlDoB,SAAS;;;ACN2S,CAAC,gFAAe,iCAAG,EAAC;;ACA7V;;;;;;;AEAoG;AACvC;AACL;AACxD,CAAmG;;;AAGnG;AACuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,yCAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,wDAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnB0C;AACN;AACE;AACO;AACH;AACC;AACD;AACJ;AACF;AACE;AACI;AACO;AACF;AACD;AACC;AACV;AACW;;AAE/D,+BAA+B,0DAA0D,UAAU,mBAAI,EAAE,OAAO,oBAAoB,KAAK,sBAAO,EAAE,OAAO,yIAAyI,KAAK,2BAA2B,wGAAwG,4CAA4C,QAAQ,0CAA0C,aAAa,oBAAoB,KAAK,oBAAK,KAAK,mCAAU,EAAE,+BAA+B,yCAAyC,kCAAS,EAAE,2CAA2C,KAAK,yBAAU,EAAE,oBAAoB,qDAAqD,QAAQ,kDAAkD,qBAAqB,4BAA4B,KAAK,oBAAK,EAAE,0BAA0B,WAAW,KAAK,6BAAc,EAAE,OAAO,mBAAmB,wBAAwB,wBAAS,EAAE,4BAA4B,sBAAsB,KAAK,4BAAa,KAAK,oBAAK,EAAE,aAAa,kBAAkB,oCAAoC,yCAAgB,KAAK,uCAAc,EAAE,wBAAwB,qFAAqF,UAAU,wBAAS,EAAE,kCAAkC,yBAAyB,gCAAgC,KAAK,4BAAa,KAAK,sBAAO,EAAE,OAAO,aAAa,KAAK,mBAAI,EAAE,OAAO,uBAAuB,aAAa,yCAAgB,KAAK,uCAAc,EAAE,kCAAkC,kCAAkC,UAAU,iBAAiB,qCAAY,KAAK,mBAAI,EAAE,OAAO,qCAAqC,KAAK,sBAAsB;AAC3uD;AACA;;;;;;;;;;;;;;;;;AClBmE;AACb;AAC0B;AACzB;AACjB;AAGvB,IAAM,oBAAoB,GAA1B,MAAM,oBAAqB,SAAQ,eAAG;IAAtC;;QAOb,iBAAY,GAAG,EAAE,CAAC;IA0FpB,CAAC;IAxFC,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,6BAAY,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,mBAAmB,CAAC;IAC7B,CAAC;IAGD,aAAa,CAAC,OAAgB;QAC5B,IAAI,OAAO,EAAE;YACX,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;oBACpB,IAAI,CAAC,KAAK,CAAC,MAAc,CAAC,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,CAAC;iBAC/D;YACH,CAAC,EAAE,GAAG,CAAC;SACR;IACH,CAAC;IAED,IAAI,YAAY;;QACd,IAAI,MAAM,GAAc,EAAE,CAAC;QAC3B,IAAI,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC3B,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,UAAI,CAAC,MAAM,mCAAI,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,IAAI,KAAK,CAAC,CAAC;YAChD,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;SAC5F;aAAM;YACL,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;SAC9B;QAED,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,MAAM,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,IAAI,EAAE,CAAC;YACpD,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,eAAC,sBAAE,CAAC,IAAI,0CAAE,WAAW,EAAE,0CAAE,OAAO,CAAC,IAAI,CAAC,MAAK,CAAC,CAAC,IAAC,CAAC;SAC5E;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,YAAY;IAGZ,oBAAoB;IAEpB,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,uBAAuB;IAGvB,WAAW,CAAC,KAAc,EAAE,KAAK,GAAG,KAAK;QACvC,MAAM,IAAI,GAAG,IAAI,2BAAW,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACtB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAChC,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,KAAK;QACH,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACxB,CAAC;IAED,OAAO;IACP,CAAC;IAED,QAAQ;QACN,MAAM,MAAM,GAAG,+BAA+B,CAAC;QAC/C,IAAI,KAAK,GAAG,6CAAkB,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;aAC1C,IAAI,CAAC,QAAQ,CAAC,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC7B,IAAI,CAAC,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;QACnC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,OAAO,GAAG,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,gBAAgB,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,0BAA0B,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;YACrE,8BAAW,CAAC,MAAM,EAAE,cAAc,GAAG,EAAE,CAAC,CAAC;QAC3C,CAAC,CAAC,CAAC;IACT,CAAC;CAEF;AA/FC;IAAC,oBAAI,CAAC,MAAM,CAAC;;uDAA4B;AACzC;IAAC,oBAAI,CAAC,OAAO,CAAC;;kDAAwB;AACtC;IAAC,oBAAI,CAAC,OAAO,CAAC;;0DAAgC;AAC9C;IAAC,oBAAI,EAAE;;oDAAsB;AAgB7B;IAAC,qBAAK,CAAC,MAAM,EAAE,EAAC,SAAS,EAAE,IAAI,EAAC,CAAC;;;;yDAShC;AA9BkB,oBAAoB;IADxC,qBAAS;GACW,oBAAoB,CAiGxC;mFAjGoB,oBAAoB;;;ACT2S,CAAC,2FAAe,4CAAG,EAAC;;;;ACArQ;AAC3B;AACL;;;AAGnE;AACA,CAAuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,oDAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,mEAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBoC;AACE;AACO;AACH;AACE;AACN;AACD;AACG;AACI;AACK;;AAEhE,+BAA+B,0DAA0D,UAAU,mBAAI,KAAK,sBAAO,EAAE,OAAO,eAAe,+CAA+C,uHAAuH,KAAK,2BAA2B,wGAAwG,4CAA4C,QAAQ,8DAA8D,+CAA+C,wCAAwC,KAAK,oBAAK,EAAE,aAAa,+BAA+B,QAAQ,gBAAgB,KAAK,uBAAQ,EAAE,OAAO,6CAA6C,KAAK,yCAAa,iCAAiC,sBAAO,4EAA4E,mBAAI,EAAE,wCAAwC,0CAA0C,KAAK,yBAAyB,qCAAqC,wCAAwC,oBAAK,gDAAgD,kEAAkE,gCAAgC,YAAY,qDAAqD,QAAQ,8CAA8C,iBAAiB,aAAa,GAAG,sBAAsB,OAAO,sFAAsF,gBAAgB,0DAA0D,kBAAkB,SAAS,8CAA8C,aAAa,GAAG,YAAY,kDAAkD,gCAAgC,aAAa,+CAA+C,yIAAyI,6CAA6C,oBAAK,EAAE,aAAa,kJAAkJ,QAAQ,uCAAuC,0CAA0C,uBAAQ,KAAK,qCAAY,EAAE,oBAAoB,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,mBAAmB,KAAK,sBAAsB,0BAA0B,mBAAI,EAAE,OAAO,4BAA4B,KAAK,sBAAsB;AAC38E;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACXmE;AACb;AAC0B;AAC5B;AACN;AACM;AACF;AACc;AACE;AAC5B;AACG;AACD;AAKzB,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,eAAG;IAA9B;;QAKb,eAAe;QAEf,cAAS,GAAG,CAAC,CAAC;QACd,cAAS,GAAG,CAAC,CAAC;QA4Nd,YAAY;IAGd,CAAC;IArNC,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,6BAAY,CAAC;IACtB,CAAC;IAED,IAAI,KAAK;;QACP,IAAI,oDAAwB,EAAE;YAC5B,OAAO,oBAAoB,UAAI,CAAC,OAAO,CAAC,SAAS,0CAAE,OAAO,EAAE,CAAC;SAC9D;aAAM,IAAI,kEAA+B,EAAE;YAC1C,OAAO,qBAAqB,CAAC;SAC9B;aAAM;YACL,OAAO,YAAY,IAAI,CAAC,SAAS,EAAE,CAAC;SACrC;IACH,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO,CAAC;IACpG,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC;IAChE,CAAC;IAED,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC;IACjC,CAAC;IAED,IAAI,SAAS;QACX,IAAI,IAAI,GAAG,wDAAwB,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC;QACnE,OAAO,IAAI,CAAC;IACd,CAAC;IAED,kBAAkB;IAGlB,kBAAkB,CAAC,GAAG;QACpB,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,EAAE;YAChC,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;YACzB,IAAI,CAAC,SAAS,GAAG,GAAG,CAAC,GAAG,CAAC;YACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;SACpC;IACH,CAAC;IAGO,OAAO;QAEb,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,MAAM,GAAG,oDAAsB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAC,QAAQ,EAAE,MAAM,EAAC,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,mBAAmB,CAAC;YACrD,QAAQ,EAAE,GAAG;YACb,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;SACrC,CAAC,CAAC;QACH,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;QAEjD,IAAI,OAAO,GAAkB;YAC3B,IAAI,EAAE,gDAAoB;YAC1B,MAAM,EAAE;gBACN,GAAG,EAAE,IAAI,CAAC,OAAO;gBACjB,GAAG,EAAE,IAAI,CAAC,OAAO;aAClB;YACD,UAAU,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC;YACpC,UAAU,EAAE,MAAM,CAAC,gBAAgB,IAAI,CAAC;SACzC,CAAC;QAEF,IAAI,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAkB,CAAC;QACjD,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;QACnD,IAAI,MAAM,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACjD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAEjE,IAAI,CAAC,iBAAiB,EAAE,CAAC;QACzB,IAAI,CAAC,eAAe,EAAE,CAAC;QACvB,IAAI,CAAC,WAAW,EAAE,CAAC;QAEnB,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,EAAE;YAC9B,MAAM,GAAG,GAAG,IAAI,mBAAK,EAAE,CAAC;YACxB,GAAG,CAAC,IAAI,GAAG,oCAAe,CAAC;YAC3B,GAAG,CAAC,IAAI,GAAG,IAAI,oBAAM,EAAE,CAAC;YACxB,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC;YAC1B,iCAAY,CAAC,GAAG,EAAE;gBACZ,GAAG,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE;oBAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBAClD,IAAI,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oBACnD,IAAI,QAAQ,GAAG,EAAwB,CAAC;oBACxC,IAAI,MAAM;wBAAE,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC;oBACrC,IAAI,QAAQ;wBAAE,QAAQ,CAAC,IAAI,GAAG,QAAQ,CAAC;oBACvC,IAAI,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;oBAC7C,MAAM,MAAM,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,EAAC,GAAG,EAAE,IAAI,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,OAAO,EAAC,CAAC,CAAC;oBACxE,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;oBACrB,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;gBAC7B,CAAC,CAAC,CAAC;YACL,CAAC,CACJ,CAAC;SACH;IACH,CAAC;IAGO,iBAAiB;QAEvB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACzC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;QACrD,IAAI,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,OAAO,EAAE;YACX,IAAI,IAAI,CAAC,OAAO,CAAC,UAAU,EAAE;gBAC3B,OAAO,CAAC,UAAU,CAAC,EAAC,MAAM,EAAE,IAAI,EAAC,CAAC,CAAC;aACpC;iBAAM;gBACL,OAAO,CAAC,UAAU,CAAC,EAAC,MAAM,EAAE,KAAK,EAAC,CAAC,CAAC;aACrC;SACF;IAEH,CAAC;IAGD,eAAe;QACb,IAAI,CAAC,GAAG,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,GAAG,EAAE;YACjD,IAAI,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC;YACpC,IAAI,QAAQ,EAAE;gBACZ,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC;gBAC9B,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC;gBAC9B,yDAA0B,GAAG,QAAQ,CAAC,GAAG,CAAC;gBAC1C,yDAA0B,GAAG,QAAQ,CAAC,GAAG,CAAC;aAC3C;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAGO,WAAW;QAEjB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,IAAI,IAAI,CAAC,GAAG,EAAE;YAEZ,MAAM,SAAS,GAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;YACtH,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,SAAS,CAAC;YAEhC,IAAI,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;SACjC;IACH,CAAC;IAGD,oBAAoB,CAAC,KAAa;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,UAAU,CAAC;YACT,IAAI,CAAC,aAAa,CAAC,sBAAsB,CAAC,CAAC;QAC7C,CAAC,EAAE,KAAK,CAAC,CAAC;IACZ,CAAC;IAGD,aAAa,CAAC,GAAW;QACvB,IAAI,IAAI,CAAC,GAAG,EAAE;YACZ,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,MAAM,EAAE,CAAC;SACjC;IACH,CAAC;IAED,qBAAqB;IAGrB,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAGD,QAAQ;QACN,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,IAAI,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC;QACzB,IAAI,KAAK,GAAG,IAAI,4BAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;QACrC,wDAAwD;QACxD,IAAI,IAAI,CAAC,OAAO,CAAC,aAAa,IAAI,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC;YAC5F,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;YAClE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,2EAA2E,CAAC,CAAC;SACrG;aAAM;YACL,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;YAChC,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IAEH,CAAC;IAGD,QAAQ;QACN,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,gBAAgB,GAAG,KAAK,CAAC;IACxC,CAAC;IAGD,mBAAmB;IAGnB,mBAAmB;IAEnB,OAAO;QACL,mFAAmF;QACnF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC;QAC9B,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;CAKF;AAtOC;IAAC,oBAAI,CAAC,MAAM,CAAC;;+CAA4B;AACzC;IAAC,oBAAI,CAAC,MAAM,CAAC;;6CAA0B;AACvC;IAAC,oBAAI,CAAC,MAAM,CAAC;;6CAA0B;AAwDvC;IAAC,qBAAK,CAAC,uBAAuB,CAAC;;;;sDAQ9B;AAnEkB,YAAY;IAHhC,yBAAS,CAAC;QACT,UAAU,EAAE,EAAC,aAAa,gCAAE,YAAY,+BAAC;KAC1C,CAAC;GACmB,YAAY,CAuOhC;2EAvOoB,YAAY;;;AClB2S,CAAC,mFAAe,oCAAG,EAAC;;ACAhW;;;;;;;AEAuG;AACvC;AACL;AAC3D,CAAsG;;;AAGtG;AACuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,4CAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,2DAAe;;;;;;;;;;;;;;;;;;;;;;;;;ACnBoC;AACE;AACE;AACI;AACK;;AAEhE,+BAA+B,0DAA0D,iBAAiB,wCAAwC,gCAAgC,KAAK,uBAAQ,EAAE,OAAO,YAAY,8BAA8B,mBAAI,EAAE,OAAO,UAAU,KAAK,8BAA8B,KAAK,oBAAK,2CAA2C,sBAAO,KAAK,yCAAa,6BAA6B,sBAAO,KAAK,mBAAI,EAAE,OAAO,0CAA0C,KAAK,qBAAqB,4CAA4C,OAAO,iDAAiD;AACxlB;AACA;;;;;;;;;;;;;;;ACP4D;AACN;AACqB;AACX;AAKjD,IAAM,aAAa,GAAnB,MAAM,aAAc,SAAQ,eAAG;IAI5C,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,6BAAO,CAAC;IACjB,CAAC;IAED,OAAO;QACL,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY;YAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,KAAK,CAAC,iBAAiB,GAAG,IAAI,CAAC,iBAAiB,CAAC;IACxD,CAAC;CAGF;AAvBC;IAAC,oBAAI,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAG;;wDAA4B;AACpD;IAAC,oBAAI,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAG;;0DAA8B;AAFnC,aAAa;IAHjC,yBAAS,CAAC;QACT,UAAU,EAAE,EAAC,YAAY,+BAAC;KAC3B,CAAC;GACmB,aAAa,CAwBjC;4EAxBoB,aAAa;;;ACT2S,CAAC,oFAAe,qCAAG,EAAC;;ACAjW;;;;;;;AEAwG;AACvC;AACL;AAC5D,CAAuG;;;AAGvG;AACuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,6CAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,4DAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnB0C;AACN;AACE;AACO;AACR;AACM;AACD;AACJ;AACA;AACI;AACO;AACF;AACD;AACI;AACH;AACT;AACA;AACD;AACG;AACQ;AACJ;;AAE3D,+BAA+B,0DAA0D,UAAU,oBAAK,EAAE,aAAa,uEAAuE,QAAQ,gBAAgB,KAAK,yBAAU,EAAE,aAAa,sGAAsG,cAAc,6BAA6B,4DAA4D,QAAQ,cAAc,KAAK,0BAA0B,uGAAuG,+CAA+C,kBAAkB,6GAA6G,2CAA2C,kBAAkB,6GAA6G,yDAAyD,iDAAiD,kBAAkB,gHAAgH,yDAAyD,6CAA6C,8BAA8B,iGAAiG,8BAA8B,kBAAkB,wGAAwG,iDAAiD,GAAG,KAAK,mBAAI,EAAE,aAAa,2BAA2B,QAAQ,iBAAiB,yBAAyB,uBAAQ,EAAE,aAAa,sBAAsB,QAAQ,sBAAsB,KAAK,yBAAU,EAAE,oBAAoB,+PAA+P,KAAK,kHAAkH,wGAAwG,sDAAsD,kBAAkB,4FAA4F,wBAAwB,gCAAgC,kBAAkB,iGAAiG,2BAA2B,4BAA4B,uGAAuG,+BAA+B,kBAAkB,6GAA6G,gCAAgC,EAAE,QAAQ,gDAAgD,mBAAmB,0BAA0B,KAAK,mBAAI,EAAE,OAAO,6CAA6C,KAAK,mCAAmC,KAAK,oBAAK,yEAAyE,mBAAI,EAAE,2EAA2E,EAAE,6CAA6C,qCAAqC,mBAAmB,UAAU,iBAAiB,KAAK,oBAAK,EAAE,aAAa,eAAe,QAAQ,sBAAsB,KAAK,6BAAc,EAAE,OAAO,kBAAkB,QAAQ,+CAA+C,kBAAkB,yBAAyB,iDAAiD,UAAU,wBAAS,EAAE,qCAAqC,oDAAoD,YAAY,4FAA4F,OAAO,EAAE,qDAAqD,MAAM,OAAO,+BAA+B,yCAAyC,8BAA8B,wCAAwC,6BAA6B,yCAAyC,0BAA0B,kCAAkC,KAAK,4BAAa,KAAK,sBAAO,EAAE,OAAO,aAAa,KAAK,oBAAK,EAAE,OAAO,4BAA4B,mDAAmD,yCAAgB,KAAK,uCAAc,EAAE,4CAA4C,mBAAmB,YAAY,IAAI,eAAe,wCAAwC,mBAAI,EAAE,2CAA2C,WAAW,KAAK,oBAAK,EAAE,IAAI,yBAAyB,6BAA6B,oDAAoD,oBAAK,EAAE,OAAO,0EAA0E,QAAQ,uDAAuD,0BAA0B,iCAAiC,KAAK,oBAAK,KAAK,wBAAS,EAAE,0BAA0B,2BAA2B,KAAK,uCAAc,EAAE,mBAAmB,oDAAoD,0CAAiB,EAAE,wBAAwB,4EAA4E,gBAAgB,mBAAI,EAAE,iCAAiC,qCAAqC,KAAK,oBAAK,EAAE,gCAAgC,uCAAuC,mFAAmF,mBAAI,EAAE,sCAAsC,qCAAqC,KAAK,oBAAK,EAAE,gCAAgC,uCAAuC,KAAK,mBAAI,EAAE,uBAAuB,qCAAqC,KAAK,oBAAK,EAAE,mBAAmB,4JAA4J,mBAAI,EAAE,aAAa,0CAA0C,QAAQ,iBAAiB,KAAK,qCAAY,EAAE,uCAAuC,iBAAiB,kCAAkC,mBAAI,EAAE,OAAO,iBAAiB,KAAK,mBAAI,EAAE,OAAO,YAAY,KAAK,mBAAI,EAAE,4CAA4C,2DAA2D,uCAAuC,EAAE,KAAK,4BAA4B,KAAK,oBAAK,EAAE,0BAA0B,8BAA8B,6DAA6D,mBAAI,EAAE,OAAO,YAAY,KAAK,mBAAI,EAAE,4CAA4C,gDAAgD,uCAAuC,EAAE,KAAK,4BAA4B,KAAK,oBAAK,EAAE,0BAA0B,kCAAkC,gFAAgF,mBAAI,EAAE,OAAO,YAAY,KAAK,mBAAI,EAAE,4CAA4C,gDAAgD,uCAAuC,EAAE,KAAK,4BAA4B,KAAK,oBAAK,EAAE,0BAA0B,8BAA8B,2EAA2E,mBAAI,EAAE,OAAO,YAAY,KAAK,mBAAI,EAAE,4CAA4C,oDAAoD,uCAAuC,EAAE,KAAK,gCAAgC,KAAK,oBAAK,EAAE,mBAAmB,gEAAgE,sBAAO,EAAE,OAAO,uDAAuD,0BAA0B,iCAAiC,KAAK,oBAAK,KAAK,wBAAS,EAAE,OAAO,2BAA2B,KAAK,4BAA4B,0BAA0B,sBAAO,KAAK,oBAAK,EAAE,OAAO,WAAW,oCAAoC,wBAAS,EAAE,OAAO,2BAA2B,KAAK,4BAA4B,8BAA8B,sBAAO,KAAK,oBAAK,EAAE,OAAO,WAAW,mDAAmD,wBAAS,EAAE,OAAO,2BAA2B,KAAK,4BAA4B,0BAA0B,sBAAO,KAAK,oBAAK,EAAE,OAAO,WAAW,kDAAkD,wBAAS,EAAE,OAAO,+BAA+B,KAAK,gCAAgC,2BAA2B,sBAAO,KAAK,oBAAK,EAAE,OAAO,WAAW;AAClvQ;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtBmE;AACb;AACqB;AACvB;AACA;AACmE;AAC/D;AAClB;AAGc;AACJ;AACF;AACF;AACV;AAGnB,IAAM,YAAY,GAAlB,MAAM,YAAa,SAAQ,eAAG;IAA9B;QAEb,eAAe;;QAIf,cAAS,GAAG,CAAC,CAAC,CAAC;QACf,WAAM,GAAG,CAAC,CAAC;QACX,eAAU,GAAG,EAAE,CAAC;QAGhB,kBAAa,GAAG,CAAC,CAAC;QAClB,YAAO,GAAG,IAAI,CAAC;QACf,aAAQ,GAAG,IAAI,CAAC;QAChB,YAAO,GAAG,IAAI,CAAC;QACf,wBAAmB,GAAG,KAAK,CAAC;QAC5B,mBAAc,GAAG,IAAI,CAAC;QACtB,iBAAY,GAAG,IAAI,CAAC;QACpB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,sBAAiB,GAAG,KAAK,CAAC;QAC1B,UAAK,GAAG,CAAC,CAAC;QACV,UAAK,GAAG,CAAC,CAAC;QA0DV,cAAS,GAAG,kDAAqB,CAAC;QAMlC,cAAS,GAAG,kDAAqB,CAAC;QAMlC,cAAS,GAAG,kDAAqB,CAAC;IAqzBpC,CAAC;IAz3BC,gCAAgC;IAGhC,IAAI,OAAO;QACT,OAAO,wBAAU;IACnB,CAAC;IAAA,CAAC;IAEF,IAAI,KAAK;QACP,OAAO,6BAAO,CAAC;IACjB,CAAC;IAAA,CAAC;IAEF,IAAI,aAAa;QACf,OAAO;YACL,GAAG,IAAI,CAAC,KAAK,CAAC,mBAAmB;YACjC,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB;YAChC,GAAG,IAAI,CAAC,KAAK,CAAC,kBAAkB;YAChC,GAAG,IAAI,CAAC,KAAK,CAAC,gBAAgB;SAC/B,CAAC;IACJ,CAAC;IAED,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,MAAM,GAAG,CAAC,CAAC;QACtI,8CAA8C;QAC9C,oBAAoB;IACtB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,WAAW;QACb,oDAAoD;QACpD,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;IAC1E,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,wCAAkB,CAAC;IACjF,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,wCAAkB,CAAC;IACjF,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IAED,IAAI,YAAY;QACd,6CAA6C;QAC7C,OAAO,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC;IACtC,CAAC;IAID,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAID,IAAI,oBAAoB;QACtB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAID,IAAI,gBAAgB;QAClB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,iCAAiC;IACjC,0BAA0B;IAC1B,qEAAqE;IACrE,uBAAuB;IACvB,MAAM;IACN,qBAAqB;IACrB,IAAI;IAGJ,IAAI,QAAQ;QACV,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,QAAQ,GAA6B,EAAE,CAAC;QAE5C,iBAAiB;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACnB,OAAO,EAAE,CAAC;gBACV,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,IAAI,GAAG,GAAG,GAAG,SAAS,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;gBACpD,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACvB,CAAC,CAAC,CAAC;SACJ;QACD,2CAA2C;QAE3C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,IAAI,QAAQ;QACV,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,QAAQ,GAA6B,EAAE,CAAC;QAE5C,iBAAiB;QACjB,IAAI,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;QAC/B,gDAAgD;QAChD,IAAI,KAAK,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YAC7B,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;gBACnB,OAAO,EAAE,CAAC;gBACV,IAAI,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACxC,IAAI,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBAClE,IAAI,GAAG,GAAG,GAAG,SAAS,IAAI,YAAY,IAAI,OAAO,EAAE,CAAC;gBACpD,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACvB,CAAC,CAAC,CAAC;SACJ;QACD,2CAA2C;QAE3C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,OAAO,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;SACpC;QACD,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,KAAK,CAAC,oBAAoB,CAAC;IACzC,CAAC;IAED,IAAI,cAAc,CAAC,KAAqB;QACtC,IAAI,CAAC,KAAK,CAAC,oBAAoB,GAAG,KAAK,CAAC;IAC1C,CAAC;IAED,IAAI,eAAe;QACjB,IAAI,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,CAAC,EAAE;YAC5B,OAAO,uBAAuB,CAAC;SAChC;aAAM;YACL,OAAO,mCAAmC;SAC3C;IACH,CAAC;IAED,6BAA6B;IAC7B,6BAA6B;IAC7B,IAAI;IACJ,EAAE;IACF,iCAAiC;IACjC,+CAA+C;IAC/C,8BAA8B;IAC9B,IAAI;IAEJ,YAAY;IAGZ,qBAAqB;IAErB,uBAAuB;QACrB,MAAM,MAAM,GAAG,sCAAsC,CAAC;QACtD,IAAI,MAAM,GAAG,IAAI,0BAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG,+CAAuB,CAAC;QACxC,MAAM,CAAC,IAAI,GAAG,+CAAuB,CAAC;QACtC,MAAM,CAAC,IAAI,GAAG,yDAA2B,CAAC;QAC1C,MAAM,CAAC,IAAI,GAAG,EAAE,CAAC;QACjB,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;QACf,MAAM,CAAC,QAAQ,GAAG,0DAAyB,CAAC;QAC5C,MAAM,CAAC,QAAQ,GAAG,0DAAyB,CAAC;QAC5C,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,MAAM,CAAC,QAAQ,GAAG,GAAG,gEAA4B,CAAC,CAAC,CAAC,IAAI,kEAA6B,CAAC,CAAC,CAAC;QACpF,gEAA4B,CAAC,CAAC,CAAC,IAAI,kEAA6B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU;QACrF,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,MAAM,CAAC,OAAO,GAAG,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,KAAK,CAAC;QACnC,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,IAAI,CAAC;QACzC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC;aACzE,IAAI,CAAC,QAAQ,CAAC,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,8BAAW,CAAC,MAAM,EAAE,mEAAmE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QACnH,CAAC,CAAC,CAAC;IACT,CAAC;IAED,aAAa;QACX,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAC5C,sDAAsD;QACtD,IAAI,MAAM,GAAG,IAAI,0BAAW,EAAE,CAAC;QAC/B,MAAM,CAAC,MAAM,GAAG,+CAAuB,CAAC;QACxC,MAAM,CAAC,IAAI,GAAG,qDAA0B,CAAC;QACzC,MAAM,CAAC,IAAI,GAAG,yDAA2B,CAAC;QAC1C,MAAM,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC;QACvC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;QACrC,MAAM,CAAC,GAAG,GAAG,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC;QACrC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC;QAC7C,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;QACpC,MAAM,CAAC,QAAQ,GAAG,GAAG,gEAA4B,CAAC,CAAC,CAAC,IAAI,kEAA6B,CAAC,CAAC,CAAC;QACpF,gEAA4B,CAAC,CAAC,CAAC,IAAI,kEAA6B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU;QACrF,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC/B,MAAM,CAAC,OAAO,GAAG,kBAAkB,MAAM,CAAC,IAAI,EAAE,CAAC;QACjD,IAAI,CAAC,OAAO,CAAC,oBAAoB,GAAG,KAAK,CAAC;QAC1C,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,CAAC,SAAS,GAAG,MAAM,CAAC;QAChC,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;QACrC,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,EAAE,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,KAAK,EAAE,IAAI,CAAC;aAC/D,IAAI,CAAC,QAAQ,CAAC,EAAE;YACf,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC;YAC/C,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,EAAE;YACV,8BAAW,CAAC,MAAM,EAAE,yDAAyD,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;QAEzG,CAAC,CAAC,CAAC;IACT,CAAC;IAED,cAAc,CAAC,CAAC,EAAE,MAAsB;QACtC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;QAC1B,CAAC,CAAC,cAAc,EAAE;QAClB,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC;QACvB,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,iBAAiB,GAAG,IAAI;QAC/B,CAAC,CAAC;IACJ,CAAC;IAED,YAAY,CAAC,MAAsB;QACjC,IAAI,CAAC,WAAW,EAAE,CAAC;QACnB,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC;QAC7B,IAAI,CAAC,cAAc,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QAC5C,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,EAAC,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAC,CAAC;QAChE,sDAAsD;QACtD,sDAAsD;QACtD,kGAAkG;QAElG,sCAAsC;QACtC,IAAI,MAAM,CAAC,OAAO,EAAE;YAClB,8DAA2B,CAAC,MAAM,CAAC,OAAO,CAAC;iBACtC,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAEf,IAAI,QAAQ,IAAI,QAAQ,CAAC,GAAG,KAAK,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;oBAC5D,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;oBACvC,IAAI,CAAC,cAAc,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;oBAEvC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAC7C,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC;oBAE7C,qDAAqD;oBACrD,wDAAwD;oBACxD,wDAAwD;oBACxD,IAAI;oBACJ,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,EAAC,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,cAAc,CAAC,GAAG,EAAC,CAAC;oBAC1F,6FAA6F;oBAC7F,6IAA6I;iBAE9I;YACH,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,4BAAU,CAAC,qBAAqB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC;SACR;IAEH,CAAC;IAGD,YAAY,CAAC,OAAmB,EAAE,MAAsB,EAAE,QAAgB,EAAE,OAAe;QACzF,+CAA+C;QAC/C,IAAI,CAAC,gBAAgB,EAAE,CAAC;QACxB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;QAC3C,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,EAAC,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,EAAE,EAAE,QAAQ,EAAC,CAAC;IAChG,CAAC;IAGD,aAAa;QACX,+CAA+C;QAC/C,qBAAqB;QACrB,wCAAwC;QACxC,IAAI,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QACnD,uCAAuC;QACvC,IAAI,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE;YAC7B,yCAAyC;YACzC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;SACpB;IACH,CAAC;IAED,gBAAgB,CAAC,UAAkB;;QACjC,IAAI,KAAK,GAAG,gBAAU,aAAV,UAAU,uBAAV,UAAU,CAAE,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,mCAAI,EAAE,CAAC;QAC1D,6FAA6F;QAE7F,OAAO,KAAK,CAAC;IAEf,CAAC;IAED,4BAA4B;IAC5B,iCAAiC;IACjC,iDAAiD;IACjD,oDAAoD;IACpD,kBAAkB;IAClB,4BAA4B;IAC5B,kFAAkF;IAClF,MAAM;IACN,IAAI;IAEI,aAAa,CAAC,KAAa;QACjC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,IAAI,SAAS,GAAG,IAAI,CAAC;QAErB,8BAA8B;QAC9B,wDAAwD;QACxD,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,IAAI,CAAC,EAAE;YACrC,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBACrB,OAAO,GAAG,IAAI,CAAC,CAAC,WAAW;aAC5B;iBAAM;gBACL,IAAI,YAAY,GAAG,KAAK,IAAI,IAAI,CAAC,WAAW,IAAI,KAAK,IAAI,IAAI,CAAC,WAAW,CAAC;gBAC1E,IAAI,YAAY,EAAE;oBAEhB,IAAI,OAAO,GAAG,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC;oBACvC,IAAI,OAAO,GAAG,SAAS,EAAE;wBACvB,0DAA0D;wBAC1D,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;wBAC7B,OAAO,GAAG,IAAI,CAAC;qBAChB;yBAAM;wBACL,mDAAmD;wBACnD,0BAA0B;wBAC1B,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;wBACzB,UAAU,CAAC,GAAG,EAAE;4BACd,IAAI,KAAK,KAAK,IAAI,CAAC,WAAW,EAAE;gCAC9B,6CAA6C;gCAC7C,IAAI,CAAC,WAAW,GAAG,SAAS,CAAC;gCAC7B,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;6BACpB;iCAAM;gCACL,yEAAyE;6BAC1E;wBACH,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC,CAAC;qBAEzB;iBACF;aACF;SACF;QACD,SAAS;QACT,oDAAoD;QACpD,8BAA8B;QAC9B,mBAAmB;QACnB,IAAI;QAEJ,OAAO,OAAO,CAAC;IACjB,CAAC;IAGO,MAAM,CAAC,KAAa;QAC1B,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACrB,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;QACrB,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QACzB,IAAI,CAAC,aAAa,GAAG,GAAG,CAAC;QACzB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QACjD,IAAI,MAAM,GAAG,qBAAqB,CAAC;QAEnC,IAAI,sCAAsC,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACtD,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;iBACnB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,wCAAkB,CAAC,CAAC;iBAC9D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,4CAAkB,CAAC,6BAA6B,EAAE,GAAG,CAAC,CAAC,CAAC;SAC3E;aAAM;YACL,IAAI,CAAC,iBAAiB,EAAE,CAAC;SAC1B;QAED,IAAI,kDAAqB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YAC9C,IAAI,IAAI,CAAC,OAAO,CAAC,KAAK,KAAK,kDAAqB,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,KAAK,kDAAqB,EAAE;gBACjG,oEAA8B,CAAC,KAAK,EAAE,0DAA2B,CAAC;qBAC7D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,oCAAgB,CAAC,CAAC;qBAC5D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,4CAAkB,CAAC,+BAA+B,EAAE,GAAG,CAAC,CAAC;aAC5E;iBAAM;gBACL,4BAAU,CAAC,MAAM,EAAE,gCAAgC,0CAAiB,eAAe,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;gBAC1G,IAAI,MAAM,GAAG,IAAI,4BAAY,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,qDAAyB,CAAC,CAAC;gBAC1E,4CAAe,CAAC,MAAM,CAAC,CAAC;aACzB;SACF;QAED,IAAI,sDAAuB,EAAE;YAC3B,sEAA+B,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;iBAChD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,wCAAkB,CAAC,CAAC;iBAC9D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,4CAAkB,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC;SAC9E;QAED,IAAI,sDAAuB,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,EAAE;YAChD,sEAA+B,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC;iBAChD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,wCAAkB,CAAC,CAAC;iBAC9D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,4CAAkB,CAAC,iCAAiC,EAAE,GAAG,CAAC,CAAC,CAAC;SAC/E;IAEH,CAAC;IAGD,aAAa;QACX,MAAM,MAAM,GAAG,4BAA4B,CAAC;QAC5C,IAAI,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC;QACzC,2DAA2D;QAC3D,IAAI,CAAC,YAAY,EAAE;YACjB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;gBACzD,IAAI,OAAO,GAAG,wDAAwB,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBACxD,kCAAkC;gBAClC,IAAI,OAAO,EAAE;oBACX,IAAI,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACvC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE;wBACtB,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/B,IAAI,GAAG,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;wBAC/B,IAAI,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE;4BACxD,gDAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;iCAChC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,oCAAgB,CAAC,CAAC;iCAC5D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,4CAAkB,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;yBACrE;6BAAM;4BACL,4BAAU,CAAC,MAAM,EAAE,gDAAgD,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;4BACtF,4CAAoB,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;yBACvE;qBACF;yBAAM;wBACL,8BAAW,CAAC,MAAM,EAAE,sDAAsD,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;wBAC7F,4CAAoB,CAAC,sCAAsC,EAAE,OAAO,CAAC,CAAC;qBACvE;iBACF;qBAAM;oBACL,gDAAoB,CAAC,IAAI,CAAC,UAAU,CAAC;yBAChC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,oCAAgB,CAAC,CAAC;yBAC5D,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,4CAAkB,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;iBACrE;aACF;SACF;IACH,CAAC;IAGO,mBAAmB,CAAC,OAAyB,EAAE,UAAwB;QAC7E,iEAAiE;QAEjE,yFAAyF;QACzF,QAAQ,UAAU,EAAE;YAChB,gBAAgB;YAClB,KAAK,wCAAkB;gBACrB,IAAI,CAAC,KAAK,CAAC,mBAAmB,GAAG,OAAO,CAAC;gBACzC,MAAM;YACR,KAAK,oCAAgB;gBACnB,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,OAAO,CAAC;gBACtC,MAAM;YACR,KAAK,wCAAkB;gBACrB,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC;gBACxC,MAAM;YACR,KAAK,wCAAkB;gBACrB,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,OAAO,CAAC;gBACxC,MAAM;YACN,eAAe;SAClB;IACH,CAAC;IAGD,cAAc;QACZ,6DAA6D;QAC7D,iDAAiD;IACnD,CAAC;IAED,iBAAiB,CAAC,MAAsB,EAAE,QAAgB;QACxD,IAAI,MAAM,EAAE;YACV,IAAI,MAAM,GAAG,IAAI,0BAAW,EAAE,CAAC;YAC/B,MAAM,CAAC,MAAM,GAAG,+CAAuB,CAAC;YACxC,MAAM,CAAC,IAAI,GAAG,qDAA0B,CAAC;YACzC,MAAM,CAAC,IAAI,GAAG,yDAA2B,CAAC;YAC1C,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;YAC1B,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YACxB,MAAM,CAAC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC;YACxB,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAChC,MAAM,CAAC,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC;YACpC,MAAM,CAAC,QAAQ,GAAG,GAAG,gEAA4B,CAAC,CAAC,CAAC,IAAI,kEAA6B,CAAC,CAAC,CAAC;QACtF,gEAA4B,CAAC,CAAC,CAAC,IAAI,kEAA6B,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,UAAU;YACnF,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;YAC/B,MAAM,CAAC,OAAO,GAAG,kBAAkB,MAAM,CAAC,IAAI,EAAE,CAAC;YACjD,MAAM,CAAC,QAAQ,GAAG,QAAQ,CAAC;YAE3B,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC1C;IAEH,CAAC;IAGD,aAAa;QACX,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAGD,YAAY;QACV,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC;QACpB,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,EAAE,CAAC;QACjC,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,EAAE,CAAC;IACrC,CAAC;IAGD,qBAAqB;QACnB,MAAM,IAAI,GAAG,IAAI,CAAC;QAElB,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAAE;YAC7B,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC;YAChC,mFAAmF;YAEnF,IAAI,CAAC,OAAO;iBACP,qBAAqB,EAAE;iBACvB,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACf,mFAAmF;gBACnF,IAAI,MAAM,IAAI,MAAM,CAAC,KAAK,EAAE;oBAC1B,QAAQ,MAAM,CAAC,KAAK,EAAE;wBACpB,KAAK,SAAS;4BACZ,IAAI,CAAC,mBAAmB,EAAE,CAAC;4BAC3B,MAAM;wBACR,KAAK,QAAQ;4BACX,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;4BACjC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,6KAA6K,EAAE,SAAS,CAAC;4BAChN,MAAM;wBACR,KAAK,QAAQ;4BACX,8BAA8B;4BAC9B,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;4BACjC,IAAI,CAAC,OAAO;iCACP,iBAAiB,CACd,2BAA2B,EAC3B,2JAA2J,EAC3J,KAAK,EACL,IAAI,CAAC;iCACR,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gCACd,IAAI,KAAK,EAAE;oCACT,IAAI,CAAC,OAAO,CAAC,2BAA2B,EAAE;yCACrC,IAAI,CAAC,CAAC,SAAS,CAAC,EAAE;wCACjB,IAAI,SAAS,EAAE;4CACb,IAAI,CAAC,mBAAmB,EAAE,CAAC;yCAC5B;oCACH,CAAC,CAAC,CAAC;iCACR;4BACH,CAAC,CAAC,CAAC;qBACV;iBACF;YACH,CAAC,CAAC,CAAC;SACR;IACH,CAAC;IAGD,mBAAmB;QACjB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,wDACmB,EAAE;aAChB,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;YACjC,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,EAAE;gBACrB,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC9B,IAAI,GAAG,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS;gBAC9B,6CAA6C;gBAC7C,IAAI,CAAC,KAAK,CAAC,WAAW,GAAG,EAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC;aAC3D;QACH,CAAC,CAAC,CAAC;IACT,CAAC;IAGD,qBAAqB;IACrB,qCAAqC;IACrC,+BAA+B;IAC/B,wCAAwC;IACxC,+EAA+E;IAC/E,MAAM;IACN,IAAI;IAGJ,wBAAwB;IAGxB,+BAA+B;IAE/B,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;QACpC,IAAI,SAAS,EAAE;YACb,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC;YAC9C,wCAAwC;YACxC,IAAI,SAAS,CAAC,OAAO,EAAE;gBACrB,IAAI,CAAC,KAAK;qBACL,iBAAiB,CAAC,SAAS,CAAC;qBAC5B,IAAI,CAAC,SAAS,CAAC,EAAE;oBAChB,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;oBACpD,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY;wBAAE,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;oBACjE,0BAA0B;oBAC1B,2DAA2D;oBAC3D,IAAI,CAAC,YAAY,CAAC,oCAAe,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;gBACzF,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;oBAClD,4CAAkB,CAAC,6BAA6B,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;aACR;iBAAM;gBACL,IAAI,CAAC,KAAK;qBACL,iBAAiB,CAAC,SAAS,CAAC;qBAC5B,IAAI,CAAC,SAAS,CAAC,EAAE;oBAChB,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY;wBAAE,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;oBAEjE,0BAA0B;oBAC1B,2DAA2D;oBAC3D,IAAI,CAAC,YAAY,CAAC,oCAAe,EAAE,SAAS,EAAE,SAAS,CAAC,MAAM,EAAE,qBAAqB,CAAC;gBACxF,CAAC,CAAC;qBACD,KAAK,CAAC,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;oBAClD,4CAAkB,CAAC,6BAA6B,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;gBACpE,CAAC,CAAC,CAAC;aACR;SACF;IACH,CAAC;IAGD,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC;YAC9C,wCAAwC;YACxC,IAAI,CAAC,KAAK;iBACL,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC;iBACtC,IAAI,CAAC,SAAS,CAAC,EAAE;gBAChB,IAAI,SAAS,EAAE;oBACb,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;oBAC9D,IAAI,CAAC,YAAY,CAAC,oCAAe,EAAE,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,MAAM,EAAE,kBAAkB,CAAC;iBAC9F;qBAAM;oBACL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC;oBACzD,4BAAU,CAAC,gBAAgB,EAAE;iCACV,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;iBAC3D;gBAED,2BAA2B;gBAC3B,wDAAwD;YAC1D,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,wBAAwB,EAAE,OAAO,CAAC;gBACzD,4CAAkB,CAAC,0BAA0B,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;SACR;IACH,CAAC;IAGD,cAAc;QACZ,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC;YAC9C,wCAAwC;YAExC,IAAI,CAAC,KAAK;iBACL,iBAAiB,CAAC,IAAI,CAAC,cAAc,CAAC;iBACtC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACX,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;gBACzD,IAAI,CAAC,YAAY,CAAC,oCAAe,EAAE,IAAI,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,CAAC;gBACpF,IAAI,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE;oBAC7B,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC;oBAClC,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;iBACjC;gBACD,2BAA2B;gBAC3B,oDAAoD;YACtD,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,EAAE,OAAO,CAAC;gBAClD,4CAAkB,CAAC,0BAA0B,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACjE,CAAC,CAAC,CAAC;SACR;IACH,CAAC;IAGD,kBAAkB;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,oCAAoC;QACpC,IAAI,IAAI,CAAC,cAAc,EAAE;YACvB,IAAI,CAAC,OAAO,CAAC,aAAa,GAAG,EAAC,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAC,CAAC;YAC9C,IAAI,CAAC,KAAK,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACrC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,IAAI,CAAC,cAAc,CAAC;iBAChD,IAAI,CAAC,GAAG,CAAC,EAAE;gBACV,IAAI,CAAC,YAAY,CAAC,sCAAgB,EAAE,IAAI,CAAC,cAAc,EAAE,EAAE,EAAE,qBAAqB,CAAC;gBACnF,2BAA2B;gBAC3B,2DAA2D;gBAC3D,+CAA+C;YACjD,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,CAAC,EAAE;gBACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,oBAAoB,EAAE,OAAO,CAAC;gBACrD,4CAAkB,CAAC,iCAAiC,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;SACR;IAEH,CAAC;IAGD,gBAAgB;QACd,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,SAAS,GAAI,IAAI,CAAC,KAAK,CAAC,MAA2B,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC;IAC1C,CAAC;IAGD,2BAA2B;IAG3B,mBAAmB;IAInB,oBAAoB,CAAC,YAAqB;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,gEAAgE;QAChE,IAAI,YAAY,EAAE;YAChB,UAAU,CAAC;gBACR,IAAI,CAAC,KAAK,CAAC,MAA2B,CAAC,KAAK,EAAE,CAAC;YAClD,CAAC,EAAE,GAAG,CAAC,CAAC;SACT;IACH,CAAC;IAGD,OAAO;QACL,yBAAyB;QACzB,IAAI,CAAC,YAAY,EAAE,CAAC;IACtB,CAAC;IAED,sBAAsB;IAGtB,4BAA4B;IAE5B,UAAU;QACR,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;QAC3D,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI;YAAE,IAAI,CAAC,UAAU,EAAE,CAAC;QAClD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,cAAc,CAAC;IACvC,CAAC;IAED,YAAY;QACV,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC;SACrD;aAAM,IAAI,IAAI,CAAC,cAAc,IAAI,CAAC,EAAE;YACnC,IAAI,CAAC,cAAc,EAAE,CAAC;SACvB;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;QAClB,IAAI,IAAI,CAAC,cAAc,KAAK,CAAC,CAAC;YAAE,IAAI,CAAC,cAAc,EAAE,CAAC;IACxD,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,cAAc,KAAK,IAAI,EAAE;YAChC,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;SACzB;aAAM;YACL,IAAI,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;gBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;SAChF;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QACjC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;SACvB;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QACD,QAAQ,IAAI,CAAC,YAAY,EAAE;YACzB,KAAK,CAAC,CAAC;gBACL,IAAI,CAAC,UAAU,EAAE,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;gBAC5C,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpE,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,cAAc;oBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;gBAChD,MAAM;SACT;IACH,CAAC;IAED,UAAU;QACR,IAAI,CAAC,IAAI,CAAC,cAAc;YAAE,OAAO;QACjC,IAAI,IAAI,CAAC,YAAY,KAAK,IAAI,EAAE;YAC9B,IAAI,CAAC,YAAY,GAAG,CAAC,CAAC;SACvB;aAAM;YACL,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;QACD,QAAQ,IAAI,CAAC,YAAY,EAAE;YACzB,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;gBACxC,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU;oBAAE,IAAI,CAAC,UAAU,EAAE,CAAC;gBAChE,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,IAAI,CAAC,cAAc;oBAAE,IAAI,CAAC,cAAc,EAAE,CAAC;gBAChD,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;SACT;IACH,CAAC;IAED,iBAAiB,CAAC,GAAG,EAAE,MAAM;QAC3B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5C,CAAC;IAED,WAAW,CAAC,WAAmB,IAAI;QAChC,IAAI,CAAC,KAAK,CAAC,SAA8B,CAAC,KAAK,EAAE,CAAC;QACnD,IAAI,QAAQ,KAAK,OAAO,EAAE;YACxB,IAAI,CAAC,QAAQ,EAAE,CAAC;SACjB;aAAM,IAAI,QAAQ,KAAK,MAAM,EAAE;YAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;IACH,CAAC;IAED,cAAc;QACZ,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,CAAE,IAAI,CAAC,KAAK,CAAC,MAA2B,CAAC,KAAK,EAAE,CAAC,CAAC;QACtE,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,gBAAgB;QAEd,QAAQ,IAAI,CAAC,YAAY,EAAE;YACzB,KAAK,CAAC;gBACJ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,cAAc,EAAE,CAAC;gBACtB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC1B,MAAM;SACT;QACD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;IAC3B,CAAC;IAED,mBAAmB,CAAC,KAAK;QACvB,IAAI,KAAK,CAAC,MAAM,CAAC,KAAK,EAAE;YACtB,IAAI,CAAC,YAAY,EAAE,CAAC;SACrB;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,eAAe,GAAG,KAAK,CAAC;SACtC;IACH,CAAC;IAED,+BAA+B;IACzB,YAAY,CAAC,KAAa;;YAC9B,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,GAAU,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACzC,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAClB,IAAI,GAAG,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE;gBACxD,MAAM,MAAM,GAAG,IAAI,qCAAc,CAAC;oBAChC,IAAI,EAAE,aAAa,GAAG,gBAAgB,GAAG,EAAE;oBAC3C,GAAG;oBACH,GAAG;oBACH,IAAI,EAAE,wCAAkB;iBACzB,CAAC,CAAC;gBACH,OAAO,CAAC,MAAM,CAAC,CAAC;aACjB;iBAAM;gBACL,MAAM,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAC;aAC3C;QACH,CAAC;KAAA;IAEK,iBAAiB;;YACrB,IAAI,CAAC,mBAAmB,CAAC,EAAE,EAAE,wCAAkB,CAAC,CAAC;QACnD,CAAC;KAAA;IAED,SAAS;QACP,IAAI,CAAC,SAAS,GAAG,kDAAqB,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,kDAAqB,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,kDAAqB,CAAC;IACzC,CAAC;CACF;AA54BC;IAAC,oBAAI,CAAC,EAAC,OAAO,EAAE,IAAI,EAAC,CAAG;;yDAA8B;AA8tBtD;IAAC,qBAAK,CAAC,cAAc,CAAC;;;;wDAUrB;AA5uBkB,YAAY;IADhC,qBAAS;GACW,YAAY,CAg5BhC;2EAh5BoB,YAAY;;;ACnB2S,CAAC,mFAAe,oCAAG,EAAC;;ACAhW;;;;;;;AEAuG;AACvC;AACL;AAC3D,CAAsG;;;AAGtG;AACuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,4CAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,2DAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACnBoC;AACE;AACO;AACH;AACI;AACT;AACe;AACT;AACK;AACN;AACE;AACN;AACA;AACF;AACE;AACI;AACI;AACC;AACT;AACD;AACG;AACQ;AACN;AACD;AACE;AACK;AACF;AACI;AACN;AACK;AACL;;AAE3D,+BAA+B,0DAA0D,UAAU,mBAAI,EAAE,OAAO,oBAAoB,KAAK,sBAAO,EAAE,OAAO,wHAAwH,KAAK,4BAA4B,wGAAwG,wCAAwC,kBAAkB,iGAAiG,gDAAgD,EAAE,QAAQ,4DAA4D,6CAA6C,sCAAsC,KAAK,oBAAK,EAAE,0BAA0B,KAAK,uBAAQ,EAAE,OAAO,iEAAiE,KAAK,mBAAI,EAAE,aAAa,mBAAmB,QAAQ,+DAA+D,KAAK,yCAAa,iCAAiC,sBAAO,SAAS,kCAAS,EAAE,wDAAwD,iEAAiE,KAAK,mBAAI,EAAE,mBAAmB,KAAK,yBAAU,EAAE,aAAa,+BAA+B,QAAQ,6BAA6B,QAAQ,4CAA4C,eAAe,sBAAsB,KAAK,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,yBAAU,EAAE,aAAa,iBAAiB,KAAK,mBAAI,EAAE,OAAO,qCAAqC,KAAK,mBAAI,EAAE,mBAAmB,KAAK,oBAAK,EAAE,kBAAkB,qBAAqB,QAAQ,2CAA2C,cAAc,qBAAqB,KAAK,mBAAI,EAAE,0BAA0B,gDAAgD,KAAK,yBAAU,EAAE,OAAO,oEAAoE,QAAQ,8CAA8C,iBAAiB,wBAAwB,SAAS,mBAAI,EAAE,0BAA0B,gDAAgD,KAAK,yBAAU,EAAE,OAAO,sEAAsE,QAAQ,iDAAiD,oBAAoB,2BAA2B,SAAS,mBAAI,EAAE,0BAA0B,gDAAgD,KAAK,yBAAU,EAAE,OAAO,kDAAkD,QAAQ,+CAA+C,kBAAkB,yBAAyB,SAAS,mBAAI,EAAE,0BAA0B,gDAAgD,KAAK,yBAAU,EAAE,OAAO,4CAA4C,QAAQ,+CAA+C,kBAAkB,yBAAyB,SAAS,mBAAI,EAAE,0BAA0B,gDAAgD,KAAK,wBAAS,EAAE,OAAO,wIAAwI,QAAQ,8CAA8C,iBAAiB,wBAAwB,qBAAqB,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,2CAA2C,KAAK,0BAA0B,YAAY,iDAAiD,qBAAqB,oCAAoC,sCAAsC,qBAAqB,2CAA2C,oBAAK,yCAAyC,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,2CAA2C,KAAK,yBAAyB,iBAAiB,YAAY,iDAAiD,qBAAqB,uCAAuC,sCAAsC,qBAAqB,KAAK,oBAAK,EAAE,OAAO,uBAAuB,iCAAiC,oBAAK,yCAAyC,mBAAI,EAAE,gCAAgC,oBAAoB,QAAQ,2CAA2C,KAAK,yBAAyB,iBAAiB,YAAY,qCAAqC,qBAAqB,sCAAsC,sCAAsC,qBAAqB,KAAK,uBAAQ,EAAE,OAAO,2BAA2B,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,oBAAK,SAAS,OAAO,gBAAgB,uCAAuC,GAAG,YAAY,4BAA4B,+CAA+C,oBAAK,iDAAiD,uBAAQ,EAAE,QAAQ,KAAK,kCAAS,KAAK,mBAAI,EAAE,aAAa,oBAAoB,QAAQ,qCAAqC,iBAAiB,yBAAU,EAAE,aAAa,uHAAuH,QAAQ,iEAAiE,sBAAsB,mCAAmC,MAAM,EAAE,kBAAkB,yDAAyD,uBAAuB,sDAAsD,EAAE,gCAAgC,MAAM,EAAE,yBAAyB,oBAAK,EAAE,OAAO,YAAY,mCAAmC,EAAE,iCAAiC,MAAM,EAAE,0BAA0B,oBAAK,EAAE,OAAO,YAAY,mCAAmC,EAAE,mCAAmC,MAAM,EAAE,4BAA4B,oBAAK,EAAE,OAAO,YAAY,mCAAmC,EAAE,kCAAkC,MAAM,EAAE,2BAA2B,oBAAK,EAAE,OAAO,YAAY,mCAAmC,EAAE,gCAAgC,MAAM,EAAE,yBAAyB,oBAAK,EAAE,OAAO,YAAY,mCAAmC,EAAE,kCAAkC,MAAM,EAAE,2BAA2B,oBAAK,EAAE,OAAO,YAAY,mCAAmC,EAAE,gCAAgC,MAAM,EAAE,yBAAyB,oBAAK,EAAE,OAAO,YAAY,mCAAmC,EAAE,gCAAgC,MAAM,EAAE,WAAW,oBAAK,EAAE,qBAAqB,8BAA8B,IAAI,EAAE,WAAW,mBAAI,SAAS,OAAO,UAAU,KAAK,yBAAyB,yBAAyB,2BAA2B,SAAS,oBAAK,EAAE,OAAO,YAAY,sCAAsC,aAAa,KAAK,oBAAK,EAAE,aAAa,oBAAoB,QAAQ,YAAY,KAAK,yBAAU,yCAAyC,uBAAQ,KAAK,wBAAS,EAAE,IAAI,yBAAyB,+BAA+B,KAAK,4BAAa,KAAK,oBAAK,gCAAgC,uCAAc,0FAA0F,wBAAS,EAAE,IAAI,yBAAyB,iCAAiC,KAAK,4BAAa,KAAK,oBAAK,gCAAgC,uCAAc,4CAA4C,yBAAyB,0BAA0B,uBAAQ,EAAE,QAAQ,KAAK,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,oBAAK,EAAE,mBAAmB,8JAA8J,KAAK,sCAAsC,gBAAgB,wCAAwC,iBAAiB,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,gEAAgE,QAAQ,kDAAkD,qBAAqB,4BAA4B,QAAQ,UAAU,+CAA+C,kBAAkB,yBAAyB,qBAAqB,0BAAW,EAAE,OAAO,4DAA4D,KAAK,gCAAgC,uCAAuC,QAAQ,+CAA+C,kBAAkB,yBAAyB,kBAAkB,oBAAK,EAAE,mBAAmB,8JAA8J,KAAK,sCAAsC,gBAAgB,wCAAwC,iBAAiB,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,iEAAiE,QAAQ,mDAAmD,sBAAsB,6BAA6B,QAAQ,UAAU,gDAAgD,mBAAmB,0BAA0B,sBAAsB,0BAAW,EAAE,OAAO,4DAA4D,KAAK,gCAAgC,uCAAuC,QAAQ,gDAAgD,mBAAmB,0BAA0B,sBAAsB,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,mBAAI,EAAE,wBAAwB,YAAY,qCAAqC,iBAAiB,KAAK,wBAAS,EAAE,aAAa,oBAAoB,QAAQ,iBAAiB,QAAQ,iDAAiD,+BAA+B,2BAA2B,gBAAgB,qCAAqC,iBAAiB,KAAK,wBAAS,EAAE,aAAa,oBAAoB,QAAQ,kBAAkB,QAAQ,iDAAiD,+BAA+B,2BAA2B,gBAAgB,qCAAqC,iBAAiB,KAAK,wBAAS,EAAE,aAAa,oBAAoB,QAAQ,oBAAoB,QAAQ,iDAAiD,+BAA+B,2BAA2B,gBAAgB,qCAAqC,iBAAiB,KAAK,wBAAS,EAAE,aAAa,oBAAoB,QAAQ,mBAAmB,QAAQ,iDAAiD,+BAA+B,2BAA2B,gBAAgB,qCAAqC,iBAAiB,KAAK,wBAAS,EAAE,aAAa,oBAAoB,QAAQ,iBAAiB,QAAQ,iDAAiD,+BAA+B,2BAA2B,WAAW,mBAAI,EAAE,wBAAwB,YAAY,qCAAqC,iBAAiB,KAAK,wBAAS,EAAE,aAAa,oBAAoB,QAAQ,mBAAmB,QAAQ,iDAAiD,+BAA+B,2BAA2B,gBAAgB,qCAAqC,iBAAiB,KAAK,wBAAS,EAAE,aAAa,oBAAoB,QAAQ,iBAAiB,QAAQ,iDAAiD,+BAA+B,2BAA2B,mBAAmB,uBAAQ,EAAE,QAAQ,MAAM,mBAAI,EAAE,0BAA0B,2CAA2C,KAAK,2BAAY,EAAE,OAAO,6IAA6I,QAAQ,+CAA+C,kBAAkB,yBAAyB,cAAc,uBAAQ,EAAE,qBAAqB,iBAAiB,KAAK,yBAAU,EAAE,aAAa,iBAAiB,KAAK,mBAAI,EAAE,OAAO,iCAAiC,KAAK,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,qDAAqD,KAAK,mBAAI,EAAE,wBAAwB,YAAY,aAAa,wBAAwB,0CAA0C,aAAa,qBAAqB,4DAA4D,sBAAO,EAAE,OAAO,qDAAqD,wBAAwB,+BAA+B,SAAS,mBAAI,EAAE,gCAAgC,gBAAgB,QAAQ,qDAAqD,KAAK,mBAAI,EAAE,wBAAwB,YAAY,aAAa,wBAAwB,8CAA8C,aAAa,qBAAqB,mEAAmE,yBAAU,EAAE,sCAAsC,oBAAoB,QAAQ,qMAAqM,QAAQ,mDAAmD,sBAAsB,6BAA6B,iCAAiC,qCAAY,wBAAwB,mBAAI,EAAE,OAAO,mBAAmB,KAAK,yBAAyB,iCAAiC,sBAAO,wBAAwB,mBAAI,EAAE,OAAO,mBAAmB,KAAK,yBAAyB,qBAAqB,kDAAkD,mBAAI,EAAE,OAAO,6DAA6D,KAAK,2BAA2B,oDAAoD,mBAAI,EAAE,OAAO,qCAAqC,KAAK,wBAAwB,yDAAyD,mBAAI,EAAE,OAAO,kEAAkE,KAAK,0BAA0B,qDAAqD,mBAAI,EAAE,OAAO,mEAAmE,KAAK,+BAA+B;AACz8a;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjC4D;AACN;AACkB;AAChC;AACA;AACU;AACA;AACpB;AACQ;AACc;AACA;AACA;AACxB;AACY;AAGzB,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,eAAG;IAA5B;QAEb,cAAc;;QAId,WAAM,GAAW,CAAC,CAAC;QACnB,iBAAY,GAAW,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC/C,iBAAY,GAAW,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;QAC/C,gBAAW,GAAW,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAC7C,mBAAc,GAAW,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;QACnD,gBAAW,GAAW,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;QAC7C,eAAU,GAAW,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAEjD,UAAK,GAAa,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;QAE5D,cAAS,GAAY,KAAK,CAAC;QAC3B,aAAQ,GAAW,kBAAkB,CAAC;QACtC,aAAQ,GAAc,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QACxE,kBAAa,GAAW,CAAC,CAAC,CAAC;QAC3B,mBAAc,GAAW,CAAC,CAAC,CAAC;QAC5B,uBAAkB,GAAG,CAAC,CAAC,CAAC;QACxB,cAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACxC,cAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QACxC,UAAK,GAAY,KAAK,CAAC;QAkKvB,YAAY;QAGZ,0BAA0B;QAE1B,kBAAa,GAAG,0DAAyB,CAAC;QAC1C,mBAAc,GAAG,4DAA0B,CAAC;QAC5C,cAAS,GAAG,KAAK,CAAC;QAClB,eAAU,GAAG,KAAK,CAAC;QACnB,SAAI,GAAG,EAAE,CAAC;QAiUV,WAAW;QAGX,kBAAkB;QAElB,iBAAY,GAAG,CAAC,CAAC;QACjB,sBAAiB,GAAG,KAAK,CAAC;QAC1B,oBAAe,GAAG,CAAC,CAAC;QACpB,gBAAW,GAAG,KAAK,CAAC;QACpB,gBAAW,GAAG,CAAC,CAAC;QAChB,qBAAgB,GAAG,KAAK,CAAC;QACzB,qBAAgB,GAAG,CAAC,CAAC;QAwVrB,YAAY;IAGd,CAAC;IAj1BC,gCAAgC;IAChC,kDAAkD;IAClD,wBAAwB;IACxB,gCAAgC;IAGhC,IAAI,KAAK;QACP,OAAO,0BAAY,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,SAAS;QACX,OAAO,+BAAW;IACpB,CAAC;IAED,IAAI,KAAK;QACP,6BAA6B;QAC7B,IAAI,SAAS,GAAG,WAAW;QAC3B,QAAQ,IAAI,CAAC,MAAM,EAAE;YACjB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,SAAS,GAAG,kBAAkB,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;gBACvD,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,cAAc,CAAC;gBAC3B,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY,CAAC;gBACxD,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,YAAY,CAAC;gBACzB,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,iBAAiB,CAAC;gBAC9B,MAAM;YACR;gBACE,SAAS,GAAG,SAAS,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE;gBAC7C,MAAM;YACN,eAAe;SAClB;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,KAAK;QACP,OAAO,2CAAiB,CAAC;IAC3B,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,OAAO;QACT,IAAI,GAAG,GAAW,EAAE,CAAC;QACrB,IAAI,IAAI,CAAC,YAAY,EAAE;YACrB,GAAG,GAAG,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC;SACjC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAGD,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,MAAM,IAAI,CAAC;IACzB,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,QAAQ,GAAG,IAAI,CAAC;SACjB;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS;QACX,IAAI,IAAI,GAAG,cAAc,CAAC;QAC1B,IAAI,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE;YACvC,IAAI,GAAG,EAAE,CAAC;YACV,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE;gBACrB,IAAI,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC;gBACzB,IAAI,IAAI,CAAC,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC;YAC7C,CAAC,CAAC;SACH;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,oBAAoB;IAGpB,uBAAuB;IAEvB,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,IAAI,iBAAiB,CAAC,SAAiB;QACrC,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC5B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,YAAY;IAC1B,CAAC;IAED,IAAI,SAAS,CAAC,YAAoB;QAChC,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;SAC9F;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,EAAE;SACvB;IACH,CAAC;IAED,IAAI,SAAS;QAEX,OAAO,IAAI,CAAC,YAAY;IAC1B,CAAC;IAED,IAAI,SAAS,CAAC,YAAoB;QAChC,IAAI,YAAY,EAAE;YAChB,IAAI,CAAC,YAAY,GAAG,CAAC,YAAY,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC;SAC5F;aAAM;YACL,IAAI,CAAC,YAAY,GAAG,EAAE,CAAC;SACxB;IACH,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,WAAW;IACzB,CAAC;IAED,IAAI,QAAQ,CAAC,WAAmB;QAC9B,IAAI,WAAW,EAAE;YACf,IAAI,CAAC,WAAW,GAAG,CAAC,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;SAC/G;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;SAChC;IACH,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC,OAAO;IAClC,CAAC;IAED,IAAI,WAAW,CAAC,cAAsB;QACpC,IAAI,CAAC,cAAc,GAAG,cAAc;IACtC,CAAC;IAED,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,YAAY,CAAC,IAAI;IAC/B,CAAC;IAED,IAAI,QAAQ,CAAC,WAAmB;QAC9B,IAAI,CAAC,WAAW,GAAG,WAAW;IAChC,CAAC;IAED,IAAI,OAAO;QACT,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;IAChF,CAAC;IAED,IAAI,OAAO,CAAC,SAAiB;QAC3B,IAAI,CAAC,UAAU,GAAG,CAAC,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IACrD,CAAC;IAaD,YAAY;IAGZ,0BAA0B;IAE1B,WAAW;QACT,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC;QAC9B,IAAI,IAAI,GAAG,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjC,mCAAmC;QACnC,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,YAAY;QACV,IAAI,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC;QAC/B,IAAI,IAAI,GAAG,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC;QACjC,oCAAoC;QACpC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,YAAY;QACd,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC/C,wCAAwC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,aAAa;QACf,IAAI,QAAgB,CAAC;QACrB,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC;QAC/B,qCAAqC;QACrC,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;YAC5C,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC9B;aAAM;YACL,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;SAC9C;QACD,kFAAkF;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,IAAI,SAAS;QACX,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QACrD,yCAAyC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,CAAC,GAAG;QACf,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QAClC,IAAI,KAAK,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACrD,kEAAkE;QAElE,IAAI,KAAK,IAAI,CAAC,EAAE;YACd,sDAAsD;YACtD,IAAI,SAAS,GAAG,EAAE,GAAG,EAAE,CAAC;YACxB,IAAI,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;YAC7B,SAAS,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,GAAG,SAAS,CAAC,CAAC;YACxF,IAAI,CAAC,cAAc,GAAG,SAAS,CAAC;YAEhC,gDAAgD;YAChD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC3B;aAAM;YACL,wEAAwE;YACxE,IAAI,CAAC,cAAc,GAAG,IAAI,GAAG,EAAE,CAAC;YAChC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;SAC3B;IAEH,CAAC;IAED,IAAI,UAAU;QACZ,IAAI,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC;QAChC,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACnD,0CAA0C;QAC1C,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,UAAU,CAAC,GAAW;QACxB,IAAI,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;QACxC,iDAAiD;QACjD,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC;IACnC,CAAC;IAED,IAAI,aAAa;QACf,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,qDAAqD,CAAC;IAC1G,CAAC;IAED,IAAI,YAAY;QACd,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC,IAAI,yDAAyD,CAAC;IAC/G,CAAC;IAEO,YAAY,CAAC,GAAW;QAC9B,IAAI,UAAU,GAAG,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,gBAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5C,OAAO,IAAI;IACb,CAAC;IAEO,YAAY,CAAC,EAAiB;QACpC,IAAI,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,aAAa,CAAC,IAAY;QACxB,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IAGD,yCAAyC;IAGzC,gBAAgB;IAGhB,WAAW;QACT,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,QAAQ,IAAI,CAAC,MAAM,EAAE;YACjB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,SAAS,GAAG,CAAC,CAAC;gBACd,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,CAAC,CAAC;gBACd,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,CAAC,CAAC;gBACd,MAAM;YACR,KAAK,CAAC;gBACJ,SAAS,GAAG,CAAC,CAAC;gBACd,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACzC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,gBAAgB,CAAC;gBACzC,SAAS,GAAG,CAAC,CAAC;gBACd,MAAM;gBACN,MAAM;YACR;gBACE,MAAM;YACN,eAAe;SAClB;QACD,iEAAiE;QACjE,IAAI,CAAC,MAAM,GAAG,SAAS;IACzB,CAAC;IAED,QAAQ;QACN,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE;YACrB,IAAI,CAAC,gBAAgB,EAAE,CAAC;SACzB;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;SAC5E;IACH,CAAC;IAED,UAAU;QACR,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,aAAa;QACX,IAAI,CAAC,OAAO,EAAE,CAAC;IACjB,CAAC;IAED,OAAO;QAEL,QAAQ,IAAI,CAAC,MAAM,EAAE;YACjB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,YAAY,EAAE,CAAC;gBACpB,MAAM;YACR,KAAK,CAAC;gBACJ,mBAAmB;gBACnB,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACxB,MAAM;YACR,KAAK,CAAC;gBACJ,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAC1B,QAAQ;YACN,iBAAiB;YACjB,eAAe;SAClB;IACH,CAAC;IAED,gCAAgC;IAChC,0EAA0E;IAC1E,WAAW;QACT,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC;QAClB,gBAAgB;QAChB,QAAQ,IAAI,CAAC,MAAM,EAAE;YACnB,KAAK,CAAC;gBACJ,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;YACR,KAAK,CAAC;gBACJ,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;YACR,KAAK,CAAC;gBACJ,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;YACR,KAAK,CAAC;gBACJ,QAAQ,GAAG,CAAC,CAAC;gBACb,MAAM;YACR;gBACE,QAAQ,GAAG,CAAC,CAAC,CAAC;SACjB;QACD,eAAe;QACf,OAAO,QAAQ;IACjB,CAAC;IAED,gBAAgB;QACd,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,EAAE;YACtB,IAAI,CAAC,KAAK,EAAE,CAAC;SACd;IACH,CAAC;IAED,KAAK;QACH,sCAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAGD,WAAW;IAGX,kBAAkB;IAElB,IAAI,OAAO;QACT,OAAO;YACL,gDAAgD;YAChD,EAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAC;YAC7E,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAC;YACvE,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAC;YACxE,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAC;YAC1E,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAC;YACzE,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAC;YACvE,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAC;YACzE,EAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAC;YACvE;gBACE,IAAI,EAAE,EAAE;gBACR,KAAK,EAAE,QAAQ;gBACf,KAAK,EAAE,EAAE;gBACT,KAAK,EAAE,QAAQ;gBACf,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;IACJ,CAAC;IAED,WAAW,CAAC,IAAY;QACtB,wCAAwC;QACxC,0CAA0C;QAE1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC;QACnE,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;QAChD,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAElD,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC;QACjC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC;QAC/B,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,aAAa,CAAC,IAAY;QACxB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,0BAA0B;QAEzC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;aACpC,IAAI,CAAC,GAAG,EAAE;YACT,sBAAsB;YACtB,sDAAsD;YACtD,aAAa;YACb,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,EAAE,CAAC;QACzD,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,qBAAqB;QACvB,CAAC,CAAC;IACR,CAAC;IAED,UAAU;QACR,IAAI,IAAI,GAAG,IAAI,oBAAM,CAAC;QACtB,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;QACd,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;QAClB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QACxB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,4CAAkB,EAAE,CAAC;QACnC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;QACvC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC;QACb,IAAI,CAAC,SAAS,GAAG,0DAAyB,GAAG,KAAK,CAAC;QACnD,IAAI,CAAC,UAAU,GAAG,4DAA0B,GAAG,KAAK,CAAC;QACrD,IAAI,CAAC,aAAa,GAAG,0DAAyB,CAAC;QAC/C,IAAI,CAAC,cAAc,GAAG,4DAA0B,CAAC;QACjD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC;QAEpB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC;QAC1B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,SAAS,CAAC;QACpC,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC;QACtC,IAAI,CAAC,QAAQ,GAAG,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAeD,+BAA+B;IAE/B,IAAI,SAAS;QACX,2CAA2C;QAC3C,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAC/B,IAAI,OAAO,GAAG,kEAA6B,CAAC,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,aAAa,CAAC,CAAC;QAClF,iEAAiE;QACjE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,IAAI,aAAa;QACf,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC;QAClC,IAAI,WAAW,GAAG,CAAC,CAAC,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,SAAS,KAAK,CAAC,CAAC;QAC7D,IAAI,aAAa,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAC3C,IAAI,YAAY,GAAG,IAAI,CAAC,gBAAgB,IAAI,IAAI,CAAC,WAAW,CAAC;QAC7D,IAAI,YAAY,GAAG,4DAA0B,CAAC,IAAI,CAAC,gBAAgB,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QACvF,IAAI,QAAQ,GAAG,SAAS,IAAI,CAAC,WAAW,IAAI,aAAa,IAAI,CAAC,YAAY,IAAI,YAAY,CAAC,CAAC,CAAC;QAC7F,oLAAoL;QACpL,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,IAAI,YAAY;QACd,IAAI,QAAQ,GAAG,IAAI,CAAC;QACpB,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,aAAa,IAAI,CAAC,CAAC;QAC/B,sDAAsD;IACxD,CAAC;IAED,IAAI,KAAK;QACP,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,OAAO;YACL,QAAQ,EAAE,KAAK,CAAC,EAAE;gBAEhB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBACjD,0DAA0D;oBAC1D,OAAO,IAAI,CAAC;iBACb;qBAAM;oBACL,0DAA0D;oBAC1D,OAAO,KAAK,CAAC;iBACd;YACH,CAAC;YACD,UAAU,EAAE,KAAK,CAAC,EAAE;gBAClB,IAAI,CAAC,IAAI,CAAC,WAAW,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,IAAI,GAAG,EAAE;oBACnD,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;oBAC9B,0DAA0D;oBAC1D,OAAO,IAAI,CAAC;iBACb;qBAAM;oBACL,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;oBAC/B,0DAA0D;oBAC1D,OAAO,kBAAkB;iBAC1B;YACH,CAAC;SACF;IACH,CAAC;IAED,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,IAAI,eAAe,CAAC,GAAY;QAC9B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;QACvB,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC,CAAC,CAAC,kDAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,6EAA6E;IAC/E,CAAC;IAED,IAAI,aAAa;QACf,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QACjC,IAAI,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,kDAAqB,CAAC;QACnF,mJAAmJ;QACnJ,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED,IAAI,aAAa,CAAC,GAAW;QAC3B,IAAI,IAAI,CAAC,WAAW,EAAE;YACpB,IAAI,GAAG,IAAI,CAAC,IAAI,GAAG,IAAI,GAAG,EAAE;gBAC1B,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;gBACvB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;aAC5B;iBAAM;gBACL,IAAI,GAAG,GAAG,CAAC,EAAE;oBACX,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC;oBACrB,IAAI,CAAC,eAAe,GAAG,CAAC,CAAC;iBAC1B;gBACD,IAAI,GAAG,GAAG,GAAG,EAAE;oBACb,IAAI,CAAC,WAAW,GAAG,GAAG,CAAC;oBACvB,IAAI,CAAC,eAAe,GAAG,GAAG,CAAC;iBAC5B;aACF;SACF;aAAM;YACL,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;SACvB;QACD,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,iGAAiG;IACnG,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,YAAY,EAAE;QACnB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAEO,iBAAiB,CAAC,KAAY;QACpC,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;YACrB,IAAI,CAAC,WAAW,GAAG,CAAC,CAAC,CAAC;SACvB;QACD,2EAA2E;QAC3E,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAEO,YAAY;QAClB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;QACzC,4EAA4E;IAC9E,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,IAAI,CAAC,cAAc,EAAE;gBACvB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;gBAC3C,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;gBACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;aAC1C;iBAAM;gBACL,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;gBACzB,IAAI,CAAC,WAAW,GAAG,kDAAqB,CAAC;gBACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;gBACzC,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC;aAC1C;SACF;QACD,iEAAiE;IACnE,CAAC;IAGD,0BAA0B;IAG1B,mBAAmB;IAEnB,IAAI,SAAS;QACX,oFAAoF;QACpF,oBAAoB;QACpB,0BAA0B;QAC1B,oBAAoB;QAEpB,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,IAAI,SAAS,CAAC,aAAqB;QACjC,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC;QAC/B,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC;IACjC,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE;YAC9C,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;SAC/B;QACD,wDAAwD;QACxD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAClB,CAAC;IAED,kBAAkB;IAGlB,iBAAiB;IAEjB,IAAI,OAAO;QACT,IAAI,OAAO,GAAG,IAAI,CAAC;QACnB,OAAO,OAAO,CAAC;IACjB,CAAC;IAGD,YAAY;QACV,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,yBAAyB,CAAC;QAEzC,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC;QAChD,0GAA0G;QAC1G,+CAA+C;QAC/C,gDAAgD;QAEhD,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,KAAK;QACxD,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,GAAG,KAAK;QAE1D,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,kBAAkB,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACnD,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,YAAY,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,0DAAyB,GAAG,IAAI,CAAC,aAAa,CAAC;QAC/C,4DAA0B,GAAG,IAAI,CAAC,cAAc,CAAC;QAEjD,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,IAAI,CAAC,KAAK,EAAE;gBACd,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;aACpC;iBAAM;gBACL,IAAI,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC;aACjC;YACD,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;SAC9B;aAAM;YACL,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;SAC3B;QACD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;IAEzB,CAAC;IAGD,YAAY,CAAC,MAAc;QACzB,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,oDAAsB,CAAC,IAAI,CAAC,YAAY,CAAC;aACpC,IAAI,CAAC,GAAG,EAAE;YACT,wDAAwD;YACxD,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE;YAC1B,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,4BAA4B;YAC5B,4CAAkB,CAAC,MAAM,GAAG,2BAA2B,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC1E,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACT,CAAC;IAGD,eAAe,CAAC,MAAc;QAC5B,IAAI,IAAI,GAAG,IAAI,CAAC;QAChB,8CAAmB,CAAC,IAAI,CAAC,YAAY,CAAC;aACjC,IAAI,CAAC,GAAG,EAAE;YACT,sDAAsD;YACtD,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC3C,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;QAClB,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,2BAA2B,CAAC,EAAE,OAAO,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACT,CAAC;IAED,WAAW;QACT,IAAI,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAW,CAAC;QACrC,IAAI,OAAO,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;QACjC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW,CAAC,IAAa;QACvB,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,MAAM,MAAM,GAAG,qBAAqB,CAAC;QACrC,IAAI,WAAW,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACrC,IAAI,WAAW,EAAE;YACf,IAAI,IAAI,EAAE;gBACR,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,IAAI,EAAE,EAAE;oBAChE,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;oBAC7B,IAAI,SAAS,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC;oBAClE,IAAI,YAAY,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,wDAAwB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC;oBACzH,IAAI,CAAC,IAAI,GAAG,SAAS,CAAC;oBACtB,IAAI,CAAC,OAAO,GAAG,YAAY,CAAC;oBAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;oBAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;oBAC/B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;oBAClC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC;oBAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;oBAEhC,IAAI,CAAC,OAAO;yBACP,YAAY,CAAC,IAAI,EAAE,CAAC,MAAM,CAAC,CAAC;yBAC5B,IAAI,CAAC,QAAQ,CAAC,EAAE;wBACf,IAAI,QAAQ,EAAE;4BACZ,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;4BAC3B,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;4BAC3B,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;4BACrD,IAAI,CAAC,QAAQ,EAAE;yBAChB;6BAAM;4BACL,IAAI,CAAC,YAAY,EAAE,CAAC;4BACpB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;yBAC1D;oBACH,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACX,IAAI,CAAC,YAAY,EAAE,CAAC;wBACpB,4CAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;wBAChE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,uBAAuB,EAAE,OAAO,CAAC,CAAC;oBAC3D,CAAC,CAAC,CAAC;iBACR;qBAAM;oBACL,4CAAoB,CAAC,2BAA2B,EAAE,OAAO,CAAC,CAAC;iBAC5D;aACF;iBAAM;gBACL,IAAI,CAAC,KAAK,EAAE;aACb;SACF;aAAM;YACL,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,iEAAiE,EAAE,OAAO,CAAC,CAAC;SACpG;IACH,CAAC;IAeD,OAAO;QACL,MAAM,IAAI,GAAG,IAAI,CAAC;QAClB,iCAAY,CAAC;YACX,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;QAC7C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC;IAC/C,CAAC;IAED,UAAU;QACR,iEAAiE;QACjE,IAAI,CAAC,YAAY,EAAE;IACrB,CAAC;IAED,YAAY;QACV,IAAI,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QACpC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC1B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;IACtC,CAAC;CAKF;AAt2BC;IAAC,oBAAI,CAAC,oBAAM,CAAC;wEAAoB,oBAAM,oBAAN,oBAAM;4CAAC;AAJrB,UAAU;IAD9B,qBAAS;GACW,UAAU,CA02B9B;yEA12BoB,UAAU;;;ACjB2S,CAAC,+EAAe,kCAAG,EAAC;;;;ACAzP;AACvC;AACL;;;AAGzD;AACA,CAAuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,wCAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AClBoC;AACE;AACO;AACH;AACA;AACN;AACE;AACD;AACK;AACF;AACQ;AACE;AACN;AACK;;AAEhE,+BAA+B,0DAA0D,UAAU,mBAAI,EAAE,OAAO,oBAAoB,KAAK,sBAAO,EAAE,OAAO,oGAAoG,KAAK,4BAA4B,iGAAiG,0CAA0C,kBAAkB,wGAAwG,2CAA2C,EAAE,QAAQ,2CAA2C,cAAc,qBAAqB,KAAK,oBAAK,KAAK,uBAAQ,EAAE,OAAO,iEAAiE,KAAK,mBAAI,EAAE,OAAO,qFAAqF,KAAK,yCAAa,iDAAiD,kCAAS,EAAE,wBAAwB,KAAK,mBAAI,EAAE,0BAA0B,qCAAqC,0BAA0B,yBAAU,EAAE,mBAAmB,6EAA6E,QAAQ,0CAA0C,aAAa,oBAAoB,kBAAkB,mBAAI,EAAE,0BAA0B,oCAAoC,KAAK,oBAAK,EAAE,2BAA2B,sIAAsI,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,gEAAgE,QAAQ,kDAAkD,qBAAqB,4BAA4B,QAAQ,UAAU,+CAA+C,kBAAkB,yBAAyB,qBAAqB,0BAAW,EAAE,OAAO,qDAAqD,KAAK,gCAAgC,oDAAoD,QAAQ,+CAA+C,kBAAkB,yBAAyB,kBAAkB,oBAAK,EAAE,4BAA4B,sIAAsI,sBAAsB,8BAA8B,IAAI,EAAE,WAAW,yBAAU,SAAS,OAAO,iEAAiE,QAAQ,mDAAmD,sBAAsB,6BAA6B,QAAQ,UAAU,gDAAgD,mBAAmB,0BAA0B,sBAAsB,0BAAW,EAAE,OAAO,qDAAqD,KAAK,gCAAgC,sDAAsD,QAAQ,gDAAgD,mBAAmB,0BAA0B,sBAAsB,mBAAI,EAAE,0BAA0B,qCAAqC,KAAK,yBAAU,EAAE,aAAa,mBAAmB,QAAQ,0DAA0D,KAAK,yBAAyB,+BAA+B,QAAQ,8CAA8C,iBAAiB,wBAAwB,gCAAgC,sBAAO,EAAE,OAAO,2CAA2C,QAAQ,8CAA8C,iBAAiB,wBAAwB,aAAa,qCAAY,KAAK,sBAAO,KAAK,mBAAI,EAAE,OAAO,UAAU,KAAK,mBAAmB,wBAAwB,mBAAI,EAAE,OAAO,4BAA4B,KAAK,yBAAyB;AAC5rH;AACA;;;;;;;;;;;;;;;;;;;;;;;;;AChB4D;AACV;AACI;AACkB;AAChC;AACF;AACV;AACG;AAIhB,IAAM,UAAU,GAAhB,MAAM,UAAW,SAAQ,eAAG;IAA5B;;QAGb,gBAAW,GAAG,KAAK,CAAC;QAEpB,aAAQ,GAAG,CAAC,CAAC;QAEb,kBAAa,GAAG,CAAC,CAAC,kDAAiD;QACnE,mBAAc,GAAG,CAAC,CAAC,CAAC,kDAAkD;QACtE,cAAS,GAAG,KAAK,CAAC;QAClB,eAAU,GAAG,KAAK,CAAC;QACnB,SAAI,GAAG,EAAE,CAAC;QACV,SAAI,GAAG,EAAE,CAAC;QAEV,aAAQ,GAAG,CAAC,CAAC,CAAC;QACd,eAAU,GAAG,EAAE,CAAC;QAChB,kBAAa,GAAG,CAAC,CAAC;QAClB,gBAAW,GAAG,CAAC;QACf,aAAQ,GAAG,EAAE,CAAC;QACd,iBAAY,GAAG,CAAC,CAAC;QACjB,iBAAY,GAAG,CAAC,CAAC;QAgNjB,0BAA0B;IAG5B,CAAC;IAjNC,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC;YACpE,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE;gBACjC,IAAI,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE;oBAC9B,IAAI,CAAC,cAAc,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,IAAI,CAAC,WAAW;iBACpG;aACF;iBAAM;gBACL,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;aACvE;YAED,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACnC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;YACxB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACvC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC;YAC3C,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC;YACjD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC;YAChD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;YACvC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC/C,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC;YAC/C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,EAAE,CAAC;SACjD;IACH,CAAC;IAED,IAAI,SAAS;QACX,IAAI,KAAK,GAAW,EAAE,CAAC;QACvB,QAAQ,IAAI,CAAC,QAAQ,EAAE;YACnB,gBAAgB;YAClB,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,CAAC;gBACJ,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR,KAAK,EAAE;gBACL,KAAK,GAAG,SAAS,CAAC;gBAClB,MAAM;YACR;gBACE,MAAM;YACN,eAAe;SAClB;QACD,OAAO,KAAK;IACd,CAAC;IAED,+BAA+B;IAE/B,IAAI,WAAW;QACb,OAAO,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,EAAE,SAAS,CAAC,CAAC;IACrE,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED,IAAI,aAAa;QACf,IAAI,QAAgB,CAAC;QACrB,IAAI,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,cAAc,EAAE;YAC5C,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;SAC3C;aAAM;YACL,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,aAAa,CAAC;SAC3D;QACD,kFAAkF;QAClF,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS;QACX,IAAI,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QACnD,yCAAyC;QACzC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,CAAC,GAAG;QACf,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAED,IAAI,UAAU,CAAC,GAAW;QACxB,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC;IAC/C,CAAC;IAEO,YAAY,CAAC,GAAW;QAC9B,IAAI,UAAU,GAAG,gBAAM,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACzC,IAAI,IAAI,GAAG,gBAAM,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;QAC5C,OAAO,IAAI;IACb,CAAC;IAEO,YAAY,CAAC,EAAiB;QACpC,IAAI,QAAQ,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAClC,OAAO,QAAQ,CAAC;IAClB,CAAC;IAGD,yCAAyC;IAEzC,IAAI,SAAS;QACX,OAAO,0BAAY,CAAC;IACtB,CAAC;IAED,IAAI,OAAO;QACT,OAAO,wBAAU,CAAC;IACpB,CAAC;IAED,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;QACrB,qCAAqC;IACvC,CAAC;IAED,0BAA0B;IAC1B,OAAO,CAAC,KAAY;QAClB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,WAAW,EAAE,CAAC;IACrB,CAAC;IAED,QAAQ,CAAC,KAAY;QACnB,KAAK,CAAC,eAAe,EAAE,CAAC;QACxB,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAED,WAAW;QACT,IAAI,MAAM,GAAG,wBAAwB,CAAC;QACtC,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,WAAW;QACnE,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,WAAW;QACrE,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAE/G,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACnC,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED,YAAY,CAAC,MAAc;QACzB,oDAAsB,CAAC,IAAI,CAAC,YAAY,CAAC;aACpC,IAAI,CAAC,GAAG,EAAE;YACT,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;YACtD,oCAAoC;YACpC,IAAI,CAAC,KAAK,EAAE;QAEd,CAAC,CAAC;aACD,KAAK,CAAC,GAAG,CAAC,EAAE;YACX,IAAI,CAAC,YAAY,EAAE,CAAC;YACpB,4CAAkB,CAAC,MAAM,EAAE,mBAAmB,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;YAChE,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,2BAA2B,EAAE,OAAO,CAAC;QAC9D,CAAC,CAAC,CAAC;IACT,CAAC;IAED,KAAK;QACH,sCAAiB,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;IACnD,CAAC;IAED,6BAA6B;IAE7B,uBAAuB;IAEvB,iBAAiB,CAAC,WAAmB,EAAE,SAAiB;QACtD,IAAI,WAAW,IAAI,SAAS,EAAE;YAC5B,OAAO,SAAS,GAAG,WAAW,CAAC;SAChC;aAAM;YACL,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;YAClC,OAAO,UAAU,GAAG,SAAS,GAAG,WAAW,CAAC;SAC7C;IACH,CAAC;IAED,YAAY;QACV,IAAI,CAAC,YAAY,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC;QACjD,+DAA+D;QAC/D,IAAI,CAAC,YAAY,CAAC,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC;QAChD,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;QAC/C,IAAI,CAAC,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,QAAQ,CAAC;QACvC,IAAI,CAAC,YAAY,CAAC,QAAQ,GAAG,IAAI,CAAC,YAAY,CAAC;IACjD,CAAC;IAED,OAAO;QACL,IAAI,IAAI,CAAC,QAAQ,EAAE;YACjB,IAAI,CAAC,IAAI,EAAE,CAAC;SACb;IACH,CAAC;CAKF;AAtOC;IAAC,oBAAI,CAAC,oBAAM,CAAC;wEAAqB,oBAAM,oBAAN,oBAAM;4CAAC;AADtB,UAAU;IAD9B,qBAAS;GACW,UAAU,CAuO9B;yEAvOoB,UAAU;;;ACZ2S,CAAC,+EAAe,kCAAG,EAAC;;;;ACAzP;AACvC;AACL;;;AAGzD;AACA,CAAuI;AACvI,gBAAgB,sCAAU;AAC1B,EAAE,wCAAM;AACR,EAAE,MAAM;AACR,EAAE,eAAe;AACjB;AACA;AACA;AACA;AACA;AACA;;AAEA,uDAAe;;;;;;;AClBf;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;UCRA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;UAEA;UACA;;;;;WC5BA;;;;;WCAA;WACA;WACA;WACA;WACA,+BAA+B,wCAAwC;WACvE;WACA;WACA;WACA;WACA,iBAAiB,qBAAqB;WACtC;WACA;WACA,kBAAkB,qBAAqB;WACvC;WACA;WACA,KAAK;WACL;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;;;;WC3BA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,sDAAsD;WACtD,sCAAsC,iEAAiE;WACvG;WACA;WACA;WACA;WACA;WACA;;;;;WCzBA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;;;;;WCRA;WACA;WACA;WACA,kBAAkB,6CAA6C,+BAA+B,qGAAqG;WACnM;;;;;WCJA;WACA;WACA;WACA,mBAAmB,6CAA6C,+BAA+B,qGAAqG;WACpM;;;;;WCJA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA;WACA,uBAAuB,4BAA4B;WACnD;WACA;WACA;WACA,iBAAiB,oBAAoB;WACrC;WACA,mGAAmG,YAAY;WAC/G;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,mEAAmE,iCAAiC;WACpG;WACA;WACA;WACA;;;;;WCxCA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;WCJA;;;;;WCAA;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,IAAI;WACJ;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA,GAAG;WACH;WACA;WACA;WACA;WACA;WACA;WACA,gBAAgB,6BAA6B;WAC7C;WACA;WACA;WACA;WACA;WACA,gBAAgB,8BAA8B;WAC9C;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,EAAE;WACF;WACA;WACA;WACA;WACA;;WAEA;WACA,kBAAkB;WAClB;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,GAAG;WACH;WACA;;WAEA;;;;;WCxEA;;WAEA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;WACA,iCAAiC;;WAEjC;WACA;WACA;WACA,KAAK;WACL,eAAe;WACf;WACA;WACA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM;WACN;WACA;WACA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;;WAEA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA;WACA,MAAM,qBAAqB;WAC3B;WACA;WACA;WACA;WACA;WACA;WACA;WACA;;WAEA;WACA;WACA;;;;;UErFA;UACA;UACA;UACA;UACA","sources":["webpack://rw.flex/./src/app/RwConstants.ts","webpack://rw.flex/./src/app/RwEnums.ts","webpack://rw.flex/./src/app/RwErrors.ts","webpack://rw.flex/./src/app/RwGlobals.ts","webpack://rw.flex/./src/app/RwLocalDB.ts","webpack://rw.flex/./src/app/consts/RwEvents.ts","webpack://rw.flex/./src/app/consts/RwPages.ts","webpack://rw.flex/./src/app/consts/RwStrings.ts","webpack://rw.flex/./src/app/dal/RwDal.ts","webpack://rw.flex/./src/app/dal/RwDeltas.ts","webpack://rw.flex/./src/app/dal/RwLog.ts","webpack://rw.flex/./src/app/dem/Profile/RwLoginResponseModel.ts","webpack://rw.flex/./src/app/dem/RwRegInfo.ts","webpack://rw.flex/./src/app/dal/RwTaskAccounts.ts","webpack://rw.flex/./src/app/dem/Profile/MigrateLegacyToFlexResult.ts","webpack://rw.flex/./src/app/dal/RwTaskBillingProfile.ts","webpack://rw.flex/./src/app/dal/RwTaskDriver.ts","webpack://rw.flex/./src/app/dal/RwTaskHistory.ts","webpack://rw.flex/./src/app/dem/Profile/RwAcctPickerModel.ts","webpack://rw.flex/./src/app/dal/RwTaskLicense.ts","webpack://rw.flex/./src/app/dem/Profile/RwApiAuth.ts","webpack://rw.flex/./src/app/dal/RwTaskMisc.ts","webpack://rw.flex/./src/app/dal/RwTaskPush.ts","webpack://rw.flex/./src/app/dal/RwTaskRoutes.ts","webpack://rw.flex/./src/app/dal/RwTaskSearch.ts","webpack://rw.flex/./src/app/dal/RwTaskSites.ts","webpack://rw.flex/./src/app/dal/RwTaskSkeds.ts","webpack://rw.flex/./src/app/dem/Reporting/RwStopWithRoute.ts","webpack://rw.flex/./src/app/dem/Reporting/RwStopCheckDate.ts","webpack://rw.flex/./src/app/dal/RwTaskStops.ts","webpack://rw.flex/./src/app/dal/RwTaskSync.ts","webpack://rw.flex/./src/app/dem/Drivers/CreateBulkDriversResponse.ts","webpack://rw.flex/./src/app/dem/Profile/RwSkuInfo.ts","webpack://rw.flex/./src/app/dem/Profile/RwTrialUpgradeResponseModel.ts","webpack://rw.flex/./src/app/dem/ProofOfDelivery/ProofOfDeliveryEnums.ts","webpack://rw.flex/./src/app/dem/ProofOfDelivery/RwCoreMedia.ts","webpack://rw.flex/./src/app/dem/Push/RwPushMessage.ts","webpack://rw.flex/./src/app/dem/RwAddReport.ts","webpack://rw.flex/./src/app/dem/RwHistory.ts","webpack://rw.flex/./src/app/dem/RwModel.ts","webpack://rw.flex/./src/app/dem/RwPin.ts","webpack://rw.flex/./src/app/dem/RwRoute.ts","webpack://rw.flex/./src/app/dem/RwSearchResult.ts","webpack://rw.flex/./src/app/dem/RwSite.ts","webpack://rw.flex/./src/app/dem/RwTimeWindow.ts","webpack://rw.flex/./src/app/dem/RwSked.ts","webpack://rw.flex/./src/app/utils/StopStatusStrings.ts","webpack://rw.flex/./src/app/dem/RwStop.ts","webpack://rw.flex/./src/app/dem/RwStopAddOns.ts","webpack://rw.flex/./src/app/dem/RwSubTeam.ts","webpack://rw.flex/./src/app/dem/RwUser.ts","webpack://rw.flex/./src/app/utils/RwDateUtils.ts","webpack://rw.flex/./src/app/utils/RwGeoUtils.ts","webpack://rw.flex/./src/app/utils/RwImgUtils.ts","webpack://rw.flex/./src/app/utils/RwDeferredLog.ts","webpack://rw.flex/./src/app/utils/RwPrefUtils.ts","webpack://rw.flex/./src/app/utils/RwSysUtils.ts","webpack://rw.flex/./src/app/utils/RwTextUtils.ts","webpack://rw.flex/./src/app/utils/RwWebUtils.ts","webpack://rw.flex/./src/app/views/account/RwSettingSpace.ts","webpack://rw.flex/./src/app/views/account/purch/RwPurchSpace.ts","webpack://rw.flex/./src/app/views/drivers/RwDriverSpace.ts","webpack://rw.flex/./src/app/dem/RwOptResult.ts","webpack://rw.flex/./src/app/dal/RwTaskOptimize.ts","webpack://rw.flex/./src/app/views/planner/RwPlannerSpace.ts","webpack://rw.flex/./src/app/views/routes/RwRouteSpace.ts","webpack://rw.flex/./src/app/views/sites/RwSiteSpace.ts","webpack://rw.flex/./src/app/views/skeds/RwSkedSpace.ts","webpack://rw.flex/./src/app/dem/Drivers/GetSubTeamsResponseModel.ts","webpack://rw.flex/./src/app/views/subteams/RwSubTeamSpace.ts","webpack://rw.flex/./src/app/views/App.vue?868a","webpack://rw.flex/./src/app/views/pickers/RwColorPicker.vue?6536","webpack://rw.flex/./src/app/views/pickers/RwColorPicker.vue?ebfb","webpack://rw.flex/./src/app/views/pickers/RwColorPicker.vue?3c7d","webpack://rw.flex/./src/app/views/pickers/RwColorPicker.vue","webpack://rw.flex/./src/app/views/pickers/RwVisitPicker.vue?dd19","webpack://rw.flex/./src/app/views/pickers/RwVisitPicker.vue?3039","webpack://rw.flex/./src/app/views/pickers/RwVisitPicker.vue?8091","webpack://rw.flex/./src/app/views/pickers/RwVisitPicker.vue","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?6e9f","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?7fa2","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?d949","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?09b6","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue?d413","webpack://rw.flex/./src/app/views/pickers/RwSkedPicker.vue","webpack://rw.flex/./src/app/views/pickers/RwStatusPicker.vue?ebdd","webpack://rw.flex/./src/app/views/pickers/RwStatusPicker.vue?c075","webpack://rw.flex/./src/app/views/pickers/RwStatusPicker.vue?c069","webpack://rw.flex/./src/app/views/pickers/RwStatusPicker.vue","webpack://rw.flex/./src/app/views/pickers/RwAssignPicker.vue?b110","webpack://rw.flex/./src/app/views/pickers/RwAssignPicker.vue?4031","webpack://rw.flex/./src/app/views/pickers/RwAssignPicker.vue?48eb","webpack://rw.flex/./src/app/views/pickers/RwAssignPicker.vue","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?6473","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?1fb7","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?35f8","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?d1e5","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue?fa8b","webpack://rw.flex/./src/app/views/planner/RwStopEdit.vue","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?3ca2","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?cf9a","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?5824","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?27bd","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue?d49b","webpack://rw.flex/./src/app/views/history/RwHistoryEdit.vue","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?015f","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?142f","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?f28c","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?f8e3","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue?4164","webpack://rw.flex/./src/app/views/pickers/RwRouteNew.vue","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?7591","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?c443","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?c5e3","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?725d","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue?1e2f","webpack://rw.flex/./src/app/views/routes/RwRouteEdit.vue","webpack://rw.flex/./src/app/views/drivers/RwDriverEdit.vue?592b","webpack://rw.flex/./src/app/views/drivers/RwDriverEdit.vue?0c3e","webpack://rw.flex/./src/app/views/drivers/RwDriverEdit.vue?867c","webpack://rw.flex/./src/app/views/drivers/RwDriverEdit.vue","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?a2d1","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?dae6","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?f12f","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?dd3c","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue?868e","webpack://rw.flex/./src/app/views/components/RwGenericDialog.vue","webpack://rw.flex/./src/app/views/account/RwFlexOptIn.vue?8768","webpack://rw.flex/./src/app/views/account/RwFlexOptIn.vue?ee2e","webpack://rw.flex/./src/app/views/account/RwFlexOptIn.vue?8a17","webpack://rw.flex/./src/app/views/account/RwFlexOptIn.vue","webpack://rw.flex/./src/app/views/account/RwFlexOptInPostMessage.vue?6fd7","webpack://rw.flex/./src/app/views/account/RwFlexOptInPostMessage.vue?f901","webpack://rw.flex/./src/app/views/account/RwFlexOptInPostMessage.vue?bc1d","webpack://rw.flex/./src/app/views/account/RwFlexOptInPostMessage.vue","webpack://rw.flex/./src/app/utils/attribution.ts","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?3c5d","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?9b08","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?62e6","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?81f4","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue?9b7f","webpack://rw.flex/./src/app/views/marketplace/RwPODTutorial.vue","webpack://rw.flex/./src/app/views/App.vue?ba9f","webpack://rw.flex/./src/app/views/App.vue?c51d","webpack://rw.flex/./src/app/views/App.vue?9fef","webpack://rw.flex/./src/app/views/App.vue?6b8c","webpack://rw.flex/./src/app/views/App.vue?3594","webpack://rw.flex/./src/app/views/App.vue?ea5c","webpack://rw.flex/./src/app/views/App.vue?4833","webpack://rw.flex/./src/app/views/App.vue?18ec","webpack://rw.flex/./src/app/views/App.vue","webpack://rw.flex/./src/main.ts","webpack://rw.flex/./src/plugins/vuetify.ts","webpack://rw.flex/./src/router/index.ts","webpack://rw.flex/./src/app/utils/RwGenericDialog.ts","webpack://rw.flex/./src/store/subTeamsModule.ts","webpack://rw.flex/./src/store/uploadModule.ts","webpack://rw.flex/./src/store/reportsModule.ts","webpack://rw.flex/./src/store/adminModule.ts","webpack://rw.flex/./src/store/dialogModule.ts","webpack://rw.flex/./src/store/purchModule.ts","webpack://rw.flex/./src/store/onboardModule.ts","webpack://rw.flex/./src/store/podModule.ts","webpack://rw.flex/./src/store/index.ts","webpack://rw.flex/./src/utils/RwEventBus.ts","webpack://rw.flex/./src/app/views/account/RwProToTeam.vue?f5fe","webpack://rw.flex/./src/app/views/account/RwProToTeam.vue?60e0","webpack://rw.flex/./src/app/views/account/RwProToTeam.vue?c447","webpack://rw.flex/./src/app/views/account/RwProToTeam.vue","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?2e0a","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?4f15","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?1360","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?42e7","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue?b65f","webpack://rw.flex/./src/app/views/components/RwPODThumbnail.vue","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?1ccb","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?f9e9","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?4ca0","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?195c","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue?c5a4","webpack://rw.flex/./src/app/views/pickers/RwConfirm.vue","webpack://rw.flex/./src/app/views/pickers/RwGenericRoutePicker.vue?44cc","webpack://rw.flex/./src/app/views/pickers/RwGenericRoutePicker.vue?f702","webpack://rw.flex/./src/app/views/pickers/RwGenericRoutePicker.vue?89da","webpack://rw.flex/./src/app/views/pickers/RwGenericRoutePicker.vue","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?5990","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?d46e","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?22a4","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?2b4d","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue?9300","webpack://rw.flex/./src/app/views/pickers/RwReloPicker.vue","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?a2f0","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?50cf","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?111e","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?a922","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue?3840","webpack://rw.flex/./src/app/views/planner/RwSearchPanel.vue","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?2990","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?4add","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?c60f","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?33d2","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue?94db","webpack://rw.flex/./src/app/views/planner/RwSearchView.vue","webpack://rw.flex/./src/app/views/sites/RwSiteEdit.vue?e8ed","webpack://rw.flex/./src/app/views/sites/RwSiteEdit.vue?e174","webpack://rw.flex/./src/app/views/sites/RwSiteEdit.vue?e25e","webpack://rw.flex/./src/app/views/sites/RwSiteEdit.vue","webpack://rw.flex/./src/app/views/skeds/RwSkedEdit.vue?9050","webpack://rw.flex/./src/app/views/skeds/RwSkedEdit.vue?771f","webpack://rw.flex/./src/app/views/skeds/RwSkedEdit.vue?66a6","webpack://rw.flex/./src/app/views/skeds/RwSkedEdit.vue","webpack://rw.flex/./node_modules/moment/locale/ sync \\b\\B","webpack://rw.flex/webpack/bootstrap","webpack://rw.flex/webpack/runtime/amd options","webpack://rw.flex/webpack/runtime/chunk loaded","webpack://rw.flex/webpack/runtime/compat get default export","webpack://rw.flex/webpack/runtime/create fake namespace object","webpack://rw.flex/webpack/runtime/define property getters","webpack://rw.flex/webpack/runtime/ensure chunk","webpack://rw.flex/webpack/runtime/get javascript chunk filename","webpack://rw.flex/webpack/runtime/get mini-css chunk filename","webpack://rw.flex/webpack/runtime/global","webpack://rw.flex/webpack/runtime/hasOwnProperty shorthand","webpack://rw.flex/webpack/runtime/load script","webpack://rw.flex/webpack/runtime/make namespace object","webpack://rw.flex/webpack/runtime/node module decorator","webpack://rw.flex/webpack/runtime/publicPath","webpack://rw.flex/webpack/runtime/css loading","webpack://rw.flex/webpack/runtime/jsonp chunk loading","webpack://rw.flex/webpack/before-startup","webpack://rw.flex/webpack/startup","webpack://rw.flex/webpack/after-startup"],"sourcesContent":["import {RwLogLevels} from \"@/app/RwEnums\";\nimport { PODDefaultSettings } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nexport class RwConstants {\n\n static flexVersion = \"2024.12.110\"; //Do not edit - gets replaced with proper version in CI build\n static LogLevel = RwLogLevels.Info;\n static isDevMode = (process.env.NODE_ENV === \"development\");\n\n // Core API ...\n private static corePROD = \"https://coreApi.roadwarrior.app\";\n private static coreTEST = \"https://coreTest.roadwarrior.app\";\n private static coreTESTLINUX = \"https://rwcoretestlinux.azurewebsites.net\";\n private static coreDEV = \"https://rwcoredev.azurewebsites.net\";\n private static podDEV = \"https://rwpoddev.azurewebsites.net\";\n private static coreRico = \"http://192.168.84.23:5000\";\n private static coreSabina = \"http://127.0.0.1:5000\";\n private static coreTommy = \"http://192.168.0.243:5000\";\n\n private static UseProdChargifyOverride = true;\n\n static CoreUri =\n (RwConstants.isDevMode)\n ? RwConstants.coreDEV // Used locally\n : RwConstants.corePROD; // Used on build\n\n static CoreSocketUri = RwConstants.getSocketBase(RwConstants.CoreUri);\n\n // Chargify API v2\n static ChargifyLocalDevUrlV2 = \"https://roadwarrior-dev.chargifypay.com/subscribe/c3j85ctyj2vw/team_pro_go\";\n static ChargifyLocalProdUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/x82nb2kvp3q7/team-pro-go\";\n static ChargifyBetaUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/dhrfkgh59xz9/team-pro-go\";\n static ChargifyFlexTestUrl = \"https://roadwarrior.chargifypay.com/subscribe/rq2vy4rxcchg/team-pro-go\";\n\n // Prod urls per domain\n static ChargifyProdFlexUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/ccvsvjxhcsnm/team-pro-go\";\n static ChargifyProdTeamUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/2n6phfwzh92p/team-pro-go\";\n static ChargifyProdFedexUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/wwfr6p84w2yh/team-pro-go\";\n static ChargifyProdOnTracUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/282g3ndzszzq/team-pro-go\";\n static ChargifyProdUserUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/2n7gv3fg8y6c/team-pro-go\";\n static ChargifyProdBetaUrlV2 = \"https://roadwarrior.chargifypay.com/subscribe/dhrfkgh59xz9/team-pro-go\";\n\n // Prod Trial urls\n static ChargifyLocalProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/3cvcft47g8gz/team-pro-go\";\n static ChargifyFlexTestProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/z5gs3m5y75qf/team-pro-go\";\n static ChargifyFlexProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/jqqzbh6dtw3q/team-pro-go\";\n static ChargifyTeamProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/4jtjcgzwnztt/team-pro-go\";\n static ChargifyFedexProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/thfjhgprhx6v/team-pro-go\";\n static ChargifyOnTracProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/drhk69c9y8pd/team-pro-go\";\n static ChargifyUserProdTrialUrl = \"https://roadwarrior.chargifypay.com/subscribe/gb6pwn7bwzwm/team-pro-go\";\n\n static useDevChargify = (RwConstants.CoreUri === RwConstants.coreDEV || RwConstants.CoreUri === RwConstants.coreTommy || RwConstants.CoreUri === RwConstants.podDEV) && !RwConstants.UseProdChargifyOverride;\n\n static get TrialUrl() {\n if (this.isDevMode) {\n return this.ChargifyLocalProdTrialUrl;\n }\n const domain = window.location.host.split('.')[0].toLowerCase();\n switch (domain) {\n case \"flextest\":\n return RwConstants.ChargifyFlexTestProdTrialUrl;\n\n default:\n case \"flex\":\n return RwConstants.ChargifyFlexProdTrialUrl;\n case \"team\":\n return RwConstants.ChargifyTeamProdTrialUrl;\n case \"fedex\":\n return RwConstants.ChargifyFedexProdTrialUrl;\n case \"ontrac\":\n return RwConstants.ChargifyOnTracProdTrialUrl;\n case \"user\":\n return RwConstants.ChargifyUserProdTrialUrl;\n }\n }\n\n // Dev/Prod\n static EmptyGuid = \"00000000-0000-0000-0000-000000000000\";\n static SignupUrl: string = (RwConstants.isDevMode)\n ? (RwConstants.CoreUri === RwConstants.coreTEST ?\n RwConstants.ChargifyLocalProdUrlV2\n : RwConstants.ChargifyLocalDevUrlV2)\n : RwConstants.ChargifyBetaUrlV2;\n static CJS_PublicKey = RwConstants.useDevChargify ? 'chjs_4fqfvdbwtx2sgy9nbckfhb7m' : 'chjs_sg992kd6xrr3b66tv4nc6xxd';\n static NetTimeout = 60000;\n static OptTimeout = 200000;\n static ExtendedTimeout = 30000;\n static UploadTimeout = 90000;\n static FedexTimeout = 360000;\n static ShortTimeout = 5000;\n static PolyLassoResolution = 10.0;\n static HideFedexIntegration: boolean = false;\n static EmptyString = \"\";\n\n\n // SKUs\n static SKU_Legacy = \"team.pro.monthly\";\n static SKU_ProGo = \"team.pro.go\";\n static SKU_Flex = \"flex.pro.monthly\";\n static SKU_Trial = \"flex.pro.trial\";\n\n // Base PP\n static PPB = 14.99;\n static PPD = 14.99;\n static PPT = 14.99;\n\n // Colors\n static CheckinPinGrey = \"#888888\";\n static DefaultStopColor = \"#E91E63\";\n static DefaultSiteColor = \"#40A23F\";\n static DefaultTaskColor = \"#E91E63\";\n\n // Proof of Delivery\n static DefaultProofOfDelivery = PODDefaultSettings.None;\n\n // Images\n static IconRoundTripFlag = \"/images/icons/icc_pin_flag_rt.png\";\n static IconGreenFlag = \"/images/icons/icc_pin_flag_green.png\";\n static IconStartRing = \"/images/icons/start_ring.png\";\n static IconCompleteAll = \"/images/icons/complete.png\";\n static IconRoofPin = \"/images/icons/pins/PinRoof.png\";\n static IconRoadPin = \"/images/icons/pins/PinRoad.png\";\n static IconRoofPinFaded = \"/images/icons/pins/PinRoofFaded.png\";\n static IconRoadPinFaded = \"/images/icons/pins/PinRoadFaded.png\";\n static IconTargetLight = \"/images/icons/targetPrimary.png\";\n static IconTargetDark = \"/images/icons/targetPrimary.png\";\n\n //Drivers\n static FormattedAccessTypes = [\"Restricted\", \"Normal\", \"Elevated\", \"Dispatcher (Restricted)\"];\n\n //Fortifi\n static VIDCookieName = \"FRT:VIS\";\n\n // Pin Cache\n static PinCompCluster = \"pincompcluster\";\n\n // Here\n \n static hereApiKey = \"Rhkg2ULk-86JaxU16kSpE1NlPnAA1LvrEAFAxRdN1V0\";\n\n // TUS\n static tusUploadEndpoint = \"https://tus.aws.mapquest.com/\";\n static tusFileURL = \"https://tus.aws.mapquest.com/file/\";\n \n // Firebase\n static FirebaseKey: string = \"BBUmNBFtA_YE2BG8eMWjD-uyEYIBztZICkru1W9g3SJMQ3Dfr9f9AKbPj3EI-jEOU6Il1cNgiEN4K7DciAw5hgg\";\n\n static FirebaseConfig = {\n apiKey: \"AIzaSyBU0pveOtdPWeMwjzZwc0FxqWkqEo6TwkI\",\n authDomain: \"roadwarrior-mobile.firebaseapp.com\",\n databaseURL: \"https://roadwarrior-mobile.firebaseio.com\",\n projectId: \"roadwarrior-mobile\",\n storageBucket: \"roadwarrior-mobile.appspot.com\",\n messagingSenderId: \"555634752094\",\n appId: \"1:555634752094:web:6134fea175bc95085e92cf\",\n measurementId: \"G-E1THMV42VN\"\n };\n\n\n static getSocketBase(baseUrl: string): string {\n //static SvcUriSocket = RwConstants.SvcUri\n let socketUrl = baseUrl\n .replace(\"https\", \"wss\")\n .replace(\"http\", \"ws\")\n .replace(\"roadwarrior.svc\", \"rwWebsocket.svc\");\n return socketUrl;\n }\n\n // Onboard tips timers\n static OnboardTipsDelay = 2000;\n static OnboardArrowDuration = 7000;\n static OnboardUploadsPopupDelay = 5000;\n static OnboardUploadsPopupDuration = 15000;\n static OnboardUploadsActiveTimer = 2000;\n\n // POD tutorial timers\n static PODSettingsPopupDelay = 1000;\n static PODSettingsPopupDuration = 10000;\n\n}\n\n\n\n\n","export enum RwTravelModes {\n driving,\n biking,\n walking,\n}\n\n\nexport enum RwSnackType {\n Info,\n Warn,\n Error,\n Primary\n}\n\nexport enum RwLogLevels {\n None,\n Error,\n Warn,\n Info\n}\n\n\nexport enum RwRouteCopyType {\n AllStops,\n ActiveStops,\n NoStops,\n}\n\n\nexport enum RwLoginIssues {\n None,\n Unknown,\n InvalidCreds,\n SeshExpired,\n LoginDisabled,\n SeshAlt,\n RefreshFailed,\n SeshInvalid,\n NeedsReset\n}\n\nexport enum RwNavPaths {\n Dashboard,\n Planner,\n Routes,\n Drivers,\n Sites,\n Schedules,\n Uploads,\n Settings\n}\n\n\n//from server\n//public enum RwPinTypes { Route, Stop, Task, Site, Sked, Driver }\n\nexport enum RwPinTypes {\n Route,\n Stop,\n Task,\n Site,\n Sked,\n Driver,\n Target,\n}\n\nexport enum RwPinSubTypesRoute {\n //xREF: RwPinSubTypesRoute\n StartStaticOneWay,\n StartDynamic,\n StartStaticRoundTrip,\n}\n\nexport enum RwPinSubTypesStop {\n Stop,\n CheckIn,\n DoNotEnter,\n Cluster,\n Infeasible = 8\n}\n\nexport enum RwCheckSubTeamMigrateError {\n None = 0,\n Legacy = 1,\n InvalidCreds = 2,\n InvalidAccountType = 3,\n InvalidMigrateAccount = 4\n}\n\nexport enum RwCreateDriversError {\n None = 0,\n ChargifySubNotFound,\n ChargifyOtherError,\n PaymentError,\n InvalidUserNameFormat,\n DriverAlreadyExists,\n UnknownDriverCreationErrors,\n NoDomainSet\n}\n\nexport enum CreateSubTeamError {\n None = 0,\n InternalError = 1,\n UnknownError = 2,\n AuthError = 3,\n InvalidModel = 4,\n LegacySub = 5,\n InvalidDispEmail = 6,\n DomainInUse = 7,\n SubTeamExistsActive = 8,\n DispatcherExists = 9,\n PaymentError = 10,\n DispatcherCreationError = 11\n}\n\n// export enum RwPinTypesLegacy {\n// Stop,\n// Site,\n// Start,\n// Star,\n// SkedAlarm,\n// Cluster,\n// Driver,\n// End,\n// Task\n// }\n\nexport enum RwHistTypes {\n NONE,\n Appt,\n CheckIn,\n Nav,\n Text,\n Phone,\n CheckOut\n}\n\nexport enum RwSkedTypes {\n None,\n Weekly, // Site Availability\n Appointed, //deprecated\n MultiUse,\n AdHoc, //deprecated by inline skeds on Stops\n}\n\nexport enum RwStopTypes {\n AdHoc,\n Unappointed,\n Appointed\n}\n\nexport enum RwDaysOfWeek {\n None = 0,\n Monday,\n Tuesday,\n Wednesday,\n Thursday,\n Friday,\n Saturday,\n Sunday\n}\n\nexport enum RwDistUnits {\n Kilometers,\n Miles\n}\n\nexport enum RwEditModes {\n EditMode,\n AddMode\n}\n\nexport enum RwLimitType {\n None,\n RouteSize,\n TotalStops,\n TotalSearches\n}\n\nexport enum RwFavoriteFilterType {\n All,\n Open,\n None\n}\n\nexport enum RwStopFilterType {\n All,\n ActiveStopsOnly,\n None\n}\n\nexport enum RwSearchType {\n Web,\n Contacts,\n Sites,\n SearchClick,\n Coord,\n Tasks\n}\n\nexport enum RwStopVios {\n None = 0,\n Early = 1,\n Late = 2,\n Closed = 4,\n Unreachable = 8,\n Overtime = 16\n}\n\nexport enum OptType {\n Distance,\n RoadDistance,\n RoadTime\n}\n\nexport enum DisplayMessageType {\n Error = 0,\n Success = 1,\n Info = 2\n}\n\nexport enum LocationPickerOrigin {\n SettingsDefaultDynLoc = 0,\n PlannerDefaultDynLoc = 1,\n ZoneCenterLoc = 2,\n CheckinLoc = 3,\n ZoneAreaDefine = 4,\n RelocateFavorite = 5,\n ResolveUploadLoc = 6\n}\n\nexport enum TimelineScale {\n OneHour = 0,\n FourHours = 1,\n EightHours = 2,\n OneDay = 3\n}\n\nexport enum TimelineItemType {\n Stop = 0,\n DriveLine = 1\n}\n\nexport enum ImageSource {\n Unknown = 0,\n PNG = 1,\n JPG = 2,\n}\n\n// Sort\nexport enum DriverSortOrder {\n Name = 0,\n DateCreated = 1,\n LastUpdated = 2,\n Username = 3,\n AccessType = 4,\n}\n\nexport enum RouteSortOrder {\n Name = 0,\n StartDate = 1,\n LastUpdated = 2,\n Driver = 3,\n Status = 4,\n TotalTime = 5,\n Distance = 6\n}\n\nexport enum SubTeamSortOrder {\n Name = 0,\n Dispatcher = 1,\n Domain = 2,\n Drivers = 3,\n LastUpdated = 4,\n}\n\nexport enum SiteSortOrder {\n Name = 0,\n Address = 1,\n Color = 2,\n CheckIn = 3,\n VisitTime = 4\n}\n\nexport enum TaskSortOrder {\n Name = 0,\n Address = 1,\n Color = 2,\n VisitTime = 3\n}\n\nexport enum SkedSortOrder {\n Name = 0,\n Priority = 1,\n Start = 2,\n End = 3\n}\n\n\nexport enum SortDirection {\n Desc = 0,\n Asc = 1\n}\n\nexport enum SchedSortOrder {\n Name = 0,\n Priority = 1\n}\n\nexport enum FavSortOrder {\n Name = 0,\n Color = 1,\n LastCheckIn = 2\n}\n\nexport enum HistSortOrder {\n Date = 0,\n Name = 1,\n Driver = 2\n}\n\nexport enum RouteListTarget {\n Copy = 0,\n Move = 1\n}\n\nexport enum RwAccessTypes {\n Restricted = 0,\n Normal = 1,\n Elevated = 2,\n SubDisp = 3\n}\n\nexport enum RwRoleTypes {\n Admin = -1,\n Owner = 0,\n Driver = 1,\n}\n\nexport enum RwPortType {\n Roof = 0,\n Road = 1,\n PedPrimary = 2,\n PedSecondary = 3,\n Parking = 4,\n Service = 5,\n Loading = 6\n}\n\nexport enum RwAddressValidator {\n HERE = 0,\n User = 1,\n RoadWarrior = 2\n}\n\nexport enum UploadType {\n Favorites = 0,\n Route = 1,\n OrderedRoute = 2,\n Tasks = 3,\n ReportingBackup = 4,\n Fedex = 5,\n OnTrac = 6\n}\n\nexport enum UploadErrorType {\n None = 0,\n //None = 0,\n IncompatibleFile,\n MissingInvalidData,\n InvalidContentType,\n NoUploadFileSent,\n NoFileSelected,\n ErrorReadingFileInfo,\n UnauthorizedMissingToken,\n UnauthorizedSeshExpired,\n OverSizeLimit,\n OverUsageQuota,\n TemplateMismatch,\n HeaderIncorrect,\n HeaderMissing,\n BlankCell,\n EmptyRow,\n ExcelError,\n GeoCodeError,\n SaveError,\n GeocodingErrorsFatal,\n GeocodingErrorsResolvable,\n HasHeaderErrors,\n HasDataErrors,\n NoAddresses,\n FileNotSupported,\n RequiresDispatcher,\n MissingBatchId,\n MissingBlobId,\n ManifestTypeUnknown,\n UnhandledError,\n DriverCountWarning,\n DriverCountError,\n NeedsToAuthenticate,\n FedExAuthPermError,\n FedExExternalApiError,\n OnTracNoRsps,\n OnTracError,\n FedExError\n}\n\nexport enum RwExtType {\n None = 0,\n FedEx = 1,\n OnTrac = 2\n}\n\nexport enum ManifestSource {\n FedEx = 0,\n OnTrac = 1\n}\n\nexport enum ManifestSetSeq {\n None = 0,\n Vendor = 1,\n SID = 2\n}\n\nexport enum UploadErrorResolution {\n ErrorOut = 0,\n PickGPS = 1,\n Skip = 2\n}\n\nexport enum RwPushNoteType {\n RouteAssigned,\n UploadRoute,\n UploadFavorites,\n DriverDelta,\n Logout,\n PushTest,\n RouteDelta,\n RouteReassigned,\n RouteDeltas,\n}\n\nexport enum RwPushStatus {\n Error = -2,\n Gone = -1,\n Sent,\n Delivered,\n Opened\n}\n\nexport enum RwEntityTypes {\n Route,\n Stop,\n Site,\n Sked,\n History,\n User,\n Task\n}\n\nexport enum RwTxnTypes {\n NONE,\n GET,\n POST,\n PUT,\n DELETE\n}\n\nexport enum ManifestUploadStage {\n Initial = 0,\n Login = 1,\n SelectId = 2,\n SelectRoutes = 3\n}\n\nexport enum RwMultiMode {\n none = 0,\n stops = 1,\n sites = 2,\n tasks = 3,\n}\n\n\nexport enum RwMutiModeTool {\n click = 0,\n lasso = 1,\n}\n\nexport enum ManifestLimitIssue {\n None,\n Warning,\n Error\n}\n\nexport enum OnboardingTab {\n Welcome = 0,\n PrimeGPSAccess = 1,\n ConfirmStartLoc = 2,\n StepperDefaults = 3,\n StopColor = 4,\n TaskColor = 5,\n FavoriteColor = 6,\n DistanceUnits = 7,\n OptimizeMode = 8,\n TravelMode = 9,\n RouteType = 10,\n Avoids = 11,\n VisitTime = 12,\n RouteTime = 13,\n GrantLocationPermission = 14\n}\n\nexport enum OnboardingSteps {\n Colors = 1,\n Routes = 2,\n Times = 3,\n Notifications = 4,\n Confirm = 5\n}\n\nexport enum flexDisplay {\n Solo = 0,\n Team = 1,\n ParentTeam = 2\n}\n\nexport enum OptInPref {\n Decline = -1,\n NotSelected = 0,\n OptedIn = 1\n}\n\nexport enum ResumeAutoRenewError {\n None = 0,\n SubscriptionEnded = 1,\n NoSubscriptionFound = 2,\n UnhandledError = 3,\n InvalidSession = 4\n}\n\nexport enum NotifyErrorEnum {\n None = 0,\n NoPushTargetsFound = 1,\n UnhandledInternalError = 2\n}\n\nexport enum VersionOutdatedEnum {\n Current,\n NeedsUpdate,\n NeedsUpdateSevere\n}\n\nexport enum RwApiAuthError {\n None = 0,\n NoFlexSub = 1,\n NotDispatcher = 2,\n InternalError = 3,\n AuthError = 4\n}\n\nexport enum ResubErrorType {\n None = 0,\n InternalError = 1,\n InvalidModel = 2,\n ExpiredSession = 3,\n NotDispatcher = 4,\n PrevSubNotFound = 5,\n ActiveFlexFound = 6,\n PaymentUpdateReq = 7,\n PaymentInfoNotFound = 8,\n CreatingSubError = 9,\n RestoringDriversError = 10,\n RestoringSubTeamError = 11\n}\n\nexport enum OntLoginError {\n None = 0,\n NotDispatcher = 1,\n LockedOut = 2,\n InvalidUsernamePW = 3,\n PasswordExpired = 4,\n UnhandledError = 5,\n InvalidSesh = 6,\n RwOntIdMismatch = 7\n}\n\nexport enum ReplaceDriverError {\n None = 0,\n UnhandledError = 1,\n InvalidUserNamePassword = 2,\n InvalidDriverToReplace = 3,\n SubTeamError = 4,\n NewDriverAlreadyExists = 5,\n CreatingUserError = 6,\n DeletingUserError = 7,\n RestoringUserError = 8\n}\n\nexport enum StopStatus {\n // Not Completed\n NotCompleted = 0,\n NobodyThere = 1,\n NotOpen = 2,\n IncorrectAddress = 3,\n AddressUnreachable = 4,\n CustomerRefused = 5,\n ComeBackAnotherDay = 6,\n DoNotReattempt = 7,\n NotCompletedOther = 8,\n //Completed\n Completed = 9,\n LeftFrontDoorPorch = 10,\n LeftGateLobby = 11,\n LeftMailArea = 12,\n HandedToCust = 13,\n SigCollected = 14,\n SvcRendered = 15,\n PackagePickedUp = 16,\n //Communicated\n CommWithContact = 17,\n SentTextEmail = 18,\n LeftVoicemail = 19,\n SpokeOnPhone = 20,\n SpokeDirect = 21,\n LeftNote = 22,\n //Other\n Other = 23,\n AddressUpdated = 24,\n NewDelivery = 25,\n NewCustomer = 26\n}\n\nexport enum RwSetNewEmailEnum {\n Success = 0,\n InvalidOrTakenEmail = 1,\n InvalidLogin = 2,\n InternalError = 3\n}\n\nexport enum RwLogsSortOrder {\n Sev = 0,\n Date = 1,\n User = 2,\n Device = 3,\n Source = 4,\n Message = 5\n}\n\nexport enum SubscriptionState {\n Trialing = 0,\n Trial_Ended = 1,\n Assessing = 2,\n Active = 3,\n Soft_Failure = 4,\n Past_Due = 5,\n Suspended = 6,\n Canceled = 7,\n Expired = 8,\n Unpaid = 9,\n Paid = 10,\n Partial = 11,\n On_Hold = 12,\n Paused = 13,\n Unknown = -1\n}\n\nexport enum RwAddStatusEnum { Complete = -1, Pending = 0, WIP = 1 }\n\nexport enum RwAddVoteEnum { Rejected = -1, Indeterminate = 0, Accepted = 1 }\n\nexport enum RwAddReportEnum { Correction, Missing }\n\nexport enum RwApplyCouponError {\n None = \"None\",\n Unknown = \"An unknown error happened applying the coupon code\",\n InvalidCoupon = \"The coupon code is invalid\",\n AlreadyApplied = \"The coupon code is already applied\",\n Expired = \"The coupon code is expired\",\n SubscriptionNotFound = \"There was no subscription found to apply the coupon\"\n}\n","import {RwLoginIssues} from \"@/app/RwEnums\";\n\nexport class RwError {\n status: number;\n isHandled?: boolean;\n error?: any;\n\n constructor(status: number, isHandled: boolean, error?: any) {\n this.status = status;\n this.isHandled = isHandled;\n this.error = error;\n }\n\n public toString = (): string => {\n let errDesc = this.error ? this.error.toString() : \"\"\n return `RwError: (status:${this.status}, error:${errDesc})`;\n }\n}\n\nexport class RwLoginError extends RwError {\n failCode: RwLoginIssues;\n\n constructor(\n status: number,\n isHandled: boolean,\n error?: any,\n code?: RwLoginIssues\n ) {\n super(status, isHandled, error);\n this.failCode = code;\n }\n}\n","import moment from \"moment\";\nimport vuetify from \"@/plugins/vuetify\";\nimport theStore from \"@/store/index\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute, RwRouteAssignCodes, RwRoutePick, RwRouteStatusCodes, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwAvatarInfo, RwCreateDriver, RwUser} from \"@/app/dem/RwUser\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTaskRoutes} from \"@/app/dal/RwTaskRoutes\";\nimport {RwTaskSync} from \"@/app/dal/RwTaskSync\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwTaskLicense} from \"@/app/dal/RwTaskLicense\";\nimport {CreateDriversReturnModel, RwLicenseCounts, SubTeamModel} from '@/app/dem/Drivers/CreateBulkDriversResponse';\nimport {RwAssignment, RwCommit} from '@/app/dem/RwSync';\nimport {RwSked} from '@/app/dem/RwSked';\nimport {RwHistory} from '@/app/dem/RwHistory';\nimport {RwSkuInfo} from '@/app/dem/Profile/RwSkuInfo';\nimport {RwTaskMisc} from '@/app/dal/RwTaskMisc';\nimport {RwWebPrefs} from '@/app/dem/Profile/RwProfileModel';\nimport {RwTaskStops} from '@/app/dal/RwTaskStops';\nimport {RwTaskDriver} from '@/app/dal/RwTaskDriver';\nimport {RwTaskSites} from '@/app/dal/RwTaskSites';\nimport {RwTaskSkeds} from '@/app/dal/RwTaskSkeds';\nimport {RwTaskHistory} from '@/app/dal/RwTaskHistory';\nimport {RwTaskAccounts} from '@/app/dal/RwTaskAccounts';\nimport {RwPin, RwPinArgs} from \"@/app/dem/RwPin\";\n\nimport {\n DriverSortOrder,\n FavSortOrder,\n HistSortOrder,\n NotifyErrorEnum,\n RwAccessTypes,\n RwApplyCouponError,\n RwDistUnits,\n RwEntityTypes,\n RwExtType,\n RwLimitType,\n RwLoginIssues,\n RwMultiMode,\n RwPinTypes,\n RwPushStatus,\n RwRoleTypes,\n RwRouteCopyType,\n RwSkedTypes,\n RwTxnTypes,\n SchedSortOrder,\n VersionOutdatedEnum\n} from '@/app/RwEnums';\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwTaskPush} from \"@/app/dal/RwTaskPush\";\nimport RwGenericDialog from '@/app/utils/RwGenericDialog';\nimport theSubTeamSpace from \"@/app/views/subteams/RwSubTeamSpace\";\nimport subTeamSpace, {RwSubTeamSpace} from \"@/app/views/subteams/RwSubTeamSpace\";\n\nimport {FirebaseApp, initializeApp} from \"firebase/app\";\nimport {getMessaging, getToken, isSupported, Messaging, onMessage} from \"firebase/messaging\";\nimport store from \"@/store\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwGeoPoint} from \"@/app/utils/RwGeoUtils\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport RwEvents from \"@/app/consts/RwEvents\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwSubTeam} from \"@/app/dem/RwSubTeam\";\nimport {RwRegInfo} from \"@/app/dem/RwRegInfo\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\nimport RwTotalStopCount from \"@/app/dem/RwCountRouteStops\";\nimport router from \"@/router\";\nimport RwPages from \"@/app/consts/RwPages\";\nimport sysend from \"sysend\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport {AxiosRequestConfig} from \"axios\";\nimport GtmDataLayer from \"@/app/dem/Profile/GtmDataLayer\";\nimport Vue from \"vue\";\nimport {RwStopAddOns} from \"./dem/RwStopAddOns\";\nimport {PODDefaultSettings} from \"./dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\n\nexport class RwGlobals {\n\n //#region Props\n history: RwHistory[] = [];\n reassignList: RwAssignment[] = [];\n teamDomain: string;\n commitList: RwCommit[] = [];\n\n isFedExSubDomain: boolean = false;\n isOnTracSubDomain: boolean = false;\n isTestSubDomain: boolean = false;\n isPro = false;\n isComponentLoaded = false;\n imageUrl = \"\";\n imgSrc: number = 0;\n licenseCounts: RwLicenseCounts;\n _centroidLat: number = 0;\n _centroidLng: number = 0;\n // accountSetup: boolean = false;\n // avInfo: RwAvatarInfo;\n // _skuInfos: RwSkuInfo[] = [];\n\n\n browser: string;\n platform: string;\n isFirstRun: boolean = false;\n extType: RwExtType = RwExtType.None;\n extId: string;\n extDate: Date;\n isReturningFedexManifest: boolean = false;\n adminEmail: string;\n _devEnablePurchaseOps = true;\n pendingRegInfo: RwRegInfo = null;\n overrideEmptyState = false;\n\n // SubTeams\n //isSubTeam: boolean = false;\n //subDomain: string;\n parentDomain: string;\n orgs: SubTeamModel[] = [];\n\n fbApp: FirebaseApp;\n messaging: Messaging;\n pushEnabled: boolean = false;\n showArchive: boolean = false;\n showMark: boolean = false;\n static allowedGeoLoc: number = 0;\n static capturedGeoLoc: boolean = false;\n\n _targetFocusId: string;\n _targetSelectId: string;\n\n idxURL: { [key: string]: string; } = {};\n\n logoutMsg = \"logout\";\n\n _isTabActive = true;\n\n _inMemUserId = null;\n\n skipOnboardFirstStep = false;\n\n showStartingLocOnlyOnboard = false;\n\n Actions = {\n deleteStops: 0,\n deleteRoutes: 1,\n deleteFavorite: 2,\n deleteSked: 3\n };\n\n svgsDb;\n\n isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n\n constructor() {\n sysend.on(this.logoutMsg, () => {\n this.logOut(true);\n router.push({name: RwPages.Login}).catch();\n });\n\n document.addEventListener('visibilitychange', (event => {\n this._isTabActive = !document.hidden;\n }));\n }\n\n isMobile() {\n let check = false;\n (function (a) {\n if (/(android|bb\\d+|meego).+mobile|avantgo|bada\\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\\.(browser|link)|vodafone|wap|windows ce|xda|xiino/i.test(a) || /1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\\-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\\-(n|u)|c55\\/|capi|ccwa|cdm\\-|cell|chtm|cldc|cmd\\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\\-s|devi|dica|dmob|do(c|p)o|ds(12|\\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\\-|_)|g1 u|g560|gene|gf\\-5|g\\-mo|go(\\.w|od)|gr(ad|un)|haie|hcit|hd\\-(m|p|t)|hei\\-|hi(pt|ta)|hp( i|ip)|hs\\-c|ht(c(\\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\\-(20|go|ma)|i230|iac( |\\-|\\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\\/)|klon|kpt |kwc\\-|kyo(c|k)|le(no|xi)|lg( g|\\/(k|l|u)|50|54|\\-[a-w])|libw|lynx|m1\\-w|m3ga|m50\\/|ma(te|ui|xo)|mc(01|21|ca)|m\\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\\-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\\-2|po(ck|rt|se)|prox|psio|pt\\-g|qa\\-a|qc(07|12|21|32|60|\\-[2-7]|i\\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\\-|oo|p\\-)|sdk\\/|se(c(\\-|0|1)|47|mc|nd|ri)|sgh\\-|shar|sie(\\-|m)|sk\\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\\-|v\\-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\\-|tdg\\-|tel(i|m)|tim\\-|t\\-mo|to(pl|sh)|ts(70|m\\-|m3|m5)|tx\\-9|up(\\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\\-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\\-|your|zeto|zte\\-/i.test(a.substr(0, 4))) check = true;\n })(navigator.userAgent || navigator.vendor);\n return check;\n };\n\n get IsTabActive() {\n return this._isTabActive;\n }\n\n get enablePurchaseOps() {\n return this._devEnablePurchaseOps;\n }\n\n set enablePurchaseOps(value: boolean) {\n this._devEnablePurchaseOps = value;\n }\n\n get isDev() {\n return process.env.NODE_ENV === \"development\";\n }\n\n get plan(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get subTeamSpace(): RwSubTeamSpace {\n return theSubTeamSpace;\n }\n\n get activeRoute(): RwRoute {\n return this.plan.activeRoute;\n }\n\n get targetFocusId(): string {\n return this._targetFocusId;\n }\n\n set targetFocusId(val: string) {\n this._targetFocusId = val;\n if (val && val.length > 0) {\n this._targetSelectId = val;\n //console.log(\"SET targetFocusId\", \"focusId, selectId\", this._targetFocusId, this._targetSelectId);\n }\n }\n\n get targetSelectId(): string {\n return this._targetSelectId;\n }\n\n set targetSelectId(val: string) {\n this._targetSelectId = val;\n //this._targetFocusId = undefined;\n //console.log(\"SET targetSelectId\", \"focusId, selectId\", this._targetFocusId, this._targetSelectId)\n }\n\n get skuInfos(): RwSkuInfo[] {\n let skufos;\n if (store.getters.skuInfosJson != undefined) {\n skufos = JSON.parse(store.getters.skuInfosJson);\n // console.warn('skufos gotten:', skufos);\n } else {\n skufos = new Array();\n }\n return RwSkuInfo.fromJsonArray(skufos);\n }\n\n set skuInfos(skuInfo: RwSkuInfo[]) {\n let skuInfosJson = JSON.stringify(skuInfo.map(e => RwSkuInfo.toJson(e)));\n // console.warn('skufos set:', skuInfosJson);\n store.dispatch(\"skuInfosJson\", skuInfosJson).catch();\n }\n\n m_hasActiveFlexSku: boolean = null;\n\n get hasActiveFlexSku(): boolean {\n if (this.role === RwRoleTypes.Admin) {\n this.m_hasActiveFlexSku = true;\n return true;\n }\n\n if (this.skuInfos && this.skuInfos.length > 0) {\n this.skuInfos.forEach(info => {\n if (info.sku == \"team.pro.monthly\" || info.sku == RwConstants.SKU_ProGo || info.sku == RwConstants.SKU_Flex ||\n info.sku == RwConstants.SKU_Trial) {\n this.m_hasActiveFlexSku = true;\n }\n });\n } else {\n this.m_hasActiveFlexSku = false;\n }\n return this.m_hasActiveFlexSku;\n }\n\n get hasActiveFlexTrial(): boolean {\n let hasTrial = false;\n let foundNonTrialSub = false;\n\n if (this.skuInfos && this.skuInfos.length > 0) {\n this.skuInfos.forEach(info => {\n if (info.sku == \"team.pro.monthly\" || info.sku == RwConstants.SKU_ProGo || info.sku == RwConstants.SKU_Flex) {\n foundNonTrialSub = true;\n }\n });\n\n if (foundNonTrialSub) {\n return false;\n }\n\n this.skuInfos.forEach(info => {\n if (info.sku == \"flex.pro.trial\") {\n hasTrial = true;\n }\n });\n }\n\n return hasTrial;\n }\n\n m_hasActiveProSku: boolean = null;\n\n get hasActiveProSku(): boolean {\n if (this.role === RwRoleTypes.Admin) {\n this.m_hasActiveProSku = true;\n return true;\n }\n\n if (this.skuInfos && this.skuInfos.length > 0) {\n this.m_hasActiveProSku = false;\n this.skuInfos.forEach(info => {\n if (info.sku.includes('rw.pro.temp') || info.sku.includes('ios.pro.monthly') || info.sku.includes('ios.pro.yearly') || info.sku.includes('android.pro.monthly') || info.sku.includes('android.pro.yearly') || info.sku.includes('web.pro.monthly')) {\n this.m_hasActiveProSku = true;\n }\n });\n return this.m_hasActiveProSku;\n } else {\n return false;\n }\n }\n\n\n get stops(): RwStop[] {\n let stops: RwStop[];\n if (this.plan.activeRoute) {\n stops = this.plan.activeRoute.stops;\n }\n return stops;\n }\n\n //Selected Objects\n\n get selectedDriver(): RwUser {\n return store.getters.selectedDriver;\n }\n\n set selectedDriver(driver: RwUser) {\n store.dispatch(\"selectedDriver\", driver).catch();\n }\n\n get selectedRoute(): RwRoute {\n return theStore.getters.selectedRoute;\n }\n\n set selectedRoute(driver: RwRoute) {\n theStore.dispatch(\"selectedRoute\", driver).catch();\n }\n\n get routeToEdit(): RwRoute {\n return theStore.getters.routeToEdit;\n }\n\n set routeToEdit(driver: RwRoute) {\n theStore.dispatch(\"routeToEdit\", driver).catch();\n }\n\n get selectedRoutes(): RwRoute[] {\n return theStore.getters.selectedRoutes;\n }\n\n set selectedRoutes(routes: RwRoute[]) {\n theStore.dispatch(\"selectedRoute\", routes).catch();\n }\n\n get selectedStop(): RwStop {\n //console.warn(\"RwGlobals.selectedStop\");\n return theStore.getters.selectedStop;\n }\n\n set selectedStop(val: RwStop) {\n theStore.dispatch(\"selectedStop\", val).catch();\n }\n\n get selectedSite(): RwSite {\n return theStore.getters.selectedSite;\n }\n\n set selectedSite(val: RwSite) {\n theStore.dispatch(\"selectedSite\", val).catch();\n }\n\n\n // info\n\n get m_snackBarText(): string {\n return theStore.getters.snackBarText;\n }\n\n set m_snackBarText(val: string) {\n theStore.dispatch(\"snackBarText\", val).catch();\n }\n\n get m_snackBarColor(): string {\n return theStore.getters.snackBarColor;\n }\n\n set m_snackBarColor(val: string) {\n theStore.dispatch(\"snackBarColor\", val).catch();\n }\n\n get m_showSnackVar(): boolean {\n return theStore.getters.showSnackbar;\n }\n\n set m_showSnackVar(val: boolean) {\n theStore.dispatch(\"showSnackbar\", val).catch();\n }\n\n get isDataLoaded(): boolean {\n return theStore.getters.isDataLoaded;\n }\n\n set isDataLoaded(val: boolean) {\n theStore.dispatch(\"isDataLoaded\", val).catch();\n }\n\n get deviceId(): string {\n return RwPrefUtils.deviceId;\n }\n\n set deviceId(val: string) {\n RwPrefUtils.deviceId = val;\n }\n\n get installId(): string {\n return RwPrefUtils.installId;\n }\n\n set installId(val: string) {\n RwPrefUtils.installId = val;\n }\n\n get orgId(): string {\n return RwPrefUtils.orgId;\n }\n\n set orgId(val: string) {\n RwPrefUtils.orgId = val;\n }\n\n get dispName(): string {\n return RwPrefUtils.dispName;\n }\n\n set dispName(val: string) {\n RwPrefUtils.dispName = val;\n }\n\n get userName(): string {\n return RwPrefUtils.userName;\n }\n\n set userName(val: string) {\n RwPrefUtils.userName = val;\n }\n\n get avInfo(): RwAvatarInfo {\n //console.warn(\"GET avinfo:\", store.getters.avInfo);\n return store.getters.avInfo;\n }\n\n set avInfo(val: RwAvatarInfo) {\n //console.warn(\"SET avinfo:\", val);\n if (val) {\n RwPrefUtils.avInits = val.avInits;\n RwPrefUtils.avColor = val.avColor;\n RwPrefUtils.avType = val.avType;\n RwPrefUtils.avUrl = val.avUrl;\n } else {\n RwPrefUtils.avInits = \"\";\n RwPrefUtils.avColor = \"\";\n RwPrefUtils.avType = -1;\n RwPrefUtils.avUrl = \"\";\n }\n\n store.dispatch(\"avInfo\", val).catch();\n }\n\n get accountId(): string {\n return RwPrefUtils.userId;\n }\n\n set accountId(val: string) {\n RwPrefUtils.accountId = val;\n }\n\n get userId(): string {\n return RwPrefUtils.userId;\n }\n\n set userId(val: string) {\n RwPrefUtils.userId = val;\n this._inMemUserId = val;\n }\n\n get isSubTeam(): boolean {\n return RwPrefUtils.isSubTeam;\n }\n\n set isSubTeam(val: boolean) {\n RwPrefUtils.isSubTeam = val;\n }\n\n get subDomain(): string {\n return RwPrefUtils.subDomain;\n }\n\n set subDomain(val: string) {\n RwPrefUtils.subDomain = val;\n }\n\n get subTeams(): RwSubTeam[] {\n return store.getters.subTeams;\n }\n\n set subTeams(val: RwSubTeam[]) {\n store.dispatch(\"subTeams\", val).catch();\n }\n\n get stayLoggedIn(): boolean {\n return RwPrefUtils.stayLoggedIn;\n }\n\n set stayLoggedIn(val: boolean) {\n RwPrefUtils.stayLoggedIn = val;\n }\n\n get editAfterAdd(): boolean {\n return theStore.getters.editAfterAdd;\n }\n\n set editAfterAdd(val: boolean) {\n RwPrefUtils.editAfterAdd = val;\n theStore.dispatch(\"editAfterAdd\", val).catch();\n }\n\n get userPass(): string {\n return RwPrefUtils.userPass;\n }\n\n set userPass(val: string) {\n RwPrefUtils.userPass = val;\n }\n\n get orgCentroid(): number[] {\n let self = this;\n if (this._centroidLat === 0 && this._centroidLng === 0) {\n if (this.sites.length > 0) {\n this.sites.forEach(s => {\n self._centroidLat += s.lat;\n self._centroidLng += s.lng;\n });\n\n this._centroidLat = this._centroidLat / this.sites.length;\n this._centroidLng = this._centroidLng / this.sites.length;\n }\n // else if (this.zones.length > 0) {\n // this.zones.forEach(z => {\n // self._centroidLat += z.lat;\n // self._centroidLng += z.lng;\n // });\n\n // this._centroidLat = this._centroidLat / this.zones.length;\n // this._centroidLng = this._centroidLng / this.zones.length;\n // }\n else if (this.routes.length > 0) {\n this.routes.forEach(r => {\n self._centroidLat += r.lat;\n self._centroidLng += r.lng;\n });\n\n this._centroidLat = this._centroidLat / this.routes.length;\n this._centroidLng = this._centroidLng / this.routes.length;\n }\n }\n return [this._centroidLat, this._centroidLng];\n }\n\n get isLoading(): boolean {\n return theStore.getters.isLoading;\n }\n\n set isLoading(loading: boolean) {\n if (loading != this.isLoading) {\n theStore.dispatch(\"isLoading\", loading).catch();\n }\n }\n\n get isLoggedIn(): boolean {\n return theStore.getters.isLoggedIn;\n }\n\n set isLoggedIn(isLoggedIn: boolean) {\n RwPrefUtils.isLoggedIn = isLoggedIn;\n theStore.dispatch(\"isLoggedIn\", isLoggedIn).catch();\n }\n\n\n get gotUser(): boolean {\n return RwPrefUtils.userId && RwPrefUtils.userId.length > 0 && RwPrefUtils.userId !== RwConstants.EmptyGuid;\n }\n\n get gotToken(): boolean {\n return RwPrefUtils.token && RwPrefUtils.token.length > 0;\n }\n\n // hide prefs\n\n get hidePingPopup(): boolean {\n return theStore.getters.hidePingPopup;\n }\n\n set hidePingPopup(val: boolean) {\n RwPrefUtils.hidePingPopup = val;\n theStore.dispatch(\"hidePingPopup\", val).catch();\n }\n\n get hideDeletePopup(): boolean {\n return theStore.getters.hideDeletePopup;\n }\n\n set hideDeletePopup(val: boolean) {\n RwPrefUtils.hideDeletePopup = val;\n theStore.dispatch(\"hideDeletePopup\", val).catch();\n }\n\n get hideCreatePopup(): boolean {\n return theStore.getters.hideCreatePopup;\n }\n\n set hideCreatePopup(val: boolean) {\n RwPrefUtils.hideCreatePopup = val;\n theStore.dispatch(\"hideCreatePopup\", val).catch();\n }\n\n get hideCCPopup(): boolean {\n return theStore.getters.hideCCPopup;\n }\n\n set hideCCPopup(val: boolean) {\n RwPrefUtils.hideCCPopup = val;\n theStore.dispatch(\"hideCCPopup\", val).catch();\n }\n\n get valCCPopup(): number {\n return theStore.getters.valCCPopup;\n }\n\n set valCCPopup(val: number) {\n RwPrefUtils.valCCPopup = val;\n theStore.dispatch(\"valCCPopup\", val).catch();\n }\n\n get warnedCCPopup(): string[] {\n return theStore.getters.warnedCCPopup;\n }\n\n set warnedCCPopup(val: string[]) {\n RwPrefUtils.warnedCCPopup = val;\n theStore.dispatch(\"warnedCCPopup\", val).catch();\n }\n\n get warnedCCPopupOverdue(): string[] {\n return theStore.getters.warnedCCPopupOverdue;\n }\n\n set warnedCCPopupOverdue(val: string[]) {\n RwPrefUtils.warnedCCPopupOverdue = val;\n theStore.dispatch(\"warnedCCPopupOverdue\", val).catch();\n }\n\n get hide450Popup(): boolean {\n return theStore.getters.hide450Popup;\n }\n\n set hide450Popup(val: boolean) {\n RwPrefUtils.hide450Popup = val;\n theStore.dispatch(\"hide450Popup\", val).catch();\n }\n\n get hideTasksWarn(): boolean {\n return theStore.getters.hideTasksWarn;\n }\n\n set hideTasksWarn(val: boolean) {\n RwPrefUtils.hideTasksWarn = val;\n theStore.dispatch(\"hideTasksWarn\", val).catch();\n }\n\n get hideStopStatus(): boolean {\n return theStore.getters.hideStopStatus;\n }\n\n set hideStopStatus(val: boolean) {\n RwPrefUtils.hideStopStatus = val;\n theStore.dispatch(\"hideStopStatus\", val).catch();\n }\n\n\n //misc\n\n get hasCurrPurch(): boolean {\n return theStore.getters.hasCurrPurch;\n }\n\n set hasCurrPurch(val: boolean) {\n RwPrefUtils.hasActiveSub = val;\n theStore.dispatch(\"hasCurrPurch\", val).catch();\n }\n\n get showProofOfDelivery(): boolean {\n return theStore.getters.showProofOfDelivery;\n }\n\n set showProofOfDelivery(val: boolean) {\n theStore.dispatch(\"showProofOfDelivery\", val).catch();\n }\n\n get hasOnboarded(): boolean {\n return theStore.getters.hasOnboarded;\n }\n\n set hasOnboarded(val: boolean) {\n RwPrefUtils.hasOnboarded = val;\n theStore.dispatch(\"hasOnboarded\", val).catch();\n }\n\n get hasProBetaPrimed(): boolean {\n // console.warn('get globals.hasProBetaPrimed: ', theStore.getters.hasProBetaPrimed);\n return theStore.getters.hasProBetaPrimed;\n }\n\n set hasProBetaPrimed(val: boolean) {\n RwPrefUtils.hasOnboarded = val;\n // console.warn('set globals.hasProBetaPrimed: ', val);\n theStore.dispatch(\"hasProBetaPrimed\", val).catch();\n }\n\n get updateStartPref(): number {\n return theStore.getters.updateStartPref;\n }\n\n set updateStartPref(val: number) {\n RwPrefUtils.updateStartPref = val;\n theStore.dispatch(\"updateStartPref\", val).catch();\n }\n\n get pinnedStatus(): string[] {\n return theStore.getters.pinnedStatus;\n }\n\n set pinnedStatus(val: string[]) {\n RwPrefUtils.pinnedStatus = val;\n theStore.dispatch(\"pinnedStatus\", val).catch();\n }\n\n get lastSync(): moment.Moment {\n return moment(this.lastSyncMS);\n }\n\n get lastSyncMS(): number {\n return theStore.getters.lastSyncMS as number;\n }\n\n set lastSyncMS(val: number) {\n ////console.warn(\"lastSync MS:\", val);\n theStore.dispatch(\"lastSyncMS\", val).catch();\n }\n\n\n get lastDelta(): moment.Moment {\n return moment(this.lastRouteDeltaMS);\n }\n\n get lastRouteDeltaMS(): number {\n return theStore.getters.lastDeltaMS as number;\n }\n\n set lastRouteDeltaMS(val: number) {\n theStore.dispatch(\"lastDeltaMS\", val).catch();\n }\n\n\n get driverLastSync(): moment.Moment {\n return moment(this.driverLastSyncMS);\n }\n\n get driverLastSyncMS(): number {\n return theStore.getters.driverLastSyncMS as number;\n }\n\n set driverLastSyncMS(val: number) {\n theStore.dispatch(\"driverLastSyncMS\", val).catch();\n }\n\n\n get lastStatus(): moment.Moment {\n return moment(this.lastStatusMS);\n }\n\n get lastStatusMS(): number {\n return theStore.getters.lastStatusMS as number;\n }\n\n set lastStatusMS(val: number) {\n theStore.dispatch(\"lastStatusMS\", val).catch();\n }\n\n\n get lastToken(): moment.Moment {\n return moment(this.lastTokenMS);\n }\n\n get lastTokenMS(): number {\n return theStore.getters.lastTokenMS as number;\n }\n\n set lastTokenMS(val: number) {\n RwPrefUtils.lastTokenMS = val;\n theStore.dispatch(\"lastTokenMS\", val).catch();\n }\n\n get token(): string {\n return theStore.getters.token;\n }\n\n set token(token: string) {\n RwPrefUtils.token = token;\n //console.log(\"SET RwPrefUtils.token\", token)\n theStore.dispatch(\"token\", token).catch();\n }\n\n\n get theme(): string {\n return this.isDarkMode ? \"dark\" : \"light\";\n }\n\n get isDarkMode(): boolean {\n return theStore.getters.isDarkMode;\n }\n\n set isDarkMode(val: boolean) {\n RwPrefUtils.rwTheme = val ? \"rwDark\" : \"rwLight\";\n if (val != this.isDarkMode) {\n theStore.dispatch(\"isDarkMode\", val).catch();\n vuetify.framework.theme.dark = val;\n }\n }\n\n get isDisp(): boolean {\n return theStore.getters.isDisp;\n }\n\n set isDisp(val: boolean) {\n if (val != this.isDisp) {\n RwPrefUtils.isDisp = val;\n theStore.dispatch(\"isDisp\", val).catch();\n }\n }\n\n get isSimpleMap(): boolean {\n return theStore.getters.isSimpleMap;\n }\n\n set isSimpleMap(val: boolean) {\n if (val != this.isSimpleMap) {\n RwPrefUtils.isSimpleMap = val;\n theStore.dispatch(\"isSimpleMap\", val).catch();\n }\n }\n\n get isTeam(): boolean {\n return theStore.getters.isTeam;\n }\n\n set isTeam(val: boolean) {\n if (val != this.isTeam) {\n RwPrefUtils.isTeam = val;\n theStore.dispatch(\"isTeam\", val).catch();\n }\n }\n\n get isAdmin(): boolean {\n if (this.role === RwRoleTypes.Admin) {\n return true;\n } else {\n return false;\n }\n }\n\n\n get isFlexOwner(): boolean {\n if (this.isTeam && (this.role === RwRoleTypes.Owner || this.role === RwRoleTypes.Admin) && !this.isSubTeam) {\n return true;\n } else {\n return false;\n }\n }\n\n get isAutoRenewing(): boolean {\n return theStore.getters.isAutoRenewing;\n }\n\n set isAutoRenewing(val: boolean) {\n if (val != this.isAutoRenewing) {\n RwPrefUtils.isAutoRenewing = val;\n theStore.dispatch(\"isAutoRenewing\", val).catch();\n }\n }\n\n get isFlexSolo(): boolean {\n return theStore.getters.isFlexSolo;\n }\n\n set isFlexSolo(val: boolean) {\n if (val != this.isFlexSolo) {\n RwPrefUtils.isFlexSolo = val;\n theStore.dispatch(\"isFlexSolo\", val).catch();\n }\n }\n\n get flexDisplay(): number {\n // console.warn(\"flex Display get in globals: \", theStore.getters.flexDisplay);\n let fd = theStore.getters.flexDisplay;\n if (fd === 0) {\n fd = 1;\n }\n return fd;\n }\n\n set flexDisplay(val: number) {\n if (val !== this.flexDisplay) {\n // console.warn(\"flex Display set in globals: \", val);\n RwPrefUtils.flexDisplay = val;\n theStore.dispatch(\"flexDisplay\", val).catch();\n }\n }\n\n\n get role(): number {\n return theStore.getters.getRole;\n }\n\n set role(val: number) {\n if (val != this.role) {\n RwPrefUtils.role = val;\n theStore.dispatch(\"setRole\", val).catch();\n }\n }\n\n get isOpenDrawer(): boolean {\n return theStore.getters.isOpenDrawer;\n }\n\n set isOpenDrawer(val: boolean) {\n RwPrefUtils.isOpenDrawer = val;\n theStore.dispatch(\"isOpenDrawer\", val).catch();\n }\n\n //popup action shows\n\n get showProfileEdit(): boolean {\n return store.getters.showProfileEdit;\n }\n\n set showProfileEdit(val: boolean) {\n store.dispatch(\"showProfileEdit\", val).catch();\n }\n\n get showLimitPopup(): boolean {\n return store.getters.showLimitPopup;\n }\n\n set showLimitPopup(val: boolean) {\n store.dispatch(\"showLimitPopup\", val).catch();\n }\n\n get prompt450Popup(): string[] {\n return store.getters.prompt450Popup;\n }\n\n set prompt450Popup(val: string[]) {\n store.dispatch(\"prompt450Popup\", val).catch();\n }\n\n get warned450Popup(): string[] {\n return store.getters.warned450Popup;\n }\n\n set warned450Popup(val: string[]) {\n store.dispatch(\"warned450Popup\", val).catch();\n }\n\n\n get prompt500Popup(): string[] {\n return store.getters.prompt500Popup;\n }\n\n set prompt500Popup(val: string[]) {\n store.dispatch(\"prompt500Popup\", val).catch();\n }\n\n get hasClosedUserSiteBanner(): boolean {\n // console.warn(\"hasClosedUserSiteBanner get: \", store.getters.hasClosedUserSiteBanner);\n // return store.getters.hasClosedUserSiteBanner;\n return true;\n }\n\n get lastClosedPaymentBanner(): Date {\n return store.getters.lastClosedPaymentBanner;\n\n }\n\n set lastClosedPaymentBanner(val: Date) {\n store.dispatch(\"lastClosedPaymentBanner\", val).catch();\n RwPrefUtils.lastClosedPaymentBanner = val;\n }\n\n get showNewPass(): boolean {\n return store.getters.showNewPass;\n }\n\n set showNewPass(val: boolean) {\n store.dispatch(\"showNewPass\", val).catch();\n }\n\n get showRegistrationType(): boolean {\n return store.getters.showRegistrationType;\n }\n\n set showRegistrationType(val: boolean) {\n store.dispatch(\"showRegistrationType\", val).catch();\n }\n\n get showProToTeam(): boolean {\n return store.getters.showProToTeam;\n }\n\n set showProToTeam(val: boolean) {\n store.dispatch(\"showProToTeam\", val).catch();\n }\n\n get showCCExpire(): boolean {\n return store.getters.showCCExpire;\n }\n\n set showCCExpire(val: boolean) {\n store.dispatch(\"showCCExpire\", val).catch();\n }\n\n get showOnboardSettings(): boolean {\n return store.getters.showOnboardSettings;\n }\n\n set showOnboardSettings(val: boolean) {\n store.dispatch(\"showOnboardSettings\", val).catch();\n }\n\n get showOnboardAddStopArrowActive(): boolean {\n return store.getters.showOnboardAddStopArrowActive;\n }\n\n set showOnboardAddStopArrowActive(val: boolean) {\n store.dispatch(\"showOnboardAddStopArrowActive\", val).catch();\n }\n\n get showOnboardUploadsPopupActive(): boolean {\n return store.getters.showOnboardUploadsPopupActive;\n }\n\n set showOnboardUploadsPopupActive(val: boolean) {\n store.dispatch(\"showOnboardUploadsPopupActive\", val).catch();\n }\n\n get showPODTutorialOnOnboard(): boolean {\n return store.getters.showPODTutorialOnOnboard;\n }\n\n set showPODTutorialOnOnboard(val: boolean) {\n store.dispatch(\"showPODTutorialOnOnboard\", val).catch();\n }\n\n get showPODCallout(): boolean {\n return store.getters.showPODCallout;\n }\n\n set showPODCallout(val: boolean) {\n store.dispatch(\"showPODCallout\", val).catch();\n }\n\n get showOnboardAddStopArrow(): boolean {\n return store.getters.showOnboardAddStopArrow;\n }\n\n set showOnboardAddStopArrow(val: boolean) {\n store.dispatch(\"showOnboardAddStopArrow\", val).catch();\n }\n\n get showOnboardUploadsPopup(): boolean {\n return store.getters.showOnboardUploadsPopup;\n }\n\n set showOnboardUploadsPopup(val: boolean) {\n store.dispatch(\"showOnboardUploadsPopup\", val).catch();\n }\n\n get showPODTutorial(): boolean {\n return store.getters.showPODTutorial;\n }\n\n set showPODTutorial(val: boolean) {\n store.dispatch(\"showPODTutorial\", val).catch();\n }\n\n get showPODSettingsPopup(): boolean {\n return store.getters.showPODSettingsPopup;\n }\n\n set showPODSettingsPopup(val: boolean) {\n store.dispatch(\"showPODSettingsPopup\", val).catch();\n }\n\n get showedPODCallout(): boolean {\n return store.getters.showedPODCallout;\n }\n\n set showedPODCallout(val: boolean) {\n RwPrefUtils.showedPODCallout = val;\n store.dispatch(\"showedPODCallout\", val).catch();\n }\n\n get showProBetaPrimer(): boolean {\n // console.warn('get globals.showProBetaPrimer: ', theStore.getters.showProBetaPrimer);\n return store.getters.showProBetaPrimer;\n }\n\n set showProBetaPrimer(val: boolean) {\n // console.warn('set globals.showProBetaPrimer: ', val);\n store.dispatch(\"showProBetaPrimer\", val).catch();\n }\n\n\n get showEditAvatar(): boolean {\n return store.getters.showEditAvatar;\n }\n\n set showEditAvatar(val: boolean) {\n store.dispatch(\"showEditAvatar\", val).catch();\n }\n\n get showEditDriverPass(): boolean {\n return store.getters.showEditDriverPass;\n }\n\n set showEditDriverPass(val: boolean) {\n store.dispatch(\"showEditDriverPass\", val).catch();\n }\n\n get showEditDriverUname(): boolean {\n return store.getters.showEditDriverUname;\n }\n\n set showEditDriverUname(val: boolean) {\n store.dispatch(\"showEditDriverUname\", val).catch();\n }\n\n get showReplaceDriver(): boolean {\n return store.getters.showReplaceDriver;\n }\n\n set showReplaceDriver(val: boolean) {\n store.dispatch(\"showReplaceDriver\", val).catch();\n }\n\n get showDeleteDriver(): boolean {\n return store.getters.showDeleteDriver;\n }\n\n set showDeleteDriver(val: boolean) {\n store.dispatch(\"showDeleteDriver\", val).catch();\n }\n\n get showCreateDriver(): boolean {\n return store.getters.showCreateDriver;\n }\n\n set showCreateDriver(val: boolean) {\n store.dispatch(\"showCreateDriver\", val).catch();\n }\n\n get showCreateBulkUser(): boolean {\n return store.getters.showCreateBulkUser;\n }\n\n set showCreateBulkUser(val: boolean) {\n store.dispatch(\"showCreateBulkUser\", val).catch();\n }\n\n get showDomainPopup(): boolean {\n return store.getters.showDomainPopup;\n }\n\n set showDomainPopup(val: boolean) {\n store.dispatch(\"showDomainPopup\", val).catch();\n }\n\n get showPingTest(): boolean {\n return store.getters.showPingTest;\n }\n\n set showPingTest(val: boolean) {\n store.dispatch(\"showPingTest\", val).catch();\n }\n\n get showDeletePrompt(): boolean {\n return store.getters.showDeletePrompt;\n }\n\n set showDeletePrompt(val: boolean) {\n store.dispatch(\"showDeletePrompt\", val).catch();\n }\n\n get showCreatePrompt(): boolean {\n return store.getters.showCreatePrompt;\n }\n\n set showCreatePrompt(val: boolean) {\n store.dispatch(\"showCreatePrompt\", val).catch();\n }\n\n\n get showRouteAssign(): boolean {\n return theStore.getters.showRouteAssign;\n }\n\n set showRouteAssign(val: boolean) {\n theStore.dispatch(\"showRouteAssign\", val).catch();\n }\n\n get showRouteCopy(): boolean {\n return theStore.getters.showRouteCopy;\n }\n\n set showRouteCopy(val: boolean) {\n theStore.dispatch(\"showRouteCopy\", val).catch();\n }\n\n get showRouteComplete(): boolean {\n return theStore.getters.showRouteComplete;\n }\n\n // get showSkedDelete():boolean{ return store.getters.showSkedDelete; }\n // set showSkedDelete(val: boolean) { store.dispatch(\"showSkedDelete\", val).catch(); }\n set showRouteComplete(val: boolean) {\n theStore.dispatch(\"showRouteComplete\", val).catch();\n }\n\n get showRouteDelete(): boolean {\n return theStore.getters.showRouteDelete;\n }\n\n set showRouteDelete(val: boolean) {\n theStore.dispatch(\"showRouteDelete\", val).catch();\n }\n\n\n get showSiteDelete(): boolean {\n return theStore.getters.showSiteDelete;\n }\n\n set showSiteDelete(val: boolean) {\n theStore.dispatch(\"showSiteDelete\", val).catch();\n }\n\n get showSiteRelocate(): boolean {\n return theStore.getters.showSiteRelocate;\n }\n\n set showSiteRelocate(val: boolean) {\n theStore.dispatch(\"showSiteRelocate\", val).catch();\n }\n\n get showSiteCreate(): boolean {\n return theStore.getters.showSiteCreate;\n }\n\n set showSiteCreate(val: boolean) {\n theStore.dispatch(\"showSiteCreate\", val).catch();\n }\n\n get showSkedCreate(): boolean {\n return store.getters.showSkedCreate;\n }\n\n set showSkedCreate(val: boolean) {\n store.dispatch(\"showSkedCreate\", val).catch();\n }\n\n get showSkedDelete(): boolean {\n return store.getters.showSkedDelete;\n }\n\n set showSkedDelete(val: boolean) {\n store.dispatch(\"showSkedDelete\", val).catch();\n }\n\n get m_showAssignPicker(): boolean {\n return theStore.getters.showAssignPicker;\n }\n\n\n set m_showAssignPicker(val: boolean) {\n theStore.dispatch(\"showAssignPicker\", val).catch();\n }\n\n get m_assignPickerInitRoute(): RwRoute {\n return theStore.getters.assignPickerInitRoute;\n }\n\n set m_assignPickerInitRoute(val: RwRoute) {\n theStore.dispatch(\"assignPickerInitRoute\", val).catch();\n }\n\n\n get showClusterPicker(): boolean {\n return theStore.getters.showClusterPicker;\n }\n\n set showClusterPicker(val: boolean) {\n theStore.dispatch(\"showClusterPicker\", val).catch();\n }\n\n get selectedClusterPin(): RwPin {\n return theStore.getters.selectedClusterPin;\n }\n\n set selectedClusterPin(val: RwPin) {\n theStore.dispatch(\"selectedClusterPin\", val).catch();\n }\n\n\n get showPinPopup(): boolean {\n return theStore.getters.showPinPopup;\n }\n\n set showPinPopup(val: boolean) {\n theStore.dispatch(\"showPinPopup\", val).catch();\n }\n\n get showPinPanel(): boolean {\n return theStore.getters.showPinPanel;\n }\n\n set showPinPanel(val: boolean) {\n RwPrefUtils.showPinPanel = val;\n theStore.dispatch(\"showPinPanel\", val).catch();\n }\n\n get showStopPop(): boolean {\n return theStore.getters.showStopPop;\n }\n\n set showStopPop(val: boolean) {\n theStore.dispatch(\"showStopPop\", val).catch();\n }\n\n get showStopDock(): boolean {\n return theStore.getters.showStopDock;\n }\n\n set showStopDock(val: boolean) {\n RwPrefUtils.showStopDock = val;\n theStore.dispatch(\"showStopDock\", val).catch();\n }\n\n get showSitePop(): boolean {\n return theStore.getters.showSitePop;\n }\n\n set showSitePop(val: boolean) {\n theStore.dispatch(\"showSitePop\", val).catch();\n }\n\n get showSiteDock(): boolean {\n return theStore.getters.showSiteDock;\n }\n\n set showSiteDock(val: boolean) {\n RwPrefUtils.showSiteDock = val;\n theStore.dispatch(\"showSiteDock\", val).catch();\n }\n\n get showSkedPop(): boolean {\n return theStore.getters.showSkedPop;\n }\n\n set showSkedPop(val: boolean) {\n theStore.dispatch(\"showSkedPop\", val).catch();\n }\n\n get showSkedDock(): boolean {\n return theStore.getters.showSkedDock;\n }\n\n set showSkedDock(val: boolean) {\n RwPrefUtils.showSkedDock = val;\n theStore.dispatch(\"showSkedDock\", val).catch();\n }\n\n get showDriverPop(): boolean {\n return theStore.getters.showDriverPop;\n }\n\n set showDriverPop(val: boolean) {\n theStore.dispatch(\"showDriverPop\", val).catch();\n }\n\n get showDriverDock(): boolean {\n return theStore.getters.showDriverDock;\n }\n\n set showDriverDock(val: boolean) {\n RwPrefUtils.showDriverDock = val;\n theStore.dispatch(\"showDriverDock\", val).catch();\n }\n\n get showRoutePop(): boolean {\n return theStore.getters.showRoutePop;\n }\n\n set showRoutePop(val: boolean) {\n theStore.dispatch(\"showRoutePop\", val).catch();\n }\n\n get showRouteDock(): boolean {\n return theStore.getters.showRouteDock;\n }\n\n set showRouteDock(val: boolean) {\n RwPrefUtils.showRouteDock = val;\n theStore.dispatch(\"showRouteDock\", val).catch();\n }\n\n get showHistoryPop(): boolean {\n return theStore.getters.showHistoryPop;\n }\n\n set showHistoryPop(val: boolean) {\n theStore.dispatch(\"showHistoryPop\", val).catch();\n }\n\n get showHistoryEditPop(): boolean {\n return theStore.getters.showHistoryEditPop;\n }\n\n set showHistoryEditPop(val: boolean) {\n theStore.dispatch(\"showHistoryEditPop\", val).catch();\n }\n\n get selectedHistoryItem(): RwHistory {\n return theStore.getters.selectedHistoryItem;\n }\n\n set selectedHistoryItem(val: RwHistory) {\n theStore.dispatch(\"selectedHistoryItem\", val).catch();\n }\n\n //\n // get showSubTeamDock(): boolean {\n // return theStore.getters.showSubTeamDock;\n // }\n //\n // set showSubTeamDock(val: boolean) {\n // RwPrefUtils.showSubTeamDock = val;\n // theStore.dispatch(\"showSubTeamDock\", val).catch();\n // }\n\n get m_showConfirm(): boolean {\n return theStore.getters.showConfirm;\n }\n\n set m_showConfirm(val: boolean) {\n theStore.dispatch(\"showConfirm\", val).catch();\n }\n\n get m_confirmTitle(): string {\n return theStore.getters.confirmTitle;\n }\n\n set m_confirmTitle(val: string) {\n theStore.dispatch(\"confirmTitle\", val).catch();\n }\n\n get m_confirmBody(): string {\n return theStore.getters.confirmBody;\n }\n\n set m_confirmBody(val: string) {\n theStore.dispatch(\"confirmBody\", val).catch();\n }\n\n get m_confirmPosText(): string {\n return theStore.getters.confirmPosText;\n }\n\n set m_confirmPosText(val: string) {\n theStore.dispatch(\"confirmPosText\", val).catch();\n }\n\n get m_confirmNegText(): string {\n return theStore.getters.confirmNegText;\n }\n\n set m_confirmNegText(val: string) {\n theStore.dispatch(\"confirmNegText\", val).catch();\n }\n\n get m_confirmDontShowCheck(): boolean {\n return theStore.getters.confirmDontShowCheck;\n }\n\n set m_confirmDontShowCheck(val: boolean) {\n theStore.dispatch(\"confirmDontShowCheck\", val).catch();\n }\n\n get m_confirmDontShowCallback(): Function | null {\n return theStore.getters.confirmDontShowCallback;\n }\n\n set m_confirmDontShowCallback(val: Function | null) {\n theStore.dispatch(\"confirmDontShowCallback\", val).catch();\n }\n\n get backColorBar(): string {\n return this.isDarkMode ? \"rwBackDarkBar\" : \"rwBackLightBar\";\n }\n\n get dispatcher(): RwUser {\n let disp: RwUser;\n let drivers = this.drivers;\n if (drivers && drivers.length > 0) {\n // console.warn (\"drivers loop reached\");\n disp = drivers[0];\n for (let idx = 0; idx < drivers.length; idx++) {\n let driver = drivers[idx];\n if (driver.userType === 0) {\n disp = driver;\n break;\n }\n }\n }\n // console.warn (\"dispatcher user GET:\", disp);\n return disp;\n }\n\n get refreshRouteTrigger(): number {\n return theStore.getters.refreshRouteTrigger;\n }\n\n set refreshRouteTrigger(val: number) {\n theStore.dispatch(\"refreshRouteTrigger\", val).catch();\n }\n\n get swatches(): any[] {\n return [\n ['#40A23F', '#7AB93B', '#C1D62D', '#FDE82F', '#FCB40E', '#FC8607'],\n ['#5321A6', '#8801A0', '#DE0051', '#E91E63', '#ED2B2E', '#FB3F1B'],\n ['#303AA5', '#1E81EE', '#1497F0', '#19ADC9', '#118675', '#4E6A79'],\n ['#191919', '#8C8C8C', '#654338'],\n ];\n }\n\n // get swatches(): any[] {\n // return [\n // ['#40A23F', '#7AB93B', '#C1D62D',\n // '#FDE82F', '#FCB40E', '#FC8607'],\n // ['#5321A6', '#8801A0', '#DE0051',\n // '#E91E63', '#ED2B2E', '#FB3F1B'], //E2004F\n // ['#303AA5', '#1E81EE', '#1497F0',\n // '#19ADC9', '#118675', '#4E6A79'],\n // '#191919', '#8C8C8C', '#654338',\n // ];\n // }\n\n get visitTimes(): number[] {\n return [0, 1, 2, 3, 4, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95, 100,\n 105, 110, 115, 120, 125, 130, 135, 140, 145, 150, 155, 160, 165, 170, 175, 180, 185, 190, 195, 200,\n ];\n }\n\n get routeTimes(): number[] {\n return [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 18, 24, 36, 48, 72, 96, 120, 144, 168];\n }\n\n get m_showReloPicker(): boolean {\n return theStore.getters.showReloPicker;\n }\n\n set m_showReloPicker(val: boolean) {\n theStore.dispatch(\"showReloPicker\", val).catch();\n }\n\n get m_reloPickerInitTitle(): string {\n return theStore.getters.reloPickerInitTitle;\n }\n\n set m_reloPickerInitTitle(val: string) {\n theStore.dispatch(\"reloPickerInitTitle\", val).catch();\n }\n\n\n get m_reloPickerInitLat(): number {\n return theStore.getters.reloPickerInitLat;\n }\n\n set m_reloPickerInitLat(val: number) {\n theStore.dispatch(\"reloPickerInitLat\", val).catch();\n }\n\n get m_reloPickerInitLng(): number {\n return theStore.getters.reloPickerInitLng;\n }\n\n set m_reloPickerInitLng(val: number) {\n theStore.dispatch(\"reloPickerInitLng\", val).catch();\n }\n\n get m_enableReloPickerSearch(): boolean {\n return theStore.getters.enableReloPickerSearch;\n }\n\n set m_enableReloPickerSearch(val: boolean) {\n theStore.dispatch(\"enableReloPickerSearch\", val).catch();\n }\n\n get m_reloPickerAddReport(): boolean {\n return theStore.getters.reloPickerAddReport;\n }\n\n set m_reloPickerAddReport(val: boolean) {\n theStore.dispatch(\"reloPickerAddReport\", val).catch();\n }\n\n get m_showColorPicker(): boolean {\n return theStore.getters.showColorPicker;\n }\n\n set m_showColorPicker(val: boolean) {\n theStore.dispatch(\"showColorPicker\", val).catch();\n }\n\n get m_showAddRoutePicker(): boolean {\n // console.warn(\"RwGlobals.m_showAddRoutePicker getter\")\n return theStore.getters.showAddRoutePicker;\n }\n\n set m_showAddRoutePicker(val: boolean) {\n // console.warn(\"RwGlobals.m_showAddRoutePicker setter\")\n theStore.dispatch(\"showAddRoutePicker\", val).catch(err => {\n //console.warn(err)\n });\n }\n\n\n get m_colorPickerInitColor(): string {\n return theStore.getters.colorPickerInitColor;\n }\n\n set m_colorPickerInitColor(val: string) {\n theStore.dispatch(\"colorPickerInitColor\", val).catch();\n }\n\n\n get m_showVisitPicker(): boolean {\n return theStore.getters.showVisitPicker;\n }\n\n set m_showVisitPicker(val: boolean) {\n theStore.dispatch(\"showVisitPicker\", val).catch();\n }\n\n get m_visitPickerInit(): number {\n return theStore.getters.visitPickerInit;\n }\n\n set m_visitPickerInit(val: number) {\n theStore.dispatch(\"visitPickerInit\", val).catch();\n }\n\n get m_showSkedPicker(): boolean {\n return theStore.getters.showSkedPicker;\n }\n\n set m_showSkedPicker(val: boolean) {\n theStore.dispatch(\"showSkedPicker\", val).catch();\n }\n\n\n get m_skedPickerPriority(): number {\n return theStore.getters.skedPickerPriority;\n }\n\n set m_skedPickerPriority(val: number) {\n theStore.dispatch(\"skedPickerPriority\", val).catch();\n }\n\n get m_skedPickerStart(): number {\n return theStore.getters.skedPickerStart;\n }\n\n set m_skedPickerStart(val: number) {\n theStore.dispatch(\"skedPickerStart\", val).catch();\n }\n\n get m_skedPickerFinish(): number {\n return theStore.getters.skedPickerFinish;\n }\n\n set m_skedPickerFinish(val: number) {\n theStore.dispatch(\"skedPickerFinish\", val).catch();\n }\n\n\n get m_showRoutePicker(): boolean {\n return theStore.getters.showRoutePicker;\n }\n\n set m_showRoutePicker(val: boolean) {\n theStore.dispatch(\"showRoutePicker\", val).catch();\n }\n\n get m_routePickerSrcId(): string {\n return theStore.getters.routePickerSrcId;\n }\n\n set m_routePickerSrcId(val: string) {\n theStore.dispatch(\"routePickerSrcId\", val).catch();\n }\n\n\n get m_routeNewInitRoute(): RwRoute {\n return theStore.getters.routeNewInitRoute;\n }\n\n set m_routeNewInitRoute(val: RwRoute) {\n theStore.dispatch(\"routeNewInitRoute\", val).catch();\n }\n\n get m_routeNewInitEmpty(): boolean {\n return theStore.getters.routeNewInitEmpty;\n }\n\n set m_routeNewInitEmpty(val: boolean) {\n theStore.dispatch(\"routeNewInitEmpty\", val).catch();\n }\n\n\n get m_showStatusPicker(): boolean {\n return theStore.getters.showStatusPicker;\n }\n\n set m_showStatusPicker(val: boolean) {\n theStore.dispatch(\"showStatusPicker\", val).catch();\n }\n\n get m_statusPickerInitName(): string {\n return theStore.getters.statusPickerInitName;\n }\n\n set m_statusPickerInitName(val: string) {\n theStore.dispatch(\"statusPickerInitName\", val).catch();\n }\n\n get m_statusPickerInitStatus(): number {\n return theStore.getters.statusPickerInitStatus;\n }\n\n set m_statusPickerInitStatus(val: number) {\n theStore.dispatch(\"statusPickerInitStatus\", val).catch();\n }\n\n get genericDialog(): RwGenericDialog {\n return theStore.getters.genericDialog;\n }\n\n set genericDialogShow(val: boolean) {\n theStore.dispatch(\"genericDialogShow\", val).catch();\n }\n\n set genericDialogTitle(val: string) {\n theStore.dispatch(\"genericDialogTitle\", val).catch();\n }\n\n set genericDialogText(val: string) {\n theStore.dispatch(\"genericDialogText\", val).catch();\n }\n\n set genericDialogIcon(val: string) {\n theStore.dispatch(\"genericDialogIcon\", val).catch();\n }\n\n set genericDialogConfirmCallback(val: Function | null) {\n theStore.dispatch(\"genericDialogConfirmCallback\", val).catch();\n }\n\n set genericDialogOnCloseCallback(val: Function | null) {\n theStore.dispatch(\"genericDialogOnCloseCallback\", val).catch();\n }\n\n get isDriver(): boolean {\n return this.role === 1;\n }\n\n get availableRoutes(): RwRoute[] {\n //console.log(\"RwGlobals.availableRoutes\")\n let routes = this.routes;\n if (this.isDriver && RwPrefUtils.userAccessType < RwAccessTypes.SubDisp) {\n routes = this.routes.filter(route => route.driverId === this.userId);\n }\n return routes;\n }\n\n get centerMapData(): { lat: number, lng: number } {\n return theStore.getters.centerMapData;\n }\n\n set centerMapData(val: { lat: number, lng: number }) {\n theStore.dispatch(\"centerMapData\", val).catch();\n }\n\n get showFlexOptIn(): boolean {\n //console.log(\"GET showFlexOptIn\", theStore.getters.showFlexOptIn)\n return theStore.getters.showFlexOptIn;\n }\n\n set showFlexOptIn(newVal: boolean) {\n //console.log(\"SET showFlexOptIn\", newVal)\n theStore.dispatch(\"showFlexOptIn\", newVal);\n }\n\n get showOptInPostMessage(): boolean {\n //console.log(\"GET showOptInPostMessage\", theStore.getters.showOptInPostMessage)\n return theStore.getters.showOptInPostMessage;\n }\n\n set showOptInPostMessage(newVal: boolean) {\n //console.log(\"SET showOptInPostMessage\", newVal)\n theStore.dispatch(\"showOptInPostMessage\", newVal);\n }\n\n get isLegacy(): boolean {\n return RwPrefUtils.isLegacy;\n }\n\n set isLegacy(newVal: boolean) {\n RwPrefUtils.isLegacy = newVal;\n }\n\n get isProGo(): boolean {\n return RwPrefUtils.isProGo;\n }\n\n set isProGo(newVal: boolean) {\n RwPrefUtils.isProGo = newVal;\n }\n\n get showAddReport(): boolean {\n return theStore.getters.showAddReport;\n }\n\n set showAddReport(newVal: boolean) {\n theStore.dispatch(\"showAddReport\", newVal);\n }\n\n get showAddMissingReport(): boolean {\n return theStore.getters.showAddMissingReport;\n }\n\n set showAddMissingReport(newVal: boolean) {\n theStore.dispatch(\"showAddMissingReport\", newVal);\n }\n\n\n get addReport(): RwAddReport {\n return theStore.getters.addReport;\n }\n\n set addReport(newVal: RwAddReport) {\n theStore.dispatch(\"addReport\", newVal);\n }\n\n get greedyDist(): number {\n return theStore.getters.greedyDist;\n }\n\n set greedyDist(newVal: number) {\n theStore.dispatch(\"greedyDist\", newVal);\n }\n\n get greedyTime(): number {\n return theStore.getters.greedyTime;\n }\n\n set greedyTime(newVal: number) {\n theStore.dispatch(\"greedyTime\", newVal);\n }\n\n //#endregion\n\n\n //#region App Init\n\n initApp(): void {\n if (this.isLoggedIn) {\n this.loadData();\n }\n }\n\n canLoadSubteams(): boolean {\n return ((this.role === RwRoleTypes.Owner || this.role === RwRoleTypes.Admin)\n && this.hasActiveFlexSku\n && this.isTeam && !this.isSubTeam);\n }\n\n loadData(): void {\n const self = this;\n const SOURCE = \"RwGlobals.loadData\";\n //console.warn(SOURCE, `lastRouteId: ${RwPrefUtils.lastRouteId}`);\n let lastRouteId = RwPrefUtils.lastRouteId;\n\n if (dal.gotToken()) {\n this._inMemUserId = RwPrefUtils.userId;\n if (this.hasActiveFlexSku) {\n self.checkNotificationSetup();\n self.getWebPrefs();\n self.checkOutdatedVersion();\n self.syncDataEssential(lastRouteId)\n .then(() => {\n if (dal.gotToken()) {\n self.syncDataSecondary();\n if (this.canLoadSubteams()) {\n subTeamSpace.loadSubTeams();\n }\n } else {\n RwLog.warn(SOURCE, `syncDataEssential Invalid token: ${RwPrefUtils.token}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n })\n .catch(err => {\n if ((err && err.isHandled) == false) {\n RwLog.error(SOURCE, `syncDataEssential Err: \\n${JSON.stringify(err)}`);\n }\n })\n //setTimeout(() => self.syncDataSecondary(), 3500)\n\n this.pollDataCancelled = false;\n this.pollDriversCancelled = false;\n\n let orgDelay = 5 * 60 * 1000; //5 minutes\n let orgInterval = 5 * 60 * 1000; //5 minutes\n let orgTimeout = 95000;\n RwLog.consoleLog(\"pollOrgData interval secs:\", orgInterval / 1000);\n self.pollOrgData(orgDelay, orgInterval, orgTimeout);\n\n if (RwPrefUtils.isTeam && RwPrefUtils.isDisp) {\n let statusDelay = 1 * 60 * 1000; //1 minute\n let statusInterval = 1 * 60 * 1000; //1 minute\n RwLog.consoleLog(\"pollStatusInfo interval secs:\", statusInterval / 1000);\n self.pollStatusInfo(statusDelay, statusInterval);\n }\n\n let checkDelay = 1 * 60 * 1000; //1 minute\n let checkInterval = 1 * 60 * 1000; //1 minute\n self.checkUserIdMatch(checkDelay, checkInterval);\n } else {\n if (this.hasActiveProSku) {\n let checkDelay = 1 * 60 * 1000; //1 minute\n let checkInterval = 1 * 60 * 1000; //1 minute\n self.checkUserIdMatch(checkDelay, checkInterval);\n }\n // For basic users, populate drivers with self\n const disp = new RwUser();\n disp.name = this.dispName;\n disp.userName = this.userName;\n disp.accessType = RwPrefUtils.userAccessType;\n this.drivers = [disp];\n //\n // this.showConfirmDialog(\"No Flex Purchase Detected\",\n // \"You must have a RoadWarrior Flex subscription to access the web app.\",\n // \"Upgrade to Flex\", \"Log out\")\n // .then(isConfirmed => {\n // if (isConfirmed){\n // router.push({name: RwPages.Upgrade}).catch(err => {\n //\n // });\n // }else{\n // this.logOut();\n // }\n // })\n\n\n }\n } else {\n RwLog.warn(SOURCE, `Invalid Token: ${RwPrefUtils.token}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n }\n }\n\n checkNotificationOnboard(): string {\n let permission = Notification.permission;\n if (permission === 'default') {\n return 'default';\n } else if (permission === 'granted') {\n return 'granted';\n } else if (permission === 'denied') {\n return 'denied';\n } else {\n return 'no permissions registered';\n }\n }\n\n\n checkNotificationSetup() {\n const SOURCE = \"RwGlobals.checkNotificationSetup\";\n try {\n\n let notificationsSupported = \"Notification\" in window && isSupported();\n if (notificationsSupported) {\n let permission = Notification.permission;\n //console.log(SOURCE, \"Notification.permission\", permission);\n if (permission !== 'denied') {\n if (permission === 'granted') {\n this.configNotes();\n }\n if (permission === 'default' && this.hasOnboarded === true && !this.showOnboardSettings) {\n this.showConfirmDialog('Allow Push Notifications', 'RoadWarrior can send updates to your device via push notification. To authorize notifications, hit Continue, then approve the request from your browser. To reject notifications, hit Continue, then reject the request from your browser.', 'Continue', 'Ask Later')\n .then(isConfirmed => {\n if (isConfirmed) {\n this.browserNotesRequest();\n }\n })\n }\n } else {\n RwLog.warn(SOURCE, \"Web Notifications denied\");\n //this.showSnack('Browser notifications disabled', 'warning');\n }\n } else {\n RwLog.warn(SOURCE, \"Browser does not support desktop notification\");\n //this.showSnack('Browser does not support desktop notification', 'error');\n }\n } catch (err) {\n let msg = `Unhandled: ${err}`;\n if (msg.includes(\"This browser doesn't support\") || msg.includes(\"already exists\")) {\n RwLog.warn(SOURCE, msg);\n } else {\n RwLog.error(SOURCE, msg);\n }\n }\n }\n\n browserNotesRequest() {\n const self = this;\n const SOURCE = \"RwGlobals.browserNotesRequest\";\n Notification.requestPermission()\n .then(res => {\n self.onMessagePermission(res);\n })\n .catch(err => {\n let errText = err.toString();\n if (errText.contains(\"messaging/unsupported-browser\")) {\n RwLog.warn(SOURCE, `requestPermission error: ${err}`);\n //this.showSnack(\"This browser does not support notifications.\", \"error\");\n } else if (errText.contains(\"messaging/token-subscribe-failed\")) {\n RwLog.warn(SOURCE, `token subscribe failed error: ${err}`);\n //this.showSnack(\"This browser does not support notifications.\", \"error\");\n } else {\n RwLog.error(SOURCE, `requestPermission error: ${err}`);\n }\n });\n }\n\n\n onMessagePermission(permission: NotificationPermission) {\n const SOURCE = \"RwGlobals.onMessagePermission\";\n //console.log(SOURCE, \"granted: \", permission);\n\n if (permission === \"granted\") {\n this.configNotes();\n\n if (this.messaging) {\n getToken(this.messaging, {vapidKey: RwConstants.FirebaseKey})\n .then(currentToken => {\n if (currentToken) {\n //console.log(\"Got token:\", currentToken);\n RwTaskPush.updatePushToken(currentToken)\n .then(currentToken => {\n if (currentToken) {\n this.pushEnabled = true;\n } else {\n RwLog.error(SOURCE, 'WTF: No Instance ID token available. Request permission to generate one.');\n // Show permission UI.\n // updateUIForPushPermissionRequired();\n // setTokenSentToServer(false);\n }\n })\n .catch(err => {\n if (this.checkNotHandled(err) && err?.status !== 201) {\n RwLog.error(SOURCE, `updatePushToken error: ${err}`);\n }\n });\n //sendTokenToServer(currentToken);\n //updateUIForPushEnabled(currentToken);\n } else {\n // Show permission request.\n RwLog.warn(SOURCE, \"No Instance ID token available. Request permission to generate one.\");\n }\n })\n .catch((err) => {\n if (this.checkNotHandled(err)) {\n let errString = JSON.stringify(err);\n if (errString == \"{}\") {\n RwLog.warn(SOURCE, `Internal firebase error, ${errString}`);\n } else if (errString && errString.indexOf('no active Service Worker') !== -1) {\n RwLog.warn(SOURCE, `Firebase error, no active service worker found: ${errString}`);\n } else if (err && err.code === 'messaging/failed-service-worker-registration') {\n RwLog.warn(SOURCE, `Firebase error, service worker registration failed: ${errString}`);\n } else if (err && err.code === 'messaging/token-subscribe-failed') {\n RwLog.warn(SOURCE, `Firebase error, token subscribe failed: ${errString}`);\n } else if (err && err.code === 'messaging/permission-blocked') {\n RwLog.warn(SOURCE, `Firebase error, permission failed: ${errString}`);\n this.showSnack(\"It looks like you may not have push notifications allowed - please enable them if prompted.\", \"warning\");\n } else {\n RwLog.error(SOURCE, `Unhandled \\n\\n${JSON.stringify(err)}`);\n }\n }\n });\n } else {\n RwLog.warn(SOURCE, \"messaging == null, firebase not setup\");\n }\n }\n }\n\n\n configNotes() {\n const SOURCE = \"RwGlobals.configNotes\"\n //console.log(SOURCE);\n try {\n this.fbApp = initializeApp(RwConstants.FirebaseConfig);\n this.messaging = getMessaging(this.fbApp);\n onMessage(this.messaging, (payload) => {\n this.onMessage(payload);\n });\n\n this.messageTest();\n } catch (err) {\n RwLog.warn(SOURCE, `Error setting up notifications ${JSON.stringify(err)}`);\n }\n }\n\n\n messageTest() {\n const SOURCE = \"RwGlobals.messageTest\";\n\n getToken(this.messaging, {vapidKey: RwConstants.FirebaseKey})\n .then((currentToken) => {\n if (currentToken) {\n //console.log('messageTest', currentToken);\n this.pushEnabled = true;\n this.updatePushToken(currentToken);\n } else {\n // Show permission request.\n RwLog.consoleWarn('No Instance ID token available. Request permission to generate one.');\n // Show permission UI.\n // updateUIForPushPermissionRequired();\n // setTokenSentToServer(false);\n }\n })\n .catch((err) => {\n RwLog.warn(SOURCE, `Unhandled: ${err}`);\n // DEFER: clear server token??\n // showToken('Error retrieving Instance ID token. ', err);\n // setTokenSentToServer(false);\n });\n }\n\n\n onMessageTokenRefresh() {\n const SOURCE = \"RwGlobals.onTokenRefresh\";\n if (this.messaging) {\n\n getToken(this.messaging, {vapidKey: RwConstants.FirebaseKey})\n .then((refreshedToken) => {\n //console.log(\"Token refreshed.\", refreshedToken);\n this.updatePushToken(refreshedToken);\n })\n .catch(function (err) {\n RwLog.error(SOURCE, `Unhandled: \\n\\n${JSON.stringify(err)}`);\n });\n } else {\n RwLog.warn(SOURCE, \"messaging == null, firebase not setup\");\n }\n }\n\n\n updatePushToken(refreshedToken: string) {\n const SOURCE = \"RwGlobals.updatePushToken\";\n //console.log(SOURCE, `refreshedToken: ${refreshedToken}`);\n if (RwPrefUtils.userId) {\n RwTaskPush.updatePushToken(refreshedToken)\n .then(isUpdated => {\n if (isUpdated) {\n this.pushEnabled = true;\n } else {\n RwLog.consoleError(SOURCE, `WTF: Token refresh not updated`);\n }\n })\n .catch(err => {\n RwLog.warn(SOURCE, `Token refresh fail: ${err}`);\n });\n }\n }\n\n\n onMessage(payload) {\n const SOURCE = \"RwGlobals.onMessage\";\n\n try {\n if (payload && payload.data) {\n const data = payload.data;\n const msg = JSON.stringify(data);\n const route = this.activeRoute;\n const routeId = data.rtid;\n const routeIdList = data.routeIdCsv;\n\n RwLog.log(SOURCE, msg);\n //RwLog.consoleLog(SOURCE, `${msg.action}`);\n // RwLog.consoleWarn(SOURCE, `${msg.action}, routeId:${routeId}, routeIdList:${routeIdList}`);\n // RwLog.consoleLog(SOURCE, `${msg.action}, routeId:${routeId}, routeIdCsv:${routeIdCsv}`);\n //console.log(SOURCE, `action:${msg.action}`);\n\n switch (data.action) {\n case \"routeDeltas\":\n // console.log(SOURCE, `routeDeltas msg.routeId: ${msg.rtid}`);\n // console.log(SOURCE, `routeDeltas msg.routeIdCsv: ${msg.routeIdCsv}`);\n let isActive = false;\n if (route) {\n isActive = routeId && route.routeId === routeId;\n if (isActive) {\n //console.log(SOURCE, `${msg.action}, routeName:${route.name} routeId: ${routeId}, isActive:${isActive}`);\n } else if (routeIdList && routeIdList.length > 0) {\n const routeIds = routeIdList.split(',');\n isActive = routeIds.find(id => id === route.routeId);\n // console.log(SOURCE, `${msg.action}, routeIdList:${routeIdList}, isActive:${isActive}`);\n }\n }\n\n //Do the minimum viable refresh [ none, status, full]\n if (isActive) {\n //console.log(SOURCE, `routeDeltas getFullRoute: ${route.routeId}`);\n this.getFullRoute(route)\n } else {\n //console.log(SOURCE, `routeDeltas NOT ACTIVE: ${route.routeId}`);\n }\n break;\n\n // case \"routeupdated\":\n // if (isActive) {\n // console.log(SOURCE, `getFullRoute: ${route.routeId}`);\n // self.getFullRoute(route);\n // }\n // break;\n\n case \"driverdelta\":\n //console.log(SOURCE, `getFullRoute: ${route.routeId}`);\n //self.getFullRoute(route);\n if (this.isRouteDirty) {\n this.getStatusInfo();\n }\n break;\n\n default:\n //RwLog.error(SOURCE, \"WTF: Unknown Action:\" + msg.action);\n break;\n }\n\n //Delay due to timing issues\n setTimeout(() => {\n //xTEST: added to help diagnose why some messages are not found;\n RwLog.log(SOURCE, `Delivered ${data.action}, msgId:${data.msgId}, msg:${msg}`)\n RwTaskPush.setPushMsgStatus(data.msgId, RwPushStatus.Delivered)\n }, 250);\n\n } else {\n RwLog.error(SOURCE, \"WTF: Missing Payload\" + JSON.stringify(payload));\n }\n } catch (err) {\n RwLog.error(SOURCE, `Unhandled: ${err} \\n\\n${JSON.stringify(payload)}`);\n }\n }\n\n\n get isRouteDirty(): boolean {\n //console.log(\"lastDelta vs driverLastSync\", this.globals.lastStatusMS, this.globals.driverLastSyncMS)\n let isUpdated = this.lastRouteDeltaMS > 0 && this.lastRouteDeltaMS > this.driverLastSyncMS;\n return isUpdated;\n }\n\n\n getWebPrefs() {\n const SOURCE = \"RwGlobals.getWebPrefs\";\n RwTaskMisc.getWebPrefs()\n .then(prefs => {\n //console.log(\"RwGlobals.getWebPrefs\", prefs.SvcTime)\n // console.warn('getWebPrefs called');\n if (prefs.SvcTime) RwPrefUtils.visitTime = prefs.SvcTime;\n if (prefs.RouteSpan) RwPrefUtils.routeSpan = prefs.RouteSpan;\n RwPrefUtils.distUnits = prefs.UseMiles === true ? RwDistUnits.Miles : RwDistUnits.Kilometers;\n RwPrefUtils.isDynPoint = prefs.DynStart;\n RwPrefUtils.travelMode = prefs.TravelMode;\n RwPrefUtils.optimizeType = prefs.OptMode;\n RwPrefUtils.isRoundTrip = prefs.IsRndTrip;\n RwPrefUtils.avoids = prefs.Avoids;\n RwPrefUtils.siteColor = prefs.DefFavColor;\n RwPrefUtils.stopColor = prefs.DefStopColor;\n RwPrefUtils.taskColor = prefs.TaskColor;\n RwPrefUtils.proofOfDelivery = prefs.podDefault ?? PODDefaultSettings.None;\n\n if (prefs.ShowFedexUpload) RwPrefUtils.showFdxUpload = prefs.ShowFedexUpload;\n if (prefs.FedExPromptStatus) RwPrefUtils.fdxPromptStatus = prefs.FedExPromptStatus;\n if (prefs.ManiSetSequence) RwPrefUtils.maniSetSeq = prefs.ManiSetSequence;\n if (prefs.StartGPS) {\n try {\n let split = prefs.StartGPS.split(\",\");\n if (split && split.length == 2) {\n RwPrefUtils.startLat = parseFloat(split[0]);\n RwPrefUtils.startLng = parseFloat(split[1]);\n }\n } catch (err) {\n if (this.checkNotHandled(err)) {\n RwLog.error(SOURCE, `Unhandled Error: ${err}`);\n }\n }\n }\n });\n }\n\n cleanVisitTime(val: number) {\n let cleantime: number = 0;\n if (val >= 0 && val <= 999) {\n cleantime = Math.round(val);\n } else {\n if (val < 0) {\n cleantime = 0\n }\n\n if (val > 999) {\n cleantime = 999\n }\n\n }\n return cleantime;\n }\n\n\n saveWebPrefs(): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.saveWebPrefs\";\n\n return new Promise(function (resolve) {\n\n let prefs = {};\n prefs.SvcTime = RwPrefUtils.visitTime;\n prefs.RouteSpan = RwPrefUtils.routeSpan;\n prefs.UseMiles = RwPrefUtils.distUnits === RwDistUnits.Miles;\n prefs.DynStart = RwPrefUtils.isDynPoint;\n prefs.IsRndTrip = RwPrefUtils.isRoundTrip;\n prefs.Avoids = RwPrefUtils.avoids;\n prefs.OptMode = RwPrefUtils.optimizeType;\n prefs.TravelMode = RwPrefUtils.travelMode;\n prefs.ErrorRes = RwPrefUtils.uploadErrorRes;\n prefs.DefStopColor = RwPrefUtils.stopColor;\n prefs.TaskColor = RwPrefUtils.taskColor;\n prefs.DefFavColor = RwPrefUtils.siteColor;\n prefs.ShowFedexUpload = RwPrefUtils.showFdxUpload;\n prefs.FedExPromptStatus = RwPrefUtils.fdxPromptStatus;\n prefs.ManiSetSequence = RwPrefUtils.maniSetSeq;\n prefs.ShowOnTracUpload = RwPrefUtils.showOnTracUpload;\n prefs.FlexOptIn = RwPrefUtils.flexOptInSelected;\n prefs.AllowExpressOpt = RwPrefUtils.allowExpressOpt;\n\n //RwLog.consoleLog(\"Global prefs save\", prefs);\n\n //DEFER: seems clunky to string concatenate rather than just save the values [defLat, defLng]\n let dynLat = RwPrefUtils.startLat;\n let dynLng = RwPrefUtils.startLng;\n if (dynLat !== 0 && dynLng !== 0) {\n prefs.StartGPS = `${dynLat},${dynLng}`;\n }\n\n // console.warn(\"prefs being saved:\", prefs);\n //console.log(\"saveGlobalPrefs\");\n RwTaskMisc\n .setWebPrefs(prefs)\n .then(isSaved => resolve(isSaved))\n .catch(err => {\n if (self.checkNotHandled(err)) {\n let prefsText = JSON.stringify(prefs);\n RwLog.error(SOURCE, `Unhandled Error: \\n\\nPrefs:\\n${prefsText} \\n\\nError:\\n${err} \\n\\nAuthToken:\\n${RwPrefUtils.token}`);\n }\n resolve(false);\n });\n });\n\n }\n\n saveProofOfDeliveryDefault(): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.saveProofOfDeliveryDefault\";\n\n return new Promise(function (resolve) {\n\n RwTaskMisc\n .setProofOfDeliveryDefault(RwPrefUtils.proofOfDelivery)\n .then(isSaved => resolve(isSaved))\n .catch(err => {\n if (self.checkNotHandled(err)) {\n RwLog.error(SOURCE, `Unhandled Error: \\n\\ProofOfDeliveryDefault:\\n${RwPrefUtils.proofOfDelivery} \\n\\nError:\\n${err} \\n\\nAuthToken:\\n${RwPrefUtils.token}`);\n }\n resolve(false);\n });\n });\n\n }\n\n updateGtmDataLayer(data?: GtmDataLayer) {\n try {\n let dataToPush: GtmDataLayer = data;\n if (!dataToPush) {\n dataToPush = {\n\n isLoggedIn: this.isLoggedIn,\n isTrialFlex: this.hasActiveFlexTrial,\n isActiveFlex: this.hasActiveFlexSku,\n isMobilePro: this.hasActiveProSku && !this.hasActiveFlexSku\n\n }\n }\n const dataLayer = Vue.gtm.dataLayer();\n if (dataLayer) {\n dataLayer.push(dataToPush);\n }\n } catch (gtmErr) {\n RwLog.warn(\"updateGtmDataLayer\", `Exception updating gtm data layer, ${JSON.stringify(data)}`);\n }\n }\n\n logoutOtherTabs(): void {\n sysend.broadcast(this.logoutMsg);\n }\n\n async logOut(fromOtherTab: boolean = false): Promise {\n //`RwLog.consoleLog(\"logout called\");\n //dal.cancelSource.cancel(\"Forced log out\");\n //dal.generateNewCancelToken();\n this.isLoggedIn = false;\n\n this.pollDataCancelled = true;\n this.pollDriversCancelled = true;\n\n //Pass token on URL; otherwise if wil be null by the time axios makes async call\n if (!fromOtherTab) {\n RwTaskAccounts.DeactivateSession(this.token).catch();\n this.updateGtmDataLayer({isActiveFlex: false, isTrialFlex: false, isLoggedIn: false, isMobilePro: false});\n }\n\n // Close Dialogs\n this.m_showAddRoutePicker = false;\n this.m_showAssignPicker = false;\n this.m_showColorPicker = false;\n this.m_showConfirm = false;\n this.m_showReloPicker = false;\n this.m_showRouteNew = false;\n this.m_showRoutePicker = false;\n this.m_showSkedEdit = false;\n this.m_showSkedPicker = false;\n this.m_showStatusPicker = false;\n this.m_showVisitPicker = false;\n\n this.m_showRouteEdit = false;\n this.m_showStopEdit = false;\n this.m_showSiteEdit = false;\n this.m_showDriverEdit = false;\n this.genericDialogShow = false;\n this.subTeamSpace.showSubTeamEdit = false;\n\n //this.token = undefined;\n this.token = RwConstants.EmptyGuid;\n this.userId = undefined;\n this.userName = undefined;\n this.dispName = undefined;\n this.accountId = undefined;\n this.isLoggedIn = false;\n this.accountId = undefined;\n this.userId = undefined;\n this.stayLoggedIn = false;\n this.userPass = undefined;\n this.skuInfos = new Array();\n // this.skuInfos = undefined;\n this.isComponentLoaded = true;\n this.extId = undefined;\n this.extType = RwExtType.None;\n this.parentDomain = undefined;\n // this.isFedExSubDomain = false;\n // this.isReturningFedexManifest = false;\n // this.isOnTracSubDomain = false;\n this.orgId = undefined;\n this.orgs = [];\n this.adminEmail = \"\";\n if (this.avInfo) {\n this.avInfo.avUrl = undefined;\n this.avInfo.avType = undefined;\n this.avInfo.avInits = undefined;\n this.avInfo.avColor = undefined;\n }\n this.isDisp = false;\n this.isTeam = false;\n this.isSubTeam = false;\n this.m_hasActiveFlexSku = null;\n this.subDomain = null;\n this.isDataLoaded = false;\n this.isLoadedSites = false;\n this.isPro = false;\n\n this.isLoading = false;\n\n this.routes = new Array();\n this.sites = new Array();\n this.drivers = new Array();\n this.skeds = new Array();\n\n if (this.subTeamSpace) {\n this.subTeamSpace.subTeams = [] as RwSubTeam[];\n }\n\n if (this.plan) {\n this.plan.activeRoute = null;\n this.plan.openRoutes = new Array();\n this.plan.selectedPins = new Array();\n }\n\n RwPrefUtils.isLoggedIn = false;\n RwPrefUtils.highlightedTemplateThisSession = false;\n RwPrefUtils.lastRouteId = \"\";\n RwPrefUtils.flexOptInSelected = 0;\n\n this.lastSyncMS = 0;\n this.selectedRoute = null;\n\n thePlanSpace.startPin = null;\n thePlanSpace.clearPinSelections();\n thePlanSpace.multiMode = RwMultiMode.none;\n theStore.dispatch(\"selectedStop\", null).catch();\n\n RwEventBus.$emit(RwEvents.Logout);\n\n }\n\n\n //#endregion\n\n\n //#region Sync APIs\n\n pollDataCancelled = false;\n pollDriversCancelled = false;\n isSyncInProgress = false;\n\n syncDataEssential(lastRouteId: string): Promise {\n const SOURCE = \"RwGlobals.syncDataEssential\";\n const self = this;\n\n return RwTaskSync\n .syncEssential()\n .then(model => {\n\n this.routes = model.routes;\n this.drivers = model.drivers;\n this.skeds = model.skeds;\n this.teamDomain = model.teamDomain;\n this.plan.maxRouteSize = model.maxRouteSize;\n RwPrefUtils.maxRouteSize = model.maxRouteSize;\n //console.log(\"maxRouteSize\", this.plan.maxRouteSize);\n\n self.isDataLoaded = true;\n if (lastRouteId && !this.isReturningFedexManifest) {\n const route = this.findRoute(lastRouteId);\n if (route) {\n this.plan.openRoutes = this.routes.filter(route => RwPrefUtils.openRoutes.indexOf(route.routeId) > -1);\n if (RwPrefUtils.openRoutes.indexOf(route.routeId) === -1) RwPrefUtils.openRoutes = [route.routeId, ...RwPrefUtils.openRoutes];\n this.plan.openRoutes.forEach(r => this.plan.openRoute(r));\n self.plan.activeRoute = route;\n //self.isDataLoaded = true;\n } else {\n let gotRoutes = self.routes && self.routes.length > 0;\n if (gotRoutes) {\n this.routes.sort((r1, r2) => r2.finishTime.getTime() - r1.finishTime.getTime());\n let firstRoute = this.routes[0];\n if (firstRoute) {\n this.plan.activeRoute = firstRoute;\n self.getFullRoute(firstRoute)\n }\n }\n }\n }\n\n if (this.isReturningFedexManifest) {\n this.isReturningFedexManifest = false;\n }\n\n })\n .catch(err => {\n if (this.checkNotHandled(err)) {\n let errStr = \"undefined\";\n if (err.toString) {\n errStr = err.toString();\n } else if (err.message) {\n errStr = err.message;\n }\n if (errStr === \"Error: Request failed with status code 401\") {\n RwLog.warn(SOURCE, \"401 Error: \" + errStr);\n } else {\n RwLog.error(SOURCE, \"Unhandled Error: \" + errStr);\n }\n }\n });\n }\n\n\n syncDataSecondary(): void {\n const SOURCE = \"RwGlobals.syncDataSecondary\";\n const self = this;\n\n\n RwTaskSync\n .syncSecondary()\n .then(model => {\n //console.log(SOURCE, \"sites.length\", this.sites.length);\n setTimeout(() => this.sites = model.sites, 0)\n setTimeout(() => this.tasks = model.tasks, 10)\n })\n .catch(err => {\n //if (err && err.IsHandled == false) {\n if (self.checkNotHandled(err)) {\n let errStr = err.toString();\n if (errStr === \"Error: Request failed with status code 401\") {\n RwLog.warn(SOURCE, \"401 Error: \" + errStr);\n } else {\n RwLog.error(SOURCE, \"Unhandled Error: \" + errStr);\n }\n }\n });\n }\n\n // Backup check to make sure local storage userid === in mem userid (to prevent multiple login tabs)\n checkUserIdMatch(delay: number, interval: number) {\n let self = this;\n\n interval = interval || 60000;\n let firstRun = true;\n let runCount = 0;\n\n (function checkUserIdMatch() {\n if (self.isLoggedIn) {\n if (self.userId === self._inMemUserId || firstRun) {\n firstRun = false;\n setTimeout(checkUserIdMatch, interval);\n } else {\n self.logOut(true);\n router.push({name: RwPages.Login}).catch();\n }\n }\n\n })();\n }\n\n pollStatusInfo(delay: number, interval: number) {\n let self = this;\n\n interval = interval || 60000;\n let firstRun = true;\n let runCount = 0;\n\n (function getStatusLoop() {\n if (self.isLoggedIn && self.isDisp) {\n if (firstRun && delay != 0) {\n //RwLog.logConsole(\"team drv loc poll delay\", new Date().toTimeString());\n firstRun = false;\n setTimeout(getStatusLoop, delay);\n } else {\n if (self.pollDriversCancelled == false) {\n const timeSinceLastStatus = moment().diff(self.lastStatus, \"milliseconds\");\n //RwLog.consoleLog(\"pollStatusInfo\", `Secs since last status: ${timeSinceLastStatus/1000}`);\n if (self.IsTabActive || timeSinceLastStatus >= interval * 10) {\n //RwLog.consoleLog(\"pollStatusInfo\", `Performing org sync: ${self.IsTabActive ? 'Tab active' : timeSinceLastStatus/1000 + ' secs passed'}`);\n runCount++;\n //RwLog.warnConsole(\"team drv loc poll run\", runCount, new Date().toTimeString());\n self.getStatusInfo();\n }\n\n setTimeout(getStatusLoop, interval);\n } else {\n RwLog.consoleWarn(\"team drv loc poll job timeout\", new Date().toTimeString()\n );\n }\n }\n }\n })();\n }\n\n getStatusInfo() {\n\n const self = this;\n const SOURCE = \"RwGlobals.getStatusInfo\";\n const openIds = self.plan.openRoutes.map(r => r.routeId);\n\n if (openIds.length > 0) {\n //console.log(SOURCE, `openMatch = getRouteStatus: ${openIds}`);\n self.getSyncStatus(openIds);\n } else {\n //console.warn(SOURCE, \"SKIP: openIds empty\");\n }\n }\n\n\n getDriverInfo() {\n const self = this;\n // if (RwPrefUtils.showDataLayerDrivers) {\n RwTaskDriver.getDriverInfo()\n .then(drvrs => {\n self.mergeDrivers(drvrs);\n })\n .catch(err => {\n RwLog.consoleError(\"WTF: getDriverInfo Error: \" + err.toString());\n });\n }\n\n\n pollOrgData(delay: number, interval: number, timeout: number) {\n let self = this;\n let firstRun = true;\n let runCount = 0;\n interval = interval || 100;\n // RwLog.warnConsole(\"delay\", delay);\n // RwLog.warnConsole(\"timeout\", timeout);\n //RwLog.consoleWarn(\"pollOrgData interval\", interval);\n\n (function pollOrgRun() {\n if (!self.isLoggedIn) {\n return;\n }\n\n let routeId;\n let route = self.plan.activeRoute;\n if (route) {\n routeId = route.routeId;\n }\n\n if (firstRun && delay != 0) {\n //RwLog.logConsole(\"team poll delay\", new Date().toTimeString());\n firstRun = false;\n setTimeout(pollOrgRun, delay);\n } else {\n if (self.pollDataCancelled == false) {\n const timeSinceLastSync = moment().diff(self.lastSync, \"milliseconds\");\n //RwLog.consoleLog(\"pollOrgData\", `Secs since last org sync: ${timeSinceLastSync/1000}`);\n if (self.IsTabActive || timeSinceLastSync >= interval * 10) {\n //RwLog.consoleLog(\"pollOrgData\", `Performing org sync: ${self.IsTabActive ? 'Tab active' : timeSinceLastSync/1000 + ' secs passed'}`);\n runCount++;\n //RwLog.warnConsole(\"team poll run\", runCount, new Date().toTimeString());\n self.syncDelta(routeId);\n }\n\n setTimeout(pollOrgRun, interval);\n } else {\n //RwLog.warnConsole(\"poll job timeout\", new Date().toTimeString());\n }\n }\n })();\n }\n\n\n syncDelta(lastRouteId?: string): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.syncDelta\";\n\n //console.log(SOURCE, \"syncDelta\");\n\n if (this.gotUser && this.gotToken) {\n\n return new Promise(resolve => {\n\n let routeId: string;\n if (lastRouteId) {\n routeId = lastRouteId\n } else {\n if (this.plan.activeRoute) {\n routeId = this.plan.activeRoute.routeId;\n }\n }\n\n if (self.isSyncInProgress == false) {\n self.isSyncInProgress = true;\n\n RwTaskSync.syncDelta(routeId)\n .then(deltas => {\n //console.warn(SOURCE, \"syncDelta callback\", deltas);\n self.mergeDeltas(deltas);\n })\n .catch(err => {\n if ((err && err.isHandled) == false) {\n RwLog.error(SOURCE, `syncDataEssential Err: \\n${JSON.stringify(err)}`);\n }\n })\n .finally(function () {\n self.isSyncInProgress = false;\n resolve();\n });\n } else {\n resolve();\n }\n\n\n });\n\n }\n\n }\n\n\n mergeDeltas(deltas: RwModel) {\n const self = this;\n //console.log(\"RwGlobals.mergeDeltas\", deltas);\n\n if (deltas && deltas.isEmpty() == false) {\n\n self.mergeModel(deltas);\n //RwLog.consoleLog(\"getTeamDelta merged: \");\n\n let gotRouteDeltas = (deltas.routes && deltas.routes.length > 0) || (deltas.stops && deltas.stops.length > 0);\n if (gotRouteDeltas) {\n if (this.plan.activeRoute && this.plan.activeRoute.stops) {\n this.commitRoute();\n //console.error(\"mergeDeltas, commitRoute\")\n }\n }\n\n //let gotStopDeltas = (deltas.stops && deltas.stops.length > 0);\n // console.error(\"mergeDeltas gotStopDeltas, gotRouteDeltas\", gotStopDeltas, gotRouteDeltas)\n // //if (gotStopDeltas && !gotRouteDeltas) {\n // xFOCUS: This will cause a pin issue; uncomment to debug concurrent issue\n // if (gotStopDeltas) {\n // console.error(\"mergeDeltas commitStops\")\n // this.commitStops();\n // }\n\n //Consider Trigger for update Stops\n\n let gotSiteDeltas = (deltas.sites && deltas.sites.length > 0);\n if (gotSiteDeltas) {\n this.commitSites();\n }\n\n let gotTaskDeltas = (deltas.tasks && deltas.tasks.length > 0);\n if (gotTaskDeltas) {\n this.commitTasks();\n }\n\n }\n\n }\n\n\n mergeDeleteCommits(commitList: RwCommit[], deltaModel: RwModel) {\n let self = this;\n if (commitList) {\n commitList.forEach(t => {\n if (t && t.txn === RwTxnTypes.DELETE && t.code === 200) {\n switch (t.ntt) {\n\n case RwEntityTypes.Route:\n self.removeRouteById(t.eid);\n break;\n\n case RwEntityTypes.Stop:\n self.removeStopById(t.eid);\n break;\n\n case RwEntityTypes.History:\n self.removeHistById(t.eid);\n break;\n\n case RwEntityTypes.Sked:\n self.removeSkedById(t.eid);\n break;\n\n case RwEntityTypes.Site:\n self.removeSiteById(t.eid);\n break;\n\n case RwEntityTypes.Task:\n self.removeTaskById(t.eid);\n break;\n }\n }\n });\n }\n }\n\n\n mergeReassignment(reassignList: RwAssignment[]) {\n let self = this;\n if (reassignList) {\n reassignList.forEach(r => {\n if (r) {\n let rt = self.findRoute(r.rid);\n if (rt) {\n //xTODO: Assigning to itself???\n //rt.driverId = rt.driverId;\n }\n }\n });\n }\n }\n\n\n mergeModel(model: RwModel) {\n //Often this is used without being an actual sync API\n //this.lastSyncMS = model.lastSyncMS;\n this.mergeDeleteCommits(model.commitList, model);\n this.mergeHistory(model.history);\n this.mergeRoutes(model.routes);\n this.mergeSkeds(model.skeds);\n this.mergeSites(model.sites);\n this.mergeDrivers(model.drivers);\n this.mergeStops(model.stops);\n this.mergeTasks(model.tasks);\n this.mergeReassignment(this.reassignList);\n //this.updateBadges();\n }\n\n\n mergeHistory(deltas: RwHistory[]) {\n let self = this;\n if (deltas != null && deltas.length > 0) {\n deltas.forEach(function (hist) {\n let existing = self.findHistory(hist.histId);\n let isMarkedForDelete = hist.isDeleted;\n if (isMarkedForDelete) {\n // RwLog.logConsole(\"remove activity: \" + act.name)\n self.removeHist(existing);\n } else {\n if (existing != null) {\n // RwLog.logConsole(\"update existing act: \" + act.name)\n existing.fromHistory(hist);\n } else {\n // RwLog.logConsole(\"create new act: \" + act.name)\n hist.lastHash = Date.now();\n self.history.push(hist);\n }\n }\n });\n }\n }\n\n\n mergeRoutes(deltas: RwRoute[]) {\n let self = this;\n if (deltas != null && deltas.length > 0) {\n deltas.forEach(function (route) {\n let existing = self.findRoute(route.routeId);\n let isMarkedForDelete = route.isDeleted;\n if (isMarkedForDelete) {\n //RwLog.logConsole(\"remove route: \" + route.name)\n self.removeRoute(existing);\n } else {\n if (existing != null) {\n // RwLog.logConsole(\"update existing route: \" + route.name)\n existing.fromRoute(route);\n if (self.activeRoute && self.activeRoute.routeId === route.routeId) {\n self.activeRoute.fromRoute(route);\n }\n } else {\n route.lastHash = Date.now();\n self.routes.push(route);\n }\n }\n });\n }\n }\n\n\n mergeSites(deltas: RwSite[]) {\n let self = this;\n if (deltas != null && deltas.length > 0) {\n deltas.forEach(function (site) {\n let existing = self.findSite(site.siteId);\n let isMarkedForDelete = site.isDeleted;\n if (isMarkedForDelete) {\n //RwLog.logConsole(\"remove site: \" + site.name)\n self.removeSite(existing);\n } else {\n if (existing != null) {\n // RwLog.logConsole(\"update existing site: \" + site.name)\n existing.fromSite(site);\n } else {\n //RwLog.logConsole(\"create new site: \" + site.name)\n site.lastHash = Date.now();\n self.sites.push(site);\n }\n }\n });\n }\n }\n\n\n mergeSkeds(deltas: RwSked[]) {\n let self = this;\n if (deltas != null && deltas.length > 0) {\n deltas.forEach(function (sked) {\n let existing = self.findSked(sked.skedId);\n if (sked.markedForDelete) {\n //RwLog.logConsole(\"remove sked: \" + sked.name)\n self.removeSked(existing);\n } else {\n if (existing != null) {\n //RwLog.logConsole(\"update existing sked: \" + sked.name)\n existing.fromSked(sked);\n } else {\n //RwLog.logConsole(\"create new sked: \" + sked.name)\n sked.lastHash = Date.now();\n self.skeds.push(sked);\n }\n }\n });\n }\n }\n\n\n mergeDrivers(deltas: RwUser[]) {\n let self = this;\n if (deltas != null && deltas.length > 0) {\n deltas.forEach(function (driver) {\n let existing = self.findDriver(driver.userId);\n if (driver.markedForDelete) {\n //RwLog.logConsole(\"remove driver: \" + driver.name)\n self.removeDriver(existing.userId);\n } else {\n if (existing != null) {\n //RwLog.logConsole(\"update existing driver: \" + driver.userName)\n existing.fromDriver(driver);\n existing.lastHash = Date.now();\n } else {\n //RwLog.logConsole(\"create new driver: \" + driver.userName)\n driver.lastHash = Date.now();\n self.drivers.push(driver);\n }\n }\n });\n }\n }\n\n\n mergeStops(deltas: RwStop[]) {\n\n let route = this.plan.activeRoute;\n if (route != null && deltas != null && deltas.length > 0) {\n const adds = [] as RwStop[];\n const removes = [] as RwStop[];\n const dls = [] as RwStop[];\n deltas.filter(s => s.routeId === route.routeId).forEach(function (stop) {\n let existing = route.findStop(stop.stopId);\n let isMarkedForDelete = stop.markedForDelete;\n if (isMarkedForDelete) {\n if (existing) {\n //console.log(\"mergeStops removing stop: \" + stop.name);\n removes.push(existing)\n route.removeStopById(existing.stopId);\n }\n } else {\n if (existing != null) {\n //console.log(\"mergeStops updating stop: \" + stop.name);\n existing.fromStop(stop);\n dls.push(stop);\n } else {\n //console.log(\"mergeStops creating stop: \" + stop.name);\n route.addStop(stop);\n //route.stops.push(stop);\n adds.push(stop);\n }\n }\n });\n thePlanSpace.updateStopPins(adds, removes, dls);\n }\n }\n\n\n mergeTasks(deltas: RwStop[]) {\n //console.log(\"mergeTasks\");\n\n deltas.forEach(task => {\n let existing = this.tasks.find(t => t.stopId == task.stopId);\n let isMarkedForDelete = task.markedForDelete;\n if (isMarkedForDelete) {\n //console.log(\"removing task: \" + task.name);\n if (existing) {\n this.removeTask(task);\n }\n } else {\n if (existing != null) {\n //console.log(\"updating task: \" + task.name);\n existing.fromStop(task);\n } else {\n //console.log(\"creating task: \" + task.name);\n task.lastHash = Date.now();\n this.tasks.push(task);\n }\n }\n });\n\n }\n\n\n //#endregion Sync APIs\n\n\n //#region Sort APIs\n\n\n sortSites() {\n let self = this;\n\n switch (RwPrefUtils.siteSort) {\n case FavSortOrder.Color:\n this.sites.sort((siteA, siteB) => {\n if (siteA.priority === siteB.priority) {\n return 0;\n } else if (siteA.priority > siteB.priority) {\n return -1;\n }\n return 1;\n });\n break;\n\n case FavSortOrder.Name:\n this.sites.sort((siteA, siteB) => {\n return siteA.name.toLowerCase().localeCompare(siteB.name);\n });\n break;\n\n case FavSortOrder.LastCheckIn:\n this.sites.sort((siteA, siteB) => {\n if (siteA.checkDate > siteB.checkDate) {\n return -1;\n } else if (siteA.checkDate === siteB.checkDate) {\n return 0;\n }\n return 1;\n });\n break;\n }\n }\n\n\n sortHistory() {\n switch (RwPrefUtils.historySort) {\n case HistSortOrder.Date:\n this.history.sort((actA, actB) => {\n if (actA.startTime > actB.startTime) {\n return -1;\n } else if (actA.startTime === actB.startTime) {\n return 0;\n }\n return 1;\n });\n break;\n\n case HistSortOrder.Name:\n this.history.sort((actA, actB) => {\n return actA.name.localeCompare(actB.name, \"en\", {\n sensitivity: \"base\"\n });\n });\n break;\n\n case HistSortOrder.Driver:\n this.history.sort((actA, actB) => {\n if (actA.driverShortString === \"\" && actB.driverShortString !== \"\") {\n return 1;\n } else if (\n actA.driverShortString !== \"\" &&\n actB.driverShortString === \"\"\n ) {\n return -1;\n } else if (\n actA.driverShortString === \"\" &&\n actB.driverShortString === \"\"\n ) {\n return 0;\n }\n\n if (actA.driverShortString !== \"\" && actB.driverShortString !== \"\") {\n let dNameComp = actA.driverShortString.localeCompare(\n actB.driverShortString,\n \"en\",\n {sensitivity: \"base\"}\n );\n\n if (dNameComp === 0) {\n if (actA.startTime > actB.startTime) {\n return -1;\n } else if (actA.startTime === actB.startTime) {\n return 0;\n }\n return 1;\n } else {\n return dNameComp;\n }\n }\n });\n break;\n }\n }\n\n\n sortDrivers() {\n const self = this;\n\n switch (RwPrefUtils.driversSort) {\n case DriverSortOrder.Name:\n this.drivers.sort((driverA, driverB) => {\n let drvALegacy = driverA.userName.indexOf(\"@\") !== -1;\n let drvBLegacy = driverB.userName.indexOf(\"@\") !== -1;\n\n if (drvALegacy && !drvBLegacy) {\n return 1;\n } else if (!drvALegacy && drvBLegacy) {\n return -1;\n }\n\n if (!driverA.name && driverB.name) {\n return 1;\n } else if (driverA.name && !driverB.name) {\n return -1;\n } else if (!driverA.name && !driverB.name) {\n return 0;\n }\n return driverA.name.toLowerCase().localeCompare(driverB.name.toLowerCase());\n });\n break;\n\n case DriverSortOrder.LastUpdated:\n this.drivers.sort((driverA, driverB) => {\n if (driverA.lastUpdated > driverB.lastUpdated) {\n return -1;\n }\n return 1;\n });\n break;\n }\n }\n\n\n sortSkeds() {\n let self = this;\n\n switch (RwPrefUtils.skedsSort) {\n case SchedSortOrder.Name:\n this.skeds.sort((schedA, schedB) => {\n return schedA.name.toLowerCase().localeCompare(schedB.name.toLowerCase());\n });\n break;\n\n case SchedSortOrder.Priority:\n this.skeds.sort((schedA, schedB) => {\n if (schedA.priority > schedB.priority) {\n return -1;\n } else if (schedA.priority === schedB.priority) {\n return 0;\n }\n return 1;\n });\n break;\n }\n }\n\n\n //#endregion Sort APIs\n\n\n //#region Find APIs\n\n\n findRoute(routeId: string): RwRoute {\n let found: RwRoute;\n if (routeId && routeId != \"\" && this.routes && this.routes.length > 0) {\n found = this.routes.find(r => r.routeId == routeId);\n }\n return found;\n }\n\n\n findDriver(driverId: string): RwUser {\n let found: RwUser;\n if (driverId && driverId != \"\" && this.drivers && this.drivers.length > 0) {\n found = this.drivers.find(d => d.userId === driverId);\n }\n if (!found && driverId == this.userId) {\n found = RwUser.DispatcherDriver;\n }\n return found;\n }\n\n\n findStop(stopId: string): RwStop {\n let found: RwStop;\n if (stopId && stopId != \"\") {\n if (this.activeRoute) {\n let stops = this.activeRoute.stops;\n if (stops && stops.length > 0) {\n found = stops.find(s => s.stopId === stopId);\n }\n }\n }\n return found;\n }\n\n\n // findStop(stopId: string): RwStop {\n // let found: RwStop;\n // if (stopId && stopId != \"\") {\n // if (this.stops && this.stops.length > 0) {\n // found = this.stops.find(s => s.stopId === stopId);\n // }\n // }\n // return found;\n // }\n\n\n findHistory(histId: string): RwHistory {\n let found: RwHistory;\n if (histId && histId != \"\") {\n if (this.history && this.history.length > 0) {\n found = this.history.find(h => h.histId == histId)\n }\n }\n return found;\n }\n\n\n findSite(siteId: String): RwSite {\n let found: RwSite;\n if (this.sites && this.sites.length > 0) {\n found = this.sites.find(s => s.siteId == siteId)\n }\n return found;\n }\n\n\n findSked(skedId: String): RwSked {\n let found: RwSked;\n if (this.skeds && this.skeds.length > 0) {\n found = this.skeds.find(s => skedId == s.skedId);\n }\n return found;\n }\n\n\n //#endregion FIND APIs\n\n\n //#region Route APIs\n\n getFullRoute(route: RwRoute, skipCommit = false) {\n const self = this;\n const SOURCE = \"RwGlobals.getFullRoute\";\n if (this.token && this.token != RwConstants.EmptyGuid) {\n RwTaskRoutes.getRoute(route)\n .then(updatedRoute => {\n //console.warn(SOURCE, \"callback success skipCommit\", skipCommit);\n\n if (!updatedRoute.isDeleted) {\n if (!skipCommit) {\n route.stops = [...updatedRoute.stops];\n }\n } else {\n //xFOCUS: Handle deleted route\n //RwLog.logConsole(\"remove route: \" + route.name)\n self.removeRoute(updatedRoute);\n self.commitRoutes();\n }\n\n //self.commitRoute();\n });\n } else {\n RwLog.warn(SOURCE, `Invalid token:${this.token}`);\n let logErr = new RwError(400, true, \"Invalid reset link\");\n return Promise.reject(logErr);\n }\n\n }\n\n getFullRouteCallback(route: RwRoute, skipCommit = false) {\n const self = this;\n const SOURCE = \"RwGlobals.getFullRouteCallback\";\n return RwTaskRoutes.getRoute(route)\n .then(updatedRoute => {\n //console.warn(SOURCE, \"callback success skipCommit\", skipCommit);\n\n if (!updatedRoute.isDeleted) {\n if (!skipCommit) {\n route.stops = [...updatedRoute.stops];\n }\n\n return updatedRoute;\n } else {\n //xFOCUS: Handle deleted route\n //RwLog.logConsole(\"remove route: \" + route.name)\n self.removeRoute(updatedRoute);\n self.commitRoutes();\n return null;\n }\n\n //self.commitRoute();\n })\n .catch(err => {\n return null;\n });\n\n }\n\n\n getSyncStatus(routeIds: string[]) {\n const self = this;\n const SOURCE = \"RwGlobals.getSyncStatus\";\n const now = Date.now();\n const activeRouteId = this.activeRoute ? this.activeRoute.routeId : \"\";\n const activeDriverId = this.activeRoute ? this.activeRoute.driverId : \"\";\n\n let gotUserId = RwPrefUtils.userId && RwPrefUtils.userId.length > 0;\n let gotActiveRoute = activeRouteId && activeRouteId.length > 0;\n let gotRoutes = routeIds && routeIds.length > 0;\n let routeIdsNotFound: string[] = [];\n let routesNotFound: RwRoute[] = [];\n if (gotUserId && gotActiveRoute && gotRoutes) {\n\n //console.log(SOURCE);\n\n RwTaskSync\n .syncStatus(activeRouteId, routeIds)\n .then(deltas => {\n //console.log(SOURCE, \"callback\", deltas);\n if (deltas) {\n self.mergeDeltas(deltas);\n\n let syncStatus = deltas.syncStatus;\n if (syncStatus && syncStatus.length > 0) {\n syncStatus.forEach(status => {\n let routeId = status.routeId;\n let route = self.routes.find(sr => sr.routeId == routeId);\n if (route) {\n //console.log(SOURCE, \"got route:\", route.name);\n route.stopCountActive = status.activeCount;\n route.stopCountComplete = status.completeCount;\n route.statusCode = status.statusCode;\n route.assignCode = status.assignCode;\n //route.name = status.routeName;\n\n //console.log(SOURCE, \"routeName\", status.routeName);\n // console.log(SOURCE, \"driverLU\", status.driverLU);\n // console.log(SOURCE, \"driverLat\", status.driverLat);\n // console.log(SOURCE, \"driverLng\", status.driverLng);\n\n let driverId = status.driverId;\n let driver = self.drivers.find(d => d.userId === driverId);\n if (driver) {\n //console.log(SOURCE, \"got driver:\", driver.name);\n if (status.driverLU.getTime() > driver.lastHash) {\n driver.lat = status.driverLat;\n driver.lng = status.driverLng;\n driver.coordLU = status.driverLU;\n driver.lastHash = now;\n\n if (activeDriverId === driverId) {\n self.commitRoute();\n }\n\n } else {\n //console.log(SOURCE, \"driver up to date\");\n }\n }\n } else {\n RwLog.consoleLog(SOURCE, `route not found ${status.routeId}`);\n routeIdsNotFound.push(routeId);\n // self.deleteRoutes([route.routeId]);\n // syncStatus.splice(syncStatus.indexOf(status), 1);\n }\n });\n // routeIdsNotFound.forEach(id => {\n // const route = (this.routes.find(route => route.routeId == id))\n // if (route){\n // routesNotFound.push(route);\n // }else{\n // //log\n // }\n // });\n if (routeIdsNotFound.length > 0) {\n thePlanSpace.closeRoutesNotFound(routeIdsNotFound);\n }\n self.commitRoutes();\n }\n }\n\n //this.activeRoute.stops = fullRoute.stops;\n //console.warn(\"openClick complete\", statusList);\n })\n .catch(err => {\n\n if (this.checkNotHandled(err)) {\n const message = err.message ? err.message : JSON.stringify(err)\n RwLog.error(SOURCE, `Unhandled: ${message}`);\n }\n });\n }\n }\n\n\n get routes(): RwRoute[] {\n return theStore.getters.routes;\n }\n\n set routes(routes: RwRoute[]) {\n theStore.dispatch(\"routes\", routes).catch();\n }\n\n\n addRoute(route: RwRoute) {\n const index = this.routes.findIndex(r => r.routeId == route.routeId);\n if (route && index == -1) {\n this.routes.push(route);\n }\n }\n\n routeStartLocationRelo(lat: number, lng: number): Promise {\n let self = this;\n let SOURCE = \"RwGlobals.routeStartLocationRelo\"\n return new Promise(function (resolve, reject) {\n self.showReloPicker(\"Choose Start Location\", lat, lng, true)\n .then((coord) => {\n resolve([coord.lat, coord.lng])\n })\n .catch(err => {\n reject([null, null])\n\n })\n });\n\n }\n\n defaultStartRelo(lat: number, lng: number, enableSearch = false): Promise {\n let self = this;\n let SOURCE = \"RwGlobals.defaultStartRelo\"\n return new Promise(function (resolve, reject) {\n self.showReloPicker(\"Edit Default Start Location\", lat, lng, enableSearch)\n .then((coord) => {\n resolve([coord.lat, coord.lng])\n })\n .catch(err => {\n reject([null, null])\n\n })\n });\n\n }\n\n\n addRouteDB(route: RwRoute, stack: string[] = [], withStops?: boolean): Promise {\n const SOURCE = \"RwGlobals.addRouteDB\";\n let self = this;\n\n return new Promise(function (resolve, reject) {\n RwTaskRoutes\n .addRoute(route, withStops)\n .then(deltas => {\n //console.log(\"RwGlobals.addRouteDB callback\");\n self.mergeDeltas(deltas);\n let isCommitted = deltas.isCommitted(route.routeId, RwTxnTypes.POST);\n if (isCommitted) {\n resolve(route);\n } else if (deltas.gotConflicts) {\n RwLog.error(SOURCE, `Got Conflicts: Not Committed; \\n\\nRoute:\\n${JSON.stringify(route)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n reject(new Error(\"Route not added due to conflict, please try again\"));\n } else {\n RwLog.error(SOURCE, `Not Committed; \\n\\nRoute:\\n${JSON.stringify(route)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n reject(new Error(\"Error adding route\"));\n }\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n let status = !!err.Code ? err.Code : err.status;\n // If error is RwError leave as it is, if it's Error, get message, if it's other object, stringify\n const message = !(err instanceof RwError) ?\n err.message ? err.message : JSON.stringify(err)\n : err;\n if (status === 403) {\n RwLog.warn(SOURCE, `Forbidden: ${message}`);\n } else {\n try {\n RwLog.error(SOURCE, `Unhandled: ${message}\n\n Route: ${route.name}\n Route ID: ${route.routeId}\n WithStops: ${withStops ? 'true' : 'false'}\n Stack:\\n${JSON.stringify(stack)}`);\n } catch (e) {\n RwLog.error(SOURCE, `Unhandled: ${message}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n }\n }\n }\n reject(err);\n });\n });\n }\n\n\n updateRoute(route: RwRoute) {\n theStore.dispatch(\"setRoute\", route).catch();\n }\n\n\n updateRouteDB(route: RwRoute, setFocus: boolean, withStops = false, touchStops = false, skipCommit = false): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.updateRouteDB\"\n\n //console.log(SOURCE);\n\n return new Promise(function (resolve, reject) {\n RwTaskRoutes\n .updateRoute(route, withStops, touchStops)\n .then(deltas => {\n\n //console.log(SOURCE, \"updateRoute callback\", route.routeId, self.activeRoute.routeId);\n\n if (self.activeRoute && self.activeRoute.routeId === route.routeId) {\n self.lastRouteDeltaMS = Date.now();\n //console.log(\"updateRouteDB\", self.lastDelta);\n }\n\n // console.log(\"updateRouteDB\", \"mergeDeltas\");\n // self.mergeDeltas(deltas);\n\n let isCommitted = true; //we can assume on single ops that 200 == success\n //let isCommitted = deltas.isCommitted(route.routeId, RwTxnTypes.PUT);\n //console.log(\"updateRouteDB, isCommitted\", isCommitted);\n if (isCommitted) {\n\n //save this as our last position\n RwPrefUtils.lastLat = route.lat;\n RwPrefUtils.lastLng = route.lng;\n\n if (self.plan.activeRoute) {\n self.plan.activeRoute.lastHash = Date.now();\n } else {\n //REVIEW: Can't assume route is found\n //self.findRoute(route.routeId).lastHash = Date.now();\n route.lastHash = Date.now();\n let routeFound = self.findRoute(route.routeId);\n if (routeFound) {\n routeFound.lastHash = Date.now();\n } else {\n RwLog.warn(SOURCE, `Route NOT FOUND! routeId${route.routeId}`);\n }\n }\n if (setFocus) self.targetFocusId = route.routeId;\n if (!skipCommit) {\n // console.log(\"RwGlobals.updateRouteDB\", \"commitRoute\")\n self.commitRoute();\n }\n resolve(isCommitted);\n } else {\n if (deltas.gotConflicts) {\n reject(new Error(\"Route not updated due to conflict, please try again.\"));\n } else {\n reject(new Error(\"Error updating route\"));\n }\n }\n\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n let status = !!err.Code ? err.Code : err.status;\n let msg = JSON.stringify(err);\n if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\")) ||\n err.error === \"Network Error\") {\n RwLog.warn(SOURCE, `Network Error: ${msg}`);\n } else if (status === 403) {\n RwLog.warn(SOURCE, `Forbidden: ${msg}`);\n } else {\n RwLog.error(SOURCE, `Unhandled: ${msg}`);\n }\n }\n reject(err);\n });\n });\n }\n\n\n copyRoute(route: RwRoute, copyType: RwRouteCopyType, stack: string[] = [], newName?: string): Promise {\n const self = this;\n const SOURCE = 'RwGlobals.copyRoute';\n return new Promise(function (resolve, reject) {\n\n //Validate input; Logs show route == null\n if (route) {\n RwTaskRoutes\n .getRouteStandalone(route)\n .then(fullRoute => {\n let clone = fullRoute.copy(copyType);\n\n for (let i = 0; i < clone.stops.length; i++) {\n let stop = clone.stops[i];\n stop.routeId = clone.routeId;\n stop.stopId = RwSysUtils.guidNew();\n if (self.showProofOfDelivery)\n {\n stop.addOns.stopId = stop.stopId;\n stop.addOns.addOnsId = null;\n }\n }\n\n clone.name = (!newName) ? route.name + \" - Copy\" : newName;\n\n let withStops = false;\n switch (copyType) {\n case 0:\n withStops = true;\n break;\n\n case 1: {\n withStops = true;\n clone.stops = clone.stops.filter(s => s.isComplete === false);\n break;\n }\n case 2: {\n withStops = false;\n break;\n }\n }\n //Moved CopyRoute >> RwGlobals\n if (clone.name) {\n self.addRouteDB(clone, [...stack, SOURCE], withStops)\n .then(savedClone => {\n self.addRoute(savedClone);\n self.showSnack(`Route Copied to ${savedClone.name}`, \"success\");\n resolve(savedClone);\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n const errText = JSON.stringify(err);\n const cloneJson = JSON.stringify(clone.toJsonWithAllStops());\n self.showSnack(`Route Copy Failed: ${err.description}`, \"error\");\n RwLog.error(SOURCE, `addRouteDB withStops:${withStops} \\n\\nClone:\\n${cloneJson} \\n\\nError:\\n${errText}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n }\n reject(err);\n });\n } else {\n self.showSnack(`Route Name Undefined, please refresh and try again.`, \"error\");\n }\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n const errDetails = JSON.stringify(err);\n const routeJson = JSON.stringify(route.toJsonWithAllStops());\n RwLog.error(SOURCE, `Unhandled getRoute: copyType:${copyType}, newName:${newName} \\n\\nRoute:\\n${routeJson}\n \\n\\nError:\\n${errDetails}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n\n }\n reject(err);\n });\n\n } else {\n const routeText = route!! ? JSON.stringify(route.toJsonWithAllStops()) : \"missing\";\n RwLog.error(SOURCE, `Unhandled: copyType:${copyType}, newName:${newName} \\n\\nRoute:\\n${routeText} `);\n reject(new RwError(400, false));\n }\n\n });\n }\n\n\n removeRouteById(routeId: string) {\n if (routeId && routeId !== \"\") {\n let route = this.routes.find(r => r.routeId === routeId);\n if (route) {\n this.removeRoute(route);\n }\n }\n }\n\n\n removeRoute(route: RwRoute) {\n if (route != null) {\n let index = this.routes.indexOf(route, 0);\n if (index > -1) {\n this.routes.splice(index, 1);\n }\n } else {\n RwLog.consoleError(\"route == null\");\n }\n }\n\n\n assignRoute(route: RwRoute): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.assignRoute\";\n\n return new Promise(function (resolve) {\n\n //console.log(SOURCE);\n\n let initDriverId = route.driverId;\n let initAssignCode = route.assignCode;\n self.selectedRoute = route;\n\n //console.log(SOURCE, \"showAssignPicker\");\n\n self\n .showAssignPicker(route)\n .then(selectedRoute => {\n //console.log(SOURCE, \"Callback: showAssignPicker\", selectedRoute);\n if (selectedRoute) {\n\n //Check if the route has changed\n let gotDriverDelta = initDriverId != selectedRoute.driverId;\n let gotAssignDelta = initAssignCode != selectedRoute.assignCode;\n let gotDeltas = gotDriverDelta || gotAssignDelta;\n if (gotDeltas) {\n //console.warn(\"onAssignPick assignCode, driverId\", selectedRoute.assignCode, selectedRoute.driverId);\n self\n .updateRouteAssignment(selectedRoute, initAssignCode, initDriverId)\n .then(isUpdated => {\n route.driverId = selectedRoute.driverId;\n route.assignCode = selectedRoute.assignCode;\n //console.warn(\"onAssignPick assignCode, driverId\", route.assignCode, route.driverId);\n resolve(isUpdated)\n })\n } else {\n resolve(false)\n }\n } else {\n resolve(false)\n }\n })\n });\n }\n\n\n private updateRouteAssignment(route: RwRoute, oldAssignCode: RwRouteAssignCodes, oldDriverId: string): Promise {\n const self = this;\n const newDriverId = route.driverId;\n const newAssignCode = route.assignCode;\n\n return new Promise(function (resolve) {\n\n let driver = self.drivers.find(u => u.userId === newDriverId);\n if (route && route.routeId && driver) {\n let gotDriverDelta = newDriverId != oldDriverId;\n let gotAssignDelta = newAssignCode != oldAssignCode;\n if (gotDriverDelta || gotAssignDelta) {\n\n let isSelfy = newDriverId === self.userId;\n if (gotDriverDelta && !gotAssignDelta) {\n route.assignCode = isSelfy ? RwRouteAssignCodes.assigned : RwRouteAssignCodes.pending;\n }\n\n //console.log(\"assignRoute: isSelfy, driver.userId, self.userId\", isSelfy, driver.userId, self.userId);\n let status = new RwSyncStatus();\n status.routeId = route.routeId;\n status.statusCode = route.statusCode;\n status.assignCode = route.assignCode;\n status.driverId = oldDriverId;\n status.targetDriverId = route.driverId;\n //console.log(\"assignRoute status: driverId, assign\", status.assignCode, status.targetDriverId);\n\n RwTaskRoutes.setRouteAssignment(status)\n .then(respList => {\n\n //console.log(\"setRouteAssignment SUCCESS\", respList);\n route.assignCode = status.assignCode;\n route.driverId = status.targetDriverId;\n route.lastHash = Date.now();\n self.commitRoute();\n resolve(true)\n\n //Check if the drivers received their messages\n if (respList) {\n if (respList && respList.length > 0) {\n let undelivered = respList.filter(m => m.code !== 200);\n if (undelivered.length > 0) {\n\n // this.drivers.forEach(d => {\n // console.log(\"\\t driverTarget\", d.userId, d.name, d.userName, d);\n // })\n\n undelivered.forEach(m => {\n //console.log(\"not delivered\", m);\n let driverTarget = self.drivers.find(d => d.userId === m.userId);\n if (driverTarget) {\n //console.log(\"driverTarget\", m.userId, driverTarget.name, driverTarget.userName, driverTarget);\n let msgDriver = `${driverTarget.userName} (${driverTarget.name})`;\n let msgAssign = m.pushType == 0 ? \"assigned\" : \"reassigned\";\n let msg = `Push message not delivered to ${msgAssign} driver: ${msgDriver}.`\n self.showSnack(msg, \"warning\")\n }\n })\n }\n }\n } else {\n RwLog.consoleError(\"assignRoute not updated\");\n }\n\n })\n .catch(err => {\n //console.error(\"setRouteAssignment\", err)\n route.driverId = oldDriverId;\n route.assignCode = oldAssignCode;\n resolve(false)\n self.showSnack(\"Update Route Status Failed\", \"error\");\n })\n } else {\n resolve(false)\n //console.log(\"picked driver already assigned. no action needed\");\n }\n } else {\n resolve(false)\n RwLog.consoleError(\"WTF: route | driver == null\", route, driver);\n }\n\n });\n\n }\n\n\n onRouteStatus(routeUpdate: RwRoute) {\n const self = this;\n\n self\n .showStatusPicker(routeUpdate.name, routeUpdate.statusCode)\n .then(newStatus => {\n //console.log(\"onRouteStatus showStatusPicker callback\", newStatus);\n let statusUpdate = new RwSyncStatus();\n statusUpdate.routeId = routeUpdate.routeId;\n statusUpdate.statusCode = newStatus;\n statusUpdate.assignCode = routeUpdate.assignCode;\n statusUpdate.driverId = routeUpdate.driverId;\n RwTaskRoutes.setRouteStatusInfo(statusUpdate)\n .then(() => {\n routeUpdate.statusCode = statusUpdate.statusCode;\n routeUpdate.invalidateCache();\n //console.warn(\"status update to:\", status.status, route.name);\n });\n\n });\n }\n\n\n confirmAndDeleteRoute(routeUpdate: RwRoute): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.deleteRoute\";\n\n //console.warn(\"onRouteDelete\", route.name);\n\n return new Promise(function (resolve, reject) {\n if (routeUpdate) {\n\n self\n .showConfirmDialog(`Delete Route: ${routeUpdate.name}`, `Are you sure you want to delete this route?`)\n .then(isConfirmed => {\n //console.warn(\"onRouteDelete isConfirmed\", isConfirmed);\n if (isConfirmed) {\n let ids = [routeUpdate.routeId];\n self\n .deleteRoutes(ids)\n .then(() => {\n self.removeRoute(routeUpdate);\n self.commitRoutes();\n\n if (self.isDisp) {\n let isSelfy = routeUpdate.driverId === self.userId;\n if (!isSelfy) {\n self.pushUpdateToDriver(routeUpdate)\n }\n }\n\n self.showSnack(\"Route Deleted\", \"success\");\n resolve(true);\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n self.showSnack(`Route Delete Failed: ${err}`, \"error\");\n }\n reject(err);\n });\n\n }\n })\n .catch(err => {\n RwLog.consoleError(SOURCE, \"Unhandled err: \", err.toString());\n });\n } else {\n RwLog.consoleError(SOURCE, \"WTF: NO ROUTE\");\n reject(\"NO ROUTE\");\n }\n });\n }\n\n\n confirmAndDeleteRoutes(routeIds: string[]): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.confirmAndDeleteRoutes\";\n\n return new Promise(function (resolve, reject) {\n if (routeIds) {\n routeIds = [...new Set(routeIds)];\n let count = routeIds.length;\n let targetName = count == 1 ? \"Route\" : \"Routes\";\n let title = `Delete: ${count} ${targetName}`;\n let body = (count == 1) ? \"Are you sure you want to delete this route? \" : \"Are you sure you want to delete these routes? \";\n self.showConfirmDialog(title, body)\n .then(onConfirm => {\n if (onConfirm) {\n self.deleteRoutes(routeIds)\n .then(res => {\n let isCommitted = res.length == count;\n if (isCommitted) {\n self.showSnack(`${count} ${targetName} deleted`, \"success\");\n } else {\n self.showSnack(`Not all routes could be deleted due to conflict.`, \"warning\");\n }\n resolve(isCommitted);\n })\n .catch(err => {\n reject(err);\n //RwLog.error(SOURCE, `Unhandled: ${err}`);\n self.showSnack(`Delete Failed. Please try again later`, \"error\");\n });\n } else {\n resolve(false);\n }\n })\n\n } else {\n reject(new Error(\"routeIds == null\"));\n }\n });\n }\n\n\n deleteRoutes(routeIds: string[]): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n RwTaskRoutes\n .deleteRoutes(routeIds)\n .then(result => {\n\n self.mergeDeltas(result);\n let commits = result.findCommits(RwEntityTypes.Route, RwTxnTypes.DELETE);\n let commitIds = commits.map(c => c.eid);\n resolve(commitIds);\n\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n\n\n confirmAndArchiveRoute(routeUpdate: RwRoute) {\n const self = this;\n const SOURCE = \"RwGlobals.onRouteArchive\";\n this.selectedRoute = routeUpdate;\n //console.log(SOURCE, route.name);\n\n return new Promise(function (resolve, reject) {\n if (routeUpdate) {\n self\n .showConfirmDialog(`Archive Route: ${routeUpdate.name}`, `Are you sure you want to archive this route?`)\n .then(isConfirmed => {\n //console.log(SOURCE, \"showConfirmDialog isConfirmed\", isConfirmed);\n if (isConfirmed) {\n let ids = [routeUpdate.routeId];\n self.archiveRoutes(ids)\n .then((isArchived) => {\n if (isArchived) {\n\n if (self.isDisp) {\n let isSelfy = routeUpdate.driverId === self.userId;\n if (!isSelfy) {\n self.pushUpdateToDriver(routeUpdate)\n }\n }\n\n self.showSnack(\"Route Archived\", \"success\");\n } else {\n self.showSnack(\"Route Archive Failed. Please try again later.\", \"error\");\n }\n resolve(true);\n })\n }\n })\n .catch(err => {\n RwLog.consoleError(SOURCE, \"Unhandled err: \", err.toString());\n });\n } else {\n RwLog.consoleError(SOURCE, \"WTF: NO ROUTE\");\n reject(\"NO ROUTE\");\n }\n });\n\n }\n\n copyRouteDB(route: RwRoute): Promise {\n let self = this;\n let SOURCE = \"RwGlobals.copyRouteDB\";\n return new Promise(function (resolve, reject) {\n // self.show\n\n });\n }\n\n\n confirmAndChangeRouteStatus(route: RwRoute): Promise {\n const self = this;\n let SOURCE = \"RwGlobals.confirmAndChangeRouteStatus\";\n\n return new Promise(function (resolve, reject) {\n self.showStatusPicker(route.name, route.statusCode)\n .then(status => {\n route.statusCode = status;\n self.updateRouteDB(route, false, false, false,)\n .then(() => {\n self.showSnack(\"Status updated\", \"success\")\n })\n .catch(err => {\n SOURCE += \": updateRouteDB\";\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n this.globals.showSnack(\"Failed to Update Status\", \"error\");\n });\n resolve(true);\n })\n .catch(err => {\n SOURCE += \": showStatusPicker\";\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n reject(false);\n })\n });\n }\n\n confirmAndArchiveRoutes(routeIds: string[]): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.confirmAndArchiveRoutes\";\n\n return new Promise(function (resolve, reject) {\n if (routeIds) {\n routeIds = [...new Set(routeIds)];\n let count = routeIds.length;\n let targetName = count == 1 ? \"Route\" : \"Routes\";\n let title = `Archive: ${count} ${targetName}`;\n let body = (count == 1) ? \"Are you sure you want to archive this route? \" : \"Are you sure you want to archive these routes? \";\n self.showConfirmDialog(title, body)\n .then(onConfirm => {\n if (onConfirm) {\n self.archiveRoutes(routeIds)\n .then((isArchived) => {\n if (isArchived) {\n self.showSnack(`${count} ${targetName} archived`, \"success\");\n } else {\n self.showSnack(`Route Archive Failed. Please try again later.`, \"error\");\n }\n resolve(isArchived);\n })\n } else {\n resolve(false);\n }\n })\n\n } else {\n reject(new Error(\"routeIds == null\"));\n }\n });\n }\n\n\n archiveRoutes(routeIds: string[]): Promise {\n let self = this;\n return new Promise(function (resolve) {\n\n RwTaskRoutes.archiveRoutes(routeIds)\n .then(() => {\n routeIds.forEach(id => {\n self.routes.splice(self.routes.indexOf(self.findRoute(id)), 1);\n });\n //console.warn(\"archiveRoutes commitRoutes\");\n self.commitRoutes();\n resolve(true);\n })\n .catch(err => {\n resolve(false);\n })\n });\n }\n\n\n mergeRoute(routeIds: string[]): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n if (routeIds.length > 0) {\n self.showConfirmDialog(\"Merge \" + routeIds.length.toString() + \" Routes\", 'Create a new route with all non-checked in stops.')\n .then(isConfirmed => {\n if (isConfirmed) {\n RwTaskRoutes.mergeRoutes(routeIds)\n .then(stops => {\n let newRT = new RwRoute();\n newRT.accountId = self.accountId;\n newRT.routeId = stops[0].routeId;\n newRT.stops = stops;\n newRT.isDynLoc = true;\n newRT.isHardStart = false;\n newRT.name = \"Merged Route \" + new Date().toISOString().substr(0, 10);\n newRT.address = \"\";\n newRT.lat = 0;\n newRT.lng = 0;\n newRT.driverId = self.dispatcher.userId;\n newRT.note = \"\";\n newRT.travelMode = \"driving\";\n RwTaskRoutes.addRoute(newRT, true)\n .then(() => {\n self.routes.push(newRT);\n self.showSnack(\"Routes Merged Successfully\", \"success\");\n })\n .catch(() => {\n self.showSnack(\"Failed to add merged route.\", \"error\");\n })\n\n })\n .catch(() => {\n self.showSnack(\"Failed to merge routes\", \"error\");\n })\n }\n })\n\n } else {\n reject(new Error(\"No route found\"))\n }\n\n })\n\n }\n\n\n //#endregion\n\n\n //#region Stop APIs\n\n multiCopy(srcRoute: RwRoute, stops: RwStop[]): Promise {\n const self = this;\n //console.log(\"globals.multiCopy srcId\", srcId);\n\n return new Promise(resolve => {\n let srcId = srcRoute.routeId;\n self\n .showRoutePicker(srcId)\n .then(res => {\n if (res) {\n\n let ids = stops.map(s => s.stopId);\n let tarId = res.tarRouteId;\n let isMove = res.isMoveOp;\n //console.log(\"RwGlobals.multiCopy callback srcId, tarId, isMove\", srcId, tarId, isMove);\n\n this\n .multiStopCopyDB(ids, srcId, tarId, isMove)\n .then(isCommitted => {\n if (isCommitted) {\n self.showSnack(`Stops ${isMove ? \"Moved\" : \"Copied\"} Successfully`, \"success\");\n stops.forEach(stop => {\n if (isMove) {\n //stop.routeId = tarId;\n //stop.lastHash = Date.now();\n srcRoute.removeStop(stop);\n }\n //stop.lastHash = Date.now();\n //console.log(\"RwGlobals.multiSked stop\", stop.name, stop.priority, stop.openTime, stop.closeTime);\n });\n\n self.commitRoute();\n resolve(true);\n\n let tarRoute = self.findRoute(tarId);\n if (tarRoute) {\n if (res.isNew) {\n tarRoute.lat = srcRoute.lat;\n tarRoute.lng = srcRoute.lng;\n self.updateRouteDB(tarRoute, true)\n .then(commited => {\n if (commited) self.plan.openRouteInPlanner(tarRoute)\n });\n } else {\n self.plan.openRouteInPlanner(tarRoute);\n }\n }\n } else {\n resolve(false);\n self.showSnack(\"Move/Copy Update failed\", \"error\");\n }\n })\n .catch(err => {\n resolve(false);\n self.showSnack(\"Move/Copy Update failed\", \"error\");\n });\n }\n });\n\n\n });\n\n\n }\n\n\n multiSked(isTasks: boolean, stops: RwStop[]): Promise {\n const self = this;\n\n //Set initVals if all all stops have value in common.\n let firstStop = stops[0];\n let firstPri = firstStop.priority;\n let firstStart = firstStop.openTime;\n let firstFinish = firstStop.closeTime;\n let samePri = stops.every(s => s.priority === firstPri);\n let sameStart = stops.every(s => s.openTime === firstStart);\n let sameFinish = stops.every(s => s.closeTime === firstFinish);\n let defPri = samePri ? firstPri : undefined;\n let defStart = sameStart ? firstStart : undefined;\n let defFinish = sameFinish ? firstFinish : undefined;\n\n if (stops.length === 1 && defPri && !defStart && !defStart) {\n defPri = undefined;\n }\n\n return new Promise(resolve => {\n\n let ids = stops.map(s => s.stopId);\n\n self\n .showSkedPicker(defPri, defStart * 60000, defFinish * 60000)\n .then(skedPick => {\n if (skedPick) {\n //console.log(\"RwGlobals.multiSked skedPick\", skedPick.priority, skedPick.timeStart, skedPick.timeFinish);\n let openMins = skedPick.timeStart / 60000;\n let closeMins = skedPick.timeFinish / 60000;\n let skedId = skedPick.skedId;\n //console.log(\"RwGlobals.multiSked skedPick\", skedPick.priority, openMins, closeMins);\n\n this\n .multiSkedDB(isTasks, ids, skedPick.skedId, skedPick.priority, openMins, closeMins)\n .then(isCommitted => {\n if (isCommitted) {\n self.showSnack(\"Scheduled Time Updated\", \"success\");\n stops.forEach(stop => {\n stop.priority = skedPick.priority;\n stop.openTime = openMins;\n stop.closeTime = closeMins;\n stop.skedId = skedId ? skedId : undefined;\n stop.lastHash = Date.now();\n //console.log(\"RwGlobals.multiSked stop\", stop.name, stop.priority, stop.openTime, stop.closeTime);\n });\n //self.commitRoute();\n resolve(true);\n } else {\n resolve(false);\n self.showSnack(\"Schedule Update Failed\", \"error\");\n }\n })\n .catch(err => {\n resolve(false);\n self.showSnack(\"Schedule Update Failed\", \"error\");\n });\n }\n });\n\n\n });\n\n\n }\n\n\n multiColor(ntt: RwEntityTypes, ids: string[], colorHash: string): Promise {\n ids = ids.filter(id => !!id);\n return new Promise(resolve => {\n RwTaskStops\n .multiColor(ntt, ids, colorHash)\n .then(isCommitted => {\n if (ntt === RwEntityTypes.Stop) {\n this.lastRouteDeltaMS = Date.now();\n //console.log(\"multiColor\", self.lastDelta);\n }\n\n resolve(isCommitted);\n })\n .catch(err => {\n resolve(false);\n });\n });\n }\n\n\n multiVisit(ntt: RwEntityTypes, ids: string[], visitTime: number): Promise {\n ids = ids.filter(id => !!id);\n return new Promise(resolve => {\n RwTaskStops\n .multiVisit(ntt, ids, visitTime)\n .then(isCommitted => {\n\n if (ntt === RwEntityTypes.Stop) {\n this.lastRouteDeltaMS = Date.now();\n //console.log(\"multiVisit\", self.lastDelta);\n }\n\n resolve(isCommitted);\n })\n .catch(err => {\n resolve(false);\n });\n });\n }\n\n\n multiSkedDB(isTask: boolean, ids: string[], skedId: string, priority: number, openTime: number, closeTime: number): Promise {\n const self = this;\n if ((!isNaN(openTime)) && !isNaN(closeTime)) {\n return new Promise(resolve => {\n RwTaskStops\n .multiSked(ids, skedId, priority, openTime, closeTime)\n .then(isCommitted => {\n\n if (!isTask) {\n self.lastRouteDeltaMS = Date.now();\n //console.log(\"multiSkedDB\", self.lastDelta);\n }\n\n resolve(isCommitted);\n })\n .catch(err => {\n resolve(false);\n });\n });\n } else {\n self.showSnack(\"Please confirm that schedule contains valid start and end times and try again.\", \"warning\");\n }\n\n }\n\n\n multiStopCopyDB(ids: string[], srcId: string, tarId: string, isMove?: boolean): Promise {\n return new Promise(resolve => {\n RwTaskStops\n .multiCopy(ids, srcId, tarId, !!isMove)\n .then(isCommitted => {\n resolve(isCommitted);\n })\n .catch(err => {\n resolve(false);\n });\n });\n }\n\n getTotalStopCount(route: RwRoute): Promise {\n return new Promise(function (resolve, reject) {\n RwTaskRoutes.countRouteStops(route)\n .then(stopCount => {\n resolve(stopCount);\n })\n .catch(err => {\n resolve(err);\n });\n })\n }\n\n addStopDB(stop: RwStop, routeUpdate: RwRoute, setFocus: boolean, setSelect: boolean): Promise {\n let self = this;\n //console.log(\"addStopDB\", stop.name, setFocus, setSelect);\n\n return new Promise(function (resolve, reject) {\n\n routeUpdate.canAddStop(stop.address, 1)\n .then(canAdd => {\n if (canAdd) {\n //console.log(\"addStopDB canAdd\", stop.name);\n\n if (self.showProofOfDelivery) {\n const defaultPOD = RwPrefUtils.proofOfDelivery;\n const stopAddons: RwStopAddOns = {\n podPhoto: defaultPOD === PODDefaultSettings.Photo ||\n defaultPOD === PODDefaultSettings.PhotoAndSignature,\n podSig: defaultPOD === PODDefaultSettings.Signature ||\n defaultPOD === PODDefaultSettings.PhotoAndSignature,\n }\n stop.addOns = stopAddons;\n }\n\n RwTaskStops\n .addStop(stop, routeUpdate)\n .then(deltas => {\n //console.log(\"addStopDB RwTaskStops.addStop callback\", deltas);\n\n if (deltas.stops?.length > 0) {\n const addedStopUpdateIndex = deltas.stops.findIndex(s => s.stopId === stop.stopId);\n if (addedStopUpdateIndex !== -1) {\n const addedStopUpdate = deltas.stops[addedStopUpdateIndex];\n stop.addOns = addedStopUpdate.addOns;\n deltas.stops.splice(addedStopUpdateIndex, 1);\n }\n }\n if (!stop.isTask) {\n self.lastRouteDeltaMS = Date.now();\n }\n //console.log(\"addStopDB lastDeltaMS\", self.lastDelta);\n\n self.mergeDeltas(deltas);\n\n let isCommitted = deltas.isCommitted(stop.stopId, RwTxnTypes.POST);\n if (isCommitted) {\n\n self.targetFocusId = setFocus ? stop.stopId : \"\";\n self.targetSelectId = setSelect ? stop.stopId : \"\";\n //console.error(`addStopDB targetFocusId:${self.targetFocusId}, targetSelectId:${self.targetSelectId}`)\n\n routeUpdate.addStop(stop);\n self.commitStops();\n\n if (RwPrefUtils.editAfterAdd) {\n setTimeout(() => {\n self.selectedStop = stop;\n self.recentStopAdd = true;\n self.showStopEdit(stop).catch();\n }, 750);\n }\n\n resolve(true);\n\n } else if (deltas.gotConflicts) {\n reject(new Error(\"Stop not added due to conflict, please try again.\"));\n } else {\n reject(new Error(\"Error adding stop\"));\n }\n })\n .catch(err => {\n reject(err);\n });\n } else {\n resolve(false);\n }\n });\n });\n }\n\n\n addStopsToRoute(stops: RwStop[], routeUpdate: RwRoute): Promise {\n let self = this;\n //console.log(\"addStopsToRoute\", stops.length);\n\n return new Promise(resolve => {\n routeUpdate.canAddStop(null, stops.length)\n .then(canAdd => {\n if (canAdd) {\n\n RwTaskStops\n .addStops(stops, routeUpdate)\n .then(isCommitted => {\n if (isCommitted) {\n\n self.lastRouteDeltaMS = Date.now();\n //console.log(\"addStopsToRoute lastDeltaMS\", self.lastDelta);\n\n stops.forEach(stop => {\n routeUpdate.addStop(stop);\n });\n self.commitStops();\n }\n resolve(isCommitted);\n })\n .catch(err => {\n resolve(false);\n });\n\n\n } else {\n resolve(false);\n self.showSnack(\"Over route size limit\", \"warning\");\n }\n });\n\n });\n\n }\n\n\n confirmAndDeleteStop(stop: RwStop, stack: string[] = [], skipCommit = false): Promise {\n const SOURCE = \"RwGlobals.confirmAndDeleteStop\";\n const self = this;\n return new Promise(function (resolve, reject) {\n\n if (stop) {\n\n self\n .showConfirmDialog(`Delete Stop: ${stop.name}`, `Are you sure you want to delete this stop?`)\n .then(isConfirmed => {\n if (isConfirmed) {\n\n self.deleteStops([stop], [...stack, SOURCE], skipCommit)\n .then(res => {\n self.showSnack(\"Stop Deleted\", \"success\");\n resolve(true);\n })\n .catch(err => {\n self.showSnack(`Stop Delete Failed: ${err}`, \"error\");\n let stopJson = JSON.stringify(stop.toJSON());\n let rwErr = err as RwError;\n if (self.checkNotHandled(err)) {\n RwLog.error(SOURCE, `deleteStops: skipCommit:${skipCommit} \\nstop:\\n${stopJson} \\n\\nerr:\\n${err}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n } else {\n RwLog.warn(SOURCE, `deleteStops: skipCommit:${skipCommit} \\nstop:\\n${stopJson} \\n\\nerr:\\n${err}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n }\n // const errorData = RwLog.getErrorFormatted(err, {title: \"Stop\", data: stop}, {title: \"Skip Commit\", data: skipCommit});\n // RwLog.error(SOURCE, errorData);\n reject(err);\n });\n } else {\n resolve(false)\n }\n\n });\n\n } else {\n RwLog.consoleError(\"WTF: NO STOP\");\n reject(\"NO STOP\");\n }\n });\n }\n\n\n confirmAndDeleteStops(stops: RwStop[], stack: string[] = [], skipCommit = true): Promise {\n const self = this;\n const SOURCE = \"RwGlobal.confirmAndDeleteStops\";\n\n //console.log(SOURCE, stops.length);\n\n return new Promise(function (resolve, reject) {\n stops = stops.filter(s => s !== undefined && s !== null);\n let count = stops.length;\n if (stops && count > 0) {\n let targetName = count == 1 ? 'stop' : 'stops';\n self.showConfirmDialog(`Delete Stops`, `Are you sure you want to delete ${count} ${targetName}?`)\n .then(res => {\n if (res) {\n self\n .deleteStops(stops, [...stack, SOURCE], skipCommit)\n .then(res => {\n\n if (res.length == stops.length) {\n self.showSnack(`${count} ${targetName} deleted`, \"success\");\n //self.onMultiExit();\n } else {\n self.showSnack(`Not all stops could be deleted due to conflict.`, \"warning\");\n }\n resolve(res);\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n RwLog.error(SOURCE, `deleteStops: skipCommit:${skipCommit}, count:${count} \\nstops:\\n${stops} \\n\\nerr:\\n${JSON.stringify(err)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n // const errorData = RwLog.getErrorFormatted(err, {title:\"Stops\", data: stops}, {title: \"Skip Commit\", data: skipCommit});\n // RwLog.error(SOURCE, errorData);\n }\n self.showSnack(`Delete Failed. Please try again later`, \"error\");\n reject(err);\n });\n }\n });\n } else {\n reject(\"no stops to delete\");\n }\n });\n }\n\n\n deleteStops(stops: RwStop[], stack: string[] = [], skipCommit = false): Promise {\n const SOURCE = \"RwGlobals.deleteStops\";\n let self = this;\n let route = self.activeRoute;\n\n return new Promise(function (resolve, reject) {\n let stopIds = stops.filter(s => s !== undefined && s !== null).map(s => s.stopId);\n stopIds = [...new Set(stopIds)];\n\n //console.log(\"stopIds\", stopIds)\n if (stopIds && stopIds.length > 0) {\n if (stopIds.length !== stops.length) {\n //const stack = new Error().stack;\n RwLog.error(SOURCE, `Stops.Count != StopIds.Count \\n\\nstops:\\n${JSON.stringify(stops)} \\n\\nstopIds:${JSON.stringify(stopIds)} \\n\\nstack:\\n${JSON.stringify(stack)}`);\n }\n\n let gotAnyRouted = stops.find(s => s.isRouted);\n\n let gotAnyStops = stops.find(s => !s.isTask);\n\n RwTaskStops\n .deleteStops(stopIds)\n .then(deltas => {\n\n if (gotAnyStops) {\n self.lastRouteDeltaMS = Date.now();\n }\n // self.mergeDeltas(deltas);\n //\n // let commits = deltas.findCommits(RwEntityTypes.Stop, RwTxnTypes.DELETE);\n // let commitIds = commits.map(c => c.eid);\n\n stopIds.forEach(sid => {\n let stop = route.findStop(sid);\n if (stop) {\n route.removeStop(stop);\n stop.lastHash = Date.now();\n } else {\n //NOTE: this is normal as is should be removed by mergeDeltas.\n }\n });\n\n if (gotAnyRouted) {\n route.path = null;\n }\n\n if (!skipCommit) {\n self.commitStops();\n }\n\n resolve(stopIds);\n ///resolve(commitIds);\n\n })\n .catch(err => {\n reject(err);\n });\n } else {\n reject();\n }\n });\n\n }\n\n\n updateStopDB(stop: RwStop, commit = false): Promise {\n const self = this;\n\n return new Promise(function (resolve, reject) {\n RwTaskStops\n .updateStop(stop)\n .then(deltas => {\n\n if (!stop.isTask) {\n self.lastRouteDeltaMS = Date.now();\n }\n //console.log(\"updateStopDB\", self.lastDelta);\n\n self.mergeDeltas(deltas);\n\n let isCommitted = deltas.isCommitted(stop.stopId, RwTxnTypes.PUT);\n //console.log('RwGlobals.updateStopDB isCommitted', isCommitted);\n if (isCommitted) {\n\n if (!stop.isTask) {\n self.lastRouteDeltaMS = Date.now();\n }\n //console.log(\"updateStopDB\", self.lastDelta);\n\n stop.lastHash = Date.now();\n if (commit) {\n self.commitStops();\n }\n resolve(true);\n } else if (deltas.gotConflicts) {\n reject(new Error(\"Stop not updated due to conflict, please try again.\"));\n } else {\n reject(new Error(\"Error updating stop\"));\n }\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n\n\n checkInStopDB(stop: RwStop, histId: string, siteId?: string): Promise {\n const self = this;\n if (stop.address) {\n return new Promise(function (resolve) {\n RwTaskStops\n .checkInStop(stop, histId, siteId)\n .then((isChecked) => {\n\n if (!stop.isTask) {\n self.lastRouteDeltaMS = Date.now();\n }\n //console.log(\"checkInStopDB\", self.lastDelta);\n\n resolve(isChecked)\n })\n .catch(() => resolve(false));\n });\n } else {\n // console.warn (\"Check-In skipped, stop details: \", stop);\n RwLog.error(\"RwGlobals.checkInStopDB\", `Check-in called for Stop with missing address: ` + stop + 'for user: ' + this.userId);\n }\n }\n\n\n removeStopById(stopId: string) {\n if (stopId) {\n let stop = this.findStop(stopId);\n if (stop) {\n this.removeStop(stop);\n }\n }\n }\n\n\n removeStop(stop: RwStop) {\n const SOURCE = \"RwGlobals.removeStop\";\n if (stop) {\n let index = this.stops.indexOf(stop, 0);\n if (index > -1) {\n this.stops.splice(index, 1);\n } else {\n RwLog.error(SOURCE, \"WTF: stop not found: \" + stop.name);\n }\n } else {\n RwLog.error(SOURCE, \"stop == null\");\n }\n }\n\n\n commitStops() {\n //console.log(\"RwGlobals.commitStops\");\n if (this.activeRoute && this.activeRoute.stops) {\n let newStops: RwStop[] = [...this.activeRoute.stops];\n //console.log(\"RwGlobals.commitStops newStops\", newStops.length);\n this.activeRoute.stops = newStops;\n }\n }\n\n\n commitRoute() {\n //console.log(\"commitRoute\");\n let trigger = this.refreshRouteTrigger + 1;\n this.refreshRouteTrigger = trigger;\n }\n\n\n commitRoutes() {\n const clone = Object.assign([], this.routes);\n this.routes = clone;\n }\n\n\n //#endregion\n\n\n //#region Site APIs\n\n isLoadedSites = false;\n\n get sites(): RwSite[] {\n return theStore.getters.sites;\n }\n\n set sites(sites: RwSite[]) {\n const self = this;\n //console.log(\"SET sites\", `isLoadedSites:${this.isLoadedSites}, sites.Count:${sites.length}`);\n\n //xTEST: Call this always\n this.refreshSitesImages();\n\n //HACK: This should called after refreshImages is complete callback\n setTimeout(() => {\n theStore.dispatch(\"sites\", sites).catch();\n }, 5);\n\n\n // if (this.isLoadedSites) {\n // self.isLoadedSites = true;\n // this.refreshSitesImages();\n // setTimeout(() => {\n // theStore.dispatch(\"sites\", sites).catch();\n // }, 5);\n // }\n // else {\n // //PRIOR\n // theStore.dispatch(\"sites\", sites).catch();\n // }\n }\n\n refreshSitesImages() {\n const self = this;\n const SOURCE = \"RwPlannerMap.refreshSites\"\n\n if (RwPrefUtils.showDataLayerSites) {\n\n // this.clearSitePins();\n let pins = this.plan.sitePinsFiltered;\n\n let pinsLookup: Record = {}\n let argsLookup: Record = {}\n\n //Add Sites\n if (pins) {\n pins.forEach(sitePin => {\n if (sitePin) {\n let args = sitePin.imgArgs;\n let hash = RwPin.getPinHash(args)\n let list = pinsLookup[hash];\n if (!list) {\n list = [];\n pinsLookup[hash] = list;\n argsLookup[hash] = args;\n }\n list.push(sitePin);\n }\n })\n\n let lenKeys = Object.keys(pinsLookup).length\n if (lenKeys > 0) {\n for (let hash in pinsLookup) {\n let pins = pinsLookup[hash];\n let args = argsLookup[hash];\n\n //TODO: Consider Singleton Promise vs. timeout\n setTimeout(() => {\n let cachedUrl = self.idxURL[hash];\n if (!cachedUrl) {\n\n RwPin\n .calcSitePinUrlNew(hash, args)\n .then(dataUrl => {\n //console.log(\"refreshSitesNew addSitePins\", hash)\n });\n }\n }, 2)\n\n\n }\n }\n }\n }\n }\n\n\n addSiteLocal(site: RwSite) {\n if (site) {\n this.sites.push(site);\n //RwApp.model.updateBadges();\n } else {\n RwLog.consoleError(\"WTF: site == null\");\n }\n }\n\n\n removeSiteById(siteId: string) {\n const SOURCE = \"RwGlobals.removeSiteById\";\n if (siteId) {\n let site = this.sites.find(s => s.siteId === siteId);\n if (site) {\n this.removeSite(site);\n } else {\n RwLog.consoleError(SOURCE, \"WTF: not found by siteId\", siteId);\n }\n } else {\n RwLog.consoleError(SOURCE, \"WTF: siteId undefined\");\n }\n }\n\n\n removeSite(site: RwSite) {\n const SOURCE = \"RwGlobals.removeSite\";\n if (site != null) {\n let index = this.sites.indexOf(site, 0);\n if (index > -1) {\n this.sites.splice(index, 1);\n }\n } else {\n RwLog.consoleError(SOURCE, \"WTF: site notFound\");\n }\n }\n\n\n addSite(site: RwSite, setFocus?: boolean): Promise {\n const SOURCE = \"RwGlobals.addsite\";\n let self = this;\n return new Promise(function (resolve, reject) {\n\n self.checkSiteAddConflict(site.address)\n .then(isOK => {\n if (isOK) {\n RwTaskSites\n .addSite(site)\n .then(deltas => {\n\n self.mergeDeltas(deltas);\n\n let isCommitted = deltas.isCommitted(site.siteId, RwTxnTypes.POST);\n if (isCommitted) {\n\n self.targetFocusId = (setFocus) ? site.siteId : \"\";\n //if(!setFocus) console.warn(\"addSiteDb focusId cleared\");\n self.addSiteLocal(site);\n self.commitSites();\n\n if (RwPrefUtils.editAfterAdd) {\n setTimeout(() => {\n\n self.showSiteEdit(site)\n\n // self.selectedSite = site;\n // self.showSiteEdit = true;\n }, 750);\n }\n\n resolve(isCommitted);\n } else if (deltas.gotConflicts) {\n RwLog.warn(SOURCE, `Error adding favorite, conflict. deltas: ${JSON.stringify(deltas)}`)\n reject(new Error(\"Favorite not added due to conflict, please try again.\"));\n } else {\n RwLog.error(SOURCE, `Error adding favorite, deltas: ${JSON.stringify(deltas)}`)\n reject(new Error(\"Error adding favorite\"));\n }\n })\n .catch(err => {\n reject(err);\n });\n } else {\n resolve(false);\n }\n });\n\n });\n }\n\n\n checkSiteAddConflict(address: string): Promise {\n const self = this;\n return new Promise(function (resolve) {\n let addExists = address && self.sites.find(s => s.address === address);\n if (addExists) {\n\n let title = \"Add Favorite\";\n let body = \"Address already exists as a Favorite. Do you want to add it anyway?\";\n self\n .showConfirmDialog(title, body)\n .then(isConfirmed => {\n resolve(isConfirmed)\n });\n } else {\n resolve(true);\n }\n });\n }\n\n\n updateSiteDB(site: RwSite, stack: string[] = []): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.updateSiteDB\";\n //console.log(\"RwGlobals.updateSiteDB site\", site.name);\n if ((site.baseColor as any).hex) site.baseColor = (site.baseColor as any).hex;\n return new Promise(function (resolve, reject) {\n RwTaskSites\n .updateSite(site)\n .then(deltas => {\n //console.log(\"RwGlobals.updateSiteDB updateSite callback\", deltas);\n self.mergeDeltas(deltas);\n\n let isCommitted = deltas.isCommitted(site.siteId, RwTxnTypes.PUT);\n if (isCommitted) {\n resolve(site);\n } else if (deltas.gotConflicts) {\n reject(new Error(\"Favorite not updated due to conflict, please try again.\"));\n } else {\n reject(new Error(\"Error adding favorite\"));\n }\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n try {\n let siteData;\n try {\n siteData = JSON.stringify(site.toJSON());\n } catch (e) {\n RwLog.error(SOURCE, `Site data to JSON error: ${JSON.stringify(err)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n siteData = `${site.siteId} - ${site.name}`;\n }\n RwLog.error(SOURCE, `Unhandled: ${JSON.stringify(err)} -\n ${siteData}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n } catch (e) {\n RwLog.error(SOURCE, `Unhandled: ${JSON.stringify(err)}\\n\\nStack:\\n${JSON.stringify(stack)}`);\n }\n }\n reject(err);\n });\n });\n }\n\n\n confirmAndDeleteSite(site: RwSite): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.confirmAndDeleteSite\";\n //console.log(SOURCE);\n\n return new Promise(function (resolve, reject) {\n\n self\n .showConfirmDialog(`Delete Favorite: ${site.name}`, `Are you sure you want to delete this favorite?`)\n .then(isConfirmed => {\n //console.log(SOURCE, \"showConfirmDialog callback\", isConfirmed);\n if (isConfirmed) {\n let siteId = site.siteId;\n let siteIds = [siteId];\n\n self\n .deleteSitesDB(siteIds)\n .then(() => {\n //console.log(SOURCE, \"deleteSitesDB callback\");\n // let deletedId = res.find(delId => delId === siteId);\n // resolve(!!deletedId);\n self.showSnack(`Favorite deleted`, \"success\");\n })\n .catch(err => {\n if (err) {\n if (err && err.isHandled) {\n RwLog.warn(SOURCE, `Unhandled: ${err}`);\n } else {\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n }\n } else {\n RwLog.error(SOURCE, `Missing Error`);\n }\n self.showSnack(`Delete Failed. Please try again later`, \"error\");\n reject(err);\n });\n\n } else {\n resolve(false);\n }\n });\n\n });\n }\n\n\n confirmAndDeleteSites(siteIds: string[]): Promise {\n const self = this;\n const SOURCE = \"RwGlobal.confirmAndDeleteSites\";\n //console.warn(SOURCE, siteIds.length);\n\n return new Promise(function (resolve, reject) {\n if (siteIds && siteIds.length > 0) {\n siteIds = [...new Set(siteIds)];\n siteIds = siteIds.filter(s => s !== null);\n let count = siteIds.length;\n let targetPlural = count == 1 ? 'favorite' : 'favorites';\n self\n .showConfirmDialog(`Delete Favorites`, `Are you sure you want to delete ${count} ${targetPlural}?`)\n .then(doIt => {\n //console.log(SOURCE, \"showConfirmDialog callback\", doIt);\n if (doIt) {\n self\n .deleteSitesDB(siteIds)\n .then(res => {\n if (res.length == siteIds.length) {\n resolve(res)\n self.showSnack(`${count} ${targetPlural} deleted`, \"success\");\n } else {\n self.showSnack(`Not all favorites could be deleted due to conflict.`, \"warning\");\n }\n\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n }\n self.showSnack(`Delete Failed. Please try again later`, \"error\");\n });\n }\n });\n } else {\n reject(\"no sites to delete\");\n }\n });\n }\n\n onSiteRelocate(site: RwSite, stack: string[] = []): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.onSiteRelocate\";\n return new Promise(function (resolve, reject) {\n if (site) {\n //console.log(\"onSiteRelocate lat, lng\", site.lat, site.lng);\n\n self.showReloPicker(site.name, site.lat, site.lng)\n .then(coord => {\n if (coord) {\n //console.log(SOURCE, \"showReloPicker callback\", coord.lat, coord.lng);\n let priLat = site.lat;\n let priLng = site.lng;\n\n site.lat = coord.lat;\n site.lng = coord.lng;\n\n self.updateSiteDB(site, [...stack, SOURCE])\n .then(isCommit => {\n //console.log(\"updateSiteDB isCommit\", isCommit);\n if (isCommit) {\n //self.globals.showSnack(\"Favorite location updated.\", \"success\");\n site.lastHash = Date.now();\n self.targetFocusId = site.siteId;\n self.commitSites();\n resolve(\"success\");\n } else {\n //rollback update\n site.lat = priLat;\n site.lng = priLng;\n self.showSnack(\"Favorite relocation failed.\", \"error\");\n }\n })\n .catch(err => {\n //rollback update\n site.lat = priLat;\n site.lng = priLng;\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n self.showSnack(\"Favorite relocation failed.\", \"error\");\n });\n\n }\n });\n } else {\n reject(\"No Site\");\n }\n });\n\n }\n\n copyRoutePicker(route: RwRoute): Promise {\n let SOURCE = \"RwGlobals.copyRoutePicker\";\n let self = this;\n return new Promise(function (resolve, reject) {\n self.showRouteCopy = true;\n\n self.showRouteEdit(route)\n .then(() => {\n resolve(\"completed\")\n })\n\n // self.showRouteNew(false, route)\n // .then(() => {\n // resolve(\"completed\")\n // })\n });\n }\n\n deleteSitesDB(siteIds: string[]): Promise {\n const self = this;\n return new Promise(function (resolve, reject) {\n\n if (siteIds) {\n RwTaskSites\n .deleteSites(siteIds)\n .then(deltas => {\n self.mergeDeltas(deltas);\n let commits = deltas.findCommits(RwEntityTypes.Site, RwTxnTypes.DELETE);\n let commitIds = commits.map(c => c.eid);\n resolve(commitIds);\n })\n .catch(err => {\n reject(err);\n self.showSnack(\"Failed to delete favorites\", \"error\");\n });\n\n } else {\n\n reject(\"no siteIds\");\n }\n });\n }\n\n\n commitSites() {\n const cloneSites = Object.assign([], this.sites);\n this.sites = cloneSites;\n }\n\n colorSite(sites: RwSite[]): Promise {\n let self = this;\n return new Promise((function (resolve, reject) {\n self.showColorPicker()\n .then((color) => {\n //console.error(\"colorSite colorPicker .then\")\n if (color) {\n sites.forEach(site => {\n site.baseColor = color;\n if (RwImgUtils.validatedColorHex(color)) {\n // console.warn(\"colorHex validated: \", RwColorPicker.validatedColorHex(color) );\n RwTaskSites.updateSite(site)\n .then(() => {\n self.showSnack(\"Color Updated Successfully\", \"success\")\n resolve(color);\n })\n .catch(err => {\n reject(err);\n self.showSnack(\"Color Failed to Update\", \"error\")\n\n })\n } else {\n self.showSnack(\"Invalid Color: Please Refresh and Try Again\", \"error\");\n }\n\n })\n\n }\n })\n\n }))\n\n }\n\n colorTask(tasks: RwStop[]): Promise {\n let self = this;\n return new Promise((function (resolve, reject) {\n self.showColorPicker()\n .then((color) => {\n //console.error(\"colorSite colorPicker .then\")\n if (color) {\n tasks.forEach(task => {\n task.baseColor = color;\n if (RwImgUtils.validatedColorHex(color)) {\n // console.warn(\"colorHex validated: \", RwColorPicker.validatedColorHex(color) );\n RwTaskStops.updateStop(task)\n .then(() => {\n self.showSnack(\"Color Updated Successfully\", \"success\")\n resolve(color);\n })\n .catch(err => {\n reject(err);\n self.showSnack(\"Color Failed to Update\", \"error\")\n\n })\n } else {\n self.showSnack(\"Invalid Color: Please Refresh and Try Again\", \"error\");\n }\n\n })\n\n }\n })\n\n }))\n\n }\n\n siteSvcSet(sites: RwSite[]): Promise {\n let self = this;\n return new Promise(function (resolve, reject) {\n if (sites) {\n sites = [...new Set(sites)];\n self.showVisitPicker()\n .then(time => {\n sites.forEach(site => {\n site.visitTime = time;\n RwTaskSites.updateSite(site)\n .then(() => {\n resolve(\"true\");\n self.showSnack(\"Visit Time Updated\", \"success\")\n })\n .catch(() => {\n self.showSnack(\"Updating Visit Time Failed\", \"error\")\n })\n });\n })\n .catch(() => {\n RwLog.consoleError(\"Visit picker not responding in siteSvcSet\")\n })\n } else {\n reject(\"Wtf: no Sites to change the time of\")\n }\n\n });\n }\n\n\n //#endregion\n\n\n //#region Task APIs\n\n isLoadedTasks = false;\n\n get tasks(): RwStop[] {\n //console.log(\"RwGlobals get tasks\", theStore.getters.tasks);\n return theStore.getters.tasks;\n }\n\n set tasks(val: RwStop[]) {\n const self = this;\n //console.log(\"RwGlobals set tasks\", val ? val.length : 0);\n\n if (this.isLoadedTasks) {\n self.isLoadedTasks = true;\n\n //this.refreshSitesImages();\n setTimeout(() => {\n theStore.dispatch(\"tasks\", val).catch();\n }, 10 * val.length)\n\n\n } else {\n theStore.dispatch(\"tasks\", val).catch();\n }\n }\n\n\n get taskPins(): RwPin[] {\n this.checkTaskPins();\n return theStore.getters.taskPins;\n }\n\n set taskPins(pins: RwPin[]) {\n theStore.dispatch(\"taskPins\", pins).catch();\n }\n\n\n addTaskDB(task: RwStop, setFocus?: boolean): Promise {\n return new Promise((resolve, reject) => {\n const podDefaults = RwPrefUtils.proofOfDelivery;\n if (this.showProofOfDelivery && podDefaults > PODDefaultSettings.None) {\n task.addOns = new RwStopAddOns();\n task.addOns.podPhoto = podDefaults === PODDefaultSettings.Photo || podDefaults === PODDefaultSettings.PhotoAndSignature;\n task.addOns.podSig = podDefaults === PODDefaultSettings.Signature || podDefaults === PODDefaultSettings.PhotoAndSignature;\n task.addOns.stopId = task.stopId;\n }\n RwTaskStops\n .addTasks([task])\n .then(deltas => {\n this.mergeDeltas(deltas);\n let isCommitted = deltas.isCommitted(task.stopId, RwTxnTypes.POST);\n if (isCommitted) {\n this.targetFocusId = (setFocus) ? task.stopId : \"\";\n this.addTaskLocal(task);\n this.commitTasks();\n\n if (RwPrefUtils.editAfterAdd) {\n setTimeout(() => {\n this.selectedStop = task;\n this.showStopEdit(task).catch();\n //this.m_showStopEdit = true;\n }, 750);\n }\n\n resolve(isCommitted);\n } else if (deltas.gotConflicts) {\n reject(new Error(\"Stop not added due to conflict, please try again.\"));\n } else {\n reject(new Error(\"Error adding task\"));\n }\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n\n addTaskToRoute(task: RwStop, routeUpdate: RwRoute, setFocus?: boolean): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.addTaskToRoute\";\n //console.log(\"addTaskToRoute\");\n\n return new Promise((resolve, reject) => {\n\n routeUpdate.canAddStop(task.address, 1, routeUpdate)\n .then(canAdd => {\n //console.log(\"addTaskToRoute canAddStop callback\", canAdd);\n\n if (canAdd) {\n //self.taskToStopDB(task, route)\n\n\n let nextSeq = routeUpdate.nextSeq;\n self.addTasksToRoute([task], routeUpdate, nextSeq)\n .then(isAdded => {\n if (isAdded) {\n\n if (nextSeq) {\n task.seq = nextSeq;\n }\n\n self.targetFocusId = setFocus ? task.stopId : \"\";\n\n if (RwPrefUtils.editAfterAdd) {\n setTimeout(() => {\n self.selectedStop = task;\n self.showStopEdit(task).catch();\n }, 750);\n }\n }\n resolve(isAdded);\n })\n .catch(err => {\n self.showSnack(\"Unexpected error adding task to route\");\n //RwLog.error(SOURCE, `Unhandled: ${err}`);\n reject(err);\n })\n } else {\n self.showSnack(\"Over route size limit\", \"warning\");\n }\n });\n\n\n });\n\n }\n\n\n addTasksToRoute(tasks: RwStop[], route: RwRoute, nextSeq: number): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.addTasksToRoute\";\n //console.log(\"addTasksToRoute\");\n\n return new Promise((resolve, reject) => {\n route.canAddStop(null, tasks.length, route)\n .then(canAdd => {\n //console.log(\"addTaskToRoute canAddStop callback\", canAdd);\n if (canAdd) {\n\n RwTaskStops\n .addTasksToRoute(tasks, route.routeId, nextSeq)\n .then(isCommit => {\n //console.log(\"addTasksToRoute success\");\n tasks.forEach(task => {\n task.isTask = false;\n task.routeId = route.routeId;\n\n if (nextSeq) {\n task.seq = nextSeq;\n nextSeq++;\n }\n\n self.removeTask(task);\n route.addStop(task);\n });\n\n self.commitTasks();\n self.commitStops();\n resolve(true);\n this.showSnack(\"Task(s) added successfully to route \" + route.name, \"success\");\n //console.log(\"addTasksToRoute callback Yeah!!\")\n })\n .catch(err => {\n self.showSnack(\"Unexpected error adding task to route\");\n if (this.checkNotHandled(err)) {\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n }\n reject(err);\n });\n\n } else {\n resolve(false);\n self.showSnack(\"Over route size limit\", \"warning\");\n }\n });\n });\n }\n\n\n confirmAndDeleteTask(task: RwStop): Promise {\n const SOURCE = \"RwPlannerSpace.confirmAndDeleteTask\";\n const self = this;\n return new Promise(function (resolve, reject) {\n if (task) {\n\n self\n .showConfirmDialog(`Delete Task: ${task.name}`, `Are you sure you want to delete this task?`)\n .then(isConfirmed => {\n if (isConfirmed) {\n\n let stopId = task.stopId;\n let stopIds = [stopId];\n\n self.deleteTasks(stopIds)\n .then(res => {\n self.showSnack(\"Task Deleted\", \"success\");\n resolve(true);\n })\n .catch(err => {\n self.showSnack(`Task Delete Failed: ${err}`, \"error\");\n if (self.checkNotHandled(err)) {\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n }\n reject(err);\n });\n } else {\n resolve(false);\n }\n });\n\n\n } else {\n RwLog.consoleError(\"WTF: NO TASK\");\n reject(\"NO TASK\");\n }\n });\n }\n\n\n confirmAndDeleteTasks(taskIds: string[]): Promise {\n const self = this;\n const SOURCE = \"RwGlobal.confirmAndDeleteTasks\";\n\n return new Promise(function (resolve, reject) {\n if (taskIds && taskIds.length > 0) {\n taskIds = [...new Set(taskIds)];\n taskIds = taskIds.filter(t => t !== null);\n let count = taskIds.length;\n let targetPlural = count == 1 ? 'task' : 'tasks';\n self\n .showConfirmDialog(`Delete Tasks`, `Are you sure you want to delete ${count} ${targetPlural}?`)\n .then(onConfirm => {\n if (onConfirm) {\n self.deleteTasks(taskIds)\n .then(res => {\n let isCommitted = res.length == count;\n if (isCommitted) {\n self.showSnack(`${count} ${targetPlural} deleted`, \"success\");\n //self.onMultiExit();\n } else {\n self.showSnack(`Not all Tasks could be deleted due to conflict.`, \"warning\");\n }\n resolve(isCommitted);\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n }\n self.showSnack(`Delete Failed. Please try again later`, \"error\");\n });\n }\n });\n } else {\n reject(\"no sites to delete\");\n }\n });\n }\n\n\n deleteTasks(taskIds: string[]): Promise {\n const SOURCE = \"RwGlobals.deleteTasks\";\n let self = this;\n\n return new Promise(function (resolve, reject) {\n if (taskIds) {\n taskIds = [...new Set(taskIds)];\n\n RwTaskStops\n .deleteTasks(taskIds)\n .then(deltas => {\n\n self.mergeDeltas(deltas);\n\n let commits = deltas.findCommits(RwEntityTypes.Task, RwTxnTypes.DELETE);\n let commitIds = commits.map(c => c.eid);\n resolve(commitIds);\n\n })\n .catch(err => {\n reject(err);\n });\n } else {\n reject();\n }\n });\n }\n\n\n removeTask(task: RwStop) {\n const SOURCE = \"RwGlobals.removeTask\";\n if (task) {\n let index = this.tasks.indexOf(task, 0);\n if (index > -1) {\n this.tasks.splice(index, 1);\n }\n } else {\n RwLog.error(SOURCE, \"task == null\");\n }\n }\n\n\n addTaskLocal(task: RwStop) {\n if (task) {\n let gotTask = this.tasks.find(t => t.stopId === task.stopId);\n //console.log(\"addTaskLocal gotTask\", gotTask, task.name);\n if (!gotTask) {\n this.tasks.push(task);\n //RwApp.model.updateBadges();\n }\n } else {\n RwLog.consoleWarn(\"task == null\");\n }\n }\n\n\n removeTaskById(taskId: string) {\n //console.log(\"removeTaskById\", taskId);\n if (taskId) {\n let task = this.tasks.find(t => t.stopId === taskId);\n if (task) {\n this.removeTask(task);\n }\n }\n }\n\n\n genTaskPins(): RwPin[] {\n //console.log(\"RwGlobals.genTaskPins\");\n\n let taskPins: RwPin[] = [];\n let tasks = theStore.getters.tasks;\n if (tasks && tasks.length > 0) {\n\n //let pins: { [key: string]: RwPin } = {};\n //console.log(\"getAllPins stops\", route.stops.length);\n this.tasks.forEach(task => {\n let pin = RwPin.fromTask(task);\n //console.log(\"adding task pin\", pin.title, pin.id);\n //pins[pin.id] = pin;\n taskPins.push(pin);\n });\n }\n\n this.taskPins = taskPins;\n return taskPins;\n }\n\n\n checkTaskPins() {\n let gotTasks = theStore.getters.tasks.length > 0;\n let gotPins = theStore.getters.taskPins.length > 0;\n if (gotTasks && !gotPins) {\n this.genTaskPins();\n }\n }\n\n\n commitTasks() {\n const cloneTasks = Object.assign([], this.tasks);\n this.tasks = cloneTasks;\n }\n\n\n //#endregion Task APIs\n\n\n //#region Sked APIs\n\n get skeds(): RwSked[] {\n return theStore.getters.skeds;\n }\n\n set skeds(val: RwSked[]) {\n theStore.dispatch(\"skeds\", val);\n }\n\n get skedsMultiUse(): RwSked[] {\n let multiUse = this.skeds.filter(s => s.type === RwSkedTypes.MultiUse);\n return multiUse;\n }\n\n\n addSkedLocal(sked: RwSked) {\n if (sked) {\n this.skeds.push(sked);\n //RwApp.model.updateBadges();\n } else {\n RwLog.consoleWarn(\"sked == null\");\n }\n }\n\n\n replaceSkedLocal(sked: RwSked) {\n if (sked) {\n this.removeSkedById(sked.skedId);\n\n this.skeds.push(sked);\n //RwApp.model.updateBadges();\n } else {\n RwLog.consoleWarn(\"sked == null\");\n }\n }\n\n\n removeSked(sked: RwSked) {\n if (sked != null) {\n let index = this.skeds.indexOf(sked, 0);\n if (index > -1) {\n this.skeds.splice(index, 1);\n }\n } else {\n RwLog.consoleWarn(\"sked == null\");\n }\n //RwApp.model.updateBadges();\n }\n\n\n removeSkedById(skedId: string) {\n if (skedId && skedId !== \"\") {\n let sked = this.skeds.find(s => s.skedId === skedId);\n if (sked) {\n this.removeSked(sked);\n }\n // let matchingSkedColl = this.skeds.filter(s => s.skedId === skedId);\n // if (matchingSkedColl && matchingSkedColl.length > 0) {\n // this.removeSked(matchingSkedColl[0]);\n // }\n }\n }\n\n\n addSkedDB(sked: RwSked): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n RwTaskSkeds\n .addSked(sked)\n .then(deltas => {\n\n self.mergeDeltas(deltas);\n\n let isCommitted = deltas.isCommitted(sked.skedId, RwTxnTypes.POST);\n if (isCommitted) {\n resolve(sked);\n } else if (deltas.gotConflicts) {\n reject(new Error(\"Schedule not added due to conflict, please try again.\"));\n } else {\n reject(new Error(\"Error adding Schedule\"));\n }\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n\n\n updateSkedDB(sked: RwSked): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n RwTaskSkeds\n .updateSked(sked)\n .then(deltas => {\n\n self.mergeDeltas(deltas);\n\n let isCommitted = deltas.isCommitted(sked.skedId, RwTxnTypes.PUT);\n if (isCommitted) {\n resolve(sked);\n } else if (deltas.gotConflicts) {\n reject(new Error(\"Schedule not updated due to conflict, please try again.\"));\n } else {\n reject(new Error(\"Error updating schedule\"));\n }\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n\n\n deleteSkedsDB(skedIds: string[]): Promise {\n const self = this;\n const SOURCE = \"RwGlobals.deleteSkedsDB\";\n\n return new Promise(function (resolve, reject) {\n if (skedIds) {\n skedIds = [...new Set(skedIds)];\n let name: string = \"\";\n self.skeds.forEach(sked => name = (sked.skedId == skedIds[0]) ? sked.name : name);\n let title = (skedIds.length == 1) ? \"Confirm Delete: \" + name : \"Confirm Delete: \" + skedIds.length + \" Schedules\";\n let body = (skedIds.length == 1)\n ? \"Are you sure you want to delete this schedule?\"\n : \"Are you sure you want to delete these schedules?\";\n self.showConfirmDialog(title, body)\n .then(isConfirmed => {\n if (isConfirmed) {\n RwTaskSkeds\n .deleteSkeds(skedIds)\n .then(deltas => {\n let text = (skedIds.length == 1) ? \"Successfully deleted 1 schedule\" : \"Successfully deleted \" + skedIds.length.toString() + \" schedules\";\n self.showSnack(text, \"success\");\n\n self.mergeDeltas(deltas);\n\n let commits = deltas.findCommits(RwEntityTypes.Sked, RwTxnTypes.DELETE);\n let commitIds = commits.map(c => c.eid);\n resolve(commitIds);\n\n })\n .catch(err => {\n reject(err);\n //RwLog.error(SOURCE, `Unhandled: ${err}`)\n self.showSnack(\"Failed to delete schedules \" + err, \"error\");\n });\n }\n })\n\n } else {\n reject(new Error(\"No Data\"));\n }\n });\n }\n\n // skedIsOvernight(): Promise {\n // let self = this;\n // let SOURCE = \"RwGlobals.skedPassesMidnight\";\n // return new Promise(function (resolve, reject) {\n // self.showConfirmDialog(\"This Schedule Crosses Midnight\", \"This schedule crosses midnight, would you like to save?\")\n // .then(isConfirmed => {\n // resolve(isConfirmed);\n // })\n // .catch(err => {\n // reject(err)\n // });\n // });\n // }\n\n commitSkeds() {\n const clone = Object.assign([], this.skeds);\n this.skeds = clone;\n }\n\n\n //#endregion\n\n\n //#region History APIs\n\n\n get hist(): RwHistory[] {\n return theStore.getters.hist;\n }\n\n set hist(hist: RwHistory[]) {\n theStore.dispatch(\"hist\", hist);\n }\n\n\n addHistLocal(hist: RwHistory) {\n if (hist) {\n this.history.push(hist);\n } else {\n RwLog.consoleError(\"hist == null\");\n }\n }\n\n\n insertHist(hist: RwHistory, position: number) {\n if (\n hist &&\n (position < this.history.length ||\n (position === 0 && this.history.length === 0))\n ) {\n this.history.splice(position, 0, hist);\n //RwApp.model.updateBadges();\n } else {\n RwLog.consoleWarn(\"hist == null or invalid position\");\n }\n }\n\n\n removeHist(hist: RwHistory) {\n if (hist != null) {\n let index = this.history.indexOf(hist, 0);\n if (index > -1) {\n this.history.splice(index, 1);\n }\n } else {\n RwLog.consoleWarn(\"hist == null\");\n }\n //RwApp.model.updateBadges();\n }\n\n\n removeHistById(actId: string) {\n if (!actId) {\n return;\n }\n let actColl = this.history.filter(a => a.histId === actId);\n if (actColl && actColl.length > 0) {\n this.removeHist(actColl[0]);\n }\n }\n\n\n getHistoryForSite(siteId: String): RwHistory[] {\n let siteActs: RwHistory[] = [];\n let findId = siteId.toLowerCase();\n this.history.forEach(act => {\n let siteId = act.siteId;\n if (siteId != null) {\n if (siteId.toLowerCase() == findId) {\n siteActs.push(act);\n }\n }\n });\n return siteActs;\n }\n\n getHistoryForStop(stopId: String): RwHistory[] {\n let stopActs: RwHistory[] = [];\n let findId = stopId.toLowerCase();\n this.history.forEach(act => {\n let stopId = act.stopId;\n if (stopId != null) {\n if (stopId.toLowerCase() == findId) {\n stopActs.push(act);\n }\n }\n });\n return stopActs;\n }\n\n addHistDB(hist: RwHistory): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n RwTaskHistory\n .addHistory(hist)\n .then(deltas => {\n\n self.mergeDeltas(deltas);\n\n let isCommitted = deltas.isCommitted(hist.histId, RwTxnTypes.POST);\n if (isCommitted) {\n resolve(hist);\n } else if (deltas.gotConflicts) {\n reject(new Error(\"Check-in not added due to conflict, please try again.\"));\n } else {\n reject(new Error(\"Error adding check-in\"));\n }\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n\n\n updateHistAsyncV2(hist: RwHistory): Promise {\n return new Promise(function (resolve, reject) {\n let self = this;\n\n RwTaskHistory\n .updateHistoryAsync(hist)\n .then(result => {\n self.handleTeamDeltas(result);\n\n let updatedHist = false;\n\n if (result.commitList) {\n let updateHistTx = result.commitList.filter(\n c =>\n c.ntt === RwEntityTypes.History &&\n c.code === 200 &&\n c.txn === RwTxnTypes.PUT &&\n c.eid === hist.histId\n ).map(c => c.eid);\n if (updateHistTx && updateHistTx.length === 1) {\n updatedHist = true;\n }\n }\n\n if (updatedHist) {\n resolve(hist);\n } else if (result.deltaConflicts > 0) {\n reject(\n new Error(\n \"Check-in not updated due to conflict, please try again.\"\n )\n );\n // reject({\n // message: \"Check-in not updated due to conflict, please try again.\"\n // });\n } else {\n reject(new Error(\"Error updating check-in\"));\n //reject({ message: \"Error updating check-in\" });\n }\n })\n .catch(err => {\n RwLog.consoleError(err);\n reject(err);\n });\n });\n }\n\n\n deleteHistAsyncV2(histIds: string[]): Promise {\n return new Promise(function (resolve, reject) {\n let self = this;\n\n if (histIds) {\n histIds = [...new Set(histIds)];\n }\n\n RwTaskHistory\n .deleteHistoryAsync(histIds)\n .then(result => {\n self.handleTeamDeltas(result);\n\n let successfulDeletes: string[] = [];\n\n if (result.commitList) {\n //RwLog.logConsole(\"DeleteRoutesV2: Commit List\", result.commitList);\n successfulDeletes = result.commitList.filter(\n c =>\n c.ntt === RwEntityTypes.History &&\n c.code === 200 &&\n c.txn === RwTxnTypes.DELETE\n ).map(t => t.eid);\n }\n //RwLog.logConsole(\"DeleteRoutesV2: successful deletes\", successfulDeletes);\n\n resolve(successfulDeletes);\n })\n .catch(err => {\n RwLog.consoleError(err);\n reject(err);\n });\n });\n }\n\n\n //#endregion\n\n\n //#region Driver APIs\n\n get drivers(): RwUser[] {\n // console.warn(\"globals.drivers gotten:\", theStore.getters.drivers);\n return theStore.getters.drivers;\n }\n\n set drivers(drivers: RwUser[]) {\n theStore.dispatch(\"drivers\", drivers);\n }\n\n\n saveDriver(driver: RwUser): Promise {\n let self = this;\n return new Promise((resolve, reject) => {\n RwTaskLicense.updateUser(driver).then(success => {\n if (success) {\n self.mergeDrivers([driver]);\n resolve();\n } else {\n reject(new Error(\"update Driver call failed\"))\n }\n }).catch(err => {\n reject(err);\n });\n })\n }\n\n onFileUpload(ulFile: File, uid: string) {\n const SOURCE = \"Globals.onFileUpload\";\n const self = this;\n if (ulFile && ulFile.size > 0) {\n let formData = new FormData();\n formData.append('newFile', ulFile);\n let url = `${RwConstants.CoreUri}/users/uimage?uid=${uid}`;\n return dal.callWithToken\n .post(url, formData, {headers: {'Content-Type': 'multipart/form-data'}})\n .then(res => {\n if (res) {\n if (res.data) {\n let avInfo = RwAvatarInfo.fromJson(res.data);\n if (avInfo && avInfo.avUrl) {\n //Update Dispatcher if Match\n if (uid == RwPrefUtils.userId) {\n // Add slight delay to allow blob storage to get hosting set before request\n setTimeout(() => {\n this.avInfo = avInfo;\n }, 300);\n\n }\n //Update Driver if Match\n setTimeout(() => {\n let driver = this.drivers.find(d => d.userId === uid);\n if (driver) {\n driver.imageUrl = avInfo.avUrl;\n } else {\n //Driver Not Found\n RwLog.error(SOURCE, `POST url:${url} -> USER NOT FOUND \\nAuthToken:${RwPrefUtils.token}`)\n }\n }, 300);\n }\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}`)\n }\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}`)\n }\n })\n .catch(function (err) {\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n self.showSnack(\"Failed to Update Avatar\", \"error\");\n if (err && err.status === 403) {\n RwLog.error(SOURCE, `403 while uploading ${err.toString()}`);\n } else {\n RwLog.error(SOURCE, 'UNHANDLED: ' + err ? err.toString() : \"\");\n }\n });\n }\n }\n\n updateAvatar(avColor: string, avInits: string, userId: string, avType: number): Promise {\n return RwTaskLicense.updateAvatar(avColor, avInits, userId, avType);\n }\n\n saveAvatar(driver: RwUser): Promise {\n return new Promise((resolve, reject) => {\n RwTaskLicense.updateAvatarUser(driver).then(success => {\n if (success) {\n this.mergeDrivers([driver]);\n // console.warn(\"success reached in globals.saveAvatar; success is:\", success);\n resolve();\n } else {\n reject(new Error(\"update Driver call failed\"))\n }\n }).catch(err => {\n reject(err);\n });\n })\n }\n\n\n createDriver(driverModel: RwCreateDriver): Promise {\n const self = this;\n\n return new Promise((resolve, reject) => {\n RwTaskLicense.createBulkDrivers([driverModel]).then(model => {\n if (model) {\n this.syncDelta().then(() => {\n resolve(model);\n }).catch(err => {\n resolve(model);\n });\n } else {\n //console.warn(\"CreateBulkDrivers\", model);\n reject(new Error(\"create Driver call failed\"))\n }\n\n }).catch(err => {\n reject(err);\n });\n })\n }\n\n createBulkUsers(users: Array): Promise {\n const self = this;\n\n return new Promise((resolve, reject) => {\n RwTaskLicense.createBulkDrivers(users).then(model => {\n if (model) {\n this.syncDelta().then(() => {\n resolve(model);\n }).catch(err => {\n resolve(model);\n });\n } else {\n //console.warn(\"CreateBulkDrivers\", model);\n reject(new Error(\"create Driver call failed\"))\n }\n\n }).catch(err => {\n reject(err);\n });\n })\n }\n\n\n addDriver(driver: RwUser) {\n RwLog.consoleError(\"WTF: addDriver\", this.drivers.length);\n this.drivers.push(driver);\n //this.updateBadges();\n }\n\n\n removeDriver(driverId: string): boolean {\n let success = false;\n if (driverId) {\n let driver = this.drivers.find(d => d.userId === driverId);\n if (driver) {\n let idxDriver = this.drivers.indexOf(driver);\n if (idxDriver >= 0) {\n this.drivers.splice(idxDriver, 1);\n success = true;\n }\n //this.updateBadges();\n }\n // let driverMatchColl = this.drivers.filter(d => d.userId === driverId);\n // if (driverMatchColl && driverMatchColl.length > 0) {\n // let driverIndex = this.drivers.indexOf(driverMatchColl[0]);\n // this.drivers.splice(driverIndex, 1);\n // success = true;\n // //this.updateBadges();\n // }\n }\n return success;\n }\n\n\n updateDrivers(driverList: RwUser[]) {\n this.drivers = driverList;\n //this.updateBadges();\n }\n\n\n pushUpdateToDriver(route: RwRoute): Promise {\n const SOURCE = \"RwGlobals.pushUpdateToDriver\";\n\n return new Promise((resolve, reject) => {\n if (this.isLoggedIn && this.gotToken) {\n RwTaskPush.sendPushNotify(route.routeId)\n .then(res => {\n if (res.ErrorCode) {\n switch (res.ErrorCode) {\n case NotifyErrorEnum.NoPushTargetsFound:\n //console.log(SOURCE, \"showSnack\", res as number);\n this.showSnack(\"Push Notifications not enabled for this driver\", \"warning\");\n break;\n\n default:\n RwLog.consoleError(SOURCE, \"Unexpected resp code\", res);\n this.showSnack(\"There was an issue sending the push notification. Please check the device \" +\n \"has push enabled and try again.\", \"warning\");\n break;\n }\n resolve(res.ErrorCode);\n } else {\n this.showSnack(\"Message Sent to Device\", \"success\");\n resolve(0);\n }\n //console.log(SOURCE, \"sendPushNote SUCCESS\", res);\n })\n .catch(err => {\n if (this.checkNotHandled(err)) {\n let status = !!err.Code ? err.Code : err.status;\n let errText = JSON.stringify(err);\n if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\")) ||\n err.error === \"Network Error\") {\n RwLog.warn(SOURCE, `Network Error: ${JSON.stringify(err)}`);\n } else if (status === 403) {\n RwLog.warn(SOURCE, `Forbidden: \\n\\n${errText}`);\n } else if (status == 404 || err.message === \"Request failed with status code 404\") {\n //console.log(SOURCE, \"showSnack\", res as number);\n RwLog.warn(SOURCE, `Driver not found: \\n\\n${errText}`);\n this.showSnack(\"Push Notifications expired for this driver\", \"warning\");\n } else {\n RwLog.error(SOURCE, `sendPushNotify -> ${status}: \\n\\n${errText}`);\n this.showSnack(\"Push Note failed. \");\n }\n }\n\n reject(err);\n });\n } else {\n reject();\n }\n });\n }\n\n\n commitDrivers() {\n //console.warn(\"triggerUpdateDrivers\");\n const clone = Object.assign([], this.drivers);\n this.drivers = clone;\n }\n\n\n //#endregion Driver APIs\n\n\n //#region Misc Ops\n\n showResumeSubscriptionPopup = false;\n couponDescription = \"\";\n couponCodeName = \"\";\n\n showApplyCouponError(errorCode: number) {\n let errorMessage: string;\n switch(errorCode) {\n case 0:\n errorMessage = RwApplyCouponError.None;\n break;\n case 2:\n errorMessage = RwApplyCouponError.InvalidCoupon;\n break;\n case 3:\n errorMessage = RwApplyCouponError.AlreadyApplied;\n break;\n case 4:\n errorMessage = RwApplyCouponError.Expired;\n break;\n case 5:\n errorMessage = RwApplyCouponError.SubscriptionNotFound;\n break;\n default:\n errorMessage = RwApplyCouponError.Unknown;\n break;\n }\n this.showSnack(errorMessage, \"warning\");\n }\n\n applyCouponCode(resumeSubscription = false) {\n this.couponCodeName = router.currentRoute.query.coupon as string;\n RwTaskBillingProfile.ApplyCoupon(this.couponCodeName as string)\n .then(result => {\n if (result.Success) {\n if (resumeSubscription) {\n const errorMessage = \"There was a problem resuming the subscription, please try again\";\n RwTaskBillingProfile.ResumeAutoRenew()\n .then(succeed => {\n if (succeed) {\n router.replace({'query': null});\n this.showSnack(`Subscription resumed successfully and applied coupon ${this.couponCodeName}`, \"success\");\n this.showResumeSubscriptionPopup = false;\n } else {\n this.showSnack(errorMessage, \"error\");\n }\n })\n .catch(err => {\n RwLog.error(\"RwAccount.ResumeSubscription\", JSON.stringify(err));\n this.showSnack(errorMessage, \"error\");\n })\n } else {\n router.replace({'query': null});\n this.showSnack(`Coupon code ${this.couponCodeName} successfully applied`, \"success\");\n }\n } else {\n this.showApplyCouponError(Number(result.Error));\n }\n })\n .catch(err => {\n RwLog.error(\"RwAccount.applyCouponCode\", JSON.stringify(err));\n this.showSnack(\"Sorry we had a problem applying the coupon code\", \"error\");\n })\n }\n\n checkForCouponCode() {\n if (!!router.currentRoute.query.coupon) {\n if (!this.hasCurrPurch && !this.isSubTeam) {\n router.push({name: RwPages.Upgrade, query: router.currentRoute.query}).catch(err => {\n });\n }\n else {\n RwTaskBillingProfile.ValidateCoupon(router.currentRoute.query.coupon as string)\n .then(result => {\n if (result.Success) {\n if (this.hasActiveFlexTrial || this.isAutoRenewing) {\n this.applyCouponCode();\n }\n else if (!this.isAutoRenewing) {\n this.couponDescription = result.CouponDesc;\n this.showResumeSubscriptionPopup = true;\n }\n } else {\n this.showSnack(result.Error, \"warning\");\n }\n })\n .catch(err => {\n RwLog.error(\"RwAccount.validateCouponCode\", JSON.stringify(err));\n this.showSnack(\"Sorry we had a problem applying the coupon code\", \"error\");\n })\n }\n }\n }\n\n\n get outdatedVersion() {\n return theStore.getters.outdatedVersion;\n }\n\n checkOutdatedVersion() {\n try {\n\n const currentVersion = RwConstants.flexVersion === \"FLEX_DEBUG\" ?\n moment().format(\"YYYY.MM.DD0\") :\n RwConstants.flexVersion;\n\n RwTaskMisc.getLatestFlexVersion()\n .then(latestVersion => {\n const currentVersionDate = moment(currentVersion, \"YYYY.MM.DD0\");\n const latestVersionDate = moment(latestVersion, \"YYYY.MM.DD0\");\n const diffDays = latestVersionDate.diff(currentVersionDate, \"days\");\n if (diffDays > 4) {\n theStore.dispatch(\"outdatedVersion\", VersionOutdatedEnum.NeedsUpdateSevere);\n } else if (diffDays > 1) {\n theStore.dispatch(\"outdatedVersion\", VersionOutdatedEnum.NeedsUpdate);\n } else {\n theStore.dispatch(\"outdatedVersion\", VersionOutdatedEnum.Current);\n }\n })\n .catch(err => {\n RwLog.warn(\"RwGlobals.hasOutdatedVersion\", JSON.stringify(err));\n });\n } catch (err) {\n RwLog.warn(\"RwGlobals.hasOutdatedVersion\", JSON.stringify(err));\n }\n }\n\n\n validateFedexReturn() {\n let isValid = false;\n let dateDiff = moment.duration(moment().diff(moment(RwPrefUtils.fdxManifestAuthTime)));\n if (RwPrefUtils.token && dateDiff.asHours() < 2) {\n this.isReturningFedexManifest = true;\n isValid = true;\n }\n return isValid;\n }\n\n\n swapOrgs(newOrg: SubTeamModel) {\n //let newModel = new RwModel(false);\n // newModel.skuInfos = RwApp.model.skuInfos;\n // newModel.isPro = RwApp.model.isPro;\n // newModel.imgSrc = RwApp.model.imgSrc;\n // newModel.isComponentLoaded = true;\n this.orgId = newOrg.OrgId;\n if (newOrg.OrgId != newOrg.AccountId) {\n this.subDomain = newOrg.Domain;\n this.isSubTeam = true;\n } else {\n this.parentDomain = newOrg.Domain;\n this.isSubTeam = false;\n }\n\n //this.model = newModel;\n //this.model.loadData();\n }\n\n\n static getGeolocation(): Promise {\n //console.log(\"getGeolocation RwGlobals.allowedGeoLoc\", RwGlobals.allowedGeoLoc)\n\n return new Promise((resolve) => {\n if (RwGlobals.allowedGeoLoc) {\n navigator.geolocation.getCurrentPosition(\n position => resolve(position),\n error => resolve(null),\n {maximumAge: 1000 * 60 * 60, timeout: 5000}\n );\n } else {\n resolve(null)\n }\n });\n }\n\n\n checkGeoOnboard(): string {\n if (RwGlobals.allowedGeoLoc === 1) {\n return 'granted';\n } else if (RwGlobals.allowedGeoLoc === 0) {\n return 'prompt';\n } else if (RwGlobals.allowedGeoLoc === -1) {\n return 'denied';\n }\n }\n\n\n checkGeoLocationPerms(): Promise {\n const SOURCE = \"RwGlobals.checkGeoLocationPerms\";\n const self = this;\n return new Promise((resolve, reject) => {\n //console.log(\"checkGeoLocationPerms\");\n if (this.token !== RwConstants.EmptyGuid && this.userId !== RwConstants.EmptyGuid) {\n if (!navigator || !navigator.permissions) {\n RwLog.warn(SOURCE, `Cannot access permissions - navigator || navigator.permissions not available.`);\n return reject(new RwError(200, true, `Cannot access permissions - navigator || navigator.permissions not available.`));\n }\n navigator.permissions\n .query({name: \"geolocation\"})\n .then((result) => {\n // .then(function (result) {\n // Will return ['granted', 'prompt', 'denied']\n //console.log(\"navigator.permissions query(geolocation) => \", result.state);\n if (result.state === \"granted\") {\n RwGlobals.allowedGeoLoc = 1;\n resolve(result);\n } else if (result.state === \"prompt\") {\n resolve(result);\n } else { // denied\n RwGlobals.allowedGeoLoc = -1;\n resolve(result);\n }\n\n result.onchange = () => {\n self.locPermChanged(result.state);\n }\n })\n .catch(err => {\n if (self.checkNotHandled(err)) {\n const errText = JSON.stringify(err)?.trim();\n if (errText === '{}') {\n RwLog.warn(SOURCE, `Unhandled: '${errText}'`);\n } else {\n RwLog.error(SOURCE, `Unhandled: '${errText}'`);\n }\n }\n });\n } else {\n RwLog.warn(SOURCE, `Force logout, Invalid token: ${RwPrefUtils.token} or userID: ${this.userId}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n }\n });\n }\n\n\n promptForLocationPermission(): Promise {\n //console.log(\"promptForLocationPermission\")\n return new Promise((resolve) => {\n navigator.geolocation.getCurrentPosition(\n () => {\n RwGlobals.allowedGeoLoc = 1;\n resolve(true)\n },\n () => {\n RwGlobals.allowedGeoLoc = -1;\n resolve(false)\n });\n })\n }\n\n locPermChanged(state) {\n const self = this;\n //console.log('Location Permissions changed ' + state);\n if (state === \"granted\") {\n RwGlobals.allowedGeoLoc = 1;\n //RwGlobals.getGeolocation();\n RwGlobals\n .getGeolocation()\n .then((pos) => {\n if (pos && pos.coords) {\n let lat = pos.coords.latitude;\n let lng = pos.coords.longitude\n //console.log(\"getGeolocation => \", lat, lng)\n self.plan.mapCentroid = {lat: lat, lng: lng, zoom: 12.0};\n }\n });\n }\n }\n\n\n popLimitWarning(limitType: RwLimitType) {\n let title = \"Account Limit\";\n let message = \"The max route size has been exceeded.\";\n\n if (this.isPro) {\n switch (limitType) {\n case RwLimitType.RouteSize:\n message = \"The max route size has been exceeded.\";\n break;\n case RwLimitType.TotalStops:\n message =\n \"The daily quota of total optimized stops has been exceeded.\";\n break;\n case RwLimitType.TotalSearches:\n message =\n \"The daily quota of total auto-complete searches has been exceeded.\";\n break;\n default:\n message = \"The limit has been exceeded.\";\n break;\n }\n RwGlobals.popWarning(title, message);\n } else {\n //DEFER: Re-evaluate: We may not need to do this if we require PRO && NO EVALS\n\n // switch (limitType) {\n // case RwLimitType.RouteSize:\n // message = \"The max route size for an eval account has been exceeded. \\n\\n Would you like to view the upgrade options for Road Warrior Pro?\";\n // break;\n // case RwLimitType.TotalStops:\n // message = \"The daily quota of total optimized stops has been exceeded. \\n\\n Would you like to view the upgrade options for Road Warrior Pro?\";\n // break;\n // case RwLimitType.TotalSearches:\n // message = \"The daily quota of total auto-complete searches for an eval account has been exceeded. \\n\\n Would you like to view the upgrade options for Road Warrior Pro?\";\n // break;\n // default:\n // message = \"The limit for an eval account has been exceeded. \\n\\n Would you like to view the upgrade options for Road Warrior Pro?\";\n // break;\n // }\n }\n }\n\n\n static popWarning(title: string, body: string) {\n //RwPlanner.self = this;\n // let dialog = self.$.popWarning;\n // let txtTitle = self.$.popWarningTitle;\n // let txtBody = self.$.popWarningBody;\n\n let dialog = document.querySelector(\"#popWarning\");\n let txtTitle = document.querySelector(\"#popWarningTitle\");\n let txtBody = document.querySelector(\"#popWarningBody\");\n\n txtTitle.innerHTML = title;\n txtBody.innerHTML = body;\n dialog.toggle();\n }\n\n\n //#endregion\n\n\n //#region Popups\n\n\n //Colors can HEX or ['success', 'info', 'warning', 'error', 'primary']\n showSnack(text: string, color?: string) {\n this.m_snackBarText = text;\n this.m_snackBarColor = color ? color : \"primary\";\n this.m_showSnackVar = true;\n }\n\n\n pendConfirmResolve;\n\n showConfirmDialog(title: string, body: string, posText?: string, negText?: string, dontShowCheck: boolean = false, dontShowCallback: Function | null = null): Promise {\n\n const self = this;\n\n return new Promise((resolve) => {\n this.m_confirmTitle = title;\n this.m_confirmBody = body;\n this.m_confirmPosText = posText || \"Yes\";\n this.m_confirmNegText = negText || \"No\";\n this.m_showConfirm = true;\n this.m_confirmDontShowCheck = dontShowCheck;\n this.m_confirmDontShowCallback = dontShowCallback;\n self.pendConfirmResolve = resolve;\n //self.pendConfirmReject = reject;\n });\n\n }\n\n onConfirm(isConfirmed: boolean, dontShow: boolean = false) {\n //xREF: ACTIONS: RwGlobals.onConfirm\n this.pendConfirmResolve(isConfirmed);\n if (isConfirmed && dontShow) this.m_confirmDontShowCallback();\n }\n\n\n pendingColorPick;\n\n showColorPicker(initColor?: string): Promise {\n const self = this;\n self.m_colorPickerInitColor = initColor;\n self.m_showColorPicker = true;\n return new Promise((resolve) => {\n self.pendingColorPick = resolve;\n\n });\n\n }\n\n\n onColorPick(color: string) {\n //console.log(\"RwGlobals.onColorPick color\", color);\n this.pendingColorPick(color);\n }\n\n pendingAddRouteSelection;\n\n showAddRoutePicker(): Promise {\n const self = this;\n self.m_showAddRoutePicker = true;\n return new Promise((resolve) => {\n self.pendingAddRouteSelection = resolve;\n // resolve(self.pendingAddRouteSelection)\n });\n\n }\n\n // newRouteCreated(route: RwRoute) {\n // this.pendingAddRouteSelection(route);\n // }\n //\n // addRoutePlanner(): Promise {\n // let self = this;\n // return new Promise((resolve) => {\n // self.showAddRoutePicker()\n // .then(route => {\n // resolve(route != null);\n // })\n // .catch(() => {\n // console.error(\"in in showAddRoutePicker .catch\")\n // });\n // });\n // }\n\n pendingVisitPick;\n\n showVisitPicker(initVisit?: number): Promise {\n //console.log(\"showVisitPicker\");\n const self = this;\n self.m_visitPickerInit = initVisit;\n self.m_showVisitPicker = true;\n return new Promise((resolve) => {\n self.pendingVisitPick = resolve;\n });\n\n }\n\n onVisitPick(visitTimeMins: number) {\n //console.log(\"RwGlobals.onVisitPick visitTimeMins\", visitTimeMins);\n this.pendingVisitPick(visitTimeMins);\n }\n\n\n pendingSkedPick;\n\n showSkedPicker(pri?: number, startMils?: number, finishMils?: number): Promise {\n const self = this;\n //console.log(\"showSkedPicker\", pri, start, finish);\n\n self.m_skedPickerPriority = pri;\n self.m_skedPickerStart = startMils;\n self.m_skedPickerFinish = finishMils;\n self.m_showSkedPicker = true;\n\n return new Promise((resolve) => {\n self.pendingSkedPick = resolve;\n });\n }\n\n onSkedPick(sked: RwSked) {\n //console.log(\"RwGlobals.onSkedPick pri, start, finish\", sked);\n this.pendingSkedPick(sked);\n }\n\n\n pendingRoutePick;\n\n showRoutePicker(srcId: string): Promise {\n const self = this;\n self.m_routePickerSrcId = srcId;\n self.m_showRoutePicker = true;\n //console.log(\"showRoutePicker srcId m_routePickerSrcId\", srcId, self.m_routePickerSrcId);\n return new Promise((resolve) => {\n self.pendingRoutePick = resolve;\n });\n }\n\n get showGenericRoutePicker(): boolean {\n return theStore.getters.showGenericRoutePicker;\n }\n\n set showGenericRoutePicker(val: boolean) {\n theStore.dispatch(\"showGenericRoutePicker\", val);\n }\n\n get genericRoutePickerFilter(): any {\n return theStore.getters.genericRoutePickerFilter;\n }\n\n set genericRoutePickerFilter(val: any) {\n theStore.dispatch(\"genericRoutePickerFilter\", val);\n }\n\n openGenericRoutePicker(srcId: string, rfilter: any = () => true): Promise {\n const self = this;\n self.m_routePickerSrcId = srcId;\n self.genericRoutePickerFilter = rfilter\n self.showGenericRoutePicker = true;\n //console.log(\"showRoutePicker srcId m_routePickerSrcId\", srcId, self.m_routePickerSrcId);\n return new Promise((resolve) => {\n self.pendingRoutePick = resolve;\n }).finally(() => self.genericRoutePickerFilter = () => true);\n }\n\n onRoutePick(pick: RwRoutePick) {\n //console.log(\"RwGlobals.onSkedPick pri, start, finish\", pick);\n this.pendingRoutePick(pick);\n }\n\n\n pendingReloPick;\n\n showReloPicker(title: string, lat: number, lng: number, enableSearch: boolean = false, isAddReport: boolean = false): Promise {\n const self = this;\n self.m_reloPickerInitTitle = title;\n self.m_reloPickerInitLat = lat;\n self.m_reloPickerInitLng = lng;\n self.m_showReloPicker = true;\n self.m_enableReloPickerSearch = enableSearch;\n self.m_reloPickerAddReport = isAddReport;\n //console.log(\"showReloPicker lat, lng\", lat, lng);\n\n return new Promise((resolve) => {\n self.pendingReloPick = resolve;\n });\n }\n\n onReloPick(pick: RwGeoPoint) {\n //console.log(\"RwGlobals.onReloPick pick\", pick.lat, pick.lng );\n this.pendingReloPick(pick);\n }\n\n\n pendingStatusPick;\n\n showStatusPicker(name: string, status: RwRouteStatusCodes): Promise {\n const self = this;\n self.m_statusPickerInitName = name;\n self.m_statusPickerInitStatus = status;\n self.m_showStatusPicker = true;\n //console.log(\"showReloPicker lat, lng\", lat, lng);\n return new Promise((resolve) => {\n self.pendingStatusPick = resolve;\n });\n }\n\n onStatusPick(pick: RwRouteStatusCodes) {\n //console.log(\"RwGlobals.onReloPick pick\", pick.lat, pick.lng );\n this.pendingStatusPick(pick);\n }\n\n\n pendingAssignPick;\n\n showAssignPicker(routeUpdate: RwRoute): Promise {\n const self = this;\n self.m_assignPickerInitRoute = routeUpdate;\n self.m_showAssignPicker = true;\n //console.log(\"showAssignPicker route.name\", routeUpdate.name);\n return new Promise((resolve) => {\n self.pendingAssignPick = resolve;\n });\n }\n\n onAssignPick(routeUpdate: RwRoute) {\n //console.log(\"RwGlobals.onAssignPick route\", routeUpdate.driverId, routeUpdate.assignCode);\n this.pendingAssignPick(routeUpdate);\n }\n\n\n //xREF: RwGlobals.showXXXXEdit\n\n pendingRouteEdit;\n\n get m_showRouteEdit(): boolean {\n return theStore.getters.showRouteEdit;\n }\n\n set m_showRouteEdit(val: boolean) {\n theStore.dispatch(\"showRouteEdit\", val).catch();\n }\n\n get m_routeEditInitRoute(): boolean {\n return theStore.getters.routeEditInitRoute;\n }\n\n showRouteEdit(route: RwRoute): Promise {\n const self = this;\n theStore.dispatch(\"routeEditInitRoute\", route).catch();\n theStore.dispatch(\"showRouteEdit\", true).catch();\n return new Promise((resolve) => {\n self.pendingRouteEdit = resolve;\n });\n }\n\n onRouteEdited(isCommit: boolean) {\n this.pendingRouteEdit(isCommit);\n }\n\n\n pendingStopEdit;\n\n get m_showStopEdit(): boolean {\n return theStore.getters.showStopEdit;\n }\n\n set m_showStopEdit(val: boolean) {\n theStore.dispatch(\"showStopEdit\", val).catch();\n }\n\n get m_stopEditInitStop(): RwStop {\n return theStore.getters.stopEditInitStop;\n }\n\n set m_stopEditInitStop(val: RwStop) {\n theStore.dispatch(\"stopEditInitStop\", val).catch();\n }\n\n showStopEdit(stop: RwStop): Promise {\n const self = this;\n self.m_stopEditInitStop = stop;\n self.m_showStopEdit = true;\n return new Promise((resolve) => {\n self.pendingStopEdit = resolve;\n });\n }\n\n onStopEdited(isCommit: boolean) {\n this.pendingStopEdit(isCommit);\n }\n\n pendingHistoryEdit;\n\n get m_showHistoryEdit(): boolean {\n return theStore.getters.showHistoryEdit;\n }\n\n set m_showHistoryEdit(val: boolean) {\n theStore.dispatch(\"showHistoryEdit\", val).catch();\n }\n\n get m_histEditInitHistory(): RwHistory {\n return theStore.getters.histEditInitHistory;\n }\n\n set m_histEditInitHistory(val: RwHistory) {\n theStore.dispatch(\"histEditInitHistory\", val).catch();\n }\n\n showHistoryEdit(history: RwHistory): Promise {\n const self = this;\n self.m_histEditInitHistory = history;\n self.m_showHistoryEdit = true;\n return new Promise((resolve) => {\n self.pendingHistoryEdit = resolve;\n });\n }\n\n onHistoryEdited(isCommit: boolean) {\n this.pendingHistoryEdit(isCommit);\n }\n\n pendingSiteEdit;\n\n get m_showSiteEdit(): boolean {\n return theStore.getters.showSiteEdit;\n }\n\n set m_showSiteEdit(val: boolean) {\n theStore.dispatch(\"showSiteEdit\", val).catch();\n }\n\n get m_siteEditInitSite(): boolean {\n return theStore.getters.siteEditInitSite;\n }\n\n showSiteEdit(site: RwSite): Promise {\n const self = this;\n theStore.dispatch(\"siteEditInitSite\", site).catch();\n theStore.dispatch(\"showSiteEdit\", true).catch();\n return new Promise((resolve) => {\n self.pendingSiteEdit = resolve;\n });\n }\n\n onSiteEdited(isCommit: boolean) {\n this.pendingStopEdit(isCommit);\n }\n\n\n pendingSkedEdit;\n\n get m_showSkedEdit(): boolean {\n return store.getters.showSkedEdit;\n }\n\n set m_showSkedEdit(val: boolean) {\n theStore.dispatch(\"showSkedEdit\", val).catch();\n }\n\n get m_skedEditInitSked(): RwSked {\n return store.getters.skedEditInitSked;\n }\n\n set m_skedEditInitSked(val: RwSked) {\n theStore.dispatch(\"skedEditInitSked\", val).catch();\n }\n\n showSkedEdit(sked: RwSked): Promise {\n const self = this;\n self.m_skedEditInitSked = sked;\n self.m_showSkedEdit = true;\n return new Promise((resolve) => {\n self.pendingSkedEdit = resolve;\n });\n }\n\n onSkedEdited(isCommit: boolean) {\n this.pendingSkedEdit(isCommit);\n }\n\n\n get m_showDriverEdit(): boolean {\n return store.getters.showDriverEdit;\n }\n\n set m_showDriverEdit(val: boolean) {\n store.dispatch(\"showDriverEdit\", val).catch();\n }\n\n get m_driverEditInitDriver(): boolean {\n return store.getters.driverEditInitDriver;\n }\n\n pendingDriverEdit;\n\n showDriverEdit(driver: RwUser): Promise {\n const self = this;\n theStore.dispatch(\"driverEditInitDriver\", driver).catch();\n theStore.dispatch(\"showDriverEdit\", true).catch();\n return new Promise((resolve) => {\n self.pendingDriverEdit = resolve;\n });\n }\n\n onDriverEdited(isCommit: boolean) {\n this.pendingDriverEdit(isCommit);\n }\n\n\n pendingRouteNew;\n\n get m_showRouteNew(): boolean {\n return theStore.getters.showRouteNew;\n }\n\n set m_showRouteNew(val: boolean) {\n theStore.dispatch(\"showRouteNew\", val).catch();\n }\n\n get showSearchPanel(): boolean {\n return theStore.getters.showSearchPanel;\n }\n\n set showSearchPanel(val: boolean) {\n theStore.dispatch(\"showSearchPanel\", val).catch();\n }\n\n\n showRouteNew(initEmpty: boolean, initRoute?: RwRoute): Promise {\n const self = this;\n self.m_routeNewInitEmpty = initEmpty;\n self.m_routeNewInitRoute = initRoute;\n if (self.hasActiveFlexSku) {\n self.m_showRouteNew = true;\n }\n //console.log(\"showRouteNew route.name\", initRoute ? initRoute.name: \"no route\", `showNewRoute:${self.m_showRouteNew}`);\n return new Promise((resolve) => {\n //self.showRouteEdit(route)\n self.pendingRouteNew = resolve;\n });\n }\n\n onRouteNew(newRoute: RwRoute) {\n //console.log(\"RwGlobals.onRouteNew newRoute\", newRoute);\n this.pendingRouteNew(newRoute);\n }\n\n createNewRoute(initRoute?) {\n const self = this;\n const SOURCE = \"RwGlobals.createNewRoute\";\n\n if (this.gotUser) {\n let route = RwRoute.blankRoute();\n\n this.addRouteDB(route, [SOURCE], false)\n .then(routeNew => {\n //console.log(\"onRouteCreate addRouteDB callback\");\n\n let assignCodeInit = route.assignCode;\n\n let isSelfAssigned = route.driverId === this.userId;\n //let isPending = route.assignCode == RwRouteAssignCodes.pending;\n let isDynamic = route.isDynLoc;\n let gotDrivers = this.drivers.length > 1;\n let updateStatus = isSelfAssigned && gotDrivers && isDynamic;\n if (updateStatus) {\n\n //if (RwPrefUtils.isDynPoint) {\n // On route creation if GPS based change assignCode.\n const syncStatus = new RwSyncStatus();\n syncStatus.routeId = route.routeId;\n syncStatus.assignCode = RwRouteAssignCodes.pending;\n syncStatus.driverId = route.driverId;\n syncStatus.statusCode = route.statusCode;\n\n RwTaskRoutes.setRouteStatusInfo(syncStatus)\n .then(() => {\n route.assignCode = RwRouteAssignCodes.pending\n })\n .catch(err => {\n //RwLog.error(SOURCE, `Dyn Loc Status update failed: ${err}`);\n let errText = JSON.stringify(err);\n let statusText = JSON.stringify(syncStatus.toJSON());\n RwLog.error(SOURCE, `Unhandled setRouteStatusInfo \\n${statusText} \\n\\n${errText}`);\n if (initRoute) initRoute.assignCode = assignCodeInit;\n })\n .finally(() => {\n this.addRoute(route);\n self.onRouteNew(routeNew);\n })\n } else {\n this.addRoute(route);\n self.onRouteNew(routeNew);\n }\n })\n .catch(err => {\n if (this.checkNotHandled(err)) {\n let status = !!err.Code ? err.Code : err.status;\n let errDesc = err && err.description ? err.description : \"no description\";\n this.showSnack(`Route Creation Failed: ${errDesc}`, \"error\");\n if (status === 403) {\n RwLog.warn(SOURCE, `Forbidden: ${err}`);\n } else {\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n }\n }\n });\n } else {\n RwLog.error(SOURCE, `Missing User`);\n this.logOut();\n this.showSnack('Session Invalid', 'error');\n }\n // this.close();\n }\n\n //#endregion Popups\n\n\n //region Common Map Ops\n\n hidpi: boolean = true;\n stopPinSize: H.math.ISize = {w: 32, h: 48};\n basePinSize: H.math.ISize = {w: 48, h: 48};\n sitePinSize: H.math.ISize = {w: 24, h: 24};\n drvrPinSize: H.math.ISize = {w: 32, h: 32};\n iconDict: { [color: string]: H.map.Icon } = {};\n\n getIcon(imgUri: string, iconOpts: H.map.Icon.Options): Promise {\n //const self = this;\n\n return new Promise((resolve, reject) => {\n\n let icon: H.map.Icon;\n //let cachedUrl = self.globals.idxURL\n let cachedIcon = this.iconDict[imgUri];\n if (cachedIcon) {\n icon = cachedIcon;\n //console.log(\"CACHE HIT:\", imgUri);\n resolve(icon);\n } else {\n //console.warn(\"CACHE MISS:\", imgUri);\n\n let left5 = imgUri.substring(0, 5);\n if (left5 === \"data:\") {\n //console.log(\"getIcon re-used data:\")\n icon = new H.map.Icon(imgUri, iconOpts);\n this.iconDict[imgUri] = icon;\n resolve(icon);\n } else {\n //console.warn(\"getIcon NETWORK HIT!\", imgUri)\n // dal.axiosCache\n // .get(imgUri, {timeout: RwConstants.NetTimeout, responseType: \"blob\"})\n // .then(res => res.data)\n // .then(blob => URL.createObjectURL(blob))\n // .then(src => {\n // //console.log(\"getIcon imgUri >> src\", imgUri, src);\n // icon = new H.map.Icon(src, iconOpts);\n // self.iconDict[imgUri] = icon;\n // resolve(icon);\n // })\n // .catch((err) => {\n //RwLog.consoleWarn(\"WTF: getIcon\", err.toString());\n const config = {\n timeout: RwConstants.NetTimeout,\n responseType: \"blob\",\n headers: {}\n } as AxiosRequestConfig;\n config.headers.Accept = \"application/json,image/png\";\n\n dal.callSansToken\n .get(imgUri, config)\n .then(res => res.data)\n .then(blob => URL.createObjectURL(blob))\n .then(src => {\n icon = new H.map.Icon(src, iconOpts);\n this.iconDict[imgUri] = icon;\n //console.log(\"getIcon CacheByPass:\", imgUri);\n resolve(icon);\n })\n .catch(err => {\n if (this.checkNotHandled(err)) {\n RwLog.consoleError(\"WTF: getIcon\", err.toString());\n }\n reject(err);\n });\n\n // });\n }\n }\n\n\n // MONITOR: CORS: Options:\n // * Try using iconDict for all URLs; Check effect on CORS\n // * Consider loading image yourself; then pass image vs url\n // ** https://stackoverflow.com/a/27284736\n // ** https://morioh.com/p/f4d331b62cda\n // ** image-downloader https://www.npmjs.com/package/image-downloader\n // ** explicitly add headers to PIN api\n\n\n //return icon;\n\n\n });\n\n }\n\n getIconSize(pinType: RwPinTypes): H.math.ISize {\n let size: H.math.ISize = this.basePinSize;\n switch (pinType) {\n case RwPinTypes.Stop:\n //xREF: SVG: getIconSize\n size = this.stopPinSize;\n //size = this.space.stopPinSize;\n break;\n case RwPinTypes.Task:\n case RwPinTypes.Site:\n case RwPinTypes.Target:\n size = this.sitePinSize;\n break;\n case RwPinTypes.Driver:\n size = this.drvrPinSize;\n break;\n }\n return size;\n }\n\n getAnchorPoint(pinType: RwPinTypes, custAnchor?: H.math.Point): H.math.Point {\n //let self = this;\n let anchor: H.math.Point;\n if (custAnchor) {\n anchor = custAnchor;\n } else {\n\n switch (pinType) {\n\n //xREF: SVG: getAnchorPoint\n case RwPinTypes.Stop:\n anchor = this.hidpi\n ? new H.math.Point(16, 48)\n : new H.math.Point(16, 48);\n // anchor = RwPlannerMap.hidpi\n // ? new H.math.Point(22, 48)\n // : new H.math.Point(22, 48);\n break;\n\n case RwPinTypes.Task:\n case RwPinTypes.Site:\n anchor = this.hidpi\n ? new H.math.Point(12, 12)\n : new H.math.Point(12, 12);\n break;\n\n case RwPinTypes.Driver:\n anchor = this.hidpi\n ? new H.math.Point(16, 16)\n : new H.math.Point(16, 16);\n break;\n\n case RwPinTypes.Target:\n anchor = this.hidpi\n ? new H.math.Point(12, 12)\n : new H.math.Point(12, 12);\n break;\n\n default:\n //Leave blank to use default anchor\n break;\n }\n\n }\n //console.warn(\"getAnchorPoint\", pin.title, pin.type, anchor);\n return anchor;\n }\n\n genericDialogReset(): void {\n theStore.dispatch(\"genericDialogReset\");\n }\n\n //endregion\n\n isActionAvailable(action: number): boolean {\n if (!this.isDriver) return true;\n const uinfo = new RwUser();\n // console.warn('Access Type Read: ', uinfo.formatAccessType);\n if (uinfo.formatAccessType === \"Restricted\") {\n return false;\n } else if (uinfo.formatAccessType === \"Normal\") {\n if (action === this.Actions.deleteStops) return true;\n return false;\n } else if (uinfo.formatAccessType === \"Dispatcher (Restricted)\") {\n // const actions: number[] = [\n // this.Actions.deleteStops,\n // this.Actions.deleteRoutes,\n // this.Actions.deleteSked,\n // this.Actions.deleteFavorite\n // ];\n // if (actions.indexOf(action) === -1) return false;\n return true;\n } else {\n const actions: number[] = [this.Actions.deleteStops, this.Actions.deleteRoutes];\n if (actions.indexOf(action) === -1) return false;\n return true;\n }\n }\n\n //\n loadImgUrls(items) {\n items.forEach(item => this.idxURL[item.hash] = item.svg);\n }\n\n isValidName(v: string): boolean {\n const reg = /^[a-zA-Z0-9 ]+$/i;\n return reg.test(v) && v.length <= 50;\n }\n\n isAlpha(v: string): boolean {\n const alphRegex = /^([0-9a-z]+)$/i;\n return alphRegex.test(v);\n }\n\n isValidDomain(v: string): boolean {\n const regx = /^([a-zA-Z0-9_]+)$/i;\n // return regx.test(v) && (typeof v !== \"undefined\" && v.length >= 3 && v.length <= 13);\n return regx.test(v) && (typeof v !== \"undefined\" && v.length >= 3 && v.length <= 13);\n }\n\n validateAndSaveColor(color) {\n color = color.substr(0, 7);\n let retColor: string;\n const primaryColor = \"#E2004F\";\n const reg = /^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/g;\n if (typeof color === \"object\") {\n // @ts-ignore\n if (color.hex && reg.test(color.hex)) {\n // @ts-ignore\n retColor = color.hex;\n } else {\n retColor = primaryColor;\n this.showSnack(\"There was an error updating the color\", \"error\");\n }\n } else {\n if (!reg.test(color)) {\n retColor = primaryColor;\n this.showSnack(\"There was an error updating the color\", \"error\");\n }\n retColor = color.substr(0, 7);\n }\n return retColor;\n }\n\n\n checkNotHandled(err) {\n return (err && !err.isHandled) || !err;\n }\n\n get isMobileView(): boolean {\n return theStore.getters.isMobileView;\n }\n\n set isMobileView(val: boolean) {\n theStore.dispatch(\"isMobileView\", val);\n }\n\n get isTabletView(): boolean {\n return theStore.getters.isTabletView;\n }\n\n set isTabletView(val: boolean) {\n theStore.dispatch(\"isTabletView\", val);\n }\n\n get recentStopAdd(): boolean {\n return store.getters.recentStopAdd;\n }\n\n set recentStopAdd(val: boolean) {\n store.dispatch(\"recentStopAdd\", val).catch();\n }\n\n setShowOnboardTipsTimer() {\n setTimeout(() => {\n this.showOnboardAddStopArrowActive = true;\n setTimeout(() => {\n this.showOnboardAddStopArrowActive = false;\n this.showOnboardAddStopArrow = false;\n setTimeout(() => {\n this.showOnboardUploadsPopupActive = true;\n setTimeout(() => {\n this.showOnboardUploadsPopup = false;\n setTimeout(() => {\n this.showOnboardUploadsPopupActive = false;\n }, RwConstants.OnboardUploadsActiveTimer);\n }, RwConstants.OnboardUploadsPopupDuration);\n }, RwConstants.OnboardUploadsPopupDelay);\n }, RwConstants.OnboardArrowDuration);\n }, RwConstants.OnboardTipsDelay);\n }\n\n setShowPODCallout(): void {\n if (!this.showedPODCallout && !this.showOnboardUploadsPopup) {\n setTimeout(() => this.showPODCallout = true, 10000);\n }\n }\n\n}\n\nexport default new RwGlobals();\n\n\n\n\n","import {RwLog} from \"@/app/dal/RwLog\";\n\nexport class RwLocalDB {\n\n schema = {\n stores: [\n {\n name: \"svgs\",\n keyPath: \"hash\"\n }\n ]\n };\n options = {\n Encryption: {\n encryptKey: false, // optional encrypt primary key\n method: 'rc4', // default is 'acs-cbc'\n secrets: [{\n name: 'aaaa',\n key: 'aYHF6vfuGHpfWS*eRLrPQxZjSó~ɔ5c6HjCscqDqRtZasp¡JWSMGaW'\n }]\n }\n };\n // @ts-ignore\n db = new ydn.db.Storage('mainData', this.schema, this.options);\n\n delete(store, key) {\n const SOURCE = \"RwLocalDB.delete\";\n this.db\n .remove(store, key)\n .fail(ex => this.handleException(SOURCE, ex, key));\n };\n\n getAll(store): Promise {\n const SOURCE = \"RwLocalDB.getAll\";\n const df = this.db.values(store);\n return df.fail(ex => this.handleException(SOURCE, ex))\n };\n\n\n add(store, item) {\n const SOURCE = \"RwLocalDB.add\";\n this.db.put(store, item)\n .fail(ex => this.handleException(SOURCE, ex));\n };\n\n init() {\n const SOURCE = \"RwLocalDB.init\";\n const svgs = this.getAll(\"svgs\");\n return Promise.all([svgs]).catch(ex => this.handleException(SOURCE, ex))\n }\n\n handleException(SOURCE, ex, key = null) {\n let name = null;\n let msg = null;\n if (ex.name) name = ex.name;\n if (ex.message) name = ex.message;\n if (name || msg) RwLog.error(SOURCE, `Unhandled: key:${key} \\n\\nError: ${name} \\nMessage: ${msg}`);\n else RwLog.error(SOURCE, `Unhandled: key:${key} \\n\\n${JSON.stringify(ex)}`);\n }\n}\n\nexport default new RwLocalDB();\n","export default class RwEvents {\n static OpenSnackBar = \"OPEN_SNACKBAR\";\n static Logout = \"LOGOUT\";\n static RouteRefresh = \"RT_REFRESH\";\n static StopUpdate = \"STP_UPDATE\";\n static MapReRender = \"MAP_RERENDER\";\n}\n","export default class RwPages {\n static Register = \"register\";\n static Login = \"login\";\n static ResetPassword = \"resetpassword\";\n static ProInfo = \"pro\";\n static RouteList = \"routes\";\n static Planner = \"planner\";\n static CompleteRegistration = \"purchasesuccess\";\n static Upgrade = \"upgrade\";\n static Uploads = \"uploads\";\n static Tasks = \"tasks\";\n static Favorites = \"sites\";\n static ForgotPassword = \"forgotpassword\";\n static Unsubscribe = \"unsubscribe\";\n static ReferralOnboard = \"referonboard\";\n static Account = \"account\";\n static Marketplace = \"marketplace\";\n static Drivers = \"drivers\";\n}\n","export default class RwStrings {\n static BaseTitle = \"RoadWarrior\";\n}\n","import router from \"@/router\";\nimport axios, {AxiosError, AxiosInstance, AxiosRequestConfig, AxiosResponse} from \"axios\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwTaskAccounts} from \"@/app/dal/RwTaskAccounts\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwLoginIssues} from \"../RwEnums\";\nimport RwPages from \"@/app/consts/RwPages\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport moment from \"moment\";\n\n\nclass RwDal {\n\n callWithToken: AxiosInstance;\n callSansToken: AxiosInstance;\n\n private requestQueue = [];\n private refreshCount = 0;\n private isRefreshing = false;\n static isRefreshing = false;\n\n constructor() {\n this.configCallWithToken();\n this.configCallSansToken();\n }\n\n\n config: AxiosRequestConfig = {\n timeout: RwConstants.NetTimeout,\n baseURL: RwConstants.CoreUri,\n headers: {\n Accept: \"application/json\",\n AuthToken: RwPrefUtils.token,\n \"Cache-Control\": \"no-cache\",\n \"Content-Type\": \"application/json\",\n \"RwVer\": RwConstants.flexVersion\n }\n };\n\n\n configCallWithToken() {\n const self = this;\n this.callWithToken = axios.create(this.config);\n\n this.callWithToken.interceptors.request.use(function (config: AxiosRequestConfig) {\n const SOURCE = \"callWithToken.request\";\n\n let tkn = RwPrefUtils.token;\n if (RwSysUtils.isGuidReal(tkn)) {\n self.addBusy();\n config.headers[\"AuthToken\"] = tkn;\n\n self.getAuthToken()\n .then(token => {\n\n if (!RwSysUtils.isGuidReal(token)) {\n self.removeBusy();\n RwLog.error(SOURCE, `getAuthToken -> token == null, prefs.token == null`);\n throw new axios.Cancel(\"Canceled Request\");\n }\n config.headers[\"AuthToken\"] = token;\n\n })\n .catch(err => {\n self.removeBusy();\n throw new axios.Cancel(\"Canceled Request\");\n })\n } else {\n self.removeBusy();\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n self.forceLogout(logErr);\n\n throw new axios.Cancel(\"Canceled Request\");\n }\n\n return config;\n });\n\n this.callWithToken.interceptors.response.use(\n function (resp: AxiosResponse) {\n const SOURCE = \"callWithToken.onFulfilled\";\n if (resp) {\n if (resp.config) {\n //console.log(\"RwDal resp\", `${resp.config.url} -> ${resp.status}`, resp.data);\n //RwLog.consoleLog(\"RwDal resp\", `${resp.config.url} -> ${resp.status}`, JSON.stringify(resp.data ));\n } else {\n RwLog.error(SOURCE, `NO CONFIG \\n\\nResponse:\\n${resp}`);\n }\n } else {\n RwLog.error(SOURCE, \"NO Response\");\n }\n\n self.removeBusy();\n return resp;\n },\n\n function (error: AxiosError) {\n const SOURCE = \"callWithToken.onRejected\";\n\n let isNetError = self.isNetworkError(error);\n if (!isNetError) {\n\n const url = error.config?.url ?? \"\";\n const method = error.config?.method?.toUpperCase() ?? \"\";\n let token = error.config?.headers[\"AuthToken\"] ?? RwConstants.EmptyGuid;\n let payload = error.config?.data ?? \"\";\n let tknText = (token == RwPrefUtils.token) ? `\\nAuthToken:${token}` : `\\nAuthToken:${token} != RwPrefs.Token:${RwPrefUtils.token}`\n let payText = method == \"GET\" ? \"\" : `\\nPayload:\\n${payload}`;\n let status = error.response ? error.response.status : 0;\n let reqText = `${method} ${url} -> ${status} ${tknText} ${payText}`;\n\n if (error && error.config) {\n\n let errText = JSON.stringify(error);\n if (error.response) {\n // client received an error response (5xx, 4xx)\n\n //HACK: sometimes token == null;\n if (!token && RwPrefUtils.token) {\n RwLog.error(SOURCE, `HACK: token == null, prefs:${RwPrefUtils.token}`);\n error.config.headers[\"AuthToken\"] = RwPrefUtils.token;\n self.config.headers[\"AuthToken\"] = RwPrefUtils.token;\n }\n\n switch (status) {\n\n case 401: {\n\n const originalRequest = error.config;\n self.getRefreshedToken()\n .then(function (newToken) {\n //console.log(SOURCE,`getRefreshedToken -> pref:${RwPrefUtils.token}, ${newToken}`)\n\n //HACK:\n if (!newToken && RwPrefUtils.token) {\n RwLog.error(SOURCE, `HACK getRefreshedToken, newToken == null, set to prefs:${RwPrefUtils.token}`);\n newToken = RwPrefUtils.token;\n }\n originalRequest.headers[\"AuthToken\"] = newToken;\n axios(originalRequest)\n .then(resp => {\n self.removeBusy();\n })\n .catch(error => {\n self.removeBusy();\n RwLog.warn(SOURCE, `RETRY ${originalRequest.url} \\nAuthToken:${newToken} \\n\\n${error}`)\n return Promise.reject(error);\n });\n })\n .catch(errRefresh => {\n self.removeBusy();\n //console.error(SOURCE, `getRefreshedToken -> ${errRefresh}`)\n let logErr = new RwLoginError(status, true, errRefresh, RwLoginIssues.RefreshFailed);\n self.forceLogout(logErr);\n return Promise.reject(logErr);\n });\n\n }\n case 403: {\n self.removeBusy();\n RwLog.warn(SOURCE, `${reqText} \\n\\n${errText}`);\n let logErr = new RwLoginError(status, true, error, RwLoginIssues.LoginDisabled);\n self.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n case 404: {\n self.removeBusy();\n RwLog.warn(SOURCE, `\\n${reqText} \\n\\n${errText}`);\n return Promise.reject(new RwError(status, false, error));\n }\n case 406: {\n self.removeBusy();\n RwLog.warn(SOURCE, `\\n${reqText} \\n\\n${errText}`);\n let logErr = new RwLoginError(status, true, error, RwLoginIssues.SeshAlt);\n self.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n case 409: {\n self.removeBusy();\n RwLog.warn(SOURCE, `\\n${reqText} \\n\\n${errText}`);\n return Promise.reject(new RwError(status, false, error));\n }\n case 412:\n case 499: {\n // Note 499: This is the response if FedEx/OnTrac needs ReAuth\n self.removeBusy();\n RwLog.warn(SOURCE, `${reqText}, needs external auth \\n\\n${errText}`);\n return Promise.reject({code: status, data: error.response.data});\n }\n case 420: {\n //Note 409, 420: This is the response from Too Many Stations relative to number of drivers\n self.removeBusy();\n RwLog.warn(SOURCE, `${reqText}, Too Many Stations / Drivers \\n\\n${errText}`);\n return Promise.reject(new RwError(status, false, error));\n }\n // Network/service errors\n case 503: {\n self.removeBusy();\n RwLog.warn(SOURCE, `503 network err${reqText} \\n\\n${errText}`);\n return Promise.reject(new RwError(status, true, error));\n }\n case 504: {\n self.removeBusy();\n RwLog.warn(SOURCE, `504 network err ${reqText} \\n\\n${errText}`);\n return Promise.reject(new RwError(status, true, error));\n }\n\n default: {\n self.removeBusy();\n RwLog.error(SOURCE, `${reqText} \\n\\n${errText}`);\n return Promise.reject(new RwError(status, false, error));\n }\n }\n } else {\n self.removeBusy();\n if (error.request) {\n let reqText = JSON.stringify(error.request);\n RwLog.error(SOURCE, `NO RESPONSE: ${error.message} \\n${reqText}`);\n } else {\n // anything else\n RwLog.error(SOURCE, `NO RESPONSE; NO REQUEST: ${error.message} \\n${reqText}`);\n }\n return Promise.reject(new RwError(status, false, error));\n }\n } else if (error && error.message == \"Forced log out\") {\n self.removeBusy();\n return Promise.reject(new RwError(403, true, error));\n } else {\n self.removeBusy();\n //let errJson = JSON.stringify(error);\n let isCanceled = error && error.message && error.message === \"Canceled Request\";\n if (isCanceled) {\n RwLog.warn(SOURCE, `CANCELED \\n${reqText}`);\n let rwErr = new RwError(403, true, \"Canceled request: Empty token\");\n self.forceLogout(rwErr);\n return Promise.reject(rwErr);\n } else {\n RwLog.error(SOURCE, `$Missing Error && Error.Config \\n${reqText}`);\n return Promise.reject(new RwError(500, false, error));\n }\n }\n } else {\n self.removeBusy();\n if (!self.isNetworkDown(error)) {\n RwLog.warn(SOURCE, `isNetError: ${error.message} \\n\\n${JSON.stringify(error)}`);\n }\n return Promise.reject(new RwError(504, true, error));\n }\n }\n );\n }\n\n\n configCallSansToken() {\n const self = this;\n\n this.callSansToken = axios.create(this.config);\n\n this.callSansToken.interceptors.request.use(function (config: AxiosRequestConfig) {\n return config;\n });\n\n this.callSansToken.interceptors.response.use(\n function (resp: AxiosResponse) {\n const SOURCE = \"callSansToken.onFulfilled\";\n\n if (resp) {\n if (!resp.config) {\n RwLog.error(SOURCE, `NO CONFIG \\n\\nResponse:\\n${resp}`);\n }\n } else {\n RwLog.error(SOURCE, \"NO Response\");\n }\n\n return resp;\n },\n\n function (error: AxiosError) {\n const SOURCE = \"callSansToken.onRejected\";\n\n let isNetError = self.isNetworkError(error);\n if (!isNetError) {\n\n if (error) {\n\n if (error.config) {\n\n const url = error.config.url;\n const method = error.config.method.toUpperCase();\n const payload = error.config.data;\n let payloadText = (method == \"GET\") ? \"\" : `\\nPayload:${payload}`;\n let status = error.response ? error.response.status : \"?\";\n let reqText = `${method} ${url} -> ${status} ${payloadText}`;\n let errText = JSON.stringify(error);\n\n if (error.response) {\n switch (status) {\n case 400:\n let urlLow = url.toLowerCase();\n let isImgError = urlLow.indexOf(\"/img/pin\") > -1;\n if (isImgError) {\n //HACK: Set img errors to warn level; they are overly cluttering logs.\n RwLog.warn(SOURCE, `${reqText} \\n\\n${errText}`);\n } else {\n RwLog.error(SOURCE, `${reqText} \\n\\n${errText}`);\n }\n break;\n\n case 401:\n case 403:\n case 404:\n RwLog.warn(SOURCE, `${reqText} \\n\\n${errText}`);\n break;\n\n default:\n RwLog.error(SOURCE, `${reqText} \\n\\n${errText}`);\n break;\n }\n } else {\n RwLog.error(SOURCE, `NO RESPONSE: ${error.message} \\n${reqText} \\n\\n${errText}`);\n }\n } else {\n RwLog.error(SOURCE, `NO CONFIG: ${error}`);\n }\n } else {\n RwLog.error(SOURCE, `NO ERROR`);\n }\n\n return Promise.reject(error);\n } else {\n if (!self.isNetworkDown(error)) {\n RwLog.warn(SOURCE, `isNetError: ${error.message} \\n\\n${error.toJSON}`);\n }\n return Promise.reject(new RwError(0, true, error));\n }\n\n }\n );\n\n }\n\n\n isNetworkDown(error: AxiosError) {\n let isNetDown = false;\n if (error && error.message && error.stack) {\n let msgLow = error.message.toLowerCase();\n let stackLow = error.stack.toLowerCase();\n\n isNetDown =\n msgLow.indexOf(\"network error\") > -1 ||\n stackLow.indexOf(\"network error\") > -1;\n }\n return isNetDown;\n }\n\n\n isNetworkError(error: AxiosError) {\n let isNetError = false;\n if (error && error.message && error.stack) {\n let msgLow = error.message.toLowerCase();\n let stackLow = error.stack.toLowerCase();\n\n isNetError =\n msgLow.indexOf(\"network error\") > -1 ||\n msgLow.indexOf(\"request aborted\") > -1 ||\n msgLow.indexOf(\"timeout\") > -1 ||\n stackLow.indexOf(\"network error\") > -1 ||\n stackLow.indexOf(\"request aborted\") > -1 ||\n stackLow.indexOf(\"timeout\") > -1;\n }\n return isNetError;\n }\n\n\n forceLogout(error?: RwError) {\n this.isRefreshing = false;\n this.refreshCount = 0;\n this.requestQueue = [];\n\n RwLog.warn(\"RwDal.logout\", `Forced Logout: ${error}`);\n //RwLog.warn(\"RwDal.logout\", `Forced Logout: \\n${JSON.stringify(error)}`);\n theGlobals.logOut();\n\n\n if (error instanceof RwLoginError) {\n let logErr = error as RwLoginError;\n window.location.replace(`/login/${logErr.failCode}`);\n } else {\n window.location.replace(RwPages.Login);\n }\n\n }\n\n\n addSubscriber(callback) {\n this.requestQueue.push(callback);\n }\n\n\n addBusy() {\n if (this.isRefreshing == false) {\n this.refreshCount++;\n if (this.refreshCount >= 1) {\n theGlobals.isLoading = true;\n }\n }\n }\n\n\n removeBusy() {\n if (this.isRefreshing == false) {\n this.refreshCount--;\n if (this.refreshCount <= 0) {\n theGlobals.isLoading = false;\n this.refreshCount = 0;\n }\n }\n }\n\n\n public gotToken(): boolean {\n let token = RwPrefUtils.token;\n let gotToken = RwSysUtils.isGuidReal(token);\n return gotToken;\n }\n\n\n public getAuthToken(): Promise {\n let self = this;\n const SOURCE = \"RwDal.getAuthToken\";\n\n return new Promise(function (resolve, reject) {\n\n let isValidToken = false;\n let token = RwPrefUtils.token;\n if (self.gotToken()) {\n let now = moment();\n let lastRefresh = theGlobals.lastToken;\n let duration = moment.duration(now.diff(lastRefresh));\n if (duration.asDays() < 5.0) {\n isValidToken = true;\n }\n //console.log(SOURCE, `isTokenSet:${true}, token:${token}, lastRefresh:${lastRefresh}, isValidToken:${isValidToken}`);\n }\n\n if (isValidToken) {\n //console.log(SOURCE, \"GOT cached token\", token);\n resolve(token)\n } else {\n //console.warn(SOURCE, \"refreshing cached token\", token);\n\n self.getRefreshedToken()\n .then(function (newToken: string) {\n resolve(newToken);\n })\n .catch(ex => {\n let err = new RwLoginError(403, true, ex, RwLoginIssues.SeshExpired);\n self.forceLogout(err);\n reject(err)\n });\n }\n\n });\n }\n\n\n refreshPromise: Promise;\n\n public async getRefreshedToken(): Promise {\n return await this.getRefreshSingleton();\n }\n\n private async getRefreshSingleton(): Promise {\n const self = this;\n if (!self.refreshPromise) {\n //console.log(\"RwDal.getRefreshSingleton\", \"NEW PROMISE SET\")\n self.refreshPromise = self.refreshToken();\n //self.refreshPromise = RwTaskAccounts.RenewSesh();\n }\n return self.refreshPromise;\n }\n\n\n private refreshToken(): Promise {\n const self = this;\n return new Promise(function (resolve, reject) {\n RwTaskAccounts.RenewSesh()\n .then(function (newToken: string) {\n //console.log(\"RwDal.refreshToken\", `NEW TOKEN: pref:${RwPrefUtils.token}, newToken:${newToken}`)\n resolve(newToken);\n self.refreshPromise = null;\n })\n .catch(err => {\n reject(err);\n self.refreshPromise = null;\n });\n });\n }\n\n}\n\n\nexport default new RwDal();\n","import {RwLog} from \"@/app/dal/RwLog\";\n\nexport class RwDeltas {\n\n adds = [];\n removes = [];\n deltas = [];\n\n get gotAdds(): boolean {\n return this.adds.length > 0;\n }\n\n get gotRemoves(): boolean {\n return this.removes.length > 0;\n }\n\n get gotDeltas(): boolean {\n return this.deltas.length > 0;\n }\n\n static getDeltas(newVals: any[], oldVals: any[], lastCheckPoint: number): RwDeltas {\n\n let deltas = new RwDeltas();\n let newLen = newVals ? newVals.length : 0;\n let oldLen = oldVals ? oldVals.length : 0;\n let gotNew = newLen > 0;\n let gotOld = oldLen > 0;\n //console.log(\"watchStops (new, old)\", newLen, oldLen);\n\n if (gotNew && gotOld) {\n let common: any[] = newVals.filter(item => oldVals.indexOf(item) >= 0);\n deltas.adds = newVals.filter(item => oldVals.indexOf(item) === -1);\n deltas.removes = oldVals.filter(item => newVals.indexOf(item) === -1);\n deltas.deltas = common.filter(item => item.lastHash > lastCheckPoint);\n\n // deltas.deltas.forEach(d => {\n // console.warn(\"getDeltas\", `${d.title} lastHash:${d.lastHash} > ts:${lastCheckPoint} == ${d.lastHash > lastCheckPoint}`);\n // })\n //deltas.deltas = common.filter(item => item.lastUpdate > lastCheckPoint );\n } else if (gotNew) {\n deltas.adds = newVals;\n } else if (gotOld) {\n deltas.removes = oldVals;\n }\n return deltas;\n }\n\n\n static getStopDeltas(newVals: any[], oldVals: any[], lastCheckPoint: number): RwDeltas {\n\n let deltas = new RwDeltas();\n let newLen = newVals ? newVals.length : 0;\n let oldLen = oldVals ? oldVals.length : 0;\n let gotNew = newLen > 0;\n let gotOld = oldLen > 0;\n //console.log(\"watchStops (new, old)\", newLen, oldLen);\n\n if (gotNew && gotOld) {\n let common: any[] = newVals.filter(item => oldVals.indexOf(item) >= 0);\n deltas.adds = newVals.filter(item => oldVals.indexOf(item) === -1);\n deltas.removes = oldVals.filter(item => newVals.indexOf(item) === -1);\n deltas.deltas = common.filter(item => item.lastHash > lastCheckPoint);\n } else if (gotNew) {\n deltas.adds = newVals;\n } else if (gotOld) {\n deltas.removes = oldVals;\n }\n return deltas;\n }\n\n\n print(source?: string) {\n let message = `adds:${this.adds.length}, removes:${this.removes.length}, deltas:${this.deltas.length}`;\n RwLog.consoleWarn(source, message);\n }\n\n}\n\n//export default new RwDeltas();\n","import {RwUser} from \"@/app/dem/RwUser\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLogLevels} from \"@/app/RwEnums\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\n\nexport class RwLog {\n static get isLoggingInfos() {\n return RwConstants.LogLevel >= RwLogLevels.Info;\n }\n\n static get isLoggingWarns() {\n return RwConstants.LogLevel >= RwLogLevels.Warn;\n }\n\n static get isLoggingErrs() {\n return RwConstants.LogLevel >= RwLogLevels.Error;\n }\n\n static consoleLog(...optionalParams: any[]): void {\n if (RwConstants.isDevMode && RwLog.isLoggingInfos) {\n console.log(...optionalParams);\n }\n }\n\n static consoleWarn(...optionalParams: any[]): void {\n if (RwConstants.isDevMode && RwLog.isLoggingWarns) {\n console.warn(...optionalParams);\n }\n }\n\n static consoleError(...optionalParams: any[]): void {\n if (RwConstants.isDevMode && RwLog.isLoggingErrs) {\n console.error(...optionalParams);\n }\n }\n\n static log(source: string, message: string) {\n if (RwConstants.isDevMode) RwLog.consoleLog(source, message);\n return RwLog.report(source, message, 2);\n }\n\n static warn(source: string, message: string) {\n if (RwConstants.isDevMode) RwLog.consoleWarn(source, message);\n return RwLog.report(source, message, 1);\n }\n\n static error(source: string, message: string) {\n if (RwConstants.isDevMode) RwLog.consoleError(source, message);\n return RwLog.report(source, message, 0);\n }\n\n //REVIEW: Not sure if this is helping; Unexplained type errors occurring.\n //Eliminating for now; to see if type errors go away\n static getErrorFormattedXXX(err: Error, ...parseableObjects): string {\n\n let errorData = `Unhandled: ${err.message}\n ============\n Stack trace:\n ${err.stack || \"\"}`;\n\n for (let obj of parseableObjects) {\n let str = \"\";\n try {\n if (!obj.title) obj.title = \"Title Missing\";\n if (Object.keys(obj).indexOf(\"data\") === -1) throw new Error(\"Data missing.\");\n str = JSON.stringify(obj.data);\n } catch (e) {\n str = e.message;\n }\n errorData += `\n ============\n ${obj.title || \"\"}:\n ${str}`;\n }\n return errorData;\n }\n\n private static report(source: string, message: string, severity: number) {\n\n let uinfo = new RwUser();\n let report = new RwReportInfo();\n\n let userId = uinfo.userId;\n if (!RwSysUtils.isGuid(userId)) {\n userId = RwConstants.EmptyGuid;\n }\n\n report.source = source;\n report.message = message;\n report.severity = severity;\n report.userId = userId;\n report.deviceId = uinfo.deviceId;\n report.sdk = uinfo.platform;\n report.version = RwConstants.flexVersion;\n let payload = report.toJSON();\n\n let url = `${RwConstants.CoreUri}/reports/errors`;\n\n dal.callSansToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .catch(error => {\n if ((error && !error.isHandled) || !error) {\n RwLog.consoleError(\"RwLog.report\", `Unhandled POST ${url} \\nAuthToken:${RwPrefUtils.token} \\nPayload:${payload} \\n\\n${error.message} \\n\\n`);\n }\n });\n\n }\n}\n\n\nexport class RwReportInfo {\n userId: string;\n version: string;\n source: string;\n sdk: string;\n severity: number;\n message: string;\n memberId: string;\n deviceId: string;\n\n toJSON() {\n let json = {\n userId: this.userId ?? RwConstants.EmptyGuid,\n source: this.source,\n stacktrace: this.message,\n sev: this.severity,\n sdk: this.sdk,\n version: this.version,\n memberId: this.memberId,\n device: this.deviceId\n };\n return json;\n }\n}\n","import theGlobals from \"@/app/RwGlobals\";\nimport thePlan from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSkuInfo} from \"@/app/dem/Profile/RwSkuInfo\";\nimport {RwAvatarInfo} from \"@/app/dem/RwUser\";\n\nexport interface Skufo {\n active: number;\n autoRenew: number;\n exp: any;\n oid: string;\n quantity: number;\n renew: any;\n sku: string;\n}\n\nexport class RwLoginResponse {\n accessType: number;\n acttp: number;\n aid: string;\n atp: number;\n imgsrc: number;\n lang: string;\n lat: number;\n lng: number;\n //mid: string;\n nm: string;\n pro: boolean;\n skufo: Skufo[];\n skus: string[];\n tkn: string;\n uid: string;\n un: string;\n upg: boolean; // Needs Upgrade\n iid: string;\n bid: string;\n parid: string;\n OrgId: string;\n role: number;\n avInfo: RwAvatarInfo;\n rct: boolean;\n\n static fromJson(json: JSON): RwLoginResponse {\n let resp: RwLoginResponse = null;\n if (json) {\n\n resp = new RwLoginResponse();\n\n //console.log(\"RwLoginResponse\", json);\n\n for (var key in json) {\n let val = json[key];\n switch (key) {\n case \"avInfo\":\n let avInfo = RwAvatarInfo.fromJson(val);\n resp.avInfo = avInfo;\n theGlobals.avInfo = avInfo;\n break;\n\n case \"lat\":\n resp.lat = val;\n break;\n case \"lng\":\n resp.lng = val;\n break;\n\n case \"tkn\":\n resp.tkn = val;\n theGlobals.token = val;\n break;\n case \"uid\":\n resp.uid = val;\n theGlobals.userId = val;\n RwPrefUtils.userId = val;\n break;\n case \"un\":\n resp.un = val;\n theGlobals.userName = val;\n RwPrefUtils.userName = val;\n //console.warn(\"un pulled:\", val);\n break;\n case \"nm\":\n resp.nm = val;\n theGlobals.dispName = val;\n RwPrefUtils.dispName = val;\n //console.warn(\"dispName pulled:\", val);\n\n case \"pro\":\n resp.pro = val;\n theGlobals.isPro = val;\n break;\n case \"aid\":\n resp.aid = val;\n theGlobals.accountId = val;\n RwPrefUtils.accountId = val;\n break;\n\n case \"skus\":\n resp.skus = val;\n break;\n\n case \"skufo\":\n theGlobals.skuInfos = RwSkuInfo.fromJsonArray(val);\n RwPrefUtils.skuInfosJson = JSON.stringify(val);\n // console.warn ('skuInfos:', theGlobals.skuInfos);\n break;\n\n case \"imgsrc\":\n resp.imgsrc = val;\n theGlobals.imgSrc = val;\n break;\n case \"iid\":\n resp.iid = val;\n theGlobals.installId = val;\n RwPrefUtils.installId = val;\n break;\n case \"did\":\n case \"device\":\n //resp.did = val;\n theGlobals.deviceId = val;\n RwPrefUtils.deviceId = val;\n break;\n case \"eid\":\n //resp.eid = val;\n theGlobals.extId = val;\n break;\n case \"et\":\n //resp.et = val;\n theGlobals.extType = val;\n break;\n case \"extd\":\n //resp.extd = val;\n theGlobals.extDate = val;\n break;\n case \"subt\":\n //resp.subt = val;\n theGlobals.isSubTeam = val;\n break;\n case \"pd\":\n //resp.pd = val;\n theGlobals.parentDomain = val;\n break;\n case \"max\":\n case \"maxrtsz\":\n //resp.maxrtsz = val;\n thePlan.maxRouteSize = val;\n RwPrefUtils.maxRouteSize = val;\n break;\n case \"OrgId\":\n resp.OrgId = val;\n theGlobals.orgId = val;\n break;\n case \"subdm\":\n //resp.subdm = val;\n theGlobals.subDomain = val;\n break;\n case \"orgs\":\n //resp.orgs = val;\n theGlobals.orgs = val;\n break;\n case \"admemail\":\n //resp.admemail = val;\n theGlobals.adminEmail = val;\n break;\n\n case \"atype\":\n case \"acttp\":\n resp.acttp = val;\n theGlobals.isTeam = val == 1;\n //RwPrefUtils.isTeam = json[key] != 0;\n break;\n\n case \"accesstype\":\n resp.accessType = val;\n RwPrefUtils.userAccessType = val;\n break;\n\n case \"role\":\n case \"utp\":\n resp.role = val;\n theGlobals.role = val;\n break;\n\n case \"rct\":\n resp.rct = val;\n break;\n\n default:\n //console.warn(`unhandled json: ${key} : ${val}`)\n break;\n }\n\n //Check for missing defaults\n if (!json[\"role\"] && !json[\"utp\"]) {\n resp.role = 0;\n theGlobals.role = 0;\n }\n\n if (!json[\"atype\"] && !json[\"acttp\"]) {\n resp.acttp = 0;\n }\n\n }\n }\n return resp\n }\n\n}\n","import store from \"@/app/RwGlobals\"\n\nexport class RwRegInfo {\n paymentChanged: boolean = false;\n\n phone: string;\n address: string;\n name: string;\n coname: string;\n\n isUpgrade: boolean;\n\n domain: string;\n\n userId: string;\n userName: string;\n password: string;\n token: string;\n cancelCreditString: string;\n askToCancelCredit: boolean = false;\n memberId: string;\n promptForIndi: boolean = false;\n hasIosSub: boolean;\n hasAndroidSub: boolean;\n hasWebSub: boolean;\n\n static fromJSON(json): RwRegInfo {\n var regInfo = new RwRegInfo();\n\n if (json != null) {\n for (var key in json) {\n switch (key.toLowerCase()) {\n case \"token\":\n store.token = json[key];\n regInfo.token = json[key];\n break;\n case \"userid\":\n store.userId = json[key];\n regInfo.userId = json[key];\n break;\n case \"username\":\n store.userName = json[key];\n regInfo.userName = json[key];\n break;\n case \"password\":\n regInfo.password = json[key];\n break;\n case \"coname\":\n regInfo.coname = json[key];\n break;\n case \"name\":\n regInfo.name = json[key];\n break;\n case \"phone\":\n regInfo.phone = json[key];\n break;\n case \"address\":\n regInfo.address = json[key];\n break;\n case \"isupgrade\":\n regInfo.isUpgrade = json[key];\n break;\n\n case \"domain\":\n regInfo.domain = json[key];\n break;\n\n case \"creditcancelresult\":\n regInfo.cancelCreditString = json[key];\n break;\n\n case \"asktocancelcredit\":\n regInfo.askToCancelCredit = json[key];\n break;\n\n case \"hasiossub\":\n regInfo.hasIosSub = json[key];\n break;\n\n case \"hasandroidsub\":\n regInfo.hasAndroidSub = json[key];\n break;\n\n case \"haswebsub\":\n regInfo.hasWebSub = json[key];\n break;\n\n case \"memberid\":\n regInfo.memberId = json[key];\n break;\n\n case \"promptforindi\":\n regInfo.promptForIndi = json[key];\n break;\n }\n }\n }\n\n return regInfo;\n }\n\n toJSON() {\n let json = {};\n\n if (this.userId != null) {\n json[\"uid\"] = this.userId;\n }\n if (this.userName != null) {\n json[\"uname\"] = this.userName;\n }\n if (this.password != null) {\n json[\"upass\"] = this.password;\n }\n if (this.token != null) {\n json[\"tkn\"] = this.token;\n }\n\n if (this.name != null) {\n json[\"name\"] = this.name;\n }\n if (this.address != null) {\n json[\"address\"] = this.address;\n }\n if (this.phone != null) {\n json[\"phone\"] = this.phone;\n }\n if (this.coname != null) {\n json[\"coname\"] = this.coname;\n }\n\n return json;\n }\n}\n","import {RwUser} from \"@/app/dem/RwUser\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwLoginResponse} from \"@/app/dem/Profile/RwLoginResponseModel\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwRegInfo} from \"@/app/dem/RwRegInfo\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport globals from \"@/app/RwGlobals\";\nimport UnsubModel from \"@/app/dem/Profile/UnsubModel\";\nimport moment from \"moment\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport RwHasPendingPurchaseResponse from \"@/app/dem/Profile/RwHasPendingPurchaseResponse\";\nimport {RwSkuInfo} from \"@/app/dem/Profile/RwSkuInfo\";\nimport RwTrialUpgradeResponseModel, {TrialUpgradeErrorType} from \"@/app/dem/Profile/RwTrialUpgradeResponseModel\";\n\n\nexport class RwTaskAccounts {\n\n\n static checkUserName(username: string): Promise {\n //console.log(username);\n return new Promise((resolve, reject) => {\n let encName = encodeURIComponent(username);\n let baseUrl = RwConstants.CoreUri;\n let url = `${baseUrl}/account/checkName?uname=${encName}`;\n //console.log(url);\n\n dal.addBusy();\n dal.callSansToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n dal.removeBusy();\n resolve(res.status);\n })\n .catch(error => {\n dal.removeBusy();\n reject(error);\n });\n });\n }\n\n static login(userName: string, password: string): Promise {\n let self = this;\n return new Promise(function (resolve, reject) {\n let uinfo = new RwUser();\n uinfo.userName = userName;\n uinfo.userPass = password;\n let payload = uinfo.toJSON();\n const iid = RwPrefUtils.installId\n ? RwPrefUtils.installId\n : RwConstants.EmptyGuid;\n\n let url = `${RwConstants.CoreUri}/account/login?iid=${iid}`;\n\n dal.addBusy();\n dal.callSansToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n\n dal.removeBusy();\n const json = res && res.data;\n let responseModel: RwLoginResponse = null;\n if (json != null) {\n responseModel = RwLoginResponse.fromJson(json);\n }\n resolve(responseModel);\n })\n .catch(error => {\n dal.removeBusy();\n let logData = error && error.response && (error.response.data as RwLoginError);\n if (logData) {\n reject(logData);\n } else {\n reject(error);\n }\n })\n .finally(() => dal.removeBusy())\n\n });\n }\n\n static CompletePendingPurch(): Promise {\n const SOURCE = \"RwTaskAccounts.CompletePendingPurch\";\n\n return new Promise(function (resolve, reject) {\n RwLog.log(SOURCE, \"Completing unfulfilled pending purchases\");\n let url = `${RwConstants.CoreUri}/profile/completePendingPurchase`;\n dal.callWithToken\n .post(url, null, {timeout: RwConstants.ExtendedTimeout})\n .then(res => {\n if (res.status === 200) {\n const json = res.data;\n let regInfo = RwRegInfo.fromJSON(json);\n globals.isPro = true;\n resolve(regInfo);\n } else {\n resolve(null);\n }\n })\n .catch((error) => {\n if (error instanceof RwError) {\n RwLog.consoleError(\"handled error\");\n } else {\n const status = error.response ? error.response.status : null;\n RwLog.warn(\n SOURCE,\n `Error:${status}, ${error.request}`\n );\n reject(error);\n }\n });\n\n });\n }\n\n static HasPendingPurch(): Promise {\n const SOURCE = \"RwTaskAccounts.HasPendingPurch\";\n return new Promise(function (resolve, reject) {\n RwLog.log(SOURCE, \"Checking for unfulfilled pending purchase\");\n let url = `${RwConstants.CoreUri}/profile/haspendingpurchase`;\n dal.callWithToken\n .post(url, null, {timeout: RwConstants.ShortTimeout})\n .then(res => {\n const json = res.data;\n let hasPendingPurchResponse = json as RwHasPendingPurchaseResponse;\n resolve(hasPendingPurchResponse);\n })\n .catch((error) => {\n if (error instanceof RwError) {\n RwLog.consoleError(\"handled error\");\n } else {\n const status = error.response ? error.response.status : null;\n RwLog.warn(\n SOURCE,\n `Error:${status}, ${error.request}`\n );\n reject(error);\n }\n });\n\n });\n }\n\n static ChargifyCreateTeam(sub_id: string, cust_ref: string, tx_id: string) {\n const SOURCE = \"RwTaskAccounts.ChargifyCreateTeam\";\n\n return new Promise((resolve, reject) => {\n\n if (dal.gotToken()) {\n\n let data = {\n sub_id: sub_id,\n cust_ref: cust_ref,\n tx_id: tx_id,\n attrib: RwPrefUtils.attribData\n };\n let payload = JSON.stringify(data);\n RwLog.log(SOURCE, \"Creating account with:\" + payload);\n let url = `${RwConstants.CoreUri}/profile/ChargifyCreateTeam?`;\n this.CreateTeamCallback(url, payload, resolve, reject);\n /*dal.callWithToken\n .post(url, payload, {timeout: RwConstants.ExtendedTimeout})\n .then(res => {\n const json = res.data;\n //RwLog.consoleLog(\"CreateTeamAccountV2\", json);\n let regInfo = RwRegInfo.fromJSON(json);\n globals.isPro = true;\n resolve(regInfo);\n })\n .catch((error) => {\n if (error instanceof RwError) {\n RwLog.consoleError(\"handled error\");\n } else {\n //const status = error.status;\n const status = error.response ? error.response.status : null;\n if (status === 300) {\n let regInfo = new RwRegInfo();\n regInfo.paymentChanged = true;\n resolve(regInfo);\n } else {\n RwLog.warn(\n SOURCE,\n `Error:${status}, ${error.request}, ${payload}`\n );\n reject(error);\n }\n }\n });*/\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n });\n\n }\n\n static ChargifyJsCreateTeam(cToken: string, firstName: string, lastName: string, phoneNumber: string, billingEmail: string, promoCode: string,\n basePPCode: string, driverPPCode: string, teamPPCode: string) {\n const SOURCE = \"RwTaskAccounts.ChargifyJsCreateTeam\";\n\n return new Promise((resolve, reject) => {\n\n if (dal.gotToken()) {\n\n let data = {\n cjsToken: cToken,\n firstName,\n lastName,\n phoneNumber,\n billing_email: billingEmail,\n couponcode: promoCode,\n basePPCode,\n driverPPCode,\n teamPPCode\n };\n const payload = JSON.stringify(data);\n RwLog.log(SOURCE, \"Creating account with:\" + payload);\n let url = `${RwConstants.CoreUri}/profile/ChargifyJSCreateTeam?`;\n\n this.CreateTeamCallback(url, payload, resolve, reject);\n\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n });\n\n }\n\n static CreateTeamCallback(url: string, payload: string, resolve, reject) {\n const SOURCE = \"RwTaskAccts.CreateTeamCallback\"\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.ExtendedTimeout})\n .then(res => {\n const json = res.data;\n //RwLog.consoleLog(\"CreateTeamAccountV2\", json);\n let regInfo = RwRegInfo.fromJSON(json);\n globals.isPro = true;\n resolve(regInfo);\n })\n .catch((error) => {\n if (error instanceof RwError) {\n RwLog.consoleError(\"handled error\");\n reject(error);\n } else {\n //const status = error.status;\n const status = error.response ? error.response.status : null;\n if (status === 300) {\n let regInfo = new RwRegInfo();\n regInfo.paymentChanged = true;\n resolve(regInfo);\n } else {\n RwLog.warn(\n SOURCE,\n `Error:${status}, ${error.request}, ${payload}`\n );\n reject(error);\n }\n }\n });\n }\n\n static CompleteDispatcherUpgrade(\n currentPassword: string,\n name: string,\n coname: string,\n phone: string,\n address: string,\n domain: string,\n cancelCredit: boolean,\n createSoloAcct: boolean,\n soloEmail: string = \"\"\n ): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let data = {\n userName: globals.userName,\n userId: globals.userId,\n currentPassword: currentPassword,\n Name: name,\n CoName: coname,\n Phone: phone,\n Address: address,\n Domain: domain,\n isUpgrade: true,\n cancelCredit: cancelCredit,\n separateSoloAccount: createSoloAcct,\n soloAccountEmail: soloEmail\n };\n\n // Domain can be empty for solo users\n if (data.userName && data.userId && data.currentPassword && data.Name && data.CoName &&\n data.Phone && data.Address) {\n let payload = JSON.stringify(data);\n\n let url = `${RwConstants.CoreUri}/profile/CompleteRegistration`;\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.ExtendedTimeout})\n .then(res => {\n const json = res.data;\n resolve(json.message);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n const err = new RwError(400, false, `Missing registration data: ${JSON.stringify(data)}`);\n reject(err);\n }\n });\n }\n\n static UpgradeTrialToFlex() {\n const SOURCE = \"RwTaskAccounts.UpgradeTrialToFlex\";\n\n return new Promise((resolve, reject) => {\n if (dal.gotToken()) {\n RwLog.log(SOURCE, \"Upgrading flex trial account\");\n let url = `${RwConstants.CoreUri}/profile/UpgradeTrialToFlex`;\n dal.callWithToken\n .post(url, null, {timeout: RwConstants.ExtendedTimeout})\n .then(res => {\n const json = res.data;\n const resp = json\n if (!resp.ErrorType) {\n let newSkufo = new RwSkuInfo(resp.NewPurchase);\n globals.skuInfos = [newSkufo, ...globals.skuInfos];\n resolve(TrialUpgradeErrorType.None);\n } else {\n resolve(resp.ErrorType);\n }\n\n })\n .catch((error) => {\n if (error instanceof RwError) {\n RwLog.consoleError(\"handled error\");\n } else {\n //const status = error.status;\n const status = error.response ? error.response.status : null;\n RwLog.warn(\n SOURCE,\n `Error:${status}, ${error.request}`\n );\n\n }\n reject(error);\n });\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n });\n }\n\n static CreateAccountOwner(username: string, userId: string, password: string, forceTrial: boolean = false): Promise {\n let self = this;\n return new Promise(function (resolve, reject) {\n\n let baseUrl = RwConstants.CoreUri;\n let encName = encodeURIComponent(username);\n let encPass = encodeURIComponent(password);\n let url = `${baseUrl}/profile/CreateAccountOwner?username=${encName}&userId=${userId}&password=${encPass}${forceTrial ? '&ft=true' : ''}`;\n\n const attrib = RwPrefUtils.attribData;\n\n dal.callSansToken\n .post(url, attrib, {timeout: RwConstants.NetTimeout})\n .then(res => {\n //console.log(`CreateAccountOwner axiosSilent`, res)\n resolve(true);\n })\n .catch((error) => {\n //console.warn(`CreateAccountOwner axiosSilent fail`, error)\n const status = error.response ? error.response.status : null;\n const respText = error.response ? error.response.data : \"\";\n switch (status) {\n case 409: {\n resolve(false);\n break;\n }\n case 400: {\n globals.genericDialog.title = \"Error registering email\";\n globals.genericDialog.text = \"Error: \" + respText;\n globals.genericDialog.icon = \"error\";\n globals.genericDialog.show = true;\n break;\n }\n default: {\n globals.genericDialog.title = \"Problem getting validation status.\";\n globals.genericDialog.text = \"Please contact Road Warrior support at support@roadwarrior.app\";\n globals.genericDialog.icon = \"error\";\n globals.genericDialog.show = true;\n break;\n }\n }\n\n reject(error);\n });\n\n });\n }\n\n static DeactivateSession(token: string): Promise {\n return new Promise(function (resolve, reject) {\n\n if (token && RwSysUtils.isGuidReal(token)) {\n //if (token && token.length > 0) {\n //console.warn(\"DeactivateSession token\", token, RwPrefUtils.token);\n let url = `${RwConstants.CoreUri}/account/deactivateSession?seshId=${token}`;\n\n //Using callSansToken; Token may be null in PrefUtils; Sending old token within URL\n dal.callSansToken\n .post(url, null, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch(error => {\n //REVIEW: Log this!!!\n reject(error);\n });\n } else {\n RwLog.consoleWarn(\"DeactivateSession token\", token);\n }\n\n });\n }\n\n static RenewSesh(): Promise {\n const SOURCE = \"RwTaskAccounts.RenewSesh\";\n\n return new Promise(function (resolve, reject) {\n\n let uinfo = new RwUser();\n uinfo.userName = globals.userName;\n uinfo.userPass = RwPrefUtils.userPass;\n uinfo.installId = globals.installId;\n\n //Short-Circuit is password is \"undefined\"\n if (uinfo.userPass && uinfo.userPass !== \"undefined\") {\n\n let payload = uinfo.toJSON();\n let url = `${RwConstants.CoreUri}/acct/getToken`;\n\n dal.callSansToken\n .post(url, payload)\n .then(res => {\n RwLog.consoleLog(\"RenewSesh PASS\", res.data);\n let newToken = res.data as string;\n globals.token = newToken;\n RwPrefUtils.token = newToken;\n globals.lastTokenMS = moment().valueOf();\n RwLog.log(SOURCE, `newToken:${newToken}`)\n\n //console.log(SOURCE, `NEW TOKEN:${RwPrefUtils.token}`)\n //console.log(`NEW TOKEN:${RwPrefUtils.token}, tokenDOB:${globals.lastToken}, lastTokenMS:${globals.lastTokenMS}, lastTokenDOB:${globals.lastToken}`)\n resolve(newToken);\n })\n .catch(err => {\n let payloadText = JSON.stringify(payload);\n let errText = JSON.stringify(err);\n if (err?.message === \"Request failed with status code 403\") {\n RwLog.warn(SOURCE, `Unhandled: ${url} -> ${err.status} \\nPayload:${payloadText} \\n\\nError:\\n${errText}`);\n } else {\n RwLog.warn(SOURCE, `Unhandled: ${url} -> ${err.status} \\nPayload:${payloadText} \\n\\nError:\\n${errText}`);\n }\n reject(err);\n });\n } else {\n RwLog.warn(SOURCE, `Password == undefined`);\n reject(new RwError(403, false));\n }\n });\n }\n\n static SubmitPasswordReset(uid: string, resetToken: string, newPassword: string) {\n const SOURCE = \"RwTaskAccounts.SubmitPasswordReset\";\n const self = this;\n\n return new Promise((resolve, reject) => {\n let payload = {uid, resetToken, newPassword};\n dal.callSansToken\n .post(`${RwConstants.CoreUri}/account/SubmitResetPw`, payload)\n .then(res => {\n resolve(true);\n })\n .catch(err => {\n self.handleBasicError(err, SOURCE);\n resolve(false);\n })\n });\n }\n\n static ValidateResetRequest(uid: string, token: string) {\n const SOURCE = \"RwTaskAccounts.ValidateResetRequest\";\n const self = this;\n\n let url = `${RwConstants.CoreUri}/account/ValidateResetReq?uid=${uid}&resetToken=${token}`;\n return new Promise((resolve, reject) => {\n dal.callSansToken\n .get(url)\n .then(res => {\n resolve(res.data);\n })\n .catch(err => {\n self.handleBasicError(err, SOURCE);\n resolve(false);\n })\n })\n }\n\n static handleBasicError(err, SOURCE: string) {\n if (err) {\n let errText = JSON.stringify(err);\n if (err.isHandled == false) {\n if (err.message === \"Request failed with status code 404\") {\n RwLog.warn(SOURCE, errText);\n } else {\n RwLog.error(SOURCE, errText);\n }\n }\n } else {\n RwLog.error(SOURCE, \"Missing Error\");\n }\n }\n\n static Unsubscribe(uid: string, group: number): Promise {\n const SOURCE = \"RwTaskAccounts.Unsubscribe\";\n\n let model = {} as UnsubModel;\n model.userId = uid;\n model.group = group;\n return new Promise((resolve, reject) => {\n\n if (uid && uid !== RwConstants.EmptyGuid) {\n //Unsubscribe page is independent of login, uid/group should be embedded in the unsub url\n dal.callSansToken\n .post(`${RwConstants.CoreUri}/account/Unsubscribe`, model)\n .then(res => {\n resolve();\n })\n .catch(err => {\n if (err && !err.isHandled) {\n let errText = JSON.stringify(err);\n RwLog.error(SOURCE, `Unhandled: uid:${uid}, group:${group} \\n\\n${errText}`);\n }\n reject();\n })\n\n } else {\n RwLog.warn(SOURCE, `Invalid uid:${uid}`);\n let logErr = new RwError(400, true, \"Invalid reset link\");\n return Promise.reject(logErr);\n }\n })\n }\n}\n","export interface MigrateLegacyToFlexResult {\n PaymentErrorMsg: string;\n LegacyCancelled: boolean;\n Error: MigrateError;\n}\n\nexport enum MigrateError {\n None = 0,\n AuthError = 1,\n NoLegacySub = 2,\n InvalidRole = 3,\n InvalidModel = 4,\n FlexExists = 5,\n ChargifySubNotFound = 6,\n PaymentIssue = 7,\n ChargifyCreateSubError = 8,\n ChargifyDriverCompError = 9,\n RWPurchCreateError = 10\n}","import {RwUser} from \"@/app/dem/RwUser\";\nimport {ResubscribeModel} from \"@/app/dem/Profile/RwRegResponse\";\nimport {RwSubscribeResult} from \"@/app/dem/Profile/RwSubscribeResult\";\nimport {RwProfileModel} from \"@/app//dem/Profile/RwProfileModel\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {MigrateError, MigrateLegacyToFlexResult} from \"@/app/dem/Profile/MigrateLegacyToFlexResult\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {ResumeAutoRenewError, RwLoginIssues, RwSetNewEmailEnum} from \"@/app/RwEnums\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport RwSetNewEmailResponse from \"@/app/dem/Profile/RwSetNewEmailResponse\";\nimport RwCouponResult from \"@/app/dem/Profile/RwCouponResult\";\nimport {RWCPPResult} from \"@/app/views/account/purch/RWCPPResult\";\n\n\nexport class RwTaskBillingProfile {\n\n static ReSubWithExistingCC(model: ResubscribeModel): Promise {\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(model);\n let url = `${RwConstants.CoreUri}/profile/ReSubWithExistingCC`;\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.ExtendedTimeout})\n .then(res => {\n const json = res.data;\n resolve(json);\n })\n .catch((error: RwError) => {\n reject(error);\n });\n });\n }\n\n static ValidateCoupon(couponCode: string): Promise {\n return new Promise((resolve, reject) => {\n let url = `${RwConstants.CoreUri}/profile/ValidateCoupon?couponCode=${couponCode}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n resolve(json);\n })\n .catch((error: RwError) => {\n reject(error);\n });\n });\n }\n\n static ApplyCoupon(couponCode: string): Promise {\n return new Promise((resolve, reject) => {\n let url = `${RwConstants.CoreUri}/profile/ApplyCoupon?couponCode=${couponCode}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n resolve(json);\n })\n .catch((error: RwError) => {\n reject(error);\n });\n });\n }\n\n static MigrateLegacyToFlex(driversToKeep: Array): Promise {\n const SOURCE = \"MigrateLegacyToFlex\";\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(driversToKeep);\n let url = `${RwConstants.CoreUri}/profile/MigrateLegacyToFlex`;\n dal.callWithToken\n .post(url, payload)\n .then(res => {\n const json = res.data;\n if (res.status === 200 && json && (json.Error === undefined || json.Error == MigrateError.None)) {\n resolve();\n } else {\n let respText = JSON.stringify(res.data);\n let errText = json && json.Error ? MigrateError[json.Error] : '';\n RwLog.error(SOURCE, `Status: ${res.status}, Error: ${errText} \\n\\n resp:${respText} \\n\\n payload: ${payload}`);\n reject(json);\n }\n })\n .catch((error: RwError) => {\n const respText = error.error?.response?.data;\n const errText = respText && respText.Error ? MigrateError[respText.Error] : '';\n RwLog.error(SOURCE, `Status: ${error.status}, Error: ${errText} \\n\\n resp: ${respText} \\n\\n payload: ${payload}`);\n reject(respText);\n });\n });\n }\n\n static GetBillingProfile(): Promise {\n const SOURCE = \"RwTaskBilling.GetBillingProfile\";\n const self = this;\n return new Promise(function (resolve, reject) {\n\n if (dal.gotToken()) {\n\n let url = `${RwConstants.CoreUri}/profile/GetBillingProfile`;\n dal.callWithToken\n .get(url)\n .then(res => {\n if (res.status === 204) {\n resolve(null);\n } else {\n const json = res.data;\n const profileObj = json;\n profileObj.Drivers = RwUser.fromJsonArray(json.Drivers);\n if (profileObj.PODEnabled) {\n theGlobals.showProofOfDelivery = true;\n }\n else if (theGlobals.hasOnboarded) {\n theGlobals.setShowPODCallout();\n }\n resolve(profileObj);\n }\n })\n .catch((error) => {\n reject(error);\n });\n\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n static GetReSubPurchProfile(): Promise {\n return new Promise(function (resolve, reject) {\n let url = `${RwConstants.CoreUri}/profile/GetReSubPurchProfile`;\n dal.callWithToken\n .get(url)\n .then(res => {\n if (res.status === 204) {\n resolve(null);\n } else {\n const json = res.data;\n\n let purchProfile = json as RwProfileModel;\n theGlobals.hasCurrPurch = purchProfile.ProStatus.IsPro;\n purchProfile.Drivers = RwUser.fromJsonArray(json.Drivers);\n resolve(purchProfile);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static SetNewEmail(newUserName: string, currentPassword: string): Promise {\n const self = this;\n return new Promise(function (resolve, reject) {\n\n let unameEnc = encodeURIComponent(newUserName);\n let pwEnc = encodeURIComponent(currentPassword)\n let url = `${RwConstants.CoreUri}/profile/SetNewEmail?email=${unameEnc}&password=${pwEnc}`;\n dal.callWithToken\n .post(url, null)\n .then(res => {\n //console.log(\"SetNewEmail callback\", res)\n //On Timeout, res == null\n if (res && res.data) {\n let response = res.data as RwSetNewEmailResponse;\n //debugger;\n if (!response.error) {\n theGlobals.token = response.token;\n resolve(RwSetNewEmailEnum.Success);\n } else {\n resolve(response.error);\n }\n } else {\n resolve(RwSetNewEmailEnum.InternalError)\n }\n })\n .catch((error) => {\n // console.error(\"Error is in the DAL\")\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n static CancelAutoRenew(): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/profile/CancelAutoRenew`;\n dal.callWithToken\n .post(url)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static HasTrial(): Promise {\n return new Promise((resolve, reject) => {\n const data = RwPrefUtils.attribData;\n let url = `${RwConstants.CoreUri}/profile/HasTrial`;\n dal.callSansToken\n .post(url, data)\n .then(res => {\n if (res.status === 202) {\n resolve(true);\n } else {\n resolve(false);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static CancelTrial(): Promise {\n return new Promise((resolve, reject) => {\n let url = `${RwConstants.CoreUri}/profile/CancelTrial`;\n dal.callWithToken\n .post(url)\n .then(res => {\n if (res.data) {\n if (!res.data.Error) {\n resolve(ResumeAutoRenewError.None);\n } else {\n resolve(res.data.Error);\n }\n } else {\n resolve(ResumeAutoRenewError.UnhandledError);\n }\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static ResumeAutoRenew(): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/profile/ResumeAutoRenew`;\n dal.callWithToken\n .post(url)\n .then(res => {\n if (res.data.Error && res.data.Error != ResumeAutoRenewError.None) {\n reject(res.data.Error);\n return;\n }\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static ResolveCPP(ppb: string, ppd: string, ppt: string): Promise {\n return new Promise((resolve, reject) => {\n let url = `${RwConstants.CoreUri}/profile/ResolveCPP?ppb=${ppb}&ppd=${ppd}&ppt=${ppt}`;\n\n if (theGlobals.isLoggedIn) {\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n resolve(json);\n })\n .catch((error: RwError) => {\n reject(error);\n });\n } else {\n dal.callSansToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n resolve(json);\n })\n .catch((error: RwError) => {\n reject(error);\n });\n }\n\n });\n }\n}\n","import {RwUser} from \"@/app/dem/RwUser\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLog} from './RwLog';\nimport {ReplaceDriverError} from \"@/app/RwEnums\";\n\nexport class RwTaskDriver {\n\n\n static getSubTeamDrivers(subTeamOrgId: string): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/account/GetSubTeamDrivers?subTeamOrgId=${subTeamOrgId}`;\n //RwLog.consoleLog(\"getDriver: \", url);\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let driverList: RwUser[] = [];\n json.forEach(obj => {\n driverList.push(RwUser.fromJson(obj));\n });\n resolve(driverList);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n\n static moveSubTeamDriver(driverUserId: string, sourceAcctId: string, targetAcctId: string): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/account/MoveSubTeamDriver?driverUserId=${driverUserId}&sourceTeamAccountId=${sourceAcctId}&targetTeamAccountId=${targetAcctId}`;\n //RwLog.consoleLog(\"getDriver: \", url);\n dal.callWithToken\n .post(url, null, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n\n static replaceDriver(driverUserId: string, newUserName: string, newPassword: string, newName: string): Promise {\n return new Promise(function (resolve, reject) {\n\n const passwordEnc = encodeURIComponent(newPassword);\n const uNameEnc = encodeURIComponent(newUserName);\n const newNameEnc = encodeURIComponent(newName);\n\n const url = `${RwConstants.CoreUri}/account/replaceDriver?driverUserId=${driverUserId}\n &newUserName=${uNameEnc}&newPassword=${passwordEnc}&newName=${newNameEnc}`;\n\n dal.callWithToken\n .post(url, null, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(res.data.Error as ReplaceDriverError);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n\n static changeDriverPassword(driverUserId: string, driverNewPassword: string): Promise {\n const SOURCE = \"RwTaskDriver.changeDriverPassword\";\n return new Promise(function (resolve, reject) {\n\n let passEnc = encodeURIComponent(driverNewPassword);\n //&subTeamOrgId=${driverOrgId}\n let url = `${RwConstants.CoreUri}/team/changeDriverPassword?userId=${driverUserId}&newPassword=${passEnc}`;\n //RwLog.consoleLog(\"ChangeDriverPassword: \", url);\n\n dal.callWithToken\n .post(url, null, {timeout: RwConstants.NetTimeout})\n .then(res => {\n //console.log(\"ChangePassword success\", res);\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static changeSubTeamDriverPassword(driverUserId: string, driverOrgId: string, driverNewPassword: string): Promise {\n return new Promise(function (resolve, reject) {\n\n let passEnc = encodeURIComponent(driverNewPassword);\n let url = `${RwConstants.CoreUri}/team/ChangeSubTeamDriverPassword?userId=${driverUserId}&subTeamOrgId=${driverOrgId}&newPassword=${passEnc}`;\n dal.callWithToken\n .post(url, null, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n\n static changeSubTeamDispatcherPassword(dispatcherUserId: string, dispatcherOrgId: string, driverNewPassword: string): Promise {\n return new Promise(function (resolve, reject) {\n\n let passEnc = encodeURIComponent(driverNewPassword);\n let url = `${RwConstants.CoreUri}/team/ChangeSubTeamDispatcherPassword?userId=${dispatcherUserId}&subTeamOrgId=${dispatcherOrgId}&newPassword=${passEnc}`;\n dal.callWithToken\n .post(url, null, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n\n static getDriverAsync(driverId: string, routeId: string): Promise {\n return new Promise(function (resolve, reject) {\n\n let routeParm = routeId == null ? `` : \"rid=\" + routeId;\n let url = `${RwConstants.CoreUri}/users/drivers?uid=${driverId}&${routeParm}`;\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let driver = RwUser.fromJson(json);\n resolve(driver);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n\n static getDriverInfo(): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/team/driverPositions`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res && res.data && res.data.length > 0) {\n const json = res.data;\n let drvrList = RwUser.fromJsonArray(json);\n resolve(drvrList);\n } else {\n resolve([]);\n }\n\n })\n .catch((err) => {\n RwLog.consoleError(\"WTF: RwTaskDriver test timeout\", err);\n //REFACTOR: UI Code: Move to caller\n reject(err);\n });\n });\n }\n\n\n}\n","import {RwUser} from \"@/app/dem/RwUser\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport store from \"@/app/RwGlobals\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\n\nexport class RwTaskHistory {\n static getHistoryItem(histId: string): Promise {\n return new Promise((resolve, reject) => {\n if (histId && histId !== RwSysUtils.guidEmpty()) {\n let url = `${RwConstants.CoreUri}/hist/histitem?histId=${histId}`;\n //RwLog.consoleLog(\"addActAsync: \", url);\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n const hist = new RwHistory(json);\n resolve(hist);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n reject(new Error(\"Invalid hist id\"));\n }\n });\n }\n\n static getHistoryItemForStop(stopId: string): Promise {\n return new Promise((resolve, reject) => {\n if (stopId && stopId !== RwSysUtils.guidEmpty()) {\n let url = `${RwConstants.CoreUri}/hist/stophistitem?stopId=${stopId}`;\n //RwLog.consoleLog(\"addActAsync: \", url);\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n const hist = new RwHistory(json);\n resolve(hist);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n reject(new Error(\"Invalid stop id\"));\n }\n });\n }\n\n static addHistory(act: RwHistory): Promise {\n return new Promise(function (resolve, reject) {\n\n if (!act.BaseColor) act.BaseColor = RwConstants.CheckinPinGrey;\n let payload = JSON.stringify(act.toJSON());\n let url = `${RwConstants.CoreUri}/hist/hist?uid=${store.orgId}&aid=${act.histId}&ls=${store.lastSyncMS}`;\n //RwLog.consoleLog(\"addActAsync: \", url);\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n static updateHistoryAsync(act: RwHistory): Promise {\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(act.toJSON());\n let url = `${RwConstants.CoreUri}/hist/hist?uid=${store.orgId}&aid=${act.histId}&ls=${store.lastSyncMS}`;\n //RwLog.consoleLog(\"updateActAsync: \", url);\n\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n static deleteHistoryAsync(actIds: string[]): Promise {\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(actIds);\n let url = `${RwConstants.CoreUri}/hist/hist?uid=${store.orgId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n static archiveHistoryAsync(histIds: string[]): Promise {\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(histIds);\n\n let uinfo = new RwUser();\n let url = `${RwConstants.CoreUri}/ops/ArchiveHistoryItems`;\n //RwLog.logConsole(\"mergeroutesasync: \", url);\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n}\n","import moment from \"moment\";\n\nexport class RwMember {\n public code: string;\n public memberId: string;\n public acctId: string;\n public userId: string;\n public roleType: number;\n public permission: number;\n public userName: string;\n public acctName: string;\n public sku: string;\n public inviteCode: string;\n public inviteDateMS: number;\n public inviteStatus: number;\n public isDeleted: boolean;\n public isActive: boolean;\n public inviteDate: Date;\n public inviteEmail: string;\n public accessType: number;\n public loginType: number;\n\n constructor(json: Object) {\n var jsonTyped = json;\n\n this.code = jsonTyped.code;\n this.memberId = jsonTyped.memberId;\n this.acctId = jsonTyped.acctId;\n this.userId = jsonTyped.userId;\n this.roleType = jsonTyped.roleType;\n this.permission = jsonTyped.permission;\n this.userName = jsonTyped.userName;\n this.acctName = jsonTyped.acctName;\n this.sku = jsonTyped.sku;\n this.inviteCode = jsonTyped.inviteCode;\n this.inviteDateMS = jsonTyped.inviteDateMS;\n this.inviteStatus = jsonTyped.inviteStatus;\n this.isDeleted = jsonTyped.isDeleted;\n this.isActive = jsonTyped.isActive;\n this.inviteDate = jsonTyped.inviteDate;\n this.inviteEmail = jsonTyped.inviteEmail;\n this.accessType = jsonTyped.accessType;\n this.loginType = jsonTyped.loginType;\n }\n\n get FormatUserName(): string {\n if (this.userName) {\n return this.userName;\n }\n return this.inviteEmail;\n }\n\n get FormatInviteStatus(): string {\n switch (this.inviteStatus) {\n case -1:\n return \"Revoked/Expired\";\n case 0:\n return \"N/A\";\n case 1:\n return \"Pending\";\n case 2:\n return \"Accepted\";\n\n default:\n return \"Unknown\";\n }\n }\n\n get FormatExpireDate(): string {\n if (this.inviteDate) {\n var momentInvite = moment(this.inviteDate).add(7, \"days\");\n if (momentInvite.year() === 1) {\n return \"\";\n }\n return momentInvite.format(\"L LT\");\n } else {\n return \"\";\n }\n }\n\n static fromJsonArray(jsonArray: Object[]): Array {\n var members: RwMember[] = [];\n if (jsonArray != null) {\n jsonArray.forEach(function (jval) {\n let user = new RwMember(jval);\n members.push(user);\n });\n }\n return members;\n }\n}\n\nexport class MemberLoginResponse {\n public IsError: boolean;\n public ErrorMsg: string;\n public IsSingleMember: boolean;\n public Memberships: Array;\n\n constructor(json: Object) {\n var typedJson = json;\n this.IsError = typedJson.IsError;\n this.ErrorMsg = typedJson.ErrorMsg;\n this.IsSingleMember = typedJson.IsSingleMember;\n this.Memberships = RwMember.fromJsonArray(typedJson.Memberships);\n }\n}\n","import moment from \"moment\";\nimport {RwAvatarInfo, RwCreateDriver, RwUser, RwUserInfoExtra} from \"@/app/dem/RwUser\";\nimport {RwMember} from \"@/app/dem/Profile/RwAcctPickerModel\";\nimport {\n CheckMigrateReturnModel,\n CreateDriversReturnModel,\n CreateNewSubTeamModel,\n CreateNewSubTeamReturnModel,\n ProvisioningModel,\n RwLicenseCounts,\n SubTeamModel\n} from \"../dem/Drivers/CreateBulkDriversResponse\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport GetSubTeamsResponseModel from \"@/app/dem/Drivers/GetSubTeamsResponseModel\";\nimport {RwError} from \"@/app/RwErrors\";\nimport {RwUpdateAddOnsModel, RwUpdateAddOnsResultModel} from \"@/app/dem/AddOns/RwUpdateAddOnsModel\";\n\nexport class RwTaskLicense {\n\n\n //region User Info\n\n static updateUser(driver: RwUser): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(driver.toJSON());\n let url = `${RwConstants.CoreUri}/users/updateUser?accessType=${driver.accessType}`;\n //console.warn(\"accessType POSTed is: \", driver.accessType);\n dal.callWithToken\n .post(url, payload)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n static deleteDriver(userId: string): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n if (!userId || userId === RwConstants.EmptyGuid) return reject(new RwError(200, true, \"Driver ID is empty GUID on deleteDriver.\"));\n let url = `${RwConstants.CoreUri}/team/deleteDriver?uidForDelete=${userId}`;\n dal.callWithToken\n .delete(url)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n static setOwnerPassword(currentPassword: string, newPassword: string): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let newPwdEnc = encodeURIComponent(newPassword);\n let curPwdEnc = encodeURIComponent(currentPassword);\n let url = `${RwConstants.CoreUri}/profile/SetOwnerPassword?currentPassword=${curPwdEnc}&newPassword=${newPwdEnc}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n\n static requestNewPass(userName: string): Promise {\n return new Promise(function (resolve, reject) {\n //let url = `${RwConstants.CoreUri}/profile/ResetPassRequest?username=${encodeURIComponent(userName)}`;\n let unameTrim = userName.trim();\n if (unameTrim.length > 0) {\n let url = `${RwConstants.CoreUri}/acct/resetReq?username=${encodeURIComponent(userName)}`;\n let payload = JSON.stringify({ap_lang: \"en\", uname: userName.trim()});\n\n dal.callSansToken\n .post(url, payload)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n reject();\n }\n });\n }\n\n\n static changeDriverUsername(userId: string, newUserName: string): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let tkn = theGlobals.token;\n let unameEnc = encodeURIComponent(newUserName);\n let url = `${RwConstants.CoreUri}/users/RenameDriver?userId=${userId}&newUserName=${unameEnc}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n //endregion User Info\n\n\n //region Avatar Ops\n\n\n static updateAvatarUser(user: RwUser): Promise {\n const SOURCE = \"RwTaskLicense.updateAvatarUser\";\n return new Promise((resolve, reject) => {\n if (user) {\n RwTaskLicense.updateAvatar(user.avColor, user.avInits, user.userId, user.avType)\n .then(res => resolve(true))\n .catch(err => resolve(false))\n } else {\n RwLog.error(SOURCE, `Unexpected: user == null, logged in user:${JSON.stringify(new RwUser())} \\n\\n stack: ${new Error().stack}`);\n reject();\n }\n });\n }\n\n\n static updateAvatar(avColor: string, avInits: string, userId: string, avType: number): Promise {\n const SOURCE = \"RwTaskLicense.updateAvatar\";\n\n if (!avColor || avColor.length > 7) {\n let stack = RwSysUtils.printStackTrace;\n RwLog.error(\"RwTaskLicense.updateAvatar\", `avColor:${avColor} \\n\\nStack:\\n${stack}`)\n }\n\n return new Promise(function (resolve, reject) {\n const encColor = encodeURIComponent(avColor);\n const encInits = encodeURIComponent(avInits);\n\n const url = `${RwConstants.CoreUri}/users/avatar?uid=${userId}&type=${avType}&color=${encColor}&inits=${encInits}`;\n const payload = {userId, avType, avInits, avColor};\n return dal.callWithToken\n .post(url, payload)\n .then(res => {\n if (res) {\n if (res.data) {\n const avInfo = RwAvatarInfo.fromJson(res.data);\n if (avInfo && avInfo.avUrl) {\n if (userId == RwPrefUtils.userId) {\n theGlobals.avInfo = avInfo;\n }\n\n //Update drivers pin\n let driver = theGlobals.drivers.find(d => d.userId == userId);\n if (driver) {\n driver.imageUrl = avInfo.avUrl;\n } else {\n //REVIEW: Log this!\n }\n\n resolve(avInfo);\n\n } else {\n let msgMiss = avInfo ? avInfo.avUrl ? \"\" : \"Missing avUrl\" : \"Missing avInfo\";\n let msg = `${msgMiss} \\nPOST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`\n RwLog.error(SOURCE, `Unexpected: ${msg}`);\n reject();\n }\n } else {\n RwLog.warn(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject();\n }\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject();\n }\n })\n });\n }\n\n\n //endregion Avatar Ops\n\n\n //region Team Ops\n\n\n static updateDomain(domain: string): Promise> {\n let self = this;\n\n return new Promise>(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/team/UpdateDomain?domain=${domain}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n resolve(res.data ?? []);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n //endregion Team Info\n\n\n //region SubTeam Ops\n\n static emailCreatedDrivers(orgName: string): Promise {\n return new Promise((resolve, reject) => {\n\n let url = `${RwConstants.CoreUri}/account/emailcreateddrivers?orgName=${encodeURIComponent(orgName)}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n static updateAddOns(addOnChanges: RwUpdateAddOnsModel): Promise {\n return new Promise( (resolve, reject) => {\n const payload = JSON.stringify(addOnChanges);\n const url = `${RwConstants.CoreUri}/account/UpdateAddOns`;\n dal.callWithToken\n .post(url, payload)\n .then(res => {\n const json = res.data;\n resolve(json);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n static createBulkDrivers(drivers: Array): Promise {\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(drivers);\n let url = `${RwConstants.CoreUri}/account/CreateBulkDrivers`;\n dal.callWithToken\n .post(url, payload)\n .then(res => {\n const json = res.data;\n resolve(json);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static createNewSubTeam(newTeam: CreateNewSubTeamModel): Promise {\n const payload = JSON.stringify(newTeam);\n const url = `${RwConstants.CoreUri}/account/CreateNewSubTeam`;\n return dal.callWithToken\n .post(url, payload)\n .then(res => res.data);\n }\n\n\n static getSubTeams(): Promise {\n let url = `${RwConstants.CoreUri}/account/GetSubTeams`;\n return dal.callWithToken.get(url)\n .then(res => {\n const json = res.data;\n let teams = json;\n return teams;\n });\n }\n\n\n static checkMigrateTeam(teamDispUname: string, teamDispPass: string): Promise {\n let tkn = theGlobals.token;\n let disp = encodeURIComponent(teamDispUname);\n let dispPw = encodeURIComponent(teamDispPass);\n let url = `${RwConstants.CoreUri}/account/CheckMigrateTeamAccount?teamDispLogin=${disp}&teamDispPw=${dispPw}`;\n return dal.callWithToken\n .get(url)\n .then(res => {\n const json = res.data;\n let response = json;\n return response;\n });\n }\n\n\n static migrateTeam(teamDispUname: string, migrateToken: string): Promise {\n let tokenEnc = encodeURIComponent(migrateToken);\n let teamNameEnc = encodeURIComponent(teamDispUname);\n let url = `${RwConstants.CoreUri}/account/MigrateTeamAccount?teamDispLogin=${teamNameEnc}&migrateToken=${tokenEnc}`;\n return dal.callWithToken\n .post(url)\n .then(res => true);\n }\n\n\n static getAssignedUsers(): Promise {\n let self = this;\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/team/GetAssignedUsers`;\n dal.callWithToken\n .get(url)\n .then(res => {\n const json = res.data;\n let provisionedModel = json;\n provisionedModel.Drivers = RwUser.fromJsonArray(\n provisionedModel.Drivers\n );\n provisionedModel.InactiveMembers = RwMember.fromJsonArray(\n provisionedModel.InactiveMembers\n );\n provisionedModel.DriverExtra = >json.DriverExtra;\n\n if (provisionedModel.DriverExtra) {\n provisionedModel.DriverExtra.forEach(dextra => {\n var driverColl = provisionedModel.Drivers.filter(\n drv => drv.userId === dextra.UserId\n );\n\n if (driverColl && driverColl.length > 0) {\n var driver = driverColl[0];\n driver.lastUpdated = moment.utc(dextra.Updated).toDate();\n driver.created = moment.utc(dextra.Created).toDate();\n }\n });\n }\n\n resolve(provisionedModel);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n static deleteSubTeam(orgIdToDelete: string): Promise {\n let url = `${RwConstants.CoreUri}/team/DeleteSubTeam?orgIdToDelete=${orgIdToDelete}`;\n return dal.callWithToken\n .delete(url)\n .then(res => true);\n }\n\n\n static updateSubTeam(subTeamUpdates: SubTeamModel): Promise {\n let payload = JSON.stringify(subTeamUpdates);\n let url = `${RwConstants.CoreUri}/account/UpdateSubTeamDetails`;\n return dal.callWithToken\n .post(url, payload)\n .then(res => true);\n }\n\n\n //endregion SubTeam Ops\n\n\n //region Licence Ops\n\n static getLicenseCount(): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/team/GetLicenseCount`;\n dal.callWithToken\n .get(url)\n .then(res => {\n const json = res.data;\n var licenseCounts = new RwLicenseCounts(json);\n if (licenseCounts) {\n theGlobals.licenseCounts = licenseCounts;\n }\n resolve(licenseCounts);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n/* static updateLicenseCount(newUserLicenseCount): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/team/UpdateLicenseCount?newVirtualDriverCount=${newUserLicenseCount}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n\n static incrementLicenseCount(): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/team/IncrementLicenseCount`;\n\n dal.callWithToken\n .post(url)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }*/\n\n\n //endregion Licence Ops\n\n}\n\n\n","import {RwApiAuthError} from \"@/app/RwEnums\";\n\nexport class RwApiAuth {\n public ApiKeyId: string;\n public ApiKey: string;\n public AccountId: string;\n public OrgId: string;\n public CD: Date;\n public LU: Date;\n public IsActive: boolean;\n public Error: RwApiAuthError;\n\n constructor(json?: Object) {\n if (json != null) {\n this.fromJson(json);\n }\n }\n\n fromJson(json: Object) {\n let skuInfo = new RwApiAuth();\n\n for (let key in json) {\n switch (key) {\n case \"ApiKeyId\":\n this.ApiKeyId = json[key];\n break;\n case \"ApiKey\":\n this.ApiKey = json[key];\n break;\n case \"AccountId\":\n this.AccountId = json[key];\n break;\n case \"CD\":\n this.CD = new Date(json[key]);\n break;\n case \"LU\":\n this.LU = new Date(json[key]);\n break;\n case \"IsActive\":\n this.IsActive = json[key];\n break;\n case \"OrgId\":\n this.OrgId = json[key];\n break;\n case \"Error\":\n this.Error = json[key];\n break;\n //case \"active\": if (json[key] === 1) { this.active = true } else { this.active = false; } break;\n //case \"exp\": this.expires = new Date(json[key]); break;\n //case \"quantity\": this.quantity = json[key]; break;\n //case \"sku\": this.sku = json[key]; break;\n }\n }\n }\n}\n","import {LocationCreationModel, UploadResponseModel} from \"@/app/dem/RwUploadResponse\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwApiAuth} from \"@/app/dem/Profile/RwApiAuth\";\nimport {RwWebPrefs} from \"@/app/dem/Profile/RwProfileModel\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLog} from '@/app/dal/RwLog';\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwLoginError} from \"@/app/RwErrors\";\nimport {PODDefaultSettings} from \"../dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport {AxiosRequestConfig} from \"axios\";\n\nexport class RwTaskMisc {\n\n\n static submitLocations(uploadData: LocationCreationModel): Promise {\n const source = \"RwTaskMisc.submitLocations\";\n\n return new Promise(function (resolve, reject) {\n try {\n //BUG: the toJSON is not working; not tested\n //let payload = JSON.stringify(uploadData.toJSON());\n let payload = JSON.stringify(uploadData);\n let url = `${RwConstants.CoreUri}/upload/submitLocations`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.UploadTimeout})\n .then(res => {\n const json = res.data;\n var model = json;\n resolve(model);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n } catch (err) {\n RwLog.error(source, `Exception while serializing/sending upload submit data: \\n\\n ${JSON.stringify(uploadData)}`);\n reject(err);\n }\n\n });\n }\n\n static uploadFreeText(uploadFormData: FormData): Promise {\n return new Promise((resolve, reject) => {\n const config: AxiosRequestConfig = {timeout: RwConstants.NetTimeout};\n config.headers = {'Content-Type': 'multipart/form-data'};\n\n let url = `${RwConstants.CoreUri}/upload/UploadLocations`;\n dal.callWithToken\n .post(url, uploadFormData, config)\n .then(res => {\n const respData = res.data as UploadResponseModel;\n if (!!respData) {\n resolve(respData);\n } else {\n reject(new Error(`Error processing text, http code:${res.status}`))\n }\n return res;\n })\n .catch((error) => {\n debugger;\n console.error(error);\n //REFACTOR: UI Code: Move to caller\n\n reject(error);\n });\n });\n }\n\n static clearUploadCache(): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/upload/clearUploadCache`;\n dal.callWithToken\n .post(url)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n\n static getApiKey(): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/team/GetCurrentApiInfo?accountId=${theGlobals.accountId}`;\n dal.callWithToken\n .get(url)\n .then(res => {\n const json = res.data;\n const apiAuth = new RwApiAuth(json);\n resolve(apiAuth);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static generateNewApiKey(): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/team/GenerateNewApiInfo?accountId=${theGlobals.accountId}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n const json = res.data;\n var apiAuth = new RwApiAuth(json);\n resolve(apiAuth);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n static clusterStops(stops: string[], numClusters: number): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(stops);\n let url = `${RwConstants.CoreUri}/ops/ClusterStops?accountId=${theGlobals.accountId}&numClusters=${numClusters}`;\n\n dal.callWithToken\n .post(url, payload)\n .then(res => {\n const json = res.data;\n let clusteredStops = >>json;\n resolve(clusteredStops);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n static colorizeStops(stopIds: string[], routeId: string, baseColor: string): Promise {\n\n //REVIEW: \"this\" is not what you think it is in static method\n //let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(stopIds);\n const colorEnc = encodeURIComponent(baseColor);\n let url = `${RwConstants.CoreUri}/ops/UpdateStopsBaseColor?baseColor=${colorEnc}&routeId=${routeId}`;\n dal.callWithToken\n .post(url, payload)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static getLatestFlexVersion(): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/team/LatestFlexVersion`;\n dal.callSansToken\n .get(url)\n .then(res => {\n resolve(res.data as string);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static getWebPrefs(): Promise {\n const SOURCE = \"RwTaskMisc.getWebPrefs\";\n\n return new Promise(function (resolve, reject) {\n\n let token = RwPrefUtils.token;\n if (dal.gotToken() && theGlobals.isLoggedIn) {\n\n let url = `${RwConstants.CoreUri}/profile/webPrefs`;\n\n dal.callWithToken\n .get(url)\n .then(res => {\n if (res) {\n if (res.data) {\n const json = res.data;\n //console.warn(\"getWebPrefs\", json);\n let webPrefs: RwWebPrefs = JSON.parse(json);\n resolve(webPrefs);\n } else {\n RwLog.error(SOURCE, `GET ${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}`);\n reject();\n }\n } else {\n RwLog.error(SOURCE, `GET ${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}`);\n reject();\n }\n })\n .catch(err => {\n if (theGlobals.checkNotHandled(err)) {\n let errText = JSON.stringify(err);\n let msg = `Unhandled: GET ${url} -> ${err.status} \\nAuthToken:${token} \\n\\nError:\\n${errText}`;\n if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\")) ||\n err.error === \"Network Error\") {\n RwLog.warn(SOURCE, msg);\n } else {\n RwLog.error(SOURCE, msg);\n }\n }\n reject(err);\n });\n\n } else {\n RwLog.warn(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n\n static setWebPrefs(prefs: RwWebPrefs): Promise {\n //console.warn(\"RwTaskMisc.setWebPrefs\");\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(prefs);\n //console.warn(\"setWebPrefs\", payload);\n let url = `${RwConstants.CoreUri}/profile/webPrefs`;\n dal.callWithToken\n .post(url, payload)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n static setProofOfDeliveryDefault(type: PODDefaultSettings): Promise {\n return new Promise(function (resolve, reject) {\n let payload = type;\n let url = `${RwConstants.CoreUri}/profile/PoDDefault`;\n dal.callWithToken\n .post(url, payload)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n}\n\n\n","import {RwLoginIssues, RwPushNoteType, RwPushStatus} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwPushNote} from \"@/app/dem/Push/RwPushMessage\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport globals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport NotifyResponseModel from \"@/app/dem/Push/RwNotifyResponseModel\";\n\nexport class RwTaskPush {\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n static updatePushToken(pushToken: string): Promise {\n const SOURCE = \"RwTaskPush.updatePushToken\";\n\n return new Promise(function (resolve, reject) {\n //console.log(\"RwTaskPush.sendPushToken\");\n\n if (dal.gotToken()) {\n\n if (pushToken && theGlobals.gotUser && theGlobals.isLoggedIn) {\n\n let payload = JSON.stringify({pushToken: pushToken});\n let url = `${RwConstants.CoreUri}/push/updatePushToken`;\n\n dal.callWithToken\n .post(url, payload)\n .then(res => {\n //console.log(\"RwTaskPush.sendPushToken resolve(true)\");\n resolve(true);\n })\n .catch((err) => {\n let status = RwTaskPush.resolveStatus(err);\n let errStr = JSON.stringify(err);\n\n if (globals.checkNotHandled(err)) {\n if (status == 401) {\n RwLog.warn(SOURCE, `Unauthorized: \\nPOST ${url} \\nAuthToken:${RwPrefUtils.token} \\nPayload:\\n${payload} \\n\\nError:\\n${errStr} `);\n } else if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\"))\n || err.message === \"Network Error\") {\n RwLog.warn(SOURCE, `Network Error: ${errStr}`);\n } else if (status === 403) {\n RwLog.warn(SOURCE, `Forbidden: ${errStr}`);\n } else {\n RwLog.error(SOURCE, `Unhandled: \\nPOST ${url} \\nAuthToken:${RwPrefUtils.token} \\nPayload:\\n${payload} \\n\\nError:\\n${errStr} `);\n }\n }\n\n reject(err);\n });\n } else {\n //console.warn(\"sendPushToken NO PushToken\");\n reject(new RwError(201, false));\n }\n\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n static resolveStatus(error): number {\n let status = 0;\n if (error) {\n if (error && error.config) {\n const url = error.config.url;\n const method = error.config.method;\n if (error.response) {\n status = error.response ? error.response.status : null;\n }\n }\n }\n return status;\n }\n\n\n // static sendPushNoteXXX(pushNote: RwPushNote, suppressErrors: boolean = false): Promise {\n // return new Promise(function (resolve, reject) {\n //\n // //console.warn(\"sendPushNote\", pushNote.Action, pushNote);\n //\n // let payload = JSON.stringify(pushNote);\n // let url = `${RwConstants.CoreUri}/push/sendMessage`;\n // dal.axios\n // .post(url, payload)\n // .then(res => {\n // //console.log(\"RwTaskPush.sendPushNote SUCCESS\", res.status);\n // resolve(res.status);\n // })\n // .catch((error) => {\n // //REFACTOR: UI Code: Move to caller\n // reject(error);\n // });\n //\n // });\n // }\n\n\n static sendPushNotify(routeId: string): Promise {\n const SOURCE = \"RwTaskPush.sendPushNotify\";\n return new Promise(function (resolve, reject) {\n\n //console.warn(\"sendPushNote\", pushNote.Action, pushNote);\n //let payload = JSON.stringify(pushNote);\n\n let url = `${RwConstants.CoreUri}/routes/notify?rid=${routeId}`;\n if (dal.gotToken()) {\n dal.callWithToken\n .get(url)\n .then(res => {\n //console.log(SOURCE, \"callback SUCCESS\", res.status);\n resolve(res.data as NotifyResponseModel);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n reject({message: \"invalid token\"});\n }\n });\n }\n\n\n static sendPushDriverPing(driverId: string): Promise {\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/push/pingUserDevices?userId=${driverId}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n //console.log(\"RwTaskPush.sendPushDriverPing\", \"callback\", res.data);\n resolve(res)\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static getPushStatus(msgId: string, driverId): Promise {\n const self = this;\n const SOURCE = \"RwTaskPush.getPushStatus\";\n\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/push/checkPingStatus?userId=${driverId}&msgId=${msgId}`;\n dal.callWithToken\n .get(url)\n .then(res => {\n //console.log(SOURCE, \"callback\", res);\n let status = parseInt(res.data);\n resolve(status);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n\n static setPushMsgStatus(msgId: string, status: RwPushStatus): Promise {\n let self = this;\n const SOURCE = \"RwTaskPush.setPushMsgStatus\";\n\n return new Promise(function (resolve, reject) {\n\n if (dal.gotToken()) {\n\n let url = `${RwConstants.CoreUri}/push/updatePushStatus?msgId=${msgId}&status=${status}`;\n dal.callWithToken\n .post(url)\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n RwLog.warn(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n\n static createPushRouteAssigned(route: RwRoute): RwPushNote {\n const SOURCE = \"RwTaskPush.createPushRouteAssigned\";\n let note = new RwPushNote();\n try {\n note.IsTopicMsg = false;\n note.Topic = null;\n note.UserId = route.driverId;\n note.PushType = RwPushNoteType.RouteAssigned;\n note.Title = `Route '${route.name}' assigned`;\n note.RouteId = route.routeId;\n note.Action = \"assignment\";\n if (route.isDynLoc) {\n note.IconType = \"dynLoc\";\n } else {\n note.IconType = (route.isRoundTrip) ? \"fixRndTrip\" : \"fixOneWay\";\n }\n\n // If optimized already\n let stopsText = route.stops && route.stops.length > 0 ? route.stops.length + \" stops\" : \"\";\n if (route.totalDist !== 0 && route.totalTime !== 0) {\n note.Body = `${route.totalTimeString} · ${route.totalDistText} · ${stopsText}`;\n } else {\n note.Body = `${stopsText}`;\n }\n } catch (ex) {\n RwLog.error(SOURCE, `Unhandled: ${ex}`);\n }\n\n return note;\n }\n\n\n static createPushRouteUpdate(route: RwRoute): RwPushNote {\n const SOURCE = \"RwTaskPush.createPushRouteUpdate\";\n let note = new RwPushNote();\n try {\n note.IsTopicMsg = false;\n note.Topic = null;\n note.UserId = route.driverId;\n note.PushType = RwPushNoteType.RouteDelta;\n note.Title = `Route '${route.name}'`;\n note.Body = `This route has been modified.'`;\n note.RouteId = route.routeId;\n note.Action = \"routeupdated\";\n if (route.isDynLoc) {\n note.IconType = \"dynLoc\";\n } else {\n note.IconType = (route.isRoundTrip) ? \"fixRndTrip\" : \"fixOneWay\";\n }\n\n // If optimized already\n // let stopsText = route.stops && route.stops.length > 0 ? route.stops.length + \" stops\" : \"\";\n // if (route.totalDist !== 0 && route.totalTime !== 0) {\n // note.Body = `${route.totalTimeString} · ${route.totalDistText} · ${stopsText}`;\n // }\n // else {\n // note.Body = `${stopsText}`;\n // }\n } catch (ex) {\n RwLog.error(SOURCE, `Unhandled: ${ex}`);\n }\n\n return note;\n }\n\n\n}","import {RwRoute, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport globals from \"@/app/RwGlobals\";\nimport {RwPushResp} from \"@/app/dem/Push/RwPushMessage\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport RwTotalStopCount from \"@/app/dem/RwCountRouteStops\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\n\nexport class RwTaskRoutes {\n\n\n static getRouteId: string;\n\n\n static getRoutesStatusDeprecated(routeIds: string[]): Promise {\n const SOURCE = \"RwTaskRoutes.getRoutesStatus\";\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/routes/status`;\n let uinfo = new RwUser();\n if (uinfo.token && globals.orgId && routeIds && routeIds.length > 0) {\n\n //console.log(SOURCE, \"routeIds:\", routeIds);\n let payload = JSON.stringify(routeIds);\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n\n if (res.data) {\n const json = res.data;\n //console.warn(SOURCE, \"callback json:\", json);\n let statusList = RwSyncStatus.fromJsonArray(json);\n resolve(statusList);\n } else {\n resolve();\n }\n\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n RwLog.warn(SOURCE, `input: orgId:${globals.orgId} rids:${routeIds} tkn:${uinfo.token}`);\n reject({message: \"Error getting route\"});\n }\n });\n }\n\n\n static setRouteStatusInfo(status: RwSyncStatus): Promise {\n const SOURCE = \"RwTaskRoutes.setRouteStatusInfo\";\n\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/routes/status`;\n\n let uinfo = new RwUser();\n if (uinfo.token && status && status.routeId, status.driverId) {\n\n let payload = status.toJSON();\n //let payload = JSON.stringify(routeId);\n\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(() => resolve(true))\n .catch((error) => {\n reject(error);\n });\n } else {\n RwLog.error(SOURCE, `input: orgId:${globals.orgId}, driverId:${status.driverId}, rids:${status.routeId}, status:${status.statusCode} tkn:${uinfo.token}`);\n //RwLog.error(SOURCE, `input: orgId:${globals.orgId}, driverId:${status.driverId}, rids:${status.routeId}, status:${status.statusCode} tkn:${uinfo.token}`);\n reject({message: \"Missing required inputs\"});\n }\n });\n }\n\n\n static setRouteAssignment(status: RwSyncStatus): Promise {\n const SOURCE = \"RwTaskRoutes.setRouteAssignment\";\n\n return new Promise(function (resolve, reject) {\n\n if (dal.gotToken()) {\n\n let url = `${RwConstants.CoreUri}/routes/assign`;\n let payload = status.toJSON();\n //let payload = JSON.stringify(routeId);\n if (status && status.routeId && status.driverId) {\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then((assignResp) => {\n if (assignResp && assignResp.data) {\n let data = assignResp.data;\n //console.log(\"AssignResp: data: \", data);\n let results = RwPushResp.fromJsonArray(data);\n resolve(results);\n } else {\n resolve()\n }\n\n })\n .catch((error) => {\n reject(error);\n });\n\n } else {\n RwLog.warn(SOURCE, `input: orgId:${globals.orgId}, driverId:${status.driverId}, rids:${status.routeId}, status:${status.statusCode}`);\n reject({message: \"Error updating status\"});\n }\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n\n static getRoute(route: RwRoute): Promise {\n const SOURCE = \"RwTaskRoutes.getRoute\";\n return new Promise(function (resolve, reject) {\n const routeId = route.routeId;\n if (RwTaskRoutes.getRouteId != routeId) {\n const orgId = globals.orgId;\n const url = `${RwConstants.CoreUri}/routes/routes?uid=${orgId}&rid=${routeId}`;\n RwTaskRoutes.getRouteId = routeId;\n if (orgId && routeId && dal.gotToken()) {\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n RwTaskRoutes.getRouteId = undefined;\n const json = res.data;\n //console.log(SOURCE, \"getRoute\", json);\n route.fromJson(json);\n if (route.loadTimeStops === 0) {\n route.loadTimeStops = Date.now();\n }\n globals.updateRoute(route);\n resolve(route);\n })\n .catch((error) => {\n RwTaskRoutes.getRouteId = undefined;\n reject(error);\n });\n } else {\n RwTaskRoutes.getRouteId = undefined;\n const msg = `Missing variable orgId:${orgId} rid:${routeId} tkn:${RwPrefUtils.token}, loggedin: ${globals.isLoggedIn}`;\n // Org is set to undefined when logging out, only error if called while logged in\n if (globals.isLoggedIn) {\n RwLog.error(SOURCE, msg);\n } else {\n RwLog.warn(SOURCE, msg);\n }\n\n reject({message: `Error getting route \\n\\n ${msg}`});\n }\n } else {\n //const msg = `Missing variable orgId:${store.orgId} rid:${routeId} tkn:${uinfo.token}`;\n //RwLog.err(SOURCE, msg);\n //console.warn(\"getRoute In Process\");\n reject({message: \"GetRoute already in progress\"});\n }\n });\n }\n\n // Only gets full route, no global side effects\n static getRouteStandalone(route: RwRoute): Promise {\n const SOURCE = \"RwTaskRoutes.getRouteStandalone\";\n return new Promise(function (resolve, reject) {\n const routeId = route.routeId;\n let uinfo = new RwUser();\n const url = `${RwConstants.CoreUri}/routes/routes?uid=${globals.orgId}&rid=${routeId}`;\n if (!uinfo.token || uinfo.token === RwConstants.EmptyGuid) {\n return reject(new RwError(200, true, `Invalid Session - Token is ${typeof uinfo?.token || \"undefined\"}`));\n }\n if (!globals.orgId || globals.orgId === RwConstants.EmptyGuid) {\n return reject(new RwError(200, true, `Invalid Org Id - Org Id is ${typeof uinfo?.token || \"undefined\"}`));\n }\n\n if (globals.orgId && routeId && uinfo.token) {\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n route.fromJson(json);\n if (route.loadTimeStops === 0) {\n route.loadTimeStops = Date.now();\n }\n resolve(route);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n const msg = `Missing variable orgId:${globals.orgId} rid:${routeId} tkn:${uinfo.token}`;\n RwLog.error(SOURCE, msg);\n reject({message: \"Error getting route\"});\n }\n });\n }\n\n static addRoute(route: RwRoute, withStops?: boolean): Promise {\n const SOURCE = \"RwTaskRoutes.addRoute\";\n\n return new Promise(function (resolve, reject) {\n\n if (!withStops) withStops = false;\n if (!route.accountId) route.accountId = globals.orgId;\n\n let json = withStops ? route.toJsonWithAllStops() : route.toJSON();\n let payload = JSON.stringify(json);\n let uinfo = new RwUser();\n let url = `${RwConstants.CoreUri}/routes/routes?uid=${globals.orgId}&rid=${route.routeId}&ls=${globals.lastSyncMS}`;\n if (!uinfo.token || uinfo.token === RwConstants.EmptyGuid) return reject(new RwError(200, true, `Invalid Session - Token is ${typeof uinfo?.token || \"undefined\"}`));\n if (globals.orgId && route.routeId) {\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res) {\n if (res.data) {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n } else {\n RwLog.warn(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\npayload:\\n${payload}`)\n reject(new RwError(400, false));\n }\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token} \\n\\npayload:\\n${payload}`)\n reject(new RwError(400, false));\n }\n\n })\n .catch((error) => {\n reject(error);\n });\n\n } else {\n let message = `Missing variable orgId:${globals.orgId} rid:${route.routeId} tkn:${uinfo.token}`;\n RwLog.error(\"RwTaskRoutes.addRouteAsync\", message);\n reject({message: \"Error adding new route\"});\n }\n });\n }\n\n\n static updateRoute(route: RwRoute, withStops?: boolean, touchStops?: boolean): Promise {\n let SOURCE = \"RwTaskRoutes.updateRoute\";\n\n return new Promise(function (resolve, reject) {\n if (touchStops == null) {\n touchStops = false;\n }\n if (withStops == null) {\n withStops = false;\n }\n\n let touchValue = touchStops ? 1 : 0;\n\n if (!route.accountId) {\n route.accountId = globals.orgId;\n }\n\n let payload = null;\n if (withStops) {\n let fullJson = route.toJsonWithAllStops();\n payload = JSON.stringify(fullJson);\n } else {\n payload = JSON.stringify(route.toJSON());\n }\n\n let uinfo = new RwUser();\n if (!uinfo.token || uinfo.token === RwConstants.EmptyGuid) return reject(new RwError(200, true, `Invalid Session - Token is ${typeof uinfo?.token || \"undefined\"}`));\n\n let lastSync = globals.lastSyncMS;\n let url = `${RwConstants.CoreUri}/routes/routes?uid=${globals.orgId}&rid=${route.routeId}&ls=${lastSync}&touchStops=${touchValue}`;\n //console.warn(payload)\n //console.warn(url)\n if (globals.orgId && route.routeId && uinfo.token && uinfo.token) {\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res) {\n if (res.data) {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n } else {\n RwLog.warn(SOURCE, `PUT url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject(new RwError(400, false));\n }\n } else {\n RwLog.error(SOURCE, `PUT url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject(new RwError(400, false));\n }\n\n })\n .catch((err) => {\n if (globals.checkNotHandled(err)) {\n let status = !!err.Code ? err.Code : err.status;\n\n let errText = JSON.stringify(err);\n let msg = `PUT url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload} \\n\\nError:\\n${errText}`;\n if (err.error && err.error.code === \"ECONNABORTED\" || err.message === \"Network Error\") {\n RwLog.warn(SOURCE, `ECONNABORTED: ${msg}`);\n } else if (status === 403) {\n RwLog.error(SOURCE, `Forbidden: ${msg}`);\n } else {\n RwLog.error(SOURCE, `Unhandled: ${msg}`);\n }\n //RwLog.error(SOURCE, `PUT url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload} \\n\\nError:\\n${err}`)\n }\n reject(err);\n });\n\n } else {\n RwLog.warn(\n \"updateRouteAsync\",\n `Missing variable aid:${globals.orgId} rid:${route.routeId} tkn:${uinfo.token}`\n );\n reject({message: \"Error updating route\"});\n }\n });\n }\n\n\n static deleteRoutes(routeIds: string[]): Promise {\n return new Promise(function (resolve, reject) {\n const uinfo = new RwUser();\n if (!uinfo.token || uinfo.token === RwConstants.EmptyGuid) return reject(new RwError(200, true, `Invalid Session - Token is ${typeof uinfo?.token || \"undefined\"}`));\n\n if (routeIds) {\n routeIds = routeIds.filter(id => id && id !== \"\");\n if (routeIds.length > 0) {\n\n let payload = JSON.stringify(routeIds);\n let url = `${RwConstants.CoreUri}/routes/routes?uid=${globals.orgId}&ls=${globals.lastSyncMS}`;\n dal.callWithToken\n .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = RwModel.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n reject({message: \"No routes found to delete\"});\n }\n } else {\n reject({message: \"No routes found to delete\"});\n }\n });\n }\n\n\n static countRouteStops(route: RwRoute): Promise {\n const SOURCE = \"RwTaskRoutes.countRouteStops\";\n\n return new Promise(function (resolve, reject) {\n\n if (dal.gotToken()) {\n\n if (!route || route.routeId === RwConstants.EmptyGuid) {\n return reject(new RwError(200, true, `Invalid routeid - routeid is ${route?.routeId}`));\n }\n // let payload = JSON.stringify(stop);\n //console.log('RwTaskStops.updateStop payload', payload);\n let url = `${RwConstants.CoreUri}/routes/stopcount?routeid=${route.routeId}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const data = res.data as RwTotalStopCount;\n resolve(data);\n })\n .catch((error) => {\n reject(error);\n })\n\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n static mergeRoutes(routeIds: string[]): Promise {\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(routeIds);\n\n let url = `${RwConstants.CoreUri}/ops/mergeRoutes`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let stops = RwStop.fromJsonArrayMerge(json);\n resolve(stops);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static archiveRoutes(routeIds: string[]): Promise {\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(routeIds);\n let url = `${RwConstants.CoreUri}/ops/archiveRoutes`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static copyStops(sourceRtId: string, targetRtId: string, stopIds: string[], isNewRt: boolean = false, rtName: string = \"\"): Promise {\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(stopIds);\n let url = `${RwConstants.CoreUri}/ops/copyStops?targetRtId=${targetRtId}&sourceRtId=${sourceRtId}&isNewRt=${isNewRt}&rtName=${rtName}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n });\n }\n\n\n static moveStops(sourceRtId: string, targetRtId: string, stopIds: string[], isNewRt: boolean = false, rtName: string = \"\"): Promise {\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(stopIds);\n let uinfo = new RwUser();\n let url = `${RwConstants.CoreUri}/ops/moveStops?&targetRtId=${targetRtId}&sourceRtId=${sourceRtId}&isNewRt=${isNewRt}&rtName=${rtName}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n this.globals.syncDelta();\n })\n .catch((error) => {\n //REFACTOR: UI Code: Move to caller\n reject(error);\n });\n\n });\n }\n\n\n static hereOptRoute(route: RwRoute): Promise {\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/ops/HereOptimize?routeId=${route.routeId}`;\n dal.callWithToken\n .post(url, null, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(route);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n}\n\n\n","import {RwSite} from \"@/app/dem/RwSite\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwSearchResult} from \"@/app/dem/RwSearchResult\";\nimport {RwLoginIssues, RwSearchType} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLog} from './RwLog';\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\"\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwPlace} from \"@/app/dem/RwPlace\";\nimport {RwLoginError} from \"@/app/RwErrors\";\nimport planSpace from \"@/app/views/planner/RwPlannerSpace\";\n\nexport class RwTaskSearch {\n\n //#region Props\n\n // static idxSitesCacheTime = 0;\n // static idxSitesCached: { [id: string]: RwSite } = {};\n // searchWebWip = false;\n // searchWebDone = false;\n // searchSitesDone = false;\n // searchSitesWip = false;\n // webResults: RwSearchResult[] = null;\n\n searchWeb = RwPrefUtils.searchWeb;\n searchSites = RwPrefUtils.searchSites;\n siteResults: RwSearchResult[] = null;\n searchQuery: string;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n //#endregion Props\n\n\n //#region AutoComplete\n\n static getWebSuggestions(query: string, fromRelo = false): Promise {\n let search = new RwTaskSearch();\n return search.getWebSuggestions(query, fromRelo);\n }\n\n static getSiteSuggestions(query: string, idxSites: { [id: string]: RwSite }): Promise {\n let search = new RwTaskSearch();\n return search.getSiteSuggestions(query, idxSites);\n }\n\n static getTaskSuggestions(query: string, idxTasks: { [id: string]: RwStop }): Promise {\n let search = new RwTaskSearch();\n return search.getTaskSuggestions(query, idxTasks);\n }\n\n\n static getAddOverride(addText: string): Promise {\n const SOURCE = \"RwTaskSearch.getAddOverride\";\n\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(stop);\n const encAdd = encodeURIComponent(addText);\n\n if (dal.gotToken()) {\n\n let url = `${RwConstants.CoreUri}/search/getAddOverride?addText=${encAdd}`;\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res) {\n if (res.data) {\n //const json = res.data;\n let suggest = res.data as RwPlace;\n resolve(suggest);\n } else {\n // If 200 but no data, there just is no override\n //RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n resolve(null);\n }\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject();\n }\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n\n // static getLocationOverride(nameText: string, addText: string, posLat: number, posLng: number, accLat: number, accLng:number): Promise {\n // const SOURCE = \"RwTaskSearch.getLocationOverride\";\n //\n // return new Promise(function(resolve, reject) {\n // let payload = JSON.stringify(stop);\n // const encName = encodeURIComponent(nameText);\n // const encAdd = encodeURIComponent(addText);\n //\n // if (dal.gotToken()) {\n //\n // let url = `${RwConstants.CoreUri}/search/selectSuggest?nameText=${encName}&addText=${encAdd}&posLat=${posLat}&posLng=${posLng}&accLat=${accLat}&accLng=${accLng}`;\n // dal.callWithToken\n // .get(url, {timeout: RwConstants.NetTimeout})\n // .then(res => {\n // if (res) {\n // if (res.data) {\n // const json = res.data;\n // let suggest = res.data as RwPlace;\n // resolve(suggest);\n // }\n // else {\n // // If 200 but no data, there just is no override\n // //RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n // resolve(null);\n // }\n // }\n // else {\n // RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n // reject();\n // }\n // })\n // .catch((error) => {\n // reject(error);\n // });\n // }\n // else {\n // RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n // let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n // dal.forceLogout(logErr);\n // return Promise.reject(logErr);\n // }\n //\n // });\n // }\n\n private getWebSuggestions(query: string, fromRelo = false): Promise {\n const SOURCE = \"RwTaskSearch.getWebSuggestions\";\n\n return new Promise(function (resolve, reject) {\n\n if (dal.gotToken()) {\n\n let queryEnc = encodeURIComponent(query);\n let centerLat: number = fromRelo ? planSpace.reloCoordsLat : RwPrefUtils.viewCenterLat;\n let centerLng: number = fromRelo ? planSpace.reloCoordsLng : RwPrefUtils.viewCenterLng;\n let lat = centerLat.toFixed(4);\n let lng = centerLng.toFixed(4);\n let lang = \"en\"; // navigator.userLanguage; // RwSysUtils.langCode;\n let cntryCode = \"\"; //navigator. RwSysUtils.cntryCode;\n let radius = RwPrefUtils.viewRadius.toFixed(4);\n\n //SERVER expects WSEN order for within\n let w = RwPrefUtils.viewWest;\n let s = RwPrefUtils.viewSouth;\n let e = RwPrefUtils.viewEast;\n let n = RwPrefUtils.viewNorth;\n let withInWSEN = RwTaskSearch.createWithinWSEN(w, s, e, n);\n //let withInSWNE = self.createWithinSWNE(s, w, n, e);\n let url = `${RwConstants.CoreUri}/search/getSuggest?query=${queryEnc}&at=${lat},${lng}&radius=${radius}&lang=${lang}&cntry=${cntryCode}&within=${withInWSEN}`;\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n //console.log(\"getWebSuggestions JSON\", res.data.predictions[0]);\n const json = res.data;\n let results = RwSearchResult.fromJsonPredictions(json);\n //console.log(\"getWebSuggestions RESULT\", results[0]);\n if (results != null && results.length > 0) {\n results.forEach(result => {\n result.type = RwSearchType.Web;\n if (!result.placeId || result.placeId === \"\") {\n result.placeId = RwSysUtils.guidNew();\n }\n });\n }\n resolve(results);\n })\n .catch((err) => {\n RwLog.consoleError(\"WTF: getWebSuggestions\", err);\n reject(err);\n });\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n });\n }\n\n\n // private createWithinSWNE(s: number, w: number, n: number, e: number): string {\n // const SOURCE = \"RwTaskSearch.createWithinSWNE\";\n //\n // //Place in expected S,W,N,E format\n // let withIn = `${s.toFixed(4)},${w.toFixed(4)},${n.toFixed(4)},${e.toFixed(4)}`;\n //\n // let isOutOfBounds = false;\n // if (s < -90) {\n // isOutOfBounds = true;\n // s = -90;\n // }\n // else if (s > 90) {\n // isOutOfBounds = true;\n // s = 0\n // }\n //\n // if (n > 90) {\n // isOutOfBounds = true;\n // n = 90;\n // }\n // else if (n < -90) {\n // isOutOfBounds = true;\n // n = 0;\n // }\n //\n // if(isOutOfBounds) {\n // RwLog.error(SOURCE, `isOutOfBounds == true \\n bounds:${withIn}`);\n // withIn = `${s.toFixed(4)},${w.toFixed(4)},${n.toFixed(4)},${e.toFixed(4)}`;\n // }\n //\n // return withIn;\n // }\n\n\n static createWithinWSEN(w: number, s: number, e: number, n: number): string {\n const SOURCE = \"RwTaskSearch.createWithinWSEN\";\n\n //Place in expected S,W,N,E format\n let withIn = `${w.toFixed(4)},${s.toFixed(4)},${e.toFixed(4)},${n.toFixed(4)}`;\n\n let isOutOfBounds = false;\n if (s < -90) {\n isOutOfBounds = true;\n s = -90;\n } else if (s > 90) {\n isOutOfBounds = true;\n s = 0\n }\n\n if (n > 90) {\n isOutOfBounds = true;\n n = 90;\n } else if (n < -90) {\n isOutOfBounds = true;\n n = 0;\n }\n\n if (isOutOfBounds) {\n RwLog.error(SOURCE, `isOutOfBounds == true \\n bounds:${withIn}`);\n withIn = `${w.toFixed(4)},${s.toFixed(4)},${e.toFixed(4)},${n.toFixed(4)}`;\n }\n\n return withIn;\n }\n\n\n private getSiteSuggestions(query: string, idxSites: { [id: string]: RwSite }): Promise {\n\n return new Promise(function (resolve) {\n\n let results: RwSearchResult[] = [];\n let queryLow = query.toLowerCase();\n let idxSitesLen = Object.keys(idxSites).length;\n\n if (idxSites && idxSitesLen > 0) {\n for (let key in idxSites) {\n let isMatch = key.indexOf(queryLow) != -1;\n if (isMatch) {\n let site = idxSites[key];\n let pr = new RwSearchResult();\n pr.type = RwSearchType.Sites;\n pr.name = site.name;\n pr.address = site.address;\n pr.lat = site.lat;\n pr.lng = site.lng;\n pr.placeId = site.siteId;\n\n //xFOCUS: Add Email | Phone\n // pr.phone = site.phone ? site.phone : \"\";\n // pr.email = site.email ? site.email : \"\";\n\n\n results.push(pr);\n }\n }\n }\n\n resolve(results);\n });\n }\n\n\n private getTaskSuggestions(query: string, idxTasks: { [id: string]: RwStop }): Promise {\n\n //console.log(\"getSiteSuggestions query\", query);\n\n return new Promise(function (resolve) {\n\n let results: RwSearchResult[] = [];\n let queryLow = query.toLowerCase();\n let idxLen = Object.keys(idxTasks).length;\n //console.log(\"idxLen.len, queryLow\", idxLen, queryLow);\n\n if (idxTasks && idxLen > 0) {\n for (let key in idxTasks) {\n let isMatch = key.indexOf(queryLow) != -1;\n if (isMatch) {\n let task = idxTasks[key];\n let pr = new RwSearchResult();\n pr.type = RwSearchType.Tasks;\n pr.name = task.name;\n pr.address = task.address;\n pr.lat = task.lat;\n pr.lng = task.lng;\n pr.placeId = task.stopId;\n results.push(pr);\n //console.log(\"isMatch: \", key, queryLow);\n }\n }\n }\n\n resolve(results);\n });\n }\n\n\n // private onSubSearchDone(onlyShowWeb: boolean = false): RwSearchResult[] {\n // //DEFER: Check all callers to see that this is semantically correct\n // let webDone = false;\n // if (this.searchWeb && this.searchQuery.length > 5) {\n // if (this.searchWebDone) {\n // webDone = true;\n // }\n // } else {\n // webDone = true;\n // }\n //\n // let sitesDone = false;\n // if (this.searchSites && !onlyShowWeb) {\n // if (this.searchSitesDone) {\n // sitesDone = true;\n // }\n // } else {\n // sitesDone = true;\n // }\n //\n // let allTasksDone = webDone && sitesDone;\n // if (allTasksDone) {\n // let results: RwSearchResult[] = [];\n //\n // if (this.siteResults != null && this.siteResults.length > 0) {\n // results = results.concat(this.siteResults);\n // }\n //\n // if (this.webResults != null && this.webResults.length > 0) {\n // results = results.concat(this.webResults);\n // }\n //\n // // RwLog.warnConsole(\"resolving webResults\", this.webResults);\n // // RwLog.warnConsole(\"resolving siteResults\", this.siteResults);\n // // RwLog.warnConsole(\"resolving results\", results);\n //\n // return results;\n // //resolve(results);\n // } else {\n // return null;\n // }\n // }\n\n\n //#endregion AutoComplete\n\n\n //#region Geocoding\n\n static geocode(searchText: string): Promise {\n let finalSearch = searchText;\n if (searchText != null && searchText.length > 3) {\n if (finalSearch.length >= 128) {\n finalSearch = finalSearch.substr(0, 128);\n }\n\n let isCoord = RwTextUtils.isCoordinate(searchText);\n //console.log(\"isCoord\", isCoord);\n if (isCoord) {\n return this.geocodeV2(finalSearch, true);\n //this.geocodeCoord(finalSearch)\n } else {\n return this.geocodeV2(finalSearch, false);\n //this.geocodeAddress(finalSearch)\n }\n }\n }\n\n\n static geocodeCoord(searchText: string): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let uinfo = new RwUser();\n let token = uinfo.token;\n if (token != null) {\n let coord = searchText;\n let region = \"\";\n let lang = \"en\";\n let url = `https://maps.googleapis.com/maps/api/geocode/json?latlng=${coord}&language=${lang}®ion=${region}`;\n //RwLog.consoleLog(`geocodeCoord url`, url);\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let results: RwSearchResult[] = [];\n let coords = RwTextUtils.coordFromText(searchText);\n if (coords != null && coords.length == 2) {\n let pr = new RwSearchResult();\n pr.type = RwSearchType.Coord;\n pr.name = searchText;\n pr.address = searchText;\n pr.lat = coords[0];\n pr.lng = coords[1];\n pr.placeId = searchText;\n results.push(pr);\n }\n\n let gresults = RwSearchResult.fromGoogleCoordSearch(json);\n if (gresults != null && results.length > 0) {\n gresults.forEach(result => {\n result.type = RwSearchType.Coord;\n });\n results = results.concat(gresults);\n }\n\n resolve(results);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n reject({message: \"unauthorized command.\"});\n }\n });\n }\n\n\n // geocodeAddress(searchText: string): Promise {\n //\n // return new Promise(function(resolve, reject) {\n //\n // let uinfo = new RwUser();\n // let token = uinfo.token;\n // if (token != null) {\n // let addEnc = encodeURI(searchText);\n // let region = \"\";\n // let lang = \"en\";\n //\n // let west: number = RwPrefUtils.viewWest;\n // let south: number = RwPrefUtils.viewSouth;\n // let east: number = RwPrefUtils.viewEast;\n // let north: number = RwPrefUtils.viewNorth;\n // let bounds = `${south.toFixed(4)},${west.toFixed(4)}|${north.toFixed(4)},${east.toFixed(4)}`;\n //\n // let url = `https://maps.googleapis.com/maps/api/geocode/json?address=${addEnc}&bounds=${bounds}&language=${lang}®ion=${region}`;\n // //RwLog.consoleLog(`geocodeAddress url`, url);\n //\n // dal.callWithToken\n // .get(url, { timeout: RwConstants.NetTimeout })\n // .then(res => {\n // const json = res.data;\n // let results = RwSearchResult.fromGoogleAddressSearch(json);\n // if (results != null && results.length > 0) {\n // results.forEach(result => {\n // result.type = RwSearchType.Web;\n // });\n // }\n // resolve(results);\n // })\n // .catch((error) => {\n // reject(error);\n // });\n //\n // } else {\n // reject({ message: \"unauthorized command.\" });\n // }\n // });\n // }\n\n\n static geocodeV2(query: string, isCoords: boolean): Promise {\n const source = \"RwTaskSearch.geocodeV2\";\n return new Promise(function (resolve, reject) {\n\n let uinfo = new RwUser();\n let token = uinfo.token;\n if (token != null && token !== RwConstants.EmptyGuid) {\n let queryEnc = encodeURIComponent(query);\n let centerLat: number = RwPrefUtils.viewCenterLat;\n let centerLng: number = RwPrefUtils.viewCenterLng;\n let lat = centerLat.toFixed(4);\n let lng = centerLng.toFixed(4);\n let at = encodeURIComponent(`${lat},${lng}`);\n\n //console.log(`geocodeV2 lat:${lat}, lng:${lng}`)\n\n let lang = \"en\"; // navigator.userLanguage; // RwSysUtils.langCode;\n //let cntryCode = \"\"; //navigator. RwSysUtils.cntryCode;\n\n let s = RwPrefUtils.viewSouth;\n let w = RwPrefUtils.viewWest;\n let n = RwPrefUtils.viewNorth;\n let e = RwPrefUtils.viewEast;\n\n //Place in expected S,W,N,E format\n let withIn = `${s.toFixed(4)},${w.toFixed(4)},${n.toFixed(4)},${e.toFixed(4)}`;\n\n if (s < -90) {\n RwLog.error(source, `map bounds error south too low \\n bounds:${withIn}`);\n s = -90;\n } else if (s > 90) {\n RwLog.error(source, `map bounds error south too high \\n bounds:${withIn}`);\n s = 0\n }\n if (n > 90) {\n RwLog.error(source, `map bounds error north too high \\n bounds:${withIn}`);\n n = 90;\n } else if (n < -90) {\n RwLog.error(source, `map bounds error north too low \\n bounds:${withIn}`);\n n = 0;\n }\n\n // Update with bounded coords\n withIn = `${s.toFixed(4)},${w.toFixed(4)},${n.toFixed(4)},${e.toFixed(4)}`;\n\n let withinEnc = encodeURIComponent(withIn);\n\n //let withIn = `${w.toFixed(4)},${s.toFixed(4)},${e.toFixed(4)},${n.toFixed(4)}`;\n let radius = RwPrefUtils.viewRadius;\n let radiusFixed = radius.toFixed(0);\n\n let baseUrl = `${RwConstants.CoreUri}/search/geocoder`;\n let url: string;\n if (isCoords) {\n url = `${baseUrl}?latLng=${queryEnc}&at=${at}&radius=${radiusFixed}&lang=${lang}&within=${withinEnc}`;\n } else {\n url = `${baseUrl}?address=${queryEnc}&at=${at}&radius=${radiusFixed}&lang=${lang}&within=${withinEnc}`;\n }\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let results = RwSearchResult.fromJsonGeocode(json);\n if (results != null && results.length > 0) {\n results.forEach(result => {\n result.type = RwSearchType.Web;\n });\n }\n resolve(results);\n })\n .catch((error) => {\n reject(error);\n });\n\n } else {\n reject({message: \"unauthorized command.\"});\n }\n });\n }\n\n\n getCountryCode(lat: number, lng: number): Promise {\n return new Promise(function (resolve, reject) {\n\n let uinfo = new RwUser();\n let token = uinfo.token;\n if (token != null) {\n\n let baseUrl = `${RwConstants.CoreUri}/search/getCountry`;\n let url = `${baseUrl}?lat=${lat}&lng=${lng}`;\n\n dal.callWithToken\n .get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(res.data);\n })\n .catch((error) => {\n reject(error);\n });\n\n } else {\n reject({message: \"unauthorized command.\"});\n }\n });\n }\n\n //#endregion Geocoding\n\n\n}\n\n","import {RwSite} from \"@/app/dem/RwSite\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwLog} from './RwLog';\nimport store from \"@/app/RwGlobals\"\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwError} from \"@/app/RwErrors\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\n\nexport class RwTaskSites {\n\n\n static addSite(site: RwSite): Promise {\n\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(site.toJSON());\n\n let url = `${RwConstants.CoreUri}/sites/sites?uid=${store.orgId}&sid=${site.siteId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n static updateSvcTimeSiteAsync(siteIds: string[], svcTime: number): Promise {\n\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(siteIds);\n\n\n let url = `${RwConstants.CoreUri}/ops/updateSitesSvcTime?uid=${store.orgId}&svcTime=${svcTime}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n static updateSite(site: RwSite): Promise {\n const SOURCE = \"RwTaskSites.updateSite\";\n\n return new Promise(function (resolve, reject) {\n\n //xTEST: Validate color\n let validatedColor = RwImgUtils.validatedColorHex(site.baseColor);\n if (validatedColor) {\n site.baseColor = validatedColor;\n\n let payload = JSON.stringify(site.toJSON());\n let url = `${RwConstants.CoreUri}/sites/sites?uid=${store.orgId}&sid=${site.siteId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res.data) {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n } else {\n let status = res.status;\n RwLog.warn(SOURCE, `POST url:${url} -> ${status} \\nAuthToken:${RwPrefUtils.token} \\n\\npayload:\\n${payload}`)\n reject(new RwError(status, false));\n }\n\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n const stack = new Error().stack;\n\n RwLog.error(SOURCE, `Invalid BaseColor: ${JSON.stringify(site.baseColor)}\\n\\n Stack:${stack}`)\n reject(new RwError(400, false));\n }\n\n });\n }\n\n static deleteSites(siteIds: string[]): Promise {\n const SOURCE = \"RwTaskSites.deleteSites\"\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(siteIds);\n let url = `${RwConstants.CoreUri}/sites/sites?uid=${store.orgId}&ls=${store.lastSyncMS}`;\n\n dal.callWithToken\n .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res) {\n if (res.data) {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n } else {\n RwLog.warn(SOURCE, `DELETE url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\npayload:\\n${payload}`)\n reject(new RwError(res.status, false));\n }\n } else {\n RwLog.error(SOURCE, `DELETE url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token} \\n\\npayload:\\n${payload}`)\n reject(new RwError(400, false));\n }\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n}\n","import {RwSked} from \"@/app/dem/RwSked\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport store from \"@/app/RwGlobals\"\n\nexport class RwTaskSkeds {\n\n static addSked(sked: RwSked): Promise {\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(sked.toJSON());\n let url = `${RwConstants.CoreUri}/skeds/skeds?uid=${store.orgId}&sid=${sked.skedId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n static updateSked(sked: RwSked): Promise {\n return new Promise(function (resolve, reject) {\n let json = sked.toJSON();\n\n let payload = JSON.stringify(json);\n let url = `${RwConstants.CoreUri}/skeds/skeds?uid=${store.orgId}&sid=${sked.skedId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n static deleteSkeds(shedIds: string[]): Promise {\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(shedIds);\n let url = `${RwConstants.CoreUri}/skeds/skeds?uid=${store.orgId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n}\n","export class RwStopWithRoute {\n public StopId: string;\n public RouteId: string;\n public StopName: string;\n public RouteName: string;\n\n static fromArray(json: object[]): RwStopWithRoute[] {\n var array = [];\n if (json) {\n json.forEach(obj => {\n array.push(obj);\n });\n }\n return array;\n }\n}\n","export class RwStopCheckDateModel {\n public CheckDate: Date;\n public StopId: string;\n\n constructor(stopId: string, checkDate: Date) {\n this.CheckDate = checkDate;\n this.StopId = stopId;\n }\n\n static fromArray(json: object[]): RwStopCheckDateModel[] {\n var array = [];\n if (json) {\n json.forEach(sc => {\n var scmodel = sc;\n array.push(\n new RwStopCheckDateModel(scmodel.StopId, new Date(scmodel.CheckDate))\n );\n });\n }\n\n return array;\n }\n}\n","import {RwStop} from \"@/app/dem/RwStop\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport {RwStopWithRoute} from \"@/app/dem/Reporting/RwStopWithRoute\";\nimport {RwStopCheckDateModel} from \"@/app/dem/Reporting/RwStopCheckDate\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport store from \"@/app/RwGlobals\"\nimport {RwEntityTypes} from \"@/app/RwEnums\";\nimport {RwWebUtils} from \"@/app/utils/RwWebUtils\";\nimport {RwError} from \"@/app/RwErrors\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\nexport class RwTaskStops {\n\n\n static getTasks(): Promise {\n //console.warn(\"getTasks\");\n\n return new Promise(function (resolve, reject) {\n\n let uinfo = new RwUser();\n if (uinfo.token) {\n\n let url = `${RwConstants.CoreUri}/stops/tasks`;\n dal.callWithToken.get(url, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let stops = RwStop.fromJsonArray(json);\n stops.forEach(s => (s.isTask = true));\n resolve(stops);\n })\n .catch((error) => {\n reject(error);\n });\n } else {\n RwLog.consoleError(\"RwTaskStops.getTasks\", \"called w/ invalid tkn\");\n reject(new Error());\n }\n });\n }\n\n\n static addStop(stop: RwStop, route: RwRoute): Promise {\n const SOURCE = \"RwTaskStops.addStop\";\n\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(stop.toJSON());\n let url = `${RwConstants.CoreUri}/stops/stops?uid=${route.accountId}&sid=${stop.stopId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res) {\n if (res.data) {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject();\n }\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject();\n }\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static addStops(stops: RwStop[], route: RwRoute): Promise {\n const SOURCE = \"RwTaskStops.addStops\";\n\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(stops.map(s => s.toJSON()));\n //console.log(\"addStops payload\", payload);\n let url = `${RwConstants.CoreUri}/stops/stopsBulk?rid=${route.routeId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n // const json = res.data;\n // let deltas = new RwModel();\n // deltas.fromJson(json);\n // resolve(deltas);\n })\n .catch((err) => {\n let status = !!err.Code ? err.Code : err.status;\n if (status == 403) {\n RwLog.warn(SOURCE, `Unhandled \\n${url} \\nstops:\\n${JSON.stringify(stops.map(e => e.toJSON()))} \\n\\nerr:\\n${JSON.stringify(err)}`);\n } else {\n RwLog.error(SOURCE, `Unhandled \\n${url} \\nstops:\\n${JSON.stringify(stops.map(e => e.toJSON()))} \\n\\nerr:\\n${JSON.stringify(err)}`);\n\n }\n // const errorData = RwLog.getErrorFormatted(error, {title: \"stops\", data: stops}, {title: \"route\", data: route})\n // RwLog.error(\"RwTaskStops.addStops\", errorData);\n reject(err);\n });\n\n });\n }\n\n\n static addTasks(tasks: RwStop[]): Promise {\n\n return new Promise((resolve, reject) => {\n let jStops = [];\n tasks.forEach(stop => {\n jStops.push(stop.toJSON());\n });\n let payload = JSON.stringify(jStops);\n\n //let payload = JSON.stringify(task);\n let url = `${RwConstants.CoreUri}/stops/tasks?ls=${store.lastSyncMS}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n //console.log(\"RwTaskStops.addTask success\", json);\n resolve(deltas);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static addTasksToRoute(tasks: RwStop[], routeId: string, nextSeq?: number): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let stopIds = tasks.map(t => t.stopId);\n let payload = JSON.stringify(stopIds);\n //console.log(\"addTasksToRoute\", payload);\n\n let maxSeqArg = \"\"\n if (nextSeq) {\n maxSeqArg = `&nextSeq=${nextSeq}`\n }\n\n let url = `${RwConstants.CoreUri}/stops/tasks/toRoute?rid=${routeId}&ls=${store.lastSyncMS}${maxSeqArg}`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static updateStop(stop: RwStop): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(stop.toJSON());\n //console.log('RwTaskStops.updateStop payload', payload);\n let url = `${RwConstants.CoreUri}/stops/stops?uid=${store.orgId}&sid=${stop.stopId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static checkInStop(stop: RwStop, histId: string, siteId?: string): Promise {\n return new Promise(function (resolve) {\n let payload = JSON.stringify(stop.toJSON(false, true));\n let siteParm = siteId ? `&siteId=${siteId}` : \"\";\n let url = `${RwConstants.CoreUri}/stops/checkIn?histId=${histId}${siteParm}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(() => {\n //console.log(\"RwGlobals.checkInStop callback\");\n resolve(true)\n })\n .catch(() => resolve(false));\n });\n }\n\n\n static deleteStops(stopIds: string[]): Promise {\n const SOURCE = \"RwTaskStops.deleteStops\"\n\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(stopIds);\n let url = `${RwConstants.CoreUri}/stops/stops?ls=${store.lastSyncMS}`;\n dal.callWithToken\n .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res) {\n if (res.data) {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n } else {\n RwLog.warn(SOURCE, `DELETE url:${url} -> ${res.status} data \\n\\npayload:\\n${payload}`)\n reject(new RwError(400, false));\n }\n } else {\n RwLog.warn(SOURCE, `DELETE url:${url} -> Missing \\n\\npayload:\\n${payload}`)\n reject(new RwError(400, false));\n }\n })\n .catch((error) => {\n reject(error);\n });\n\n\n });\n }\n\n\n static deleteTasks(stopIds: string[]): Promise {\n\n return new Promise(function (resolve, reject) {\n let payload = JSON.stringify(stopIds);\n let url = `${RwConstants.CoreUri}/stops/tasks?ls=${store.lastSyncMS}`;\n dal.callWithToken\n .delete(url, {data: payload, timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n let deltas = new RwModel();\n deltas.fromJson(json);\n resolve(deltas);\n })\n .catch((error) => {\n reject(error);\n });\n\n\n });\n }\n\n\n static multiColor(ntt: RwEntityTypes, ids: string[], colorHash: string): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(ids);\n //console.log(\"multiColor ntt, color, payload\", ntt, colorHash, payload);\n\n let colorEnc = RwWebUtils.encode(colorHash);\n let url = `${RwConstants.CoreUri}/stops/multiColor?ntt=${ntt}&color=${colorEnc}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n // const json = res.data;\n // let deltas = new RwModel();\n // deltas.fromJson(json);\n //console.log(\"RwTaskStops.addTask success\", json);\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static multiVisit(ntt: RwEntityTypes, ids: string[], visitTime: number): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(ids);\n //console.log(\"multiVisit ntt, color, payload\", ntt, visitTime, payload);\n\n let url = `${RwConstants.CoreUri}/stops/multiVisit?ntt=${ntt}&visit=${visitTime}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n // const json = res.data;\n // let deltas = new RwModel();\n // deltas.fromJson(json);\n //console.log(\"RwTaskStops.addTask success\", json);\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static multiSked(ids: string[], skedId: string, priority: number, openTime: number, closeTime: number): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(ids);\n //console.log(\"multiSked pri, open, close\", priority, openTime, closeTime);\n\n let url = `${RwConstants.CoreUri}/stops/multiSked?skedId=${skedId}&pri=${priority}&open=${openTime}&close=${closeTime}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n //console.log(\"RwTaskStops.addTask success\", json);\n resolve(true);\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static multiCopy(ids: string[], srcId: string, tarId: string, isMove: boolean): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(ids);\n //console.log(\"multiCopy srcId, tarId, isMove\", srcId, tarId, isMove);\n\n let opName = isMove ? \"multiMove\" : \"multiCopy\"\n let url = `${RwConstants.CoreUri}/stops/${opName}?srcId=${srcId}&tarId=${tarId}&ls=${store.lastSyncMS}`;\n dal.callWithToken\n .put(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n //console.log(\"RwTaskStops.addTask success\", json);\n if (res.data && res.data.Error) {\n const errCode = res.data.Error;\n if (errCode === 404 || errCode === 500) {\n resolve(false);\n } else {\n resolve(true);\n }\n } else {\n resolve(true);\n }\n\n })\n .catch((error) => {\n reject(error);\n });\n\n });\n }\n\n\n static getRelatedRoutesAsync(stopIds: string[]): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let url = `${RwConstants.CoreUri}/reporting/GetRoutesForStops`;\n //RwLog.logConsole(\"getRelatedRoutesAsync: \", url);\n\n let payload = JSON.stringify(stopIds);\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n var stopsWithRts = RwStopWithRoute.fromArray(json);\n resolve(stopsWithRts);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n\n static getStopCheckDatesAsync(stopIds: string[]): Promise {\n\n return new Promise(function (resolve, reject) {\n\n let payload = JSON.stringify(stopIds);\n let url = `${RwConstants.CoreUri}/reporting/CheckDateForStops`;\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n const json = res.data;\n var stopCheckins = RwStopCheckDateModel.fromArray(json);\n resolve(stopCheckins);\n })\n .catch((error) => {\n reject(error);\n });\n });\n }\n\n}\n","import {RwConstants} from \"@/app/RwConstants\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwModel} from \"@/app/dem/RwModel\";\nimport dal from \"@/app/dal/RwDal\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport globals from \"@/app/RwGlobals\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\n\n\nexport class RwTaskSync {\n\n\n static syncEssential(): Promise {\n const SOURCE = \"RwTaskSync.syncEssential\";\n\n\n return new Promise(function (resolve, reject) {\n\n if (dal.gotToken()) {\n\n let ridParm = \"\"\n let lastRouteId = RwPrefUtils.lastRouteId;\n //console.log(SOURCE, `lastRouteId:${lastRouteId}`, lastRouteId)\n if (lastRouteId != null && lastRouteId && lastRouteId.length > 0) {\n ridParm = `&rid=${lastRouteId}`\n }\n\n let uinfo = new RwUser();\n let payload = JSON.stringify(uinfo.toJSON());\n let url = `${RwConstants.CoreUri}/sync/orgDataInit?oid=${uinfo.orgId}${ridParm}`;\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res && res.data) {\n let json = res.data;\n //console.log(SOURCE, \"json:\", json);\n let model = RwModel.fromJson(json);\n if (model.lastSync != null) {\n theGlobals.lastSyncMS = model.lastSync.getTime();\n }\n resolve(model);\n } else {\n reject()\n }\n })\n .catch(error => {\n reject(error);\n });\n } else {\n RwLog.error(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n\n static syncSecondary(): Promise {\n const SOURCE = \"RwTaskSync.syncSecondary\";\n\n return new Promise(function (resolve, reject) {\n\n if (dal.gotToken() && theGlobals.isLoggedIn) {\n\n let uinfo = new RwUser();\n let payload = JSON.stringify(uinfo.toJSON());\n\n let gotOrdId = uinfo && RwSysUtils.isGuidReal(uinfo.orgId);\n if (gotOrdId) {\n //if(uinfo.orgId && RwPrefUtils.token && RwPrefUtils.token !== RwConstants.EmptyGuid) {\n\n let url = `${RwConstants.CoreUri}/sync/orgDataBack?oid=${uinfo.orgId}`;\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res) {\n if (res.data) {\n let json = res.data;\n //console.log(SOURCE, \"json\", json);\n let model = RwModel.fromJson(json);\n //console.log(SOURCE, \"model.sites.length:\", model.sites.length);\n resolve(model);\n } else {\n RwLog.warn(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject(new RwError(400, false));\n }\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject(new RwError(400, false));\n reject()\n }\n })\n .catch(error => {\n //REVIEW: Log this!\n reject(error);\n });\n } else {\n RwLog.warn(SOURCE, `Missing Reqs: Token:${RwPrefUtils.token} OrgId:${uinfo.orgId}`);\n }\n\n } else {\n RwLog.warn(SOURCE, `Invalid token:${RwPrefUtils.token}, userName:${RwPrefUtils.userName}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n\n static syncDelta(lastRouteId: string | null): Promise {\n const SOURCE = \"RwTaskSync.syncDelta\";\n\n return new Promise(function (resolve, reject) {\n\n if (dal.gotToken()) {\n\n let uinfo = new RwUser();\n let gotOrgId = RwSysUtils.isGuidReal(uinfo.orgId);\n if (gotOrgId) {\n\n uinfo.openIds = [];\n let lastSyncMS: number = theGlobals.lastSyncMS;\n let payload = JSON.stringify(uinfo.toJSON());\n let ridParm = lastRouteId ? `&rid=${lastRouteId}` : \"\";\n let url = `${RwConstants.CoreUri}/sync/orgDataDelta?oid=${uinfo.orgId}${ridParm}&ts=${lastSyncMS}`;\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res) {\n if (res.data) {\n let json = res.data;\n let model = RwModel.fromJson(json);\n //console.log(SOURCE, json);\n if (model.lastSync != null) {\n theGlobals.lastSyncMS = model.lastSync.getTime();\n }\n resolve(model);\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`);\n reject();\n }\n } else {\n RwLog.warn(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}\\n\\nPayload:\\n${payload}`);\n reject();\n }\n })\n .catch(err => {\n if (theGlobals.checkNotHandled(err)) {\n let status = err.status;\n if (status != 403 && status != 406) {\n RwLog.warn(SOURCE, `POST url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload} \\n\\nError:\\n${err}`)\n } else {\n RwLog.warn(SOURCE, `POST url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload} \\n\\nError:\\n${err}`)\n }\n }\n reject(err);\n });\n } else {\n if (globals.isLoggedIn) {\n RwLog.error(SOURCE, `Missing OrgId:${uinfo.orgId}, lastRouteId:${lastRouteId}`);\n }\n reject(new RwError(400, false));\n }\n\n } else {\n RwLog.warn(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n\n static syncStatus(routeId: string, routeIds: string[]): Promise {\n const SOURCE = \"RwTaskRoutes.syncStatus\";\n\n return new Promise(function (resolve, reject) {\n\n if (dal.gotToken()) {\n\n let lastSyncStatusMS: number = globals.lastStatusMS;\n let url = `${RwConstants.CoreUri}/sync/status?rid=${routeId}&ts=${lastSyncStatusMS}`;\n\n let gotOrgId = globals.orgId && globals.orgId.length > 0;\n let gotUserId = globals.userId && globals.userId.length > 0;\n let gotRouteIds = routeIds && routeIds.length > 0;\n if (gotUserId && gotOrgId && gotRouteIds) {\n //console.log(SOURCE, \"routeIds:\", routeIds);\n let payload = JSON.stringify(routeIds);\n\n dal.callWithToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .then(res => {\n if (res) {\n if (res.data) {\n const json = res.data;\n //console.log(SOURCE, json);\n let model = RwModel.fromJson(json);\n if (model.lastSync != null) {\n globals.lastStatusMS = model.lastSync.getTime();\n }\n\n let actStatus = model.syncStatus.find(s => s.routeId === routeId);\n if (actStatus && actStatus.driverLS) {\n //console.log(\"set driverLastSync:\", actStatus.driverLS);\n globals.driverLastSyncMS = actStatus.driverLS.getTime();\n }\n\n resolve(model);\n\n //console.warn(SOURCE, \"callback json:\", json);\n //let statusList = RwRouteStatusUpdate.fromJsonArray(json);\n //resolve(statusList);\n } else {\n RwLog.error(SOURCE, `POST ${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject(new RwError(res.status, false))\n resolve();\n }\n } else {\n RwLog.error(SOURCE, `POST ${url} -> MISSING \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload}`)\n reject(new RwError(400, false))\n }\n\n })\n .catch((err) => {\n\n if (theGlobals.checkNotHandled(err)) {\n if (err) {\n let errText = JSON.stringify(err)\n let msg = `POST ${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload} \\n\\nError:\\n${errText}`;\n if (err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\")) {\n err.isHandled = true;\n RwLog.warn(SOURCE, `ECONNABORTED: \\n${msg}`);\n } else {\n if (err.status && err.status == 403) {\n err.isHandled = true;\n RwLog.warn(SOURCE, `Forbidden: \\n${msg}`);\n } else {\n if (err.error == \"Error: Network Error\") {\n err.isHandled = true;\n RwLog.warn(SOURCE, `Network Error: \\n${msg}`);\n } else {\n RwLog.error(SOURCE, `Unhandled Error: \\n${msg}`);\n }\n }\n }\n }\n }\n\n //RwLog.warn(SOURCE, `UNHANDLED \\nPOST url:${url} -> ${err.status} \\nAuthToken:${RwPrefUtils.token} \\n\\nPayload:\\n${payload} \\n\\nError:\\n${err}`)\n reject(err);\n });\n } else {\n RwLog.warn(SOURCE, `input: uid:${globals.userId}, rid:${routeId}, orgId:${globals.orgId} rids:${routeIds}`);\n reject({message: \"Route Input Error\"});\n }\n\n } else {\n RwLog.warn(SOURCE, `Invalid token: ${RwPrefUtils.token}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n return Promise.reject(logErr);\n }\n\n });\n }\n\n\n}\n\n\n","import moment from \"moment\";\nimport {RwUser, RwUserInfoExtra} from \"@/app/dem/RwUser\";\nimport {RwMember} from \"@/app/dem/Profile/RwAcctPickerModel\";\nimport {CreateSubTeamError, RwCheckSubTeamMigrateError, RwCreateDriversError} from \"@/app/RwEnums\";\n\nexport interface CreateNewSubTeamModel {\n DispatcherName: string;\n\n TeamName: string;\n\n TeamDomain: string;\n\n DispatcherEmail: string;\n\n DispatcherPassword: string;\n}\n\nexport interface CreateNewSubTeamReturnModel {\n Error: CreateSubTeamError;\n SubTeam: SubTeamModel;\n}\n\nexport interface CheckMigrateReturnModel {\n UserId: string;\n\n AccountId: string;\n\n MigrateToken: string;\n\n DispatcherEmail: string;\n\n AccountName: string;\n\n DispatcherName: string;\n\n Domain: string;\n\n Drivers: RwUser[];\n\n Error: RwCheckSubTeamMigrateError;\n}\n\nexport interface SubTeamModel {\n UserId: string;\n\n AccountId: string;\n\n OrgId: string;\n\n UserName: string;\n\n LoginName: string;\n\n AccountName: string;\n\n DrvCount: number;\n\n Domain: string;\n\n LastUpdated: Date;\n\n AvatarUrl: string;\n\n AvInits: string;\n\n AvType: number;\n\n AvColor: string;\n}\n\nexport class SubTeamViewModel {\n Selected: boolean = false;\n\n ImageUrl: string;\n\n Data: SubTeamModel;\n\n get OrgId(): string {\n return this.Data.OrgId;\n }\n\n get ProfileImage(): string {\n return this.ImageUrl;\n }\n\n get formatListName() {\n return `${this.Data.AccountName} (${this.Data.UserName})`;\n }\n\n get formatLastUpdated() {\n return moment(this.Data.LastUpdated).format(\"L LT\");\n }\n\n constructor(data: SubTeamModel) {\n this.Data = data;\n }\n}\n\nexport interface CreateDriversReturnModel {\n Successful: Array;\n Errored: Array;\n Existed: Array;\n Error: RwCreateDriversError;\n}\n\nexport class ProvisioningModel {\n public VirtualDriverCount: number;\n public Drivers: Array;\n public Domain: string;\n public InactiveMembers: Array;\n public DriverExtra: Array;\n}\n\nexport class RwLicenseCounts {\n LicenseCount: number;\n UsedOptQuota: number;\n UsedUploadQuota: number;\n UsedSearchQuota: number;\n TotalOptQuota: number;\n TotalSearchQuota: number;\n\n constructor(json?: Object) {\n if (json != null) {\n this.fromJson(json);\n }\n }\n\n fromJson(json: Object) {\n for (var key in json) {\n switch (key) {\n case \"LicenseCount\":\n this.LicenseCount = json[key];\n break;\n case \"UsedOptQuota\":\n this.UsedOptQuota = json[key];\n break;\n case \"UsedSearchQuota\":\n this.UsedSearchQuota = json[key];\n break;\n case \"UsedUploadQuota\":\n this.UsedUploadQuota = json[key];\n break;\n case \"TotalOptQuota\":\n this.TotalOptQuota = json[key];\n break;\n case \"TotalSearchQuota\":\n this.TotalSearchQuota = json[key];\n break;\n }\n }\n }\n}\n","export class RwSkuInfo {\n active: boolean;\n expires: Date;\n quantity: number;\n sku: string;\n\n constructor(json?: Object) {\n if (json != null) {\n this.fromJson(json);\n }\n }\n\n fromJson(json: Object) {\n let skuInfo = new RwSkuInfo();\n\n for (let key in json) {\n switch (key) {\n case \"active\":\n if (json[key] === 1) {\n this.active = true;\n } else {\n this.active = false;\n }\n break;\n case \"exp\":\n case \"expires\":\n this.expires = new Date(json[key]);\n break;\n case \"quantity\":\n this.quantity = json[key];\n break;\n case \"sku\":\n this.sku = json[key];\n break;\n }\n }\n }\n\n static fromJsonArray(jsonArray: Object[]): RwSkuInfo[] {\n let skuArray = [];\n jsonArray.forEach(json => {\n let newSkuInfo = new RwSkuInfo(json);\n skuArray.push(newSkuInfo);\n });\n\n return skuArray;\n }\n\n static toJson(rwSkuInfo: RwSkuInfo) {\n return {\n active: rwSkuInfo.active,\n expires: rwSkuInfo.expires,\n quantity: rwSkuInfo.quantity,\n sku: rwSkuInfo.sku\n };\n }\n}\n","export default interface RwTrialUpgradeResponseModel {\n NewPurchase: any;\n ErrorType: TrialUpgradeErrorType;\n}\n\nexport enum TrialUpgradeErrorType {\n None = 0,\n InternalError = 1,\n ExpiredSession = 3,\n NotDispatcher = 4,\n TrialNotFound = 5,\n ActiveFlexFound = 6,\n PaymentUpdateReq = 7,\n PaymentInfoNotFound = 8,\n CreatingSubError = 9,\n ChargifyTrialSubNotFound = 10,\n UpdatingTrialSubError = 11,\n}","export enum FulfillmentStatus {\n None = 0,\n FillSuccess = 1,\n FillFailure = 2,\n}\n\nexport enum ConfirmationType {\n Photo = 1,\n Signature = 2,\n Barcode = 3\n}\n\nexport enum MediaType {\n Image = 0\n}\n\nexport enum PODDefaultSettings {\n None = 0,\n Photo = 1,\n Signature = 2,\n PhotoAndSignature = 3\n}\n","import {ConfirmationType, MediaType} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport { RwConstants } from \"@/app/RwConstants\";\n\nexport class RwCoreMedia {\n mediaId: string;\n aid: string;\n mediaType: MediaType;\n del: boolean;\n oid: string;\n confType: ConfirmationType;\n stopId: string;\n histId: string;\n uid: string;\n rid: string;\n\n static getLink(media: RwCoreMedia): string {\n return `${RwConstants.tusFileURL}${media.mediaId}?s=${theGlobals.token}`;\n }\n}\n","import {RwPushNoteType} from \"@/app/RwEnums\";\n\nexport class FirebaseV1SendData {\n public title: string;\n public body: string;\n public rtid: string;\n //public routeIds: string[];\n public routeIdCsv: string;\n public icontype: string;\n public action: string;\n public msgId: string;\n}\n\nexport class RwPushNote {\n IsTopicMsg: boolean;\n Topic: string;\n UserId: string;\n PushType: number;\n Title: string;\n Body: string;\n IconType: string;\n Action: string;\n Type: RwPushNoteType;\n\n /* Extra info */\n RouteId: string;\n\n\n}\n\n\nexport class RwPushResp {\n\n static fromJsonArray(jsonArray: Object): RwPushResp[] {\n let respList: RwPushResp[] = [];\n if (jsonArray != null) {\n for (let key in jsonArray) {\n let val = jsonArray[key];\n let resp = RwPushResp.fromJson(val);\n respList.push(resp);\n }\n }\n return respList;\n }\n\n static fromJson(json: JSON): RwPushResp {\n let resp = new RwPushResp();\n resp.fromJson(json);\n return resp;\n }\n\n userId: string;\n pushType: number;\n code: number;\n\n\n fromJson(json: JSON) {\n for (let key in json) {\n switch (key) {\n //@formatter:off\n case \"tarId\":\n this.userId = json[key];\n break;\n case \"noteType\":\n this.pushType = json[key];\n break;\n case \"code\":\n this.code = json[key];\n break;\n //@formatter:on\n }\n }\n }\n}\n\n\n","import {RwAddReportEnum, RwAddStatusEnum, RwAddVoteEnum} from \"@/app/RwEnums\";\n\nexport default class RwAddReport {\n reportId: number;\n address: string;\n name: string;\n userId: string;\n userName: string;\n type: RwAddReportEnum;\n vote: RwAddVoteEnum;\n status: RwAddStatusEnum;\n lat: number;\n lng: number;\n latDelta: number;\n lngDelta: number;\n query: string;\n viewPort: string;\n lang: string;\n country: string;\n CD: number;\n LU: number;\n LU_By: string;\n message: string;\n step = 0;\n entityId: string = \"\";\n\n static fromJsonArray(jsonArray: Object[]) {\n let entries: RwAddReport[] = [];\n if (jsonArray != null && jsonArray.length > 0) {\n jsonArray.forEach(function (jval) {\n let logEntry = RwAddReport.fromJson(jval);\n entries.push(logEntry);\n });\n }\n return entries;\n }\n\n static fromJson(json: Object): RwAddReport {\n let report = new RwAddReport();\n for (let key in json) {\n switch (key) {\n //@formatter:off\n case \"rid\":\n report.reportId = json[key];\n break;\n case \"add\":\n report.address = json[key];\n break;\n case \"uid\":\n report.userId = json[key];\n break;\n case \"unm\":\n report.userName = json[key];\n break;\n case \"name\":\n report.name = json[key];\n break;\n case \"type\":\n report.type = json[key];\n break;\n case \"vote\":\n report.vote = json[key];\n break;\n case \"status\":\n report.status = json[key];\n break;\n case \"lat\":\n report.lat = json[key];\n break;\n case \"lng\":\n report.lng = json[key];\n break;\n case \"lat∆\":\n report.latDelta = json[key];\n break;\n case \"lng∆\":\n report.lngDelta = json[key];\n break;\n case \"query\":\n report.query = json[key];\n break;\n case \"view\":\n report.viewPort = json[key];\n break;\n case \"lang\":\n report.lang = json[key];\n break;\n case \"cntry\":\n report.country = json[key];\n break;\n case \"cd\":\n report.CD = json[key];\n break; //case \"dte\": this.date = new Date(json[key]); break;\n case \"lu\":\n report.LU = json[key];\n break;\n case \"lu_by\":\n report.LU_By = json[key];\n break;\n case \"note\":\n report.message = json[key];\n break;\n\n //@formatter:on\n }\n }\n return report;\n }\n\n\n toJSON() {\n let json = {\n rid: this.reportId,\n add: this.address,\n name: this.name,\n uid: this.userId,\n type: this.type,\n vote: this.vote,\n status: this.status,\n lat: this.lat,\n lng: this.lng,\n cd: this.CD,\n lu: this.LU,\n lu_by: this.LU_By,\n };\n\n json[\"lat∆\"] = this.latDelta;\n json[\"lng∆\"] = this.lngDelta;\n\n if (this.userName != null) json[\"unm\"] = this.userName;\n if (this.query != null) json[\"query\"] = this.query;\n if (this.viewPort != null) json[\"view\"] = this.viewPort;\n if (this.lang != null) json[\"lang\"] = this.lang;\n if (this.country != null) json[\"cntry\"] = this.country;\n if (this.message != null) json[\"note\"] = this.message;\n\n return json;\n }\n\n\n}","import moment from \"moment\";\nimport theGlobals from \"@/app/RwGlobals\"\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwDistUnits, RwHistTypes} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwCoreMedia} from \"@/app/dem/ProofOfDelivery/RwCoreMedia\";\nimport {ConfirmationType} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nexport class RwHistory {\n isDeleted = false;\n\n histId: string;\n siteId: string;\n stopId: string;\n accountId: string;\n driverId: string;\n name: string;\n priority: number;\n status: number;\n startTime: Date;\n type: number;\n note: string;\n address: string;\n lat: number;\n lng: number;\n time: number;\n dist: number;\n isArchived: boolean;\n //photo: string; // Base64? Url?\n photoLink: string;\n BaseColor: string;\n routeName: string;\n isSelectedItem: boolean = false;\n lastHash: number = 0;\n media: RwCoreMedia[];\n\n clone(): RwHistory {\n let clonedAct = new RwHistory(this.toJSON());\n clonedAct.isSelectedItem = this.isSelectedItem;\n return clonedAct;\n }\n\n get startEpoc(): number {\n return this.startTime.getTime();\n }\n\n get formattedDist(): string {\n if (this.dist) {\n return RwPrefUtils.distUnits === RwDistUnits.Kilometers\n ? Math.round((this.dist / 1000) * 10) / 10 + \" km.\"\n : Math.round(this.dist * 0.000621371 * 10) / 10 + \" mi.\";\n }\n return \"\";\n }\n\n get formattedTime(): string {\n if (this.time) {\n\n // let duration = moment.duration(this.time, \"seconds\");\n // console.log(\"formattedTime duration\", duration);\n // let humanizeText = duration.humanize();\n //console.log(\"formattedTime humanizeText\", humanizeText);\n let dateText = this.formattedStartTime;\n //console.log(\"formattedTime dateText\", dateText);\n\n return dateText;\n\n\n // return `${this.formattedStartTime} (${moment\n // .duration(this.time, \"seconds\")\n // .humanize()})`;\n }\n\n return this.formattedStartTime;\n }\n\n get driverShortString(): string {\n if (this.driverId && this.driverId !== RwUser.NoDriverId) {\n let driver = theGlobals.findDriver(this.driverId);\n if (driver) {\n return driver.userName;\n }\n }\n\n return RwConstants.EmptyString;\n }\n\n get formattedDuration(): string {\n if (this.time) {\n return `${moment.duration(this.time, \"seconds\").humanize()}`;\n }\n return \"\";\n }\n\n get formattedStartTime(): string {\n return RwDateUtils.formatDate(this.startTime)\n //return RwDateUtils.formatDateToLocal(this.startTime)\n }\n\n get formattedType(): string {\n switch (this.type) {\n case RwHistTypes.CheckIn:\n return \"Check-In\";\n\n case RwHistTypes.CheckOut:\n return \"Check-Out\";\n\n case RwHistTypes.Nav:\n return \"Navigation\";\n\n case RwHistTypes.Phone:\n return \"Phone\";\n\n case RwHistTypes.Text:\n return \"Text\";\n }\n\n return \"\";\n }\n\n get typeColor(): string {\n if (this.type === RwHistTypes.CheckIn) {\n return \"checkin\";\n }\n return \"\";\n }\n\n private _driverName: string = null;\n private _driverId: string = null;\n\n public get driverName(): string {\n let driverText: string = \"\";\n if (this._driverName && this._driverId === this.driverId) {\n driverText = this._driverName;\n //console.log(\"driverName cached\", this.driverId, driverText);\n } else {\n const gotDriverId = this.driverId && this.driverId !== RwUser.NoDriverId;\n const gotDrivers = theGlobals.drivers && theGlobals.drivers.length > 0;\n if (gotDriverId && gotDrivers) {\n let driver = theGlobals.findDriver(this.driverId);\n if (driver) {\n driverText = driver.userName;\n this._driverName = driver.userName;\n this._driverId = driver.userId;\n //console.log(\"driverName\", this.driverId, driverText);\n }\n }\n\n }\n return driverText;\n }\n\n public getMedia(confirmationType: ConfirmationType): RwCoreMedia {\n return this.media?.find(media => media.confType === confirmationType && !media.del);\n }\n\n public getPhotos(): RwCoreMedia[] {\n return this.media?.filter(media => media.confType === ConfirmationType.Photo && !media.del);\n }\n\n public getPhoto(index: number): RwCoreMedia {\n if (this.getPhotos() && this.getPhotos().length > index) {\n return this.getPhotos()[index];\n } else {\n return undefined;\n }\n }\n\n public getFirstPhoto(): RwCoreMedia | undefined {\n if (this.getPhotos() && this.getPhotos().length) {\n return this.getPhotos()[0];\n } else {\n return undefined;\n }\n }\n\n // get typeIcon(): string {\n // switch (this.type) {\n // case RwHistTypes.CheckIn:\n // case RwHistTypes.CheckOut:\n // if (this.BaseColor) {\n // let args = { typ: RwPinTypes.Stop, sub:RwPinSubTypesStop.CheckIn, color: this.BaseColor };\n // //xTODO: Convert to use SvgUrl\n // return RwPin.getPinRemoteUrl(args);\n // }\n // else {\n // let args = { typ: RwPinTypes.Stop, sub:RwPinSubTypesStop.CheckIn, color: this.BaseColor };\n // //xTODO: Convert to use SvgUrl\n // return RwPin.getPinRemoteUrl(args);\n // }\n //\n // case RwHistTypes.Nav:\n // return \"/images/icons/navIcon.png\";\n //\n // case RwHistTypes.Phone:\n // return \"/images/icons/phoneIcon.png\";\n //\n // case RwHistTypes.Text:\n // return \"/images/icons/msgIcon.png\";\n // }\n //\n // return \"\";\n // }\n\n // get hasNoteVisible(): string {\n // if (this.note && this.note !== \"\") {\n // return \"\";\n // }\n // return \"display-gone\";\n // }\n\n constructor(json?) {\n if (json != null) {\n this.fromJson(json);\n }\n }\n\n static fromJsonArray(jsonArray: Object[]) {\n let users: RwHistory[] = [];\n if (jsonArray != null) {\n jsonArray.forEach(function (jval) {\n let user = new RwHistory(jval);\n users.push(user);\n });\n }\n return users;\n }\n\n fromJson(json: Object) {\n for (let key in json) {\n switch (key) {\n //@formatter:off\n case \"d\":\n this.isDeleted = true;\n break;\n case \"aid\":\n this.histId = json[key];\n break;\n case \"uid\":\n this.accountId = json[key];\n break;\n case \"lid\":\n this.siteId = json[key];\n break;\n case \"sid\":\n this.stopId = json[key];\n break;\n case \"sub\":\n this.name = json[key];\n break;\n case \"pri\":\n this.priority = json[key];\n break;\n case \"as\":\n this.status = json[key];\n break;\n case \"tos\":\n this.startTime = new Date(json[key]);\n break;\n case \"atyp\":\n this.type = json[key];\n break;\n case \"note\":\n this.note = json[key];\n break;\n case \"did\":\n this.driverId = json[key];\n break;\n case \"add\":\n this.address = json[key];\n break;\n case \"lat\":\n this.lat = json[key];\n break;\n case \"lng\":\n this.lng = json[key];\n break;\n case \"time\":\n this.time = json[key];\n break;\n case \"dist\":\n this.dist = json[key];\n break;\n case \"plink\":\n this.photoLink = json[key];\n break;\n case \"isArch\":\n this.isArchived = json[key];\n break;\n case \"rnm\":\n this.routeName = json[key];\n break;\n case \"bc\":\n this.BaseColor = json[key];\n break;\n case \"media\":\n this.media = json[key];\n break;\n //@formatter:on\n }\n }\n }\n\n fromHistory(hist: RwHistory, copyUids: boolean = false) {\n if (copyUids) {\n // Copy unique ids: helpful for copying and editing an item\n this.histId = hist.histId;\n this.accountId = hist.accountId;\n }\n this.siteId = hist.siteId;\n this.stopId = hist.stopId;\n this.name = hist.name;\n this.priority = hist.priority;\n this.status = hist.status;\n this.startTime = hist.startTime;\n this.type = hist.type;\n this.note = hist.note;\n this.driverId = hist.driverId;\n this.address = hist.address;\n this.lat = hist.lat;\n this.lng = hist.lng;\n this.time = hist.time;\n this.dist = hist.dist;\n this.photoLink = hist.photoLink;\n this.isArchived = hist.isArchived;\n this.BaseColor = hist.BaseColor;\n this.lastHash = Date.now();\n this.media = [];\n if (theGlobals.showProofOfDelivery) {\n hist.media.forEach(media => this.media.push({...media}));\n }\n }\n\n toJSON() {\n let json = {\n aid: this.histId,\n uid: this.accountId,\n sub: this.name,\n pri: this.priority,\n as: this.status,\n atyp: this.type,\n tos: this.startTime.getTime(),\n add: this.address,\n lat: this.lat,\n lng: this.lng,\n time: this.time,\n dist: this.dist,\n plink: this.photoLink,\n isArch: this.isArchived,\n media: this.media\n };\n\n\n if (this.note != null) json[\"note\"] = this.note;\n if (this.siteId != null) json[\"lid\"] = this.siteId;\n if (this.stopId != null) json[\"sid\"] = this.stopId;\n if (this.driverId && this.driverId !== RwUser.NoDriverId) json[\"did\"] = this.driverId;\n if (this.BaseColor) json[\"bc\"] = this.BaseColor;\n\n if (!this.accountId || this.accountId.length === 0) {\n let acctId = RwPrefUtils.accountId;\n RwLog.error(\"RwHistory.toJSON\", `missing accountId (uid) ${json}, Prefs.accountId:${acctId}`);\n }\n\n return json;\n }\n\n toString() {\n return this.toJSON().toString();\n }\n}\n","import {RwRoute, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwCommit} from \"@/app/dem/RwSync\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwEntityTypes, RwTxnTypes} from \"@/app/RwEnums\";\n\n\nexport class RwModel {\n\n\n accountId: string;\n userId: string;\n orgId: string;\n token: string;\n teamName: string;\n teamDomain: string;\n dispatcherName: string;\n userName: string;\n commitList: RwCommit[] = [];\n deltaConflicts: number = 0;\n\n activeRoute: RwRoute;\n drivers: RwUser[] = [];\n sites: RwSite[] = [];\n routes: RwRoute[] = [];\n skeds: RwSked[] = [];\n history: RwHistory[] = [];\n stops: RwStop[] = [];\n tasks: RwStop[] = [];\n syncStatus: RwSyncStatus[] = [];\n lastSyncMS: number;\n\n stopHits: number;\n greedyTime: number;\n greedyDist: number;\n maxRouteSize: number;\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get lastSync(): Date {\n if (this.lastSyncMS) {\n return new Date(this.lastSyncMS);\n }\n return new Date();\n }\n\n //#region JSON APIs\n\n static fromJson(json: JSON): RwModel {\n let model = new RwModel();\n model.fromJson(json);\n return model;\n }\n\n\n fromJson(json: JSON) {\n\n\n for (let key in json) {\n switch (key) {\n\n case \"maxRouteSize\":\n this.maxRouteSize = json[key];\n //console.log(\"RwModel.fromJson\", this.maxRouteSize);\n break;\n\n // Legacy\n case \"dname\":\n this.dispatcherName = json[key];\n break;\n\n case \"tname\":\n this.teamName = json[key];\n break;\n case \"domain\":\n this.teamDomain = json[key];\n break;\n case \"aid\":\n this.accountId = json[key];\n break;\n case \"TEAM\":\n this.updateTeamFromJson(json[key]);\n break;\n case \"tkn\":\n this.token = json[key];\n break;\n case \"LAST_SYNC\":\n this.lastSyncMS = json[key];\n break;\n\n case \"drvrs\":\n case \"DRVRS\":\n // console.warn(\"FromJsonArray setup:\", RwUser.fromJsonArray(json[key]) )\n this.drivers = RwUser.fromJsonArray(json[key]);\n break;\n\n case \"acts\":\n case \"ACTIVITIES\":\n this.history = RwHistory.fromJsonArray(json[key]);\n this.globals.hist = this.history;\n break;\n\n case \"routes\":\n case \"ROUTES\":\n this.routes = RwRoute.fromJsonArray(json[key]);\n break;\n\n case \"scheds\":\n case \"skeds\":\n case \"SCHEDULES\":\n this.skeds = RwSked.fromJsonArray(json[key]);\n //console.warn(\"fromJSON in Model, get Skeds:\", RwSked.fromJsonArray(json[key]));\n break;\n\n case \"sites\":\n case \"LOCATIONS\":\n this.sites = RwSite.fromJsonArray(json[key]);\n break;\n\n case \"stops\":\n case \"STOPS\": {\n this.stops = RwStop.fromJsonArray(json[key]);\n break;\n }\n\n case \"TASKS\": {\n //console.log(\"RwModel.fromJSON TASKS:\", json[key][0]);\n this.tasks = RwStop.fromJsonArray(json[key]);\n this.tasks.forEach(t => t.isTask = true);\n break;\n }\n\n case \"AAROUTE\": {\n this.activeRoute = new RwRoute(json[key]);\n //self.mergeRoutes([rt]);\n break;\n }\n case \"COMMITS\":\n this.commitList = json[key] as RwCommit[];\n break;\n\n case \"conflicts\":\n //RwLog.consoleWarn(\"Merging conflicts:\", json[key]);\n this.deltaConflicts = json[key];\n break;\n\n case \"nhq\": //node hits\n //RwLog.consoleWarn(\"Merging conflicts:\", json[key]);\n this.stopHits = json[key];\n break;\n\n case \"gdtime\": //node hits\n this.greedyTime = json[key];\n break;\n\n case \"gddist\": //node hits\n this.greedyDist = json[key];\n break;\n\n case \"STATUS\": //node hits\n this.syncStatus = RwSyncStatus.fromJsonArray(json[key]);\n break;\n\n }\n }\n\n // this.globals.routes.forEach(rt => {\n // if (rt.routeId === this.globals.orgId) {\n // this.globals.unassignedStopsRoute = rt;\n // }\n // });\n // if (this.globals.unassignedStopsRoute) {\n // this.globals.removeRouteById(this.globals.orgId);\n // }\n\n // RwLog.warnConsole(\"RwModel.fromJson _routes count: \", this._routes.length);\n // RwLog.warnConsole(\"RwModel.fromJson _sites count: \", this._sites.length);\n // RwLog.warnConsole(\"RwModel.fromJson _acts count: \", this._acts.length);\n // RwLog.warnConsole(\"RwModel.fromJson scheds count: \", this.scheds.length);\n // RwLog.warnConsole(\"RwModel.fromJson drivers count: \", this.drivers.length);\n // RwLog.warnConsole(\"RwModel.fromJson trucks count: \", this.trucks.length);\n // RwLog.warnConsole(\"RwModel.fromJson zones count: \", this.zones.length);\n //this.updateBadges();\n }\n\n\n updateTeamFromJson(json: Object) {\n for (let key in json) {\n switch (key) {\n case \"uid\":\n this.userId = json[key];\n break;\n case \"uname\":\n this.userName = json[key];\n break;\n case \"dname\":\n this.dispatcherName = json[key];\n break;\n case \"tname\":\n this.teamName = json[key];\n break;\n case \"domain\":\n this.teamDomain = json[key];\n break;\n case \"aid\":\n this.accountId = json[key];\n break;\n case \"oid\":\n this.orgId = json[key];\n break;\n }\n }\n }\n\n //#endregion JSON APIs\n\n\n isEmpty(): boolean {\n let isEmpty = true;\n\n if (this.history && this.history.length > 0) {\n isEmpty = false;\n } else if (this.routes && this.routes.length > 0) {\n isEmpty = false;\n } else if (this.skeds && this.skeds.length > 0) {\n isEmpty = false;\n } else if (this.sites && this.sites.length > 0) {\n isEmpty = false;\n } else if (this.drivers && this.drivers.length > 0) {\n isEmpty = false;\n } else if (this.stops && this.stops.length > 0) {\n isEmpty = false;\n } else if (this.tasks && this.tasks.length > 0) {\n isEmpty = false;\n } else if (this.commitList && this.commitList.length > 0) {\n isEmpty = false;\n }\n\n return isEmpty;\n }\n\n get gotConflicts(): boolean {\n return this.deltaConflicts > 0;\n }\n\n\n public isCommitted(eid: string, txn: RwTxnTypes) {\n let isCommitted = false;\n if (this.commitList) {\n let commit = this.commitList.find(c => c.eid === eid && c.txn === txn && c.code === 200);\n if (commit) {\n isCommitted = true;\n }\n }\n return isCommitted;\n }\n\n\n public findCommits(entityType: RwEntityTypes, txn: RwTxnTypes): RwCommit[] {\n let commits: RwCommit[] = [];\n if (this.commitList) {\n commits = this.commitList.filter(c => c.ntt === entityType && c.txn === txn && c.code === 200);\n }\n //RwLog.logConsole(\"DeleteRoutesV2: Commit List\", result.commitList);\n return commits;\n }\n\n}\n\n\n","import moment from \"moment\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\nimport {RwPinSubTypesStop, RwPinTypes, RwStopVios} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwLog} from '@/app/dal/RwLog';\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\"\nimport {RwAddress} from \"@/app/dem/RwSearchResult\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwWebUtils} from \"@/app/utils/RwWebUtils\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {md5} from \"md5js\";\nimport localDB from \"@/app/RwLocalDB\";\n\nexport class RwPinArgs {\n typ: RwPinTypes;\n sub?: number;\n seq?: number;\n drp?: number;\n pri?: number;\n vio?: number;\n color?: string;\n isFirst?: boolean;\n isFinal?: boolean;\n isSelected?: boolean;\n isSked?: boolean;\n hasDrp?: boolean;\n src?: string;\n selectRatio? = 0;\n isComplete? = false;\n\n static isColorNonDefault(args: RwPinArgs): boolean {\n let isNonDefault = false;\n if (args.color && args.color.length > 0) {\n switch (args.typ) {\n case RwPinTypes.Stop:\n if (args.color.toUpperCase() !== \"#E91E63\") isNonDefault = true;\n break;\n case RwPinTypes.Task:\n if (args.color.toUpperCase() !== \"#E91E63\") isNonDefault = true;\n break;\n case RwPinTypes.Site:\n if (args.color.toUpperCase() !== \"#40A23F\") isNonDefault = true;\n break;\n }\n }\n return isNonDefault;\n }\n\n}\n\n\nexport class RwPin {\n\n //#region Constructors\n\n static fromRoute(route: RwRoute): RwPin {\n let pin: RwPin = null;\n if (route != null) {\n pin = new RwPin();\n pin.type = RwPinTypes.Route;\n pin.id = route.routeId;\n pin.title = route.name;\n pin.lat = route.lat;\n pin.lng = route.lng;\n pin.route = route;\n }\n return pin;\n }\n\n static fromStop(stop: RwStop): RwPin {\n let pin = new RwPin();\n this.updateStopPin(pin, stop);\n return pin;\n }\n\n static updateStopPin(pin: RwPin, stop: RwStop) {\n let route = thePlanSpace.activeRoute;\n if (stop != null && route != null) {\n pin.invalidatePinImage();\n pin.type = RwPinTypes.Stop;\n pin.id = stop.pinId;\n pin.title = stop.name;\n pin.lat = stop.lat;\n pin.lng = stop.lng;\n pin.seq = stop.seq;\n pin.stop = stop;\n pin.isComplete = stop.isComplete;\n pin.isFirst = route.isFirstStop(stop);\n pin.isFinal = route.isFinalStop(stop);\n pin.note = stop.note;\n pin.isTask = stop.isTask;\n pin.colorGroup = stop.colorGroup;\n pin.stopSeq = stop.seq;\n //console.warn(\"updateStopPin\", pin.title, pin.stopSeq)\n\n\n let sked = stop.getSked();\n if (sked != null) {\n pin.isSked = true;\n pin.priority = sked.priority;\n stop.priority = sked.priority;\n\n // if(stop.openTime > 0 || stop.closeTime > 0){\n // console.log(\"Stop.updateStopPin openTime, closeTime\", stop.openTime, stop.closeTime)\n // }\n\n pin.isAvail = stop.getIsAvailable(sked);\n pin.isVio = stop.gotViolations(pin.isAvail);\n let vios = stop.getViolations(pin.isAvail);\n let isActive = stop.getIsActivePin(pin.isAvail, pin.isComplete, vios);\n pin.isActive = isActive;\n stop.isActive = isActive;\n } else {\n pin.isAvail = stop.getIsAvailable(null);\n pin.isActive = true;\n stop.isActive = true;\n pin.isVio = stop.gotViolations(pin.isAvail);\n }\n\n }\n }\n\n static fromStopPins(pins: RwPin[]): RwPin {\n let pin: RwPin = null;\n let route = thePlanSpace.activeRoute;\n if (route && pins && pins.length > 1) {\n pin = new RwPin();\n pin.type = RwPinTypes.Stop;\n //pin.subType = RwPinSubTypesStop.Cluster;\n pin.id = RwSysUtils.guidNew();\n pin.clusteredPins = pins;\n pins.forEach(p => p.clusterParent = pin);\n\n //For data purposes sort by \"seq desc\" and take the 1st stop pin\n let firstStop: RwPin;\n let sequencedStops = pins.filter(s => s.seq > 0 && s.seq < thePlanSpace.maxRouteSize);\n if (sequencedStops.length > 0) {\n if (sequencedStops.length == 1) {\n firstStop = sequencedStops[0];\n } else {\n let orderedStops = pins\n .filter(s => s.seq > 0 && s.seq < thePlanSpace.maxRouteSize)\n .sort((s1, s2) => {\n if (s1.seq < s2.seq) return -1;\n if (s1.seq > s2.seq) return 1;\n return 0;\n })\n firstStop = orderedStops[0];\n }\n } else {\n firstStop = pins[0];\n }\n\n\n if (firstStop) {\n let coordText = RwTextUtils.formatCoords(firstStop.lat, firstStop.lng);\n pin.title = `${pins.length} Stops @ ${coordText}`;\n pin.lat = firstStop.lat;\n pin.lng = firstStop.lng;\n pin.seq = firstStop.seq;\n pin.stopSeq = firstStop.seq;\n } else {\n RwLog.consoleError(\"WTF: Cluster: no first stop\", pins, firstStop);\n }\n }\n return pin;\n }\n\n static fromTask(task: RwStop): RwPin {\n let pin: RwPin = null;\n if (task) {\n pin = new RwPin();\n pin.type = RwPinTypes.Task;\n pin.id = task.pinId;\n pin.title = task.name;\n //pin.address = task.address;\n pin.lat = task.lat;\n pin.lng = task.lng;\n pin.seq = task.seq;\n pin.task = task;\n pin.note = task.note;\n pin.isTask = true;\n pin.colorGroup = task.colorGroup;\n pin.stopSeq = task.seq;\n }\n return pin;\n }\n\n static fromSite(site: RwSite): RwPin {\n let pin: RwPin = null;\n if (site != null) {\n pin = new RwPin();\n pin.type = RwPinTypes.Site;\n pin.id = site.siteId;\n pin.title = site.name;\n pin.lat = site.lat;\n pin.lng = site.lng;\n pin.site = site;\n pin.note = site.note;\n\n\n let route = thePlanSpace.activeRoute;\n if (route) {\n pin.isAvail = site.isAvailable(route.startTime, route.finishTime);\n }\n\n }\n return pin;\n }\n\n static fromDriver(driver: RwUser): RwPin {\n let pin: RwPin = null;\n if (driver != null) {\n pin = new RwPin();\n pin.type = RwPinTypes.Driver;\n pin.id = driver.userId;\n pin.title = driver.userName;\n\n //console.warn(\"RwPin.fromDriver\", driver.userName, driver.name, driver);\n //console.warn(\"RwPin.fromDriver\", driver.userName, pin.title);\n\n pin.lat = driver.lat || 0;\n pin.lng = driver.lng || 0;\n pin.driver = driver;\n\n // let route = RwApp.model.driver.activeRoute;\n // pin.isAvail = site.isAvailable(route.schedStart, route.schedEnd);\n }\n return pin;\n }\n\n\n //#endregion\n\n\n //#region Props\n\n id: string;\n title: string;\n lat: number = 0;\n lng: number = 0;\n seq: number = 0;\n type: RwPinTypes = RwPinTypes.Stop;\n stop: RwStop;\n site: RwSite;\n task: RwStop;\n driver: RwUser;\n route: RwRoute;\n\n isAvail: boolean = true;\n isActive: boolean = true;\n isFirst: boolean = false;\n isFinal: boolean = false;\n isComplete: boolean = false;\n isSked: boolean = false;\n priority: number = 0;\n stopSeq: number = 0;\n isVio: boolean = false;\n\n isTask: boolean = false;\n colorGroup: number = 0;\n\n start: number = 0;\n end: number = 0;\n note: string = \"\";\n\n private cachedProximity: number = 0;\n private cachedProximityLat: number = 0;\n private cachedProximityLng: number = 0;\n\n marker?: RwMarker;\n clusterParent: RwPin;\n clusteredPins: Array;\n\n\n lastHash: number = 0;\n lastArgsUpdate: number = 0;\n isHovering: boolean = false;\n isFocused: boolean = false;\n\n get plan(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n\n get hasNote(): boolean {\n if (this.note && this.note !== \"\") {\n return true;\n }\n return false;\n }\n\n\n get hasDrop(): boolean {\n if (this.type == RwPinTypes.Stop && this.stop) {\n return this.stop.hasDrops();\n }\n return false;\n }\n\n\n get showCheckStopTime(): boolean {\n if (this.type === RwPinTypes.Stop && this.stop && this.stop.checkDate) {\n return true;\n }\n return false;\n }\n\n\n get showSvcTimePin(): boolean {\n if (this.type === RwPinTypes.Stop && this.stop && !this.stop.checkDate) {\n return this.stop.visitTime !== -1;\n }\n return false;\n }\n\n\n get showSvcTimeStar(): boolean {\n if (\n this.type === RwPinTypes.Stop &&\n this.stop &&\n this.stop.visitTime === -1 &&\n this.stop.siteId &&\n !this.stop.checkDate\n ) {\n let site = this.stop.getSite();\n if (site && site.visitTime !== -1) {\n return true;\n }\n }\n return false;\n }\n\n\n get dropSeq(): number {\n if (this.type == RwPinTypes.Stop && this.stop) {\n let drops = this.stop.getDrops();\n\n if (drops && drops.length > 0) {\n return drops[0].seq;\n }\n\n return 0;\n //return this.stop.drop\n }\n return 0;\n }\n\n\n get displayStop(): string {\n if (this.type === RwPinTypes.Stop) {\n return \"\";\n }\n return \"display-gone\";\n }\n\n\n get travelText(): string {\n switch (this.type) {\n case RwPinTypes.Stop:\n if (this.stop) {\n return this.stop.travelText;\n }\n break;\n\n case RwPinTypes.Site:\n if (this.site) {\n return this.site.lastCheckInText;\n }\n break;\n\n case RwPinTypes.Route:\n if (this.route) {\n return `Travel Time: ${this.route.travelTimeText}`;\n }\n break;\n }\n return \"\";\n }\n\n\n get durationText(): string {\n switch (this.type) {\n case RwPinTypes.Stop:\n if (this.stop) {\n return this.stop.visitTimeText;\n }\n break;\n\n case RwPinTypes.Route:\n if (this.route) {\n return `Total Time: ${this.route.totalTimeString}`;\n }\n break;\n }\n return \"\";\n }\n\n\n get timeText(): string {\n let timeText = \"\";\n switch (this.type) {\n case RwPinTypes.Stop:\n if (this.stop) {\n timeText = this.stop.timeText;\n }\n break;\n\n case RwPinTypes.Route:\n\n if (this.route) {\n timeText = `Start Time: ${this.route.startTimeString}`;\n //MONITOR: if there is need for an abstract finish location pin\n }\n\n break;\n\n }\n return timeText;\n }\n\n\n get timeFinishText(): string {\n const finishTime = moment(this.route.startTime).add(this.route.totalTime, \"seconds\");\n const timeText = `Finish Time: ${finishTime.format(\"L LT\")}`;\n return timeText;\n }\n\n\n get baseOrder(): number {\n let order = -1;\n switch (this.type) {\n\n case RwPinTypes.Route:\n if (this.route) {\n order = 0;\n }\n break;\n\n case RwPinTypes.Stop:\n if (this.stop) {\n if (this.stop.isActive) {\n order = this.stop.seq + 1;\n } else {\n order = 251 + this.stop.seq;\n }\n }\n break;\n\n case RwPinTypes.Site:\n if (this.site) {\n order = this.stringHash(this.baseColor, true);\n }\n break;\n\n case RwPinTypes.Task:\n if (this.task) {\n order = this.stringHash(this.baseColor, true);\n }\n break;\n }\n return order;\n }\n\n stringHash(string, noType) {\n let hashString = string;\n if (!noType) {\n hashString = `string${string}`;\n }\n let hash = 0;\n for (let i = 0; i < hashString.length; i++) {\n const character = hashString.charCodeAt(i);\n hash = ((hash << 5) - hash) + character;\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n }\n\n\n get violationText(): string {\n let vioText = \"\"\n switch (this.type) {\n case RwPinTypes.Stop:\n if (this.stop) {\n vioText = this.stop.violationText;\n }\n break;\n\n case RwPinTypes.Site:\n if (this.site) {\n vioText = this.site.violationText(this.isAvail);\n }\n break;\n }\n return vioText;\n }\n\n\n get address(): string {\n switch (this.type) {\n case RwPinTypes.Stop:\n if (this.stop) {\n return this.stop.address;\n }\n break;\n\n case RwPinTypes.Task:\n if (this.task) {\n return this.task.address;\n }\n break;\n\n case RwPinTypes.Site:\n if (this.site) {\n return this.site.address;\n }\n break;\n\n\n case RwPinTypes.Route:\n //HACK: Seems odd to not show address here\n if (this.route) {\n return this.route.address;\n //return `Travel Dist: ${this.route.totalDistText}`;\n }\n break;\n // case RwPinTypes.End:\n // break;\n }\n return \"\";\n }\n\n\n get subType(): number {\n let sub = 0;\n if (this.type === RwPinTypes.Stop) {\n let stop = this.stop;\n let route = this.plan.activeRoute;\n\n if (this.isCluster) {\n sub = RwPinSubTypesStop.Cluster;\n } else {\n if (stop && route) {\n sub = this.calcSubTypeStop(stop, route);\n }\n }\n } else {\n sub = -1;\n }\n return sub;\n }\n\n\n get isRoutePin() {\n let isRoutePin = false;\n //let pinTypes = [RwPinTypes.Stop, RwPinTypes.Cluster, RwPinTypes.Start, RwPinTypes.End];\n let pinTypes = [RwPinTypes.Stop, RwPinTypes.Route];\n if (pinTypes.find(pt => pt == this.type)) {\n isRoutePin = true;\n }\n return isRoutePin;\n }\n\n\n get eid(): string {\n let eid: string;\n switch (this.type) {\n //@formatter:off\n case RwPinTypes.Route:\n eid = this.route.routeId;\n break;\n case RwPinTypes.Site:\n eid = this.site.siteId;\n break;\n case RwPinTypes.Task:\n eid = this.task.stopId;\n break;\n case RwPinTypes.Stop: {\n if (this.stop) {\n eid = this.stop.stopId;\n }\n //NOTE: Clusters will not have an eid\n break;\n }\n //@formatter:on\n }\n return eid;\n }\n\n get baseColor(): string {\n let colorHex: string;\n switch (this.type) {\n //@formatter:off\n case RwPinTypes.Stop:\n colorHex = this.stop.baseColor;\n break;\n case RwPinTypes.Site:\n colorHex = this.site.baseColor;\n break;\n case RwPinTypes.Task:\n colorHex = this.task.baseColor;\n break;\n //@formatter:on\n }\n return colorHex;\n }\n\n set baseColor(colorHex: string) {\n switch (this.type) {\n //@formatter:off\n case RwPinTypes.Stop:\n this.stop.baseColor = colorHex;\n break;\n case RwPinTypes.Site:\n this.site.baseColor = colorHex;\n break;\n case RwPinTypes.Task:\n this.task.baseColor = colorHex;\n break;\n //@formatter:on\n }\n }\n\n\n get visitTime(): number {\n let visitTime: number;\n switch (this.type) {\n //@formatter:off\n case RwPinTypes.Stop:\n visitTime = this.stop.visitTime;\n break;\n case RwPinTypes.Site:\n visitTime = this.site.visitTime;\n break;\n case RwPinTypes.Task:\n visitTime = this.task.visitTime;\n break;\n //@formatter:on\n }\n return visitTime;\n }\n\n set visitTime(visitTime: number) {\n switch (this.type) {\n //@formatter:off\n case RwPinTypes.Stop:\n this.stop.visitTime = visitTime;\n break;\n case RwPinTypes.Site:\n this.site.visitTime = visitTime;\n break;\n case RwPinTypes.Task:\n this.task.visitTime = visitTime;\n break;\n //@formatter:on\n }\n }\n\n static get searchPinSVG() {\n const el = document.createElement(\"div\");\n const wrapper = document.createElement(\"div\");\n const img = document.createElement(\"img\");\n img.src = \"/images/icons/targetPrimary.png\";\n img.style.maxWidth = \"100%\";\n wrapper.id = \"search-marker-wrapper\"\n\n wrapper.style.width = \"48px\";\n wrapper.style.height = \"48px\";\n wrapper.appendChild(img);\n el.appendChild(wrapper);\n return el;\n }\n\n invalidatePinImage() {\n this._imgArgs = null;\n this._dataUrl = null;\n this._urlHash = null;\n }\n\n\n _imgArgs: RwPinArgs;\n get imgArgs(): RwPinArgs {\n if (!this._imgArgs) {\n this._imgArgs = this.createImgArgs()\n }\n return this._imgArgs;\n }\n\n _urlHash: string;\n get urlHash(): string {\n if (!this._urlHash) {\n this._urlHash = RwPin.getPinHash(this.imgArgs)\n }\n return this._urlHash;\n }\n\n\n _dataUrl: string = undefined;\n get dataUrl(): string {\n const self = this;\n let url = thePlanSpace.globals.idxURL[this.urlHash];\n if (url && url.length > 0) {\n return url;\n } else {\n self\n .dataUrlAsync()\n .then(newUrl => {\n this._dataUrl = newUrl;\n });\n }\n //console.log(\"RwPin.dataUrl return this._dataUrl\", this._dataUrl)\n return this._dataUrl;\n }\n\n\n dataUrlAsync(): Promise {\n const self = this;\n const SOURCE = \"RwPin.dataUrlAsync\";\n let url: string;\n\n return new Promise((resolve) => {\n\n switch (this.type) {\n\n case RwPinTypes.Route: {\n url = this.getRouteUrl();\n resolve(url);\n break;\n }\n\n case RwPinTypes.Stop: {\n let stop = self.stop;\n if (stop || this.isCluster) {\n let url = thePlanSpace.globals.idxURL[this.urlHash];\n if (url && url.length > 0) {\n //console.log(\"dataUrlAsync stop url\", url);\n resolve(url);\n } else {\n RwPin\n .calcStopPinUrl(this.urlHash, this.imgArgs)\n .then(dataUrl => {\n //console.log(\"dataUrlAsync stop dataUrl\", dataUrl);\n resolve(dataUrl);\n });\n }\n\n }\n break;\n }\n\n case RwPinTypes.Site: {\n let site = this.site;\n if (site) {\n let url = thePlanSpace.globals.idxURL[this.urlHash];\n if (url && url.length > 0) {\n resolve(url);\n } else {\n RwPin\n .calcSitePinUrlNew(this.urlHash, this.imgArgs)\n .then(dataUrl => {\n url = dataUrl;\n resolve(url);\n });\n }\n //url = RwImgUtils.calcSitePinUrl(site.isAvail, site.priority, site.baseColor, isSelected);\n }\n //resolve(url);\n break;\n }\n\n case RwPinTypes.Task: {\n let task = this.task;\n if (task) {\n\n let url = thePlanSpace.globals.idxURL[this.urlHash];\n if (url && url.length > 0) {\n resolve(url);\n } else {\n RwPin\n .calcTaskPinUrl(this.urlHash, this.imgArgs)\n .then(dataUrl => {\n resolve(dataUrl);\n });\n //url = RwImgUtils.calcTaskPinUrl(task.baseColor, isSelected);\n }\n }\n //resolve(url);\n break;\n }\n\n case RwPinTypes.Driver: {\n //xREF: DriverPin Update Pin Url;\n let driver = this.driver;\n if (driver) {\n if (driver.imageUrl) {\n url = driver.imageUrl;\n //console.log(\"RwPin.imgUrl Driver\", url);\n }\n } else {\n RwLog.consoleError(\"WTF: driver == null\");\n }\n resolve(url);\n break;\n }\n }\n\n });\n\n }\n\n\n get dataItem() {\n let dataItem;\n if (this.stop) dataItem = this.stop;\n else if (this.task) dataItem = this.task;\n else if (this.driver) dataItem = this.driver;\n else if (this.route) dataItem = this.route;\n else if (this.site) dataItem = this.site;\n return dataItem;\n }\n\n\n private getRouteUrl() {\n let url = \"\";\n let route = this.route;\n if (route != null) {\n const baseDomain = window.location.origin;\n switch (route.subType) {\n case 0:\n url = `${baseDomain}/images/icons/icc_pin_flag_green.png`;\n break;\n case 1:\n url = `${baseDomain}/images/icons/start_ring.png`;\n break;\n case 2:\n url = `${baseDomain}/images/icons/icc_pin_flag_rt.png`;\n break;\n case 3:\n url = `${baseDomain}/images/icons/icc_pin_flag_grey.png`;\n break;\n case 4:\n url = `${baseDomain}/images/icons/start_ring_x.png`;\n break;\n case 5:\n url = `${baseDomain}/images/icons/icc_pin_flag_rt_inactive.png`;\n break;\n\n default:\n url = \"/images/icons/icc_pin_flag_green.png\";\n RwLog.error(\"RwPin.getRouteUrl\", `Invalid subtype for icon: ${route.subType}, routeid: ${route.routeId}`);\n break;\n }\n }\n return url;\n }\n\n\n get zIndex(): number {\n //make the lower the sequence, the higher the z-order\n let z = 0;\n\n //console.log(\"RwPin.zIndex isSelected\", this.title)\n let isSelected = this.plan.isSelected(this);\n\n switch (this.type) {\n\n case RwPinTypes.Stop:\n case RwPinTypes.Task:\n if (!this.isComplete) {\n z = 3;\n let stopCount = this.plan.maxRouteSize;\n if (this.plan.activeRoute && this.plan.activeRoute.stops) {\n stopCount = this.plan.activeRoute.stops.length\n }\n\n if (this.seq >= 0 && this.seq <= this.plan.maxRouteSize) {\n z = stopCount + 5 - this.seq;\n }\n }\n break;\n\n case RwPinTypes.Site:\n z = 2;\n break;\n case RwPinTypes.Driver:\n z = 1;\n break;\n\n }\n\n //New Map Appears to use ZIndex of lower is Top\n let finalZ = 1000 - (z + (isSelected ? 240 : 0));\n //console.warn(`${this.title}, isSelected:${isSelected}, zIndex:${finalZ}`)\n return finalZ;\n }\n\n\n get scale(): number {\n //make the lower the sequence, the higher the z-order\n let scale = 1;\n switch (this.type) {\n case RwPinTypes.Stop:\n scale = 1;\n break;\n case RwPinTypes.Site:\n scale = 40 / 48;\n break;\n }\n return scale;\n }\n\n\n get isSite(): boolean {\n return this.type === RwPinTypes.Site;\n }\n\n\n get isStop(): boolean {\n return this.type === RwPinTypes.Stop;\n }\n\n\n get isCluster(): boolean {\n return this.clusteredPins && this.clusteredPins.length > 0;\n }\n\n //#endregion\n\n\n private calcSubTypeStop(stop: RwStop, route: RwRoute) {\n\n let sub = 0;\n if (stop.isComplete) {\n sub = RwPinSubTypesStop.CheckIn;\n } else {\n\n if (this.isCluster) {\n sub = RwPinSubTypesStop.Cluster;\n } else {\n\n if (this.isAvail) {\n sub = RwPinSubTypesStop.Stop;\n\n if (this.isVio && stop.violations == RwStopVios.Unreachable) {\n sub = RwPinSubTypesStop.Infeasible;\n } else if (this.isVio && stop.violations == RwStopVios.Closed) {\n sub = RwPinSubTypesStop.DoNotEnter;\n }\n } else {\n //console.warn(\"not available\", stop);\n sub = RwPinSubTypesStop.DoNotEnter;\n }\n }\n }\n\n return sub;\n }\n\n\n createImgArgs(): RwPinArgs {\n\n let args = new RwPinArgs();\n const route = this.plan.activeRoute;\n //console.log(\"RwPin.createImgArgs title, type \", this.title, this.type)\n let isSelected = this.plan.isSelected(this);\n switch (this.type) {\n\n case RwPinTypes.Route: {\n args = {typ: RwPinTypes.Route, sub: route.subType};\n break;\n }\n\n case RwPinTypes.Stop: {\n if (!this.isCluster) {\n args = this.createStopImgArgs(route, args, isSelected);\n } else {\n args = this.createClusterImgArgs(args, isSelected);\n }\n break;\n }\n\n case RwPinTypes.Site: {\n args = this.createSiteImgArgs(args, isSelected);\n break;\n }\n\n case RwPinTypes.Task: {\n args = this.createTaskImgArgs(args, isSelected);\n break;\n }\n\n case RwPinTypes.Driver: {\n //args = this.createTaskImgArgs(args, isSelected);\n break;\n }\n\n default:\n RwLog.consoleError(\"WTF: Unexpected type\", this.type)\n break;\n\n }\n return args;\n }\n\n private createTaskImgArgs(args: RwPinArgs, isSelected: boolean) {\n let task = this.task;\n if (task) {\n args = {\n typ: RwPinTypes.Task,\n isSelected: isSelected,\n color: task.baseColor,\n src: this.title,\n };\n }\n return args;\n }\n\n private createSiteImgArgs(args: RwPinArgs, isSelected: boolean) {\n let site = this.site;\n if (site) {\n //url = RwImgUtils.calcSitePinUrl(site.isAvail, site.priority, site.baseColor, isSelected);\n let baseColor = site.baseColor;\n let pri = site.priority;\n if (!baseColor) baseColor = baseColor = RwImgUtils.getHexColorFromPriority(pri);\n args = {\n typ: RwPinTypes.Site,\n isSelected: isSelected,\n color: baseColor,\n src: this.title,\n };\n }\n return args;\n }\n\n private createStopImgArgs(route: RwRoute, args: RwPinArgs, isSelected: boolean) {\n let stop = this.stop;\n if (stop) {\n let sub = this.calcSubTypeStop(stop, route);\n let color = sub === 1 ? RwConstants.CheckinPinGrey : stop.baseColor;\n args = {\n typ: this.type,\n sub: sub,\n color: color,\n isSelected: isSelected,\n drp: this.dropSeq, //Calculated from Drops\n seq: stop.seq,\n isSked: stop.isScheduled,\n pri: this.isSked ? stop.priority : undefined,\n vio: stop.violations,\n src: this.title,\n hasDrp: stop.hasDrops()\n };\n\n // if (stop.name === \"SkedTest\") {\n // console.log(\"RwPin.imgArgs\", \"SkedTest isScheduled, subType, pri\", stop.isScheduled, subType, stop.priority);\n // }\n\n if (route) {\n args.isFirst = this.stop.isMarkedFirst(route);\n args.isFinal = this.stop.isMarkedFinal(route);\n }\n //console.warn(\"logs 1\", args);\n }\n return args;\n }\n\n private createClusterImgArgs(args: RwPinArgs, isSelected: boolean) {\n const self = this;\n //console.log(\"createClusterImgArgs\");\n let sub = RwPinSubTypesStop.Cluster;\n let color = RwPrefUtils.stopColor;\n let allChecked = this.clusteredPins.every(p => p.stop && p.stop.isComplete);\n //console.warn(\"********* createClusterImgArgs allChecked\", allChecked)\n if (allChecked) {\n color = RwConstants.CheckinPinGrey;\n } else {\n let colorSet = [...new Set(this.clusteredPins.map(p => p.baseColor))];\n if (colorSet.length === 1) {\n color = colorSet[0];\n }\n }\n\n let minSeq = 0;\n let sequences = this.clusteredPins.filter(p => p.seq > 0 && p.seq <= 240).map(p => p.seq);\n if (sequences.length > 0) {\n minSeq = Math.min(...sequences);\n }\n\n let selectRatio = this.selectRatio();\n\n args = {\n typ: this.type,\n sub: sub,\n color: color,\n isSelected: isSelected,\n seq: minSeq,\n src: this.title,\n selectRatio: selectRatio,\n isComplete: allChecked,\n };\n\n //console.warn(\"********* createClusterImgArgs\", args)\n\n return args;\n }\n\n\n selectRatio() {\n let selectRatio = 0.0\n let clusterCount = this.clusteredPins ? this.clusteredPins.length : 0;\n if (clusterCount > 0) {\n let selectCount = this.clusteredPins.filter(p => thePlanSpace.isSelected(p)).length;\n selectRatio = selectCount / clusterCount;\n }\n return selectRatio;\n }\n\n\n //region Sorting APIs\n\n isEquivalent(pin: RwPin): boolean {\n let isEqual = true;\n\n if (this.type != pin.type) {\n RwLog.consoleWarn(\"this.type != \", this.type, pin.type);\n return false;\n }\n if (this.priority != pin.priority) {\n RwLog.consoleWarn(\"this.priority != \", this.priority, pin.priority);\n return false;\n }\n if (this.isVio != pin.isVio) {\n RwLog.consoleWarn(\"this.isVio != \", this.isVio, pin.isVio);\n return false;\n }\n if (this.isSked != pin.isSked) {\n RwLog.consoleWarn(\"this.isSched != \", this.isSked, pin.isSked);\n return false;\n }\n if (this.isAvail != pin.isAvail) {\n RwLog.consoleWarn(\"this.isAvail != \", this.isAvail, pin.isAvail);\n return false;\n }\n if (this.isFirst != pin.isFirst) {\n RwLog.consoleWarn(\"this.isFirst != \", this.isFirst, pin.isFirst);\n return false;\n }\n if (this.isFinal != pin.isFinal) {\n RwLog.consoleWarn(\"this.isFinal != \", this.isFinal, pin.isFinal);\n return false;\n }\n if (this.isComplete != pin.isComplete) {\n RwLog.consoleWarn(\"this.isComplete != \", this.isComplete, pin.isComplete);\n return false;\n }\n if (this.seq != pin.seq) {\n RwLog.consoleWarn(\"this.seq != \", this.seq, pin.seq);\n return false;\n }\n if (this.lat != pin.lat) {\n RwLog.consoleWarn(\"this.lat != \", this.lat, pin.lat);\n return false;\n }\n if (this.lng != pin.lng) {\n RwLog.consoleWarn(\"this.lng != \", this.lng, pin.lng);\n return false;\n }\n if (this.hasDrop != pin.hasDrop) {\n RwLog.consoleWarn(\"this.hasDrop != \", this.hasDrop, pin.hasDrop);\n return false;\n }\n if (this.stopSeq != pin.stopSeq) {\n RwLog.consoleWarn(\"this.stopSeq != \", this.stopSeq, pin.stopSeq);\n return false;\n }\n if (this.dropSeq != pin.dropSeq) {\n RwLog.consoleWarn(\"this.dropSeq != \", this.dropSeq, pin.dropSeq);\n return false;\n }\n\n return isEqual;\n }\n\n getProximity(lat: number, lng: number): number {\n let distMeters: number;\n if (lat !== 0 && lng !== 0 && this.lat != 0 && this.lng != 0) {\n if (lat === this.cachedProximityLat && lng === this.cachedProximityLng) {\n distMeters = this.cachedProximity;\n //console.log(\"getProximity cached\", distMeters);\n } else {\n let startPoint = new H.geo.Point(lat, lng);\n let pinPoint = new H.geo.Point(this.lat, this.lng);\n distMeters = startPoint.distance(pinPoint);\n this.cachedProximity = distMeters;\n //console.warn(\"getProximity generated\", distMeters);\n }\n return distMeters;\n }\n }\n\n\n // static sortStops(rawPins: RwPin[]): RwPin[] {\n // let sorted: RwPin[];\n // switch (RwPrefUtils.sortListView) {\n // case \"seqThenProx\":\n // sorted = rawPins.sort(RwPin.seqCompare);\n // break;\n // case \"seqThenName\":\n // sorted = rawPins.sort(RwPin.seqCompare);\n // break;\n // case \"proxOnly\":\n // sorted = rawPins.sort(RwPin.distCompare);\n // break;\n // case \"nameOnly\":\n // sorted = rawPins.sort(RwPin.nameCompare);\n // break;\n // default:\n // sorted = rawPins;\n // break;\n // }\n // return sorted;\n // }\n\n // static sortSites(rawPins: RwPin[]): RwPin[] {\n // let sorted: RwPin[];\n // switch (RwPrefUtils.sortListView) {\n // case \"seqThenProx\":\n // sorted = rawPins.sort(RwPin.distCompare);\n // break;\n // case \"seqThenName\":\n // sorted = rawPins.sort(RwPin.nameCompare);\n // break;\n // case \"proxOnly\":\n // sorted = rawPins.sort(RwPin.distCompare);\n // break;\n // case \"nameOnly\":\n // sorted = rawPins.sort(RwPin.nameCompare);\n // break;\n // default:\n // sorted = rawPins;\n // break;\n // }\n // return sorted;\n // }\n\n // static updateProximity(start: H.geo.Point, pins: RwPin[]) {\n // pins.forEach(stop => {\n // let coord = new H.geo.Point(stop.lat, stop.lng);\n //\n // let distMeters = start.distance(coord);\n // stop.cachedProximity = distMeters;\n // });\n // }\n\n static seqCompare(p1: RwPin, p2: RwPin): number {\n if (p1 && p2) {\n let seqComp = p1.seq - p2.seq;\n if (\n seqComp === 0 &&\n p1.type === RwPinTypes.Stop &&\n p2.type === RwPinTypes.Stop\n ) {\n // Go to check date\n if (p1.stop.checkDate && p2.stop.checkDate) {\n let p1Date = moment(p1.stop.checkDate);\n let p2Date = moment(p2.stop.checkDate);\n\n if (p1Date > p2Date) {\n return -1;\n } else if (p1Date === p2Date) {\n return 0;\n }\n return 1;\n }\n }\n return seqComp;\n }\n\n return 0;\n }\n\n static distCompare(p1: RwPin, p2: RwPin): number {\n if (p1 && p2) {\n return p1.cachedProximity - p2.cachedProximity;\n }\n return 0;\n }\n\n static nameCompare(p1: RwPin, p2: RwPin): number {\n if (p1 && p2) {\n let a: string = p1.title;\n let b: string = p2.title;\n return a.toLowerCase().localeCompare(b.toLowerCase());\n }\n return 0;\n }\n\n //endregion\n\n\n //region SVG Pin Creation\n\n\n static getRoutePinUrl(args: RwPinArgs): string {\n let url = \"\";\n if (args.typ === 0) {\n const baseDomain = window.location.origin;\n switch (args.sub) {\n case 0:\n return `${baseDomain}/images/icons/icc_pin_flag_green.png`;\n case 1:\n return `${baseDomain}/images/icons/start_ring.png`;\n case 2:\n return `${baseDomain}/images/icons/icc_pin_flag_rt.png`;\n case 3:\n return `${baseDomain}/images/icons/icc_pin_flag_grey.png`;\n case 4:\n return `${baseDomain}/images/icons/start_ring_x.png`;\n case 5:\n return `${baseDomain}/images/icons/icc_pin_flag_rt_inactive.png`;\n default:\n RwLog.error(\"RwPin.getPinRemoteUrl\", `Invalid subtype for icon: ${args.sub}`);\n return \"/images/icons/icc_pin_flag_green.png\";\n }\n }\n\n //console.log(\"calcPinUrl:\", url, args.typ);\n return url;\n }\n\n static getPinHash(args: RwPinArgs): string {\n //let url = `${RwConstants.CoreUri}/img/pin?typ=${args.typ}`;\n let data = `typ=${args.typ}`;\n if (args.sub && args.sub != 0) data += `&sub=${args.sub}`;\n if (args.seq && args.seq != 0) data += `&seq=${args.seq}`;\n if (args.drp && args.drp != 0) data += `&drp=${args.drp}`;\n if (args.pri && args.pri != 0) data += `&pri=${args.pri}`;\n if (args.vio && args.vio != 0) data += `&vio=${args.vio}`;\n if (RwPinArgs.isColorNonDefault(args)) data += `&clr=${RwWebUtils.encode(args.color)}`;\n if (args.isFirst && args.isFirst === true) data += `&1st=${args.isFirst}`;\n if (args.isFinal && args.isFinal === true) data += `&fnl=${args.isFinal}`;\n if (args.isSelected && args.isSelected === true) data += `&sel=${args.isSelected}`;\n if (args.isSked && args.isSked === true) data += `&skd=${args.isSked}`;\n if (args.hasDrp && args.hasDrp === true) data += `&hdrp=${args.hasDrp}`;\n let hash = md5(data, 8);\n //console.log(\"getPinHash:\", hash, data);\n return hash;\n }\n\n\n static checkCode = String.fromCharCode(0xE2, 0x9C, 0x93); //\"✓\"️\n static dneCode = String.fromCharCode(0xF0, 0x9F, 0x9A, 0xAB); //\"🚫\"\n static arrowCode = String.fromCharCode(0xE2, 0x80, 0xA3); //\"‣️\"\n static warnCode = '\\u00E2\\u009D\\u0097'; //\"❗️\"\n //static warnCode = '\\u00E2\\u009A\\u00A0'; //\"⚠️\"\n //static boxCode = String.fromCodePoint(0xF0, 0x9F, 0x93, 0xA6); //\"📦\"\n private static pendingUrls: { [key: string]: any[] } = {};\n\n static subscribeToUrl(url: string, callback) {\n let callbacks = RwPin.pendingUrls[url];\n if (!callbacks) {\n callbacks = [];\n RwPin.pendingUrls[url] = callbacks;\n }\n callbacks.push(callback);\n }\n\n\n static onFulfilledUrl(hash: string, url: string) {\n let callbacks = RwPin.pendingUrls[hash];\n if (callbacks) {\n setTimeout(() => {\n //console.log(\"deferred callback\", key, callbacks.length)\n callbacks.forEach(callback => {\n callback(url);\n })\n }, 0)\n }\n delete RwPin.pendingUrls[hash];\n }\n\n static calcSkedPinUrl(hash: string, args: RwPinArgs): string {\n const SOURCE = \"RwImgUtils.calcSkedPinUrl\";\n const globals: RwGlobals = theGlobals;\n\n let url = globals.idxURL[hash];\n if (url && url.length > 0) {\n return url;\n } else {\n globals.idxURL[hash] = \"\";\n let skedColor = RwImgUtils.getHexColorFromPriority(args.pri);\n let svg = RwPin.createSkedPinSvg(skedColor);\n const url = this.createDataUrl(svg, hash);\n globals.idxURL[hash] = url;\n return url;\n }\n }\n\n static createSkedPinSvg(skedColor: string) {\n let svgText = ` `;\n svgText = svgText.replace(\"#fill\", skedColor)\n return svgText;\n }\n\n\n static calcStopPinUrl(hash: string, args: RwPinArgs): Promise {\n const SOURCE = \"RwImgUtils.calcStopPinUrl\";\n\n return new Promise(async (resolve, reject) => {\n\n const globals: RwGlobals = theGlobals;\n\n let textLen = 1\n let url = globals.idxURL[hash];\n if (url) {\n if (url.length > 0) {\n resolve(url);\n } else {\n RwPin.subscribeToUrl(hash, resolve);\n }\n } else {\n\n globals.idxURL[hash] = \"\";\n\n let fontSize: number;\n let pinTextColor = \"#fff\"\n let pinRingColor = \"#000\"\n let pinCenterColor = \"#000\"\n let pinBaseColor = args.color ? args.color : \"#E91E63\";\n let pinText = args.seq > 0 && args.seq <= 240 ? args.seq.toString() : \"\";\n //console.log(\"createPinSvg args\", pinText, pinBaseColor, pinCenterColor, pinRingColor);\n\n if (args.isSelected) {\n pinTextColor = \"#000\";\n pinCenterColor = \"#FFF\";\n }\n\n if (args.selectRatio > 0) {\n pinTextColor = \"#000\";\n pinCenterColor = \"#FFF\";\n // pinCenterColor = RwImgUtils.getGreyScaleHex(args.selectRatio)\n // console.log(`GREYSCALE ratio:${args.selectRatio}, color:${pinCenterColor} `)\n }\n\n switch (args.sub) {\n\n case RwPinSubTypesStop.Stop:\n\n //Calc Center Color\n if (args.isSelected) {\n if (args.isFirst) {\n pinTextColor = \"#296218\";\n }\n if (args.isFinal) {\n pinTextColor = \"#75140c\";\n }\n } else {\n if (args.isFirst) {\n pinCenterColor = \"#296218\";\n pinRingColor = \"#296218\";\n }\n if (args.isFinal) {\n pinCenterColor = \"#75140c\";\n pinRingColor = \"#75140c\";\n }\n }\n\n if ((args.isFirst || args.isFinal) === false) {\n if (args.isSked && args.pri && args.pri > 0) {\n let hex = RwImgUtils.getHexColorFromPriority(args.pri);\n //console.log(\"hex\", hex);\n pinRingColor = hex;\n }\n }\n textLen = pinText.length;\n break;\n\n case RwPinSubTypesStop.CheckIn:\n pinBaseColor = \"#777\";\n pinText = RwPin.checkCode; //\"✓\"\n fontSize = 180;\n pinTextColor = \"#777\";\n textLen = 1;\n break;\n\n case RwPinSubTypesStop.DoNotEnter:\n pinBaseColor = \"#777\";\n pinText = RwPin.dneCode; //\"🚫\"\n fontSize = 200;\n textLen = 1;\n break;\n\n case RwPinSubTypesStop.Infeasible:\n pinBaseColor = \"#777\";\n pinText = RwPin.warnCode; //\"⚠️\";\n fontSize = 180;\n textLen = 1;\n break;\n\n case RwPinSubTypesStop.Cluster:\n if (args.seq > 0) {\n pinText = `${args.seq}+`;\n textLen = pinText.length;\n } else {\n if (args.isComplete) {\n pinText = `${RwPin.checkCode}+`;\n textLen = 2;\n } else {\n pinText = `+`;\n textLen = 1;\n }\n }\n break;\n }\n\n if (args.drp && args.drp > 0) {\n let seqText = args.seq.toString() !== \"0\" ? args.seq.toString() : \"\";\n let textLen = seqText.length + 1;\n pinText = `${seqText}${RwPin.arrowCode}`;\n fontSize = 250;\n if (textLen > 1) {\n fontSize = (textLen > 2) ? 100 : 160;\n }\n } else if (args.hasDrp === true) {\n pinText = RwPin.arrowCode;\n fontSize = 250;\n }\n\n if ((args.isFirst || args.isFinal) === false) {\n if (args.isSked && args.vio && args.vio > 0) {\n switch (args.vio) {\n case RwStopVios.Closed:\n case RwStopVios.Late:\n case RwStopVios.Overtime:\n case RwStopVios.Unreachable:\n pinTextColor = args.isSelected ? \"#ed5565\" : \"#ff6347\";\n break;\n case RwStopVios.Early:\n pinTextColor = args.isSelected ? \"#428bca\" : \"#5BC0DE\";\n break;\n }\n }\n }\n\n let finalFontSize = 180\n if (fontSize) {\n finalFontSize = fontSize;\n } else {\n if (textLen > 1) {\n finalFontSize = (textLen > 2) ? 100 : 160;\n }\n }\n\n // if(args.isSked){\n // console.log(`createStopPinSvg args \"${pinText}\"`, pinBaseColor, pinCenterColor, pinRingColor, pinTextColor, finalFontSize, textLen, args)\n // }\n\n let svg = RwPin.createStopPinSvg(pinText, pinBaseColor, pinCenterColor, pinRingColor, pinTextColor, finalFontSize, textLen);\n\n let width = 66;\n let height = 99;\n const url = this.createDataUrl(svg, hash);\n globals.idxURL[hash] = url;\n resolve(url);\n RwPin.onFulfilledUrl(hash, url);\n }\n });\n\n }\n\n static createStopPinSvg(text: string, colorBase: string, colorCenter: string, colorRing: string, colorText: string, fontSize: number, textLen: number) {\n let svgText = \"\";\n\n //console.log(\"text.len\", text.length)\n let txtPosY = 238\n if (textLen > 1) {\n txtPosY = 228;\n if (textLen > 2) {\n txtPosY = 208;\n }\n }\n\n let colorEdge = RwImgUtils.lightenDarkenColor(colorBase, -30);\n if (colorRing === \"#000\") {\n svgText = \"#text\"\n } else {\n svgText = \"#text\"\n }\n svgText = svgText.replace(\"#text\", text)\n svgText = svgText.replace(\"#colorBase\", colorBase)\n svgText = svgText.replace(\"#colorEdge\", colorEdge)\n svgText = svgText.replace(/#colorCenter/g, colorCenter)\n svgText = svgText.replace(\"#colorRing\", colorRing)\n svgText = svgText.replace(\"#colorText\", colorText)\n svgText = svgText.replace(\"#txtPosY\", txtPosY.toString())\n svgText = svgText.replace(\"#fontSize\", fontSize.toString())\n //console.log(\"svgText\", svgText)\n return svgText;\n }\n\n\n // static createStopPinSvgV1(text: string, colorBase: string, colorCenter: string, colorRing: string, colorText: string, fontSize?: number) {\n // let draw = SvgLib.SVG();\n // draw.size(64, 98)\n // draw.viewbox(0, 0, 352, 528)\n //\n // let pinBase = draw.path('m256,0c-94.104,0 -170.667,76.563 -170.667,170.667c0,28.25 7.063,56.26 20.49,81.104l140.844,254.729c1.875,3.396 5.448,5.5 9.333,5.5s7.458,-2.104 9.333,-5.5l140.896,-254.813c13.375,-24.76 20.438,-52.771 20.438,-81.021c0,-94.103 -76.563,-170.666 -170.667,-170.666zm0,256c-47.052,0 -85.333,-38.281 -85.333,-85.333s38.281,-85.333 85.333,-85.333s85.333,38.281 85.333,85.333s-38.281,85.333 -85.333,85.333z');\n // pinBase.fill(colorBase);\n // let colorEdge = RwImgUtils.lightenDarkenColor(colorBase, -30);\n // pinBase.stroke({color: colorEdge, width: 16});\n // pinBase.center(176, 264);\n //\n // if (colorRing === \"#000\") {\n // let pinCenter = draw.circle(248)\n // pinCenter.fill(colorCenter);\n // pinCenter.center(176, 176);\n // }\n // else {\n // let pinCenterEdge = draw.circle(312)\n // pinCenterEdge.fill('#000');\n // pinCenterEdge.center(176, 176);\n //\n // let pinCenter = draw.circle(248)\n // pinCenter.fill(colorCenter);\n // pinCenter.stroke({color: colorRing, opacity: 1.0, width: 48})\n // pinCenter.center(176, 176);\n // }\n //\n // if (fontSize) {\n // fontSize = fontSize;\n // }\n // else {\n // fontSize = 180;\n // if (text.length > 1) {\n // fontSize = (text.length > 2) ? 100 : 160;\n // }\n // }\n //\n // let pinText = draw.text(text);\n // pinText.font({fill: colorText, family: 'Helvetica', size: fontSize, anchor: 'middle'});\n // pinText.center(176, 176);\n //\n // let svgText = draw.svg();\n // //console.log(\"svgText\", svgText)\n // return svgText;\n //\n // }\n\n\n static calcSitePinUrlNew(hash: string, args: RwPinArgs): Promise {\n const SOURCE = \"RwImgUtils.calcSitePinUrl\";\n\n return new Promise(async (resolve, reject) => {\n\n const globals: RwGlobals = theGlobals;\n let pinCenterColor = \"#ddd\"\n let pinBaseColor = args.color ? args.color : RwPrefUtils.stopColor; // RwConstants.DefaultStopColor;\n let pinEdgeColor = RwImgUtils.lightenDarkenColor(pinBaseColor, -30);\n //console.log(\"createPinSvg args\", pinText, pinBaseColor, pinCenterColor, pinRingColor);\n\n if (args.isSelected) {\n pinCenterColor = \"#fff\"\n pinEdgeColor = \"#FFF\";\n }\n\n let svgML = RwPin.createSitePinSvg(pinBaseColor, pinEdgeColor, pinCenterColor);\n\n let width = 192;\n let height = 192;\n const url = this.createDataUrl(svgML, hash)\n globals.idxURL[hash] = url;\n resolve(url);\n });\n\n }\n\n\n // static calcSitePinUrlOLD(hash: string, args: RwPinArgs): Promise {\n // const SOURCE = \"RwImgUtils.calcSitePinUrl\";\n //\n // return new Promise(async (resolve, reject) => {\n //\n // const globals: RwGlobals = theGlobals;\n //\n // globals.idxURL[hash] = \"\";\n // let pinCenterColor = \"#ddd\"\n // let pinBaseColor = args.color ? args.color : \"#E91E63\";\n // let pinEdgeColor = RwImgUtils.lightenDarkenColor(pinBaseColor, -30);\n // //console.log(\"createPinSvg args\", pinText, pinBaseColor, pinCenterColor, pinRingColor);\n //\n // if (args.isSelected) {\n // pinCenterColor = \"#FFF\"\n // pinEdgeColor = \"#FFF\";\n // }\n //\n // let svgML = RwPin.createSitePinSvg(pinBaseColor, pinEdgeColor, pinCenterColor);\n //\n // // let width = 98;\n // // let height = 98;\n // let width = 192;\n // let height = 192;\n // this.createDataUrl(width, height, svgML)\n // .then(pngUrl => {\n // globals.idxURL[hash] = pngUrl;\n // resolve(pngUrl);\n // RwPin.onFulfilledUrl(hash, pngUrl);\n // })\n // .catch(err => {\n // RwLog.error(SOURCE, `Unhandled: width:${width}, height:${height}, \\nsvgML:${svgML}\\n\\n${err}`);\n // resolve();\n // RwPin.onFulfilledUrl(hash, undefined);\n // });\n //\n // });\n //\n // }\n\n\n static createSitePinSvg(colorBase: string, colorEdge: string, colorCenter: string) {\n let svgText = \"\"\n svgText = svgText.replace(/#colorBase/g, colorBase)\n svgText = svgText.replace(/#colorEdge/g, colorEdge)\n svgText = svgText.replace(\"#colorCenter\", colorCenter)\n //console.log(\"svgText\", svgText)\n return svgText;\n }\n\n\n // static createSitePinSvgV1(colorBase: string, colorEdge: string, colorCenter: string) {\n // let draw = SvgLib.SVG();\n // draw.viewbox(0, 0, 48, 48)\n // draw.size(192, 192)\n //\n // let circleEdge = draw.circle(46)\n // circleEdge.fill(colorEdge)\n // circleEdge.center(24, 24);\n //\n // let circleFill = draw.circle(40)\n // circleFill.fill(colorBase)\n // circleFill.center(24, 24);\n //\n // let pinStar = draw.path('M15.765,2.434l2.875,8.512l8.983,0.104c0.773,0.009,1.093,0.994,0.473,1.455l-7.207,5.364l2.677,8.576 c0.23,0.738-0.607,1.346-1.238,0.899L15,22.147l-7.329,5.196c-0.63,0.447-1.468-0.162-1.238-0.899l2.677-8.576l-7.207-5.364 c-0.62-0.461-0.3-1.446,0.473-1.455l8.983-0.104l2.875-8.512C14.482,1.701,15.518,1.701,15.765,2.434z');\n // pinStar.stroke({color: colorEdge, width: 1});\n // pinStar.fill(colorCenter);\n // pinStar.center(24, 23);\n //\n // let svgText = draw.svg();\n // //console.log(\"svgText\", svgText)\n // return svgText;\n //\n // }\n\n\n static calcTaskPinUrl(hash: string, args: RwPinArgs): Promise {\n const SOURCE = \"RwPin.calcTaskPinUrl\";\n\n return new Promise(async (resolve, reject) => {\n\n const globals: RwGlobals = theGlobals;\n\n globals.idxURL[hash] = \"\";\n let pinCenterColor = \"#ddd\"\n let pinBaseColor = args.color ? args.color : \"#E91E63\";\n let pinEdgeColor = RwImgUtils.lightenDarkenColor(pinBaseColor, -30);\n\n if (args.isSelected) {\n pinCenterColor = \"#fff\"\n pinEdgeColor = \"#fff\";\n }\n\n let svg = RwPin.createTaskPinSvg(pinBaseColor, pinEdgeColor, pinCenterColor);\n\n let width = 192;\n let height = 192;\n const url = this.createDataUrl(svg, hash);\n globals.idxURL[hash] = url;\n resolve(url);\n });\n\n }\n\n\n static createTaskPinSvg(colorBase: string, colorEdge: string, colorCenter: string) {\n let svgText = \"\"\n svgText = svgText.replace(/#colorBase/g, colorBase)\n svgText = svgText.replace(/#colorEdge/g, colorEdge)\n svgText = svgText.replace(\"#colorCenter\", colorCenter)\n return svgText;\n }\n\n\n // static createTaskPinSvgV1(colorBase: string, colorEdge: string, colorCenter: string) {\n // //xREF: SVG: createTaskPinSvg\n // let draw = SvgLib.SVG();\n // draw.viewbox(0, 0, 48, 48)\n // draw.size(192, 192)\n //\n // let circleEdge = draw.circle(46)\n // circleEdge.fill(colorEdge)\n // circleEdge.center(24, 24);\n //\n // let circleFill = draw.circle(40)\n // circleFill.fill(colorBase)\n // circleFill.center(24, 24);\n //\n // let pinCheck = draw.path('M22.567,4.73l-1.795-1.219c-0.495-0.334-1.173-0.205-1.507,0.287l-8.787,12.959l-4.039-4.039 c-0.422-0.42-1.11-0.42-1.533,0l-1.533,1.536c-0.424,0.423-0.424,1.11,0,1.534L9.582,22c0.349,0.347,0.895,0.615,1.387,0.615 s0.988-0.31,1.307-0.774L22.856,6.235C23.191,5.743,23.062,5.066,22.567,4.73z');\n // pinCheck.stroke({color: colorEdge, width: 1});\n // pinCheck.fill(colorCenter);\n // pinCheck.center(24, 23);\n //\n // let svgText = draw.svg();\n // //console.log(\"svgText\", svgText)\n // return svgText;\n //\n // }\n\n private static createDataUrl(svgML: string, hash: string): string {\n const SOURCE = \"RwPin.createDataUrl\";\n const url = 'data:image/svg+xml;base64,' + window.btoa(svgML);\n localDB.add(\"svgs\", {hash, svg: url})\n return url;\n }\n\n\n //endregion\n\n static toJSON(pin: RwPin) {\n return {\n id: pin.id,\n title: pin.title,\n lat: pin.lat,\n lng: pin.lng,\n seq: pin.seq,\n type: pin.type,\n stop: pin.stop?.toJSON() || null,\n site: pin.site?.toJSON() || null,\n task: pin.task?.toJSON() || null,\n driver: pin.driver?.toJSON() || null,\n route: pin.route?.toJSON() || null,\n isAvail: pin.isAvail,\n isActive: pin.isActive,\n isFirst: pin.isFirst,\n isFinal: pin.isFinal,\n isComplete: pin.isComplete,\n isSked: pin.isSked,\n priority: pin.priority,\n stopSeq: pin.stopSeq,\n isVio: pin.isVio,\n isTask: pin.isTask,\n colorGroup: pin.colorGroup,\n start: pin.start,\n end: pin.end,\n note: pin.note,\n //lastHash: pin.lastHash,\n //lastArgsUpdate: pin.lastArgsUpdate\n }\n }\n\n}\n\n\nexport class RwMarker extends H.map.Marker {\n pin: RwPin;\n pinType: RwPinTypes;\n searchId: string;\n\n // _eid: string;\n // get eid(): string {\n // let eid: string;\n // if (this._eid) {\n // eid = this._eid;\n // }\n // else {\n // if (this.pin) {\n // eid = this.pin.eid;\n // }\n // }\n // return eid\n // }\n}\n\n\nexport class MapUpload extends H.map.Object {\n address: RwAddress;\n}\n\n\n// static calcStopPinUrlBlob(args: RwPinArgs): string {\n// const SOURCE = \"RwPin.calcStopPinUrl\";\n//\n// let pngUrl = \"\";\n//\n// const globals: RwGlobals = theGlobals;\n// let key = RwPin.getPinSvrUrl(args);\n// let gotKey = globals.idxURL[key] !== undefined;\n// if (gotKey) {\n// pngUrl = globals.idxURL[key];\n// }\n// else {\n//\n// //globals.svgLookup[key] = \"\";\n//\n// let fontSize: number;\n// let pinTextColor = \"#fff\"\n// let pinRingColor = \"#000\"\n// let pinCenterColor = \"#000\"\n// let pinBaseColor = args.color ? args.color : \"#E91E63\";\n// let pinText = args.seq > 0 && args.seq <= 240 ? args.seq.toString() : \"\";\n// //console.log(\"createPinSvg args\", pinText, pinBaseColor, pinCenterColor, pinRingColor);\n//\n// if (args.isSelected) {\n// pinCenterColor = \"#FFF\";\n// pinTextColor = \"#000\";\n// }\n//\n// switch (args.sub) {\n//\n// case RwPinSubTypesStop.Stop:\n//\n// //Calc Center Color\n// if (args.isSelected) {\n// if (args.isFirst) {\n// pinTextColor = \"#296218\";\n// }\n// if (args.isFinal) {\n// pinTextColor = \"#75140c\";\n// }\n// }\n// else {\n// if (args.isFirst) {\n// pinCenterColor = \"#296218\";\n// pinRingColor = \"#296218\";\n// }\n// if (args.isFinal) {\n// pinCenterColor = \"#75140c\";\n// pinRingColor = \"#75140c\";\n// }\n// }\n//\n// if ((args.isFirst || args.isFinal) === false) {\n// if (args.isSked && args.pri && args.pri > 0) {\n// let hex = RwImgUtils.getHexColorFromPriority(args.pri);\n// //console.log(\"hex\", hex);\n// pinRingColor = hex;\n// }\n// }\n// break;\n//\n// case RwPinSubTypesStop.CheckIn:\n// pinBaseColor = \"#777\";\n// pinText = RwPin.checkCode; //\"✓\"\n// fontSize = 180;\n// pinTextColor = \"#777\";\n// break;\n//\n// case RwPinSubTypesStop.DoNotEnter:\n// pinBaseColor = \"#777\";\n// pinText = RwPin.dneCode; //\"🚫\"\n// fontSize = 200;\n// break;\n//\n// case RwPinSubTypesStop.Infeasible:\n// pinBaseColor = \"#777\";\n// pinText = RwPin.warnCode; //\"⚠️\";\n// fontSize = 180;\n// break;\n//\n// case RwPinSubTypesStop.Cluster:\n// if (args.seq > 0) {\n// pinText = `${args.seq}+`;\n// }\n// break;\n// }\n//\n// if (args.drp && args.drp > 0) {\n// let seqText = args.seq.toString();\n// let textLen = seqText.length + 1;\n// pinText = `${args.seq}${RwPin.arrowCode}`;\n// fontSize = 180;\n// if (textLen > 1) {\n// fontSize = (textLen > 2) ? 100 : 160;\n// }\n// }\n//\n// if ((args.isFirst || args.isFinal) === false) {\n// if (args.isSked && args.vio && args.vio > 0) {\n// switch (args.vio) {\n// case RwStopVios.Closed:\n// case RwStopVios.Late:\n// case RwStopVios.Overtime:\n// case RwStopVios.Unreachable:\n// pinTextColor = args.isSelected ? \"#ed5565\" : \"#ff6347\";\n// break;\n// case RwStopVios.Early:\n// pinTextColor = args.isSelected ? \"#428bca\" : \"#5BC0DE\";\n// break;\n// }\n// }\n// }\n//\n// let svg = RwPin.createStopPinSvg(pinText, pinBaseColor, pinCenterColor, pinRingColor, pinTextColor, fontSize);\n// const blob = new Blob([svg], {type: 'image/svg+xml'});\n// pngUrl = URL.createObjectURL(blob);\n// //console.warn(SOURCE, \"createDataUrl:\", key)\n// globals.idxURL[key] = pngUrl;\n//\n// }\n//\n// return pngUrl;\n//\n// }\n","import moment from \"moment\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwDistUnits, RwRouteCopyType, RwTravelModes} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\"\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\"\nimport {RwTextUtils} from '../utils/RwTextUtils';\nimport settingSpace from \"@/app/views/account/RwSettingSpace\";\n\n\nexport enum RwRouteAssignCodes {\n rejected = -1,\n assigned = 0,\n pending = 1,\n}\n\n\nexport enum RwRouteStatusCodes {\n problem = -1,\n created = 0,\n active,\n complete\n}\n\n\nexport class RwRoutePick {\n isMoveOp = false;\n tarRouteId = \"\";\n isNew = false;\n}\n\n\nexport class RwSyncStatus {\n routeId: string;\n completeCount: number;\n activeCount: number;\n statusCode: RwRouteStatusCodes;\n assignCode: RwRouteAssignCodes;\n driverId: string;\n driverLat: number;\n driverLng: number;\n driverLU: Date;\n driverLS: Date;\n targetDriverId: string;\n\n\n static fromJsonArray(jsonArray: JSON[]): RwSyncStatus[] {\n let self = this;\n let list: RwSyncStatus[] = [];\n if (jsonArray != null) {\n jsonArray.forEach(function (json) {\n let status = new RwSyncStatus();\n for (let key in json) {\n switch (key) {\n //@formatter:off\n //case \"rnm\": status.routeName = json[key]; break;\n case \"rid\":\n status.routeId = json[key];\n break;\n case \"scc\":\n status.completeCount = json[key];\n break;\n case \"sac\":\n status.activeCount = json[key];\n break;\n case \"status\":\n status.statusCode = json[key];\n break;\n case \"assign\":\n status.assignCode = json[key];\n break;\n case \"did\":\n status.driverId = json[key];\n break;\n case \"lat\":\n status.driverLat = json[key];\n break;\n case \"lng\":\n status.driverLng = json[key];\n break;\n case \"dlu\":\n status.driverLU = new Date(json[key]);\n break;\n case \"dls\":\n status.driverLS = new Date(json[key]);\n break;\n\n //@formatter:on\n }\n }\n list.push(status);\n\n });\n }\n\n return list;\n }\n\n\n toJSON(): JSON {\n let json = {};\n if (this.routeId) json[\"rid\"] = this.routeId;\n if (this.completeCount) json[\"scc\"] = this.completeCount;\n if (this.activeCount) json[\"sac\"] = this.activeCount;\n if (this.statusCode) json[\"status\"] = this.statusCode;\n if (this.assignCode) json[\"assign\"] = this.assignCode;\n if (this.driverId) json[\"did\"] = this.driverId;\n if (this.targetDriverId) json[\"tid\"] = this.targetDriverId;\n return json as JSON;\n }\n\n}\n\n\nexport class RwRoute {\n\n static blankRoute(): RwRoute {\n //console.log(\"RwRoute.blankRoute\");\n let route = new RwRoute();\n return route;\n }\n\n constructor(json?) {\n if (json != null) {\n this.fromJson(json);\n } else {\n this.routeId = RwSysUtils.guidNew();\n this.accountId = theGlobals.orgId;\n this.driverId = theGlobals.userId;\n this.name = this.getRouteName();\n\n let start = new Date();\n let end = new Date();\n //SETTINGS: this should use route duration preference\n end.setHours(end.getHours() + RwPrefUtils.routeSpan / 60.0);\n this.startTime = start;\n //this.setFinishDate(\"RwRoute()\", end)\n this.finishTime = end;\n\n //console.warn(\"RwRoute() SET startTime NOW\");\n\n this.travelMode = RwPrefUtils.travelMode;\n this.optType = RwPrefUtils.optimizeType;\n\n this.isDynLoc = RwPrefUtils.isDynPoint;\n //console.log(\"RwRoute() isDynPoint\", RwPrefUtils.isDynPoint);\n\n this.isHardStart = RwPrefUtils.isHardStart;\n this.isHardStop = RwPrefUtils.isHardStop;\n //DEFER: Consider making \"isHardStop = true\" required by default\n\n\n // this.avoidFerries = false;\n // this.avoidHighways = false;\n // this.avoidTolls = false;\n // this.isRoundTrip = false;\n\n this.avoidFerries = RwPrefUtils.avoids.includes(\"ferries\");\n this.avoidHighways = RwPrefUtils.avoids.includes(\"highways\");\n this.avoidTolls = RwPrefUtils.avoids.includes(\"tolls\");\n this.isRoundTrip = RwPrefUtils.isRoundTrip;\n\n this.lat = RwPrefUtils.startLat;\n this.lng = RwPrefUtils.startLng;\n\n //console.log(\"RwRoute.ctor() done\", this.name);\n }\n }\n\n //region Properties\n\n isDeleted = false;\n version = 0;\n routeId: string;\n accountId: string;\n driverId: string;\n isHardStart: boolean = false;\n isHardStop: boolean = false;\n isDynLoc: boolean = false;\n isRoundTrip: boolean = false;\n isManOrder: boolean = false;\n firstStopId: string;\n finalStopId: string;\n lat: number = 0;\n lng: number = 0;\n name: string;\n note: string;\n optType: number = 2;\n path: string;\n startTime: Date;\n finishTime: Date;\n timeDrive: number = 0;\n timeIdle: number = 0;\n totalDist: number = 0;\n totalTime: number = 0;\n violations: number = 0;\n travelMode: string = \"driving\";\n stops: RwStop[] = [];\n statusCode: RwRouteStatusCodes = RwRouteStatusCodes.created;\n assignCode: RwRouteAssignCodes = RwRouteAssignCodes.assigned;\n roundTripTime = 0;\n roundTripDist = 0;\n address: string;\n action: null;\n isArchived: boolean = false;\n isComplete: boolean = false;\n isTemplate: boolean = false;\n stopCountActive: number = 0;\n stopCountComplete: number = -1; //initialization changed to negitive one to improve progress text loading.\n isOpen: boolean = false;\n restTimes: string;\n\n isSelectedItem: boolean = false;\n lastUpdateCached: number = 0;\n zoomedTo = false;\n\n lastHash: number = 0;\n loadTimeStops: number = 0;\n\n //xTEST: Remove when test complete\n // setFinishDate(source:string, val:Date){\n // if(!val){\n // console.warn(source, val)\n // }\n // this.finishTime = val\n // }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get plan(): RwPlannerSpace {\n return thePlan;\n }\n\n get index(): number {\n if (this.globals) {\n return this.globals.routes.indexOf(this);\n }\n return 0;\n }\n\n get startEpoc(): number {\n return this.startTime.getTime()\n }\n\n get finishEpoc(): number {\n return this.finishTime.getTime()\n }\n\n finishTimeAdjDur(): Date {\n let time: Date;\n if (this.isOpenEnded) {\n //xFOCUS: isOpenEnded; Use the default routeSpan\n time = moment(this.startTime).add(RwPrefUtils.routeSpan, \"minutes\").toDate();\n } else {\n time = this.finishTime;\n }\n return time;\n }\n\n\n get nextSeq(): number {\n let nextSeq: number;\n if (RwPrefUtils.searchSetSeq) {\n let seqVals = this.stops.map(s => s.seq);\n let seqSet = seqVals.filter(seq => seq && seq > 0 && seq <= 240);\n if (seqSet.length > 0) {\n nextSeq = Math.max(...seqSet);\n }\n nextSeq = (nextSeq) ? nextSeq + 1 : 1;\n }\n //console.warn(\"nextSeq nextSeq\", nextSeq)\n return nextSeq;\n }\n\n get subType(): number {\n let subType = 0;\n if (this.isDynLoc) {\n subType = 1;\n } else {\n if (this.isRoundTrip) {\n subType = 2;\n } else {\n subType = 0;\n }\n }\n return subType;\n }\n\n\n get driver(): RwUser {\n let assignedDriver: RwUser;\n if (this.driverId) {\n let driver = this.globals.findDriver(this.driverId);\n if (driver) {\n assignedDriver = driver;\n } else {\n let disp = this.globals.dispatcher;\n this.driverId = disp.userId;\n assignedDriver = disp;\n }\n }\n return assignedDriver;\n }\n\n // get driverUrl(): string {\n // let driverUrl: string;\n // if (this.driver) {\n // driverUrl = this.driver.imageUrl;\n // }\n // return driverUrl;\n // }\n\n get progress(): number {\n let prog = 0;\n let totalCount = this.stopCountComplete + this.stopCountActive;\n if (totalCount > 0) {\n prog = this.stopCountComplete / totalCount;\n }\n return prog * 100;\n }\n\n getProgressColor(): string {\n return this.statusCode === RwRouteStatusCodes.complete ? '#222' : '#e2004f'\n }\n\n getProgressText(): string {\n\n if (!this.stopCountComplete) {\n this.stopCountComplete = 0\n }\n let text = '.';\n let totalCount = this.stopCountComplete + this.stopCountActive;\n if (totalCount >= 0) {\n if (this.stopCountComplete == -1) {\n this.stopCountComplete = 0;\n totalCount++;\n }\n text = `${this.stopCountComplete} of ${totalCount} complete`;\n }\n\n if (totalCount == 0) {\n text = 'no stops';\n }\n if (totalCount == -1) {\n text = 'no stop info'\n }\n return text;\n }\n\n get plannerUrl(): string {\n return `/planner/${this.routeId}`;\n }\n\n get isOpenStart(): boolean {\n return !this.isHardStart;\n }\n\n get isOpenEnded(): boolean {\n return !this.isHardStop;\n }\n\n get avoids(): number {\n let avoidsNum = 0;\n if (this.avoidFerries) {\n avoidsNum += 1;\n }\n if (this.avoidHighways) {\n avoidsNum += 1;\n }\n if (this.avoidFerries) {\n avoidsNum += 1;\n }\n\n return avoidsNum;\n }\n\n _avoidHighways: boolean = false;\n\n get avoidHighways(): boolean {\n if (RwPrefUtils.avoids.includes('highways')) {\n this._avoidHighways = true;\n }\n return this._avoidHighways;\n }\n\n set avoidHighways(value: boolean) {\n this._avoidHighways = value;\n }\n\n _avoidTolls: boolean = false;\n\n get avoidTolls(): boolean {\n if (RwPrefUtils.avoids.includes('tolls')) {\n this._avoidTolls = true;\n }\n return this._avoidTolls;\n }\n\n set avoidTolls(value: boolean) {\n this._avoidTolls = value;\n }\n\n _avoidFerries: boolean = false;\n\n get avoidFerries(): boolean {\n if (RwPrefUtils.avoids.includes('ferries')) {\n this._avoidFerries = true;\n }\n return this._avoidFerries;\n }\n\n set avoidFerries(value: boolean) {\n this._avoidFerries = value;\n }\n\n\n get hasDriver(): boolean {\n let gotDriver = false;\n if (this.driverId && this.driverId !== \"\" && this.driverId !== RwUser.NoDriverId) {\n gotDriver = true;\n }\n return gotDriver;\n }\n\n get isActive(): boolean {\n const activeRoute = this.plan.activeRoute;\n if (activeRoute) {\n return this.routeId === activeRoute.routeId;\n }\n return false;\n }\n\n get attrClass(): string {\n if (this.isComplete) {\n return \"rt-complete\";\n }\n return \"\";\n }\n\n\n get routeIcon(): string {\n let iconUrl = RwConstants.IconGreenFlag;\n\n if (this.statusCode === RwRouteStatusCodes.complete) {\n iconUrl = RwConstants.IconCompleteAll;\n } else if (this.isDynLoc) {\n iconUrl = RwConstants.IconStartRing;\n } else {\n if (this.isRoundTrip) {\n iconUrl = RwConstants.IconRoundTripFlag;\n } else {\n iconUrl = RwConstants.IconGreenFlag;\n }\n }\n return iconUrl;\n }\n\n\n //private _routeIconCached: string = null;\n\n // get routeIcon(): string {\n // if (this._routeIconCached == undefined) {\n // this._routeIconCached = RwConstants.IconGreenFlag;\n // if (this.routeId === this.globals.orgId) {\n // this._routeIconCached = RwConstants.IconFolder;\n // }\n // else {\n // if (this.isComplete || this.statusCode === RwRouteStatusCodes.complete) {\n // this._routeIconCached = RwConstants.IconCompleteAll;\n // }\n // else if (this.isDynLoc) {\n // this._routeIconCached = RwConstants.IconStartRing;\n // }\n // else {\n // if (this.isRoundTrip) {\n // this._routeIconCached = RwConstants.IconRoundTripFlag;\n // }\n // else {\n // this._routeIconCached = RwConstants.IconGreenFlag;\n // }\n // }\n // }\n // }\n // return this._routeIconCached;\n // }\n\n get driverShortString(): string {\n if (this.driverId && this.driverId !== RwUser.NoDriverId) {\n let driver = this.globals.findDriver(this.driverId);\n if (driver) {\n return driver.userName;\n }\n }\n\n return RwConstants.EmptyString;\n }\n\n private _startDateCached: string = null;\n\n get sortStartDate(): string {\n let text: string = \"\";\n if (this._startDateCached) {\n text = this._startDateCached;\n\n } else {\n if (this.startTime) {\n text = moment(this.startTime).format(\"YYYY.MM.DD HH:mm\");\n this._startDateCached = text;\n }\n }\n\n return text;\n }\n\n get formattedStartDate(): string {\n return RwDateUtils.formatDate(this.startTime)\n //return RwDateUtils.formatDateToLocal(this.startTime)\n }\n\n\n private _driverName: string = null;\n private _driverId: string = null;\n\n public get driverName(): string {\n let driverText: string = \"\";\n if (this._driverName && this._driverId === this.driverId) {\n driverText = this._driverName;\n //console.log(\"driverName cached\", this.driverId, driverText);\n } else {\n const gotDriverId = this.driverId && this.driverId !== RwUser.NoDriverId;\n const gotDrivers = this.globals.drivers && this.globals.drivers.length > 0;\n if (gotDriverId && gotDrivers) {\n let driver = this.globals.findDriver(this.driverId);\n if (driver) {\n driverText = driver.userName;\n this._driverName = driver.userName;\n this._driverId = driver.userId;\n //console.log(\"driverName\", this.driverId, driverText);\n }\n }\n\n }\n return driverText;\n }\n\n\n copy(copyType?: RwRouteCopyType): RwRoute {\n let copy = this.clone();\n copy.timeDrive = 0;\n copy.timeIdle = 0;\n copy.totalDist = 0;\n copy.totalTime = 0;\n\n copy.name = copy.name + \" Copy\";\n copy.routeId = RwSysUtils.guidNew();\n copy.stopCountActive = this.stops.length;\n copy.stopCountComplete = 0;\n let stopIdLookup: { [id: string]: string } = {};\n\n // Update start and end times\n if (this.isHardStart) {\n copy.startTime = this.startTime;\n //console.warn(\"RwRoute copy startTime\", this.startTime);\n } else {\n copy.startTime = moment().toDate();\n //console.warn(\"RwRoute copy NOW\", this.startTime);\n }\n\n if (this.isHardStop) {\n copy.finishTime = this.finishTime;\n //copy.setFinishDate(\"copy isHardStop\", this.finishTime)\n } else {\n let currDuration = moment(this.finishTime).diff(this.startTime)\n let newFinishTime = moment().add(currDuration, \"ms\").toDate();\n copy.finishTime = newFinishTime\n // copy.setFinishDate(\"copy !isHardStop\", newFinishTime)\n }\n\n if (this.stops) {\n copy.stops = [];\n // Copy stops\n\n if (!copyType || (copyType !== 2)) {\n\n this.stops.forEach(stop => {\n\n let isCleared = false;\n if (copyType || (copyType === 1)) {\n if (!stop.isComplete) {\n isCleared = true;\n }\n } else {\n isCleared = true;\n }\n\n if (isCleared) {\n\n let copyStop = stop.copy(copy.routeId);\n if (copyStop && !copyStop.markedForDelete) {\n copy.stops.push(copyStop);\n // Update look up table for drop stops\n if (typeof stopIdLookup[stop.stopId] === \"undefined\") {\n stopIdLookup[stop.stopId] = copyStop.stopId;\n }\n\n // Update first and final stop ids\n if (this.firstStopId) {\n if (stop.stopId === this.firstStopId) {\n copy.firstStopId = copyStop.stopId;\n }\n }\n if (this.finalStopId) {\n if (stop.stopId == this.finalStopId) {\n copy.finalStopId = copyStop.stopId;\n }\n }\n }\n\n }\n });\n\n copy.stops.forEach(stop => {\n if (stop.hasDrops) {\n let dropTargets = stop.getDropIds();\n if (dropTargets) {\n dropTargets.forEach(dropTarget => {\n if (typeof stopIdLookup[dropTarget] !== \"undefined\") {\n let newDropId = stopIdLookup[dropTarget];\n if (newDropId) {\n stop.addDrop(newDropId);\n }\n }\n });\n }\n }\n });\n\n }\n }\n\n return copy;\n }\n\n clone(): RwRoute {\n let clone = new RwRoute();\n clone.routeId = this.routeId;\n clone.accountId = this.accountId;\n clone.driverId = this.driverId;\n clone.name = this.name;\n clone.lat = this.lat;\n clone.lng = this.lng;\n clone.startTime = this.startTime;\n\n clone.finishTime = this.finishTime;\n // clone.setFinishDate(\"clone\", this.finishTime)\n\n\n clone.travelMode = this.travelMode;\n clone.optType = this.optType;\n clone.isDynLoc = this.isDynLoc;\n clone.isHardStart = this.isHardStart;\n clone.isHardStop = this.isHardStop;\n clone.avoidFerries = this.avoidFerries;\n clone.avoidHighways = this.avoidHighways;\n clone.avoidTolls = this.avoidTolls;\n clone.isRoundTrip = this.isRoundTrip;\n clone.stopCountActive = this.stopCountActive;\n clone.stopCountComplete = this.stopCountComplete;\n clone.totalTime = this.totalTime;\n clone.totalDist = this.totalDist;\n clone.note = this.note;\n clone.violations = this.violations;\n clone.stops = this.stops;\n clone.lastUpdateCached = this.lastUpdateCached;\n clone.zoomedTo = this.zoomedTo;\n clone.isManOrder = this.isManOrder;\n clone.isSelectedItem = this.isSelectedItem;\n clone.path = this.path;\n clone.timeDrive = this.timeDrive;\n clone.timeIdle = this.timeIdle;\n clone.isOpen = this.isOpen;\n clone.isArchived = this.isArchived;\n clone.isTemplate = this.isTemplate;\n clone.isComplete = this.isComplete;\n clone.statusCode = this.statusCode;\n clone.assignCode = this.assignCode;\n clone.address = this.address;\n\n return clone;\n }\n\n private getRouteName(): string {\n let newName = `Route.${moment().format(\"YYYY.MM.DD\")}`;\n let routeNameTaken = this.globals.routes.find(r => r.name === newName);\n if (routeNameTaken) {\n let counter = 0;\n let maxCount = 100;\n let done = false;\n while (!done) {\n counter++;\n newName = `Route.${moment().format(\"YYYY.MM.DD\")} (${counter})`;\n routeNameTaken = this.globals.routes.find(r => r.name === newName);\n if (!routeNameTaken) {\n done = true;\n } else {\n if (counter >= maxCount) {\n done = true;\n break;\n }\n }\n }\n }\n return newName;\n }\n\n\n get driverString(): string {\n if (this.driverId && this.driverId !== RwUser.NoDriverId) {\n let driver = this.globals.findDriver(this.driverId);\n if (driver) {\n let hasName = driver.name && driver.name !== \"\";\n return driver.userName + (hasName ? ` (${driver.name})` : \"\");\n }\n }\n return RwConstants.EmptyString;\n }\n\n _totalTimeShort: string = null;\n\n get totalTimeShort(): string {\n let text = \"\";\n if (this._totalTimeShort) {\n text = this._totalTimeShort;\n } else {\n if (this.totalTime === 0) {\n text = RwConstants.EmptyString;\n } else {\n this._totalTimeShort = RwTextUtils.formatDuration(this.totalTime);\n text = this._totalTimeShort;\n }\n }\n return text;\n }\n\n _totalTimeString: string = null;\n\n get totalTimeString(): string {\n let text = \"\";\n if (this._totalTimeString) {\n text = this._totalTimeString;\n } else {\n if (this.totalTime === 0) {\n text = RwConstants.EmptyString;\n }\n // var duration = moment.duration(this.totalTime, \"seconds\") as any;\n // moment.utc(duration.asMilliseconds()).format(\"hh:mm:ss\");\n //text = duration.format(\"d [days] h [hrs], m [min]\");\n //text = this.getTimeDurationText(duration);\n\n text = RwTextUtils.formatDuration(this.totalTime);\n\n\n // let mo = moment.utc(duration.asMilliseconds());\n // text = mo.format(\"d [days] h [hrs], m [min]\");\n\n this._totalTimeString = text;\n\n //var duration = moment.duration(this.totalTime, \"seconds\") as any;\n //text = duration.format(\"d [days] h [hrs], m [min]\");\n // this._totalTimeString;\n }\n return text;\n }\n\n private _travelTimeText: string = null;\n\n get travelTimeText(): string {\n if (this._travelTimeText) {\n return this._travelTimeText;\n } else {\n if (this.timeDrive === 0) {\n return RwConstants.EmptyString;\n }\n this._travelTimeText = RwTextUtils.formatDuration(this.timeDrive);\n\n // var duration = moment.duration(this.timeDrive, \"seconds\") as any;\n // //this._travelTimeText = duration.format(\"d [days] h [hrs], m [min]\");\n // this._travelTimeText = this.getTimeDurationText(duration);\n\n // var duration = moment.duration(this.timeDrive, \"seconds\");\n // this._travelTimeText = moment.utc(duration.asMilliseconds()).format(\"d [days] h [hrs], m [min]\");\n\n return this._travelTimeText;\n }\n }\n\n get travelReturnText(): string {\n let displayText = \"\";\n if (this.isActive) {\n let unit = RwPrefUtils.distUnits;\n let distText = \"\";\n if (unit == RwDistUnits.Kilometers) {\n let dist = (this.roundTripDist / 1000).toFixed(1);\n distText = `${dist} km`;\n } else {\n let dist = (this.roundTripDist / 1609).toFixed(1);\n distText = `${dist} mi`;\n }\n let timeText = RwTextUtils.formatDuration(this.roundTripTime);\n displayText = `drive ${distText} in ${timeText}`;\n }\n return displayText;\n }\n\n get routeStatusText(): string {\n let text: string\n switch (this.statusCode) {\n //@formatter:off\n case RwRouteStatusCodes.problem:\n text = \"Problem\";\n break;\n case RwRouteStatusCodes.created:\n text = \"Created\";\n break;\n case RwRouteStatusCodes.active:\n text = \"In Progress\";\n break;\n case RwRouteStatusCodes.complete:\n text = \"Complete\";\n break;\n //@formatter:on\n }\n return text;\n }\n\n get assignmentString(): string {\n switch (this.assignCode) {\n\n case RwRouteAssignCodes.assigned:\n return \"Assigned\";\n\n case RwRouteAssignCodes.rejected:\n return \"Rejected\";\n\n case RwRouteAssignCodes.pending:\n return \"Pending\";\n }\n return \"\";\n }\n\n get assignTextInline(): string {\n switch (this.assignCode) {\n\n case RwRouteAssignCodes.assigned:\n return \"(assigned)\";\n\n case RwRouteAssignCodes.pending:\n return \"(pending)\";\n\n case RwRouteAssignCodes.rejected:\n return \"(rejected)\";\n }\n return \"\";\n }\n\n\n get startTimeString(): string {\n return moment(this.startTime).format(\"L LT\");\n }\n\n get finishTimeString(): string {\n let finishMillis = this.startTime.getTime() + (1000 * this.totalTime);\n let finishDate = new Date(finishMillis);\n let dateText = RwDateUtils.formatDate(finishDate);\n //let dateText = RwDateUtils.formatDateToLocal(finishDate);\n return dateText;\n }\n\n get departureTimeString(): string {\n let nowMoment = moment();\n let startMoment = moment(this.startTime);\n let endMoment;\n\n if (this.isHardStop) {\n endMoment = moment(this.finishTime);\n } else {\n endMoment = moment(this.startTime).add(this.totalTime, \"seconds\");\n }\n\n let isTodayStart = startMoment.format(\"L\") === nowMoment.format(\"L\");\n let isTodayFinish = endMoment.format(\"L\") === nowMoment.format(\"L\");\n\n let startStr = isTodayStart\n ? startMoment.format(\"LT\")\n : startMoment.format(\"L LT\");\n let endStr = isTodayFinish ? endMoment.format(\"LT\") : endMoment.format(\"L LT\");\n\n if (this.isHardStart && this.isHardStop) {\n if (this.totalTime === 0) {\n return `Specific Time Frame (${startStr})`;\n } else {\n return `Specific Time Frame (${startStr} to ${endStr})`;\n }\n } else if (this.isHardStart && !this.isHardStop) {\n if (this.totalTime === 0) {\n return `Specific Start Time (${startStr})`;\n } else {\n return `Specific Start Time (${startStr} to ${endStr})`;\n }\n } else if (!this.isHardStart && this.isHardStop) {\n if (this.totalTime === 0) {\n return `Specific Finish Time (${startStr})`;\n } else {\n return `Specific Finish Time (${startStr} to ${endStr})`;\n }\n }\n\n if (this.totalTime === 0) {\n return `Time of Optimize (${startStr})`;\n } else {\n return `Time of Optimize (${startStr} to ${endStr})`;\n }\n }\n\n get departurePointString(): string {\n if (this.isDynLoc === true) {\n return \"Location of Optimize (GPS)\";\n } else {\n if (this.address) {\n return `Specific Location (${this.address})`;\n }\n return `Specific Location (${this.lat.toFixed(4)},${this.lng.toFixed(\n 4\n )})`;\n }\n }\n\n get travelModeText(): string {\n return RwRoute.getTravelModeText(this.travelMode);\n }\n\n get travelModeIcon(): string {\n //console.warn(this.travelMode)\n let url: string;\n switch (this.travelMode.toLowerCase()) {\n //@formatter:off\n case \"driving\":\n url = \"mdi-car\";\n break;\n case \"biking\":\n case \"bicycling\":\n url = \"mdi-bike\";\n break;\n case \"walking\":\n url = \"mdi-walk\";\n break;\n default:\n url = \"mdi-car\";\n break;\n //@formatter:on\n }\n return url;\n }\n\n get travelModeEnum(): RwTravelModes {\n // 0 = driving, 1 = biking, 2 = walking\n let code: RwTravelModes = RwTravelModes.driving;\n switch (this.travelMode.toLowerCase()) {\n //@formatter:off\n case \"driving\":\n code = RwTravelModes.driving;\n break;\n case \"walking\":\n code = RwTravelModes.walking;\n break;\n case \"biking\":\n code = RwTravelModes.biking;\n break;\n case \"bicycling\":\n code = RwTravelModes.biking;\n break;\n default:\n code = RwTravelModes.driving;\n break;\n //@formatter:on\n }\n return code;\n }\n\n\n static getTravelModeText(travelMode: string): string {\n // 0 = driving, 1 = biking, 2 = walking\n let text: string;\n switch (travelMode.toLowerCase()) {\n //@formatter:off\n case \"driving\":\n text = \"Driving\";\n break;\n case \"walking\":\n text = \"Walking\";\n break;\n case \"bicycling\":\n text = \"Biking\";\n break;\n case \"biking\":\n text = \"Biking\";\n break;\n default:\n text = \"Driving\";\n break;\n //@formatter:on\n }\n //console.log(\"getTravelModeText\", travelMode, text);\n return text;\n }\n\n static getTravelMode(travelMode: string): string {\n // 0 = driving, 1 = biking, 2 = walking\n let text: string;\n switch (travelMode.toLowerCase()) {\n //@formatter:off\n case \"driving\":\n text = \"driving\";\n break;\n case \"walking\":\n text = \"walking\";\n break;\n case \"bicycling\":\n text = \"bicycling\";\n break;\n case \"biking\":\n text = \"bicycling\";\n break;\n default:\n text = \"Driving\";\n break;\n //@formatter:on\n }\n return text;\n }\n\n\n departurePointType: number = 1; // 0 = dynamic, 1 = fixed point\n departureTimeType: number = 0; // 0 = dynamic, 1 = fixed time\n\n private _totalDistText: string = null;\n\n get totalDistText(): string {\n let distText = RwConstants.EmptyString;\n if (this._totalDistText) {\n distText = this._totalDistText;\n } else {\n if (this.totalDist != 0) {\n let unit = settingSpace.distUnits;\n // let unit = RwPrefUtils.distUnits;\n // let unit = theStore.getters.distUnits;\n if (unit == RwDistUnits.Kilometers) {\n let dist = (this.totalDist / 1000).toFixed(1);\n distText = `${dist} km`;\n } else {\n let dist = (this.totalDist / 1609).toFixed(1);\n distText = `${dist} mi`;\n }\n this._totalDistText = distText;\n }\n }\n return distText;\n\n //Do this in the control\n //return \"N/A\";\n }\n\n get fullVioText(): string {\n let text = \"\";\n let hasRouteVios: boolean = this.violations != 0;\n let hasStopVios = this.hasStopViolations();\n\n if (hasRouteVios && hasStopVios) {\n text = this.routeVioTextVerbose;\n text += \"\\n\\n\";\n text +=\n \"Stop Violations\\nMake sure all stops are reachable from start.\\nDouble check your time windows (schedules).\";\n } else if (hasRouteVios) {\n text = this.routeVioTextVerbose;\n } else if (hasStopVios) {\n text =\n \"Stop Violations\\nMake sure all stops are reachable from start.\\nDouble check your time windows (schedules).\";\n }\n return text;\n }\n\n get routeVioText(): string {\n let text = \"\";\n if (this.violations != 0) {\n switch (this.violations) {\n case 1:\n text = \"Overtime\";\n break;\n case 2:\n text = \"Overdist\";\n break;\n case 4:\n text = \"Error\";\n break;\n default:\n break;\n }\n }\n return text;\n }\n\n get routeVioTextVerbose(): string {\n let text = \"\";\n if (this.violations != 0) {\n switch (this.violations) {\n case 1:\n text =\n \"Overtime Violation\\nConsider extending your route time.\\nConsider reducing number of stops.\";\n break;\n case 2:\n text = \"Overdist\";\n break;\n case 4:\n text =\n \"Route Not Optimized\\nEnsure start point is valid\\nEnsure all stops are valid.\";\n break;\n default:\n break;\n }\n }\n return text;\n }\n\n get routeVioHtmlVerbose(): string {\n let text = \"\";\n if (this.violations != 0) {\n switch (this.violations) {\n case 1:\n text =\n \"
Overtime Violation
Consider extending your route time.
Consider reducing number of stops.
\";\n break;\n case 2:\n text = \"Overdist\";\n break;\n case 4:\n text =\n \"
Route Not Optimized
Ensure start point is valid
Ensure all stops are valid.
\";\n break;\n default:\n break;\n }\n }\n return text;\n }\n\n\n getStatusBackground(): string {\n return RwRoute.getStatusBackground(this.statusCode);\n }\n\n getAssignBackground(): string {\n return RwRoute.getAssignBackground(this.assignCode);\n }\n\n getStatusTextStyle(): string {\n return RwRoute.getStatusTextStyle(this.statusCode);\n }\n\n getAssignTextStyle(): string {\n return RwRoute.getAssignTextStyle(this.assignCode);\n }\n\n\n static getStatusBackground(status: number): string {\n let style = \"\";\n switch (status) {\n //@formatter:off\n case RwRouteStatusCodes.created:\n style = theGlobals.isDarkMode ? \"statusColorGreen\" : \"statusColorGreenLight\";\n break;\n case RwRouteStatusCodes.active:\n style = theGlobals.isDarkMode ? \"statusColorYellow\" : \"statusColorYellowLight\";\n break;\n case RwRouteStatusCodes.problem:\n style = theGlobals.isDarkMode ? \"statusColorRed\" : \"statusColorRedLight\";\n break;\n case RwRouteStatusCodes.complete:\n style = theGlobals.isDarkMode ? \"statusColorGrey\" : \"statusColorGreyLight\";\n break;\n //@formatter:on\n }\n //console.log(\"getStatusBodyStyle\", status, style);\n return style;\n }\n\n static getAssignBackground(assignCode: number): string {\n let style = \"\";\n switch (assignCode) {\n //@formatter:off\n case RwRouteAssignCodes.assigned:\n style = theGlobals.isDarkMode ? \"statusColorGrey\" : \"statusColorGreyLight\";\n break;\n case RwRouteAssignCodes.pending:\n style = theGlobals.isDarkMode ? \"statusColorYellow\" : \"statusColorYellowLight\";\n break;\n case RwRouteAssignCodes.rejected:\n style = theGlobals.isDarkMode ? \"statusColorRed\" : \"statusColorRedLight\";\n break;\n //@formatter:on\n }\n return style;\n }\n\n\n static getStatusTextStyle(status: number): string {\n let style = \"\";\n switch (status) {\n case RwRouteStatusCodes.created:\n style = theGlobals.isDarkMode ? \"statusColorGreenLightText\" : \"statusColorGreenText\";\n break;\n case RwRouteStatusCodes.active:\n style = theGlobals.isDarkMode ? \"statusColorYellowLightText\" : \"statusColorYellowText\";\n break;\n case RwRouteStatusCodes.problem:\n style = theGlobals.isDarkMode ? \"statusColorRedLightText\" : \"statusColorRedText\";\n break;\n case RwRouteStatusCodes.complete:\n style = theGlobals.isDarkMode ? \"statusColorGreyLightText\" : \"statusColorGreyText\";\n break;\n }\n //console.log(\"getStatusText\", status, style);\n return style;\n }\n\n static getAssignTextStyle(assign: number): string {\n let style = \"\";\n switch (assign) {\n //case RwRouteAssignCodes.assigned: style = this.globals.isDarkMode ? \"statusColorGreyText\" : \"statusColorGreyLightText\"; break;\n case RwRouteAssignCodes.pending:\n style = theGlobals.isDarkMode ? \"statusColorYellowLightText\" : \"statusColorYellowText\";\n break;\n case RwRouteAssignCodes.rejected:\n style = theGlobals.isDarkMode ? \"statusColorRedLightText\" : \"statusColorRedText\";\n break;\n }\n //console.warn(\"getAssignText\", style);\n return style;\n }\n\n\n invalidateCache() {\n //this._routeIconCached = null;\n this._startDateCached = null;\n this._driverName = null;\n this._totalTimeString = null;\n this._travelTimeText = null;\n this._totalDistText = null;\n this._totalTimeShort = null;\n }\n\n\n //endregion\n\n\n //region JSON APIs\n\n static fromJsonArray(jsonArray: Object): RwRoute[] {\n let routes: RwRoute[] = [];\n if (jsonArray != null) {\n for (let key in jsonArray) {\n let jval = jsonArray[key];\n let route = new RwRoute(jval);\n routes.push(route);\n }\n }\n return routes;\n }\n\n fromJsonOpt(json: JSON) {\n for (let key in json) {\n //RwLog.warnConsole(\"fromJsonOpt\", key, json[key]);\n switch (key) {\n //case \"JOBID\": RwLog.warnConsole(\"JOBID\", json[key]); break;\n case \"AAROUTE\": {\n let jsonRoute = json[key];\n this.fromJson(jsonRoute);\n break;\n }\n\n case \"gdtime\": {\n theGlobals.greedyTime = json[key];\n break;\n }\n\n case \"gddist\": {\n theGlobals.greedyDist = json[key];\n break;\n }\n }\n }\n }\n\n fromJson(json: JSON) {\n const self = this;\n const SOURCE = \"RwRoute.fromJson\"\n //set default values or initialize on declaration\n\n const now = Date.now();\n\n\n for (let key in json) {\n switch (key) {\n //@formatter:off\n case \"d\":\n this.isDeleted = true;\n break;\n case \"nm\":\n case \"rnm\":\n this.name = json[key];\n break;\n case \"rid\":\n this.routeId = json[key];\n break;\n case \"uid\":\n this.accountId = json[key];\n break;\n case \"ssm\": {\n this.startTime = new Date(json[key]);\n break;\n }\n case \"sem\": {\n this.finishTime = new Date(json[key]);\n // this.setFinishDate(\"fromJson\", new Date(json[key]));\n break;\n }\n case \"lat\":\n this.lat = json[key];\n break;\n case \"lon\":\n this.lng = json[key];\n break;\n case \"om\":\n this.optType = json[key];\n break;\n case \"mode\":\n this.travelMode = json[key];\n if (this.travelMode === \"fastest\") this.travelMode = \"driving\";\n break;\n case \"avoids\":\n this.setAvoids(json[key]);\n break;\n case \"vio\":\n this.violations = json[key];\n break;\n case \"tdist\":\n this.totalDist = json[key];\n break;\n case \"ttime\":\n this.totalTime = json[key];\n break;\n case \"idl\":\n this.isDynLoc = json[key];\n break;\n case \"ihstt\":\n this.isHardStart = json[key];\n break;\n case \"ihstp\":\n this.isHardStop = json[key];\n break;\n case \"t2d\":\n this.timeDrive = json[key];\n break;\n case \"t2i\":\n this.timeIdle = json[key];\n break;\n case \"irt\":\n this.isRoundTrip = json[key];\n break;\n case \"imo\":\n this.isManOrder = json[key];\n break;\n case \"note\":\n this.note = json[key];\n break;\n case \"poly\":\n this.path = json[key];\n break;\n case \"prm\":\n this.firstStopId = json[key];\n break;\n case \"fin\":\n this.finalStopId = json[key];\n break;\n case \"asc\":\n this.stopCountActive = json[key];\n break;\n case \"csc\":\n this.stopCountComplete = json[key];\n break;\n case \"did\":\n this.driverId = json[key];\n break;\n case \"isArch\":\n this.isArchived = json[key];\n break;\n case \"isComp\":\n this.isComplete = json[key];\n break;\n case \"isTemp\":\n this.isTemplate = json[key];\n break;\n case \"rtime\":\n this.roundTripTime = json[key];\n break;\n case \"rdist\":\n this.roundTripDist = json[key];\n break;\n case \"add\":\n this.address = json[key];\n break;\n case \"status\":\n this.statusCode = json[key];\n break;\n case \"assign\":\n this.assignCode = json[key];\n break;\n\n case \"stps\": {\n //console.log(key, json[key]);\n let stopsJson = json[key];\n let newStops = RwStop.fromJsonArray(stopsJson);\n //console.log(\"RwRoute.fromJson newStops\", newStops)\n this.mergeStops(newStops);\n break;\n }\n\n }\n }\n\n if (!this.name) {\n this.name = \"\";\n RwLog.consoleError(SOURCE, \"name == null\", this.routeId);\n }\n this.lastHash = now;\n }\n\n\n mergeStops(newStops: RwStop[]) {\n const self = this;\n\n if (newStops != null && newStops.length > 0) {\n newStops.filter(s => s.routeId === this.routeId).forEach(function (stop) {\n let existing = self.findStop(stop.stopId);\n let isMarkedForDelete = stop.markedForDelete;\n if (isMarkedForDelete) {\n if (existing) {\n //console.log(\"mergeStops removing stop: \" + stop.name);\n self.removeStopById(existing.stopId);\n }\n } else {\n if (existing != null) {\n //console.log(\"mergeStops updating stop: \" + stop.name, stop);\n existing.fromStop(stop);\n } else {\n //console.log(\"mergeStops creating stop: \" + stop.name);\n self.addStop(stop);\n }\n }\n });\n }\n }\n\n fromRoute(route: RwRoute) {\n this.name = route.name;\n this.startTime = route.startTime;\n this.finishTime = route.finishTime;\n // this.setFinishDate(\"fromRoute\", route.finishTime);\n\n this.lat = route.lat;\n this.lng = route.lng;\n this.optType = route.optType;\n this.travelMode = route.travelMode;\n\n this.avoidFerries = route.avoidFerries;\n this.avoidHighways = route.avoidHighways;\n this.avoidTolls = route.avoidTolls;\n\n this.violations = route.violations;\n this.totalDist = route.totalDist;\n this.totalTime = route.totalTime;\n\n this.isDynLoc = route.isDynLoc;\n this.isHardStart = route.isHardStart;\n this.isHardStop = route.isHardStop;\n\n this.timeDrive = route.timeDrive;\n this.timeIdle = route.timeIdle;\n this.isRoundTrip = route.isRoundTrip;\n this.isManOrder = route.isManOrder;\n this.note = route.note;\n this.path = route.path;\n this.firstStopId = route.firstStopId;\n this.finalStopId = route.finalStopId;\n this.stopCountActive = route.stopCountActive;\n this.stopCountComplete = route.stopCountComplete;\n this.driverId = route.driverId;\n this.isArchived = route.isArchived;\n this.isComplete = route.isComplete;\n this.isTemplate = route.isTemplate;\n this.statusCode = route.statusCode;\n this.assignCode = route.assignCode;\n this.roundTripDist = route.roundTripDist;\n this.roundTripTime = route.roundTripTime;\n this.address = route.address;\n\n this.lastHash = Date.now();\n }\n\n toJSON() {\n const SOURCE = \"RwRoute.toJSON\";\n if (!this.startTime || this.startTime.getTime() === 0) {\n try {\n let stack = RwSysUtils.printStackTrace();\n let message = `routeId:${this.routeId}) start: ${this.startTime ? this.startTime.getTime() : this.startTime}, \\n\\n ${stack}`;\n RwLog.error(SOURCE, message);\n } catch (e) {\n RwLog.consoleError(e.toString());\n }\n }\n\n let json = {\n nm: this.name,\n rid: this.routeId,\n uid: this.accountId,\n rnm: this.name,\n ssm: this.startTime\n ? this.startTime.getTime()\n : moment()\n .toDate()\n .getTime(),\n sem: this.finishTime\n ? this.finishTime.getTime()\n : moment(this.startTime)\n .add(this.totalTime, \"seconds\")\n .toDate()\n .getTime(),\n lat: this.lat,\n lon: this.lng,\n om: this.optType,\n mode: this.travelMode,\n vio: this.violations,\n tdist: this.totalDist,\n t2d: this.timeDrive,\n ttime: this.totalTime,\n\n uhard: true,\n ihstt: this.isHardStart,\n ihstp: this.isHardStop,\n //idt: this.isDynTime,\n\n idl: this.isDynLoc,\n t2i: this.timeIdle,\n irt: this.isRoundTrip,\n imo: this.isManOrder,\n isArch: this.isArchived,\n isTemp: this.isTemplate,\n isComp: this.isComplete,\n status: this.statusCode,\n assign: this.assignCode,\n rtime: this.roundTripTime,\n rdist: this.roundTripDist\n };\n\n //add optional values\n if (this.firstStopId !== null) {\n json[\"prm\"] = this.firstStopId;\n }\n if (this.finalStopId !== null) {\n json[\"fin\"] = this.finalStopId;\n }\n if (this.note != null) {\n json[\"note\"] = this.note;\n }\n if (this.path != null) {\n json[\"poly\"] = this.path;\n }\n if (this.driverId && this.driverId !== RwUser.NoDriverId) {\n json[\"did\"] = this.driverId;\n }\n if (this.address) {\n json[\"add\"] = this.address;\n }\n\n json[\"avoids\"] = this.getAvoidsJson();\n\n // Null checks\n if (!json.ssm) {\n json.ssm = moment()\n .toDate()\n .getTime();\n }\n if (!json.sem) {\n json.sem = moment()\n .add(8, \"hours\")\n .toDate()\n .getTime();\n }\n\n return json;\n }\n\n toJsonWithAllStops() {\n let json = this.toJSON();\n\n if (this.stops != null) {\n let jstops = [];\n for (let key in this.stops) {\n let stop = this.stops[key];\n let jstop = stop.toJSON();\n jstops.push(jstop);\n //println(\"Restriction: \\(interval.description)\")\n }\n json[\"stps\"] = jstops;\n }\n\n return json;\n }\n\n toJsonWithStops(stopList: RwStop[], isOptimize: boolean = false) {\n let json = this.toJSON();\n let jstops = [];\n stopList.forEach(stop => {\n let jstop = stop.toJSON(isOptimize);\n jstops.push(jstop);\n });\n json[\"stps\"] = jstops;\n return json;\n }\n\n toJsonOpt(jobId: string, actStops: RwStop[]) {\n let jsonJob = {};\n\n jsonJob[\"LAST_SYNC\"] = Date.now();\n jsonJob[\"JOBID\"] = jobId;\n jsonJob[\"tkn\"] = this.globals.token;\n\n let jsonRoute = this.toJsonWithStops(actStops, true);\n jsonRoute[\"poly\"] = \"\";\n jsonJob[\"AAROUTE\"] = jsonRoute;\n\n return jsonJob;\n }\n\n getAvoidsJson(): string[] {\n let avoidsArray = new Array();\n if (this.avoidFerries) {\n avoidsArray.push(\"ferries\");\n }\n if (this.avoidTolls) {\n avoidsArray.push(\"tolls\");\n }\n if (this.avoidHighways) {\n avoidsArray.push(\"highways\");\n }\n return avoidsArray;\n }\n\n setAvoids(flag: String[]) {\n this.avoidFerries = flag.indexOf(\"ferries\") !== -1;\n this.avoidHighways = flag.indexOf(\"highways\") !== -1;\n this.avoidTolls = flag.indexOf(\"tolls\") !== -1;\n }\n\n // DEFER: UX Code in DEM; returning bool fine; CSS not so much\n // get hasNoteVisible(): string {\n // if (this.note && this.note !== \"\") {\n // return \"\";\n // }\n // return \"display-gone\";\n // }\n\n //endregion\n\n createStop(name: string, address: string, lat: number, lng: number): RwStop {\n let stop = new RwStop();\n stop.isActive = true;\n stop.name = name;\n stop.address = address;\n stop.lat = lat;\n stop.lng = lng;\n stop.baseColor = RwPrefUtils.stopColor;\n stop.visitTime = RwPrefUtils.visitTime;\n stop.routeId = this.routeId;\n if (this.isManOrder || RwPrefUtils.searchSetSeq) stop.seq = this.stops.length + 1;\n //if (this.isManOrder) stop.seq = this.stops.length + 1;\n return stop;\n }\n\n createStopFromSite(site: RwSite) {\n let stop = this.createStop(site.name, site.address, site.lat, site.lng);\n stop.siteId = site.siteId;\n stop.note = site.note;\n stop.baseColor = site.baseColor;\n stop.visitTime = site.getVisitTime();\n\n if (site.email && site.email.length > 0) {\n stop.email = site.email;\n }\n\n if (site.phone && site.phone.length > 0) {\n stop.phone = site.phone;\n }\n\n //DEFER: SKED INLINING: createStopFromSite; Copy relevant values; e.g. SKEDS inline\n // let skeds = site.getActiveAvailability();\n // if (skeds) {\n // //console.log(\"onSiteToRoute gotStop name, add, lat, lng\", stop.name, stop.address, stop.lat, stop.lng);\n // //1) Detect if weekly skeds occur more than once during route time frame;\n // //2a) Single: Inline the single sked to the stop\n // //2b) Multiple: Prompt use to choose the sked; on choice; inline chosen sked to stop\n // }\n\n return stop;\n }\n\n addStop(stop: RwStop) {\n stop.lastHash = Date.now();\n this.stops.push(stop);\n this.updateStopCounts();\n }\n\n\n removeStopById(stopId: string) {\n let stop = this.findStop(stopId);\n this.removeStop(stop);\n }\n\n removeStop(stop: RwStop) {\n if (stop) {\n let idx = this.stops.indexOf(stop);\n if (idx > -1) {\n this.stops.splice(idx, 1);\n this.updateStopCounts();\n }\n }\n }\n\n updateStopCounts() {\n this.stopCountActive = this.stops.filter(s => !s.isComplete).length;\n this.stopCountComplete = this.stops.filter(s => s.isComplete).length;\n }\n\n isFirstStop(stop: RwStop): boolean {\n let isFirst = false;\n if (this.firstStopId != null) {\n isFirst = this.firstStopId == stop.stopId;\n }\n return isFirst;\n }\n\n isFinalStop(stop: RwStop): boolean {\n let isFinal = false;\n if (this.finalStopId != null) {\n isFinal = this.finalStopId == stop.stopId;\n }\n return isFinal;\n }\n\n findStop(stopId: String): RwStop {\n return this.stops.find(s => s.stopId == stopId);\n }\n\n updateTimeFrame() {\n\n if (this.isOpenStart) {\n this.startTime = new Date();\n //console.warn(\"RwRoute updateTimeFrame SET startTime\", this.startTime);\n }\n\n //Use default route duration\n if (this.isOpenEnded) {\n let newFinish = RwDateUtils.addMinutesToDate(this.startTime, RwPrefUtils.routeSpan);\n this.finishTime = newFinish;\n // this.setFinishDate(\"updateTimeFrame\", newFinish);\n }\n }\n\n getActiveStops(): RwStop[] {\n let actives: RwStop[] = null;\n if (this.stops != null && this.stops.length > 0) {\n //RwLog.warnConsole(\"getActiveStops stops.length\", this.stops.length);\n\n this.stops.forEach(stop => {\n //Reset base stop values\n let isStopActive = false;\n stop.timeWindows = null;\n if (stop.violations == 4) {\n stop.violations = 0;\n //stop.availCacheTime = 0;\n //if(stop.isAvailCached) {stop.isAvailCached = false;}\n }\n\n if (stop.isComplete) {\n stop.seq = 1001;\n //RwLog.warnConsole(\"getActiveStops isComplete\", stop.name);\n } else {\n\n if (stop.isScheduled) {\n\n let sked = stop.getSked();\n //RwLog.consoleWarn(\"getActiveStops hasSchedule\", stop.name);\n let tws = stop.getTimeWindows(sked, this.startTime, this.finishTime);\n //RwLog.consoleWarn(\"tws\", tws);\n if (tws != null) {\n isStopActive = true;\n stop.timeWindows = tws;\n stop.priority = sked.priority;\n } else {\n //RwLog.warnConsole(\"getActiveStops no timeWindows\", stop.name);\n if (stop.violations != 4 || stop.seq != 1002) {\n // if (stop.isAvailCached) {\n // stop.isAvailCached = false;\n // }\n stop.violations = 4;\n stop.seq = 1002;\n }\n }\n } else {\n let siteId = stop.siteId;\n if (siteId == null) {\n //no schedule or availability constraints\n isStopActive = true;\n } else {\n let site = this.globals.findSite(siteId);\n if (site == null) {\n isStopActive = true;\n } else {\n //RwLog.log(\"getActiveStops hasSite\", stop.name);\n if (site.getActiveAvailability() != null) {\n //RwLog.log(\"getActiveStops hasAvailability\", stop.name);\n\n let tws = site.getTimeWindows(this.startTime, this.finishTime);\n if (tws != null) {\n //RwLog.log(\"getActiveStops site skeds matched\", stop.name);\n isStopActive = true;\n stop.timeWindows = tws;\n } else {\n\n //RwLog.warn(\"getActiveStops NO MATCH: site skeds\", stop.name);\n\n //This happens when a stop has schedules but not available.\n if (stop.violations != 4 || stop.seq != 1002) {\n stop.violations = 4;\n stop.seq = 1002;\n }\n }\n } else {\n isStopActive = true;\n }\n }\n }\n }\n }\n\n stop.isActive = isStopActive;\n if (isStopActive) {\n if (actives == null) {\n actives = [];\n }\n //RwLog.logConsole(\"getActiveStops isActive\", stop.name);\n actives.push(stop);\n } else {\n //RwLog.warnConsole(\"getActiveStops not Active\", stop.name);\n }\n });\n }\n return actives;\n }\n\n hasRouteViolations(): boolean {\n let hasVios = this.violations != 0;\n return hasVios;\n }\n\n hasStopViolations(): boolean {\n let hasVios = false;\n let actStops = this.getActiveStops();\n if (actStops != null && actStops.length > 0) {\n actStops.forEach(stp => {\n if (stp.violations != 0 && stp.violations != 16) {\n hasVios = true;\n }\n });\n }\n return hasVios;\n }\n\n toString() {\n return this.toJSON().toString();\n }\n\n isRouted(site: RwSite): boolean {\n //console.log(\"Route.isRouted\", site.name);\n let isRouted = false;\n let routedSite = this.getStopForSite(site);\n //console.log(\"Route.isRouted routedSite\", routedSite);\n if (routedSite != null) {\n isRouted = true;\n }\n return isRouted;\n }\n\n\n getStopForSite(site: RwSite): RwStop {\n let stopFound: RwStop = null;\n if (this.stops != null && this.stops.length > 0) {\n let siteId = site.siteId.toLowerCase();\n for (let i = 0; i < this.stops.length; i++) {\n let stop = this.stops[i];\n let sid = stop.siteId;\n if (sid != null) {\n if (sid.toLowerCase() == siteId) {\n stopFound = stop;\n break;\n }\n }\n }\n }\n return stopFound;\n }\n\n // getStopForSite(site: RwSite): RwStop {\n // let stopFound: RwStop = null;\n //\n // if (this.stops != null && this.stops.length > 0) {\n // let findSid = site.siteId.toLowerCase();\n // this.stops.forEach(stop => {\n // if (stopFound == null) {\n // let sid = stop.siteId;\n // if (sid != null) {\n // if (sid.toLowerCase() == findSid) {\n // stopFound = stop;\n // }\n // }\n // }\n // });\n // }\n // return stopFound;\n // }\n\n isAddressOnRoute(address: String): boolean {\n let isOnRoute = false;\n let addLower = address.toLowerCase();\n if (this.stops != null && this.stops.length > 0) {\n this.stops.forEach(stop => {\n if (isOnRoute == false) {\n let address = stop.address;\n if (address != null) {\n if (address.toLowerCase() == addLower) {\n isOnRoute = true;\n }\n }\n }\n });\n }\n return isOnRoute;\n }\n\n\n canAddStop(stopAddress: string, stopCount: number, p_route: RwRoute | null = null): Promise {\n const self = this;\n //console.log(\"canAddStop\", stopAddress, stopCount);\n\n return new Promise(function (resolve) {\n\n let isInProgress = self.globals.plan.addingStop;\n //console.log(\"canAddStop addingStop\", isInProgress);\n if (!isInProgress) {\n\n let route = p_route != null ? p_route : self.globals.activeRoute;\n if (route != null) {\n\n\n //self.plan.maxRouteSize = 8;\n if (self.canAddToRoute(stopCount)) {\n\n //Address on Route\n if (stopAddress && self.isAddressOnRoute(stopAddress)) {\n\n let title = \"Add Stop\";\n let body = \"Address already exists on route. Do you want to add it anyway?\";\n self.globals\n .showConfirmDialog(title, body)\n .then(isConfirmed => {\n //console.log(\"canAddStop isConfirmed\");\n resolve(isConfirmed)\n });\n\n // let dialog = document.querySelector(\"#popConfirmStop\");\n // let txtTitle = document.querySelector(\"#popConfirmStopTitle\");\n // let txtBody = document.querySelector(\"#popConfirmStopBody\");\n // let cmdYes = document.querySelector(\"#popConfirmStopYes\");\n // let cmdNo = document.querySelector(\"#popConfirmStopNo\");\n //\n // txtTitle.innerHTML = \"Add Stop?\";\n // txtBody.innerHTML =\n // \"Address already exists on route. Do you want to add it anyway?\";\n //\n // cmdYes.addEventListener(\"click\", function () {\n // resolve(true);\n // });\n // cmdNo.addEventListener(\"click\", function () {\n // resolve(false);\n // });\n // dialog.toggle();\n\n\n } else {\n resolve(true);\n }\n } else {\n //xWIP: UX: canAddStop: Over limit handling\n self.globals.showSnack(\"Over Stop Limit\");\n resolve(false);\n\n //RwApp.popLimitWarning(RwLimitType.RouteSize);\n\n //Handling dependent on whether they have an upgrade option...\n\n // let title = \"Over Stop Limit\";\n // let body = \"Do you want to see the options?\";\n // self.globals\n // .showConfirmDialog(title, body)\n // .then(showOptions => {\n // if (showOptions) {\n // //xFOCUS: ACTIONS: Navigate to purchase screen\n // }\n // resolve(false);\n // });\n }\n\n } else {\n RwLog.consoleError(\"WTF: No Active Route\");\n resolve(false);\n }\n } else {\n RwLog.consoleError(\"WTF: Add Stop In Progress\");\n resolve(false);\n }\n\n });\n }\n\n canAddToRoute(count: number): boolean {\n //console.log(\"RwRoute.canAddToRoute count\", count);\n let canAdd = false;\n let maxStops = this.plan.maxRouteSize;\n if (this.stops != null) {\n if (this.stops.length + count <= maxStops) {\n canAdd = true;\n }\n }\n //console.log(\"canAddToRoute canAdd\", canAdd, count, maxStops);\n return canAdd;\n }\n\n\n static getRouteSpanText(timeOfStart: Date, timeOfFinish: Date, isHardStart: boolean, isHardStop: boolean, totalTime: number): string {\n let spanText: string;\n\n let startMoment = moment(timeOfStart);\n let endMoment;\n if (isHardStop) {\n\n endMoment = moment(timeOfFinish);\n } else {\n\n\n endMoment = moment(timeOfStart).add(totalTime, \"seconds\");\n }\n\n let startText = RwDateUtils.formatDate(timeOfStart);\n let finishText = RwDateUtils.formatDate(timeOfFinish);\n let sameTime = startMoment.isSame(endMoment);\n\n if (isHardStart) {\n\n if (sameTime) {\n spanText = `${startText}`;\n } else {\n spanText = `${startText} to ${finishText}`;\n }\n } else {\n\n if (isHardStop) {\n spanText = `Finishes at ${finishText}`;\n } else {\n\n if (sameTime) {\n\n\n spanText = `Time of Optimize`;\n } else {\n\n spanText = `Time of Optimize`;\n }\n }\n }\n\n\n // if (isHardStart && isHardStop) {\n // if (sameTime) {\n // spanText = `${startText}`;\n // }\n // else {\n // spanText = `${startText} to ${finishText}`;\n // }\n // }\n // else if (isHardStart && !isHardStop) {\n // if (sameTime) {\n // spanText = `Specific Start Time \\n${startText}`;\n // }\n // else {\n // spanText = `Specific Start Time \\n${startText} to ${finishText}`;\n // }\n // }\n // else if (!isHardStart && isHardStop) {\n // if (sameTime) {\n // spanText = `Specific Finish Time \\n${startText}`;\n // }\n // else {\n // spanText = `Specific Finish Time \\n${startText} to ${finishText}`;\n // }\n // }\n // else {\n // if (sameTime) {\n // spanText = `Time of Optimize: \\n${startText}`;\n // }\n // else {\n // spanText = `Time of Optimize: \\n${startText} to ${finishText}`;\n // }\n // }\n return spanText;\n }\n\n\n // static getDepartureTimeString(timeOfStart: Date, timeOfFinish: Date, isHardStart: boolean, isHardStop: boolean, totalTime: number): string {\n // //let nowMoment = moment();\n // let startMoment = moment(timeOfStart);\n // let endMoment;\n //\n // if (isHardStop) {\n // endMoment = moment(timeOfFinish);\n // }\n // else {\n // endMoment = moment(timeOfStart).add(totalTime, \"seconds\");\n // }\n //\n // let startText = RwDateUtils.formatDate(timeOfStart);\n // let finishText = RwDateUtils.formatDate(timeOfFinish);\n //\n // // let startToday = startMoment.format(\"L\") === nowMoment.format(\"L\");\n // // let endToday = endMoment.format(\"L\") === nowMoment.format(\"L\");\n // // let startStr = startToday\n // // ? startMoment.format(\"LT\")\n // // : startMoment.format(\"L LT\");\n // // let endStr = endToday ? endMoment.format(\"LT\") : endMoment.format(\"L LT\");\n //\n // let sameTime = startMoment.isSame(endMoment);\n //\n // if (isHardStart && isHardStop) {\n // if (sameTime) {\n // return `Specific Time Frame \\n(${startText})`;\n // }\n // else {\n // return `Specific Time Frame \\n(${startText} to ${finishText})`;\n // }\n // }\n // else if (isHardStart && !isHardStop) {\n // if (sameTime) {\n // return `Specific Start Time \\n(${startText})`;\n // }\n // else {\n // return `Specific Start Time \\n(${startText} to ${finishText})`;\n // }\n // }\n // else if (!isHardStart && isHardStop) {\n // if (sameTime) {\n // return `Specific Finish Time \\n(${startText})`;\n // }\n // else {\n // return `Specific Finish Time \\n(${startText} to ${finishText})`;\n // }\n // }\n //\n // if (sameTime) {\n // return `Time of Optimize \\n(${startText})`;\n // }\n // else {\n // return `Time of Optimize \\n(${startText} to ${finishText})`;\n // }\n // }\n\n\n}\n\nexport class RwOptResponse {\n complete: boolean;\n route: RwRoute;\n useSockets: boolean;\n error: boolean;\n errorMsg: string;\n jobId: string;\n}\n\n\n","import {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwAddressValidator, RwPortType, RwSearchType} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\n\nexport class RwSearchResult {\n id: string = \"\";\n name: string = \"\";\n address: string = \"\";\n placeId: string = \"\";\n type: number = 0;\n lat: number = 0.0;\n lng: number = 0.0;\n navLat: number = 0.0;\n navLng: number = 0.0;\n portType: RwPortType;\n tag: string = \"\";\n phone: string = \"\";\n email: string = \"\";\n orderNumber: number = 0;\n href: string = \"\";\n nameId: number;\n isGeocode: boolean;\n query: string = \"\";\n\n IsCached: boolean;\n AccessPoint: RwAccessPoint;\n\n isSelectedItem: boolean = false;\n\n constructor(json?: Object) {\n if (json != null) {\n this.fromJson(json);\n }\n }\n\n get vueKey() {\n if (this.id) {\n return this.id;\n } else if (this.placeId) {\n return this.placeId;\n } else if (this.href) {\n return this.href;\n } else {\n return this.lat + this.lng;\n }\n }\n\n description(): string {\n let des = `name: ${this.name}, add: ${this.address}, type: ${this.type}, lat: ${this.lat}, lng: ${this.lng}`;\n return des;\n }\n\n get icon(): string {\n let iconUrl = \"maps:place\";\n switch (this.type) {\n //@formatter:off\n case RwSearchType.Web:\n iconUrl = \"mdi-map-marker\";\n break;\n case RwSearchType.Sites:\n iconUrl = \"mdi-star\";\n break;\n case RwSearchType.Tasks:\n iconUrl = \"mdi-clipboard-check\";\n break;\n case RwSearchType.Coord:\n iconUrl = \"maps:my-location\";\n break;\n //@formatter:on\n }\n return iconUrl;\n }\n\n // get iconImage(): string {\n // if (this.type === RwSearchType.Sites) {\n // let site = store.findSite(this.placeId);\n // if (site) {\n // return site.imgUrl;\n // }\n // return \"images/icons/favStar.png\";\n // } else if (this.type === RwSearchType.Web) {\n // if (this.isSelectedItem) {\n // switch (this.orderNumber) {\n // case 0:\n // return \"images/icons/pins/PinASelect.png\";\n // case 1:\n // return \"images/icons/pins/PinBSelect.png\";\n // case 2:\n // return \"images/icons/pins/PinCSelect.png\";\n // case 3:\n // return \"images/icons/pins/PinDSelect.png\";\n // case 4:\n // return \"images/icons/pins/PinESelect.png\";\n // case 5:\n // return \"images/icons/pins/PinFSelect.png\";\n //\n // default:\n // return \"images/icons/PinBlank.png\";\n // }\n // } else {\n // switch (this.orderNumber) {\n // case 0:\n // return \"images/icons/pins/PinA.png\";\n // case 1:\n // return \"images/icons/pins/PinB.png\";\n // case 2:\n // return \"images/icons/pins/PinC.png\";\n // case 3:\n // return \"images/icons/pins/PinD.png\";\n // case 4:\n // return \"images/icons/pins/PinE.png\";\n // case 5:\n // return \"images/icons/pins/PinF.png\";\n //\n // default:\n // return \"images/icons/PinBlank.png\";\n // }\n // }\n // }\n // return \"\";\n // }\n\n fromJson(json: Object) {\n for (let key in json) {\n switch (key) {\n case \"nm\":\n this.name = json[key];\n break;\n case \"add\":\n this.address = json[key];\n break;\n case \"phn\":\n this.phone = json[key];\n break;\n case \"lat\":\n this.lat = json[key];\n break;\n case \"lon\":\n this.lng = json[key];\n break;\n case \"lng\":\n this.lng = json[key];\n break;\n\n case \"name\":\n this.name = json[key];\n break;\n case \"description\":\n this.address = json[key];\n break;\n case \"place_id\":\n this.placeId = json[key];\n break;\n case \"phone\":\n this.phone = json[key];\n break;\n // case \"lat\":\n // this.lat = json[key];\n // break;\n // case \"lon\":\n // this.lng = json[key];\n // break;\n // case \"lng\":\n // this.lng = json[key];\n // break;\n case \"href\":\n this.href = json[key];\n break;\n case \"nid\":\n this.nameId = json[key];\n break;\n\n case \"AccessPoint\":\n this.AccessPoint = json[key] as RwAccessPoint;\n break;\n\n case \"IsCached\":\n this.IsCached = json[key];\n }\n }\n }\n\n static fromJsonArray(jsonArray: Object[]) {\n let results: RwSearchResult[] = [];\n if (jsonArray != null) {\n jsonArray.forEach(function (jval) {\n let result = new RwSearchResult(jval);\n results.push(result);\n });\n }\n return results;\n }\n\n static fromGoogle(json: Object) {\n let result = new RwSearchResult();\n result.type = RwSearchType.Web;\n for (let key in json) {\n switch (key) {\n case \"name\":\n result.name = json[key];\n break;\n case \"place_id\":\n result.placeId = json[key];\n break;\n case \"formatted_address\":\n result.address = json[key];\n break;\n case \"geometry\":\n let geometry = json[\"geometry\"];\n let location = geometry[\"location\"];\n result.lat = location[\"lat\"];\n result.lng = location[\"lng\"];\n break;\n }\n }\n\n //Create a name from address\n if (result.name == null || result.name == \"\") {\n result.name = RwTextUtils.getPartialName(result.address, 32);\n }\n\n return result;\n }\n\n static fromJsonPredictions(json: Object) {\n let results: RwSearchResult[] = [];\n\n for (let key in json) {\n switch (key) {\n case \"predictions\":\n let jsonArray = json[key];\n if (jsonArray != null) {\n jsonArray.forEach(function (jval) {\n let result = new RwSearchResult(jval);\n results.push(result);\n });\n }\n break;\n }\n }\n return results;\n }\n\n static fromJsonGeocode(json: RwAddress) {\n let results: RwSearchResult[] = [];\n\n if (json && json.Matches) {\n json.Matches.forEach(m => {\n var result = new RwSearchResult();\n result.name = m.nm;\n result.lat = m.lat;\n result.address = m.add;\n result.lng = m.lng;\n if (m.ports && m.ports.length > 0) {\n result.navLat = m.ports[0].lat;\n result.navLng = m.ports[0].lng;\n result.portType = m.ports[0].pt;\n }\n if (m.nid) {\n result.nameId = m.nid;\n }\n result.isGeocode = true;\n\n results.push(result);\n });\n }\n return results;\n }\n\n static fromGoogleAddressSearch(json: Object) {\n let results: RwSearchResult[] = [];\n for (let key in json) {\n switch (key) {\n case \"results\":\n let jsonArray = json[key];\n if (jsonArray != null) {\n jsonArray.forEach(function (jval) {\n let result = RwSearchResult.fromGoogle(jval);\n results.push(result);\n });\n }\n break;\n }\n }\n return results;\n }\n\n static fromGoogleCoordSearch(json: Object) {\n let results: RwSearchResult[] = [];\n for (let key in json) {\n switch (key) {\n case \"results\":\n let jsonArray = json[key];\n if (jsonArray != null) {\n jsonArray.forEach(function (jval) {\n let result = RwSearchResult.fromGoogle(jval);\n results.push(result);\n });\n }\n break;\n }\n }\n return results;\n }\n}\n\nexport class GetAccessPointsModel {\n public Address: string;\n public SearchPtLat: number;\n public SearchPtLng: number;\n public SearchPtRadius: number;\n public PlaceHref: string;\n public Lang: string;\n public Country: string;\n public NameId: number;\n}\n\n//export class RwRepoResult {\n// public Code: number;\n// public Address: string;\n// public Places: Array;\n//}\n\nexport interface RwAccessPoint {\n lat: number;\n lng: number;\n}\n\nexport class RwPort {\n lat: number;\n lng: number;\n pt: number;\n pid: number;\n}\n\nexport interface RwPlaceResult {\n ports: RwPort[];\n nm: string;\n add: string;\n lat: number;\n lng: number;\n nid: number;\n\n // Computed\n pinImg: string;\n selected: boolean;\n}\n\nexport class RwAddress {\n public Name: string;\n public Phone: string;\n public Note: string;\n public Source: string;\n public Priority: number;\n public Lat: number;\n public Lng: number;\n public PlaceId: number;\n public NameId: number;\n public PortType: number;\n public NavLat: number;\n public NavLng: number;\n public RawData: string;\n public House: string;\n public Street: string;\n public City: string;\n public State: string;\n public PostalCode: string;\n public CountryCode: string;\n public GeocodeQuality: string;\n public IsDataIssue: boolean;\n public IsGeocodeIssue: boolean;\n public Sequence: number;\n public status: string;\n public Matches: Array;\n public SvcTime: number;\n public AddId: string;\n public UploadId: string;\n public RouteId: string;\n public RouteName: string;\n public GeoKey: string;\n public BaseColor: string;\n public OpenTime: number;\n public CloseTime: number;\n public Completed: boolean;\n public AddStatus: number;\n\n public isHovering: boolean;\n public chosenMatch: number = -1;\n public skipped: boolean = false;\n}\n\nexport class RwPortModel {\n Lat: number;\n Lng: number;\n\n IsSelected: boolean = false;\n\n portType: RwPortType;\n\n get PortTypeImg(): string {\n switch (this.portType) {\n case RwPortType.Roof:\n if (this.IsSelected) {\n return RwConstants.IconRoofPin;\n }\n return RwConstants.IconRoofPinFaded;\n\n case RwPortType.Road:\n if (this.IsSelected) {\n return RwConstants.IconRoadPin;\n }\n return RwConstants.IconRoadPinFaded;\n\n default:\n return \"\";\n }\n }\n\n get PortTypeStr(): string {\n {\n switch (this.portType) {\n case RwPortType.Roof:\n return \"Rooftop\";\n\n case RwPortType.Road:\n return \"Road Access\";\n\n default:\n return \"Entrance\";\n }\n }\n }\n\n constructor(port: RwPort) {\n this.Lat = port.lat;\n this.Lng = port.lng;\n this.portType = port.pt;\n }\n}\n\nexport class RwPlaceModel {\n NameId: number;\n Name: string;\n Address: string;\n Lat: number;\n Lng: number;\n Phone: string;\n Ports: RwPortModel[];\n Source: RwAddressValidator;\n NavLat: number;\n NavLng: number;\n PortType: number;\n\n constructor(place: RwPlaceResult) {\n var self = this;\n this.Name = place.nm;\n this.Address = place.add;\n this.Lat = place.lat;\n this.Lng = place.lng;\n this.Ports = [];\n this.NameId = place.nid;\n // Add roof point\n var rootPtData: RwPort = {\n lat: place.lat,\n lng: place.lng,\n pt: RwPortType.Roof,\n pid: 0\n };\n var roofPt = new RwPortModel(rootPtData);\n roofPt.IsSelected = true;\n this.Ports.push(roofPt);\n if (place.ports) {\n place.ports.forEach(p => {\n self.Ports.push(new RwPortModel(p));\n if (p.pt === RwPortType.Road) {\n self.NavLat = p.lat;\n self.NavLng = p.lng;\n self.PortType = p.pt;\n }\n });\n } else {\n this.NavLat = this.Lat;\n this.NavLng = this.Lng;\n }\n }\n}\n\n//export class RwPlace {\n\n// // Place Id\n// public pid: string;\n\n// // Name\n// public nm: string;\n\n// // Address\n// public add: string;\n\n// public lat: number;\n\n// public lon: number;\n\n// public lng: number;\n\n// // Phone\n// public phn: string;\n\n// // Lat Roof\n// public latRf: number;\n\n// // Lng Roof\n// public lngRf: number;\n\n// // Entrance Type\n// public entType: RwEntranceType;\n// public Source: RwAddressValidator;\n\n// public Confidence: number;\n","import {RwSked} from \"@/app/dem/RwSked\";\nimport {RwTimeWindow} from \"@/app/dem/RwTimeWindow\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPortType} from \"@/app/RwEnums\";\nimport store from \"@/app/RwGlobals\"\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport thePlanSpace from \"@/app/views/planner/RwPlannerSpace\";\n\n\nexport class RwSite {\n\n constructor(json?) {\n if (json != null) {\n this.fromJson(json);\n } else {\n this.siteId = RwSysUtils.guidNew();\n this.accountId = store.orgId;\n this.priority = 0.5;\n this.baseColor = \"#79b72a\";\n }\n }\n\n static fromJson(json: Object) {\n let site: RwSite;\n if (json != null) {\n site = new RwSite(json);\n }\n return site;\n }\n\n static fromJsonArray(jsonArray: Object[]) {\n let sites: RwSite[] = [];\n if (jsonArray != null) {\n for (let key in jsonArray) {\n let jval = jsonArray[key];\n let site = new RwSite(jval);\n sites.push(site);\n }\n }\n\n return sites;\n }\n\n\n //#region Props\n\n isDeleted = false;\n siteId: string;\n accountId: string;\n name: string;\n address: string;\n lat: number = 0;\n lng: number = 0;\n phone: string;\n priority: number = 0;\n note: string;\n visitTime: number;\n overSvcTime: boolean = false;\n email: string;\n checkDate: Date;\n nameId: number;\n portType: RwPortType;\n isAvail: boolean;\n isSelectedItem: boolean = false;\n baseColor: string;\n //isAvailCached = true;\n // availChecked: number = 0;\n //let cachedProximity = 0.0\n\n lastHash: number = 0;\n\n get hasNoteVisible(): string {\n if (this.note && this.note !== \"\") {\n return \"\";\n }\n\n return \"display-gone\";\n }\n\n get checkEpoc(): number {\n return this.checkDate ? this.checkDate.getTime() : 0;\n }\n\n // get imgUrl(): string {\n // return RwImgUtils.calcSitePinUrl(\n // !!this.isAvail,\n // this.priority,\n // this.baseColor\n // );\n // //let url = utils.RwImgUtils.calcPinUrl(RwPinTypes.Site, 0, 0, 0, false, this.priority);\n // //RwLog.logConsole(\"Star imgUrl\", url);\n // //return url;\n // }\n\n _dataUrl: string = \"\";\n get dataUrl(): string {\n const self = this;\n\n let pin = RwPin.fromSite(this);\n if (pin) {\n let url = thePlanSpace.globals.idxURL[pin.urlHash];\n if (url && url.length > 0) {\n self._dataUrl = url;\n } else {\n pin.dataUrlAsync()\n .then(dataUrl => {\n self._dataUrl = dataUrl;\n //console.warn(\"RwStop.dataUrl updated\", this._dataUrl);\n })\n }\n }\n\n return this._dataUrl;\n }\n\n\n // get mapImgUrl(): string {\n // //xTODO provide availability to calc black pin if not available\n // //let url = utils.RwImgUtils.calcPinUrl(RwPinTypes.Site, 0, 0, 0, this.isAvail ? true : false, this.priority);\n // //RwLog.logConsole(\"Star imgUrl\", url);\n // //return url;\n //\n // this.isAvail = !!this.isAvail;\n // //this.isAvail!! = this.isAvail ? true : false;\n // return RwImgUtils.calcSitePinUrl(this.isAvail, this.priority, this.baseColor, this.isSelectedItem);\n // }\n\n get lastCheckInText(): string {\n let checkInText = \"\";\n let lastCheck = this.checkDate;\n\n if (lastCheck) {\n\n let today = new Date().getTime();\n let numberDays = today - lastCheck.getTime();\n let timeText = Math.floor((numberDays / (24 * 3600000))).toString();\n\n checkInText = `${timeText}` + \" Days\";\n //checkInText = `🗸 ${timeText}`;\n }\n //console.warn(\"lastCheckInText\", checkInText);\n return checkInText;\n }\n\n violationText(isAvailable: boolean): string {\n let text = isAvailable ? \"\" : \"Closed\";\n // if (this.isAvailCached == false) {\n // text = \"Closed\";\n // }\n return text;\n }\n\n //#endregion Props\n\n\n clone(): RwSite {\n let newSite = new RwSite(this.toJSON());\n newSite.isSelectedItem = this.isSelectedItem;\n return newSite;\n }\n\n fromJson(json: Object) {\n\n for (let key in json) {\n //RwLog.logConsolekey, json[key]);\n switch (key) {\n case \"d\":\n this.isDeleted = true;\n break;\n case \"lid\":\n this.siteId = json[key];\n break;\n case \"uid\":\n this.accountId = json[key];\n break;\n case \"nm\":\n this.name = json[key];\n break;\n case \"add\":\n this.address = json[key];\n break;\n case \"lat\":\n this.lat = json[key];\n break;\n case \"lon\":\n this.lng = json[key];\n break;\n case \"phn\":\n this.phone = json[key];\n break;\n case \"pri\":\n this.priority = json[key];\n break;\n case \"note\":\n this.note = json[key];\n break;\n case \"svct\":\n this.visitTime = json[key];\n break;\n case \"email\":\n this.email = json[key];\n break;\n case \"ost\":\n this.overSvcTime = json[key];\n break;\n case \"cdate\":\n this.checkDate = new Date(json[key]);\n break;\n case \"nid\":\n this.nameId = json[key];\n break;\n case \"pt\":\n this.portType = json[key];\n break;\n case \"bc\":\n this.baseColor = json[key];\n break;\n }\n }\n\n\n }\n\n fromSite(site: RwSite) {\n this.name = site.name;\n this.address = site.address;\n this.lat = site.lat;\n this.lng = site.lng;\n this.phone = site.phone;\n this.priority = site.priority;\n this.note = site.note;\n this.visitTime = site.visitTime;\n this.email = site.email;\n this.overSvcTime = site.overSvcTime;\n this.checkDate = site.checkDate;\n this.nameId = site.nameId;\n this.portType = site.portType;\n this.baseColor = site.baseColor;\n\n this.lastHash = Date.now();\n }\n\n toJSON() {\n let json = {\n lid: this.siteId,\n uid: this.accountId,\n nm: this.name,\n add: this.address,\n lat: this.lat,\n lon: this.lng,\n phn: this.phone,\n pri: this.priority,\n bc: this.baseColor\n };\n\n if (this.overSvcTime) {\n json[\"ost\"] = this.overSvcTime;\n }\n if (this.email) {\n json[\"email\"] = this.email;\n }\n if (this.checkDate) {\n json[\"cdate\"] = this.checkDate.getTime();\n }\n if (this.note) {\n json[\"note\"] = this.note;\n }\n if (this.visitTime) {\n json[\"svct\"] = this.visitTime;\n }\n if (this.nameId) {\n json[\"nid\"] = this.nameId;\n }\n if (this.portType) {\n json[\"pt\"] = this.portType;\n }\n\n return json;\n }\n\n\n isAvailable(timeStart: Date, timeEnd: Date): boolean {\n let isAvail = false;\n //recheck only if we haven't checked in the last 60 seconds\n let now = Date.now();\n let availability = this.getActiveAvailability();\n if (availability != null) {\n\n let windows = this.getTimeWindows(timeStart, timeEnd);\n if (windows != null && windows.length > 0) {\n isAvail = true;\n } else {\n isAvail = false;\n }\n } else {\n isAvail = true;\n }\n return isAvail;\n }\n\n getVisitTime(): number {\n let span = (this.visitTime >= 0) ? this.visitTime : RwPrefUtils.visitTime;\n return span;\n }\n\n getActiveAvailability(): RwSked[] {\n let skeds: RwSked[] = null;\n let weeklys = RwSked.getSiteSkeds();\n if (weeklys != null) {\n weeklys.forEach(weekly => {\n //if(weekly.isActive) {\n let wsid = weekly.siteId;\n if (wsid != null) {\n if (this.siteId == wsid) {\n if (skeds == null) {\n skeds = [];\n }\n skeds.push(weekly);\n }\n }\n //}\n });\n }\n return skeds;\n }\n\n getTimeWindows(timeStart: Date, timeEnd: Date): RwTimeWindow[] {\n let windows: RwTimeWindow[] = null;\n\n let skeds = this.getActiveAvailability();\n if (skeds != null) {\n\n let routeStart = timeStart.getTime();\n let routeEnd = timeEnd.getTime();\n\n skeds.forEach(sked => {\n let timeWindows = sked.project(timeStart);\n if (timeWindows != null) {\n timeWindows.forEach(win => {\n let winStart = win.start.getTime();\n let winEnd = win.end.getTime();\n //let winStart: number;\n //let winEnd: number;\n\n //// If end time is before start time (overnight sched)\n //if (win.start.getTime() > win.end.getTime()) {\n // winStart = win.end.getTime();\n // winEnd = win.start.getTime();\n //}\n //else {\n // // Normal sched\n // winStart = win.start.getTime();\n // winEnd = win.end.getTime();\n //}\n\n let isFullyContained = winStart >= routeStart && winEnd <= routeEnd;\n let isLeftClipped = winStart <= routeStart && winEnd >= routeStart;\n let isRightClipped = winStart <= routeEnd && winEnd >= routeEnd;\n let isHit = isFullyContained || isLeftClipped || isRightClipped;\n\n if (isHit) {\n if (windows == null) {\n windows = [];\n }\n windows.push(win);\n //RwLog.logConsole(\"getTimeWindows Hit\", win.toString());\n }\n });\n }\n });\n } else {\n //RwLog.logConsole(\"getTimeWindows No TimeWindows\");\n }\n\n return windows;\n }\n\n\n toString() {\n return this.toJSON.toString();\n }\n\n}\n\n\n// checkInCacheTime = 0;\n// checkInCached: RwHistory = null;\n// getLastCheckIn(): RwHistory {\n// let self = this;\n// let lastCheck: RwHistory = null;\n//\n// if (self.checkInCached != null) {\n// let now = Date.now();\n// if (now - this.checkInCacheTime < 60 * 1000) {\n// lastCheck = this.checkInCached;\n// } else {\n// //expired\n// self.checkInCached = null;\n// }\n// }\n//\n// if (lastCheck == null) {\n// //let driver = RwApp.model.driver;\n//\n// let acts = store.getHistoryForSite(this.siteId);\n// if (acts != null && acts.length > 0) {\n// acts.forEach(act => {\n// if (lastCheck == null) {\n// lastCheck = act;\n// } else {\n// lastCheck = act;\n// self.checkInCacheTime = Date.now();\n// }\n// });\n// }\n// }\n// return lastCheck;\n// }\n","export class RwTimeWindow {\n start: Date;\n end: Date;\n\n constructor(startTime: Date, endTime: Date) {\n this.start = startTime;\n this.end = endTime;\n }\n\n fromJson(json: Object) {\n for (var key in json) {\n switch (key) {\n case \"tos\":\n this.start = new Date(json[key]);\n break;\n case \"toe\":\n this.end = new json[key]();\n break;\n }\n }\n }\n\n toJSON() {\n let json = {\n tos: this.start.getTime(),\n toe: this.end.getTime()\n };\n return json;\n }\n\n toString() {\n return `RwTimeWindow ${this.start} - ${this.end}`;\n }\n}\n\n// func toTimeInterval() -> NSTimeInterval {\n// let startSecs = start.timeIntervalSince1970\n// let endSecs = end.timeIntervalSince1970\n// let duration = endSecs - startSecs\n// return duration\n// }\n","import moment from \"moment\";\nimport {RwTimeWindow} from \"@/app/dem/RwTimeWindow\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPinTypes, RwSkedTypes} from \"@/app/RwEnums\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\n\nexport class RwSked {\n markedForDelete = false;\n\n skedId: string;\n accountId: string;\n name: string;\n type: RwSkedTypes = RwSkedTypes.None;\n dow: number;\n timeStart: number;\n timeFinish: number;\n isActive: boolean;\n priority: number = 0;\n siteId: string;\n stopId: string;\n duration: number;\n\n windowsCached: RwTimeWindow[];\n\n isHovering: boolean = false;\n isSelectedItem: boolean = false;\n\n lastHash: number = 0;\n\n\n clone() {\n let cloneSked = new RwSked();\n cloneSked.accountId = this.accountId;\n cloneSked.skedId = this.skedId;\n cloneSked.name = this.name;\n cloneSked.type = this.type;\n cloneSked.dow = this.dow;\n cloneSked.timeStart = this.timeStart;\n cloneSked.timeFinish = this.timeFinish;\n cloneSked.isActive = this.isActive;\n cloneSked.priority = this.priority;\n cloneSked.siteId = this.siteId;\n cloneSked.stopId = this.stopId;\n cloneSked.isSelectedItem = this.isSelectedItem;\n cloneSked.duration = this.duration;\n\n //intentionally excluded from clone\n //cloneSked.windowsCached = this.windowsCached;\n\n return cloneSked;\n }\n\n constructor(json?) {\n if (json != null) {\n this.fromJson(json);\n } else {\n this.accountId = theGlobals.orgId;\n this.skedId = RwSysUtils.guidNew();\n }\n }\n\n\n get dowSet(): number[] {\n let dowSet: number[] = [];\n\n if (this.type != RwSkedTypes.Weekly) {\n dowSet = [1, 2, 3, 4, 5, 6, 7];\n } else {\n let dow16 = this.dow;\n let mon = (dow16 & 0b00000010) >> 1;\n let tue = (dow16 & 0b00000100) >> 2;\n let wed = (dow16 & 0b00001000) >> 3;\n let thu = (dow16 & 0b00010000) >> 4;\n let fri = (dow16 & 0b00100000) >> 5;\n let sat = (dow16 & 0b01000000) >> 6;\n let sun = (dow16 & 0b10000000) >> 7;\n\n if (mon != 0) dowSet.push(1);\n if (tue != 0) dowSet.push(2);\n if (wed != 0) dowSet.push(3);\n if (thu != 0) dowSet.push(4);\n if (fri != 0) dowSet.push(5);\n if (sat != 0) dowSet.push(6);\n if (sun != 0) dowSet.push(7);\n\n }\n //console.log(\"GET dowSet\", dowSet)\n return dowSet;\n }\n\n set dowSet(newValue: number[]) {\n let dow16: number = 0;\n newValue.forEach(newDow => {\n //@formatter:off\n switch (newDow) {\n case 1:\n dow16 = dow16 | 0b00000010;\n break;\n case 2:\n dow16 = dow16 | 0b00000100;\n break;\n case 3:\n dow16 = dow16 | 0b00001000;\n break;\n case 4:\n dow16 = dow16 | 0b00010000;\n break;\n case 5:\n dow16 = dow16 | 0b00100000;\n break;\n case 6:\n dow16 = dow16 | 0b01000000;\n break;\n case 7:\n dow16 = dow16 | 0b10000000;\n break;\n default:\n break;\n }\n //@formatter:on\n });\n this.dow = dow16;\n }\n\n get Monday(): boolean {\n return this.isIsoDayHit(0)\n }\n\n get Tuesday(): boolean {\n return this.isIsoDayHit(1)\n }\n\n get Wednesday(): boolean {\n return this.isIsoDayHit(2)\n }\n\n get Thursday(): boolean {\n return this.isIsoDayHit(3)\n }\n\n get Friday(): boolean {\n return this.isIsoDayHit(4)\n }\n\n get Saturday(): boolean {\n return this.isIsoDayHit(5)\n }\n\n get Sunday(): boolean {\n return this.isIsoDayHit(6)\n }\n\n\n get TimeSpan(): string {\n let availStartTime = moment()\n .startOf(\"day\")\n .add(this.timeStart, \"millisecond\")\n .format(\"h:mma\");\n let availEndTime = moment()\n .startOf(\"day\")\n .add(this.timeFinish, \"millisecond\")\n .format(\"h:mma\");\n return `${availStartTime} - ${availEndTime}`;\n }\n\n static fromJsonArray(jsonArray: Object[]) {\n //console.log(\"RWSked jsonArray\", jsonArray);\n let skeds: RwSked[] = [];\n if (jsonArray != null) {\n jsonArray.forEach(function (jval) {\n let sked = new RwSked(jval);\n skeds.push(sked);\n });\n }\n return skeds;\n }\n\n fromJson(json: Object) {\n for (let key in json) {\n //@formatter:off\n switch (key) {\n case \"sid\":\n this.skedId = json[key];\n break;\n case \"uid\":\n this.accountId = json[key];\n break;\n case \"lid\":\n this.siteId = json[key];\n break;\n case \"act\":\n this.isActive = json[key];\n break;\n case \"nm\":\n this.name = json[key];\n break;\n case \"stp\":\n this.type = json[key];\n break;\n case \"dow\":\n this.dow = json[key];\n break;\n case \"tos\": {\n this.timeStart = json[key];\n //console.warn(\"RwSked.fromJson\", this.timeStart);\n break;\n }\n case \"toe\":\n this.timeFinish = json[key];\n break;\n case \"pri\":\n this.priority = json[key];\n break;\n case \"stpid\":\n this.stopId = json[key];\n break;\n case \"dur\":\n this.duration = json[key];\n break;\n }\n //@formatter:on\n }\n }\n\n fromSked(sked: RwSked) {\n this.siteId = sked.siteId;\n this.isActive = sked.isActive;\n this.name = sked.name;\n this.type = sked.type;\n this.dow = sked.dow;\n this.timeStart = sked.timeStart;\n //console.warn(\"RwSked.fromSked\", sked.timeStart);\n this.timeFinish = sked.timeFinish;\n this.priority = sked.priority;\n this.stopId = sked.stopId;\n this.duration = sked.duration;\n\n this.lastHash = Date.now();\n }\n\n toJSON() {\n let json = {\n sid: this.skedId,\n uid: this.accountId,\n stp: this.type,\n dow: this.dow,\n tos: this.timeStart,\n toe: this.timeFinish,\n act: this.isActive,\n pri: this.priority,\n dur: this.duration,\n };\n\n if (this.name != null) {\n json[\"nm\"] = this.name;\n }\n if (this.siteId != null) {\n json[\"lid\"] = this.siteId;\n }\n if (this.stopId != null) {\n json[\"stpid\"] = this.stopId;\n }\n\n return json;\n }\n\n\n //DEFER: Move to Globals; use filter vs. foreach\n\n static getSiteSkeds(): RwSked[] {\n let weeklies: RwSked[];\n let skeds = theGlobals.skeds;\n if (skeds.length > 0) {\n weeklies = [];\n skeds.forEach(sked => {\n if (sked.type == RwSkedTypes.Weekly) {\n weeklies.push(sked);\n }\n });\n }\n return weeklies;\n }\n\n toString() {\n return this.toJSON.toString();\n }\n\n project(pit: Date): RwTimeWindow[] {\n const self = this;\n const millisInDay = 1000 * 60 * 60 * 24;\n\n let windows: RwTimeWindow[] = null;\n //console.log(\"RwSked.project\", pit);\n\n if (self.windowsCached != null) {\n windows = self.windowsCached;\n } else {\n let sow = moment(pit)\n .startOf(\"isoWeek\")\n .valueOf();\n let sod = sow;\n\n //console.log(\"Route.[start, finish], WIN [start, finish]\", routeStart, routeFinish, win.start, win.end);\n let sowDate = new Date(sow);\n let skedStartAdj = self.timeStart;\n let skedFinishAdj = self.timeFinish;\n\n //If Overnighter: Adjust StartTime to start yesterday;\n if (self.timeStart >= self.timeFinish) {\n skedStartAdj = self.timeStart - millisInDay;\n }\n\n let tzo = sowDate.getTimezoneOffset() * 1000; //millis\n let dowOrdStart = self.getIsoDayByFlag(pit.getDay());\n let dowOrdStop = dowOrdStart + 1;\n //console.log(\"startOfDay, dowStart dowStop\", pit, dowOrdStart, dowOrdStop);\n\n //let dayCounts: number[] = [0,1,2,3,4,5,6];\n //dayCounts.forEach(dayCount => {\n //console.log(\"dowOrdStart\", dowOrdStart, \"dowOrdStop\", dowOrdStop);\n\n\n for (let dayOrd = dowOrdStart; dayOrd <= dowOrdStop; dayOrd++) {\n sod = sow + dayOrd * millisInDay;\n //console.log(\"startOfDay\", new Date(sod));\n\n let dowHit = self.isIsoDayHit(dayOrd);\n if (dowHit) {\n // console.log(\"self.timeStart\", self.timeStart);\n // console.log(\"self.timeFinish\", self.timeFinish);\n let skedStartDOW = skedStartAdj + sod;\n let skedFinishDOW = skedFinishAdj + sod;\n\n //DST adjustment...\n let startDateTime = new Date(skedStartDOW);\n let tzoNow = startDateTime.getTimezoneOffset() * 1000; //millis\n if (tzo != tzoNow) {\n //RwLog.errConsole(\"adjust for DST\", tzo, tzoNow);\n let tzoDelta = tzoNow - tzo;\n skedStartDOW += tzoDelta;\n skedFinishDOW += tzoDelta;\n tzo = tzoNow;\n }\n\n let win = new RwTimeWindow(new Date(skedStartDOW), new Date(skedFinishDOW));\n if (windows == null) {\n windows = [];\n }\n windows.push(win);\n\n }\n }\n }\n\n //self.windowsCached = windows;\n\n return windows;\n }\n\n isIsoDayHit(dayOrd: number): boolean {\n let self = this;\n let dowHit = false;\n if (self.type == RwSkedTypes.Weekly) {\n let isoDayOrd = self.getIsoDayByOrd(dayOrd);\n let dowSet = self.dowSet;\n dowSet.forEach(flagDay => {\n let isoDayFlag = self.getIsoDayByFlag(flagDay);\n if (isoDayOrd == isoDayFlag) {\n dowHit = true;\n }\n });\n } else {\n dowHit = true;\n }\n return dowHit;\n }\n\n getIsoDayByFlag(dayOfWeekNum: number): number {\n let isoDay = 0;\n switch (dayOfWeekNum) {\n //@formatter:off\n case 0:\n isoDay = 6;\n break; //Sun\n case 1:\n isoDay = 0;\n break; //Mon\n case 2:\n isoDay = 1;\n break; //Tue\n case 3:\n isoDay = 2;\n break; //Wed\n case 4:\n isoDay = 3;\n break; //Thu\n case 5:\n isoDay = 4;\n break; //Fri\n case 6:\n isoDay = 5;\n break; //Sat\n case 7:\n isoDay = 6;\n break; //Sun\n //@formatter:on\n }\n return isoDay;\n }\n\n getIsoDayByOrd(dowOrd: number): number {\n let isoDay = 0;\n //@formatter:off\n switch (dowOrd) {\n case 0:\n isoDay = 0;\n break; //Mon\n case 1:\n isoDay = 1;\n break; //Tue\n case 2:\n isoDay = 2;\n break; //Wed\n case 3:\n isoDay = 3;\n break; //Thu\n case 4:\n isoDay = 4;\n break; //Fri\n case 5:\n isoDay = 5;\n break; //Sat\n case 6:\n isoDay = 6;\n break; //Sun\n case 7:\n isoDay = 0;\n break; //Sun\n default:\n break;\n }\n //@formatter:on\n return isoDay;\n }\n\n get imgUrl(): string {\n if (this.skedId === null) {\n return \"\";\n }\n let args = {typ: RwPinTypes.Sked, pri: this.priority};\n let hash = RwPin.getPinHash(args)\n let url = RwPin.calcSkedPinUrl(hash, args);\n return url;\n }\n\n\n get displayHours(): string {\n let text = RwTextUtils.scheduledTextMins(this.timeStart / 60000, this.timeFinish / 60000);\n //text += ` ${this.dowSet}, ${this.timeStart / 60000}, ${this.timeFinish / 60000}`;\n return text;\n }\n\n get displayFull(): string {\n let text = RwTextUtils.scheduledTextMins(this.timeStart / 60000, this.timeFinish / 60000);\n if (text && text.length > 0) {\n text += \":\"\n if (this.Monday) text += \" Mo\"\n if (this.Tuesday) text += \" Tu\"\n if (this.Wednesday) text += \" We\"\n if (this.Thursday) text += \" Th\"\n if (this.Friday) text += \" Fr\"\n if (this.Saturday) text += \" Sa\"\n if (this.Sunday) text += \" Su\"\n } else {\n text = \"Unrestricted\";\n }\n return text;\n }\n\n\n}\n","import {StopStatus} from \"@/app/RwEnums\";\n\nconst statusNames =\n [\"Not Completed\", \"Nobody There\", \"Not Open\", \"Incorrect Address\", \"Address Unreachable\", \"Customer Refused\",\n \"Come Back Another Day\", \"Do Not Re-Attempt\", \"Not Completed - Other\", \"Completed\", \"Left on Porch/Front Door\", \"Left at Gate/Lobby\",\n \"Left in Mail Area\", \"Handed to Customer\", \"Signature Collected\", \"Service Rendered\", \"Package Picked Up\",\n \"Communicated with Contact\", \"Sent Text/Email\", \"Left Voicemail\", \"Spoke on Phone\", \"Spoke Directly w/ Customer\",\n \"Left a Note\", \"Other\", \"Address Updated at Customer Req.\", \"New Delivery\", \"New Customer\"];\n\nfunction returnStatusItem(status: StopStatus) {\n return {\n id: status,\n name: statusNames[status]\n }\n}\n\nfunction generateStatusItems(from: number, to: number) {\n return Array.from(new Array(to - from), (x, i) => i + from).map(i => returnStatusItem(i));\n}\n\nconst tree = [\n {\n id: StopStatus.NotCompleted,\n name: statusNames[StopStatus.NotCompleted],\n children: [\n generateStatusItems(StopStatus.NobodyThere, StopStatus.NotCompletedOther)\n ],\n },\n {\n id: StopStatus.Completed,\n name: statusNames[StopStatus.NotCompleted],\n children: [\n generateStatusItems(StopStatus.LeftFrontDoorPorch, StopStatus.LeftNote)\n ],\n },\n {\n id: StopStatus.Other,\n name: statusNames[StopStatus.NotCompleted],\n children: [\n generateStatusItems(StopStatus.AddressUpdated, StopStatus.NewCustomer)\n ],\n },\n]\n\nexport default tree;\n\nexport {statusNames};","import moment from \"moment\";\nimport {RwTimeWindow} from \"@/app/dem/RwTimeWindow\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\nimport {RwDistUnits, RwPortType, RwSkedTypes, RwStopTypes, RwStopVios, StopStatus} from \"@/app/RwEnums\";\nimport {RwLog} from \"../dal/RwLog\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\"\nimport thePlan from \"@/app/views/planner/RwPlannerSpace\"\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\"\nimport {RwTextUtils} from '../utils/RwTextUtils';\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwTaskStops} from \"@/app/dal/RwTaskStops\";\nimport {statusNames} from \"@/app/utils/StopStatusStrings\";\nimport {RwStopAddOns} from \"@/app/dem/RwStopAddOns\";\n\nexport class RwStop {\n\n //#region Constructors\n\n static fromJsonArray(jsonArray: Object) {\n let stops: RwStop[] = [];\n if (jsonArray != null) {\n for (let key in jsonArray) {\n let val = jsonArray[key];\n let stop = new RwStop(val);\n stops.push(stop);\n }\n }\n return stops;\n }\n\n static fromJsonArrayMerge(jsonArray: object) {\n //this is being added so that the stops received in the array from route merge can be properly retrieved\n let stops: RwStop[] = [];\n if (jsonArray != null) {\n for (let key in jsonArray) {\n if (key == \"Stops\") {\n let val = jsonArray[key];\n val.forEach(stop => stops.push(new RwStop(stop)));\n }\n }\n }\n return stops\n }\n\n static fromJson(json: JSON) {\n let stop: RwStop;\n if (json) {\n stop = new RwStop(json);\n }\n return stop;\n }\n\n static fromSite(site: RwSite) {\n let stop: RwStop = null;\n if (site != null) {\n stop = new RwStop();\n stop.stopId = RwSysUtils.guidNew();\n stop.name = site.name;\n stop.lat = site.lat;\n stop.lng = site.lng;\n stop.address = site.address;\n stop.phone = site.phone;\n stop.visitTime = site.visitTime;\n stop.note = site.note;\n stop.siteId = site.siteId;\n stop.overSvcTime = site.overSvcTime;\n stop.email = site.email;\n //stop.site = site;\n // = site.navLng;\n stop.nameId = site.nameId;\n if (site.baseColor) {\n stop.baseColor = site.baseColor;\n } else {\n stop.baseColor = RwImgUtils.getHexColorFromPriority(site.priority);\n }\n }\n return stop;\n }\n\n constructor(json?) {\n if (json != null) {\n this.fromJson(json);\n } else {\n this.stopId = RwSysUtils.guidNew();\n }\n }\n\n //#endregion Constructors\n\n\n //#region Props\n\n markedForDelete = false;\n stopId: string;\n routeId: string;\n siteId: string;\n histId: string;\n skedId: string;\n name: string;\n type: RwStopTypes;\n priority: number = 0.5;\n visitTime: number = 0;\n status: number = 0;\n lat: number = 0;\n lng: number = 0;\n seq: number = 0;\n timeOfArr: Date;\n timeOfDep: Date;\n timeToDrive: number = 0;\n timeToIdle: number = 0;\n distToDrive: number = 0;\n violations: number = 0;\n isComplete: boolean = false;\n note: string;\n phone: string;\n address: string;\n dropStopId: string;\n drops: string;\n overSvcTime: boolean = false;\n email: string;\n checkDate: Date;\n navLat: number;\n navLng: number;\n portType: RwPortType;\n nameId: number;\n openTime: number;\n closeTime: number;\n baseColor: string = \"#E91E63\";\n isTask: boolean = false;\n timeWindows: RwTimeWindow[];\n isActive = false;\n colorGroup: number = -1;\n isSelectedItem: boolean = false;\n\n //isAvailCached = true;\n //availCacheTime: number = 0;\n checkInCacheTime = 0;\n checkInCached: RwHistory = null;\n\n addOns: RwStopAddOns = {};\n\n //isSelected: boolean = false;\n _lastHash: number = 0;\n\n get lastHash(): number {\n return this._lastHash\n }\n\n set lastHash(val: number) {\n //console.warn(\"SET lastHash\")\n this._lastHash = val\n }\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get plan(): RwPlannerSpace {\n return thePlan;\n }\n\n get stopStatus(): StopStatus {\n return this.status ? this.status as StopStatus : StopStatus.NotCompleted;\n }\n\n get stopStatusString(): string {\n return statusNames[this.stopStatus];\n }\n\n get timeText(): string {\n let displayText = \"\";\n if (this.isActive && this.timeOfArr != null && this.timeOfDep != null) {\n let arrText = moment(this.timeOfArr).format(\"LT\");\n let depText = moment(this.timeOfDep).format(\"LT\");\n displayText = `${arrText} - ${depText}`;\n }\n return displayText;\n }\n\n _dataUrl: string = undefined;\n get dataUrl(): string {\n const self = this;\n let pin = this.isTask ? RwPin.fromTask(this) : RwPin.fromStop(this);\n if (pin) {\n let url = thePlanSpace.globals.idxURL[pin.urlHash];\n if (url && url.length > 0) {\n self._dataUrl = url;\n } else {\n pin.dataUrlAsync()\n .then(dataUrl => {\n self._dataUrl = dataUrl;\n //console.warn(\"RwStop.dataUrl updated\", this._dataUrl);\n })\n }\n }\n return this._dataUrl;\n }\n\n\n get skedText(): string {\n //console.log(\"skedText\", this.isActive, this.isScheduled, this.openTime, this.closeTime);\n let text = \"\";\n if (this.isScheduled) {\n if (this.isActive) {\n text = RwTextUtils.scheduledTextMins(this.openTime, this.closeTime);\n } else {\n text = \"time frame: \" + RwTextUtils.scheduledTextMins(this.openTime, this.closeTime);\n }\n }\n return text;\n }\n\n get visitTimeText(): string {\n //console.log(\"visitTimeText\", this.visitTime);\n return RwStop.visitTimeText(this, this.visitTime);\n }\n\n\n static visitTimeText(stop: RwStop, visitTime: number): string {\n let displayText = \"\";\n //console.log(\"visitTimeText\", stop.visitTime);\n let isOverride = false;\n let effVisitTime = visitTime;\n\n if (visitTime >= 0) {\n isOverride = true;\n } else {\n if (stop && stop.siteId) {\n let site = stop.getSite();\n effVisitTime = site ? site.getVisitTime() : RwPrefUtils.visitTime;\n } else {\n effVisitTime = RwPrefUtils.visitTime;\n }\n }\n displayText = RwStop.visitTimeTextPrimitive(isOverride, effVisitTime)\n return displayText;\n }\n\n\n static visitTimeTextPrimitive(isOverride: boolean, visitTime: number): string {\n let displayText = (isOverride) ? `override: ${visitTime}m` : `default: ${visitTime}m`;\n return displayText;\n }\n\n\n // //REVIEW: this should not be displayed as Visit Time;\n\n // else {\n // if (stop.isComplete) {\n // if (stop.checkDate) {\n // displayText = moment(stop.checkDate).format(\"L LT\");\n // }\n // let checkIn = stop.getLastCheckIn();\n // if (checkIn != null) {\n // displayText = moment(checkIn.startTime).format(\"L LT\");\n // }\n // }\n // }\n // return displayText;\n // }\n\n\n get violationText(): string {\n let text = \"\";\n\n //RwLog.warnConsole('violationText', this.name, this.violations);\n\n if (this.violations != 0 && this.isComplete == false) {\n let absIdle: number = Math.abs(Math.round(this.timeToIdle / 60));\n let minsIdle = absIdle.toFixed(0).toString();\n switch (this.violations) {\n case RwStopVios.Early:\n text = `Early: ${minsIdle} mins`;\n break;\n\n case RwStopVios.Late:\n text = `Late: ${minsIdle} mins`;\n break;\n\n case RwStopVios.Closed:\n text = this.closedText;\n break;\n\n case RwStopVios.Unreachable:\n text = \"Unreachable\";\n break;\n\n case RwStopVios.Overtime:\n text = \"Overtime\";\n break;\n }\n }\n\n return text;\n }\n\n get closedText(): string {\n let text = \"\";\n if (this.violations == 4) {\n let hasSchedule = this.getSked() != null;\n text = hasSchedule ? \"Conflict\" : \"Closed\";\n }\n return text;\n }\n\n get travelText(): string {\n let displayText = \"\";\n if (this.isActive) {\n let unit = RwPrefUtils.distUnits;\n let distText = \"\";\n if (unit == RwDistUnits.Kilometers) {\n let dist = (this.distToDrive / 1000).toFixed(1);\n distText = `${dist} km`;\n //RwLog.logConsole(\"metaText \", unit, dist, distText);\n } else {\n let dist = (this.distToDrive / 1609).toFixed(1);\n distText = `${dist} mi`;\n //RwLog.logConsole(\"metaText \", unit, dist, distText);\n }\n\n //var durationSecs = moment.duration(this.timeToDrive, \"seconds\");\n //let timeText = durationSecs.format(\"d[days] h [hrs], m [min]\");\n\n let timeText = RwTextUtils.formatDuration(this.timeToDrive);\n\n //return duration.format( \"d[days] h [hrs], m [min]\" );\n //let timeText = this.timeToDrive;\n\n //displayText = `Drive ${distText} in ${timeText}`;\n\n displayText = `drive ${distText} in ${timeText}`;\n }\n return displayText;\n }\n\n get pinId(): string {\n let pinId = this.stopId;\n return pinId;\n }\n\n get isRouted() {\n let isRouted = this.seq > 0 && this.seq <= 240 && this.isActive;\n //console.log(\"isRouted\", this.name, this.seq, this.isActive, isRouted);\n return isRouted;\n }\n\n //#endregion Props\n\n\n //#region Calc Prop Candidates\n\n getSite(): RwSite {\n let foundSite = null;\n if (this.siteId != null) {\n foundSite = theGlobals.findSite(this.siteId);\n }\n return foundSite;\n }\n\n\n get isScheduled(): boolean {\n\n let isScheduled = false;\n let gotInlineSked = this.gotInlineSked();\n if (gotInlineSked) {\n isScheduled = true;\n //console.log(\"RwStop.isScheduled openTime, closeTime\", this.openTime, this.closeTime);\n } else {\n if (this.skedId) {\n let sked = this.globals.findSked(this.skedId);\n if (sked) {\n //Update to inline-sked\n isScheduled = true;\n this.openTime = sked.timeStart / 60000;\n this.closeTime = sked.timeFinish / 60000;\n //console.log(\"RwStop.isScheduled SKED openTime, closeTime\", sked.timeStart, sked.timeFinish, this.openTime, this.closeTime);\n }\n }\n }\n\n //console.log(\"isScheduled\", isScheduled, this.openTime, this.closeTime);\n return isScheduled;\n }\n\n\n get isSited(): boolean {\n let isSited = false;\n //console.log(\"RwStop.isSited\", stop.name, this.siteId);\n if (this.siteId && this.siteId.length > 0) {\n let site = this.globals.sites.find(site => site.siteId === this.siteId);\n if (site) {\n isSited = true;\n } else {\n //This naturally occurs when a favorite is deleted; Just gracefully treat as if there is no siteId\n //RwLog.consoleError(\"RwStop.isStopSited\", `WTF: did not find site by id: ${this.siteId}`);\n }\n }\n return isSited;\n }\n\n getSked(): RwSked {\n let sked: RwSked;\n let skedId = this.skedId;\n if (skedId) {\n sked = this.globals.findSked(skedId);\n }\n\n if (!sked && this.gotInlineSked()) {\n sked = new RwSked();\n sked.priority = this.priority;\n sked.timeStart = this.openTime * 60000;\n sked.timeFinish = this.closeTime * 60000;\n // console.warn(\"RwStop.getSked inline\", this.openTime, this.closeTime, sked.timeStart, sked.timeFinish);\n //console.log(\"RwStop.getSked sked INLINE\", this.name, this.priority, this.openTime, this.closeTime);\n }\n return sked;\n }\n\n getIsAvailable(sked: RwSked): boolean {\n let isAvail = false;\n if (sked) {\n //console.log(\"getIsAvailable\");\n let route = this.plan.activeRoute;\n if (route != null) {\n let start = route.startTime;\n let finish = route.finishTimeAdjDur();\n isAvail = this.isAvailable(sked, start, finish);\n }\n } else {\n let site = this.getSite();\n if (site == null) {\n isAvail = true;\n } else {\n let route = this.plan.activeRoute;\n if (route != null) {\n let startTime = route.startTime;\n let finishTime = route.finishTimeAdjDur();\n isAvail = site.isAvailable(startTime, finishTime);\n }\n }\n\n }\n return isAvail;\n }\n\n\n getDrop(): RwStop {\n let dropStop: RwStop;\n if (this.dropStopId != null) {\n let route = this.plan.activeRoute;\n if (route != null) {\n dropStop = route.findStop(this.dropStopId);\n }\n }\n return dropStop;\n }\n\n getLastCheckIn(): RwHistory {\n let self = this;\n let lastCheck: RwHistory = null;\n\n if (self.checkInCached != null) {\n let now = Date.now();\n if (now - this.checkInCacheTime < 60 * 1000) {\n lastCheck = this.checkInCached;\n } else {\n //expired\n self.checkInCached = null;\n }\n }\n\n if (lastCheck == null) {\n //let driver = RwApp.model.driver;\n let acts = theGlobals.getHistoryForStop(this.stopId);\n if (acts != null && acts.length > 0) {\n acts.forEach(act => {\n if (lastCheck == null) {\n lastCheck = act;\n } else {\n lastCheck = act;\n self.checkInCacheTime = Date.now();\n }\n });\n }\n }\n return lastCheck;\n }\n\n gotInlineSked(): boolean {\n //DEFER: consider if presence of SkedId should be interpreted as non inline\n //return this.openTime && this.openTime !== this.closeTime;\n\n let gotSked = (this.openTime || this.closeTime) && (this.openTime > 0 || this.closeTime > 0);\n if (gotSked) {\n let isValid = this.openTime <= 1440 && this.closeTime <= 1440;\n if (isValid) {\n gotSked = (this.openTime > 0 || this.closeTime > 0);\n } else {\n this.openTime = 0;\n this.closeTime = 0;\n RwLog.warn(\"RwStop.gotInlineSked\", `TIME OOB: openTime:${this.openTime}, closeTime:${this.closeTime}`);\n }\n }\n return gotSked;\n }\n\n\n gotViolations(isAvailable: boolean): boolean {\n let gotVios = false;\n let vios = this.violations;\n if (vios === 0) {\n if (!isAvailable) {\n gotVios = true\n }\n } else {\n gotVios = true;\n }\n return gotVios;\n }\n\n\n getViolations(isAvailable: boolean): number {\n let vios = this.violations;\n if (vios === 0) {\n if (!isAvailable) {\n vios = 4;\n // if (this.isAvailCached) {\n // this.isAvailCached = false;\n // }\n }\n }\n return vios;\n }\n\n //#endregion Calc Prop Candidates\n\n\n copy(newRouteId: string): RwStop {\n let newStop = new RwStop(this.toJSON());\n newStop.routeId = newRouteId;\n newStop.stopId = RwSysUtils.guidNew();\n newStop.isComplete = false;\n newStop.timeOfArr = null;\n newStop.timeOfDep = null;\n newStop.timeToDrive = 0;\n newStop.timeToIdle = 0;\n newStop.distToDrive = 0;\n newStop.histId = null;\n newStop.addOns = newStop.addOns ?? {};\n\n // Check if schedule is one time, remove if true\n if (newStop.skedId) {\n let sched = newStop.getSked();\n if (sched && sched.type === RwSkedTypes.AdHoc) {\n newStop.skedId = null;\n }\n }\n\n return newStop;\n }\n\n fromStop(otherStop: RwStop) {\n\n this.stopId = otherStop.stopId;\n this.routeId = otherStop.routeId;\n this.siteId = otherStop.siteId;\n this.histId = otherStop.histId;\n this.skedId = otherStop.skedId;\n this.name = otherStop.name;\n this.lat = otherStop.lat;\n this.lng = otherStop.lng;\n this.seq = otherStop.seq;\n this.status = otherStop.status;\n this.type = otherStop.type;\n this.visitTime = otherStop.visitTime;\n this.timeOfArr = otherStop.timeOfArr;\n this.timeOfDep = otherStop.timeOfDep;\n this.timeToDrive = otherStop.timeToDrive;\n this.timeToIdle = otherStop.timeToIdle;\n this.distToDrive = otherStop.distToDrive;\n this.violations = otherStop.violations;\n //console.log(\"RwStop.fromStop\", \"isComplete\", this.isComplete, otherStop.isComplete);\n this.isComplete = otherStop.isComplete;\n this.note = otherStop.note;\n this.phone = otherStop.phone;\n this.address = otherStop.address;\n this.dropStopId = otherStop.dropStopId;\n this.drops = otherStop.drops;\n this.email = otherStop.email;\n this.overSvcTime = otherStop.overSvcTime;\n this.checkDate = otherStop.checkDate;\n this.navLat = otherStop.navLat;\n this.navLng = otherStop.navLng;\n this.portType = otherStop.portType;\n this.nameId = otherStop.nameId;\n this.baseColor = otherStop.baseColor;\n this.closeTime = otherStop.closeTime;\n this.openTime = otherStop.openTime;\n this.addOns = {};\n if (otherStop.addOns && Object.keys(otherStop.addOns).length) {\n Object.keys(otherStop.addOns).forEach(key => this.addOns[key] = otherStop.addOns[key]);\n }\n\n this.syncDropProps();\n this.lastHash = Date.now();\n //this.dropCheck(\"clone\");\n }\n\n fromJson(json: JSON) {\n\n\n for (let key in json) {\n switch (key) {\n case \"d\":\n this.markedForDelete = true;\n break;\n case \"sid\":\n this.stopId = json[key];\n break;\n case \"rid\":\n this.routeId = json[key];\n break;\n case \"lid\":\n this.siteId = json[key];\n break;\n case \"aid\":\n this.histId = json[key];\n break;\n case \"prid\":\n this.skedId = json[key];\n break;\n case \"sub\":\n this.name = json[key];\n break;\n case \"lat\":\n this.lat = json[key];\n break;\n case \"lon\":\n this.lng = json[key];\n break;\n case \"seq\":\n this.seq = json[key];\n break;\n case \"sts\":\n this.status = json[key];\n break;\n case \"stt\":\n this.type = json[key];\n break;\n case \"dur\":\n this.visitTime = json[key];\n break;\n case \"toa\":\n this.timeOfArr = new Date(json[key]);\n break;\n case \"tod\":\n this.timeOfDep = new Date(json[key]);\n break;\n case \"t2d\":\n this.timeToDrive = json[key];\n break;\n case \"t2i\":\n this.timeToIdle = json[key];\n break;\n case \"d2d\":\n this.distToDrive = json[key];\n break;\n case \"vio\":\n this.violations = json[key];\n break;\n case \"cmplt\":\n this.isComplete = json[key];\n break;\n case \"note\":\n this.note = json[key];\n break;\n case \"phn\":\n this.phone = json[key];\n break;\n case \"add\":\n this.address = json[key];\n break;\n case \"drp\":\n this.dropStopId = json[key];\n break;\n case \"drops\":\n this.drops = json[key];\n break;\n case \"email\":\n this.email = json[key];\n break;\n case \"ost\":\n this.overSvcTime = json[key];\n break;\n case \"cdate\":\n this.checkDate = new Date(json[key]);\n break;\n case \"pri\":\n this.priority = json[key];\n break;\n case \"navLat\":\n this.navLat = json[key];\n break;\n case \"navLng\":\n this.navLng = json[key];\n break;\n case \"pt\":\n this.portType = json[key];\n break;\n case \"nid\":\n this.nameId = json[key];\n break;\n case \"str\":\n this.openTime = json[key];\n break;\n case \"stc\":\n this.closeTime = json[key];\n break;\n case \"bc\":\n this.baseColor = json[key];\n break;\n case \"addOns\":\n this.addOns = json[key];\n break;\n }\n }\n\n // if(this.openTime > 0 || this.closeTime > 0){\n // console.log(\"Stop.fromJson openTime, closeTime\", this.openTime, this.closeTime)\n // }\n\n\n this.syncDropProps();\n //this.dropCheck(\"fromJSON\");\n }\n\n toJSON(isOptimize: boolean = false, forCheckIn: boolean = false) {\n\n //xFOCUS: toJSON: JSON.stringify(stop);???\n //console.log(\"toJSON called\");\n\n let json = {\n rid: this.routeId,\n sid: this.stopId,\n lat: this.lat,\n lon: this.lng,\n sub: this.name,\n stt: this.type,\n sts: this.status,\n pri: this.priority,\n dur: this.visitTime,\n seq: this.seq,\n t2d: this.timeToDrive,\n t2i: this.timeToIdle,\n d2d: this.distToDrive,\n vio: this.violations,\n cmplt: this.isComplete,\n active: this.isActive,\n bc: this.baseColor\n };\n\n if (isOptimize) {\n let isMagical = this.visitTime === -1;\n // If default\n if (isMagical) {\n // If stop backed by site, try site svc time\n if (this.siteId) {\n let site = this.getSite();\n if (site && site.visitTime !== -1) {\n (json).est = site.visitTime;\n } else {\n (json).est = RwPrefUtils.visitTime;\n }\n } else {\n (json).est = RwPrefUtils.visitTime;\n }\n } else {\n (json).est = this.visitTime;\n }\n }\n\n //add optional values\n if (this.overSvcTime) json[\"ost\"] = this.overSvcTime;\n if (this.timeOfArr) json[\"toa\"] = this.timeOfArr.getTime();\n if (this.timeOfDep) json[\"tod\"] = this.timeOfDep.getTime();\n if (this.checkDate) json[\"cdate\"] = this.checkDate.getTime();\n if (this.email && this.email.length > 0) json[\"email\"] = this.email;\n if (this.siteId && this.siteId.length > 0) json[\"lid\"] = this.siteId;\n if (this.histId && this.histId.length > 0) json[\"aid\"] = this.histId;\n if (this.skedId && this.skedId.length > 0) json[\"prid\"] = this.skedId;\n if (this.dropStopId && this.dropStopId.length > 0) json[\"drp\"] = this.dropStopId;\n if (this.dropStopId && this.dropStopId.length > 0) json[\"drops\"] = this.drops;\n if (this.note && this.note.length > 0 && !forCheckIn) json[\"note\"] = this.note;\n if (this.phone && this.phone.length > 0) json[\"phn\"] = this.phone;\n if (this.address && this.address.length > 0) json[\"add\"] = this.address;\n if (this.addOns && Object.keys(this.addOns).length) json[\"addOns\"] = this.addOns;\n\n if (this.timeWindows != null) {\n let jwindows = [];\n for (let key in this.timeWindows) {\n let tr = this.timeWindows[key];\n let jwindow = tr.toJSON();\n jwindows.push(jwindow);\n //println(\"Restriction: \\(interval.description)\")\n }\n json[\"twr\"] = jwindows;\n\n if (!this.skedId && !this.gotInlineSked() && this.siteId) {\n json[\"pri\"] = 1;\n }\n } else if (this.gotInlineSked() || this.skedId) {\n json[\"pri\"] = this.priority;\n }\n\n this.syncDropProps();\n //this.dropCheck(\"toJSON\");\n\n\n if (json.stt === null) this.type = RwStopTypes.Unappointed;\n\n // RCK: This seem invalid. Not sure we should ever set to \"undefined\" in JSON?\n if (json[\"toa\"] === null) json[\"toa\"] = undefined;\n if (json[\"tod\"] === null) json[\"tod\"] = undefined;\n\n if (this.portType) json[\"pt\"] = this.portType;\n if (this.navLat) json[\"navLat\"] = this.navLat;\n if (this.navLng) json[\"navLng\"] = this.navLng;\n if (this.nameId) json[\"nid\"] = this.nameId;\n if (this.portType) json[\"pt\"] = this.portType;\n if (this.baseColor) json[\"bc\"] = this.baseColor;\n if (this.openTime && this.openTime >= 0) json[\"str\"] = this.openTime;\n if (this.closeTime && this.closeTime >= 0) json[\"stc\"] = this.closeTime;\n\n return json;\n }\n\n isMarkedFirst(route: RwRoute): boolean {\n let isFirst = false;\n let id = route.firstStopId;\n if (id != null) {\n if (this.stopId == id) {\n isFirst = true;\n }\n }\n return isFirst;\n }\n\n isMarkedFinal(route: RwRoute): boolean {\n let isFinal = false;\n let id = route.finalStopId;\n if (id != null) {\n if (this.stopId == id) {\n isFinal = true;\n }\n }\n return isFinal;\n }\n\n\n isAvailable(sked: RwSked, timeStart: Date, timeEnd: Date): boolean {\n let isAvail = true;\n if (sked != null) {\n //console.log(\"sked.name\", sked.name, \"sked.type\", sked.type, sked);\n let wins = this.getTimeWindows(sked, timeStart, timeEnd);\n if (wins != null && wins.length > 0) {\n //console.log(\"windows\", windows);\n isAvail = true;\n } else {\n isAvail = false;\n //console.warn(\"NO Match windows\", windows);\n }\n }\n //console.log(\"isAvail\", isAvail);\n return isAvail;\n }\n\n\n getIsActivePin(isAvailable: boolean, isComplete: boolean, violations: number): boolean {\n let isActive = true;\n if (violations == 8 || isComplete || !isAvailable) {\n isActive = false;\n }\n this.isActive = isActive;\n\n return isActive;\n }\n\n getTimeWindows(sked: RwSked, timeStart: Date, timeFinish: Date): RwTimeWindow[] {\n let windows: RwTimeWindow[] = null;\n if (sked != null) {\n let routeStart = timeStart.getTime();\n let routeFinish = timeFinish.getTime();\n //console.log(\"route start, end\", timeStart, timeFinish);\n //console.log(sked.name, sked.dowSet, sked.type);\n\n let timeWindows = sked.project(timeStart);\n if (timeWindows != null) {\n timeWindows.forEach(win => {\n let winStart = win.start.getTime();\n let winFinish = win.end.getTime();\n //console.log(\"Route.[start, finish], WIN [start, finish]\", routeStart, routeFinish, win.start, win.end);\n\n let isFullyContained = winStart >= routeStart && winFinish <= routeFinish;\n let isLeftClipped = winStart <= routeStart && winFinish >= routeStart;\n let isRightClipped = winStart <= routeFinish && winFinish >= routeFinish;\n\n if (isFullyContained || isLeftClipped || isRightClipped) {\n // if (isFullyContained) console.log(\"isFullyContained\");\n // if (isLeftClipped) console.log(\"isLeftClipped\");\n // if (isRightClipped) console.log(\"isRightClipped\");\n // console.log(\"getTimeWindows HIT\", win.toString());\n // console.log(\"getTimeWindows timeStart\", timeStart, \"timeEnd\", timeEnd);\n if (windows == null) {\n windows = [];\n }\n windows.push(win);\n } else {\n //console.log(\"getTimeWindows MISS\", win.toString());\n }\n });\n }\n } else {\n //console.warn(\"getTimeWindows No TimeWindows\");\n }\n\n return windows;\n }\n\n clearSchedule() {\n this.skedId = undefined;\n this.openTime = 0;\n this.closeTime = 0;\n }\n\n isIntersection(timeStart: Date, timeFinish: Date, openDT: Date, closeDT: Date): boolean {\n // For later sked updates\n let isIntersect = false;\n let openMS = openDT.getTime();\n let closeMS = closeDT.getTime();\n let startMS = timeStart.getTime();\n let finishMS = timeFinish.getTime();\n\n let isFullyContained = openMS >= startMS && closeMS <= finishMS;\n let isLeftClipped = openMS <= startMS && closeMS >= startMS;\n let isRightClipped = openMS <= finishMS && closeMS >= finishMS;\n\n if (isFullyContained || isLeftClipped || isRightClipped) {\n isIntersect = true;\n }\n return isIntersect;\n }\n\n removeSchedule() {\n this.skedId = undefined;\n this.openTime = undefined;\n this.closeTime = undefined;\n }\n\n\n //#region Drops Rework\n\n syncDropProps() {\n let isUnconverted = !this.drops && this.dropStopId;\n if (isUnconverted) {\n this.drops = this.dropStopId;\n }\n }\n\n addDrop(dropId: string) {\n if (!dropId) {\n return;\n }\n\n //Legacy Id\n this.dropStopId = dropId;\n\n //TODO: Uncomment to allow for multiple drops, for now only use single drops to avoid issues\n this.drops = dropId;\n /*if (!this.drops) {\n this.drops = dropId;\n }\n else {\n let dropIds = this.getDropIds();\n if (dropIds && dropIds.length > 0) {\n if (this.containsDrop(dropIds, dropId) === false) {\n var dropString = dropId;\n dropIds.forEach(did => {\n dropString += \";\" + did;\n });\n this.drops = dropString;\n }\n }\n else {\n this.drops = dropId;\n }\n }*/\n const SOURCE = \"RwStop.addDrop\";\n RwTaskStops.updateStop(this)\n .then(deltas => {\n this.globals.mergeDeltas(deltas);\n }).catch(err => {\n if (this.globals.checkNotHandled(err)) {\n RwLog.error(SOURCE, JSON.stringify(err));\n }\n })\n }\n\n removeDrop(dropId: string) {\n if (!dropId) {\n return;\n }\n\n //Legacy Id\n this.dropStopId = null;\n\n this.drops = null;\n //TODO: Uncomment to allow for multiple drops, for now only use single drops to avoid issues\n /* if (this.drops == dropId) {\n this.drops = null;\n }\n else {\n let dropIds = this.getDropIds();\n if (dropIds && dropIds.length > 0) {\n if (this.containsDrop(dropIds, dropId)) {\n var dropString = \"\";\n\n dropIds.forEach(priorDropId => {\n if (priorDropId !== dropId) {\n if (dropString !== \"\") {\n dropString += \";\" + priorDropId;\n }\n else {\n dropString = priorDropId;\n }\n }\n });\n\n this.drops = dropString;\n }\n }\n else {\n this.drops = null;\n }\n }*/\n const SOURCE = \"RwStop.removeDrop\";\n return RwTaskStops.updateStop(this)\n .then(deltas => {\n this.globals.mergeDeltas(deltas);\n })\n .catch(err => {\n if (this.globals.checkNotHandled(err)) {\n RwLog.error(SOURCE, JSON.stringify(err));\n }\n })\n }\n\n containsDrop(dropIds: string[], dropId: string): boolean {\n let isContained = false;\n if (dropIds) {\n dropIds.forEach(did => {\n if (did == dropId) {\n isContained = true;\n }\n });\n }\n return isContained;\n }\n\n clearDrops() {\n this.drops = null;\n this.dropStopId = null;\n }\n\n getDropIds(): string[] {\n let odropStops: string[];\n let drps = this.drops;\n\n if (drps) {\n let trimmedString = drps.replace(\" \", \"\");\n let parts = trimmedString.split(\";\");\n if (parts.length > 0) {\n odropStops = parts;\n }\n }\n\n return odropStops;\n }\n\n getDrops(): RwStop[] {\n let returnDrops: RwStop[] = [];\n let parsed = this.getDropIds();\n if (parsed && parsed.length > 0) {\n let activeRt = this.plan.activeRoute;\n if (activeRt) {\n let dropStops: RwStop[] = new Array();\n\n parsed.forEach(dropId => {\n let dropStop = activeRt.findStop(dropId);\n if (dropStop) {\n dropStops.push(dropStop);\n }\n });\n\n returnDrops = dropStops;\n }\n }\n return returnDrops;\n }\n\n hasDrops(): boolean {\n let hasDrop = false;\n let gottenDrops = this.getDrops();\n if (gottenDrops && gottenDrops.length > 0) {\n hasDrop = true;\n }\n return hasDrop;\n }\n\n dropCheck(source: string) {\n //check that these are in sync\n let dropsText = this.drops;\n let dropStopText = this.dropStopId;\n if (dropsText && dropStopText) {\n let inSync = dropsText.toLowerCase() === dropStopText.toLowerCase();\n if (inSync == false) {\n RwLog.consoleWarn(\n `dropCheck(${source}): OUT OF SYNC, drops:${dropsText}, dropStopId:${dropStopText} `\n );\n }\n }\n }\n\n //#endregion Drops Rework\n\n\n toString() {\n return this.toJSON.toString();\n }\n\n\n}","export class RwStopAddOns {\n podPhoto?: boolean;\n podSig?: boolean;\n podBar?: boolean;\n itemToDeliver?: string;\n addOnsId?: string;\n stopId?: string;\n}\n","import {RwRoute} from \"@/app/dem/RwRoute\";\nimport {SubTeamModel} from \"@/app/dem/Drivers/CreateBulkDriversResponse\";\n\nexport class RwSubTeam {\n imageUrl: string;\n name: string;\n dispatcher: string;\n dispatcherEmail: string;\n domain: string;\n driverCount: number;\n lastUpdated: Date;\n checkins: [];\n routes: RwRoute[];\n userId: string;\n orgId: string;\n accountId: string;\n avInits: string;\n avColor: string;\n avType: number;\n\n static fromSubTeamModel(model: SubTeamModel) {\n const subTeam = new RwSubTeam();\n // console.warn(\"fromSubTeamModel name: \", subTeam.name);\n // console.warn(\"fromSubTeamModel driverCount: \", subTeam.driverCount);\n subTeam.userId = model.UserId;\n subTeam.accountId = model.AccountId;\n subTeam.orgId = model.OrgId;\n subTeam.dispatcherEmail = model.UserName;\n subTeam.dispatcher = model.LoginName;\n subTeam.name = model.AccountName;\n subTeam.driverCount = model.DrvCount;\n subTeam.domain = model.Domain;\n subTeam.lastUpdated = model.LastUpdated;\n subTeam.imageUrl = model.AvatarUrl;\n subTeam.avColor = model.AvColor ? model.AvColor : '#ff5963';\n subTeam.avInits = model.AvInits ?? \"\";\n subTeam.avType = model.AvType ? model.AvType : 0;\n return subTeam;\n }\n\n}\n","import store from \"@/app/RwGlobals\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n\nexport class RwUser {\n\n\n //region Constructors\n\n constructor() {\n if (store.isLoggedIn) {\n this.userId = RwPrefUtils.userId;\n this.userName = RwPrefUtils.userName;\n this.name = RwPrefUtils.dispName;\n this.orgId = RwPrefUtils.orgId;\n this.token = RwPrefUtils.token;\n this.accountId = RwPrefUtils.accountId;\n this.deviceId = RwPrefUtils.deviceId;\n this.installId = RwPrefUtils.installId;\n this.accessType = RwPrefUtils.userAccessType;\n }\n\n this.langCode = navigator.language;\n this.platform = \"flex\";\n this.Model = RwSysUtils.getModel();\n this.sdk = RwSysUtils.getSDK();\n this.tzo = RwSysUtils.getTZO();\n this.lat = 0;\n this.lng = 0;\n const currDate = new Date();\n this.version = RwConstants.flexVersion === \"FLEX_DEBUG\" ?\n `${currDate.getFullYear()}.${(currDate.getMonth() + 1).toString().padStart(2, '0')}.${(currDate.getDay() + 1).toString().padStart(2, '0')}0`\n : RwConstants.flexVersion;\n }\n\n static get DispatcherDriver(): RwUser {\n let dispDriver = new RwUser();\n dispDriver.name = \"Dispatcher\";\n dispDriver.userName = store.userName;\n dispDriver.userId = store.userId;\n return dispDriver;\n }\n\n static fromJsonArray(jsonArray: Object[]) {\n let drivers: RwUser[] = [];\n if (jsonArray != null) {\n jsonArray.forEach(function (jval) {\n let driver = RwUser.fromJson(jval);\n drivers.push(driver);\n });\n }\n return drivers;\n }\n\n static fromJson(json: Object): RwUser {\n let user: RwUser;\n if (json != null) {\n user = new RwUser();\n user.accessType = 0;\n user.fromJson(json)\n }\n return user;\n }\n\n clone(): RwUser {\n //return new RwDriver(this.toJSON());\n return RwUser.fromJson(this.toJSON());\n }\n\n\n //endregion Constructors\n\n\n //region Props\n\n static NoDriverId = RwConstants.EmptyGuid;\n\n userId: string;\n userName: string;\n userPass: string;\n token: string;\n lat: number;\n lng: number;\n langCode: string;\n platform: string;\n userType: number = 0;\n Model: string;\n sdk: string;\n version: string;\n installId: string;\n deviceId: string;\n name: string;\n orgId: string;\n accountId: string;\n tzo: number;\n markedForDelete = false;\n accessType: number = 0;\n email: string;\n lastUpdated: Date;\n created: Date;\n coordLU: Date;\n status: number = 0;\n imageUrl: string;\n loginType: number;\n isSelectedItem: boolean = false;\n avType: number = 0;\n avInits: string;\n avColor: string;\n avUrl: string;\n lastHash: number = 0;\n openIds: string[];\n\n\n get formatDisplayName(): string {\n if (this.name) {\n if (this.name === this.userName) {\n return this.userName;\n } else {\n return `${this.name} (${this.userName})`;\n }\n } else {\n return this.userName;\n }\n }\n\n get formatListName(): string {\n if (this.name && this.name !== \"\") {\n if (this.name === this.userName) {\n return this.userName;\n } else {\n return `${this.name}`;\n }\n } else {\n return this.userName;\n }\n }\n\n get formatAccessType(): string {\n //console.warn ('Format AccessType sees: ', this.accessType);\n let accessText = \"Restricted\";\n switch (this.accessType) {\n //@formatter:off\n case 0:\n accessText = \"Restricted\";\n break;\n case 1:\n accessText = \"Normal\";\n break;\n case 2:\n accessText = \"Elevated\";\n break;\n case 3:\n accessText = \"Dispatcher (Restricted)\";\n break;\n //@formatter:on\n }\n return accessText\n }\n\n get formatLastUpdated(): string {\n return RwDateUtils.formatDate(this.lastUpdated);\n }\n\n //endregion Props\n\n\n toJSON() {\n let json = {};\n\n if (this.lastUpdated) {\n json[\"lu\"] = this.lastUpdated;\n }\n if (this.lat) {\n json[\"lat\"] = this.lat;\n }\n if (this.lng) {\n json[\"lng\"] = this.lng;\n }\n if (this.userType) {\n json[\"utp\"] = this.userType;\n }\n\n json[\"atp\"] = this.accessType ?? 0;\n\n if (this.email) {\n json[\"em\"] = this.email;\n }\n if (this.loginType) {\n json[\"ltp\"] = this.loginType;\n }\n if (this.userId) {\n json[\"uid\"] = this.userId;\n }\n if (this.userName) {\n json[\"un\"] = this.userName;\n }\n if (this.userName) {\n json[\"uname\"] = this.userName;\n }\n if (this.userName) {\n json[\"userName\"] = this.userName;\n }\n if (this.userPass) {\n json[\"upass\"] = this.userPass;\n }\n if (this.langCode) {\n json[\"ap_lang\"] = this.langCode;\n }\n if (this.token) {\n json[\"tkn\"] = this.token;\n }\n if (this.platform) {\n json[\"platform\"] = this.platform;\n }\n if (this.Model) {\n json[\"model\"] = this.Model;\n }\n if (this.sdk) {\n json[\"sdk\"] = this.sdk;\n }\n if (this.deviceId) {\n json[\"device\"] = this.deviceId;\n }\n if (this.installId) {\n json[\"installId\"] = this.installId;\n }\n if (this.name) {\n json[\"nm\"] = this.name;\n }\n if (this.orgId) {\n json[\"oid\"] = this.orgId;\n }\n if (this.accountId) {\n json[\"aid\"] = this.accountId;\n }\n if (this.avType) {\n json[\"avType\"] = this.avType;\n }\n if (this.avUrl) {\n json[\"avUrl\"] = this.avUrl;\n }\n if (this.avColor) {\n json[\"avColor\"] = this.avColor;\n }\n if (this.avInits) {\n json[\"avInits\"] = this.avInits;\n }\n if (this.openIds) {\n json[\"openIds\"] = this.openIds;\n }\n\n //TODO: Re-add once we properly handle ConfirmSwaps on server\n /*if (this.version) {\n json[\"cver\"] = this.version;\n }*/\n\n //if (this.imgSrc) {json[\"imgSrc\"] = this.imgSrc;}\n //json[\"name\"] = this.name;\n\n return json;\n }\n\n\n fromJson(json: Object) {\n const SOURCE = \"RwUser.fromJson\"\n for (let key in json) {\n switch (key) {\n //@formatter:off\n case \"d\":\n this.markedForDelete = true;\n break;\n case \"uid\":\n case \"userId\":\n this.userId = json[key];\n break;\n case \"aid\":\n case \"acctId\":\n this.accountId = json[key];\n break;\n case \"oid\":\n this.orgId = json[key];\n break;\n case \"un\":\n case \"uname\":\n case \"userName\":\n this.userName = json[key];\n break;\n case \"ULU\":\n this.lastUpdated = json[key];\n break;\n case \"nm\":\n case \"name\":\n this.name = json[key];\n break;\n case \"lat\":\n this.lat = json[key];\n break;\n case \"lng\":\n case \"lon\":\n this.lng = json[key];\n break;\n case \"utp\":\n case \"roleType\":\n this.userType = json[key];\n break;\n case \"atp\":\n case \"accessType\":\n this.accessType = json[key];\n break;\n case \"em\":\n this.email = json[key];\n break;\n case \"avUrl\":\n this.imageUrl = json[key];\n break;\n case \"avColor\":\n this.avColor = json[key];\n break;\n case \"avInits\":\n this.avInits = json[key];\n break;\n case \"avType\":\n this.avType = json[key];\n break;\n case \"ltp\":\n case \"loginType\":\n this.loginType = json[key];\n break;\n case \"clu\":\n if (json[key] !== 0) this.coordLU = json[key];\n break;\n case \"cver\":\n this.version = json[key];\n break;\n default:\n //console.warn(`json prop not found: ${key}:${json[key]}`);\n break;\n //@formatter:on\n }\n\n // if(!this.orgId){\n // RwLog.error(SOURCE, `orgId:${this.orgId}, userId:${this.userId}, userName:${this.userName},\n // accessType:${this.accessType}, \\n\\n json:${JSON.stringify(json)}\\n\\n stack:${(new Error()).stack}`)\n // }\n\n //console.log(SOURCE, `name:${this.name}, userName:${this.userName}, accessType:${this.accessType}`)\n }\n\n\n if (!this.orgId) {\n RwLog.error(SOURCE, `orgId:${this.orgId}, userId:${this.userId}, userName:${this.userName}, \n accessType:${this.accessType}, \\n\\n json:${JSON.stringify(json)}\\n\\n stack:${(new Error()).stack}`)\n }\n\n this.lastHash = Date.now();\n }\n\n\n fromDriver(driver: RwUser) {\n this.fromJson(driver.toJSON());\n }\n\n toString() {\n return this.toJSON.toString();\n }\n}\n\nexport class RwCreateDriver {\n userType: number = 1;\n access: number = 1;\n userName: string;\n email: string;\n name: string;\n password: string;\n key: number;\n}\n\n\nexport class RwUserInfoExtra {\n UserId: string;\n Created: Date;\n Updated: Date;\n}\n\n\nexport class RwAvatarInfo {\n userId: string;\n avType: number = 0;\n avInits: string;\n avColor: string;\n avUrl: string;\n\n static fromJson(json: JSON) {\n let avInfo = new RwAvatarInfo();\n for (let key in json) {\n let val = json[key];\n switch (key) {\n //@formatter:off\n case \"uid\":\n avInfo.userId = val;\n break;\n case \"avUrl\":\n avInfo.avUrl = val;\n break;\n case \"avColor\":\n avInfo.avColor = val;\n break;\n case \"avInits\":\n avInfo.avInits = val;\n break;\n case \"avType\":\n avInfo.avType = val;\n break;\n default:\n break;\n //@formatter:on\n }\n }\n\n return avInfo;\n }\n\n}\n\n\n//region Unused\n\n// isDefined(value: T | undefined | null): value is T {\n// return value !== undefined && value !== null;\n// }\n\n// get deletedClass(): string {\n// if (this.status === 1) {\n// return \"deleted\";\n// }\n// return \"\";\n// }\n//\n// get formatStatus(): string {\n// switch (this.status) {\n// case 0:\n// return \"Active\";\n// case 1:\n// return \"Deleted\";\n// default:\n// return \"Unknown\";\n// }\n// }\n\n// get formatAccessType(): string {\n// //console.warn ('Format AccessType sees: ', this.accessType);\n// switch (this.accessType) {\n// case DriverPermissionType.RestrictedDriver:\n// return \"Restricted Driver\";\n//\n// case DriverPermissionType.Driver:\n// return \"Driver\";\n//\n// case DriverPermissionType.ElevatedDriver:\n// return \"Elevated Driver\";\n//\n// case DriverPermissionType.MasterDriver:\n// return \"Master Driver\";\n// }\n// return \"Unknown\";\n// }\n\n\n// get formatCoordLastUpdated(): string {\n// //console.warn(this.coordLU);\n// return RwDateUtils.formatDate(this.coordLU);\n// //return RwDateUtils.formatDateToLocal(this.coordLU);\n// // let utcTime = moment.utc(this.coordLU);\n// // let offset = moment().utcOffset();\n// // let localTime = moment.utc(utcTime).utcOffset(offset);\n// // if (localTime.isSame(moment(), \"d\")) {\n// // return localTime.format(\"LT\");\n// // }\n// // return localTime.format(\"L LT\");\n// }\n//\n//\n\n//\n//\n// get formatLastUpdatedCoord(): string {\n// if (!this.coordLU) {\n// return \"\";\n// }\n// return RwDateUtils.formatDate(this.coordLU);\n// //return RwDateUtils.formatDateToLocal(this.coordLU);\n// // var localTime = moment(this.coordLU);\n// // if (localTime.isSame(moment(), \"d\")) {\n// // return localTime.format(\"LT\");\n// // }\n// // return localTime.format(\"L LT\");\n// }\n\n//endregion Unused\n","import moment from \"moment\";\n\n\nexport class RwTimeEntry {\n text: string;\n value: number;\n}\n\n\nexport class RwDateUtils {\n\n\n static get is12H(): boolean {\n let is12H = moment().format(\"LT\").toUpperCase().indexOf(\"M\") > 0;\n return is12H;\n }\n\n\n static get is24H(): boolean {\n return !RwDateUtils.is12H;\n }\n\n static addHoursToDate(date: Date, hours: number): Date {\n let newDate = new Date();\n newDate.setTime(date.getTime() + hours * 60 * 60 * 1000);\n return newDate;\n }\n\n static addMinutesToDate(date: Date, minutes: number): Date {\n let newDate = new Date();\n newDate.setTime(date.getTime() + minutes * 60 * 1000);\n return newDate;\n }\n\n\n static formatDate(date: Date): string {\n let nowMoment = moment();\n let newMoment = moment(date);\n let isToday = nowMoment.isSame(newMoment, \"day\");\n let dateText = isToday ? newMoment.format(\"LT\") : newMoment.format(\"L LT\");\n return dateText;\n }\n\n static formatMonthDate(date: Date, addYear: boolean = false): string {\n let newMoment = moment(date);\n let dateText = addYear ? newMoment.format(\"MMMM DD, YYYY\") : newMoment.format(\"MMMM DD\");\n return dateText;\n }\n\n static formatDateLog(date: Date): string {\n let nowMoment = moment();\n let newMoment = moment(date);\n let isToday = nowMoment.isSame(newMoment, \"day\");\n let dateText = isToday ? newMoment.format(\"HH:mm:ss\") : newMoment.format(\"MM.DD HH:mm:ss\");\n return dateText;\n }\n\n\n static formatTimeSpan(dateStart: Date, dateFinish: Date): string {\n let now = moment();\n\n let start = moment(dateStart);\n let isStartToday = now.isSame(start, \"day\");\n let textStart = isStartToday ? start.format(\"LT\") : start.format(\"L LT\");\n\n let finish = moment(dateFinish);\n let isSameStartEnd = finish.isSame(start, \"day\");\n let textFinish = isSameStartEnd ? finish.format(\"LT\") : finish.format(\"L LT\");\n\n return textStart + \" to \" + textFinish;\n }\n\n\n static msToString(millisFromMidnight: number): string {\n // required for all combo boxes that use time as well as in sites where the associated schedules time is displayed\n let time = moment().startOf('day').add(millisFromMidnight, 'ms');\n return time.format('LT');\n }\n\n\n static validateTimes(start: number, end: number): number[] {\n end = (86400000 <= end) ? end - 86400000 : end;\n let verifiedStart = (!start) ? 0 : start;\n let verifiedEnd = (!end) ? 0 : end;\n if (verifiedStart == verifiedEnd) {\n verifiedStart = 9 * 3600000;\n verifiedEnd = 17 * 3600000;\n }\n return [verifiedStart, verifiedEnd];\n }\n\n\n static genTimeList(hoursCount: number, startHour: number, minInterval: number, endTimes?: boolean): string[] {\n //endTimes optional boolean displays the time with the duration next to it away from the start time for the end time combo box\n\n let times: string[] = [];\n let start = moment().startOf('day');\n start.add(startHour, \"hours\");\n let countOfTimeList = hoursCount * 60 / minInterval;\n for (let i = 0; i < countOfTimeList; i++) {\n let time = start.clone().add((minInterval * i), \"minutes\");\n let isToday = start.isSame(time, \"day\");\n let timeText = isToday ? time.format('LT') : time.format('LT') + \" tmrw\";\n timeText += (endTimes) ? \" | \" + (i * 0.5).toString() + \" h\" : \"\";\n times.push(timeText);\n }\n return times;\n }\n\n\n}\n\n\nexport default new RwDateUtils();\n\n\n\n\n\n\n","import {RwPin} from \"../dem/RwPin\";\n\n\nexport class RwGeoPoint {\n lat = 0;\n lng = 0;\n\n constructor(lat: number, lng: number) {\n this.lat = lat;\n this.lng = lng;\n }\n}\n\n\nexport class RwGeoUtils {\n\n static getPinsInsidePoly(\n polyPoints: H.geo.Point[],\n pins: RwPin[],\n polyBoundBox: H.geo.Rect): RwPin[] {\n\n var pinsInsideBBox = new Array();\n pins.forEach(p => {\n if (polyBoundBox.containsLatLng(p.lat, p.lng)) {\n pinsInsideBBox.push(p);\n }\n });\n //console.warn(\"pinsInsideBBox\", pinsInsideBBox.length);\n\n var pinsInsidePoly = new Array();\n pinsInsideBBox.forEach(p => {\n var isInside = RwGeoUtils.isPointInPoly(p, polyPoints);\n if (isInside) {\n pinsInsidePoly.push(p);\n }\n });\n //console.warn(\"pinsInsidePoly\", pinsInsidePoly.length);\n\n return pinsInsidePoly;\n }\n\n\n static isPointInPoly(point: RwPin, poly: H.geo.Point[]) {\n // ray-casting algorithm based on\n // http://www.ecse.rpi.edu/Homepages/wrf/Research/Short_Notes/pnpoly.html\n\n var x = point.lng, y = point.lat;\n\n var inside = false;\n for (var i = 0, j = poly.length - 1; i < poly.length; j = i++) {\n var xi = poly[i].lng, yi = poly[i].lat;\n var xj = poly[j].lng, yj = poly[j].lat;\n\n var intersect = ((yi > y) != (yj > y))\n && (x < (xj - xi) * (y - yi) / (yj - yi) + xi);\n if (intersect) inside = !inside;\n }\n\n return inside;\n };\n\n\n}\n","import {RwLog} from \"@/app/dal/RwLog\";\n\n\nexport class RwImgUtils {\n static validatedColorHex(color: string): string {\n let validatedColor: string = undefined;\n //console.log(\"RwColorPicker.onColorPick color\", color);\n\n if (color.length > 9 && color.includes(\"\\\"hex\\\":\")) {\n RwLog.error(\"RwImgUtils.validatedColorHex\", color);\n let colorObject = JSON.parse(color);\n if (colorObject.hex) {\n validatedColor = colorObject.hex;\n }\n }\n\n if (color.length === 9 && color.endsWith(\"FF\")) {\n validatedColor = color.substring(0, 7);\n } else if (color.length === 7) {\n validatedColor = color;\n }\n\n return validatedColor;\n }\n\n static map: { [hexColor: string]: string };\n\n static getHexColorFromPriority(priority: number): string {\n let hue: number = parseFloat((200 - 200 * priority).toString());\n hue = Math.min(hue, 200);\n hue = Math.max(hue, 0);\n let hex = this.rgbFromHSV(hue, 0.75, 0.8);\n return hex;\n }\n\n static getGreyScaleHex(greyScale: number): string {\n let byteVal = Math.round(greyScale * 255);\n let hex = byteVal.toString(16);\n if (hex.length % 2) {\n hex = \"0\" + hex;\n }\n return `#${hex}${hex}${hex}`;\n }\n\n\n static lightenDarkenColor(hexColor: string, amt: number): string {\n let usePound = false;\n if (hexColor[0] == \"#\") {\n hexColor = hexColor.slice(1);\n usePound = true;\n }\n\n let num = parseInt(hexColor, 16);\n let r = (num >> 16) + amt;\n\n if (r > 255) r = 255;\n else if (r < 0) r = 0;\n\n let b = ((num >> 8) & 0x00FF) + amt;\n\n if (b > 255) b = 255;\n else if (b < 0) b = 0;\n\n let g = (num & 0x0000FF) + amt;\n\n if (g > 255) g = 255;\n else if (g < 0) g = 0;\n\n //let hex = (usePound?\"#\":\"\") + (g | (b << 8) | (r << 16)).toString(16)\n //let hex = \"000000\" + (g | (b << 8) | (r << 16)).toString(16); return (usePound?\"#\":\"\") + string.substr(string.length-6);\n\n let rx = r.toString(16).padStart(2, '0');\n let gx = b.toString(16).padStart(2, '0');\n let bx = g.toString(16).padStart(2, '0');\n let hex = (usePound ? \"#\" : \"\") + rx + gx + bx;\n\n //console.log(\"rbg\", hex);\n return hex;\n }\n\n\n static rgbFromHSV(h, s, v) {\n /**\n * I: An array of three elements hue (h) ∈ [0, 360], and saturation (s) and value (v) which are ∈ [0, 1]\n * O: An array of red (r), green (g), blue (b), all ∈ [0, 255]\n * Derived from https://en.wikipedia.org/wiki/HSL_and_HSV\n * This stackexchange was the clearest derivation I found to reimplement https://cs.stackexchange.com/questions/64549/convert-hsv-to-rgb-colors\n */\n\n let hprime = h / 60;\n const c = v * s;\n const x = c * (1 - Math.abs((hprime % 2) - 1));\n const m = v - c;\n let r, g, b;\n if (!hprime) {\n r = 0;\n g = 0;\n b = 0;\n }\n if (hprime >= 0 && hprime < 1) {\n r = c;\n g = x;\n b = 0;\n }\n if (hprime >= 1 && hprime < 2) {\n r = x;\n g = c;\n b = 0;\n }\n if (hprime >= 2 && hprime < 3) {\n r = 0;\n g = c;\n b = x;\n }\n if (hprime >= 3 && hprime < 4) {\n r = 0;\n g = x;\n b = c;\n }\n if (hprime >= 4 && hprime < 5) {\n r = x;\n g = 0;\n b = c;\n }\n if (hprime >= 5 && hprime < 6) {\n r = c;\n g = 0;\n b = x;\n }\n\n r = Math.round((r + m) * 255);\n g = Math.round((g + m) * 255);\n b = Math.round((b + m) * 255);\n\n var hexR = r.toString(16);\n if (hexR.length % 2) {\n hexR = \"0\" + hexR;\n }\n var hexG = g.toString(16);\n if (hexG.length % 2) {\n hexG = \"0\" + hexG;\n }\n var hexB = b.toString(16);\n if (hexB.length % 2) {\n hexB = \"0\" + hexB;\n }\n return `#${hexR}${hexG}${hexB}`;\n }\n\n\n static HSVtoRGB(h, s, v) {\n let r, g, b, i, f, p, q, t;\n if (arguments.length === 1) {\n (s = h.s), (v = h.v), (h = h.h);\n }\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n switch (i % 6) {\n case 0:\n (r = v), (g = t), (b = p);\n break;\n case 1:\n (r = q), (g = v), (b = p);\n break;\n case 2:\n (r = p), (g = v), (b = t);\n break;\n case 3:\n (r = p), (g = q), (b = v);\n break;\n case 4:\n (r = t), (g = p), (b = v);\n break;\n case 5:\n (r = v), (g = p), (b = q);\n break;\n }\n\n var newR = Math.round(r * 255);\n var newG = Math.round(g * 255);\n var newB = Math.round(b * 255);\n\n var hexR = newR.toString(16);\n if (hexR.length % 2) {\n hexR = \"0\" + hexR;\n }\n var hexG = newG.toString(16);\n if (hexG.length % 2) {\n hexG = \"0\" + hexG;\n }\n var hexB = newB.toString(16);\n if (hexB.length % 2) {\n hexB = \"0\" + hexB;\n }\n return `#${hexR}${hexG}${hexB}`;\n }\n\n\n static getNamedColorFromHex(hexColor: string): string {\n if (!hexColor) {\n return null;\n }\n\n if (!RwImgUtils.map) {\n RwImgUtils.map = {};\n RwImgUtils.map[\"#E2004F\"] = \"Red\";\n RwImgUtils.map[\"#ED2B2A\"] = \"Red\";\n RwImgUtils.map[\"#ED2B2E\"] = \"Red\";\n RwImgUtils.map[\"#DE0051\"] = \"Pink\";\n RwImgUtils.map[\"#F012BE\"] = \"Fuschia\";\n RwImgUtils.map[\"#8801A0\"] = \"Purple\";\n RwImgUtils.map[\"#5321A6\"] = \"Deep Purple\";\n\n RwImgUtils.map[\"#303AA5\"] = \"Indigo\";\n RwImgUtils.map[\"#1E81EE\"] = \"Blue\";\n RwImgUtils.map[\"#1497F0\"] = \"Light Blue\";\n RwImgUtils.map[\"#19ADC9\"] = \"Cyan\";\n RwImgUtils.map[\"#118675\"] = \"Teal\";\n\n RwImgUtils.map[\"#40A23F\"] = \"Green\";\n RwImgUtils.map[\"#7AB93B\"] = \"Light Green\";\n RwImgUtils.map[\"#C1D62D\"] = \"Lime\";\n RwImgUtils.map[\"#FDE82F\"] = \"Yellow\";\n RwImgUtils.map[\"#FCB40E\"] = \"Amber\";\n\n RwImgUtils.map[\"#FC8607\"] = \"Orange\";\n RwImgUtils.map[\"#FB3F1B\"] = \"Deep Orange\";\n RwImgUtils.map[\"#654338\"] = \"Brown\";\n RwImgUtils.map[\"#8C8C8C\"] = \"Grey\";\n RwImgUtils.map[\"#4E6A79\"] = \"Blue Grey\";\n RwImgUtils.map[\"#191919\"] = \"Black-ish\";\n }\n\n hexColor = hexColor.toUpperCase();\n\n return RwImgUtils.map[hexColor];\n }\n\n\n static isDark(color): boolean {\n\n let isDark = false;\n\n // Variables for red, green, blue values\n let r, g, b, hsp: number\n\n // Check the format of the color, HEX or RGB?\n if (color.match(/^rgb/)) {\n // If HEX --> store the red, green, blue values in separate variables\n color = color.match(/^rgba?\\((\\d+),\\s*(\\d+),\\s*(\\d+)(?:,\\s*(\\d+(?:\\.\\d+)?))?\\)$/);\n r = color[1];\n g = color[2];\n b = color[3];\n } else {\n // If RGB --> Convert it to HEX: http://gist.github.com/983661\n color = +(\"0x\" + color.slice(1).replace(color.length < 5 && /./g, '$&$&'));\n r = color >> 16;\n g = color >> 8 & 255;\n b = color & 255;\n }\n\n // HSP (Highly Sensitive Poo) equation from http://alienryderflex.com/hsp.html\n hsp = Math.sqrt(0.299 * (r * r) + 0.587 * (g * g) + 0.114 * (b * b));\n\n // Using the HSP value, determine whether the color is light or dark\n //isDark = hsp < 127.5;\n isDark = hsp < 160.5;\n return isDark;\n\n }\n\n\n}\n\n","import Vue from \"vue\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\nexport default class RwDeferredLog {\n static log(source: string, message: string): void {\n Vue.nextTick(() => RwLog.log(source, message));\n }\n\n static warn(source: string, message: string): void {\n Vue.nextTick(() => RwLog.warn(source, message));\n }\n\n static error(source: string, message: string): void {\n Vue.nextTick(() => RwLog.error(source, message));\n }\n}\n","import {\n HistSortOrder,\n ManifestSetSeq,\n RouteSortOrder,\n RwDistUnits,\n RwLogsSortOrder,\n SiteSortOrder,\n SortDirection\n} from \"@/app/RwEnums\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport RwDeferredLog from \"@/app/utils/RwDeferredLog\";\nimport moment from 'moment';\nimport {PODDefaultSettings} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nexport class RwPrefUtils {\n static defaultLat: number = 38.9;\n static defaultLng: number = -77.04;\n\n //#region User Prefs\n\n static get hidePingPopup(): boolean {\n return this.readBool(\"hidePingPopup\", false);\n }\n\n static set hidePingPopup(newVal: boolean) {\n this.writeBool(\"hidePingPopup\", newVal);\n }\n\n static get hideDeletePopup(): boolean {\n return this.readBool(\"hideDeletePopup\", false);\n }\n\n static set hideDeletePopup(newVal: boolean) {\n this.writeBool(\"hideDeletePopup\", newVal);\n }\n\n static get hideCreatePopup(): boolean {\n return this.readBool(\"hideCreatePopup\", false);\n }\n\n static set hideCreatePopup(newVal: boolean) {\n this.writeBool(\"hideCreatePopup\", newVal);\n }\n\n static get hideCCPopup(): boolean {\n return this.readBool(\"hideCCPopup\", false);\n }\n\n static set hideCCPopup(newVal: boolean) {\n this.writeBool(\"hideCCPopup\", newVal);\n }\n\n static get valCCPopup(): number {\n return this.readNumber(\"valCCPopup\", 0);\n }\n\n static set valCCPopup(newVal: number) {\n this.writeNumber(\"valCCPopup\", newVal);\n }\n\n static get warnedCCPopup(): string[] {\n return this.readStringArray(\"warnedCCPopup\", []);\n }\n\n static set warnedCCPopup(newVal: string[]) {\n this.writeStringArray(\"warnedCCPopup\", newVal);\n }\n\n static get warnedCCPopupOverdue(): string[] {\n return this.readStringArray(\"warnedCCPopupOverdue\", []);\n }\n\n static set warnedCCPopupOverdue(newVal: string[]) {\n this.writeStringArray(\"warnedCCPopupOverdue\", newVal);\n }\n\n static get hide450Popup(): boolean {\n return this.readBool(\"hide450Popup\", false);\n }\n\n static set hide450Popup(newVal: boolean) {\n this.writeBool(\"hide450Popup\", newVal);\n }\n\n static get prompt450Popup(): string[] {\n return this.readStringArray(\"prompt450Popup\", []);\n }\n\n static set prompt450Popup(newVal: string[]) {\n newVal = newVal ? newVal : [];\n this.writeStringArray(\"prompt450Popup\", newVal);\n }\n\n static get warned450Popup(): string[] {\n return this.readStringArray(\"warned450Popup\", []);\n }\n\n static set warned450Popup(newVal: string[]) {\n newVal = newVal ? newVal : [];\n this.writeStringArray(\"warned450Popup\", newVal);\n }\n\n static get prompt500Popup(): string[] {\n return this.readStringArray(\"prompt500Popup\", []);\n }\n\n static set prompt500Popup(newVal: string[]) {\n newVal = newVal ? newVal : [];\n this.writeStringArray(\"prompt500Popup\", newVal);\n }\n\n static get hideTasksWarn(): boolean {\n return this.readBool(\"hideTasksWarn\", false);\n }\n\n static set hideTasksWarn(newVal: boolean) {\n this.writeBool(\"hideTasksWarn\", newVal);\n }\n\n static get hideStopStatus(): boolean {\n return this.readBool(\"hideStopStatus\", true);\n }\n\n static set hideStopStatus(newVal: boolean) {\n this.writeBool(\"hideStopStatus\", newVal);\n }\n\n\n // static get showEditDriver(): boolean { return this.readBool(\"showEditDriver\", false); }\n // static set showEditDriver(newVal: boolean) { this.writeBool(\"showEditDriver\", newVal);}\n\n static get showEditAvatar(): boolean {\n return this.readBool(\"showEditAvatar\", false);\n }\n\n static set showEditAvatar(newVal: boolean) {\n this.writeBool(\"showEditAvatar\", newVal);\n }\n\n static get showEditDriverPass(): boolean {\n return this.readBool(\"showEditDriverPass\", false);\n }\n\n static set showEditDriverPass(newVal: boolean) {\n this.writeBool(\"showEditDriverPass\", newVal);\n }\n\n static get showEditDriverUname(): boolean {\n return this.readBool(\"showEditDriverUname\", false);\n }\n\n static set showEditDriverUname(newVal: boolean) {\n this.writeBool(\"showEditDriverUname\", newVal);\n }\n\n static get showEditDefault(): boolean {\n return this.readBool(\"showEditDefault\", false);\n }\n\n static set showEditDefault(newVal: boolean) {\n this.writeBool(\"showEditDefault\", newVal);\n }\n\n static get showStopDefault(): boolean {\n return this.readBool(\"showStopDefault\", false);\n }\n\n static set showStopDefault(newVal: boolean) {\n this.writeBool(\"showStopDefault\", newVal);\n }\n\n static get showTaskDefault(): boolean {\n return this.readBool(\"showTaskDefault\", false);\n }\n\n static set showTaskDefault(newVal: boolean) {\n this.writeBool(\"showTaskDefault\", newVal);\n }\n\n static get showSiteDefault(): boolean {\n return this.readBool(\"showSiteDefault\", false);\n }\n\n static set showSiteDefault(newVal: boolean) {\n this.writeBool(\"showSiteDefault\", newVal);\n }\n\n static get showOptDefault(): boolean {\n return this.readBool(\"showOptDefault\", false);\n }\n\n static set showOptDefault(newVal: boolean) {\n this.writeBool(\"showOptDefault\", newVal);\n }\n\n static get showTravelDefault(): boolean {\n return this.readBool(\"showTravelDefault\", false);\n }\n\n static set showTravelDefault(newVal: boolean) {\n this.writeBool(\"showTravelDefault\", newVal);\n }\n\n static get showOneWayDefault(): boolean {\n return this.readBool(\"showOneWayDefault\", false);\n }\n\n static set showOneWayDefault(newVal: boolean) {\n this.writeBool(\"showOneWayDefault\", newVal);\n }\n\n static get showAvoidsDefault(): boolean {\n return this.readBool(\"showAvoidsDefault\", false);\n }\n\n static set showAvoidsDefault(newVal: boolean) {\n this.writeBool(\"showAvoidsDefault\", newVal);\n }\n\n static get showUnitDefault(): boolean {\n return this.readBool(\"showUnitDefault\", false);\n }\n\n static set showUnitDefault(newVal: boolean) {\n this.writeBool(\"showUnitDefault\", newVal);\n }\n\n static get showSvcTimeDefault(): boolean {\n return this.readBool(\"showSvcTimeDefault\", false);\n }\n\n static set showSvcTimeDefault(newVal: boolean) {\n this.writeBool(\"showSvcTimeDefault\", newVal);\n }\n\n static get showRouteTimeDefault(): boolean {\n return this.readBool(\"showRouteTimeDefault\", false);\n }\n\n static set showRouteTimeDefault(newVal: boolean) {\n this.writeBool(\"showRouteTimeDefault\", newVal);\n }\n\n static get showCenterDefault(): boolean {\n return this.readBool(\"showCenterDefault\", false);\n }\n\n static set showCenterDefault(newVal: boolean) {\n this.writeBool(\"showCenterDefault\", newVal);\n }\n\n static get showStartDefault(): boolean {\n return this.readBool(\"showStartDefault\", false);\n }\n\n static set showStartDefault(newVal: boolean) {\n this.writeBool(\"showStartDefault\", newVal);\n }\n\n static get showReplaceDriver(): boolean {\n return this.readBool(\"showReplaceDriver\", false);\n }\n\n static set showReplaceDriver(newVal: boolean) {\n this.writeBool(\"showReplaceDriver\", newVal);\n }\n\n static get showDeleteDriver(): boolean {\n return this.readBool(\"showDeleteDriver\", false);\n }\n\n static set showDeleteDriver(newVal: boolean) {\n this.writeBool(\"showDeleteDriver\", newVal);\n }\n\n static get showCreateDriver(): boolean {\n return this.readBool(\"showCreateDriver\", false);\n }\n\n static set showCreateDriver(newVal: boolean) {\n this.writeBool(\"showCreateDriver\", newVal);\n }\n\n static get showCreateBulkUser(): boolean {\n return this.readBool(\"showCreateBulkUser\", false);\n }\n\n static set showCreateBulkUser(newVal: boolean) {\n this.writeBool(\"showCreateBulkUser\", newVal);\n }\n\n static get showDomainPopup(): boolean {\n return this.readBool(\"showDomainPopup\", false);\n }\n\n static set showDomainPopup(newVal: boolean) {\n this.writeBool(\"showDomainPopup\", newVal);\n }\n\n static get showPingTest(): boolean {\n return this.readBool(\"showPingTest\", false);\n }\n\n static set showPingTest(newVal: boolean) {\n this.writeBool(\"showPingTest\", newVal);\n }\n\n static get showDeletePrompt(): boolean {\n return this.readBool(\"showDeletePrompt\", false);\n }\n\n static set showDeletePrompt(newVal: boolean) {\n this.writeBool(\"showDeletePrompt\", newVal);\n }\n\n static get showCreatePrompt(): boolean {\n return this.readBool(\"showCreatePrompt\", false);\n }\n\n static set showCreatePrompt(newVal: boolean) {\n this.writeBool(\"showCreatePrompt\", newVal);\n }\n\n static get isLoggedIn(): boolean {\n return this.readBool(\"isLoggedIn\", false);\n }\n\n static set isLoggedIn(newVal: boolean) {\n this.writeBool(\"isLoggedIn\", newVal);\n }\n\n static get stayLoggedIn(): boolean {\n return this.readBool(\"stayLoggedIn\", false);\n }\n\n static set stayLoggedIn(newVal: boolean) {\n this.writeBool(\"stayLoggedIn\", newVal);\n }\n\n static get showSkedEdit(): boolean {\n return this.readBool(\"showSkedEdit\", false);\n }\n\n static set showSkedEdit(newVal: boolean) {\n this.writeBool(\"showSkedEdit\", newVal);\n }\n\n static get showSkedCreate(): boolean {\n return this.readBool(\"showSkedCreate\", false);\n }\n\n static set showSkedCreate(newVal: boolean) {\n this.writeBool(\"showSkedCreate\", newVal);\n }\n\n static get showSkedDelete(): boolean {\n return this.readBool(\"showSkedDelete\", false);\n }\n\n static set showSkedDelete(newVal: boolean) {\n this.writeBool(\"showSkedDelete\", newVal);\n }\n\n static get showOnboardSettings(): boolean {\n return this.readBool(\"showOnboardSettings\", false);\n }\n\n static set showOnboardSettings(newVal: boolean) {\n this.writeBool(\"showOnboardSettings\", newVal);\n }\n\n static get showOnboardAddStopArrow(): boolean {\n return this.readBool(\"showOnboardAddStopArrow\", false);\n }\n\n static set showOnboardAddStopArrow(newVal: boolean) {\n this.writeBool(\"showOnboardAddStopArrow\", newVal);\n }\n\n static get showOnboardUploadsPopup(): boolean {\n return this.readBool(\"showOnboardUploadsPopup\", false);\n }\n\n static set showOnboardUploadsPopup(newVal: boolean) {\n this.writeBool(\"showOnboardUploadsPopup\", newVal);\n }\n\n static get showedPODCallout(): boolean {\n return this.readBool(\"showedPODCallout\", false);\n }\n\n static set showedPODCallout(newVal: boolean) {\n this.writeBool(\"showedPODCallout\", newVal);\n }\n\n static get showProBetaPrimer(): boolean {\n return this.readBool(\"showProBetaPrimer\", false);\n }\n\n static set showProBetaPrimer(newVal: boolean) {\n this.writeBool(\"showProBetaPrimer\", newVal);\n }\n\n static get showProfileEdit(): boolean {\n return this.readBool(\"showProfileEdit\", false);\n }\n\n static set showProfileEdit(newVal: boolean) {\n this.writeBool(\"showProfileEdit\", newVal);\n }\n\n static get showLimitPopup(): boolean {\n return this.readBool(\"showLimitPopup\", false);\n }\n\n static set showLimitPopup(newVal: boolean) {\n this.writeBool(\"showLimitPopup\", newVal);\n }\n\n //\n // static get showUserSiteBanner(): boolean { return this.readBool (\"showUserSiteBanner\",true);}\n // static set showUserSiteBanner(newVal: boolean) { this.writeBool (\"showUserSiteBanner\", newVal);}\n\n static get hasClosedUserSiteBanner(): boolean {\n return this.readBool(\"hasClosedUserSiteBanner\", false);\n }\n\n static set hasClosedUserSiteBanner(newVal: boolean) {\n this.writeBool(\"hasClosedUserSiteBanner\", newVal);\n }\n\n static get lastClosedPaymentBanner(): Date {\n return this.readDate(\"lastClosedPaymentBanner\", new Date(0));\n }\n\n static set lastClosedPaymentBanner(newVal: Date) {\n this.writeDate(\"lastClosedPaymentBanner\", newVal);\n }\n\n\n static get showNewPass(): boolean {\n return this.readBool(\"showNewPass\", false);\n }\n\n static set showNewPass(newVal: boolean) {\n this.writeBool(\"showNewPass\", newVal);\n }\n\n static get showRegistrationType(): boolean {\n return this.readBool(\"showRegistrationType\", false);\n }\n\n static set showRegistrationType(newVal: boolean) {\n this.writeBool(\"showRegistrationType\", newVal);\n }\n\n static get showProToTeam(): boolean {\n return this.readBool(\"showProToTeam\", false);\n }\n\n static set showProToTeam(newVal: boolean) {\n this.writeBool(\"showProToTeam\", newVal);\n }\n\n static get showCCExpire(): boolean {\n return this.readBool(\"showCCExpire\", false);\n }\n\n static set showCCExpire(newVal: boolean) {\n this.writeBool(\"showCCExpire\", newVal);\n }\n\n static get token(): string {\n return this.readString(\"token\", null);\n }\n\n static set token(newVal: string) {\n this.writeString(\"token\", newVal);\n }\n\n // static get tokenDOB(): Date { return this.readDate(\"tokenDOB\", new Date(0)); }\n // static set tokenDOB(newVal: Date) { this.writeDate(\"tokenDOB\", newVal);}\n\n static get deviceId(): string {\n return this.readString(\"deviceId\", null);\n }\n\n static set deviceId(newVal: string) {\n this.writeString(\"deviceId\", newVal);\n }\n\n static get accountId(): string {\n return this.readString(\"accountId\", null);\n }\n\n static set accountId(newVal: string) {\n this.writeString(\"accountId\", newVal);\n }\n\n static get orgId(): string {\n return this.readString(\"orgId\", null);\n }\n\n static set orgId(newVal: string) {\n this.writeString(\"orgId\", newVal);\n }\n\n static get installId(): string {\n return this.readString(\"installId\", null);\n }\n\n static set installId(newVal: string) {\n this.writeString(\"installId\", newVal);\n }\n\n static get userId(): string {\n return this.readString(\"userId\", null);\n }\n\n static set userId(newVal: string) {\n this.writeString(\"userId\", newVal);\n }\n\n static get dispName(): string {\n return this.readString(\"dispName\", null);\n }\n\n static set dispName(newVal: string) {\n this.writeString(\"dispName\", newVal);\n }\n\n static get userName(): string {\n return this.readString(\"userName\", null);\n }\n\n static set userName(newVal: string) {\n this.writeString(\"userName\", newVal);\n }\n\n static get skuInfosJson(): string {\n return this.readString(\"skuInfosJson\", null);\n }\n\n static set skuInfosJson(newVal: string) {\n this.writeString(\"skuInfosJson\", newVal);\n }\n\n static get lastGoodUserName(): string {\n return this.readString(\"lastGoodUserName\", null);\n }\n\n static set lastGoodUserName(newVal: string) {\n this.writeString(\"lastGoodUserName\", newVal);\n }\n\n static get userPass(): string {\n //console.log(\"GET userPass\", this.readString(\"userPass\", null));\n return this.readString(\"userPass\", null);\n }\n\n static set userPass(newVal: string) {\n // if(!newVal){\n // console.warn(\"SET userPass\", newVal);\n // }\n // else {\n // console.log(\"SET userPass\", newVal);\n // }\n\n this.writeString(\"userPass\", newVal);\n }\n\n static get isSubTeam(): boolean {\n return this.readBool(\"isSubTeam\", false);\n }\n\n static set isSubTeam(newVal: boolean) {\n this.writeBool(\"isSubTeam\", newVal);\n }\n\n static get subDomain(): string {\n return this.readString(\"subDomain\", null);\n }\n\n static set subDomain(newVal: string) {\n this.writeString(\"subDomain\", newVal);\n }\n\n static get userAccessType(): number {\n return this.readNumber(\"userAccessType\", 0);\n }\n\n static set userAccessType(val: number) {\n this.writeNumber(\"userAccessType\", val);\n }\n\n static get lastRouteId(): string {\n return this.readString(\"lrid\", null);\n }\n\n static set lastRouteId(newVal: string) {\n this.writeString(\"lrid\", newVal);\n }\n\n static get lastSync(): Date {\n return this.readDate(\"lastSync\", new Date(0));\n }\n\n static set lastSync(newVal: Date) {\n this.writeDate(\"lastSync\", newVal);\n }\n\n static get lastTokenMS(): number {\n return this.readNumber(\"lastTokenMS\", 0);\n }\n\n static set lastTokenMS(newVal: number) {\n this.writeNumber(\"lastTokenMS\", newVal);\n }\n\n\n static get fdxManifestAuthTime(): Date {\n return this.readDate(\"fdxManifestAuthTime\", new Date(0));\n }\n\n static set fdxManifestAuthTime(newVal: Date) {\n this.writeDate(\"fdxManifestAuthTime\", newVal);\n }\n\n //#region Price Points\n static get ppb(): string {\n return this.readString(\"ppb\", \"\");\n }\n\n static set ppb(newVal: string) {\n this.writeString(\"ppb\", newVal);\n }\n\n static get ppd(): string {\n return this.readString(\"ppd\", \"\");\n }\n\n static set ppd(newVal: string) {\n this.writeString(\"ppd\", newVal);\n }\n\n static get ppt(): string {\n return this.readString(\"ppt\", \"\");\n }\n\n static set ppt(newVal: string) {\n this.writeString(\"ppt\", newVal);\n }\n\n //#endregion\n\n static get avUrl(): string {\n return this.readString(\"avUrl\", null);\n }\n\n static set avUrl(newVal: string) {\n this.writeString(\"avUrl\", newVal);\n }\n\n static get avType(): number {\n return this.readNumber(\"avType\", 1);\n }\n\n static set avType(newVal: number) {\n this.writeNumber(\"avType\", newVal);\n }\n\n static get avInits(): string {\n return this.readString(\"avInits\", null);\n }\n\n static set avInits(newVal: string) {\n this.writeString(\"avInits\", newVal);\n }\n\n static get avColor(): string {\n return this.readString(\"avColor\", '#E2004F');\n }\n\n static set avColor(newVal: string) {\n this.writeString(\"avColor\", newVal);\n }\n\n static get pendingPurch(): boolean {\n return this.readBool(\"pendingPurch\", false);\n }\n\n static set pendingPurch(newVal: boolean) {\n this.writeBool(\"pendingPurch\", newVal);\n }\n\n static get pendingPurchTS(): Date {\n return this.readDate(\"pendingPurchTS\", new Date(0));\n }\n\n static set pendingPurchTS(newVal: Date) {\n this.writeDate(\"pendingPurchTS\", newVal);\n }\n\n static get attribData(): string {\n return this.readString(\"attribData\", null);\n }\n\n static set attribData(newVal: string) {\n this.writeString(\"attribData\", newVal);\n }\n\n //#endregion\n\n\n //#region Routes Prefs\n\n static get maxRouteSize(): number {\n return this.readNumber(\"maxRouteSize\", 200);\n }\n\n static set maxRouteSize(val: number) {\n this.writeNumber(\"maxRouteSize\", val);\n }\n\n static get lastUploadType(): number {\n return this.readNumber(\"lastUploadType\", 1);\n }\n\n static set lastUploadType(newVal: number) {\n this.writeNumber(\"lastUploadType\", newVal)\n };\n\n static get uploadErrorRes(): number {\n return this.readNumber(\"uploadResolution\", 1);\n }\n\n static set uploadErrorRes(newVal: number) {\n this.writeNumber(\"uploadResolution\", newVal)\n };\n\n static get showPushMsgTutorial(): boolean {\n return this.readBool(\"showPushMsgTutorial\", true);\n }\n\n static set showPushMsgTutorial(newVal: boolean) {\n this.writeBool(\"showPushMsgTutorial\", newVal);\n }\n\n static get hideDeletedReport(): boolean {\n return this.readBool(\"hideDeletedReport\", true);\n }\n\n static set hideDeletedReport(newVal: boolean) {\n this.writeBool(\"hideDeletedReport\", newVal);\n }\n\n static get hideCompleted(): boolean {\n return this.readBool(\"hideCompleted\", false);\n }\n\n static set hideCompleted(newVal: boolean) {\n this.writeBool(\"hideCompleted\", newVal);\n }\n\n static get siteSort(): number {\n return this.readNumber(\"siteSort\", 0);\n }\n\n static set siteSort(newVal: number) {\n this.writeNumber(\"siteSort\", newVal)\n };\n\n static get driversSort(): number {\n return this.readNumber(\"driversSort\", 0);\n }\n\n static set driversSort(newVal: number) {\n this.writeNumber(\"driversSort\", newVal)\n };\n\n static get logStartDate(): Date {\n return this.readDate(\"logStartDate\", moment().subtract(24, 'hours').toDate());\n }\n\n static set logStartDate(newVal: Date) {\n this.writeDate(\"logStartDate\", newVal);\n }\n\n static get logFinishDate(): Date {\n return this.readDate(\"logFinishDate\", new Date());\n }\n\n static set logFinishDate(newVal: Date) {\n this.writeDate(\"logFinishDate\", newVal);\n }\n\n static get reportStartDate(): Date {\n return this.readDate(\"reportStartDate\", moment().subtract(7, 'days').toDate());\n }\n\n static set reportStartDate(newVal: Date) {\n this.writeDate(\"reportStartDate\", newVal);\n }\n\n static get reportFinishDate(): Date {\n return this.readDate(\"reportFinishDate\", new Date());\n }\n\n static set reportFinishDate(newVal: Date) {\n this.writeDate(\"reportFinishDate\", newVal);\n }\n\n static get reportShowDeleted(): boolean {\n return this.readBool(\"reportShowDeleted\", false);\n }\n\n static set reportShowDeleted(newVal: boolean) {\n this.writeBool(\"reportShowDeleted\", newVal);\n }\n\n static get reportShowArchived(): boolean {\n return this.readBool(\"reportShowArchived\", false);\n }\n\n static set reportShowArchived(newVal: boolean) {\n this.writeBool(\"reportShowArchived\", newVal);\n }\n\n static get routeListSortBy(): number {\n return this.readNumber(\"routeListSortBy\", 0);\n }\n\n static set routeListSortBy(newVal: number) {\n this.writeNumber(\"routeListSortBy\", newVal);\n }\n\n static get routesReportSortBy(): number {\n return this.readNumber(\"routesReportSort\", RouteSortOrder.StartDate);\n }\n\n static set routesReportSortBy(newVal: number) {\n this.writeNumber(\"routesReportSort\", newVal);\n }\n\n static get routeReportSortDir(): number {\n return this.readNumber(\"routeReportSortDir\", SortDirection.Desc);\n }\n\n static set routeReportSortDir(newVal: number) {\n this.writeNumber(\"routeReportSortDir\", newVal);\n }\n\n static get favoritesReportSortBy(): number {\n return this.readNumber(\"favoritesReportSort\", SiteSortOrder.Name);\n }\n\n static set favoritesReportSortBy(newVal: number) {\n this.writeNumber(\"favoritesReportSort\", newVal);\n }\n\n static get favoritesReportSortDir(): number {\n return this.readNumber(\"favoritesReportSortDir\", SortDirection.Desc);\n }\n\n static set favoritesReportSortDir(newVal: number) {\n this.writeNumber(\"favoritesReportSortDir\", newVal);\n }\n\n static get historyReportSortBy(): number {\n return this.readNumber(\"historyReportSort\", HistSortOrder.Date);\n }\n\n static set historyReportSortBy(newVal: number) {\n this.writeNumber(\"historyReportSort\", newVal);\n }\n\n static get historyReportSortDir(): number {\n return this.readNumber(\"historyReportSortDir\", SortDirection.Desc);\n }\n\n static set historyReportSortDir(newVal: number) {\n this.writeNumber(\"historyReportSortDir\", newVal);\n }\n\n static get siteListSortBy(): number {\n return this.readNumber(\"siteListSortBy\", 0);\n }\n\n static set siteListSortBy(newVal: number) {\n this.writeNumber(\"siteListSortBy\", newVal);\n }\n\n static get skedListSortBy(): number {\n return this.readNumber(\"skedListSortBy\", 0);\n }\n\n static set skedListSortBy(newVal: number) {\n this.writeNumber(\"skedListSortBy\", newVal);\n }\n\n static get driverListSortBy(): number {\n return this.readNumber(\"driverListSortBy\", 0);\n }\n\n static set driverListSortBy(newVal: number) {\n this.writeNumber(\"driverListSortBy\", newVal);\n }\n\n static get taskListSortBy(): number {\n return this.readNumber(\"taskListSortBy\", 0);\n }\n\n static set taskListSortBy(newVal: number) {\n this.writeNumber(\"taskListSortBy\", newVal);\n }\n\n static get subTeamListSortBy(): number {\n return this.readNumber(\"subTeamListSortBy\", 0);\n }\n\n static set subTeamListSortBy(newVal: number) {\n this.writeNumber(\"subTeamListSortBy\", newVal);\n }\n\n static get routeListSortDesc(): number {\n return this.readNumber(\"routeListSortDesc\", 0);\n }\n\n static set routeListSortDesc(newVal: number) {\n this.writeNumber(\"routeListSortDesc\", newVal);\n }\n\n static get driverListSortDesc(): number {\n return this.readNumber(\"driverListSortDesc\", 0);\n }\n\n static set driverListSortDesc(newVal: number) {\n this.writeNumber(\"driverListSortDesc\", newVal);\n }\n\n static get siteListSortDesc(): number {\n return this.readNumber(\"siteListSortDesc\", 0);\n }\n\n static set siteListSortDesc(newVal: number) {\n this.writeNumber(\"siteListSortDesc\", newVal);\n }\n\n static get skedListSortDesc(): number {\n return this.readNumber(\"skedListSortDesc\", 0);\n }\n\n static set skedListSortDesc(newVal: number) {\n this.writeNumber(\"skedListSortDesc\", newVal);\n }\n\n static get taskListSortDesc(): number {\n return this.readNumber(\"taskListSortDesc\", 0);\n }\n\n static set taskListSortDesc(newVal: number) {\n this.writeNumber(\"taskListSortDesc\", newVal);\n }\n\n static get subTeamListSortDesc(): number {\n return this.readNumber(\"subTeamListSortDesc\", 0);\n }\n\n static set subTeamListSortDesc(newVal: number) {\n this.writeNumber(\"subTeamListSortDesc\", newVal);\n }\n\n static get skedsSort(): number {\n return this.readNumber(\"skedsSort\", 0);\n }\n\n static set skedsSort(newVal: number) {\n this.writeNumber(\"skedsSort\", newVal)\n };\n\n static get historySort(): number {\n return this.readNumber(\"historySort\", 0);\n }\n\n static set historySort(newVal: number) {\n this.writeNumber(\"historySort\", newVal)\n };\n\n static get distUnits(): RwDistUnits {\n return this.readNumber(\"distUnits\", 1);\n }\n\n static set distUnits(newVal: RwDistUnits) {\n this.writeNumber(\"distUnits\", newVal)\n };\n\n static get routeShiftHours(): RwDistUnits {\n return this.readNumber(\"routeShiftHours\", 12);\n }\n\n static set routeShiftHours(newVal: RwDistUnits) {\n this.writeNumber(\"routeShiftHours\", newVal)\n };\n\n static get hideGetStarted(): boolean {\n return this.readBool(\"hideGetStarted\", true);\n }\n\n static set hideGetStarted(newVal: boolean) {\n this.writeBool(\"hideGetStarted\", newVal);\n }\n\n static get routeStatusSortBy(): string {\n return this.readString(\"routeStatusSortBy\", \"sortStartDate\");\n }\n\n static set routeStatusSortBy(newVal: string) {\n this.writeString(\"routeStatusSortBy\", newVal);\n }\n\n static get routeStatusSortDesc(): boolean {\n return this.readBool(\"routeStatusSortDesc\", true);\n }\n\n static set routeStatusSortDesc(newVal: boolean) {\n this.writeBool(\"routeStatusSortDesc\", newVal);\n }\n\n static get logsSortBy(): number {\n return this.readNumber(\"logsSortBy\", RwLogsSortOrder.Sev);\n }\n\n static set logsSortBy(newVal: number) {\n this.writeNumber(\"logsSortBy\", newVal);\n }\n\n static get logsSortDir(): number {\n return this.readNumber(\"logsSortDir\", SortDirection.Desc);\n }\n\n static set logsSortDir(newVal: number) {\n this.writeNumber(\"logsSortDir\", newVal);\n }\n\n\n //#endregion\n\n //#region Upload\n\n //#region Settings Dialog\n\n static get optimizeType(): RwDistUnits {\n return this.readNumber(\"optimizeType\", 2);\n }\n\n static set optimizeType(newVal: RwDistUnits) {\n this.writeNumber(\"optimizeType\", newVal)\n };\n\n static get travelMode(): string {\n return this.readString(\"travelMode\", \"driving\");\n }\n\n static set travelMode(newVal: string) {\n this.writeString(\"travelMode\", newVal);\n }\n\n static get avoids(): string[] {\n return this.readStringArray(\"avoids\", []);\n }\n\n static set avoids(newVal: string[]) {\n newVal = newVal ? newVal : [];\n this.writeStringArray(\"avoids\", newVal);\n }\n\n static get visitTime(): number {\n return this.readNumber(\"visitTime\", 0);\n }\n\n static set visitTime(newVal: number) {\n this.writeNumber(\"visitTime\", newVal)\n };\n\n static get routeSpan(): number {\n return this.readNumber(\"routeSpan\", 720);\n } //12 hours\n static set routeSpan(newVal: number) {\n this.writeNumber(\"routeSpan\", newVal)\n };\n\n static get isRoundTrip(): boolean {\n return this.readBool(\"isRoundTrip\", false);\n }\n\n static set isRoundTrip(newVal: boolean) {\n this.writeBool(\"isRoundTrip\", newVal);\n }\n\n static get searchWeb(): boolean {\n return this.readBool(\"searchWeb\", true);\n }\n\n static set searchWeb(newVal: boolean) {\n this.writeBool(\"searchWeb\", newVal);\n }\n\n static get searchSites(): boolean {\n return this.readBool(\"searchSites\", true);\n }\n\n static set searchSites(newVal: boolean) {\n this.writeBool(\"searchSites\", newVal);\n }\n\n static get searchTasks(): boolean {\n return this.readBool(\"searchTasks\", true);\n }\n\n static set searchTasks(newVal: boolean) {\n this.writeBool(\"searchTasks\", newVal);\n }\n\n static get searchSetSeq(): boolean {\n return this.readBool(\"searchSetSeq\", false);\n }\n\n static set searchSetSeq(newVal: boolean) {\n this.writeBool(\"searchSetSeq\", newVal);\n }\n\n static get showOnTracUpload(): boolean {\n return this.readBool(\"showOnTracUpload\", false);\n }\n\n static set showOnTracUpload(newVal: boolean) {\n this.writeBool(\"showOnTracUpload\", newVal);\n }\n\n static get showFdxUpload(): boolean {\n return this.readBool(\"showFdxUpload\", false);\n }\n\n static set showFdxUpload(newVal: boolean) {\n this.writeBool(\"showFdxUpload\", newVal);\n }\n\n static get allowExpressOpt(): boolean {\n return this.readBool(\"allowExpressOpt\", false);\n }\n\n static set allowExpressOpt(newVal: boolean) {\n this.writeBool(\"allowExpressOpt\", newVal);\n }\n\n static get skipUploadArea(): boolean {\n return this.readBool(\"skipUploadArea\", false);\n }\n\n static set skipUploadArea(newVal: boolean) {\n this.writeBool(\"skipUploadArea\", newVal);\n }\n\n static get highlightedTemplateThisSession(): boolean {\n return this.readBool(\"highlightedTemplateThisSession\", false);\n }\n\n static set highlightedTemplateThisSession(newVal: boolean) {\n this.writeBool(\"highlightedTemplateThisSession\", newVal);\n }\n\n static get maniSetSeq(): ManifestSetSeq {\n return this.readNumber(\"maniSetSeq\", ManifestSetSeq.None);\n }\n\n static set maniSetSeq(newVal: ManifestSetSeq) {\n this.writeNumber(\"maniSetSeq\", newVal);\n }\n\n static get fdxPromptStatus(): number {\n return this.readNumber(\"fdxPromptStatus\", 0);\n }\n\n static set fdxPromptStatus(newVal: number) {\n this.writeNumber(\"fdxPromptStatus\", newVal)\n };\n\n static get showDriverPanel(): boolean {\n return this.readBool(\"showDriverPanel\", true);\n }\n\n static set showDriverPanel(newVal: boolean) {\n this.writeBool(\"showDriverPanel\", newVal);\n }\n\n static get showPlannerStartup(): boolean {\n return this.readBool(\"showPlannerStartup\", false);\n }\n\n static set showPlannerStartup(newVal: boolean) {\n this.writeBool(\"showPlannerStartup\", newVal);\n }\n\n static get hideIntroUpload(): boolean {\n return this.readBool(\"hideIntroUpload\", false);\n }\n\n static set hideIntroUpload(newVal: boolean) {\n this.writeBool(\"hideIntroUpload\", newVal);\n }\n\n static get downloadReportsLocalTz(): boolean {\n return this.readBool(\"hideIntroUpload\", true);\n }\n\n static set downloadReportsLocalTz(newVal: boolean) {\n this.writeBool(\"hideIntroUpload\", newVal);\n }\n\n static get filterFedExAreas(): boolean {\n return this.readBool(\"filterFedExAreas\", false);\n }\n\n static set filterFedExAreas(newVal: boolean) {\n this.writeBool(\"filterFedExAreas\", newVal);\n }\n\n static get rapidEntry(): boolean {\n return this.readBool(\"rapidEntry\", false);\n }\n\n static set rapidEntry(newVal: boolean) {\n this.writeBool(\"rapidEntry\", newVal);\n }\n\n static get editAfterAdd(): boolean {\n return this.readBool(\"editAfterAdd\", false);\n }\n\n static set editAfterAdd(newVal: boolean) {\n this.writeBool(\"editAfterAdd\", newVal);\n }\n\n static get editFromCopy(): boolean {\n return this.readBool(\"editFromCopy\", false);\n }\n\n static set editFromCopy(newVal: boolean) {\n this.writeBool(\"editFromCopy\", newVal);\n }\n\n static get mapHoverHide(): boolean {\n return this.readBool(\"mapHoverHide\", false);\n }\n\n static set mapHoverHide(newVal: boolean) {\n this.writeBool(\"mapHoverHide\", newVal);\n }\n\n static get confirmOptimizations(): boolean {\n return this.readBool(\"confirmOptimizations\", false);\n }\n\n static set confirmOptimizations(newVal: boolean) {\n this.writeBool(\"confirmOptimizations\", newVal);\n }\n\n static get confirmStopRemoval(): boolean {\n return this.readBool(\"confirmStopRemoval\", true);\n }\n\n static set confirmStopRemoval(newVal: boolean) {\n this.writeBool(\"confirmStopRemoval\", newVal);\n }\n\n static get confirmSearchResult(): boolean {\n return this.readBool(\"confirmSearchResult\", false);\n }\n\n static set confirmSearchResult(newVal: boolean) {\n this.writeBool(\"confirmSearchResult\", newVal);\n }\n\n static get promptCheckins(): boolean {\n return this.readBool(\"promptCheckins\", false);\n }\n\n static set promptCheckins(newVal: boolean) {\n this.writeBool(\"promptCheckins\", newVal);\n }\n\n static get isDynPoint(): boolean {\n return this.readBool(\"isDynPoint\", false);\n }\n\n static set isDynPoint(newVal: boolean) {\n this.writeBool(\"isDynPoint\", newVal);\n }\n\n static get startFriendlyName(): string {\n return this.readString(\"startFriendlyName\", \"\");\n }\n\n static set startFriendlyName(newVal: string) {\n this.writeString(\"startFriendlyName\", newVal);\n }\n\n static get registerEmail(): string {\n return this.readString(\"registerEmail\", \"\");\n }\n\n static set registerEmail(newVal: string) {\n this.writeString(\"registerEmail\", newVal);\n }\n\n static get isHardStart(): boolean {\n return this.readBool(\"isHardStart\", false);\n }\n\n static set isHardStart(newVal: boolean) {\n this.writeBool(\"isHardStart\", newVal);\n }\n\n static get isHardStop(): boolean {\n return this.readBool(\"isHardStop\", false);\n }\n\n static set isHardStop(newVal: boolean) {\n this.writeBool(\"isHardStop\", newVal);\n }\n\n\n //#endregion\n\n\n //#region Planner Settings\n\n static get showPanelMap(): boolean {\n return this.readBool(\"showPanelMap\", true);\n }\n\n static set showPanelMap(newVal: boolean) {\n this.writeBool(\"showPanelMap\", newVal);\n }\n\n static get showPanelList(): boolean {\n return this.readBool(\"showPanelList\", true);\n }\n\n static set showPanelList(newVal: boolean) {\n this.writeBool(\"showPanelList\", newVal);\n }\n\n static get showPinPanel(): boolean {\n return this.readBool(\"showPinPanel\", false);\n }\n\n static set showPinPanel(newVal: boolean) {\n this.writeBool(\"showPinPanel\", newVal);\n }\n\n static get showPanelStatus(): boolean {\n return this.readBool(\"showPanelStatus\", true);\n }\n\n static set showPanelStatus(newVal: boolean) {\n this.writeBool(\"showPanelStatus\", newVal);\n }\n\n // static get showDriverPanel(): boolean { return this.readBool(\"showDriverPanel\", true); }\n // static set showDriverPanel(newVal: boolean) { this.writeBool(\"showDriverPanel\", newVal);}\n\n static get listViewOpen(): boolean {\n return this.readBool(\"listViewOpen\", false);\n }\n\n static set listViewOpen(newVal: boolean) {\n this.writeBool(\"listViewOpen\", newVal);\n }\n\n static get mapShowTraffic(): boolean {\n return this.readBool(\"mapShowTraffic\", false);\n }\n\n static set mapShowTraffic(newVal: boolean) {\n this.writeBool(\"mapShowTraffic\", newVal);\n }\n\n static get mapShowIncidents(): boolean {\n return this.readBool(\"mapShowIncidents\", false);\n }\n\n static set mapShowIncidents(newVal: boolean) {\n this.writeBool(\"mapShowIncidents\", newVal);\n }\n\n static get mapShowNormal(): boolean {\n return this.readBool(\"mapShowNormal\", false);\n }\n\n static set mapShowNormal(newVal: boolean) {\n this.writeBool(\"mapShowNormal\", newVal);\n }\n\n static get mapShowSatellite(): boolean {\n return this.readBool(\"mapShowSatellite\", false);\n }\n\n static set mapShowSatellite(newVal: boolean) {\n this.writeBool(\"mapShowSatellite\", newVal);\n }\n\n static get planMultiModeTool(): number {\n return this.readNumber(\"planMultiModeTool\", 0);\n }\n\n static set planMultiModeTool(newVal: number) {\n this.writeNumber(\"planMultiModeTool\", newVal);\n }\n\n static get planMultiModeDefault(): number {\n return this.readNumber(\"planMultiModeDefault\", 1);\n }\n\n static set planMultiModeDefault(newVal: number) {\n this.writeNumber(\"planMultiModeDefault\", newVal);\n }\n\n static get plannerSortByStops(): string[] {\n return this.readStringArray(\"plannerSortByStops\", [\"baseOrder\"]);\n }\n\n static set plannerSortByStops(newVal: string[]) {\n this.writeStringArray(\"plannerSortByStops\", newVal);\n }\n\n static get plannerSortDescStops(): boolean[] {\n return this.readBoolArray(\"plannerSortDescStops\", false);\n }\n\n static set plannerSortDescStops(newVal: boolean[]) {\n this.writeBoolArray(\"plannerSortDescStops\", newVal);\n }\n\n static get plannerSortBySites(): string[] {\n return this.readStringArray(\"plannerSortBySites\", [\"baseOrder\"]);\n }\n\n static set plannerSortBySites(newVal: string[]) {\n this.writeStringArray(\"plannerSortBySites\", newVal);\n }\n\n static get plannerSortDescSites(): boolean[] {\n return this.readBoolArray(\"plannerSortDescSites\", false);\n }\n\n static set plannerSortDescSites(newVal: boolean[]) {\n this.writeBoolArray(\"plannerSortDescSites\", newVal);\n }\n\n static get plannerSortByTasks(): string[] {\n return this.readStringArray(\"plannerSortByTasks\", [\"baseOrder\"]);\n }\n\n static set plannerSortByTasks(newVal: string[]) {\n this.writeStringArray(\"plannerSortByTasks\", newVal);\n }\n\n static get plannerSortDescTasks(): boolean[] {\n return this.readBoolArray(\"plannerSortDescTasks\", false);\n }\n\n static set plannerSortDescTasks(newVal: boolean[]) {\n this.writeBoolArray(\"plannerSortDescTasks\", newVal);\n }\n\n static get showDataLayerRoute(): boolean {\n return this.readBool(\"showDataLayerRoute\", true);\n }\n\n static set showDataLayerRoute(newVal: boolean) {\n this.writeBool(\"showDataLayerRoute\", newVal);\n }\n\n static get showDataLayerSites(): boolean {\n return this.readBool(\"showDataLayerSites\", true);\n }\n\n static set showDataLayerSites(newVal: boolean) {\n this.writeBool(\"showDataLayerSites\", newVal);\n }\n\n static get showDataLayerTasks(): boolean {\n return this.readBool(\"showDataLayerTasks\", true);\n }\n\n static set showDataLayerTasks(newVal: boolean) {\n this.writeBool(\"showDataLayerTasks\", newVal);\n }\n\n\n static get showStopDock(): boolean {\n return this.readBool(\"showStopDock\", false);\n }\n\n static set showStopDock(newVal: boolean) {\n this.writeBool(\"showStopDock\", newVal);\n }\n\n static get showDriverDock(): boolean {\n return this.readBool(\"showDriverDock\", false);\n }\n\n static set showDriverDock(newVal: boolean) {\n this.writeBool(\"showDriverDock\", newVal);\n }\n\n static get showRouteDock(): boolean {\n return this.readBool(\"showRouteDock\", false);\n }\n\n static set showRouteDock(newVal: boolean) {\n this.writeBool(\"showRouteDock\", newVal);\n }\n\n static get showSiteDock(): boolean {\n return this.readBool(\"showSiteDock\", false);\n }\n\n static set showSiteDock(newVal: boolean) {\n this.writeBool(\"showSiteDock\", newVal);\n }\n\n static get showSkedDock(): boolean {\n return this.readBool(\"showSkedDock\", false);\n }\n\n static set showSkedDock(newVal: boolean) {\n this.writeBool(\"showSkedDock\", newVal);\n }\n\n static get showSubTeamDock(): boolean {\n return this.readBool(\"showSubTeamDock\", false);\n }\n\n static set showSubTeamDock(newVal: boolean) {\n this.writeBool(\"showSubTeamDock\", newVal);\n }\n\n static get subTeamPopupView(): boolean {\n return this.readBool(\"subTeamPopupView\", false);\n }\n\n static set subTeamPopupView(newVal: boolean) {\n this.writeBool(\"subTeamPopupView\", newVal);\n }\n\n\n static get isOpenDrawer(): boolean {\n return this.readBool(\"isOpenDrawer\", true);\n }\n\n static set isOpenDrawer(newVal: boolean) {\n this.writeBool(\"isOpenDrawer\", newVal);\n }\n\n\n //#endregion\n\n\n //#region Filter Settings\n\n static get isStopFiltered(): boolean {\n return this.readBool(\"isStopFiltered\", false);\n }\n\n static set isStopFiltered(newVal: boolean) {\n this.writeBool(\"isStopFiltered\", newVal);\n }\n\n static get isSiteFiltered(): boolean {\n return this.readBool(\"isSiteFiltered\", false);\n }\n\n static set isSiteFiltered(newVal: boolean) {\n this.writeBool(\"isSiteFiltered\", newVal);\n }\n\n static get isTaskFiltered(): boolean {\n return this.readBool(\"isTaskFiltered\", false);\n }\n\n static set isTaskFiltered(newVal: boolean) {\n this.writeBool(\"isTaskFiltered\", newVal);\n }\n\n static get isDriverFiltered(): boolean {\n return this.readBool(\"isDriverFiltered\", false);\n }\n\n static set isDriverFiltered(newVal: boolean) {\n this.writeBool(\"isDriverFiltered\", newVal);\n }\n\n\n static get stopFilterName(): string {\n return this.readString(\"stopFilterName\", \"\");\n }\n\n static set stopFilterName(newVal: string) {\n this.writeString(\"stopFilterName\", newVal);\n }\n\n static get stopFilterAddress(): string {\n return this.readString(\"stopFilterAddress\", \"\");\n }\n\n static set stopFilterAddress(newVal: string) {\n this.writeString(\"stopFilterAddress\", newVal);\n }\n\n static get stopFilterType(): number {\n return this.readNumber(\"stopFilterType\", 0);\n }\n\n static set stopFilterType(newVal: number) {\n this.writeNumber(\"stopFilterType\", newVal)\n };\n\n static get stopFilterDistance(): number {\n return this.readNumber(\"stopFilterDistance\", 0);\n }\n\n static set stopFilterDistance(val: number) {\n this.writeNumber(\"stopFilterDistance\", val)\n };\n\n static get stopFilterHash(): string {\n return this.readString(\"stopFilterHash\", \"\");\n }\n\n static set stopFilterHash(newVal: string) {\n this.writeString(\"stopFilterHash\", newVal);\n }\n\n static get stopFilterHashAll(): boolean {\n return this.readBool(\"stopFilterHashAll\", false);\n }\n\n static set stopFilterHashAll(newVal: boolean) {\n this.writeBool(\"stopFilterHashAll\", newVal);\n }\n\n static get stopFilterColor(): string {\n return this.readString(\"stopFilterColor\", \"\");\n }\n\n static set stopFilterColor(newVal: string) {\n this.writeString(\"stopFilterColor\", newVal);\n }\n\n // static get stopFilterColors(): string[] { return this.readStringArray(\"stopFilterColors\", null); }\n // static set stopFilterColors(newVal: string[] ) { this.writeStringArray(\"stopFilterColors\", newVal);}\n\n static get siteFilterName(): string {\n return this.readString(\"siteFilterName\", \"\");\n }\n\n static set siteFilterName(newVal: string) {\n this.writeString(\"siteFilterName\", newVal);\n }\n\n static get siteFilterAddress(): string {\n return this.readString(\"siteFilterAddress\", \"\");\n }\n\n static set siteFilterAddress(newVal: string) {\n this.writeString(\"siteFilterAddress\", newVal);\n }\n\n static get siteFilterType(): number {\n return this.readNumber(\"siteFilterType\", 0);\n }\n\n static set siteFilterType(newVal: number) {\n this.writeNumber(\"siteFilterType\", newVal)\n };\n\n static get siteFilterDistance(): number {\n return this.readNumber(\"siteFilterDistance\", 0);\n }\n\n static set siteFilterDistance(newVal: number) {\n this.writeNumber(\"siteFilterDistance\", newVal)\n };\n\n static get siteFilterHash(): string {\n return this.readString(\"siteFilterHash\", \"\");\n }\n\n static set siteFilterHash(newVal: string) {\n this.writeString(\"siteFilterHash\", newVal);\n }\n\n static get siteFilterHashAll(): boolean {\n return this.readBool(\"siteFilterHashAll\", false);\n }\n\n static set siteFilterHashAll(newVal: boolean) {\n this.writeBool(\"siteFilterHashAll\", newVal);\n }\n\n static get siteFilterColor(): string {\n return this.readString(\"siteFilterColor\", \"\");\n }\n\n static set siteFilterColor(newVal: string) {\n this.writeString(\"siteFilterColor\", newVal);\n }\n\n // static get siteFilterColors(): string[] { return this.readStringArray(\"siteFilterColors\", null); }\n // static set siteFilterColors(newVal: string[] ) { this.writeStringArray(\"siteFilterColors\", newVal);}\n\n // static get siteFilterCheckType(): number { return this.readNumber(\"siteFilterCheckType\", 0);}\n // static set siteFilterCheckType(newVal: number) { this.writeNumber(\"siteFilterCheckType\", newVal) };\n //\n // static get siteFilterCheckDate(): Date { return this.readDate(\"siteFilterCheckDate\", new Date(0)); }\n // static set siteFilterCheckDate(val: Date) {\n // if(!val) val = new Date(0);\n // this.writeDate(\"siteFilterCheckDate\", val);\n // }\n //\n // static get siteFilterCheckCount(): number { return this.readNumber(\"siteFilterCheckCount\", 0);}\n // static set siteFilterCheckCount(newVal: number) { this.writeNumber(\"siteFilterCheckCount\", newVal) };\n\n static get siteFilterCheckMin(): number {\n return this.readNumber(\"siteFilterCheckMin\", -100);\n }\n\n static set siteFilterCheckMin(newVal: number) {\n this.writeNumber(\"siteFilterCheckMin\", newVal)\n };\n\n static get siteFilterCheckMax(): number {\n return this.readNumber(\"siteFilterCheckMax\", 0);\n }\n\n static set siteFilterCheckMax(newVal: number) {\n this.writeNumber(\"siteFilterCheckMax\", newVal)\n };\n\n static get siteFilterCheckWithin(): boolean {\n return this.readBool(\"siteFilterCheckWithin\", true);\n }\n\n static set siteFilterCheckWithin(newVal: boolean) {\n this.writeBool(\"siteFilterCheckWithin\", newVal);\n }\n\n static get taskFilterName(): string {\n return this.readString(\"taskFilterName\", \"\");\n }\n\n static set taskFilterName(newVal: string) {\n this.writeString(\"taskFilterName\", newVal);\n }\n\n static get taskFilterAddress(): string {\n return this.readString(\"taskFilterAddress\", \"\");\n }\n\n static set taskFilterAddress(newVal: string) {\n this.writeString(\"taskFilterAddress\", newVal);\n }\n\n static get taskFilterDistance(): number {\n return this.readNumber(\"taskFilterDistance\", 0);\n }\n\n static set taskFilterDistance(newVal: number) {\n this.writeNumber(\"taskFilterDistance\", newVal)\n };\n\n static get taskFilterHash(): string {\n return this.readString(\"taskFilterHash\", \"\");\n }\n\n static set taskFilterHash(newVal: string) {\n this.writeString(\"taskFilterHash\", newVal);\n }\n\n static get taskFilterHashAll(): boolean {\n return this.readBool(\"taskFilterHashAll\", false);\n }\n\n static set taskFilterHashAll(newVal: boolean) {\n this.writeBool(\"taskFilterHashAll\", newVal);\n }\n\n static get taskFilterColor(): string {\n return this.readString(\"taskFilterColor\", \"\");\n }\n\n static set taskFilterColor(newVal: string) {\n this.writeString(\"taskFilterColor\", newVal);\n }\n\n // static get taskFilterColors(): string[] { return this.readStringArray(\"taskFilterColors\", null); }\n // static set taskFilterColors(newVal: string[] ) { this.writeStringArray(\"taskFilterColors\", newVal);}\n\n\n static get driverFilterName(): string {\n return this.readString(\"driverFilterName\", \"\");\n }\n\n static set driverFilterName(newVal: string) {\n this.writeString(\"driverFilterName\", newVal);\n }\n\n\n //#endregion\n\n\n //#region ViewPort\n\n static get lastLat(): number {\n return this.readNumber(\"lastLat\", RwPrefUtils.defaultLat);\n }\n\n static set lastLat(newVal: number) {\n this.writeNumber(\"lastLat\", newVal)\n };\n\n static get lastLng(): number {\n return this.readNumber(\"lastLng\", RwPrefUtils.defaultLng);\n }\n\n static set lastLng(newVal: number) {\n this.writeNumber(\"lastLng\", newVal)\n };\n\n static get viewRadius(): number {\n return this.readNumber(\"viewRadius\", 10000);\n }\n\n static set viewRadius(newVal: number) {\n this.writeNumber(\"viewRadius\", newVal)\n };\n\n static get viewWest(): number {\n return this.readNumber(\"viewWest\", 0);\n }\n\n static set viewWest(newVal: number) {\n this.writeNumber(\"viewWest\", newVal)\n };\n\n static get viewSouth(): number {\n return this.readNumber(\"viewSouth\", 0);\n }\n\n static set viewSouth(newVal: number) {\n this.writeNumber(\"viewSouth\", newVal)\n };\n\n static get viewEast(): number {\n return this.readNumber(\"viewEast\", 0);\n }\n\n static set viewEast(newVal: number) {\n this.writeNumber(\"viewEast\", newVal)\n };\n\n static get viewNorth(): number {\n return this.readNumber(\"viewNorth\", 0);\n }\n\n static set viewNorth(newVal: number) {\n this.writeNumber(\"viewNorth\", newVal)\n };\n\n static get viewZoom(): number {\n return this.readNumber(\"viewZoom\", 8);\n }\n\n static set viewZoom(newVal: number) {\n this.writeNumber(\"viewZoom\", newVal)\n };\n\n static get viewCenterLat(): number {\n return this.readNumber(\"viewCenterLat\", RwPrefUtils.defaultLat);\n }\n\n static set viewCenterLat(newVal: number) {\n this.writeNumber(\"viewCenterLat\", newVal)\n };\n\n static get viewCenterLng(): number {\n return this.readNumber(\"viewCenterLng\", RwPrefUtils.defaultLng);\n }\n\n static set viewCenterLng(newVal: number) {\n this.writeNumber(\"viewCenterLng\", newVal)\n };\n\n static get startLat(): number {\n return this.readNumber(\"defaultDynStartLat\", 40.013249);\n }\n\n static set startLat(newVal: number) {\n this.writeNumber(\"defaultDynStartLat\", newVal)\n };\n\n static get startLng(): number {\n return this.readNumber(\"defaultDynStartLng\", -105.287532);\n }\n\n static set startLng(newVal: number) {\n this.writeNumber(\"defaultDynStartLng\", newVal)\n };\n\n static get lastFixedStartLat(): number {\n return this.readNumber(\"lastFixedStartLat\", 40.013249);\n }\n\n static set lastFixedStartLat(newVal: number) {\n this.writeNumber(\"lastFixedStartLat\", newVal)\n };\n\n static get lastFixedStartLng(): number {\n return this.readNumber(\"lastFixedStartLng\", -105.287532);\n }\n\n static set lastFixedStartLng(newVal: number) {\n this.writeNumber(\"lastFixedStartLng\", newVal)\n };\n\n\n // static get defaultFixedStartLat(): number { return this.readNumber(\"defaultDynStartLat\", 40.013249);}\n // static set defaultFixedStartLat(newVal: number) { this.writeNumber(\"defaultDynStartLat\", newVal) };\n //\n // static get defaultFixedStartLng(): number { return this.readNumber(\"defaultFixedStartLng\", -105.287532);}\n // static set defaultFixedStartLng(newVal: number) { this.writeNumber(\"defaultFixedStartLng\", newVal) };\n\n static get stopColor(): string {\n return this.readString(\"stopColor\", RwConstants.DefaultStopColor);\n }\n\n static set stopColor(newVal: string) {\n this.writeString(\"stopColor\", newVal);\n }\n\n static get siteColor(): string {\n return this.readString(\"siteColor\", RwConstants.DefaultSiteColor);\n }\n\n static set siteColor(newVal: string) {\n this.writeString(\"siteColor\", newVal);\n }\n\n static get taskColor(): string {\n return this.readString(\"taskColor\", RwConstants.DefaultTaskColor);\n }\n\n static set taskColor(newVal: string) {\n this.writeString(\"taskColor\", newVal);\n }\n\n static get proofOfDelivery(): PODDefaultSettings {\n return this.readNumber(\"proofOfDelivery\", RwConstants.DefaultProofOfDelivery);\n }\n\n static set proofOfDelivery(newVal: PODDefaultSettings) {\n this.writeNumber(\"proofOfDelivery\", newVal);\n }\n\n static get rwTheme(): string {\n return this.readString(\"rwTheme\", \"rwDark\");\n }\n\n static set rwTheme(newVal: string) {\n this.writeString(\"rwTheme\", newVal);\n }\n\n static get hasActiveSub(): boolean {\n return this.readBool(\"hasActiveSub\", false);\n }\n\n static set hasActiveSub(newVal: boolean) {\n this.writeBool(\"hasActiveSub\", newVal);\n }\n\n static get hasOnboarded(): boolean {\n return this.readBool(\"hasOnboarded\", false);\n }\n\n static set hasOnboarded(newVal: boolean) {\n this.writeBool(\"hasOnboarded\", newVal);\n }\n\n static get updateStartPref(): number {\n return this.readNumber(\"updateStartPref\", 1);\n }\n\n static set updateStartPref(newVal: number) {\n this.writeNumber(\"updateStartPref\", newVal)\n };\n\n static get checkInStyle(): number {\n return this.readNumber(\"checkInStyle\", 0);\n }\n\n static set checkInStyle(newVal: number) {\n this.writeNumber(\"checkInStyle\", newVal)\n };\n\n static get pinnedStatus(): string[] {\n return this.readStringArray(\"pinnedStatus\", []);\n }\n\n static set pinnedStatus(newVal: string[]) {\n this.writeStringArray(\"pinnedStatus\", newVal);\n }\n\n static get defaultCheckInStatus(): number {\n return this.readNumber(\"defaultCheckInStatus\", 10);\n }\n\n static set defaultCheckInStatus(newVal: number) {\n this.writeNumber(\"defaultCheckInStatus\", newVal)\n };\n\n static get hasProBetaPrimed(): boolean {\n return this.readBool(\"hasProBetaPrimed\", false);\n }\n\n static set hasProBetaPrimed(newVal: boolean) {\n this.writeBool(\"hasProBetaPrimed\", newVal);\n }\n\n static get isTeam(): boolean {\n return this.readBool(\"isTeam\", false);\n }\n\n static set isTeam(newVal: boolean) {\n this.writeBool(\"isTeam\", newVal);\n }\n\n static get isAutoRenewing(): boolean {\n return this.readBool(\"isAutoRenewing\", false);\n }\n\n static set isAutoRenewing(newVal: boolean) {\n this.writeBool(\"isAutoRenewing\", newVal);\n }\n\n static get isProMonthly(): boolean {\n return this.readBool(\"isProMonthly\", false);\n }\n\n static set isProMonthly(newVal: boolean) {\n this.writeBool(\"isProMonthly\", newVal);\n }\n\n static get isDisp(): boolean {\n return this.readBool(\"isDisp\", false);\n }\n\n static set isDisp(newVal: boolean) {\n this.writeBool(\"isDisp\", newVal);\n }\n\n static get isFlexSolo(): boolean {\n return this.readBool(\"isFlexSolo\", false);\n }\n\n static set isFlexSolo(newVal: boolean) {\n this.writeBool(\"isFlexSolo\", newVal);\n }\n\n static get flexDisplay(): number {\n return this.readNumber(\"flexDisplay\", 1);\n }\n\n static set flexDisplay(newVal: number) {\n this.writeNumber(\"flexDisplay\", newVal);\n }\n\n static get isSimpleMap(): boolean {\n return this.readBool(\"isSimpleMap\", false);\n }\n\n static set isSimpleMap(newVal: boolean) {\n this.writeBool(\"isSimpleMap\", newVal);\n }\n\n static get showRouteListDetail(): boolean {\n return this.readBool(\"showRouteListDetail\", true);\n }\n\n static set showRouteListDetail(newVal: boolean) {\n this.writeBool(\"showRouteListDetail\", newVal);\n }\n\n static get role(): number {\n return this.readNumber(\"role\", 0);\n }\n\n static set role(newVal: number) {\n this.writeNumber(\"role\", newVal)\n };\n\n\n static get skedPriority(): number {\n return this.readNumber(\"skedPriority\", 5);\n }\n\n static set skedPriority(newVal: number) {\n this.writeNumber(\"skedPriority\", newVal)\n };\n\n static get skedStartMins(): number {\n let start = this.readNumber(\"skedStartMins\", 8 * 60);\n if (start > 1440) {\n RwDeferredLog.error(\"RwPrefUtils.skedStartMins.GET\", `WTF: SUSPECTED millis start:${start}`);\n start = 8 * 60;\n this.skedStartMins = start;\n }\n return start;\n }\n\n static set skedStartMins(newVal: number) {\n if (newVal > 1440) {\n RwDeferredLog.error(\"RwPrefUtils.skedStartMins.SET\", `WTF: SUSPECTED millis: newVal:${newVal}`);\n }\n this.writeNumber(\"skedStartMins\", newVal)\n };\n\n static get skedFinishMins(): number {\n let finish = this.readNumber(\"skedFinishMins\", 17 * 60);\n if (finish > 1440) {\n RwDeferredLog.error(\"RwPrefUtils.skedFinishMins.GET\", `WTF: SUSPECTED finish:${finish}`);\n finish = 17 * 60;\n this.skedFinishMins = finish;\n }\n return finish;\n }\n\n static set skedFinishMins(newVal: number) {\n if (newVal > 1440) {\n RwDeferredLog.error(\"RwPrefUtils.skedFinishMins.SET\", `SUSPECTED millis: newVal:${newVal}`);\n }\n this.writeNumber(\"skedFinishMins\", newVal)\n }\n\n\n //#endregion ViewPort\n\n //#region Reports\n static get reportsCustomPeriod(): number {\n return this.readNumber(\"reportsCustomPeriod\", 0);\n }\n\n static set reportsCustomPeriod(newVal: number) {\n this.writeNumber(\"reportsCustomPeriod\", newVal);\n }\n\n //#endregion Reports\n\n //#region SubTeams\n static get subTeamsListSortBy(): string {\n return this.readString(\"subTeamsListSortBy\", \"sortStartDate\");\n }\n\n static set subTeamsListSortBy(newVal: string) {\n this.writeString(\"subTeamsListSortBy\", newVal);\n }\n\n static get subTeamsListSortDesc(): boolean {\n return this.readBool(\"subTeamsListSortDesc\", true);\n }\n\n static set subTeamsListSortDesc(newVal: boolean) {\n this.writeBool(\"subTeamsListSortDesc\", newVal);\n }\n\n //#endregion SubTeams\n\n static get flexOptInSelected(): number {\n return this.readNumber(\"flexOptInSelected\", 0);\n }\n\n static set flexOptInSelected(newVal: number) {\n this.writeNumber(\"flexOptInSelected\", newVal);\n }\n\n static get lastOptInDisplayed(): boolean {\n return this.readBool(\"lastOptInDisplayed\", false);\n }\n\n static set lastOptInDisplayed(newVal: boolean) {\n this.writeBool(\"lastOptInDisplayed\", newVal);\n }\n\n static get isLegacy(): boolean {\n return this.readBool(\"isLegacy\", false);\n }\n\n static set isLegacy(newVal: boolean) {\n this.writeBool(\"isLegacy\", newVal);\n }\n\n static get isProGo(): boolean {\n return this.readBool(\"isProGo\", false);\n }\n\n static set isProGo(newVal: boolean) {\n this.writeBool(\"isProGo\", newVal);\n }\n\n static get lastDeferredOptIn(): string {\n return this.readString(\"lastDeferredOptIn\", moment().subtract(1441, \"minutes\").format(\"MM-DD-YYYY hh:mm:ss\"));\n }\n\n static set lastDeferredOptIn(newVal: string) {\n this.writeString(\"lastDeferredOptIn\", newVal);\n }\n\n static get displayRoutesLimitDialog(): boolean {\n return this.readBool(\"displayRoutesLimitDialog\", true);\n }\n\n static set displayRoutesLimitDialog(newVal: boolean) {\n this.writeBool(\"displayRoutesLimitDialog\", newVal);\n }\n\n\n static get showConfirmMultiSiteToStop(): string[] {\n return this.readStringArray(\"showConfirmMultiSiteToStop\", []);\n }\n\n static set showConfirmMultiSiteToStop(newVal: string[]) {\n this.writeStringArray(\"showConfirmMultiSiteToStop\", newVal);\n }\n\n static get showStopViolations(): string[] {\n return this.readStringArray(\"showStopViolations\", []);\n }\n\n static set showStopViolations(newVal: string[]) {\n this.writeStringArray(\"showStopViolations\", newVal);\n }\n\n static get openRoutes(): string[] {\n return this.readStringArray(\"openRoutes\", []);\n }\n\n static set openRoutes(newVal: string[]) {\n this.writeStringArray(\"openRoutes\", newVal);\n }\n\n //#region Helper APIs\n\n static readBool(key: string, defaultVal: boolean): boolean {\n let val = defaultVal;\n let stored = window.localStorage.getItem(key);\n if (stored) {\n val = stored === \"true\";\n }\n return val;\n }\n\n static writeBool(key: string, newVal: boolean) {\n window.localStorage.setItem(key, newVal ? \"true\" : \"false\");\n }\n\n\n static readNumber(key: string, def: number): number {\n let value = def;\n let valueString = window.localStorage.getItem(key);\n if (valueString) {\n value = +valueString;\n }\n return value;\n }\n\n static writeNumber(key: string, newVal: number) {\n window.localStorage.setItem(key, newVal.toString());\n }\n\n\n static readString(key: string, def: string): string {\n let value = def;\n let valueString = window.localStorage.getItem(key);\n if (valueString) {\n value = valueString;\n }\n return value;\n }\n\n static writeString(key: string, newVal: string) {\n window.localStorage.setItem(key, newVal);\n }\n\n // static readStringDate(key: string, def:Date, dayBefore: boolean): string {\n // let value = def;\n // if (dayBefore) {\n // value.setDate(value.getDate() - 1);\n // }\n // let date = value.toISOString().substr(0, 10);\n // let valueString = window.localStorage.getItem(key);\n // if (valueString) {\n // date = valueString;\n // }\n // return date;\n // }\n // static writeStringDate(key:string, newVal: string) {\n // window.localStorage.setItem(key, newVal);\n // }\n\n static readDate(key: string, def: Date): Date {\n let value = def;\n let valueString = window.localStorage.getItem(key);\n if (valueString) {\n value = new Date(+valueString);\n }\n return value;\n }\n\n static writeDate(key: string, newVal: Date) {\n window.localStorage.setItem(key, newVal.getTime().toString());\n }\n\n static readStringArray(key: string, def: string[]): string[] {\n let array: string[];\n let arrText = this.readString(key, null);\n if (arrText) {\n array = arrText ? arrText.split(\",\") : [];\n } else {\n if (def) {\n array = def;\n }\n }\n return array;\n }\n\n static writeStringArray(key: string, newVal: string[]) {\n this.writeString(key, newVal.toString());\n }\n\n\n static readBoolArray(key: string, def: boolean): boolean[] {\n let arrBools: boolean[];\n let arrText = this.readString(key, null);\n if (arrText) {\n let arr = arrText ? arrText.split(\",\") : [];\n if (arr.length > 0) {\n arr.forEach(val => {\n let b = (val === \"true\");\n if (!arrBools) {\n arrBools = [];\n }\n arrBools.push(b);\n });\n }\n } else {\n if (def != null) {\n arrBools = [def];\n }\n }\n return arrBools;\n }\n\n static writeBoolArray(key: string, newVal: boolean[]) {\n this.writeString(key, newVal.toString());\n }\n\n\n //#endregion Helper APIs\n\n\n}\n\n// static get showPlannerList(): boolean { return this.readBool(\"showPlannerList\", true); }\n// static set showPlannerList(newVal: boolean) { this.writeBool(\"showPlannerList\", newVal);}\n//\n","import {RwConstants} from \"@/app/RwConstants\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwReportInfo} from \"@/app/dal/RwLog\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\nexport class RwSysUtils {\n\n static IsValueIsDefaultOrEmpty(value: any) {\n return value === 0 || value === \"\" || value === null || value === undefined;\n }\n\n static guidNew() {\n return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function (c) {\n let r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n }\n\n static guidEmpty() {\n return RwConstants.EmptyGuid;\n }\n\n\n static arrayBufferToBase64(buffer): string {\n let binary = \"\";\n let bytes = new Uint8Array(buffer);\n let len = bytes.byteLength;\n for (let i = 0; i < len; i++) {\n binary += String.fromCharCode(bytes[i]);\n }\n return window.btoa(binary);\n }\n\n\n static printStackTrace(): string {\n let err = new Error();\n let stack =\n err.stack || /*IE11*/ (console.trace ? console.trace() : \"no stack info\");\n if (!stack) {\n return \"no stack info\";\n }\n return stack;\n }\n\n static GUID_PATTERN_RICO = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;\n // static GUID_PATTERN_V1 = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i;\n // static GUID_PATTERN_V2 = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-5][0-9a-f]{3}-[089ab][0-9a-f]{3}-[0-9a-f]{12}$/i\n // static GUID_PATTERN_V3 = /^(\\{){0,1}[0-9a-fA-F]{8}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{4}\\-[0-9a-fA-F]{12}(\\}){0,1}$/gi;\n static isGuid(guid: string) {\n return this.GUID_PATTERN_RICO.test(guid);\n }\n\n static isGuidReal(guid: string) {\n return guid && RwSysUtils.isGuid(guid) && guid !== RwConstants.EmptyGuid;\n }\n\n\n static getModel(): string {\n const SOURCE = \"RwSysUtils.getModel\";\n\n let info = RwSysUtils.getDeviceInfo();\n let os = info.os;\n if (os) {\n os = os\n .replace(\"Windows\", \"Win\")\n .replace(\"MacOS\", \"Mac\")\n .replace(\"Unknown OS\", \"\");\n }\n\n let model = `${RwConstants.flexVersion}\\n${info.browser} ${info.version} ${os}`;\n\n // If version over 32 char, truncate and report\n if (model.length > 32) {\n let url = `reports/errors`;\n let report = new RwReportInfo();\n report.source = SOURCE;\n report.sdk = \"flex\";\n report.userId = RwPrefUtils.userId ?? this.guidEmpty();\n report.message = `Version over 32 chars: ${model}`;\n report.severity = 1;\n let payload = JSON.stringify(report.toJSON());\n\n dal.callSansToken\n .post(url, payload, {timeout: RwConstants.NetTimeout})\n .catch();\n\n model = model.substr(0, 32);\n }\n return model;\n }\n\n static getSDK(): string {\n return \"flex\";\n //return `flex ${RwConstants.flexVersion}`;\n }\n\n static getTZO(): number {\n let now = new Date();\n let tzo = now.getTimezoneOffset();\n //RwLog.logConsole(\"tzo\", tzo);\n return tzo;\n }\n\n static getDeviceInfo() {\n let info = {\n os: \"\",\n browser: \"\",\n version: \"\"\n };\n\n let nVer = navigator.appVersion;\n let nAgt = navigator.userAgent;\n let browserName = navigator.appName;\n let fullVersion = \"\" + parseFloat(navigator.appVersion);\n let majorVersion = parseInt(navigator.appVersion, 10);\n let nameOffset, verOffset, ix;\n\n // In Opera, the true version is after \"Opera\" or after \"Version\"\n if ((verOffset = nAgt.indexOf(\"Opera\")) != -1) {\n browserName = \"Opera\";\n fullVersion = nAgt.substring(verOffset + 6);\n if ((verOffset = nAgt.indexOf(\"Version\")) != -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In MSIE, the true version is after \"MSIE\" in userAgent\n else if ((verOffset = nAgt.indexOf(\"MSIE\")) != -1) {\n browserName = \"Microsoft Internet Explorer\";\n fullVersion = nAgt.substring(verOffset + 5);\n }\n // In Chrome, the true version is after \"Chrome\"\n else if ((verOffset = nAgt.indexOf(\"Chrome\")) != -1) {\n browserName = \"Chrome\";\n fullVersion = nAgt.substring(verOffset + 7);\n }\n // In Safari, the true version is after \"Safari\" or after \"Version\"\n else if ((verOffset = nAgt.indexOf(\"Safari\")) != -1) {\n browserName = \"Safari\";\n fullVersion = nAgt.substring(verOffset + 7);\n if ((verOffset = nAgt.indexOf(\"Version\")) != -1)\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In Firefox, the true version is after \"Firefox\"\n else if ((verOffset = nAgt.indexOf(\"Firefox\")) != -1) {\n browserName = \"Firefox\";\n fullVersion = nAgt.substring(verOffset + 8);\n }\n // In most other browsers, \"name/version\" is at the end of userAgent\n else if (\n (nameOffset = nAgt.lastIndexOf(\" \") + 1) <\n (verOffset = nAgt.lastIndexOf(\"/\"))\n ) {\n browserName = nAgt.substring(nameOffset, verOffset);\n fullVersion = nAgt.substring(verOffset + 1);\n if (browserName.toLowerCase() == browserName.toUpperCase()) {\n browserName = navigator.appName;\n }\n }\n // trim the fullVersion string at semicolon/space if present\n if ((ix = fullVersion.indexOf(\";\")) != -1)\n fullVersion = fullVersion.substring(0, ix);\n if ((ix = fullVersion.indexOf(\" \")) != -1)\n fullVersion = fullVersion.substring(0, ix);\n\n majorVersion = parseInt(\"\" + fullVersion, 10);\n if (isNaN(majorVersion)) {\n fullVersion = \"\" + parseFloat(navigator.appVersion);\n majorVersion = parseInt(navigator.appVersion, 10);\n }\n\n let OSName = \"Unknown OS\";\n if (navigator.appVersion.indexOf(\"Win\") != -1) OSName = \"Windows\";\n if (navigator.appVersion.indexOf(\"Mac\") != -1) OSName = \"MacOS\";\n if (navigator.appVersion.indexOf(\"X11\") != -1) OSName = \"UNIX\";\n if (navigator.appVersion.indexOf(\"Linux\") != -1) OSName = \"Linux\";\n\n info.browser = browserName;\n info.version = majorVersion.toString();\n info.os = OSName;\n\n return info;\n\n }\n\n\n static isLooseDeltaText(s1: string, s2: string) {\n //Treat undefined same as empty string\n let text1 = s1 == undefined ? \"\" : s1;\n let text2 = s2 == undefined ? \"\" : s2;\n let isDelta = text1 != text2;\n return isDelta;\n }\n\n\n static isLooseDeltaNum(n1: number, n2: number) {\n //Treat undefined same as empty string\n let num1 = n1 == undefined ? 0 : n1;\n let num2 = n2 == undefined ? 0 : n2;\n let isDelta = num1 != num2;\n return isDelta;\n }\n\n\n}\n","import moment from \"moment\";\n\nexport class RwTextUtils {\n static truncate(\n truncateStr: string,\n n: number,\n useWordBoundary: boolean\n ): string {\n if (truncateStr.length <= n) {\n return truncateStr;\n }\n var subString = truncateStr.substr(0, n - 1);\n return (\n (useWordBoundary\n ? subString.substr(0, subString.lastIndexOf(\" \"))\n : subString) + \"...\"\n );\n }\n\n static regExCoord: RegExp = new RegExp(\n \"^(\\\\-?\\\\d+(\\\\.\\\\d+)?),\\\\s*(\\\\-?\\\\d+(\\\\.\\\\d+)?)$\"\n );\n\n static getTimeStamp(date: Date): string {\n let x = moment(date);\n let ts = x.format();\n //RwLog.logConsole(\"timestamp:\", ts);\n return ts;\n }\n\n static formatCoords(lat: number, lng: number): string {\n if (lat !== 0 && lng !== 0) {\n return `${Math.round(10000 * lat) / 10000}, ${Math.round(10000 * lng) /\n 10000}`;\n }\n return \"\";\n }\n\n static getPartialName(longName: string, charCount: number): string {\n let partName = longName;\n if (longName.length <= charCount) {\n partName = longName;\n } else {\n let rawTokens = longName.split(\",\");\n if (rawTokens.length >= 1) {\n let rawToken = rawTokens[0];\n let token = rawToken.trim();\n if (token.length > 32) {\n partName = token.substr(0, 32);\n } else {\n partName = token;\n }\n }\n }\n return partName;\n }\n\n static isCoordinate(someText: String): boolean {\n let cleanText = someText.replace(\" \", \"\")\n .replace(\"\\t\", \"\");\n let isCoord = RwTextUtils.regExCoord.test(cleanText);\n //RwLog.logConsole(\"isCoord\", cleanText, isCoord);\n return isCoord;\n }\n\n static coordFromText(coordText: String): number[] {\n let coords: number[] = null;\n let cleanText = coordText.replace(\" \", \"\").replace(\"\\t\", \"\");\n let isCoord = RwTextUtils.regExCoord.test(cleanText);\n if (isCoord) {\n let rawTokens = cleanText.split(\",\");\n if (rawTokens.length == 2) {\n let lat = rawTokens[0].trim();\n let lng = rawTokens[1].trim();\n coords = [];\n coords.push(+lat);\n coords.push(+lng);\n }\n }\n return coords;\n }\n\n\n static formatDuration(seconds: number): string {\n\n let durText = \"\";\n let duration = moment.duration(seconds, \"seconds\");\n\n if (duration.days() > 0) {\n durText = `${duration.days()}d ${duration.hours()}h ${duration.minutes().toString()}m`;\n } else if (duration.hours() > 0) {\n durText = `${duration.hours()}h ${duration.minutes().toString()}m`;\n } else if (duration.minutes() > 0) {\n durText = `${duration.minutes().toString()}m`;\n } else {\n durText = `${duration.seconds().toString()}s`;\n }\n\n // if (duration.days() > 0) {\n // durText = `${duration.days()}d ${duration.hours()}:${duration.minutes().toString().padStart(2, '0')}`;\n // }\n // else {\n // durText = `${duration.hours()}:${duration.minutes().toString().padStart(2, '0')}`;\n // }\n return durText;\n }\n\n static round(num: number, places: number): number {\n let factor = Math.pow(10, places);\n return Math.round(num * factor) / factor;\n }\n\n\n static round4(num: number): number {\n return Math.round(num * 10000) / 10000;\n }\n\n\n // static formatDurationFromDuration(duration:moment.Duration):string {\n\n // let durText = \"\";\n // var duration = moment.duration(seconds, \"seconds\");\n\n // if (duration.days() > 0) {\n // durText = `${duration.days()} days ${duration.hours()}:${duration.minutes().toString().padStart(2, '0')}`;\n // }\n // else {\n // durText = `${duration.hours()}:${duration.minutes().toString().padStart(2, '0')}`;\n // }\n // return durText;\n // }\n\n // static scheduledTextMils(startMils:number, finishMils:number): string {\n // let start = moment().startOf('day').add(startMils, \"milliseconds\");\n // let finish = moment().startOf('day').add(finishMils, \"milliseconds\");\n // let startText = start.format(\"LT\");\n // let finishText = (startMils < finishMils) ? finish.format(\"LT\") : finish.format(\"LT\") + \" (next day)\";\n // let text = `${startText} to ${finishText}`;\n // return text;\n // }\n\n\n static scheduledTextMils(startMils: number, finishMils: number): string {\n //console.log(\"scheduledTextMils\", startMils, finishMils);\n return RwTextUtils.scheduledTextMins(startMils / 60000, finishMils / 60000);\n }\n\n static scheduledTextMins(startMins: number, finishMins: number): string {\n //console.log(\"scheduledTextMins\", startMins, finishMins);\n let day = moment().startOf('day')\n let start = day.clone().add(startMins, \"minutes\");\n let finish = day.clone().add(finishMins, \"minutes\");\n let startText = start.format(\"LT\");\n let finishText = (startMins < finishMins) ? finish.format(\"LT\") : finish.format(\"LT\") + \" (next day)\";\n let text = `${startText} to ${finishText}`;\n //console.log(\"scheduledTextMins\", text);\n return text;\n }\n\n}\n","//module utils {\nexport class RwWebUtils {\n static GetHeaders(): Headers {\n var myHeaders = new Headers();\n myHeaders.append(\"Content-Type\", \"application/json\");\n myHeaders.append(\"Accept\", \"application/json\");\n\n //myHeaders.append(\"charset\", \"utf-8\");\n //myHeaders.append(\"platform\", \"Web\");\n\n return myHeaders;\n }\n\n // Returns a function, that, as long as it continues to be invoked, will not\n // be triggered. The function will be called after it stops being called for\n // N milliseconds. If `immediate` is passed, trigger the function on the\n // leading edge, instead of the trailing.\n static debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this,\n args = arguments;\n var later = function () {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n\n\n static encode(parmText: string) {\n let parmEncoded: string = \"\";\n if (parmText) {\n parmEncoded = encodeURIComponent(parmText)\n //let baseEnc = baseColor ? encodeURIComponent(baseColor) : \"\";\n }\n\n return parmEncoded;\n }\n\n\n}\n","import theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport \"vue2-dropzone/dist/vue2Dropzone.min.css\";\nimport { PODDefaultSettings } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nexport class RwSettingSpace {\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n //\n //\n // get avType(): number {return theStore.getters.avInfo.avType;}\n // set avType(val: number) {theStore.dispatch(\"avInfo.avType\", val);}\n //\n // get avColor(): string {return theStore.getters.avInfo.avColor;}\n // set avColor(val: string) {theStore.dispatch(\"avColor\", val);}\n //\n // get avInits(): string {return theStore.getters.avInfo.avInits;}\n // set avInits(val: string) {theStore.dispatch(\"avInits\", val);}\n\n\n get stopColor(): string {\n return theStore.getters.stopColor;\n }\n\n set stopColor(val: string) {\n theStore.dispatch(\"stopColor\", val);\n }\n\n get taskColor(): string {\n return theStore.getters.taskColor;\n }\n\n set taskColor(val: string) {\n theStore.dispatch(\"taskColor\", val);\n }\n\n get siteColor(): string {\n return theStore.getters.siteColor;\n }\n\n set siteColor(val: string) {\n theStore.dispatch(\"siteColor\", val);\n }\n\n get optMode(): number {\n return theStore.getters.optMode;\n }\n\n set optMode(val: number) {\n theStore.dispatch(\"optMode\", val);\n }\n\n get travelMode(): string {\n return theStore.getters.travelMode;\n }\n\n set travelMode(val: string) {\n theStore.dispatch(\"travelMode\", val);\n }\n\n get isRoundTrip(): boolean {\n return theStore.getters.isRoundTrip;\n }\n\n set isRoundTrip(val: boolean) {\n theStore.dispatch(\"isRoundTrip\", val);\n }\n\n get avoids(): string[] {\n return theStore.getters.avoids;\n }\n\n set avoids(val: string[]) {\n theStore.dispatch(\"avoids\", val);\n }\n\n get distUnits(): number {\n return theStore.getters.distUnits;\n }\n\n set distUnits(val: number) {\n theStore.dispatch(\"distUnits\", val);\n }\n\n get visitTime(): number {\n return theStore.getters.visitTime;\n }\n\n set visitTime(val: number) {\n theStore.dispatch(\"visitTime\", val);\n }\n\n get routeTime(): number {\n return theStore.getters.routeTime;\n }\n\n set routeTime(val: number) {\n theStore.dispatch(\"routeTime\", val);\n }\n\n get startLat(): number {\n return theStore.getters.startLat;\n }\n\n set startLat(val: number) {\n theStore.dispatch(\"startLat\", val);\n }\n\n get startLng(): number {\n return theStore.getters.startLng;\n }\n\n set startLng(val: number) {\n theStore.dispatch(\"startLng\", val);\n }\n\n get isDynPoint(): boolean {\n return theStore.getters.isDynPoint;\n }\n\n set isDynPoint(val: boolean) {\n theStore.dispatch(\"isDynPoint\", val);\n }\n\n get startFriendlyName(): string {\n return theStore.getters.startFriendlyName;\n }\n\n set startFriendlyName(val: string) {\n theStore.dispatch(\"startFriendlyName\", val);\n }\n\n get registerEmail(): string {\n return theStore.getters.registerEmail;\n }\n\n set registerEmail(val: string) {\n theStore.dispatch(\"registerEmail\", val);\n }\n\n get proofOfDelivery(): PODDefaultSettings {\n return theStore.getters.proofOfDelivery;\n }\n\n set proofOfDelivery(val: PODDefaultSettings) {\n theStore.dispatch(\"proofOfDelivery\", val);\n }\n\n // get showEditDefault(): boolean{return theStore.getters.showEditDefault;}\n // set showEditDefault(val: boolean){theStore.dispatch(\"showEditDefault\", val);}\n //\n // get showStopDefault(): boolean{return theStore.getters.showStopDefault;}\n // set showStopDefault(val: boolean){theStore.dispatch(\"showStopDefault\", val);}\n //\n // get showTaskDefault(): boolean{return theStore.getters.showTaskDefault;}\n // set showTaskDefault(val: boolean){theStore.dispatch(\"showTaskDefault\", val);}\n //\n // get showSiteDefault(): boolean{return theStore.getters.showSiteDefault;}\n // set showSiteDefault(val: boolean){theStore.dispatch(\"showSiteDefault\", val);}\n //\n // get showOptDefault(): boolean{return theStore.getters.showOptDefault;}\n // set showOptDefault(val: boolean){theStore.dispatch(\"showOptDefault\", val);}\n //\n // get showTravelDefault(): boolean{return theStore.getters.showTravelDefault;}\n // set showTravelDefault(val: boolean){theStore.dispatch(\"showTravelDefault\", val);}\n //\n // get showRoundTripDefault(): boolean{return theStore.getters.showOneWayDefault;}\n // set showRoundTripDefault(val: boolean){theStore.dispatch(\"showOneWayDefault\", val);}\n //\n // get showAvoidsDefault(): boolean{return theStore.getters.showAvoidsDefault;}\n // set showAvoidsDefault(val: boolean){theStore.dispatch(\"showAvoidsDefault\", val);}\n //\n // get showUnitDefault(): boolean{return theStore.getters.showUnitDefault;}\n // set showUnitDefault(val: boolean){theStore.dispatch(\"showUnitDefault\", val);}\n //\n // get showSvcTimeDefault(): boolean{return theStore.getters.showSvcTimeDefault;}\n // set showSvcTimeDefault(val: boolean){theStore.dispatch(\"showSvcTimeDefault\", val);}\n //\n // get showRouteTimeDefault(): boolean{return theStore.getters.showRouteTimeDefault;}\n // set showRouteTimeDefault(val: boolean){theStore.dispatch(\"showRouteTimeDefault\", val);}\n //\n // get showCenterDefault(): boolean{return theStore.getters.showCenterDefault;}\n // set showCenterDefault(val: boolean){theStore.dispatch(\"showCenterDefault\", val);}\n //\n // get showStartDefault(): boolean{return theStore.getters.showStartDefault;}\n // set showStartDefault(val: boolean){theStore.dispatch(\"showStartDefault\", val);}\n}\n\nexport default new RwSettingSpace();","import theStore from \"@/store\"\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RWCPPResult} from \"@/app/views/account/purch/RWCPPResult\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\nexport class RwPurchSpace {\n\n get pricePerBaseCode() {\n return RwPrefUtils.ppb;\n }\n\n set pricePerBaseCode(value: string) {\n RwPrefUtils.ppb = value;\n }\n\n get pricePerDriverCode() {\n return RwPrefUtils.ppd;\n }\n\n set pricePerDriverCode(value: string) {\n RwPrefUtils.ppd = value;\n }\n\n get pricePerTeamCode() {\n return RwPrefUtils.ppt;\n };\n\n set pricePerTeamCode(value: string) {\n RwPrefUtils.ppt = value;\n }\n\n get pricePerBaseAmt() {\n return theStore.getters.pricePerBaseAmt;\n }\n\n set pricePerBaseAmt(val: number) {\n theStore.dispatch(\"pricePerBaseAmt\", val).catch();\n }\n\n get pricePerDriverAmt() {\n return theStore.getters.pricePerDriverAmt;\n }\n\n set pricePerDriverAmt(val: number) {\n theStore.dispatch(\"pricePerDriverAmt\", val).catch();\n }\n\n get pricePerTeamAmt() {\n return theStore.getters.pricePerTeamAmt;\n }\n\n set pricePerTeamAmt(val: number) {\n theStore.dispatch(\"pricePerTeamAmt\", val).catch();\n }\n\n RefreshPricePoints() {\n const SOURCE = \"RefreshPricePoints\";\n return RwTaskBillingProfile.ResolveCPP(this.pricePerBaseCode, this.pricePerDriverCode, this.pricePerTeamCode)\n .then(result => {\n this.pricePerBaseAmt = result.ppb;\n this.pricePerDriverAmt = result.ppd;\n this.pricePerTeamAmt = result.ppt;\n\n const cppData = JSON.stringify({ppb: result.ppb, ppd: result.ppd, ppt: result.ppt});\n const expireDate = new Date()\n expireDate.setTime(expireDate.getTime() + (10 * 365 * 24 * 60 * 60 * 1000)); // expire in 10 years\n document.cookie = `rw_cpp=${cppData};path=/;expires=${expireDate.toUTCString()};domain=roadwarrior.app`;\n\n return result;\n })\n .catch((err) => {\n RwLog.error(SOURCE, \"Error resolving CPP:\" + JSON.stringify(err));\n return {ppb: this.pricePerBaseAmt, ppd: this.pricePerDriverAmt, ppt: this.pricePerTeamAmt};\n })\n\n }\n}\n\nexport default new RwPurchSpace();","import theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport \"vue2-dropzone/dist/vue2Dropzone.min.css\";\nimport {RwTaskPush} from \"@/app/dal/RwTaskPush\";\nimport {AxiosError} from \"axios\";\n\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwPushStatus} from \"@/app/RwEnums\";\n\n\nexport class RwDriverSpace {\n\n DriverComponentPrice = 10;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get selectedDriver(): RwUser {\n return this.globals.selectedDriver;\n }\n\n set selectedDriver(driver: RwUser) {\n theStore.dispatch(\"selectedDriver\", driver);\n }\n\n\n get showEditAvatar(): boolean {\n return theStore.getters.showEditAvatar;\n }\n\n set showEditAvatar(val: boolean) {\n theStore.dispatch(\"showEditAvatar\", val);\n }\n\n get showEditPassword(): boolean {\n return theStore.getters.showEditPassword;\n }\n\n set showEditPassword(val: boolean) {\n theStore.dispatch(\"showEditPassword\", val);\n }\n\n get showReplaceDriver(): boolean {\n return theStore.getters.showReplaceDriver;\n }\n\n set showReplaceDriver(val: boolean) {\n theStore.dispatch(\"showReplaceDriver\", val);\n }\n\n get showDeleteDriver(): boolean {\n return theStore.getters.showDeleteDriver;\n }\n\n set showDeleteDriver(val: boolean) {\n theStore.dispatch(\"showDeleteDriver\", val);\n }\n\n get showCreateDriver(): boolean {\n return theStore.getters.showCreateDriver;\n }\n\n set showCreateDriver(val: boolean) {\n theStore.dispatch(\"showCreateDriver\", val);\n }\n\n get showPingTest(): boolean {\n return theStore.getters.showPingTest;\n }\n\n set showPingTest(val: boolean) {\n theStore.dispatch(\"showPingTest\", val);\n }\n\n get showDeletePrompt(): boolean {\n return theStore.getters.showDeletePrompt;\n }\n\n set showDeletePrompt(val: boolean) {\n theStore.dispatch(\"showDeletePrompt\", val);\n }\n\n get showCreatePrompt(): boolean {\n return theStore.getters.showCreatePrompt;\n }\n\n set showCreatePrompt(val: boolean) {\n theStore.dispatch(\"showCreatePrompt\", val);\n }\n\n\n pingDriver() {\n const self = this;\n const SOURCE = \"RwDriverSpace.pingDriver\";\n\n this.showPingTest = false;\n let driverId = this.globals.selectedDriver.userId;\n\n RwTaskPush.sendPushDriverPing(driverId)\n .then(res => {\n //console.log(SOURCE, \"sendPushDriverPing callback\", res, res.status);\n let statusCode = res.status;\n let driverName = this.globals.selectedDriver.formatDisplayName;\n //console.log(SOURCE, \"sendPushDriverPing driverName\", driverName);\n if (statusCode === 200 && res.data) {\n let json = res.data;\n let code = json.Code;\n let msgId = json.Message;\n self.globals.showSnack(`Notification to ${driverName} was sent.`, \"success\");\n //console.log(SOURCE, code, msgId, driverId);\n setTimeout(() => self.checkPingStatusLoop(msgId, driverId), 5000);\n\n } else if (statusCode === 202) {\n this.globals.showSnack(`${driverName} has no devices registered.`, \"warning\");\n } else {\n this.globals.showSnack(`Notification was not delivered to ${driverName}.`, \"warning\");\n }\n\n })\n .catch(error => {\n if (error.status === 400) {\n let axiosError = error as AxiosError;\n if (axiosError) {\n let response = axiosError.response;\n if (response) {\n this.globals.genericDialog.title = \"Unable to send notification.\";\n this.globals.genericDialog.text = \"We had an issue sending a push notification to your driver. \" +\n \"They may need to refresh their device's push token. This can by done by \" +\n \"opening the side menu of the mobile app, tap Help, then tap 'Refresh Push Notifications'. Then, please try to ping again.\";\n this.globals.genericDialog.icon = \"warning\";\n this.globals.genericDialog.show = true;\n } else if (response.status === 404) {\n this.globals.genericDialog.title = \"Driver has no devices registered to send notification.\";\n this.globals.genericDialog.text = \"Please make sure your driver is currently signed into the mobile app, and has push notifications enabled.\";\n this.globals.genericDialog.icon = \"warning\";\n this.globals.genericDialog.show = true;\n } else {\n this.globals.genericDialog.title = \"Problem sending push notification.\";\n this.globals.genericDialog.text = \"We had an issue sending a push notification to your driver. \" +\n \"Please ensure that your driver has push notifications enabled, and try pinging again in several minutes.\";\n this.globals.genericDialog.icon = \"warning\";\n this.globals.genericDialog.show = true;\n }\n }\n }\n });\n }\n\n\n checkPingStatusLoop(msgId: string, driverId: string) {\n const self = this;\n //console.log(\"checkPingStatusLoop\", msgId, driverId);\n let driverName = this.globals.selectedDriver.formatDisplayName;\n\n let done = false;\n let tryCount = 0;\n let tryLimit = 3;\n (function checkPing() {\n if (!done && tryCount < tryLimit) {\n tryCount++;\n //console.log(\"checkPing\", `try:${tryCount}`);\n\n RwTaskPush.getPushStatus(msgId, driverId)\n .then(res => {\n switch (res) {\n case RwPushStatus.Delivered:\n self.globals.showSnack(`Notification to ${driverName} was delivered.`, \"success\");\n done = true;\n break;\n case RwPushStatus.Opened:\n done = true;\n self.globals.showSnack(`Notification to ${driverName} was opened.`, \"success\");\n break;\n case RwPushStatus.Sent:\n if (tryCount < tryLimit) {\n //Retry for up to 1 minute.\n setTimeout(checkPing, 10 * 1000);\n } else {\n done = true;\n //Do not display message as this is only a false negative.\n //self.globals.showSnack(`Notification to ${driverName} was not delivered.`, \"warning\");\n }\n break;\n case RwPushStatus.Gone:\n self.globals.showSnack(`Notification to ${driverName} was not delivered.`, \"warning\");\n done = true;\n break;\n case RwPushStatus.Error:\n self.globals.showSnack(`Notification to ${driverName} was not delivered.`, \"error\");\n done = true;\n break;\n }\n\n })\n .catch(err => {\n done = true;\n self.globals.showSnack(`Notification to ${driverName} was not delivered.`, \"error\");\n })\n }\n })();\n\n }\n\n\n}\n\nexport default new RwDriverSpace();\n\n","import {RwRoute} from \"@/app/dem/RwRoute\";\n\nexport class RwOptResult {\n\n code: number = 500;\n route: RwRoute;\n json: JSON;\n\n constructor(json?: Object) {\n if (json != null) {\n this.fromJson(json);\n }\n }\n\n\n fromJson(json: Object) {\n for (let key in json) {\n switch (key) {\n // case \"nm\":\n // this.name = json[key];\n // break;\n }\n }\n }\n\n}\n","import {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport store from \"@/app/RwGlobals\"\nimport theGlobals from \"@/app/RwGlobals\"\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwOptResult} from \"@/app/dem/RwOptResult\";\nimport {RwError, RwLoginError} from \"@/app/RwErrors\";\nimport {RwLoginIssues} from \"@/app/RwEnums\";\nimport dal from \"@/app/dal/RwDal\";\n\n\nexport class RwTaskOptimize {\n\n done = false;\n surl = \"\";\n payload = \"\"\n route: RwRoute;\n jobJSON = {};\n jobId: string = RwSysUtils.guidNew();\n\n\n static optAsync(route: RwRoute, actStops: RwStop[]): Promise {\n let optDal = new RwTaskOptimize();\n return optDal.optAsync(route, actStops);\n }\n\n private optAsync(route: RwRoute, actStops: RwStop[]): Promise {\n let self = this;\n const SOURCE = \"RwTaskOptimize.optAsync\";\n self.route = route;\n\n return new Promise(function (resolve, reject) {\n\n let gotValidStart = route.lat && route.lng && route.lat != 0 && route.lng != 0;\n if (gotValidStart) {\n\n self.surl = `${RwConstants.CoreSocketUri}/opt/optimize`;\n self.jobJSON = route.toJsonOpt(self.jobId, actStops);\n self.optHandler(false)\n .then(route => resolve(route))\n .catch(ex => reject(ex))\n } else {\n let stack = RwSysUtils.printStackTrace();\n RwLog.error(SOURCE, `Invalid route start: ${route.lat}, ${route.lng} \\nRouteId:${route.routeId} \\n\\n${stack}`);\n reject(new Error(`Invalid Start`));\n }\n\n });\n }\n\n\n private optHandler(isRetry: boolean): Promise {\n const self = this;\n const SOURCE = \"RwTaskOptimize.optHandler\";\n\n return new Promise(function (resolve, reject) {\n\n dal.getAuthToken()\n .then(function (token: string) {\n\n //HACK: sometimes token == null;\n token = RwPrefUtils.token;\n\n self.jobJSON[\"tkn\"] = token;\n self.payload = JSON.stringify(self.jobJSON);\n\n self.optSocket()\n .then(function (result: RwOptResult) {\n\n let code = result.code;\n //console.log(\"opt response\", code);\n switch (code) {\n\n case 200:\n self.route.fromJsonOpt(result.json);\n store.updateRoute(self.route);\n resolve(self.route);\n //xTEST\n // RwPrefUtils.token = RwConstants.EmptyGuid;\n break;\n\n case 401:\n if (isRetry == false) {\n theGlobals.token = RwConstants.EmptyGuid;\n self.optHandler(true)\n .then(route => resolve(route))\n .catch(ex => reject(ex))\n } else {\n let errSesh = new RwLoginError(code, true, null, RwLoginIssues.SeshExpired)\n self.forceLogout(errSesh);\n reject(errSesh);\n }\n break;\n\n case 403:\n case 406:\n let errSesh = new RwLoginError(code, true, null, RwLoginIssues.SeshExpired)\n self.forceLogout(errSesh);\n reject(errSesh);\n break;\n\n default:\n let errDefault = new RwLoginError(code, true, null, RwLoginIssues.SeshExpired);\n RwLog.consoleError(`Unhandled Code: ${self.surl} -> ${code} \\nToken:${token}\\n${self.payload}`);\n reject(errDefault);\n break;\n\n }\n\n })\n .catch(function (e) {\n if (e) {\n let errText = e.toString();\n if (errText.contains(\"Error opening socket\")) {\n RwLog.warn(SOURCE, `SocketError: ${errText} \\n${self.surl} \\nAuthToken:${token},\\n\\n${self.payload}`);\n } else {\n RwLog.error(SOURCE, `Unhandled:${errText} \\n${self.surl} \\nAuthToken:${token} \\n\\n${self.payload}`);\n }\n } else {\n RwLog.error(SOURCE, `Unhandled:Missing Error \\n${self.surl} \\nAuthToken:${token} \\n\\n${self.payload}`);\n }\n\n reject(e);\n })\n\n })\n .catch(function (ex) {\n let err = new RwLoginError(500, true, ex, RwLoginIssues.SeshExpired);\n self.forceLogout(err);\n reject(ex)\n })\n\n });\n\n }\n\n\n private optSocket(): Promise {\n let self = this;\n const SOURCE = \"RwTaskOptimize.optSocket\";\n let result = new RwOptResult();\n\n return new Promise(function (resolve, reject) {\n let returnedResult = false;\n let optSocket = new WebSocket(self.surl);\n\n optSocket.onerror = ev => {\n RwLog.warn(SOURCE, `Socket Error: ${self.surl} ${self.route.name}, RouteId:${self.route.routeId}`);\n reject(new Error(`Error opening socket: URL: ${self.surl}\\\\n Timestamp: ${ev.timeStamp}`));\n optSocket.close();\n };\n\n optSocket.onopen = ev => {\n //console.log(\"optSocket.onopen\", self.surl);\n optSocket.send(self.payload);\n\n //Monitor: Timeouts seem to occur for less < 3 mins; Capture actual time here\n let t0 = performance.now()\n let timeout = setTimeout(() => {\n if (!returnedResult) {\n RwLog.consoleError(\"Socket Timeout\");\n let t1 = performance.now();\n let elapsedSeconds = (t1 - t0) / 1000.0;\n let elapsedText = RwTextUtils.formatDuration(elapsedSeconds);\n\n RwLog.error(SOURCE, `TimeOut: ${self.route.name} in ${elapsedText} \\n${self.surl} \\nToken:${RwPrefUtils.token}\\nJobId:${self.jobId}\\nPayload:\\n${self.payload}`);\n reject(new Error(`Timeout optimizing`));\n returnedResult = true;\n if (optSocket.readyState === 1) {\n optSocket.close();\n }\n }\n }, RwConstants.OptTimeout);\n\n optSocket.onmessage = msg => {\n returnedResult = true;\n clearTimeout(timeout);\n\n let msgJson = JSON.parse(msg.data);\n if (msgJson) {\n result.code = msgJson[\"code\"];\n result.json = msgJson;\n //console.log(\"optSocket.onmessage\", result.code);\n resolve(result);\n } else {\n RwLog.consoleError(\"WTF: optSocket.onmessage NO DATA\");\n reject(new RwError(500, false, `No data returned from socket`));\n //console.log(\"optSocket.onmessage reject\", 500);\n }\n\n optSocket.close();\n };\n\n optSocket.onclose = ev => {\n //console.log(\"optSocket.onclose\");\n clearTimeout(timeout);\n };\n\n };\n\n });\n }\n\n\n private forceLogout(error?: RwError) {\n dal.forceLogout(error);\n }\n\n}\n","import moment from \"moment\";\nimport router from \"@/router\";\nimport theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwPin} from '@/app/dem/RwPin';\nimport {RwSearchResult} from '@/app/dem/RwSearchResult';\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {\n RwDistUnits,\n RwHistTypes,\n RwMultiMode,\n RwMutiModeTool,\n RwPinTypes,\n RwSearchType,\n RwStopFilterType\n} from \"@/app/RwEnums\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwStep} from \"@/app/dem/RwStep\";\nimport dal from \"@/app/dal/RwDal\";\nimport {RwTaskOptimize} from \"@/app/dal/RwTaskOptimize\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport Vue from \"vue\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport RwTotalStopCount from \"@/app/dem/RwCountRouteStops\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport {RwError} from \"@/app/RwErrors\";\nimport PurchSpace from \"@/app/views/account/purch/RwPurchSpace\";\nimport { RwTaskHistory } from \"@/app/dal/RwTaskHistory\";\n\nexport class RwPlannerSpace {\n\n\n //#region Props\n\n\n isOptimizing: Boolean = false;\n maxRouteSize: number = 8;\n driverName: string = \"Driver\";\n\n polySelectOptions = {\n volatility: true,\n style: {\n fillColor: \"rgba(22,22,22,0.5)\",\n strokeColor: \"rgba(226,0,79,1)\",\n lineWidth: 2\n }\n };\n\n addingStop: boolean = false;\n addingSite: boolean = false;\n addingTask: boolean = false;\n\n //RouteSummary Props;\n routeWarningText: string;\n travelTimeText: string;\n routeTimeText: string;\n totalDistText: string;\n totalTimeText: string;\n\n\n lastRefresh: number = 0;\n\n lastRefreshSelects: number = 0;\n priorSelectPins: RwPin[] = [];\n\n lastRefreshStops: number = 0;\n lastRefreshSites: number = 0;\n lastRefreshTasks: number = 0;\n cacheStops: RwStop[] = [];\n cacheSites: RwSite[] = [];\n cacheTasks: RwStop[] = [];\n\n cardExpiryMonth: string = '';\n cardExpiryYear: string = '';\n cardExpiry: string = '';\n maskedCardInfo: string = '';\n updatePaymentUrl: string = '';\n billingPortalUrl: string = '';\n\n cardExpiryMonthNum: number = 0;\n cardExpiryYearNum: number = 0;\n currentMonthNum: number = 0;\n currentYearNum: number = 0;\n\n activeRouteStopCount: number = 0;\n checkedRouteStopCount: number = 0;\n\n m_zoomLevel: number = 0;\n\n reloCoordsLat = RwPrefUtils.viewCenterLat;\n reloCoordsLng = RwPrefUtils.viewCenterLng;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n\n get showRouteOrder(): boolean {\n return theStore.getters.showRouteOrder;\n }\n\n set showRouteOrder(val: boolean) {\n theStore.dispatch(\"showRouteOrder\", val).catch();\n }\n\n get showRouteSummary(): boolean {\n return theStore.getters.showRouteSummary;\n }\n\n set showRouteSummary(val: boolean) {\n theStore.dispatch(\"showRouteSummary\", val).catch();\n }\n\n get searchResultsWeb(): RwSearchResult[] {\n return theStore.getters.searchResultsWeb;\n }\n\n set searchResultsWeb(val: RwSearchResult[]) {\n theStore.dispatch(\"searchResultsWeb\", val).catch();\n }\n\n get searchResultsSites(): RwSearchResult[] {\n return theStore.getters.searchResultsSites;\n }\n\n set searchResultsSites(val: RwSearchResult[]) {\n theStore.dispatch(\"searchResultsSites\", val).catch();\n }\n\n get searchResultsTasks(): RwSearchResult[] {\n return theStore.getters.searchResultsTasks;\n }\n\n set searchResultsTasks(val: RwSearchResult[]) {\n theStore.dispatch(\"searchResultsTasks\", val).catch();\n }\n\n get searchResultsCoords(): RwSearchResult[] {\n return theStore.getters.searchResultsCoords;\n }\n\n set searchResultsCoords(val: RwSearchResult[]) {\n theStore.dispatch(\"searchResultsCoords\", val).catch();\n }\n\n get steps(): RwStep[] {\n return theStore.getters.steps;\n }\n\n set steps(val: RwStep[]) {\n theStore.dispatch(\"steps\", val).catch();\n }\n\n get showMapOptions(): boolean {\n return theStore.getters.showMapOptions;\n }\n\n set showMapOptions(val: boolean) {\n theStore.dispatch(\"showMapOptions\", val).catch();\n }\n\n get showDataLayers(): boolean {\n return theStore.getters.showDataLayers;\n }\n\n set showDataLayers(val: boolean) {\n theStore.dispatch(\"showDataLayers\", val).catch();\n }\n\n\n get showPanelStatus(): boolean {\n return theStore.getters.showPanelStatus;\n }\n\n set showPanelStatus(val: boolean) {\n RwPrefUtils.showPanelStatus = val;\n theStore.dispatch(\"showPanelStatus\", val).catch();\n }\n\n get showPanelMap(): boolean {\n return theStore.getters.showPanelMap;\n }\n\n set showPanelMap(val: boolean) {\n RwPrefUtils.showPanelMap = val;\n theStore.dispatch(\"showPanelMap\", val).catch();\n }\n\n get showPanelList(): boolean {\n return theStore.getters.showPanelList;\n }\n\n set showPanelList(val: boolean) {\n RwPrefUtils.showPanelList = val;\n theStore.dispatch(\"showPanelList\", val).catch();\n }\n\n get isLayerDelta() {\n return this.isLayerHidden || this.isLayerFiltered;\n }\n\n get isLayerHidden() {\n let showAll = this.showDataLayerRoute && this.showDataLayerSites && this.showDataLayerTasks;\n //console.log(\"isLayerHidden showAll: showRoute, showSites, showTasks, showDrivers\", showAll, this.showDataLayerRoute, this.showDataLayerSites, this.showDataLayerTasks, this.showDataLayerDrivers);\n return !showAll;\n }\n\n get isLayerFiltered() {\n let isFiltered = this.isStopFiltered || this.isSiteFiltered || this.isTaskFiltered;\n //console.log(\"isLayersFiltered isFiltered: isStop, isSite, isTask, isDriver\", isFiltered, this.isStopFiltered, this.isSiteFiltered, this.isTaskFiltered, this.isDriverFiltered);\n return isFiltered;\n }\n\n\n get isStopFiltered(): boolean {\n return theStore.getters.isStopFiltered;\n }\n\n set isStopFiltered(val: boolean) {\n RwPrefUtils.isStopFiltered = val;\n theStore.dispatch(\"isStopFiltered\", val).catch();\n }\n\n get isSiteFiltered(): boolean {\n return theStore.getters.isSiteFiltered;\n }\n\n set isSiteFiltered(val: boolean) {\n RwPrefUtils.isSiteFiltered = val;\n theStore.dispatch(\"isSiteFiltered\", val).catch();\n }\n\n get isTaskFiltered(): boolean {\n return theStore.getters.isTaskFiltered;\n }\n\n set isTaskFiltered(val: boolean) {\n RwPrefUtils.isTaskFiltered = val;\n theStore.dispatch(\"isTaskFiltered\", val).catch();\n }\n\n get isDriverFiltered(): boolean {\n return theStore.getters.isDriverFiltered;\n }\n\n set isDriverFiltered(val: boolean) {\n RwPrefUtils.isDriverFiltered = val;\n theStore.dispatch(\"isDriverFiltered\", val).catch();\n }\n\n get showDataLayerRoute(): boolean {\n return theStore.getters.showDataLayerRoute;\n }\n\n set showDataLayerRoute(val: boolean) {\n RwPrefUtils.showDataLayerRoute = val;\n theStore.dispatch(\"showDataLayerRoute\", val).catch();\n }\n\n get showDataLayerSites(): boolean {\n return theStore.getters.showDataLayerSites;\n }\n\n set showDataLayerSites(val: boolean) {\n RwPrefUtils.showDataLayerSites = val;\n theStore.dispatch(\"showDataLayerSites\", val).catch();\n }\n\n get showDataLayerTasks(): boolean {\n return theStore.getters.showDataLayerTasks;\n }\n\n set showDataLayerTasks(val: boolean) {\n RwPrefUtils.showDataLayerTasks = val;\n theStore.dispatch(\"showDataLayerTasks\", val).catch();\n }\n\n // get showDataLayerDrivers(): boolean {\n // return theStore.getters.showDataLayerDrivers;\n // }\n //\n // set showDataLayerDrivers(val: boolean) {\n // RwPrefUtils.showDataLayerDrivers = val;\n // theStore.dispatch(\"showDataLayerDrivers\", val).catch();\n // }\n\n\n get isMultiMode(): boolean {\n return this.multiMode != RwMultiMode.none;\n }\n\n get multiMode(): RwMultiMode {\n return theStore.getters.multiMode as RwMultiMode;\n }\n\n set multiMode(val: RwMultiMode) {\n if (val != RwMultiMode.none) {\n if (val === RwMultiMode.tasks && !this.globals.isDisp) {\n val = RwMultiMode.stops;\n }\n RwPrefUtils.planMultiModeDefault = val;\n }\n theStore.dispatch(\"multiMode\", val);\n }\n\n get multiModeTool(): RwMutiModeTool {\n return theStore.getters.multiModeTool as RwMutiModeTool;\n }\n\n set multiModeTool(val: RwMutiModeTool) {\n RwPrefUtils.planMultiModeTool = val;\n theStore.dispatch(\"multiModeTool\", val).catch();\n }\n\n get sizeDelta(): number {\n return theStore.getters.sizeDelta;\n }\n\n set sizeDelta(val: number) {\n theStore.dispatch(\"sizeDelta\", val).catch();\n }\n\n get timeHeight(): number {\n let height = 0;\n if (this.openRoutes && this.openRoutes.length > 0) {\n let openCount = this.openRoutes.length;\n height = Math.min(48 + (openCount * 48), 240);\n }\n return height;\n }\n\n\n get selectedPins(): RwPin[] {\n // console.log(\"GET selectedPins\", this.SRC_PINS, theStore.getters.selectedPins.length);\n return theStore.getters.selectedPins;\n }\n\n set selectedPins(val: RwPin[]) {\n //console.log(\"GET selectedPins\", this.SRC_PINS, val.length);\n let samePins = false;\n let selPins = this.selectedPins;\n if (selPins.length === 1 && selPins.length === val.length) {\n if (selPins[0].eid === val[0].eid) {\n //console.error(\"SET selectedPins samePins\");\n samePins = true;\n }\n }\n\n if (!samePins) {\n theStore.dispatch(\"selectedPins\", val).catch();\n }\n }\n\n get mapShowTraffic(): boolean {\n //return false;\n return theStore.getters.mapShowTraffic;\n //console.log(\"PlanSpace GET mapShowTraffic\", RwPrefUtils.mapShowTraffic)\n }\n\n set mapShowTraffic(val: boolean) {\n RwPrefUtils.mapShowTraffic = val;\n theStore.dispatch(\"mapShowTraffic\", val).catch();\n //console.log(\"PlanSpace SET mapShowTraffic\", RwPrefUtils.mapShowTraffic, val)\n }\n\n\n get mapShowIncidents(): boolean {\n //return false;\n return theStore.getters.mapShowIncidents;\n //console.log(\"PlanSpace GET mapShowTraffic\", RwPrefUtils.mapShowTraffic)\n }\n\n set mapShowIncidents(val: boolean) {\n RwPrefUtils.mapShowIncidents = val;\n theStore.dispatch(\"mapShowIncidents\", val).catch();\n //console.log(\"PlanSpace SET mapShowTraffic\", RwPrefUtils.mapShowTraffic, val)\n }\n\n get mapShowSatellite(): boolean {\n return theStore.getters.mapShowSatellite;\n }\n\n set mapShowSatellite(val: boolean) {\n RwPrefUtils.mapShowSatellite = val;\n theStore.dispatch(\"mapShowSatellite\", val).catch();\n }\n\n get showSearchOptions(): boolean {\n return theStore.getters.showSearchOptions;\n }\n\n set showSearchOptions(val: boolean) {\n theStore.dispatch(\"showSearchOptions\", val).catch();\n }\n\n get showPlannerToolbar(): boolean {\n return theStore.getters.showPlannerToolbar;\n }\n\n set showPlannerToolbar(val: boolean) {\n theStore.dispatch(\"showPlannerToolbar\", val).catch();\n }\n\n get selectedSearchResult(): RwSearchResult {\n return theStore.getters.selectedSearchResult;\n }\n\n set selectedSearchResult(val: RwSearchResult) {\n theStore.dispatch(\"selectedSearchResult\", val).catch();\n }\n\n get searchReportInfo(): Array {\n return theStore.getters.searchReportInfo;\n }\n\n set searchReportInfo(val: Array) {\n theStore.dispatch(\"searchReportInfo\", val).catch();\n }\n\n statusText(val: number) {\n switch (val) {\n case 0:\n return \"Active (Default)\";\n break;\n case 1:\n return \"New\";\n break;\n\n case 10:\n return \"Complete (Default)\";\n break;\n case 11:\n return \"Service Complete\";\n break;\n case 12:\n return \"Left at Front Door/on Porch\";\n break;\n case 13:\n return \"Left at Gate/in Lobby\";\n break;\n case 14:\n return \"Left in Mail Area\";\n break;\n case 15:\n return \"Handed to Customer\";\n break;\n case 16:\n return \"Signature Collected\";\n break;\n case 17:\n return \"Pick-Up Complete\";\n break;\n\n case 20:\n return \"Incomplete (Default)\";\n break;\n case 21:\n return \"Nobody There/Not Open\";\n break;\n case 22:\n return \"Incorrect Address\";\n break;\n case 23:\n return \"Address Unreachable\";\n break;\n case 24:\n return \"Customer Refused\";\n break;\n case 25:\n return \"Sent Text/Email\";\n break;\n case 26:\n return \"Called/Left Voicemail\";\n break;\n case 27:\n return \"Spoke with Customer\";\n break;\n case 28:\n return \"Left a Note\";\n break;\n case 29:\n return \"Attempt Again Later\";\n break;\n case 30:\n return \"Do Not Re-Attempt\";\n break;\n }\n }\n\n statusColor(val: number) {\n if (val < 10) {\n return 'blue';\n } else if (val > 19) {\n return 'red';\n } else {\n return 'green';\n }\n }\n\n //#endregion Props\n\n\n //#region ActiveRoute\n\n setActiveRouteById(routeId: string) {\n if (routeId) {\n const route = this.globals.findRoute(routeId);\n if (route) {\n if (!this.activeRoute || this.activeRoute.routeId != routeId) {\n this.activeRoute = route;\n\n }\n }\n }\n }\n\n\n get activeRoute(): RwRoute {\n let route = theStore.getters.activeRoute;\n //console.warn(\"RwGlobals get activeRoute\", route ? route.name : 'null');\n return route;\n }\n\n set activeRoute(route: RwRoute) {\n //console.log(\"RwPlannerSpace set activeRoute\", route ? route.name : 'null');\n if (route != this.activeRoute) {\n\n //theStore.dispatch(\"activeRoute\", null).catch();\n //console.warn(\"RwPlannerSpace set activeRoute\", route ? route.name : 'null');\n\n this.globals.lastRouteDeltaMS = 0;\n this.globals.lastStatusMS = 0;\n this.globals.driverLastSyncMS = 0;\n\n\n if (route) {\n this.startPin = RwPin.fromRoute(route);\n this.startPin.lastHash = Date.now()\n if (this.isOpenRoute(route) == false) {\n this.openRoute(route);\n }\n\n //SKIP: if first load && we have route with stops\n let canSkip = !this.activeRoute && RwPrefUtils.lastRouteId === route.routeId && route.stops.length > 0;\n if (!canSkip) {\n this.globals.getFullRoute(route);\n this.lastRefreshStops = Date.now();\n }\n\n this.globals.selectedRoute = route;\n this.clearPinSelections();\n this.globals.targetFocusId = route.routeId;\n RwPrefUtils.lastRouteId = route.routeId;\n\n //console.log(\"RwPlannerSpace.activeRoute SET focusId\", this.focusId);\n } else {\n RwPrefUtils.lastRouteId = \"\";\n }\n theStore.dispatch(\"activeRoute\", route).catch();\n }\n }\n\n //\n // get routeHistCount(): number{\n // let stopCount = this.activeRoute.stops.length;\n // // console.warn(\"stopCount: \", stopCount);\n // return stopCount;\n // }\n\n\n forceShowDataView() {\n //console.log(\"forceShowDataView\", this.selectedPin.dataItem)\n if (this.globals.showPinPanel == true) {\n setTimeout(() => this.globals.showPinPanel = false, 0);\n setTimeout(() => this.globals.showPinPopup = true, 250);\n } else {\n setTimeout(() => this.globals.showPinPopup = true, 250);\n }\n }\n\n\n //#endregion\n\n\n //#region Selected Pin\n\n get selectedPin(): RwPin {\n let selPin: RwPin;\n if (this.isMultiMode == false) {\n let pins = this.selectedPins;\n if (pins && pins.length > 0) {\n selPin = pins[0];\n }\n }\n //console.warn(\"RwPlannerSpace.selectedPin GET\");\n return selPin;\n }\n\n set selectedPin(pin: RwPin) {\n //console.warn(\"RwPlannerSpace.selectedPin SET\");\n if (pin) {\n pin.lastHash = Date.now();\n this.selectedPins = [pin];\n } else {\n this.selectedPins = [];\n }\n }\n\n get mapCentroid(): { lat: number, lng: number, zoom: number } {\n //let val = theStore.getters.mapCentroid\n //console.log(\"Plan.GET.mapCentroid => \", val.lat, val.lng, val.zoom)\n return theStore.getters.mapCentroid;\n }\n\n set mapCentroid(val: { lat: number, lng: number, zoom: number }) {\n //console.log(\"Plan.SET.mapCentroid => \", val.lat, val.lng, val.zoom)\n theStore.dispatch(\"mapCentroid\", val).catch();\n }\n\n get searchPinData(): { pinType: RwPinTypes, lat: number, lng: number, id: string } {\n return theStore.getters.searchPinData;\n }\n\n set searchPinData(val: { pinType: RwPinTypes, lat: number, lng: number, id: string }) {\n theStore.dispatch(\"searchPinData\", val).catch();\n }\n\n get showInvalidPinBanner(): boolean {\n return theStore.getters.showInvalidPinBanner;\n }\n\n set showInvalidPinBanner(val: boolean) {\n theStore.dispatch(\"showInvalidPinBanner\", val).catch();\n }\n\n get invalidPinError(): string {\n return theStore.getters.invalidPinError;\n }\n\n set invalidPinError(val: string) {\n theStore.dispatch(\"invalidPinError\", val).catch();\n }\n\n get invalidPinIcon(): string {\n return theStore.getters.invalidPinIcon;\n }\n\n set invalidPinIcon(val: string) {\n theStore.dispatch(\"invalidPinIcon\", val).catch();\n }\n\n get previousPin(): RwPin | null {\n return theStore.getters.previousPin;\n }\n\n set previousPin(val: RwPin | null) {\n theStore.dispatch(\"previousPin\", val).catch();\n }\n\n get showDropSelect(): boolean {\n return theStore.getters.showDropSelect;\n }\n\n set showDropSelect(val: boolean) {\n theStore.dispatch(\"showDropSelect\", val).catch()\n }\n\n get stopDropOrigin(): RwStop | null {\n return theStore.getters.stopDropOrigin;\n }\n\n set stopDropOrigin(val: RwStop | null) {\n theStore.dispatch(\"stopDropOrigin\", val).catch();\n }\n\n get showDropRemove(): boolean {\n return theStore.getters.showDropRemove;\n }\n\n set showDropRemove(val: boolean) {\n theStore.dispatch(\"showDropRemove\", val).catch()\n }\n\n get showStopsViolations(): string[] {\n return theStore.getters.showStopsViolations;\n }\n\n set showStopsViolations(val: string[]) {\n RwPrefUtils.showStopViolations = val;\n theStore.dispatch(\"showStopsViolations\", val).catch();\n }\n\n isSelected(pin: RwPin) {\n //console.log(\"RwPlanerSpace.isSelected\", pin.title)\n let isSelected = false;\n if (!pin.isCluster) {\n isSelected = this.selectedPins.includes(pin);\n } else {\n let clusterPins = this.getClusterPins(pin);\n if (clusterPins && clusterPins.length > 0) {\n for (let n = 0; n <= clusterPins.length; n++) {\n let p = clusterPins[n];\n isSelected = this.selectedPins.includes(p);\n if (isSelected) {\n break;\n }\n }\n }\n }\n return isSelected;\n }\n\n\n setPinSelection(pin: RwPin, targetSelected: boolean, setFocus?: boolean) {\n const self = this;\n let selPins = this.selectedPins;\n\n if (pin) {\n //console.log(\"setPinSelection\", `${pin.title}, type:${pin.type}, isSelected:${targetSelected}`);\n\n if (targetSelected) {\n\n if (self.multiMode === RwMultiMode.none) {\n //console.log(\"PlanSpace.selectPin set selectedPins\");\n\n if (pin.isCluster) {\n //SINGLE-MODE\n //May be a no-op\n } else {\n //Use short-circuit to skip unnecessary updates\n if (selPins && selPins.length === 1 && selPins[0].eid === pin.eid) {\n //console.warn(\"PlanSpace.selectPin SKIPPING RESELECT:\", pin.title);\n } else {\n self.globals.targetFocusId = (setFocus) ? pin.eid : \"\";\n this.selectedPins = [pin];\n }\n }\n } else {\n //MULTI-MODE\n\n if (!pin.isCluster) {\n pin.lastHash = Date.now();\n const clone: RwPin[] = [...selPins];\n clone.push(pin);\n this.selectedPins = clone;\n\n if (pin.clusterParent) {\n this.setClusterSelect(pin.clusterParent, selPins, targetSelected);\n }\n } else {\n //console.log(\"setPinSelection\", \"multi-mode\", targetSelected, pin.title);\n this.setClusterSelect(pin, selPins, targetSelected);\n }\n }\n\n } else {\n //Deselect Mode\n let selPins = this.selectedPins;\n if (!pin.isCluster) {\n const idxPin = selPins.indexOf(pin, 0);\n if (idxPin >= 0) {\n selPins.splice(idxPin, 1);\n }\n } else {\n this.setClusterSelect(pin, selPins, false);\n }\n\n }\n\n } else {\n RwLog.consoleError(\"RwPlannerSpace.selectPin WTF: no pin\")\n }\n\n }\n\n\n setClusterSelect(pin: RwPin, selPins: RwPin[], targetSelect: boolean) {\n pin.invalidatePinImage()\n pin.lastHash = Date.now();\n\n let clustered = this.getClusterPins(pin);\n if (clustered && clustered.length > 0) {\n const clone: RwPin[] = [...selPins];\n\n if (targetSelect) {\n //pin.ratio = 1;\n clustered.forEach(p => {\n let isSelectedAlready = selPins.includes(p);\n if (!isSelectedAlready) {\n p.lastHash = Date.now();\n pin.lastHash = Date.now();\n clone.push(p);\n }\n })\n } else {\n //pin.clusterSelectRatio = 0;\n clustered.forEach(p => {\n let isSelectedAlready = selPins.includes(p);\n if (isSelectedAlready) {\n p.lastHash = Date.now();\n pin.lastHash = Date.now();\n let idx = clone.indexOf(p)\n if (idx >= 0) {\n clone.splice(idx, 1);\n }\n }\n })\n }\n\n if (clone.length != selPins.length) {\n this.selectedPins = clone;\n }\n }\n }\n\n private getClusterPins(pin: RwPin): RwPin[] {\n if (pin.clusteredPins && pin.clusteredPins.length > 0) {\n for (let idx = pin.clusteredPins.length - 1; idx >= 0; idx--) {\n let p = pin.clusteredPins[idx];\n if (!p.clusterParent) {\n pin.clusteredPins.splice(idx, 1);\n }\n }\n }\n return pin.clusteredPins;\n }\n\n\n deselectPin(pin: RwPin) {\n //console.warn(\"RwPlannerSpace.deselectPin isSelected\", pin.title);\n if (this.isSelected(pin)) {\n //const clone: RwPin[] = [...this.selectedPins];\n let selPins = this.selectedPins;\n const idxPin = selPins.indexOf(pin, 0);\n if (idxPin >= 0) {\n selPins.splice(idxPin, 1);\n }\n }\n }\n\n\n clearPinSelections() {\n //console.error(\"clearPinSelections\");\n this.selectedPins = [];\n }\n\n\n get selectedStop(): RwStop {\n let stop: RwStop;\n if (this.selectedPin && this.selectedPin.type == RwPinTypes.Stop) {\n stop = this.selectedPin.stop;\n }\n return stop;\n }\n\n\n //#endregion\n\n\n //#region OpenRoutes\n\n get openRoutes(): RwRoute[] {\n return theStore.getters.openRoutes;\n }\n\n set openRoutes(routes: RwRoute[]) {\n RwPrefUtils.openRoutes = routes.map(r => r.routeId);\n theStore.dispatch(\"openRoutes\", routes).catch();\n }\n\n\n openRouteInPlanner(route: RwRoute) {\n this.globals.plan.activeRoute = route;\n this.globals.plan.openRoute(route);\n //console.warn(\"openRouteInPlanner\", route.plannerUrl)\n\n router.push(route.plannerUrl).catch();\n }\n\n openRoute(route: RwRoute) {\n if (route) {\n let opens = this.openRoutes;\n if (route.finishTime == null) {\n let newFinishTime = RwDateUtils.addMinutesToDate(route.startTime, RwPrefUtils.routeSpan);\n route.finishTime = newFinishTime;\n // route.setFinishDate(\"openRoute\", newFinishTime)\n }\n if (this.isOpenRoute(route) == false) {\n this.openRoutes = [...this.openRoutes, route];\n }\n }\n }\n\n\n multiOpenRoutes(routes: RwRoute[]) {\n if (routes.length > 0) {\n let opens = this.openRoutes;\n routes.forEach(route => {\n if (this.isOpenRoute(route) == false) {\n if (route.finishTime == null) {\n let newFinishTime = RwDateUtils.addMinutesToDate(route.startTime, RwPrefUtils.routeSpan);\n route.finishTime = newFinishTime;\n // route.setFinishDate(\"multiOpenRoutes\", newFinishTime)\n }\n opens.push(route);\n }\n });\n this.openRoutes = opens;\n }\n }\n\n\n closeRoute(route: RwRoute, skipFallback?: boolean) {\n //console.log(\"PlanSpace.closeRoute\", route.name);\n this.multiCloseRoutes([route], skipFallback);\n }\n\n\n closeRoutesNotFound(closingRouteIds: string[], skipFallback?: boolean) {\n if (closingRouteIds.length > 0) {\n let opens = this.openRoutes;\n let opensCopy = opens.slice();\n let closingRouteIdsCopy = closingRouteIds;\n let activeRoute = this.activeRoute;\n\n // if (this.activeRoute) {\n // const activeRtId = this.activeRoute.routeId;\n // const closingActiveRoute = closingRouteIds.findIndex(rtid => rtid === activeRtId) !== -1;\n // if (closingActiveRoute) {\n // if (opensCopy.length === 1) {\n // this.activeRoute = null;\n // } else {\n // const openSelectedRtIndex = opensCopy.findIndex(rt => rt.routeId === activeRtId)\n // if (openSelectedRtIndex === 0) {\n // this.activeRoute = opensCopy[1];\n // } else {\n // this.activeRoute = opensCopy[0];\n // }\n // }\n // }\n // }\n closingRouteIdsCopy.forEach(id => {\n opensCopy.forEach(route => {\n if (route.routeId === id) {\n if (route == activeRoute && !skipFallback) {\n this.setFallbackRoute(route);\n }\n const idx = opensCopy.indexOf(route, 0);\n if (idx > -1) {\n opensCopy.splice(idx, 1);\n if (route == this.globals.selectedRoute) {\n this.globals.selectedRoute = null;\n }\n } else {\n RwLog.warn(\"WTF: closeRoutesNotFound idx not found\", id);\n }\n }\n })\n })\n // console.warn('dispatch launched');\n Vue.nextTick(() => {\n this.openRoutes = opensCopy;\n });\n\n }\n }\n\n multiCloseRoutes(closingRoutes: RwRoute[], skipFallback?: boolean) {\n //console.log(\"PlanSpace.multiCloseRoutes\", closingRoutes.length);\n if (closingRoutes.length > 0) {\n let opens = this.openRoutes;\n\n let opensCopy = [...opens];\n let closingCopy = [...closingRoutes];\n\n let activeRoute = this.activeRoute;\n closingCopy.forEach(route => {\n if (this.isOpenRoute(route)) {\n\n if (route == activeRoute && !skipFallback) {\n this.setFallbackRoute(route);\n }\n\n const idx = opensCopy.findIndex(r => route.routeId == r.routeId);\n if (idx > -1) {\n opensCopy.splice(idx, 1);\n\n if (route == this.globals.selectedRoute) {\n this.globals.selectedRoute = null;\n }\n } else {\n RwLog.consoleError(\"WTF: multiCloseRoutes idx not found\", route.name, route.routeId);\n }\n } else {\n //this is normal if closed from non-Planner (e.g. Route List)\n //RwLog.consoleError(\"WTF: multiCloseRoutes closingRoute not open\", route.name, route.routeId);\n }\n });\n this.openRoutes = opensCopy;\n } else {\n RwLog.consoleError(\"WTF: multiCloseRoutes no closingRoutes\");\n }\n }\n\n\n private setFallbackRoute(route: RwRoute) {\n let activeRoute = this.activeRoute;\n if (route == activeRoute) {\n let fallback: RwRoute;\n let newRoutePath = \"\";\n fallback = this.getFallbackRoute(route);\n //console.log(\"multiCloseRoutes fallback\", !!fallback);\n if (fallback) {\n newRoutePath = \"activeRoute.plannerUrl\";\n this.activeRoute = fallback;\n } else {\n newRoutePath = \"/planner\";\n this.activeRoute = null;\n }\n\n //console.warn(\"setFallbackRoute\", \"newRoutePath\")\n\n router.push(newRoutePath).catch(err => RwLog.consoleError(\"route failed\", newRoutePath));\n //console.log(\"PlanSpace.closeRouteWithFallback\", newRoutePath, router.currentRoute.path);\n }\n }\n\n\n private getFallbackRoute(route: RwRoute): RwRoute {\n let fallback: RwRoute = null;\n let idx = this.openRoutes.findIndex(r => r.routeId === route.routeId);\n if (idx >= 0) {\n let openCount = this.openRoutes.length;\n let idxLast = openCount - 1;\n if (openCount > 1) {\n let isLast = idx == idxLast;\n if (isLast) {\n //Use prior tab\n fallback = this.openRoutes[idx - 1];\n //console.info(\"getFallbackRoute set to prior route\", fallback.name);\n } else if (idx < idxLast) {\n //Use next tab\n fallback = this.openRoutes[idx + 1];\n //console.info(\"getFallbackRoute set to next route\", fallback.name);\n } else {\n RwLog.consoleError(\"WTF: getFallbackRoute idx >= idxLast\", idx, idxLast);\n }\n } else {\n //console.warn(\"getFallbackRoute open count == 1\");\n }\n } else {\n RwLog.consoleError(\"WTF: getFallbackRoute route not found\");\n }\n return fallback;\n }\n\n\n isOpenRoute(route: RwRoute): boolean {\n let isOpen = false;\n let isDone = false;\n let routeId = route.routeId;\n if (this.openRoutes && this.openRoutes.length > 0) {\n this.openRoutes.forEach(openRoute => {\n if (isDone == false) {\n if (openRoute.routeId == routeId) {\n isDone = true;\n isOpen = true;\n }\n }\n });\n }\n\n return isOpen;\n }\n\n\n //#endregion\n\n\n //#region Pins\n\n\n get startPin(): RwPin {\n return theStore.getters.startPin;\n }\n\n set startPin(val: RwPin) {\n theStore.dispatch(\"startPin\", val).catch();\n }\n\n\n updateStopPins(adds: RwStop[], removes: RwStop[], deltas: RwStop[]) {\n const self = this;\n const SOURCE = \"RwPlannerSpace.updateStopPins\";\n //console.log(\"RwPlannerSpace.updateStopPins\");\n\n let route: RwRoute = this.activeRoute;\n if (this.activeRoute) {\n\n route.getActiveStops();\n\n let newPins = [...self.stopPins];\n //console.log(\"updateStopPins newPins \", newPins.length);\n\n adds.forEach(stop => {\n //console.log(\"adding stop pin\", stop.name, stop.stopId);\n if (this.stopPins.map(sp => sp.stop.stopId).indexOf(stop.stopId) > -1) return;\n let pin = RwPin.fromStop(stop);\n pin.lastHash = Date.now();\n if (self.multiMode === RwMultiMode.none) {\n let canSelect = self.globals.targetSelectId === stop.stopId;\n let canFocus = self.globals.targetFocusId === stop.stopId;\n self.setPinSelection(pin, canSelect, canFocus);\n }\n\n newPins.push(pin);\n });\n //console.log(\"updateStopPins newPins POST ADDS\", newPins.length);\n\n removes.forEach(stop => {\n //console.log(\"deleting stop pin\", stop.name, stop.stopId);\n let idxPin = newPins.findIndex(p => p.eid === stop.stopId);\n if (idxPin >= 0) {\n let pin = newPins[idxPin];\n pin.lastHash = Date.now();\n newPins.splice(idxPin, 1);\n }\n });\n //console.log(\"updateStopPins newPins POST DELETES\", newPins.length);\n\n\n deltas.forEach(stop => {\n let pin = newPins.find(p => p.eid === stop.stopId);\n if (pin) {\n RwPin.updateStopPin(pin, stop);\n pin.lastHash = Date.now();\n //console.log(SOURCE, \"deltas\", stop.name, stop.seq, pin.title, pin.seq, pin.lastHash);\n }\n });\n\n self.stopPins = newPins;\n }\n\n }\n\n\n get stopPins(): RwPin[] {\n //console.warn(\"RwPlannerSpace GET stopPins\");\n return theStore.getters.stopPins;\n }\n\n set stopPins(pins: RwPin[]) {\n //console.error(\"RwPlannerSpace SET stopPins\", pins);\n theStore.dispatch(\"stopPins\", pins).catch();\n }\n\n\n genSitePins(): RwPin[] {\n const self = this;\n const SOURCE = \"RwPlannerSpace.genSitePins\";\n\n let sitePins: RwPin[] = [];\n let sites = theStore.getters.sites;\n if (sites && sites.length > 0) {\n sites.forEach(site => {\n\n if (site) {\n let pin = RwPin.fromSite(site);\n sitePins.push(pin);\n\n if (self.globals.targetFocusId && self.globals.targetFocusId === site.siteId) {\n self.setPinSelection(pin, true, true);\n }\n } else {\n RwLog.consoleError(SOURCE, \"getSitePins\");\n }\n\n });\n\n }\n this.sitePins = sitePins;\n return sitePins;\n }\n\n checkSitePins() {\n let gotSites = theStore.getters.sites.length > 0;\n let gotPins = theStore.getters.sitePins.length > 0;\n if (gotSites && !gotPins) {\n this.genSitePins();\n }\n }\n\n get sitePins(): RwPin[] {\n this.checkSitePins();\n //console.warn(\"GET sitePins\", theStore.getters.sitePins.length)\n return theStore.getters.sitePins;\n }\n\n set sitePins(pins: RwPin[]) {\n //console.warn(\"SET sitePins\", pins.length)\n theStore.dispatch(\"sitePins\", pins);\n }\n\n\n get taskPins(): RwPin[] {\n //console.warn(\"GET taskPins\", theStore.getters.taskPins.length)\n return this.globals.taskPins;\n }\n\n set taskPins(pins: RwPin[]) {\n //console.warn(\"SET taskPins\", pins.length)\n this.globals.taskPins = pins;\n }\n\n\n get driverPins(): RwPin[] {\n return theStore.getters.driverPins;\n }\n\n set driverPins(pins: RwPin[]) {\n theStore.dispatch(\"driverPins\", pins);\n }\n\n\n //#endregion Pins\n\n\n //#region Filtering\n\n get stopPinsFiltered(): RwPin[] {\n //console.warn(\"RwPlannerSpace stopPinsFiltered showDataLayerRoute, isStopFiltered\", RwPrefUtils.showDataLayerRoute && RwPrefUtils.isStopFiltered);\n let pins = this.stopPins.filter(p => p.type == RwPinTypes.Stop);\n if (RwPrefUtils.showDataLayerRoute && RwPrefUtils.isStopFiltered) {\n pins = this.filterStopsPins(pins);\n }\n return pins;\n }\n\n\n get sitePinsFiltered(): RwPin[] {\n\n let pins = this.sitePins.filter(p => p.type == RwPinTypes.Site);\n if (RwPrefUtils.showDataLayerSites && RwPrefUtils.isSiteFiltered) {\n pins = this.filterSitePins(pins);\n }\n return pins;\n }\n\n\n get taskPinsFiltered(): RwPin[] {\n let pins = this.taskPins.filter(p => p.type == RwPinTypes.Task);\n if (RwPrefUtils.showDataLayerTasks && RwPrefUtils.isTaskFiltered) {\n pins = this.filterTaskPins(pins);\n }\n return pins;\n }\n\n\n // get driverPinsFiltered(): RwPin[] {\n // let pins = this.driverPins.filter(p => p.type == RwPinTypes.Driver);\n // //console.warn(\"RwPlannerSpace.driverPinsFiltered pins unfiltered\", pins.length);\n // if (RwPrefUtils.showDataLayerDrivers && RwPrefUtils.isDriverFiltered) {\n // pins = this.filterDriverPins(pins);\n // //console.warn(\"RwPlannerSpace.driverPinsFiltered pins filtered\", pins.length);\n // }\n // return pins;\n // }\n\n\n filterStopsPins(pins: RwPin[]): RwPin[] {\n let filtered: RwPin[];\n if (RwPrefUtils.isStopFiltered) {\n filtered = RwPlannerSpace.applyTextFilter(pins, RwPrefUtils.stopFilterName, RwPrefUtils.stopFilterAddress);\n filtered = RwPlannerSpace.applyStopTypeFilter(filtered);\n filtered = RwPlannerSpace.applyDistFilter(filtered, this.activeRoute, RwPrefUtils.stopFilterDistance);\n filtered = RwPlannerSpace.applyHashFilter(filtered, RwPrefUtils.stopFilterHash, RwPrefUtils.stopFilterHashAll);\n filtered = RwPlannerSpace.applyColorFilter(filtered, RwPrefUtils.stopFilterColor);\n } else {\n filtered = pins;\n }\n return filtered;\n }\n\n\n filterSitePins(pins: RwPin[]): RwPin[] {\n let filtered: RwPin[];\n if (RwPrefUtils.isSiteFiltered) {\n filtered = RwPlannerSpace.applyTextFilter(pins, RwPrefUtils.siteFilterName, RwPrefUtils.siteFilterAddress);\n filtered = RwPlannerSpace.applyDistFilter(filtered, this.activeRoute, RwPrefUtils.siteFilterDistance);\n filtered = RwPlannerSpace.applyHashFilter(filtered, RwPrefUtils.siteFilterHash, RwPrefUtils.siteFilterHashAll);\n filtered = RwPlannerSpace.applyColorFilter(filtered, RwPrefUtils.siteFilterColor);\n filtered = RwPlannerSpace.applyCheckFilter(filtered);\n } else {\n //console.error(\"filterSitePins filter skipped\");\n filtered = pins;\n }\n return filtered;\n }\n\n\n filterTaskPins(pins: RwPin[]): RwPin[] {\n let filtered: RwPin[];\n if (RwPrefUtils.isTaskFiltered) {\n filtered = RwPlannerSpace.applyTextFilter(pins, RwPrefUtils.taskFilterName, RwPrefUtils.taskFilterAddress);\n filtered = RwPlannerSpace.applyDistFilter(filtered, this.activeRoute, RwPrefUtils.taskFilterDistance);\n filtered = RwPlannerSpace.applyHashFilter(filtered, RwPrefUtils.taskFilterHash, RwPrefUtils.taskFilterHashAll);\n filtered = RwPlannerSpace.applyColorFilter(filtered, RwPrefUtils.taskFilterColor);\n } else {\n filtered = pins;\n }\n return filtered;\n }\n\n\n filterDriverPins(pins: RwPin[]): RwPin[] {\n let filtered: RwPin[];\n if (RwPrefUtils.isDriverFiltered) {\n filtered = RwPlannerSpace.applyTextFilter(pins, RwPrefUtils.driverFilterName, null);\n } else {\n filtered = pins;\n }\n return filtered;\n }\n\n\n static applyTextFilter(pins: RwPin[], nameFilter: string, addFilter: string): RwPin[] {\n\n let filtered: RwPin[] = [];\n let gotNameFilter = nameFilter && nameFilter !== \"\";\n let gotAddFilter = addFilter && addFilter !== \"\";\n\n //console.log(\"applyTextFilter\", `gotNameFilter:${gotNameFilter}, nameFilter:${nameFilter}, gotAddFilter:${gotAddFilter}, addFilter:${addFilter}`);\n\n if (pins.length === 0 || gotNameFilter || gotAddFilter) {\n nameFilter = gotNameFilter ? nameFilter.toLowerCase() : null;\n addFilter = gotAddFilter ? addFilter.toLowerCase() : null;\n\n //console.log(\"applyTextFilter nameFilter\", nameFilter);\n\n pins.forEach(pin => {\n\n let isNameMatch = false;\n if (gotNameFilter) {\n //console.warn(\"pin.title\", pin.title);\n isNameMatch = pin.title.toLowerCase().indexOf(nameFilter) != -1;\n //console.warn(\"applyTextFilter gotNameFilter, isNameMatch\", gotNameFilter, isNameMatch, pin.title, nameFilter);\n }\n\n let isAddMatch = false;\n if (gotAddFilter) {\n //console.log(\"pin address\", pin.address, taskAdd);\n let pinAdd = pin.address;\n isAddMatch = pinAdd && pinAdd.toLowerCase().indexOf(addFilter) != -1;\n }\n //console.warn(\"applyTextFilter gotAddFilter, isAddMatch\", gotAddFilter, isAddMatch, pin.address, addFilter);\n\n if ((!gotNameFilter || isNameMatch) && (!gotAddFilter || isAddMatch)) {\n //console.warn(\"filtered.push(pin)\", pin);\n filtered.push(pin);\n }\n });\n } else {\n filtered = pins;\n }\n\n return filtered;\n }\n\n\n static applyStopTypeFilter(pins: RwPin[]): RwPin[] {\n let filtered: RwPin[] = [];\n let stopFilterType = RwPrefUtils.stopFilterType;\n if (pins.length === 0 || stopFilterType == RwStopFilterType.All) {\n filtered = pins;\n } else if (stopFilterType == RwStopFilterType.ActiveStopsOnly) {\n pins.forEach(pin => {\n //if (pin.isActive) {\n if (pin.stop && !pin.stop.isComplete) {\n filtered.push(pin);\n }\n });\n }\n return filtered;\n }\n\n\n static applyDistFilter(pins: RwPin[], route: RwRoute, distance: number): RwPin[] {\n //console.log(\"applyDistFilter\", distance);\n\n let filtered: RwPin[] = [];\n\n if (route) {\n let lat = route.lat;\n let lng = route.lng;\n\n if (distance && distance > 0 && lat && lat != 0 && lng && lng != 0) {\n let lat = route.lat;\n let lng = route.lng;\n let distanceBar = 0.0;\n if (pins.length === 0 || distance >= 100.0 || distance <= 0.0) {\n filtered = pins;\n } else {\n // Convert to meters\n if (RwPrefUtils.distUnits == RwDistUnits.Miles) {\n distanceBar = distance * 1600.0;\n } else {\n distanceBar = distance * 1000.0;\n }\n //console.log(`distanceBar: ${distanceBar}`);\n\n pins.forEach(pin => {\n let meters = pin.getProximity(lat, lng);\n if (meters != 0) {\n //RwLog.logConsole`pin: ${pin.title} == ${meters} meters`);\n if (meters <= distanceBar) {\n filtered.push(pin);\n }\n } else {\n RwLog.consoleError(\"WTF: What does '0' distance mean? Stop at Start | Error\");\n //distRemoved.push(pin);\n }\n });\n }\n\n } else {\n filtered = pins;\n }\n } else {\n filtered = pins;\n }\n\n return filtered;\n }\n\n\n static applyHashFilter(pins: RwPin[], hashTags: string, isAll: boolean): RwPin[] {\n //xREF: FILTER: applyHashFilter\n\n let filtered: RwPin[] = [];\n if (pins.length === 0 || !hashTags || hashTags.length == 0) {\n filtered = pins;\n } else {\n let regPattern = \"\";\n let searchTokens: string[] = [];\n let tokens = hashTags.split(/\\b\\s+/);\n\n tokens.forEach(token => {\n token = token.toLowerCase();\n if (token.indexOf(\"#\") >= 0) {\n token = token.replace(\"#\", \"\");\n }\n searchTokens.push(token);\n });\n //RwLog.logConsole(\"searchTokens\", searchTokens);\n\n if (isAll) {\n //(?=.*\\bmeat\\b)(?=.*\\bpasta\\b)(?=.*\\bdinner\\b).+\n searchTokens.forEach(token => {\n let hashPattern = \"(?=.*\\\\#\\\\b\" + token + \"\\\\b)\";\n regPattern += hashPattern;\n });\n } else {\n //\\#\\ba\\b|\\#\\bb\\b means A or B\n searchTokens.forEach(token => {\n let hashPattern = \"\\\\#\\\\b\" + token + \"\\\\b\";\n regPattern =\n regPattern == \"\" ? hashPattern : regPattern + \"|\" + hashPattern;\n });\n }\n\n let regEx = new RegExp(regPattern);\n\n pins.forEach(pin => {\n //MONITOR: fix if this is not set correctly or create Pin.get.note to pull note from backing DEM\n let note = pin.note;\n if (note != null) {\n let noteLower = note.toLowerCase();\n let hasMatch = regEx.test(noteLower);\n if (hasMatch) {\n filtered.push(pin);\n //RwLog.logConsole`MATCH: ${noteLower} pattern: ${regPattern}`);\n } else {\n //RwLog.logConsole`NO MATCH: ${noteLower} pattern: ${regPattern}`);\n }\n }\n });\n }\n\n return filtered;\n }\n\n\n static applyColorFilter(pins: RwPin[], colorHex: string) {\n let filtered: RwPin[] = [];\n\n if (colorHex) {\n if (colorHex.length === 9 && colorHex.endsWith(\"FF\")) {\n colorHex = colorHex.substring(0, 7);\n }\n //console.log(\"applyColorFilter, colorHex\", colorHex);\n\n // Color filtering\n if (colorHex && colorHex.length > 0) {\n pins.forEach(p => {\n let pinColor;\n if (p.baseColor) {\n pinColor = p.baseColor.toUpperCase();\n }\n //console.log(\"applyColorFilter, pinColor\", pinColor);\n if (pinColor) {\n if (colorHex === pinColor) {\n filtered.push(p);\n }\n }\n });\n } else {\n filtered = pins;\n }\n } else {\n filtered = pins;\n }\n\n return filtered;\n }\n\n\n static applyCheckFilter(pins: RwPin[]) {\n let filtered: RwPin[] = [];\n let checkMin = RwPrefUtils.siteFilterCheckMin;\n let checkMax = RwPrefUtils.siteFilterCheckMax;\n let checkWithin = RwPrefUtils.siteFilterCheckWithin;\n //console.log(\"applyCheckFilter\", checkMin, checkMax, checkWithin);\n\n let isMinCheck = checkMin > -100;\n let isMaxCheck = checkMax < 0;\n\n\n if (!isMinCheck && !isMaxCheck) {\n filtered = pins;\n } else {\n let now = moment();\n let minDate = now.clone().add(checkMin, \"days\");\n let maxDate = now.clone().add(checkMax, \"days\");\n\n pins.forEach(p => {\n if (p.site) {\n let site = p.site;\n\n if (checkWithin) {\n if (site.checkDate) {\n let checkMo = moment(site.checkDate);\n if (isMinCheck && isMaxCheck) {\n if (checkMo >= minDate && checkMo <= maxDate) {\n //console.log(\"applyCheckFilter full range\", checkMo.format(\"L LT\"));\n filtered.push(p);\n }\n } else {\n if (isMinCheck && checkMo >= minDate) {\n //console.log(\"applyCheckFilter newer than\", checkMo.format(\"L LT\"));\n filtered.push(p);\n }\n if (isMaxCheck && checkMo <= maxDate) {\n //console.log(\"applyCheckFilter older than\", checkMo.format(\"L LT\"));\n filtered.push(p);\n }\n }\n }\n } else {\n //console.log(\"applyCheckFilter exclude\");\n if (site.checkDate) {\n let checkMo = moment(site.checkDate);\n if (isMinCheck && isMaxCheck) {\n let isWithin = checkMo >= minDate && checkMo <= maxDate;\n if (!isWithin) {\n filtered.push(p);\n }\n } else {\n if (isMinCheck && checkMo <= minDate) filtered.push(p);\n if (isMaxCheck && checkMo >= maxDate) filtered.push(p);\n }\n } else {\n filtered.push(p);\n }\n\n }\n }\n });\n }\n\n //console.log(\"applyCheckFilter return filtered\", filtered.length);\n return filtered;\n }\n\n\n //endregion Filtering\n\n\n //#region Search APIs\n\n updateStartFromSearch(searchResult: RwSearchResult): Promise {\n const SOURCE = \"RwPlannerSpace.updateStartFromSearch\";\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n if (self.globals) {\n const route = self.activeRoute;\n if (route != null) {\n if (searchResult.lat != 0 || searchResult.lng != 0) {\n route.lat = searchResult.lat;\n route.lng = searchResult.lng;\n route.address = searchResult.address;\n route.isDynLoc = false;\n route.path = null;\n route.lastHash = Date.now()\n\n self.globals\n .updateRouteDB(route, true)\n .then(newRoute => {\n //console.log(\"updateStartAtCoord success\", newRoute);\n resolve(true);\n })\n .catch(err => {\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n //console.error(\"updateStartAtCoord fail\", err.message);\n });\n } else {\n this.globals.showSnack('Route start cannot be (0,0)', 'error');\n }\n\n }\n }\n });\n }\n\n\n addStopFromSearch(res: RwSearchResult): Promise {\n const self = this;\n const SOURCE = \"RwPlannerSpace.addStopFromSearch\";\n //console.log(SOURCE, \"res\", res.type, res.name, res.address, res.lat, res.lng);\n\n return new Promise(function (resolve, reject) {\n\n let stop: RwStop;\n let route = self.globals.activeRoute;\n\n switch (res.type) {\n\n case RwSearchType.Web: {\n stop = route.createStop(res.name, res.address, res.lat, res.lng);\n stop = self.updateStopFromSearch(res, stop);\n stop.routeId = route.routeId;\n self.globals\n .addStopDB(stop, route, true, true)\n .then(isAdded => resolve(stop))\n .catch(err => reject(err))\n .finally(() => self.addingStop = false);\n break;\n }\n\n case RwSearchType.Sites: {\n let siteId = res.placeId;\n let site = self.globals.findSite(siteId);\n if (site) {\n stop = route.createStopFromSite(site);\n self.globals\n .addStopDB(stop, route, true, true)\n .then(isAdded => resolve(stop))\n .catch(err => reject(err))\n .finally(() => self.addingStop = false);\n } else {\n RwLog.consoleError(SOURCE, \"WTF: Site Result; Site not found!\");\n }\n break;\n }\n\n case RwSearchType.Tasks: {\n let task = self.globals.tasks.find(t => t.stopId == res.placeId);\n if (task) {\n self.globals\n .addTaskToRoute(task, route, true)\n .then(isAdded => resolve(stop))\n .catch(err => reject(err))\n .finally(() => self.addingStop = false);\n } else {\n RwLog.consoleError(SOURCE, \"WTF: Site Result; Site not found!\");\n }\n break;\n }\n\n default:\n RwLog.consoleError(SOURCE, \"Unexpected type\", res.type);\n break;\n\n }\n\n });\n }\n\n\n addSiteFromSearch(searchResult: RwSearchResult): Promise {\n const SOURCE = \"RwPlannerSpace.addSiteFromSearch\";\n let self = this;\n let lat = searchResult.lat;\n let lng = searchResult.lng;\n\n return new Promise(function (resolve, reject) {\n\n if (!self.addingSite) {\n self.addingSite = true;\n\n let site = new RwSite();\n site.name = searchResult.name;\n site.address = searchResult.address;\n site.phone = searchResult.phone;\n site.lat = lat;\n site.lng = lng;\n site.baseColor = RwPrefUtils.siteColor;\n if (searchResult.portType) site.portType = searchResult.portType;\n if (searchResult.nameId) site.nameId = searchResult.nameId;\n site.visitTime = -1; //RwPrefUtils.serviceTime;\n\n self.globals.addSite(site, true)\n .then(isAdded => {\n if (self.globals.editAfterAdd) self.globals.showSiteEdit(site);\n resolve(isAdded ? site : null);\n })\n .catch(err => {\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n //console.error(\"addSiteFromSearch fail\", err.message);\n })\n .finally(() => {\n self.addingSite = false;\n });\n\n } else {\n RwLog.consoleError(\"WTF: Add Site In Progress\");\n reject(\"WTF: Add Site In Progress\");\n }\n\n });\n }\n\n\n addTaskFromSearch(res: RwSearchResult): Promise {\n const SOURCE = \"RwPlannerSpace.addTaskFromSearch\";\n let self = this;\n\n return new Promise(function (resolve, reject) {\n\n if (!self.addingTask) {\n self.addingTask = true;\n\n let route = self.activeRoute;\n let stop = route.createStop(res.name, res.address, res.lat, res.lng);\n let task = self.updateStopFromSearch(res, stop);\n task.isTask = true;\n task.routeId = RwPrefUtils.accountId;\n\n self.globals.addTaskDB(task, true)\n .then(isAdded => {\n //console.log(\"addTaskFromSearch addTaskDB callback\", isAdded);\n resolve(task);\n })\n .catch(err => {\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n })\n .finally(() => {\n self.addingTask = false;\n });\n } else {\n RwLog.consoleError(\"WTF: Add Task In Progress\");\n reject(\"WTF: Add Task In Progress\");\n }\n });\n }\n\n\n private updateStopFromSearch(res: RwSearchResult, stop: RwStop) {\n if (res.navLat !== 0 && res.navLng !== 0) {\n stop.navLat = res.navLat;\n stop.navLng = res.navLng;\n stop.portType = res.portType;\n if (res.nameId) {\n stop.nameId = res.nameId;\n }\n }\n return stop;\n }\n\n //#endregion Search APIs\n\n\n //#region Data Actions\n\n\n addSiteFromPin(pin: RwPin) {\n const self = this;\n const SOURCE = \"RwPlannerSpace.addSiteFromPin\"\n if (!self.addingSite) {\n\n if (pin && pin.stop) {\n let stop = pin.stop;\n\n let site = new RwSite();\n site.name = stop.name;\n site.address = stop.address;\n site.lat = stop.lat;\n site.lng = stop.lng;\n site.note = stop.note;\n site.baseColor = stop.baseColor;\n site.visitTime = stop.visitTime;\n site.lastHash = Date.now();\n site.phone = stop.phone;\n site.email = stop.email;\n\n //console.log(\"addSiteAtCoord addSite stopId, siteId\", stop.stopId, site.siteId);\n self.globals.addSite(site, false)\n .then(isAdded => {\n //console.log(\"addSiteAtCoord addSite callback\", isAdded);\n\n let priorSiteId = stop.siteId;\n stop.siteId = site.siteId;\n self.globals.updateStopDB(stop)\n .then(isUpdated => {\n //console.log(\"updateStop isUpdated callback\", isUpdated);\n stop.lastHash = Date.now();\n\n })\n .catch(err => {\n //Rollback on error\n stop.siteId = priorSiteId;\n RwLog.error(SOURCE, \"updateStopDB: Unhandled: \\n\" + err ? err.toString() : \"\");\n });\n\n })\n .catch(err => {\n let status = err.code ? err.code : err.status;\n let errText = JSON.stringify(err);\n if (status === 504) {\n RwLog.warn(SOURCE, `${status} \\n\\n error:\\n${errText}`);\n } else {\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n }\n })\n .finally(() => {\n self.addingSite = false;\n });\n } else {\n RwLog.consoleWarn(SOURCE, \"WTF: not stop\")\n }\n } else {\n RwLog.consoleWarn(SOURCE, \"WTF: already adding site?\")\n }\n }\n\n\n checkInStopPin(pin: RwPin): Promise {\n const self = this;\n let stop = pin.stop;\n const route = this.activeRoute;\n\n //DEFER: Make this a transactional stored proc\n\n return new Promise(function (resolve, reject) {\n\n if (stop != null && route != null) {\n\n //Use Transaction CheckIn Op (Add History, Update Stop, Update Site)\n\n let now = new Date();\n let histId = RwSysUtils.guidNew();\n let siteId: string;\n let site = stop.getSite();\n if (site != null) {\n siteId = site.siteId;\n }\n\n let checkSeq = stop.seq;\n let checkCheckDate = stop.checkDate;\n let checkCheckHistId = stop.histId;\n\n stop.seq = 0;\n stop.isComplete = true;\n stop.checkDate = now;\n stop.histId = histId;\n\n self.globals.checkInStopDB(stop, histId, siteId)\n .then(isChecked => {\n //console.log(\"RwPlannerSpace.checkInStopPin isChecked\", isChecked);\n\n if (isChecked) {\n\n if (site != null) {\n site.checkDate = now;\n site.lastHash = Date.now();\n }\n\n let hist = self.createHistory(stop);\n self.globals.addHistLocal(hist);\n\n self.activeRoute.stopCountActive -= 1;\n self.activeRoute.stopCountComplete += 1;\n\n stop.lastHash = Date.now();\n stop.isComplete = true;\n\n //self.setPinSelection(pin, true, false)\n //self.globals.commitStops();\n resolve(true)\n } else {\n stop.isComplete = false;\n stop.seq = checkSeq;\n stop.checkDate = checkCheckDate;\n stop.histId = checkCheckHistId;\n resolve(false)\n }\n\n })\n\n } else {\n RwLog.error(\"RwPlannerSpace.checkInStopPin\", \"checkInStopPin NO Stop | Route\");\n resolve(false);\n }\n });\n }\n\n\n createHistory(stop: RwStop): RwHistory {\n const self = this;\n const route = this.activeRoute;\n let now = new Date();\n let hist = new RwHistory();\n hist.histId = RwSysUtils.guidNew();\n hist.lastHash = Date.now();\n hist.accountId = self.globals.orgId;\n hist.startTime = now;\n hist.name = stop.name;\n hist.type = RwHistTypes.CheckIn;\n hist.stopId = stop.stopId;\n hist.driverId = route.driverId;\n hist.address = stop.address;\n hist.lat = stop.lat;\n hist.lng = stop.lng;\n hist.time = stop.timeToDrive;\n hist.dist = stop.distToDrive;\n hist.BaseColor = stop.baseColor;\n hist.note = stop.note;\n return hist;\n }\n\n\n restoreStopPin(pin: RwPin): Promise {\n const SOURCE = \"RwPlannerSpace.restoreStopPin\";\n\n let stop = pin.stop;\n let route = this.activeRoute;\n\n return new Promise((resolve, reject) => {\n\n if (stop != null && route != null) {\n\n pin.isComplete = false;\n stop.seq = 0;\n stop.isComplete = false;\n stop.timeOfArr = null;\n stop.timeOfDep = null;\n stop.timeToDrive = 0;\n stop.timeToIdle = 0;\n route.stopCountActive += 1;\n route.stopCountComplete -= 1;\n\n this.globals\n .updateStopDB(stop)\n .then(stop => {\n //self.setPinSelection(pin, true, false)\n resolve(true);\n })\n .catch(err => {\n let status = !!err.Code ? err.Code : err.status;\n const message = !(err instanceof RwError) ?\n err.message ? err.message : JSON.stringify(err)\n : err;\n if (status === 403 || status === 504) {\n RwLog.warn(SOURCE, `Error:code:${status} msg:${message}`);\n } else {\n //Rollback on error:\n pin.isComplete = true;\n stop.isComplete = true;\n route.stopCountActive -= 1;\n route.stopCountComplete += 1;\n\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n reject(err);\n }\n\n });\n } else {\n RwLog.error(SOURCE, \"No Stop\");\n reject();\n }\n });\n\n }\n\n\n deleteStopPin(pin: RwPin, stack: string[] = [], skipCommit = false): Promise {\n const SOURCE = \"RwPlannerSpace.deleteStopPin\";\n const self = this;\n return new Promise(function (resolve, reject) {\n\n let stop: RwStop;\n if (pin && pin.stop) stop = pin.stop;\n if (pin && pin.task) stop = pin.task;\n if (stop) {\n\n self.globals.confirmAndDeleteStop(stop, [...stack, SOURCE], skipCommit)\n .then(isDeleted => {\n if (isDeleted) {\n\n if (self.isSelected(pin)) {\n self.setPinSelection(pin, false)\n //self.clearPinSelections();\n }\n }\n resolve(isDeleted);\n })\n .catch(err => {\n reject(err);\n });\n\n } else {\n RwLog.consoleError(\"WTF: NO STOP\");\n reject(\"NOT A STOP\");\n }\n });\n }\n\n\n onSiteDelete(pin: RwPin): Promise {\n const self = this;\n const SOURCE = \"RwPlannerSpace.onSiteDelete\";\n //console.log(SOURCE);\n\n return new Promise(function (resolve, reject) {\n\n let isSite = pin && pin.site;\n if (isSite) {\n\n self.globals.confirmAndDeleteSite(pin.site)\n .then(isDeleted => {\n if (isDeleted) {\n self.clearPinSelections();\n }\n resolve(isDeleted);\n })\n .catch(err => {\n reject(err);\n });\n }\n });\n }\n\n\n // editSitePin(pin: RwPin) {\n // if (pin && pin.site) {\n // let site = pin.site;\n // if(site){\n // this.\n // }\n // // if (this.selectedPin != pin && !suppressPopup) {\n // // //if (theStore.getters.selectedPins != pin && !suppressPopup) {\n // // this.setPinSelection(pin, true, false);\n // // }\n //\n // //Set global selectedSite\n // //theStore.dispatch(\"selectedSite\", site).catch();\n //\n // //console.warn(\"onEditSiteClick plan.showSiteEdit\");\n // //this.showSiteEdit = true;\n // }\n // }\n\n\n onTaskDelete(pin: RwPin): Promise {\n const SOURCE = \"RwPlannerSpace.deleteTaskPin\";\n const self = this;\n return new Promise(function (resolve, reject) {\n\n let task: RwStop;\n if (pin && pin.task) task = pin.task;\n if (task) {\n self.globals.confirmAndDeleteTask(task)\n .then(isDeleted => {\n if (isDeleted) {\n self.clearPinSelections();\n }\n resolve(isDeleted);\n })\n .catch(err => {\n reject(err);\n });\n\n } else {\n RwLog.consoleError(\"WTF: NO TASK\");\n reject(\"NOT A TASK\");\n }\n });\n }\n\n\n //#endregion Data Actions\n\n\n //#region Route Actions\n\n onRouteView(route: RwRoute) {\n //console.log(\"planSpace.onRouteView\");\n this.globals.selectedRoute = route;\n\n let pin = this.startPin;\n if (pin && pin.route && pin.route.routeId === route.routeId) {\n this.setPinSelection(pin, true);\n } else {\n let newPin = RwPin.fromRoute(route);\n this.setPinSelection(newPin, true, true);\n }\n\n if (!this.globals.showPinPanel) {\n this.forceShowDataView();\n }\n\n }\n\n\n onRouteEdit(route: RwRoute) {\n this.globals.showRouteEdit(route)\n }\n\n onRouteStopCount(route: RwRoute): Promise {\n let SOURCE = \"RwPlannerSpace.onRouteStopCount\";\n let self = this;\n return new Promise(function (resolve, reject) {\n self.globals.getTotalStopCount(route)\n .then(stopCount => {\n if (stopCount) {\n self.checkedRouteStopCount = stopCount.TotalCount;\n // console.warn(\"active Stop Count gotten, returns:\", stopCount);\n }\n resolve(stopCount);\n })\n .catch(err => {\n reject(err);\n });\n });\n }\n\n checkAndRemoveDupes(stops: RwStop[]): RwStop[] {\n const SOURCE = \"RwPlannerSpace.checkAndRemoveDupes\";\n if (stops && stops.length > 0) {\n //let dupeStopTest = new RwStop(stops[0].toJSON());\n //stops.push(dupeStopTest);\n let sids = stops.map(s => s.stopId);\n let sidSet = Array.from(new Set(sids));\n if (sids.length === sidSet.length) {\n return stops;\n } else {\n // Remove dupes and return array\n RwLog.warn(SOURCE, `Dupes found before opt, removing duplicates from rt ${stops[0].routeId}`);\n let uniqueStops = new Array();\n sidSet.forEach(sid => {\n let stop = stops.find(s => s.stopId === sid);\n if (stop) {\n uniqueStops.push(stop);\n }\n })\n return uniqueStops;\n }\n } else {\n return [];\n }\n }\n\n\n onOptimize(_stops: RwStop[] = undefined): Promise {\n const SOURCE = \"RwPlannerSpace.onOptimize\";\n const self = this;\n\n return new Promise(function (resolve, reject) {\n\n if (self.activeRoute) {\n const route = self.activeRoute;\n route.updateTimeFrame();\n const stops = self.checkAndRemoveDupes(_stops ?? route.getActiveStops());\n\n if (stops && stops.length > 0) {\n if (((route.lat != 0) || (route.lng != 0)) && ((route.lng != undefined) && (route.lat != undefined))) {\n dal.addBusy();\n\n self.isOptimizing = true;\n RwTaskOptimize.optAsync(route, stops)\n .then(function (route: RwRoute) {\n //console.log(\"onOptimize\", route);\n\n //xFOCUS: OPT 1: Trigger Route Update to Display Route\n self.globals.commitStops();\n\n //self.refreshRouteInfo(route);\n //snack.ShowSnackBar(\"route returned\");\n //console.log(\"route returned\", route);\n\n self.totalTimeText = route.totalTimeString;\n self.travelTimeText = route.travelTimeText;\n self.totalDistText = route.totalDistText;\n\n resolve(true);\n\n })\n .catch(function (e) {\n self.globals.showSnack(\"Optimization Error\", \"error\");\n //snack.ShowSnackBar(\"error returned:\" + e.toString());\n let routeJson = JSON.stringify(route.toJSON());\n RwLog.warn(SOURCE, `Unhandled optAsync route:\\n${routeJson} \\n\\nerr:\\n${e}`);\n reject(e);\n })\n .finally(() => {\n dal.removeBusy();\n self.isOptimizing = false;\n })\n } else {\n self.isOptimizing = false;\n RwLog.consoleError(\"Invalid start [0,0] or undefined\");\n reject(\"No Active Route\");\n }\n } else {\n self.isOptimizing = false;\n RwLog.consoleError(\"No Stops\");\n reject(\"No Active Route\");\n }\n } else {\n self.isOptimizing = false;\n RwLog.consoleError(\"No Active Route\");\n reject(\"No Active Route\");\n }\n });\n }\n\n //#endregion Route Actions\n\n // Overflow Actions Region\n stopSkedText(pin: RwPin): string {\n let text: string;\n if (pin && pin.stop) {\n let stop = pin.stop;\n text = stop.skedText;\n }\n return text;\n }\n\n isStopScheduled(pin: RwPin): boolean {\n let gotSked = false;\n if (pin && pin.stop) {\n let stop = pin.stop;\n gotSked = stop.isScheduled;\n }\n return gotSked;\n }\n\n canStopAddSite(pin: RwPin): boolean {\n let canShow = false;\n if (pin && pin.stop) {\n let stop = pin.stop;\n canShow = !stop.isSited;\n }\n return canShow;\n }\n\n canShowSkeds(pin: RwPin): boolean {\n let show = false;\n let route = this.activeRoute;\n if (pin && pin.stop && route) {\n let stop = pin.stop;\n show = (stop.isMarkedFirst(route) || stop.isMarkedFinal(route)) == false;\n }\n return show;\n }\n\n hasDropStop(pin: RwPin): boolean {\n let hasDrops = false;\n let route = this.activeRoute;\n if (pin && pin.stop && route) {\n let stop = pin.stop;\n hasDrops = stop.hasDrops();\n }\n return hasDrops;\n }\n\n canShowMarkFinal(pin: RwPin): boolean {\n let show = false;\n let route = this.activeRoute;\n if (pin && pin.stop && route) {\n let stop = pin.stop;\n show = !stop.isMarkedFinal(route);\n }\n return show;\n }\n\n canShowMarkFirst(pin: RwPin): boolean {\n let show = false;\n let route = this.activeRoute;\n if (pin && pin.stop && route) {\n let stop = pin.stop;\n show = !stop.isMarkedFirst(route);\n }\n return show;\n }\n\n canShowUnmarkFirst(pin: RwPin): boolean {\n let show = false;\n let route = this.activeRoute;\n if (pin && pin.stop && route) {\n let stop = pin.stop;\n show = route.isFirstStop(stop)\n }\n return show;\n }\n\n canShowUnmarkFinal(pin: RwPin): boolean {\n let show = false;\n let route = this.activeRoute;\n if (pin && pin.stop && route) {\n let stop = pin.stop;\n show = route.isFinalStop(stop)\n }\n return show;\n }\n\n onStopAddSite(pin: RwPin) {\n this.addSiteFromPin(pin);\n }\n\n onStopAddSked(pin: RwPin) {\n if (pin && pin.stop) {\n let stop = pin.stop;\n this.globals\n .multiSked(false, [stop])\n .then((isAdded) => {\n if (isAdded) {\n stop.lastHash = Date.now();\n pin.isSked = true;\n pin.priority = stop.priority;\n pin.lastHash = Date.now();\n this.globals.commitStops();\n }\n });\n }\n }\n\n onStopRemoveSked(pin: RwPin) {\n if (pin && pin.stop) {\n let stop = pin.stop;\n\n this.globals\n .multiSkedDB(false, [stop.stopId], RwSysUtils.guidEmpty(), stop.priority, 0, 0)\n .then((isCommitted) => {\n stop.skedId = undefined;\n stop.openTime = 0;\n stop.closeTime = 0;\n stop.lastHash = Date.now();\n pin.isSked = false;\n this.globals.commitStops();\n });\n }\n }\n\n\n onStopMarkFirst(pin: RwPin) {\n // console.warn(\"Previous route.firstStopId: \", this.activeRoute.firstStopId);\n let route = this.activeRoute;\n // console.warn(\"Route.ismanOrder: \", route.isManOrder);\n if (route.isManOrder) {\n this.globals.showConfirmDialog(\"Confirm Mark First\", \"Marking this stop First will disable Manual Order and revert the Route settings to Optimize. If you want to keep your Manual Order, hit Back and set your Stop Order in the Route Order Window.\", \"Continue\", \"Back\")\n .then(onConfirm => {\n if (onConfirm) {\n route.isManOrder = false;\n this.markFirst(pin);\n }\n })\n } else {\n this.markFirst(pin);\n }\n\n }\n\n markFirst(pin: RwPin) {\n if (pin && pin.stop) {\n let stop = pin.stop;\n let route = this.activeRoute;\n if (stop && route) {\n let priorId = route.firstStopId;\n route.firstStopId = stop.stopId;\n\n if (route.firstStopId == route.finalStopId) {\n route.finalStopId = \"\";\n }\n this.globals.updateRouteDB(route, false, false, false, true)\n .then(() => {\n pin.isFirst = true;\n if (priorId && priorId.length > 0) {\n let priorPin = this.stopPins.find(p => p.eid === priorId);\n if (priorPin) {\n priorPin.isFirst = false;\n }\n }\n this.globals.commitStops();\n });\n }\n }\n }\n\n\n onStopMarkFinal(pin: RwPin) {\n let route = this.activeRoute;\n //console.error(\"Route.ismanOrder: \", route.isManOrder);\n if (route.isManOrder) {\n\n this.globals.showConfirmDialog(\"Confirm Mark Final\", \"Marking this stop Final will disable Manual Order and revert the Route settings to Optimize. If you want to keep your Manual Order, hit Back and set your Stop Order in the Route Order Window.\", \"Continue\", \"Back\")\n .then(onConfirm => {\n if (onConfirm) {\n route.isManOrder = false;\n this.markFinal(pin);\n }\n })\n } else {\n this.markFinal(pin);\n }\n }\n\n markFinal(pin: RwPin) {\n if (pin && pin.stop) {\n let stop = pin.stop;\n let route = this.activeRoute;\n if (stop && route) {\n let priorId = route.finalStopId;\n route.finalStopId = stop.stopId;\n if (route.firstStopId == route.finalStopId) {\n route.firstStopId = \"\";\n }\n this.globals\n .updateRouteDB(route, false, false, false, true)\n .then(() => {\n pin.isFinal = true;\n if (priorId && priorId.length > 0) {\n let priorPin = this.stopPins.find(p => p.eid === priorId);\n if (priorPin) {\n priorPin.isFinal = false;\n }\n }\n this.globals.commitStops();\n })\n }\n }\n }\n\n onStopUnmarkFirst(pin: RwPin) {\n let route = this.activeRoute;\n if (route) {\n route.firstStopId = \"\";\n this.globals\n .updateRouteDB(route, false, false, false, true)\n .then(() => {\n pin.isFirst = false;\n this.globals.commitStops();\n })\n }\n }\n\n\n onStopUnmarkFinal(pin: RwPin) {\n let route = this.activeRoute;\n if (stop && route) {\n route.finalStopId = \"\";\n this.globals\n .updateRouteDB(route, false, false, false, true)\n .then(() => {\n pin.isFinal = false;\n this.globals.commitStops();\n })\n }\n }\n\n onStopCheckIn(pin: RwPin, fetchHistory: boolean = false, viewCheckInCallback = null) {\n if (pin && pin.stop) {\n if (!pin.stop.note || pin.stop.note.length <= 1000) {\n this.checkInStopPin(pin)\n .then(() => {\n this.globals.commitStops();\n\n if (fetchHistory) {\n const SOURCE = \"RwPlannerSpace.onStopCheckIn\";\n RwTaskHistory.getHistoryItem(pin.stop.histId)\n .then(histItem => {\n if (histItem) {\n this.globals.selectedHistoryItem = histItem;\n if (viewCheckInCallback) viewCheckInCallback();\n }\n })\n .catch((err) => {\n RwLog.warn(SOURCE, `Error getting history item ${pin.stop.histId} for stop ${pin.stop.stopId} \\n\\n ${JSON.stringify(err)}`);\n });\n }\n })\n .catch(err => {\n this.globals.genericDialog.title = \"Error updating stop.\";\n this.globals.genericDialog.text = err.message;\n this.globals.genericDialog.icon = \"error\";\n this.globals.genericDialog.show = true;\n });\n } else {\n this.globals.showSnack(\"Please shorten note to 1000 characters or less and try again.\", \"error\");\n }\n } else {\n RwLog.error(\"RwPlannerMap.onCheckInClick\", \"no stop \");\n }\n }\n\n\n onStopRestore(pin: RwPin) {\n if (pin && pin.stop) {\n this.restoreStopPin(pin)\n .then(res => this.globals.commitStops())\n .catch(err => {\n this.globals.genericDialog.title = \"Error restoring stop.\";\n this.globals.genericDialog.text = err.message;\n this.globals.genericDialog.icon = \"error\";\n this.globals.genericDialog.show = true;\n });\n }\n }\n\n isStopCompleted(pin: RwPin): boolean {\n let isSited = false;\n if (pin && pin.stop) {\n let stop = pin.stop;\n isSited = stop.isComplete;\n }\n return isSited;\n }\n\n isSiteRouted(pin: RwPin): boolean {\n let isRouted = false;\n if (pin && pin.site) {\n let site = pin.site;\n isRouted = this.activeRoute.isRouted(site);\n }\n return isRouted;\n }\n\n onSiteToPickedRoute(site: RwSite, route: RwRoute) {\n const SOURCE = \"RwPlannerSpace.onSiteToPickedRoute\";\n if (route && site) {\n let stop = route.createStopFromSite(site);\n this.globals.targetSelectId = stop.stopId;\n this.globals.addStopDB(stop, route, false, true)\n .catch(err => RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\"))\n .finally(() => this.addingStop = false);\n }\n }\n\n // deleteOnMove = false;\n\n onTaskToPickedRoute(task: RwStop, route: RwRoute) {\n const SOURCE = \"RwPlannerSpace.onTaskToPickedRoute\";\n if (route && task) {\n this.globals.targetSelectId = task.stopId;\n this.globals.addTaskToRoute(task, route, false)\n .catch(err => RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\"))\n .finally(() => {\n this.addingStop = false;\n // if(this.deleteOnMove){\n // this.globals.deleteTasks([task.stopId])\n // // .then(res => {\n // // if (res.length 1) {\n // // self.globals.showSnack(`Task successfully moved`, \"success\");\n // // }\n // // })\n // .catch(err => {\n // self.globals.showSnack(`Task added to Route, but not deleted from Tasks List`, \"error\");\n // });\n // this.deleteOnMove = false;\n }\n );\n }\n // if (route && pin && pin.task) {\n // let task = pin.task;\n // this.globals.addTaskToRoute(task, route);\n }\n\n checkHistLimitPopups(route: RwRoute) {\n // console.warn(\"checkHistLimitPopups called in Plan Space for route: \", route.name);\n let stopCount: number = 0;\n this.onRouteStopCount(route)\n .then(count => {\n // console.warn(\"historyCount for route is:\", this.checkedRouteStopCount);\n stopCount = this.checkedRouteStopCount;\n if (stopCount >= 500) {\n this.globals.prompt500Popup.push(route.routeId)\n this.globals.showLimitPopup = true;\n }\n if (stopCount >= 450 && stopCount < 500 && !this.globals.hide450Popup && !this.globals.warned450Popup.includes(route.routeId)) {\n this.globals.prompt450Popup.push(route.routeId)\n this.globals.showLimitPopup = true;\n let idArray = this.globals.warned450Popup;\n idArray.push(route.routeId);\n this.globals.warned450Popup = idArray;\n }\n })\n\n }\n\n onSiteToRoute(pin: RwPin) {\n const SOURCE = \"RwPlannerSpace.onSiteToRoute\";\n let route = this.activeRoute;\n if (route && pin && pin.site) {\n let stop = route.createStopFromSite(pin.site);\n this.globals.targetSelectId = stop.stopId;\n this.globals.addStopDB(stop, route, false, true)\n .catch(err => {\n if (this.globals.checkNotHandled(err)) RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\");\n })\n .finally(() => this.addingStop = false);\n }\n this.checkHistLimitPopups(this.activeRoute);\n }\n\n onTaskToRoute(pin: RwPin) {\n let route = this.activeRoute;\n if (route && pin && pin.task) {\n let task = pin.task;\n this.globals.addTaskToRoute(task, route);\n }\n this.checkHistLimitPopups(this.activeRoute);\n }\n\n // DropStops\n onAddDropStop(item) {\n this.selectedPin = item;\n this.stopDropOrigin = item instanceof RwPin ? item.stop : item;\n this.showDropSelect = true;\n }\n\n onRemoveDropStop(item) {\n\n const stop = (item as RwPin)?.stop;\n\n if (stop) {\n const drop = stop.getDrop();\n if (drop) {\n this.globals.showConfirmDialog(`Remove Drop Stop for ${stop.name}`, `Are you sure you want to remove the drop stop for ${stop.name}?`, \"Confirm\", \"Cancel\")\n .then(confirm => {\n if (confirm) {\n stop.removeDrop(drop.stopId)\n .then(() => {\n this.globals.syncDelta(stop.routeId);\n })\n }\n });\n }\n }\n\n\n }\n\n getDropStopName(item): string {\n const stop = item instanceof RwPin ? item.stop : null;\n const dropStop = stop?.getDrop();\n if (dropStop) {\n return dropStop.name;\n }\n return \"\";\n }\n\n canShowRemoveDropStop(item): boolean {\n const stop = item instanceof RwPin ? item.stop : item;\n return !!stop.getDropIds();\n }\n\n addTaskFromPin(pin: RwPin, resolve: any = () => null, reject: any = () => null) {\n const SOURCE = \"RwPlannerSpace.addTaskFromPin\"\n if (pin && pin.stop) {\n let stop = pin.stop;\n let task = new RwStop();\n\n task.name = stop.name;\n task.address = stop.address;\n task.lat = stop.lat;\n task.lng = stop.lng;\n task.note = stop.note;\n task.email = stop.email;\n task.phone = stop.phone;\n task.baseColor = stop.baseColor;\n task.visitTime = stop.visitTime;\n task.lastHash = Date.now();\n task.isTask = true;\n task.routeId = RwPrefUtils.userId;\n\n this.globals.addTaskDB(task, false)\n .then(isAdded => {\n this.globals.updateStopDB(stop)\n .then(isUpdated => {\n stop.lastHash = Date.now()\n resolve();\n })\n .catch(err => RwLog.error(\"RwPlannerSpace.checkInStopPin\", \"Unhandled: \" + err ? err.toString() : \"\"));\n })\n .catch(err => {\n let status = err.code ? err.code : err.status;\n if (status === 504) {\n RwLog.warn(SOURCE, \"Timeout Error 504: \" + err ? err.toString() : \"\")\n } else {\n RwLog.error(SOURCE, \"Unhandled: \" + err ? err.toString() : \"\")\n }\n reject();\n });\n } else {\n RwLog.consoleWarn(SOURCE, \"WTF: not stop\")\n reject();\n }\n };\n\n getBillingInfos() {\n\n let SOURCE = \"RwPlanSpace.getBillingInfos\";\n\n let isOwner = this.globals.isDriver == false;\n if (isOwner || this.globals.hasActiveFlexSku) {\n RwTaskBillingProfile.GetBillingProfile()\n .then((profile) => {\n // console.warn(\"Billing Profile gotten:\", profile.UpdatePaymentUrl);\n if (profile.ProStatus) {\n this.globals.isAutoRenewing = profile.ProStatus.IsAutoRenewing;\n PurchSpace.pricePerBaseAmt = profile.ProStatus.BasePriceAmount;\n PurchSpace.pricePerDriverAmt = profile.ProStatus.DriverPriceAmount;\n PurchSpace.pricePerTeamAmt = profile.ProStatus.TeamPriceAmount;\n }\n this.updatePaymentUrl = profile.UpdatePaymentUrl;\n this.billingPortalUrl = profile.BillingPortalUrl;\n if (profile.PaymentMethod) {\n this.maskedCardInfo = profile.PaymentMethod.MaskedCard;\n this.cardExpiry = profile.PaymentMethod.ExpirationMonth + '/' + profile.PaymentMethod.ExpirationYear;\n\n this.cardExpiryMonth = profile.PaymentMethod.ExpirationMonth;\n this.cardExpiryYear = profile.PaymentMethod.ExpirationYear;\n this.cardExpiryMonthNum = Number(profile.PaymentMethod.ExpirationMonth);\n this.cardExpiryYearNum = Number(profile.PaymentMethod.ExpirationYear);\n // DATA FOR TESTING BELOW\n // self.cardExpiryMonth = '03';\n // self.cardExpiryYear = '2021';\n // self.cardExpiryMonthNum = 3;\n // self.cardExpiryYearNum = 2021;\n // //END TESTING DATA\n }\n this.currentMonthNum = new Date().getMonth() + 1;\n this.currentYearNum = new Date().getFullYear();\n // console.warn(\"cardexpiryMonthStr: \", self.cardExpiryMonth, \" cardexpiryYearStr: \", self.cardExpiryYear);\n // console.warn(\"cardexpiryMonthNum: \", self.cardExpiryMonthNum, \" cardExpiryYearNum: \", self.cardExpiryYearNum);\n // console.warn(\"currentMonthNum: \", self.currentMonthNum, \" currentYearNum: \", self.currentYearNum);\n })\n .catch(err => {\n RwLog.consoleError(SOURCE, \"WTF: get billing profile error\", err.toString());\n });\n }\n\n }\n\n get zoomLevel(): number {\n // console.warn(\"zoom level planSpace get: \", theStore.getters.zoomLevel);\n return theStore.getters.zoomLevel;\n }\n\n set zoomLevel(val: number) {\n // console.warn(\"zoom level planSpace set: \", val);\n theStore.dispatch(\"zoomLevel\", val);\n }\n\n\n get changePin(): RwPin {\n return theStore.getters.changePin;\n }\n\n set changePin(val: RwPin) {\n theStore.dispatch(\"changePin\", val);\n }\n\n}\n\nexport default new RwPlannerSpace();","import theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport theStore from \"@/store\"\n\n\nexport class RwRouteSpace {\n //isNewRoute: boolean = false;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n isMultiMode = false;\n\n get selectedRouteSpace(): RwRoute {\n return theStore.getters.selectedRouteSpace;\n }\n\n set selectedRouteSpace(driver: RwRoute) {\n theStore.dispatch(\"selectedRouteSpace\", driver);\n }\n\n selectedRoutes: RwRoute[] = [];\n\n\n}\n\nexport default new RwRouteSpace();\n\n","import theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwRoutePick} from \"@/app/dem/RwRoute\";\n\n\nexport class RwSiteSpace {\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n selectedSites: RwSite[] = [];\n\n get showSiteMultiColor(): boolean {\n return theStore.getters.showSiteMultiColor;\n }\n\n set showSiteMultiColor(val: boolean) {\n theStore.dispatch(\"showSiteMultiColor\", val);\n }\n\n get selectedSite(): RwSite {\n return theStore.getters.selectedSite;\n }\n\n set selectedSite(val: RwSite) {\n theStore.dispatch(\"selectedSite\", val);\n }\n\n get showSiteRoutePicker(): boolean {\n return theStore.getters.showSiteRoutePicker;\n }\n\n set showSiteRoutePicker(val: boolean) {\n theStore.dispatch(\"showSiteRoutePicker\", val);\n }\n\n pendingRoutePick;\n\n showRoutePicker(srcId: string): Promise {\n this.showSiteRoutePicker = true;\n //console.log(\"showRoutePicker srcId m_routePickerSrcId\", srcId, self.m_routePickerSrcId);\n return new Promise((resolve) => {\n this.pendingRoutePick = resolve;\n });\n }\n\n // get showSiteEdit(): boolean { return theStore.getters.showSiteEdit; }\n // set showSiteEdit(val: boolean) { theStore.dispatch(\"showSiteEdit\", val); }\n //\n // get showSiteDelete(): boolean { return theStore.getters.showSiteDelete; }\n // set showSiteDelete(val: boolean){ theStore.dispatch(\"showSiteDelete\", val); }\n //\n // get showSiteRelocate():boolean {return theStore.getters.showSiteRelocate; }\n // set showSiteRelocate(val: boolean){ theStore.dispatch(\"showSiteRelocate\", val); }\n}\n\nexport default new RwSiteSpace();\n","import theStore from \"@/store\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwSked} from \"@/app/dem/RwSked\";\n\n\nexport class RwSkedSpace {\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n\n get selectedSked(): RwSked {\n return theStore.getters.selectedSked;\n }\n\n set selectedSked(val: RwSked) {\n theStore.dispatch(\"selectedSked\", val);\n }\n\n selectedSkeds: RwSked[] = [];\n\n formatPriority(priority: number) {\n let val = Math.floor(priority * 10);\n val = (val == 0) ? val = 1 : val;\n return val;\n }\n\n\n}\n\nexport default new RwSkedSpace();\n","import {SubTeamModel} from \"@/app/dem/Drivers/CreateBulkDriversResponse\";\n\nexport default interface GetSubTeamsResponseModel {\n SubTeams: Array;\n ErrorCode: GetSubTeamsError;\n}\n\nexport enum GetSubTeamsError {\n None = 0,\n NoFlex\n}","import theStore from \"@/store\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTaskLicense} from \"@/app/dal/RwTaskLicense\";\nimport {RwSubTeam} from \"@/app/dem/RwSubTeam\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport {\n CheckMigrateReturnModel,\n CreateNewSubTeamModel,\n CreateNewSubTeamReturnModel,\n SubTeamModel\n} from \"@/app/dem/Drivers/CreateBulkDriversResponse\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport GetSubTeamsResponseModel, {GetSubTeamsError} from \"@/app/dem/Drivers/GetSubTeamsResponseModel\";\n\nexport class RwSubTeamSpace {\n /* store */\n\n get subTeams(): RwSubTeam[] {\n return theStore.getters.subTeams;\n }\n\n set subTeams(val: RwSubTeam[]) {\n theStore.dispatch(\"subTeams\", val).catch();\n }\n\n get showSubTeamDock(): boolean {\n return theStore.getters.showSubTeamDock;\n }\n\n set showSubTeamDock(val: boolean) {\n RwPrefUtils.showSubTeamDock = val;\n theStore.dispatch(\"showSubTeamDock\", val).catch();\n }\n\n get showSubTeamPop(): boolean {\n return theStore.getters.showSubTeamPop;\n }\n\n set showSubTeamPop(val: boolean) {\n theStore.dispatch(\"showSubTeamPop\", val).catch();\n }\n\n get selectedSubTeam(): RwSubTeam {\n return theStore.getters.selectedSubTeam;\n }\n\n set selectedSubTeam(val: RwSubTeam) {\n theStore.dispatch(\"selectedSubTeam\", val).catch();\n }\n\n get showSubTeamEdit(): boolean {\n return theStore.getters.showSubTeamEdit;\n }\n\n set showSubTeamEdit(val: boolean) {\n theStore.dispatch(\"showSubTeamEdit\", val);\n }\n\n get popupView(): boolean {\n return theStore.getters.popupView;\n }\n\n set popupView(val: boolean) {\n RwPrefUtils.subTeamPopupView = val;\n theStore.dispatch(\"popupView\", val);\n }\n\n loadSubTeams() {\n this.getSubTeams()\n .then(data => this.subTeams = data as RwSubTeam[])\n .catch(err => {\n RwLog.error(\"RwSubTeamsList.refreshSubTeams\", JSON.stringify(err));\n });\n }\n\n getSubTeams(): Promise {\n const SOURCE = \"RwSubTeamSpace.RwGetSubTeams\";\n\n return RwTaskLicense.getSubTeams()\n .then((data: GetSubTeamsResponseModel) => {\n if (data && !data.ErrorCode && data.SubTeams) {\n const subTeams = data.SubTeams.map((item: SubTeamModel) => {\n const subTeam = new RwSubTeam();\n subTeam.imageUrl = item.AvatarUrl;\n subTeam.name = item.AccountName;\n subTeam.dispatcher = item.LoginName;\n subTeam.dispatcherEmail = item.UserName;\n subTeam.domain = item.Domain;\n subTeam.driverCount = item.DrvCount;\n subTeam.lastUpdated = item.LastUpdated;\n subTeam.checkins = [];\n subTeam.routes = [];\n\n subTeam.userId = item.UserId;\n subTeam.orgId = item.OrgId;\n subTeam.accountId = item.AccountId;\n subTeam.avColor = item.AvColor ? item.AvColor : '#ff5963';\n subTeam.avInits = item.AvInits ?? \"\";\n subTeam.avType = item.AvType ? item.AvType : 0;\n\n return subTeam;\n });\n return subTeams;\n } else if (data.ErrorCode === GetSubTeamsError.NoFlex) {\n theGlobals.showSnack(\"Sorry, only Flex accounts can use sub teams.\", \"error\");\n return [];\n } else {\n return [];\n }\n })\n .catch(err => {\n if (theGlobals.checkNotHandled(err)) {\n const msg = `Unhandled: \\n${err}`;\n if ((err.error && (err.error.code === \"ECONNABORTED\" || err.error.message === \"Network Error\"))\n || err.error === \"Network Error\") {\n RwLog.warn(SOURCE, `Network Error: ${msg}`);\n } else {\n RwLog.error(SOURCE, msg);\n }\n }\n return [];\n });\n }\n\n createSubTeam(subTeamData: { dispatcherName: string, name: string, domain: string, dispatcherEmail: string, dispatcherPassword: string }): Promise {\n const createSubTeamModel = {\n DispatcherName: subTeamData.dispatcherName,\n TeamName: subTeamData.name,\n TeamDomain: subTeamData.domain,\n DispatcherEmail: subTeamData.dispatcherEmail,\n DispatcherPassword: subTeamData.dispatcherPassword\n } as CreateNewSubTeamModel;\n return RwTaskLicense.createNewSubTeam(createSubTeamModel)\n .then((model: CreateNewSubTeamReturnModel) => model);\n }\n\n saveSubTeam(subTeam: RwSubTeam): Promise {\n const model = {\n UserId: subTeam.userId,\n AccountId: subTeam.accountId,\n OrgId: subTeam.orgId,\n UserName: subTeam.dispatcherEmail,\n LoginName: subTeam.dispatcher,\n AccountName: subTeam.name,\n DrvCount: subTeam.driverCount,\n Domain: subTeam.domain,\n LastUpdated: new Date(),\n AvatarUrl: subTeam.imageUrl\n } as SubTeamModel;\n return RwTaskLicense.updateSubTeam(model);\n }\n\n deleteSubTeam(orgId: string) {\n return RwTaskLicense.deleteSubTeam(orgId);\n }\n\n checkMigrate(dispatcher: string, password: string): Promise {\n return RwTaskLicense.checkMigrateTeam(dispatcher, password);\n }\n\n migrate(dispatcher: string, token: string): Promise {\n return RwTaskLicense.migrateTeam(dispatcher, token);\n }\n}\n\nexport default new RwSubTeamSpace();","import { VApp } from 'vuetify/lib/components/VApp';\nimport { VAppBar } from 'vuetify/lib/components/VAppBar';\nimport { VAppBarNavIcon } from 'vuetify/lib/components/VAppBar';\nimport { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBadge } from 'vuetify/lib/components/VBadge';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFooter } from 'vuetify/lib/components/VFooter';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VNavigationDrawer } from 'vuetify/lib/components/VNavigationDrawer';\nimport { VProgressLinear } from 'vuetify/lib/components/VProgressLinear';\nimport { VSnackbar } from 'vuetify/lib/components/VSnackbar';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VApp,{ref:\"app\",staticClass:\"elevation-0\",attrs:{\"id\":\"app\"}},[_c('input',{ref:\"filePicker\",staticStyle:{\"display\":\"none\"},attrs:{\"type\":\"file\",\"accept\":\"image/png, image/jpeg\"},on:{\"change\":function($event){return _vm.onFileUpload($event)}}}),(_vm.showNavDrawer)?_c(VNavigationDrawer,{attrs:{\"color\":_vm.globals.backColorBar,\"app\":\"\",\"clipped\":\"\",\"mini-variant\":\"\",\"mobile-breakpoint\":\"512\",\"hide-overlay\":\"\"},model:{value:(_vm.globals.isOpenDrawer),callback:function ($$v) {_vm.$set(_vm.globals, \"isOpenDrawer\", $$v)},expression:\"globals.isOpenDrawer\"}},[_c('div',{class:[_vm.globals.theme, _vm.globals.backColorBar],staticStyle:{\"height\":\"calc(100% - 64px)\",\"overflow-y\":\"auto\"}},[_c(VList,{staticClass:\"py-0\",attrs:{\"flat\":\"\",\"dense\":\"\"}},[_c(VListItemGroup,{class:_vm.globals.backColorBar,staticStyle:{\"height\":\"100%\"},attrs:{\"color\":\"primary\"}},[(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({staticClass:\"highlighted\",class:`${_vm.idxSidebar === 0 ? 'custom-active' : _vm.isDarkMode ? 'custom-inactive-dark' : 'custom-inactive-light'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToPlanner}},on),[_c(VListItemAction,{staticClass:\"justify-center\"},[_c(VIcon,[_vm._v(\"mdi-home\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Planner\")])],1)],1)]}}],null,false,645007468)},[_c('span',[_vm._v(\"Planner\")])]):_vm._e(),(_vm.isTeam)?_c(VDivider):_vm._e(),(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 1 ? 'custom-active' : _vm.isDarkMode ? 'custom-inactive-dark' : 'custom-inactive-light'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToRoutes}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-routes\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Routes\")])],1)],1)]}}],null,false,2719616951)},[_c('span',[_vm._v(\"Routes\")])]):_vm._e(),(_vm.globals.flexDisplay>0 && _vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDisp && _vm.isOwner),expression:\"isDisp && isOwner\"}],class:`${_vm.idxSidebar === 2 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToUsers}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-account-multiple\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Users\")])],1)],1)]}}],null,false,893901324)},[_c('span',[_vm._v(\"Users\")])]):_vm._e(),(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 3 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSites}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-star\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Favorites\")])],1)],1)]}}],null,false,90909251)},[_c('span',[_vm._v(\"Favorites\")])]):_vm._e(),(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.isDisp),expression:\"isDisp\"}],class:`${_vm.idxSidebar === 4 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToTasks}},on),[_c(VListItemAction,[(_vm.taskCount === 0)?_c(VIcon,[_vm._v(\"mdi-clipboard-check\")]):_c(VBadge,{attrs:{\"dot\":\"\",\"color\":\"primary\"}},[_c(VIcon,[_vm._v(\"mdi-clipboard-check\")])],1)],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Tasks\")])],1)],1)]}}],null,false,1490215859)},[_c('span',[_vm._v(\"Tasks\")])]):_vm._e(),(_vm.isTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 5 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSkeds}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-calendar-clock\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Schedules\")])],1)],1)]}}],null,false,2992899429)},[_c('span',[_vm._v(\"Schedules\")])]):_vm._e(),(_vm.isTeam)?_c(VDivider):_vm._e(),_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 6 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToReports}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-file-chart\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Reports\")])],1)],1)]}}],null,false,2129436074)},[_c('span',[_vm._v(\"Reports\")])]),(!_vm.globals.showOnboardUploadsPopupActive)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 7 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.onUploadsPopupClick}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-cloud-upload\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Uploads\")])],1)],1)]}}],null,false,4215938228)},[_c('span',[_vm._v(\"Uploads\")])]):_vm._e(),(_vm.globals.showOnboardUploadsPopupActive)?_c(VTooltip,{attrs:{\"right\":\"\",\"content-class\":\"info-tooltip\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,{class:`${_vm.idxSidebar === 7 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToUploads}},[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-cloud-upload\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Uploads\")])],1)],1)]}}],null,false,597439431),model:{value:(_vm.globals.showOnboardUploadsPopup),callback:function ($$v) {_vm.$set(_vm.globals, \"showOnboardUploadsPopup\", $$v)},expression:\"globals.showOnboardUploadsPopup\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"position\":\"relative\",\"font-size\":\"13px\",\"font-weight\":\"bold\",\"padding\":\"20px 25px\"},on:{\"click\":_vm.navToUploads}},[_c('div',{staticStyle:{\"margin-bottom\":\"5px\"}},[_c('span',{staticStyle:{\"border-bottom\":\"2px solid rgb(255 255 255 / 50%)\"}},[_vm._v(\"TIP\")])]),_c('span',[_vm._v(\"Have a lot of stops?\")]),_c('span',[_vm._v(\"Try bulk upload.\")]),_c('span',{staticClass:\"close-btn\",on:{\"click\":function($event){$event.stopPropagation();_vm.globals.showOnboardUploadsPopup = false;}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)])]):_vm._e(),(_vm.globals.flexDisplay === 2 && !_vm.globals.isSubTeam)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [(_vm.globals.canLoadSubteams())?_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 8 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSubTeams}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-account-group\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Sub Teams\")])],1)],1):_vm._e()]}}],null,false,2151435224)},[_c('span',[_vm._v(\"Sub Teams\")])]):_vm._e(),(_vm.globals.hasActiveFlexSku && _vm.isOwner && (!_vm.globals.showPODCallout || _vm.globals.m_showRouteNew))?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 12 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToMarketplace}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-puzzle\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Marketplace\")])],1)],1)]}}],null,false,1582389556)},[_c('span',[_vm._v(\"Marketplace\")])]):_vm._e(),(_vm.globals.hasActiveFlexSku && _vm.isOwner && (_vm.globals.showPODCallout && !_vm.globals.m_showRouteNew))?_c(VTooltip,{attrs:{\"right\":\"\",\"content-class\":\"feature-tooltip\",\"transition\":\"callout-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,{class:`${_vm.idxSidebar === 12 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToMarketplace}},[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-puzzle\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Marketplace\")])],1)],1)]}}],null,false,278490176),model:{value:(_vm.globals.showPODCallout),callback:function ($$v) {_vm.$set(_vm.globals, \"showPODCallout\", $$v)},expression:\"globals.showPODCallout\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"position\":\"relative\",\"font-size\":\"13px\"},on:{\"click\":_vm.navToMarketplace}},[_c('img',{staticClass:\"top-image\",attrs:{\"src\":\"/images/pod-callout.jpg\",\"width\":\"100%\",\"height\":\"192\"}}),_c('div',{staticClass:\"content\"},[_c('p',{staticClass:\"tag\"},[_vm._v(\"new\")]),_c('p',{staticStyle:{\"font-size\":\"20px\",\"font-weight\":\"600\"}},[_vm._v(\"Proof of Delivery\")]),_c('p',[_vm._v(\"You can now ask your drivers to \"),_c('b',[_vm._v(\"collect photos, signatures, or both\")]),_vm._v(\" as part of their stop check-ins.\")]),_c('p',{staticStyle:{\"margin-bottom\":\"20px\"}},[_vm._v(\"Add it to your plan for $10 USD per user/month.\")]),_c(VBtn,{staticClass:\"primary\",staticStyle:{\"text-transform\":\"lowercase\",\"width\":\"100%\",\"background-color\":\"#E93373 !important\"},attrs:{\"tile\":\"\",\"elevation\":\"0\"}},[_c('span',{staticStyle:{\"text-transform\":\"capitalize\"}},[_vm._v(\"Learn\")]),_vm._v(\" more\")])],1),_c('span',{staticClass:\"close-btn\",on:{\"click\":function($event){$event.stopPropagation();_vm.globals.showPODCallout = false; _vm.globals.showedPODCallout = true;}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)])]):_vm._e(),_c(VDivider),(!_vm.globals.showPODSettingsPopup)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:`${_vm.idxSidebar === 9 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSettings}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-settings\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Settings\")])],1)],1)]}}],null,false,1064752007)},[_c('span',[_vm._v(\"Settings\")])]):_vm._e(),(_vm.globals.showPODSettingsPopup)?_c(VTooltip,{attrs:{\"right\":\"\",\"content-class\":\"info-tooltip\",\"transition\":\"callout-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,{class:`${_vm.idxSidebar === 9 ? 'custom-active' : 'custom-inactive'}`,attrs:{\"link\":\"\"},on:{\"click\":_vm.navToSettings}},[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-settings\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Settings\")])],1)],1)]}}],null,false,2300468499),model:{value:(_vm.globals.showPODSettingsPopup),callback:function ($$v) {_vm.$set(_vm.globals, \"showPODSettingsPopup\", $$v)},expression:\"globals.showPODSettingsPopup\"}},[_c('div',{staticStyle:{\"width\":\"250px\",\"display\":\"flex\",\"flex-direction\":\"column\",\"position\":\"relative\",\"font-size\":\"13px\",\"font-weight\":\"bold\",\"padding\":\"20px 25px\"},on:{\"click\":_vm.navToSettings}},[_c('div',{staticStyle:{\"margin-bottom\":\"5px\"}},[_c('span',{staticStyle:{\"border-bottom\":\"2px solid rgb(255 255 255 / 50%)\",\"font-weight\":\"bold\"}},[_vm._v(\"TIP\")])]),_c('span',[_vm._v(\"You can always change your\"),_c('br'),_vm._v(\"Proof of Delivery defaults\"),_c('br'),_vm._v(\"in Settings\")]),_c('span',{staticClass:\"close-btn\",on:{\"click\":function($event){$event.stopPropagation();_vm.globals.showPODSettingsPopup = false;}}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)])]):_vm._e(),(_vm.isAdmin)?_c(VDivider):_vm._e(),(_vm.isAdmin)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:_vm.showActive10,on:{\"click\":_vm.navToLogReports}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-alert-circle\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Logs\")])],1)],1)]}}],null,false,1828548194)},[_c('span',[_vm._v(\"Log Reports\")])]):_vm._e(),(_vm.isAdmin)?_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VListItem,_vm._g({class:_vm.showActive11,on:{\"click\":_vm.navToAddReports}},on),[_c(VListItemAction,[_c(VIcon,[_vm._v(\"mdi-map-marker-alert\")])],1),_c(VListItemContent,[_c(VListItemTitle,[_vm._v(\"Adds\")])],1)],1)]}}],null,false,2994487906)},[_c('span',[_vm._v(\"Address Reports\")])]):_vm._e()],1)],1)],1),_c(VTooltip,{attrs:{\"right\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('div',{class:_vm.globals.backColorBar,staticStyle:{\"height\":\"64px\"}},[_c(VBtn,_vm._g({staticClass:\"mb-2 mr-1 mt-2\",attrs:{\"fab\":\"\",\"small\":\"\",\"loading\":_vm.syncing,\"disabled\":_vm.syncing,\"icon\":\"\"},on:{\"click\":function($event){return _vm.onSync()}}},on),[_c(VIcon,[_vm._v(\"mdi-refresh\")])],1)],1)]}}],null,false,3451858216)},[_c('span',[_vm._v(_vm._s(_vm.syncText))])])],1):_vm._e(),(_vm.showAppBar)?_c(VAppBar,{class:{ 'app-bar-dark': _vm.isDarkMode, 'app-bar-light': !_vm.isDarkMode },attrs:{\"app\":\"\",\"clipped-left\":\"\",\"elevation\":\"0\"}},[(_vm.isLoggedIn && !_vm.globals.showSearchPanel)?_c(VAppBarNavIcon,{on:{\"click\":function($event){$event.stopPropagation();_vm.globals.isOpenDrawer = !_vm.globals.isOpenDrawer}}}):_vm._e(),_c(VToolbarTitle,{class:_vm.titleTextColor,style:(`${_vm.globals.isMobileView ? 'padding-left: 0;width: 148px;white-space: nowrap;text-overflow: initial;': '' }`)},[_c('a',{attrs:{\"href\":\"/\"}},[_vm._v(_vm._s(_vm.appName))])]),(!_vm.globals.isMobileView)?_c(VSpacer):_vm._e(),_c(VSpacer),(_vm.showTitlePaymentWarningButton)?_c(VBtn,{staticClass:\"mr-2 my-3 text-sm-button\",on:{\"click\":_vm.UpdatePaymentMethodWarning}},[_c(VIcon,{staticClass:\"pr-2\"},[_vm._v(\"mdi-alert\")]),_vm._v(\" Credit Card Expiring \")],1):_vm._e(),_c('div',{style:(`${_vm.globals.isMobileView ? 'width: 0;' : 'width: 192px;'}`)}),(_vm.showTrialBanner)?_c(VBtn,{staticClass:\"info mr-2 my-3 text-sm-button\",on:{\"click\":_vm.OpenTrialDialog}},[_c(VIcon,{staticClass:\"pr-2\"},[_vm._v(\"mdi-information-outline\")]),_vm._v(\" \"+_vm._s(_vm.trialButtonTitle)+\" \")],1):_vm._e(),(_vm.showTitlePaymentButton)?_c(VBtn,{staticClass:\"accent mr-2 my-3 text-sm-button\",on:{\"click\":_vm.UpdatePaymentMethod}},[_c(VIcon,{staticClass:\"pr-2\"},[_vm._v(\"mdi-alert\")]),_vm._v(\" Update Credit Card \")],1):_vm._e(),(_vm.globals.hasActiveProSku && !_vm.globals.hasActiveFlexSku && _vm.globals.isLoggedIn)?_c(VBtn,{staticClass:\"mr-4\",on:{\"click\":_vm.upgradeToFlex}},[_vm._v(\" Upgrade to Flex \")]):_vm._e(),_c('div',{staticClass:\"mr-2\"},[(_vm.needsUpdate)?_c(VTooltip,{attrs:{\"color\":\"#222\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},on),[_c(VIcon,{attrs:{\"color\":\"#E91E63\"}},[_vm._v(\" mdi-cellphone-arrow-down \")])],1)]}}],null,false,2253190761)},[_c('span',[_vm._v(\"There is a Flex update available, refresh the page to get the latest version!\")])]):_vm._e(),(_vm.needsUpdateSevere)?_c(VTooltip,{attrs:{\"color\":\"#222\",\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},on),[_c(VIcon,{attrs:{\"color\":\"#E91E63\"}},[_vm._v(\" mdi-alert \")])],1)]}}],null,false,1371594870)},[_c('span',[_vm._v(\"Your Flex version is outdated, please refresh the page to get the latest version!\")])]):_vm._e()],1),(_vm.isLoggedIn)?_c(VMenu,{attrs:{\"close-on-content-click\":false,\"nudge-width\":65,\"bottom\":\"\",\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VAvatar,_vm._g({attrs:{\"elevation\":\"0\",\"color\":\"primary\",\"icon\":\"\",\"size\":\"40\"}},on),[(_vm.avatarUrl)?_c(VImg,{attrs:{\"src\":_vm.avatarUrl}}):_c(VIcon,[_vm._v(\"mdi-account-circle\")])],1),(_vm.inTest)?_c(VIcon,{staticStyle:{\"position\":\"absolute\",\"right\":\"5px\",\"top\":\"35px\",\"z-index\":\"1\",\"pointer-events\":\"none\"},attrs:{\"size\":\"20\",\"color\":\"primary\"}},[_vm._v(\" mdi-flask \")]):_vm._e()]}}],null,false,1104253689),model:{value:(_vm.showUserMenu),callback:function ($$v) {_vm.showUserMenu=$$v},expression:\"showUserMenu\"}},[_c(VCard,[_c('br'),_c(VAvatar,{attrs:{\"to\":\"/account\",\"elevation\":\"0\",\"icon\":\"\",\"size\":\"48\"},on:{\"click\":_vm.avatarClick}},[_c(VImg,{attrs:{\"src\":_vm.avatarUrl}})],1),_c(VList,[_c(VSubheader,{staticStyle:{\"text-align\":\"center\"}},[_vm._v(_vm._s(_vm.userName()))]),_c(VDivider),_c(VListItem,[_c(VListItemAction,[_c(VBtn,{attrs:{\"autocapitalize\":\"off\",\"rounded\":\"\",\"text\":\"\",\"to\":\"/account\"},on:{\"click\":function($event){_vm.showUserMenu = false}}},[_vm._v(\" Account \")])],1)],1),(_vm.globals.hasActiveFlexSku || _vm.globals.hasActiveProSku)?_c(VListItem,[_c(VListItemAction,[_c(VBtn,{attrs:{\"autocapitalize\":\"off\",\"rounded\":\"\",\"text\":\"\",\"to\":\"/help\"},on:{\"click\":function($event){_vm.showUserMenu = false}}},[_vm._v(\" Help \")])],1)],1):_vm._e(),_c(VListItem,[_c(VListItemAction,[_c(VBtn,{attrs:{\"autocapitalize\":\"off\",\"rounded\":\"\",\"text\":\"\"},on:{\"click\":_vm.contactSupport}},[_vm._v(\" Contact Support \")])],1)],1),_c(VListItem,[_c(VListItemAction,[_c(VBtn,{attrs:{\"autocapitalize\":\"off\",\"rounded\":\"\",\"text\":\"\"},on:{\"click\":_vm.onLogOut}},[_vm._v(\" Log Out \")])],1)],1)],1)],1)],1):_vm._e()],1):_vm._e(),_c(VMain,{staticStyle:{\"height\":\"calc(100% - 48px)\"},attrs:{\"app\":\"\"}},[_c('div',{staticStyle:{\"display\":\"flex\",\"flex-direction\":\"column\",\"height\":\"100%\"}},[_c(VProgressLinear,{attrs:{\"active\":_vm.loading,\"absolute\":\"\",\"indeterminate\":\"\"}}),(_vm.showPaymentBanner)?_c('div',{staticClass:\"pa-2\",staticStyle:{\"background\":\"#e2004F\",\"position\":\"relative\",\"color\":\"white\"}},[_c('div',{staticClass:\"hidden-md-and-up\",staticStyle:{\"position\":\"absolute\",\"bottom\":\"20px\",\"right\":\"5px\",\"color\":\"white\"},on:{\"click\":_vm.ClosePaymentBanner}},[_c(VBtn,[_c(VIcon,{attrs:{\"large\":\"\"}},[_vm._v(\"mdi-close-circle-outline\")])],1)],1),_c('div',{staticClass:\"hidden-sm-and-down\",staticStyle:{\"flex-direction\":\"row\",\"display\":\"flex\"}},[_c('div',{staticClass:\"px-2 pb-2\",staticStyle:{\"flex\":\"1\",\"text-align\":\"left\"}},[_c('b',[_vm._v(\"ACTION REQUIRED:\")]),_vm._v(\" The \"+_vm._s(_vm.CardType)+\" card \"+_vm._s(_vm.CardLastFour)+\" on this account failed. Please \"),_c('span',{staticClass:\"text-decoration-underline\"},[_vm._v(\"update your payment info\")]),_vm._v(\" to keep your account active. If you are having trouble, please contact us directly at \"),_c('a',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"href\":\"mailto:support@roadwarrior.app\"}},[_vm._v(\"support@roadwarrior.app\")])]),_c('div',[_c(VBtn,{staticClass:\"success mr-2 mt-1\",attrs:{\"elevation\":\"2\"},on:{\"click\":_vm.UpdatePaymentMethod}},[_vm._v(\" Update Credit Card \")])],1),_c('div',[_c(VBtn,{staticClass:\"mt-1\",attrs:{\"color\":\"accent\"},on:{\"click\":_vm.ClosePaymentBanner}},[_c(VIcon,{attrs:{\"large\":\"\"}},[_vm._v(\" mdi-close-circle-outline \")])],1)],1)]),_c('div',{staticClass:\"hidden-md-and-up\"},[_c('div',{staticClass:\"pr-2\",staticStyle:{\"position\":\"relative\",\"font-size\":\"14px\"}},[_c('b',[_vm._v(\"ACTION REQUIRED:\")]),_vm._v(\" The \"+_vm._s(_vm.CardType)+\" card \"+_vm._s(_vm.CardLastFour)+\" on this account failed. Please \"),_c('span',{staticClass:\"text-decoration-underline\"},[_vm._v(\"update your payment info\")]),_vm._v(\" to keep your account active. If you are having trouble, please contact us directly at \"),_c('a',{staticStyle:{\"color\":\"white\",\"text-decoration\":\"none\"},attrs:{\"href\":\"mailto:support@roadwarrior.app\"}},[_vm._v(\"support@roadwarrior.app\")])]),_c('div',[_c(VBtn,{staticClass:\"success mr-2 my-3\",on:{\"click\":_vm.UpdatePaymentMethod}},[_vm._v(\" Update Credit Card \")])],1)])]):_vm._e(),_c('div',{staticStyle:{\"flex\":\"1\",\"height\":\"100%\"}},[_c('keep-alive',[_c('router-view',{key:_vm.cachePath(),staticClass:\"ma-0 pa-0 fill-height no-gutters\"})],1)],1)],1)]),_c(VSnackbar,{attrs:{\"bottom\":true,\"timeout\":5000},model:{value:(_vm.globals.m_showSnackVar),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showSnackVar\", $$v)},expression:\"globals.m_showSnackVar\"}},[_c('div',{staticClass:\"py-2 px-5 d-flex flex-row\",class:_vm.globals.m_snackBarColor},[_c('div',{staticClass:\"flex-grow-1 snack-text\"},[_vm._v(\" \"+_vm._s(_vm.globals.m_snackBarText)+\" \")]),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.m_showSnackVar = false}}},[_vm._v(\" Close \")])],1)]),(_vm.globals.m_showConfirm)?_c('RwConfirm',{on:{\"onConfirm\":_vm.onConfirm}}):_vm._e(),(_vm.globals.m_showRouteEdit)?_c('RwRouteEdit',{attrs:{\"init-route\":_vm.globals.m_routeEditInitRoute},on:{\"onRouteEdited\":_vm.onRouteEdited}}):_vm._e(),(_vm.globals.m_showStopEdit)?_c('RwStopEdit',{attrs:{\"init-stop\":_vm.globals.m_stopEditInitStop},on:{\"onStopEdited\":_vm.onStopEdited}}):_vm._e(),(_vm.globals.m_showHistoryEdit)?_c('RwHistoryEdit',{attrs:{\"init-history\":_vm.globals.m_histEditInitHistory},on:{\"onHistoryEdited\":_vm.onHistoryEdited}}):_vm._e(),(_vm.globals.m_showSiteEdit)?_c('RwSiteEdit',{attrs:{\"init-site\":_vm.globals.m_siteEditInitSite},on:{\"onSiteEdited\":_vm.onSiteEdited}}):_vm._e(),(_vm.globals.m_showSkedEdit)?_c('RwSkedEdit',{attrs:{\"init-sked\":_vm.globals.m_skedEditInitSked},on:{\"onSkedEdited\":_vm.onSkedEdited}}):_vm._e(),(_vm.globals.m_showDriverEdit)?_c('RwDriverEdit',{attrs:{\"init-driver\":_vm.globals.m_driverEditInitDriver},on:{\"onDriverEdited\":_vm.onDriverEdited}}):_vm._e(),(_vm.globals.m_showColorPicker)?_c('RwColorPicker',{attrs:{\"init-color\":_vm.globals.m_colorPickerInitColor},on:{\"onColorPick\":_vm.onColorPick}}):_vm._e(),(_vm.globals.m_showVisitPicker)?_c('RwVisitPicker',{attrs:{\"init-visit\":_vm.globals.m_visitPickerInit},on:{\"onVisitPick\":_vm.onVisitPick}}):_vm._e(),(_vm.globals.m_showSkedPicker)?_c('RwSkedPicker',{attrs:{\"init-priority\":_vm.globals.m_skedPickerPriority,\"init-start-mils\":_vm.globals.m_skedPickerStart,\"init-finish-mils\":_vm.globals.m_skedPickerFinish},on:{\"onSkedPick\":_vm.onSkedPick}}):_vm._e(),(_vm.globals.m_showAssignPicker)?_c('RwAssignPicker',{attrs:{\"init-route\":_vm.globals.m_assignPickerInitRoute},on:{\"onAssignPick\":_vm.onAssignPick}}):_vm._e(),(_vm.globals.m_showReloPicker)?_c('RwReloPicker',{attrs:{\"init-title\":_vm.globals.m_reloPickerInitTitle,\"init-lat\":_vm.globals.m_reloPickerInitLat,\"init-lng\":_vm.globals.m_reloPickerInitLng},on:{\"onReloPick\":_vm.onReloPick}}):_vm._e(),(_vm.globals.m_showStatusPicker)?_c('RwStatusPicker',{attrs:{\"init-name\":_vm.globals.m_statusPickerInitName,\"init-status\":_vm.globals.m_statusPickerInitStatus},on:{\"onStatusPick\":_vm.onStatusPick}}):_vm._e(),(_vm.globals.m_showRouteNew && !_vm.globals.showOnboardSettings)?_c('RwRouteNew',{attrs:{\"init-empty\":_vm.globals.m_routeNewInitEmpty,\"init-route\":_vm.globals.m_routeNewInitRoute},on:{\"onRouteNew\":_vm.onRouteNew}}):_vm._e(),(_vm.globals.showPODTutorial)?_c('RwPODTutorial'):_vm._e(),(_vm.globals.showProToTeam)?_c('RwProToTeam'):_vm._e(),_c('RwGenericDialog'),_c('RwGenericRoutePicker',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.globals.showGenericRoutePicker),expression:\"globals.showGenericRoutePicker\"}],attrs:{\"open\":_vm.globals.showGenericRoutePicker,\"filter\":_vm.globals.genericRoutePickerFilter,\"init-src-id\":_vm.globals.m_routePickerSrcId},on:{\"onRoutePick\":_vm.onRoutePick,\"onClose\":() => _vm.globals.showGenericRoutePicker = false}}),_c(VDialog,{attrs:{\"max-width\":\"600\"},model:{value:(_vm.showUpdatePaymentDialog),callback:function ($$v) {_vm.showUpdatePaymentDialog=$$v},expression:\"showUpdatePaymentDialog\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"text-h6 lighten-2\"},[_vm._v(\" Payment Card is Expiring \")]),_c(VCardText,[_vm._v(\" Your \"+_vm._s(_vm.cardType)+\" card \"+_vm._s(_vm.lastFour)+\" is expiring, please update now to avoid disruptions in your RoadWarrior subscription. \")]),_c(VDivider),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showUpdatePaymentDialog = false}}},[_vm._v(\" Close \")]),_c(VBtn,{attrs:{\"color\":\"accent\",\"text\":\"\"},on:{\"click\":_vm.UpdatePaymentMethod}},[_vm._v(\" Update Card \")])],1)],1)],1),_c(VDialog,{attrs:{\"max-width\":\"600\"},model:{value:(_vm.showTrialDialog),callback:function ($$v) {_vm.showTrialDialog=$$v},expression:\"showTrialDialog\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"text-h6 lighten-2\"},[_c(VIcon,{staticClass:\"mr-3\"},[_vm._v(\"mdi-information-outline\")]),_vm._v(\" How is your RoadWarrior Flex Trial going? \")],1),(_vm.gotBillingData)?_c(VCardText,{staticClass:\"text-left\"},[_c('p',[_vm._v(\" We hope you're enjoying your Flex trial! If you have a question, or there is something we can do to help, please let us know by clicking Contact Support below. \")]),_c(VBtn,{staticClass:\"mb-3\",attrs:{\"color\":\"info\"},on:{\"click\":_vm.contactSupport}},[_c(VIcon,{staticClass:\"mr-3\"},[_vm._v(\"mdi-help-circle\")]),_vm._v(\" Contact Support \")],1),_c('p',[_vm._v(\" Looking for a bit more info on Flex? Check out our getting started guide below! \")]),_c(VBtn,{staticClass:\"mb-3\",attrs:{\"color\":\"info\"},on:{\"click\":_vm.OpenFlexGuide}},[_c(VIcon,{staticClass:\"mr-3\"},[_vm._v(\"mdi-book\")]),_vm._v(\" View Flex Guide \")],1),_c('p',[_vm._v(\" Your trial will automatically convert to a paid subscription in \"+_vm._s(_vm.trialEndingDays)+\" day\"+_vm._s(this.trialEndingDays !== 1 ? 's' : '')+\". If you would like to cancel, go to Account -> Quota and Billing to end your trial. \")])],1):_vm._e(),_c(VDivider),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.showTrialDialog = false}}},[_vm._v(\" Close \")])],1)],1)],1),_c(VDialog,{attrs:{\"max-width\":\"700\"},model:{value:(_vm.globals.showResumeSubscriptionPopup),callback:function ($$v) {_vm.$set(_vm.globals, \"showResumeSubscriptionPopup\", $$v)},expression:\"globals.showResumeSubscriptionPopup\"}},[_c(VCard,[_c(VCardTitle,{staticClass:\"text-h6 lighten-2\"},[_vm._v(\" Resume your subscription \")]),_c(VCardText,{staticClass:\"text-left\"},[_c('p',[_vm._v(\" Would you like to apply the coupon \"),_c('b',[_vm._v(_vm._s(_vm.globals.couponDescription))]),_vm._v(\" and resume your subscription? \")])]),_c(VDivider),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.showResumeSubscriptionPopup = false}}},[_vm._v(\" No thanks \")]),_c(VBtn,{attrs:{\"color\":\"success\",\"text\":\"\"},on:{\"click\":function($event){return _vm.globals.applyCouponCode(true)}}},[_vm._v(\" Resume Subscription \")])],1)],1)],1),(false)?_c(VFooter,{attrs:{\"app\":\"\",\"elevation\":4}},[_c('span',{staticClass:\"sysBarText\"},[_vm._v(\"© 2022 RoadWarrior\")]),_c(VSpacer),_c(VBtn,{staticClass:\"sysBarText\",attrs:{\"text\":\"\"},on:{\"click\":function($event){return _vm.onSync()}}},[_c(VIcon,{attrs:{\"color\":\"grey\"}},[_vm._v(\"mdi-refresh\")]),_c('span',{staticClass:\"sysBarText\"},[_vm._v(_vm._s(_vm.syncText))])],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showColorPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showColorPicker\", $$v)},expression:\"globals.m_showColorPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\" Color Picker\")]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 102px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VContainer,{staticClass:\"mt-4\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"flat\":\"\",\"hide-sliders\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},model:{value:(_vm.color),callback:function ($$v) {_vm.color=$$v},expression:\"color\"}})],1)],1)],1),_c(VDivider),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwImgUtils} from \"@/app/utils/RwImgUtils\";\n\n\n@Component\nexport default class RwColorPicker extends Vue {\n @Prop(String) readonly initColor: string | undefined;\n\n\n //#region Props\n\n m_color = \"#FF0000FF\";\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get color(): string {\n return this.m_color;\n }\n\n set color(val: string) {\n //console.log(\"set color:\", val);\n this.m_color = val;\n this.onColorPick(val);\n }\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get loading(): boolean {\n return this.globals.isLoading;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n\n //#endregion Props\n\n\n //#region User Events\n\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n\n onColorPick(color: string) {\n if (RwImgUtils.validatedColorHex(color)) {\n this.close(color);\n } else {\n RwLog.error(\"RwColorPicker.onColorPick\", `Invalid color hex: ${color}`);\n }\n }\n\n onCancel() {\n this.close();\n }\n\n\n close(colorPick?: string) {\n if (colorPick) {\n //console.log(\"RwColorPicker.close color\", colorPick);\n this.$emit(\"onColorPick\", colorPick);\n }\n this.globals.m_showColorPicker = false;\n }\n\n\n //#endregion UI Nav\n\n\n //#region LifeCycle\n\n mounted() {\n //console.log('RwColorPicker.mounted colorInit', this.colorInit);\n if (this.initColor && this.initColor.length > 0) {\n this.m_color = this.initColor;\n }\n }\n\n //#endregion\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwColorPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwColorPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwColorPicker.vue?vue&type=template&id=13518b38&\"\nimport script from \"./RwColorPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwColorPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"overlay-color\":\"#000\",\"overlay-opacity\":\"0.65\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showVisitPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showVisitPicker\", $$v)},expression:\"globals.m_showVisitPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\" Visit Picker\")]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 96px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{attrs:{\"align\":\"start\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Override Default:\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Set a specific visit time for this stop.\")])]),_c(VSwitch,{model:{value:(_vm.isVisitOverride),callback:function ($$v) {_vm.isVisitOverride=$$v},expression:\"isVisitOverride\"}})],1),_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Visit Time (minutes):\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"The expected amount of time spent at this stop.\")])]),_c(VTextField,{staticClass:\"text-right\",staticStyle:{\"max-width\":\"128px\"},attrs:{\"reverse\":\"\",\"rules\":[_vm.rules.required, _vm.rules.visitRange],\"disabled\":!_vm.m_visitOver,\"dense\":\"\",\"filled\":\"\",\"single-line\":\"\",\"type\":\"number\",\"hint\":\"Between 0 to 999\",\"persistent-hint\":true},model:{value:(_vm.visitTimeCalc),callback:function ($$v) {_vm.visitTimeCalc=$$v},expression:\"visitTimeCalc\"}})],1)],1)],1)],1),_c(VDivider),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"disabled\":!_vm.canApplyVisit,\"text\":\"\"},on:{\"click\":_vm.onVisitClick}},[_vm._v(\" Apply \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\n\n@Component\nexport default class RwVisitPicker extends Vue {\n\n //#region Props\n @Prop(Number) readonly initVisit: number | undefined;\n\n //visitSpan = 0;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get loading(): boolean {\n return this.globals.isLoading;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n\n //#endregion Props\n\n\n //#region User Events\n\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n\n onVisitClick() {\n let visitSpan: number = this.m_visitTime;\n //let visitSpan: number = this.visitSpan;\n //console.log(\"RwVisitPicker.onVisitClick visitSpan\", visitSpan);\n this.close(visitSpan);\n }\n\n\n onCancel() {\n this.close();\n }\n\n\n close(visitSpan?: number) {\n if (visitSpan || visitSpan === 0) {\n //console.log(\"RwVisitPicker.close visitSpan\", visitSpan);\n this.$emit(\"onVisitPick\", visitSpan);\n }\n this.globals.m_showVisitPicker = false;\n }\n\n\n //#endregion UI Nav\n\n\n //region Visit Ops\n\n visitTrigger = 0;\n isVisitRangeValid = false;\n m_visitTimeCalc = 0;\n m_visitOver = false;\n m_visitTime = 0;\n // tabInitVisitOver = false;\n // tabInitVisitTime = 0;\n //private defaultVisitTime = 0;\n\n get visitText(): string {\n //Adding Observable value just for trigger;\n let vizOver = this.m_visitOver;\n let vizTime = this.m_visitTime;\n let visText = RwStop.visitTimeTextPrimitive(this.m_visitOver, this.visitTimeCalc);\n //console.warn(\"RwStopEdit.visitText\", vizOver, vizTime, visText)\n return visText;\n }\n\n get canApplyVisit(): boolean {\n let isDefault = !this.m_visitOver;\n let gotRequired = !!this.m_visitTime || this.m_visitTime === 0;\n let gotValidRange = this.isVisitRangeValid;\n let gotTimeDelta = RwSysUtils.isLooseDeltaNum(this.initVisit, this.m_visitTime);\n let canApply = isDefault || (gotRequired && gotValidRange && gotTimeDelta);\n //console.log(\"canApplyVisit:: isDefault || (gotRequired, gotValidRange && (gotOverDelta || gotTimeDelta))\", isDefault, gotRequired, gotValidRange, (gotOverDelta || gotTimeDelta))\n return canApply;\n }\n\n\n get rules() {\n const self = this;\n return {\n required: value => {\n\n if (!self.m_visitOver || (!!value || value === 0)) {\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return true;\n } else {\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return false;\n }\n },\n visitRange: value => {\n if (!self.m_visitOver || value >= 0 && value <= 999) {\n self.isVisitRangeValid = true;\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return true;\n } else {\n self.isVisitRangeValid = false;\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return 'Between 0 to 999'\n }\n },\n }\n }\n\n get isVisitOverride(): boolean {\n return this.m_visitOver;\n }\n\n set isVisitOverride(val: boolean) {\n this.m_visitOver = val;\n this.m_visitTime = val ? RwPrefUtils.visitTime : -1;\n //console.log(\"SET isVisitOverride\", val, this.m_visitOver, this.m_visitTime)\n }\n\n get visitTimeCalc(): number {\n let trigger1 = this.visitTrigger;\n let trigger2 = this.m_visitOver;\n this.m_visitTimeCalc = this.m_visitOver ? this.m_visitTime : RwPrefUtils.visitTime;\n //console.log(\"GET visitTimeCalc time, m_isOverride, m_visitTime, defaultVisitTime\", this.m_visitTime, RwPrefUtils.visitTime, this.m_visitTimeCalc)\n return this.m_visitTimeCalc;\n }\n\n set visitTimeCalc(val: number) {\n if (this.m_visitOver) {\n if (val >= 0 && val <= 999) {\n this.m_visitTime = val;\n this.m_visitTimeCalc = val;\n } else {\n if (val < 0) {\n this.m_visitTime = 0;\n this.m_visitTimeCalc = 0;\n }\n if (val > 999) {\n this.m_visitTime = 999;\n this.m_visitTimeCalc = 999;\n }\n }\n } else {\n this.m_visitTime = -1;\n }\n this.visitTrigger++;\n //console.log(\"SET visitTimeCalc\", val, this.m_visitOver, this.m_visitTime, this.m_visitTimeCalc)\n }\n\n // private onVisitClick() {\n // this.initVisitTab()\n // this.idxTab = 4;\n // }\n\n // private onCommitVisitTime(event: Event) {\n // event.stopPropagation();\n // if (!this.m_visitOver) {\n // this.m_visitTime = -1;\n // }\n // //console.log(\"onCommitVisitTime SET\", this.m_visitOver, this.m_visitTime);\n // this.idxTab = 0;\n // }\n\n // private initVisitTab() {\n // this.tabInitVisitOver = this.m_visitOver;\n // this.tabInitVisitTime = this.m_visitTime;\n // console.log(\"initVisitTab \", this.tabInitVisitOver, this.tabInitVisitTime)\n // }\n\n // private setVisitTime() {\n // if (this.initSite) {\n // if (this.isInitOverride) {\n // this.m_visitOver = true;\n // this.m_visitTime = this.initSite.visitTime;\n // this.tabInitVisitOver = this.m_visitOver;\n // this.tabInitVisitTime = this.m_visitTime;\n // }\n // else {\n // this.m_visitOver = false;\n // this.m_visitTime = RwPrefUtils.visitTime;\n // this.tabInitVisitOver = this.m_visitOver;\n // this.tabInitVisitTime = this.m_visitTime;\n // }\n // }\n // console.log(\"setVisitTime\", this.m_visitOver, this.m_visitTime)\n // }\n\n\n //endregion Visit Override\n\n\n //#region LifeCycle\n\n mounted() {\n //console.log('RwVisitPicker.mounted visitInit', this.visitInit);\n this.m_visitTime = this.initVisit;\n this.m_visitOver = this.initVisit >= 0;\n\n // if (this.initVisit && this.initVisit >= 0) {\n // this.m_visitTime = this.initVisit;\n // }\n }\n\n //#endregion\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwVisitPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwVisitPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwVisitPicker.vue?vue&type=template&id=3bd7c106&\"\nimport script from \"./RwVisitPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwVisitPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBanner } from 'vuetify/lib/components/VBanner';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSlider } from 'vuetify/lib/components/VSlider';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"overlay-color\":\"#000\",\"overlay-opacity\":\"0.65\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showSkedPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showSkedPicker\", $$v)},expression:\"globals.m_showSkedPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\" Schedule Picker\")]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 102px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VTabsItems,{style:(`${_vm.idxTab === 2 ? 'min-height':'height'}: 100%`),attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticClass:\"py-0\",attrs:{\"fill-height\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize px-8\",attrs:{\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onUseSingle}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" Use One-Time Schedule \")],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"disabled\":_vm.globals.skedsMultiUse.length === 0,\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onUseMulti}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Use Multi-Use Schedule \")],1)],1)],1)],1)],1)],1),_c(VTabItem,{key:\"1\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticClass:\"py-0\",attrs:{\"fill-height\":\"\"}},[_c(VBanner,{staticClass:\"warning-banner\",attrs:{\"icon-color\":\"warning\",\"width\":\"100%\",\"icon\":\"warning\",\"value\":!!_vm.warningMessage}},[_vm._v(\" \"+_vm._s(_vm.warningMessage)+\" \")]),_c(VRow,{attrs:{\"align\":\"start\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"startTimeMenu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.startDisplay),callback:function ($$v) {_vm.startDisplay=$$v},expression:\"startDisplay\"}},on))]}}]),model:{value:(_vm.menuStart),callback:function ($$v) {_vm.menuStart=$$v},expression:\"menuStart\"}},[(_vm.menuStart)?_c(VTimePicker,{attrs:{\"color\":\"primary\",\"ampm-in-title\":\"\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.startTimeMenu.save(_vm.startTime)}},model:{value:(_vm.startTime),callback:function ($$v) {_vm.startTime=$$v},expression:\"startTime\"}}):_vm._e()],1),_c(VMenu,{ref:\"finishTimeMenu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Finish Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.finishDisplay),callback:function ($$v) {_vm.finishDisplay=$$v},expression:\"finishDisplay\"}},on))]}}]),model:{value:(_vm.menuFinish),callback:function ($$v) {_vm.menuFinish=$$v},expression:\"menuFinish\"}},[(_vm.menuFinish)?_c(VTimePicker,{attrs:{\"color\":\"primary\",\"ampm-in-title\":\"\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.finishTimeMenu.save(_vm.finishTime)}},model:{value:(_vm.finishTime),callback:function ($$v) {_vm.finishTime=$$v},expression:\"finishTime\"}}):_vm._e()],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c(VTextField,{staticStyle:{\"max-width\":\"75px\"},attrs:{\"filled\":\"\",\"type\":\"number\",\"dense\":\"\",\"label\":\"Priority\"},on:{\"focus\":function($event){return $event.target.select()}},model:{value:(_vm.skedPriority),callback:function ($$v) {_vm.skedPriority=$$v},expression:\"skedPriority\"}}),_c('span',[_vm._v(\"/10\")]),_c(VSlider,{attrs:{\"max\":\"10\",\"min\":\"1\",\"color\":_vm.skedColor},model:{value:(_vm.skedPriority),callback:function ($$v) {_vm.skedPriority=$$v},expression:\"skedPriority\"}})],1)],1)],1)],1),_c(VTabItem,{key:\"2\",staticStyle:{\"height\":\"100%\"}},[_c(VList,{staticStyle:{\"height\":\"100%\"},attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxSked),callback:function ($$v) {_vm.idxSked=$$v},expression:\"idxSked\"}},_vm._l((_vm.globals.skedsMultiUse),function(sked,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onSkedPick(sked)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"src\":sked.imgUrl}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(sked.name)}})],1)],1)}),1)],1)],1)],1)],1),_c(VDivider),_c(VCardActions,{class:_vm.backColor},[(_vm.idxTab > 0)?_c(VBtn,{attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\",\"xs6\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"disabled\":!this.isValid || _vm.idxTab !== 1,\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCommit}},[_vm._v(\" Apply \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport moment from \"moment\";\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\n\n@Component\nexport default class RwSkedPicker extends Vue {\n\n //#region Props\n\n @Prop(Number) readonly initPriority: number | undefined;\n @Prop(Number) readonly initStartMils: number | undefined;\n @Prop(Number) readonly initFinishMils: number | undefined;\n\n idxTab = 0;\n idxSked = -1;\n skedPriority = RwPrefUtils.skedPriority;\n skedStartMins = RwPrefUtils.skedStartMins;\n skedFinishMins = RwPrefUtils.skedFinishMins;\n selectedSked: RwSked = null;\n menuStart = false;\n menuFinish = false;\n time = \"\";\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get title(): string {\n let title: string;\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n title = 'Pick Schedule';\n break;\n case 1:\n title = `One-Time Schedule`;\n break;\n case 2:\n title = 'Multi-Use Schedule';\n break;\n //@formatter:on\n }\n return title;\n }\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get loading(): boolean {\n return this.globals.isLoading;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get isSameDay(): boolean {\n return this.skedStartMins <= this.skedFinishMins;\n }\n\n get isValid(): boolean {\n let isValid = false;\n //@formatter:off\n switch (this.idxTab) {\n case 1:\n isValid = true;\n break;\n case 2:\n isValid = !!this.selectedSked;\n break;\n }\n //@formatter:on\n return isValid;\n }\n\n get startMoment(): moment.Moment {\n return moment().startOf('day').add(this.skedStartMins, \"minutes\");\n }\n\n get finishMoment(): moment.Moment {\n return moment().startOf('day').add(this.skedFinishMins, \"minutes\");\n }\n\n get startDisplay(): string {\n let timeText = this.startMoment.format(\"LT\");\n //console.log(\"GET startDisplay\", timeText);\n return timeText;\n }\n\n get finishDisplay(): string {\n\n let timeText: string;\n if (this.skedStartMins < this.skedFinishMins) {\n timeText = this.finishMoment.format(\"LT\");\n } else {\n timeText = this.finishMoment.format(\"LT\") + \" (next day)\";\n }\n //console.log(\"finishDisplay\", this.skedStartMins, this.skedFinishMins, timeText);\n return timeText;\n }\n\n get startTime(): string {\n let timeText = this.momentToTime(this.startMoment);\n //console.log(\"GET startTime\", timeText);\n return timeText;\n }\n\n set startTime(val) {\n this.skedStartMins = this.minsFromTime(val);\n }\n\n get finishTime(): string {\n return this.finishMoment.format(\"HH:mm\");\n }\n\n set finishTime(val: string) {\n this.skedFinishMins = this.minsFromTime(val);\n }\n\n get skedColor(): string {\n let color: string = \"\";\n switch (this.skedPriority) {\n //@formatter:off\n case 1:\n color = \"#01aee3\";\n break;\n case 2:\n color = \"#06b29e\";\n break;\n case 3:\n color = \"#01de7e\";\n break;\n case 4:\n color = \"#01e248\";\n break;\n case 5:\n color = \"#05cd3a\";\n break;\n case 6:\n color = \"#74dd3f\";\n break;\n case 7:\n color = \"#d7eb40\";\n break;\n case 8:\n color = \"#f0a732\";\n break;\n case 9:\n color = \"#eb5422\";\n break;\n case 10:\n color = \"#d1041c\";\n break;\n default:\n break;\n //@formatter:on\n }\n return color\n }\n\n\n get warningMessage(): string | undefined {\n\n const routeStart = moment(this.globals.selectedRoute.startTime)\n const routeFinish = moment(this.globals.selectedRoute.finishTime);\n\n //Project the minute-based sked onto the same day as the route.\n let start = routeStart.startOf('day');\n let durationMins = this.skedDuration();\n const skedStart = start.clone().add(this.skedStartMins, \"minutes\");\n const skedFinish = skedStart.clone().add(durationMins, \"minutes\");\n\n let isSkedStartValid = skedStart < routeFinish;\n let isSkedFinishValid = skedFinish > routeStart;\n if (!isSkedStartValid || !isSkedFinishValid) {\n return \"Schedule timeframe outside of route timeframe.\";\n }\n return undefined;\n }\n\n private minsFromTime(val: string): number {\n let startOfDay = moment().startOf('day');\n let time = moment(val, 'HH:mm');\n let mins = time.diff(startOfDay, \"minutes\");\n return mins\n }\n\n private momentToTime(mo: moment.Moment) {\n let timeText = mo.format(\"HH:mm\");\n return timeText;\n }\n\n private skedDuration() {\n let durationMins = 0;\n if (this.skedStartMins < this.skedFinishMins) {\n durationMins = this.skedFinishMins - this.skedStartMins\n } else {\n durationMins = (24 * 60) - this.skedFinishMins - this.skedStartMins;\n }\n return durationMins;\n }\n\n //#endregion Props\n\n\n //region Helper Ops\n\n allowedHours(v) {\n return v % 2;\n }\n\n allowedMinutes(v) {\n return v >= 10 && v <= 50;\n }\n\n allowedStep(m) {\n return m % 10 === 0;\n }\n\n\n //endregion\n\n\n //#region UI Nav\n\n\n onUseSingle() {\n //console.log(\"RwSkedPicker.onUseSingle\");\n this.idxTab = 1;\n }\n\n onUseMulti() {\n //console.log(\"RwSkedPicker.onSkedClick\");\n this.idxTab = 2;\n }\n\n onBackClick() {\n //console.log(\"onBackClick\");\n this.idxTab = 0;\n }\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.onCancel();\n }\n\n onCancel() {\n //console.log(\"RwSkedPicker.onCancel\");\n this.globals.m_showSkedPicker = false;\n }\n\n //#endregion UI Nav\n\n\n //#region User Selections\n\n\n onSkedPick(sked: RwSked) {\n //console.log(\"onSkedPick sked\", sked.name, sked.priority, sked.skedId);\n this.selectedSked = sked;\n this.skedPriority = sked.priority * 10;\n this.skedStartMins = sked.timeStart / 60000;\n this.skedFinishMins = sked.timeFinish / 60000;\n this.onCommit();\n }\n\n\n onCommit() {\n const SOURCE = \"RwSkedPicker.onCommit\"\n //console.log(\"RwSkedPicker.onSkedClick selectedSked\", this.skedPriority, this.skedStartMins, this.skedFinishMins, this.skedSpanMins);\n //console.warn(\"RwSkedPicker.onCommit skedStartMins, skedFinishMins\", this.skedStartMins, this.skedFinishMins);\n\n let sked: RwSked;\n if (this.selectedSked) {\n sked = this.selectedSked;\n //sked.skedId = this.selectedSked ? this.selectedSked.skedId : RwSysUtils.guidEmpty();\n //console.log(\"selectedSked\");\n } else {\n sked = new RwSked();\n sked.priority = this.skedPriority / 10.0;\n sked.timeStart = this.skedStartMins * 60000;\n sked.timeFinish = this.skedFinishMins * 60000;\n sked.duration = this.skedDuration();\n sked.skedId = RwSysUtils.guidEmpty();\n //console.log(\"inline sked\", sked.timeStart, sked.timeFinish, sked);\n }\n\n //console.warn(\"RwSkedPicker.onCommit skedId, pri, start, finish\", sked.skedId, sked.priority, sked.timeStart, sked.timeFinish);\n\n\n //console.log(\"RwSkedPicker.onCommit skedId, pri, start, finish\", sked.skedId, sked.priority, sked.timeStart, sked.timeFinish);\n\n RwPrefUtils.skedPriority = this.skedPriority;\n RwPrefUtils.skedStartMins = this.skedStartMins;\n RwPrefUtils.skedFinishMins = this.skedFinishMins;\n\n //console.log(\"RwSkedPicker.onCommit RwPrefUtils.skedPriority\", RwPrefUtils.skedPriority);\n\n this.$emit(\"onSkedPick\", sked);\n this.globals.m_showSkedPicker = false;\n }\n\n\n //#endregion User Events\n\n\n //#region LifeCycle\n\n mounted() {\n\n this.skedPriority = this.initPriority ? this.initPriority * 10.0 : RwPrefUtils.skedPriority;\n this.skedStartMins = this.initStartMils ? this.initStartMils / 60000 : RwPrefUtils.skedStartMins;\n this.skedFinishMins = this.initFinishMils ? this.initFinishMils / 60000 : RwPrefUtils.skedFinishMins;\n //console.log(\"RwSkedPicker.mounted RwPrefUtils.skedPriority, this.initPriority\", RwPrefUtils.skedPriority, this.initPriority);\n // console.log(\"mounted skedS MILLIS\", this.initStartMils, this.initFinishMils);\n // console.log(\"mounted RwPrefUtils MINS\", RwPrefUtils.skedStartMins, RwPrefUtils.skedFinishMins);\n // console.log(\"mounted skedStartMins\", this.skedStartMins, this.initStartMils, RwPrefUtils.skedStartMins);\n // console.log(\"mounted skedFinishMins\", this.skedFinishMins, this.initFinishMils, RwPrefUtils.skedFinishMins);\n }\n\n //#endregion\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedPicker.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedPicker.vue?vue&type=style&index=0&id=c455bfb6&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./RwSkedPicker.vue?vue&type=template&id=c455bfb6&scoped=true&\"\nimport script from \"./RwSkedPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSkedPicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwSkedPicker.vue?vue&type=style&index=0&id=c455bfb6&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"c455bfb6\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showStatusPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showStatusPicker\", $$v)},expression:\"globals.m_showStatusPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\" Status Update: \"+_vm._s(_vm.initName))]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 104px)\",\"width\":\"100%\"}},[_c(VContainer,{attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleCreated,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetCreated.apply(null, arguments)}}},[_vm._v(\" Set to Created \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleActive,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetActive.apply(null, arguments)}}},[_vm._v(\" Set to 'In Progress' \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleProblem,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetProblem.apply(null, arguments)}}},[_vm._v(\" Set to Problem \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleComplete,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetComplete.apply(null, arguments)}}},[_vm._v(\" Set to Complete \")])],1)],1)],1)],1),_c(VDivider),_c(VCardActions,{class:_vm.globals.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute, RwRouteStatusCodes} from \"@/app/dem/RwRoute\";\n\n\n@Component\nexport default class RwStatusPicker extends Vue {\n @Prop(String) readonly initName: string;\n @Prop(Number) readonly initStatus: number;\n\n\n //#region Props\n\n status: number;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n\n get loading(): boolean {\n return this.globals.isLoading;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get styleCreated() {\n return RwRoute.getStatusBackground(RwRouteStatusCodes.created);\n }\n\n get styleActive() {\n return RwRoute.getStatusBackground(RwRouteStatusCodes.active);\n }\n\n get styleProblem() {\n return RwRoute.getStatusBackground(RwRouteStatusCodes.problem);\n }\n\n get styleComplete() {\n return RwRoute.getStatusBackground(RwRouteStatusCodes.complete);\n }\n\n\n //#endregion Props\n\n\n //#region User Events\n\n\n onSetCreated() {\n this.status = RwRouteStatusCodes.created;\n this.onStatusPick();\n }\n\n onSetActive() {\n this.status = RwRouteStatusCodes.active;\n this.onStatusPick();\n }\n\n onSetProblem() {\n this.status = RwRouteStatusCodes.problem;\n this.onStatusPick();\n }\n\n onSetComplete() {\n this.status = RwRouteStatusCodes.complete;\n this.onStatusPick();\n }\n\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n\n onStatusPick() {\n //console.log(\"RwStatusPicker.onStatusPick status\", this.status);\n this.$emit(\"onStatusPick\", this.status);\n this.close();\n }\n\n\n onCancel() {\n this.close();\n }\n\n\n close() {\n //console.log(\"RwStatusPicker.close\")\n this.globals.m_showStatusPicker = false;\n }\n\n\n //#endregion UI Nav\n\n\n //#region LifeCycle\n\n mounted() {\n this.status = this.initStatus;\n }\n\n //#endregion\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStatusPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStatusPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwStatusPicker.vue?vue&type=template&id=28f02704&\"\nimport script from \"./RwStatusPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwStatusPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showAssignPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showAssignPicker\", $$v)},expression:\"globals.m_showAssignPicker\"}},[_c(VCard,[_c(VCardTitle,{class:_vm.globals.backColorBar},[_vm._v(\" Assignment Picker \"),_c(VSpacer),_c(VBtn,{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.idxTab==2),expression:\"idxTab==2\"}],attrs:{\"icon\":\"\"},on:{\"click\":_vm.sortDrivers}},[_c(VIcon,[_vm._v(\"mdi-sort\")])],1)],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[(_vm.globals.isMobileView)?_c(VList,[_c(VListItem,{on:{\"click\":_vm.onPickDriver}},[_vm._v(\" Change Assigned Driver \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-account\")])],1),_c(VListItem,{on:{\"click\":_vm.onPushDeltas}},[_vm._v(\" Send Update to Driver \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-send\")])],1),_c(VListItem,{on:{\"click\":_vm.onPickCode}},[_vm._v(\" Override Assignment Status \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-check\")])],1)],1):_vm._e(),(!_vm.globals.isMobileView)?_c(VContainer,{staticClass:\"py-0\",staticStyle:{\"height\":\"calc(100vh - 225px)\"},attrs:{\"fill-height\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onPickDriver}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-account\")]),_vm._v(\" Change Assigned Driver \")],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onPushDeltas}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-send\")]),_vm._v(\" Send Update to Driver \")],1)],1),_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize px-8\",attrs:{\"block\":\"\",\"color\":\"primary\",\"x-large\":\"\"},on:{\"click\":_vm.onPickCode}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-check\")]),_vm._v(\" Override Assignment Status \")],1)],1)],1)],1)],1):_vm._e()],1),_c(VTabItem,{key:\"1\"},[(_vm.globals.isMobileView)?_c(VList,[_c(VListItem,{class:_vm.styleAssigned,staticStyle:{\"justify-content\":\"center\"},on:{\"click\":_vm.onSetAssigned}},[_vm._v(\" Set to Assigned \")]),_c(VListItem,{class:_vm.stylePending,staticStyle:{\"justify-content\":\"center\"},on:{\"click\":_vm.onSetPending}},[_vm._v(\" Set to Pending \")]),_c(VListItem,{class:_vm.styleRejected,staticStyle:{\"justify-content\":\"center\"},on:{\"click\":_vm.onSetRejected}},[_vm._v(\" Set to Rejected \")])],1):_vm._e(),(!_vm.globals.isMobileView)?_c(VContainer,{staticClass:\"py-0\",attrs:{\"fill-height\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleAssigned,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetAssigned.apply(null, arguments)}}},[_vm._v(\" Set to Assigned \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.stylePending,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetPending.apply(null, arguments)}}},[_vm._v(\" Set to Pending \")])],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"width\":\"100%\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize px-8\",class:_vm.styleRejected,attrs:{\"x-large\":\"\",\"block\":\"\"},on:{\"click\":function($event){$event.stopPropagation();return _vm.onSetRejected.apply(null, arguments)}}},[_vm._v(\" Set to Rejected \")])],1)],1)],1):_vm._e()],1),_c(VTabItem,{key:\"2\",staticStyle:{\"height\":\"100%\"}},[_c(VList,{attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxDriver),callback:function ($$v) {_vm.idxDriver=$$v},expression:\"idxDriver\"}},_vm._l((_vm.sortedDrivers),function(driver,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onDriverPick(driver)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"src\":driver.imageUrl}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(driver.formatDisplayName)}})],1)],1)}),1)],1)],1)],1)],1),_c(VDivider),_c(VCardActions,[(_vm.idxTab !== 0)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"disabled\":!_vm.isDirty,\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCommit}},[_vm._v(\" Apply \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwRoute, RwRouteAssignCodes, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwTaskRoutes} from \"@/app/dal/RwTaskRoutes\";\n\n\n@Component\nexport default class RwAssignPicker extends Vue {\n @Prop(RwRoute) readonly initRoute: RwRoute | undefined;\n\n\n //#region Props\n idxTab = 0;\n idxDriver = -1;\n\n initAssignCode = 0;\n initDriverId = \"\";\n assignCode = 0;\n driverId = \"\";\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get loading(): boolean {\n return this.globals.isLoading;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get isDirty(): boolean {\n let isDirty = (this.initAssignCode != this.assignCode) || (this.initDriverId != this.driverId) || (this.initDriverId == this.driverId && this.assignCode == RwRouteAssignCodes.pending);\n //console.log(\"RwAssignPicker.isDirty (initAssignCode, selAssignCode), (initDriverId, selDriverId)\", this.initAssignCode, this.selAssignCode, this.initDriverId, this.selDriverId);\n return isDirty;\n }\n\n get styleAssigned() {\n return RwRoute.getAssignBackground(RwRouteAssignCodes.assigned);\n }\n\n get stylePending() {\n return RwRoute.getAssignBackground(RwRouteAssignCodes.pending);\n }\n\n get styleRejected() {\n return RwRoute.getAssignBackground(RwRouteAssignCodes.rejected);\n }\n\n //#endregion Props\n\n\n //#region User Events\n\n onBackClick() {\n this.idxTab = 0;\n }\n\n\n onPickCode() {\n this.idxTab = 1;\n }\n\n onPickDriver() {\n this.idxTab = 2;\n }\n\n\n onPushDeltas() {\n if (this.initRoute) {\n this.globals.pushUpdateToDriver(this.initRoute);\n this.close();\n }\n }\n\n\n onSetAssigned() {\n this.assignCode = RwRouteAssignCodes.assigned;\n }\n\n onSetPending() {\n this.assignCode = RwRouteAssignCodes.pending;\n }\n\n onSetRejected() {\n this.assignCode = RwRouteAssignCodes.rejected;\n }\n\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n onDriverPick(driver: RwUser) {\n //console.log(\"onDriverPick name, idxDriver\", driver ? driver.name : \"no driver\", this.idxDriver);\n this.driverId = driver.userId;\n //this.close();\n }\n\n onCommit() {\n const SOURCE = \"RwAssignPicker.onCommit\";\n\n //console.log(\"onDriverPick name, idxDriver\", this.driverId ? driver.name : \"no driver\", this.idxDriver);\n\n let routeId = this.initRoute.routeId;\n let driverId = this.driverId;\n let assignCode = this.assignCode;\n let statusCode = this.initRoute.statusCode;\n\n\n //console.warn(SOURCE, assignCode, this.driverId);\n let isSelfAssigned = driverId === this.globals.userId;\n let isPending = assignCode == RwRouteAssignCodes.pending;\n let isDynamic = this.initRoute.isDynLoc;\n let updateStatus = isSelfAssigned && isPending && isDynamic;\n if (updateStatus) {\n\n assignCode = RwRouteAssignCodes.assigned;\n\n const syncStatus = new RwSyncStatus();\n syncStatus.routeId = routeId;\n syncStatus.assignCode = assignCode;\n syncStatus.driverId = driverId;\n syncStatus.statusCode = statusCode;\n\n RwTaskRoutes.setRouteStatusInfo(syncStatus)\n .then(() => {\n\n this.initRoute.assignCode = assignCode;\n this.initRoute.driverId = driverId;\n this.$emit(\"onAssignPick\", this.initRoute);\n this.close();\n\n // routeUpdate.statusCode = statusUpdate.statusCode;\n // routeUpdate.invalidateCache();\n //console.warn(\"status update to:\", status.status, route.name);\n })\n .catch(err => {\n let statusText = JSON.stringify(syncStatus.toJSON());\n let errText = JSON.stringify(err);\n let status = err.code ? err.code : err.status;\n if (status == 403) {\n RwLog.warn(SOURCE, errText);\n } else {\n RwLog.error(SOURCE, `Unhandled \\n${statusText} \\n\\n${errText}`);\n }\n this.initRoute.assignCode = this.assignCode;\n });\n } else {\n this.initRoute.assignCode = assignCode;\n this.initRoute.driverId = this.driverId;\n this.$emit(\"onAssignPick\", this.initRoute);\n this.close();\n }\n\n }\n\n\n // onCommit() {\n // //console.log(\"onDriverPick name, idxDriver\", driver ? driver.name : \"no driver\", this.idxDriver);\n // this.initRoute.assignCode = this.assignCode;\n // this.initRoute.driverId = this.driverId;\n // this.$emit(\"onAssignPick\", this.initRoute);\n // this.close();\n // }\n\n\n onCancel() {\n this.close();\n }\n\n\n close() {\n this.globals.m_showAssignPicker = false;\n }\n\n\n //#endregion UI Nav\n\n\n //#region LifeCycle\n\n mounted() {\n //console.log(\"RwAssignPicker.mounted\");\n\n this.initDriverId = this.initRoute.driverId;\n this.initAssignCode = this.initRoute.assignCode;\n this.driverId = this.initRoute.driverId;\n this.assignCode = this.initRoute.assignCode;\n\n if (this.initRoute && this.driverId) {\n let driverId = this.initRoute.driverId;\n let drivers = this.globals.drivers;\n let driver = drivers.find(d => d.userId === driverId);\n if (driver) {\n let index = drivers.indexOf(driver, 0);\n if (index >= 0) {\n this.idxDriver = index;\n //console.log(\"RwAssignPicker.mounted idxDriver\", this.idxDriver);\n } else {\n RwLog.consoleError(\"WTF: RwAssignPicker.mounted idxDriver < 0\");\n }\n } else {\n RwLog.consoleError(\"WTF: RwAssignPicker.mounted selDriver == null\");\n }\n }\n\n }\n\n //#endregion\n sortedDrivers: RwUser[] = [...this.globals.drivers];\n currentSort = \"none\";\n\n @Watch(\"globals.drivers\")\n watchGlobalsDrivers(val) {\n this.currentSort = this.currentSort === \"asc\" ? \"desc\" : this.currentSort === \"desc\" ? \"asc\" : \"none\";\n this.sortedDrivers = [...val];\n this.sortDrivers();\n }\n\n sortDrivers() {\n if (this.currentSort === \"asc\") {\n this.sortedDrivers = this.sortedDrivers.reverse();\n this.currentSort = \"desc\";\n } else {\n this.sortedDrivers.sort((drvA: RwUser, drvB: RwUser): number => (drvA.formatDisplayName > drvB.formatDisplayName ? 1 : drvA.formatDisplayName === drvB.formatDisplayName ? 0 : -1));\n this.currentSort = \"asc\";\n }\n }\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAssignPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwAssignPicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwAssignPicker.vue?vue&type=template&id=b12cae50&\"\nimport script from \"./RwAssignPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwAssignPicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRadio } from 'vuetify/lib/components/VRadioGroup';\nimport { VRadioGroup } from 'vuetify/lib/components/VRadioGroup';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onCancel.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onCommit.apply(null, arguments)}]},model:{value:(_vm.globals.m_showStopEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showStopEdit\", $$v)},expression:\"globals.m_showStopEdit\"}},[_c(VCard,{staticClass:\"dialog-card\"},[_c(VCardTitle,{class:_vm.globals.backColorBar},[(_vm.initStop)?_c(VImg,{staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.stopUrl}}):_vm._e(),_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('span',_vm._g(_vm._b({staticClass:\"stop-title\"},'span',attrs,false),on),[_vm._v(_vm._s(_vm.title))])]}}])},[_c('span',[_vm._v(_vm._s(_vm.title))])])],1),_c(VCardText,{staticClass:\"mt-1\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticClass:\"pb-0 pa-3\"},[_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VForm,{ref:\"form\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"label\":\"Name\",\"rules\":_vm.stopNameRules,\"filled\":\"\"},model:{value:(_vm.nameText),callback:function ($$v) {_vm.nameText=$$v},expression:\"nameText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"filled\":\"\",\"label\":\"Address\",\"rules\":_vm.addressRules},model:{value:(_vm.address),callback:function ($$v) {_vm.address=$$v},expression:\"address\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"filled\":\"\",\"label\":\"Phone\"},model:{value:(_vm.phoneText),callback:function ($$v) {_vm.phoneText=$$v},expression:\"phoneText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"filled\":\"\",\"label\":\"Email\"},model:{value:(_vm.emailText),callback:function ($$v) {_vm.emailText=$$v},expression:\"emailText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextarea,{attrs:{\"auto-grow\":\"\",\"no-resize\":\"\",\"rows\":\"1\",\"row-height\":\"24\",\"clearable\":\"\",\"dense\":\"\",\"rules\":_vm.notesRules,\"filled\":\"\",\"label\":\"Instructions\",\"counter\":\"\",\"hint\":\"Use up to 1000 Characters\"},model:{value:(_vm.noteText),callback:function ($$v) {_vm.noteText=$$v},expression:\"noteText\"}})],1)],1)],1)],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"},on:{\"click\":_vm.onVisitClick}},[_c('div',{staticClass:\"text-left text-center\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Visit Time:\")]),_c(VCol,[_c(VRow,{attrs:{\"justify\":\"end\"}},[_vm._v(\" \"+_vm._s(_vm.visitText)+\" \"),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"},on:{\"click\":_vm.onColorClick}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Display Color: \")]),_c(VCol,[_c(VRow,{attrs:{\"justify\":\"end\"}},[_c(VIcon,{attrs:{\"color\":_vm.baseColor}},[_vm._v(_vm._s(_vm.iconName))]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)],1),(!_vm.globals.hideStopStatus)?_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"},on:{\"click\":_vm.onStatusClick}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Status: \")]),_c(VCol,[_c(VRow,{attrs:{\"justify\":\"end\"}},[_c(VBtn,{attrs:{\"text\":\"\",\"color\":_vm.plan.statusColor(_vm.stopStatus)}},[_vm._v(_vm._s(_vm.plan.statusText(_vm.stopStatus)))]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1)],1):_vm._e()],1),(_vm.globals.showProofOfDelivery)?_c('div',[_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\"}},[_c('p',{staticClass:\"text-left mt-6 mb-2\",staticStyle:{\"font-weight\":\"500\",\"font-size\":\"20px\"}},[_vm._v(\"Delivery\")])]),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"label\":\"Item to deliver\",\"counter\":\"\",\"hint\":\"Use up to 100 Characters\",\"rules\":_vm.itemToDeliverTextRules,\"filled\":\"\"},model:{value:(_vm.itemToDeliverText),callback:function ($$v) {_vm.itemToDeliverText=$$v},expression:\"itemToDeliverText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"align\":\"center\"}},[_c('p',{staticClass:\"text-left mb-2\",staticStyle:{\"font-size\":\"16px\"}},[_vm._v(\"Proof of Delivery\")])]),(!this.initStop.isComplete)?_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"display\":\"flex\",\"column-gap\":\"10px\"}},[_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"none\",\"checked\":_vm.proofOfDeliveryNeeded.none},on:{\"clicked\":function($event){return _vm.clickedOnPOD('none')}}}),_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"photo\",\"checked\":_vm.proofOfDeliveryNeeded.photo},on:{\"clicked\":function($event){return _vm.clickedOnPOD('photo')}}}),_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"signature\",\"checked\":_vm.proofOfDeliveryNeeded.signature},on:{\"clicked\":function($event){return _vm.clickedOnPOD('signature')}}})],1):_vm._e(),(this.initStop.isComplete)?_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"display\":\"flex\",\"column-gap\":\"10px\"}},[(!_vm.initStop.addOns.podPhoto && !_vm.initStop.addOns.podBar && !_vm.initStop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"requested\",\"type\":\"none\"}}):_vm._e(),(_vm.initStop.addOns.podPhoto)?_c('RwPODThumbnail',{attrs:{\"mode\":\"requested\",\"type\":\"photo\"}}):_vm._e(),(_vm.initStop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"requested\",\"type\":\"signature\"}}):_vm._e()],1):_vm._e()],1):_vm._e()],1),_c(VTabItem,{key:\"1\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"flat\":\"\",\"hide-sliders\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},model:{value:(_vm.color),callback:function ($$v) {_vm.color=$$v},expression:\"color\"}})],1)],1)],1),_c(VTabItem,{key:\"2\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{attrs:{\"align\":\"start\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Override Default:\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Set a specific visit time for this stop.\")])]),_c(VSwitch,{model:{value:(_vm.isVisitOverride),callback:function ($$v) {_vm.isVisitOverride=$$v},expression:\"isVisitOverride\"}})],1),_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Visit Time (minutes):\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"The expected amount of time spent at this stop.\")])]),_c(VTextField,{staticClass:\"text-right\",staticStyle:{\"max-width\":\"128px\"},attrs:{\"reverse\":\"\",\"rules\":[_vm.rules.required, _vm.rules.visitRange],\"disabled\":!_vm.m_visitOver,\"dense\":\"\",\"filled\":\"\",\"single-line\":\"\",\"type\":\"number\",\"hint\":\"Between 0 to 999\",\"persistent-hint\":true},model:{value:(_vm.visitTimeCalc),callback:function ($$v) {_vm.visitTimeCalc=$$v},expression:\"visitTimeCalc\"}})],1)],1)],1)],1),_c(VTabItem,{key:\"3\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{staticClass:\"mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-center; mx-6\"},[_c('span',{staticStyle:{\"font-size\":\"small\",\"color\":\"orangered\"}},[_vm._v(\" Updating the Stop Status \"),_c('b',[_vm._v(\"does not Check-In your Stop.\")]),_vm._v(\" Check-Ins must be completed from the Planner Map or Stop List. \")])]),_c(VTabs,{attrs:{\"grow\":\"\"},model:{value:(_vm.statusTab),callback:function ($$v) {_vm.statusTab=$$v},expression:\"statusTab\"}},[_c(VTab,{key:\"0\",on:{\"click\":function($event){return _vm.statusTabClick(0)}}},[_vm._v(\" Active \")]),_c(VTab,{key:\"1\",on:{\"click\":function($event){return _vm.statusTabClick(1)}}},[_vm._v(\" Complete \")]),_c(VTab,{key:\"2\",on:{\"click\":function($event){return _vm.statusTabClick(2)}}},[_vm._v(\" Incomplete \")])],1),_c(VTabsItems,{model:{value:(_vm.statusTab),callback:function ($$v) {_vm.statusTab=$$v},expression:\"statusTab\"}},[_c(VTabItem,{key:\"0\"},[_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.autoReturn.apply(null, arguments)}},model:{value:(_vm.stopStatus),callback:function ($$v) {_vm.stopStatus=$$v},expression:\"stopStatus\"}},[_c(VRadio,{key:0,attrs:{\"label\":\"Active (Default)\",\"value\":0},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(0)}}}),_c(VRadio,{key:1,attrs:{\"label\":\"New\",\"value\":1},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(1)}}})],1)],1),_c(VTabItem,{key:\"1\"},[_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.autoReturn.apply(null, arguments)}},model:{value:(_vm.stopStatus),callback:function ($$v) {_vm.stopStatus=$$v},expression:\"stopStatus\"}},[_c(VRadio,{key:10,attrs:{\"label\":\"Complete (Default)\",\"value\":10},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(10)}}}),_c(VRadio,{key:11,attrs:{\"label\":\"Service Complete\",\"value\":11},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(11)}}}),_c(VRadio,{key:12,attrs:{\"label\":\"Left at Front Door/on Porch\",\"value\":12},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(12)}}}),_c(VRadio,{key:13,attrs:{\"label\":\"Left at Gate/in Lobby\",\"value\":13},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(13)}}}),_c(VRadio,{key:14,attrs:{\"label\":\"Left in Mail Area\",\"value\":14},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(14)}}}),_c(VRadio,{key:15,attrs:{\"label\":\"Handed to Customer\",\"value\":15},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(15)}}}),_c(VRadio,{key:16,attrs:{\"label\":\"Signature Collected\",\"value\":16},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(16)}}}),_c(VRadio,{key:17,attrs:{\"label\":\"Pick-Up Complete\",\"value\":17},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(17)}}})],1)],1),_c(VTabItem,{key:\"2\"},[_c(VRadioGroup,{nativeOn:{\"click\":function($event){return _vm.autoReturn.apply(null, arguments)}},model:{value:(_vm.stopStatus),callback:function ($$v) {_vm.stopStatus=$$v},expression:\"stopStatus\"}},[_c(VRadio,{key:20,attrs:{\"label\":\"Incomplete (Default)\",\"value\":20},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(20)}}}),_c(VRadio,{key:21,attrs:{\"label\":\"Nobody There/Not Open\",\"value\":21},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(21)}}}),_c(VRadio,{key:22,attrs:{\"label\":\"Incorrect Address\",\"value\":22},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(22)}}}),_c(VRadio,{key:23,attrs:{\"label\":\"Address Unreachable\",\"value\":23},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(23)}}}),_c(VRadio,{key:24,attrs:{\"label\":\"Customer Refused\",\"value\":24},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(24)}}}),_c(VRadio,{key:25,attrs:{\"label\":\"Sent Text/Email\",\"value\":25},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(25)}}}),_c(VRadio,{key:26,attrs:{\"label\":\"Called/Left Voicemail\",\"value\":26},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(26)}}}),_c(VRadio,{key:27,attrs:{\"label\":\"Spoke with Customer\",\"value\":27},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(27)}}}),_c(VRadio,{key:28,attrs:{\"label\":\"Left a Note\",\"value\":28},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(28)}}}),_c(VRadio,{key:29,attrs:{\"label\":\"Attempt Again Later\",\"value\":29},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(29)}}}),_c(VRadio,{key:30,attrs:{\"label\":\"Do Not Re-Attempt\",\"value\":30},nativeOn:{\"click\":function($event){return _vm.onStatusRadio(30)}}})],1)],1)],1)],1)],1)],1)],1)],1),_c(VCardActions,[(!_vm.isFirstTab)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),(_vm.isFirstTab)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\" Cancel \")]):_vm._e(),(_vm.isFirstTab)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.isDirty},on:{\"click\":_vm.onCommit}},[_vm._v(\" Save \")]):_vm._e(),(_vm.idxTab === 2)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.canApplyVisit},on:{\"click\":_vm.onCommitVisitTime}},[_vm._v(\" Apply \")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwProofOfDeliveryNeeded} from \"@/app/dem/RwProofOfDelivery\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport RwPODThumbnail from \"@/app/views/components/RwPODThumbnail.vue\";\n\n@Component({\n components: {RwPODThumbnail}\n})\nexport default class RwStopEdit extends Vue {\n\n\n //#region Props\n\n @Prop(RwStop) readonly initStop: RwStop;\n\n idxTab = 0;\n statusTab = 0;\n valid: boolean = false;\n initNameText = \"\";\n initAddressText = \"\";\n initPhoneText = \"\";\n initEmailText = \"\";\n initVisitTime = 0;\n initBaseColor = \"\";\n initNoteText = \"\";\n initStatus = 0;\n\n nameText = \"\";\n addressText = \"\";\n phoneText = \"\";\n emailText = \"\";\n // m_statusText = \"\";\n stopStatus = 0;\n baseColor = \"\";\n statusColor = \"\";\n noteText = \"\";\n stopUrl = \"\";\n\n initItemToDeliverText = \"\";\n itemToDeliverText = \"\";\n \n initProofOfDeliveryNeeded: RwProofOfDeliveryNeeded = {none: true, photo: false, barcode: false, signature: false};\n proofOfDeliveryNeeded: RwProofOfDeliveryNeeded = {none: true, photo: false, barcode: false, signature: false};\n\n get address(): string {\n return this.addressText;\n }\n\n set address(val: string) {\n this.addressText = val;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get plan(): RwPlannerSpace {\n return thePlanSpace;\n };\n\n get isTask(): boolean {\n return this.initStop.isTask;\n }\n\n get color(): string {\n return this.baseColor;\n }\n\n set color(val: string) {\n //console.log(\"set color:\", val);\n this.baseColor = val;\n this.onColorPick(val);\n }\n\n get iconName(): string {\n return this.isTask ? 'mdi-clipboard-check' : 'mdi-map-marker';\n }\n\n get addressRules(): any[] {\n return [v => v != ('' || undefined) || 'Address field cannot be blank.',\n v => /^(?!\\s*$).+/.test(v) || 'Address field cannot be blank.',\n v => v.length <= 200 || 'Address must be 200 characters or less.',\n v => /^[^*|{};@$%]+$/.test(v) || 'Address cannot contain special characters.',\n ];\n // v => /^[^*|\\\":<>[\\]{}`\\\\()';@&$%]+$/.test(v) || 'Address cannot contain special characters.'\n }\n\n get stopNameRules() {\n return [v => (v && v.length <= 96 && v !== \"\") || 'Name is required and must be 96 characters or less.']\n }\n\n get notesRules(): any[] {\n if (this.noteText) {\n return [v => v.length <= 1000 || 'Must not exceed 1000 characters.'];\n }\n }\n\n get itemToDeliverTextRules(): any[] {\n if (this.itemToDeliverText) {\n return [v => v.length <= 100 || 'Must not exceed 100 characters.'];\n }\n }\n\n clickedOnPOD(mode: string) {\n if (mode === \"none\") {\n if (!this.proofOfDeliveryNeeded.none) {\n Object.keys(this.proofOfDeliveryNeeded).forEach(key => {\n if (key === \"none\") {\n this.proofOfDeliveryNeeded.none = true;\n } else {\n this.proofOfDeliveryNeeded[key] = false;\n }\n });\n }\n } else {\n this.proofOfDeliveryNeeded[mode] = !this.proofOfDeliveryNeeded[mode];\n let oneSelected = false;\n Object.keys(this.proofOfDeliveryNeeded).forEach(key => {\n if (key !== \"none\") {\n if (this.proofOfDeliveryNeeded[key]) {\n oneSelected = true;\n }\n }\n });\n this.proofOfDeliveryNeeded.none = !oneSelected;\n }\n }\n\n getStopUrl() {\n const self = this;\n let pin = this.isTask ? RwPin.fromTask(this.initStop) : RwPin.fromStop(this.initStop);\n if (pin) {\n let url = thePlanSpace.globals.idxURL[pin.urlHash];\n if (url && url.length > 0) {\n self.stopUrl = url;\n } else {\n pin.dataUrlAsync()\n .then(dataUrl => {\n this.stopUrl = dataUrl;\n // console.warn(\"RwStopView.stopUrl updated\", this.stopUrl);\n })\n }\n }\n }\n\n autoReturn() {\n this.idxTab = 0;\n }\n\n onStatusRadio(val) {\n this.stopStatus = val;\n }\n\n\n get isFirstTab(): boolean {\n return this.idxTab === 0;\n }\n\n\n get title(): string {\n let title = \"Route Edit\";\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n title = `Edit Stop: ${this.initStop ? this.initStop.name : ''}`;\n break;\n case 1:\n title = `Edit Color`;\n break;\n case 2:\n title = 'Edit Visit Time';\n break;\n case 3:\n title = 'Edit Status';\n break;\n //@formatter:on\n }\n return title;\n }\n\n\n get isDirty(): boolean {\n let gotNameDelta = RwSysUtils.isLooseDeltaText(this.initNameText, this.nameText);\n let gotAddDelta = RwSysUtils.isLooseDeltaText(this.initAddressText, this.addressText);\n let gotPhoneDelta = RwSysUtils.isLooseDeltaText(this.initPhoneText, this.phoneText);\n let gotEmailDelta = RwSysUtils.isLooseDeltaText(this.initEmailText, this.emailText);\n let gotVisitDelta = RwSysUtils.isLooseDeltaNum(this.initVisitTime, this.m_visitTime);\n let gotColorDelta = RwSysUtils.isLooseDeltaText(this.initBaseColor, this.baseColor);\n let gotNoteDelta = RwSysUtils.isLooseDeltaText(this.initNoteText, this.noteText);\n let gotStatusDelta = RwSysUtils.isLooseDeltaNum(this.initStatus, this.stopStatus)\n let isDirty = this.globals.recentStopAdd || gotNameDelta || gotAddDelta || gotPhoneDelta || gotEmailDelta || gotVisitDelta || gotColorDelta || gotNoteDelta || gotStatusDelta;\n let proofOfDeliveryIsDirty = false;\n if (this.globals.showProofOfDelivery) {\n const gotItemToDeliverDelta = RwSysUtils.isLooseDeltaText(this.initItemToDeliverText, this.itemToDeliverText);\n const PODDelta = Object.keys(this.initProofOfDeliveryNeeded).some(key => this.initProofOfDeliveryNeeded[key] !== this.proofOfDeliveryNeeded[key]);\n proofOfDeliveryIsDirty = gotItemToDeliverDelta || PODDelta;\n }\n return isDirty || proofOfDeliveryIsDirty;\n }\n\n\n get isDirtyColor(): boolean {\n return RwSysUtils.isLooseDeltaText(this.initBaseColor, this.baseColor);\n }\n\n\n //#endregion\n\n\n //#region Navigation\n\n onColorClick() {\n this.idxTab = 1;\n }\n\n onStatusClick() {\n this.idxTab = 3;\n if (this.stopStatus < 3) {\n this.statusTab = 0;\n } else if (this.stopStatus < 20 && this.stopStatus > 9) {\n this.statusTab = 1;\n } else {\n this.statusTab = 2;\n }\n }\n\n statusTabClick(val) {\n switch (val) {\n case 1:\n this.stopStatus = 10;\n break;\n case 2:\n this.stopStatus = 20;\n break;\n case 0:\n default:\n this.stopStatus = 0;\n break;\n }\n }\n\n onBackClick() {\n //console.log(\"onBackClick\");\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n break;\n case 1:\n break;\n case 2:\n this.m_visitOver = this.tabInitOver;\n this.m_visitTime = this.tabInitVisitTime;\n break;\n\n case 3:\n break;\n default:\n break;\n //@formatter:on\n }\n //console.log(\"onBackClick \", this.m_visitOver, this.m_visitTime)\n this.idxTab = 0;\n }\n\n onColorPick(color: string) {\n if (color.length === 9 && color.endsWith(\"FF\")) {\n color = color.substring(0, 7);\n }\n //console.log(\"RwColorPicker.onColorPick color\", color);\n this.baseColor = color;\n this.idxTab = 0;\n }\n\n\n //#endregion Navigation\n\n\n //#region Methods\n\n\n onCommit(event: Event) {\n // event.stopPropagation();\n\n const self = this;\n //console.log(\"RwStopEdit.onCommit\");\n let isValidForm = this.isValidForm();\n if (isValidForm) {\n // if ((this.$refs.form as Vue & { validate: () => boolean }).validate()) {\n\n this.initStop.name = this.nameText;\n this.initStop.address = this.addressText;\n this.initStop.phone = this.phoneText;\n this.initStop.email = this.emailText;\n this.initStop.visitTime = this.m_visitTime;\n this.initStop.baseColor = this.baseColor;\n this.initStop.note = this.noteText;\n this.initStop.status = this.stopStatus;\n\n if (this.globals.showProofOfDelivery) {\n if (this.itemToDeliverText === null) {\n this.itemToDeliverText = \"\";\n }\n this.initStop.addOns.itemToDeliver = this.itemToDeliverText.trim();\n this.initStop.addOns.podPhoto = this.proofOfDeliveryNeeded.photo ? true : false;\n this.initStop.addOns.podBar = this.proofOfDeliveryNeeded.barcode ? true : false;\n this.initStop.addOns.podSig = this.proofOfDeliveryNeeded.signature ? true : false;\n }\n\n this.globals\n .updateStopDB(self.initStop)\n .then(() => {\n //console.log(\"RwStopEdit.onCommit\", `updateStopDB PASS`);\n self.globals.commitStops();\n event.stopPropagation();\n self.close(true);\n })\n .catch(err => {\n //console.error(\"RwStopEdit.onCommit\", `updateStopDB FAIL: ${err}`);\n //rollback:\n self.initStop.name = self.initNameText;\n self.initStop.address = self.initAddressText;\n self.initStop.phone = self.initPhoneText;\n self.initStop.email = self.initEmailText;\n self.initStop.visitTime = self.initVisitTime;\n self.initStop.baseColor = self.initBaseColor;\n self.initStop.note = self.initNoteText;\n self.initStop.status = self.initStatus;\n\n if (this.globals.showProofOfDelivery) {\n if (this.initItemToDeliverText) this.initStop.addOns.itemToDeliver = this.initItemToDeliverText;\n if (this.initProofOfDeliveryNeeded.photo) this.initStop.addOns.podPhoto = true;\n if (this.initProofOfDeliveryNeeded.barcode) this.initStop.addOns.podBar = true;\n if (this.initProofOfDeliveryNeeded.signature) this.initStop.addOns.podSig = true;\n }\n })\n } else {\n this.globals.showSnack(\"Please ensure your entries meet the requirements and try again.\", \"error\");\n }\n }\n\n isValidForm() {\n let vueForm = this.$refs.form as any;\n let isValid = vueForm.validate();\n return isValid;\n }\n\n\n onCancel(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n close(isCommit?: boolean) {\n this.$emit(\"onStopEdited\", isCommit);\n this.globals.m_showStopEdit = false;\n this.globals.recentStopAdd = false;\n }\n\n setProofOfDelivery() {\n if (this.globals.showProofOfDelivery) {\n this.initItemToDeliverText = this.initStop.addOns.itemToDeliver || \"\";\n this.itemToDeliverText = this.initStop.addOns.itemToDeliver || \"\";\n\n this.initProofOfDeliveryNeeded = {none: true, photo: false, barcode: false, signature: false};\n if (this.initStop.addOns.podPhoto) {\n this.initProofOfDeliveryNeeded.photo = true;\n this.initProofOfDeliveryNeeded.none = false;\n }\n if (this.initStop.addOns.podBar) {\n this.initProofOfDeliveryNeeded.barcode = true;\n this.initProofOfDeliveryNeeded.none = false;\n }\n if (this.initStop.addOns.podSig) {\n this.initProofOfDeliveryNeeded.signature = true;\n this.initProofOfDeliveryNeeded.none = false;\n }\n this.proofOfDeliveryNeeded = {...this.initProofOfDeliveryNeeded};\n }\n }\n\n //#endregion\n\n\n //#region LifeCycle\n\n\n mounted() {\n const self = this;\n Vue.nextTick(function () {\n self.initValues();\n });\n // console.warn(\"this.initStop.status\", this.initStop.status);\n }\n\n initValues() {\n //console.log(\"RwStopEdit.mounted initStop\", this.initStop.name);\n // console.warn(\"initStatus set to:\", this.initStop.status);\n this.initNameText = this.initStop.name;\n this.initAddressText = this.initStop.address;\n this.initPhoneText = this.initStop.phone;\n this.initEmailText = this.initStop.email;\n this.initVisitTime = this.initStop.visitTime;\n this.initBaseColor = this.initStop.baseColor;\n this.initNoteText = this.initStop.note;\n this.initStatus = this.initStop.status;\n\n this.nameText = this.initStop.name;\n this.addressText = this.initStop.address;\n this.phoneText = this.initStop.phone;\n this.emailText = this.initStop.email;\n this.baseColor = this.initStop.baseColor;\n this.noteText = this.initStop.note;\n this.stopStatus = this.initStop.status;\n\n this.setProofOfDelivery();\n\n this.initDefaultMins();\n this.setVisitTime()\n\n this.getStopUrl();\n }\n\n //#endregion\n\n\n //region Visit Override\n\n visitTrigger = 0;\n isVisitRangeValid = false;\n m_visitTimeCalc = 0;\n m_visitOver = false;\n m_visitTime = 0;\n tabInitOver = false;\n tabInitVisitTime = 0;\n private defaultVisitTime = 0;\n\n get visitText(): string {\n //Adding Observable value just for trigger;\n let vizOver = this.m_visitOver;\n let vizTime = this.m_visitTime;\n let visText = RwStop.visitTimeTextPrimitive(this.m_visitOver, this.visitTimeCalc);\n //console.warn(\"RwStopEdit.visitText\", vizOver, vizTime, visText)\n return visText;\n }\n\n get canApplyVisit(): boolean {\n let isDefault = !this.m_visitOver;\n let gotRequired = !!this.m_visitTime || this.m_visitTime === 0;\n let gotValidRange = this.isVisitRangeValid;\n let gotOverDelta = this.tabInitOver != this.m_visitOver;\n let gotTimeDelta = RwSysUtils.isLooseDeltaNum(this.tabInitVisitTime, this.m_visitTime);\n let canApply = isDefault || (gotRequired && gotValidRange && (gotOverDelta || gotTimeDelta));\n //console.log(\"canApplyVisit:: isDefault || (gotRequired, gotValidRange && (gotOverDelta || gotTimeDelta))\", isDefault, gotRequired, gotValidRange, (gotOverDelta || gotTimeDelta))\n return canApply;\n }\n\n get initVisitOver(): boolean {\n return this.initVisitTime >= 0;\n //return this.initStop && this.initStop.visitTime >= 0\n }\n\n get rules() {\n const self = this;\n return {\n required: value => {\n\n if (!self.m_visitOver || (!!value || value === 0)) {\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return true;\n } else {\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return false;\n }\n },\n visitRange: value => {\n if (!self.m_visitOver || value >= 0 && value <= 999) {\n self.isVisitRangeValid = true;\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return true;\n } else {\n self.isVisitRangeValid = false;\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return 'Between 0 to 999'\n }\n },\n }\n }\n\n get isVisitOverride(): boolean {\n return this.m_visitOver;\n }\n\n set isVisitOverride(val: boolean) {\n this.m_visitOver = val;\n this.m_visitTime = val ? this.defaultVisitTime : -1;\n //console.log(\"SET isOverride\", val, this.m_isOverride, this.m_visitTime)\n }\n\n get visitTimeCalc(): number {\n let trigger1 = this.visitTrigger;\n let trigger2 = this.m_visitOver;\n this.m_visitTimeCalc = this.m_visitOver ? this.m_visitTime : this.defaultVisitTime;\n //console.log(\"GET visitTimeCalc time, m_isOverride, m_visitTime, defaultVisitTime\", this.m_visitTime, this.defaultVisitTime, this.m_visitTimeCalc)\n return this.m_visitTimeCalc;\n }\n\n set visitTimeCalc(val: number) {\n if (this.m_visitOver) {\n if (val >= 0 && val <= 999) {\n this.m_visitTime = val;\n this.m_visitTimeCalc = val;\n } else {\n if (val < 0) {\n this.m_visitTime = 0;\n this.m_visitTimeCalc = 0;\n }\n if (val > 999) {\n this.m_visitTime = 999;\n this.m_visitTimeCalc = 999;\n }\n }\n } else {\n this.m_visitTime = -1;\n }\n this.visitTrigger++;\n //console.log(\"SET visitTimeCalc\", val, this.m_visitOver, this.m_visitTime)\n }\n\n private onVisitClick() {\n this.initVisitTab()\n this.idxTab = 2;\n }\n\n private onCommitVisitTime(event: Event) {\n event.stopPropagation();\n if (!this.m_visitOver) {\n this.m_visitTime = -1;\n }\n //console.log(\"onCommitVisitTime SET\", this.m_isOverride, this.m_visitTime);\n this.idxTab = 0;\n }\n\n private initVisitTab() {\n this.tabInitOver = this.m_visitOver;\n this.tabInitVisitTime = this.m_visitTime;\n this.visitTrigger++;\n //console.log(\"initVisitTab \", this.tabInitOver, this.tabInitVisitTime)\n }\n\n private setVisitTime() {\n if (this.initStop) {\n if (this.initVisitOver) {\n this.m_visitOver = true;\n this.m_visitTime = this.initStop.visitTime;\n this.tabInitOver = this.m_visitOver;\n this.tabInitVisitTime = this.m_visitTime;\n } else {\n this.m_visitOver = false;\n this.m_visitTime = RwPrefUtils.visitTime;\n this.tabInitOver = this.m_visitOver;\n this.tabInitVisitTime = this.m_visitTime;\n }\n }\n //console.log(\"setVisitTime\", this.m_isOverride, this.m_visitTime)\n }\n\n private initDefaultMins() {\n if (this.initStop && this.initStop.isSited) {\n let site = this.initStop.getSite();\n if (site) {\n this.defaultVisitTime = site.getVisitTime()\n } else {\n this.defaultVisitTime = RwPrefUtils.visitTime;\n }\n } else {\n this.defaultVisitTime = RwPrefUtils.visitTime;\n }\n //console.log(\"initDefaultMins\", this.defaultVisitTime)\n }\n\n //endregion Visit Override\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStopEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStopEdit.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwStopEdit.vue?vue&type=style&index=0&id=48649b51&prod&lang=scss&\"","import { render, staticRenderFns } from \"./RwStopEdit.vue?vue&type=template&id=48649b51&\"\nimport script from \"./RwStopEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwStopEdit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwStopEdit.vue?vue&type=style&index=0&id=48649b51&prod&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onCancel.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onCommit.apply(null, arguments)}]},model:{value:(_vm.globals.m_showHistoryEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showHistoryEdit\", $$v)},expression:\"globals.m_showHistoryEdit\"}},[_c(VCard,{ref:\"cardHistEdit\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VCardTitle,{class:_vm.globals.backColorBar,staticStyle:{\"position\":\"relative\",\"z-index\":\"1\",\"box-shadow\":\"2px 2px 4px -1px rgba(0, 0, 0, 0.2), 0px 4px 5px 0px rgba(0, 0, 0, 0.14), 0px 1px 10px 0px rgba(0, 0, 0, 0.12)\"}},[(_vm.stop)?_c(VImg,{staticStyle:{\"max-width\":\"56px\"},attrs:{\"contain\":\"\",\"height\":\"32\",\"width\":\"32\",\"src\":_vm.stop.dataUrl ? _vm.stop.dataUrl : ''}}):_vm._e(),_c(VTooltip,{attrs:{\"bottom\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('span',_vm._g(_vm._b({staticClass:\"stop-title\"},'span',attrs,false),on),[_vm._v(\"Edit Check-In: \"+_vm._s(_vm.name))])]}}])},[_c('span',[_vm._v(\"Edit Check-In: \"+_vm._s(_vm.name))])])],1),(_vm.hist)?_c(VCardText,{staticClass:\"pt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 98px)\",\"width\":\"100%\",\"overflow-y\":\"auto\",\"position\":\"relative\"}},[_c(VRow,{staticClass:\"ma-1 mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"label\":\"Name\",\"rules\":_vm.histNameRules,\"filled\":\"\"},model:{value:(_vm.nameText),callback:function ($$v) {_vm.nameText=$$v},expression:\"nameText\"}})],1),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Check-In Time: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.hist.formattedStartTime)+\" \")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Address: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.hist.address)+\" \")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"height\":\"40px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Display Color: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_c(VIcon,{attrs:{\"color\":_vm.stop.baseColor}},[_vm._v(\"mdi-map-marker\")])],1)]),(_vm.globals.showProofOfDelivery && (_vm.stop.addOns.podPhoto || _vm.stop.addOns.podBar || _vm.stop.addOns.podSig))?_c('div',[(!!_vm.stop.addOns.itemToDeliver?.trim())?_c(VRow,{staticClass:\"px-3 mt-2\",attrs:{\"no-gutters\":\"\",\"align\":\"center\",\"justify\":\"space-between\"}},[_c('div',{staticClass:\"text-left\"},[_vm._v(\" Item: \")]),_c('div',{staticClass:\"ellipseStateText\",style:(_vm.finalLength)},[_vm._v(\" \"+_vm._s(_vm.stop.addOns.itemToDeliver.trim())+\" \")])]):_vm._e(),_c(VRow,{staticClass:\"px-3 mt-4\",attrs:{\"no-gutters\":\"\",\"align\":\"center\"}},[_c('p',{staticClass:\"text-left\"},[_vm._v(\"Proof of Delivery:\")])]),_c(VRow,{staticClass:\"px-3\",staticStyle:{\"display\":\"flex\",\"column-gap\":\"10px\"},attrs:{\"no-gutters\":\"\"}},[(!_vm.stop.addOns.podPhoto && !_vm.stop.addOns.podBar && !_vm.stop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"requested\",\"type\":\"none\"}}):_vm._e(),(_vm.stop.addOns.podPhoto)?_c('RwPODThumbnail',{attrs:{\"mode\":\"edit\",\"type\":\"photo\",\"media\":_vm.editedHist.getFirstPhoto(),\"quantity\":_vm.editedHist.getPhotos()?.length},on:{\"clicked\":function($event){return _vm.addPOD(_vm.ConfirmationType.Photo)}}}):_vm._e(),(_vm.stop.addOns.podBar)?_c('RwPODThumbnail',{attrs:{\"mode\":\"edit\",\"type\":\"barcode\",\"media\":_vm.editedHist.getMedia(_vm.ConfirmationType.Barcode)},on:{\"clicked\":function($event){return _vm.addPOD(_vm.ConfirmationType.Barcode)}}}):_vm._e(),(_vm.stop.addOns.podSig)?_c('RwPODThumbnail',{attrs:{\"mode\":\"edit\",\"type\":\"signature\",\"media\":_vm.editedHist.getMedia(_vm.ConfirmationType.Signature)},on:{\"clicked\":function($event){return _vm.addPOD(_vm.ConfirmationType.Signature)}}}):_vm._e()],1)],1):_vm._e(),(_vm.addingPOD)?_c('div',{staticClass:\"addPODPopup\",class:_vm.globals.isDarkMode ? 'dark' : ''},[(_vm.isUploadingPhoto() && _vm.showNextPhotoButton())?_c('button',{staticStyle:{\"position\":\"absolute\",\"top\":\"50%\",\"right\":\"15px\",\"margin-top\":\"-15px\"},on:{\"click\":function($event){return _vm.showNextPhoto()}}},[_c(VIcon,{staticStyle:{\"font-size\":\"40px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"mdi-chevron-right\")])],1):_vm._e(),(_vm.isUploadingPhoto() && _vm.currentPhotoIndex > 0)?_c('button',{staticStyle:{\"position\":\"absolute\",\"top\":\"50%\",\"left\":\"15px\",\"margin-top\":\"-15px\"},on:{\"click\":function($event){return _vm.showPreviousPhoto()}}},[_c(VIcon,{staticStyle:{\"font-size\":\"40px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"mdi-chevron-left\")])],1):_vm._e(),_c('div',[(!_vm.getCurrentMedia())?_c('div',[_c('img',{attrs:{\"width\":\"190\",\"src\":_vm.addingPODBackgroundImage()}}),_c('p',{staticStyle:{\"font-size\":\"20px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"No \"+_vm._s(_vm.ConfirmationType[_vm.uploadingType].toLowerCase())+\" yet\")])]):_vm._e(),(!!_vm.getCurrentMedia())?_c('div',{staticStyle:{\"position\":\"relative\"},attrs:{\"id\":\"popup-image-wrapper\"}},[_c('img',{staticStyle:{\"max-width\":\"460px\",\"max-height\":\"60vh\"},style:({ background: _vm.getCurrentMediaBackgroundColor(), borderRadius: _vm.getCurrentMediaBorderRadius(), padding: _vm.getCurrentMediaPadding(), opacity: _vm.popupImageOpacity}),attrs:{\"src\":_vm.getMediaLink()}}),(!!_vm.getCurrentMedia())?_c('button',{staticStyle:{\"position\":\"absolute\",\"top\":\"10px\",\"left\":\"10px\",\"background-color\":\"white\",\"padding\":\"10px\",\"border-radius\":\"25px\"},attrs:{\"id\":\"delete-image-button\"},on:{\"click\":function($event){return _vm.deleteCurrentMedia()}}},[_c(VIcon,{attrs:{\"color\":\"black\"}},[_vm._v(\"mdi-trash-can-outline\")])],1):_vm._e()]):_vm._e(),(!_vm.getCurrentMedia())?_c('button',{staticClass:\"mt-6\",staticStyle:{\"border\":\"solid 2px #E93373\",\"padding\":\"10px 16px\"},style:({ color: _vm.globals.isDarkMode ? 'white' : 'black', fontWeight: 'bold' }),on:{\"click\":function($event){return _vm.openUploadWidget()}}},[_vm._v(\"Add a \"+_vm._s(_vm.ConfirmationType[_vm.uploadingType].toLowerCase()))]):_vm._e()]),_c('div',{staticStyle:{\"position\":\"absolute\",\"bottom\":\"15px\",\"right\":\"15px\"}},[_c(VBtn,{style:({ color: _vm.globals.isDarkMode ? '#A3C5FF !important' : '#4285F4 !important' }),attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.closeAddPOD()}}},[_c('b',[_vm._v(\"Done\")])]),(_vm.isUploadingPhoto() && !!_vm.getCurrentMedia())?_c(VBtn,{style:({ color: _vm.globals.isDarkMode ? '#A3C5FF !important' : '#4285F4 !important' }),attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.openUploadWidget()}}},[_c('b',[_vm._v(\"Add a photo\")])]):_vm._e()],1)]):_vm._e(),_c(VRow,{staticClass:\"ma-1 mt-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"clearable\":\"\",\"dense\":\"\",\"label\":\"Check-in comments\",\"rules\":_vm.histCommentsRules,\"filled\":\"\"},model:{value:(_vm.noteText),callback:function ($$v) {_vm.noteText=$$v},expression:\"noteText\"}})],1)],1):_vm._e(),(!_vm.addingPOD)?_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.confirmClose()}}},[_c('b',[_vm._v(\"Cancel\")])]),_c(VBtn,{style:({ color: _vm.globals.isDarkMode ? '#A3C5FF' : '#4285F4' }),attrs:{\"xs6\":\"\",\"text\":\"\",\"disabled\":!_vm.isDirty},on:{\"click\":function($event){return _vm.onCommit()}}},[_c('b',[_vm._v(\"Save\")])])],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport theGlobals, { RwGlobals } from \"@/app/RwGlobals\";\nimport thePlan, { RwPlannerSpace } from \"@/app/views/planner/RwPlannerSpace\";\nimport { RwHistory } from \"@/app/dem/RwHistory\";\nimport RwPODThumbnail from \"@/app/views/components/RwPODThumbnail.vue\";\nimport { RwSysUtils } from \"@/app/utils/RwSysUtils\";\nimport { RwLog } from \"@/app/dal/RwLog\";\nimport { RwConstants } from \"@/app/RwConstants\";\nimport { RwCoreMedia } from \"@/app/dem/ProofOfDelivery/RwCoreMedia\";\nimport { ConfirmationType, MediaType } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport { RwTaskHistory } from \"@/app/dal/RwTaskHistory\";\nimport Uppy from \"@uppy/core\";\nimport Dashboard from \"@uppy/dashboard\";\nimport Tus from \"@uppy/tus\";\n\nimport '@uppy/core/dist/style.min.css';\nimport '@uppy/dashboard/dist/style.min.css';\n\n@Component({\n components: { RwPODThumbnail }\n})\nexport default class RwHistoryEdit extends Vue {\n @Prop(Boolean) readonly popup: boolean;\n\n valid: boolean = false;\n initNameText = \"\";\n initNoteText = \"\";\n\n nameText = \"\";\n noteText = \"\";\n\n isMounted = false;\n finalLength: string = this.calcMaxWidth();\n noteVisibility = false;\n hist: RwHistory = this.globals.m_histEditInitHistory;\n editedHist: RwHistory = new RwHistory();\n addingPOD = false;\n uploadedPODImage = false;\n uploadedImageFromPopup = false;\n ConfirmationType = ConfirmationType;\n uploadingType: ConfirmationType;\n uploadWidget: Uppy;\n changedMedia = false;\n currentPhotoIndex = 0;\n popupImageOpacity = 0;\n\n get stop() {\n if (this.hist && this.hist.stopId) {\n if (this.plan.selectedStop && this.plan.selectedStop.stopId === this.hist.stopId) {\n return this.plan.selectedStop;\n } else {\n const stop = this.globals.stops.find(s => s.stopId === this.hist.stopId);\n return stop ?? null;\n }\n }\n return null;\n }\n\n get name() {\n return this.hist?.name ?? \"\";\n }\n\n get globals(): RwGlobals {\n return theGlobals\n }\n\n get plan(): RwPlannerSpace {\n return thePlan;\n };\n\n get isDirty(): boolean {\n let gotNameDelta = RwSysUtils.isLooseDeltaText(this.initNameText, this.nameText);\n let gotNoteDelta = RwSysUtils.isLooseDeltaText(this.initNoteText, this.noteText);\n return gotNameDelta || gotNoteDelta || this.changedMedia;\n }\n\n get histNameRules() {\n return [v => (v && v.length <= 96 && v !== \"\") || 'Name is required and must be 96 characters or less.']\n }\n\n get histCommentsRules(): any[] {\n if (this.noteText) {\n return [v => v.length <= 1000 || 'Must not exceed 1000 characters.'];\n }\n }\n\n getCurrentMedia(): RwCoreMedia {\n if (this.uploadingType === ConfirmationType.Photo) {\n return this.editedHist.getPhoto(this.currentPhotoIndex);\n }\n return this.editedHist.getMedia(this.uploadingType);\n }\n\n isUploadingPhoto(): boolean {\n return this.uploadingType === ConfirmationType.Photo;\n }\n\n showNextPhotoButton(): boolean {\n return this.editedHist.getPhotos()?.length > 1 && this.currentPhotoIndex < this.editedHist.getPhotos()?.length - 1;\n }\n\n\n showNextPhoto(): void {\n if (this.currentPhotoIndex < this.editedHist.getPhotos().length - 1) {\n this.popupImageOpacity = 0;\n setTimeout(() => {\n this.currentPhotoIndex++;\n setTimeout(() => {\n this.popupImageOpacity = 1;\n }, 200);\n }, 200);\n }\n }\n\n showPreviousPhoto(): void {\n if (this.currentPhotoIndex > 0) {\n this.popupImageOpacity = 0;\n setTimeout(() => {\n this.currentPhotoIndex--;\n setTimeout(() => {\n this.popupImageOpacity = 1;\n }, 200);\n }, 200);\n }\n }\n\n getMediaLink(): string {\n return RwCoreMedia.getLink(this.getCurrentMedia());\n }\n\n getCurrentMediaBackgroundColor(): string {\n if (this.getCurrentMedia().confType === ConfirmationType.Signature) {\n return 'white';\n }\n return 'none';\n }\n\n getCurrentMediaPadding(): string {\n if (this.getCurrentMedia().confType === ConfirmationType.Signature) {\n return '20px';\n }\n return 'none';\n }\n\n getCurrentMediaBorderRadius(): string {\n return '8px';\n }\n\n deleteCurrentMedia(): void {\n this.globals.showConfirmDialog(\"Move to trash\", \"Remove image from this check-in?\", 'Move to trash', 'Cancel')\n .then((confirmed) => {\n if (confirmed) {\n const currentMedia = this.getCurrentMedia();\n if (currentMedia) {\n currentMedia.del = true;\n this.changedMedia = true;\n if (this.uploadingType === ConfirmationType.Photo) {\n if (this.currentPhotoIndex > 0) {\n this.currentPhotoIndex--;\n }\n }\n this.$forceUpdate();\n }\n }\n });\n }\n\n confirmClose() {\n if (this.isDirty) {\n this.globals.showConfirmDialog(\"Save changes\", \"You have unsaved changes. Are you sure you want to cancel?\", 'Yes', 'No')\n .then((confirmed) => {\n if (confirmed) this.close();\n });\n } else {\n this.close();\n }\n }\n\n close(isCommit?: boolean) {\n this.$emit(\"onHistoryEdited\", isCommit);\n this.globals.m_showHistoryEdit = false;\n }\n\n onCommit() {\n if (!this.isDirty) return;\n const SOURCE = \"RwHistoryEdit.OnCommit\";\n this.editedHist.name = this.nameText;\n this.editedHist.note = this.noteText;\n const self = this;\n\n RwTaskHistory.updateHistoryAsync(this.editedHist)\n .then((histResult) => {\n if (histResult) {\n this.close(true);\n this.globals.selectedHistoryItem = null;\n this.globals.showSnack(\"Check-in saved successfully!\", \"success\");\n } else {\n self.editedHist.name = self.initNameText;\n self.editedHist.note = self.initNoteText;\n this.globals.showSnack(\"Sorry, we ran into an error saving the check-in\", \"error\");\n RwLog.error(SOURCE, `Error saving check-in ${JSON.stringify(histResult)}`)\n }\n })\n .catch((err) => {\n this.globals.showSnack(\"Sorry, we ran into an error saving the check-in\", \"error\");\n RwLog.error(SOURCE, `Error saving check-in ${JSON.stringify(err)}`)\n });\n }\n\n onCancel(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n addingPODBackgroundImage() {\n return `/images/icons/pod_no_${ConfirmationType[this.uploadingType]}${this.globals.isDarkMode ? '_dark' : ''}.png`.toLowerCase();\n }\n\n addPOD(type: ConfirmationType) {\n this.uploadingType = type;\n this.uploadedImageFromPopup = false;\n if (this.getCurrentMedia()) {\n this.addingPOD = true;\n this.uploadedPODImage = false;\n\n this.popupImageOpacity = 0;\n setTimeout(() => {\n this.popupImageOpacity = 1;\n }, 200);\n } else {\n this.openUploadWidget();\n }\n }\n\n closeAddPOD() {\n this.addingPOD = false;\n this.currentPhotoIndex = 0;\n }\n\n backToStop() {\n this.plan.selectedPin = this.plan.previousPin;\n this.globals.showHistoryPop = false;\n this.globals.selectedHistoryItem = null;\n }\n\n get cardElement(): Element {\n let el: Element;\n let card = this.$refs.cardHistView as any;\n if (card && card.$el && card.$el) {\n el = card.$el;\n }\n return el;\n }\n\n showTooltip(text: string) {\n return text.length > 72 || text.indexOf(\"\\n\") !== -1;\n }\n\n toggleNoteVisibility() {\n this.noteVisibility = !this.noteVisibility;\n }\n\n calcMaxWidth(): string {\n const SOURCE = \"RwHistoryView.calcMaxWidth\"\n\n let maxWidth = window.innerWidth;\n if (this.popup == true) {\n maxWidth = 450\n } else {\n\n if (this.isMounted) {\n\n let card = this.cardElement;\n if (card && card.clientWidth) {\n maxWidth = card.clientWidth - 150;\n } else {\n //This occurs in Empty State\n maxWidth = 450;\n }\n }\n\n }\n let output = \"max-width: \" + maxWidth.toString() + \"px\";\n this.finalLength = output;\n\n return output;\n }\n\n openUploadWidget() {\n this.initializeUploadWidget();\n (this.uploadWidget.getPlugin('Dashboard') as any).openModal();\n }\n\n initializeUploadWidget() {\n this.uploadWidget = new Uppy({\n allowMultipleUploadBatches: false,\n restrictions: {\n maxNumberOfFiles: this.uploadingType === ConfirmationType.Signature ? 1 : null,\n allowedFileTypes: ['image/*'], maxFileSize: 5 * 1024 * 1024\n },\n autoProceed: true,\n onBeforeFileAdded: (currentFile) => {\n currentFile.id = RwSysUtils.guidNew();\n return true;\n }\n }).use(Dashboard, {\n showProgressDetails: true\n }).use(Tus,\n {\n retryDelays: null,\n endpoint: RwConstants.tusUploadEndpoint,\n allowedMetaFields: [\"client\", \"route\", \"stop\", \"filename\", \"filetype\"], chunkSize: 5 * 1024 * 1024,\n async onBeforeRequest(req, file) {\n const { client, filename, route, stop } = file.meta;\n const signature = new URLSearchParams({ client, filename, route, stop } as any).toString();\n const authorization = Array.from(new Uint8Array(\n await crypto.subtle.digest('SHA-256', new TextEncoder().encode(signature))\n )).map(b => b.toString(16).padStart(2, '0')).join('');\n req.setHeader('Authorization', authorization);\n }\n });\n\n this.uploadWidget.on('file-added', (file) => {\n const fileMetaData = {\n \"client\": \"roadwarrior\",\n \"route\": theGlobals.activeRoute.routeId,\n \"stop\": this.stop.stopId,\n \"filename\": file.id,\n \"filetype\": file.type\n };\n this.uploadWidget.setFileMeta(file.id, fileMetaData);\n });\n\n this.uploadWidget.on('upload-success', (file, response) => {\n const fileGuid = response.uploadURL.replace(RwConstants.tusUploadEndpoint, '');\n (this.uploadWidget.getPlugin('Dashboard') as any).closeModal();\n\n const coreMedia = new RwCoreMedia();\n coreMedia.mediaId = fileGuid;\n coreMedia.mediaType = MediaType.Image;\n coreMedia.confType = this.uploadingType;\n coreMedia.stopId = this.stop.stopId;\n coreMedia.rid = this.stop.routeId;\n\n this.editedHist.media.push(coreMedia);\n this.changedMedia = true;\n this.uploadedPODImage = true;\n if (this.addingPOD) this.uploadedImageFromPopup = true;\n this.$forceUpdate();\n });\n\n this.uploadWidget.on('complete', (result) => {\n if (this.uploadingType === ConfirmationType.Photo) {\n this.currentPhotoIndex = this.editedHist.getPhotos().length - 1;\n }\n this.$forceUpdate();\n });\n\n this.uploadWidget.on('error', (error) => {\n const SOURCE = \"RwHistoryEdit.UploadPOD\";\n this.globals.showSnack(\"Sorry, we ran into an error uploading your proof of delivery\", \"error\");\n RwLog.error(SOURCE, `Error uploading proof of delivery ${JSON.stringify(error.stack)}`);\n });\n }\n\n mounted() {\n this.isMounted = true;\n this.calcMaxWidth();\n window.addEventListener('resize', this.calcMaxWidth);\n\n this.editedHist.fromHistory(this.hist, true);\n this.initNameText = this.hist.name;\n this.initNoteText = this.hist.note;\n\n this.nameText = this.initNameText;\n this.noteText = this.initNoteText;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwHistoryEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwHistoryEdit.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwHistoryEdit.vue?vue&type=style&index=0&id=4e0f5698&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./RwHistoryEdit.vue?vue&type=template&id=4e0f5698&scoped=true&\"\nimport script from \"./RwHistoryEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwHistoryEdit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwHistoryEdit.vue?vue&type=style&index=0&id=4e0f5698&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4e0f5698\",\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBanner } from 'vuetify/lib/components/VBanner';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"persistent\":\"\",\"value\":_vm.globals.m_showRouteNew,\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"content-class\":\"dialog-with-scroll\"},on:{\"click:outside\":_vm.escPress,\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)}}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"}},[_c(VCardTitle,{class:_vm.globals.backColorBar,staticStyle:{\"height\":\"56px\",\"width\":\"100%\"}},[_c('span',{staticStyle:{\"overflow\":\"hidden\",\"white-space\":\"nowrap\",\"text-overflow\":\"ellipsis\",\"display\":\"inline-block\"}},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")])]),(_vm.idxTab===1 && !_vm.isRouteSelected)?_c(VBanner,{attrs:{\"color\":\"warning\"}},[_c(VIcon,[_vm._v(\"mdi-warning\")]),_vm._v(\" There is no Route selected. To create a Copy of a Route, exit this window, select or open a Route, and proceed to create a copy. If the problem persists, please \"),_c('a',{attrs:{\"href\":\"mailto://support@roadwarrior.app\"}},[_vm._v(\"contact support\")]),_vm._v(\". \")],1):_vm._e(),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 104px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[(_vm.globals.isMobileView)?_c(VList,{staticStyle:{\"align-self\":\"center\"}},[_c(VListItem,{attrs:{\"color\":\"primary\"},on:{\"click\":_vm.onRouteCreate}},[_vm._v(\" Create Blank Route \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-plus\")])],1),(!_vm.isEmpty && !!_vm.globals.activeRoute)?_c(VListItem,{on:{\"click\":_vm.onCopyRouteClick}},[_vm._v(\" Copy Active Route \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1):_vm._e(),(_vm.globals.routes.length>0)?_c(VListItem,{on:{\"click\":_vm.onOpenRouteClick}},[_vm._v(\" Open Recent Route \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-folder-open\")])],1):_vm._e(),_c(VListItem)],1):_vm._e(),(!_vm.globals.isMobileView)?_c(VContainer,{staticClass:\"py-0\",staticStyle:{\"height\":\"calc(100vh - 225px)\"},attrs:{\"fill-height\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize px-8\",attrs:{\"x-large\":\"\",\"block\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onRouteCreate}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-plus\")]),_vm._v(\" Create Blank Route \")],1)],1),(!_vm.isEmpty && !!_vm.globals.activeRoute)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\"},on:{\"click\":_vm.onCopyRouteClick}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy Active Route \")],1)],1):_vm._e(),(_vm.globals.routes.length > 0)?_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\"},on:{\"click\":_vm.onOpenRouteClick}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-folder-open\")]),_vm._v(\" Open Recent Route \")],1)],1):_vm._e()],1)],1)],1):_vm._e()],1),_c(VTabItem,{key:\"1\",staticClass:\"py-0\",staticStyle:{\"height\":\"calc(100vh - 225px)\"},attrs:{\"fill-height\":\"\"}},[(_vm.globals.isMobileView)?_c(VList,[_c(VListItem,{attrs:{\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyAllStops}},[_vm._v(\" Copy with all stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItem,{attrs:{\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyActiveStops}},[_vm._v(\" Copy active stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1),_c(VListItem,{attrs:{\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyNoStops}},[_vm._v(\" Copy with no stops \"),_c(VSpacer),_c(VIcon,[_vm._v(\"mdi-content-copy\")])],1)],1):_vm._e(),(!_vm.globals.isMobileView)?_c(VContainer,{staticClass:\"py-0\",attrs:{\"fill-height\":\"\"}},[_c(VRow,{attrs:{\"align\":\"center\"}},[_c(VCol,[_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize px-8\",attrs:{\"x-large\":\"\",\"block\":\"\",\"color\":\"primary\",\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyAllStops}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy with all stops \")],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\"}},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\",\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyActiveStops}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy active stops \")],1)],1),_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-capitalize\",attrs:{\"x-large\":\"\",\"color\":\"primary\",\"block\":\"\",\"disabled\":!_vm.isRouteSelected},on:{\"click\":_vm.onCopyNoStops}},[_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-content-copy\")]),_vm._v(\" Copy with no stops \")],1)],1)],1)],1)],1):_vm._e()],1),_c(VTabItem,{key:\"2\",staticStyle:{\"height\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VTextField,{ref:\"search\",attrs:{\"prepend-inner-icon\":\"search\",\"placeholder\":\"Search\"},model:{value:(_vm.searchFilter),callback:function ($$v) {_vm.searchFilter=$$v},expression:\"searchFilter\"}}),_c(VList,{attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxRoute),callback:function ($$v) {_vm.idxRoute=$$v},expression:\"idxRoute\"}},_vm._l((_vm.filteredRoutes),function(route,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onRouteNew(route)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"src\":route.routeIcon}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(route.name)}})],1)],1)}),1)],1)],1)],1)],1),_c(VCardActions,{staticStyle:{\"height\":\"46px\",\"width\":\"100%\"}},[(!_vm.isFirstTab)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),(!_vm.isEmpty)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.close}},[_vm._v(\" Cancel \")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute, RwRouteAssignCodes, RwSyncStatus} from \"@/app/dem/RwRoute\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwRouteCopyType} from \"@/app/RwEnums\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTaskRoutes} from \"@/app/dal/RwTaskRoutes\";\n\n@Component\nexport default class RwRouteNew extends Vue {\n @Prop(Boolean) readonly initEmpty: boolean | undefined;\n @Prop(RwRoute) readonly initRoute: RwRoute | undefined;\n\n\n //#region Props\n\n idxTab = 0;\n idxRoute = -1;\n //route: RwRoute;\n searchFilter = \"\";\n isRouteSelected = false;\n\n get route() {\n const route = this.initRoute ? this.initRoute : this.globals.activeRoute;\n this.isRouteSelected = !!route;\n return route;\n }\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get isEmpty(): boolean {\n return this.initEmpty;\n }\n\n get isFirstTab(): boolean {\n return this.idxTab === 0;\n }\n\n get title(): string {\n let title = \"New Route\";\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n title = this.isEmpty ? 'Get Started' : 'New Route';\n break;\n case 1:\n title = `Copy Route: ${this.route.name}`;\n break;\n case 2:\n title = 'Open Route';\n break;\n //@formatter:on\n }\n return title;\n }\n\n get filteredRoutes(): RwRoute[] {\n let routes: RwRoute[] = [];\n routes = this.globals.routes;\n\n if (this.searchFilter) {\n const srch = this.searchFilter.toLowerCase().trim();\n routes = routes.filter(rt => rt.name?.toLowerCase()?.indexOf(srch) !== -1);\n }\n\n return routes;\n }\n\n //#endregion\n\n\n //#region Navigation\n\n onCopyRouteClick() {\n this.idxTab = 1;\n }\n\n onOpenRouteClick() {\n this.idxTab = 2;\n }\n\n onBackClick() {\n //console.log(\"onBackClick\");\n this.idxTab = 0;\n }\n\n //#endregion Navigation\n\n\n onRouteCreate() {\n this.globals.createNewRoute(this.initRoute);\n this.close();\n }\n\n\n onCopyAllStops() {\n const self = this;\n const SOURCE = \"RwRouteNew.onCopyAllStops\";\n\n RwPrefUtils.editFromCopy = true;\n\n //Validate input; Logs show route == null\n if (self.route) {\n\n //console.log(\"onCopyAllStops\");\n self.globals\n .copyRoute(self.route, RwRouteCopyType.AllStops, [SOURCE])\n .then((copy) => {\n if (copy) {\n self.onRouteNew(copy);\n } else {\n self.globals.showSnack(`Route Copy Failed`, \"error\");\n RwLog.error(SOURCE, `No copy rt obj on return: \\n\\n orig route:${JSON.stringify(self.route.toJsonWithAllStops())}`);\n }\n })\n .catch(err => {\n self.globals.showSnack(`Route Copy Failed: ${err.description}`, \"error\");\n if (this.globals.checkNotHandled(err)) RwLog.error(SOURCE, `Unhandled: Error:${JSON.stringify(err)}\\n\\n route:${JSON.stringify(self.route.toJsonWithAllStops())}`);\n });\n } else {\n let routeText = self.route!! ? JSON.stringify(self.route.toJsonWithAllStops()) : \"missing\";\n RwLog.error(SOURCE, `!route, ${routeText} `);\n }\n }\n\n onCopyActiveStops() {\n const self = this;\n const SOURCE = \"RwRouteNew.onCopyActiveStops\";\n //console.log(\"onCopyActiveStops\", self.route.stops);\n\n RwPrefUtils.editFromCopy = true;\n\n //Validate input; Logs show route == null\n if (self.route) {\n\n\n self.globals\n .copyRoute(self.route, RwRouteCopyType.ActiveStops, [SOURCE])\n .then((copy) => {\n self.onRouteNew(copy);\n })\n .catch(err => {\n self.globals.showSnack(`Route Copy Failed: ${err.description}`, \"error\");\n if (this.globals.checkNotHandled(err)) RwLog.error(SOURCE, `Unhandled: ${err.description}`);\n });\n\n } else {\n let routeText = self.route!! ? JSON.stringify(self.route.toJsonWithAllStops()) : \"missing\";\n RwLog.error(SOURCE, `!route, ${routeText} `);\n }\n\n }\n\n onCopyNoStops() {\n const self = this;\n const SOURCE = \"RwRouteNew.onCopyNoStops\";\n\n RwPrefUtils.editFromCopy = true;\n\n //Validate input; Logs show route == null\n if (self.route) {\n\n //console.log(\"onCopyNoStops\");\n this.globals\n .copyRoute(self.route, RwRouteCopyType.NoStops, [SOURCE])\n .then((copy) => {\n self.onRouteNew(copy);\n })\n .catch(err => {\n self.globals.showSnack(`Route Copy Failed: ${err.description}`, \"error\");\n if (this.globals.checkNotHandled(err)) RwLog.error(SOURCE, `Unhandled: ${err.description}`);\n });\n\n } else {\n let routeText = self.route!! ? JSON.stringify(self.route.toJsonWithAllStops()) : \"missing\";\n RwLog.error(SOURCE, `!route, ${routeText} `);\n }\n\n }\n\n\n onRouteNew(route: RwRoute) {\n // console.warn(\"RwRouteNew.onRouteNew\", route ? route.name : \"no route\");\n //this.space.openRouteInPlanner(route);\n RwEventBus.$emit(\"onRouteNew\", route);\n //this.$emit(\"onRouteNew\", route);\n this.close();\n if (RwPrefUtils.editFromCopy == true) {\n if (!RwPrefUtils.editAfterAdd) {\n this.globals.showRouteEdit(route);\n }\n }\n this.space.checkHistLimitPopups(route);\n }\n\n\n escPress(event: Event) {\n //console.log(\"RwRouteNew.escPress\")\n event.stopPropagation();\n\n this.globals.overrideEmptyState = true;\n\n //if (!this.isEmpty) {\n this.close();\n //}\n }\n\n close() {\n\n this.globals.m_showRouteNew = false;\n //console.log(\"RwRouteNew.close\", this.globals.m_showRouteNew )\n }\n\n mounted() {\n //console.log(\"RwRouteNew.mounted initEmpty, initRoute\", this.initEmpty, this.initRoute);\n this.idxTab = this.initRoute ? 1 : 0;\n //this.route = this.initRoute ? this.initRoute : this.globals.activeRoute;\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteNew.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteNew.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteNew.vue?vue&type=style&index=0&id=4b6428aa&prod&lang=scss&scoped=true&\"","import { render, staticRenderFns } from \"./RwRouteNew.vue?vue&type=template&id=4b6428aa&scoped=true&\"\nimport script from \"./RwRouteNew.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwRouteNew.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwRouteNew.vue?vue&type=style&index=0&id=4b6428aa&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4b6428aa\",\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDatePicker } from 'vuetify/lib/components/VDatePicker';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemAction } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onCancel.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onCommit.apply(null, arguments)}]},model:{value:(_vm.globals.m_showRouteEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showRouteEdit\", $$v)},expression:\"globals.m_showRouteEdit\"}},[_c(VCard,{staticClass:\"dialog-card\"},[_c(VCardTitle,{class:_vm.globals.backColorBar,attrs:{\"max-height\":\"48px\",\"dense\":\"\"}},[_c(VImg,{attrs:{\"height\":\"32px\",\"width\":\"32px\",\"max-width\":\"56px\",\"contain\":\"\",\"src\":_vm.driverUrl}}),_c('span',{style:(`${_vm.globals.isMobileView ? 'text-overflow: ellipsis;width: calc(100% - 33px);white-space:nowrap;overflow: hidden;' : ''}`)},[_vm._v(\" \"+_vm._s(_vm.dialogTitle)+\" \")])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticStyle:{\"height\":\"100%\"},attrs:{\"dense\":\"\"}},[_c(VRow,{staticClass:\"px-3\",style:(`${_vm.globals.isMobileView ? 'justify-content: center!important;': ''}`),attrs:{\"justify\":\"space-between\",\"align\":\"center\",\"dense\":\"\"}},[_c('div',{staticClass:\"text-left\",attrs:{\"dense\":\"\"}},[_c(VMenu,{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"header-btn\",attrs:{\"color\":\"grey\",\"elevation\":\"0\"}},on),[_c('div',[_c('div',{staticClass:\"pb-2\"},[(!_vm.isRoundTrip)?_c(VIcon,[_vm._v(\"mdi-arrow-right\")]):_vm._e(),(_vm.isRoundTrip)?_c(VIcon,[_vm._v(\"mdi-refresh\")]):_vm._e()],1),_c('div',[_vm._v(\" \"+_vm._s(_vm.roundTripText)+\" \")])])])]}}])},[_c(VList,[_c(VListItem,{on:{\"click\":function($event){_vm.isRoundTrip = true}}},[_c(VListItemTitle,[_vm._v(\"Round Trip\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.isRoundTrip = false}}},[_c(VListItemTitle,[_vm._v(\"One Way\")])],1)],1)],1)],1),_c('div',{staticClass:\"text-left\"},[_c(VMenu,{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"header-btn\",attrs:{\"color\":\"grey\",\"elevation\":\"0\"}},on),[_c('div',[_c('div',{staticClass:\"pb-2\"},[(_vm.optimizeMode === 2)?_c(VIcon,[_vm._v(\"mdi-timer\")]):_vm._e(),(_vm.optimizeMode !== 2)?_c(VIcon,[_vm._v(\"mdi-ruler\")]):_vm._e()],1),_c('div',[_vm._v(\" \"+_vm._s(_vm.optModeText)+\" \")])])])]}}])},[_c(VList,[_c(VListItem,{on:{\"click\":function($event){_vm.optimizeMode = 2}}},[_c(VListItemTitle,[_vm._v(\"Fastest \")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.optimizeMode = 1}}},[_c(VListItemTitle,[_vm._v(\"Shortest\")])],1)],1)],1)],1),_c('div',{staticClass:\"text-left\"},[_c(VMenu,{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"header-btn\",attrs:{\"color\":\"grey\",\"elevation\":\"0\"}},on),[_c('div',[_c('div',{staticClass:\"pb-2\"},[_c(VIcon,{style:(_vm.colorIcon)},[_vm._v(_vm._s(_vm.travelIcon(_vm.travelModeText)))])],1),_c('div',[_vm._v(\" \"+_vm._s(_vm.travelModeText)+\" \")])])])]}}])},[_c(VList,[_c(VListItem,{on:{\"click\":function($event){_vm.travelMode='driving'}}},[_c(VListItemTitle,[_vm._v(\"Driving\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.travelMode='bicycling'}}},[_c(VListItemTitle,[_vm._v(\"Bicycling\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.travelMode='walking'}}},[_c(VListItemTitle,[_vm._v(\"Walking\")])],1)],1)],1)],1),_c('div',{staticClass:\"text-left\"},[_c(VMenu,{attrs:{\"close-on-content-click\":false,\"nudge-width\":65,\"offset-x\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({staticClass:\"header-btn\",attrs:{\"elevation\":\"0\"}},on),[_c('div',[_c('div',{staticClass:\"pb-2\"},[_c(VIcon,[_vm._v(\"mdi-minus-circle\")])],1),_c('div',[_vm._v(\" \"+_vm._s(_vm.avoidsText)+\" \")])])])]}}]),model:{value:(_vm.showAvoidsMenu),callback:function ($$v) {_vm.showAvoidsMenu=$$v},expression:\"showAvoidsMenu\"}},[_c(VCard,[_c(VList,{attrs:{\"ml-3\":\"\"}},[_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{model:{value:(_vm.avoidTolls),callback:function ($$v) {_vm.avoidTolls=$$v},expression:\"avoidTolls\"}})],1),_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Tolls \")])],1),_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{model:{value:(_vm.avoidHighways),callback:function ($$v) {_vm.avoidHighways=$$v},expression:\"avoidHighways\"}})],1),_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Highways \")])],1),_c(VListItem,[_c(VListItemAction,[_c(VSwitch,{model:{value:(_vm.avoidFerries),callback:function ($$v) {_vm.avoidFerries=$$v},expression:\"avoidFerries\"}})],1),_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Ferries \")])],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){_vm.showAvoidsMenu = false}}},[_vm._v(\"Close \")])],1)],1)],1)],1)]),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"height\":\"48px\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"Route Name\",\"clearable\":\"\"},model:{value:(_vm.routeNameInput),callback:function ($$v) {_vm.routeNameInput=$$v},expression:\"routeNameInput\"}})],1),_c(VRow,{staticClass:\"ma-4 pt-3\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextarea,{attrs:{\"auto-grow\":\"\",\"no-resize\":\"\",\"rows\":\"1\",\"row-height\":\"24\",\"label\":\"Note\",\"hint\":\"Use up to 1000 Characters\",\"clearable\":\"\",\"dense\":\"\",\"filled\":\"\"},model:{value:(_vm.noteInput),callback:function ($$v) {_vm.noteInput=$$v},expression:\"noteInput\"}})],1),_c(VRow,{staticClass:\"ma-4\",style:(`${_vm.globals.isMobileView ? 'flex-wrap: initial;':''}height: 48px`),attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"flex-grow-1 text-left\",on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Start Time\")])]),(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c(VTooltip,{attrs:{\"top\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on:tooltip }){return [_c(VMenu,{attrs:{\"offset-y\":\"\",\"align\":\"left\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on:menu }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"}},menu),[_c('div',_vm._g({},tooltip),[(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c(VIcon,{attrs:{\"color\":\"orange\"}},[_vm._v(\" mdi-alert \")]):_vm._e()],1)])]}}],null,true)},[_c(VList,{staticClass:\"py-0\"},[_c(VListItem,{class:_vm.globals.backColorBar},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\" Set Start To: \")])],1),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.updateStartTime(0)}}},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Same Time, Today \")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.updateStartTime(1)}}},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Same Time, Tomorrow\")])],1),_c(VListItem,{on:{\"click\":function($event){return _vm.updateStartTime(2)}}},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Time and Date of Optimization\")])],1),_c(VListItem,{on:{\"click\":function($event){_vm.idxTab = 4}}},[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"Custom...\")])],1)],1)],1)]}}],null,false,1478805339)},[_c('span',[_vm._v(\"Route Start Time is out of date.\")])]):_vm._e(),(_vm.routeStartTimeText == 'Time of Optimize' || !_vm.isStartOutOfDate)?_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.routeStartTimeText)+\" \")])]):_vm._e(),(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\",\"color\":\"orangered\"}},[_vm._v(\" \"+_vm._s(_vm.routeStartTimeText)+\" \")])]):_vm._e(),_c(VIcon,{staticClass:\"edit-indic-right\",on:{\"click\":function($event){_vm.idxTab = 1}}},[_vm._v(\"mdi-chevron-right\")])],1),_c(VRow,{staticClass:\"ma-4\",style:(`${_vm.globals.isMobileView?'flex-wrap:initial;':''}height: 48px`),attrs:{\"justify\":\"space-between\",\"align\":\"center\"},on:{\"click\":function($event){_vm.idxTab=2}}},[_c('div',{staticClass:\"flex-grow-1 text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Start Point\")])]),_c('div',{staticClass:\"text-right\"},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(_vm._s(_vm.startPointText))])]),_c(VIcon,{staticClass:\"edit-indic-right\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VTabItem,{key:\"1\"},[_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"height\":\"48px\"},attrs:{\"justify\":\"space-between\",\"align\":\"center\"},on:{\"click\":function($event){_vm.idxTab = 4}}},[_c('div',{staticClass:\"flex-grow-1 text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Start Time\")])]),(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":\"orange\",\"icon\":\"\",\"text\":\"\"}},on),[_vm._v(\"mdi-alert\")])]}}],null,false,2770160176)},[_c('span',[_vm._v(\"Route Start Time is out of date.\")])]):_vm._e(),(_vm.routeStartTimeText == 'Time of Optimize' || !_vm.isStartOutOfDate)?_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 4}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.routeStartTimeText)+\" \")])]):_vm._e(),(_vm.routeStartTimeText != 'Time of Optimize' && _vm.isStartOutOfDate)?_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 4}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\",\"color\":\"orangered\"}},[_vm._v(\" \"+_vm._s(_vm.routeStartTimeText)+\" \")])]):_vm._e(),_c(VIcon,{staticClass:\"edit-indic-right\"},[_vm._v(\"mdi-chevron-right\")])],1),_c(VRow,{staticClass:\"ma-4\"},[_c(VDivider)],1),_c(VRow,{staticClass:\"ma-4\",staticStyle:{\"height\":\"48px\"},attrs:{\"justify\":\"space-between\",\"align\":\"center\"},on:{\"click\":function($event){_vm.idxTab = 5}}},[_c('div',{staticClass:\"flex-grow-1 text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Finish Time\")])]),_c('div',{staticClass:\"text-right\",on:{\"click\":function($event){_vm.idxTab = 4}}},[_c('h4',{staticClass:\"pre\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.formattedFinishDate)+\" \")])]),_c(VIcon,{staticClass:\"edit-indic-right\"},[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VTabItem,{key:\"2\"},[_c(VRow,{staticClass:\"mx-4\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Use your GPS location at the time of optimization as the Start Point\")])]),_c('div',{staticClass:\"pos-switch\"},[_c(VSwitch,{staticClass:\"toggle\",attrs:{\"hide-details\":\"\"},model:{value:(_vm.isDynLoc),callback:function ($$v) {_vm.isDynLoc=$$v},expression:\"isDynLoc\"}})],1)]),(_vm.isDynLoc==false)?_c(VDivider,{staticClass:\"ma-4\"}):_vm._e(),_c(VRow,{staticClass:\"ma-4\"},[(_vm.isDynLoc==false)?_c('span',[_vm._v(\"Select an option for choosing your start point:\")]):_vm._e()]),(_vm.isDynLoc==false)?_c(VRow,{staticClass:\"ma-4\"},[_c(VBtn,{staticClass:\"text-none d-flex justify-space-between\",attrs:{\"text\":\"\",\"width\":\"100%\"},on:{\"click\":_vm.showRelo}},[_vm._v(\" Choose Location on Map \"),_c(VIcon,{staticClass:\"edit-indic-right\"},[_vm._v(\"mdi-chevron-right\")])],1)],1):_vm._e()],1),_c(VTabItem,{key:\"3\"},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VList,{staticClass:\"full-width\"},_vm._l((_vm.globals.drivers),function(item){return _c(VListItem,{key:item.userId,on:{\"click\":function($event){return _vm.driverSelect(item.userId)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"30\"}},[_c(VImg,{attrs:{\"height\":\"32\",\"width\":\"32\",\"contain\":\"\",\"src\":item.imageUrl}})],1)],1),_c(VListItemTitle,{staticClass:\"text-left\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(_vm._s(item.formatDisplayName)+\" \")])],1)}),1)],1)],1),_c(VTabItem,{key:\"4\"},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Use date/time of optimization.\")])]),_c('div',[_c(VSwitch,{staticClass:\"toggle\",attrs:{\"hide-details\":\"\"},model:{value:(_vm.isDynStart),callback:function ($$v) {_vm.isDynStart=$$v},expression:\"isDynStart\"}})],1)]),(!_vm.isDynStart)?_c(VDivider,{staticClass:\"ma-4\"}):_vm._e(),(_vm.isHardStart)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"menu1\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Date\",\"prepend-icon\":\"access_date\",\"readonly\":\"\"},model:{value:(_vm.startDateISO),callback:function ($$v) {_vm.startDateISO=$$v},expression:\"startDateISO\"}},on))]}}],null,false,3525685467),model:{value:(_vm.menuStartDate),callback:function ($$v) {_vm.menuStartDate=$$v},expression:\"menuStartDate\"}},[_c(VDatePicker,{attrs:{\"dense\":\"\",\"no-title\":\"\"},on:{\"input\":function($event){_vm.showStartDatePicker = false}},model:{value:(_vm.startDateISO),callback:function ($$v) {_vm.startDateISO=$$v},expression:\"startDateISO\"}})],1),_c(VMenu,{ref:\"menuTimePickerEnd\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.startDisplayTime),callback:function ($$v) {_vm.startDisplayTime=$$v},expression:\"startDisplayTime\"}},on))]}}],null,false,2568218165),model:{value:(_vm.menuStartTime),callback:function ($$v) {_vm.menuStartTime=$$v},expression:\"menuStartTime\"}},[(_vm.menuStartTime)?_c(VTimePicker,{attrs:{\"ampm-in-title\":_vm.is12H,\"color\":\"primary\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.menuTimePickerEnd.save(_vm.time)}},model:{value:(_vm.startTimeISO),callback:function ($$v) {_vm.startTimeISO=$$v},expression:\"startTimeISO\"}}):_vm._e()],1)],1):_vm._e()],1),_c(VTabItem,{key:\"5\"},[_c(VRow,{staticClass:\"mx-4\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('h3',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Use an open-ended finish.\")])]),_c('div',{staticClass:\"pos-switch\"},[_c(VSwitch,{staticClass:\"toggle\",attrs:{\"hide-details\":\"\"},model:{value:(_vm.isDynStop),callback:function ($$v) {_vm.isDynStop=$$v},expression:\"isDynStop\"}})],1)]),(_vm.isDynStop==false)?_c(VDivider,{staticClass:\"ma-4\"}):_vm._e(),(_vm.isHardStop)?_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"menu1\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Date\",\"prepend-icon\":\"access_date\",\"readonly\":\"\"},model:{value:(_vm.finishDateISO),callback:function ($$v) {_vm.finishDateISO=$$v},expression:\"finishDateISO\"}},on))]}}],null,false,1516750216),model:{value:(_vm.menuFinishDate),callback:function ($$v) {_vm.menuFinishDate=$$v},expression:\"menuFinishDate\"}},[_c(VDatePicker,{attrs:{\"dense\":\"\",\"no-title\":\"\"},on:{\"input\":function($event){_vm.showFinishDatePicker = false}},model:{value:(_vm.finishDateISO),callback:function ($$v) {_vm.finishDateISO=$$v},expression:\"finishDateISO\"}})],1),_c(VMenu,{ref:\"menuTimePickerEnd\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.finishDisplayTime),callback:function ($$v) {_vm.finishDisplayTime=$$v},expression:\"finishDisplayTime\"}},on))]}}],null,false,2641791270),model:{value:(_vm.menuFinishTime),callback:function ($$v) {_vm.menuFinishTime=$$v},expression:\"menuFinishTime\"}},[(_vm.menuFinishTime)?_c(VTimePicker,{attrs:{\"ampm-in-title\":_vm.is12H,\"color\":\"primary\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.menuTimePickerEnd.save(_vm.time)}},model:{value:(_vm.finishTimeIso),callback:function ($$v) {_vm.finishTimeIso=$$v},expression:\"finishTimeIso\"}}):_vm._e()],1)],1):_vm._e()],1),_c(VTabItem,{key:\"7\"},[(_vm.globals.m_showReloPicker)?_c('RwReloPicker',{attrs:{\"init-title\":_vm.globals.m_reloPickerInitTitle,\"init-lat\":_vm.globals.m_reloPickerInitLat,\"init-lng\":_vm.globals.m_reloPickerInitLng},on:{\"onReloPick\":_vm.onReloPick}}):_vm._e()],1)],1)],1),_c(VCardActions,[(_vm.idxTab===0)?_c(VSpacer):_vm._e(),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(_vm._s(_vm.closeBtnTitle))]),(_vm.idxTab!=0)?_c(VSpacer):_vm._e(),(_vm.idxTab === 0)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCommit}},[_vm._v(\"Save\")]):_vm._e(),(_vm.idxTab > 0 && _vm.idxTab !==3)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onApply}},[_vm._v(\"Apply\")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport moment from \"moment\";\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theRouteSpace, {RwRouteSpace} from \"@/app/views/routes/RwRouteSpace\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwGeoPoint} from \"@/app/utils/RwGeoUtils\";\nimport RwReloPicker from \"@/app/views/pickers/RwReloPicker.vue\";\nimport theStore from \"@/store\";\nimport thePlanSpace from \"@/app/views/planner/RwPlannerSpace\";\n\n@Component({\n components: {RwReloPicker}\n})\nexport default class RwRouteEdit extends Vue {\n @Prop(RwRoute) readonly initRoute: RwRoute;\n\n\n //#region Props\n idxTab: number = 0;\n routeName = \"NaN\";\n\n isRoundTrip = false;\n isHardStart = false;\n isHardStop = false;\n initialName = \"\";\n initialNote = \"\";\n initialIsRoundTrip = false;\n initialAvoidHighways = false;\n initialAvoidTolls = false;\n initialAvoidFerries = false\n initialStartTime = null;\n initialFinishTime = null;\n initialIsHardStop = false;\n initialTravelMode = \"driving\";\n initialOptimizeMode = 2;\n initialIsDynLoc = false;\n initialDriverId = \"\";\n driverName = \"\";\n m_startDate = null;\n m_finishDate = null;\n driverId = \"\";\n\n\n // isRoundTrip: boolean = this.selectedRoute.isRoundTrip;\n // isHardStart: boolean = this.selectedRoute.isHardStart;\n // isHardStop: boolean = this.selectedRoute.isHardStop;\n // initialName = this.selectedRoute.name;\n // initialNote = this.selectedRoute.note;\n // initialIsRoundTrip = this.selectedRoute.isRoundTrip;\n // initialAvoidHighways = this.selectedRoute.avoidHighways;\n // initialAvoidTolls = this.selectedRoute.avoidTolls;\n // initialAvoidFerries = this.selectedRoute.avoidFerries;\n // initialStartTime = this.selectedRoute.startTime;\n // initialFinishTime = this.selectedRoute.finishTime;\n // initialIsHardStop = this.selectedRoute.isHardStop;\n // initialTravelMode = this.selectedRoute.travelMode;\n // initialOptimizeMode = this.selectedRoute.optType;\n // initialIsDynLoc = this.selectedRoute.isDynLoc;\n // initialDriverId = this.selectedRoute.driverId;\n // driverName = this.selectedRoute.driverName;\n\n m_addressEntered: string = \"\";\n m_addressContinuedEntered: string = \"\";\n m_cityEntered: string = \"\";\n m_stateEntered: string = \"\";\n m_zipEntered: string = \"\";\n fullAddress: string = \"\";\n updatedLast: string = \"\";\n\n //driverId = \"NaN\";\n optimizeMode = -1;\n travelMode = \"NaN\";\n note = \"NaN\";\n isDynLoc = null;\n startAddress = \"\";\n lat = 0;\n lng = 0;\n totalTime = 0;\n avoidFerries = null;\n avoidTolls = null;\n avoidHighways = null;\n showAvoidsMenu = false;\n times: string[] = RwDateUtils.genTimeList(24, 0, 30);\n\n //m_startDate = this.selectedRoute.startTime;\n menuStartTime: boolean = false;\n menuStartDate: boolean = false;\n showStartDatePicker = false;\n\n //m_finishDate = this.selectedRoute.finishTime;\n menuFinishTime: boolean = false;\n menuFinishDate: boolean = false;\n showFinishDatePicker = false;\n time = \"\";\n\n initRouteVals() {\n this.isRoundTrip = this.initRoute.isRoundTrip;\n this.isHardStart = this.initRoute.isHardStart;\n this.isHardStop = this.initRoute.isHardStop;\n this.initialName = this.initRoute.name;\n this.initialNote = this.initRoute.note;\n this.initialIsRoundTrip = this.initRoute.isRoundTrip;\n this.initialAvoidHighways = this.initRoute.avoidHighways;\n this.initialAvoidTolls = this.initRoute.avoidTolls;\n this.initialAvoidFerries = this.initRoute.avoidFerries;\n this.initialStartTime = this.initRoute.startTime;\n this.initialFinishTime = this.initRoute.finishTime;\n this.initialIsHardStop = this.initRoute.isHardStop;\n this.initialTravelMode = this.initRoute.travelMode;\n this.initialOptimizeMode = this.initRoute.optType;\n this.initialIsDynLoc = this.initRoute.isDynLoc;\n this.initialDriverId = this.initRoute.driverId;\n this.driverName = this.initRoute.driverName;\n this.m_startDate = this.initRoute.startTime;\n this.m_finishDate = this.initRoute.finishTime;\n this.driverId = this.initRoute.driverId;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwRouteSpace {\n return theRouteSpace;\n }\n\n get selectedRoute(): RwRoute {\n return this.initRoute;\n }\n\n get is12H(): boolean {\n return RwDateUtils.is12H;\n }\n\n\n get dialogTitle(): string {\n let text: string;\n //@formatter:off\n switch (this.idxTab) {\n case 1:\n text = \"Edit Route Time\";\n break;\n case 2:\n text = \"Edit Start Point\";\n break;\n case 3:\n text = \"Edit Driver: \" + this.driverName;\n break;\n case 4:\n text = \"Edit Start Time \";\n break;\n case 5:\n text = \"Edit Finish Time \";\n break;\n\n // case 4: text = \"Edit Start Time: \" + RwDateUtils.formatDate(this.initRoute.startTime); break;\n // case 5: text = \"Edit Finish Time: \" + RwDateUtils.formatDate(this.initRoute.finishTime); break;\n case 6:\n text = \"Edit Start Location: Address\";\n break;\n case 7:\n text = \"Edit Start Location: Choose Location\";\n break;\n default:\n text = \"Edit Route: \" + this.initRoute.name;\n }\n //@formatter:on\n return text\n }\n\n get closeBtnTitle(): string {\n return (this.idxTab == 0) ? \"Close\" : \"Back\";\n }\n\n colorIcon(): string {\n return this.globals.isDarkMode ? \"color: white\" : \"color: grey\"\n }\n\n //#endregion\n\n\n //region DateTime Props\n\n get todaysDate(): Date {\n let date = new Date();\n // console.warn('todays date is: ', date );\n return date;\n }\n\n get tomorrowsDate(): Date {\n let date = new Date();\n date.setDate(date.getDate() + 1);\n // console.warn('tomorrows date is: ', date );\n return date;\n }\n\n get startDate(): Date {\n // console.warn('start date is: ', this.m_startDate);\n return this.m_startDate;\n }\n\n set startDate(val: Date) {\n this.m_startDate = val;\n if (!this.isHardStop) {\n this.m_finishDate = moment(this.startDate).add(RwPrefUtils.routeSpan, \"minutes\").toDate();\n }\n }\n\n get isStartOutOfDate(): Boolean {\n let startTime = this.startDate.getTime();\n let todayTime = this.todaysDate.getTime();\n if (todayTime - startTime > 86400000) {\n return true;\n } else {\n return false;\n }\n }\n\n get startEpoc(): number {\n return this.startDate.getTime();\n }\n\n get startDateISO(): string {\n let mo = moment(this.startEpoc);\n let text = mo.format(\"YYYY-MM-DD\");\n // console.warn('start date ISO is: ', text);\n //console.log(\"GET startDateISO\", text);\n return text;\n }\n\n set startDateISO(val: string) {\n let mo = moment(val, \"YYYY-MM-DD\");\n this.startDate = mo.toDate();\n //console.log(\"SET startDateISO\", val, this.startDate);\n }\n\n get startDisplayTime(): string {\n let timeText = moment(this.startDate).format(\"LT\");\n //console.log(\"GET startDisplay\", timeText);\n return timeText;\n }\n\n get startTimeISO(): string {\n let timeText = this.momentToTime(moment(this.startDate));\n //console.log(\"GET startTime\", timeText);\n // console.warn('start time ISO is: ', timeText);\n return timeText;\n }\n\n set startTimeISO(val: string) {\n let day = moment(this.startDate).startOf('day');\n let mins = this.minsFromTime(val);\n this.startDate = day.add(mins, \"minutes\").toDate();\n //console.log(\"SET startTimeISO\", val, this.startDate);\n }\n\n get formattedFinishDate(): string {\n return RwDateUtils.formatDate(this.finishDate);\n }\n\n get finishDate(): Date {\n return this.m_finishDate;\n }\n\n set finishDate(val: Date) {\n //this.isDirty = true;\n this.m_finishDate = val;\n }\n\n get finishEpoc(): number {\n return this.finishDate.getTime();\n }\n\n get finishDateISO(): string {\n let mo = moment(this.finishEpoc);\n let text = mo.format(\"YYYY-MM-DD\");\n //console.log(\"GET startISO\", text);\n return text;\n }\n\n set finishDateISO(val: string) {\n let mo = moment(val, \"YYYY-MM-DD\");\n this.finishDate = mo.toDate();\n //console.log(\"SET startISO\", val, this.startDate);\n }\n\n get finishDisplayTime(): string {\n let timeText = moment(this.finishDate).format(\"LT\");\n //console.log(\"GET startDisplay\", timeText);\n return timeText;\n }\n\n get finishTimeIso(): string {\n let timeText = this.momentToTime(moment(this.finishDate));\n //console.log(\"GET startTime\", timeText);\n return timeText;\n }\n\n\n set finishTimeIso(val: string) {\n let day = moment(this.finishDate).startOf('day');\n let mins = this.minsFromTime(val);\n this.finishDate = day.add(mins, \"minutes\").toDate();\n //console.log(\"SET finishTimeIso\", val, this.finishDate);\n // let mins = this.minsFromTime(val);\n // this.skedFinishMins = mins;\n }\n\n updateStartTime(val: number) {\n switch (val) {\n //today's date, same time\n case 0:\n let oldStartTime = this.startTimeISO;\n let newStartDate = moment(this.todaysDate.getTime()).format(\"YYYY-MM-DD\")\n this.startDateISO = newStartDate;\n this.startTimeISO = oldStartTime;\n break;\n //tomorrow's date, same time\n case 1:\n let oldStartTime2 = this.startTimeISO;\n let newStartDate2 = moment(this.tomorrowsDate.getTime()).format(\"YYYY-MM-DD\")\n this.startDateISO = newStartDate2;\n this.startTimeISO = oldStartTime2;\n break;\n break;\n //set to Dynamic Start\n case 2:\n this.isDynStart = true;\n break;\n }\n }\n\n //endregion DateTime Props\n\n\n //region Attribute Props\n\n\n get optModeText() {\n let optMode = (this.optimizeMode == -1) ? this.initRoute.optType : this.optimizeMode;\n this.optimizeMode = optMode;\n return (this.optimizeMode === 2) ? \"Fastest\" : \"Shortest\";\n }\n\n get roundTripText() {\n let roundTrip = (this.isRoundTrip == null) ? this.initRoute.isRoundTrip : this.isRoundTrip;\n this.isRoundTrip = roundTrip;\n return (this.isRoundTrip) ? \"Round Trip\" : \"One Way\";\n }\n\n get avoidsText() {\n let avoidFerriesIsSelected = (this.avoidHighways == null) ? this.initRoute.avoidFerries : this.avoidFerries;\n let avoidTollsIsSelected = (this.avoidHighways == null) ? this.initRoute.avoidTolls : this.avoidTolls;\n let avoidHighwaysIsSelected = (this.avoidHighways == null) ? this.initRoute.avoidHighways : this.avoidHighways;\n\n this.avoidFerries = avoidFerriesIsSelected;\n this.avoidTolls = avoidTollsIsSelected;\n this.avoidHighways = avoidHighwaysIsSelected;\n let str = \"Avoid: \";\n str += (this.avoidTolls) ? \"T \" : \"\";\n str += (this.avoidHighways) ? \"H \" : \"\";\n str += this.avoidFerries ? \"F \" : \"\";\n str += (str == \"Avoid: \") ? \"None\" : \"\";\n return str.trim();\n }\n\n travelIcon(travelString: string) {\n let url: string;\n switch (travelString.toLowerCase()) {\n //@formatter:off\n case \"driving\":\n url = \"mdi-car\";\n break;\n case \"biking\":\n case \"bicycling\":\n url = \"mdi-bike\";\n break;\n case \"walking\":\n url = \"mdi-walk\";\n break;\n default:\n url = \"mdi-car\";\n break;\n //@formatter:on\n }\n return url\n }\n\n get travelModeText() {\n let travelModeIsSelected = (this.travelMode == \"NaN\") ? this.initRoute.travelMode : this.travelMode;\n this.travelMode = travelModeIsSelected;\n //console.warn(travelModeIsSelected)\n return RwRoute.getTravelModeText(this.travelMode);\n }\n\n\n //endregion Attributes\n\n\n //region Core Props\n\n get isDynStart(): boolean {\n let hardStart = (this.isHardStart == null) ? this.initRoute.isHardStart : this.isHardStart;\n this.isHardStart = hardStart;\n return !this.isHardStart;\n }\n\n set isDynStart(val: boolean) {\n this.isHardStart = !val;\n }\n\n get isDynStop(): boolean {\n let hardStop = (this.isHardStop == null) ? this.initRoute.isHardStop : this.isHardStop;\n this.isHardStop = hardStop;\n return !this.isHardStop;\n }\n\n set isDynStop(val: boolean) {\n this.isHardStop = !val;\n }\n\n\n get driverUrl(): string {\n return (this.idxTab == 3) ? this.globals.findDriver(this.initRoute.driverId).imageUrl : this.initRoute.routeIcon\n }\n\n\n get routeStartTimeText() {\n //RwLog.consoleLog(\"reCalc planned time\", this.skedStart, this.skedEnd);\n return RwRoute.getRouteSpanText(\n this.startDate,\n this.finishDate,\n this.isHardStart,\n this.isHardStop,\n this.totalTime\n );\n }\n\n //\n // get formattedEndTime(){\n // return RwDateUtils.formatDate(this.route.startTime);\n // }\n\n\n get driverText(): string {\n let text = \"\";\n if (this.initRoute) {\n\n if (!this.initRoute.driverId || this.initRoute.driverId.length === 0) {\n this.driverId = this.globals.dispatcher.userId;\n this.initRoute.driverId = this.driverId;\n }\n\n let drivers = this.globals.drivers;\n let gotDrivers = drivers && drivers.length > 0;\n if (gotDrivers) {\n let driver = this.globals.findDriver(this.driverId);\n if (driver) {\n this.driverId = driver.userId;\n this.driverName = driver.name;\n text = driver.formatDisplayName;\n } else {\n text = \"Driver Not Found\"\n }\n } else {\n text = \"No Drivers\"\n }\n }\n return text;\n }\n\n // get driverText(): string {\n // let text: string;\n // text = (!this.drivers) ? \"No Driver (array empty)\" : \"\";\n // let driverIdSelected = (this.driverId == \"NaN\") ? this.selectedRoute.driverId : this.driverId;\n // if (text == \"\") {\n // this.selectedRoute.driverId = (this.selectedRoute.driverId) ? this.selectedRoute.driverId : this.globals.dispatcher.userId;\n // this.driverId = driverIdSelected;\n // let driver = this.globals.findDriver(this.driverId);\n // this.driverName = driver.name;\n // text = (driver) ? driver.formatDisplayName : \"No Driver Found\";\n // }\n // return text;\n // }\n\n\n get startPointText() {\n let text: string;\n if (this.isDynLoc === null) {\n this.isDynLoc = this.selectedRoute.isDynLoc\n }\n if (this.isDynLoc === true) {\n text = \"Location of Optimize (GPS)\";\n } else {\n let coordText = RwTextUtils.formatCoords(this.centerLat, this.centerLng);\n text = (this.startAddress && this.startAddress.length > 0) ? this.startAddress : coordText;\n }\n // if (this.updatedLast == \"ADDRESS\"){\n // text = this.fullAddress;\n // }\n return text\n }\n\n\n get routeNameInput(): string {\n let routeNameIsSelected = (this.routeName == \"NaN\") ? this.selectedRoute.name : this.routeName;\n this.routeName = routeNameIsSelected;\n return this.routeName;\n }\n\n set routeNameInput(nameInput: string) {\n this.routeName = nameInput;\n }\n\n get noteInput(): string {\n let noteInput = (this.note == \"NaN\") ? this.selectedRoute.note : this.note;\n this.note = noteInput;\n return this.note;\n }\n\n set noteInput(userNote: string) {\n this.note = userNote;\n }\n\n //#endregion\n\n\n //region Helper Ops\n\n private minsFromTime(val: string): number {\n let startOfDay = moment().startOf('day');\n let time = moment(val, 'HH:mm');\n let mins = time.diff(startOfDay, \"minutes\");\n return mins\n }\n\n private momentToTime(mo: moment.Moment) {\n let timeText = mo.format(\"HH:mm\");\n return timeText;\n }\n\n //endregion Helper Ops\n\n\n //#region Commit Ops\n\n validateTimeInterval(): boolean {\n return this.startDate < this.finishDate;\n }\n\n driverSelect(driverId: string) {\n this.driverId = driverId;\n this.driverName = this.globals.findDriver(this.selectedRoute.driverId).name;\n this.idxTab = 0;\n }\n\n onCommit(event: Event) {\n //console.log(\"RwRouteEdit.onCommit\");\n event.stopPropagation();\n this.closeWithSave(true);\n }\n\n onApply() {\n if (this.idxTab != 0 && this.idxTab < 4) {\n this.idxTab = 0;\n } else if (this.idxTab == 4 || this.idxTab == 5) {\n this.idxTab = 0;\n } else if (this.idxTab == 6) {\n this.fullAddress = this.m_addressEntered + this.m_addressContinuedEntered + \", \" + this.m_cityEntered + \", \" + this.m_stateEntered + \", \" + this.m_zipEntered;\n this.updatedLast = \"ADDRESS\";\n this.idxTab = 0;\n } else if (this.idxTab == 7) {\n this.updatedLast = \"COORDINATES\";\n this.idxTab = 0;\n }\n }\n\n onCancel(event: Event) {\n if (this.idxTab != 0 && this.idxTab < 4) {\n this.idxTab = 0;\n } else if (this.idxTab == 4 || this.idxTab == 5) {\n this.idxTab = 1;\n } else if (this.idxTab == 6 || this.idxTab == 7) {\n this.idxTab = 2;\n } else {\n event.stopPropagation();\n //this.globals.selectedRoute = (this.space.isNewRoute) ? null : this.globals.selectedRoute;\n //this.space.isNewRoute = false;\n //this.closeWithSave(false);\n this.close();\n }\n }\n\n\n closeWithSave(save: boolean) {\n let self = this;\n let SOURCE = \"RwRouteEdit.closeWithSave\";\n //console.log(SOURCE, save, this.space.isNewRoute);\n if (save) {\n let finalName = this.routeName ? this.routeName : this.selectedRoute.name;\n this.selectedRoute.name = finalName;\n this.selectedRoute.note = this.note;\n this.selectedRoute.isRoundTrip = this.isRoundTrip;\n this.selectedRoute.avoidHighways = this.avoidHighways;\n this.selectedRoute.avoidTolls = this.avoidTolls;\n this.selectedRoute.avoidFerries = this.avoidFerries;\n\n if (this.updatedLast == \"COORDINATES\") {\n this.selectedRoute.address = \"\"\n }\n\n this.selectedRoute.startTime = this.startDate;\n //this.selectedRoute.setFinishDate(\"closeWithSave\", this.finishDate);\n this.selectedRoute.finishTime = this.finishDate;\n //console.warn(\"RwRouteEdit.closeWithSave startTime\", this.selectedRoute.startTime, this.selectedRoute.finishTime);\n\n this.selectedRoute.isHardStart = this.isHardStart;\n this.selectedRoute.isHardStop = this.isHardStop;\n this.selectedRoute.travelMode = this.travelMode;\n this.selectedRoute.optType = this.optimizeMode;\n this.selectedRoute.isDynLoc = this.isDynLoc;\n this.selectedRoute.driverId = this.driverId;\n\n this.selectedRoute.lat = this.centerLat;\n this.selectedRoute.lng = this.centerLng;\n this.globals.selectedRoute = this.selectedRoute;\n\n this.globals.updateRouteDB(this.selectedRoute, false)\n .then(() => {\n // this.globals.routeToEdit = null;\n // this.space.selectedRouteSpace = null;\n // self.globals.showRouteEdit = false;\n if (thePlanSpace.openRoutes.length === 1 && thePlanSpace.openRoutes[0].routeId === this.selectedRoute.routeId) {\n thePlanSpace.openRoutes = [this.selectedRoute];\n }\n self.close()\n this.globals.targetFocusId = this.selectedRoute.routeId;\n self.globals.showSnack(\"Route Updated\", \"success\");\n })\n .catch(err => {\n self.rollbackRoute();\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n this.globals.showSnack(\"Failed to Update Route\", \"error\");\n });\n\n\n //DEFER: Add rest of fields\n\n } else {\n this.close()\n }\n }\n\n close() {\n theStore.dispatch(\"showRouteEdit\", false).catch();\n }\n\n rollbackRoute() {\n this.selectedRoute.name = this.initialName;\n this.selectedRoute.note = this.initialNote;\n this.selectedRoute.isRoundTrip = this.initialIsRoundTrip;\n this.selectedRoute.avoidHighways = this.initialAvoidHighways;\n this.selectedRoute.avoidTolls = this.initialAvoidTolls;\n this.selectedRoute.avoidFerries = this.initialAvoidFerries;\n this.selectedRoute.startTime = this.initialStartTime;\n //this.selectedRoute.setFinishDate(\"rollbackRoute\", this.initialFinishTime);\n this.selectedRoute.finishTime = this.initialFinishTime;\n this.selectedRoute.isHardStop = this.initialIsHardStop;\n this.selectedRoute.travelMode = this.initialTravelMode;\n this.selectedRoute.optType = this.initialOptimizeMode;\n this.selectedRoute.isDynLoc = this.initialIsDynLoc;\n this.selectedRoute.driverId = this.initialDriverId;\n }\n\n //#endregion Commit Ops\n\n\n centerLat = (this.selectedRoute.lat) ? this.selectedRoute.lat : RwPrefUtils.defaultLat;\n centerLng = (this.selectedRoute.lng) ? this.selectedRoute.lng : RwPrefUtils.defaultLng;\n\n\n onReloPick(coord: RwGeoPoint) {\n //console.log(\"RwApp.onReloPick coord\", coord);\n if (!(coord.lat == 0 && coord.lng == 0)) {\n this.globals.onReloPick(coord);\n } else {\n this.globals.showSnack('Default start cannot be (0,0)', 'error');\n }\n }\n\n showRelo() {\n let self = this;\n let SOURCE = \"RwRouteEdit.showRelo\";\n this.globals.routeStartLocationRelo(this.centerLat, this.centerLng)\n .then((coord) => {\n this.centerLat = coord[0];\n this.centerLng = coord[1];\n this.updatedLast = \"COORDINATES\";\n this.idxTab = 0;\n })\n .catch(err => {\n\n })\n\n }\n\n mounted() {\n if (this.initRoute) {\n //console.log(\"RwRouteEdit.mounted\", this.initRoute.name)\n this.initRouteVals();\n if (RwPrefUtils.editFromCopy) {\n switch (this.globals.updateStartPref) {\n case 0:\n RwPrefUtils.editFromCopy = false;\n break;\n case 1: {\n RwPrefUtils.editFromCopy = false;\n if (this.isStartOutOfDate == true) {\n this.updateStartTime(0);\n }\n\n }\n break;\n case 2: {\n RwPrefUtils.editFromCopy = false;\n if (this.isStartOutOfDate == true) {\n this.updateStartTime(1);\n }\n\n }\n break;\n case 3: {\n RwPrefUtils.editFromCopy = false;\n if (this.isStartOutOfDate == true) {\n this.updateStartTime(2);\n }\n\n }\n break;\n }\n }\n\n } else {\n RwLog.consoleError(\"RwRouteEdit.mounted\", \"initRoute == null\")\n }\n }\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteEdit.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwRouteEdit.vue?vue&type=style&index=0&id=57d7d88f&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwRouteEdit.vue?vue&type=template&id=57d7d88f&scoped=true&\"\nimport script from \"./RwRouteEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwRouteEdit.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwRouteEdit.vue?vue&type=style&index=0&id=57d7d88f&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"57d7d88f\",\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VFileInput } from 'vuetify/lib/components/VFileInput';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSelect } from 'vuetify/lib/components/VSelect';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTab } from 'vuetify/lib/components/VTabs';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabs } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"scrollable\":\"\",\"persistent\":\"\",\"content-class\":\"dialog-with-scroll\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onEnter.apply(null, arguments)}]},model:{value:(_vm.globals.m_showDriverEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showDriverEdit\", $$v)},expression:\"globals.m_showDriverEdit\"}},[_c(VCard,[_c(VToolbar,{attrs:{\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[_c(VImg,{attrs:{\"height\":\"32px\",\"width\":\"32px\",\"contain\":\"\",\"max-width\":\"56px\",\"src\":_vm.selectedDriver.imageUrl}}),_c(VToolbarTitle,[_vm._v(\"Edit User: \"+_vm._s(_vm.selectedDriver.userName))])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[_c(VForm,{ref:\"form\",staticClass:\"pa-3 pb-0\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"Name\",\"hint\":\"For display purposes only. Drivers should use their username to log in.\",\"dense\":\"\",\"rules\":_vm.nameRules,\"clearable\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}})],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"label\":\"Email (optional)\",\"hint\":\"Not for log in purposes. Users should use their username to log in.\",\"dense\":\"\",\"rules\":_vm.emailRules,\"type\":\"email\",\"clearable\":\"\"},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}})],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VSelect,{attrs:{\"filled\":\"\",\"dense\":\"\",\"items\":_vm.formattedAccessTypes,\"label\":\"User Access Type\"},model:{value:(_vm.accessTypeSelected),callback:function ($$v) {_vm.accessTypeSelected=$$v},expression:\"accessTypeSelected\"}})],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"},on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('div',[_vm._v(\" User Image: \")]),_c(VSpacer),_c('div',[_c(VImg,{staticStyle:{\"display\":\"block\",\"margin\":\"auto\"},attrs:{\"height\":\"32\",\"width\":\"32\",\"max-width\":\"32px\",\"max-height\":\"32px\",\"contain\":\"\",\"src\":_vm.selectedDriver.imageUrl}})],1),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)],1),_c(VTabItem,{key:\"1\"},[_c(VForm,{ref:\"form\",attrs:{\"lazy-validation\":\"\",\"dense\":\"\"}},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VAvatar,{attrs:{\"size\":\"60\",\"dense\":\"\"}},[_c(VImg,{staticStyle:{\"display\":\"block\",\"margin\":\"auto\"},attrs:{\"height\":\"48\",\"width\":\"48\",\"contain\":\"\",\"src\":_vm.selectedDriver ? _vm.selectedDriver.imageUrl : ''}})],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('span',[_vm._v(_vm._s(_vm.selectedDriver.formatListName))])]),_c(VDivider),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"space-between\",\"align\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('span',[_vm._v(\"Set Color:\")])]),_c('div',{staticClass:\"text-right\"},[_c(VBtn,{staticClass:\"mx-2\",attrs:{\"fab\":\"\",\"dark\":\"\",\"color\":_vm.avColor},on:{\"click\":function($event){_vm.idxTab=2}}},[_c(VIcon,{attrs:{\"dark\":\"\"}},[_vm._v(\"mdi-brush\")])],1)],1)]),_c(VDivider)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VTabs,{attrs:{\"grow\":\"\"},model:{value:(_vm.avType),callback:function ($$v) {_vm.avType=$$v},expression:\"avType\"}},[_c(VTab,{key:\"0\",on:{\"click\":function($event){_vm.file=[]}}},[_vm._v(\"Use Initials\")]),_c(VTab,{key:\"1\"},[_vm._v(\"Use Picture\")]),_c(VTabItem,{key:\"0\"},[_c('br'),_c(VRow,{staticClass:\"mx-4\"},[_c(VTextField,{attrs:{\"filled\":\"\",\"placeholder\":\"Enter new initials\",\"counter\":\"3\",\"hint\":\"Maximum 3 characters\",\"rules\":_vm.initsRules,\"autofocus\":\"\"},model:{value:(_vm.avInits),callback:function ($$v) {_vm.avInits=$$v},expression:\"avInits\"}})],1)],1),_c(VTabItem,{key:\"1\"},[_c(VRow,{staticClass:\"mx-4\"},[_c(VFileInput,{attrs:{\"filled\":\"\",\"chips\":\"\",\"hint\":\"File size cannot exceed 2 MB\",\"accept\":\"image/png, image/jpeg, image/jpg\",\"absolute\":\"\",\"show-size\":\"\",\"multiple\":false,\"placeholder\":\"Select a file ending in .png, .jpeg, .jpg\",\"prepend-icon\":\"mdi-camera\",\"label\":\"User Avatar\"},model:{value:(_vm.file),callback:function ($$v) {_vm.file=$$v},expression:\"file\"}})],1)],1)],1)],1)],1),_c(VTabItem,{key:\"2\"},[[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VColorPicker,{attrs:{\"show-swatches\":\"\",\"swatches\":_vm.globals.swatches,\"swatches-max-height\":\"200\",\"hide-sliders\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"flat\":\"\"},model:{value:(_vm.avColor),callback:function ($$v) {_vm.avColor=$$v},expression:\"avColor\"}})],1)]],2),_c(VTabItem,{key:\"3\"},[_c(VRow,{staticClass:\"mx-4\"},[(_vm.avType==1)?_c('div',{staticStyle:{\"font-size\":\"medium\"},attrs:{\"align\":\"center\"}},[_vm._v(\"The image file uploaded is too large (>2MB). Please select a smaller file. You may also customize your icon using initials. \")]):_vm._e(),(_vm.avType==0)?_c('div',{staticStyle:{\"font-size\":\"medium\"},attrs:{\"align\":\"center\"}},[_vm._v(\"Initials cannot exceed 3 characters. Please modify your selection to save changes. \")]):_vm._e()])],1)],1)],1),_c(VCardActions,[(_vm.idxTab === 2)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab=1}}},[_vm._v(\"Back\")]):_vm._e(),(_vm.idxTab === 1)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab=0, _vm.file=[]}}},[_vm._v(\"Back\")]):_vm._e(),(_vm.idxTab === 3)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab=1, _vm.avInits=_vm.avInits.substring(0,3)}}},[_vm._v(\"Back\")]):_vm._e(),_c(VSpacer),(_vm.idxTab==0 || _vm.idxTab==3)?_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"Cancel\")]):_vm._e(),(_vm.idxTab!==1 && _vm.idxTab!==3)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.onEnter()}}},[_vm._v(\"Save\")]):_vm._e(),(_vm.idxTab==1)?_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\",\"disabled\":_vm.disableApply},on:{\"click\":_vm.updateDisplay}},[_vm._v(\"Apply\")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport theStore from \"@/store\"\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theDriverSpace, {RwDriverSpace} from \"@/app/views/drivers/RwDriverSpace\";\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n@Component\nexport default class RwDriverEdit extends Vue {\n @Prop(RwUser) readonly initDriver: RwUser;\n\n idxTab = (this.globals.showEditAvatar) ? 1 : 0;\n valid: boolean = false;\n m_name: string;\n m_email: string;\n m_accessType: number = 0;\n m_avType: number = this.selectedDriver.avType;\n m_avColor: string = \"\";\n m_avInits: string;\n m_avUrl: string;\n m_teamDomainDot: string;\n\n ///formattedAccessTypes = [\"Restricted Driver\", \"Normal Driver\", \"Trusted Driver\"];\n formattedAccessTypes = [\"Restricted\", \"Normal\", \"Elevated\", \"Dispatcher (Restricted)\"];\n file: File = null;\n\n initialName = '';\n initialEmail = '';\n initialAccessType = 0;\n initialAvType = 0;\n initialAvInits = \"\";\n //REVIEW: Good practice to default to valid value\n initialAvColor = \"\";\n disableApply = false;\n\n\n get emailRules(): any[] {\n if (this.email) {\n return [v => !v || /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/.test(v) || 'Please enter a valid email.'\n ]\n }\n }\n\n get nameRules(): any[] {\n if (this.name) {\n return [\n v => v.length >= 4 || 'Minimum 4 characters.',\n v => this.globals.isValidName(v) || 'Name cannot contain special characters and must be less than 50 chars'\n ]\n }\n }\n\n get initsRules() {\n if (this.avInits) {\n return [\n v => this.globals.isAlpha(v) || \"Initials must be alphanumeric.\"\n ]\n }\n }\n\n get disableSave(): boolean {\n return !this.email ||\n /^\\w+([.-]?\\w+)*@\\w+([.-]?\\w+)*(\\.\\w{2,3})+$/.test(this.email) ||\n this.name.length >= 4 ||\n this.globals.isAlpha(this.name);\n }\n\n readonly IMAGE_SIZE_LIMIT = 2097152; //2 MB, 2,097,152 bytes, (2 * 2^20)\n\n //2MB == 2,097,152 bytes (2 * 2^20)\n imageRules = [\n value => value.size < this.IMAGE_SIZE_LIMIT || \"Avatar size should be less than 2 MB\"\n ];\n\n\n initDriverVals() {\n let driver = this.initDriver;\n //console.log(\"RwUser.fromJson\", `name:${driver.name}, userName:${driver.userName}, accessType:${driver.accessType}`)\n\n this.initialName = driver.name;\n this.initialEmail = driver.email;\n this.initialAccessType = driver.accessType;\n this.initialAvType = driver.avType;\n this.initialAvInits = driver.avInits;\n this.initialAvColor = driver.avColor;\n\n this.m_accessType = driver.accessType;\n this.m_name = driver.name;\n this.m_avColor = driver.avColor;\n this.m_avType = driver.avType;\n this.m_avColor = driver.avColor;\n this.m_avInits = driver.avInits;\n\n // this.initialUserNameSuffix = this.selectedDriver.userName;\n }\n\n\n //#region globals/space setup\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get driverSpace(): RwDriverSpace {\n return theDriverSpace;\n }\n\n get selectedDriver(): RwUser {\n return this.initDriver\n }\n\n\n //#endregion globals/space setup\n\n\n //#region Avatar getters and setters\n\n get avType(): number {\n return this.m_avType;\n }\n\n set avType(val: number) {\n this.m_avType = val;\n // console.warn(\"avType SET: \", val)\n }\n\n get avColor(): string {\n let finalColor = (!this.m_avColor) ? this.selectedDriver.avColor : this.m_avColor;\n this.m_avColor = finalColor;\n return this.m_avColor;\n }\n\n set avColor(val: string) {\n this.m_avColor = this.globals.validateAndSaveColor(val);\n }\n\n get avInits(): string {\n let avInits = (!this.m_avInits) ? this.selectedDriver.avInits : (this.m_avInits);\n this.m_avInits = avInits;\n return this.m_avInits.substring(0, 3);\n }\n\n set avInits(val: string) {\n this.disableApply = !this.globals.isAlpha(val.substring(0, 3));\n this.m_avInits = val.substring(0, 3);\n }\n\n //#endregion Avatar getters and setters\n\n //#region first tab getters and setters\n get isFirstTab(): boolean {\n return this.idxTab === 0;\n }\n\n get name(): string {\n let finalName = (!this.m_name) ? this.selectedDriver.name : (this.m_name);\n this.m_name = finalName;\n return this.m_name;\n }\n\n set name(val: string) {\n this.m_name = val;\n }\n\n get email(): string {\n if ((!this.m_email) && this.selectedDriver.email) {\n //console.warn(\"SET @ get name\", this.selectedDriver.name);\n this.m_email = this.selectedDriver.email;\n }\n return this.m_email;\n }\n\n set email(val: string) {\n this.m_email = val;\n }\n\n\n get accessTypeSelected(): string {\n let accessText = \"Normal\";\n let accessType = this.m_accessType;\n switch (accessType) {\n //@formatter:off\n case 0:\n accessText = \"Restricted\";\n break;\n case 1:\n accessText = \"Normal\";\n break;\n case 2:\n accessText = \"Elevated\";\n break;\n case 3:\n accessText = \"Dispatcher (Restricted)\";\n break;\n //@formatter:on\n }\n //console.log(\"GET accessTypeSelected\", accessText)\n return accessText\n }\n\n set accessTypeSelected(val: string) {\n let accessType = 1;\n switch (val) {\n //@formatter:off\n case \"Restricted\":\n accessType = 0;\n break;\n case \"Normal\":\n accessType = 1;\n break;\n case \"Elevated\":\n accessType = 2;\n break;\n case \"Dispatcher (Restricted)\":\n accessType = 3;\n break;\n //@formatter:on\n }\n //console.log(\"SET accessTypeSelected\", accessType)\n this.m_accessType = accessType;\n }\n\n\n //#endregion first tab getters and setters\n\n //#region save actions\n\n saveColor() {\n this.selectedDriver.avColor = this.globals.validateAndSaveColor(this.m_avColor);\n this.idxTab = 1;\n this.updateDisplay();\n }\n\n\n updateDisplay() {\n let self = this;\n let SOURCE = \"RwDriverEdit.updateDisplay\";\n let finalAvInits = (this.m_avInits) ? this.m_avInits.substring(0, 3) : this.selectedDriver.avInits;\n this.globals.selectedDriver = this.selectedDriver;\n this.selectedDriver.avType = this.m_avType;\n this.selectedDriver.avInits = finalAvInits;\n this.selectedDriver.avColor = this.m_avColor;\n //upload file\n if (this.avType == 1) {\n // console.warn(\"file size:\", this.file[0].size);\n if (!this.file) {\n this.onSaveAvatar();\n //this.globals.showSnack(\"No file detected - please select a file or switch to initials mode\", \"error\")\n } else {\n if (this.file.size < this.IMAGE_SIZE_LIMIT) {\n this.globals.onFileUpload(this.file, this.selectedDriver.userId).then(() => {\n this.onSaveAvatar();\n });\n // console.warn(\"POSTing photo, avType:\", this.selectedDriver.avType);\n } else {\n this.globals.showSnack(\"2 MB File Maximum Exceeded - Choose Smaller File\", \"error\")\n }\n }\n } else {\n this.onSaveAvatar();\n }\n // console.warn(\"POSTing inits, avType:\", this.selectedDriver.avType);\n //update color, inits, and type\n\n\n }\n\n onSaveAvatar() {\n const SOURCE = 'RwDriverEdit.onSaveAvatar';\n if (this.selectedDriver) {\n this.selectedDriver.avColor = this.globals.validateAndSaveColor(this.selectedDriver.avColor)\n this.globals.saveAvatar(this.selectedDriver)\n .then(() => {\n this.globals.showSnack(\"User Avatar Updated\", \"success\");\n this.selectedDriver.lastUpdated = new Date();\n })\n .catch(err => {\n this.rollbackDriver();\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n this.globals.showSnack(\"Failed to Update User Avatar\", \"error\");\n });\n } else {\n this.globals.showSnack(\"Sorry, we had an issue updating your avatar - please refresh the page and try again.\", \"error\");\n RwLog.error(SOURCE, \"Calling onSaveAvatar with selectedDriver == null\");\n }\n }\n\n\n onEnter() {\n if (this.idxTab === 0) {\n this.saveDriverChanges();\n //event.stopPropagation();\n } else if (this.idxTab === 1) {\n if (this.avType === 0) {\n this.saveAvatarChanges(true);\n } else {\n if (this.avType === 1) {\n if (this.file) {\n // console.warn(\"this.file exists:\", this.file);\n if (this.file[0].size > 2000000) {\n this.saveAvatarChanges(false);\n } else {\n this.saveAvatarChanges(true);\n }\n } else {\n this.saveAvatarChanges(true);\n }\n }\n }\n } else {\n this.saveColor();\n }\n }\n\n onEscape(event: Event) {\n //console.log(\"RwDriverEdit.onEscape\")\n if (this.idxTab == 0) {\n event.stopPropagation();\n this.close();\n } else {\n if (this.idxTab == 1) {\n this.globals.showEditAvatar = false;\n this.idxTab = 0;\n\n }\n }\n }\n\n close() {\n //console.log(\"RwDriverEdit.close\")\n theStore.dispatch(\"showDriverEdit\", false).catch();\n }\n\n\n saveDriverChanges() {\n const self = this;\n const SOURCE = \"RwDriverEdit.saveDriverChanges\";\n let isValidForm = this.isValidForm();\n if (isValidForm) {\n\n //console.warn(\"on save, Driver Access Type enum is: \", this.m_accessType);\n this.selectedDriver.name = this.m_name;\n this.selectedDriver.email = this.m_email;\n this.selectedDriver.accessType = this.m_accessType;\n\n //update name, email, accessType\n this.globals\n .saveDriver(this.selectedDriver)\n .then(() => {\n self.globals.showSnack(\"User Updated\", \"success\");\n self.selectedDriver.lastUpdated = new Date();\n self.close();\n })\n .catch(err => {\n self.rollbackDriver();\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n self.globals.showSnack(\"Failed to Update Driver\", \"error\");\n });\n }\n }\n\n isValidForm() {\n let vueForm = this.$refs.form as any;\n let isValid = vueForm.validate();\n return isValid;\n }\n\n\n saveAvatarChanges(save: boolean) {\n const SOURCE = \"RwDriverEdit.saveAvatarChanges\";\n if (save) {\n let finalAvInits = (this.avInits) ? this.avInits.substring(0, 3) : this.selectedDriver.avInits;\n if (this.selectedDriver) {\n this.globals.selectedDriver = this.selectedDriver;\n\n this.selectedDriver.avType = this.m_avType;\n this.selectedDriver.avInits = finalAvInits;\n this.selectedDriver.avColor = this.m_avColor;\n\n if (this.selectedDriver.avColor) {\n this.globals.saveAvatar(this.selectedDriver)\n .then(() => {\n this.globals.showSnack(\"User Avatar Updated\", \"success\");\n this.selectedDriver.lastUpdated = new Date();\n this.close();\n })\n .catch(err => {\n this.rollbackDriver();\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n this.globals.showSnack(\"Failed to Update User Avatar\", \"error\");\n });\n this.idxTab = 1;\n } else {\n this.globals.showSnack(\"Please select a color and try again\", 'error');\n RwLog.warn(SOURCE, 'Save avatar called with no color selected: ' + this.selectedDriver.avColor);\n }\n } else {\n RwLog.warn(SOURCE, 'Save avatar called with no driver selected: ' + this.selectedDriver);\n this.globals.showSnack(\"Please refresh your page and try again. If problems persist, contact support@roadwarrior.app\", 'error');\n }\n }\n\n\n if (!save) {\n this.idxTab = 3;\n }\n }\n\n\n //#endregion save actions\n\n\n rollbackDriver() {\n // this.selectedDriver.userName = this.initialUserNameSuffix;\n\n this.selectedDriver.avType = this.initialAvType;\n this.selectedDriver.avInits = this.initialAvInits;\n this.selectedDriver.avColor = this.initialAvColor;\n\n this.selectedDriver.name = this.initialName;\n this.selectedDriver.email = this.initialEmail;\n this.selectedDriver.accessType = this.initialAccessType;\n }\n\n //\n // onFileUpload() {\n // let self = this;\n // const SOURCE = \"RwAvatarEdit.onFileUpload\";\n // if (this.file && this.file.length > 0) {\n // //submit file\n // let newFile = this.file[0];\n // let formData = new FormData();\n // let uid = this.selectedDriver.userId;\n // formData.append('newFile', newFile);\n // let url = `${RwConstants.CoreUri}/users/uimage?uid=${uid}`;\n // dal.callWithToken\n // .post(url, formData, {headers: {'Content-Type': 'multipart/form-data'}})\n // .then(res => {\n // if (res && res.data) {\n // let avInfo = RwAvatarInfo.fromJson(res.data);\n // if (avInfo && avInfo.avUrl) {\n // //Update current user if match\n // //Update drivers pin\n // let driver = theGlobals.drivers.find(d => d.userId == uid);\n // if (driver) {\n // driver.imageUrl = avInfo.avUrl;\n // }\n // else {\n // //Log this!\n // }\n // }\n // }\n // else {\n // //Log this!\n // }\n // })\n // .catch(function (err) {\n // //Log this!\n // self.rollbackDriver();\n // RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n // self.globals.showSnack(\"Failed to Update User Avatar\", \"error\");\n // });\n // }\n // }\n\n\n mounted() {\n if (this.initDriver) {\n this.initDriverVals();\n } else {\n RwLog.consoleError(\"mounted\", \"!initDriver\")\n }\n }\n\n\n//region Unused\n\n\n // get accessType(): number {\n // return this.m_accessType;\n // }\n //\n // set accessType(val: number) {\n // this.m_accessType = val;\n // }\n\n // get accessTypeSelected(): string {\n // let accessType = this.selectedDriver.accessType;\n // if (accessType) {\n // this.m_accessType = accessType;\n // }\n // else {\n // this.m_accessType = 0;\n // }\n // if (this.m_accessType == 0) {\n // return \"Restricted Driver\"\n // }\n // else {\n // return (this.m_accessType === 2) ? \"Elevated Driver\" : \"Normal Driver\";\n // }\n // }\n\n // set accessTypeSelected(val: string) {\n // let accessType: number;\n // if (val == 'Restricted Driver') {\n // accessType = 0;\n // }\n // else {\n // accessType = (val == \"Trusted Driver\") ? 2 : 1;\n // }\n // this.m_accessType = accessType;\n // }\n\n\n// get userNameSuffix(): string {\n// let rawName = \"\"\n// if (this.initDriver && this.initDriver.userName && this.initDriver.userName.length > 0) {\n// //console.warn(\"get userNameSuffix userName\", this.selectedDriver.userName);\n// rawName = this.selectedDriver.userName.substring(this.selectedDriver.userName.lastIndexOf(\".\") + 1);\n// }\n// return rawName;\n// }\n//\n//\n// get teamDomainDot(): string {\n// if (!this.m_teamDomainDot) {\n// if (this.globals.isSubTeam) {\n// this.m_teamDomainDot = this.globals.teamDomain + \".\" + this.globals.subDomain + \".\";\n// //console.warn(\"this.globals.isSubTeam==TRUE: \", this.m_teamDomainDot);\n// }\n// else {\n// this.m_teamDomainDot = this.globals.teamDomain + \".\";\n// //console.warn(\"this.globals.isSubTeam==FALSE: \", this.m_teamDomainDot);\n// }\n// }\n// //console.warn(\"this.teamDomainDot gotten:\", this.m_teamDomainDot);\n// return this.m_teamDomainDot;\n// }\n\n\n//endregion\n\n @Watch(\"avType\")\n watchAvType(val) {\n //console.log(this.m_avInits, !this.globals.isAlpha(this.m_avInits));\n this.disableApply = val === 1 ? false : !this.globals.isAlpha(this.m_avInits);\n }\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwDriverEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwDriverEdit.vue?vue&type=template&id=1169fcb2&scoped=true&\"\nimport script from \"./RwDriverEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwDriverEdit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"1169fcb2\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"content-class\":\"generic-dialog\"},model:{value:(_vm.globals.genericDialog.show),callback:function ($$v) {_vm.$set(_vm.globals.genericDialog, \"show\", $$v)},expression:\"globals.genericDialog.show\"}},[_c(VCard,{staticClass:\"pa-5\"},[_c(VCardTitle,{staticClass:\"d-flex justify-space-between mb-1 pa-2\"},[_c('div',{staticStyle:{\"flex\":\"1\"}},[(_vm.globals.genericDialog.icon)?_c(VIcon,{staticStyle:{\"padding-right\":\"10px\"},attrs:{\"color\":_vm.iconColor,\"icon\":_vm.icon,\"size\":\"35\"}},[_vm._v(_vm._s(_vm.icon)+\" \")]):_vm._e(),_c('span',{staticStyle:{\"word-break\":\"break-word\"}},[_vm._v(_vm._s(_vm.globals.genericDialog.title))])],1),_c(VBtn,{staticClass:\"px-0\",attrs:{\"min-width\":\"36px\",\"text\":\"\"}},[_c(VIcon,{attrs:{\"icon\":\"close\"},on:{\"click\":_vm.close}},[_vm._v(\"close\")])],1)],1),_c(VDivider),_c(VCardText,{staticClass:\"text-left pa-1 pt-4 pa-md-4\"},[_c('span',{domProps:{\"innerHTML\":_vm._s(_vm.globals.genericDialog.text)}},[_vm._v(\" \"+_vm._s(_vm.globals.genericDialog.text)+\" \")])]),(!!_vm.globals.genericDialog.confirmCallback)?_c('footer',{staticClass:\"d-flex justify-end\"},[_c(VBtn,{staticClass:\"mr-2\",attrs:{\"color\":\"primary\"},on:{\"click\":_vm.confirm}},[_vm._v(\"Confirm\")]),_c(VBtn,{attrs:{\"color\":\"error\"},on:{\"click\":_vm.close}},[_vm._v(\"Cancel\")])],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n/**\n * Generic Dialog\n *\n * Implementation:\n * - Set store via globals\n * - genericDialog.title = Title for the modal.\n * - genericDialog.text = Text or HTML for the content\n * - genericDialog.icon = \"success\" or any material icon (\"warning\", \"error\")\n * - genericDialog.confirmCallback = callback for confirm button. After callback invocation executes reset (not close) method.\n * - genericDialog.onCloseCallback = callback to execute before closing (via resetting global properties). This will not execute if confirm method is called.\n */\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from '@/app/RwGlobals';\n\n@Component({})\nexport default class RwGenericDialog extends Vue {\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get icon(): string {\n switch (this.globals.genericDialog.icon) {\n case \"success\":\n return \"check_circle\";\n default:\n return this.globals.genericDialog.icon;\n }\n };\n\n get iconColor(): string {\n switch (this.globals.genericDialog.icon) {\n case \"success\":\n return \"primary\";\n case \"warning\":\n return \"warning\";\n case \"error\":\n return \"error\";\n default:\n return \"white\";\n }\n }\n\n confirm() {\n this.globals.genericDialog.confirmCallback();\n this.reset();\n }\n\n close() {\n if (this.globals.genericDialog.onCloseCallback) this.globals.genericDialog.onCloseCallback();\n this.reset();\n }\n\n /**\n * Close dialog and set timeout to reset all properties to null\n * to enhance animation.\n */\n reset() {\n this.globals.genericDialog.show = false;\n setTimeout(() => this.globals.genericDialogReset(), 1000);\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericDialog.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericDialog.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericDialog.vue?vue&type=style&index=0&id=6a259dc3&prod&lang=css&\"","import { render, staticRenderFns } from \"./RwGenericDialog.vue?vue&type=template&id=6a259dc3&\"\nimport script from \"./RwGenericDialog.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwGenericDialog.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwGenericDialog.vue?vue&type=style&index=0&id=6a259dc3&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div')\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {MigrateLegacyToFlexResult} from \"@/app/dem/Profile/MigrateLegacyToFlexResult\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport moment from \"moment\";\nimport {OptInPref} from \"@/app/RwEnums\";\n\n@Component\nexport default class RwFlexOptIn extends Vue {\n\n driversModel: { name: string, userId: string; selected: boolean }[] = [];\n idxTab = 0;\n nextRenewalDate: string = \"\";\n displayErrorMigration = false;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get display(): boolean {\n const dateOk = this.nextRenewalDate !== \"\" ?\n moment(moment()).diff(moment((this.nextRenewalDate), \"MM/DD/YYYY\"), 'minutes') < 0\n :\n false;\n return this.globals.showFlexOptIn && dateOk;\n }\n\n set display(val: boolean) {\n this.globals.showFlexOptIn = val;\n }\n\n get selectedDrivers(): string[] {\n return this.driversModel.filter(drv => drv.selected).map(drv => drv.userId);\n }\n\n get monthlyCost(): number {\n return 10 + (10 * this.selectedDrivers.length);\n }\n\n get driversList(): RwUser[] {\n return this.globals.drivers.filter(drv => drv.userId !== this.globals.userId);\n }\n\n @Watch(\"driversList\")\n watchDriversList(val) {\n this.driversModel = this.driversList.map(drv => ({name: drv.name, userId: drv.userId, selected: true}))\n }\n\n autoRenew() {\n RwTaskBillingProfile.ResumeAutoRenew().catch(err => {\n if (!this.globals.isLegacy) this.displayErrorMigration = true;\n });\n }\n\n async optIn() {\n const confirmBody = \"We're so glad to keep you in the tribe. Please confirm you choice to renew your subscription at the new price plan of $10 USD for each driver.\";\n const doOptIn = await this.globals.showConfirmDialog(\"Confirm Opt-In\", confirmBody, \"Confirm\", \"Cancel\")\n if (!doOptIn) return;\n\n RwPrefUtils.flexOptInSelected = OptInPref.OptedIn;\n //REVIEW: This was not previously saved to webPrefs!!!\n // Set auto renew true\n this.autoRenew();\n this.globals.saveWebPrefs();\n\n if (this.globals.isLegacy) {\n const optInOptions = {\n drivers: this.selectedDrivers\n };\n\n let confirmation = true;\n\n //REVIEW: Tommy, is this block still necessary? I thought this was removed.\n // if (this.selectedDrivers.length < this.driversList.length) {\n // try {\n // const removedCount = this.driversList.length - this.selectedDrivers.length;\n // const text = `Migration will keep ${this.selectedDrivers.length} drivers and remove ${removedCount} drivers. Do you want to continue?`;\n // confirmation = await this.globals.showConfirmDialog(`Confirm Drivers Selection`, text, `Confirm`, `Cancel`);\n // }\n // catch (err) {\n // RwLog.error(`RwFlexOptIn.OptIn`, `Error on confirm dialog: ${err.message}`);\n // }\n // }\n\n if (confirmation) {\n RwLog.log(`RwFlexOptIn.OptIn`, `Drivers List: ${JSON.stringify(this.selectedDrivers)}`)\n RwTaskBillingProfile.MigrateLegacyToFlex(optInOptions.drivers)\n .then(resp => {\n this.globals.showSnack(`The account was migrated successfully.`, \"success\");\n this.globals.isLegacy = false;\n this.globals.drivers = this.globals.drivers.filter(drv => this.selectedDrivers.indexOf(drv.userId) !== -1);\n this.globals.showOptInPostMessage = true;\n })\n .catch((err: MigrateLegacyToFlexResult) => {\n RwLog.error(\"RwFlexOptIn.optIn\", `Migrate error: ${err.Error}`);\n this.globals.showSnack(`There was an error migrating the account.`, \"error\");\n this.displayErrorMigration = true;\n });\n }\n }\n this.close();\n }\n\n close() {\n this.idxTab = 1;\n RwPrefUtils.lastOptInDisplayed = true;\n this.globals.showFlexOptIn = false;\n }\n\n closeErrorMigration() {\n this.displayErrorMigration = false;\n }\n\n calcRenewalDate(date) {\n let momentDate = moment(date);\n if (momentDate.format('MM') == \"09\") momentDate.add(1, \"month\");\n return momentDate.format(\"MM/DD/YYYY\");\n }\n\n mounted() {\n /* let isOwner = this.globals.isDriver == false;\n if (isOwner) {\n RwTaskBillingProfile.GetBillingProfile()\n .then((profile) => {\n this.nextRenewalDate = this.calcRenewalDate(profile.ProStatus.NextPaymentDate)\n });\n }*/\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwFlexOptIn.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwFlexOptIn.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwFlexOptIn.vue?vue&type=template&id=15aa9446&scoped=true&\"\nimport script from \"./RwFlexOptIn.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwFlexOptIn.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"15aa9446\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"max-width\":\"600\"},model:{value:(_vm.globals.showOptInPostMessage),callback:function ($$v) {_vm.$set(_vm.globals, \"showOptInPostMessage\", $$v)},expression:\"globals.showOptInPostMessage\"}},[_c(VToolbar,[_c(VToolbarTitle,[_vm._v(\" Migration Successful \")]),_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_c(VIcon,[_vm._v(\"mdi-close\")])],1)],1),_c(VCard,[_c(VCardText,{staticClass:\"pt-5 text-left\"},[_vm._v(\" Ensure that the drivers update to the latest RoadWarrior app version and log out and log in to have conversion take effect. \")]),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"Close\")])],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\n\n@Component({})\nexport default class RwFlexOptInPostMessage extends Vue {\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n close() {\n this.globals.showOptInPostMessage = false;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwFlexOptInPostMessage.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwFlexOptInPostMessage.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwFlexOptInPostMessage.vue?vue&type=template&id=4ded4016&\"\nimport script from \"./RwFlexOptInPostMessage.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwFlexOptInPostMessage.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","export default class AttributionData {\n aid = \"\";\n cid = \"\";\n agid = \"\";\n kid = \"\";\n gclid = \"\";\n utmSource = \"\";\n utmCampaign = \"\";\n utmTerm = \"\";\n utmMedium = \"\";\n utmExp = \"\";\n referDate = \"\";\n rc = \"\";\n fvid = \"\";\n adid = 0;\n fbclid: string = \"\";\n\n ppb = \"\";\n\n ppd = \"\";\n\n ppt = \"\";\n}","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport Ripple from 'vuetify/lib/directives/ripple';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"persistent\":\"\",\"value\":_vm.globals.showPODTutorial,\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"width\":\"auto\"}},[_c(VCard,[_c(VCardText,{class:_vm.globals.theme,staticStyle:{\"width\":\"100%\",\"overflow-y\":\"auto\",\"padding\":\"0\"}},[_c(VTabsItems,{attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\"},[_c(VContainer,{staticStyle:{\"width\":\"400px\"}},[_c(VRow,{staticClass:\"slide\"},[_c(VCol,[_c(VRow,[_c('p',{staticClass:\"slide-index\"},[_vm._v(\"1 of 3\")])]),_c(VRow,[_c('p',{staticClass:\"slide-title\"},[_vm._v(\"Which Proof of Delivery do you want as your default?\")])]),(!_vm.globals.showPODTutorialOnOnboard)?_c(VRow,[_c('p',[_vm._v(\"This will only apply to future routes. Your existing routes will stay the same.\")])]):_vm._e(),_c(VRow,[_c('div',{staticStyle:{\"display\":\"flex\",\"justify-content\":\"space-between\",\"width\":\"100%\",\"margin-top\":\"6px\"}},[_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"none\",\"size\":\"small\",\"checked\":_vm.selectedProofOfDelivery === _vm.PODDefaultSettings.None},on:{\"clicked\":function($event){return _vm.selectProofOfDelivery(_vm.PODDefaultSettings.None)}}}),_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"photo\",\"size\":\"small\",\"checked\":_vm.selectedProofOfDelivery === _vm.PODDefaultSettings.Photo || _vm.selectedProofOfDelivery === _vm.PODDefaultSettings.PhotoAndSignature},on:{\"clicked\":function($event){return _vm.selectProofOfDelivery(_vm.PODDefaultSettings.Photo)}}}),_c('RwPODThumbnail',{attrs:{\"mode\":\"checkbox\",\"type\":\"signature\",\"size\":\"small\",\"checked\":_vm.selectedProofOfDelivery === _vm.PODDefaultSettings.Signature || _vm.selectedProofOfDelivery === _vm.PODDefaultSettings.PhotoAndSignature},on:{\"clicked\":function($event){return _vm.selectProofOfDelivery(_vm.PODDefaultSettings.Signature)}}})],1)])],1),_c('div',{staticClass:\"slide-actions\"},[_c(VBtn,{staticClass:\"btn-filled\",staticStyle:{\"margin-left\":\"auto\"},attrs:{\"elevation\":\"0\",\"tile\":\"\"},on:{\"click\":function($event){_vm.idxTab++}}},[_vm._v(\" Next \")])],1)],1),_c('div',{staticClass:\"tutorial-close\",on:{\"click\":_vm.saveAndExit}},[_c('img',{attrs:{\"src\":\"/images/icons/tutorial-close.svg\"}})])],1)],1),_c(VTabItem,{key:\"1\"},[_c(VContainer,{staticStyle:{\"width\":\"600px\"}},[_c(VRow,[_c('div',{staticStyle:{\"width\":\"600px\",\"height\":\"334px\",\"overflow\":\"hidden\"}},[_c('video',{staticStyle:{\"position\":\"relative\",\"top\":\"-2px\"},attrs:{\"width\":\"600\",\"height\":\"338\",\"autoplay\":\"\",\"muted\":\"\",\"loop\":\"\"},domProps:{\"muted\":true}},[_c('source',{attrs:{\"src\":\"/videos/pod-change-settings.mp4\",\"type\":\"video/mp4\"}})])])]),_c(VRow,{staticClass:\"slide\"},[_c(VCol,[_c(VRow,[_c('p',{staticClass:\"slide-index\"},[_vm._v(\"2 of 3\")])]),_c(VRow,[_c('p',{staticClass:\"slide-title\"},[_vm._v(\"Need different Proof of Delivery on a certain stop?\")])]),_c(VRow,[_c('p',[_vm._v(\"Change individual stop requests at the bottom of the “Edit Stop” panel, or change your default requests in “Settings”\")])])],1),_c('div',{staticClass:\"slide-actions\"},[_c(VBtn,{directives:[{def: Ripple,name:\"ripple\",rawName:\"v-ripple\",value:(false),expression:\"false\"}],staticClass:\"btn-text\",attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab--}}},[_vm._v(\" Previous \")]),_c(VBtn,{staticClass:\"btn-filled\",staticStyle:{\"margin-left\":\"auto\"},attrs:{\"elevation\":\"0\",\"tile\":\"\"},on:{\"click\":function($event){_vm.idxTab++}}},[_vm._v(\" Next \")])],1)],1),_c('div',{staticClass:\"tutorial-close\",on:{\"click\":_vm.saveAndExit}},[_c('img',{attrs:{\"src\":\"/images/icons/tutorial-close.svg\"}})])],1)],1),_c(VTabItem,{key:\"2\"},[_c(VContainer,{staticStyle:{\"width\":\"600px\"}},[_c(VRow,[_c('div',{staticStyle:{\"width\":\"600px\",\"height\":\"334px\",\"overflow\":\"hidden\"}},[_c('video',{staticStyle:{\"position\":\"relative\",\"top\":\"-2px\"},attrs:{\"width\":\"600\",\"height\":\"338\",\"autoplay\":\"\",\"muted\":\"\",\"loop\":\"\"},domProps:{\"muted\":true}},[_c('source',{attrs:{\"src\":\"/videos/pod-view.mp4\",\"type\":\"video/mp4\"}})])])]),_c(VRow,{staticClass:\"slide\"},[_c(VCol,[_c(VRow,[_c('p',{staticClass:\"slide-index\"},[_vm._v(\"3 of 3\")])]),_c(VRow,[_c('p',{staticClass:\"slide-title\"},[_vm._v(\"Where to find your drivers' photos and signatures\")])]),_c(VRow,[_c('p',[_vm._v(\"Open the “View Check-in” panel.\")]),_c('p',[_vm._v(\"You can right-click on any photo or signature to copy to your clipboard, then send to customers however you like.\")]),_c('p',[_c('i',[_vm._v(\"Want more info on how to use Proof of Delivery?\")]),_vm._v(\" \")]),_c('a',{staticStyle:{\"color\":\"#4285F4\"},attrs:{\"href\":\"https://www.youtube.com/watch?v=pI2-VM3N_wg\",\"target\":\"_blank\"}},[_c('b',[_c('i',[_vm._v(\"Watch the full tutorial here\")])])])])],1),_c('div',{staticClass:\"slide-actions\"},[_c(VBtn,{directives:[{def: Ripple,name:\"ripple\",rawName:\"v-ripple\",value:(false),expression:\"false\"}],staticClass:\"btn-text\",attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){_vm.idxTab--}}},[_vm._v(\" Previous \")]),_c(VBtn,{staticClass:\"btn-filled\",staticStyle:{\"margin-left\":\"auto\"},attrs:{\"elevation\":\"0\",\"tile\":\"\"},on:{\"click\":_vm.saveAndExit}},[_vm._v(\" Done \")])],1)],1),_c('div',{staticClass:\"tutorial-close\",on:{\"click\":_vm.saveAndExit}},[_c('img',{attrs:{\"src\":\"/images/icons/tutorial-close.svg\"}})])],1)],1)],1)],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport { Component, Vue } from \"vue-property-decorator\";\nimport theGlobals, { RwGlobals } from \"@/app/RwGlobals\";\nimport RwPODThumbnail from \"@/app/views/components/RwPODThumbnail.vue\";\nimport { PODDefaultSettings } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport theSettingSpace, { RwSettingSpace } from \"@/app/views/account/RwSettingSpace\";\nimport thePlanSpace, { RwPlannerSpace } from \"@/app/views/planner/RwPlannerSpace\";\nimport { RwPrefUtils } from \"@/app/utils/RwPrefUtils\";\nimport { RwConstants } from \"@/app/RwConstants\";\n\n@Component({ components: { RwPODThumbnail } })\nexport default class RwPODTutorial extends Vue {\n\n idxTab = 0;\n\n PODDefaultSettings = PODDefaultSettings;\n m_proofOfDelivery: PODDefaultSettings = null;\n selectedProofOfDelivery: PODDefaultSettings = null;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get settingSpace(): RwSettingSpace {\n return theSettingSpace;\n }\n\n get plannerSpace(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get proofOfDelivery(): PODDefaultSettings {\n if (this.m_proofOfDelivery == null) {\n this.m_proofOfDelivery = this.settingSpace.proofOfDelivery;\n }\n return this.m_proofOfDelivery;\n }\n\n set proofOfDelivery(val: PODDefaultSettings) {\n this.m_proofOfDelivery = val;\n }\n\n selectProofOfDelivery(type: PODDefaultSettings) {\n if (type === PODDefaultSettings.None) {\n this.selectedProofOfDelivery = PODDefaultSettings.None;\n }\n else if (this.selectedProofOfDelivery === PODDefaultSettings.None) {\n this.selectedProofOfDelivery = type === PODDefaultSettings.Photo ? PODDefaultSettings.Photo : PODDefaultSettings.Signature;\n }\n else if (this.selectedProofOfDelivery === PODDefaultSettings.Photo) {\n this.selectedProofOfDelivery = type === PODDefaultSettings.Photo ? PODDefaultSettings.None : PODDefaultSettings.PhotoAndSignature;\n }\n else if (this.selectedProofOfDelivery === PODDefaultSettings.Signature) {\n this.selectedProofOfDelivery = type === PODDefaultSettings.Signature ? PODDefaultSettings.None : PODDefaultSettings.PhotoAndSignature;\n }\n else if (this.selectedProofOfDelivery === PODDefaultSettings.PhotoAndSignature) {\n this.selectedProofOfDelivery = type === PODDefaultSettings.Photo ? PODDefaultSettings.Signature : PODDefaultSettings.Photo;\n }\n }\n\n saveAndExit() {\n // Save settings\n this.m_proofOfDelivery = this.selectedProofOfDelivery;\n this.settingSpace.proofOfDelivery = this.m_proofOfDelivery;\n RwPrefUtils.proofOfDelivery = this.proofOfDelivery;\n\n const afterSave = () => {\n if (this.globals.showPODTutorialOnOnboard) {\n this.globals.showPODTutorial = false;\n this.globals.showPODTutorialOnOnboard = false;\n this.globals.setShowOnboardTipsTimer();\n } else {\n this.globals.showPODTutorial = false;\n setTimeout(() => {\n this.globals.showPODSettingsPopup = true;\n setTimeout(() => {\n this.globals.showPODSettingsPopup = false;\n }, RwConstants.PODSettingsPopupDuration);\n }, RwConstants.PODSettingsPopupDelay);\n }\n }\n\n this.globals.saveProofOfDeliveryDefault().then(() => {\n afterSave();\n }).catch(err => {\n afterSave();\n });\n }\n\n mounted() {\n this.m_proofOfDelivery = this.settingSpace.proofOfDelivery;\n this.selectedProofOfDelivery = this.m_proofOfDelivery;\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODTutorial.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODTutorial.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODTutorial.vue?vue&type=style&index=0&id=f662baca&prod&lang=scss&scoped=true&\"","import { render, staticRenderFns } from \"./RwPODTutorial.vue?vue&type=template&id=f662baca&scoped=true&\"\nimport script from \"./RwPODTutorial.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPODTutorial.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPODTutorial.vue?vue&type=style&index=0&id=f662baca&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"f662baca\",\n null\n \n)\n\nexport default component.exports","\n\nimport moment from \"moment\";\nimport dal from \"@/app/dal/RwDal\";\nimport theGlobals, {RwGlobals} from '@/app/RwGlobals';\nimport thePlanSpace from \"@/app/views/planner/RwPlannerSpace\";\nimport rwPlannerSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport RwPages from \"@/app/consts/RwPages\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {Component, Vue, Watch} from \"vue-property-decorator\";\nimport {RwRoute, RwRoutePick, RwRouteStatusCodes} from \"@/app/dem/RwRoute\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwAvatarInfo} from \"@/app/dem/RwUser\";\nimport {RwMultiMode, RwRoleTypes, SubscriptionState, VersionOutdatedEnum} from \"@/app/RwEnums\";\nimport RwConfirm from \"@/app/views/pickers/RwConfirm.vue\";\nimport RwColorPicker from \"@/app/views/pickers/RwColorPicker.vue\";\nimport RwVisitPicker from \"@/app/views/pickers/RwVisitPicker.vue\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport RwSkedPicker from \"@/app/views/pickers/RwSkedPicker.vue\";\nimport RwReloPicker from \"@/app/views/pickers/RwReloPicker.vue\";\nimport {RwGeoPoint} from \"@/app/utils/RwGeoUtils\";\nimport RwStatusPicker from \"@/app/views/pickers/RwStatusPicker.vue\";\nimport RwAssignPicker from \"@/app/views/pickers/RwAssignPicker.vue\";\nimport RwStopEdit from \"@/app/views/planner/RwStopEdit.vue\";\nimport RwHistoryEdit from \"@/app/views/history/RwHistoryEdit.vue\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwDeltas} from \"@/app/dal/RwDeltas\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport RwRouteNew from \"@/app/views/pickers/RwRouteNew.vue\";\nimport RwEventBus from \"@/utils/RwEventBus\";\nimport RwSiteEdit from \"@/app/views/sites/RwSiteEdit.vue\";\nimport RwRouteEdit from \"@/app/views/routes/RwRouteEdit.vue\";\nimport RwSkedEdit from \"@/app/views/skeds/RwSkedEdit.vue\";\nimport RwDriverEdit from \"@/app/views/drivers/RwDriverEdit.vue\";\nimport RwGenericDialog from \"@/app/views/components/RwGenericDialog.vue\";\nimport theSubTeamSpace, {RwSubTeamSpace} from \"@/app/views/subteams/RwSubTeamSpace\";\nimport RwFlexOptIn from \"@/app/views/account/RwFlexOptIn.vue\";\nimport RwFlexOptInPostMessage from \"@/app/views/account/RwFlexOptInPostMessage.vue\";\nimport RwGenericRoutePicker from \"@/app/views/pickers/RwGenericRoutePicker.vue\";\nimport RwProToTeam from \"@/app/views/account/RwProToTeam.vue\";\nimport AttributionData from \"@/app/utils/attribution\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport Cookies from 'js-cookie';\nimport PurchSpace from '@/app/views/account/purch/RwPurchSpace';\nimport RwPODTutorial from \"@/app/views/marketplace/RwPODTutorial.vue\";\n\n@Component({\n components: {\n RwProToTeam,\n RwFlexOptInPostMessage,\n RwFlexOptIn,\n RwRouteEdit,\n RwStopEdit,\n RwHistoryEdit,\n RwSiteEdit,\n RwSkedEdit,\n RwDriverEdit,\n RwAssignPicker,\n RwStatusPicker,\n RwReloPicker,\n RwConfirm,\n RwColorPicker,\n RwVisitPicker,\n RwSkedPicker,\n RwRouteNew,\n RwGenericDialog,\n RwGenericRoutePicker,\n RwPODTutorial\n }\n})\nexport default class App extends Vue {\n\n\n //#region Props\n\n idxSidebar = 0;\n showUserMenu = false;\n colorInit = \"\";\n loader = null;\n syncing = false;\n isFirstLoad = true;\n cacheRoutes: RwRoute[];\n lastRefreshRoutes = 0;\n\n // Dunning Banner\n needsBillingUpdate = false;\n gotBillingData = false;\n billingExpiryMonth = 0;\n billingExpiryYear = 0;\n trialEndingDate: moment.Moment = null;\n lastFour = \"\";\n cardType = \"\";\n updateBillingUrl = \"\";\n lastClosedUpdatePayment = RwPrefUtils.lastClosedPaymentBanner;\n showUpdatePaymentDialog = false;\n showTrialDialog = false;\n\n get showNavDrawer() {\n return this.isLoggedIn && !this.globals.showSearchPanel &&\n (this.globals.hasActiveFlexSku || this.globals.hasActiveProSku) && this.$route.name !== RwPages.ReferralOnboard && this.$route.name !== RwPages.Login;\n }\n\n get inTest() {\n return this.globals.isTestSubDomain;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get plan(): RwPlannerSpace {\n return thePlanSpace\n }\n\n get subTeamsSpace(): RwSubTeamSpace {\n return theSubTeamSpace;\n }\n\n get showActive10(): string {\n let isActive = this.idxSidebar === 10;\n let style = isActive ? 'custom-active' : 'custom-inactive';\n //console.warn(\"showActive10 isActive:\", isActive, this.idxSidebar, style)\n return style;\n }\n\n get showActive11(): string {\n let isActive = this.idxSidebar === 11;\n let style = isActive ? 'custom-active' : 'custom-inactive';\n //console.warn(\"showActive11 isActive:\", isActive, this.idxSidebar, style)\n return style;\n }\n\n get avatarUrl(): string {\n return this.globals.avInfo.avUrl;\n }\n\n get toolBarColor() {\n return '#E2004F';\n }\n\n get trialEndingDays() {\n return this.isLoggedIn && this.gotBillingData && this.trialEndingDate ? this.trialEndingDate.diff(moment(), \"days\") + 1 : \"\";\n }\n\n isActiveTab(tab: number): boolean {\n let isActive: boolean = false;\n\n //@formatter:off\n switch (tab) {\n case 0:\n if (this.idxSidebar === 0) {\n isActive = true;\n }\n break;\n case 1:\n if (this.idxSidebar === 1) {\n isActive = true;\n }\n break;\n case 2:\n if (this.idxSidebar === 2) {\n isActive = true;\n }\n break;\n case 3:\n if (this.idxSidebar === 3) {\n isActive = true;\n }\n break;\n case 4:\n if (this.idxSidebar === 4) {\n isActive = true;\n }\n break;\n case 5:\n if (this.idxSidebar === 5) {\n isActive = true;\n }\n break;\n case 6:\n if (this.idxSidebar === 6) {\n isActive = true;\n }\n break;\n case 7:\n if (this.idxSidebar === 7) {\n isActive = true;\n }\n break;\n case 8:\n if (this.idxSidebar === 8) {\n isActive = true;\n }\n break;\n case 9:\n if (this.idxSidebar === 9) {\n isActive = true;\n }\n break;\n case 10:\n if (this.idxSidebar === 10) {\n isActive = true;\n }\n break;\n case 11:\n if (this.idxSidebar === 11) {\n isActive = true;\n }\n break;\n case 12:\n if (this.idxSidebar === 12) {\n isActive = true;\n }\n break;\n }\n //@formatter:on\n return isActive;\n }\n\n userName(): string {\n let uname = \"\";\n if (this.globals.userName) {\n uname = this.globals.userName;\n }\n return uname;\n }\n\n get appBarColor(): string {\n return this.globals.isDarkMode ? \"#333\" : \"#ddd\";\n }\n\n get titleTextColor(): string {\n return theGlobals.isDarkMode ? \"titleDarkMode\" : \"titleLightMode\";\n }\n\n get appName(): string {\n if (this.globals.hasActiveProSku && !this.globals.isTeam) {\n return \"RoadWarrior Pro\";\n }\n return \"RoadWarrior Flex\";\n }\n\n get syncText(): string {\n let syncText = \"\";\n if (this.globals.lastSyncMS > 0) {\n let now = moment();\n let deltaSecs = now.diff(this.globals.lastSync, \"seconds\");\n let duration = moment.duration(deltaSecs, \"seconds\");\n let humanizeText = duration.humanize();\n syncText = `Last Sync: ${humanizeText} ago`;\n }\n return syncText;\n\n //return (this.globals.lastSyncMS > 0) ? this.globals.lastSync.format('YYYY.MM.DD HH:mm') : '';\n }\n\n get activeRoute(): RwRoute {\n return this.plan.activeRoute;\n }\n\n get isLoggedIn(): boolean {\n return this.globals.isLoggedIn;\n }\n\n get isTeam(): boolean {\n return this.globals.isTeam;\n }\n\n get isAdmin(): boolean {\n return this.globals.isAdmin;\n }\n\n get isOwner(): boolean {\n return this.globals.role === RwRoleTypes.Owner || this.globals.role === RwRoleTypes.Admin;\n }\n\n get isDisp(): boolean {\n return this.globals.isDisp;\n }\n\n get isSubTeam(): boolean {\n return this.globals.isSubTeam;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get loading(): boolean {\n return this.globals.isLoading;\n }\n\n get taskCount(): number {\n let count = this.globals.tasks ? this.globals.tasks.length : 0;\n return count;\n }\n\n get sideIconColor(): string {\n if (this.idxSidebar === 0) {\n return `'custom-active'`;\n } else if (this.isDarkMode) {\n return `'custom-inactive'`;\n } else {\n return '#2f2f2f';\n }\n }\n\n get needsUpdate() {\n return theGlobals.outdatedVersion === VersionOutdatedEnum.NeedsUpdate;\n }\n\n get needsUpdateSevere() {\n return theGlobals.outdatedVersion === VersionOutdatedEnum.NeedsUpdateSevere;\n }\n\n get trialButtonTitle() {\n if (this.globals.isLoggedIn && this.globals.hasActiveFlexTrial && this.gotBillingData && this.trialEndingDate) {\n return `${this.trialEndingDays} trial day${this.trialEndingDays !== 1 ? 's' : ''} remaining`;\n }\n return \"\";\n }\n\n get showTitlePaymentWarningButton() {\n return this.globals.isLoggedIn &&\n this.globals.hasActiveFlexSku &&\n this.gotBillingData &&\n this.ccExpiring\n }\n\n get showPaymentBanner() {\n return this.globals.isLoggedIn &&\n this.globals.hasActiveFlexSku &&\n moment().diff(moment(this.globals.lastClosedPaymentBanner), \"hours\") > 24 &&\n this.gotBillingData &&\n this.needsBillingUpdate;\n }\n\n get showTrialBanner() {\n return this.globals.isLoggedIn && this.gotBillingData && this.globals.hasActiveFlexTrial;\n }\n\n get showTitlePaymentButton() {\n return this.globals.isLoggedIn &&\n this.globals.hasActiveFlexSku &&\n moment().diff(moment(this.globals.lastClosedPaymentBanner), \"hours\") < 24 &&\n this.gotBillingData &&\n this.needsBillingUpdate;\n }\n\n get ccExpiring() {\n let now = moment();\n if (now.year() >= this.billingExpiryYear) {\n if (now.month() >= this.billingExpiryMonth) {\n return true;\n }\n }\n return false;\n }\n\n get CardLastFour() {\n if (this.lastFour) {\n return \"ending in \" + this.lastFour;\n }\n return \"\";\n }\n\n get CardType() {\n if (this.cardType) {\n return this.cardType;\n }\n return \"\";\n }\n\n get showAppBar() {\n const rtPath = this.$route.path;\n return !rtPath?.startsWith(`/${RwPages.ReferralOnboard}`) && !rtPath?.startsWith(`/${RwPages.Login}`);\n }\n\n avatarClick() {\n this.showUserMenu = false;\n this.$router.push({name: \"account\"}).catch();\n }\n\n //#endregion Props\n\n\n //#region UI Navigation\n\n // upgradeToFlex() {\n // this.$router.push(RwPages.Upgrade).catch(() => {\n // });\n // }\n\n /* popAdminWarning() {\n if (this.globals.role === -1) {\n this.globals.showSnack(\"Certain operations like upgrades may not work correctly with an admin account\", \"warning\");\n }\n }*/\n\n ClosePaymentBanner() {\n this.globals.lastClosedPaymentBanner = new Date();\n }\n\n OpenTrialDialog() {\n this.showTrialDialog = true;\n }\n\n OpenFlexGuide() {\n window.open(\"https://flexguide.roadwarrior.app/getting-started\", \"_blank\");\n }\n\n UpdatePaymentMethodWarning() {\n RwLog.log(\"RwApp.UpdatePaymentMethod\", \"Clicked update payment method warning banner btn\");\n this.showUpdatePaymentDialog = true;\n }\n\n UpdatePaymentMethod() {\n RwLog.log(\"RwApp.UpdatePaymentMethod\", \"Clicked update payment method banner btn\");\n window.open(rwPlannerSpace.updatePaymentUrl, \"_blank\");\n }\n\n upgradeToFlex() {\n // this.$router.push({name: RwPages.Register, params: {email: this.globals.userName}})\n // .catch(err => {\n // });\n this.globals.showProToTeam = true;\n }\n\n contactSupport() {\n window.open(`mailto:support@roadwarrior.app?subject=Flex Support: ${theGlobals.accountId}`, \"_blank\");\n this.showUserMenu = false;\n }\n\n cachePath(): string {\n let newPath = this.$route.fullPath;\n if (newPath.includes(\"planner\")) {\n newPath = \"/planner\";\n }\n //console.log(`newPath: ${newPath}`);\n return newPath;\n }\n\n\n navToPlanner(evt, inTaskMode?: boolean) {\n if (this.idxSidebar !== 0) {\n let url = \"\";\n if (this.activeRoute) {\n url = this.activeRoute.plannerUrl;\n } else {\n let routeId = RwPrefUtils.lastRouteId;\n url = (routeId) ? `/planner/${routeId}` : `/planner`;\n }\n\n if (inTaskMode) {\n this.plan.multiMode = RwMultiMode.tasks;\n }\n\n //console.log(\"navToPlanner\", url)\n this.$router.push({path: url}).catch();\n }\n }\n\n navToRoutes() {\n if (this.idxSidebar !== 1) this.$router.push({name: \"routes\"}).catch();\n }\n\n navToUsers() {\n if (this.idxSidebar !== 2) this.$router.push({name: \"drivers\"}).catch();\n }\n\n navToSites() {\n if (this.idxSidebar !== 3) this.$router.push({name: \"sites\"}).catch();\n }\n\n navToTasks() {\n if (this.idxSidebar !== 4) this.$router.push({name: \"tasks\"}).catch();\n }\n\n navToSkeds() {\n if (this.idxSidebar !== 5) this.$router.push({name: \"skeds\"}).catch();\n }\n\n navToReports() {\n if (this.idxSidebar !== 6) this.$router.push({name: \"reports\"}).catch();\n }\n\n navToUploads() {\n if (this.idxSidebar !== 7) this.$router.push({name: \"uploads\"}).catch();\n }\n\n navToSubTeams() {\n if (this.idxSidebar !== 8) this.$router.push({name: \"subteams\"}).catch();\n }\n\n navToSettings() {\n if (this.idxSidebar !== 9) this.$router.push({name: \"settings\"}).catch();\n }\n\n navToLogReports() {\n if (this.idxSidebar !== 10) this.$router.push({name: \"logs\"}).catch();\n }\n\n navToAddReports() {\n if (this.idxSidebar !== 11) this.$router.push({name: \"adds\"}).catch();\n }\n\n navToMarketplace() {\n if (this.idxSidebar !== 12) this.$router.push({name: \"marketplace\"}).catch();\n }\n\n\n //#endregion\n\n\n //#region User Actions\n\n onConfirm(isConfirmed: boolean, dontShow: boolean = false) {\n //console.log(\"RwApp.onConfirm isConfirmed\", isConfirmed);\n this.globals.onConfirm(isConfirmed, dontShow);\n }\n\n onColorPick(color: string) {\n //console.log(\"RwApp.onColorPick color\", color);\n this.globals.onColorPick(color);\n }\n\n\n onVisitPick(visitTimeMins: number) {\n //console.log(\"RwApp.onVisitPick visitTimeMins\", visitTimeMins);\n this.globals.onVisitPick(visitTimeMins);\n }\n\n onSkedPick(sked: RwSked) {\n //console.log(\"RwApp.onSkedPick sked\", sked);\n this.globals.onSkedPick(sked);\n }\n\n onReloPick(coord: RwGeoPoint) {\n //console.log(\"RwApp.onReloPick coord\", coord);\n this.globals.onReloPick(coord);\n }\n\n onStatusPick(status: RwRouteStatusCodes) {\n //console.log(\"RwApp.onReloPick coord\", coord);\n this.globals.onStatusPick(status);\n }\n\n // newRouteCreated(route:RwRoute){\n // this.globals.newRouteCreated(route);\n // }\n\n\n onAssignPick(route: RwRoute) {\n //console.log(\"RwApp.onReloPick coord\", coord);\n this.globals.onAssignPick(route);\n }\n\n\n onRouteEdited(isCommit: boolean) {\n //console.log(\"RwApp.onRouteEdited isCommit\", isCommit);\n this.globals.onRouteEdited(isCommit);\n }\n\n onStopEdited(isCommit: boolean) {\n //console.log(\"RwApp.onStopEdited isCommit\", isCommit);\n this.globals.onStopEdited(isCommit);\n }\n\n onHistoryEdited(isCommit: boolean) {\n this.globals.onHistoryEdited(isCommit);\n }\n\n onSiteEdited(isCommit: boolean) {\n //console.log(\"RwApp.onSiteEdited isCommit\", isCommit);\n this.globals.onSiteEdited(isCommit);\n }\n\n onDriverEdited(isCommit: boolean) {\n //console.log(\"RwApp.onDriverEdited isCommit\", isCommit);\n this.globals.onDriverEdited(isCommit);\n }\n\n onSkedEdited(isCommit: boolean) {\n //console.log(\"RwApp.onSkedEdited isCommit\", isCommit);\n this.globals.onSkedEdited(isCommit);\n }\n\n\n onRouteNew(route: RwRoute) {\n //console.log(\"RwApp.onRouteNew route\", route);\n this.globals.onRouteNew(route);\n }\n\n onFileUpload(e) {\n const SOURCE = \"App.onFileUpload\";\n const self = this;\n //Check if we have a file\n const files = e.target.files;\n if (files && files.length > 0) {\n\n //Submit File\n let uid = RwPrefUtils.userId;\n let file = files[0];\n let formData = new FormData();\n formData.append('file', file);\n\n //console.warn(\"submit file\", file);\n let url = `${RwConstants.CoreUri}/users/uimage?uid=${uid}`;\n dal.callWithToken\n .post(\n url,\n formData,\n {headers: {'Content-Type': 'multipart/form-data'}}\n )\n .then(res => {\n if (res) {\n if (res.data) {\n let avInfo = RwAvatarInfo.fromJson(res.data)\n if (avInfo && avInfo.avUrl) {\n\n //Update current user if match\n if (uid == RwPrefUtils.userId) {\n theGlobals.avInfo = avInfo;\n //theGlobals.avUrl = avInfo.avUrl;\n }\n\n //Update drivers pin\n let driver = theGlobals.drivers.find(d => d.userId == uid);\n if (driver) {\n driver.imageUrl = avInfo.avUrl;\n }\n }\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> ${res.status} \\nAuthToken:${RwPrefUtils.token}`)\n }\n } else {\n RwLog.error(SOURCE, `POST url:${url} -> MISSING \\nAuthToken:${RwPrefUtils.token}`)\n }\n })\n .catch(function (err) {\n RwLog.error(SOURCE, `Unhandled: \\n\\n${err}`);\n });\n }\n }\n\n\n onSync() {\n const self = this;\n self.syncing = true;\n //console.warn(\"onSync\")\n this.globals\n .syncDelta()\n .finally(() => self.syncing = false);\n }\n\n detectAttribParams() {\n const SOURCE = \"App.detectAttribParams\";\n const params = new URLSearchParams(window.location.search)\n\n\n try {\n const storedAttr = RwPrefUtils.attribData;\n let existingAttr = JSON.parse(storedAttr) as AttributionData;\n const hasExistingAttr = !!existingAttr && (existingAttr.utmSource || existingAttr.aid || existingAttr.utmTerm || existingAttr.utmCampaign || existingAttr.agid);\n\n if (!hasExistingAttr) {\n existingAttr = new AttributionData();\n }\n\n let attrCookieValues = {} as AttributionData;\n const attrCookie = Cookies.get(\"attrc\");\n if (attrCookie) {\n attrCookieValues = JSON.parse(attrCookie) as AttributionData;\n }\n let attr = new AttributionData();\n attr.aid = params.get('s1aid') ?? (attrCookieValues.aid ? attrCookieValues.aid : existingAttr.aid);\n attr.cid = params.get('s1cid') ?? (attrCookieValues.cid ? attrCookieValues.cid : existingAttr.cid);\n attr.agid = params.get('s1agid') ?? (attrCookieValues.agid ? attrCookieValues.agid : existingAttr.agid);\n attr.kid = params.get('s1kid') ?? (attrCookieValues.kid ? attrCookieValues.kid : existingAttr.kid);\n attr.gclid = params.get('gclid') ?? (attrCookieValues.gclid ? attrCookieValues.gclid : existingAttr.gclid);\n attr.utmSource = params.get('utm_source') ?? (attrCookieValues.utmSource ? attrCookieValues.utmSource : existingAttr.utmSource);\n attr.utmCampaign = params.get('utm_campaign') ?? (attrCookieValues.utmCampaign ? attrCookieValues.utmCampaign : existingAttr.utmCampaign);\n attr.utmTerm = params.get('utm_term') ?? (attrCookieValues.utmTerm ? attrCookieValues.utmTerm : existingAttr.utmTerm);\n attr.utmMedium = params.get('utm_medium') ?? (attrCookieValues.utmMedium ? attrCookieValues.utmMedium : existingAttr.utmMedium);\n attr.utmExp = params.get('utm_exp') ?? (attrCookieValues.utmExp ? attrCookieValues.utmExp : existingAttr.utmExp);\n attr.referDate = params.get('referDate') ?? (attrCookieValues.referDate ? attrCookieValues.referDate : existingAttr.referDate);\n attr.rc = params.get('rc') ?? (attrCookieValues.rc ? attrCookieValues.referDate : existingAttr.referDate);\n attr.ppb = params.get('ppb') ?? (attrCookieValues.ppb ? attrCookieValues.ppb : existingAttr.ppb);\n attr.ppd = params.get('ppd') ?? (attrCookieValues.ppd ? attrCookieValues.ppd : existingAttr.ppd);\n attr.ppt = params.get('ppt') ?? (attrCookieValues.ppt ? attrCookieValues.ppt : existingAttr.ppt);\n attr.fbclid = params.get('fbclid') ?? (attrCookieValues.fbclid ? attrCookieValues.fbclid : existingAttr.fbclid);\n\n const adidStr = params.get('adid');\n if (adidStr) {\n const parsed = parseInt(adidStr);\n if (!isNaN(parsed)) {\n attr.adid = parsed;\n } else {\n attr.adid = attrCookieValues.adid ?? (existingAttr.adid ? existingAttr.adid : 0);\n }\n } else {\n attr.adid = attrCookieValues.adid ?? (existingAttr.adid ? existingAttr.adid : 0);\n }\n\n const skipOnboardStep = parseInt(params.get('skipSchedule') ?? '0');\n\n theGlobals.skipOnboardFirstStep = skipOnboardStep === 1;\n\n if (attr.ppb) {\n PurchSpace.pricePerBaseCode = attr.ppb;\n }\n if (attr.ppd) {\n PurchSpace.pricePerDriverCode = attr.ppd;\n }\n if (attr.ppt) {\n PurchSpace.pricePerTeamCode = attr.ppt;\n }\n\n\n try {\n const fvid = Cookies.get(RwConstants.VIDCookieName);\n if (fvid) {\n attr.fvid = fvid;\n }\n } catch (fvidErr) {\n RwLog.error(SOURCE, `Error getting fvid from fortifi ${JSON.stringify(fvidErr)}`);\n }\n\n if (attr.rc && !RwPrefUtils.isLoggedIn && !RwPrefUtils.lastGoodUserName) {\n this.globals.isDarkMode = false;\n }\n\n RwPrefUtils.attribData = JSON.stringify(attr);\n } catch (err) {\n RwLog.error(SOURCE, `Error during attribution detection ${JSON.stringify(err)}`);\n }\n }\n\n detectSubDomain() {\n const SOURCE = \"App.detectSubDomain\";\n\n let domain = \"\";\n try {\n domain = window.location.host.split('.')[0].toLowerCase();\n if (domain.indexOf(\"fedex\") !== -1) {\n this.globals.isFedExSubDomain = true;\n } else if (domain.indexOf(\"ontrac\") !== -1) {\n this.globals.isOnTracSubDomain = true;\n } else if (domain.indexOf(\"flextest\") !== -1 || domain.indexOf(\"beta\") !== -1) {\n this.globals.isTestSubDomain = true;\n }\n //@formatter:off\n switch (domain) {\n case \"fedex\":\n RwConstants.SignupUrl = RwConstants.ChargifyProdFedexUrlV2;\n break;\n case \"ontrac\":\n RwConstants.SignupUrl = RwConstants.ChargifyProdOnTracUrlV2;\n break;\n case \"flex\":\n RwConstants.SignupUrl = RwConstants.ChargifyProdFlexUrlV2;\n break;\n case \"team\":\n RwConstants.SignupUrl = RwConstants.ChargifyProdTeamUrlV2;\n break;\n case \"flextest\":\n RwConstants.SignupUrl = RwConstants.ChargifyFlexTestUrl;\n break;\n case \"user\":\n RwConstants.SignupUrl = RwConstants.ChargifyProdUserUrlV2;\n break;\n case \"beta\":\n RwConstants.SignupUrl = RwConstants.ChargifyBetaUrlV2;\n break;\n }\n //@formatter:on\n } catch (err) {\n RwLog.error(SOURCE, `Unhandled: domain:${domain} \\n\\n${err}`);\n }\n }\n\n onLogOut(): void {\n //RwLog.consoleLog(\"Logging Out\");\n this.showUserMenu = false;\n this.globals.logOut();\n this.globals.logoutOtherTabs();\n this.$destroy();\n this.$nextTick(() => {\n window.location.replace(RwPages.Login);\n });\n\n }\n\n //#endregion\n\n\n //region Watch\n\n @Watch(\"activeRoute\")\n watchActiveRoute(route: RwRoute) {\n //console.warn(`RwApp.watchActiveRoute`, route);\n //this.plan.startPin = null;\n this.plan.stopPins = [];\n this.plan.clearPinSelections();\n }\n\n @Watch(\"activeRoute.stops\")\n watchStops(stops: RwStop[]) {\n const self = this;\n const SOURCE = \"RwApp.watchStops\";\n //console.log(SOURCE);\n\n let deltas = RwDeltas.getDeltas(stops, this.plan.cacheStops, this.plan.lastRefreshStops);\n //console.warn(SOURCE, deltas)\n let gotRouteUpdate = self.activeRoute && self.activeRoute.lastHash > this.plan.lastRefreshStops;\n\n this.plan.lastRefreshStops = Date.now();\n if (stops && stops.length > 0) {\n this.plan.cacheStops = [...stops];\n } else {\n this.plan.cacheStops = [];\n }\n\n if (deltas.gotAdds || deltas.gotRemoves || deltas.gotDeltas || gotRouteUpdate) {\n //deltas.print(SOURCE);\n this.plan.updateStopPins(deltas.adds, deltas.removes, deltas.deltas);\n } else {\n //console.error(\"force refreshPins\")\n let newPins = [...self.plan.stopPins];\n self.plan.stopPins = newPins;\n }\n\n }\n\n @Watch(\"globals.sites\")\n watchSites(sites: RwSite[]) {\n //console.warn(\"App.watchSites\");\n if (RwPrefUtils.showDataLayerSites) {\n this.plan.genSitePins();\n }\n }\n\n @Watch(\"globals.tasks\")\n watchTasks(tasks: RwStop[]) {\n //console.warn(\"App.watchTasks\");\n if (RwPrefUtils.showDataLayerTasks) {\n this.globals.genTaskPins();\n }\n }\n\n @Watch(\"globals.routes\")\n watchRoutes(routes: RwRoute[]) {\n const self = this;\n //console.warn(\"App.watchRoutes\");\n\n let deltas = RwDeltas.getDeltas(routes, this.cacheRoutes, this.plan.lastRefreshStops);\n //console.warn(\"watchRoutes deltas\", deltas);\n\n this.lastRefreshRoutes = Date.now();\n if (routes && routes.length > 0) {\n this.cacheRoutes = [...routes];\n } else {\n this.cacheRoutes = [];\n }\n\n if (deltas.gotAdds || deltas.gotRemoves || deltas.gotDeltas) {\n //console.log(\"watchRoutes adds, removes, deltas\", deltas.adds.length, deltas.removes.length, deltas.deltas.length);\n\n if (deltas.removes && deltas.removes.length > 0) {\n deltas.removes.forEach(r => {\n if (self.plan.isOpenRoute(r)) {\n self.plan.closeRoute(r);\n }\n });\n }\n\n }\n\n }\n\n @Watch(\"plan.openRoutes\")\n watchOpenRoutes(openRoutes: RwRoute[], oldRoutes: RwRoute[]) {\n //console.warn(\"App.watchOpenRoutes\", openRoutes.length, oldRoutes.length);\n //Try to resolve first by the RoutId on the url\n let actRoute = this.globals.activeRoute;\n let isResolvedViaUrl = false;\n const routeIdViaUrl = this.$route.params.routeId;\n\n if (theGlobals.isLoggedIn) {\n //console.log(\"App.watchOpenRoutes routeIdUrl\", routeIdViaUrl);\n if (routeIdViaUrl) {\n const isUrlOpenMatch = routeIdViaUrl && openRoutes.find(r => r.routeId === routeIdViaUrl);\n //console.log(\"App.watchOpenRoutes isUrlOpenMatch\", isUrlOpenMatch);\n if (isUrlOpenMatch) {\n const isActiveRoute = actRoute && actRoute.routeId === routeIdViaUrl;\n if (isActiveRoute) {\n isResolvedViaUrl = true;\n //console.log(\"App.watchOpenRoutes Happy Path. No action needed\");\n } else {\n isResolvedViaUrl = true;\n this.plan.setActiveRouteById(routeIdViaUrl);\n //console.warn(`App.watchOpenRoutes setActiveRouteById`, routeIdViaUrl);\n }\n } else {\n if (this.isFirstLoad) {\n let existingRoute = this.globals.routes.find(r => r.routeId === routeIdViaUrl);\n //console.log(\"App.watchOpenRoutes targetRoute\", existingRoute);\n if (existingRoute) {\n isResolvedViaUrl = true;\n\n //console.warn(\"watchOpenRoutes\", \"isFirstLoad\", existingRoute.plannerUrl)\n this.plan.openRoute(existingRoute);\n this.plan.setActiveRouteById(existingRoute.routeId);\n //console.log(\"App.watchOpenRoutes Open the target route\", existingRoute.name);\n }\n }\n }\n }\n\n if (!isResolvedViaUrl) {\n\n if (actRoute) {\n let idxRoute = this.globals.routes.findIndex(r => r.routeId === actRoute.routeId);\n if (idxRoute >= 0) {\n const isActiveOpened = openRoutes.find(r => r.routeId === routeIdViaUrl);\n //if (isActiveOpened) {\n //console.log(\"App.watchOpenRoutes isActiveOpened; should be OK\");\n //}\n //else {\n //console.warn(\"watchOpenRoutes\", \"unresolved\", actRoute.plannerUrl)\n\n //this.plan.openRouteInPlanner(actRoute)\n\n // this.plan.openRoute(actRoute);\n // this.plan.activeRoute = actRoute;\n // this.$router.push(actRoute.plannerUrl);\n //console.warn(\"App.watchOpenRoutes Open the active route\", actRoute.name, actRoute.routeId);\n //}\n }\n } else {\n if (openRoutes.length > 0) {\n\n let firstRoute = openRoutes[0];\n this.plan.openRoute(firstRoute);\n this.plan.setActiveRouteById(firstRoute.routeId);\n //console.warn(\"watchOpenRoutes\", \"firstRoute\", firstRoute.plannerUrl)\n this.$router.push(firstRoute.plannerUrl);\n //console.warn(\"App.watchOpenRoutes No Active; Opening First Open\");\n } else {\n //console.warn(\"watchOpenRoutes\", \"justPlanner\")\n this.plan.activeRoute = null;\n this.$router.push(\"/planner\");\n }\n }\n }\n\n this.isFirstLoad = false;\n }\n }\n\n onRoutePick(pick: RwRoutePick) {\n this.globals.onRoutePick(pick);\n }\n\n onUploadsPopupClick() {\n this.globals.showOnboardUploadsPopup = false;\n this.navToUploads();\n }\n\n //endregion\n\n\n //#region LifeCycle\n\n created() {\n //console.log(`App.created`, this.$route.fullPath);\n this.$vuetify.theme.dark = RwPrefUtils.rwTheme === \"rwDark\";\n this.globals.isDarkMode = RwPrefUtils.rwTheme === \"rwDark\";\n this.detectSubDomain();\n this.detectAttribParams();\n }\n\n mounted() {\n RwEventBus.$on(\"onRouteNew\", this.onRouteNew);\n this.$nextTick(function () {\n window.addEventListener('resize', this.onWindowWidth);\n });\n this.onWindowWidth();\n\n //Gtm\n theGlobals.updateGtmDataLayer({\n isLoggedIn: true,\n isTrialFlex: theGlobals.hasActiveFlexTrial,\n isActiveFlex: theGlobals.hasActiveFlexSku,\n isMobilePro: theGlobals.hasActiveProSku && !theGlobals.hasActiveFlexSku\n })\n\n if (this.isLoggedIn && this.globals.hasActiveFlexSku) {\n\n RwTaskBillingProfile.GetBillingProfile()\n .then(profile => {\n if (profile) {\n if (profile.ProStatus) {\n //this.needsBillingUpdate = profile.ProStatus.ChargifySubState === SubscriptionState.Active; // To Test Banner\n this.needsBillingUpdate = profile.ProStatus.ChargifySubState === SubscriptionState.Past_Due;\n\n if (profile.ProStatus.ChargifySubState === SubscriptionState.Trialing || profile.ProStatus.ChargifySubState === undefined) {\n this.trialEndingDate = moment(profile.ProStatus.NextPaymentDate)\n }\n PurchSpace.pricePerBaseAmt = profile.ProStatus.BasePriceAmount;\n PurchSpace.pricePerDriverAmt = profile.ProStatus.DriverPriceAmount;\n PurchSpace.pricePerTeamAmt = profile.ProStatus.TeamPriceAmount;\n }\n\n this.updateBillingUrl = profile.UpdatePaymentUrl;\n if (profile.PaymentMethod) {\n this.cardType = profile.PaymentMethod.Brand;\n if (profile.PaymentMethod.MaskedCard && profile.PaymentMethod.MaskedCard.length > 4) {\n this.lastFour = profile.PaymentMethod.MaskedCard.substring(profile.PaymentMethod.MaskedCard.length - 4)\n }\n\n // For dialog testing\n //this.billingExpiryMonth = 3;\n //this.billingExpiryYear = 2020;\n\n this.billingExpiryMonth = parseInt(profile.PaymentMethod.ExpirationMonth);\n this.billingExpiryYear = parseInt(profile.PaymentMethod.ExpirationYear);\n }\n this.gotBillingData = true;\n }\n })\n }\n }\n\n onWindowWidth() {\n this.globals.isMobileView = window.innerWidth <= 512;\n this.globals.isTabletView = window.innerWidth <= 1024;\n }\n\n updated() {\n let path = this.cachePath().toLowerCase();\n switch (path) {\n //@formatter:off\n //case \"/\": this.idxSidebar = 0; break;\n case \"/planner\":\n this.idxSidebar = 0;\n break;\n case \"/routes\":\n this.idxSidebar = 1;\n break;\n case \"/drivers\":\n this.idxSidebar = 2;\n break;\n case \"/sites\":\n this.idxSidebar = 3;\n break;\n case \"/tasks\":\n this.idxSidebar = 4;\n break;\n case \"/skeds\":\n this.idxSidebar = 5;\n break;\n case \"/reports\":\n this.idxSidebar = 6;\n break;\n case \"/uploads\":\n this.idxSidebar = 7;\n break;\n case \"/subteams\":\n this.idxSidebar = 8;\n break;\n case \"/settings\":\n this.idxSidebar = 9;\n break;\n case \"/logs\":\n this.idxSidebar = 10;\n break;\n case \"/adds\":\n this.idxSidebar = 11;\n break;\n case \"/marketplace\":\n this.idxSidebar = 12;\n break;\n //@formatter:on\n }\n //console.log(\"idxSideBar\", this.idxSidebar, path);\n }\n\n\n //#endregion\n\n\n}\n\n","import mod from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../node_modules/thread-loader/dist/cjs.js!../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=7e4db141&prod&lang=scss&scoped=true&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=1&id=7e4db141&prod&lang=scss&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=2&id=7e4db141&prod&lang=css&\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=7e4db141&scoped=true&\"\nimport script from \"./App.vue?vue&type=script&lang=ts&\"\nexport * from \"./App.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=7e4db141&prod&lang=scss&scoped=true&\"\nimport style1 from \"./App.vue?vue&type=style&index=1&id=7e4db141&prod&lang=scss&\"\nimport style2 from \"./App.vue?vue&type=style&index=2&id=7e4db141&prod&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7e4db141\",\n null\n \n)\n\nexport default component.exports","import Vue from \"vue\";\nimport App from \"./app/views/App.vue\";\nimport router from \"./router\";\nimport vuetify from \"./plugins/vuetify\";\nimport RwStrings from \"./app/consts/RwStrings\";\n\nimport {RwLog} from \"./app/dal/RwLog\";\nimport globals from \"@/app/RwGlobals\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport localDB from \"@/app/RwLocalDB\";\nimport VueGtag from \"vue-gtag\";\nimport VueGtm from '@gtm-support/vue2-gtm';\n\nimport Cookies from 'js-cookie';\nimport { RwPrefUtils } from \"./app/utils/RwPrefUtils\";\nimport { RwTaskAccounts } from \"./app/dal/RwTaskAccounts\";\nimport moment from \"moment\";\nimport {flexDisplay} from \"@/app/RwEnums\";\n\nVue.component(\"vuetify\", vuetify);\nVue.config.productionTip = false;\nif (RwConstants.isDevMode) Vue.config.performance = true;\n\nVue.use(VueGtag, {\n config: {id: \"G-BBG2EK6PW3\"},\n appName: 'Flex'\n}, router);\n\nVue.use(VueGtm, {\n id: 'GTM-M2VV333', // Your GTM single container ID, array of container ids ['GTM-xxxxxx', 'GTM-yyyyyy'] or array of objects [{id: 'GTM-xxxxxx', queryParams: { gtm_auth: 'abc123', gtm_preview: 'env-4', gtm_cookies_win: 'x'}}, {id: 'GTM-yyyyyy', queryParams: {gtm_auth: 'abc234', gtm_preview: 'env-5', gtm_cookies_win: 'x'}}], // Your GTM single container ID or array of container ids ['GTM-xxxxxx', 'GTM-yyyyyy']\n /* queryParams: {\n // Add URL query string when loading gtm.js with GTM ID (required when using custom environments)\n gtm_auth: 'AB7cDEf3GHIjkl-MnOP8qr',\n gtm_preview: 'env-4',\n gtm_cookies_win: 'x'\n },*/\n defer: false, // Script can be set to `defer` to speed up page load at the cost of less accurate results (in case visitor leaves before script is loaded, which is unlikely but possible). Defaults to false, so the script is loaded `async` by default\n compatibility: false, // Will add `async` and `defer` to the script tag to not block requests for old browsers that do not support `async`\n //nonce: '2726c7f26c', // Will add `nonce` to the script tag\n enabled: true, // defaults to true. Plugin can be disabled by setting this to false for Ex: enabled: !!GDPR_Cookie (optional)\n debug: RwConstants.isDevMode, // Whether or not display console logs debugs (optional)\n loadScript: true, // Whether or not to load the GTM Script (Helpful if you are including GTM manually, but need the dataLayer functionality in your components) (optional)\n vueRouter: router, // Pass the router instance to automatically sync with router (optional)\n // ignoredViews: ['homepage'], // Don't trigger events for specified router names (optional)\n trackOnNextTick: false // Whether or not call trackView in Vue.nextTick\n});\n\nrouter.beforeEach((to, from, next) => {\n //RwLog.consoleLog(\"router navTo:\", to.fullPath);\n\n if (!!to.query['one-pager-signup'] && to.query['one-pager-signup'] === 'true') {\n loginFromOnePagerSignup();\n return;\n }\n\n let isLoggedIn: boolean = globals.isLoggedIn;\n let target = to.path.toLowerCase();\n\n if (isLoggedIn) {\n\n let isAdminPage = target.startsWith(\"/adds\") || target.startsWith(\"/logs\") || target.startsWith(\"/users\");\n if (isAdminPage) {\n if (globals.isAdmin) {\n next();\n }\n } else {\n\n if (target.startsWith(\"/fedex\")) {\n globals.isReturningFedexManifest = true;\n }\n if (target.startsWith(\"/login\") || target.startsWith(\"/register\") || target.startsWith(\"/pro\")) {\n next(\"/planner\");\n } else if (target.startsWith(\"/purchasesuccess\") || target.startsWith(\"/unsubscribe\")) {\n next();\n } else {\n /* setTimeout(() => {\n\n //xTEST:\n //if (RwPrefUtils.flexOptInSelected === 0) {\n if((globals.isLegacy || globals.isProGo) && !RwPrefUtils.lastOptInDisplayed) {\n RwTaskMisc.getWebPrefs()\n .then(prefs => {\n //REVIEW: This logic does not account for mismatch\n // @ts-ignore\n if (!prefs.FlexOptIn || prefs.FlexOptIn === 0) {\n globals.showFlexOptIn = true;\n }\n });\n }\n }, 500);*/\n\n const hasCurrPurch = globals.hasActiveProSku || globals.hasActiveFlexSku;\n const hasFlexPurch = globals.hasActiveFlexSku;\n const hasNoSkus = globals.skuInfos.length === 0;\n if (target.startsWith(\"/upgrade\")) {\n next();\n } else if (hasCurrPurch) {\n if (hasFlexPurch) {\n next();\n } else if (target.startsWith(\"/uploads\") ||\n target.startsWith(\"/reports\") ||\n target.startsWith(\"/account\") ||\n target.startsWith(\"/settings\") ||\n target.startsWith(\"/help\")) {\n next();\n } else if (target === \"/\" || target.startsWith(\"/planner\")) {\n next(\"/reports\");\n } else {\n RwLog.consoleWarn(\"No current flex purch\");\n next(\"/upgrade\");\n }\n } else if (target.startsWith(\"/account\") || target.startsWith(\"/referonboard\")) {\n next();\n } else {\n RwLog.consoleWarn(\"No current purch\");\n next(\"/upgrade\");\n //next(\"/referonboard\");\n }\n }\n }\n } else {\n let isAccountPage =\n target.startsWith(\"/pro\") ||\n target.startsWith(\"/login\") ||\n target.startsWith(\"/register\") ||\n target.startsWith(\"/purchasesuccess\") ||\n target.startsWith(\"/resetpassword\") ||\n target.startsWith(\"/forgotpassword\") ||\n target.startsWith(\"/unsubscribe\") ||\n target.startsWith(\"/referonboard\");\n if (isAccountPage) {\n next();\n } else {\n if ((target.startsWith(\"/account\") || target.startsWith(\"/marketplace\") || target.startsWith(\"/drivers\")) && !!to.query.coupon) {\n next({path: \"/login\", query: {...to.query, redirect: target.replace(\"/\", \"\")}})\n } else {\n next(\"/login\");\n }\n }\n }\n\n\n});\n\nrouter.afterEach((to, from) => {\n document.title = to.meta.title || RwStrings.BaseTitle;\n});\n\nconst loginFromOnePagerSignup = () => {\n const loginCookie = Cookies.get(\"rw_login\");\n if (loginCookie) {\n globals.logOut();\n localStorage.clear();\n try {\n const loginCookieValues = JSON.parse(loginCookie);\n for (const [key, value] of Object.entries(loginCookieValues)) {\n RwPrefUtils.writeString(key, String(value));\n }\n Cookies.remove(\"rw_login\", {domain: 'roadwarrior.app', path: '/'});\n const SOURCE = \"main.onLoginFromOnePagerSignup\";\n\n if (!RwConstants.useDevChargify) {\n Vue.gtm.trackEvent({\n event: 'flex-subscription-add',\n conversionValue: 0\n });\n }\n\n RwTaskAccounts.login(RwPrefUtils.userName, RwPrefUtils.userPass).then(response => {\n if (response) {\n globals.isFirstRun = true;\n RwLog.log(SOURCE, \"Successful Login\");\n globals.isLoggedIn = true;\n const role = response.role;\n const isOwner = role == 0;\n const isTeam = response.acttp == 1;\n const isDisp = isTeam && isOwner;\n const activeSubs = globals.skuInfos.filter(sub => moment(sub.expires).isAfter(moment()));\n const isPro = activeSubs.length > 0;\n globals.role = role;\n globals.isDisp = isDisp;\n globals.hasCurrPurch = isPro;\n globals.isTeam = isTeam;\n globals.isLegacy = false;\n globals.flexDisplay = flexDisplay.Team;\n RwPrefUtils.flexDisplay = flexDisplay.Team;\n RwPrefUtils.lastGoodUserName = RwPrefUtils.userName;\n globals.loadData();\n globals.showOnboardSettings = false;\n globals.updateGtmDataLayer();\n\n router.push(\"/planner\").then(() => {\n globals.showStartingLocOnlyOnboard = true;\n globals.showOnboardSettings = true;\n globals.showOnboardAddStopArrow = true;\n globals.showOnboardUploadsPopup = true;\n });\n }\n })\n .catch(err => {\n RwLog.error(SOURCE, 'Chargify.js login after creation FAILURE - err: ' + JSON.stringify(err));\n globals.genericDialog.title = \"Error upgrading to Flex\";\n globals.genericDialog.text = \"Sorry, we had an issue upgrading to Flex. Please refresh the page and try again.\";\n globals.genericDialog.icon = \"error\";\n globals.genericDialog.show = true;\n });\n } catch(e) {}\n }\n}\n\n//const v:any = vuetify\n\nconst vue = new Vue({\n router,\n vuetify,\n beforeCreate() {\n localDB.getAll(\"svgs\").then(items => globals.loadImgUrls(items));\n },\n render: h => h(App)\n}).$mount(\"#app\");\n\nglobals.initApp();\n","import Vue from \"vue\";\n//import Vuetify from \"vuetify\";\nimport Vuetify from 'vuetify/lib'\nimport { createSimpleTransition } from 'vuetify/lib/components/transitions/createTransition';\n\nconst fadeTransition = createSimpleTransition('callout-transition')\nVue.component('callout-transition', fadeTransition)\n\nVue.use(Vuetify);\n\nexport default new Vuetify({\n theme: {\n dark: true,\n themes: {\n dark: {\n primary: \"#E2004F\",\n secondary: \"#B40048\",\n accent: \"#E91E63\",\n error: \"#ec0f0f\",\n background: \"#333333\"\n },\n light: {\n primary: \"#E2004F\",\n secondary: \"#B40048\",\n accent: \"#E91E63\",\n error: \"#b71c1c\",\n background: \"#eeeeee\"\n },\n\n }\n }\n});\n","import Vue from \"vue\";\nimport VueRouter from \"vue-router\";\nimport RwStrings from \"@/app/consts/RwStrings\";\nimport RwPages from \"@/app/consts/RwPages\";\n\nVue.use(VueRouter);\n\n// route level code-splitting\n// this generates a separate chunk (about.[hash].js) for this route\n// which is lazy-loaded when the route is visited.\n/* webpackChunkName: \"routeList\" */\n\nconst compsOnDemand = [\n {\n path: \"/login\",\n name: RwPages.Login,\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwLogin.vue\"),\n meta: {\n title: \"Login - \" + RwStrings.BaseTitle\n }\n },\n {\n path: \"/referonboard\",\n name: RwPages.ReferralOnboard,\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwReferralOnboard.vue\"),\n meta: {\n title: \"Welcome to RoadWarrior Flex!\"\n }\n },\n {\n path: \"/resetpassword\",\n name: RwPages.ResetPassword,\n props: true,\n component: () => import(\"@/app/views/account/RwResetPassword.vue\"),\n meta: {\n title: `Reset Password - ${RwStrings.BaseTitle}`\n }\n },\n {\n path: \"/forgotpassword\",\n name: RwPages.ForgotPassword,\n props: true,\n component: () => import(\"@/app/views/account/RwForgotPassword.vue\"),\n meta: {\n title: `Forgot Password - ${RwStrings.BaseTitle}`\n }\n },\n {\n path: \"/unsubscribe\",\n name: RwPages.Unsubscribe,\n props: true,\n component: () => import(\"@/app/views/account/RwUnsubscribe.vue\"),\n meta: {\n title: `Unsubscribe - ${RwStrings.BaseTitle}`\n }\n },\n {\n path: \"/login/:reason\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwLogin.vue\"),\n meta: {\n title: \"Login - \" + RwStrings.BaseTitle\n }\n },\n {\n path: \"/register\",\n name: RwPages.Register,\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwRegistration.vue\"),\n meta: {\n title: \"Registration - \" + RwStrings.BaseTitle\n }\n },\n {\n path: \"/purchaseSuccess\",\n name: RwPages.CompleteRegistration,\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwPurchaseSuccess.vue\"),\n meta: {\n title: \"Complete Registration - \" + RwStrings.BaseTitle\n }\n },\n {\n path: \"/upgrade\",\n name: RwPages.Upgrade,\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwUpgrade.vue\"),\n meta: {\n title: \"Upgrade - \" + RwStrings.BaseTitle\n }\n },\n {\n path: \"/help\",\n name: \"help\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwHelp.vue\")\n },\n {\n path: \"/account\",\n name: \"account\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwAccount.vue\")\n },\n {\n path: \"/pro\",\n name: \"pro\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwProInfo.vue\")\n },\n {\n path: \"/profile\",\n name: \"profile\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwProfile.vue\")\n },\n {\n path: \"/\",\n redirect: '/planner', //Required to avoid double mounting planner\n name: \"home\",\n component: () => import(/* webpackChunkName: \"planner\" */ \"@/app/views/planner/RwPlanner.vue\")\n },\n {\n path: \"/planner\",\n name: \"planner\",\n component: () => import(/* webpackChunkName: \"planner\" */ \"@/app/views/planner/RwPlanner.vue\")\n },\n {\n path: \"/planner/:routeId\",\n component: () => import(/* webpackChunkName: \"planner\" */ \"@/app/views/planner/RwPlanner.vue\")\n },\n {\n path: \"/routes\",\n name: \"routes\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/routes/RwRouteList.vue\")\n },\n {\n path: \"/sites\",\n name: \"sites\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/sites/RwSiteList.vue\")\n },\n {\n path: \"/tasks\",\n name: \"tasks\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/tasks/RwTaskList.vue\")\n },\n {\n path: \"/skeds\",\n name: \"skeds\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/skeds/RwSkedList.vue\")\n },\n {\n path: \"/reports\",\n name: \"reports\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/reports/RwReporting.vue\")\n },\n {\n path: \"/drivers\",\n name: \"drivers\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/drivers/RwDriverList.vue\")\n },\n {\n path: \"/subteams\",\n name: \"subteams\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/subteams/RwSubTeamList.vue\")\n },\n {\n path: \"/settings\",\n name: \"settings\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/account/RwSettings.vue\")\n },\n {\n path: \"/uploads\",\n name: RwPages.Uploads,\n component: () => import(/* webpackChunkName: \"upload\" */ \"@/app/views/uploads/RwUploads.vue\"),\n meta: {\n title: \"Uploads - \" + RwStrings.BaseTitle\n },\n alias: '/fedex'\n },\n\n {\n path: \"/logs\",\n name: \"logs\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwLogReports.vue\")\n },\n {\n path: \"/logs/:logId\",\n name: \"logEntry\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwLogView.vue\")\n },\n {\n path: \"/users/:userId\",\n name: \"userView\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwUserView.vue\")\n },\n {\n path: \"/adds\",\n name: \"adds\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwAddReports.vue\")\n },\n {\n path: \"/adds/:reportId\",\n name: \"addReport\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwAddReview.vue\")\n },\n // {\n // path: \"/adds/:address\",\n // name: \"addReport\",\n // component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/admin/RwAddReview.vue\")\n // },\n {\n path: \"/marketplace\",\n name: \"marketplace\",\n component: () => import(/* webpackChunkName: \"other\" */ \"@/app/views/marketplace/RwMarketplace.vue\")\n },\n];\n\nconst router = new VueRouter({\n mode: \"history\",\n base: process.env.BASE_URL,\n routes: compsOnDemand\n});\n\nexport default router;\n","export default class RwGenericDialog {\n show: boolean = false;\n title: string = \"\";\n text: string = \"\";\n icon: string = \"\";\n confirmCallback: Function | null = null;\n onCloseCallback: Function | null = null;\n}\n","import {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwSubTeam} from \"@/app/dem/RwSubTeam\";\n\nexport default {\n state: {\n subTeams: [] as RwSubTeam[],\n showSubTeamPop: false,\n showSubTeamDock: RwPrefUtils.showSubTeamDock,\n selectedSubTeam: null,\n showSubTeamEdit: false,\n popupView: RwPrefUtils.subTeamPopupView\n },\n getters: {\n\n subTeams(state): RwSubTeam[] {\n return state.subTeams;\n },\n\n showSubTeamDock(state): boolean {\n return state.showSubTeamDock;\n },\n\n showSubTeamPop(state): boolean {\n return state.showSubTeamPop;\n },\n\n selectedSubTeam(state): RwSubTeam {\n return state.selectedSubTeam;\n },\n\n showSubTeamEdit(state): boolean {\n return state.showSubTeamEdit;\n },\n\n popupView(state): boolean {\n return state.popupView;\n }\n },\n actions: {\n subTeams({state, commit}, val: RwSubTeam[]) {\n commit(\"SUB_TEAMS\", val);\n },\n\n showSubTeamDock({state, commit}, val: boolean) {\n commit(\"SHOW_SUBTEAM_DOCK\", val);\n },\n\n showSubTeamPop({state, commit}, val: boolean) {\n commit(\"SHOW_SUBTEAM_POP\", val);\n },\n\n selectedSubTeam({state, commit}, val: RwSubTeam) {\n commit(\"SELECTED_SUB_TEAM\", val);\n },\n\n showSubTeamEdit({state, commit}, val: boolean) {\n commit(\"SHOW_SUB_TEAM_EDIT\", val);\n },\n\n popupView({state, commit}, val: boolean) {\n commit(\"POPUP_VIEW\", val);\n }\n },\n mutations: {\n SUB_TEAMS(state, val: RwSubTeam[]) {\n state.subTeams = val;\n },\n\n SHOW_SUBTEAM_DOCK(state, val: boolean) {\n state.showSubTeamDock = val;\n },\n\n SHOW_SUBTEAM_POP(state, val: boolean) {\n state.showSubTeamPop = val;\n },\n\n SELECTED_SUB_TEAM(state, val: RwSubTeam) {\n state.selectedSubTeam = val;\n },\n\n SHOW_SUB_TEAM_EDIT(state, val: boolean) {\n state.showSubTeamEdit = val;\n },\n\n POPUP_VIEW(state, val: boolean) {\n state.popupView = val;\n }\n }\n};\n","import {RwSearchResult} from \"@/app/dem/RwSearchResult\";\nimport {RwPinTypes} from \"@/app/RwEnums\";\n\nconst uploadModule = {\n state: {\n showUploadSearchPanel: false,\n searchResultsUploadWeb: [],\n searchResultsUploadCoords: [],\n uploadMapCentroid: {lat: 0, lng: 0, zoom: 0},\n uploadSearchPinData: {pinType: RwPinTypes.Stop, lat: 0, lng: 0},\n uploadSearchResult: null\n },\n getters: {\n showUploadSearchPanel(state): boolean {\n return state.showUploadSearchPanel;\n },\n searchResultsUploadWeb(state): RwSearchResult[] {\n return state.searchResultsUploadWeb;\n },\n searchResultsUploadCoords(state): RwSearchResult[] {\n return state.searchResultsUploadCoords;\n },\n uploadMapCentroid(state): { lat: number, lng: number, zoom: number } {\n return state.mapCentroid;\n },\n uploadSearchPinData(state): { pinType: RwPinTypes, lat: number, lng: number } {\n return state.uploadSearchPinData;\n },\n uploadSearchResult(state): RwSearchResult {\n return state.uploadSearchResult;\n },\n },\n actions: {\n showUploadSearchPanel({state, commit}, val: boolean) {\n commit(\"SHOW_UPLOAD_SEARCH_PANEL\", val);\n },\n searchResultsUploadWeb({state, commit}, val: RwSearchResult[]) {\n commit(\"SEARCH_RESULTS_UPLOAD_WEB\", val);\n },\n searchResultsUploadCoords({state, commit}, val: RwSearchResult[]) {\n commit(\"SEARCH_RESULTS_UPLOAD_COORDS\", val);\n },\n uploadMapCentroid({state, commit}, val: { lat: number, lng: number, zoom: number }) {\n commit(\"UPLOAD_MAP_CENTROID\", val);\n },\n uploadSearchPinData({state, commit}, val: { pinType: RwPinTypes, lat: number, lng: number }) {\n commit(\"UPLOAD_SEARCH_PIN_DATA\", val);\n },\n uploadSearchResult({state, commit}, val: RwSearchResult) {\n commit(\"UPLOAD_SEARCH_RESULT\", val);\n },\n\n },\n mutations: {\n SHOW_UPLOAD_SEARCH_PANEL(state, val: boolean) {\n state.showUploadSearchPanel = val;\n },\n SEARCH_RESULTS_UPLOAD_WEB(state, val: RwSearchResult[]) {\n state.searchResultsUploadWeb = val;\n },\n SEARCH_RESULTS_UPLOAD_COORDS(state, val: RwSearchResult[]) {\n state.searchResultsUploadCoords = val;\n },\n UPLOAD_MAP_CENTROID(state, val: { lat: number, lng: number, zoom: number }) {\n state.uploadMapCentroid = val;\n },\n UPLOAD_SEARCH_PIN_DATA(state, val: { pinType: RwPinTypes, lat: number, lng: number }) {\n state.uploadSearchPinData = val;\n },\n UPLOAD_SEARCH_RESULT(state, val: RwSearchResult) {\n state.uploadSearchResult = val;\n },\n }\n};\n\nexport default uploadModule;","import {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {HistSortOrder, RouteSortOrder, SiteSortOrder, SortDirection} from \"@/app/RwEnums\";\n\nconst reportsModule = {\n state: {\n routeReportSortDir: RwPrefUtils.routeReportSortDir,\n routeReportSortMode: RwPrefUtils.routesReportSortBy,\n favsReportSortDir: RwPrefUtils.favoritesReportSortDir,\n favsReportSortMode: RwPrefUtils.favoritesReportSortBy,\n histReportSortDir: RwPrefUtils.historyReportSortDir,\n histReportSortMode: RwPrefUtils.historyReportSortBy\n },\n getters: {\n routeReportSortDir(state): SortDirection {\n return state.routeReportSortDir;\n },\n routeReportSortMode(state): RouteSortOrder {\n return state.routeReportSortMode;\n },\n favsReportSortDir(state): SortDirection {\n return state.favsReportSortDir;\n },\n favsReportSortMode(state): SiteSortOrder {\n return state.favsReportSortMode;\n },\n histReportSortDir(state): SortDirection {\n return state.histReportSortDir;\n },\n histReportSortMode(state): HistSortOrder {\n return state.histReportSortMode;\n },\n },\n actions: {\n routeReportSortDir({state, commit}, val: SortDirection) {\n commit(\"ROUTE_REPORT_SORT_DIR\", val);\n },\n routeReportSortMode({state, commit}, val: RouteSortOrder) {\n commit(\"ROUTE_REPORT_SORT_MODE\", val);\n },\n favsReportSortDir({state, commit}, val: SortDirection) {\n commit(\"FAVS_REPORT_SORT_DIR\", val);\n },\n favsReportSortMode({state, commit}, val: SiteSortOrder) {\n commit(\"FAVS_REPORT_SORT_MODE\", val);\n },\n histReportSortDir({state, commit}, val: SortDirection) {\n commit(\"HIST_REPORT_SORT_DIR\", val);\n },\n histReportSortMode({state, commit}, val: HistSortOrder) {\n commit(\"HIST_REPORT_SORT_MODE\", val);\n },\n },\n mutations: {\n ROUTE_REPORT_SORT_DIR(state, val: SortDirection) {\n state.routeReportSortDir = val;\n RwPrefUtils.routeReportSortDir = val;\n },\n ROUTE_REPORT_SORT_MODE(state, val: RouteSortOrder) {\n state.routeReportSortMode = val;\n RwPrefUtils.routesReportSortBy = val;\n },\n FAVS_REPORT_SORT_DIR(state, val: SortDirection) {\n state.favsReportSortDir = val;\n RwPrefUtils.favoritesReportSortDir = val;\n },\n FAVS_REPORT_SORT_MODE(state, val: SiteSortOrder) {\n state.favsReportSortMode = val;\n RwPrefUtils.favoritesReportSortBy = val;\n },\n HIST_REPORT_SORT_DIR(state, val: SortDirection) {\n state.histReportSortDir = val;\n RwPrefUtils.historyReportSortDir = val;\n },\n HIST_REPORT_SORT_MODE(state, val: HistSortOrder) {\n state.histReportSortMode = val;\n RwPrefUtils.historyReportSortBy = val;\n },\n }\n};\n\nexport default reportsModule;","import {RwLogEntry} from \"@/app/dem/RwLogEntry\";\nimport {RwUserInstalls, RwUserSessions} from \"@/app/dem/RwUserEntry\";\n\nconst uploadModule = {\n state: {\n errorLogEntries: [],\n agentLogEntries: [],\n diagLogEntries: [],\n userInstalls: [],\n userSessions: [],\n\n },\n getters: {\n\n errorLogEntries(state): RwLogEntry[] {\n return state.errorLogEntries;\n },\n diagLogEntries(state): RwLogEntry[] {\n return state.diagLogEntries;\n },\n agentLogEntries(state): RwLogEntry[] {\n return state.agentLogEntries;\n },\n userInstalls(state): RwUserInstalls[] {\n return state.userInstalls;\n },\n userSessions(state): RwUserSessions[] {\n return state.userSessions;\n },\n\n },\n actions: {\n\n errorLogEntries({state, commit}, val: RwLogEntry[]) {\n commit(\"ERROR_LOG_ENTRIES\", val);\n },\n diagLogEntries({state, commit}, val: RwLogEntry[]) {\n commit(\"DIAG_LOG_ENTRIES\", val);\n },\n agentLogEntries({state, commit}, val: RwLogEntry[]) {\n commit(\"AGENT_LOG_ENTRIES\", val);\n },\n userInstalls({state, commit}, val: RwUserInstalls[]) {\n commit(\"USER_INSTALLS\", val);\n },\n userSessions({state, commit}, val: RwUserInstalls[]) {\n commit(\"USER_SESSIONS\", val);\n },\n\n\n },\n mutations: {\n\n ERROR_LOG_ENTRIES(state, val: RwLogEntry[]) {\n state.errorLogEntries = val;\n },\n DIAG_LOG_ENTRIES(state, val: RwLogEntry[]) {\n state.diagLogEntries = val;\n },\n AGENT_LOG_ENTRIES(state, val: RwLogEntry[]) {\n state.agentLogEntries = val;\n },\n USER_INSTALLS(state, val: RwUserInstalls[]) {\n state.userInstalls = val;\n },\n USER_SESSIONS(state, val: RwUserSessions[]) {\n state.userSessions = val;\n },\n\n }\n};\n\nexport default uploadModule;","import {RwHistory} from \"@/app/dem/RwHistory\";\n\nconst dialogModule = {\n state: {\n showHistoryPop: false,\n showHistoryEditPop: false,\n selectedHistoryItem: null\n },\n getters: {\n showHistoryPop(state): boolean {\n return state.showHistoryPop;\n },\n\n showHistoryEditPop(state): boolean {\n return state.showHistoryEditPop;\n },\n selectedHistoryItem(state): RwHistory {\n return state.selectedHistoryItem;\n },\n },\n actions: {\n showHistoryPop({state, commit}, val: boolean) {\n commit(\"SHOW_HISTORY_POP\", val);\n },\n\n showHistoryEditPop({state, commit}, val: boolean) {\n commit(\"SHOW_HISTORY_EDIT_POP\", val);\n },\n selectedHistoryItem({state, commit}, val: boolean) {\n commit(\"SELECTED_HISTORY_ITEM\", val);\n },\n },\n mutations: {\n SHOW_HISTORY_POP(state, val: boolean) {\n state.showHistoryPop = val;\n },\n\n SHOW_HISTORY_EDIT_POP(state, val: boolean) {\n state.showHistoryEditPop = val;\n },\n\n SELECTED_HISTORY_ITEM(state, val: boolean) {\n state.selectedHistoryItem = val;\n },\n }\n};\n\nexport default dialogModule;","import {RwConstants} from \"@/app/RwConstants\";\n\nconst purchModule = {\n state: {\n pricePerBaseAmt: RwConstants.PPB,\n pricePerDriverAmt: RwConstants.PPD,\n pricePerTeamAmt: RwConstants.PPT\n },\n getters: {\n pricePerBaseAmt(state): number {\n return state.pricePerBaseAmt;\n },\n pricePerDriverAmt(state): number {\n return state.pricePerDriverAmt;\n },\n pricePerTeamAmt(state): number {\n return state.pricePerTeamAmt;\n },\n },\n actions: {\n pricePerBaseAmt({state, commit}, val: number) {\n commit(\"PRICE_PER_BASE_AMT\", val);\n },\n pricePerDriverAmt({state, commit}, val: number) {\n commit(\"PRICE_PER_DRIVER_AMT\", val);\n },\n pricePerTeamAmt({state, commit}, val: number) {\n commit(\"PRICE_PER_TEAM_AMT\", val);\n },\n },\n mutations: {\n PRICE_PER_BASE_AMT(state, val: number) {\n state.pricePerBaseAmt = val;\n },\n PRICE_PER_DRIVER_AMT(state, val: number) {\n state.pricePerDriverAmt = val;\n },\n PRICE_PER_TEAM_AMT(state, val: number) {\n state.pricePerTeamAmt = val;\n },\n }\n};\n\nexport default purchModule;","import {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\n\nconst onboardModule = {\n state: {\n hasOnboarded: RwPrefUtils.hasOnboarded,\n showOnboardSettings: RwPrefUtils.showOnboardSettings,\n showOnboardAddStopArrow: RwPrefUtils.showOnboardAddStopArrow,\n showOnboardAddStopArrowActive: false,\n showOnboardUploadsPopupActive: false,\n showPODTutorialOnOnboard: false,\n showOnboardUploadsPopup: RwPrefUtils.showOnboardUploadsPopup,\n },\n getters: {\n showOnboardSettings(state): boolean {\n return state.showOnboardSettings;\n },\n\n showOnboardAddStopArrow(state): boolean {\n return state.showOnboardAddStopArrow;\n },\n\n showOnboardAddStopArrowActive(state): boolean {\n return state.showOnboardAddStopArrowActive;\n },\n\n showOnboardUploadsPopupActive(state): boolean {\n return state.showOnboardUploadsPopupActive;\n },\n\n showPODTutorialOnOnboard(state): boolean {\n return state.showPODTutorialOnOnboard;\n },\n\n showOnboardUploadsPopup(state): boolean {\n return state.showOnboardUploadsPopup;\n },\n\n hasOnboarded(state): boolean {\n return state.hasOnboarded;\n },\n },\n actions: {\n showOnboardSettings({state, commit}, val: boolean) {\n commit(\"SHOW_ONBOARD_SETTINGS\", val);\n },\n\n showOnboardAddStopArrow({state, commit}, val: boolean) {\n commit(\"SHOW_ONBOARD_ADD_STOP_ARROW\", val);\n },\n\n showOnboardAddStopArrowActive({state, commit}, val: boolean) {\n commit(\"SHOW_ONBOARD_ADD_STOP_ARROW_ACTIVE\", val);\n },\n\n showOnboardUploadsPopupActive({state, commit}, val: boolean) {\n commit(\"SHOW_ONBOARD_UPLOADS_POPUP_ACTIVE\", val);\n },\n\n showPODTutorialOnOnboard({state, commit}, val: boolean) {\n commit(\"SHOW_POD_TUTORIAL_ON_ONBOARD\", val);\n },\n\n showOnboardUploadsPopup({state, commit}, val: boolean) {\n commit(\"SHOW_ONBOARD_UPLOADS_POPUP\", val);\n },\n\n hasOnboarded({state, commit}, hasOnboarded: boolean) {\n commit(\"HAS_ONBOARDED\", hasOnboarded);\n },\n },\n mutations: {\n HAS_ONBOARDED(state, val: boolean) {\n state.hasOnboarded = val;\n },\n\n SHOW_ONBOARD_SETTINGS(state, val: boolean) {\n state.showOnboardSettings = val;\n },\n\n SHOW_ONBOARD_ADD_STOP_ARROW(state, val: boolean) {\n state.showOnboardAddStopArrow = val;\n },\n\n SHOW_ONBOARD_ADD_STOP_ARROW_ACTIVE(state, val: boolean) {\n state.showOnboardAddStopArrowActive = val;\n },\n\n SHOW_ONBOARD_UPLOADS_POPUP_ACTIVE(state, val: boolean) {\n state.showOnboardUploadsPopupActive = val;\n },\n\n SHOW_POD_TUTORIAL_ON_ONBOARD(state, val: boolean) {\n state.showPODTutorialOnOnboard = val;\n },\n\n SHOW_ONBOARD_UPLOADS_POPUP(state, val: boolean) {\n state.showOnboardUploadsPopup = val;\n },\n }\n};\n\nexport default onboardModule;\n","import {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {PODDefaultSettings} from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\n\nconst podModule = {\n state: {\n showProofOfDelivery: false,\n proofOfDelivery: RwPrefUtils.proofOfDelivery,\n showPODTutorial: false,\n showPODSettingsPopup: false,\n showedPODCallout: RwPrefUtils.showedPODCallout,\n showPODCallout: false,\n },\n getters: {\n showProofOfDelivery(state): boolean {\n return state.showProofOfDelivery;\n },\n\n proofOfDelivery(state): PODDefaultSettings {\n return state.proofOfDelivery;\n },\n\n showPODTutorial(state): boolean {\n return state.showPODTutorial;\n },\n\n showPODSettingsPopup(state): boolean {\n return state.showPODSettingsPopup;\n },\n\n showedPODCallout(state): boolean {\n return state.showedPODCallout;\n },\n\n showPODCallout(state): boolean {\n return state.showPODCallout;\n },\n },\n actions: {\n showProofOfDelivery({state, commit}, showProofOfDelivery: boolean) {\n commit(\"SHOW_PROOF_OF_DELIVERY\", showProofOfDelivery);\n },\n\n proofOfDelivery({state, commit}, val: PODDefaultSettings) {\n commit(\"PROOF_OF_DELIVERY\", val);\n },\n\n showPODTutorial({state, commit}, val: boolean) {\n commit(\"SHOW_POD_TUTORIAL\", val);\n },\n\n showPODSettingsPopup({state, commit}, val: boolean) {\n commit(\"SHOW_POD_SETTINGS_POPUP\", val);\n },\n\n showedPODCallout({state, commit}, val: boolean) {\n commit(\"SHOWED_POD_CALLOUT\", val);\n },\n\n showPODCallout({state, commit}, val: boolean) {\n commit(\"SHOW_POD_CALLOUT\", val);\n },\n },\n mutations: {\n SHOW_PROOF_OF_DELIVERY(state, val: boolean) {\n state.showProofOfDelivery = val;\n },\n\n PROOF_OF_DELIVERY(state, val: PODDefaultSettings) {\n state.proofOfDelivery = val;\n },\n\n SHOW_POD_TUTORIAL(state, val: boolean) {\n state.showPODTutorial = val;\n },\n\n SHOW_POD_SETTINGS_POPUP(state, val: boolean) {\n state.showPODSettingsPopup = val;\n },\n\n SHOWED_POD_CALLOUT(state, val: boolean) {\n state.showedPODCallout = val;\n },\n\n SHOW_POD_CALLOUT(state, val: boolean) {\n state.showPODCallout = val;\n },\n }\n};\n\nexport default podModule;\n","import Vue from \"vue\";\nimport Vuex from \"vuex\";\nimport {RwRoute} from \"@/app/dem/RwRoute\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwAvatarInfo, RwUser} from \"@/app/dem/RwUser\";\nimport {RwPin} from '@/app/dem/RwPin';\nimport {RwHistory} from \"@/app/dem/RwHistory\";\nimport {RwStep} from \"@/app/dem/RwStep\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwSearchResult} from \"@/app/dem/RwSearchResult\";\nimport RwGenericDialog from \"@/app/utils/RwGenericDialog\";\nimport {RwPinTypes, VersionOutdatedEnum} from \"@/app/RwEnums\";\n\nimport SubTeamsModule from '@/store/subTeamsModule';\nimport UploadModule from \"@/store/uploadModule\";\nimport ReportsModule from \"@/store/reportsModule\";\nimport AdminModule from \"@/store/adminModule\";\nimport DialogModule from \"@/store/dialogModule\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport PurchModule from \"@/store/purchModule\";\nimport OnboardModule from \"@/store/onboardModule\";\nimport PODModule from \"@/store/podModule\";\n\nVue.use(Vuex);\n\nexport default new Vuex.Store({\n\n modules: {\n subTeams: SubTeamsModule,\n uploads: UploadModule,\n reports: ReportsModule,\n admin: AdminModule,\n dialog: DialogModule,\n purch: PurchModule,\n onboard: OnboardModule,\n pod: PODModule\n },\n state: {\n loading: false,\n isDataLoaded: false,\n activeRoute: null,\n selectedRoute: null,\n routeToEdit: null,\n selectedRouteSpace: null,\n selectedRoutes: [],\n routes: new Array(),\n hist: new Array(),\n sites: new Array(),\n tasks: new Array(),\n drivers: new Array(),\n skeds: new Array(),\n openRoutes: new Array(),\n isDarkMode: RwPrefUtils.rwTheme === \"rwDark\",\n isSimpleMap: RwPrefUtils.isSimpleMap,\n isTeam: RwPrefUtils.isTeam,\n isAutoRenewing: RwPrefUtils.isAutoRenewing,\n isProMonthly: RwPrefUtils.isProMonthly,\n isFlexSolo: RwPrefUtils.isFlexSolo,\n flexDisplay: RwPrefUtils.flexDisplay,\n isDisp: RwPrefUtils.isDisp,\n role: RwPrefUtils.role,\n isLoggedIn: RwPrefUtils.isLoggedIn,\n lastSyncMS: 0,\n lastDeltaMS: 0,\n lastStatusMS: 0,\n lastTokenMS: RwPrefUtils.lastTokenMS,\n driverLastSyncMS: 0,\n hasCurrPurch: RwPrefUtils.hasActiveSub,\n hasProBetaPrimed: RwPrefUtils.hasProBetaPrimed,\n updateStartPref: RwPrefUtils.updateStartPref,\n pinnedStatus: RwPrefUtils.pinnedStatus,\n token: RwPrefUtils.token,\n startPin: null,\n sitePins: new Array(),\n stopPins: new Array(),\n taskPins: new Array(),\n driverPins: new Array(),\n steps: new Array(),\n editAfterAdd: RwPrefUtils.editAfterAdd,\n editFromCopy: RwPrefUtils.editFromCopy,\n hidePingPopup: RwPrefUtils.hidePingPopup,\n hideDeletePopup: RwPrefUtils.hideDeletePopup,\n hideCreatePopup: RwPrefUtils.hideCreatePopup,\n hide450Popup: RwPrefUtils.hide450Popup,\n prompt450Popup: RwPrefUtils.prompt450Popup,\n warned450Popup: RwPrefUtils.warned450Popup,\n prompt500Popup: RwPrefUtils.prompt500Popup,\n hideTasksWarn: RwPrefUtils.hideTasksWarn,\n hideStopStatus: RwPrefUtils.hideStopStatus,\n\n hideCCPopup: RwPrefUtils.hideCCPopup,\n valCCPopup: RwPrefUtils.valCCPopup,\n warnedCCPopup: RwPrefUtils.warnedCCPopup,\n warnedCCPopupOverdue: RwPrefUtils.warnedCCPopupOverdue,\n\n //showEditDriver: RwPrefUtils.showEditDriver,\n showDriverEdit: false,\n driverEditInitDriver: null,\n\n showEditAvatar: RwPrefUtils.showEditAvatar,\n showEditDriverPass: RwPrefUtils.showEditDriverPass,\n showEditDriverUname: RwPrefUtils.showEditDriverUname,\n showReplaceDriver: RwPrefUtils.showReplaceDriver,\n showDeleteDriver: RwPrefUtils.showDeleteDriver,\n showCreateDriver: RwPrefUtils.showCreateDriver,\n showCreateBulkUser: RwPrefUtils.showCreateBulkUser,\n showDomainPopup: RwPrefUtils.showDomainPopup,\n showPingTest: RwPrefUtils.showPingTest,\n showDeletePrompt: RwPrefUtils.showDeletePrompt,\n showCreatePrompt: RwPrefUtils.showCreatePrompt,\n\n //showSkedEdit: RwPrefUtils.showSkedEdit,\n showSkedEdit: false,\n skedEditInitSked: null,\n\n showSkedCreate: RwPrefUtils.showSkedCreate,\n showProBetaPrimer: RwPrefUtils.showProBetaPrimer,\n showProfileEdit: RwPrefUtils.showProfileEdit,\n showLimitPopup: RwPrefUtils.showLimitPopup,\n // showUserSiteBanner: RwPrefUtils.showUserSiteBanner,\n hasClosedUserSiteBanner: RwPrefUtils.hasClosedUserSiteBanner,\n lastClosedPaymentBanner: RwPrefUtils.lastClosedPaymentBanner,\n showNewPass: RwPrefUtils.showNewPass,\n showRegistrationType: RwPrefUtils.showRegistrationType,\n showProToTeam: RwPrefUtils.showProToTeam,\n showCCExpire: RwPrefUtils.showCCExpire,\n // showSkedDelete: RwPrefUtils.showSkedDelete,\n // showEditDefault: RwPrefUtils.showEditDefault,\n // showStopDefault: RwPrefUtils.showStopDefault,\n // showTaskDefault: RwPrefUtils.showTaskDefault,\n // showSiteDefault: RwPrefUtils.showSiteDefault,\n // showOptDefault: RwPrefUtils.showOptDefault,\n // showTravelDefault: RwPrefUtils.showTravelDefault,\n // showOneWayDefault: RwPrefUtils.showOneWayDefault,\n // showAvoidsDefault: RwPrefUtils.showAvoidsDefault,\n // showUnitDefault: RwPrefUtils.showUnitDefault,\n // showSvcTimeDefault: RwPrefUtils.showSvcTimeDefault,\n // showRouteTimeDefault: RwPrefUtils.showRouteTimeDefault,\n // showCenterDefault: RwPrefUtils.showCenterDefault,\n // showStartDefault: RwPrefUtils.showStartDefault,\n selectedDriver: null,\n selectedSite: null,\n selectedSked: null,\n selectedStop: null,\n selectedTask: null,\n selectedPins: new Array(),\n multiMode: 0,\n multiModeTool: RwPrefUtils.planMultiModeTool,\n isMultiMode: false,\n mapShowTraffic: RwPrefUtils.mapShowTraffic,\n mapShowIncidents: RwPrefUtils.mapShowIncidents,\n mapShowSatellite: RwPrefUtils.mapShowSatellite,\n showDataLayers: false,\n showPanelStatus: RwPrefUtils.showPanelStatus,\n showPanelMap: RwPrefUtils.showPanelMap,\n showPanelList: RwPrefUtils.showPanelList,\n showPinPanel: RwPrefUtils.showPinPanel,\n showSearchPanel: false,\n highLightManual: 0,\n sizeDelta: 0,\n avInfo: {\n avInits: RwPrefUtils.avInits,\n avColor: RwPrefUtils.avColor,\n avType: RwPrefUtils.avType,\n avUrl: RwPrefUtils.avUrl,\n userId: RwPrefUtils.userId\n },\n // avUrl: RwPrefUtils.avUrl,\n // avType: RwPrefUtils.avType,\n // avColor: RwPrefUtils.avColor,\n // avInits: RwPrefUtils.avInits,\n showStopEdit: false,\n showHistoryEdit: false,\n\n showRouteEdit: false,\n routeEditInitRoute: null,\n\n showRouteAssign: false,\n showRouteCopy: false,\n // showRouteArchive: false,\n showRouteComplete: false,\n showRouteDelete: false,\n showSiteEdit: false,\n siteEditInitSite: null,\n showSiteCreate: false,\n // showSiteRelocate: false,\n // showSiteDelete: false,\n showSiteMultiColor: false,\n showTaskEdit: false,\n showPinPopup: false,\n showRouteOrder: false,\n showRouteSummary: false,\n showAddReport: false,\n showAddMissingReport: false,\n addReport: null,\n selectedSearchResult: null,\n searchReportInfo: [],\n showDataLayerRoute: RwPrefUtils.showDataLayerRoute,\n showDataLayerSites: RwPrefUtils.showDataLayerSites,\n showDataLayerTasks: RwPrefUtils.showDataLayerTasks,\n //showDataLayerDrivers: RwPrefUtils.showDataLayerDrivers,\n searchResultsWeb: [],\n searchResultsSites: [],\n searchResultsTasks: [],\n searchResultsCoords: [],\n snackBarText: \"\",\n snackBarColor: \"primary\",\n showSnackbar: false,\n showClusterPicker: false,\n selectedClusterPin: null,\n showStopPop: false,\n showStopDock: RwPrefUtils.showStopDock,\n showDriverPop: false,\n showDriverDock: RwPrefUtils.showDriverDock,\n showSitePop: false,\n showSiteDock: RwPrefUtils.showSiteDock,\n showSkedPop: false,\n showSkedDock: RwPrefUtils.showSkedDock,\n showRoutePop: false,\n showRouteDock: RwPrefUtils.showRouteDock,\n isOpenDrawer: RwPrefUtils.isOpenDrawer,\n showConfirm: false,\n confirmTitle: \"\",\n confirmBody: \"\",\n confirmPosText: \"\",\n confirmNegText: \"\",\n confirmDontShowCheck: false,\n confirmDontShowCallback: null,\n showMapOptions: false,\n isStopFiltered: RwPrefUtils.isStopFiltered,\n isSiteFiltered: RwPrefUtils.isSiteFiltered,\n isTaskFiltered: RwPrefUtils.isTaskFiltered,\n isDriverFiltered: RwPrefUtils.isDriverFiltered,\n refreshRouteTrigger: 0,\n showColorPicker: false,\n showAddRoutePicker: false,\n colorPickerInitColor: \"\",\n showVisitPicker: false,\n visitPickerInit: 1,\n showSkedPicker: false,\n skedPickerPriority: RwPrefUtils.skedPriority,\n skedPickerStart: RwPrefUtils.skedStartMins,\n skedPickerFinish: RwPrefUtils.skedFinishMins,\n showRoutePicker: false,\n routePickerSrcId: \"\",\n\n showReloPicker: false,\n reloPickerInitTitle: \"\",\n reloPickerInitLat: 0,\n reloPickerInitLng: 0,\n enableReloPickerSearch: false,\n reloPickerAddReport: false,\n\n showStatusPicker: false,\n statusPickerInitName: \"\",\n statusPickerInitStatus: 0,\n\n showAssignPicker: false,\n assignPickerInitRoute: null,\n stopEditInitStop: null,\n histEditInitHistory: null,\n showSearchOptions: false,\n\n stopColor: RwPrefUtils.stopColor,\n taskColor: RwPrefUtils.taskColor,\n siteColor: RwPrefUtils.siteColor,\n optMode: RwPrefUtils.optimizeType,\n travelMode: RwPrefUtils.travelMode,\n isRoundTrip: RwPrefUtils.isRoundTrip,\n avoids: RwPrefUtils.avoids,\n distUnits: RwPrefUtils.distUnits,\n visitTime: RwPrefUtils.visitTime,\n routeTime: RwPrefUtils.routeSpan,\n startLat: RwPrefUtils.startLat,\n startLng: RwPrefUtils.startLng,\n isDynPoint: RwPrefUtils.isDynPoint,\n startFriendlyName: RwPrefUtils.startFriendlyName,\n registerEmail: RwPrefUtils.registerEmail,\n skuInfosJson: RwPrefUtils.skuInfosJson,\n \n showRouteNew: false,\n routeNewInitEmpty: false,\n routeNewInitRoute: null,\n\n genericDialog: new RwGenericDialog(),\n centerMapData: {lat: 0, lng: 0},\n searchPinData: {pinType: RwPinTypes.Stop, lat: 0, lng: 0},\n showPlannerToolbar: true,\n mapCentroid: {lat: 0, lng: 0, zoom: 0},\n\n showInvalidPinBanner: false,\n invalidPinError: \"\",\n invalidPinIcon: \"\",\n\n previousPin: null,\n showDropSelect: false,\n stopDropOrigin: null,\n showDropRemove: false,\n showFlexOptIn: false,\n showOptInPostMessage: false,\n showStopsViolations: RwPrefUtils.showStopViolations || [],\n outdatedVersion: VersionOutdatedEnum.Current,\n showSiteRoutePicker: false,\n showTaskRoutePicker: false,\n showGenericRoutePicker: false,\n genericRoutePickerFilter: () => true,\n changePin: null,\n zoomLevel: 0,\n isMobileView: false,\n isTabletView: false,\n recentStopAdd: false,\n greedyTime: 0,\n greedyDist: 0\n },\n\n getters: {\n\n mapCentroid(state): { lat: number, lng: number, zoom: number } {\n return state.mapCentroid;\n },\n\n showRouteNew(state): boolean {\n return state.showRouteNew;\n },\n\n routeNewInitEmpty(state): boolean {\n return state.routeNewInitEmpty;\n },\n\n routeNewInitRoute(state): RwRoute {\n return state.routeNewInitRoute;\n },\n\n showSearchOptions(state): boolean {\n return state.showSearchOptions;\n },\n\n stopEditInitStop(state): RwStop {\n return state.stopEditInitStop;\n },\n\n histEditInitHistory(state): RwHistory {\n return state.histEditInitHistory;\n },\n\n showStatusPicker(state): boolean {\n return state.showStatusPicker;\n },\n\n statusPickerInitName(state): string {\n return state.statusPickerInitName;\n },\n\n statusPickerInitStatus(state): number {\n return state.statusPickerInitStatus;\n },\n\n showReloPicker(state): boolean {\n return state.showReloPicker;\n },\n\n reloPickerInitTitle(state): string {\n return state.reloPickerInitTitle;\n },\n\n reloPickerInitLat(state): number {\n return state.reloPickerInitLat;\n },\n\n reloPickerInitLng(state): number {\n return state.reloPickerInitLng;\n },\n\n enableReloPickerSearch(state): boolean {\n return state.enableReloPickerSearch;\n },\n\n reloPickerAddReport(state): boolean {\n return state.reloPickerAddReport;\n },\n\n selectedSearchResult(state): RwSearchResult {\n return state.selectedSearchResult\n },\n\n searchReportInfo(state): Array {\n return state.searchReportInfo\n },\n\n showRoutePicker(state): boolean {\n return state.showRoutePicker;\n },\n\n routePickerSrcId(state): string {\n return state.routePickerSrcId;\n },\n\n showSkedPicker(state): boolean {\n return state.showSkedPicker;\n },\n\n skedPickerPriority(state): number {\n return state.skedPickerPriority;\n },\n\n skedPickerStart(state): number {\n return state.skedPickerStart;\n },\n\n skedPickerFinish(state): number {\n return state.skedPickerFinish;\n },\n\n visitPickerInit(state): number {\n return state.visitPickerInit;\n },\n\n showVisitPicker(state): boolean {\n return state.showVisitPicker;\n },\n\n\n colorPickerInitColor(state): string {\n return state.colorPickerInitColor;\n },\n\n showColorPicker(state): boolean {\n return state.showColorPicker;\n },\n\n showAddRoutePicker(state): boolean {\n return state.showAddRoutePicker;\n },\n\n refreshRouteTrigger(state): number {\n return state.refreshRouteTrigger;\n },\n\n isStopFiltered(state): boolean {\n return state.isStopFiltered;\n },\n\n isSiteFiltered(state): boolean {\n return state.isSiteFiltered;\n },\n\n isTaskFiltered(state): boolean {\n return state.isTaskFiltered;\n },\n\n isDriverFiltered(state): boolean {\n return state.isDriverFiltered;\n },\n\n showMapOptions(state): boolean {\n return state.showMapOptions;\n },\n\n confirmTitle(state): string {\n return state.confirmTitle;\n },\n\n confirmBody(state): string {\n return state.confirmBody;\n },\n\n confirmPosText(state): string {\n return state.confirmPosText;\n },\n\n confirmNegText(state): string {\n return state.confirmNegText;\n },\n\n showConfirm(state): boolean {\n return state.showConfirm;\n },\n\n confirmDontShowCheck(state): boolean {\n return state.confirmDontShowCheck;\n },\n\n confirmDontShowCallback(state): Function | null {\n return state.confirmDontShowCallback;\n },\n\n isOpenDrawer(state): boolean {\n return state.isOpenDrawer;\n },\n\n selectedTask(state): RwStop {\n return state.selectedTask;\n },\n\n showStopDock(state): boolean {\n return state.showStopDock;\n },\n\n showStopPop(state): boolean {\n return state.showStopPop;\n },\n\n showDriverDock(state): boolean {\n return state.showDriverDock;\n },\n\n showDriverPop(state): boolean {\n return state.showDriverPop;\n },\n\n showRouteDock(state): boolean {\n return state.showRouteDock;\n },\n\n showRoutePop(state): boolean {\n return state.showRoutePop;\n },\n\n showSitePop(state): boolean {\n return state.showSitePop;\n },\n\n showSiteDock(state): boolean {\n return state.showSiteDock\n },\n\n showSkedPop(state): boolean {\n return state.showSkedPop\n },\n\n showSkedDock(state): boolean {\n return state.showSkedDock\n },\n\n selectedClusterPin(state): RwPin {\n return state.selectedClusterPin;\n },\n\n showClusterPicker(state): boolean {\n return state.showClusterPicker;\n },\n\n showAssignPicker(state): boolean {\n return state.showAssignPicker;\n },\n\n assignPickerInitRoute(state): RwRoute {\n return state.assignPickerInitRoute;\n },\n\n snackBarText(state): string {\n return state.snackBarText;\n },\n\n snackBarColor(state): string {\n return state.snackBarColor;\n },\n\n showSnackbar(state): boolean {\n return state.showSnackbar;\n },\n\n showRouteOrder(state): boolean {\n return state.showRouteOrder;\n },\n\n showRouteSummary(state): boolean {\n return state.showRouteSummary;\n },\n\n searchResultsWeb(state): RwSearchResult[] {\n return state.searchResultsWeb;\n },\n\n searchResultsSites(state): RwSearchResult[] {\n return state.searchResultsSites;\n },\n\n searchResultsTasks(state): RwSearchResult[] {\n return state.searchResultsTasks;\n },\n\n searchResultsCoords(state): RwSearchResult[] {\n return state.searchResultsCoords;\n },\n\n showDataLayerRoute(state): boolean {\n return state.showDataLayerRoute;\n },\n\n showDataLayerSites(state): boolean {\n return state.showDataLayerSites;\n },\n\n showDataLayerTasks(state): boolean {\n return state.showDataLayerTasks;\n },\n\n // showDataLayerDrivers(state): boolean{\n // return state.showDataLayerDrivers;\n // },\n\n selectedStop(state): RwStop {\n return state.selectedStop;\n },\n\n showTaskEdit(state): boolean {\n return state.showTaskEdit;\n },\n\n isDataLoaded(state): boolean {\n //console.warn(\"store get isDataLoaded\", state.isDataLoaded);\n return state.isDataLoaded;\n },\n\n tasks(state): RwStop[] {\n return state.tasks;\n },\n\n taskPins(state): RwPin[] {\n return state.taskPins;\n },\n\n showRouteEdit(state): boolean {\n return state.showRouteEdit;\n },\n\n routeEditInitRoute(state): RwSked {\n return state.routeEditInitRoute;\n },\n\n showRouteAssign(state): boolean {\n return state.showRouteAssign;\n },\n\n showRouteCopy(state): boolean {\n return state.showRouteCopy;\n },\n\n // showRouteArchive(state): boolean{\n // return state.showRouteArchive;\n // },\n\n showRouteComplete(state): boolean {\n return state.showRouteComplete;\n },\n\n // showRouteDelete(state): boolean{\n // return state.showRouteDelete;\n // },\n\n // showRouteComplete(state): boolean{\n // return state.showRouteComplete;\n // },\n\n\n steps(state): RwStep[] {\n return state.steps;\n },\n\n showPinPanel(state): boolean {\n return state.showPinPanel;\n },\n\n showPinPopup(state): boolean {\n return state.showPinPopup;\n },\n\n // showDriverPanel(state): boolean{\n // return state.showDriverPanel;\n // },\n //\n // showDriverPopup(state): boolean{\n // return state.showDriverPopup;\n // },\n\n showStopEdit(state): boolean {\n return state.showStopEdit;\n },\n\n showHistoryEdit(state): boolean {\n return state.showHistoryEdit;\n },\n\n showSiteEdit(state): boolean {\n return state.showSiteEdit;\n },\n showAddReport(state): boolean {\n return state.showAddReport;\n },\n showAddMissingReport(state): boolean {\n return state.showAddMissingReport;\n },\n addReport(state): RwAddReport {\n return state.addReport;\n },\n\n siteEditInitSite(state): RwSite {\n return state.siteEditInitSite;\n },\n\n // showSiteRelocate(state):boolean{\n // return state.showSiteRelocate;\n // },\n\n // showSiteDelete(state): boolean{\n // return state.showSiteDelete;\n // },\n\n showSiteCreate(state): boolean {\n return state.showSiteCreate;\n },\n\n showSiteMultiColor(state): boolean {\n return state.showSiteMultiColor;\n },\n\n showEditDriverPass(state): boolean {\n return state.showEditDriverPass;\n },\n\n showEditDriverUname(state): boolean {\n return state.showEditDriverUname;\n },\n\n showReplaceDriver(state): boolean {\n return state.showReplaceDriver;\n },\n\n showDeleteDriver(state): boolean {\n return state.showDeleteDriver;\n },\n\n showCreateDriver(state): boolean {\n return state.showCreateDriver;\n },\n\n showCreateBulkUser(state): boolean {\n return state.showCreateBulkUser;\n },\n\n showDomainPopup(state): boolean {\n return state.showDomainPopup;\n },\n\n showPingTest(state): boolean {\n return state.showPingTest;\n },\n\n showDeletePrompt(state): boolean {\n return state.showDeletePrompt;\n },\n\n showCreatePrompt(state): boolean {\n return state.showCreatePrompt;\n },\n\n avInfo(state): RwAvatarInfo {\n return state.avInfo;\n },\n //\n // avUrl(state): string{\n // return state.avUrl;\n // },\n //\n // avType(state): number{\n // return state.avType;\n // },\n //\n // avColor(state): string{\n // return state.avColor;\n // },\n //\n // avInits(state): string{\n // return state.avInits;\n // },\n\n editAfterAdd(state): boolean {\n return state.editAfterAdd;\n },\n\n editFromCopy(state): boolean {\n return state.editFromCopy;\n },\n\n hidePingPopup(state): boolean {\n return state.hidePingPopup;\n },\n\n hideDeletePopup(state): boolean {\n return state.hideDeletePopup;\n },\n\n hideCreatePopup(state): boolean {\n return state.hideCreatePopup;\n },\n\n hideCCPopup(state): boolean {\n return state.hideCCPopup;\n },\n\n valCCPopup(state): number {\n return state.valCCPopup;\n },\n\n warnedCCPopup(state): string[] {\n return state.warnedCCPopup;\n },\n\n warnedCCPopupOverdue(state): string[] {\n return state.warnedCCPopupOverdue;\n },\n\n hide450Popup(state): boolean {\n return state.hide450Popup;\n },\n\n prompt450Popup(state): string[] {\n return state.prompt450Popup;\n },\n\n warned450Popup(state): string[] {\n return state.warned450Popup;\n },\n\n prompt500Popup(state): string[] {\n return state.prompt500Popup;\n },\n\n hideTasksWarn(state): boolean {\n return state.hideTasksWarn;\n },\n\n hideStopStatus(state): boolean {\n return state.hideStopStatus;\n },\n\n showDriverEdit(state): boolean {\n return state.showDriverEdit;\n },\n\n driverEditInitDriver(state): RwUser {\n return state.driverEditInitDriver;\n },\n\n showSkedEdit(state): boolean {\n return state.showSkedEdit;\n },\n\n skedEditInitSked(state): RwSked {\n return state.skedEditInitSked;\n },\n\n showSkedCreate(state): boolean {\n return state.showSkedCreate;\n },\n\n // showSkedDelete(state):boolean{\n // return state.showSkedDelete;\n // },\n\n showProBetaPrimer(state): boolean {\n return state.showProBetaPrimer;\n },\n\n showProfileEdit(state): boolean {\n return state.showProfileEdit;\n },\n\n showLimitPopup(state): boolean {\n return state.showLimitPopup;\n },\n\n showNewPass(state): boolean {\n return state.showNewPass;\n },\n\n // showUserSiteBanner(state):boolean{\n // return state.showUserSiteBanner;\n // },\n\n hasClosedUserSiteBanner(state): boolean {\n return state.hasClosedUserSiteBanner;\n },\n lastClosedPaymentBanner(state): Date {\n return state.lastClosedPaymentBanner;\n },\n\n showRegistrationType(state): boolean {\n return state.showRegistrationType;\n },\n\n showProToTeam(state): boolean {\n return state.showProToTeam;\n },\n\n showCCExpire(state): boolean {\n return state.showCCExpire;\n },\n\n showEditAvatar(state): boolean {\n return state.showEditAvatar;\n },\n\n selectedRoute(state): RwRoute {\n return state.selectedRoute;\n },\n\n routeToEdit(state): RwRoute {\n return state.routeToEdit;\n },\n\n selectedRouteSpace(state): RwRoute {\n return state.selectedRouteSpace;\n },\n\n selectedRoutes(state): RwRoute[] {\n return state.selectedRoutes;\n },\n\n selectedSite(state): RwSite {\n return state.selectedSite;\n },\n\n selectedSked(state): RwSked {\n return state.selectedSked;\n },\n\n hist(state): RwHistory[] {\n return state.hist;\n },\n\n selectedDriver(state): RwUser {\n return state.selectedDriver;\n },\n\n highLightManual(state): number {\n return state.highLightManual;\n },\n\n showPanelStatus(state): boolean {\n return state.showPanelStatus;\n },\n\n showPanelMap(state): boolean {\n return state.showPanelMap;\n },\n\n showPanelList(state): boolean {\n return state.showPanelList;\n },\n\n showSearchPanel(state): boolean {\n return state.showSearchPanel;\n },\n\n showDataLayers(state): boolean {\n return state.showDataLayers;\n },\n\n mapShowSatellite(state): boolean {\n return state.mapShowSatellite;\n },\n\n mapShowTraffic(state): boolean {\n return state.mapShowTraffic;\n },\n\n mapShowIncidents(state): boolean {\n return state.mapShowIncidents;\n },\n\n multiMode(state): number {\n return state.multiMode;\n },\n\n multiModeTool(state): number {\n return state.multiModeTool;\n },\n\n isMultiMode(state): boolean {\n return state.isMultiMode;\n },\n\n sizeDelta(state): number {\n return state.sizeDelta;\n },\n\n selectedPins(state): RwPin[] {\n return state.selectedPins;\n },\n\n stopPins(state): RwPin[] {\n return state.stopPins;\n },\n\n sitePins(state): RwPin[] {\n return state.sitePins;\n },\n\n driverPins(state): RwPin[] {\n return state.driverPins;\n },\n\n startPin(state): RwPin {\n return state.startPin;\n },\n\n // pinList(state): RwPin[] {\n // return state.pinList;\n // },\n\n activeRoute(state): RwRoute {\n return state.activeRoute;\n },\n\n openRoutes(state): RwRoute[] {\n return state.openRoutes;\n },\n\n routes(state): RwRoute[] {\n let routes: RwRoute[] = [];\n if (state.routes) {\n routes = state.routes;\n }\n return routes;\n },\n\n sites(state): RwSite[] {\n return state.sites;\n },\n\n skeds(state): RwSked[] {\n return state.skeds;\n },\n\n drivers(state): RwUser[] {\n return state.drivers;\n },\n\n isDarkMode(state): boolean {\n return state.isDarkMode;\n },\n\n isLoading(state): boolean {\n return state.loading;\n },\n\n hasCurrPurch(state): boolean {\n return state.hasCurrPurch;\n },\n\n hasProBetaPrimed(state): boolean {\n return state.hasProBetaPrimed;\n },\n\n updateStartPref(state): number {\n return state.updateStartPref;\n },\n\n pinnedStatus(state): string[] {\n return state.pinnedStatus;\n },\n\n\n token(state): string {\n return state.token;\n },\n\n isLoggedIn(state): boolean {\n return state.isLoggedIn;\n },\n\n lastSyncMS(state): number {\n return state.lastSyncMS;\n },\n\n lastDeltaMS(state): number {\n return state.lastDeltaMS;\n },\n\n driverLastSyncMS(state): number {\n return state.driverLastSyncMS;\n },\n\n lastStatusMS(state): number {\n return state.lastStatusMS;\n },\n\n lastTokenMS(state): number {\n return state.lastTokenMS;\n },\n\n isTeam(state): boolean {\n return state.isTeam;\n },\n\n isAutoRenewing(state): boolean {\n return state.isAutoRenewing;\n },\n\n isProMonthly(state): boolean {\n return state.isProMonthly;\n },\n\n isFlexSolo(state): boolean {\n return state.isFlexSolo;\n },\n\n flexDisplay(state): number {\n return state.flexDisplay;\n },\n\n isDisp(state): boolean {\n return state.isDisp;\n },\n\n getRole(state): number {\n return state.role;\n },\n\n isSimpleMap(state): boolean {\n return state.isSimpleMap;\n },\n\n stopColor(state): string {\n return state.stopColor;\n },\n\n taskColor(state): string {\n return state.taskColor;\n },\n\n siteColor(state): string {\n return state.siteColor;\n },\n\n optMode(state): number {\n return state.optMode;\n },\n\n travelMode(state): string {\n return state.travelMode;\n },\n\n isRoundTrip(state): boolean {\n return state.isRoundTrip;\n },\n\n avoids(state): string[] {\n return state.avoids;\n },\n\n distUnits(state): number {\n return state.distUnits;\n },\n\n visitTime(state): number {\n return state.visitTime;\n },\n\n routeTime(state): number {\n return state.routeTime;\n },\n\n startLat(state): number {\n return state.startLat;\n },\n\n startLng(state): number {\n return state.startLng;\n },\n\n isDynPoint(state): boolean {\n return state.isDynPoint;\n },\n\n startFriendlyName(state): string {\n return state.startFriendlyName;\n },\n\n registerEmail(state): string {\n return state.registerEmail;\n },\n\n skuInfosJson(state): string {\n return state.skuInfosJson;\n },\n\n genericDialog(state): RwGenericDialog {\n return state.genericDialog;\n },\n\n centerMapData(state): { lat: number, lng: number } {\n return state.centerMapData;\n },\n\n searchPinData(state): { pinType: RwPinTypes, lat: number, lng: number } {\n return state.searchPinData;\n },\n\n showPlannerToolbar(state): boolean {\n return state.showPlannerToolbar;\n },\n\n showInvalidPinBanner(state) {\n return state.showInvalidPinBanner;\n },\n\n invalidPinError(state) {\n return state.invalidPinError;\n },\n\n invalidPinIcon(state) {\n return state.invalidPinIcon;\n },\n\n previousPin(state) {\n return state.previousPin;\n },\n\n showDropSelect(state) {\n return state.showDropSelect;\n },\n\n stopDropOrigin(state) {\n return state.stopDropOrigin;\n },\n\n showDropRemove(state) {\n return state.showDropRemove;\n },\n\n showFlexOptIn(state) {\n return state.showFlexOptIn;\n },\n showOptInPostMessage(state) {\n return state.showOptInPostMessage;\n },\n\n showStopsViolations(state) {\n return state.showStopsViolations;\n },\n\n outdatedVersion(state) {\n return state.outdatedVersion;\n },\n\n showSiteRoutePicker(state) {\n return state.showSiteRoutePicker;\n },\n\n showTaskRoutePicker(state) {\n return state.showTaskRoutePicker;\n },\n\n showGenericRoutePicker(state) {\n return state.showGenericRoutePicker;\n },\n\n genericRoutePickerFilter(state) {\n return state.genericRoutePickerFilter;\n },\n\n changePin(state): RwPin {\n return state.changePin\n },\n\n zoomLevel(state): number {\n return state.zoomLevel;\n },\n\n isMobileView(state) {\n return state.isMobileView;\n },\n\n isTabletView(state) {\n return state.isTabletView;\n },\n\n recentStopAdd(state): boolean {\n return state.recentStopAdd;\n },\n\n greedyTime(state): number {\n return state.greedyTime;\n },\n\n greedyDist(state): number {\n return state.greedyDist;\n }\n\n },\n\n actions: {\n\n mapCentroid({state, commit}, val: { lat: number, lng: number, zoom: number }) {\n commit(\"MAP_CENTROID\", val);\n },\n\n showRouteNew({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_NEW\", val);\n },\n\n routeNewInitEmpty({state, commit}, val: boolean) {\n commit(\"ROUTE_NEW_INIT_EMPTY\", val);\n },\n\n routeNewInitRoute({state, commit}, val: RwRoute) {\n commit(\"ROUTE_NEW_INIT_ROUTE\", val);\n },\n\n showSearchOptions({state, commit}, val: boolean) {\n commit(\"SHOW_SEARCH_OPTIONS\", val);\n },\n\n stopEditInitStop({state, commit}, val: RwStop) {\n commit(\"STOP_EDIT_INIT_STOP\", val);\n },\n\n histEditInitHistory({state, commit}, val: RwHistory) {\n commit(\"HIST_EDIT_INIT_HISTORY\", val);\n },\n\n showStatusPicker({state, commit}, val: boolean) {\n commit(\"SHOW_STATUS_PICKER\", val);\n },\n\n statusPickerInitName({state, commit}, val: string) {\n commit(\"STATUS_PICKER_INIT_NAME\", val);\n },\n\n statusPickerInitStatus({state, commit}, val: number) {\n commit(\"STATUS_PICKER_INIT_STATUS\", val);\n },\n\n showReloPicker({state, commit}, val: boolean) {\n commit(\"SHOW_RELO_PICKER\", val);\n },\n\n reloPickerInitTitle({state, commit}, val: string) {\n commit(\"RELO_PICKER_INIT_TITLE\", val);\n },\n\n reloPickerInitLat({state, commit}, val: number) {\n commit(\"RELO_PICKER_INIT_LAT\", val);\n },\n\n reloPickerInitLng({state, commit}, val: number) {\n commit(\"RELO_PICKER_INIT_LNG\", val);\n },\n\n enableReloPickerSearch({state, commit}, val: boolean) {\n commit(\"ENABLE_RELO_PICKER_SEARCH\", val);\n },\n\n reloPickerAddReport({state, commit}, val: boolean) {\n commit(\"RELO_PICKER_ADD_REPORT\", val);\n },\n\n selectedSearchResult({state, commit}, val: RwSearchResult) {\n commit(\"SELECTED_SEARCH_RESULT\", val);\n },\n\n searchReportInfo({state, commit}, val: Array) {\n commit(\"SEARCH_REPORT_INFO\", val);\n },\n\n showRoutePicker({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_PICKER\", val);\n },\n\n routePickerSrcId({state, commit}, val: string) {\n commit(\"ROUTE_PICKER_ROUTE_ID\", val);\n },\n\n showSkedPicker({state, commit}, val: boolean) {\n commit(\"SHOW_SKED_PICKER\", val);\n },\n\n skedPickerPriority({state, commit}, val: number) {\n commit(\"SKED_PICKER_PRIORITY\", val);\n },\n\n skedPickerStart({state, commit}, val: number) {\n commit(\"SKED_PICKER_START\", val);\n },\n\n skedPickerFinish({state, commit}, val: number) {\n commit(\"SKED_PICKER_FINISH\", val);\n },\n\n showVisitPicker({state, commit}, val: boolean) {\n commit(\"SHOW_VISIT_PICKER\", val);\n },\n\n visitPickerInit({state, commit}, val: number) {\n commit(\"VISIT_PICKER_INIT\", val);\n },\n\n colorPickerInitColor({state, commit}, val: string) {\n commit(\"COLOR_PICKER_INIT_COLOR\", val);\n },\n\n showColorPicker({state, commit}, val: boolean) {\n commit(\"SHOW_COLOR_PICKER\", val);\n },\n\n showAddRoutePicker({state, commit}, val: boolean) {\n commit(\"SHOW_ADD_ROUTE_PICKER\", val);\n },\n\n refreshRouteTrigger({state, commit}, val: number) {\n commit(\"REFRESH_ROUTE_TRIGGER\", val);\n },\n\n isStopFiltered({state, commit}, val: boolean) {\n commit(\"IS_STOP_FILTERED\", val);\n },\n\n isSiteFiltered({state, commit}, val: boolean) {\n commit(\"IS_SITE_FILTERED\", val);\n },\n\n isTaskFiltered({state, commit}, val: boolean) {\n commit(\"IS_TASK_FILTERED\", val);\n },\n\n isDriverFiltered({state, commit}, val: boolean) {\n commit(\"IS_DRIVER_FILTERED\", val);\n },\n\n showMapOptions({state, commit}, val: boolean) {\n commit(\"SHOW_MAP_OPTIONS\", val);\n },\n\n confirmTitle({state, commit}, val: string) {\n commit(\"CONFIRM_TITLE\", val);\n },\n\n confirmBody({state, commit}, val: string) {\n commit(\"CONFIRM_BODY\", val);\n },\n\n confirmPosText({state, commit}, val: string) {\n commit(\"CONFIRM_POS_TEXT\", val);\n },\n\n confirmNegText({state, commit}, val: string) {\n commit(\"CONFIRM_NEG_TEXT\", val);\n },\n\n\n showConfirm({state, commit}, val: boolean) {\n commit(\"SHOW_CONFIRM\", val);\n },\n\n confirmDontShowCheck({state, commit}, val: boolean) {\n commit(\"CONFIRM_DONT_SHOW_CHECK\", val);\n },\n\n confirmDontShowCallback({state, commit}, val: Function | null) {\n commit(\"CONFIRM_DONT_SHOW_CALLBACK\", val);\n },\n\n isOpenDrawer({state, commit}, val: boolean) {\n commit(\"IS_OPEN_DRAWER\", val);\n },\n\n selectedTask({state, commit}, val: RwStop) {\n commit(\"SELECTED_TASK\", val);\n },\n\n showStopDock({state, commit}, val: boolean) {\n commit(\"SHOW_STOP_DOCK\", val);\n },\n\n showStopPop({state, commit}, val: boolean) {\n commit(\"SHOW_STOP_POP\", val);\n },\n\n showDriverDock({state, commit}, val: boolean) {\n commit(\"SHOW_DRIVER_DOCK\", val);\n },\n\n showDriverPop({state, commit}, val: boolean) {\n commit(\"SHOW_DRIVER_POP\", val);\n },\n\n showRouteDock({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_DOCK\", val);\n },\n\n showRoutePop({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_POP\", val);\n },\n\n showAddReport({state, commit}, val: boolean) {\n commit(\"SHOW_ADD_REPORT\", val);\n },\n showAddMissingReport({state, commit}, val: boolean) {\n commit(\"SHOW_ADD_MISSING_REPORT\", val);\n },\n\n addReport({state, commit}, val: RwAddReport) {\n commit(\"ADD_REPORT\", val);\n },\n\n showSiteDock({state, commit}, val: boolean) {\n commit(\"SHOW_SITE_DOCK\", val);\n },\n\n showSitePop({state, commit}, val: boolean) {\n commit(\"SHOW_SITE_POP\", val);\n },\n\n\n showSkedDock({state, commit}, val: boolean) {\n commit(\"SHOW_SKED_DOCK\", val);\n },\n\n showSkedPop({state, commit}, val: boolean) {\n commit(\"SHOW_SKED_POP\", val);\n },\n\n selectedClusterPin({state, commit}, val: RwPin) {\n commit(\"SELECTED_CLUSTER_PIN\", val);\n },\n\n showClusterPicker({state, commit}, val: boolean) {\n commit(\"SHOW_CLUSTER_PICKER\", val);\n },\n\n showAssignPicker({state, commit}, val: boolean) {\n commit(\"SHOW_ASSIGN_PICKER\", val);\n },\n\n assignPickerInitRoute({state, commit}, val: RwRoute) {\n commit(\"ASSIGN_PICKER_INIT_ROUTE\", val);\n },\n\n snackBarText({state, commit}, val: string) {\n commit(\"SNACK_BAR_TEXT\", val);\n },\n\n snackBarColor({state, commit}, val: string) {\n commit(\"SNACK_BAR_COLOR\", val);\n },\n\n showSnackbar({state, commit}, val: boolean) {\n commit(\"SHOW_SNACK_BAR\", val);\n },\n\n showRouteOrder({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_ORDER\", val);\n },\n\n showRouteSummary({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_SUMMARY\", val);\n },\n\n searchResultsWeb({state, commit}, val: RwSearchResult[]) {\n commit(\"SEARCH_RESULTS_WEB\", val);\n },\n\n searchResultsSites({state, commit}, val: RwSearchResult[]) {\n commit(\"SEARCH_RESULTS_SITES\", val);\n },\n\n searchResultsTasks({state, commit}, val: RwSearchResult[]) {\n commit(\"SEARCH_RESULTS_TASKS\", val);\n },\n\n searchResultsCoords({state, commit}, val: RwSearchResult[]) {\n commit(\"SEARCH_RESULTS_COORDS\", val);\n },\n\n showDataLayerRoute({state, commit}, val: boolean) {\n commit(\"SHOW_DATA_LAYER_ROUTE\", val);\n },\n\n showDataLayerSites({state, commit}, val: boolean) {\n commit(\"SHOW_DATA_LAYER_SITES\", val);\n },\n\n showDataLayerTasks({state, commit}, val: boolean) {\n commit(\"SHOW_DATA_LAYER_TASKS\", val);\n },\n\n // showDataLayerDrivers({state, commit}, val: boolean) {\n // commit(\"SHOW_DATA_LAYER_DRIVERS\", val);\n // },\n\n\n selectedStop({state, commit}, val: RwStop) {\n commit(\"SELECTED_STOP\", val);\n },\n\n showTaskEdit({state, commit}, val: boolean) {\n commit(\"SHOW_TASK_EDIT\", val);\n },\n\n isDataLoaded({state, commit}, val: boolean) {\n //console.warn(\"store set isDataLoaded\", val);\n commit(\"IS_DATA_LOADED\", val);\n },\n\n tasks({state, commit}, val: RwStop[]) {\n commit(\"TASKS\", val);\n },\n\n taskPins({state, commit}, val: RwPin[]) {\n commit(\"TASK_PINS\", val);\n },\n\n\n showRouteAssign({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_ASSIGN\", val);\n },\n\n showRouteCopy({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_COPY\", val);\n },\n\n\n showRouteComplete({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_COMPLETE\", val);\n },\n\n showRouteDelete({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_DELETE\", val);\n },\n\n showRouteEdit({state, commit}, val: boolean) {\n commit(\"SHOW_ROUTE_EDIT\", val);\n },\n\n routeEditInitRoute({state, commit}, val: RwSked) {\n commit(\"ROUTE_EDIT_INIT_ROUTE\", val);\n },\n\n\n steps({state, commit}, val: RwStep[]) {\n commit(\"STEPS\", val);\n },\n\n showPinPanel({state, commit}, val: boolean) {\n commit(\"SHOW_PREVIEW_PANEL\", val);\n },\n\n showPinPopup({state, commit}, val: boolean) {\n commit(\"SHOW_PREVIEW_POPUP\", val);\n },\n //\n // showDriverPanel({state, commit}, val: boolean) {\n // commit(\"SHOW_DRIVER_PANEL\", val);\n // },\n //\n // showDriverPopup({state, commit}, val: boolean) {\n // commit(\"SHOW_DRIVER_POPUP\", val);\n // },\n\n showStopEdit({state, commit}, val: boolean) {\n commit(\"SHOW_STOP_EDIT\", val);\n },\n\n showHistoryEdit({state, commit}, val: boolean) {\n commit(\"SHOW_HISTORY_EDIT\", val);\n },\n\n showSiteEdit({state, commit}, val: boolean) {\n commit(\"SHOW_SITE_EDIT\", val);\n },\n\n siteEditInitSite({state, commit}, val: RwSite) {\n commit(\"SITE_EDIT_INIT_SITE\", val);\n },\n\n // showSiteRelocate({state,commit}, val:boolean) {\n // commit(\"SHOW_SITE_RELOCATE\", val);\n // },\n\n // showSiteDelete({state, commit}, val: boolean) {\n // commit(\"SHOW_SITE_DELETE\", val);\n // },\n\n showSiteCreate({state, commit}, val: boolean) {\n commit(\"SHOW_SITE_CREATE\", val);\n },\n\n showSiteMultiColor({state, commit}, val: boolean) {\n commit(\"SHOW_SITE_MULTI_COLOR\", val);\n },\n\n showEditDriverPass({state, commit}, val: boolean) {\n commit(\"SHOW_EDIT_DRIVER_PASS\", val);\n },\n\n showEditDriverUname({state, commit}, val: boolean) {\n commit(\"SHOW_EDIT_DRIVER_UNAME\", val);\n },\n\n showReplaceDriver({state, commit}, val: boolean) {\n commit(\"SHOW_REPLACE_DRIVER\", val);\n },\n\n showDeleteDriver({state, commit}, val: boolean) {\n commit(\"SHOW_DELETE_DRIVER\", val);\n },\n\n showCreateDriver({state, commit}, val: boolean) {\n commit(\"SHOW_CREATE_DRIVER\", val);\n },\n\n showCreateBulkUser({state, commit}, val: boolean) {\n commit(\"SHOW_CREATE_BULK_USER\", val);\n },\n\n showDomainPopup({state, commit}, val: boolean) {\n commit(\"SHOW_DOMAIN_POPUP\", val);\n },\n\n showPingTest({state, commit}, val: boolean) {\n commit(\"SHOW_PING_TEST\", val);\n },\n\n showDeletePrompt({state, commit}, val: boolean) {\n commit(\"SHOW_DELETE_PROMPT\", val);\n },\n\n showCreatePrompt({state, commit}, val: boolean) {\n commit(\"SHOW_CREATE_PROMPT\", val);\n },\n\n avInfo({state, commit}, val: RwAvatarInfo) {\n commit(\"AV_INFO\", val);\n },\n //\n // avUrl({state, commit}, val: string) {\n // commit(\"AV_URL\", val);\n // },\n //\n // avType({state, commit}, val: number) {\n // commit(\"AV_TYPE\", val);\n // },\n //\n // avColor({state, commit}, val: string) {\n // commit(\"AV_COLOR\", val);\n // },\n //\n // avInits({state, commit}, val: string) {\n // commit(\"AV_INITS\", val);\n // },\n\n editAfterAdd({state, commit}, val: boolean) {\n commit(\"EDIT_AFTER_ADD\", val);\n },\n\n editFromCopy({state, commit}, val: boolean) {\n commit(\"EDIT_FROM_COPY\", val);\n },\n\n hidePingPopup({state, commit}, val: boolean) {\n commit(\"HIDE_PING_POPUP\", val);\n },\n\n hideDeletePopup({state, commit}, val: boolean) {\n commit(\"HIDE_DELETE_POPUP\", val);\n },\n\n hideCreatePopup({state, commit}, val: boolean) {\n commit(\"HIDE_CREATE_POPUP\", val);\n },\n\n hideCCPopup({state, commit}, val: boolean) {\n commit(\"HIDE_CC_POPUP\", val);\n },\n\n valCCPopup({state, commit}, val: number) {\n commit(\"VAL_CC_POPUP\", val);\n },\n\n warnedCCPopup({state, commit}, val: string[]) {\n commit(\"WARNED_CC_POPUP\", val);\n },\n\n warnedCCPopupOverdue({state, commit}, val: string[]) {\n commit(\"WARNED_CC_POPUP_OVERDUE\", val);\n },\n\n hide450Popup({state, commit}, val: boolean) {\n commit(\"HIDE_450_POPUP\", val);\n },\n\n prompt450Popup({state, commit}, val: string[]) {\n commit(\"PROMPT_450_POPUP\", val);\n },\n\n warned450Popup({state, commit}, val: string[]) {\n commit(\"WARNED_450_POPUP\", val);\n },\n\n prompt500Popup({state, commit}, val: string[]) {\n commit(\"PROMPT_500_POPUP\", val);\n },\n\n hideTasksWarn({state, commit}, val: boolean) {\n commit(\"HIDE_TASKS_WARN\", val);\n },\n\n hideStopStatus({state, commit}, val: boolean) {\n commit(\"HIDE_STOP_STATUS\", val);\n },\n\n showDriverEdit({state, commit}, val: boolean) {\n commit(\"SHOW_DRIVER_EDIT\", val);\n },\n\n driverEditInitDriver({state, commit}, val: RwUser) {\n commit(\"DRIVER_EDIT_INIT_DRIVER\", val);\n },\n\n showSkedEdit({state, commit}, val: boolean) {\n commit(\"SHOW_SKED_EDIT\", val);\n },\n\n skedEditInitSked({state, commit}, val: RwSked) {\n commit(\"SKED_EDIT_INIT_SKED\", val);\n },\n\n showSkedCreate({state, commit}, val: boolean) {\n commit(\"SHOW_SKED_CREATE\", val);\n },\n\n // showSkedDelete({state, commit}, val:boolean){\n // commit(\"SHOW_SKED_DELETE\", val);\n // },\n\n showProBetaPrimer({state, commit}, val: boolean) {\n commit(\"SHOW_PRO_BETA_PRIMER\", val);\n },\n\n showProfileEdit({state, commit}, val: boolean) {\n commit(\"SHOW_PROFILE_EDIT\", val);\n },\n\n showLimitPopup({state, commit}, val: boolean) {\n commit(\"SHOW_LIMIT_POPUP\", val);\n },\n\n showNewPass({state, commit}, val: boolean) {\n commit(\"SHOW_NEW_PASS\", val);\n },\n //\n // showUserSiteBanner({state, commit}, val:boolean) {\n // commit(\"SHOW_USER_SITE_BANNER\", val);\n // },\n\n hasClosedUserSiteBanner({state, commit}, val: boolean) {\n commit(\"HAS_CLOSED_USER_SITE_BANNER\", val);\n },\n\n lastClosedPaymentBanner({state, commit}, val: boolean) {\n commit(\"LAST_CLOSED_UPDATE_PAYMENT_BANNER\", val);\n },\n\n showRegistrationType({state, commit}, val: boolean) {\n commit(\"SHOW_REGISTRATION_TYPE\", val);\n },\n\n showProToTeam({state, commit}, val: boolean) {\n commit(\"SHOW_PRO_TO_TEAM\", val);\n },\n\n showCCExpire({state, commit}, val: boolean) {\n commit(\"SHOW_CC_EXPIRE\", val);\n },\n\n showEditAvatar({state, commit}, val: boolean) {\n commit(\"SHOW_EDIT_AVATAR\", val);\n },\n\n selectedRoute({state, commit}, val: RwRoute) {\n commit(\"SELECTED_ROUTE\", val);\n },\n\n routeToEdit({state, commit}, val: RwRoute) {\n commit(\"ROUTE_TO_EDIT\", val);\n },\n\n selectedRouteSpace({state, commit}, val: RwRoute) {\n commit(\"SELECTED_ROUTE_SPACE\", val);\n },\n\n selectedRoutes({state, commit}, val: RwRoute[]) {\n commit(\"SELECTED_ROUTES\", val);\n },\n\n selectedSite({state, commit}, val: RwSite) {\n commit(\"SELECTED_SITE\", val);\n },\n\n selectedSked({state, commit}, val: RwSked) {\n commit(\"SELECTED_SKED\", val)\n },\n\n hist({state, commit}, val: RwHistory[]) {\n commit(\"HIST\", val);\n },\n\n selectedDriver({state, commit}, val: RwUser) {\n commit(\"SELECTED_DRIVER\", val);\n },\n\n highLightManual({state, commit}, val: number) {\n commit(\"HIGHLIGHT_MANUAL\", val);\n },\n\n showPanelStatus({state, commit}, val: boolean) {\n commit(\"SHOW_PANEL_STATUS\", val);\n },\n\n showPanelMap({state, commit}, val: boolean) {\n commit(\"SHOW_PANEL_MAP\", val);\n },\n\n showPanelList({state, commit}, val: boolean) {\n commit(\"SHOW_PANEL_LIST\", val);\n },\n\n showSearchPanel({state, commit}, val: boolean) {\n commit(\"SHOW_SEARCH_PANEL\", val);\n },\n\n showDataLayers({state, commit}, val: boolean) {\n commit(\"SHOW_DATA_LAYERS\", val);\n },\n\n mapShowSatellite({state, commit}, val: boolean) {\n commit(\"MAP_SHOW_SATELLITE\", val);\n },\n\n\n mapShowTraffic({state, commit}, val: boolean) {\n commit(\"MAP_SHOW_TRAFFIC\", val);\n },\n\n mapShowIncidents({state, commit}, val: boolean) {\n commit(\"MAP_SHOW_INCIDENTS\", val);\n },\n\n routes({state, commit}, routes: RwRoute[]) {\n commit(\"ROUTES\", routes);\n },\n\n sites({state, commit}, sites: RwSite[]) {\n commit(\"SITES\", sites);\n },\n\n skeds({state, commit}, skeds: RwSked[]) {\n commit(\"SKEDS\", skeds);\n },\n\n drivers({state, commit}, drivers: RwUser[]) {\n commit(\"DRIVERS\", drivers);\n },\n\n setRoute({state, commit}, route: RwRoute) {\n route.invalidateCache();\n commit(\"ROUTE\", route);\n },\n\n activeRoute({state, commit}, route: RwRoute) {\n commit(\"ACTIVE_ROUTE\", route);\n },\n\n openRoutes({state, commit}, routes: RwRoute[]) {\n commit(\"OPEN_ROUTES\", routes);\n },\n\n isLoading({state, commit}, isLoading: boolean) {\n commit(\"IS_LOADING\", isLoading);\n },\n\n hasCurrPurch({state, commit}, hasCurrPurch: boolean) {\n commit(\"HAS_CURRENT_PURCHASE\", hasCurrPurch);\n },\n \n hasProBetaPrimed({state, commit}, hasOnboarded: boolean) {\n commit(\"HAS_PRO_BETA_PRIMED\", hasOnboarded);\n },\n\n updateStartPref({state, commit}, updateStartPref) {\n commit(\"UPDATE_START_PREF\", updateStartPref);\n },\n\n pinnedStatus({state, commit}, pinnedStatus: string[]) {\n commit(\"PINNED_STATUS\", pinnedStatus);\n },\n\n token({state, commit}, token: string) {\n commit(\"TOKEN\", token);\n },\n\n isDarkMode({state, commit}, isDarkVal) {\n commit(\"IS_DARK_MODE\", isDarkVal);\n },\n\n isLoggedIn({state, commit}, isLoggedIn) {\n commit(\"IS_LOGGED_IN\", isLoggedIn);\n },\n\n lastSyncMS({state, commit}, lastSyncMS) {\n commit(\"LAST_SYNC_MS\", lastSyncMS);\n },\n\n lastDeltaMS({state, commit}, lastDeltaMS) {\n commit(\"LAST_DELTA_MS\", lastDeltaMS);\n },\n\n driverLastSyncMS({state, commit}, driverLastSyncMS) {\n commit(\"DRIVER_LAST_SYNC_MS\", driverLastSyncMS);\n },\n\n lastStatusMS({state, commit}, lastStatusMS) {\n commit(\"LAST_STATUS_MS\", lastStatusMS);\n },\n\n lastTokenMS({state, commit}, lastTokenMS) {\n commit(\"LAST_TOKEN_MS\", lastTokenMS);\n },\n\n isTeam({state, commit}, isTeam: boolean) {\n commit(\"IS_TEAM\", isTeam);\n },\n\n isAutoRenewing({state, commit}, val: boolean) {\n commit(\"IS_AUTO_RENEWING\", val);\n },\n\n isProMonthly({state, commit}, val: boolean) {\n commit(\"IS_PRO_MONTHLY\", val);\n },\n\n isFlexSolo({state, commit}, val: boolean) {\n commit(\"IS_FLEX_SOLO\", val);\n },\n\n flexDisplay({state, commit}, val: number) {\n commit(\"FLEX_DISPLAY\", val);\n },\n\n isDisp({state, commit}, isDisp: boolean) {\n commit(\"IS_DISP\", isDisp);\n },\n\n isSimpleMap({state, commit}, val: boolean) {\n commit(\"IS_SIMPLE_MAP\", val);\n },\n\n setRole({state, commit}, role: number) {\n commit(\"SET_ROLE\", role);\n },\n\n stopPins({state, commit}, val: RwPin[]) {\n commit(\"STOP_PINS\", val);\n },\n\n sitePins({state, commit}, val: RwPin[]) {\n commit(\"SITE_PINS\", val);\n },\n\n startPin({state, commit}, val: RwPin) {\n commit(\"START_PIN\", val);\n },\n\n driverPins({state, commit}, val: RwPin[]) {\n commit(\"DRIVER_PINS\", val);\n },\n\n selectedPins({state, commit}, val: RwPin[]) {\n //console.log(\"selectedPins mutated\");\n commit(\"SELECTED_PINS\", val);\n },\n\n sizeDelta({state, commit}, val: number) {\n commit(\"SIZE_DELTA\", val);\n },\n\n isMultiMode({state, commit}, val: boolean) {\n commit(\"IS_MULTI_MODE\", val);\n },\n\n multiMode({state, commit}, val: number) {\n commit(\"MULTI_MODE\", val);\n },\n\n multiModeTool({state, commit}, val: number) {\n commit(\"MAP_SELECTOR\", val);\n },\n\n stopColor({state, commit}, val: string) {\n commit(\"STOP_COLOR\", val);\n },\n\n taskColor({state, commit}, val: string) {\n commit(\"TASK_COLOR\", val);\n },\n\n siteColor({state, commit}, val: string) {\n commit(\"SITE_COLOR\", val);\n },\n\n optMode({state, commit}, val: number) {\n commit(\"OPT_MODE\", val);\n },\n\n travelMode({state, commit}, val: string) {\n commit(\"TRAVEL_MODE\", val);\n },\n\n isRoundTrip({state, commit}, val: boolean) {\n commit(\"IS_ROUND_TRIP\", val);\n },\n\n avoids({state, commit}, val: string[]) {\n commit(\"AVOIDS\", val);\n },\n\n distUnits({state, commit}, val: number) {\n commit(\"DIST_UNITS\", val);\n },\n\n visitTime({state, commit}, val: number) {\n commit(\"VISIT_TIME\", val);\n },\n\n routeTime({state, commit}, val: number) {\n commit(\"ROUTE_TIME\", val);\n },\n\n startLat({state, commit}, val: number) {\n commit(\"START_LAT\", val);\n },\n\n startLng({state, commit}, val: number) {\n commit(\"START_LNG\", val);\n },\n\n isDynPoint({state, commit}, val: boolean) {\n commit(\"IS_DYN_POINT\", val);\n },\n\n startFriendlyName({state, commit}, val: string) {\n commit(\"START_FRIENDLY_NAME\", val);\n },\n\n registerEmail({state, commit}, val: string) {\n commit(\"REGISTER_EMAIL\", val);\n },\n\n skuInfosJson({state, commit}, val: string) {\n commit(\"SKUINFOS_JSON\", val);\n },\n\n genericDialogShow({state, commit}, val: boolean) {\n commit(\"GENERIC_DIALOG_SHOW\", val);\n },\n\n genericDialogTitle({state, commit}, val: string) {\n commit(\"GENERIC_DIALOG_TITLE\", val);\n },\n\n genericDialogText({state, commit}, val: string) {\n commit(\"GENERIC_DIALOG_TEXT\", val);\n },\n\n genericDialogIcon({state, commit}, val: string) {\n commit(\"GENERIC_DIALOG_ICON\", val);\n },\n\n genericDialogConfirmCallback({state, commit}, val: Function | null) {\n commit(\"GENERIC_DIALOG_CONFIRM_CALLBACK\", val);\n },\n\n genericDialogOnCloseCallback({state, commit}, val: Function | null) {\n commit(\"GENERIC_DIALOG_ON_CLOSE_CALLBACK\", val);\n },\n\n genericDialogReset({state, commit}) {\n commit(\"GENERIC_DIALOG_RESET\", false);\n },\n\n centerMapData({state, commit}, val: { lat: number, lng: number }) {\n commit(\"CENTER_MAP_DATA\", val);\n },\n\n searchPinData({state, commit}, val: { pinType: RwPinTypes, lat: number, lng: number }) {\n commit(\"SEARCH_PIN_DATA\", val);\n },\n\n showPlannerToolbar({state, commit}, val: boolean) {\n commit(\"SHOW_PLANNER_TOOLBAR\", val);\n },\n\n showInvalidPinBanner({state, commit}, val: boolean) {\n commit(\"SHOW_INVALID_PIN_BANNER\", val);\n },\n\n invalidPinError({state, commit}, val: string) {\n commit(\"INVALID_PIN_ERROR\", val);\n },\n\n invalidPinIcon({state, commit}, val: string) {\n commit(\"INVALID_PIN_ICON\", val);\n },\n\n previousPin({state, commit}, val: RwPin | null) {\n commit(\"PREVIOUS_PIN\", val);\n },\n\n showDropSelect({state, commit}, val: boolean) {\n commit(\"SHOW_DROP_SELECT\", val);\n },\n\n stopDropOrigin({state, commit}, val: RwStop | null) {\n commit(\"STOP_DROP_ORIGIN\", val);\n },\n\n showDropRemove({state, commit}, val: boolean) {\n commit(\"SHOW_DROP_REMOVE\", val);\n },\n\n showFlexOptIn({state, commit}, val: boolean) {\n commit(\"SHOW_FLEX_OPT_IN\", val);\n },\n\n showOptInPostMessage({state, commit}, val: boolean) {\n commit(\"SHOW_OPT_IN_POST_MESSAGE\", val);\n },\n\n showStopsViolations({state, commit}, val: string[]) {\n commit('SHOW_STOPS_VIOLATIONS', val);\n },\n\n outdatedVersion({state, commit}, val: VersionOutdatedEnum) {\n commit('OUTDATED_VERSION', val);\n },\n\n showSiteRoutePicker({state, commit}, val: boolean) {\n commit('SHOW_SITE_ROUTE_PICKER', val);\n },\n\n showTaskRoutePicker({state, commit}, val: boolean) {\n commit('SHOW_TASK_ROUTE_PICKER', val);\n },\n\n showGenericRoutePicker({state, commit}, val: boolean) {\n commit('SHOW_GENERIC_ROUTE_PICKER', val);\n },\n\n genericRoutePickerFilter({state, commit}, val: any) {\n commit('GENERIC_ROUTE_PICKER_FILTER', val);\n },\n\n changePin({state, commit}, val: RwPin) {\n commit(\"CHANGE_PIN\", val);\n },\n\n zoomLevel({state, commit}, val: number) {\n commit(\"ZOOM_LEVEL\", val);\n },\n\n isMobileView({state, commit}, val: boolean) {\n commit(\"IS_MOBILE_VIEW\", val);\n },\n\n isTabletView({state, commit}, val: boolean) {\n commit(\"IS_TABLET_VIEW\", val);\n },\n\n recentStopAdd({state, commit}, val: boolean) {\n commit(\"RECENT_STOP_ADD\", val);\n },\n\n greedyTime({state, commit}, val: number) {\n commit(\"GREEDY_TIME_SET\", val);\n },\n greedyDist({state, commit}, val: number) {\n commit(\"GREEDY_DIST_SET\", val);\n },\n },\n\n mutations: {\n\n MAP_CENTROID(state, val: { lat: number, lng: number, zoom: number }) {\n state.mapCentroid = val;\n },\n\n SHOW_ROUTE_NEW(state, val: boolean) {\n state.showRouteNew = val;\n },\n\n ROUTE_NEW_INIT_EMPTY(state, val: boolean) {\n state.routeNewInitEmpty = val;\n },\n\n ROUTE_NEW_INIT_ROUTE(state, val: RwRoute) {\n state.routeNewInitRoute = val;\n },\n\n SHOW_SEARCH_OPTIONS(state, val: boolean) {\n state.showSearchOptions = val;\n },\n\n STOP_EDIT_INIT_STOP(state, val: RwStop) {\n state.stopEditInitStop = val;\n },\n\n HIST_EDIT_INIT_HISTORY(state, val: RwHistory) {\n state.histEditInitHistory = val;\n },\n\n SHOW_STATUS_PICKER(state, val: boolean) {\n state.showStatusPicker = val;\n },\n\n STATUS_PICKER_INIT_NAME(state, val: string) {\n state.statusPickerInitName = val;\n },\n\n STATUS_PICKER_INIT_STATUS(state, val: number) {\n state.statusPickerInitStatus = val;\n },\n\n SHOW_RELO_PICKER(state, val: boolean) {\n state.showReloPicker = val;\n },\n\n RELO_PICKER_INIT_TITLE(state, val: string) {\n state.reloPickerInitTitle = val;\n },\n\n RELO_PICKER_INIT_LAT(state, val: number) {\n state.reloPickerInitLat = val;\n },\n\n RELO_PICKER_INIT_LNG(state, val: number) {\n state.reloPickerInitLng = val;\n },\n\n ENABLE_RELO_PICKER_SEARCH(state, val: boolean) {\n state.enableReloPickerSearch = val;\n },\n\n RELO_PICKER_ADD_REPORT(state, val: boolean) {\n state.reloPickerAddReport = val;\n },\n\n SELECTED_SEARCH_RESULT(state, val: RwSearchResult) {\n state.selectedSearchResult = val;\n },\n\n SEARCH_REPORT_INFO(state, val: Array) {\n state.searchReportInfo = val;\n },\n\n SHOW_ROUTE_PICKER(state, val: boolean) {\n state.showRoutePicker = val;\n },\n\n ROUTE_PICKER_ROUTE_ID(state, val: string) {\n state.routePickerSrcId = val;\n },\n\n SHOW_SKED_PICKER(state, val: boolean) {\n state.showSkedPicker = val;\n },\n\n SKED_PICKER_PRIORITY(state, val: number) {\n state.skedPickerPriority = val;\n },\n\n SKED_PICKER_START(state, val: number) {\n state.skedPickerStart = val;\n },\n\n SKED_PICKER_FINISH(state, val: number) {\n state.skedPickerFinish = val;\n },\n\n SHOW_VISIT_PICKER(state, val: boolean) {\n state.showVisitPicker = val;\n },\n\n VISIT_PICKER_INIT(state, val: number) {\n state.visitPickerInit = val;\n },\n\n COLOR_PICKER_INIT_COLOR(state, val: string) {\n state.colorPickerInitColor = val;\n },\n\n SHOW_COLOR_PICKER(state, val: boolean) {\n state.showColorPicker = val;\n },\n\n SHOW_ADD_ROUTE_PICKER(state, val: boolean) {\n state.showAddRoutePicker = val;\n },\n\n REFRESH_ROUTE_TRIGGER(state, val: number) {\n state.refreshRouteTrigger = val;\n },\n\n IS_STOP_FILTERED(state, val: boolean) {\n state.isStopFiltered = val;\n },\n\n IS_SITE_FILTERED(state, val: boolean) {\n state.isSiteFiltered = val;\n },\n\n IS_TASK_FILTERED(state, val: boolean) {\n state.isTaskFiltered = val;\n },\n\n IS_DRIVER_FILTERED(state, val: boolean) {\n state.isDriverFiltered = val;\n },\n\n SHOW_MAP_OPTIONS(state, val: boolean) {\n state.showMapOptions = val;\n },\n\n CONFIRM_TITLE(state, val: string) {\n state.confirmTitle = val;\n },\n\n CONFIRM_BODY(state, val: string) {\n state.confirmBody = val;\n },\n\n CONFIRM_POS_TEXT(state, val: string) {\n state.confirmPosText = val;\n },\n\n CONFIRM_NEG_TEXT(state, val: string) {\n state.confirmNegText = val;\n },\n\n SHOW_CONFIRM(state, val: boolean) {\n state.showConfirm = val;\n },\n\n CONFIRM_DONT_SHOW_CHECK(state, val: boolean) {\n state.confirmDontShowCheck = val;\n },\n\n CONFIRM_DONT_SHOW_CALLBACK(state, val: Function | null) {\n state.confirmDontShowCallback = val;\n },\n\n IS_OPEN_DRAWER(state, val: boolean) {\n state.isOpenDrawer = val;\n },\n\n SELECTED_TASK(state, val: RwStop) {\n state.selectedTask = val;\n },\n\n SHOW_STOP_DOCK(state, val: boolean) {\n state.showStopDock = val;\n },\n\n SHOW_STOP_POP(state, val: boolean) {\n state.showStopPop = val;\n },\n\n SHOW_DRIVER_DOCK(state, val: boolean) {\n state.showDriverDock = val;\n },\n\n SHOW_DRIVER_POP(state, val: boolean) {\n state.showDriverPop = val;\n },\n\n SHOW_SITE_POP(state, val: boolean) {\n state.showSitePop = val;\n },\n\n SHOW_SITE_DOCK(state, val: boolean) {\n state.showSiteDock = val;\n },\n\n SHOW_SKED_POP(state, val: boolean) {\n state.showSkedPop = val;\n },\n\n SHOW_SKED_DOCK(state, val: boolean) {\n state.showSkedDock = val;\n },\n\n SHOW_ROUTE_DOCK(state, val: boolean) {\n state.showRouteDock = val;\n },\n\n SHOW_ROUTE_POP(state, val: boolean) {\n state.showRoutePop = val;\n },\n\n SELECTED_CLUSTER_PIN(state, val: RwPin) {\n state.selectedClusterPin = val;\n },\n\n SHOW_CLUSTER_PICKER(state, val: boolean) {\n state.showClusterPicker = val;\n },\n\n SHOW_ASSIGN_PICKER(state, val: boolean) {\n state.showAssignPicker = val;\n },\n\n SHOW_ADD_REPORT(state, val: boolean) {\n state.showAddReport = val;\n },\n SHOW_ADD_MISSING_REPORT(state, val: boolean) {\n state.showAddMissingReport = val;\n },\n\n ADD_REPORT(state, val: RwAddReport) {\n state.addReport = val;\n },\n\n ASSIGN_PICKER_INIT_ROUTE(state, val: RwRoute) {\n state.assignPickerInitRoute = val;\n },\n\n SNACK_BAR_TEXT(state, val: string) {\n state.snackBarText = val;\n },\n\n SNACK_BAR_COLOR(state, val: string) {\n state.snackBarColor = val;\n },\n\n SHOW_SNACK_BAR(state, val: boolean) {\n state.showSnackbar = val;\n },\n\n SHOW_ROUTE_ORDER(state, val: boolean) {\n state.showRouteOrder = val;\n },\n\n SHOW_ROUTE_SUMMARY(state, val: boolean) {\n state.showRouteSummary = val;\n },\n\n SEARCH_RESULTS_WEB(state, val: RwSearchResult[]) {\n state.searchResultsWeb = val;\n },\n\n SEARCH_RESULTS_SITES(state, val: RwSearchResult[]) {\n state.searchResultsSites = val;\n },\n\n SEARCH_RESULTS_TASKS(state, val: RwSearchResult[]) {\n state.searchResultsTasks = val;\n },\n\n SEARCH_RESULTS_COORDS(state, val: RwSearchResult[]) {\n state.searchResultsCoords = val;\n },\n\n SHOW_DATA_LAYER_ROUTE(state, val: boolean) {\n state.showDataLayerRoute = val;\n },\n\n SHOW_DATA_LAYER_SITES(state, val: boolean) {\n state.showDataLayerSites = val;\n },\n\n SHOW_DATA_LAYER_TASKS(state, val: boolean) {\n state.showDataLayerTasks = val;\n },\n\n // SHOW_DATA_LAYER_DRIVERS(state, val: boolean) {\n // state.showDataLayerDrivers = val;\n // },\n\n SELECTED_STOP(state, val: RwStop) {\n state.selectedStop = val;\n },\n\n SHOW_TASK_EDIT(state, val: boolean) {\n state.showTaskEdit = val;\n },\n\n IS_DATA_LOADED(state, val: boolean) {\n state.isDataLoaded = val;\n },\n\n TASKS(state, val: RwStop[]) {\n state.tasks = val;\n },\n\n TASK_PINS(state, val: RwPin[]) {\n state.taskPins = val;\n },\n\n SHOW_ROUTE_EDIT(state, val: boolean) {\n state.showRouteEdit = val;\n },\n\n ROUTE_EDIT_INIT_ROUTE(state, val: RwSked) {\n state.routeEditInitRoute = val;\n },\n\n SHOW_ROUTE_DELETE(state, val: boolean) {\n state.showRouteDelete = val;\n },\n\n SHOW_ROUTE_ASSIGN(state, val: boolean) {\n state.showRouteAssign = val;\n },\n\n SHOW_ROUTE_COPY(state, val: boolean) {\n state.showRouteCopy = val;\n },\n\n SHOW_ROUTE_COMPLETE(state, val: boolean) {\n state.showRouteComplete = val;\n },\n\n STEPS(state, val: RwStep[]) {\n state.steps = val;\n },\n\n SHOW_PREVIEW_PANEL(state, val: boolean) {\n state.showPinPanel = val;\n },\n\n SHOW_PREVIEW_POPUP(state, val: boolean) {\n state.showPinPopup = val;\n },\n\n SHOW_STOP_EDIT(state, val: boolean) {\n state.showStopEdit = val;\n },\n\n SHOW_HISTORY_EDIT(state, val: boolean) {\n state.showHistoryEdit = val;\n },\n\n SHOW_SITE_EDIT(state, val: boolean) {\n state.showSiteEdit = val;\n },\n\n SITE_EDIT_INIT_SITE(state, val: RwSite) {\n state.siteEditInitSite = val;\n },\n\n // SHOW_SITE_RELOCATE(state, val: boolean){\n // state.showSiteRelocate = val;\n // },\n\n SHOW_SITE_CREATE(state, val: boolean) {\n state.showSiteCreate = val;\n },\n SHOW_SITE_MULTI_COLOR(state, val: boolean) {\n state.showSiteMultiColor = val;\n },\n\n SHOW_EDIT_DRIVER_PASS(state, val: boolean) {\n state.showEditDriverPass = val;\n },\n\n SHOW_EDIT_DRIVER_UNAME(state, val: boolean) {\n state.showEditDriverUname = val;\n },\n\n SHOW_REPLACE_DRIVER(state, val: boolean) {\n state.showReplaceDriver = val;\n },\n\n SHOW_DELETE_DRIVER(state, val: boolean) {\n state.showDeleteDriver = val;\n },\n\n SHOW_CREATE_DRIVER(state, val: boolean) {\n state.showCreateDriver = val;\n },\n\n SHOW_CREATE_BULK_USER(state, val: boolean) {\n state.showCreateBulkUser = val;\n },\n\n SHOW_DOMAIN_POPUP(state, val: boolean) {\n state.showDomainPopup = val;\n },\n\n SHOW_PING_TEST(state, val: boolean) {\n state.showPingTest = val;\n },\n\n SHOW_DELETE_PROMPT(state, val: boolean) {\n state.showDeletePrompt = val;\n },\n\n SHOW_CREATE_PROMPT(state, val: boolean) {\n state.showCreatePrompt = val;\n },\n\n AV_INFO(state, val: RwAvatarInfo) {\n state.avInfo = val;\n },\n //\n // AV_URL(state, val: string) {\n // state.avUrl = val;\n // },\n //\n // AV_TYPE(state, val: number) {\n // state.avType = val;\n // },\n //\n // AV_COLOR(state, val: string) {\n // state.avColor = val;\n // },\n //\n // AV_INITS(state, val: string) {\n // state.avInits = val;\n // },\n\n EDIT_AFTER_ADD(state, val: boolean) {\n state.editAfterAdd = val;\n },\n\n EDIT_FROM_COPY(state, val: boolean) {\n state.editFromCopy = val;\n },\n\n HIDE_PING_POPUP(state, val: boolean) {\n state.hidePingPopup = val;\n },\n\n HIDE_DELETE_POPUP(state, val: boolean) {\n state.hideDeletePopup = val;\n },\n\n HIDE_CREATE_POPUP(state, val: boolean) {\n state.hideCreatePopup = val;\n },\n\n HIDE_450_POPUP(state, val: boolean) {\n state.hide450Popup = val;\n },\n\n PROMPT_450_POPUP(state, val: string[]) {\n state.prompt450Popup = val;\n },\n\n WARNED_450_POPUP(state, val: string[]) {\n state.warned450Popup = val;\n },\n\n PROMPT_500_POPUP(state, val: string[]) {\n state.prompt500Popup = val;\n },\n\n HIDE_TASKS_WARN(state, val: boolean) {\n state.hideTasksWarn = val;\n },\n\n HIDE_STOP_STATUS(state, val: boolean) {\n state.hideStopStatus = val;\n },\n\n HIDE_CC_POPUP(state, val: boolean) {\n state.hideCCPopup = val;\n },\n\n VAL_CC_POPUP(state, val: number) {\n state.valCCPopup = val;\n },\n\n WARNED_CC_POPUP(state, val: string[]) {\n state.warnedCCPopup = val;\n },\n\n WARNED_CC_POPUP_OVERDUE(state, val: string[]) {\n state.warnedCCPopupOverdue = val;\n },\n\n SHOW_DRIVER_EDIT(state, val: boolean) {\n state.showDriverEdit = val;\n },\n\n DRIVER_EDIT_INIT_DRIVER(state, val: RwUser) {\n state.driverEditInitDriver = val;\n },\n\n SHOW_SKED_EDIT(state, val: boolean) {\n state.showSkedEdit = val;\n },\n\n SKED_EDIT_INIT_SKED(state, val: boolean) {\n state.skedEditInitSked = val;\n },\n\n\n SHOW_SKED_CREATE(state, val: boolean) {\n state.showSkedCreate = val;\n },\n\n // SHOW_SKED_DELETE(state, val: boolean){\n // state.showSkedDelete = val;\n // },\n\n SHOW_PRO_BETA_PRIMER(state, val: boolean) {\n state.showProBetaPrimer = val;\n },\n\n SHOW_PROFILE_EDIT(state, val: boolean) {\n state.showProfileEdit = val;\n },\n\n SHOW_LIMIT_POPUP(state, val: boolean) {\n state.showLimitPopup = val;\n },\n\n SHOW_NEW_PASS(state, val: boolean) {\n state.showNewPass = val;\n },\n //\n // SHOW_USER_SITE_BANNER(state, val: boolean){\n // state.showUserSiteBanner = val;\n // },\n\n HAS_CLOSED_USER_SITE_BANNER(state, val: boolean) {\n state.hasClosedUserSiteBanner = val;\n },\n\n LAST_CLOSED_UPDATE_PAYMENT_BANNER(state, val: Date) {\n state.lastClosedPaymentBanner = val;\n },\n\n SHOW_REGISTRATION_TYPE(state, val: boolean) {\n state.showRegistrationType = val;\n },\n\n SHOW_PRO_TO_TEAM(state, val: boolean) {\n state.showProToTeam = val;\n },\n\n SHOW_CC_EXPIRE(state, val: boolean) {\n state.showCCExpire = val;\n },\n\n SHOW_EDIT_AVATAR(state, val: boolean) {\n state.showEditAvatar = val;\n },\n\n SELECTED_ROUTE(state, val: RwRoute) {\n state.selectedRoute = val;\n },\n\n ROUTE_TO_EDIT(state, val: RwRoute) {\n state.routeToEdit = val;\n },\n\n\n SELECTED_ROUTE_SPACE(state, val: RwRoute) {\n state.selectedRouteSpace = val;\n },\n\n SELECTED_ROUTES(state, val: RwRoute[]) {\n state.selectedRoutes = val;\n },\n\n SELECTED_SITE(state, val: RwSite) {\n state.selectedSite = val;\n },\n\n SELECTED_SKED(state, val: RwSked) {\n state.selectedSked = val;\n },\n\n HIST(state, val: RwHistory[]) {\n state.hist = val;\n },\n\n SELECTED_DRIVER(state, val: RwUser) {\n state.selectedDriver = val;\n },\n\n HIGHLIGHT_MANUAL(state, val: number) {\n state.highLightManual = val;\n },\n\n SHOW_PANEL_STATUS(state, val: boolean) {\n state.showPanelStatus = val;\n },\n\n SHOW_PANEL_MAP(state, val: boolean) {\n state.showPanelMap = val;\n },\n\n SHOW_PANEL_LIST(state, val: boolean) {\n state.showPanelList = val;\n },\n\n SHOW_SEARCH_PANEL(state, val: boolean) {\n state.showSearchPanel = val;\n },\n\n SHOW_DATA_LAYERS(state, val: boolean) {\n state.showDataLayers = val;\n },\n\n MAP_SHOW_SATELLITE(state, val: boolean) {\n state.mapShowSatellite = val;\n },\n\n MAP_SHOW_TRAFFIC(state, val: boolean) {\n state.mapShowTraffic = val;\n },\n\n MAP_SHOW_INCIDENTS(state, val: boolean) {\n state.mapShowIncidents = val;\n },\n\n\n ACTIVE_ROUTE(state, route: RwRoute) {\n state.activeRoute = route;\n },\n\n ROUTE(state, route: RwRoute) {\n //RwLog.consoleLog(`store ROUTE`, route);\n },\n\n ROUTES(state, routes: RwRoute[]) {\n //Vue.set(state, \"routes\", routes);\n state.routes = routes;\n },\n\n SITES(state, sites: RwSite[]) {\n Vue.set(state, \"sites\", sites);\n //state.routes = routes;\n },\n\n SKEDS(state, skeds: RwSked[]) {\n //Vue.set(state, \"scheds\", skeds);\n state.skeds = skeds;\n },\n\n DRIVERS(state, drivers: RwUser[]) {\n //console.warn(\"SET_DRIVERS\", drivers);\n state.drivers = drivers;\n //Vue.set(state, \"drivers\", drivers);\n },\n\n OPEN_ROUTES(state, routes: RwRoute[]) {\n state.openRoutes = routes;\n },\n\n IS_LOADING(state, val: boolean) {\n state.loading = val;\n },\n\n HAS_CURRENT_PURCHASE(state, val: boolean) {\n state.hasCurrPurch = val;\n },\n\n HAS_PRO_BETA_PRIMED(state, val: boolean) {\n state.hasProBetaPrimed = val;\n },\n\n UPDATE_START_PREF(state, val: number) {\n state.updateStartPref = val;\n },\n\n PINNED_STATUS(state, val: string[]) {\n state.pinnedStatus = val;\n },\n\n TOKEN(state, val: string) {\n state.token = val;\n },\n\n IS_DARK_MODE(state, val: boolean) {\n state.isDarkMode = val;\n },\n\n IS_LOGGED_IN(state, val: boolean) {\n state.isLoggedIn = val;\n },\n\n LAST_SYNC_MS(state, val: number) {\n state.lastSyncMS = val;\n },\n\n LAST_DELTA_MS(state, val: number) {\n state.lastDeltaMS = val;\n },\n\n DRIVER_LAST_SYNC_MS(state, val: number) {\n state.driverLastSyncMS = val;\n },\n\n LAST_STATUS_MS(state, val: number) {\n state.lastStatusMS = val;\n },\n\n LAST_TOKEN_MS(state, val: number) {\n state.lastTokenMS = val;\n },\n\n IS_TEAM(state, val: boolean) {\n state.isTeam = val;\n },\n\n IS_AUTO_RENEWING(state, val: boolean) {\n state.isAutoRenewing = val;\n },\n\n IS_PRO_MONTHLY(state, val: boolean) {\n state.isProMonthly = val;\n },\n\n IS_FLEX_SOLO(state, val: boolean) {\n state.isFlexSolo = val;\n },\n\n FLEX_DISPLAY(state, val: number) {\n state.flexDisplay = val;\n },\n\n IS_DISP(state, val: boolean) {\n state.isDisp = val;\n },\n\n IS_SIMPLE_MAP(state, val: boolean) {\n state.isSimpleMap = val;\n },\n\n SET_ROLE(state, val: number) {\n state.role = val;\n },\n\n\n STOP_PINS(state, val: RwPin[]) {\n state.stopPins = val;\n },\n\n SITE_PINS(state, val: RwPin[]) {\n state.sitePins = val;\n },\n\n START_PIN(state, val: RwPin) {\n state.startPin = val;\n },\n\n DRIVER_PINS(state, val: RwPin[]) {\n state.driverPins = val;\n },\n\n\n SELECTED_PINS(state, val: RwPin[]) {\n state.selectedPins = val;\n },\n\n SIZE_DELTA(state, val: number) {\n state.sizeDelta = val;\n },\n\n IS_MULTI_MODE(state, val: boolean) {\n state.isMultiMode = val;\n },\n\n MULTI_MODE(state, val: number) {\n //Vue.set(state, \"selectMode\", val);\n state.multiMode = val;\n },\n\n MAP_SELECTOR(state, val: number) {\n state.multiModeTool = val;\n },\n\n STOP_COLOR(state, val: string) {\n state.stopColor = val;\n },\n\n TASK_COLOR(state, val: string) {\n state.taskColor = val;\n },\n\n SITE_COLOR(state, val: string) {\n state.siteColor = val;\n },\n\n OPT_MODE(state, val: number) {\n state.optMode = val;\n },\n\n TRAVEL_MODE(state, val: string) {\n state.travelMode = val;\n },\n\n IS_ROUND_TRIP(state, val: boolean) {\n state.isRoundTrip = val;\n },\n\n AVOIDS(state, val: string[]) {\n state.avoids = val;\n },\n\n DIST_UNITS(state, val: number) {\n state.distUnits = val;\n },\n\n VISIT_TIME(state, val: number) {\n state.visitTime = val;\n },\n\n ROUTE_TIME(state, val: number) {\n state.routeTime = val;\n },\n\n START_LAT(state, val: number) {\n state.startLat = val;\n },\n\n START_LNG(state, val: number) {\n state.startLng = val;\n },\n\n IS_DYN_POINT(state, val: boolean) {\n state.isDynPoint = val;\n },\n\n START_FRIENDLY_NAME(state, val: string) {\n state.startFriendlyName = val;\n },\n\n REGISTER_EMAIL(state, val: string) {\n state.registerEmail = val;\n },\n\n SKUINFOS_JSON(state, val: string) {\n state.skuInfosJson = val;\n },\n\n GENERIC_DIALOG_SHOW(state, val: boolean) {\n state.genericDialog = Object.assign(state.genericDialog, {show: val});\n },\n\n GENERIC_DIALOG_TITLE(state, val: string) {\n state.genericDialog = Object.assign(state.genericDialog, {title: val});\n },\n\n GENERIC_DIALOG_TEXT(state, val: string) {\n state.genericDialog = Object.assign(state.genericDialog, {text: val});\n },\n\n GENERIC_DIALOG_ICON(state, val: string) {\n state.genericDialog = Object.assign(state.genericDialog, {icon: val});\n },\n\n GENERIC_DIALOG_CONFIRM_CALLBACK(state, val: Function | null) {\n state.genericDialog = Object.assign(state.genericDialog, {confirmCallback: val});\n },\n\n GENERIC_DIALOG_ON_CLOSE_CALLBACK(state, val: Function | null) {\n state.genericDialog = Object.assign(state.genericDialog, {onCloseCallback: val});\n },\n\n GENERIC_DIALOG_RESET(state) {\n state.genericDialog = new RwGenericDialog();\n },\n\n CENTER_MAP_DATA(state, val: { lat: number, lng: number }) {\n state.centerMapData = val;\n },\n\n SEARCH_PIN_DATA(state, val: { pinType: RwPinTypes, lat: number, lng: number }) {\n state.searchPinData = val;\n },\n\n SHOW_PLANNER_TOOLBAR(state, val: boolean) {\n state.showPlannerToolbar = val;\n },\n\n SHOW_INVALID_PIN_BANNER(state, val: boolean) {\n state.showInvalidPinBanner = val;\n },\n\n INVALID_PIN_ERROR(state, val: string) {\n state.invalidPinError = val;\n },\n\n INVALID_PIN_ICON(state, val: string) {\n state.invalidPinIcon = val;\n },\n\n PREVIOUS_PIN(state, val: RwPin | null) {\n state.previousPin = val;\n },\n\n SHOW_DROP_SELECT(state, val: boolean) {\n state.showDropSelect = val;\n },\n\n STOP_DROP_ORIGIN(state, val: RwStop | null) {\n state.stopDropOrigin = val;\n },\n\n SHOW_DROP_REMOVE(state, val: boolean) {\n state.showDropRemove = val;\n },\n\n SHOW_FLEX_OPT_IN(state, val: boolean) {\n state.showFlexOptIn = val;\n },\n\n SHOW_OPT_IN_POST_MESSAGE(state, val: boolean) {\n state.showOptInPostMessage = val;\n },\n\n SHOW_STOPS_VIOLATIONS(state, val: string[]) {\n state.showStopsViolations = val;\n },\n OUTDATED_VERSION(state, val: VersionOutdatedEnum) {\n state.outdatedVersion = val;\n },\n\n SHOW_SITE_ROUTE_PICKER(state, val: boolean) {\n state.showSiteRoutePicker = val;\n },\n\n SHOW_TASK_ROUTE_PICKER(state, val: boolean) {\n state.showTaskRoutePicker = val;\n },\n\n SHOW_GENERIC_ROUTE_PICKER(state, val: boolean) {\n state.showGenericRoutePicker = val;\n },\n\n GENERIC_ROUTE_PICKER_FILTER(state, val: any) {\n state.genericRoutePickerFilter = val;\n },\n\n CHANGE_PIN(state, val: RwPin) {\n state.changePin = val;\n },\n\n ZOOM_LEVEL(state, val: number) {\n state.zoomLevel = val;\n },\n\n IS_MOBILE_VIEW(state, val: boolean) {\n state.isMobileView = val;\n },\n\n IS_TABLET_VIEW(state, val: boolean) {\n state.isTabletView = val;\n },\n\n RECENT_STOP_ADD(state, val: boolean) {\n state.recentStopAdd = val;\n },\n\n GREEDY_TIME_SET(state, val: number) {\n state.greedyTime = val;\n },\n\n GREEDY_DIST_SET(state, val: number) {\n state.greedyDist = val;\n }\n }\n});\n\n","import Vue from 'vue';\n\nconst RwEventBus = new Vue();\nexport default RwEventBus;","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VDialog,{attrs:{\"scrollable\":\"\",\"persistent\":\"\",\"max-width\":\"600px\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.escPress.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;_vm.globals.showNewPass = false}]},model:{value:(_vm.globals.showProToTeam),callback:function ($$v) {_vm.$set(_vm.globals, \"showProToTeam\", $$v)},expression:\"globals.showProToTeam\"}},[_c(VCard,{attrs:{\"max-height\":\"600px\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"max-height\":\"48px\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(\"Upgrade to Flex\")])],1),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"center\"}},[_c('div',{staticClass:\"text-left\"},[_c('p',{staticClass:\"text-wrap\"},[_vm._v(\" RoadWarrior Flex is our adaptable monthly subscription model designed to accommodate route planning for individuals, small groups, and large teams. \")]),_c('p',{staticClass:\"text-wrap\"},[_vm._v(\" When you upgrade to Flex, in addition to accessing our full online Route-planning suite, you will have the option to add additional Drivers and sub-teams to your account. \")]),_c('p',{staticClass:\"text-wrap\"},[_vm._v(\" RoadWarrior Flex is a separate subscription from Pro, as it is not run through the app stores. \"),_c('b',[_vm._v(\"Take note of the Pro cancellation instructions at the end of the upgrade process to avoid any double-billing.\")])])])])],1),_c(VCardActions,[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":function($event){_vm.globals.showProToTeam=false}}},[_vm._v(\"Cancel\")]),_c(VSpacer),(_vm.hasChargifyAccount)?_c('div',[_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.updatePayment}},[_vm._v(\"Update Payment Method\")]),_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.upgradeClick}},[_vm._v(\"Begin Flex Upgrade\")])],1):_vm._e(),(!_vm.hasChargifyAccount)?_c('div',[_c(VBtn,{attrs:{\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.upgradeNoChargifyClick}},[_vm._v(\"Begin Flex Upgrade\")])],1):_vm._e()],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals from \"@/app/RwGlobals\";\nimport store, {RwGlobals} from \"@/app/RwGlobals\";\nimport RwPages from \"@/app/consts/RwPages\";\nimport {RwProfileModel} from \"@/app/dem/Profile/RwProfileModel\";\nimport {RwTaskBillingProfile} from \"@/app/dal/RwTaskBillingProfile\";\nimport {SubTeamViewModel} from \"@/app/dem/Drivers/CreateBulkDriversResponse\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwUser} from \"@/app/dem/RwUser\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwRoleTypes} from \"@/app/RwEnums\";\n\n\n@Component\nexport default class RwProToTeam extends Vue {\n\n profileLoaded: boolean = false;\n hasChargifyAccount: boolean = false;\n hasValidCC: boolean = false;\n _billingProfile: RwProfileModel;\n updatePaymentUrl: string = \"\";\n hasDrivers: boolean = false;\n hasSubTeams: boolean = false;\n subTeamList: Array = [];\n driverList: Array = [];\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n escPress() {\n this.globals.showProToTeam = false;\n }\n\n mounted() {\n // console.warn('activated, getting resub');\n if (theGlobals.role === RwRoleTypes.Owner || theGlobals.role === RwRoleTypes.Admin) {\n this.getReSubPurchProfile();\n } else {\n theGlobals.showSnack(\"Only the owner of the account is allowed to subscribe to Flex\", \"warning\");\n }\n\n }\n\n get billingProfile(): RwProfileModel {\n // console.warn('Billing Profile is:', this._billingProfile);\n return this._billingProfile;\n }\n\n set billingProfile(value: RwProfileModel) {\n // console.warn('billingProfile being set');\n this._billingProfile = value;\n\n if (this._billingProfile) {\n let bp = this._billingProfile;\n if (bp.ProStatus) {\n this.updatePaymentUrl = bp.UpdatePaymentUrl;\n }\n\n // if (bp.HasChargifyAccount) {\n // this.hasChargifyAccount = true;\n // if (bp.ProStatus.HasCurrentTeamPurch) {\n // this.globals.genericDialog.title = \"No Purchase Required\";\n // this.globals.genericDialog.text = \"You currently have an active subscription, please log back in to use RoadWarrior.\";\n // this.globals.genericDialog.icon = \"info\";\n // this.globals.genericDialog.onCloseCallback = store.logOut;\n // this.globals.genericDialog.show = true;\n // return;\n // //REVIEW: spaghetti code;\n // //if this occurs, the code below will not execute; which is not obvious as it would be with \"return\"\n // }\n // if (bp.PaymentMethod && bp.PaymentMethod.MaskedCard) {\n // this.hasValidCC = true;\n // } else {\n // this.hasValidCC = false;\n // }\n // }\n\n\n if (bp.HasChargifyAccount) {\n this.hasChargifyAccount = true;\n if (bp.ProStatus.HasCurrentTeamPurch) {\n this.globals.genericDialog.title = \"No Purchase Required\";\n this.globals.genericDialog.text = \"You currently have an active subscription, please log back in to use RoadWarrior.\";\n this.globals.genericDialog.icon = \"info\";\n this.globals.genericDialog.onCloseCallback = store.logOut;\n this.globals.genericDialog.show = true;\n } else {\n if (bp.PaymentMethod && bp.PaymentMethod.MaskedCard) {\n this.hasValidCC = true;\n } else {\n this.hasValidCC = false;\n }\n }\n }\n\n\n }\n }\n\n upgradeNoChargifyClick() {\n this.globals.hasProBetaPrimed = true;\n this.createNewChargifySub();\n }\n\n upgradeClick() {\n this.globals.hasProBetaPrimed = true;\n // If user has chargify account, then get the update card url and have them update a previous card\n if (this.hasChargifyAccount) {\n // console.warn(\"updatePayment activated\");\n this.$router.push({name: RwPages.Upgrade}).catch(err => {\n });\n }\n // Else if this user does not have a chargify acct (regular pro user) then have them sign up through chargify\n else {\n // console.warn(\"createNewChargifySub activated\");\n this.createNewChargifySub();\n }\n }\n\n createNewChargifySub() {\n let self = this;\n RwLog.log(\n \"Team.NewSubscription\",\n \"Navigating to chargify:\" + RwConstants.SignupUrl + self.billingProfile.CreateChargifyUrl\n );\n\n setTimeout(function () {\n window.location.href = RwConstants.SignupUrl + self.billingProfile.CreateChargifyUrl;\n }, 250);\n }\n\n updatePayment() {\n this.globals.genericDialog.title = \"Continue when done updating payment method\";\n this.globals.genericDialog.text = \"Please continue the payment update process in the new window opened. Push the OK button below when finished.\";\n this.globals.genericDialog.icon = \"info\";\n this.globals.genericDialog.confirmCallback = this.getReSubPurchProfile;\n this.globals.genericDialog.show = true;\n\n\n window.open(this.billingProfile.BillingPortalUrl, \"_blank\");\n }\n\n getReSubPurchProfile() {\n const SOURCE = \"RwProToTeam.getReSubPurchProfile\";\n const self = this;\n\n RwTaskBillingProfile.GetReSubPurchProfile()\n .then(data => {\n\n // For non team or rw.pro members\n if (data === null) {\n this.globals.genericDialog.title = \"Drivers Accounts cannot create a new Team\";\n this.globals.genericDialog.text = \"Please register a new account if you would like to create a new Team.\";\n this.globals.genericDialog.icon = \"error\";\n this.globals.genericDialog.onCloseCallback = () => {\n store.logOut();\n this.$router.push({name: RwPages.Login}).catch(err => {\n });\n };\n this.globals.genericDialog.show = true;\n } else {\n self.profileLoaded = true;\n self.billingProfile = data;\n if (data.Drivers && data.Drivers.length > 0) {\n self.hasDrivers = true;\n self.driverList = data.Drivers;\n self.driverList.forEach(d => (d.isSelectedItem = true));\n }\n\n if (data.SubTeams && data.SubTeams.length > 0) {\n self.hasSubTeams = true;\n self.subTeamList = [];\n data.SubTeams.forEach(st => {\n let stvm = new SubTeamViewModel(st);\n stvm.Selected = true;\n self.subTeamList.push(stvm);\n });\n }\n }\n })\n .catch(err => {\n if ((err && !err.isHandled) || !err) {\n RwLog.error(SOURCE, `Unhandled: ${err}`)\n }\n });\n }\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwProToTeam.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwProToTeam.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwProToTeam.vue?vue&type=template&id=01519850&scoped=true&\"\nimport script from \"./RwProToTeam.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwProToTeam.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"01519850\",\n null\n \n)\n\nexport default component.exports","import { VIcon } from 'vuetify/lib/components/VIcon';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_c('div',[_c('div',{staticClass:\"thumbnail-image\",staticStyle:{\"position\":\"relative\",\"background-position\":\"center\",\"background-repeat\":\"no-repeat\",\"display\":\"flex\",\"justify-content\":\"center\",\"align-items\":\"center\"},style:({ width: _vm.width, height: _vm.height, border: _vm.border, borderRadius: '4px', backgroundColor: _vm.backgroundColor, backgroundImage: `url('${_vm.backgroundImage}')`, backgroundSize: _vm.showBackgroundImage ? _vm.media.confType === _vm.ConfirmationType.Photo ? 'cover' : 'contain' : _vm.size === 'small' && _vm.type === 'signature' ? '42px' : _vm.size === 'small' ? '35px' : 'auto', cursor: _vm.mode === 'checkbox' || _vm.mode === 'edit' ? 'pointer' : 'default' }),on:{\"click\":function($event){_vm.mode === 'requested' ? _vm.openViewPOD() : _vm.$emit('clicked')}}},[(_vm.mode === 'checkbox')?_c('div',{staticStyle:{\"position\":\"absolute\",\"top\":\"10px\",\"left\":\"10px\",\"border-radius\":\"4px\",\"display\":\"flex\",\"justify-content\":\"center\"},style:({ backgroundColor: _vm.checkboxBackColor, width: _vm.checkSize, height: _vm.checkSize })},[(_vm.checked)?_c(VIcon,{attrs:{\"size\":_vm.checkFontSize,\"color\":\"white\"}},[_vm._v(\"mdi-check\")]):_vm._e()],1):_vm._e(),(_vm.mode === 'edit' || !!_vm.media && (_vm.mode === 'fulfill' || _vm.mode === 'requested'))?_c('button',{staticClass:\"thumbnail-button no-select\"},[(!_vm.media)?_c('span',[_vm._v(\"Add a \"+_vm._s(_vm.type))]):_vm._e(),(!!_vm.media)?_c('span',[_vm._v(_vm._s(_vm.mode === 'edit' ? 'Edit' : 'View')+\" \"+_vm._s(_vm.type)+_vm._s(_vm.quantity && _vm.quantity > 1 ? 's' : ''))]):_vm._e()]):_vm._e()]),_c('p',{staticClass:\"text-left no-select mt-1\",staticStyle:{\"display\":\"flex\",\"column-gap\":\"4px\",\"align-items\":\"center\"}},[((_vm.mode === 'fulfill' || _vm.mode === 'edit') && (!_vm.checked && !_vm.media))?_c(VIcon,{attrs:{\"color\":\"primary\"}},[_vm._v(\"mdi-close\")]):_vm._e(),((_vm.mode === 'fulfill' || _vm.mode === 'edit') && (_vm.checked || !!_vm.media))?_c(VIcon,{attrs:{\"color\":\"#06C96B\"}},[_vm._v(\"mdi-check-circle-outline\")]):_vm._e(),_c('span',{staticClass:\"text-capitalize pod-thumbnail-text\"},[_vm._v(_vm._s(_vm.type)+_vm._s(_vm.quantity && _vm.quantity > 1 ? `s (${_vm.quantity})` : ''))]),((_vm.mode === 'fulfill' || _vm.mode === 'edit') && (!_vm.checked && !_vm.media))?_c('span',[_vm._v(\" missing\")]):_vm._e()],1)]),(_vm.viewingPOD)?_c('div',{staticClass:\"viewPODPopup\",class:_vm.globals.isDarkMode ? 'dark' : ''},[_c('button',{staticStyle:{\"font-size\":\"28px\",\"position\":\"absolute\",\"top\":\"15px\",\"right\":\"15px\"},on:{\"click\":function($event){return _vm.closeViewPOD()}}},[_c(VIcon,{style:({ color: _vm.globals.isDarkMode ? 'white' : 'black' })},[_vm._v(\"mdi-close\")])],1),_c('div',[(!!_vm.media)?_c('div',{staticStyle:{\"position\":\"relative\"},attrs:{\"id\":\"popup-image-wrapper\"}},[_c('img',{staticStyle:{\"max-width\":\"500px\",\"max-height\":\"60vh\"},style:({ border: _vm.getCurrentMediaBorder(), borderRadius: _vm.getCurrentMediaBorderRadius() }),attrs:{\"src\":_vm.getMediaLink()}})]):_vm._e()])]):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport { Component, Prop, Vue } from \"vue-property-decorator\";\nimport { RwCoreMedia } from \"@/app/dem/ProofOfDelivery/RwCoreMedia\";\nimport { ConfirmationType } from \"@/app/dem/ProofOfDelivery/ProofOfDeliveryEnums\";\nimport theGlobals, { RwGlobals } from \"@/app/RwGlobals\";\n\n@Component({\n components: {}\n})\nexport default class RwPODThumbnail extends Vue {\n @Prop() mode: \"checkbox\" | \"requested\" | \"fulfill\" | \"edit\";\n @Prop() type: \"none\" | \"photo\" | \"barcode\" | \"signature\";\n @Prop({ required: false, default: false }) checked: boolean;\n @Prop({ required: false, default: undefined }) media: RwCoreMedia;\n @Prop({ required: false, default: undefined }) quantity: number;\n @Prop({ required: false, default: undefined }) customWidth: string | undefined;\n @Prop({ required: false, default: undefined }) size: 'small' | undefined;\n\n readonly WIDTH = \"124px\";\n readonly WIDTH_LARGE = \"168px\";\n readonly HEIGHT = \"124px\";\n\n viewingPOD = false;\n\n ConfirmationType = ConfirmationType;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get width(): string {\n return this.customWidth ? this.customWidth : this.size === 'small' ? '110px' : this.mode === \"checkbox\" ? this.WIDTH : this.WIDTH_LARGE;\n }\n\n get height(): string {\n return this.size === 'small' ? '82px' : this.HEIGHT;\n }\n\n get checkSize(): string {\n return this.size === 'small' ? '14px' : '20px';\n }\n\n get checkFontSize(): string {\n return this.size === 'small' ? 'small' : 'large';\n }\n\n get border(): string {\n return this.mode === \"checkbox\" ? this.checked && this.globals.isDarkMode ? \"solid 2px #A3C5FF\" : this.checked ? \"solid 2px #4285F4\" : \"none\" : \"none\";\n }\n\n get checkboxBackColor(): string {\n return this.checked ? \"#4285F4\" : \"#B7B7B7\";\n }\n\n get backgroundColor(): string {\n if (this.globals.isDarkMode) {\n return !this.media ? '#4E4C4C' : 'white';\n }\n return this.mode === \"checkbox\" && this.checked || this.mode === \"requested\" ? \"#FAFAFA\" : \"#ECECEC\";\n }\n\n get backgroundImage(): string {\n if (this.mode === \"checkbox\") {\n return `/images/icons/pod_icon_${this.type}${this.checked ? \"_selected\" : \"_select\"}${this.globals.isDarkMode ? \"_dark\" : \"\"}.svg`;\n }\n else if (this.mode === \"requested\") {\n return `/images/icons/pod_icon_${this.type}${this.checked ? \"_selected\" : \"\"}${this.globals.isDarkMode ? \"_dark\" : \"\"}.svg`;\n } else if (this.mode === \"fulfill\" || this.mode === \"edit\") {\n return this.media ? RwCoreMedia.getLink(this.media) : `/images/icons/pod_icon_${this.type}${this.checked ? \"_selected\" : \"\"}${this.globals.isDarkMode ? \"_dark\" : \"\"}.svg`;\n }\n }\n\n get showBackgroundImage(): boolean {\n return !!((this.mode === \"fulfill\" || this.mode === \"edit\") && this.media);\n }\n\n openViewPOD() {\n if (!!this.media) this.viewingPOD = true;\n }\n\n closeViewPOD() {\n this.viewingPOD = false;\n }\n\n getMediaLink(): string {\n return RwCoreMedia.getLink(this.media);\n }\n\n getCurrentMediaBorder(): string {\n if (this.media.confType === ConfirmationType.Signature) {\n return 'solid 3px #B7B7B7';\n }\n return 'none';\n }\n\n getCurrentMediaBorderRadius(): string {\n return '8px';\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODThumbnail.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODThumbnail.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-12.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-12.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-12.use[2]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwPODThumbnail.vue?vue&type=style&index=0&id=311fb05e&prod&scoped=true&lang=css&\"","import { render, staticRenderFns } from \"./RwPODThumbnail.vue?vue&type=template&id=311fb05e&scoped=true&\"\nimport script from \"./RwPODThumbnail.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwPODThumbnail.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwPODThumbnail.vue?vue&type=style&index=0&id=311fb05e&prod&scoped=true&lang=css&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"311fb05e\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_vm.showConfirm)?_c('div',{ref:\"confirmDialog\",staticClass:\"dialog-container\",attrs:{\"tabindex\":\"0\",\"data-test\":\"confirm-container\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onEnter.apply(null, arguments)}]}},[_c(VCard,{staticClass:\"dialog\"},[_c('div',{staticClass:\"title\",attrs:{\"data-test\":\"confirm-title\"}},[_vm._v(_vm._s(_vm.confirmTitle))]),_c('div',{staticClass:\"body\",attrs:{\"data-test\":\"confirm-body\"}},[_vm._v(_vm._s(_vm.confirmBody))]),_c(VBtn,{staticClass:\"confirm btn\",attrs:{\"data-test\":\"confirm-btn\"},on:{\"click\":_vm.onConfirm}},[_c('div',[_vm._v(_vm._s(_vm.confirmPosText))])]),_c(VBtn,{staticClass:\"cancel btn\",attrs:{\"data-test\":\"cancel-btn\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_c('div',[_vm._v(_vm._s(_vm.confirmNegText))])])],1)],1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\n\n@Component\nexport default class RwConfirm extends Vue {\n\n //#region Props\n\n showConfirm = this.globals.m_showConfirm\n confirmTitle = this.globals.m_confirmTitle\n confirmBody = this.globals.m_confirmBody\n confirmPosText = this.globals.m_confirmPosText\n confirmNegText = this.globals.m_confirmNegText\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n //#endregion Props\n\n mounted() {\n // make sure component is focused when mounted so that keydown events work\n this.$nextTick(() => (this.$refs.confirmDialog as HTMLElement).focus());\n }\n\n\n //#region User Events\n\n onEnter(event: Event) {\n event.stopPropagation();\n this.close(true);\n }\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close(false);\n }\n\n\n onCancel() {\n this.close(false);\n }\n\n onConfirm() {\n this.close(true);\n }\n\n close(isConfirmed: boolean) {\n this.$emit(\"onConfirm\", isConfirmed);\n this.globals.m_showConfirm = false;\n this.showConfirm = false;\n }\n //#endregion UI Nav\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwConfirm.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwConfirm.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwConfirm.vue?vue&type=style&index=0&id=d3505fec&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwConfirm.vue?vue&type=template&id=d3505fec&scoped=true&\"\nimport script from \"./RwConfirm.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwConfirm.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwConfirm.vue?vue&type=style&index=0&id=d3505fec&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"d3505fec\",\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCardTitle } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"persistent\":\"\",\"scrollable\":\"\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\",\"content-class\":\"dialog-with-scroll\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.open),callback:function ($$v) {_vm.open=$$v},expression:\"open\"}},[_c(VCard,[_c(VCardTitle,{class:_vm.globals.backColorBar},[_vm._v(\" \"+_vm._s(_vm.title)+\" \")]),_c(VCardText,{staticClass:\"mt-2\",class:_vm.globals.theme},[_c(VTextField,{ref:\"search\",attrs:{\"prepend-inner-icon\":\"search\",\"placeholder\":\"Search\"},model:{value:(_vm.searchFilter),callback:function ($$v) {_vm.searchFilter=$$v},expression:\"searchFilter\"}}),_c(VList,{staticClass:\"py-0\",attrs:{\"flat\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"}},[(_vm.showNewRoute)?_c(VListItem,{staticClass:\"px-3 py-0\",on:{\"click\":_vm.newRoute}},[_c(VListItemIcon,[_c(VIcon,{staticStyle:{\"padding\":\"12px\"}},[_vm._v(\"mdi-plus-thick\")])],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\"},[_vm._v(\"New Route\")])],1)],1):_vm._e(),_vm._l((_vm.targetRoutes),function(route,i){return _c(VListItem,{key:i,staticClass:\"px-3 py-0\",on:{\"click\":function($event){return _vm.onRoutePick(route)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"48\"}},[_c(VImg,{attrs:{\"src\":route.routeIcon}})],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left\",domProps:{\"textContent\":_vm._s(route.name)}})],1)],1)})],2)],1)],1),_c(VCardActions,[_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\",\"color\":\"primary\"},on:{\"click\":_vm.onEscape}},[_vm._v(\" Cancel \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwRoute, RwRoutePick} from \"@/app/dem/RwRoute\";\nimport {RwLog} from \"@/app/dal/RwLog\";\n\n@Component\nexport default class RwGenericRoutePicker extends Vue {\n //#region Props\n @Prop(String) readonly initSrcId: string;\n @Prop(Boolean) readonly open: boolean;\n @Prop(Boolean) readonly showNewRoute: boolean;\n @Prop() readonly filter: any;\n\n searchFilter = \"\";\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get title(): string {\n return \"Pick Target Route\";\n }\n\n @Watch(\"open\", {immediate: true})\n onOpenChanged(openVal: boolean) {\n if (openVal) {\n setTimeout(() => {\n if (this.$refs.search) {\n (this.$refs.search as any).$el.querySelector(\"input\").focus();\n }\n }, 500)\n }\n }\n\n get targetRoutes(): RwRoute[] {\n let routes: RwRoute[] = [];\n let srcId = this.initSrcId;\n routes = this.globals.routes;\n routes = routes.filter(this.filter ?? (() => true));\n if (srcId && srcId.length > 0) {\n routes = routes.filter(r => r.routeId != srcId);\n routes = routes.sort((r1, r2) => r2.startTime.getTime() > r1.startTime.getTime() ? -1 : 1);\n } else {\n routes = this.globals.routes;\n }\n\n if (this.searchFilter) {\n const srch = this.searchFilter.toLowerCase().trim();\n routes = routes.filter(rt => rt.name?.toLowerCase()?.indexOf(srch) !== -1);\n }\n\n return routes;\n }\n\n //#endregion\n\n\n //#region Navigation\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n //#endregion Navigation\n\n\n onRoutePick(route: RwRoute, isNew = false) {\n const pick = new RwRoutePick();\n pick.isMoveOp = false;\n pick.tarRouteId = route.routeId;\n pick.isNew = isNew;\n this.$emit(\"onRoutePick\", pick);\n this.close();\n }\n\n\n close() {\n this.$emit(\"onClose\");\n }\n\n mounted() {\n }\n\n newRoute() {\n const SOURCE = \"RwGenericRoutePicker.newRoute\";\n let route = RwRoute.blankRoute();\n this.globals.addRouteDB(route, [SOURCE], false)\n .then(routeNew => {\n this.globals.addRoute(route);\n this.onRoutePick(routeNew, true);\n })\n .catch(err => {\n let errDesc = err && err.description ? err.description : \"no description\";\n this.globals.showSnack(`Route Creation Failed: ${errDesc}`, \"error\");\n RwLog.error(SOURCE, `Unhandled: ${err}`);\n });\n }\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericRoutePicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwGenericRoutePicker.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwGenericRoutePicker.vue?vue&type=template&id=fc22cba6&\"\nimport script from \"./RwGenericRoutePicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwGenericRoutePicker.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,[_c(VDialog,{attrs:{\"max-width\":`${_vm.globals.showSearchPanel? '1000px': '600px'}`,\"persistent\":\"\",\"scrollable\":\"\",\"content-class\":\"dialog-with-scroll\",\"overlay-opacity\":\"0.65\",\"overlay-color\":\"#000\"},on:{\"keydown\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}},model:{value:(_vm.globals.m_showReloPicker),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showReloPicker\", $$v)},expression:\"globals.m_showReloPicker\"}},[_c(VCard,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"height\":\"100\"}},[_c(VToolbar,{attrs:{\"dense\":\"\",\"color\":_vm.globals.backColorBar}},[_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))]),_c(VSpacer),(_vm.globals.m_enableReloPickerSearch && !_vm.globals.showSearchPanel)?_c(VBtn,{staticClass:\"search-mode-button\",attrs:{\"small\":\"\",\"rounded\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.globals.showSearchPanel = true}}},[_c('span',[_vm._v(\"Search Mode\")]),_c(VIcon,[_vm._v(\"search\")])],1):_vm._e()],1),_c('div',{staticClass:\"d-flex justify-space-between flex-wrap\",staticStyle:{\"height\":\"calc(100vh - 195px)\"}},[_c('div',{staticClass:\"search-wrapper\",style:(`max-width:400px;width:${_vm.globals.showSearchPanel ? '40%' : '0%' }; overflow: hidden;height: 100%;`)},[_c('RwSearchPanel',{attrs:{\"enable-search-actions\":false,\"handle-close-panel\":false,\"show-search-options\":false}})],1),_c('div',{staticClass:\"transition-width\",style:(`position: relative;max-width: 600px; width: ${_vm.globals.showSearchPanel ? '60%': '100%'}; height: 100%;`)},[_c('div',{ref:\"reloMap\",staticClass:\"rw-inset\",staticStyle:{\"width\":\"100%\",\"height\":\"100%\"}},[_c('span',{staticClass:\"text--primary title\",staticStyle:{\"height\":\"48px\",\"width\":\"256px\",\"top\":\"64px\",\"left\":\"calc(50% - 128px)\",\"position\":\"absolute\",\"z-index\":\"10000\",\"pointer-events\":\"none\"}},[_vm._v(\" \"+_vm._s(_vm.coordText)+\" \")]),_c(VIcon,{staticStyle:{\"height\":\"24px\",\"width\":\"24px\",\"top\":\"calc(50% - 12px)\",\"left\":\"calc(50% - 12px)\",\"position\":\"absolute\",\"z-index\":\"10000\",\"pointer-events\":\"none\"},attrs:{\"color\":\"primary\",\"ma-0\":\"\",\"pa-0\":\"\"}},[_vm._v(\" mdi-crosshairs \")])],1)])]),_c(VDivider),_c(VCardActions,{class:_vm.backColor},[_c(VSpacer),_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onCancel}},[_vm._v(\" Cancel \")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.onCommit}},[_vm._v(\" \"+_vm._s(_vm.selectBtnTitle)+\" \")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlanSpace, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwGeoPoint} from \"@/app/utils/RwGeoUtils\";\nimport RwSearchView from \"@/app/views/planner/RwSearchView.vue\";\nimport RwSearchPanel from \"@/app/views/planner/RwSearchPanel.vue\";\nimport {RwPin} from \"@/app/dem/RwPin\";\nimport {RwPinTypes} from \"@/app/RwEnums\";\nimport {RwStop} from \"@/app/dem/RwStop\";\n\n@Component({\n components: {RwSearchPanel, RwSearchView}\n})\nexport default class RwReloPicker extends Vue {\n @Prop(String) readonly initTitle: string;\n @Prop(Number) readonly initLat: number;\n @Prop(Number) readonly initLng: number;\n\n //#region Props\n\n centerLat = 0;\n centerLng = 0;\n\n\n map: H.Map;\n mapui: H.ui.UI;\n platform: H.service.Platform;\n mapBehaviors: H.mapevents.Behavior;\n defaultLayers: H.service.Platform.MapTypes31;\n\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlanSpace;\n }\n\n get title(): string {\n if (theGlobals.showAddReport) {\n return `Correct Address: ${this.globals.addReport?.address}`;\n } else if (theGlobals.showAddMissingReport) {\n return `Select New Location`;\n } else {\n return `Relocate ${this.initTitle}`;\n }\n }\n\n get selectBtnTitle(): string {\n return this.globals.showAddReport || this.globals.showAddMissingReport ? 'Use Location' : 'Apply';\n }\n\n get backColor() {\n return this.globals.isDarkMode ? \"rwBackDark\" : \"rwBackLight\";\n }\n\n get loading(): boolean {\n return this.globals.isLoading;\n }\n\n get isDarkMode(): boolean {\n return this.globals.isDarkMode;\n }\n\n get coordText(): string {\n let text = RwTextUtils.formatCoords(this.centerLat, this.centerLng)\n return text;\n }\n\n //#endregion Props\n\n @Watch(\"globals.centerMapData\")\n watchCenterMapData(val) {\n if (val.lat != 0 || val.lng != 0) {\n this.centerLat = val.lat;\n this.centerLng = val.lng;\n const centroid = new H.geo.Point(val.lat, val.lng);\n this.map.setCenter(centroid, true);\n }\n }\n\n\n private mapInit() {\n\n let self = this;\n let apiKey = RwConstants.hereApiKey;\n this.platform = new H.service.Platform({'apikey': apiKey});\n this.defaultLayers = this.platform.createDefaultLayers({\n tileSize: 512, // Use 512 for high-resolution tiles\n engineType: H.Map.EngineType['HARP'],\n });\n let layer = self.defaultLayers.vector.normal.map;\n\n let options: H.Map.Options = {\n zoom: RwPrefUtils.viewZoom,\n center: {\n lat: this.initLat,\n lng: this.initLng\n },\n engineType: H.Map.EngineType['HARP'],\n pixelRatio: window.devicePixelRatio || 1\n };\n\n let mapContainer = this.$refs.reloMap as Element;\n this.map = new H.Map(mapContainer, layer, options);\n let events = new H.mapevents.MapEvents(this.map);\n this.mapBehaviors = new H.mapevents.Behavior(events);\n this.mapui = H.ui.UI.createDefault(this.map, self.defaultLayers);\n\n this.configMapControls();\n this.configMapEvents();\n this.setMapStyle();\n\n if (this.globals.showAddReport) {\n const pin = new RwPin();\n pin.type = RwPinTypes.Stop;\n pin.stop = new RwStop();\n pin.baseColor = \"#E2004F\";\n Vue.nextTick(() => {\n pin.dataUrlAsync().then(dataUrl => {\n let iconSize = self.globals.getIconSize(pin.type);\n let anchor = self.globals.getAnchorPoint(pin.type);\n let iconOpts = {} as H.map.Icon.Options;\n if (anchor) iconOpts.anchor = anchor;\n if (iconSize) iconOpts.size = iconSize;\n let icon = new H.map.Icon(dataUrl, iconOpts);\n const marker = new H.map.Marker({lat: this.initLat, lng: this.initLng});\n marker.setIcon(icon);\n this.map.addObject(marker);\n });\n }\n );\n }\n }\n\n\n private configMapControls() {\n\n this.mapui.getControl(\"mapsettings\").setVisibility(false);\n let zoom = this.mapui.getControl('zoom');\n zoom.setAlignment(H.ui.LayoutAlignment.RIGHT_MIDDLE);\n let imprint = this.map.getImprint();\n if (imprint) {\n if (this.globals.isDarkMode) {\n imprint.setOptions({invert: true});\n } else {\n imprint.setOptions({invert: false});\n }\n }\n\n }\n\n\n configMapEvents() {\n this.map.addEventListener(\"mapviewchangeend\", () => {\n let centroid = this.map.getCenter();\n if (centroid) {\n this.centerLat = centroid.lat;\n this.centerLng = centroid.lng;\n thePlanSpace.reloCoordsLng = centroid.lng;\n thePlanSpace.reloCoordsLat = centroid.lat;\n }\n });\n }\n\n\n private setMapStyle() {\n\n let self = this;\n if (self.map) {\n\n const baseLayer = self.isDarkMode ? self.defaultLayers.vector.normal.mapnight : self.defaultLayers.vector.normal.map;\n self.map.setBaseLayer(baseLayer)\n\n this.resizeMapViewDelayed(1000);\n }\n }\n\n\n resizeMapViewDelayed(delay: number) {\n let self = this;\n setTimeout(function () {\n self.resizeMapView(\"resizeMapViewDelayed\");\n }, delay);\n }\n\n\n resizeMapView(src: string) {\n if (this.map) {\n this.map.getViewPort().resize();\n }\n }\n\n //#region User Events\n\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n\n onCommit() {\n let lat = this.centerLat;\n let lng = this.centerLng;\n let coord = new RwGeoPoint(lat, lng);\n //console.log(\"RwColorPicker.onCommit coord\", lat, lng);\n if (this.globals.showAddReport && coord.lat.toFixed(6) === this.globals.addReport.lat.toFixed(6) &&\n coord.lng.toFixed(6) === this.globals.addReport.lng.toFixed(6)) {\n this.globals.showSnack(\"Please select a gps location that is different than the current location.\");\n } else {\n this.$emit(\"onReloPick\", coord);\n this.close();\n }\n\n }\n\n\n onCancel() {\n this.close();\n }\n\n close() {\n this.globals.showSearchPanel = false;\n this.globals.m_showReloPicker = false;\n }\n\n\n //#endregion UI Nav\n\n\n //#region LifeCycle\n\n mounted() {\n //console.log('RwReloPicker.mounted initLat, initLng', this.initLat, this.initLng);\n this.centerLat = this.initLat;\n this.centerLng = this.initLng;\n this.mapInit();\n }\n\n //#endregion\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwReloPicker.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwReloPicker.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwReloPicker.vue?vue&type=style&index=0&id=4d85111b&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwReloPicker.vue?vue&type=template&id=4d85111b&scoped=true&\"\nimport script from \"./RwReloPicker.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwReloPicker.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwReloPicker.vue?vue&type=style&index=0&id=4d85111b&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"4d85111b\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"search-panel\",staticStyle:{\"height\":\"100%\",\"width\":\"100%\"}},[_c(VToolbar,{attrs:{\"dense\":\"\"}},[(this.showSearchOptions)?_c(VBtn,{attrs:{\"icon\":\"\"},on:{\"click\":_vm.onSearchSettings}},[_c(VIcon,[_vm._v(\"mdi-settings\")])],1):_vm._e(),_c(VSpacer),_c(VToolbarTitle,[_vm._v(\"Search Mode\")]),_c(VSpacer),_c(VBtn,{attrs:{\"rounded\":\"\",\"color\":\"primary\",\"small\":\"\"},on:{\"click\":_vm.onClose}},[_vm._v(\" Exit \")])],1),_c('RwSearchView',{attrs:{\"enable-search-actions\":_vm.enableSearchActions}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport RwSearchView from \"@/app/views/planner/RwSearchView.vue\";\n\n@Component({\n components: {RwSearchView}\n})\nexport default class RwSearchPanel extends Vue {\n @Prop({default: true}) ! showSearchOptions: boolean;\n @Prop({default: true}) ! enableSearchActions: boolean;\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get space(): RwPlannerSpace {\n return thePlan;\n }\n\n onClose() {\n this.globals.showSearchPanel = false;\n this.space.checkHistLimitPopups(this.space.activeRoute);\n this.space.searchReportInfo = [];\n if (this.globals.isMobileView) this.$emit('close');\n }\n\n onSearchSettings() {\n this.space.showSearchOptions = this.showSearchOptions;\n }\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchPanel.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchPanel.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchPanel.vue?vue&type=style&index=0&id=0458e23a&prod&lang=scss&scoped=true&\"","import { render, staticRenderFns } from \"./RwSearchPanel.vue?vue&type=template&id=0458e23a&scoped=true&\"\nimport script from \"./RwSearchPanel.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSearchPanel.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwSearchPanel.vue?vue&type=style&index=0&id=0458e23a&prod&lang=scss&scoped=true&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"0458e23a\",\n null\n \n)\n\nexport default component.exports","import { VAvatar } from 'vuetify/lib/components/VAvatar';\nimport { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemContent } from 'vuetify/lib/components/VList';\nimport { VListItemGroup } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemSubtitle } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMain } from 'vuetify/lib/components/VMain';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VCard,{staticStyle:{\"height\":\"calc(100% - 45px)\",\"width\":\"100%\",\"padding\":\"0\",\"margin\":\"0\"},attrs:{\"height\":\"100\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\",\"padding\":\"0\",\"margin\":\"0\",\"display\":\"flex\",\"flex-direction\":\"column\"}},[_c('input',{ref:\"hiddenNav\",staticStyle:{\"display\":\"block\",\"width\":\"100%\",\"height\":\"0\",\"opacity\":\"0\"},attrs:{\"type\":\"text\"},on:{\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;return _vm.previousItem.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;return _vm.nextItem.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"left\",37,$event.key,[\"Left\",\"ArrowLeft\"]))return null;if('button' in $event && $event.button !== 0)return null;return _vm.previousAction.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"right\",39,$event.key,[\"Right\",\"ArrowRight\"]))return null;if('button' in $event && $event.button !== 2)return null;return _vm.nextAction.apply(null, arguments)}],\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onSelectionEnter()},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.setFocusSearch.apply(null, arguments)}]}}),_c(VRow,{staticStyle:{\"flex\":\"0\",\"height\":\"48px\"},attrs:{\"no-gutters\":\"\"}},[(this.idxTab === 0)?_c(VToolbar,{staticStyle:{\"border-radius\":\"4px\"},attrs:{\"flat\":\"\",\"dense\":\"\"}},[_c(VTextField,{ref:\"search\",attrs:{\"autocomplete\":\"off\",\"dense\":\"\",\"autofocus\":\"\",\"clearable\":\"\",\"placeholder\":_vm.searchTextField,\"prepend-icon\":\"search\",\"id\":\"search\",\"disabled\":_vm.space.zoomLevel<=7,\"hint\":\"6 characters minimum, excluding spaces or special characters\",\"single-line\":\"\"},on:{\"change\":_vm.onSearchChange,\"input\":_vm.onSearchInput,\"click:clear\":_vm.onSearchClear,\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.clearResultsOrClose.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"tab\",9,$event.key,\"Tab\"))return null;$event.preventDefault();return _vm.setFocusNav('first')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onSearchEnter()}],\"keyup\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"up\",38,$event.key,[\"Up\",\"ArrowUp\"]))return null;return _vm.setFocusNav('last')},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"down\",40,$event.key,[\"Down\",\"ArrowDown\"]))return null;return _vm.setFocusNav('first')}]},model:{value:(_vm.searchText),callback:function ($$v) {_vm.searchText=$$v},expression:\"searchText\"}}),_c(VBtn,{attrs:{\"disabled\":_vm.isGpsButtonDisabled,\"icon\":\"\"},on:{\"click\":_vm.onSearchLocationClick}},[_c(VIcon,[_vm._v(\"my_location\")])],1)],1):_vm._e()],1),(_vm.gotSearchResults)?_c(VRow,{staticClass:\"flex-grow-1\",class:_vm.globals.theme,style:(`overflow-y: auto;${_vm.globals.isMobileView ? 'margin-left: 5px;margin-right: 5px':'margin-left: 8px;margin-right: 8px'}`),attrs:{\"no-gutters\":\"\"}},[_c(VList,{staticStyle:{\"width\":\"100%\"},attrs:{\"flat\":\"\",\"dense\":\"\"}},[_c(VListItemGroup,{attrs:{\"color\":\"primary\"},model:{value:(_vm.idxSearch),callback:function ($$v) {_vm.idxSearch=$$v},expression:\"idxSearch\"}},_vm._l((_vm.searchResults),function(result,idx){return _c(VListItem,{key:result.vueKey,class:`px-3 py-0 ${idx === _vm.activeListItem ? 'active-list-item': ''}`,style:(`${_vm.selectedResult === result && idx === _vm.activeListItem ? 'background: rgb(233, 30, 99);': ''} ${idx === _vm.activeListItem ? 'color: white!important;': ''}`),on:{\"contextmenu\":function($event){return _vm.showSearchMenu($event,result)},\"mouseover\":function($event){return _vm.setActiveListItem(idx, true)},\"mouseout\":function($event){return _vm.setActiveListItem(idx, false)},\"click\":function($event){return _vm.onSearchPick(result)}}},[_c(VListItemIcon,[_c(VAvatar,{attrs:{\"size\":\"24\"}},[_c(VIcon,{attrs:{\"width\":\"24\",\"height\":\"24\"}},[_vm._v(\" \"+_vm._s(result.icon)+\" \")])],1)],1),_c(VListItemContent,[_c(VListItemTitle,{staticClass:\"text-left search-result-title\"},[_vm._v(_vm._s(`${result.name}, ${result.address}`)+\" \")]),(_vm.globals.isMobileView)?_c(VBtn,{staticClass:\"search-result-actions\",attrs:{\"text\":\"\"}},[_c(VIcon,{on:{\"click\":function($event){_vm.showMobileActions=true}}},[_vm._v(\"mdi-dots-vertical\")])],1):_vm._e()],1),_c(VMenu,{attrs:{\"position-x\":_vm.menuX,\"position-y\":_vm.menuY,\"absolute\":\"\",\"offset-y\":\"\"},model:{value:(_vm.searchMenuVisible),callback:function ($$v) {_vm.searchMenuVisible=$$v},expression:\"searchMenuVisible\"}},[_c(VList,[_c(VListItem,{staticClass:\"d-block\",on:{\"click\":_vm.reportAddress}},[_c(VListItemTitle,{staticClass:\"pt-2\"},[_c('div',[_vm._v(\" Report Address Issue \")])]),_c(VListItemSubtitle,{staticClass:\"mt-2 pb-2\"},[_c('div',[_vm._v(\" \"+_vm._s(_vm.selectedAddress)+\" \")])])],1)],1)],1)],1)}),1)],1)],1):_c(VRow,{staticClass:\"flex-grow-1\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VMain,{staticClass:\"pa-0\",staticStyle:{\"color\":\"#777777\",\"font-size\":\"large\"}},[_vm._v(\" no data available \")])],1),(_vm.searchText.length > 10 && _vm.isDev)?_c(VRow,{staticClass:\"flex-grow-0 pa-3\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c(VMain,{staticClass:\"pa-0\",staticStyle:{\"color\":\"#777777\",\"font-size\":\"large\"}},[_c(VBtn,{staticClass:\"ma-3\",on:{\"click\":_vm.onAddMissingReportClick}},[_c(VIcon,{staticClass:\"pr-3\"},[_vm._v(\"mdi-map-marker-question\")]),_vm._v(\" Search isn't finding my address \")],1)],1)],1):_vm._e(),(_vm.gotSearchResults && _vm.enableSearchActions)?_c(VRow,{staticStyle:{\"flex\":\"0\",\"height\":\"75px\",\"width\":\"100%\"},attrs:{\"no-gutters\":\"\"}},[_c(VCardActions,{staticClass:\"px-0 w-full\",staticStyle:{\"height\":\"75px\"}},[(!_vm.globals.isMobileView)?[_c(VRow,{attrs:{\"no-gutters\":\"\"}},[_c(VCol,{attrs:{\"cols\":\"6\"}},[_c(VBtn,{staticClass:\"text-capitalize w-full\",attrs:{\"dense\":\"\",\"disabled\":!_vm.canAddStop,\"text\":\"\",\"color\":`${_vm.activeAction === 0 ? 'primary': ''}`},on:{\"click\":_vm.onAddStopClick}},[_c(VIcon,{staticClass:\"mr-1\",attrs:{\"color\":_vm.defaultStopColor}},[_vm._v(\"mdi-map-marker\")]),_vm._v(\" Add Stop \")],1)],1),_c(VCol,{attrs:{\"cols\":\"6\"}},[_c(VBtn,{staticClass:\"text-capitalize w-full\",attrs:{\"disabled\":!_vm.canAddSite,\"text\":\"\",\"color\":`${_vm.activeAction === 1 ? 'primary': ''}`},on:{\"click\":_vm.onAddSiteClick}},[_c(VIcon,{staticClass:\"mr-1\",attrs:{\"color\":_vm.defaultFavoriteColor}},[_vm._v(\"mdi-star\")]),_vm._v(\" Add Favorite \")],1)],1),(_vm.globals.isDisp)?_c(VCol,{attrs:{\"cols\":\"6\"}},[_c(VBtn,{staticClass:\"text-capitalize w-full\",attrs:{\"disabled\":!_vm.canAddTask,\"text\":\"\",\"color\":`${_vm.activeAction === 2 ? 'primary': ''}`},on:{\"click\":_vm.onAddTaskClick}},[_c(VIcon,{staticClass:\"mr-1\",attrs:{\"color\":_vm.defaultTaskColor}},[_vm._v(\"mdi-clipboard-check\")]),_vm._v(\" Add Task \")],1)],1):_vm._e(),_c(VCol,{attrs:{\"cols\":\"6\"}},[_c(VBtn,{staticClass:\"text-capitalize w-full\",attrs:{\"disabled\":!_vm.canUpdateStart,\"text\":\"\",\"color\":`${_vm.activeAction === 3 ? 'primary': ''}`},on:{\"click\":_vm.onUpdateStartClick}},[_c(VIcon,{staticClass:\"mr-1\"},[_vm._v(\"mdi-routes\")]),_vm._v(\" Set Start \")],1)],1)],1)]:[_c(VDialog,{model:{value:(_vm.showMobileActions),callback:function ($$v) {_vm.showMobileActions=$$v},expression:\"showMobileActions\"}},[_c(VList,[_c(VListItem,{attrs:{\"disabled\":!_vm.canAddStop},on:{\"click\":_vm.onAddStopClick}},[_vm._v(\" Add Stop \"),_c(VSpacer),_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-map-marker\")])],1),_c(VListItem,{attrs:{\"disabled\":!_vm.canAddSite},on:{\"click\":_vm.onAddSiteClick}},[_vm._v(\" Add Favorite \"),_c(VSpacer),_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-star\")])],1),(_vm.globals.isDisp)?_c(VListItem,{attrs:{\"disabled\":!_vm.canAddTask},on:{\"click\":_vm.onAddTaskClick}},[_vm._v(\" Add Task \"),_c(VSpacer),_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-clipboard-check\")])],1):_vm._e(),_c(VListItem,{attrs:{\"disabled\":!_vm.canUpdateStart},on:{\"click\":_vm.onUpdateStartClick}},[_vm._v(\" Set Start \"),_c(VSpacer),_c(VIcon,{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-routes\")])],1)],1)],1)]],2)],1):_vm._e()],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\nimport {Component, Prop, Vue, Watch} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport thePlan, {RwPlannerSpace} from \"@/app/views/planner/RwPlannerSpace\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport {RwTaskSearch} from \"@/app/dal/RwTaskSearch\";\nimport {RwAddReportEnum, RwAddStatusEnum, RwAddVoteEnum, RwLoginIssues, RwPinTypes, RwSearchType} from \"@/app/RwEnums\";\nimport {RwSearchResult} from \"@/app/dem/RwSearchResult\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwStop} from \"@/app/dem/RwStop\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport RwAddReport from \"@/app/dem/RwAddReport\";\nimport {RwConstants} from \"@/app/RwConstants\";\nimport {RwLoginError} from \"@/app/RwErrors\";\nimport dal from \"@/app/dal/RwDal\";\n\n@Component\nexport default class RwSearchView extends Vue {\n\n ///region Props\n\n @Prop({default: true}) ! enableSearchActions: boolean;\n\n idxSearch = -1;\n idxTab = 0;\n searchText = \"\";\n queryInProg: string;\n queryOnDeck: string;\n queryInProgTS = 0;\n overlay = true;\n absolute = true;\n opacity = 0.65;\n isGpsButtonDisabled = false;\n activeListItem = null;\n activeAction = null;\n showMobileActions = false;\n searchMenuVisible = false;\n menuX = 0;\n menuY = 0;\n\n // m_zoomCheck: boolean = false;\n\n\n get globals(): RwGlobals {\n return theGlobals\n };\n\n get space(): RwPlannerSpace {\n return thePlan;\n };\n\n get searchResults(): RwSearchResult[] {\n return [\n ...this.space.searchResultsCoords,\n ...this.space.searchResultsTasks,\n ...this.space.searchResultsSites,\n ...this.space.searchResultsWeb\n ];\n }\n\n get gotSearchResults() {\n return this.space.searchResultsTasks.length > 0 || this.space.searchResultsWeb.length > 0 || this.space.searchResultsSites.length > 0;\n //console.log(\"gotSearchResults\", gotResults);\n //return gotResults;\n }\n\n get isDev() {\n return this.globals.isDev;\n }\n\n get showActions(): boolean {\n //console.log(\"showActions\", !!this.selectedResult);\n return !!this.selectedResult;\n }\n\n get canAddStop() {\n return !!this.selectedResult && this.space.activeRoute.canAddToRoute(1);\n }\n\n get canAddSite() {\n return !!this.selectedResult && this.selectedResult.type != RwSearchType.Sites;\n }\n\n get canAddTask() {\n return !!this.selectedResult && this.selectedResult.type != RwSearchType.Tasks;\n }\n\n get canUpdateStart() {\n return !!this.selectedResult;\n }\n\n get isSearchMode(): boolean {\n //console.log(\"SearchView.GET.isSearchMode \")\n return this.globals.showSearchPanel;\n }\n\n taskColor = RwPrefUtils.taskColor;\n\n get defaultTaskColor() {\n return this.taskColor;\n }\n\n siteColor = RwPrefUtils.siteColor;\n\n get defaultFavoriteColor() {\n return this.siteColor;\n }\n\n stopColor = RwPrefUtils.stopColor;\n\n get defaultStopColor() {\n return this.stopColor;\n }\n\n // get showZoomSnack(): boolean {\n // let showZoom = false;\n // if (this.globals.showSearchPanel && this.space.zoomLevel <= 9) {\n // showZoom = true;\n // }\n // return showZoom;\n // }\n\n\n get idxSites(): { [id: string]: RwSite } {\n const self = this;\n let idxSites: { [id: string]: RwSite } = {};\n\n //build the index\n let sites = self.globals.sites;\n if (sites && sites.length > 0) {\n let counter = 0;\n sites.forEach(site => {\n counter++;\n let nameLower = site.name.toLowerCase();\n let addressLower = site.address ? site.address.toLowerCase() : \"\";\n let key = `${nameLower}:${addressLower}:${counter}`;\n idxSites[key] = site;\n });\n }\n //console.log(\"idxSites rebuilding index\");\n\n return idxSites;\n }\n\n\n get idxTasks(): { [id: string]: RwStop } {\n const self = this;\n let idxTasks: { [id: string]: RwStop } = {};\n\n //build the index\n let tasks = self.globals.tasks;\n //console.log(\"get idxTasks len\", tasks.length);\n if (tasks && tasks.length > 0) {\n let counter = 0;\n tasks.forEach(task => {\n counter++;\n let nameLower = task.name.toLowerCase();\n let addressLower = task.address ? task.address.toLowerCase() : \"\";\n let key = `${nameLower}:${addressLower}:${counter}`;\n idxTasks[key] = task;\n });\n }\n //console.log(\"idxSites rebuilding index\");\n\n return idxTasks;\n }\n\n get selectedAddress() {\n if (this.selectedResult) {\n return this.selectedResult.address;\n }\n return \"\";\n }\n\n get selectedResult(): RwSearchResult {\n return this.space.selectedSearchResult;\n }\n\n set selectedResult(value: RwSearchResult) {\n this.space.selectedSearchResult = value;\n }\n\n get searchTextField(): string {\n if (this.space.zoomLevel > 7) {\n return \"Address / Coordinates\";\n } else {\n return \"Zoom in on map to activate Search\"\n }\n }\n\n // get zoomCheck(): boolean {\n // return this.m_zoomCheck;\n // }\n //\n // set zoomCheck(value: boolean){\n // console.warn(\"zoomCheck set to: \", value);\n // this.m_zoomCheck = value;\n // }\n\n //#endregion\n\n\n //#region Search APIs\n\n onAddMissingReportClick() {\n const SOURCE = \"RwSearchView.onAddMissingReportClick\";\n let report = new RwAddReport();\n report.status = RwAddStatusEnum.Pending;\n report.type = RwAddReportEnum.Missing;\n report.vote = RwAddVoteEnum.Indeterminate;\n report.name = \"\";\n report.lat = 0;\n report.lng = 0;\n report.latDelta = RwPrefUtils.viewCenterLat;\n report.lngDelta = RwPrefUtils.viewCenterLng;\n report.address = \"\";\n report.userId = this.globals.userId;\n report.viewPort = `${RwPrefUtils.viewWest.toFixed(6)},${RwPrefUtils.viewSouth.toFixed(6)},\n ${RwPrefUtils.viewEast.toFixed(6)},${RwPrefUtils.viewNorth.toFixed(6)}`; // W S E N\n report.query = this.searchText;\n report.message = \"\";\n this.globals.showAddReport = false;\n this.globals.showAddMissingReport = true;\n this.globals.addReport = report;\n this.globals.showSearchPanel = false;\n this.searchMenuVisible = false;\n this.globals.showReloPicker(\"\", report.latDelta, report.lngDelta, false, true)\n .then(geoPoint => {\n this.globals.addReport.lngDelta = geoPoint.lng;\n this.globals.addReport.latDelta = geoPoint.lat;\n this.globals.addReport.step = 1;\n })\n .catch(() => {\n RwLog.error(SOURCE, `Error with relo picker choosing loc for new address \\n\\t Report:${JSON.stringify(report)}`);\n });\n }\n\n reportAddress() {\n const SOURCE = \"RwSearchView.ReportAddress\";\n //RwLog.consoleLog(\"Reporting \", this.selectedResult);\n let report = new RwAddReport();\n report.status = RwAddStatusEnum.Pending;\n report.type = RwAddReportEnum.Correction;\n report.vote = RwAddVoteEnum.Indeterminate;\n report.name = this.selectedResult.name;\n report.lat = this.selectedResult.lat;\n report.lng = this.selectedResult.lng;\n report.address = this.selectedResult.address;\n report.userId = this.globals.userId;\n report.viewPort = `${RwPrefUtils.viewWest.toFixed(6)},${RwPrefUtils.viewSouth.toFixed(6)},\n ${RwPrefUtils.viewEast.toFixed(6)},${RwPrefUtils.viewNorth.toFixed(6)}`; // W S E N\n report.query = this.searchText;\n report.message = `Correction for ${report.name}`;\n this.globals.showAddMissingReport = false;\n this.globals.showAddReport = true;\n this.globals.addReport = report;\n this.globals.showSearchPanel = false;\n this.searchMenuVisible = false;\n this.globals.showReloPicker(\"\", report.lat, report.lng, false, true)\n .then(geoPoint => {\n this.globals.addReport.lngDelta = geoPoint.lng;\n this.globals.addReport.latDelta = geoPoint.lat;\n this.globals.addReport.step = 1;\n })\n .catch(() => {\n RwLog.error(SOURCE, `Error with relo picker correcting address \\n\\t Report:${JSON.stringify(report)}`);\n\n });\n }\n\n showSearchMenu(e, result: RwSearchResult) {\n this.onSearchPick(result);\n e.preventDefault()\n this.searchMenuVisible = false;\n this.menuX = e.clientX;\n this.menuY = e.clientY;\n this.$nextTick(() => {\n this.searchMenuVisible = true\n })\n }\n\n onSearchPick(result: RwSearchResult) {\n this.setFocusNav();\n this.selectedResult = result;\n this.selectedResult.query = this.searchText;\n this.globals.centerMapData = {lat: result.lat, lng: result.lng};\n // let navLat = result.AccessPoint?.lat ?? result.lat;\n // let navLng = result.AccessPoint?.lng ?? result.lng;\n //RwTaskSearch.getAddOverride(result.name, result.address, result.lat, result.lng, navLat, navLng)\n\n // Skip get add override if geo coords\n if (result.address) {\n RwTaskSearch.getAddOverride(result.address)\n .then(override => {\n\n if (override && override.add === this.selectedResult.address) {\n this.selectedResult.lat = override.lat;\n this.selectedResult.lng = override.lng;\n\n this.selectedResult.navLat = override.navLat;\n this.selectedResult.navLng = override.navLng;\n\n // if (override.ports && override.ports.length > 0) {\n // this.selectedResult.navLat = override.ports[0].lat;\n // this.selectedResult.navLng = override.ports[0].lng;\n // }\n this.globals.centerMapData = {lat: this.selectedResult.lat, lng: this.selectedResult.lng};\n //const stopToUpdate = theGlobals.activeRoute.stops.find(s => s.stopId === addedStop.stopId);\n //const routeStopToUpdate = theGlobals.routes.find(rt => rt.routeId === stopToUpdate.routeId).stops.find(s => s.stopId === addedStop.stopId);\n\n }\n })\n .catch(err => {\n RwLog.warn(\"Get override failed\", err.toString());\n });\n }\n\n }\n\n\n onActionPick(pinType: RwPinTypes, result: RwSearchResult, entityId: string, message: string) {\n //console.log(\"onActionPick\", pinType, message)\n this.resetSearchInput();\n this.globals.showSnack(message, \"success\");\n this.space.searchPinData = {pinType: pinType, lat: result.lat, lng: result.lng, id: entityId};\n }\n\n\n onSearchInput() {\n // console.log(\"searchText:\", this.searchText);\n //this.resetLayers();\n // console.warn(\"onSearchInputReached\");\n let query = this.searchInputClean(this.searchText);\n // console.log(\"cleaned text:\", query);\n if (this.isSearchReady(query)) {\n // console.warn(\"isSearchReady success\");\n this.search(query);\n }\n }\n\n searchInputClean(searchText: string) {\n let clean = searchText?.replace(/[$%^;*\"{}|]/g, '') ?? \"\";\n // eventually replace with: let clean = searchText.replace(/[!@$%^&*(),?\":{}|<>]/g,'');\n\n return clean;\n\n }\n\n // @Watch(\"space.zoomLevel\")\n // watchZoomLevel(level: number){\n // // console.warn(\"watchZoomLevel triggered\");\n // // console.warn(\"zoomCheck: \", this.zoomCheck);\n // if(level>=7){\n // this.onSearchInput();\n // // console.warn(\"search input reached with search text:\", this.searchText);\n // }\n // }\n\n private isSearchReady(query: string): boolean {\n const self = this;\n let isReady = false;\n let now = Date.now();\n let minTimeMS = 1000;\n\n // if(this.space.zoomLevel>7){\n // console.warn(\"we have made it inside the zoom loop\");\n if (query && query.trim().length >= 4) {\n query = query.trim();\n if (!this.queryInProg) {\n isReady = true; //1st query\n } else {\n let isQueryDelta = query != this.queryInProg && query != this.queryOnDeck;\n if (isQueryDelta) {\n\n let elapsed = now - this.queryInProgTS;\n if (elapsed > minTimeMS) {\n //console.log(\"isSearchReady: elapsed > 1 second\", query);\n this.queryOnDeck = undefined;\n isReady = true;\n } else {\n //console.log(\"isSearchReady: queryOnDeck\", query);\n //Queue up: One time retry\n this.queryOnDeck = query;\n setTimeout(() => {\n if (query === this.queryOnDeck) {\n //console.log(\"isSearchReady: Retry\", query);\n this.queryOnDeck = undefined;\n self.search(query);\n } else {\n //console.warn(\"isSearchReady Retry: obviated\", query, this.queryOnDeck);\n }\n }, minTimeMS - elapsed);\n\n }\n }\n }\n }\n // }else{\n // // console.warn(\"still outside the zoom loop\");\n // // this.zoomCheck = true;\n // isReady=false;\n // }\n\n return isReady;\n }\n\n\n private search(query: string) {\n let now = Date.now();\n query = query.trim();\n this.queryInProg = query;\n this.queryInProgTS = now;\n this.activeListItem = this.selectedResult = null;\n let SOURCE = 'RwSearchView.search';\n\n if (/^(-?\\d+(\\.\\d+)?),\\s*(-?\\d+(\\.\\d+)?)$/.test(query)) {\n this.searchCoords(query)\n .then(res => this.updateSearchResults(res, RwSearchType.Coord))\n .catch(err => RwLog.consoleError(\"Error getting search coords\", err));\n } else {\n this.clearSearchCoords();\n }\n\n if (RwPrefUtils.searchWeb && query.length >= 6) {\n if (this.globals.token !== RwConstants.EmptyGuid && this.globals.userId !== RwConstants.EmptyGuid) {\n RwTaskSearch.getWebSuggestions(query, theGlobals.m_showReloPicker)\n .then(res => this.updateSearchResults(res, RwSearchType.Web))\n .catch(err => RwLog.consoleError(\"WTF: getSuggestions web error\", err))\n } else {\n RwLog.warn(SOURCE, `Force logout, Invalid token: ${RwPrefUtils.token} or userID: ${this.globals.userId}`);\n let logErr = new RwLoginError(403, true, null, RwLoginIssues.SeshExpired);\n dal.forceLogout(logErr);\n }\n }\n\n if (RwPrefUtils.searchSites) {\n RwTaskSearch.getSiteSuggestions(query, this.idxSites)\n .then(res => this.updateSearchResults(res, RwSearchType.Sites))\n .catch(err => RwLog.consoleError(\"WTF: getSuggestions sites error\", err))\n }\n\n if (RwPrefUtils.searchTasks && query.length >= 6) {\n RwTaskSearch.getTaskSuggestions(query, this.idxTasks)\n .then(res => this.updateSearchResults(res, RwSearchType.Tasks))\n .catch(err => RwLog.consoleError(\"WTF: getSuggestions tasks error\", err));\n }\n\n }\n\n\n onSearchEnter() {\n const source = \"RwSearchView.onSearchEnter\";\n let gotSelection = !!this.selectedResult;\n //console.log(`onInputEnter gotSelection: ${gotSelection}`)\n if (!gotSelection) {\n if (this.searchText != null && this.searchText.length > 3) {\n let isCoord = RwTextUtils.isCoordinate(this.searchText);\n //console.log(\"isCoord\", isCoord);\n if (isCoord) {\n let split = this.searchText.split(',');\n if (split.length === 2) {\n let lat = parseFloat(split[0]);\n let lng = parseFloat(split[1]);\n if (lat >= -90 && lat <= 90 && lng >= -180 && lng <= 180) {\n RwTaskSearch.geocode(this.searchText)\n .then(res => this.updateSearchResults(res, RwSearchType.Web))\n .catch(err => RwLog.consoleError(\"WTF: geocode web error\", err))\n } else {\n RwLog.warn(source, `Entered invalid gps coord to geocode, input: ${this.searchText}`);\n theGlobals.showSnack(\"Please enter a valid gps coordinate.\", \"error\");\n }\n } else {\n RwLog.error(source, `IsCoord true, but string.split length != 2, input: ${this.searchText}`);\n theGlobals.showSnack(\"Please enter a valid gps coordinate.\", \"error\");\n }\n } else {\n RwTaskSearch.geocode(this.searchText)\n .then(res => this.updateSearchResults(res, RwSearchType.Web))\n .catch(err => RwLog.consoleError(\"WTF: geocode web error\", err))\n }\n }\n }\n }\n\n\n private updateSearchResults(results: RwSearchResult[], searchType: RwSearchType) {\n //console.log(\"updateSearchResults\", searchType, results.length);\n\n //MONITOR: SEARCH: Make sure results are matched up for current query (use TS or counter)\n switch (searchType) {\n //@formatter:off\n case RwSearchType.Coord:\n this.space.searchResultsCoords = results;\n break;\n case RwSearchType.Web:\n this.space.searchResultsWeb = results;\n break;\n case RwSearchType.Sites:\n this.space.searchResultsSites = results;\n break;\n case RwSearchType.Tasks:\n this.space.searchResultsTasks = results;\n break;\n //@formatter:on\n }\n }\n\n\n onSearchChange() {\n //NOTE: Occurs when (text has changed && search looses focus)\n //console.log(\"onSearchChange\", this.searchText);\n }\n\n storeResultReport(result: RwSearchResult, entityId: string) {\n if (result) {\n let report = new RwAddReport();\n report.status = RwAddStatusEnum.Pending;\n report.type = RwAddReportEnum.Correction;\n report.vote = RwAddVoteEnum.Indeterminate;\n report.name = result.name;\n report.lat = result.lat;\n report.lng = result.lng;\n report.address = result.address;\n report.userId = this.globals.userId;\n report.viewPort = `${RwPrefUtils.viewWest.toFixed(6)},${RwPrefUtils.viewSouth.toFixed(6)},\n ${RwPrefUtils.viewEast.toFixed(6)},${RwPrefUtils.viewNorth.toFixed(6)}`; // W S E N\n report.query = this.searchText;\n report.message = `Correction for ${report.name}`;\n report.entityId = entityId;\n\n this.space.searchReportInfo.push(report);\n }\n\n }\n\n\n onSearchClear() {\n this.clearResults();\n }\n\n\n clearResults() {\n this.idxSearch = -1;\n this.searchText = \"\";\n this.selectedResult = null;\n this.space.searchResultsWeb = [];\n this.space.searchResultsSites = [];\n this.space.searchResultsTasks = [];\n }\n\n\n onSearchLocationClick() {\n const self = this;\n\n if (!self.isGpsButtonDisabled) {\n self.isGpsButtonDisabled = true;\n //console.log(\"onSearchLocationClick self.isGpsEnabled\", self.isGpsButtonDisabled);\n\n this.globals\n .checkGeoLocationPerms()\n .then((status) => {\n //console.log(\"onSearchLocationClick self.isGpsEnabled\", self.isGpsButtonDisabled);\n if (status && status.state) {\n switch (status.state) {\n case \"granted\":\n self.updateMapFromGpsFix();\n break;\n case \"denied\":\n self.isGpsButtonDisabled = false;\n self.globals.showSnack(\"GPS Permission was previously denied. To enable automatic map centering on your location, you can update your preference in Browser >> Settings >> Permissions >> Location \", \"warning\")\n break;\n case \"prompt\":\n //Permission Priming Goes Here\n self.isGpsButtonDisabled = false;\n self.globals\n .showConfirmDialog(\n \"Grant Location Permission\",\n \"Allowing location permission will enable the RoadWarrior app to automatically center the map on your position. Do you want to grant this permission now?\",\n \"Yes\",\n \"No\")\n .then((isYes) => {\n if (isYes) {\n self.globals.promptForLocationPermission()\n .then((isGranted => {\n if (isGranted) {\n self.updateMapFromGpsFix();\n }\n }))\n }\n });\n }\n }\n });\n }\n }\n\n\n updateMapFromGpsFix() {\n const self = this;\n RwGlobals\n .getGeolocation()\n .then((pos) => {\n self.isGpsButtonDisabled = false;\n if (pos && pos.coords) {\n let lat = pos.coords.latitude;\n let lng = pos.coords.longitude\n //console.log(\"getGeolocation => \", lat, lng)\n self.space.mapCentroid = {lat: lat, lng: lng, zoom: 12.0};\n }\n });\n }\n\n\n // onSearchSelect() {\n // //console.log(\"onSearchSelect\");\n // if (this.selectedResult) {\n // let result = this.selectedResult;\n // //console.log(\"onSearchSelect selected: \", result.name, result.address);\n // }\n // }\n\n\n //#endregion Search APIs\n\n\n //#region Search Result Actions\n\n onAddStopClick() {\n const self = this;\n let selResult = self.selectedResult;\n if (selResult) {\n this.globals.centerMapData = {lat: 0, lng: 0};\n // this.space.showDataLayerRoute = true;\n if (selResult.address) {\n this.space\n .addStopFromSearch(selResult)\n .then(addedStop => {\n this.storeResultReport(selResult, addedStop.stopId);\n if (this.globals.editAfterAdd) this.globals.recentStopAdd = true;\n //self.resetSearchInput();\n //self.globals.showSnack(\"Stop added to route \", \"success\")\n self.onActionPick(RwPinTypes.Stop, selResult, addedStop.stopId, \"Stop added to route\");\n })\n .catch(err => {\n self.globals.showSnack(\"Add Stop Failed\", \"error\")\n RwLog.consoleError(\"WTF: addStopFromSearch FAIL\", err.toString());\n });\n } else {\n this.space\n .addStopFromSearch(selResult)\n .then(addedStop => {\n if (this.globals.editAfterAdd) this.globals.recentStopAdd = true;\n\n //self.resetSearchInput();\n //self.globals.showSnack(\"Stop added to route \", \"success\")\n self.onActionPick(RwPinTypes.Stop, selResult, addedStop.stopId, \"Stop added to route\")\n })\n .catch(err => {\n self.globals.showSnack(\"Add Stop Failed\", \"error\")\n RwLog.consoleError(\"WTF: addStopFromSearch FAIL\", err.toString());\n });\n }\n }\n }\n\n\n onAddSiteClick() {\n const self = this;\n if (this.selectedResult) {\n this.globals.centerMapData = {lat: 0, lng: 0};\n // this.space.showDataLayerSites = true;\n this.space\n .addSiteFromSearch(self.selectedResult)\n .then(siteAdded => {\n if (siteAdded) {\n this.storeResultReport(this.selectedResult, siteAdded.siteId);\n self.onActionPick(RwPinTypes.Site, self.selectedResult, siteAdded.siteId, \"Favorite Created\")\n } else {\n self.globals.showSnack(\"Create Favorite Failed\", \"error\")\n RwLog.warn(\"onAddSiteClick\", `Create favorite failed, user selected no to adding duplicate\n selected result:${JSON.stringify(this.selectedResult)}`);\n }\n\n // self.resetSearchInput();\n // self.globals.showSnack(\"Favorite Created\", \"success\")\n })\n .catch(err => {\n self.globals.showSnack(\"Create Favorite Failed\", \"error\")\n RwLog.consoleError(\"WTF: onAddSiteClick FAIL\", err.toString());\n });\n }\n }\n\n\n onAddTaskClick() {\n const self = this;\n if (this.selectedResult) {\n this.globals.centerMapData = {lat: 0, lng: 0};\n // this.space.showDataLayerTasks = true;\n\n this.space\n .addTaskFromSearch(self.selectedResult)\n .then(task => {\n this.storeResultReport(this.selectedResult, task.stopId);\n self.onActionPick(RwPinTypes.Task, self.selectedResult, task.stopId, \"Task Created\")\n if (self.globals.editAfterAdd) {\n this.globals.recentStopAdd = true;\n self.globals.showStopEdit(task);\n }\n // self.resetSearchInput();\n // self.globals.showSnack(\"Task Created\", \"success\")\n })\n .catch(err => {\n self.globals.showSnack(\"Add Task Failed\", \"error\")\n RwLog.consoleError(\"WTF: onAddTaskClick FAIL\", err.toString());\n });\n }\n }\n\n\n onUpdateStartClick() {\n const self = this;\n //console.log(\"onUpdateStartClick\");\n if (this.selectedResult) {\n this.globals.centerMapData = {lat: 0, lng: 0};\n this.space.showDataLayerRoute = true;\n this.space.updateStartFromSearch(self.selectedResult)\n .then(res => {\n self.onActionPick(RwPinTypes.Route, self.selectedResult, \"\", \"Route Start Updated\")\n // self.resetSearchInput();\n // self.globals.showSnack(\"Route Start Updated\", \"success\")\n //console.log(\"updateStartFromSearch success\");\n })\n .catch(err => {\n self.globals.showSnack(\"Route Start Failed\", \"error\")\n RwLog.consoleError(\"WTF: updateStartFromSearch FAIL\", err.toString());\n });\n }\n\n }\n\n\n resetSearchInput() {\n this.clearResults()\n let txtSearch = (this.$refs.search as HTMLInputElement);\n this.$nextTick(() => txtSearch.focus());\n }\n\n\n //#endregion Search Actions\n\n\n //#region LifeCycle\n\n\n @Watch(\"isSearchMode\")\n watchShowSearchPanel(isSearchMode: boolean) {\n const self = this;\n this.clearResults();\n //console.log(\"RwSearchView.watchShowSearchPanel\", isSearchMode)\n if (isSearchMode) {\n setTimeout(function () {\n (self.$refs.search as HTMLInputElement).focus();\n }, 100);\n }\n }\n\n\n mounted() {\n //console.log(\"mounted\");\n this.clearResults();\n }\n\n //#endregion LifeCycle\n\n\n //region Keyboard Navigation\n\n selectItem() {\n this.onSearchPick(this.searchResults[this.activeListItem]);\n if (this.activeAction === null) this.nextAction();\n this.idxSearch = this.activeListItem;\n }\n\n previousItem() {\n if (this.activeListItem === null) {\n this.activeListItem = this.searchResults.length - 1;\n } else if (this.activeListItem >= 0) {\n this.activeListItem--;\n }\n this.selectItem();\n if (this.activeListItem === -1) this.setFocusSearch();\n }\n\n nextItem() {\n if (this.activeListItem === null) {\n this.activeListItem = 0;\n } else {\n if (this.activeListItem < this.searchResults.length - 1) this.activeListItem++;\n }\n this.selectItem();\n }\n\n previousAction() {\n if (!this.selectedResult) return;\n if (this.activeAction === null) {\n this.activeAction = 3;\n } else {\n this.activeAction--;\n }\n switch (this.activeAction) {\n case -1:\n this.nextAction();\n break;\n case 0:\n if (!this.canAddStop) this.nextAction();\n break;\n case 1:\n if (!this.canAddSite) this.previousAction();\n break;\n case 2:\n if (!this.globals.isDisp || !this.canAddTask) this.previousAction();\n break;\n case 3:\n if (!this.canUpdateStart) this.previousAction();\n break;\n }\n }\n\n nextAction() {\n if (!this.selectedResult) return;\n if (this.activeAction === null) {\n this.activeAction = 0;\n } else {\n this.activeAction++;\n }\n switch (this.activeAction) {\n case 0:\n if (!this.canAddStop) this.nextAction();\n break;\n case 1:\n if (!this.canAddSite) this.nextAction();\n break;\n case 2:\n if (!this.globals.isDisp || !this.canAddTask) this.nextAction();\n break;\n case 3:\n if (!this.canUpdateStart) this.previousAction();\n break;\n case 4:\n this.previousAction();\n break;\n }\n }\n\n setActiveListItem(idx, active) {\n this.activeListItem = active ? idx : null;\n }\n\n setFocusNav(position: string = null) {\n (this.$refs.hiddenNav as HTMLInputElement).focus();\n if (position === \"first\") {\n this.nextItem();\n } else if (position === \"last\") {\n this.previousItem();\n }\n }\n\n setFocusSearch() {\n this.$nextTick(() => (this.$refs.search as HTMLInputElement).focus());\n this.activeListItem = null;\n this.activeAction = null;\n }\n\n onSelectionEnter() {\n\n switch (this.activeAction) {\n case 0:\n this.onAddStopClick();\n break;\n case 1:\n this.onAddSiteClick();\n break;\n case 2:\n this.onAddTaskClick();\n break;\n case 3:\n this.onUpdateStartClick();\n break;\n }\n this.activeListItem = null;\n this.activeAction = null;\n }\n\n clearResultsOrClose(event) {\n if (event.target.value) {\n this.clearResults();\n } else {\n this.globals.showSearchPanel = false;\n }\n }\n\n //endregion Keyboard Navigation\n async searchCoords(query: string) {\n let [lat, lng]: any[] = query.split(\",\");\n lat = Number(lat);\n lng = Number(lng);\n if (lat <= 90 && lat >= -90 && lng <= 180 && lng >= -180) {\n const result = new RwSearchResult({\n name: `Latitude: ${lat}, Longitude: ${lng}`,\n lat,\n lng,\n type: RwSearchType.Coord\n });\n return [result];\n } else {\n throw new Error(\"Lat and Lng malformed.\");\n }\n }\n\n async clearSearchCoords() {\n this.updateSearchResults([], RwSearchType.Coord);\n }\n\n activated() {\n this.stopColor = RwPrefUtils.stopColor;\n this.taskColor = RwPrefUtils.taskColor;\n this.siteColor = RwPrefUtils.siteColor;\n }\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchView.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchView.vue?vue&type=script&lang=ts&\"","// extracted by mini-css-extract-plugin\nexport {};","export * from \"-!../../../../node_modules/@vue/cli-service/node_modules/mini-css-extract-plugin/dist/loader.js??clonedRuleSet-22.use[0]!../../../../node_modules/@vue/cli-service/node_modules/css-loader/dist/cjs.js??clonedRuleSet-22.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/loaders/stylePostLoader.js!../../../../node_modules/@vue/cli-service/node_modules/postcss-loader/dist/cjs.js??clonedRuleSet-22.use[2]!../../../../node_modules/sass-loader/dist/cjs.js??clonedRuleSet-22.use[3]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSearchView.vue?vue&type=style&index=0&id=7651f680&prod&scoped=true&lang=scss&\"","import { render, staticRenderFns } from \"./RwSearchView.vue?vue&type=template&id=7651f680&scoped=true&\"\nimport script from \"./RwSearchView.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSearchView.vue?vue&type=script&lang=ts&\"\nimport style0 from \"./RwSearchView.vue?vue&type=style&index=0&id=7651f680&prod&scoped=true&lang=scss&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"7651f680\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VCheckbox } from 'vuetify/lib/components/VCheckbox';\nimport { VCol } from 'vuetify/lib/components/VGrid';\nimport { VColorPicker } from 'vuetify/lib/components/VColorPicker';\nimport { VContainer } from 'vuetify/lib/components/VGrid';\nimport { VDataTable } from 'vuetify/lib/components/VDataTable';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VDivider } from 'vuetify/lib/components/VDivider';\nimport { VForm } from 'vuetify/lib/components/VForm';\nimport { VIcon } from 'vuetify/lib/components/VIcon';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VList } from 'vuetify/lib/components/VList';\nimport { VListItem } from 'vuetify/lib/components/VList';\nimport { VListItemIcon } from 'vuetify/lib/components/VList';\nimport { VListItemTitle } from 'vuetify/lib/components/VList';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VSubheader } from 'vuetify/lib/components/VSubheader';\nimport { VSwitch } from 'vuetify/lib/components/VSwitch';\nimport { VTabItem } from 'vuetify/lib/components/VTabs';\nimport { VTabsItems } from 'vuetify/lib/components/VTabs';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTextarea } from 'vuetify/lib/components/VTextarea';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\nimport { VTooltip } from 'vuetify/lib/components/VTooltip';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"overlay-color\":\"#000\",\"overlay-opacity\":\".65\",\"persistent\":\"\",\"content-class\":\"dialog-with-scroll\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.close.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onCommitClick.apply(null, arguments)}]},model:{value:(_vm.globals.m_showSiteEdit),callback:function ($$v) {_vm.$set(_vm.globals, \"m_showSiteEdit\", $$v)},expression:\"globals.m_showSiteEdit\"}},[_c(VCard,{staticClass:\"dialog-card\"},[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\",\"max-height\":\"48px\"}},[_c(VImg,{staticStyle:{\"max-width\":\"56px\"},attrs:{\"src\":_vm.siteUrl,\"contain\":\"\",\"height\":\"32px\",\"width\":\"32px\"}}),_c(VToolbarTitle,[_vm._v(_vm._s(_vm.title))]),_c(VSpacer)],1),_c(VCardText,{staticClass:\"mt-4\",class:_vm.globals.theme,staticStyle:{\"height\":\"calc(100% - 80px)\",\"width\":\"100%\",\"overflow-y\":\"auto\"}},[_c(VRow,{staticClass:\"pa-0\"},[_c(VTabsItems,{staticStyle:{\"height\":\"100%\",\"width\":\"100%\"},attrs:{\"grow\":\"\",\"solo-inverted\":\"\"},model:{value:(_vm.idxTab),callback:function ($$v) {_vm.idxTab=$$v},expression:\"idxTab\"}},[_c(VTabItem,{key:\"0\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VCol,{staticClass:\"pa-0\"},[_c(VForm,{ref:\"form\",attrs:{\"lazy-validation\":\"\"},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"label\":\"Name\",\"clearable\":\"\",\"rules\":_vm.siteNameRules,\"filled\":\"\"},model:{value:(_vm.nameText),callback:function ($$v) {_vm.nameText=$$v},expression:\"nameText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"clearable\":\"\",\"label\":\"Address\",\"rules\":_vm.addressRules},model:{value:(_vm.addressText),callback:function ($$v) {_vm.addressText=$$v},expression:\"addressText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"clearable\":\"\",\"label\":\"Phone Number\"},model:{value:(_vm.phoneText),callback:function ($$v) {_vm.phoneText=$$v},expression:\"phoneText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{attrs:{\"filled\":\"\",\"clearable\":\"\",\"label\":\"E-mail\"},model:{value:(_vm.emailText),callback:function ($$v) {_vm.emailText=$$v},expression:\"emailText\"}})],1),_c(VRow,{staticClass:\"ma-1\",attrs:{\"dense\":\"\",\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextarea,{attrs:{\"auto-grow\":\"\",\"no-resize\":\"\",\"rows\":\"1\",\"row-height\":\"24\",\"filled\":\"\",\"clearable\":\"\",\"label\":\"Note\",\"hint\":\"Use up to 1000 Characters\"},model:{value:(_vm.noteText),callback:function ($$v) {_vm.noteText=$$v},expression:\"noteText\"}})],1)],1)],1)],1),_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"height\":\"48px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\"},on:{\"click\":_vm.onVisitClick}},[_c('div',{staticClass:\"text-left text-center\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Visit Time:\")]),_c('div',{staticClass:\"text-right\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\" \"+_vm._s(_vm.visitText)+\" \"),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)]),_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"height\":\"48px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\"},on:{\"click\":function($event){_vm.idxTab = 3}}},[_c('div',{staticClass:\"text-left text-center\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Display Color:\")]),_c('div',{staticClass:\"text-right\",staticStyle:{\"font-size\":\"small\"}},[_c(VIcon,{attrs:{\"color\":_vm.siteColor}},[_vm._v(\"mdi-star-circle\")]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)]),_c(VRow,{staticClass:\"ma-1\",staticStyle:{\"min-height\":\"48px\"},attrs:{\"align\":\"center\",\"justify\":\"space-between\"},on:{\"click\":function($event){_vm.idxTab = 1}}},[_c('div',{staticClass:\"text-left\",staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Manage Hours:\")]),_c('div',{staticClass:\"text-right\",staticStyle:{\"font-size\":\"small\"}},[_c(VTooltip,{attrs:{\"bottom\":\"\",\"color\":\"#222\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VIcon,_vm._g({attrs:{\"color\":\"grey\"}},on),[_vm._v(\"mdi-calendar-clock\")])]}}])},[_c('div',{staticClass:\"pre text-left\"},[_vm._v(\" \"+_vm._s(_vm.hoursList)+\" \")])]),_c(VIcon,[_vm._v(\"mdi-chevron-right\")])],1)])],1)],1),_c(VTabItem,{key:\"1\"},[_c(VCardText,[_c(VRow,{staticStyle:{\"font-size\":\"small\"},attrs:{\"justify\":\"center\",\"align\":\"center\"}},[(_vm.hours)?_c(VDataTable,{staticStyle:{\"overflow-y\":\"auto\",\"overflow-x\":\"auto\",\"height\":\"calc(100% - 36px) !important\",\"padding-left\":\"0\",\"padding-right\":\"0\"},attrs:{\"headers\":_vm.headers,\"items\":_vm.hours,\"hide-default-footer\":\"\"},scopedSlots:_vm._u([{key:\"item.timeStart\",fn:function({ item }){return [_c('div',{staticClass:\"align-center font-weight-bold\",staticStyle:{\"font-size\":\"x-small\"}},[_vm._v(\" \"+_vm._s(_vm.skedTimeFrame(item))+\" \")])]}},{key:\"item.Monday\",fn:function({ item }){return [(item.Monday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Tuesday\",fn:function({ item }){return [(item.Tuesday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Wednesday\",fn:function({ item }){return [(item.Wednesday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Thursday\",fn:function({ item }){return [(item.Thursday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Friday\",fn:function({ item }){return [(item.Friday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Saturday\",fn:function({ item }){return [(item.Saturday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.Sunday\",fn:function({ item }){return [(item.Sunday)?_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-check\")]):_vm._e()]}},{key:\"item.action\",fn:function({ item }){return [_c(VMenu,{scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VBtn,_vm._g({attrs:{\"icon\":\"\"},on:{\"click\":function($event){$event.stopPropagation();$event.preventDefault();}}},on),[_c(VIcon,{attrs:{\"small\":\"\"}},[_vm._v(\"mdi-dots-vertical\")])],1)]}}],null,true)},[_c(VList,{staticStyle:{\"text-align\":\"left\"},attrs:{\"dense\":\"\"}},[_c(VSubheader,[_vm._v(_vm._s(item.displayHours))]),_c(VDivider),_c(VListItem,{on:{\"click\":function($event){return _vm.onEditHours(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-pencil\")])],1),_c(VListItemTitle,[_vm._v(\"Edit\")])],1),(_vm.globals.isActionAvailable(_vm.globals.Actions.deleteSked))?_c(VListItem,{on:{\"click\":function($event){return _vm.onDeleteHours(item)}}},[_c(VListItemIcon,[_c(VIcon,[_vm._v(\"mdi-delete\")])],1),_c(VListItemTitle,[_vm._v(\"Delete\")])],1):_vm._e()],1)],1)]}}],null,false,3335450938)}):_vm._e()],1)],1)],1),_c(VTabItem,{key:\"2\"},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"menu1\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.startDisplay),callback:function ($$v) {_vm.startDisplay=$$v},expression:\"startDisplay\"}},on))]}}]),model:{value:(_vm.menuStart),callback:function ($$v) {_vm.menuStart=$$v},expression:\"menuStart\"}},[(_vm.menuStart)?_c(VTimePicker,{attrs:{\"ampm-in-title\":_vm.is12H,\"color\":\"primary\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.menu1.save(_vm.time)}},model:{value:(_vm.startTime),callback:function ($$v) {_vm.startTime=$$v},expression:\"startTime\"}}):_vm._e()],1),_c(VMenu,{ref:\"menu2\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"return-value\":_vm.time,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},on:{\"update:returnValue\":function($event){_vm.time=$event},\"update:return-value\":function($event){_vm.time=$event}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Finish Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.finishDisplay),callback:function ($$v) {_vm.finishDisplay=$$v},expression:\"finishDisplay\"}},on))]}}]),model:{value:(_vm.menuFinish),callback:function ($$v) {_vm.menuFinish=$$v},expression:\"menuFinish\"}},[(_vm.menuFinish)?_c(VTimePicker,{attrs:{\"ampm-in-title\":_vm.is12H,\"color\":\"primary\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.menu2.save(_vm.time)}},model:{value:(_vm.finishTime),callback:function ($$v) {_vm.finishTime=$$v},expression:\"finishTime\"}}):_vm._e()],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VCol,{staticClass:\"ma-0 pa-0\"},[_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Monday\"},model:{value:(_vm.skedDays[0]),callback:function ($$v) {_vm.$set(_vm.skedDays, 0, $$v)},expression:\"skedDays[0]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Tuesday\"},model:{value:(_vm.skedDays[1]),callback:function ($$v) {_vm.$set(_vm.skedDays, 1, $$v)},expression:\"skedDays[1]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Wednesday\"},model:{value:(_vm.skedDays[2]),callback:function ($$v) {_vm.$set(_vm.skedDays, 2, $$v)},expression:\"skedDays[2]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Thursday\"},model:{value:(_vm.skedDays[3]),callback:function ($$v) {_vm.$set(_vm.skedDays, 3, $$v)},expression:\"skedDays[3]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Friday\"},model:{value:(_vm.skedDays[4]),callback:function ($$v) {_vm.$set(_vm.skedDays, 4, $$v)},expression:\"skedDays[4]\"}})],1)]),_c(VCol,{staticClass:\"ma-0 pa-0\"},[_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Saturday\"},model:{value:(_vm.skedDays[5]),callback:function ($$v) {_vm.$set(_vm.skedDays, 5, $$v)},expression:\"skedDays[5]\"}})],1),_c('div',{staticClass:\"text-left\",staticStyle:{\"height\":\"24px\"}},[_c(VCheckbox,{staticStyle:{\"font-size\":\"small\"},attrs:{\"label\":\"Sunday\"},model:{value:(_vm.skedDays[6]),callback:function ($$v) {_vm.$set(_vm.skedDays, 6, $$v)},expression:\"skedDays[6]\"}})],1)])],1)],1),_c(VTabItem,{key:\"3\"},[[_c(VRow,{staticClass:\"ma-4\",attrs:{\"justify\":\"space-around\",\"align\":\"center\"}},[_c(VColorPicker,{attrs:{\"swatches\":_vm.globals.swatches,\"hide-sliders\":\"\",\"flat\":\"\",\"hide-canvas\":\"\",\"hide-inputs\":\"\",\"show-swatches\":\"\",\"swatches-max-height\":\"200\"},model:{value:(_vm.siteColor),callback:function ($$v) {_vm.siteColor=$$v},expression:\"siteColor\"}})],1)]],2),_c(VTabItem,{key:\"4\",staticStyle:{\"height\":\"100%\"}},[_c(VContainer,{staticStyle:{\"height\":\"100%\"}},[_c(VRow,{attrs:{\"align\":\"start\",\"no-gutters\":\"\"}},[_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Override Default:\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"Set a specific visit time for this stop.\")])]),_c(VSwitch,{model:{value:(_vm.isVisitOverride),callback:function ($$v) {_vm.isVisitOverride=$$v},expression:\"isVisitOverride\"}})],1),_c(VRow,{staticClass:\"mt-4\",staticStyle:{\"height\":\"100%\"},attrs:{\"align\":\"center\",\"justify\":\"center\",\"no-gutters\":\"\"}},[_c(VCol,{staticClass:\"text-left\"},[_c('div',{staticStyle:{\"font-weight\":\"bolder\"}},[_vm._v(\"Visit Time (minutes):\")]),_c('div',{staticStyle:{\"font-size\":\"small\"}},[_vm._v(\"The expected amount of time spent at this stop.\")])]),_c(VTextField,{staticClass:\"text-right\",staticStyle:{\"max-width\":\"128px\"},attrs:{\"reverse\":\"\",\"rules\":[_vm.rules.required, _vm.rules.visitRange],\"disabled\":!_vm.m_visitOver,\"dense\":\"\",\"filled\":\"\",\"single-line\":\"\",\"type\":\"number\",\"hint\":\"Between 0 to 999\",\"persistent-hint\":true},model:{value:(_vm.visitTimeCalc),callback:function ($$v) {_vm.visitTimeCalc=$$v},expression:\"visitTimeCalc\"}})],1)],1)],1)],1)],1)],1)],1),_c(VCardActions,[(_vm.idxTab !== 0)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":_vm.onBackClick}},[_vm._v(\" Back \")]):_vm._e(),_c(VSpacer),(_vm.idxTab === 0)?_c(VBtn,{attrs:{\"xs6\":\"\",\"text\":\"\"},on:{\"click\":function($event){return _vm.close()}}},[_vm._v(\" Cancel \")]):_vm._e(),(_vm.showSave)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.canSave},on:{\"click\":_vm.onCommitClick}},[_vm._v(\" Save \")]):_vm._e(),(_vm.idxTab === 1)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.createSked}},[_vm._v(\" Add Hours \")]):_vm._e(),(_vm.idxTab === 2)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.canApplySked},on:{\"click\":_vm.saveSchedule}},[_vm._v(\" Apply \")]):_vm._e(),(_vm.idxTab === 4)?_c(VBtn,{attrs:{\"xs6\":\"\",\"color\":\"primary\",\"text\":\"\",\"disabled\":!_vm.canApplyVisit},on:{\"click\":_vm.onCommitVisitTime}},[_vm._v(\" Apply \")]):_vm._e()],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theSiteSpace, {RwSiteSpace} from \"@/app/views/sites/RwSiteSpace\";\nimport {RwSite} from \"@/app/dem/RwSite\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwSysUtils} from \"@/app/utils/RwSysUtils\";\nimport {RwTaskSkeds} from \"@/app/dal/RwTaskSkeds\";\nimport theStore from \"@/store\"\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport {RwDateUtils} from \"@/app/utils/RwDateUtils\";\nimport {RwTextUtils} from \"@/app/utils/RwTextUtils\";\nimport {RwPrefUtils} from \"@/app/utils/RwPrefUtils\";\nimport moment from \"moment\";\nimport {RwStop} from \"@/app/dem/RwStop\";\n\n@Component\nexport default class RwSiteEdit extends Vue {\n\n //region Props\n\n @Prop(RwSite) readonly initSite: RwSite;\n\n idxTab: number = 0;\n updatedEmail: string = this.selectedSite.email;\n updatedPhone: string = this.selectedSite.phone;\n updatedNote: string = this.selectedSite.note;\n updatedAddress: string = this.selectedSite.address;\n updatedName: string = this.selectedSite.name;\n updatedScv: number = this.selectedSite.visitTime;\n\n hours: RwSked[] = this.selectedSite.getActiveAvailability();\n selectedSked: RwSked;\n isNewSked: boolean = false;\n skedName: string = \"Restricted Hours\";\n skedDays: boolean[] = [false, false, false, false, false, false, false];\n skedStartTime: number = -1;\n skedFinishTime: number = -1;\n calculatedDuration = -1;\n baseColor = this.selectedSite.baseColor;\n visitTime = this.selectedSite.visitTime;\n valid: boolean = false;\n // skedStartTimeLK: number = -1;\n // deleteSelectText = \"Select a Schedule to Edit\";\n // deleteActive = false;\n // deleteColor = \"color: white\";\n\n\n get space(): RwSiteSpace {\n return theSiteSpace;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get dateUtils(): RwDateUtils {\n return RwDateUtils\n }\n\n get title(): string {\n //Edit: {{selectedSite.name}}\n let titleText = \"Edit Site\"\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n titleText = `Edit Favorite: ${this.selectedSite.name}`;\n break;\n case 1:\n titleText = `Manage Hours`;\n break;\n case 2:\n titleText = this.isNewSked ? \"Add Hours\" : `Edit Hours`;\n break;\n case 3:\n titleText = `Edit Color`;\n break;\n case 4:\n titleText = `Edit Visit Time`;\n break;\n default:\n titleText = `Edit: ${this.selectedSite.name}`\n break;\n //@formatter:on\n }\n return titleText;\n }\n\n get is12H(): boolean {\n return RwDateUtils.is12H;\n }\n\n get selectedSite(): RwSite {\n return this.initSite;\n }\n\n get siteUrl(): string {\n let url: string = \"\";\n if (this.selectedSite) {\n url = this.selectedSite.dataUrl;\n }\n return url;\n }\n\n\n get showSave(): boolean {\n return this.idxTab == 0\n }\n\n get gotHours(): boolean {\n let gotHours = false;\n if (this.hours && this.hours.length > 0) {\n gotHours = true;\n }\n return gotHours;\n }\n\n get hoursList(): string {\n let text = \"Unrestricted\";\n if (this.hours && this.hours.length > 0) {\n text = \"\";\n this.hours.forEach(h => {\n let line = h.displayFull;\n text += (text === \"\") ? line : \"\\n\" + line;\n })\n }\n return text;\n }\n\n //endregion Props ..\n\n\n //#region Summary Props\n\n get selectedHoursName(): string {\n return this.skedName;\n }\n\n set selectedHoursName(hoursName: string) {\n this.skedName = hoursName;\n }\n\n get emailText(): string {\n return this.updatedEmail\n }\n\n set emailText(emailBoxText: string) {\n if (emailBoxText) {\n this.updatedEmail = (emailBoxText.length > 254) ? emailBoxText.substr(0, 254) : emailBoxText;\n } else {\n this.updatedEmail = \"\"\n }\n }\n\n get phoneText(): string {\n\n return this.updatedPhone\n }\n\n set phoneText(phoneBoxText: string) {\n if (phoneBoxText) {\n this.updatedPhone = (phoneBoxText.length > 25) ? phoneBoxText.substr(0, 25) : phoneBoxText;\n } else {\n this.updatedPhone = \"\";\n }\n }\n\n get noteText(): string {\n return this.updatedNote\n }\n\n set noteText(noteBoxText: string) {\n if (noteBoxText) {\n this.updatedNote = (noteBoxText.length > 1000) ? noteBoxText.substr(0, 1000) : this.updatedNote = noteBoxText;\n } else {\n this.updatedNote = noteBoxText;\n }\n }\n\n get addressText(): string {\n return this.selectedSite.address\n }\n\n set addressText(addressBoxText: string) {\n this.updatedAddress = addressBoxText\n }\n\n get nameText(): string {\n return this.selectedSite.name\n }\n\n set nameText(nameBoxText: string) {\n this.updatedName = nameBoxText\n }\n\n get scvTime(): number {\n return (this.selectedSite.visitTime == -1) ? 10 : this.selectedSite.visitTime;\n }\n\n set scvTime(boxNumber: number) {\n this.updatedScv = (boxNumber < 1) ? 10 : boxNumber;\n }\n\n //#endregion\n\n\n //#region DatePicker Props\n\n skedStartMins = RwPrefUtils.skedStartMins;\n skedFinishMins = RwPrefUtils.skedFinishMins;\n menuStart = false;\n menuFinish = false;\n time = \"\";\n\n //#endregion\n\n\n //#region TimePicker Props\n\n startMoment(): moment.Moment {\n let mins = this.skedStartMins;\n let date = moment().startOf('day');\n date = date.add(mins, \"minutes\");\n //console.log(\"startMoment\", date);\n return date;\n }\n\n\n finishMoment(): moment.Moment {\n let mins = this.skedFinishMins;\n let date = moment().startOf('day');\n date = date.add(mins, \"minutes\");\n //console.log(\"finishMoment\", date);\n return date;\n }\n\n get startDisplay(): string {\n let trigger = this.selectedSked;\n let timeText = this.startMoment().format(\"LT\");\n //console.log(\"startDisplay\", timeText);\n return timeText;\n }\n\n get finishDisplay(): string {\n let timeText: string;\n let trigger = this.selectedSked;\n let date = this.finishMoment();\n //console.log(\"finishDisplay\", date);\n if (this.skedStartMins < this.skedFinishMins) {\n timeText = date.format(\"LT\");\n } else {\n timeText = date.format(\"LT\") + \" (next day)\";\n }\n //console.log(\"finishDisplay\", this.skedStartMins, this.skedFinishMins, timeText);\n return timeText;\n }\n\n\n get startTime(): string {\n let trigger = this.selectedSked;\n let timeText = this.momentToTime(this.startMoment());\n //console.log(\"GET startTime\", timeText);\n return timeText;\n }\n\n set startTime(val) {\n let mins = this.minsFromTime(val);\n let delta = this.skedFinishMins - this.skedStartMins;\n //console.log(\"SET startTime val, mins, delta\", val, mins, delta);\n\n if (delta >= 0) {\n //Adjust the finish time keeping the duration constant\n let minsInDay = 24 * 60;\n let newFinish = mins + delta;\n newFinish = (newFinish < minsInDay) ? newFinish : (minsInDay) - (minsInDay - newFinish);\n this.skedFinishMins = newFinish;\n\n //console.log(\"SET startTime fixed\", newFinish);\n this.skedStartMins = mins;\n } else {\n // If finish time before start time, set finish time to after start time\n this.skedFinishMins = mins + 60;\n this.skedStartMins = mins;\n }\n\n }\n\n get finishTime(): string {\n let trigger = this.selectedSked;\n let timeText = this.finishMoment().format(\"HH:mm\");\n //console.log(\"GET finishTime\", timeText);\n return timeText;\n }\n\n set finishTime(val: string) {\n let finishMins = this.minsFromTime(val);\n //console.log(\"SET finishTime\", val, finishMins);\n this.skedFinishMins = finishMins;\n }\n\n get siteNameRules() {\n return [v => (v && v.length <= 96 && v !== \"\") || 'Name is required and must be 96 characters or less.']\n }\n\n get addressRules() {\n return [v => (v && v.length <= 200 && v !== \"\") || 'Address is required and must be 200 characters or less.']\n }\n\n private minsFromTime(val: string): number {\n let startOfDay = moment().startOf('day');\n let time = moment(val, 'HH:mm');\n let mins = time.diff(startOfDay, \"minutes\");\n return mins\n }\n\n private momentToTime(mo: moment.Moment) {\n let timeText = mo.format(\"HH:mm\");\n return timeText;\n }\n\n\n skedTimeFrame(sked: RwSked): string {\n let text = sked.displayHours;\n return text;\n }\n\n\n //#endregion getters setters time pickers\n\n\n //region Nav Ops\n\n\n onBackClick() {\n let targetTab = 0;\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n targetTab = 0;\n break;\n case 1:\n targetTab = 0;\n break;\n case 2:\n targetTab = 1;\n break;\n case 3:\n targetTab = 0;\n break;\n case 4:\n this.m_visitOver = this.tabInitVisitOver;\n this.m_visitTime = this.tabInitVisitTime;\n targetTab = 0;\n break;\n break;\n default:\n break;\n //@formatter:on\n }\n //console.log(\"onBackClick \", this.m_visitOver, this.m_visitTime)\n this.idxTab = targetTab\n }\n\n onEscape() {\n if (this.idxTab === 0) {\n this.closeConditional();\n } else {\n this.idxTab = (this.idxTab == 3 || this.idxTab == 4) ? 0 : this.idxTab - 1;\n }\n }\n\n enterPress() {\n this.saveTab();\n }\n\n onCommitClick() {\n this.saveTab();\n }\n\n saveTab() {\n\n switch (this.idxTab) {\n //@formatter:off\n case 0:\n this.saveAndExit(true);\n break;\n case 1:\n this.closeConditional();\n break;\n case 2:\n this.saveSchedule();\n break;\n case 3:\n //this.saveColor();\n this.closeConditional();\n break;\n case 4:\n this.closeConditional();\n default:\n //(\"NotPossible\")\n //@formatter:on\n }\n }\n\n //HACK: using magic values (-1);\n //HACK: Just order the tabs in the desired order to get the index you want\n getTabIndex(): number {\n let finalTab = -1;\n //@formatter:off\n switch (this.idxTab) {\n case 1:\n finalTab = 0;\n break;\n case 2:\n finalTab = 1;\n break;\n case 3:\n finalTab = 0;\n break;\n case 4:\n finalTab = 0;\n break;\n default:\n finalTab = -1;\n }\n //@formatter:on\n return finalTab\n }\n\n closeConditional() {\n this.idxTab = this.getTabIndex();\n if (this.idxTab === -1) {\n this.close();\n }\n }\n\n close() {\n theStore.dispatch(\"showSiteEdit\", false).catch();\n }\n\n\n //endregion\n\n\n //#region Sked Ops\n\n get headers(): any[] {\n return [\n // {text: \"Name\", align: \"left\", value: \"name\"},\n {text: \"Time\", align: \"left\", value: \"timeStart\", width: 150, sortable: true},\n {text: \"Mo\", align: \"left\", value: \"Monday\", width: 1, sortable: false},\n {text: \"Tu\", align: \"left\", value: \"Tuesday\", width: 1, sortable: false},\n {text: \"We\", align: \"left\", value: \"Wednesday\", width: 1, sortable: false},\n {text: \"Th\", align: \"left\", value: \"Thursday\", width: 1, sortable: false},\n {text: \"Fr\", align: \"left\", value: \"Friday\", width: 1, sortable: false},\n {text: \"Sa\", align: \"left\", value: \"Saturday\", width: 1, sortable: false},\n {text: \"Su\", align: \"left\", value: \"Sunday\", width: 1, sortable: false},\n {\n text: \"\",\n value: \"action\",\n width: 48,\n align: \"center\",\n sortable: false\n }\n ];\n }\n\n onEditHours(sked: RwSked) {\n // let SOURCE = \"RwSiteEdit.onEditHours\"\n // console.log(SOURCE, sked.displayHours);\n\n this.skedName = sked.name;\n this.skedStartTime = sked.timeStart;\n this.skedFinishTime = sked.timeFinish;\n this.calculatedDuration = this.skedFinishTime - this.skedStartTime;\n this.skedStartMins = this.skedStartTime / 60000;\n this.skedFinishMins = this.skedFinishTime / 60000;\n\n this.skedDays[0] = sked.Monday;\n this.skedDays[1] = sked.Tuesday;\n this.skedDays[2] = sked.Wednesday;\n this.skedDays[3] = sked.Thursday;\n this.skedDays[4] = sked.Friday;\n this.skedDays[5] = sked.Saturday;\n this.skedDays[6] = sked.Sunday;\n this.isNewSked = false;\n this.selectedSked = sked;\n this.idxTab = 2;\n }\n\n onDeleteHours(sked: RwSked) {\n const self = this;\n const SOURCE = \"RwSiteEdit.onDeleteHours\"\n\n this.globals.deleteSkedsDB([sked.skedId])\n .then(() => {\n //this.toggleDelete();\n //this.globals.showSnack(\"Delete Mode Off\", \"warning\")\n //this.idxTab\n self.hours = self.selectedSite.getActiveAvailability();\n })\n .catch(err => {\n //this.toggleDelete()\n })\n }\n\n createSked() {\n let sked = new RwSked;\n sked.markedForDelete = false;\n sked.type = 1;\n sked.priority = 0;\n sked.isHovering = false;\n sked.isSelectedItem = false;\n sked.skedId = RwSysUtils.guidNew();\n sked.siteId = this.selectedSite.siteId;\n sked.accountId = this.selectedSite.accountId;\n sked.dow = 2;\n sked.timeStart = RwPrefUtils.skedStartMins * 60000;\n sked.timeFinish = RwPrefUtils.skedFinishMins * 60000;\n this.skedStartMins = RwPrefUtils.skedStartMins;\n this.skedFinishMins = RwPrefUtils.skedFinishMins;\n sked.isActive = true;\n sked.name = \"Hours\";\n\n this.selectedSked = sked;\n this.skedName = sked.name;\n this.skedStartTime = sked.timeStart;\n this.skedFinishTime = sked.timeFinish;\n this.skedDays = [true, true, true, true, true, false, false];\n this.isNewSked = true;\n this.idxTab = 2;\n }\n\n //endregion\n\n\n //region Visit Ops\n\n visitTrigger = 0;\n isVisitRangeValid = false;\n m_visitTimeCalc = 0;\n m_visitOver = false;\n m_visitTime = 0;\n tabInitVisitOver = false;\n tabInitVisitTime = 0;\n\n //private defaultVisitTime = 0;\n\n get visitText(): string {\n //Adding Observable value just for trigger;\n let vizOver = this.m_visitOver;\n let vizTime = this.m_visitTime;\n let visText = RwStop.visitTimeTextPrimitive(this.m_visitOver, this.visitTimeCalc);\n //console.warn(\"RwStopEdit.visitText\", vizOver, vizTime, visText)\n return visText;\n }\n\n get canApplyVisit(): boolean {\n let isDefault = !this.m_visitOver;\n let gotRequired = !!this.m_visitTime || this.visitTime === 0;\n let gotValidRange = this.isVisitRangeValid;\n let gotOverDelta = this.tabInitVisitOver != this.m_visitOver;\n let gotTimeDelta = RwSysUtils.isLooseDeltaNum(this.tabInitVisitTime, this.m_visitTime);\n let canApply = isDefault || (gotRequired && gotValidRange && (gotOverDelta || gotTimeDelta));\n //console.log(\"canApplyVisit:: isDefault || (gotRequired, gotValidRange && (gotOverDelta || gotTimeDelta))\", isDefault, gotRequired, gotValidRange, (gotOverDelta || gotTimeDelta))\n return canApply;\n }\n\n\n get canApplySked(): boolean {\n let canApply = true;\n return canApply;\n }\n\n\n get isInitOverride(): boolean {\n return this.initVisitTime >= 0;\n //return this.initStop && this.initStop.visitTime >= 0\n }\n\n get rules() {\n const self = this;\n return {\n required: value => {\n\n if (!self.m_visitOver || (!!value || value === 0)) {\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return true;\n } else {\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return false;\n }\n },\n visitRange: value => {\n if (!self.m_visitOver || value >= 0 && value <= 999) {\n self.isVisitRangeValid = true;\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return true;\n } else {\n self.isVisitRangeValid = false;\n //console.log(\"isVisitRangeValid\", self.isVisitRangeValid)\n return 'Between 0 to 999'\n }\n },\n }\n }\n\n get isVisitOverride(): boolean {\n return this.m_visitOver;\n }\n\n set isVisitOverride(val: boolean) {\n this.m_visitOver = val;\n this.m_visitTime = val ? RwPrefUtils.visitTime : -1;\n //console.log(\"SET isVisitOverride\", val, this.m_visitOver, this.m_visitTime)\n }\n\n get visitTimeCalc(): number {\n let trigger1 = this.visitTrigger;\n let trigger2 = this.m_visitOver;\n this.m_visitTimeCalc = this.m_visitOver ? this.m_visitTime : RwPrefUtils.visitTime;\n //console.log(\"GET visitTimeCalc time, m_isOverride, m_visitTime, defaultVisitTime\", this.m_visitTime, RwPrefUtils.visitTime, this.m_visitTimeCalc)\n return this.m_visitTimeCalc;\n }\n\n set visitTimeCalc(val: number) {\n if (this.m_visitOver) {\n if (val >= 0 && val <= 999) {\n this.m_visitTime = val;\n this.m_visitTimeCalc = val;\n } else {\n if (val < 0) {\n this.m_visitTime = 0;\n this.m_visitTimeCalc = 0;\n }\n if (val > 999) {\n this.m_visitTime = 999;\n this.m_visitTimeCalc = 999;\n }\n }\n } else {\n this.m_visitTime = -1;\n }\n this.visitTrigger++;\n //console.log(\"SET visitTimeCalc\", val, this.m_visitOver, this.m_visitTime, this.m_visitTimeCalc)\n }\n\n private onVisitClick() {\n this.initVisitTab()\n this.idxTab = 4;\n }\n\n private onCommitVisitTime(event: Event) {\n event.stopPropagation();\n if (!this.m_visitOver) {\n this.m_visitTime = -1;\n }\n //console.log(\"onCommitVisitTime SET\", this.m_visitOver, this.m_visitTime);\n this.idxTab = 0;\n }\n\n private initVisitTab() {\n this.tabInitVisitOver = this.m_visitOver;\n this.tabInitVisitTime = this.m_visitTime;\n //console.log(\"initVisitTab \", this.tabInitVisitOver, this.tabInitVisitTime)\n }\n\n private setVisitTime() {\n if (this.initSite) {\n if (this.isInitOverride) {\n this.m_visitOver = true;\n this.m_visitTime = this.initSite.visitTime;\n this.tabInitVisitOver = this.m_visitOver;\n this.tabInitVisitTime = this.m_visitTime;\n } else {\n this.m_visitOver = false;\n this.m_visitTime = RwPrefUtils.visitTime;\n this.tabInitVisitOver = this.m_visitOver;\n this.tabInitVisitTime = this.m_visitTime;\n }\n }\n //console.log(\"setVisitTime\", this.m_visitOver, this.m_visitTime)\n }\n\n\n //endregion Visit Override\n\n\n //#region Color Ops\n\n get siteColor(): string {\n //let sitesColor = (this.color == \"NaN\") ? this.selectedSite.baseColor : this.color;\n //if(this.baseColor)\n //this.color = sitesColor;\n //return this.color;\n\n return this.baseColor;\n }\n\n set siteColor(boxColorValue: string) {\n this.baseColor = boxColorValue;\n this.onColorPick(boxColorValue)\n }\n\n onColorPick(color: string) {\n if (color.length === 9 && color.endsWith(\"FF\")) {\n color = color.substring(0, 7);\n }\n //console.log(\"RwColorPicker.onColorPick color\", color);\n this.baseColor = color;\n this.idxTab = 0;\n }\n\n //#endregion Color\n\n\n //region Save Ops\n\n get canSave(): boolean {\n let canSave = true;\n return canSave;\n }\n\n\n saveSchedule() {\n const self = this;\n const SOURCE = \"RwSiteEdit.saveSchedule\";\n\n this.selectedSked.name = this.selectedHoursName;\n //let validHours = RwDateUtils.validateTimes((this.skedStartMins * 60000), (this.skedFinishMins * 60000));\n // this.selectedSked.timeStart = validHours[0];\n // this.selectedSked.timeFinish = validHours[1];\n\n this.selectedSked.timeStart = this.skedStartMins * 60000\n this.selectedSked.timeFinish = this.skedFinishMins * 60000\n\n this.selectedSked.duration = this.calculatedDuration;\n this.selectedSked.dow = (this.skedDays[0]) ? 2 : 0;\n this.selectedSked.dow += (this.skedDays[1]) ? 4 : 0;\n this.selectedSked.dow += (this.skedDays[2]) ? 8 : 0;\n this.selectedSked.dow += (this.skedDays[3]) ? 16 : 0;\n this.selectedSked.dow += (this.skedDays[4]) ? 32 : 0;\n this.selectedSked.dow += (this.skedDays[5]) ? 64 : 0;\n this.selectedSked.dow += (this.skedDays[6]) ? 128 : 0;\n\n RwPrefUtils.skedStartMins = this.skedStartMins;\n RwPrefUtils.skedFinishMins = this.skedFinishMins;\n\n if (this.isNewSked) {\n if (this.hours) {\n this.hours.push(this.selectedSked);\n } else {\n this.hours = [this.selectedSked]\n }\n this.onCommitAddSked(SOURCE);\n } else {\n this.onCommitSked(SOURCE);\n }\n this.isNewSked = false;\n\n }\n\n\n onCommitSked(SOURCE: string) {\n let self = this;\n RwTaskSkeds.updateSked(this.selectedSked)\n .then(() => {\n //self.globals.showSnack(\"Schedule Updated\", \"success\");\n self.globals.commitSkeds()\n self.idxTab = 1;\n })\n .catch(err => {\n // self.rollbackSchedules();\n RwLog.consoleError(SOURCE + \"WTF: Schedule not Updated\" + err.toString());\n self.globals.showSnack(\"Schedule Failed to Update\", \"error\");\n });\n }\n\n\n onCommitAddSked(SOURCE: string) {\n let self = this;\n RwTaskSkeds.addSked(this.selectedSked)\n .then(() => {\n //self.globals.showSnack(\"Schedule Added\", \"success\");\n self.globals.skeds.push(this.selectedSked);\n self.idxTab = 1;\n })\n .catch(err => {\n this.globals.showSnack((\"Failed to Create Schedule\"), \"error\");\n });\n }\n\n isValidForm() {\n let vueForm = this.$refs.form as any;\n let isValid = vueForm.validate();\n return isValid;\n }\n\n saveAndExit(save: boolean) {\n const self = this;\n const SOURCE = \"RwSiteEdit.onCommit\";\n let isValidForm = this.isValidForm();\n if (isValidForm) {\n if (save) {\n if (this.updatedName.length > 0 && this.updatedName.length <= 96) {\n let site = this.selectedSite;\n let finalName = (this.updatedName) ? this.updatedName : site.name;\n let finalAddress = (this.updatedAddress.length > 1) ? this.updatedAddress : RwTextUtils.formatCoords(site.lat, site.lng);\n site.name = finalName;\n site.address = finalAddress;\n site.email = this.updatedEmail;\n site.phone = this.updatedPhone;\n site.visitTime = this.m_visitTime;\n site.note = this.updatedNote;\n site.baseColor = this.baseColor;\n\n self.globals\n .updateSiteDB(site, [SOURCE])\n .then(isCommit => {\n if (isCommit) {\n site.lastHash = Date.now();\n self.globals.commitSites();\n self.globals.showSnack(\"Favorite saved.\", \"success\");\n this.onEscape()\n } else {\n self.rollbackSite();\n self.globals.showSnack(\"Favorite save failed.\", \"error\");\n }\n })\n .catch(err => {\n self.rollbackSite();\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n self.globals.showSnack(\"Favorite save failed.\", \"error\");\n });\n } else {\n theGlobals.showSnack(\"Please enter a valid name\", \"error\");\n }\n } else {\n this.close()\n }\n } else {\n this.globals.showSnack(\"Please ensure your entries meet the requirements and try again.\", \"error\");\n }\n }\n\n\n //endregion Save Ops\n\n\n //#region LifeCycle\n initName;\n initAddress;\n initEmail;\n initPhone;\n initVisitTime;\n initNote;\n initBaseColor;\n\n mounted() {\n const self = this;\n Vue.nextTick(function () {\n self.initValues();\n });\n this.initName = this.initSite.name;\n this.initAddress = this.initSite.address;\n this.initEmail = this.initSite.email;\n this.initPhone = this.initSite.phone;\n this.initVisitTime = this.initSite.visitTime;\n this.initNote = this.initSite.note;\n this.initBaseColor = this.initSite.baseColor;\n }\n\n initValues() {\n //console.log(\"RwSiteEdit.mounted initSite\", this.initStop.name);\n this.setVisitTime()\n }\n\n rollbackSite() {\n let site = this.selectedSite;\n site.name = this.initName;\n site.address = this.initAddress;\n site.email = this.initEmail;\n site.phone = this.initPhone;\n site.visitTime = this.initVisitTime;\n site.note = this.initNote;\n site.baseColor = this.initBaseColor;\n }\n\n //#endregion\n\n\n}\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSiteEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSiteEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwSiteEdit.vue?vue&type=template&id=94daae70&scoped=true&\"\nimport script from \"./RwSiteEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSiteEdit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"94daae70\",\n null\n \n)\n\nexport default component.exports","import { VBtn } from 'vuetify/lib/components/VBtn';\nimport { VCard } from 'vuetify/lib/components/VCard';\nimport { VCardActions } from 'vuetify/lib/components/VCard';\nimport { VCardText } from 'vuetify/lib/components/VCard';\nimport { VDialog } from 'vuetify/lib/components/VDialog';\nimport { VImg } from 'vuetify/lib/components/VImg';\nimport { VMenu } from 'vuetify/lib/components/VMenu';\nimport { VRow } from 'vuetify/lib/components/VGrid';\nimport { VSlider } from 'vuetify/lib/components/VSlider';\nimport { VSpacer } from 'vuetify/lib/components/VGrid';\nimport { VTextField } from 'vuetify/lib/components/VTextField';\nimport { VTimePicker } from 'vuetify/lib/components/VTimePicker';\nimport { VToolbar } from 'vuetify/lib/components/VToolbar';\nimport { VToolbarTitle } from 'vuetify/lib/components/VToolbar';\n\nvar render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(VRow,{attrs:{\"justify\":\"center\"}},[_c(VDialog,{attrs:{\"max-width\":\"600px\",\"overlay-color\":\"#000\",\"overlay-opacity\":\"0.65\",\"persistent\":\"\",\"scrollable\":\"\"},on:{\"keydown\":[function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.onEnter.apply(null, arguments)},function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.onEscape.apply(null, arguments)}]},model:{value:(_vm.close),callback:function ($$v) {_vm.close=$$v},expression:\"close\"}},[_c(VCard,[_c(VToolbar,{attrs:{\"color\":_vm.globals.backColorBar,\"dense\":\"\",\"max-height\":\"48px\"}},[_c(VImg,{attrs:{\"src\":_vm.origImgUrl,\"contain\":\"\",\"height\":\"32px\",\"max-width\":\"56px\",\"width\":\"32px\"}}),_c(VToolbarTitle,[_vm._v(\"Edit: \"+_vm._s(_vm.origName))])],1),_c(VCardText,{class:_vm.globals.theme},[_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[(_vm.skedType === 3)?_c(VTextField,{ref:\"field\",attrs:{\"filled\":\"\",\"autofocus\":\"\",\"label\":\"Schedule Name\",\"dense\":\"\",\"clearable\":\"\"},model:{value:(_vm.name),callback:function ($$v) {_vm.name=$$v},expression:\"name\"}}):_vm._e()],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"start\",\"justify\":\"center\"}},[_c(VMenu,{ref:\"startTimeMenu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Start Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.startDisplay),callback:function ($$v) {_vm.startDisplay=$$v},expression:\"startDisplay\"}},on))]}}]),model:{value:(_vm.menuStart),callback:function ($$v) {_vm.menuStart=$$v},expression:\"menuStart\"}},[(_vm.menuStart)?_c(VTimePicker,{attrs:{\"color\":\"primary\",\"ampm-in-title\":\"\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.startTimeMenu.save(_vm.startTime)}},model:{value:(_vm.startTime),callback:function ($$v) {_vm.startTime=$$v},expression:\"startTime\"}}):_vm._e()],1),_c(VMenu,{ref:\"finishTimeMenu\",attrs:{\"close-on-content-click\":false,\"nudge-right\":40,\"max-width\":\"290px\",\"min-width\":\"290px\",\"offset-y\":\"\",\"transition\":\"scale-transition\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c(VTextField,_vm._g({attrs:{\"label\":\"Finish Time\",\"prepend-icon\":\"access_time\",\"readonly\":\"\"},model:{value:(_vm.finishDisplay),callback:function ($$v) {_vm.finishDisplay=$$v},expression:\"finishDisplay\"}},on))]}}]),model:{value:(_vm.menuFinish),callback:function ($$v) {_vm.menuFinish=$$v},expression:\"menuFinish\"}},[(_vm.menuFinish)?_c(VTimePicker,{attrs:{\"color\":\"primary\",\"ampm-in-title\":\"\",\"full-width\":\"\"},on:{\"click:minute\":function($event){return _vm.$refs.finishTimeMenu.save(_vm.finishTime)}},model:{value:(_vm.finishTime),callback:function ($$v) {_vm.finishTime=$$v},expression:\"finishTime\"}}):_vm._e()],1)],1),_c(VRow,{staticClass:\"ma-4\",attrs:{\"align\":\"center\",\"justify\":\"center\"}},[_c(VTextField,{staticStyle:{\"max-width\":\"75px\"},attrs:{\"filled\":\"\",\"type\":\"number\",\"dense\":\"\",\"label\":\"Priority\"},on:{\"focus\":function($event){return $event.target.select()}},model:{value:(_vm.priority),callback:function ($$v) {_vm.priority=$$v},expression:\"priority\"}}),_c('span',[_vm._v(\"/10\")]),_c(VSlider,{attrs:{\"max\":\"10\",\"min\":\"1\",\"color\":_vm.skedColor},model:{value:(_vm.priority),callback:function ($$v) {_vm.priority=$$v},expression:\"priority\"}})],1)],1),_c(VCardActions,[_c(VSpacer),_c(VBtn,{attrs:{\"text\":\"\"},on:{\"click\":_vm.close}},[_vm._v(\"Cancel\")]),_c(VBtn,{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":_vm.saveChanges}},[_vm._v(\"Save\")])],1)],1)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\nimport {Component, Prop, Vue} from \"vue-property-decorator\";\nimport {RwTaskSkeds} from \"@/app/dal/RwTaskSkeds\";\nimport theGlobals, {RwGlobals} from \"@/app/RwGlobals\";\nimport theSkedSpace, {RwSkedSpace} from \"@/app/views/skeds/RwSkedSpace\";\nimport {RwSked} from \"@/app/dem/RwSked\";\nimport {RwLog} from \"@/app/dal/RwLog\";\nimport moment from \"moment\";\nimport theStore from \"@/store\";\n\n\n@Component\nexport default class RwSkedEdit extends Vue {\n @Prop(RwSked) readonly initSked!: RwSked;\n\n MillisInMin = 60000;\n\n priority = 0;\n\n skedStartMins = 0;//this.selectedSked.timeStart / this.MillisInMin;\n skedFinishMins = 0; //this.selectedSked.timeFinish / this.MillisInMin;\n menuStart = false;\n menuFinish = false;\n time = \"\";\n name = \"\";\n\n skedType = -1;\n origImgUrl = \"\";\n origStartTime = 0;\n origEndTime = 0\n origName = \"\";\n origPriority = 0;\n origDuration = 0;\n\n init() {\n if (this.initSked) {\n this.skedStartMins = this.selectedSked.timeStart / this.MillisInMin;\n if (!this.selectedSked.timeFinish) {\n if (this.selectedSked.duration) {\n this.skedFinishMins = (this.selectedSked.timeStart + this.selectedSked.duration) / this.MillisInMin\n }\n } else {\n this.skedFinishMins = this.selectedSked.timeFinish / this.MillisInMin;\n }\n\n this.name = this.selectedSked.name;\n this.menuStart = false;\n this.menuFinish = false;\n this.skedType = this.selectedSked.type;\n this.origImgUrl = this.selectedSked.imgUrl;\n this.origStartTime = this.selectedSked.timeStart;\n this.origEndTime = this.selectedSked.timeFinish;\n this.origName = this.selectedSked.name;\n this.origPriority = this.selectedSked.priority;\n this.origDuration = this.selectedSked.duration;\n this.priority = this.selectedSked.priority * 10;\n }\n }\n\n get skedColor(): string {\n let color: string = \"\";\n switch (this.priority) {\n //@formatter:off\n case 1:\n color = \"#01aee3\";\n break;\n case 2:\n color = \"#06b29e\";\n break;\n case 3:\n color = \"#01de7e\";\n break;\n case 4:\n color = \"#01e248\";\n break;\n case 5:\n color = \"#05cd3a\";\n break;\n case 6:\n color = \"#74dd3f\";\n break;\n case 7:\n color = \"#d7eb40\";\n break;\n case 8:\n color = \"#f0a732\";\n break;\n case 9:\n color = \"#eb5422\";\n break;\n case 10:\n color = \"#d1041c\";\n break;\n default:\n break;\n //@formatter:on\n }\n return color\n }\n\n //#region time picker variables\n\n get startMoment(): moment.Moment {\n return moment().startOf('day').add(this.skedStartMins, \"minutes\");\n }\n\n get finishMoment(): moment.Moment {\n return moment().startOf('day').add(this.skedFinishMins, \"minutes\");\n }\n\n get startDisplay(): string {\n return this.startMoment.format(\"LT\");\n }\n\n get finishDisplay(): string {\n let timeText: string;\n if (this.skedStartMins < this.skedFinishMins) {\n timeText = this.finishMoment.format(\"LT\");\n } else {\n timeText = this.finishMoment.format(\"LT\") + \" (next day)\";\n }\n //console.log(\"finishDisplay\", this.skedStartMins, this.skedFinishMins, timeText);\n return timeText;\n }\n\n get startTime(): string {\n let timeText = this.momentToTime(this.startMoment);\n //console.log(\"GET startTime\", timeText);\n return timeText;\n }\n\n set startTime(val) {\n this.skedStartMins = this.minsFromTime(val);\n }\n\n get finishTime(): string {\n return this.finishMoment.format(\"HH:mm\");\n }\n\n set finishTime(val: string) {\n this.skedFinishMins = this.minsFromTime(val);\n }\n\n private minsFromTime(val: string): number {\n let startOfDay = moment().startOf('day');\n let time = moment(val, 'HH:mm');\n let mins = time.diff(startOfDay, \"minutes\");\n return mins\n }\n\n private momentToTime(mo: moment.Moment) {\n let timeText = mo.format(\"HH:mm\");\n return timeText;\n }\n\n\n //#endregion getters setters time pickers\n\n get skedSpace(): RwSkedSpace {\n return theSkedSpace;\n }\n\n get globals(): RwGlobals {\n return theGlobals;\n }\n\n get selectedSked(): RwSked {\n return this.initSked;\n //return this.skedSpace.selectedSked;\n }\n\n //#region save/close logic\n onEnter(event: Event) {\n event.stopPropagation();\n this.saveChanges();\n }\n\n onEscape(event: Event) {\n event.stopPropagation();\n this.close();\n }\n\n saveChanges() {\n let SOURCE = \"RwSkedEdit.saveChanges\";\n this.selectedSked.timeStart = this.skedStartMins * this.MillisInMin\n this.selectedSked.timeFinish = this.skedFinishMins * this.MillisInMin\n this.selectedSked.duration = this.calculateDuration(this.selectedSked.timeStart, this.selectedSked.timeFinish);\n\n this.selectedSked.name = this.name;\n this.selectedSked.priority = this.priority / 10;\n this.commitUpdate(SOURCE);\n }\n\n commitUpdate(SOURCE: string) {\n RwTaskSkeds.updateSked(this.selectedSked)\n .then(() => {\n this.globals.showSnack(\"Schedule updated\", \"success\");\n //self.globals.showSkedEdit = false;\n this.close()\n\n })\n .catch(err => {\n this.rollbackSked();\n RwLog.consoleError(SOURCE, \"WTF: update error\", err.toString());\n this.globals.showSnack(\"Schedule failed to Update\", \"error\")\n });\n }\n\n close() {\n theStore.dispatch(\"showSkedEdit\", false).catch();\n }\n\n //#endregion save/close logic\n\n //#region resetInitials\n\n calculateDuration(timeStartMS: number, timeEndMS: number) {\n if (timeStartMS <= timeEndMS) {\n return timeEndMS - timeStartMS;\n } else {\n const endOfDayMS = 24 * 60 * 1000;\n return endOfDayMS - timeEndMS + timeStartMS;\n }\n }\n\n rollbackSked() {\n this.selectedSked.timeStart = this.origStartTime;\n //console.warn(\"RwSked.fromSked\", this.selectedSked.timeStart);\n this.selectedSked.timeFinish = this.origEndTime;\n this.selectedSked.duration = this.origDuration;\n this.selectedSked.name = this.origName;\n this.selectedSked.priority = this.origPriority;\n }\n\n mounted() {\n if (this.initSked) {\n this.init();\n }\n }\n\n //#endregion resetInitials\n\n\n}\n\n","import mod from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedEdit.vue?vue&type=script&lang=ts&\"; export default mod; export * from \"-!../../../../node_modules/thread-loader/dist/cjs.js!../../../../node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader/index.js??clonedRuleSet-40.use[1]!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/index.js??vue-loader-options!./RwSkedEdit.vue?vue&type=script&lang=ts&\"","import { render, staticRenderFns } from \"./RwSkedEdit.vue?vue&type=template&id=6d235bf8&scoped=true&\"\nimport script from \"./RwSkedEdit.vue?vue&type=script&lang=ts&\"\nexport * from \"./RwSkedEdit.vue?vue&type=script&lang=ts&\"\n\n\n/* normalize component */\nimport normalizer from \"!../../../../node_modules/@vue/cli-service/node_modules/@vue/vue-loader-v15/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"6d235bf8\",\n null\n \n)\n\nexport default component.exports","function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = () => ([]);\nwebpackEmptyContext.resolve = webpackEmptyContext;\nwebpackEmptyContext.id = 9674;\nmodule.exports = webpackEmptyContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"js/\" + ({\"121\":\"planner\",\"576\":\"other\",\"650\":\"upload\"}[chunkId] || chunkId) + \".\" + {\"36\":\"280a3f08\",\"121\":\"2a6b8863\",\"209\":\"c6773c4b\",\"576\":\"9e74c505\",\"622\":\"624d28e8\",\"650\":\"e3cb1802\"}[chunkId] + \".js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"css/\" + ({\"121\":\"planner\",\"576\":\"other\",\"650\":\"upload\"}[chunkId] || chunkId) + \".\" + {\"36\":\"d8b95067\",\"121\":\"eae4b8ef\",\"209\":\"5332622c\",\"576\":\"0afa2f64\",\"622\":\"57021907\",\"650\":\"a0902725\"}[chunkId] + \".css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"rw.flex:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + realHref + \")\");\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tlinkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"36\":1,\"121\":1,\"209\":1,\"576\":1,\"622\":1,\"650\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t143: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunkrw_flex\"] = globalThis[\"webpackChunkrw_flex\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [998], () => (__webpack_require__(7646)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n",""],"names":[],"sourceRoot":""}