{"version":3,"file":"main.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AACuD;AAEsB;AACA;AACsB;AACjB;AACtB;AACA;AACG;AAC6C;AACT;AACM;AAC9B;AACoC;AACH;AACE;AACK;AACvB;AACc;AAC3B;AACN;AACG;AACX;;;AAEjE,MAAM,MAAM,GAAW;IACrB,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,EAAE,wEAAc,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;IACtE;QACE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,qFAAkB,EAAE,WAAW,EAAE,CAAC,2EAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE;QAC1G,QAAQ,EAAE;YACR,EAAE,IAAI,EAAE,EAAE,EAAE,SAAS,EAAE,kHAAwB,EAAE,WAAW,EAAE,CAAC,2EAAgB,CAAC,EAAE,IAAI,EAAE,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;YACpH,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,4GAAsB,EAAE,WAAW,EAAE,CAAC,2EAAgB,CAAC;gBAChF,IAAI,EAAE,EAAE,KAAK,EAAE,gBAAgB,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;SAC9D;KACF;IACD,EAAE,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,sFAAkB,EAAE,WAAW,EAAE,CAAC,2EAAgB,CAAC;QAClF,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;IAChE,EAAE,IAAI,EAAE,kBAAkB,EAAE,SAAS,EAAE,qHAAyB,EAAE,WAAW,EAAE,CAAC,2EAAgB,CAAC;QAC/F,IAAI,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;IAClD,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,sGAAuB,EAAE,WAAW,EAAE,CAAC,2EAAgB,CAAC;QACnF,IAAI,EAAE,EAAE,KAAK,EAAE,oBAAoB,EAAE,IAAI,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,EAAE;IAC9E,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,sGAAuB,EAAE,WAAW,EAAE,CAAC,2EAAgB,CAAC;QACrF,IAAI,EAAE,EAAE,KAAK,EAAE,mBAAmB,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAC7E,EAAE,IAAI,EAAE,sBAAsB,EAAE,SAAS,EAAE,oHAA2B,EAAE,WAAW,EAAE,CAAC,2EAAgB,CAAC;QACvG,IAAI,EAAE,EAAE,KAAK,EAAE,8BAA8B,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;IAEzE,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,qEAAa,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IACtF,EAAE,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,qEAAa,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE;IAC5G,EAAE,IAAI,EAAE,gBAAgB,EAAE,SAAS,EAAE,sFAAkB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,wBAAwB,EAAE,SAAS,EAAE,gBAAgB,EAAE,EAAE;IACjI,EAAE,IAAI,EAAE,oBAAoB,EAAE,SAAS,EAAE,4GAAwB;QAC/D,IAAI,EAAE,EAAE,KAAK,EAAE,iCAAiC,EAAE,SAAS,EAAE,WAAW,EAAE,EAAE;IAC9E,EAAE,IAAI,EAAE,cAAc,EAAE,SAAS,EAAE,2FAAmB,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;IAElH,EAAE,IAAI,EAAE,qBAAqB,EAAE,SAAS,EAAE,6HAA0B;QAClE,IAAI,EAAE,EAAE,KAAK,EAAE,4BAA4B,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;IAC1E,EAAE,IAAI,EAAE,yBAAyB,EAAE,SAAS,EAAE,sFAAgB;QAC5D,IAAI,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;IAC1D,EAAE,IAAI,EAAE,wBAAwB,EAAE,SAAS,EAAE,mFAAe;QAC1D,IAAI,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;IACzD,EAAE,IAAI,EAAE,0BAA0B,EAAE,SAAS,EAAE,yFAAiB;QAC9D,IAAI,EAAE,EAAE,KAAK,EAAE,uBAAuB,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;IAClE,EAAE,IAAI,EAAE,8BAA8B,EAAE,SAAS,EAAE,wHAAyB;QAC1E,IAAI,EAAE,EAAE,KAAK,EAAE,wCAAwC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;IACtF,EAAE,IAAI,EAAE,8BAA8B,EAAE,SAAS,EAAE,yHAA0B;QAC3E,IAAI,EAAE,EAAE,KAAK,EAAE,qCAAqC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;IACnF,EAAE,IAAI,EAAE,6BAA6B,EAAE,SAAS,EAAE,sHAAyB;QACzE,IAAI,EAAE,EAAE,KAAK,EAAE,uCAAuC,EAAE,SAAS,EAAE,YAAY,EAAE,EAAE;IACrF,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,OAAO,EAAE;CACpC,CAAC;AAMK,MAAM,gBAAgB;;gFAAhB,gBAAgB;8GAAhB,gBAAgB;kHAHlB,CAAC,kEAAoB,CAAC,MAAM,EAAE,EAAE,yBAAyB,EAAE,SAAS,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC,CAAC,EACzG,0DAAY;oIAEX,gBAAgB,qFAFjB,0DAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtEwE;AAKlD;AACZ;AAEmB;;;;;;;;;;;;ICNjD,yEAAuD;IAI/C,oEAAmE;IACnE,mEACA;IAAA,yEAAQ;IAAA,qEAAU;IAAA,4DAAS;;ADUhC,MAAM,YAAY;IAYvB,YACU,MAAc,EACd,KAAqB,EACrB,KAAY,EACZ,IAAiB,EACjB,EAAyB,EACzB,KAAuB,EACvB,KAAoB;QANpB,WAAM,GAAN,MAAM,CAAQ;QACd,UAAK,GAAL,KAAK,CAAgB;QACrB,UAAK,GAAL,KAAK,CAAO;QACZ,SAAI,GAAJ,IAAI,CAAa;QACjB,OAAE,GAAF,EAAE,CAAuB;QACzB,UAAK,GAAL,KAAK,CAAkB;QACvB,UAAK,GAAL,KAAK,CAAe;QAjBvB,eAAU,GAAY,KAAK,CAAC;QAE5B,aAAQ,GAAY,IAAI,CAAC;QAIxB,SAAI,GAAY,IAAI,4CAAO,EAAE,CAAC;QAE/B,YAAO,GAAW,OAAO,CAAC;IAWjC,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC;QAEvC,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAEvC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAEvD,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACvC;QAED,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE;YACvB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;SACxC;QAED,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtB,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;SACvC;QAED,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACpD,IAAI,KAAK,YAAY,0DAAa,EAAE;gBAClC,IAAI,CAAC,UAAU,GAAG,CAAC,KAAK,CAAC,iBAAiB,KAAK,GAAG,CAAC,CAAC;gBAEpD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAE/C,IAAI,OAAO,IAAI,KAAK,CAAC,IAAI,EAAE;oBACzB,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE;wBACpB,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;qBACvC;iBACF;qBAAM;oBACL,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAC;iBAC9C;aACF;QACH,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CACxC,sDAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,EAClD,oDAAI,CAAC,CAAC,CAAC,CACR,CAAC,SAAS,CAAC,GAAG,EAAE;YACf,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC,CAAC,CAAC;QAEH;;;;;;aAMK;IACP,CAAC;IAEM,eAAe;IAEtB,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC;;wEAhFU,YAAY;0GAAZ,YAAY;QCpBzB,2EAAyE;QAEzE,sEAAyF;QAErF,wGAUM;;QACR,4DAAgB;QAGlB,+EAAuD;;;QAlB3C,kFAAqB;QAE5B,0DAAmF;QAAnF,kJAAmF;QAE9E,0DAA0B;QAA1B,mJAA0B;QAcpB,0DAAqB;QAArB,kFAAqB;osODAvB,CAAE,8DAAgB,CAAE;AAqFlC,MAAM,WAAW,GAAG,CAAC,KAA6B,EAAE,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,WAAW,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AEvGjE;AAC4B;AAET;AACR;AACqB;AAEhB;AACM;AACX;AACR;AACM;AACE;AACR;AACF;AACU;AAChB;AAEc;AACT;AACkD;AAC7B;AAC6B;AACf;AACd;AACJ;AACqB;AAClB;AACoB;AACT;AACD;AACA;AACsB;AACjB;AACtB;AACA;AACuB;AACpB;AAC6C;AACT;AACM;AAC9B;AACoC;AACH;AACE;AACK;AACvB;AACc;AAC3B;AACN;AACG;AACH;AACpB;;;;;;;;;;;AA4E9C,MAAM,SAAS;;kEAAT,SAAS;uGAAT,SAAS,cAFR,wDAAY;4GARb;QACT,EAAE,OAAO,EAAE,mFAAoB,EAAE,QAAQ,EAAE,SAAS,EAAE;QACtD;YACE,OAAO,EAAE,oEAAiB;YAC1B,QAAQ,EAAE,+DAAc;YACxB,KAAK,EAAE,IAAI;SACZ;KACF,YApCQ;YACP,0DAAY;YACZ,qEAAa;YACb,iEAAgB;YAChB,0FAAuB;YACvB,6DAAoB,EAAE;YACtB,mEAAgB;YAChB,gFAAiB;YACjB,gEAAmB;YACnB,wDAAW;YACX,qEAAmB,EAAE;YACrB,mEAAkB,EAAE;YACpB,6EAAuB,EAAE;YACzB,6EAAuB,EAAE;YACzB,2EAAsB,EAAE;YACxB;;;;iBAIK;YACL,qEAAmB,EAAE;YACrB,6EAAwB,EAAE;YAC1B,kEAAiB,CAAC;gBAChB,MAAM,EAAE;oBACN,WAAW,EAAE,+DAAW;oBACxB,cAAc,EAAE,CAAC,WAAW,EAAE,+BAA+B,CAAC;iBAC/D;aACF,CAAC;SACH;oIAWU,SAAS,mBAxElB,yEAAe;QACf,wDAAY;QACZ,yEAAc;QACd,qFAAkB;QAClB,sHAAyB;QACzB,4EAAe;QACf,8FAAkB;QAClB,6FAAkB;QAClB,0GAAuB;QACvB,2FAAkB;QAClB,wFAAkB;QAClB,sGAAuB;QACvB,0GAAuB;QACvB,6EAAc;QACd,sEAAa;QACb,6EAAc;QACd,uFAAkB;QAClB,oHAA2B;QAC3B,sEAAa;QACb,4FAAmB;QACnB,6GAAwB;QACxB,mHAAwB;QACxB,6GAAsB;QACtB,iGAAqB;QACrB,uFAAkB;QAClB,6HAA0B;QAC1B,yHAA0B;QAC1B,wHAAyB;QACzB,sHAAyB;QACzB,sFAAgB;QAChB,yFAAiB;QACjB,mFAAe,aAGf,0DAAY;QACZ,qEAAa;QACb,iEAAgB;QAChB,0FAAuB,yDAEvB,mEAAgB;QAChB,gFAAiB;QACjB,gEAAmB;QACnB,wDAAW;;;;;;;;;;;;;;;;;;;;;AClGuF;AAChB;AACJ;;;;;AAO3E,MAAM,uBAAuB;IAclC;QAXO,eAAU,GAAY,KAAK,CAAC;QAG5B,WAAM,GAA0B,IAAI,uDAAY,EAAE,CAAC;QAKnD,oBAAe,GAAG,yEAAe,CAAC;QAClC,sBAAiB,GAAG,2EAAiB,CAAC;IAE7B,CAAC;IAEV,QAAQ;IACf,CAAC;IAEM,cAAc,CAAC,MAAe;QACnC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzB,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAChC,CAAC;;8FAtBU,uBAAuB;qHAAvB,uBAAuB;;;;;;QCTpC,+EAAkI;QAApF,+IAAS,mCAA2B,IAAC;QACjF,6EAAmE;QAAA,mEAAQ;QAAA,4DAAU;;QADH,0GAA6C;QACtH,0DAAyD;QAAzD,8HAAyD;;;;;;;;;;;;;;;;;;;;ACD0B;;;;;;;;AAQvF,MAAM,cAAc;IASzB;QARO,mBAAc,GAAG,+FAA+F,CAAC;QAMjH,WAAM,GAAuB,IAAI,uDAAY,EAAE,CAAC;IAGvD,CAAC;IAEM,QAAQ;IACf,CAAC;IAEM,WAAW;IAClB,CAAC;IAEM,iBAAiB;QACtB,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;YACnD,YAAY,CAAC,OAAO,CAAC,mBAAmB,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;SACjE;IACH,CAAC;IAEM,SAAS;QACd,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;IAC7B,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnB,IAAI,CAAC,iBAAiB,EAAE,CAAC;IAC3B,CAAC;;4EA/BU,cAAc;4GAAd,cAAc;;;;;;QCR3B,4EAA4K;QAA7I,yIAAY,cAAU,IAAC;QACpD,yEAAmC;QAIG,kFAAwB;QAAA,4DAAO;QAC7D,0EAA+B;QAAA,2EAAgB;QAAA,4DAAO;QAExD,6EAAyF;QAAvB,uIAAS,eAAW,IAAE;QACtF,2EAAyB;QAAA,kEAAO;QAAA,4DAAO;QAG3C,2EAAwB;QAGpB,4GAA+C;QAAA,sEAAI;QAAA,yGAA8C;QAAA,4DAAK;QAAA,kKAExG;QAAA,4DAAI;QACJ,4EAK8C;QAEhD,4DAAM;;QAzBP,yIAAyB;QAqBtB,2DAAkB;QAAlB,2EAAkB;;;;;;;;;;;;;;;;;;;;;;ACbnB,MAAM,uBAAuB;IAKlC,gBAAgB,CAAC;IAEV,QAAQ;IACf,CAAC;;8FARU,uBAAuB;qHAAvB,uBAAuB;QCRpC,6EAAuC;QAEZ,uDAAqB;QAAA,4DAAK;QACjD,oEAAwC;QAC1C,4DAAI;;QAHiB,0DAA8C;QAA9C,kKAA8C;QAC1C,0DAAqB;QAArB,oFAAqB;QACvC,0DAA4B;QAA5B,uJAA4B;;;;;;;;;;;;;;;;;;;;;ACHmC;AACF;;;;;;ICwB9D,0EAC0C;IAExC,sbAAS,0BAA0B,EAAE,gBAA+B,KAAK,CAAC,IAAE;IAAC,8EAA0B;IAAA,gEAAK;IAAA,4DAAU;;;IAAhC,0DAAgB;IAAhB,gFAAgB;;ADpBzG,MAAM,kBAAkB;IAQ7B;QALO,oBAAe,GAAoC,IAAI,uDAAY,CAAC,IAAI,CAAC,CAAC;QAE1E,aAAQ,GAAG,uEAAQ,CAAC;QACpB,YAAO,GAAG,sEAAO,CAAC;IAGzB,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;IAC3C,CAAC;IAEM,MAAM,CAAC,IAAY,EAAE,IAAa;QACvC,IAAI,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACjC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1C,CAAC;;oFAlBU,kBAAkB;gHAAlB,kBAAkB;;QCR/B,2EAAU;QAKmF,kWAAU,kCAAoD,IAAC;QAApJ,4DAAqJ;QACrJ,2EAA6D;QAAA,6EAAkB;QAAA,4DAAQ;QAK7F,yEAAkD;QAEkB,gFAAoB;QAAA,4DAAQ;QAE5F,0EAAyB;QAGQ,kEAAM;QAAA,4DAAU;QAI/C,iFAEwD;QADxD,iWAAS,kCAAoD,IAAC;QAD9D,4DAEwD;QACxD,iHAIM;QACR,4DAAM;;;QAZS,2DAAiB;QAAjB,8EAAiB;QAQ7B,0DAAsC;QAAtC,yFAAsC;;;;;;;;;;;;;;;;;;;;ACzBhB;;;;;ICI7B,uEAA0E;;;IAAtC,yIAAgB;;ADG/C,MAAM,cAAc;IAkBzB;QAfO,WAAM,GAAW,IAAI,CAAC;QAGtB,aAAQ,GAAY,KAAK,CAAC;QAE1B,gBAAW,GAAW,IAAI,CAAC;IAUlB,CAAC;IAEV,QAAQ;QACb,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzC,CAAC;IAEM,eAAe;QACpB,IAAI,CAAC,OAAO,GAAG,oDAAO,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;YACvB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;SACrB;IACH,CAAC;;4EAjCU,cAAc;4GAAd,cAAc;;;;;;QCR3B,8EAGC;QAEC,gHAA0E;QAC5E,4DAAQ;;QALwD,4IAAsB;QAI3D,0DAAS;QAAT,+EAAS;;;;;;;;;;;;;;;;;ACL7B,MAAM,YAAY;;AACT,oBAAO,GAAG,uBAAuB,CAAC;AAClC,sBAAS,GAAG,iCAAiC,CAAC;AAC9C,qBAAQ,GAAG,qDAAqD,CAAC;AACjE,qBAAQ,GAAG,IAAI,CAAC;AAEhB,wBAAW,GAAG,kEAAkE,CAAC;AACjF,8BAAiB,GAAG,yBAAyB,CAAC;AAC9C,sBAAS,GAAG,oEAAoE,CAAC;AACjF,+BAAkB,GAAG,gFAAgF,CAAC;;;;;;;;;;;;;;;;;;ACH/G,MAAM,eAAe;IAE1B,YAAoB,OAAgC;QAAhC,YAAO,GAAP,OAAO,CAAyB;IACpD,CAAC;IAEM,kBAAkB;QACvB,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,MAAyB,EAAE,EAAE;YAC3F,MAAM,CAAC,MAAM,GAAG,QAAQ,CAAC;YACzB,MAAM,CAAC,GAAG,GAAG,UAAU,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;;8EAVU,eAAe;6GAAf,eAAe;;;;;;;;;;;;;;;;;;;;ACNyB;AACD;AAE7C,MAAM,oBAAoB,GAAG,CAAC,EACnC,gBAAgB,GAAG,CAAC,EACpB,eAAe,GAAG,IAAI,EACtB,mBAAmB,GAAG,EAAE,KAKtB,EAAE,EAAE,EAAE,CAAC,CAAC,QAAyB,EAAE,EAAE;IACvC,OAAO,QAAQ,CAAC,IAAI,CAClB,wDAAQ,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,EAAE;QACpB,MAAM,YAAY,GAAG,CAAC,GAAG,CAAC,CAAC;QAC3B,6CAA6C;QAC7C,mEAAmE;QACnE,IACE,YAAY,GAAG,gBAAgB;YAC/B,mBAAmB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC,MAAM,CAAC,EACjD;YACA,OAAO,gDAAU,CAAC,KAAK,CAAC,CAAC;SAC1B;QACD,OAAO,CAAC,GAAG,CACT,WAAW,YAAY,iBAAiB,YAAY;YACpD,eAAe,IAAI,CACpB,CAAC;QACF,6BAA6B;QAC7B,OAAO,2CAAK,CAAC,YAAY,GAAG,eAAe,CAAC,CAAC;IAC/C,CAAC,CAAC,EACF,wDAAQ,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAC5C,CAAC;AACJ,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/BwG;AAEE;AACC;AAE5C;AAC5B;AAGuD;;;;;;;;;;;;;ICRxF,6EAAiI;IAAjB,mSAAS,aAAM,IAAC;IAC9H,8EAAgC;IAAA,sEAAW;IAAA,4DAAU;;;IAA5C,0DAAsB;IAAtB,sFAAsB;;;;IAY/B,2EAAmH;IAAzF,uUAAiB,+BAAuB,IAAC;IACjE,0EAAyB;IAEgE,+VAAkC;IACrH,8EAA2B;IAAA,iEAAM;IAAA,4DAAU;IAE7C,yEAA+C;IAClB,iEAAM;IAAA,4DAAU;IAG/C,gFAA0Y;IAAjV,wUAAiB,qBAAa,aAAa,cAAc,CAAC,IAAC,wRAA+J,wBAAgB,IAA/K,wPAA6Q,eAAO,IAApR;;IAApH,4DAA0Y;;;;IAN7X,0DAAiB;IAAjB,iFAAiB;IAGjB,0DAAiB;IAAjB,iFAAiB;IAGD,0DAA2B;IAA3B,qJAA2B;;;IAX9D,wEAAgC;IAC9B,iIAYO;IACT,qEAAe;;;IAbN,0DAAiB;IAAjB,oFAAiB;;;;IAiB1B,mFAAwJ;;IAAjG,8IAA4E;;;;IAKrI,yEAA8C;IAAA,uDAAgB;IAAA,4DAAK;;;IAA/D,6JAAyC;IAAC,0DAAgB;IAAhB,+EAAgB;;;;ADpBzD,MAAM,kBAAkB;IA+B7B,YACU,SAA2B,EAC3B,MAAc,EACd,QAAkB;QAFlB,cAAS,GAAT,SAAS,CAAkB;QAC3B,WAAM,GAAN,MAAM,CAAQ;QACd,aAAQ,GAAR,QAAQ,CAAU;QA/BrB,eAAU,GAAY,KAAK,CAAC;QAG5B,aAAQ,GAAY,IAAI,CAAC;QAYzB,eAAU,GAAY,KAAK,CAAC;QAC5B,gBAAW,GAAY,KAAK,CAAC;QAE7B,WAAM,GAAG,qEAAM,CAAC;QAChB,cAAS,GAAG,wEAAS,CAAC;QACtB,WAAM,GAAG,qEAAM,CAAC;QAChB,oBAAe,GAAG,yEAAe,CAAC;QAClC,aAAQ,GAAG,uEAAQ,CAAC;QACpB,kBAAa,GAAG,4EAAa,CAAC;QAC9B,YAAO,GAAG,sEAAO,CAAC;QAClB,kBAAa,GAAG,4EAAa,CAAC;QAC9B,WAAM,GAAG,qEAAM,CAAC;QAMrB,IAAI,CAAC,OAAO,GAAG,IAAI,yCAAO,EAAE,CAAC;IAC/B,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAEzB,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,UAAU,GAAG,mDAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAC9E,mDAAG,CAAC,CAAC,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,EAAE;YAC1B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAC/B,OAAO,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,gFAAmB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAEM,eAAe;IACtB,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,UAAU,EAAE;YACtC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;SACzB;IACH,CAAC;IAEM,eAAe,CAAC,KAAsB;QAC3C,IAAI,KAAK,CAAC,YAAY,KAAK,OAAO,EAAE;YAClC,IAAI,IAAI,CAAC,GAAG,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE;gBAC3D,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;gBACxB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,CAAC;aACnC;iBAAM;gBACL,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;gBACjC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;aAC1B;SACF;IACH,CAAC;IAEM,QAAQ,CAAC,KAAqB;QACnC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACxB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IACzD,CAAC;IAEM,IAAI;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;IAEM,KAAK;QACV,2CAAK,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YACxB,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC,CAAC,CAAC;IACL,CAAC;;oFArFU,kBAAkB;gHAAlB,kBAAkB;0EAQA,qDAAU;;;;;;;QCzBzC,4EAAuG;QAEnG,oHAES;QACX,4DAAM;QAEN,yEAAmE;QAE/D,oEAA4E;QAC9E,4DAAI;QAGN,yEAA6I;QAC3I,gIAce;QACjB,4DAAM;QAEN,yEAAuE;QACrE,6IAAwJ;QAC1J,4DAAM;QAGR,6MAEc;;QAtCwB,2KAAgE;QAEzF,0DAA8B;QAA9B,kGAA8B;QAMf,0DAAkB;QAAlB,2EAAkB;QAKf,0DAA+G;QAA/G,2KAA+G;QAC3H,0DAAe;QAAf,+EAAe;QAkBV,0DAAe;QAAf,+EAAe;;;;;;;;;;;;;;;;;;;;;ACzBhC,MAAM,eAAe;IAQ1B;QAFO,aAAQ,GAAY,IAAI,CAAC;IAEhB,CAAC;IAEV,QAAQ;IACf,CAAC;;8EAXU,eAAe;6GAAf,eAAe;QCP5B,yEAA+B;QAC7B,+EAAiF;QACnF,4DAAM;;QADY,0DAAqB;QAArB,kFAAqB;;;;;;;;;;;;;;;;;;;;;;;ACAoB;AACD;AACmD;;;;;;;ICUzG,qEAA0E;;;IAAhC,wFAAwB;;;;;;;;;;IAGpE,0EAA2G;IAIhC,+DAAI;IAAA,4DAAI;IAC/E,wEAAkF;IAAA,uFAA4B;IAAA,4DAAI;IAClH,wEAA2E;IAAA,8DAAG;IAAA,4DAAI;IAClF,wEAA4E;IAAA,iFAAsB;IAAA,4DAAI;IACtG,yEAAwE;IAAA,6EAAiB;IAAA,4DAAI;IAC7F,yEAA0E;IAAA,yEAAa;IAAA,4DAAI;IAG3F,yEAA6F;IAAA,oEAAQ;IAAA,4DAAI;IACzG,yEAAgF;IAAA,kFAAsB;IAAA,4DAAI;;IATxD,0DAAoB;IAApB,6IAAoB;IAC7B,0DAAwC;IAAxC,6IAAwC;IAC/B,0DAAwB;IAAxB,6IAAwB;IACjC,0DAAkC;IAAlC,8IAAkC;IAClC,0DAA8B;IAA9B,8IAA8B;IAC9B,0DAAgC;IAAhC,8IAAgC;IAIhC,0DAAsC;IAAtC,8IAAsC;;ADlB9E,MAAM,qBAAqB;IAgBhC;QAVO,eAAU,GAAW,IAAI,CAAC;QAG1B,cAAS,GAAqB,QAAQ,CAAC;QAEvC,WAAM,GAAG,qEAAM,CAAC;QAChB,cAAS,GAAG,wEAAS,CAAC;QACtB,WAAM,GAAG,qEAAM,CAAC;QAChB,oBAAe,GAAG,yEAAe,CAAC;IAEzB,CAAC;IAEV,QAAQ;IACf,CAAC;;0FAnBU,qBAAqB;mHAArB,qBAAqB,4MAFrB,CAAC,EAAE,OAAO,EAAE,oEAAgB,EAAE,QAAQ,EAAE,EAAE,UAAU,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,EAAE,CAAC;QCT7F,2EAAyF;QAEvF,4EAA4H;QAC1H,wEAA+D;QAC/D,0EAAuC;QAAA,gEAAK;QAAA,4DAAO;QAErD,4EAA2H;QACzH,wEAAsD;QACtD,0EAAuC;QAAA,iEAAM;QAAA,4DAAO;QAGtD,4EAAwG;QACtG,yEAA8C;QAC9C,qHAA0E;QAC5E,4DAAS;QAET,qHAgBM;QACR,qEAAe;;QAjCQ,+FAAkC;QAE/C,0DAAuB;QAAvB,oFAAuB;QACD,0DAAwB;QAAxB,qFAAwB;QAG9C,0DAAuB;QAAvB,oFAAuB;QACD,0DAAe;QAAf,4EAAe;QAIV,0DAAuB;QAAvB,oFAAuB;QACpC,0DAAe;QAAf,4EAAe;QAC5B,0DAAgB;QAAhB,gFAAgB;;;;;;;;;;;;;;;;;;;;;;;ACZoG;;;;;;;ICC7H,wEAAgC;IAC9B,6EAAiE;IAC/D,wEAA8C;IAC9C,0EAAuB;IAAC,iEAAK;IAAA,4DAAO;IAEtC,6EAAyE;IACvE,wEAAuD;IACvD,0EAAuB;IAAC,kEAAM;IAAA,4DAAO;IAEvC,6EAAuE;IACrE,yEAA8C;IAC9C,2EAAuB;IAAC,oEAAO;IAAA,4DAAO;IAE1C,qEAAe;;;IAXS,0DAAe;IAAf,+EAAe;IAIf,0DAAwB;IAAxB,wFAAwB;IAIxB,0DAAe;IAAf,+EAAe;;;;IAUvC,mFAAoJ;;IAA/F,8IAAwD;;ADdxG,MAAM,kBAAkB;IAW7B;QARO,aAAQ,GAAY,IAAI,CAAC;QAEzB,WAAM,GAAG,qEAAM,CAAC;QAChB,cAAS,GAAG,wEAAS,CAAC;QACtB,WAAM,GAAG,qEAAM,CAAC;QAChB,eAAU,GAAG,+EAAgB,CAAC;QAC9B,oBAAe,GAAG,yEAAe,CAAC;IAGzC,CAAC;IAEM,QAAQ;IACf,CAAC;;oFAfU,kBAAkB;gHAAlB,kBAAkB;QCP/B,yEAAsD;QACpD,iIAae;QAEf,4EAAqE;QACnE,wEAAkD;QAClD,0EAAuB;QAAC,gEAAI;QAAA,4DAAO;QAGrC,0IAAoJ;QACtJ,4DAAM;QAEN,yEAA0B;QAEwC,0EAAc;QAAA,4DAAI;QAChF,+DAAE;QAAA,wEAAgE;QAAA,qEAAS;QAAA,4DAAI;QAC/E,+DAAE;QAAA,yEAAyD;QAAA,wEAAY;QAAA,4DAAI;QAC3E,mFACF;QAAA,4DAAS;;QA7BM,0DAAe;QAAf,+EAAe;QAgBR,0DAAmB;QAAnB,gFAAmB;QAIrB,0DAAe;QAAf,+EAAe;;;;;;;;;;;;;;;;;ACtB9B,MAAM,QAAQ;IAQnB,YAAY,KAAa;QACvB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IAND,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAMM,MAAM,CAAC,KAAa;QACzB,IAAI,KAAK,EAAE;YACT,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;YACpB,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;SAC1C;aAAM;YACL,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;YACnB,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;SACtC;IACH,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;CACF;;;;;;;;;;;;;;;;AC3BM,MAAM,SAAS;IAwBpB,YAAY,MAAY;QAvBxB,gCAAgC;QACzB,QAAG,GAAW,SAAS,CAAC;QACxB,UAAK,GAAW,SAAS,CAAC;QAC1B,UAAK,GAAW,SAAS,CAAC;QAC1B,SAAI,GAAW,SAAS,CAAC;QACzB,gBAAW,GAAW,SAAS,CAAC;QAChC,8BAAyB,GAAa,SAAS,CAAC;QAChD,gBAAW,GAAW,SAAS,CAAC;QAChC,UAAK,GAAW,SAAS,CAAC;QAC1B,aAAQ,GAAW,SAAS,CAAC;QAC7B,aAAQ,GAAW,SAAS,CAAC;QAC7B,wBAAmB,GAAoB,SAAS,CAAC;QACjD,6BAAwB,GAAa,SAAS,CAAC;QAC/C,2BAAsB,GAAW,SAAS,CAAC;QAC3C,aAAQ,GAAa,SAAS,CAAC;QAUpC,IAAI,MAAM,EAAE;YACV,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE;gBACtB,IAAI,GAAG,IAAI,MAAM,EAAE;oBACf,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;iBAC3B;aACF;SACF;QAED,IAAI,OAAO,IAAI,CAAC,wBAAwB,KAAK,QAAQ,EAAE;YACrD,IAAI,CAAC,wBAAwB,GAAI,IAAI,CAAC,wBAAmC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;SAC/H;QAED,IAAI,OAAO,IAAI,CAAC,yBAAyB,KAAK,QAAQ,EAAE;YACtD,IAAI,CAAC,yBAAyB,GAAI,IAAI,CAAC,yBAAoC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;SACjI;IACH,CAAC;IAvBD,IAAW,8BAA8B;QACvC,IAAI,IAAI,CAAC,yBAAyB,IAAI,IAAI,CAAC,yBAAyB,YAAY,KAAK,EAAE;YACrF,MAAM,IAAI,GAAG,IAAI,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACvD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SACrD;IACH,CAAC;IAoBM,YAAY;QACjB,OAAO;YACL,GAAG,EAAE,IAAI,CAAC,GAAG;YACb,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC;IACJ,CAAC;CAEF;;;;;;;;;;;;;;;;ACzBM,MAAM,IAAI;IAgBf,YAAY,OAAY;QAdjB,OAAE,GAAW,IAAI,CAAC;QAClB,SAAI,GAAoC,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC;QACnE,gBAAW,GAAe,IAAI,CAAC;QAE/B,UAAK,GAAW,IAAI,CAAC;QAErB,cAAS,GAAY,KAAK,CAAC;QAE3B,aAAQ,GAAU,IAAI,CAAC;QAO5B,IAAI,OAAO,KAAK,IAAI,EAAE;YACpB,OAAO;SACR;QACD,IAAI;YACF,IAAI,KAAK,IAAI,OAAO,EAAE;gBACpB,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC;gBAChC,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,EAAE,OAAO,CAAC,WAAW,EAAE,CAAC;gBACrE,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;aAC9C;iBAAM,IAAI,YAAY,IAAI,OAAO,EAAE;gBAClC,IAAI,CAAC,EAAE,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,CAAC;gBACpC,IAAI,CAAC,IAAI,GAAG,EAAE,KAAK,EAAE,OAAO,CAAC,OAAO,CAAC,cAAc,EAAE,IAAI,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa,EAAC,CAAC;gBAC1F,IAAI,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC;aAEzD;SACF;QAAC,OAAO,CAAC,EAAE;YACV,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;SAChB;IAEH,CAAC;IAvBM,UAAU;QACf,OAAO,IAAI,CAAC,EAAE,KAAK,IAAI,IAAI,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC3C,CAAC;CAuBF;;;;;;;;;;;;;;;;;;;;AC/DiD;;;;;AAO3C,MAAM,kBAAkB;IAM7B;QACE,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,gEAAqB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,wBAAwB,CAAC;IACzC,CAAC;IAEF,QAAQ;IACR,CAAC;;oFAbU,kBAAkB;gHAAlB,kBAAkB;QCR/B,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAC3C,gEAAI;QAIJ,oEAAG;QAAA,+TAA+P;QAAA,4DAAI;QAEtQ,oEAAG;QAAA,0FACD;QAAA,wEAAmC;QAAA,uEAAW;QAAA,4DAAI;QAAA,wEACxC;QAAA,sEAAI;QAAA,yGAAwC;QAAA,4DAAK;QAAA,uaAIL;QAAA,4DAAI;QAE5D,sEAAI;QAAA,4EAAgB;QAAA,4DAAK;QAEzB,qEAAG;QAAA,8PAEe;QAAA,sEAAI;QAAA,oEAAQ;QAAA,4DAAK;QAAC,kNAEvB;QAAA,4DAAI;QAEjB,qEAAG;QAAA,mUAE4E;QAAA,4DAAI;QAEnF,qEAAG;QAAA,0SAEkE;QAAA,4DAAI;QAEzE,sEAAI;QAAA,oFAAwB;QAAA,4DAAK;QAEjC,qEAAG;QAAA,qWAID;QAAA,wEAAoH;QAChH,yGAAwC;QAAA,4DAAK;QAAC,2EAAc;QAAA,4DAAI;QAAA,0FAEhE;QAAA,wEAAgI;QAC9H,gGAAmC;QAAA,4DAAI;QAAC,qEAC9C;QAAA,4DAAI;QAEN,sEAAI;QAAA,yEAAa;QAAA,4DAAK;QAEtB,qEAAG;QAAA,6uBAO0C;QAAA,4DAAI;QAEjD,sEAAI;QAAA,wEAAY;QAAA,4DAAK;QAErB,qEAAG;QAAA,kLACqB;QAAA,wEAAyC;QAAA,kFAAsB;QAAA,4DAAI;QAAA,8DAAE;QAAA,4DAAI;;QA/DpG,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;QAQjC,0DAA8B;QAA9B,6IAA8B;;;;;;;;;;;;;;;;;;;;ACZO;;;AAO3C,MAAM,kBAAkB;IAM7B;QACE,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,gEAAqB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,mBAAmB,CAAC;IACpC,CAAC;IAEK,QAAQ;IACf,CAAC;;oFAbU,kBAAkB;gHAAlB,kBAAkB;QCR/B,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAC3C,gEAAI;QAIJ,uEAAsB;QAAA,8PAEE;QAAA,sEAAI;QAAA,yGAA8C;QAAA,4DAAK;QAAA,+KAChC;QAAA,4DAAI;QAGnD,qEAAG;QAAA,kZAGgD;QAAA,sEAAI;QAAA,8EAAsB;QAAA,4DAAK;QAAA,6DAAC;QAAA,4DAAI;QAEvF,qEAAG;QAAA,4ZAG2C;QAAA,4DAAI;;QAxBrD,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;;;;;;;;;;;;;;;;;;;;;ACFI;;;;;ICKtC,0EAA2D;IAC7C,2EAAgB;IAAA,4DAAS;IACrC,oEAAG;IAAA,wFACD;IAAA,qEAAuI;IACvI,yFACF;IAAA,4DAAI;IACJ,oEAAG;IACD,sFACA;IAAA,iEAAM;IAAA,0EAAQ;IAAA,8EAAkB;IAAA,4DAAS;IAAA,8DAC3C;IAAA,4DAAI;IACJ,qEAAG;IACD,sEAAgG;IAClG,4DAAI;IACJ,qEAAG;IACD,oEAAO;IAAA,0EAAQ;IAAA,+DAAG;IAAA,4DAAS;IAAA,8DAC7B;IAFA,4DAAG;IAEH,qEAAG;IACD,sEAA4G;IAC9G,4DAAI;IACJ,qEAAoB;IACpB,qEAAG;IACD,sEAAsF;IACxF,4DAAI;IACJ,qEAAG;IACD,qKACA;IAAA,sEAAI;IAAA,2IAA+E;IAAA,4DAAK;IAE1F,qEAAoB;IACpB,qEAAG;IAAQ,8EAAkB;IAAA,4DAAS;IACtC,qEAAG;IACD,oOAEF;IAAA,4DAAI;IACJ,qEAAG;IACD,sEAA2H;IAC7H,4DAAI;IACJ,qEAAG;IACD,sJACF;IAAA,4DAAI;IACJ,qEAAG;IACD,6JACgB;IAAA,yEAAqI;IAAA,kFAAsB;IAAA,4DAAI;IAAA,8DACjL;IAAA,4DAAI;;;IA9BsC,2DAAuD;IAAvD,6LAAuD;IAKvD,0DAAmE;IAAnE,kNAAmE;IAiB3C,2DAA0D;IAA1D,yMAA0D;IAOvG,0DAAiI;IAAjI,kSAAiI;;;IAGxJ,0EAA8D;IAChD,oEAAS;IAAA,4DAAS;IAC9B,oEAAG;IACC,wHACF;IAAA,4DAAS;;;IAhDf,4EAAuE;IACrE,qIA0CM;IACN,oIAKM;IACR,qEAAe;;;IAjDY,0DAAgC;IAAhC,mGAAgC;IA2C7B,0DAAgC;IAAhC,mGAAgC;;;IAWxD,0EAAwD;IAElD,oHACF;IAAA,4DAAS;;;IAEb,0EAA2D;IAEvD,8HACF;IAAA,4DAAI;IACJ,oEAAG;IACD,qEAA+J;IACjK,4DAAI;IACJ,oEAAG;IACD,mKACA;IAAA,qEAA6I;IAAC,oEAAQ;IAAA,yEAAQ;IAAA,8EAAkB;IAAA,4DAAS;IAAA,8DAC3L;IAAA,4DAAI;IACJ,qEAAG;IACD,sGAAyC;IAAA,0EAAQ;IAAA,mEAAO;IAAA,4DAAS;IAAA,8DACnE;IAAA,4DAAI;IACJ,qEAAG;IACD,sEAA6G;IAC/G,4DAAI;IACJ,qEAAoB;IACpB,qEAAG;IACD,sEAA2F;IAC7F,4DAAI;IACJ,qEAAG;IACD,qKACA;IAAA,sEAAI;IACF,6IACF;IAAA,4DAAK;IAEP,qEAA6B;IAC7B,qEAAG;IAAQ,8EAAkB;IAAA,4DAAS;IACtC,qEAAG;IACD,gOAEF;IAAA,4DAAI;IACJ,qEAAG;IACD,sEAAkH;IACpH,4DAAI;IACJ,qEAAG;IACD,8GACF;IAAA,4DAAI;IACJ,qEAAG;IACD,sEAAuH;IACzH,4DAAI;IACJ,qEAAG;IACD,uEAAU;IAAA,0EAAQ;IAAA,0EAAc;IAAA,4DAAS;IAAA,8IAE3C;IAAA,4DAAI;IACJ,qEAAG;IACD,6JACgB;IAAA,yEAAoI;IAAA,kFAAsB;IAAA,4DAAI;IAAA,8DAChL;IAAA,4DAAI;;;IA5C0G,0DAAgD;IAAhD,uLAAgD;IAU5G,2DAA0D;IAA1D,iMAA0D;IAmB1C,2DAAiD;IAAjD,iMAAiD;IAMjD,0DAAsD;IAAtD,sMAAsD;IAQnG,0DAAgI;IAAhI,oSAAgI;;;IAvDzJ,0EAA+D;IACjD,+EAAoB;IAAA,4DAAS;IACzC,yJAIM;IACN,0JAkDM;IACR,4DAAM;;;IAxDqB,0DAA6B;IAA7B,gGAA6B;IAK1B,0DAA6B;IAA7B,gGAA6B;;;IAsDzD,0EAAyD;IAEnD,qHACF;IAAA,4DAAS;;;IAEb,0EAA4D;IAExD,2HACF;IAAA,4DAAI;IACJ,oEAAG;IACD,qEAA4I;IAC9I,4DAAI;IACJ,oEAAG;IACD,iKAEF;IAAA,4DAAI;IACJ,oEAAG;IACD,qEAA6I;IAC/I,4DAAI;IACJ,oEAAG;IACD,gTAEF;IAHA,4DAAG;IAGH,qEAAG;IACD,sEAAgG;IAChG,+QAEF;IAAA,4DAAI;;;IAhBuE,0DAAgE;IAAhE,uMAAgE;IAOrE,0DAAsE;IAAtE,6MAAsE;;;IAnBhJ,0EAAiE;IACnD,gFAAqB;IAAA,4DAAS;IAC1C,yJAIM;IACN,0JAsBM;IACR,4DAAM;;;IA5BsB,0DAA6B;IAA7B,gGAA6B;IAK1B,0DAA6B;IAA7B,gGAA6B;;;IAwB5D,0EAAqG;IACvF,qFAA0B;IAAA,4DAAS;IAC/C,oEAAG;IACC,gIACF;IAAA,4DAAS;;;IA/Ff,4EAA8D;IAC5D,mJA0DM;IACN,mJA8BM;IACN,mJAKM;IACR,qEAAe;;;IAhGgB,0DAAgC;IAAhC,mGAAgC;IA2D/B,0DAAiC;IAAjC,oGAAiC;IA+B3B,0DAA+D;IAA/D,yIAA+D;;;IA5FvG,4EAAkF;IAChF,sJAiGe;IACjB,qEAAe;;;IAlGuB,0DAAwB;IAAxB,2FAAwB;;;IAoG5D,0EAAmE;IACrD,gFAAqB;IAAA,4DAAS;IAC1C,oEAAG;IAAA,gIACD;IAAA,qEAAmH;IACrH,4DAAI;IACJ,oEAAG;IACD,0EAAc;IAAA,yEAAQ;IAAA,mEAAO;IAAA,4DAAS;IAAA,8DACxC;IAAA,4DAAI;IACJ,qEAAG;IACD,sEAAyE;IAC3E,4DAAI;IACJ,iEAAI;IACJ,qEAAG;IAAA,kLACD;IAAA,sEAAuJ;IACzJ,4DAAI;IACJ,qEAAG;IACD,uEAAU;IAAA,0EAAQ;IAAA,yFAA6B;IAAA,4DAAS;IAAA,8DAC1D;IAAA,4DAAI;IACJ,qEAAG;IAAA,sEAAgI;IACnI,4DAAI;IACJ,qEAAG;IACD,2EAAc;IAAA,0EAAQ;IAAA,mEAAO;IAAA,4DAAS;IAAA,8DACxC;IAAA,4DAAI;IACJ,qEAAG;IACD,sEAAyE;IAC3E,4DAAI;IACJ,qEAAoB;IACpB,yEAAyB;IACvB,sEAA2F;IAC3F,+JACA;IAAA,sEAAI;IAAA,2IAA+E;IAAA,4DAAK;IAE1F,qEAAkC;IAClC,qEAAG;IACD,6JACgB;IAAA,yEAAqI;IAAA,kFAAsB;IAAA,4DAAI;IAAA,8DACjL;IAAA,4DAAI;IACJ,yEAA4B;IAAA,kEAAM;IAAA,4DAAI;;;IAlCI,0DAAwE;IAAxE,+MAAwE;IAMpG,0DAA0D;IAA1D,iMAA0D;IASI,2DAAoD;IAApD,2LAAoD;IAMlH,0DAA0D;IAA1D,iMAA0D;IAWnD,2DAAiI;IAAjI,qSAAiI;;;IAIxJ,0EAA2D;IAC7C,qFAA0B;IAAA,4DAAS;IAC/C,oEAAG;IACC,gIACF;IAAA,4DAAS;;;IA5Cf,4EAAuF;IACrF,sIAsCM;IACN,qIAKM;IACR,qEAAe;;;IA7CqB,0DAA+B;IAA/B,kGAA+B;IAuCxC,0DAAgC;IAAhC,mGAAgC;;AD5L9D,MAAM,wBAAwB;IAoBnC,YACU,EAAyB;QAAzB,OAAE,GAAF,EAAE,CAAuB;QAhBnC,eAAU,GAAG,IAAI,CAAC;QACX,kBAAa,GAAG,SAAS,CAAC;QAiB/B,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,gEAAqB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,iCAAiC,CAAC;IACnD,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QAC1C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC;QACnC,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QACnC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC;QAE7C,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC;QACtD,IAAI,CAAC,kBAAkB,GAAG,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAE/E,8BAA8B;QAC9B,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,IAAI,CAAC,EAAE;YACzD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;SACvB;QACD,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,EAAE;YAC7B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;YAClB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;SACxB;aAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,KAAK,SAAS,CAAC,EAAE;YACxC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;YACvB,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;SACpB;IAEH,CAAC;;gGArDU,wBAAwB;sHAAxB,wBAAwB;QCVrC,yEAA0C;QAIR,uDAAY;QAAA,4DAAK;QAC3C,yEAA0C;QACxC,mEAA8B;QAC9B,sIAkDe;QACf,sIAmGe;QACf,wIA8Ce;QACf,wEAAiC;QAEzB,gGAAoC;QAAA,4DAAK;QAGjD,2EAA8C;QACsC,0EAAc;QAAA,4DAAI;;QAnN3G,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAET,0DAAY;QAAZ,sFAAY;QAGT,0DAA0C;QAA1C,8GAA0C;QAmD/B,0DAA0C;QAA1C,8GAA0C;QAoGvC,0DAA4C;QAA5C,gHAA4C;;;;;;;;;;;;;;;;;;;;AC7J7C;;;AAO3C,MAAM,mBAAmB;IAM9B;QACE,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,gEAAqB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,cAAc,CAAC;IAC/B,CAAC;IAEK,QAAQ;IACf,CAAC;;sFAbU,mBAAmB;iHAAnB,mBAAmB;QCRhC,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAC3C,gEAAI;QAEF,oEAAG;QAAA,sJACS;QAAA,qEAAI;QAAA,0GAAyC;QAAA,4DAAK;QAAA,4EAAgB;QAAA,4DAAI;QAEhF,wEAAoH;QAClH,qEAC6E;QAAA,4DAAI;QAGrF,qEAAG;QAAA,kNACsE;QAAA,4DAAI;QAE7E,qEAAG;QAAA,wNAGD;QAAA,wEAA2D;QAAA,oFAAwB;QAAA,4DAAI;QACvF,uFAA0B;QAAA,0EAAQ;QAAA,kEAAM;QAAA,4DAAS;QAAC,sFAAyB;QAAA,4DAAI;;QAvBtF,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;;;;;;;;;;;;;;;;;;;;;;;;;ACJiC;AAE7B;;;;;;;;AAQ3C,MAAM,aAAa;IAWxB,YACU,oBAA0C;QAA1C,yBAAoB,GAApB,oBAAoB,CAAsB;QAX7C,kBAAa,GAAG,4EAAa,CAAC;QAC9B,gBAAW,GAAG,0EAAW,CAAC;QAO1B,mBAAc,GAAG,+FAA+F,CAAC;QAKtH,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,gEAAqB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,4BAA4B,CAAC;IAC7C,CAAC;IAEK,QAAQ;QACb,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,CAAC;IAC5D,CAAC;IAED,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACvC,EAAE,CAAC,cAAc,CAAC,EAAC,QAAQ,EAAE,QAAQ,EAAC,CAAC,CAAC;IAC1C,CAAC;;0EA1BU,aAAa;2GAAb,aAAa;QCX1B,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAC3C,gEAAI;QAGF,kFAA+D;QAIzD,yEAA4E;QAC5E,2EAAe;QAAA,+GAAmD;QAAA,4DAAO;QAG3E,qEAAG;QAAA,mFAAuB;QAAA,yEAA0E;QAAA,sEAAU;QAAA,4DAAI;QAAC,8IACjH;QACA,odAKF;QAAA,4DAAI;QACJ,2EAA2C;QAIvC,sEAA8F;QAC9F,8EAC4F;QAAA,sEAAU;QAAA,4DAAS;QAYrH,6FAAmC;QAE/B,yEAAkF;QAClF,2EAAe;QAAA,mKAAwF;QAAA,4DAAO;QAEhH,qEAAG;QAAA,ygBAGmH;QAAA,4DAAI;QAG5H,6FAAoC;QAE9B,yEAAmF;QACnF,2EAAe;QAAA,2IAA+E;QAAA,4DAAO;QAEzG,qEAAG;QACD,wHACA;QAAA,yEACgB;QAAI,yGAAwC;QAAA,4DAAK;QAAC,2EAAc;QAAA,4DAAI;QAAA,qFAEpF;QAAA,yEAAgI;QAC9H,gGAAmC;QAAA,4DAAI;QAAC,+EAAkB;QAAA,sEAAI;QAAA,yGAAwC;QAAA,4DAAK;QAAA,8DAC/G;QAAA,4DAAI;QAGN,6FAAkC;QAE5B,yEAAiF;QACjF,2EAAe;QAAA,iGAAqC;QAAA,4DAAO;QAE/D,qEAAG;QAAA,6TAGF;QAAA,4DAAI;QAGP,6FAA0B;QAEpB,yEAAyE;QACzE,2EAAe;QAAA,uHAA2D;QAAA,4DAAO;QAErF,qEAAG;QAAA,kUAGF;QAAA,4DAAI;QAGP,6FAAgC;QAE5B,yEAA+E;QAC/E,2EAAe;QAAA,oLACwC;QAAA,4DAAO;QAEhE,qEAAG;QAAA,oOAGF;QAAA,4DAAI;QAGP,6FAA8B;QAExB,yEAA6E;QAC7E,2EAAe;QAAA,wGAA4C;QAAA,4DAAO;QAEpE,qEAAG;QAAA,sHAA0D;QAAA,sEAAI;QAAA,uGAAsC;QAAA,4DAAK;QAAA,sYAK3G;QAAA,4DAAI;QAGT,6FAAoC;QAE9B,yEAAmF;QACnF,2EAAe;QAAA,2IAA+E;QAAA,4DAAO;QAEzG,qEAAG;QAAA,iJACK;QAAA,yEAAyC;QAAA,kFAAsB;QAAA,4DAAI;QAAA,8DACzE;QAAA,4DAAI;QAGR,6FAAoC;QAE9B,0EAAmF;QACnF,4EAAe;QAAA,iNAAoJ;QAAA,4DAAO;QAE9K,sEAAG;QAAA,mvBAQD;QAAA,4DAAI;QAIV,4EAAiE;QACoD,2EAAc;QAAA,4DAAI;;;;;;;;;;QAhJ5I,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;QAId,0DAAmB;QAAnB,4EAAmB;QAEV,0DAAe;QAAf,wEAAe;QAE/B,0DAAwD;QAAxD,kHAAwD;QAItC,0DAA2C;QAA3C,8IAA2C;QASnE,0DAA2C;QAA3C,8IAA2C;QAGvC,0DAAwD;QAAxD,4KAAwD;QAgBtD,0DAA8D;QAA9D,kHAA8D;QAW5D,0DAA+D;QAA/D,kHAA+D;QAe/D,2DAA6D;QAA7D,kHAA6D;QAW7D,0DAAqD;QAArD,kHAAqD;QAWvD,0DAA2D;QAA3D,kHAA2D;QAYzD,0DAAyD;QAAzD,kHAAyD;QAazD,2DAA+D;QAA/D,kHAA+D;QAU/D,2DAA+D;QAA/D,kHAA+D;;;;;;;;;;;;;;;;;;;;;;;AC1HnF,MAAM,aAAa;IAGxB;QAFO,mBAAc,GAAG,+FAA+F,CAAC;IAGxH,CAAC;IAEM,QAAQ;IACf,CAAC;;0EAPU,aAAa;2GAAb,aAAa;QCN1B,yEAAmE;QAI/D,oEACM;QAEN,yEAAsE;QAG9C,gEAAM;QAAA,4DAAK;QACjC,oEAAG;QAAA,6FAAkC;QAAA,4DAAI;QAEzC,yEAAuB;QACrB,2EAI8C;QAChD,4DAAM;QAEJ,qEAAG;QAAA,0HACqB;QAAA,wEAAM;QAAwC,mFAAuB;QAAA,4DAAI;QAIjG,0EAAiE;QACiC,0EAAc;QAAA,4DAAI;;QAVpH,2DACiC;QADjC,oOACiC;;;;;;;;;;;;;;;;;;;;;;;;;ACjB2B;AACrC;AAGG;;;;;;;;ICA9B,4EAAqD;IACnD,mEAAmC;IACrC,4DAAQ;;;IADH,0DAA2B;IAA3B,uFAA2B;;;IAM9B,wEAAiG;IAAA,yFAA8B;IAAA,4DAAI;;;IAEjI,wEAA4B;IAC1B,iHACF;IAAA,4DAAI;;;IAON,wEAAiG;IAAA,qFAA0B;IAAA,4DAAI;;;IAE7H,wEAA4B;IAC1B,iFACF;IAAA,4DAAI;;;ADdL,MAAM,kBAAkB;IAW7B,YACU,WAAwB,EACxB,MAAc;QADd,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAQ;QAPjB,UAAK,GAAqB,IAAI,yCAAO,EAAE,CAAC;QACxC,WAAM,GAAmB,IAAI,yCAAO,EAAE,CAAC;QAEtC,SAAI,GAAY,IAAI,4CAAO,EAAE,CAAC;IAKtC,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEvB,IAAI,CAAC,QAAQ,GAAG,IAAI,uDAAW,CAAC,IAAI,EAAE,CAAE,+DAAmB,EAAE,4DAAgB,CAAE,CAAC,CAAC;QACjF,IAAI,CAAC,QAAQ,GAAG,IAAI,uDAAW,CAAC,IAAI,EAAE,CAAE,+DAAmB,CAAE,CAAC,CAAC;QAE/D,IAAI,CAAC,IAAI,GAAG,IAAI,qDAAS,CAAC;YACxB,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,QAAQ,EAAE,IAAI,CAAC,QAAQ;SACxB,CAAC,CAAC;IACL,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM;QACX,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACnB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAEtB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,SAAS,CAAC;gBAC1F,IAAI,EAAE,IAAI,CAAC,EAAE;oBACX,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBACxB,uCAAuC;gBACzC,CAAC;gBACD,KAAK,EAAE,KAAK,CAAC,EAAE;oBACb,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;oBACxB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACxB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACzB,CAAC;aACF,CAAC,CAAC;SACJ;IACH,CAAC;;oFAhDU,kBAAkB;gHAAlB,kBAAkB;QCb/B,0EAAsC;QACgB,6EAAkB;QAAA,4DAAK;QAE3E,8EAAuD;;QAErD,kHAEQ;;QAER,yEAAwB;QACf,gEAAK;QAAA,4DAAQ;QACpB,uEAAgJ;QAChJ,4GAAmI;QACnI,4MAIc;QAChB,4DAAM;QAEN,0EAAwB;QACf,oEAAQ;QAAA,4DAAQ;QACvB,uEAAmJ;QACnJ,4GAA+H;QAC/H,4MAIc;QAChB,4DAAM;QAEN,2EAA2C;QAC+C,2IAAS,YAAQ,IAAC;QAAC,iEAAK;QAAA,4DAAS;;;;QAhC5G,+EAAkB;QAGP,0DAA0B;QAA1B,iJAA0B;QAE9B,0DAAqB;QAArB,8IAAqB;QAMlC,0DAAwB;QAAxB,qFAAwB;QAC3B,0DAA4C;QAA5C,8GAA4C;QAUzC,0DAAwB;QAAxB,qFAAwB;QAC3B,0DAA4C;QAA5C,8GAA4C;QASxC,0DAAyB;QAAzB,sFAAyB;;;;;;;;;;;;;;;;;;;;;;;AC5BL;AACa;;;;;AAMxC,MAAM,cAAc;IAIzB,YACU,WAAwB,EACxB,MAAc;QADd,gBAAW,GAAX,WAAW,CAAa;QACxB,WAAM,GAAN,MAAM,CAAQ;QAJhB,YAAO,GAAY,IAAI,4CAAO,EAAE,CAAC;IAKvC,CAAC;IAEI,QAAQ;QACb,IAAI,CAAC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC/D,IAAI,IAAI,YAAY,oDAAI,EAAE;gBACxB,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,EAAE;oBAC5B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;iBAC7B;aACF;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,CAAC,OAAO,EAAE;YAChB,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;SAC5B;IACH,CAAC;;4EAvBU,cAAc;4GAAd,cAAc;QCX3B,yEAA0B;QAIpB,4EAAiC;QAEjC,yEAAmC;QACjB,8EAAmB;QAAA,4DAAI;QACvC,oEAAG;QAAkC,mEAAQ;QAAA,4DAAI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACLsB;AAClB;AACX;AACS;AACzB;;;;;;;;;;;;;;;ICgBtB,qEAAuD;IAA6C,uDAAgB;IAAA,4DAAI;;;IAA9D,0DAAyC;IAAzC,4JAAyC;IAAC,0DAAgB;IAAhB,8EAAgB;;;IALxH,4FAAwG;IAEpG,yEAAyE;IAAC,gFAC5E;IAAA,4DAAS;IACT,qEAAI;IACF,6IAA6H;IAC/H,4DAAK;;;;;IAJM,0DAAqD;IAArD,wHAAqD;IAGzC,0DAAgC;IAAhC,qGAAgC;;;IAezD,4FAAiH;IAE7G,yEAAqE;IAAC,mFACxE;IAAA,4DAAS;IACT,qEAAoE;IACtE,4DAAkB;;;;;IAHL,0DAAiD;IAAjD,yHAAiD;IAE7C,0DAA8C;IAA9C,wKAA8C;;;;IAzCrE,yEAAyD;IAG2B,8TAAU,8BAAsB,IAAC;;IAAC,4DAAsB;IAAA,uDACxI;IAAA,4DAAK;IACL,oEAEM;IACR,4DAAO;IACP,yEAA6C;IAEzC,wEAAwF;IAG1F,4DAAS;IAET,qFAA+D;IAC7D,sJAOkB;IAClB,6FAAwB;IAEpB,0EAAuE;IAAC,mEAC1E;IAAA,4DAAS;IACT,sEAAmD;IACrD,4DAAkB;IAClB,6FAA8B;IAE1B,0EAA6E;IAAC,yEAChF;IAAA,4DAAS;IACT,sEAAyD;IAC3D,4DAAkB;IAClB,sJAKkB;IACpB,4DAAY;;;;;;IAxCW,0DAAoC;IAApC,4JAAoC;IAA6E,0DACxI;IADwI,6FACxI;IACK,0DAA4B;IAA5B,sJAA4B;IAMc,0DAAgC;IAAhC,0JAAgC;IAC7B,0DAAmC;IAAnC,6JAAmC;IACtC,0DAAgC;IAAhC,0JAAgC;IAGzD,0DAAmB;IAAnB,4EAAmB;IACZ,0DAA2E;IAA3E,6IAA2E;IAUzF,0DAAmD;IAAnD,wHAAmD;IAE/C,0DAA6B;IAA7B,uJAA6B;IAIjC,0DAAyD;IAAzD,wHAAyD;IAErD,0DAAmC;IAAnC,6JAAmC;IAElC,0DAAwF;IAAxF,0JAAwF;;ADpB3G,MAAM,yBAAyB;IAcpC,YACS,gBAAkC,EACjC,KAAqB,EACtB,aAAqC,EACpC,eAAyC,EACzC,KAAY;QAJb,qBAAgB,GAAhB,gBAAgB,CAAkB;QACjC,UAAK,GAAL,KAAK,CAAgB;QACtB,kBAAa,GAAb,aAAa,CAAwB;QACpC,oBAAe,GAAf,eAAe,CAA0B;QACzC,UAAK,GAAL,KAAK,CAAO;QAbf,kBAAa,GAAG,4EAAa,CAAC;QAC9B,gBAAW,GAAG,0EAAW,CAAC;QAKzB,SAAI,GAAG,IAAI,4CAAO,EAAE,CAAC;IAS7B,CAAC;IAEM,QAAQ;QACb,sDAAsD;QAEtD,yEAAyE;QACzE,MAAM,IAAI,GAAG,IAAI,4CAAO,EAAE,CAAC;QAE3B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACrD,IAAI,CAAC,WAAW,EAAE,CAAC;YAEnB,IAAI,IAAI,CAAC,SAAS,EAAE;gBAClB,IAAI,CAAC,SAAS,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;aACvC;YAED,yCAAyC;YACzC,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAEjC,gDAAgD;YAChD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI;YAC3D,eAAe;YACf,mDAAG,CAAC,KAAK,CAAC,EAAE;gBACV,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACrB,CAAC,CAAC;YAEF,+BAA+B;YAC/B,mDAAG,CAAC,KAAK,CAAC,EAAE;gBACV,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE;oBACzC,gDAAgD;iBACjD;YACH,CAAC,CAAC;YAEF,kDAAkD;YAClD,sDAAM,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,CAAC;YAEtD,iBAAiB;YACjB,mDAAG,CAAC,KAAK,CAAC,EAAE;gBACV,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnC,CAAC,CAAC;YAEF,8BAA8B;YAC9B,mDAAG,CAAC,KAAK,CAAC,EAAE;gBACV,IAAI,CAAC,SAAS,GAAG,IAAI,0CAAO,EAAW,CAAC;gBAExC,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;oBAC1C,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,MAAM,EAAE,IAAI;iBACb,CAAC,CAAC;gBAEH,yCAAyC;gBACzC,IAAI,CAAC,WAAW,GAAG,4CAAK,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;gBAEpD,qEAAqE;gBACrE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,6DAAY,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE;oBACpE,IAAI,MAAM,EAAE;wBACV,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC;4BACvB,GAAG,EAAE,KAAK,CAAC,GAAG;4BACd,MAAM,EAAE,IAAI;4BACZ,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,KAAK,EAAE,KAAK,CAAC,KAAK;yBACnB,CAAC,CAAC;qBACJ;yBAAM;wBACL,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC;4BAC1B,GAAG,EAAE,KAAK,CAAC,GAAG;4BACd,MAAM,EAAE,KAAK;4BACb,KAAK,EAAE,KAAK,CAAC,KAAK;4BAClB,KAAK,EAAE,KAAK,CAAC,KAAK;yBACnB,CAAC,CAAC;qBACJ;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;YAEF,mBAAmB;YACnB,mDAAG,CAAC,KAAK,CAAC,EAAE;gBACV,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC;oBACrB,GAAG,EAAE,KAAK,CAAC,GAAG;oBACd,MAAM,EAAE,IAAI;oBACZ,KAAK,EAAE,KAAK,CAAC,KAAK;oBAClB,KAAK,EAAE,KAAK,CAAC,KAAK;iBACnB,CAAC,CAAC;YACL,CAAC,CAAC,CAEH,CAAC,CAAC,cAAc;QACnB,CAAC,CAAC,CAAC,CAAC,2BAA2B;IACjC,CAAC,CAAC,iBAAiB;IAEZ,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC;IAEM,cAAc,CAAC,MAAe;QACnC,IAAI,IAAI,CAAC,SAAS,EAAE;YAClB,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC7B;IACH,CAAC;;kGAnHU,yBAAyB;uHAAzB,yBAAyB;kEASzB,wEAAkB;;;;;QC3B/B,yEAA0B;QACxB,uHA6CM;;QA9CR,4DAA0B;;QACN,0DAAyB;QAAzB,iJAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;ACA8B;AACjC;;;;;;;ICoBtC,qFAA+H;;;IAA9C,mFAAuB;;;ADZrG,MAAM,sBAAsB;IAMjC,YAAoB,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAF9C,YAAO,GAAsB,IAAI,iDAAe,CAAC,IAAI,CAAC,CAAC;IAEL,CAAC;IAEpD,QAAQ;QACb,IAAI,CAAC,YAAY,GAAG,mDAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACvF,mDAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;YAEtB,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE;gBAClC,OAAO,KAAK,CAAC;aACd;YAED,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC;QAC/E,CAAC,CAAC,EACF,mDAAG,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CACxC,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,GAAG,KAAe;QAC9B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3B,CAAC;;4FAxBU,sBAAsB;oHAAtB,sBAAsB;QCVnC,yEAAqC;QAGL,yEAAc;QAAA,4DAAK;QAE/C,yEAAkD;QAIM,8IAAS,WAAO,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAC;QAAC,8DAAG;QAAA,4DAAS;QAC5F,6EAA0F;QAA1C,+IAAS,WAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAC;QAAC,+DAAG;QAAA,4DAAS;QACtG,6EAAyG;QAAzD,+IAAS,WAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAC;QAAC,+DAAG;QAAA,4DAAS;QACrH,6EAAmH;QAAnE,+IAAS,WAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,IAAC;QAAC,+DAAG;QAAA,4DAAS;QAEjI,0EAAsE;QACpB,+IAAS,YAAQ,IAAC;QAAC,+DAAG;QAAA,4DAAS;QAC/E,6EAAqE;QAAA,kEAAM;QAAA,4DAAS;QAM5F,qJAA+H;;QACjI,4DAAM;;QAPoD,2DAAoB;QAApB,6IAAoB;QAMpB,0DAAuB;QAAvB,uJAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBR;AACtC;AAEsD;;;;;;;;ICcrF,oFAAsH;;;IAA9C,mFAAuB;;;IAC/F,yEAA2I;IACtI,kFAAuB;IAAA,4DAAI;;;IAHlC,wEAA0D;IACxD,oKAAsH;IACtH,oIAEM;IACR,qEAAe;;;;IAJ2C,0DAAc;IAAd,mFAAc;IAChE,0DAAiH;IAAjH,wMAAiH;;;ADRtH,MAAM,wBAAwB;IAKnC,YACU,gBAAkC;QAAlC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAHrC,YAAO,GAAG,IAAI,iDAAe,CAAoB,IAAI,CAAC,CAAC;IAK9D,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,YAAY,GAAG,mDAAa,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CACvF,mDAAG,CAAC,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,EAAE,EAAE;YAEtB,IAAI,CAAC,MAAM,EAAE;gBACX,OAAO,EAAE,CAAC;aACX;YAED,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,MAAM,CAAC;YAC5B,IAAI,QAAkB,CAAC;YAEvB,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE;gBACpC,OAAO,EAAE,CAAC;aACX;YAED,IAAI,IAAI,EAAE;gBACR,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC;aAC3E;YAED,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;gBACzB,IAAI,KAAK,GAAG,uFAAmB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;gBAE5C,IAAI,IAAI,EAAE;oBACR,IAAI,YAAY,GAAG,KAAK,CAAC;oBACzB,KAAK,MAAM,IAAI,IAAI,QAAQ,EAAE;wBAC3B,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;wBAChF,IAAI,YAAY,EAAE;4BAChB,MAAM;yBACP;qBACF;oBAED,KAAK,GAAG,KAAK,IAAI,YAAY,CAAC;iBAC/B;gBAED,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;;gGAhDU,wBAAwB;sHAAxB,wBAAwB;QCXrC,yEAAqC;QAEL,6EAAkB;QAAA,4DAAK;QACnD,oFAAyD;QAAzC,kLAAmB,wBAAoB,IAAC;QAAC,4DAAiB;QAI9E,yEAAqC;QAG/B,uFACF;QAAA,4DAAI;QAIR,yEAAqC;QAEjC,wIAKe;;QACjB,4DAAM;;QAd6C,0DAAwB;QAAxB,6IAAwB;QAQ1D,0DAA2B;QAA3B,oJAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IEf5C,uEAA0E;;;IAE1E,yEAAiE;IAE7D,2EAA+B;IACjC,4DAAO;;;IAPX,wEAA6D;IAE3D,yIAA0E;IAE1E,6HAIM;;IACR,qEAAe;;;;;IAPD,0DAAgD;IAAhD,qHAAgD;IAEjC,0DAAwB;IAAxB,kJAAwB;;;IAQnD,yEAA0B;IAMd,oEAAmE;IACnE,mEACA;IAAA,yEAAQ;IAAA,iFAAsB;IAAA,4DAAS;;ADX9C,MAAM,kBAAkB;IAQ7B,YACU,gBAAkC,EAClC,aAAqC;QADrC,qBAAgB,GAAhB,gBAAgB,CAAkB;QAClC,kBAAa,GAAb,aAAa,CAAwB;QAJxC,sBAAiB,GAAY,KAAK,CAAC;QAKtC,IAAI,YAAY,YAAY,OAAO,EAAE;YACnC,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACvD,IAAI,IAAI,EAAE;gBACR,IAAI;oBACF,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;iBAC3C;gBAAC,WAAM;iBACP;aACF;SACF;IACL,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC;IACpD,CAAC;;oFAzBU,kBAAkB;gHAAlB,kBAAkB;QCT/B,gIASe;;QAEf,2MAgBc;;;QA3BC,6IAAqB;;;;;;;;;;;;;;;;;;;;;;;ACC8B;AACb;;;;;;AAO9C,MAAM,0BAA0B;IAMrC;QAHO,kBAAa,GAAG,4EAAa,CAAC;QAInC,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,qCAAqC,CAAC;IAEvD,CAAC;IAED,QAAQ;IACR,CAAC;;oGAbU,0BAA0B;wHAA1B,0BAA0B;QCTvC,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAE3C,uEAAiB;QAA6B,qFAA0B;QAAA,qEAAI;QAAA,yGAAwC;QAAA,4DAAK;QAGzH,6EAEc;QACZ,yEAAuD;QAAA,yFACzD;QAAA,4DAAS;QAGT,wEAAgB;QAAA,8LAA6H;QAAA,4DAAI;QAE/I,qEAAG;QAAA,+IAAmF;QAAA,4DAAI;QAE1F,sEAAI;QACE,8GAAkD;QAAA,sEAAI;QAAA,+DAAG;QAAA,4DAAK;QAAC,mHAAiD;QAAA,4DAAK;QACzH,sEAAI;QAAA,oVAA8Q;QAAA,4DAAK;QAIzR,wEAAmB;QAAA,+bAAoX;QAAA,4DAAI;QAE3Y,qEAAG;QAAA,4HAAgE;QAAA,4DAAI;QAIvE,yEAA+B;QAAA,2FAA+B;QAAA,4DAAK;QACnE,qEAAiB;QAGjB,0EAAiB;QAAQ,yEAAa;QAAA,4DAAS;QAE/C,qEAAG;QAAA,+VAAmS;QAAA,4DAAI;QAI1S,0EAAiB;QAAQ,4EAAgB;QAAA,4DAAS;QAElD,qEAAG;QAAA,6HAAiE;QAAA,4DAAI;QAGxE,0EAAiB;QAAQ,uEAAW;QAAA,4DAAS;QAE7C,qEAAG;QAAA,+PAAmM;QAAA,4DAAI;QAG1M,0EAAiB;QAAQ,kEAAM;QAAA,4DAAS;QAExC,qEAAG;QAAA,8OAAkL;QAAA,4DAAI;QAGzL,0EAAiB;QAAQ,kEAAM;QAAA,4DAAS;QAExC,qEAAG;QAAA,yHAA6D;QAAA,4DAAI;QAGpE,yEAA+B;QAAA,yFAA6B;QAAA,4DAAK;QACjE,qEAA+B;QAE/B,0EAAiB;QAAQ,yEAAa;QAAA,4DAAS;QAE/C,sEAAI;QACE,+FAAmC;QAAA,4DAAK;QAE5C,sEAAI;QAAA,0EAAc;QAAA,4DAAK;QAEvB,sEAAI;QAAA,0HAA8D;QAAA,4DAAK;QAEvE,sEAAI;QAAA,kJAAsF;QAAA,4DAAK;QAE/F,sEAAI;QAAA,6FAAiC;QAAA,4DAAK;QAM5C,0EAAiB;QAAQ,mFAAuB;QAAA,4DAAS;QAEzD,sEAAI;QAEE,2LAGF;QAAA,0EAAoB;QAEhB,iFAAqB;QAAA,4DAAK;QAE9B,sEAAI;QAAA,wEAAY;QAAA,4DAAK;QAErB,sEAAI;QAAA,sEAAU;QAAA,4DAAK;QAEnB,sEAAI;QAAA,qFAAyB;QAAA,4DAAK;QAElC,sEAAI;QAAA,oEAAQ;QAAA,4DAAK;QAEjB,sEAAI;QAAA,0EAAe;QAAA,4DAAK;QAM5B,sEAAI;QAAA,sLAEF;QAAA,0EAAoB;QAEhB,kFAAsB;QAAA,4DAAK;QAE/B,sEAAI;QAAA,mFAAsB;QAAA,4DAAK;QAE/B,uEAAI;QAAA,6EAAgB;QAAA,4DAAK;QAEzB,uEAAI;QAAA,kFAAqB;QAAA,4DAAK;QAKhC,uEAAI;QAAA,qJAEF;QAAA,2EAAoB;QAChB,4EAAe;QAAA,4DAAK;QACxB,uEAAI;QAAA,uFAA0B;QAAA,4DAAK;QAIrC,uEAAI;QAAA,qEAEF;QAAA,2EAAoB;QAEhB,8GAAiD;QAAA,4DAAK;QAE1D,uEAAI;QAAA,0EAAa;QAAA,4DAAK;QAEtB,uEAAI;QAAA,mEAAM;QAAA,4DAAK;QAEf,uEAAI;QAAA,oEAAO;QAAA,4DAAK;QAEhB,uEAAI;QAAA,mEAAM;QAAA,4DAAK;QAEf,uEAAI;QAAA,qEAAQ;QAAA,4DAAK;QAKvB,2EAAiB;QAAQ,6EAAgB;QAAA,4DAAS;QAChD,uEAAI;QAEE,qEAAQ;QAAA,4DAAK;QAEjB,uEAAI;QAAA,8EAAiB;QAAA,4DAAK;QAK5B,2EAAiB;QAAQ,4EAAe;QAAA,4DAAS;QACjD,uEAAI;QAEE,oEAEF;QAAA,2EAAoB;QAEd,4FAA+B;QAAA,4DAAK;QAExC,uEAAI;QAAA,qFAAwB;QAAA,4DAAK;QAEjC,uEAAI;QAAA,iFAAoB;QAAA,4DAAK;QAKjC,uEAAI;QAAA,6FACF;QAAA,2EAAoB;QAEd,yEAAY;QAAA,4DAAK;QAIzB,uEAAI;QAAA,0FACF;QAAA,2EAAoB;QAEd,uFAA0B;QAAA,4DAAK;QAEnC,uEAAI;QAAA,oIAAuE;QAAA,4DAAK;QAIpF,uEAAI;QAAA,4EACF;QAAA,2EAAoB;QAEd,wEAAW;QAAA,4DAAK;QAIxB,uEAAI;QAAA,2EACF;QAAA,2EAAoB;QAEd,0EAAa;QAAA,4DAAK;QAO5B,2EAAiB;QAAQ,4EAAe;QAAA,4DAAS;QACjD,uEAAI;QAEE,8EACF;QAAA,2EAAoB;QAEd,0EAAa;QAAA,4DAAK;QAEtB,uEAAI;QAAA,oFAAuB;QAAA,4DAAK;QAEhC,uEAAI;QAAA,iFAAoB;QAAA,4DAAK;QAKjC,uEAAI;QAAA,2EACF;QAAA,2EAAoB;QAEd,0EAAa;QAAA,4DAAK;QAI1B,uEAAI;QAAA,6EACF;QAAA,2EAAoB;QAEd,iFAAoB;QAAA,4DAAK;QAE7B,uEAAI;QAAA,sFAAyB;QAAA,4DAAK;QAElC,uEAAI;QAAA,yEAAY;QAAA,4DAAK;QAKzB,uEAAI;QAAA,8EACA;QAAA,2EAAoB;QAEd,iFAAoB;QAAA,4DAAK;QAE7B,uEAAI;QAAA,qHAAwD;QAAA,4DAAK;QAIvE,uEAAI;QAAA,iFACF;QAAA,2EAAoB;QAEZ,iFAAoB;QAAA,4DAAK;QAInC,uEAAI;QAAA,+EACJ;QAAA,2EAAoB;QAEd,kFAAqB;QAAA,4DAAK;;QAtQrC,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;QAK9B,0DAAwC;QAAxC,6IAAwC;QAGrC,0DAAsB;QAAtB,mFAAsB;;;;;;;;;;;;;;;;;;;;;;;ACZyB;AACb;;;;;;AAO9C,MAAM,yBAAyB;IAMpC;QAHO,kBAAa,GAAG,4EAAa,CAAC;QAInC,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,uCAAuC,CAAC;IACzD,CAAC;IAED,QAAQ;IACR,CAAC;;kGAZU,yBAAyB;uHAAzB,yBAAyB;QCTtC,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAC3C,uEAAiB;QAA6B,qFAA0B;QAAA,qEAAI;QAAA,yGAAwC;QAAA,4DAAK;QAEzH,6EAEc;QACZ,yEAAuD;QAAA,yFACzD;QAAA,4DAAS;QAKT,wEAAgB;QAAA,uuBAOoD;QAAA,4DAAI;QAExE,yEAAyB;QAAM,2FAA+B;QAAA,4DAAO;QAErE,qEAAG;QAAA,o5BAQK;QAAA,wEAA6C;QAAA,uEAAW;QAAA,4DAAI;QAAC,kHAAqD;QAAA,4DAAI;QAG9H,yEAAyB;QAAM,gGAA+B;QAAA,4DAAO;QAErE,qEAAG;QAAA,ovBAAwrB;QAAA,4DAAI;QAG/rB,yEAAyB;QAAM,uFAA2B;QAAA,4DAAO;QAEjE,qEAAG;QAAA,iaAAqW;QAAA,4DAAI;QAE5W,qEAAG;QAAA,qvBAA+qB;QAAA,4DAAI;QAEtrB,qEAAG;QAAA,wgBAA4c;QAAA,4DAAI;QAGnd,yEAAyB;QAAM,2EAAe;QAAA,4DAAO;QAErD,qEAAG;QAAA,sXAA0T;QAAA,4DAAI;QAEjU,qEAAG;QAAA,keAA4Z;QAAA,4DAAI;QAEna,qEAAG;QAAA,maAAwV;QAAA,4DAAI;QAG/V,yEAAyB;QAAM,0FAA8B;QAAA,4DAAO;QAEpE,qEAAG;QAAA,waAA4W;QAAA,4DAAI;QAEnX,qEAAG;QAAI,mEAAO;QAAA,4DAAK;QAEnB,qEAAG;QAAA,wcAAuY;QAAA,4DAAI;QAE9Y,qEAAG;QAAA,sbAA0X;QAAA,4DAAI;QAEjY,qEAAG;QAAA,wHAA4D;QAAA,4DAAI;QAEnE,sEAAI;QAEE,4NAAsJ;QAAA,4DAAK;QAE/J,sEAAI;QAAA,yPAA+J;QAAA,4DAAK;QAExK,sEAAI;QAAA,wZAA+S;QAAA,4DAAK;QAExT,sEAAI;QAAA,uIAA2E;QAAA,4DAAK;QAEpF,sEAAI;QAAA,kHAAsD;QAAA,4DAAK;QAE/D,sEAAI;QAAA,qPAA+K;QAAA,4DAAK;QAExL,sEAAI;QAAA,oNAAwJ;QAAA,4DAAK;QAInK,qEAAG;QAAA,0pBAA8lB;QAAA,4DAAI;QAGrmB,yEAAyB;QAAM,2EAAe;QAAA,4DAAO;QAErD,qEAAG;QAAA,+3BAAm0B;QAAA,4DAAI;QAE10B,qEAAG;QAAA,wfAA4b;QAAA,4DAAI;QAEnc,qEAAG;QAAA,2VAA+R;QAAA,4DAAI;QAGtS,yEAAyB;QAAM,mFAAuB;QAAA,4DAAO;QAE7D,qEAAG;QAAA,qrBAAonB;QAAA,4DAAI;QAE3nB,qEAAG;QAAA,wqBAAkmB;QAAA,4DAAI;QAEzmB,qEAAG;QAAA,2YAA+U;QAAA,4DAAI;QAEtV,qEAAG;QAA6F,yEAAa;QAAA,sEAAI;QAAA,0GACjF;QAAA,4DAAK;QAAA,iIAAkE;QAAA,uEAAI;QAAA,+EAAsB;QAAA,4DAAK;QAAA,8EAEpI;QAAA,4DAAI;;QAnHT,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;QAG9B,0DAAwC;QAAxC,6IAAwC;QAGrC,0DAAsB;QAAtB,mFAAsB;;;;;;;;;;;;;;;;;;;;;;;ACVyB;AACb;;;;;;AAO9C,MAAM,yBAAyB;IAMpC;QAHO,kBAAa,GAAG,4EAAa,CAAC;QAInC,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,wCAAwC,CAAC;IAC1D,CAAC;IAED,QAAQ;IACR,CAAC;;kGAZU,yBAAyB;uHAAzB,yBAAyB;QCTtC,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAC3C,uEAAiB;QAA6B,qFAA0B;QAAA,qEAAI;QAAA,yGAAwC;QAAA,4DAAK;QAEzH,6EAEc;QACZ,yEAAuD;QAAA,yFACzD;QAAA,4DAAS;QAMT,wEAAgB;QAAA,0kBAA8gB;QAAA,4DAAI;QAE9hB,qEAAG;QAAA,yqBAA6mB;QAAA,4DAAI;QAEpnB,qEAAG;QAAA,+XAAmU;QAAA,4DAAI;QAE1U,qEAAG;QAAA,gcAAoY;QAAA,4DAAI;QAI3Y,yEAAyB;QAAM,mGAAuC;QAAA,4DAAO;QAG7E,sEAAI;QACM,wEAAY;QAAA,4DAAK;QAAC,mTAAsP;QAAA,4DAAK;QACrR,sEAAI;QAAI,6EAAiB;QAAA,4DAAK;QAAC,oYAAuU;QAAA,4DAAK;QAC3W,sEAAI;QAAI,oFAAwB;QAAA,4DAAK;QAAC,8hBAAie;QAAA,4DAAK;QAC5gB,sEAAI;QAAI,iFAAqB;QAAA,4DAAK;QAAC,+PAAkM;QAAA,4DAAK;QAI5O,yEAAyB;QAAM,6GAAiD;QAAA,4DAAO;QAEvF,qEAAG;QAAA,2lBAA+hB;QAAA,4DAAI;QAItiB,sEAAI;QAEI,mFAAuB;QAAA,4DAAK;QAAC,i+BAAo6B;QAAA,4DAAK;QAE98B,sEAAI;QAAI,kEAAM;QAAA,4DAAK;QAAC,0ZAA6V;QAAA,4DAAK;QAEtX,sEAAI;QAAI,uEAAW;QAAA,4DAAK;QAAC,mwCAA4rC;QAAA,4DAAK;QAE1tC,sEAAI;QAAI,mFAAuB;QAAA,4DAAK;QAAC,09BAAm5B;QAAA,4DAAK;QAE77B,sEAAI;QAAI,sFAA0B;QAAA,4DAAK;QAAC,u4CAAq0C;QAAA,4DAAK;QAEl3C,sEAAI;QAAI,8FAAkC;QAAA,4DAAK;QAAA,2hBAA+d;QAAA,4DAAK;QAKnhB,yEAAyB;QAAM,wGAA4C;QAAA,4DAAO;QAElF,qEAAG;QAAA,kmBAAiiB;QAAA,4DAAI;QAGxiB,sEAAI;QAEA,yEAAa;QAAA,4DAAK;QAEtB,sEAAI;QAAA,6EAAiB;QAAA,4DAAK;QAE1B,sEAAI;QAAA,gFAAoB;QAAA,4DAAK;QAE7B,sEAAI;QAAA,wEAAY;QAAA,4DAAK;QAErB,sEAAI;QAAA,0EAAc;QAAA,4DAAK;QAEvB,sEAAI;QAAA,+EAAmB;QAAA,4DAAK;QAE5B,sEAAI;QAAA,0EAAc;QAAA,4DAAK;QAIvB,qEAAG;QAAA,izBAAqvB;QAAA,4DAAI;QAE5vB,qEAAG;QAAA,ihBAAgd;QAAA,4DAAI;QAEvd,qEAAG;QAAA,0JAA8F;QAAA,4DAAI;QAErG,qEAAG;QAAA,ySAA6O;QAAA,4DAAI;QAEpP,sEAAG;QAAA,2FAA8B;QAAA,uEAAI;QAAA,0GAAwC;QAAA,4DAAK;QAAC,6EAAe;QAAA,4DAAI;;QA7F7G,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;QAG9B,0DAAwC;QAAxC,6IAAwC;QAGrC,0DAAsB;QAAtB,mFAAsB;;;;;;;;;;;;;;;;;;;;;;;ACVyB;AACb;;;;;;AAO9C,MAAM,0BAA0B;IAKrC;QAHO,kBAAa,GAAG,4EAAa,CAAC;QAInC,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,4BAA4B,CAAC;IAC9C,CAAC;IAED,QAAQ;IACR,CAAC;;oGAXU,0BAA0B;wHAA1B,0BAA0B;QCTvC,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAE3C,4EAEc;QACZ,wEAAuD;QAAA,wFACzD;QAAA,4DAAS;QAET,uEAAgB;QAAA,+SAAmP;QAAA,4DAAI;QAGvQ,yEAAiB;QAAA,4EAAgB;QAAA,4DAAK;QAEtC,qEAAG;QAAA,4MAAgJ;QAAA,4DAAI;QAEvJ,qEAAG;QAAA,qPAAyL;QAAA,4DAAI;QAEhM,qEAAG;QAAA,8HAAkE;QAAA,4DAAI;QAEzE,qEAAG;QAAA,8UAAwQ;QAAA,4DAAI;QAE/Q,qEAAG;QAAA,qNAAyJ;QAAA,4DAAI;QAEhK,yEAAiB;QAAA,6EAAiB;QAAA,4DAAK;QAGvC,yEAAyB;QAAY,qFAAyB;QAAA,4DAAO;QAErE,qEAAG;QAAA,ueAAsa;QAAA,sEAAI;QAAA,+DAAG;QAAA,4DAAK;QAAC,qFAAwB;QAAA,4DAAI;QAGld,yEAAyB;QAAY,wEAAY;QAAA,4DAAO;QAExD,qEAAG;QAAA,ufAAka;QAAA,sEAAI;QAAA,yGAAwC;QAAA,4DAAK;QAAC,4LAA0H;QAAA,4DAAI;QAGrlB,yEAAyB;QAAY,mEAAO;QAAA,4DAAO;QAEnD,qEAAG;QAAA,uiBAA4d;QAAA,4DAAI;QAEne,qEAAG;QAAA,kyBAAiuB;QAAA,4DAAI;QAExuB,qEAAG;QAAA,2KAA+G;QAAA,4DAAI;QAEtH,qEAAG;QAAA,gIAAoE;QAAA,4DAAI;QAE3E,sEAAI;QACQ,sGAA0C;QAAA,4DAAO;QAC3D,sEAAI;QAAM,4HAAgE;QAAA,4DAAO;QACjF,sEAAI;QAAM,oGAAwC;QAAA,4DAAO;QACzD,sEAAI;QAAM,oHAAwD;QAAA,4DAAO;QACzE,sEAAI;QAAM,kGAAsC;QAAA,4DAAO;QACvD,sEAAI;QAAM,yFAA6B;QAAA,4DAAO;QAC9C,sEAAI;QAAM,2IAA+E;QAAA,4DAAO;QAIlG,yEAAyB;QAAY,uFAA2B;QAAA,4DAAO;QAEvE,qEAAG;QAAA,obAAwX;QAAA,4DAAI;QAE/X,sEAAI;QACE,4QAAgN;QAAA,4DAAK;QACzN,sEAAI;QAAA,2JAA+F;QAAA,4DAAK;QAI1G,yEAAyB;QAAY,qFAAyB;QAAA,4DAAO;QAErE,qEAAG;QAAA,2NAA+J;QAAA,4DAAI;QAEtK,sEAAI;QACE,2HAA+D;QAAA,4DAAK;QACxE,sEAAI;QAAA,6JAAiG;QAAA,4DAAK;QAC1G,sEAAI;QAAA,yOAA6J;QAAA,4DAAK;QACtK,uEAAI;QAAA,8IAA4E;QAAA,4DAAK;QACrF,uEAAI;QAAA,oMAAkI;QAAA,4DAAK;QAI7I,0EAAyB;QAAc,8EAAiB;QAAA,4DAAO;QAE/D,sEAAG;QAAA,sVAAoR;QAAA,4DAAI;QAG3R,0EAAyB;QAAc,mFAAsB;QAAA,4DAAO;QAEpE,sEAAG;QAAA,qTAAmP;QAAA,4DAAI;QAE1P,uEAAI;QACgB,8DAAC;QAAA,4DAAO;QAAS,0FAA6B;QAAA,4DAAK;QACrE,uEAAI;QAAc,8DAAC;QAAA,4DAAO;QAAS,2EAAc;QAAA,4DAAK;QACtD,uEAAI;QAAc,8DAAC;QAAA,4DAAO;QAAS,iHAAoD;QAAA,4DAAK;QAC5F,uEAAI;QAAc,8DAAC;QAAA,4DAAO;QAAS,8FAAiC;QAAA,4DAAK;QAG3E,sEAAG;QAAA,uJAA0F;QAAA,4DAAI;QAGjG,0EAAyB;QAAc,kFAAqB;QAAA,4DAAO;QAEnE,sEAAG;QAAA,2bAA8X;QAAA,4DAAI;QAErY,uEAAI;QACE,iOAAoK;QAAA,4DAAK;QAC7K,uEAAI;QAAA,iIAAoE;QAAA,4DAAK;QAI/E,0EAAyB;QAAc,gGAAmC;QAAA,4DAAO;QAEjF,sEAAG;QAAA,sHAAyD;QAAA,4DAAI;QAE9D,uEAAI;QACE,0IAA6E;QAAA,4DAAK;QAEtF,uEAAI;QAAA,uHAA0D;QAAA,4DAAK;QAEnE,uEAAI;QAAA,oGAAuC;QAAA,4DAAK;QAEhD,uEAAI;QAAA,gIAAmE;QAAA,4DAAK;QAGhF,sEAAG;QAAA,yhBACqZ;QAAA,4DAAI;;QAjI/Z,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;QAE9B,0DAAwC;QAAxC,6IAAwC;QAGrC,0DAAsB;QAAtB,mFAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;ACViC;AAGd;AAEvB;AACH;;;;;;;;;ICE1B,yEAAsE;IAGlE,qSAAS,cAAO,IAAC;IAClB,uEAAM;IAAuC,iEAAM;IAAA,4DAAU;IAAC,uDAAwD;IAAA,4DAAO;;;IAAjG,0DAAgB;IAAhB,gFAAgB;IAAkB,0DAAwD;IAAxD,oIAAwD;;;;;IAMrH,yEAA4I;IACzD,uDAAgB;IAAA,4DAAI;IACrG,6EAA8G;IAAvB,gWAAS,sBAAY,IAAC;IAC3G,uEAAO;IAA0B,iEAAM;IAAA,4DAAU;;;;IAH4E,iFAAU;IACnG,0DAAyC;IAAzC,4JAAyC;IAAE,0DAAgB;IAAhB,8EAAgB;IACzF,0DAAyB;IAAzB,qFAAyB;IACf,0DAAgB;IAAhB,gFAAgB;;;ADEzC,MAAM,uBAAuB;IASlC,YACU,MAA8B,EAC9B,QAAkC,EAClC,KAAqB;QAFrB,WAAM,GAAN,MAAM,CAAwB;QAC9B,aAAQ,GAAR,QAAQ,CAA0B;QAClC,UAAK,GAAL,KAAK,CAAgB;QAPxB,YAAO,GAAG,sEAAO,CAAC;QAEjB,SAAI,GAAY,IAAI,4CAAO,EAAE,CAAC;IAMtC,CAAC;IAEM,QAAQ;QACb,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAChD,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;YACtB,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAC9C,mDAAG,CAAC,WAAW,CAAC,EAAE;gBAChB,MAAM,OAAO,GAAG,WAAW,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,MAAM,CAAE,CAAC;gBACnE,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;YACnE,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC;IAEM,MAAM,CAAC,IAAqB;QACjC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,CAAC;IACtC,CAAC;IAEM,OAAO,CAAC,KAAa,EAAE,IAAqB;QACjD,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;;8FA1CU,uBAAuB;qHAAvB,uBAAuB;QCvBpC,yEAA0B;QAMU,uDAAuE;QAAA,4DAAK;QAExG,mHAKM;;QAEN,yEAA8B;QAG1B,mHAKK;;QACP,4DAAK;;;QAnBH,0DAAkB;QAAlB,oJAAkB;QACM,0DAAuE;QAAvE,+IAAuE;QAE7F,0DAAqC;QAArC,mMAAqC;QAUiD,0DAAuB;QAAvB,qJAAuB;k4IDH7G;YACV,4DAAO,CAAC,WAAW,EAAE;gBACnB,+DAAU,CAAC,QAAQ,EAAE;oBACnB,4DAAO,CAAC,KAAK,EAAE,0DAAK,CAAC,EAAE,OAAO,EAAE,CAAC,EAAC,CAAC,CAAC;iBACrC,CAAC;aACH,CAAC;SACH;;;;;;;;;;;;;;;;;;;;;;;;;AElB+C;AAQP;;;;;;;;;;;;;;;AAMpC,MAAM,2BAA2B;IAatC,YACU,EAAyB,EACzB,oBAA0C;QAD1C,OAAE,GAAF,EAAE,CAAuB;QACzB,yBAAoB,GAApB,oBAAoB,CAAsB;QAb7C,kBAAa,GAAG,4EAAa,CAAC;QAC9B,gBAAW,GAAG,0EAAW,CAAC;QAC1B,iBAAY,GAAG,2EAAY,CAAC;QAC5B,WAAM,GAAG,qEAAM,CAAC;QAMvB,iBAAY,GAAY,IAAI,CAAC;QAM3B,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,QAAQ,GAAG,gEAAqB,CAAC;QACtC,IAAI,CAAC,OAAO,GAAG,8BAA8B,CAAC;IAC/C,CAAC;IAGF,QAAQ;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE;QAEzD,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,aAAa,EAAE,CAAC;QACvC,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,KAAK,CAAC;SAC3B;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,SAAS,EAAE,EAAE;YACvB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;QACD,IAAI,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtB,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;SAC1B;IACH,CAAC;;sGApCU,2BAA2B;yHAA3B,2BAA2B;QCjBxC,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAC3C,gEAAI;QAEJ,kFAAgE;QAK1D,yEAAwE;QAAC,2EAA8B;QAAA,kEAAM;QAAA,4DAAO;QAGtH,2EAA2B;QAGN,uFAA2B;QAAA,4DAAK;QAEjD,yEAE6C;QAC3C,sEAA+F;QAC/F,8EAC4F;QAAA,sEAAU;QAAA,4DAAS;QAKnH,2EAAuC;QACT,uFAA2B;QAAA,4DAAK;QAE1D,yEAE6C;QAC3C,sEAA6F;QAC7F,8EAC4F;QAAA,sEAAU;QAAA,4DAAS;QAKrH,2EAAwC;QACV,4FAAgC;QAAA,4DAAK;QAEjE,yEAE6C;QAC3C,sEAA8F;QAC9F,8EAC4F;QAAA,sEAAU;QAAA,4DAAS;QAQvH,0FAAsD;QAElD,yEAAuE;QAAC,2EAA8B;QAAA,iEAAK;QAAA,4DAAO;QAEpH,sEAAI;QAGE,kFACF;QAAA,4DAAI;QAEN,sEAAI;QAEA,gFACF;QAAA,4DAAI;QAEN,sEAAI;QAEA,wFACF;QAAA,4DAAI;QAEN,sEAAI;QAEA,kFACF;QAAA,4DAAI;QAEN,sEAAI;QAEA,qFACF;QAAA,4DAAI;QAEN,sEAAI;QAEA,6FACF;QAAA,4DAAI;QAEN,sEAAI;QAEA,wEACF;QAAA,4DAAI;QAKV,0FAA0D;QAEtD,yEAA2E;QAAC,2EAA8B;QAAA,qEAAS;QAAA,4DAAO;QAE5H,sEAAI;QAGE,wFACF;QAAA,4DAAI;QAEN,sEAAI;QAEA,gFACF;QAAA,4DAAI;QAEN,sEAAI;QAEA,gFACF;QAAA,4DAAI;QAEN,sEAAI;QAED,kGACD;QAAA,4DAAI;QAMZ,iEAAM;QAEV,4DAAO;;;;;QAtIN,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;QAGhB,0DAAmB;QAAnB,4EAAmB;QAEd,0DAA4B;QAA5B,oFAA4B;QAGxC,0DAAoD;QAApD,kHAAoD;QAQxD,0DAA2C;QAA3C,8IAA2C;QAGvC,0DAAyD;QAAzD,6KAAyD;QAU3D,0DAA4C;QAA5C,8IAA4C;QAGxC,0DAAuD;QAAvD,2KAAuD;QAU7D,0DAA0C;QAA1C,8IAA0C;QAGtC,0DAAwD;QAAxD,4KAAwD;QAU7C,0DAA4B;QAA5B,oFAA4B;QAEvC,0DAAmD;QAAnD,kHAAmD;QAyCpC,2DAA4B;QAA5B,oFAA4B;QAE3C,0DAAuD;QAAvD,kHAAuD;QAI3D,0DAAuC;QAAvC,8IAAuC;QAKvC,0DAAgD;QAAhD,8IAAgD;QAKhD,0DAAgD;QAAhD,8IAAgD;QAKhD,0DAA+C;QAA/C,8IAA+C;;;;;;;;;;;;;;;;;;;;;;;;AC3HA;AACb;;;;;;;;;AAO9C,MAAM,iBAAiB;IAU5B;QAHO,kBAAa,GAAG,4EAAa,CAAC;QAInC,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,+DAAoB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,gEAAqB,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,iEAAsB,GAAG,wEAAwE,CAAC;QAChH,IAAI,CAAC,MAAM,GAAG,gEAAqB,GAAG,oBAAoB,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,4BAA4B,CAAC;IAChD,CAAC;IACC,QAAQ;IACR,CAAC;;kFApBU,iBAAiB;+GAAjB,iBAAiB;QCT9B,yEAA2C;QAKT,uDAAY;QAAA,4DAAK;QAC3C,gEAAI;QAEJ,4EAEc;QACZ,wEAAuD;QAAA,wFACzD;QAAA,4DAAS;QAGT,2EAGgD;QAClD,4DAAO;;QAnBR,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAY;QAAZ,sFAAY;QAG9B,0DAAwC;QAAxC,8IAAwC;QAGrC,0DAAsB;QAAtB,mFAAsB;QAKjC,0DAAsB;QAAtB,8EAAsB;;;;;;;;;;;;;;;;;;;;;;;;ACfuB;AACa;;;;;;;;;AAO3D,MAAM,eAAe;IAS1B;QAHO,kBAAa,GAAG,4EAAa,CAAC;QAIjC,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,+DAAoB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,gEAAqB,CAAC;QAEtC,IAAI,CAAC,MAAM,GAAG,iEAAsB,GAAG,oEAAoE,CAAC;QAC5G,IAAI,CAAC,MAAM,GAAG,gEAAqB,GAAG,qBAAqB,CAAC;QAC5D,IAAI,CAAC,OAAO,GAAG,kCAAkC,CAAC;IAEtD,CAAC;IAED,QAAQ;IACR,CAAC;;8EArBU,eAAe;6GAAf,eAAe;QCT5B,yEAA2C;QAMT,uDAAY;QAAA,4DAAK;QAC3C,gEAAI;QACJ,4EAGc;QACZ,wEAAuD;QAAA,wFACzD;QAAA,4DAAS;QAET,2EAKa;QAEf,4DAAO;;QAtBR,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAIT,0DAAY;QAAZ,sFAAY;QAGtC,0DAAwC;QAAxC,8IAAwC;QAG7B,0DAAsB;QAAtB,mFAAsB;QAKjC,0DAAsB;QAAtB,8EAAsB;;;;;;;;;;;;;;;;;;;;;;;;AChBoC;AACb;;;;;;;;AAS9C,MAAM,gBAAgB;IAW3B,YACU,QAAkB,EAClB,oBAA0C;QAD1C,aAAQ,GAAR,QAAQ,CAAU;QAClB,yBAAoB,GAApB,oBAAoB,CAAsB;QAP7C,kBAAa,GAAG,4EAAa,CAAC;QASnC,IAAI,CAAC,YAAY,GAAG,uDAAY,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,+DAAoB,CAAC;QACpC,IAAI,CAAC,QAAQ,GAAG,gEAAqB,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,iEAAsB,GAAG,gEAAgE,CAAC;QACxG,IAAI,CAAC,MAAM,GAAG,gEAAqB,GAAG,oBAAoB,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,6BAA6B,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,8BAA8B,CAAC;IACpD,CAAC;IACC,QAAQ;QACN,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE;QACzD,IAAI,IAAI,CAAC,OAAO,KAAK,OAAO,EAAE;YAC5B,IAAI,CAAC,SAAS,GAAG,4BAA4B,CAAC;SAC/C;aAAM;YACL,IAAI,CAAC,SAAS,GAAG,8BAA8B,CAAC;SACjD;IACH,CAAC;IACM,IAAI;QACT,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IACvB,CAAC;;gFAjCU,gBAAgB;8GAAhB,gBAAgB;QCX7B,yEAA2C;QAKT,uDAAc;QAAA,4DAAK;QAC7C,gEAAI;QAEJ,4EAGc;QAFd,wIAAS,UAAM,IAAC;QAGd,wEAAuD;QAAA,uDACzD;QAAA,4DAAS;QAKT,2EAKa;QACf,4DAAO;;QAxBR,iGAAoC;QAClC,0DAA0C;QAA1C,uGAA0C;QACxC,0DAAkC;QAAlC,+FAAkC;QAGT,0DAAc;QAAd,sFAAc;QAKxC,0DAA2C;QAA3C,wGAA2C;QAEhC,0DAAsB;QAAtB,mFAAsB;QAAwB,0DACzD;QADyD,wFACzD;QAOA,0DAAsB;QAAtB,8EAAsB;;;;;;;;;;;;;;;;;;ACpB0D;AAExF,gCAAgC;AAChC,MAAM,eAAe,GAAG,0DAAK,CAAC,gBAAgB,EAC5C,0DAAK,CAAC;IACJ,QAAQ,EAAE,OAAO;IACjB,KAAK,EAAE,MAAM;IACb,MAAM,EAAE,aAAa;CACtB,CAAC,EACF,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEtB,MAAM,cAAc,GAAG,0DAAK,CAAC,QAAQ,EAAE;IACrC,0DAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC;IACxC,4DAAO,CAAC,uCAAuC,EAC7C,0DAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;CAC1C,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvB,MAAM,YAAY,GAAG,0DAAK,CAAC,QAAQ,EAAE;IACnC,0DAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IACtC,4DAAO,CAAC,uCAAuC,EAC7C,0DAAK,CAAC,EAAE,SAAS,EAAE,kBAAkB,EAAE,CAAC,CAAC;CAC5C,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvB,MAAM,WAAW,GAAG,0DAAK,CAAC,QAAQ,EAAE;IAClC,0DAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC;IACtC,4DAAO,CAAC,uCAAuC,EAC7C,0DAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC,CAAC;CAC7C,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvB,0BAA0B;AAC1B,MAAM,aAAa,GAAG,0DAAK,CAAC,QAAQ,EAAE;IACpC,0DAAK,CAAC,EAAE,SAAS,EAAE,mBAAmB,EAAE,CAAC;IACzC,4DAAO,CAAC,uCAAuC,EAC7C,0DAAK,CAAC,EAAE,SAAS,EAAE,gBAAgB,EAAE,CAAC,CAAC;CAC1C,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAEvB,MAAM,yBAAyB,GAAG;IAChC,eAAe;IACf,0DAAK,CAAC;QACJ,aAAa;QACb,YAAY;KACb,CAAC;CACH,CAAC;AACK,MAAM,gBAAgB,GAC3B,4DAAO,CAAC,iBAAiB,EAAE;IACzB,+DAAU,CAAC,gBAAgB,EAAE;QAC3B,eAAe;QACf,0DAAK,CAAC;YACJ,cAAc;YACd,WAAW;SACZ,CAAC;KACH,CAAC;IACF,+DAAU,CAAC,oBAAoB,EAAE,yBAAyB,CAAC;IAC3D,+DAAU,CAAC,QAAQ,EAAE,yBAAyB,CAAC;CAChD,CAAC,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;ACpD8C;AACe;;;;;AAQ3D,MAAM,gBAAgB;IAQ3B,YACU,WAAwB,EACxB,iBAAoC,EACpC,MAAc;QAFd,gBAAW,GAAX,WAAW,CAAa;QACxB,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,WAAM,GAAN,MAAM,CAAQ;QALhB,YAAO,GAA6B,IAAI,iDAAe,CAAC,KAAK,CAAC,CAAC;IAMvE,CAAC;IAVD,IAAW,OAAO;QAChB,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAUM,WAAW;QAChB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAExB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CACrC,mDAAG,CAAC,IAAI,CAAC,EAAE,GAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,GAAC,CAAC,EAC7C,8DAAc,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,CAAC,EAChD,sDAAM,CAAC,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,EAAE;YAC5B,wCAAwC;YACxC,IAAI,UAAU,IAAI,IAAI,IAAI,IAAI,CAAC,SAAS,EAAE;gBACxC,OAAO,KAAK,CAAC;aACd;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,mDAAG,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,EACrB,mDAAG,CAAC,IAAI,CAAC,EAAE;YACX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACzB,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAE/B,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,KAAK,KAAK,EAAE;gBAChD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChC,OAAO,KAAK,CAAC;aACd;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CAAC,CAAC;IACN,CAAC;;gFAxCU,gBAAgB;iHAAhB,gBAAgB,WAAhB,gBAAgB,mBAFf,MAAM;;;;;;;;;;;;;;;;;;;;ACR+B;AACN;;AAKtC,MAAM,iBAAiB;IAW5B;QAPQ,cAAS,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAC1D,aAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QAO9D,IAAI,OAAO,GAAG,IAAI,CAAC;QAEnB,IAAI,SAAS,IAAI,QAAQ,IAAI,SAAS,EAAE;YACtC,OAAO,GAAG,SAAS,CAAC,MAAM,CAAC;SAC5B;QAED,IAAI,CAAC,iBAAiB,GAAG,IAAI,iDAAe,CAAU,OAAO,CAAC,CAAC;QAE/D,MAAM,CAAC,gBAAgB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACnD,MAAM,CAAC,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACnD,CAAC;IAfD,IAAW,KAAK;QACd,OAAO,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC;IACtC,CAAC;IAeM,WAAW;QAChB,IAAI,CAAC,iBAAiB,CAAC,QAAQ,EAAE,CAAC;QAClC,MAAM,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACtD,MAAM,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,sDAAM,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,mDAAG,CAAC,MAAM,CAAC,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;IACnF,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,sDAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,EAAE,mDAAG,CAAC,MAAM,CAAC,EAAE,GAAE,CAAC,CAAC,CAAC,CAAC;IAClF,CAAC;;kFAxCU,iBAAiB;kHAAjB,iBAAiB,WAAjB,iBAAiB,mBAFhB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;ACF0C;AAGa;;;;;AAUpE,MAAM,wBAAyB,SAAQ,mEAAoC;IAiChF,YACU,IAAgB,EACxB,MAAsB,EACtB,WAAwB,EACxB,UAA6B;QAE7B,KAAK,CAAC,mBAAmB,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QALpD,SAAI,GAAJ,IAAI,CAAY;QAhChB,eAAU,GAAW,IAAI,CAAC;QAE5B,aAAQ,GAAG,qEAAqE,CAAC;QAqCvF,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5D,IAAI,IAAI,IAAI,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE;gBAC9C,IAAI,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;oBAC/C,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;wBACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;qBAC3D;iBACF;aACF;iBAAM,IAAI,IAAI,KAAK,IAAI,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;QAEH,iDAAiD;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5D,sBAAsB;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,sDAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,oDAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YACpG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IAzDS,OAAO;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CACrC,sDAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,EAC1G,yDAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAsB,IAAI,CAAC,QAAQ,EAAE;YAChE,OAAO,EAAE,EAAE,eAAe,EAAG,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;SACtD,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAES,UAAU,CAAC,KAAY;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CACrC,oDAAI,CAAC,CAAC,CAAC,EACP,yDAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAsB,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE;YAC3E,OAAO,EAAE,EAAE,eAAe,EAAG,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;SACtD,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAES,SAAS;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CACrC,oDAAI,CAAC,CAAC,CAAC,EACP,yDAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,IAAI,CAAC,QAAQ,EAAE;YACtD,OAAO,EAAE,EAAE,eAAe,EAAG,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;SACtD,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAkCM,WAAW;QAChB,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,mDAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACnE,CAAC;IACJ,CAAC;;gGAzEU,wBAAwB;yHAAxB,wBAAwB,WAAxB,wBAAwB,mBAFvB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;ACZ+B;AACK;AACtB;AAEoB;;;;;AAO/C,MAAM,gBAAgB;IAW3B,YACU,UAAsB,EACtB,IAAiB,EACjB,UAA6B;QAF7B,eAAU,GAAV,UAAU,CAAY;QACtB,SAAI,GAAJ,IAAI,CAAa;QACjB,eAAU,GAAV,UAAU,CAAmB;QAZ/B,gBAAW,GAAW,6DAA6D,CAAC;QACpF,gBAAW,GAAiC,IAAI,iDAAe,CAAC,IAAI,CAAC,CAAC;QAEtE,SAAI,GAAY,IAAI,4CAAO,EAAE,CAAC;QAC9B,UAAK,GAAW,IAAI,CAAC;QAU3B,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,CAAC,UAAU,EAAE,CAAC;IACpB,CAAC;IAXD,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAWM,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CACxC,sDAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,EAC1G,yDAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,UAAU;aAC5B,GAAG,CAAc,IAAI,CAAC,WAAW,EAAE,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC;aAC5F,IAAI;QAEH,mCAAmC;QACnC,mDAAG,CAAC,KAAK,CAAC,EAAE;YACV,IAAI,KAAK,YAAY,KAAK,EAAE;gBAC1B,OAAO,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,8DAAS,CAAC,IAAI,CAAC,CAAC,CAAC;aAC/C;iBAAM;gBACL,OAAO,EAAE,CAAC;aACX;QACH,CAAC,CAAC;QAEF,8BAA8B;QAC9B,mDAAG,CAAC,KAAK,CAAC,EAAE;YACV,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;gBACxB,8EAA8E;gBAC9E,IAAI,CAAC,CAAC,IAAI,CAAC,mBAAmB,YAAY,KAAK,CAAC,EAAE;oBAChD,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;iBAC/B;gBAED,IAAI,IAAI,CAAC,wBAAwB,YAAY,KAAK,EAAE;oBAClD,6EAA6E;oBAC7E,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,wBAAwB,EAAE;wBACjD,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,CAAC;wBAElH,IAAI,OAAO,EAAE;4BACX,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC;gCAC5B,GAAG,EAAE,OAAO,CAAC,GAAG;gCAChB,KAAK,EAAE,OAAO,CAAC,KAAK;gCACpB,KAAK,EAAE,OAAO,CAAC,KAAK;6BACrB,CAAC,CAAC;yBACJ;qBACF;iBACF;aACF;YAED,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC;QAEF,OAAO;QACP,mDAAG,CAAC,KAAK,CAAC,EAAE;YACV,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;gBAClB,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACxC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBACxC,OAAO,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;YAC9B,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;QACpB,CAAC,CAAC,CACH,CACF,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YACnB,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;IACP,CAAC;IAEM,SAAS,CAAC,KAAa;QAC5B,OAAO,IAAI,CAAC,WAAW,CAAC,IAAI,CAC1B,mDAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAClH,CAAC;IACJ,CAAC;;gFAvFU,gBAAgB;iHAAhB,gBAAgB,WAAhB,gBAAgB,mBAFf,MAAM;AA6Fb,SAAS,mBAAmB,CAAC,IAAY,EAAE,SAAoB;IACpE,IAAI,KAAc,CAAC;IACnB,QAAQ;IACR,KAAK,GAAG,KAAK,IAAI,SAAS,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAEpE,IAAI,SAAS,CAAC,yBAAyB,EAAE;QACvC,oCAAoC;QACpC,KAAK,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,yBAAyB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;KAChG;IAED,OAAO,KAAK,CAAC;AACf,CAAC;;;;;;;;;;;;;;;;;;AClHuD;;;AAKjD,MAAM,oBAAoB;IAK/B,YAAoB,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;QAChC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC;QAClC,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;YAC9B,IAAI,KAAK,YAAY,0DAAa,EAAE;gBAClC,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,UAAU,CAAC;gBACnC,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC;aAC7B;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEM,cAAc;QACnB,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;;wFAjBU,oBAAoB;qHAApB,oBAAoB,WAApB,oBAAoB,mBAFnB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;ACD0C;AAGa;;;;;AAUpE,MAAM,sBAAuB,SAAQ,mEAAkC;IAkC5E,YACU,IAAgB,EACxB,MAAsB,EACtB,WAAwB,EACxB,UAA6B;QAE7B,KAAK,CAAC,iBAAiB,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,CAAC,CAAC;QALlD,SAAI,GAAJ,IAAI,CAAY;QAjChB,eAAU,GAAW,IAAI,CAAC;QAE5B,aAAQ,GAAG,mEAAmE,CAAC;QAsCrF,qDAAqD;QACrD,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAC5D,IAAI,IAAI,IAAI,IAAI,CAAC,WAAW,IAAI,cAAc,IAAI,IAAI,CAAC,WAAW,EAAE;gBAClE,IAAI,QAAQ,IAAI,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE;oBAC7C,IAAI,CAAC,IAAI,CAAC,SAAS,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE;wBACpC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;qBACzD;iBACF;aACF;iBAAM,IAAI,IAAI,KAAK,IAAI,EAAE;gBACxB,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;aACvB;QACH,CAAC,CAAC,CAAC;QAEH,iDAAiD;QACjD,IAAI,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QAE5D,sBAAsB;QACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,sDAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,oDAAI,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,EAAE;YACpG,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE;gBACxD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;IACL,CAAC;IA1DS,OAAO;QACf,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CACrC,sDAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,CAAC,EAC1G,yDAAS,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAoB,IAAI,CAAC,QAAQ,EAAE;YAC9D,OAAO,EACL,EAAE,eAAe,EAAG,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;SAC/C,CAAC,CACD,CAAC,CAAC;IACP,CAAC;IAES,UAAU,CAAC,KAAY;QAC/B,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CACrC,oDAAI,CAAC,CAAC,CAAC,EACP,yDAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAoB,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE;YACzE,OAAO,EAAE,EAAE,eAAe,EAAG,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;SACtD,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAES,SAAS;QACjB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,IAAI,CACrC,oDAAI,CAAC,CAAC,CAAC,EACP,yDAAS,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAO,IAAI,CAAC,QAAQ,EAAE;YACtD,OAAO,EAAE,EAAE,eAAe,EAAG,SAAS,GAAG,IAAI,CAAC,KAAK,EAAE;SACtD,CAAC,CAAC,CACJ,CAAC;IACJ,CAAC;IAkCM,WAAW;QAChB,KAAK,CAAC,WAAW,EAAE,CAAC;IACtB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CACrB,mDAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,CAC9D,CAAC;IACJ,CAAC;;4FA1EU,sBAAsB;uHAAtB,sBAAsB,WAAtB,sBAAsB,mBAFrB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbmD;AACU;AAC/C;;;;AAc3B,MAAe,iBAAiB;IAmCrC,YAEqB,OAAe,EACxB,MAAsB,EACtB,WAAwB,EACxB,UAA6B;QAHpB,YAAO,GAAP,OAAO,CAAQ;QACxB,WAAM,GAAN,MAAM,CAAgB;QACtB,gBAAW,GAAX,WAAW,CAAa;QACxB,eAAU,GAAV,UAAU,CAAmB;QAdzC;;WAEG;QACO,SAAI,GAAG,IAAI,4CAAO,EAAE,CAAC;QAErB,YAAO,GAAY,KAAK,CAAC;QAEzB,UAAK,GAAW,IAAI,CAAC;QAQ7B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAEvB,8BAA8B;QAC9B,IAAI,CAAC,KAAK,GAAG,IAAI,yCAAO,EAAE,CAAC;QAC3B,IAAI,CAAC,QAAQ,GAAG,IAAI,yCAAO,EAAE,CAAC;QAE9B,0BAA0B;QAC1B,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QAElC,kEAAkE;QAClE,IAAI,CAAC,OAAO,GAAG,IAAI,iDAAe,CAAC,OAAO,CAAC,CAAC;QAE5C,0DAA0D;QAC1D,IAAI,CAAC,MAAM,GAAG,2CAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9C,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9D,CAAC;IAEM,WAAW;QAChB,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;IAC1B,CAAC;IAEO,UAAU;QAChB,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;YACnD,MAAM,WAAW,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACvD,IAAI,WAAW,EAAE;gBACf,IAAI;oBACF,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;oBAC5C,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;oBACpB,OAAO,WAAW,CAAC;iBACpB;gBAAC,WAAM;oBACN,YAAY,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBACvC;aACF;SACF;QAED,OAAO,EAAE,CAAC;IACZ,CAAC;IAES,WAAW,CAAC,MAAW;QAC/B,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;YACnD,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;SAC5D;IACH,CAAC;IAQS,eAAe;QACvB,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI;QACvB;;;WAGG;QACH,8DAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,mDAAG,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,EAAE;YACzB,MAAM,CAAC,SAAS,GAAG,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;YAE1C,IAAI,QAAa,CAAC;YAClB,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,MAAM,CAAC,GAAG,CAAC,CAAC;YAC5D,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;gBAChB,QAAQ,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;gBACzB,QAAQ,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,CAAC;aAC1D;iBAAM;gBACL,QAAQ,GAAG,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,CAAC;aAClC;YAED,2CAA2C;YAC3C,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YAE1B,OAAO,MAAM,CAAC;QAChB,CAAC,CAAC;QAEF;;;WAGG;QACH,8DAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,mDAAG,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EAAE;YAC1B,wEAAwE;YACxE,MAAM,QAAQ,GAAG,CAAC,GAAG,QAAQ,EAAE,OAAO,CAAC,CAAC;YAExC,sDAAsD;YACtD,OAAO,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAU,EAAE,IAAI,EAAE,CAAC,EAAE,EAAE;gBAE7C,yCAAyC;gBACzC,MAAM,KAAK,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,CAAC,CAAC;gBAEvD,+BAA+B;gBAC/B,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE;oBAChB;;;uBAGG;oBACH,IAAI,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,SAAS,EAAE;wBAC3C,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,CAAC;qBAClD;yBAAM;wBACL,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;qBAClD;oBAED,2BAA2B;oBAC3B,OAAO,KAAK,CAAC;iBACd;qBAAM;oBACL;;;uBAGG;oBACH,OAAO,CAAC,GAAG,KAAK,EAAE,IAAI,CAAC,CAAC;iBACzB;YACH,CAAC,EAAE,EAAE,CAAC,CAAC;QACT,CAAC,CAAC;QAEF;;;WAGG;QACH,yDAAS,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YACxC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,0DAAU,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,yCAAE,CAAC,KAAK,CAAC,CAAC,CAAC;YACrE,CAAC,CAAC,yCAAE,CAAC,KAAK,CAAC,CAAC,EACd,oDAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CACnB,CAAC;IACvB,CAAC;IAEM,IAAI,CAAC,IAAO;QACjB,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAG,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,CAAC,GAAG,IAAI,IAAI,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,SAAS,CAAC,CAAC,CAAC;IAChI,CAAC;IAES,MAAM,CAAC,IAAO;QACtB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3B,CAAC;IAEM,GAAG,CAAC,IAAO;QAChB,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC;QACnB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAEM,MAAM,CAAC,IAAO;QACnB,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACpB,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAC1B,8DAAc,CAAC,IAAI,CAAC,MAAM,CAAC,EAC3B,mDAAG,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,iCAAK,IAAI,KAAE,MAAM,EAAE,KAAK,IAAG,CAAC,CAAC,EACpE,oDAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAC3C,CAAC;IACJ,CAAC;IAEM,MAAM;QACX,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;;kFAnMmB,iBAAiB,0DAoC3B,IAAI;mHApCM,iBAAiB,WAAjB,iBAAiB;;;;;;;;;;;;;;;;ACjBhC,SAAS,WAAW;IAC1B,IAAI,YAAY,YAAY,OAAO,EAAE;QACpC,OAAO,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;KACzC;IAED,OAAO,IAAI,CAAC;AACb,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNkF;AAGrB;AACc;AAEX;AAET;;;;;;AAIxD,oCAAoC;AAK7B,MAAM,WAAW;IAMtB,YACU,UAAsB,EACtB,iBAAoC,EACpC,KAAe,EACf,SAA2B;QAH3B,eAAU,GAAV,UAAU,CAAY;QACtB,sBAAiB,GAAjB,iBAAiB,CAAmB;QACpC,UAAK,GAAL,KAAK,CAAU;QACf,cAAS,GAAT,SAAS,CAAkB;QAR7B,eAAU,GAAkB,IAAI,+CAAa,CAAC,CAAC,CAAC,CAAC;QAEzC,eAAU,GAAG,IAAI,CAAC,UAAU,CAAC,YAAY,EAAE,CAAC;QAQ1D,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;QAClE,IAAI,YAAY,YAAY,OAAO,EAAE;YACnC,MAAM,cAAc,GAAG,YAAY,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YAE1D,IAAI,cAAc,EAAE;gBAClB,OAAO,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;gBAC7C,IAAI;oBACF,MAAM,gBAAgB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;oBACpD,IAAI,gBAAgB,IAAI,IAAI,IAAI,gBAAgB,EAAE;wBAChD,MAAM,UAAU,GAAG,IAAI,oDAAI,CAAC,gBAAgB,CAAC,CAAC;wBAC9C,UAAU,CAAC,SAAS,GAAG,IAAI,CAAC;wBAE5B,MAAM,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;wBAC3B,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;wBAEvC,IAAI,UAAU,CAAC,QAAQ,IAAI,UAAU,CAAC,QAAQ,GAAG,OAAO,EAAE;4BACxD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;yBAClC;qBACF;iBACF;gBAAC,OAAO,CAAC,EAAE;oBACV,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;oBACjB,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;iBACvC;aACF;SACF;QAED,IAAG,CAAC,KAAK,CAAC,KAAK,EAAE;YACb,IAAI,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YACnD,IAAG,UAAU,EAAE;gBACX,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;aAC5B;SACJ;QAED,8BAA8B;QAC9B;;;;2EAImE;QAEnE,IAAI,KAAK,CAAC,KAAK,EAAE;YACf,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACpD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YACnC,MAAM,UAAU,GAAG,IAAI,oDAAI,CAAC,GAAG,CAAC,CAAC;YACjC,UAAU,CAAC,SAAS,GAAG,KAAK,CAAC;YAC7B,UAAU,CAAC,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC;YAC/B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;SAClC;QAED;;;;;UAKE;IACJ,CAAC;IAEO,WAAW;QACjB,MAAM,YAAY,GAAG,sCAAsC,CAAC;QAC5D,MAAM,YAAY,GAAG,6EAAoB,CAAC;YACxC,gBAAgB,EAAE,CAAC;YACnB,eAAe,EAAE,IAAI;SACtB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,UAAU;aACnB,GAAG,CAAC,YAAY,CAAC;aACjB,IAAI,CACH,yDAAS,CAAC,MAAM,CAAC,EAAE;YACjB,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,KAAK,EAAE;gBAC1C,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC;aAC7B;YAED,OAAO,MAAM,CAAC,IAAI,CAAC,mDAAG,CAAC,KAAK,CAAC,EAAE;gBAC7B,IAAI,KAAK,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;oBAC3C,QAAQ,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE;wBAC3B,KAAK,4BAA4B;4BAC/B,gCAAgC;4BAChC,MAAM;wBACR;4BACE,MAAM,KAAK,CAAC;qBACf;iBACF;qBAAM;oBACL,MAAM,KAAK,CAAC;iBACb;YACH,CAAC,CAAC,CAAC,CAAC;QACN,CAAC,CAAC,EACF,0DAAU,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAC7D,mDAAG,CAAC,CAAC,kBAA+B,EAAE,EAAE;YACtC,IAAI,kBAAkB,YAAY,KAAK,EAAE;gBACvC,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;oBACnD,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;iBACvC;gBAED,IAAI,kBAAkB,KAAK,IAAI,EAAE;oBAC/B,OAAO,IAAI,CAAC;iBACb;gBAED,MAAM,kBAAkB,CAAC;aAC1B;YAED,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,KAAK,IAAI,kBAAkB,YAAY,oDAAI,EAAE;gBAChF,OAAO,kBAAkB,CAAC;aAC3B;YAED,IAAI,KAAK,IAAI,kBAAkB,EAAE;gBAC/B,MAAM,UAAU,GAAG,IAAI,oDAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC;gBACpD,UAAU,CAAC,QAAQ,GAAG,IAAI,IAAI,EAAE,CAAC;gBAEjC,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;oBACnD,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;iBAChE;gBAED,OAAO,UAAU,CAAC;aACnB;YAED,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;gBACnD,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACvC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,CACH,CAAC;IACN,CAAC;IAEM,MAAM;QACX,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACtB,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CACzB,yDAAS,CAAC,IAAI,CAAC,EAAE;YACf,IAAI,IAAI,KAAK,IAAI,IAAI,IAAI,YAAY,KAAK,EAAE;gBAC1C,OAAO,wCAAE,CAAC,IAAI,CAAC,CAAC;aACjB;QACH,CAAC,CAAC,EACF,oDAAG,CAAC,GAAG,EAAE;YACP,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;gBACnD,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACvC;YAED,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YAExB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC,CAAC,EACF,mDAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAChB,CAAC;IACJ,CAAC;IAEM,KAAK,CAAC,QAAgB,EAAE,QAAgB;QAC7C,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACrB,MAAM,IAAI,GAAG,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC;QAE5D,OAAO,IAAI,CAAC,UAAU;YACpB,kDAAkD;aACjD,IAAI,CAAC,uDAAuD,EAAE,IAAI,EAAE,EAAC,OAAO,EAAE,UAAU,EAAE,CAAC;aAC3F,IAAI,CACH,0DAAU,CAAC,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,EAC7D,mDAAG,CAAC,WAAW,CAAC,EAAE;YAChB,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YACzB,IAAI,WAAW,YAAY,KAAK,EAAE;gBAChC,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;oBACnD,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;iBACvC;gBAED,MAAM,WAAW,CAAC;aACnB;YACD,IAAI,WAAW,YAAY,+DAAY,EAAE;gBACvC,IAAI,CAAC,GAAG,WAAW,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAW,CAAC;gBACnD,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACrB,IAAI,cAAc,IAAI,WAAW,CAAC,IAAI,IAAI,YAAY,IAAI,WAAW,CAAC,IAAI,EAAE;oBAC1E,MAAM,UAAU,GAAG,IAAI,oDAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;oBAC9C,UAAU,CAAC,KAAK,GAAG,CAAC,CAAC;oBACrB,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;wBACnD,YAAY,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC;qBAChE;oBACD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxB,uCAAuC;oBACvC,kEAAkE;oBAClE,GAAG;oBAEH,OAAO,UAAU,CAAC;iBACnB;aACF;YACD,IAAI,YAAY,IAAI,YAAY,YAAY,OAAO,EAAE;gBACnD,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;aACvC;YAED,OAAO,IAAI,CAAC;QACd,CAAC,CAAC,EACF,oDAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAC5C,CAAC;IACJ,CAAC;IAEO,cAAc,CAAC,KAAwB,EAAE,MAAuB;QACtE,IAAI,IAAI,CAAC,iBAAiB,CAAC,KAAK,KAAK,KAAK,IAAI,KAAK,CAAC,MAAM,IAAI,GAAG,EAAE;YACjE,OAAO,IAAI,CAAC,UAAU,CAAC;SACxB;QAED,IAAI,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE;YACxB,IAAI,KAAK,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;gBAC3C,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,gBAAgB,EAAE;oBAC5C,OAAO,wCAAE,CAAC,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC;iBACxC;gBAED,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,qBAAqB,EAAE;oBACjD,OAAO,wCAAE,CAAC,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC,CAAC;iBACxE;gBAED,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,sBAAsB,EAAE;oBAClD,MAAM,CAAC,QAAQ,CAAC,IAAI,GAAG,yDAAyD,CAAC;iBAClF;gBAED,OAAO,wCAAE,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;aAC3C;SACF;QAED,IAAI,KAAK,CAAC,KAAK,IAAI,SAAS,IAAI,KAAK,CAAC,KAAK,EAAE;YAC3C,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,KAAK,4BAA4B,EAAE;gBACxD,OAAO,wCAAE,CAAE,IAAI,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;aAC5C;YAED,OAAO,wCAAE,CAAC,IAAI,KAAK,CAAC,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;SAC/D;QAED,OAAO,wCAAE,CAAC,IAAI,KAAK,CAAC,kBAAkB,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IAC5F,CAAC;;sEA1OU,WAAW;6GAAX,WAAW,WAAX,WAAW,mBAFV,MAAM;;;;;;;;;;;;;;;;;;;;;ACfF;AAE8B;AAE4D;AAE/D;AACK;AAElD,IAAI;IACF,IAAI,GAAG,GAAG,IAAI,CAAC;IACf,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;IAE9B,MAAM,WAAW,GAAG,KAAK,CAAC,yBAAyB,EAAE;QACnD,WAAW,EAAE,MAAM;KACpB,CAAC,CAAC;IAEH,wBAAwB;IACxB,MAAM,IAAI,GAAG,KAAK,CAAC,iBAAiB,EAAE;QACpC,WAAW,EAAE,SAAS;QACtB,OAAO;KACR,CAAC,CAAC;IACH,4BAA4B;IAE5B,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;SAC7B,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;QAC5B,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACxD,CAAC,CAAC;SACD,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,EAAE,EAAE;QAC5B,MAAM,MAAM,GAA4B,WAAW,CAAC,MAAM,CAAC;QAE3D,iCAAiC;QACjC,mBAAmB;QACnB,gDAAgD;QAChD,GAAG;QAEH,OAAO,uEAAuB;YAC5B;gBACE,OAAO,EAAE,2DAAQ;gBACjB,QAAQ,EAAE,IAAI,2DAAQ,CAAC,GAAG,CAAC;aAC5B;YACD;gBACE,OAAO,EAAE,gDAAW;gBACpB,QAAQ,EAAE,WAAW;aACtB;YACD;gBACE,OAAO,EAAE,+CAAU;gBACnB,QAAQ,EAAE,IAAI;aACf;YACD;gBACE,OAAO,EAAE,0DAAa;gBACtB,QAAQ,EAAE,GAAG;aACd;YACD;gBACE,OAAO,EAAE,kDAAa;gBACtB,QAAQ,EAAE,MAAM;aACjB;YACD;gBACE,OAAO,EAAE,qDAAgB;gBACzB,QAAQ,EAAE,KAAK;aAChB;SACF,CAAC;aACC,eAAe,CAAC,sDAAS,CAAC,CAAC;IAChC,CAAC,CAAC;SACD,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;CACrC;AAAC,OAAO,GAAG,EAAE;IACZ,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;CACpB;;;;;;;;;;;ACnED;AACA;AACA;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;ACvBA","sources":["./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/components/favorite-button/favorite-button.component.ts","./src/app/components/favorite-button/favorite-button.component.html","./src/app/components/modal/modal.component.ts","./src/app/components/modal/modal.component.html","./src/app/components/pathology-short/pathology-short.component.ts","./src/app/components/pathology-short/pathology-short.component.html","./src/app/components/search-box/search-box.component.ts","./src/app/components/search-box/search-box.component.html","./src/app/components/video/video.component.ts","./src/app/components/video/video.component.html","./src/app/constantvars.ts","./src/app/directives/anchor.directive.ts","./src/app/generic-retry-strategy.ts","./src/app/layout/header/header-nav/header-nav.component.ts","./src/app/layout/header/header-nav/header-nav.component.html","./src/app/layout/header/header.component.ts","./src/app/layout/header/header.component.html","./src/app/layout/menu-dropdown/menu-dropdown.component.ts","./src/app/layout/menu-dropdown/menu-dropdown.component.html","./src/app/layout/nav-bottom/nav-bottom.component.ts","./src/app/layout/nav-bottom/nav-bottom.component.html","./src/app/models/jwt.model.ts","./src/app/models/pathology.model.ts","./src/app/models/user.model.ts","./src/app/pages/about-popa/about-popa.component.ts","./src/app/pages/about-popa/about-popa.component.html","./src/app/pages/about-ruth/about-ruth.component.ts","./src/app/pages/about-ruth/about-ruth.component.html","./src/app/pages/add-to-home-screen/add-to-home-screen.component.ts","./src/app/pages/add-to-home-screen/add-to-home-screen.component.html","./src/app/pages/buy-the-book/buy-the-book.component.ts","./src/app/pages/buy-the-book/buy-the-book.component.html","./src/app/pages/faqs/faqs.component.ts","./src/app/pages/faqs/faqs.component.html","./src/app/pages/help/help.component.ts","./src/app/pages/help/help.component.html","./src/app/pages/login/login-form/login-form.component.ts","./src/app/pages/login/login-form/login-form.component.html","./src/app/pages/login/login.component.ts","./src/app/pages/login/login.component.html","./src/app/pages/pathology/pathology-details/pathology-details.component.ts","./src/app/pages/pathology/pathology-details/pathology-details.component.html","./src/app/pages/pathology/pathology-list/pathology-list.component.ts","./src/app/pages/pathology/pathology-list/pathology-list.component.html","./src/app/pages/pathology/pathology-search/pathology-search.component.ts","./src/app/pages/pathology/pathology-search/pathology-search.component.html","./src/app/pages/pathology/pathology.component.ts","./src/app/pages/pathology/pathology.component.html","./src/app/pages/resources/endangerment-sites/endangerment-sites.component.ts","./src/app/pages/resources/endangerment-sites/endangerment-sites.component.html","./src/app/pages/resources/hygiene-protocols/hygiene-protocols.component.ts","./src/app/pages/resources/hygiene-protocols/hygiene-protocols.component.html","./src/app/pages/resources/massage-and-cancer/massage-and-cancer.component.ts","./src/app/pages/resources/massage-and-cancer/massage-and-cancer.component.html","./src/app/pages/resources/what-to-do-emergency/what-to-do-emergency.component.ts","./src/app/pages/resources/what-to-do-emergency/what-to-do-emergency.component.html","./src/app/pages/saved-pathology/saved-pathology.component.ts","./src/app/pages/saved-pathology/saved-pathology.component.html","./src/app/pages/videos-and-resources/videos-and-resources.component.ts","./src/app/pages/videos-and-resources/videos-and-resources.component.html","./src/app/pages/videos/diagnose/diagnose.component.ts","./src/app/pages/videos/diagnose/diagnose.component.html","./src/app/pages/videos/intake/intake.component.ts","./src/app/pages/videos/intake/intake.component.html","./src/app/pages/videos/welcome/welcome.component.ts","./src/app/pages/videos/welcome/welcome.component.html","./src/app/route-animation.ts","./src/app/services/auth-guard.service.ts","./src/app/services/connection.service.ts","./src/app/services/favorite-pathology.service.ts","./src/app/services/pathology.service.ts","./src/app/services/previous-route.service.ts","./src/app/services/recent-pathology.service.ts","./src/app/services/saved-patho.service.ts","./src/app/services/tokenGetter.ts","./src/app/services/user.service.ts","./src/main.ts","/home/vsts/work/1/s/node_modules/moment-mini/locale|sync|/^\\.\\/.*$/","ignored|/home/vsts/work/1/s/node_modules/global|min-document"],"sourcesContent":["import { NgModule } from '@angular/core';\nimport { RouterModule, Routes } from '@angular/router';\n\nimport { AboutPopaComponent } from './pages/about-popa/about-popa.component';\nimport { AboutRuthComponent } from './pages/about-ruth/about-ruth.component';\nimport { AddToHomeScreenComponent } from './pages/add-to-home-screen/add-to-home-screen.component';\nimport { BuyTheBookComponent } from './pages/buy-the-book/buy-the-book.component';\nimport { FaqsComponent } from './pages/faqs/faqs.component';\nimport { HelpComponent } from './pages/help/help.component';\nimport { LoginComponent } from './pages/login/login.component';\nimport { PathologyDetailsComponent } from './pages/pathology/pathology-details/pathology-details.component';\nimport { PathologyListComponent } from './pages/pathology/pathology-list/pathology-list.component';\nimport { PathologySearchComponent } from './pages/pathology/pathology-search/pathology-search.component';\nimport { PathologyComponent } from './pages/pathology/pathology.component';\nimport { EndangermentSitesComponent } from './pages/resources/endangerment-sites/endangerment-sites.component';\nimport { HygieneProtocolsComponent } from './pages/resources/hygiene-protocols/hygiene-protocols.component';\nimport { MassageAndCancerComponent } from './pages/resources/massage-and-cancer/massage-and-cancer.component';\nimport { WhatToDoEmergencyComponent } from './pages/resources/what-to-do-emergency/what-to-do-emergency.component';\nimport { SavedPathologyComponent } from './pages/saved-pathology/saved-pathology.component';\nimport { VideosAndResourcesComponent } from './pages/videos-and-resources/videos-and-resources.component';\nimport { DiagnoseComponent } from './pages/videos/diagnose/diagnose.component';\nimport { IntakeComponent } from './pages/videos/intake/intake.component';\nimport { WelcomeComponent } from './pages/videos/welcome/welcome.component';\nimport { AuthGuardService } from './services/auth-guard.service';\n\nconst routes: Routes = [\n { path: 'login', component: LoginComponent, data: { title: 'Login' } },\n {\n path: '', component: PathologyComponent, canActivate: [AuthGuardService], data: { animation: 'pathology' },\n children: [\n { path: '', component: PathologySearchComponent, canActivate: [AuthGuardService], data: { animation: 'pathology' } },\n { path: 'list', component: PathologyListComponent, canActivate: [AuthGuardService],\n data: { title: 'Pathology List', animation: 'pathology' } },\n ]\n },\n { path: 'about-ruth', component: AboutRuthComponent, canActivate: [AuthGuardService],\n data: { title: 'About Ruth Werner', animation: 'aboutRuth' } },\n { path: 'pathology/:alias', component: PathologyDetailsComponent, canActivate: [AuthGuardService],\n data: { title: null, animation: 'pathoAlias' } },\n { path: 'recent', component: SavedPathologyComponent, canActivate: [AuthGuardService],\n data: { title: 'Recent Pathologies', type: 'recent', animation: 'Recent' } },\n { path: 'favorite', component: SavedPathologyComponent, canActivate: [AuthGuardService],\n data: { title: 'Saved Pathologies', type: 'favorite', animation: 'Fave' } },\n { path: 'videos-and-resources', component: VideosAndResourcesComponent, canActivate: [AuthGuardService],\n data: { title: 'Videos, Forms, and Resources', animation: 'videoPage' } },\n\n { path: 'help', component: HelpComponent, data: { title: 'Help', animation: 'Help' } },\n { path: 'faqs', component: FaqsComponent, data: { title: 'Frequently Asked Questions', animation: 'faqs' } },\n { path: 'about-this-app', component: AboutPopaComponent, data: { title: 'About Pocket Pathology', animation: 'about-this-app' } },\n { path: 'add-to-home-screen', component: AddToHomeScreenComponent,\n data: { title: 'How to Install Pocket Pathology', animation: 'addToHome' } },\n { path: 'buy-the-book', component: BuyTheBookComponent, data: { title: 'Buy the Book', animation: 'buytheBook' } },\n\n { path: 'resources/emergency', component: WhatToDoEmergencyComponent,\n data: { title: 'What To Do in an Emergency', animation: 'buytheBook' } },\n { path: 'resources/video-welcome', component: WelcomeComponent,\n data: { title: 'Welcome Video', animation: 'welcome' } },\n { path: 'resources/video-intake', component: IntakeComponent,\n data: { title: 'Intake Video', animation: 'welcome' } },\n { path: 'resources/video-diagnose', component: DiagnoseComponent,\n data: { title: 'Do Not Diagnose Video', animation: 'welcome' } },\n { path: 'resources/massage-and-cancer', component: MassageAndCancerComponent,\n data: { title: 'Massage Therapy for People with Cancer', animation: 'buytheBook' } },\n { path: 'resources/endangerment-sites', component: EndangermentSitesComponent,\n data: { title: 'Endangerment Sites You Need to Know', animation: 'buytheBook' } },\n { path: 'resources/hygiene-protocols', component: HygieneProtocolsComponent,\n data: { title: 'Hygienic Guidelines for Your Practice', animation: 'buytheBook' } },\n { path: '**', redirectTo: 'login' },\n];\n\n@NgModule({\n imports: [RouterModule.forRoot(routes, { scrollPositionRestoration: 'enabled', relativeLinkResolution: 'legacy' })],\n exports: [RouterModule]\n})\nexport class AppRoutingModule {\n\n}\n","import { AfterViewInit, Component, OnDestroy, OnInit } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute, ActivatedRouteSnapshot, NavigationEnd, Router } from '@angular/router';\nimport { SwUpdate } from '@angular/service-worker';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { ToastrService } from 'ngx-toastr';\nimport { Observable } from 'rxjs';\nimport { filter, take } from 'rxjs/operators';\nimport { SubSink } from 'subsink';\n\nimport { slideInAnimation } from './route-animation';\nimport { AuthGuardService } from './services/auth-guard.service';\nimport { UserService } from './services/user.service';\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.scss'],\n animations: [ slideInAnimation ]\n})\nexport class AppComponent implements OnInit, OnDestroy, AfterViewInit {\n\n public hideSearch: boolean = false;\n\n public hideMenu: boolean = true;\n\n public guardLoader$: Observable;\n\n private sink: SubSink = new SubSink();\n\n public version: string = '1.0.0';\n\n constructor(\n private router: Router,\n private route: ActivatedRoute,\n private title: Title,\n private user: UserService,\n private dd: DeviceDetectorService,\n private guard: AuthGuardService,\n private toast: ToastrService,\n ) {//private updates: SwUpdate) {\n }\n\n public ngOnInit(): void {\n this.guardLoader$ = this.guard.Loader$;\n\n const device = this.dd.getDeviceInfo();\n\n document.body.classList.add(device.browser, device.os);\n\n if (this.dd.isMobile()) {\n document.body.classList.add('Mobile');\n }\n\n if (this.dd.isDesktop()) {\n document.body.classList.add('Desktop');\n }\n\n if (this.dd.isTablet()) {\n document.body.classList.add('Tablet');\n }\n\n this.sink.sink = this.router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.hideSearch = (event.urlAfterRedirects === '/');\n\n const route = reduceRoute(this.route.snapshot);\n\n if ('title' in route.data) {\n if (route.data.title) {\n this.title.setTitle(route.data.title);\n }\n } else {\n this.title.setTitle('ABMP Pocket Pathology');\n }\n }\n });\n\n this.sink.sink = this.user.UserState$.pipe(\n filter(user => user !== null && user.IsLoggedIn()),\n take(1)\n ).subscribe(() => {\n this.hideMenu = false;\n });\n\n /*this.sink.sink = this.updates.available.subscribe(e => {\n this.toast.info('A new app update is available. Click here to install.', 'Update', {\n disableTimeOut: true,\n positionClass: 'toast-bottom-center',\n closeButton: true\n }).onTap.pipe(take(1)).subscribe(() => document.location.reload());\n });*/\n }\n\n public ngAfterViewInit(): void {\n\n }\n\n public ngOnDestroy() {\n this.sink.unsubscribe();\n }\n}\n\nconst reduceRoute = (route: ActivatedRouteSnapshot) => route.firstChild ? reduceRoute(route.firstChild) : route;\n","\n\n
\n \n
\n
\n
\n
\n
\n  \n Loading...\n
\n
\n
\n
\n
\n
\n\n\n","import { CommonModule } from '@angular/common';\nimport { HTTP_INTERCEPTORS, HttpClientModule } from '@angular/common/http';\nimport { NgModule } from '@angular/core';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { BrowserModule } from '@angular/platform-browser';\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\nimport { ServiceWorkerModule } from '@angular/service-worker';\nimport { JwtInterceptor, JwtModule } from '@auth0/angular-jwt';\nimport { FontAwesomeModule } from '@fortawesome/angular-fontawesome';\nimport { AccordionModule } from 'ngx-bootstrap/accordion';\nimport { AlertModule } from 'ngx-bootstrap/alert';\nimport { CollapseModule } from 'ngx-bootstrap/collapse';\nimport { BsDropdownModule } from 'ngx-bootstrap/dropdown';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { TabsModule } from 'ngx-bootstrap/tabs';\nimport { TypeaheadModule } from 'ngx-bootstrap/typeahead';\nimport { ToastrModule } from 'ngx-toastr';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { FavoriteButtonComponent } from './components/favorite-button/favorite-button.component';\nimport { ModalComponent } from './components/modal/modal.component';\nimport { PathologyShortComponent } from './components/pathology-short/pathology-short.component';\nimport { SearchBoxComponent } from './components/search-box/search-box.component';\nimport { VideoComponent } from './components/video/video.component';\nimport { AnchorDirective } from './directives/anchor.directive';\nimport { HeaderNavComponent } from './layout/header/header-nav/header-nav.component';\nimport { HeaderComponent } from './layout/header/header.component';\nimport { MenuDropdownComponent } from './layout/menu-dropdown/menu-dropdown.component';\nimport { NavBottomComponent } from './layout/nav-bottom/nav-bottom.component';\nimport { AboutPopaComponent } from './pages/about-popa/about-popa.component';\nimport { AboutRuthComponent } from './pages/about-ruth/about-ruth.component';\nimport { AddToHomeScreenComponent } from './pages/add-to-home-screen/add-to-home-screen.component';\nimport { BuyTheBookComponent } from './pages/buy-the-book/buy-the-book.component';\nimport { FaqsComponent } from './pages/faqs/faqs.component';\nimport { HelpComponent } from './pages/help/help.component';\nimport { LoginFormComponent } from './pages/login/login-form/login-form.component';\nimport { LoginComponent } from './pages/login/login.component';\nimport { PathologyDetailsComponent } from './pages/pathology/pathology-details/pathology-details.component';\nimport { PathologyListComponent } from './pages/pathology/pathology-list/pathology-list.component';\nimport { PathologySearchComponent } from './pages/pathology/pathology-search/pathology-search.component';\nimport { PathologyComponent } from './pages/pathology/pathology.component';\nimport { EndangermentSitesComponent } from './pages/resources/endangerment-sites/endangerment-sites.component';\nimport { HygieneProtocolsComponent } from './pages/resources/hygiene-protocols/hygiene-protocols.component';\nimport { MassageAndCancerComponent } from './pages/resources/massage-and-cancer/massage-and-cancer.component';\nimport { WhatToDoEmergencyComponent } from './pages/resources/what-to-do-emergency/what-to-do-emergency.component';\nimport { SavedPathologyComponent } from './pages/saved-pathology/saved-pathology.component';\nimport { VideosAndResourcesComponent } from './pages/videos-and-resources/videos-and-resources.component';\nimport { DiagnoseComponent } from './pages/videos/diagnose/diagnose.component';\nimport { IntakeComponent } from './pages/videos/intake/intake.component';\nimport { WelcomeComponent } from './pages/videos/welcome/welcome.component';\nimport { PreviousRouteService } from './services/previous-route.service';\nimport { tokenGetter } from './services/tokenGetter';\n\n@NgModule({\n declarations: [\n AnchorDirective,\n AppComponent,\n LoginComponent,\n PathologyComponent,\n PathologyDetailsComponent,\n HeaderComponent,\n HeaderNavComponent,\n LoginFormComponent,\n PathologyShortComponent,\n SearchBoxComponent,\n NavBottomComponent,\n SavedPathologyComponent,\n FavoriteButtonComponent,\n VideoComponent,\n HelpComponent,\n ModalComponent,\n AboutRuthComponent,\n VideosAndResourcesComponent,\n FaqsComponent,\n BuyTheBookComponent,\n AddToHomeScreenComponent,\n PathologySearchComponent,\n PathologyListComponent,\n MenuDropdownComponent,\n AboutPopaComponent,\n WhatToDoEmergencyComponent,\n EndangermentSitesComponent,\n MassageAndCancerComponent,\n HygieneProtocolsComponent,\n WelcomeComponent,\n DiagnoseComponent,\n IntakeComponent\n ],\n imports: [\n CommonModule,\n BrowserModule,\n AppRoutingModule,\n BrowserAnimationsModule,\n ToastrModule.forRoot(),\n HttpClientModule,\n FontAwesomeModule,\n ReactiveFormsModule,\n FormsModule,\n AlertModule.forRoot(),\n TabsModule.forRoot(),\n AccordionModule.forRoot(),\n TypeaheadModule.forRoot(),\n CollapseModule.forRoot(),\n /*ServiceWorkerModule.register('ngsw-worker.js', {\n enabled: true,\n registrationStrategy: 'registerWhenStable',\n scope: '/'\n }),*/\n ModalModule.forRoot(),\n BsDropdownModule.forRoot(),\n JwtModule.forRoot({\n config: {\n tokenGetter: tokenGetter,\n allowedDomains: ['localhost', 'umbraco-api.azurewebsites.net']\n }\n })\n ],\n providers: [\n { provide: PreviousRouteService, useValue: undefined },\n {\n provide: HTTP_INTERCEPTORS,\n useClass: JwtInterceptor,\n multi: true\n }\n ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { Component, ElementRef, EventEmitter, Input, OnInit, Output, ViewChild } from '@angular/core';\nimport { faBookmark as faBookmarkRegular } from '@fortawesome/free-regular-svg-icons';\nimport { faBookmark as faBookmarkSolid } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'app-favorite-button',\n templateUrl: './favorite-button.component.html',\n styleUrls: ['./favorite-button.component.scss']\n})\nexport class FavoriteButtonComponent implements OnInit {\n\n @Input()\n public isFavorite: boolean = false;\n\n @Output()\n public toggle: EventEmitter = new EventEmitter();\n\n @ViewChild('btn')\n public btn: ElementRef;\n\n public faBookmarkSolid = faBookmarkSolid;\n public faBookmarkRegular = faBookmarkRegular;\n\n constructor() { }\n\n public ngOnInit(): void {\n }\n\n public ToggleFaveStar(status: boolean): void {\n this.toggle.emit(status);\n this.btn.nativeElement.blur();\n }\n\n}\n","\n","import { Component, EventEmitter, OnDestroy, OnInit, Output, ViewChild } from '@angular/core';\nimport { ModalDirective } from 'ngx-bootstrap/modal';\n\n@Component({\n selector: 'app-modal',\n templateUrl: './modal.component.html',\n styleUrls: ['./modal.component.scss']\n})\nexport class ModalComponent implements OnInit, OnDestroy {\n public vidSourceIntro = 'https://videos.abmp.com/public/pocketpatho-Long-Intro/Default/HLS/pocketpatho-Long-Intro.m3u8';\n\n @ViewChild('autoShownModal')\n public autoShownModal: ModalDirective;\n\n @Output()\n public Hidden: EventEmitter = new EventEmitter();\n\n constructor() {\n }\n\n public ngOnInit(): void {\n }\n\n public ngOnDestroy(): void {\n }\n\n public CloseModalForever(): void {\n if (localStorage && localStorage instanceof Storage) {\n localStorage.setItem('ModalHasBeenShown', JSON.stringify(true));\n }\n }\n\n public hideModal(): void {\n this.autoShownModal.hide();\n }\n\n public onHidden(): void {\n this.Hidden.emit();\n this.CloseModalForever();\n }\n\n}\n","
\n
\n
\n
\n
\n Welcome to ABMP’s \n Pocket Pathology\n
\n \n
\n
\n\n

\n ABMP has partnered with Ruth Werner, author of A Massage Therapist’s Guide to Pathology,\n to create this exclusive pathology app for ABMP members. Watch this short demo, or get started now.\n

\n \n\n
\n
\n
\n
\n","import { Component, OnInit, Input } from '@angular/core';\nimport { Pathology } from '../../models/pathology.model';\n\n@Component({\n selector: 'app-pathology-short',\n templateUrl: './pathology-short.component.html',\n styleUrls: ['./pathology-short.component.scss']\n})\nexport class PathologyShortComponent implements OnInit {\n\n @Input()\n public Pathology: Pathology;\n\n constructor() { }\n\n public ngOnInit(): void {\n }\n\n}\n","\n","import { Component, EventEmitter, OnInit, Output } from '@angular/core';\nimport { faSearch, faTimes } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'app-search-box',\n templateUrl: './search-box.component.html',\n styleUrls: ['./search-box.component.scss']\n})\nexport class SearchBoxComponent implements OnInit {\n\n @Output()\n public pathologySearch: EventEmitter<[string, boolean]> = new EventEmitter(true);\n\n public faSearch = faSearch;\n public faTimes = faTimes;\n\n constructor() {\n }\n\n public ngOnInit(): void {\n this.pathologySearch.emit([null, false]);\n }\n\n public Search(term: string, deep: boolean): void {\n term = term.trim().toLowerCase();\n this.pathologySearch.emit([term, deep]);\n }\n\n}\n","
\n\n
\n
\n
\n \n \n
\n
\n
\n\n
\n
\n \n\n
\n
\n \n Search\n \n
\n\n \n
\n \n
\n
\n\n
\n
\n\n
\n","import { AfterViewInit, Component, ElementRef, Input, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport videojs from 'video.js';\n\n@Component({\n selector: 'app-video',\n templateUrl: './video.component.html',\n styleUrls: ['./video.component.scss']\n})\nexport class VideoComponent implements OnInit, AfterViewInit, OnDestroy {\n\n @Input()\n public Poster: string = null;\n\n @Input()\n public AutoPlay: boolean = false;\n @Input()\n public AutoPlaySet: string = null;\n\n @Input()\n public source: videojs.Tech.SourceObject[];\n\n @ViewChild('video')\n public video: ElementRef;\n\n public VideoJS: videojs.Player;\n\n constructor() { }\n\n public ngOnInit(): void {\n console.log('AutoPlay', this.AutoPlay);\n }\n\n public ngAfterViewInit(): void {\n this.VideoJS = videojs(this.video.nativeElement);\n }\n\n public ngOnDestroy(): void {\n if (this.VideoJS) {\n this.VideoJS.dispose();\n this.VideoJS = null;\n }\n }\n\n}\n","\n","export class Constantvars {\n public static vidType = 'application/x-mpegURL';\n public static vidBucket = 'https://videos.abmp.com/public/';\n public static popaImgs = 'https://cdn.abmp.com/public/image/pocket-pathology/';\n public static autoplay = true;\n\n public static pgContainer = 'pgcontainer container-lg mt-sm-0 pt-sm-0 my-lg-3 my-md-3 mt-sm-4';\n public static pgRowJustifyRight = 'row justify-content-end';\n public static pgMainCol = 'pgmaincol col-lg-8 col-md-12 col-sm-10 col-xs-10 mt-md-4 px-3 py-3';\n public static btnClassBackToReso = 'btn btn-light btn-link btn-block font-weight-bold clearfix text-left px-3 py-3';\n\n}\n","import { AfterViewChecked, Directive, ElementRef } from '@angular/core';\n\n@Directive({\n // tslint:disable-next-line: directive-selector\n selector: '[appAnchor]'\n})\nexport class AnchorDirective implements AfterViewChecked {\n\n constructor(private element: ElementRef) {\n }\n\n public ngAfterViewChecked(): void {\n this.element.nativeElement.querySelectorAll('a[href]').forEach((anchor: HTMLAnchorElement) => {\n anchor.target = '_blank';\n anchor.rel = 'noopener';\n });\n }\n\n}\n","import { Observable, throwError, timer } from 'rxjs';\nimport { mergeMap, finalize } from 'rxjs/operators';\n\nexport const genericRetryStrategy = ({\n maxRetryAttempts = 3,\n scalingDuration = 1000,\n excludedStatusCodes = []\n}: {\n maxRetryAttempts?: number,\n scalingDuration?: number,\n excludedStatusCodes?: number[]\n} = {}) => (attempts: Observable) => {\n return attempts.pipe(\n mergeMap((error, i) => {\n const retryAttempt = i + 1;\n // if maximum number of retries have been met\n // or response is a status code we don't wish to retry, throw error\n if (\n retryAttempt > maxRetryAttempts ||\n excludedStatusCodes.find(e => e === error.status)\n ) {\n return throwError(error);\n }\n console.log(\n `Attempt ${retryAttempt}: retrying in ${retryAttempt *\n scalingDuration}ms`\n );\n // retry after 1s, 2s, etc...\n return timer(retryAttempt * scalingDuration);\n }),\n finalize(() => console.log('We are done!'))\n );\n};\n","import { Location } from '@angular/common';\nimport { AfterViewInit, Component, ElementRef, Input, OnChanges, OnInit, ViewChild } from '@angular/core';\nimport { Router } from '@angular/router';\nimport { faBars, faChevronLeft, faSearch, faTimes, faWindowClose } from '@fortawesome/free-solid-svg-icons';\nimport { faBookmark as faBookmarkSolid, faHistory, faUndo, faHome } from '@fortawesome/free-solid-svg-icons';\nimport { TypeaheadMatch } from 'ngx-bootstrap/typeahead';\nimport { combineLatest, Observable, Subject, timer } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Pathology } from 'src/app/models/pathology.model';\n\nimport { PathologyService, PathologyTitleMatch } from '../../../services/pathology.service';\n\n@Component({\n selector: 'app-header-nav',\n templateUrl: './header-nav.component.html',\n styleUrls: ['./header-nav.component.scss']\n})\nexport class HeaderNavComponent implements OnInit, AfterViewInit, OnChanges {\n\n @Input()\n public hideSearch: boolean = false;\n\n @Input()\n public hideMenu: boolean = true;\n\n @ViewChild('search', { read: ElementRef })\n public search: ElementRef;\n\n @ViewChild('nav', { static: true })\n public nav: ElementRef;\n\n public search$: Subject;\n\n public Pathology$: Observable;\n\n public searchOpen: boolean = false;\n public searchIsSet: boolean = false;\n\n public faHome = faHome;\n public faHistory = faHistory;\n public faUndo = faUndo;\n public faBookmarkSolid = faBookmarkSolid;\n public faSearch = faSearch;\n public faChevronLeft = faChevronLeft;\n public faTimes = faTimes;\n public faWindowClose = faWindowClose;\n public faBars = faBars;\n\n constructor(\n private pathology: PathologyService,\n private router: Router,\n private location: Location) {\n this.search$ = new Subject();\n }\n\n public ngOnInit(): void {\n this.searchIsSet = false;\n\n this.search$.subscribe(term => console.log(term));\n this.Pathology$ = combineLatest([this.search$, this.pathology.PathoNodes$]).pipe(\n map(([term, pathologies]) => {\n console.log(pathologies, term);\n return pathologies.filter(pathology => PathologyTitleMatch(term, pathology));\n })\n );\n }\n\n public ngAfterViewInit(): void {\n }\n\n public ngOnChanges(): void {\n if (this.hideSearch && this.searchOpen) {\n this.searchOpen = false;\n }\n }\n\n public onTransitionEnd(event: TransitionEvent): void {\n if (event.propertyName === 'width') {\n if (this.nav.nativeElement.classList.contains('searchOpen')) {\n this.searchIsSet = true;\n this.search.nativeElement.focus();\n } else {\n this.search.nativeElement.blur();\n this.searchIsSet = false;\n }\n }\n }\n\n public onSelect(event: TypeaheadMatch): void {\n this.search.nativeElement.blur();\n this.search$.next(null);\n this.router.navigate(['/pathology', event.item.alias]);\n }\n\n public back(): void {\n this.location.back();\n }\n\n public close(): void {\n timer(250).subscribe(() => {\n this.searchOpen = false;\n });\n }\n\n}\n","\n\n\n
{{ item.title }}
\n
\n","import { Component, Input, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-header',\n templateUrl: './header.component.html',\n styleUrls: ['./header.component.scss']\n})\nexport class HeaderComponent implements OnInit {\n\n @Input()\n public hideSearch: boolean;\n\n @Input()\n public hideMenu: boolean = true;\n\n constructor() { }\n\n public ngOnInit(): void {\n }\n\n}\n","
\n \n
\n","import { Component, OnInit, Input } from '@angular/core';\nimport { faBars } from '@fortawesome/free-solid-svg-icons';\nimport { BsDropdownConfig } from 'ngx-bootstrap/dropdown';\nimport { faBookmark as faBookmarkSolid, faHistory, faUndo, faHome } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'app-menu-dropdown',\n templateUrl: './menu-dropdown.component.html',\n styleUrls: ['./menu-dropdown.component.scss'],\n providers: [{ provide: BsDropdownConfig, useValue: { isAnimated: true, autoClose: true } }]\n})\nexport class MenuDropdownComponent implements OnInit {\n\n @Input()\n public ButtonClass: Array;\n\n @Input()\n public ButtonText: string = null;\n\n @Input()\n public Placement: 'top' | 'bottom' = 'bottom';\n\n public faBars = faBars;\n public faHistory = faHistory;\n public faUndo = faUndo;\n public faBookmarkSolid = faBookmarkSolid;\n\n constructor() { }\n\n public ngOnInit(): void {\n }\n\n}\n","\n\n \n \n\n \n\n \n\n","import { Component, Input, OnInit } from '@angular/core';\nimport { faBookmark as faBookmarkSolid, faHistory, faHome, faUndo, faQuestionCircle } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'app-nav-bottom',\n templateUrl: './nav-bottom.component.html',\n styleUrls: ['./nav-bottom.component.scss']\n})\nexport class NavBottomComponent implements OnInit {\n\n @Input()\n public hideMenu: boolean = true;\n\n public faHome = faHome;\n public faHistory = faHistory;\n public faUndo = faUndo;\n public faQuestion = faQuestionCircle;\n public faBookmarkSolid = faBookmarkSolid;\n\n constructor() {\n }\n\n public ngOnInit(): void {\n }\n\n}\n","\n\n\n
\n \n
\n","export class JwtToken {\n\n private _value: string;\n\n public get Value(): string {\n return this._value;\n }\n\n constructor(value: string) {\n this.Update(value);\n }\n\n public Update(value: string): void {\n if (value) {\n this._value = value;\n localStorage.setItem('JWT_TOKEN', value);\n } else {\n this._value = null;\n localStorage.removeItem('JWT_TOKEN');\n }\n }\n\n public valueOf(): string {\n return this._value;\n }\n\n public toString(): string {\n return this._value;\n }\n}\n","import { PathologyStub } from './pathology-stub.interface';\n\nexport class Pathology {\n // tslint:disable: variable-name\n public nid: number = undefined;\n public title: string = undefined;\n public alias: string = undefined;\n public body: string = undefined;\n public adaptations: string = undefined;\n public common_names_search_terms: string[] = undefined;\n public medications: string = undefined;\n public notes: string = undefined;\n public outcomes: string = undefined;\n public overview: string = undefined;\n public related_pathologies: PathologyStub[] = undefined;\n public related_pathology_titles: string[] = undefined;\n public research_and_resources: string = undefined;\n public keywords: string[] = undefined;\n\n public get common_names_search_terms_flat(): string {\n if (this.common_names_search_terms && this.common_names_search_terms instanceof Array) {\n const flat = this.common_names_search_terms.join(', ');\n return flat.charAt(0).toUpperCase() + flat.slice(1);\n }\n }\n\n constructor(source?: any) {\n if (source) {\n for (const key in this) {\n if (key in source) {\n this[key] = source[key];\n }\n }\n }\n\n if (typeof this.related_pathology_titles === 'string') {\n this.related_pathology_titles = (this.related_pathology_titles as string).split(',').map(value => value.trim().toLowerCase());\n }\n\n if (typeof this.common_names_search_terms === 'string') {\n this.common_names_search_terms = (this.common_names_search_terms as string).split(',').map(value => value.trim().toLowerCase());\n }\n }\n\n public GetPathoStub(): PathologyStub {\n return {\n nid: this.nid,\n title: this.title,\n alias: this.alias\n };\n }\n\n}\n","import { ISavedPathology } from '../services/saved-patho.service';\nimport { JwtToken } from './jwt.model';\nexport interface IPACSSO {\n Columns: { [key: string]: any };\n}\n\nexport interface IPocketPathoSSO {\n favorite?: ISavedPathology[];\n recent?: ISavedPathology[];\n}\n\nexport interface IDrupalSSO {\n current_user: { uid: string };\n csrf_token: string;\n logout_token: string;\n pac_sso: IPACSSO;\n pocket_patho: IPocketPathoSSO;\n}\n\nexport interface IUser {\n ID: number;\n Name: { first: string, last: string };\n FullSSOData: IDrupalSSO;\n fromCache: boolean;\n cacheAge?: Date;\n}\n\nexport class User implements IUser {\n\n public ID: number = null;\n public Name: { first: string, last: string } = { first: null, last: null};\n public FullSSOData: IDrupalSSO = null;\n\n public token: string = null;\n\n public fromCache: boolean = false;\n\n public cacheAge?: Date = null;\n\n public IsLoggedIn(): boolean {\n return this.ID !== null && this.ID !== 0;\n }\n\n constructor(jwtData: any) {\n if (jwtData === null) {\n return;\n }\n try {\n if ('pac' in jwtData) {\n this.ID = jwtData.pac.cst_recno;\n this.Name = { first: jwtData.given_name, last: jwtData.family_name };\n this.cacheAge = new Date(jwtData.nbf * 1000);\n } else if ('ObjectName' in jwtData) {\n this.ID = jwtData.Columns.cst_recno;\n this.Name = { first: jwtData.Columns.ind_first_name, last: jwtData.Columns.ind_last_name};\n this.cacheAge = new Date(jwtData.Columns.update * 1000);\n \n }\n } catch (e) {\n this.ID = null;\n }\n \n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Constantvars } from '../../constantvars';\n\n@Component({\n selector: 'app-about-popa',\n templateUrl: './about-popa.component.html',\n styleUrls: ['./about-popa.component.scss']\n})\nexport class AboutPopaComponent implements OnInit {\n\n public AppConstants: any;\n public pgTitle: string;\n public popaImgs: string;\n\n constructor() {\n this.AppConstants = Constantvars;\n this.popaImgs = Constantvars.popaImgs;\n this.pgTitle = 'About Pocket Pathology';\n }\n\n ngOnInit() {\n }\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n
\n\n \n\n

Whether you’re in a private practice, small clinic, day spa, or massage franchise, this web-based app from ABMP can give you the information you need to make the most appropriate treatment decisions for your clients who live with health challenges. 

\n\n

Developed in partnership with\n Ruth Werner,\n author of A Massage Therapist’s Guide to Pathology, and Books of Discovery,\n ABMP Pocket Pathology is a quick reference program that puts key information for nearly\n 200 common pathologies at your fingertips. Pocket Pathology lets you go into your sessions\n armed with the knowledge necessary to make the best treatment decisions, and it’s easy to use\n whether you’re accessing it from your phone or laptop.

\n\n

It's Easy to Use

\n\n

Did your client’s health intake interview just reveal she’s been diagnosed with\n diabetes and now you need a speedy review on the condition? Go to your Pocket Pathology\n app and type in diabetes to get the primary information you need to make best\n practice decisions about whether or not your touch will be beneficial to this client\n right now.

\n\n

Quick, bullet-pointed information lets you assess how to adapt your work to accommodate clients\n and their various conditions. No more guessing in the treatment room. This resource gives\n you the confidence you need to make best-practice decisions for every client.

\n\n

Have more time and want a deeper dive into information about the pathology\n you’re seeking? Check out the “Research and Resources” section to read articles,\n watch webinars, or investigate the latest research on the subject.

\n\n

Why Not All Pathologies?

\n\n

ABMP Pocket Pathology focuses on the most common pathologies massage therapists and bodyworkers\n might find in their practice. From A to Z, this list was vetted to bring you\n information on conditions you will see again and again throughout the course of\n your career. For more conditions, check out\n \n A Massage Therapist’s Guide to Pathology by Ruth Werner.\n ABMP members also receive a\n \n discount on all Books of Discovery titles.\n

\n\n

Caution First

\n\n

The information provided within Pocket Pathology is not intended as medical advice.\n Care has been taken to confirm the accuracy of the information presented herein and\n to describe generally accepted practices. However, ABMP, the author, editors, and publishers\n involved in this project, are not responsible for omissions or errors or for any consequences\n from application of the information in this program, and make no warranty, expressed or implied,\n regarding the completeness or accuracy of the contents of this publication. Application of the\n information in a particular situation remains the practitioner’s professional responsibility,\n as is their adherence to scope of practice.

\n\n

Contact ABMP

\n\n

Want to share your thoughts and feedback about ABMP Pocket Pathology? We want to hear from you.\n Send your comments to PocketContent@abmp.com.

\n\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Constantvars } from '../../constantvars';\n\n@Component({\n selector: 'app-about-ruth',\n templateUrl: './about-ruth.component.html',\n styleUrls: ['./about-ruth.component.scss']\n})\nexport class AboutRuthComponent implements OnInit {\n\n public AppConstants: any;\n public pgTitle: string;\n public popaImgs: string;\n\n constructor() {\n this.AppConstants = Constantvars;\n this.popaImgs = Constantvars.popaImgs;\n this.pgTitle = 'About Ruth Werner';\n }\n\n public ngOnInit(): void {\n }\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n
\n\n \n\n

As part of ABMP’s commitment to give our members the very best in resources and business tools,\n we are proud to partner with Ruth Werner to bring you Pocket Pathology.\n Ruth is the author of A Massage Therapist’s Guide to Pathology, considered the industry’s gold standard on pathology protocols.\n Here’s more about this industry leader:

\n\n\n

Ruth volunteers with several industry organizations, including\n the Massage Therapy Foundation, where she served as president for four years. She was a practicing massage therapist\n for 15 years, and she teaches in massage therapy programs around the world. She is an NCBTMB-approved continuing\n education provider and a longtime columnist with Massage & Bodywork.

\n\n

Ruth has served in numerous roles for the National Certification Board for Therapeutic Massage and Bodywork,\n the Federation of State Massage Therapy Boards, the Alliance for Massage Therapy Education, and the Fascia\n Research Society. Ruth was honored to receive the John Balletto Distinguished Service Award\n from the Massage Therapy Foundation in 2018.

\n\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { DeviceDetectorService } from 'ngx-device-detector';\n\nimport { Constantvars } from '../../constantvars';\n\n@Component({\n selector: 'app-add-to-home-screen',\n templateUrl: './add-to-home-screen.component.html',\n styleUrls: ['./add-to-home-screen.component.scss']\n})\nexport class AddToHomeScreenComponent implements OnInit {\n public AppConstants: any;\n public pgTitle: string;\n public popaImgs: string;\n\n deviceInfo = null;\n public OsCookieValue = 'UNKNOWN';\n public deviceOS: string;\n public IOSandMobi: boolean;\n public IosMobiSafari: boolean;\n public devicebrowser: string;\n public browserVersion: string;\n public browserMainVersion: number;\n\n public isMobi: boolean;\n public isTablet: boolean;\n public MacTablet: boolean;\n public isAndroid: boolean;\n public isIOS: boolean;\n\n constructor(\n private dd: DeviceDetectorService,\n ) {\n this.AppConstants = Constantvars;\n this.popaImgs = Constantvars.popaImgs;\n this.pgTitle = 'How To Install Pocket Pathology';\n }\n\n public ngOnInit(): void {\n this.deviceInfo = this.dd.getDeviceInfo();\n this.isMobi = this.dd.isMobile();\n this.isTablet = this.dd.isTablet();\n this.deviceOS = this.deviceInfo.os;\n this.devicebrowser = this.deviceInfo.browser;\n\n this.browserVersion = this.deviceInfo.browser_version;\n this.browserMainVersion = parseInt(this.browserVersion.split('.')[0], 10) || 0;\n\n // check IOS/Android condition\n if ((this.deviceOS === 'Mac') && (this.isTablet === true)) {\n this.MacTablet = true;\n }\n if ((this.deviceOS === 'iOS')) {\n this.isIOS = true;\n this.isAndroid = false;\n } else if ((this.deviceOS === 'Android')) {\n this.isAndroid = true;\n this.isIOS = false;\n } else {\n this.isAndroid = false;\n this.isIOS = false;\n }\n\n }\n}\n","
\n
\n
\n
\n

{{pgTitle}}

\n
\n
\n \n
\n
iOS Safari Users
\n

1. Tap the share action icon\n \n at the bottom of the screen.\n

\n

\n 2. Scroll down and tap on\n
Add to Home Screen.\n

\n

\n \n

\n

\n 3. Tap Add.\n

\n \n

\n
\n

\n \n

\n

\n 4. The icon will now be on your Home Screen, and you can open Pocket Pathology by clicking on the icon.\n You may be prompted to log in again, the first time you open it using the icon.\n

\n
\n

Still Not Working?

\n

\n 1. Check the footer for a Safari Icon near the bottom right of your screen.\n This means you're viewing the page from inside another app, instead of the Safari browser.\n

\n

\n \n

\n

\n 2. Tap that icon to open Pocket Pathology in Safari, then follow the instructions above.\n

\n

\n 3. Still can’t install the app? Click on the \"Browser Detail\" link below\n and email it to PocketContent@abmp.com.\n

\n
\n
\n
iOS Users
\n

\n Please use Safari to enable Home Screen App Feature on iOS.\n

\n
\n
\n \n \n
\n
Android Chrome Users
\n
\n

\n Please update Chrome to enable Home Screen App Feature.\n

\n
\n
72\">\n

\n 1. If you see this bar at the bottom of the home page, tap on it.\n

\n

\n \"android\n

\n

\n If you don’t see that bar at the bottom of the home page, then tap the menu icon to open the menu\n \"\" and tap Add to Home Screen.\n

\n

\n 2. When prompted to install the app, tap Install.\n

\n

\n \"\"\n

\n
\n

\n \n

\n

\n 3. The icon will now be on your Home Screen, and you can open Pocket Pathology by clicking on the icon.\n \n You may be prompted to log in again, the first time you open it using the icon.\n \n

\n
\n

Still Not Working?

\n

\n 1. Check to see if there's a left arrow at the top left of your screen.\n This means you're viewing the page from inside another app, instead of the Chrome browser.\n

\n

\n \n

\n

\n 2. Tap the 3 dots on the right to open the menu.\n

\n

\n \n

\n

\n 3. Select Open in Chrome,\n then follow the instructions above to add Pocket Pathology to your home screen.\n

\n

\n 4. Still can’t install the app? Click on the \"Browser Detail\" link below\n and email it to PocketContent@abmp.com.\n

\n
\n
\n
\n
Android FireFox Users
\n
\n

\n Please update Firefox to enable Home Screen App Feature.\n

\n
\n
57\">\n

\n To the right of the URL will be a home icon with a plus in it.\n

\n

\n \"firefox\n

\n

\n By selecting this icon,\n you can add the website to your home screen just like any other application.\n

\n

\n \"firefox\n

\n

\n After selecting the add-to-home button, you'll be asked if you want to add it automatically or manually. For the former,\n just select \"Add Automatically,\" and for the latter, long-press on it, then drop it where you want on your home screen.\n

\n \n Once added, the icon will provide a link to the website without ever opening the browser.\n This website will operate just like any other game that you were to install onto your device via the Google Play Store.\n

\n
\n
\n
\n
We Recommend Using Chrome
\n

\n Please Install Chrome or Firefox to enable Home Screen App Feature.\n

\n
\n
\n
\n \n
\n
Chrome Desktop Users
\n

1. Click the Plus Indicator at the top right of your browser window.\n \"\"\n

\n

\n 2. Then click Install.\n

\n

\n \"\"\n

\n
\n

3. If you don't see that option, click the menu icon at the top right of your browser window to open the Chrome menu.\n \"chrome\n

\n

\n 4. Select Install ABMP Pocket Pathology.\n

\n

\"chrome\n

\n

\n 5. Then click Install.\n

\n

\n \"\"\n

\n
\n

\n \n 6. The icon will save to your Desktop, and you can open Pocket Pathology by clicking on the icon.\n You may be prompted to log in again, the first time you open it using the icon.\n

\n
\n

\n 7. Still can’t install the app? Click on the \"Browser Detail\" link below\n and email it to PocketContent@abmp.com.\n

\n

 

\n
\n
\n
We Recommend Using Chrome
\n

\n Please Install Chrome or Firefox to enable Home Screen App Feature.\n

\n
\n
\n

\n \n More info on how to install web apps\n \n

\n \n
\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Constantvars } from '../../constantvars';\n\n@Component({\n selector: 'app-buy-the-book',\n templateUrl: './buy-the-book.component.html',\n styleUrls: ['./buy-the-book.component.scss']\n})\nexport class BuyTheBookComponent implements OnInit {\n\n public AppConstants: any;\n public pgTitle: string;\n public popaImgs: string;\n\n constructor() {\n this.AppConstants = Constantvars;\n this.popaImgs = Constantvars.popaImgs;\n this.pgTitle = 'Buy The Book';\n }\n\n public ngOnInit(): void {\n }\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n
\n\n

Books of Discovery publishes manual therapy textbooks and educational resources,\n including A Massage Therapist’s Guide to Pathology by Ruth Werner.

\n\n \n \n\n\n

Werner’s textbook is found in massage schools across the country and is a\n premier pathology resource for professionals throughout their careers.

\n\n

Books of Discovery offers a 25 percent discount for all ABMP members,\n which can be used on all products except apps and combination specials.\n Buy online at\n www.booksofdiscovery.com\n and enter the coupon code ABMP77 to receive your discount.

\n\n \n
\n
\n\n
\n\n
\n","import { Component, Inject, OnInit } from '@angular/core';\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';\n\nimport { Constantvars } from '../../constantvars';\nimport { PreviousRouteService } from '../../services/previous-route.service';\n\n@Component({\n selector: 'app-faqs',\n templateUrl: './faqs.component.html',\n styleUrls: ['./faqs.component.scss']\n})\nexport class FaqsComponent implements OnInit {\n public faChevronDown = faChevronDown;\n public faChevronUp = faChevronUp;\n\n public AppConstants: any;\n public pgTitle: string;\n public popaImgs: string;\n public prevURL: string;\n\n public vidSourceIntro = 'https://videos.abmp.com/public/pocketpatho-Long-Intro/Default/HLS/pocketpatho-Long-Intro.m3u8';\n\n constructor(\n private previousRouteService: PreviousRouteService,\n ) {\n this.AppConstants = Constantvars;\n this.popaImgs = Constantvars.popaImgs;\n this.pgTitle = 'Frequently Asked Questions';\n }\n\n public ngOnInit(): void {\n this.prevURL = this.previousRouteService.getPreviousUrl();\n }\n\n scroll(id) {\n const el = document.getElementById(id);\n el.scrollIntoView({behavior: 'smooth'});\n }\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n
\n \n\n \n\n \n \n\n

Start by watching this demo video below from Ruth Werner, author of A Massage Therapist’s Guide to Pathology.\n \n Follow along with Ruth as she walks you through this easy-to-use program of nearly 200 of the most\n common diseases and conditions you might see in your practice, and the most important things you\n need to know about them to ensure the safety and comfort of your client. No more guessing in the\n treatment room. This resource gives you the confidence you need to make best-practice\n decisions for every client.\n

\n
\n \n \n \n \n\n \n\n
\n\n
\n\n \n \n

ABMP Pocket Pathology focuses on the most common pathologies massage therapists and bodyworkers might find in their practice.\n From A to Z, this list was vetted to bring you information on conditions you will see again and again throughout\n the course of your career. Don’t see what you are looking for? Go to the Pocket Pathology home page,\n enter your search term, and click the Search All Content box to see if your term shows up elsewhere in the program.

\n
\n\n \n \n

\n For information on more diseases and conditions, check out\n A Massage Therapist’s Guide to Pathology by Ruth Werner.\n ABMP members receive a\n \n discount on all Books of Discovery titles, including A Massage Therapist’s Guide to Pathology.\n

\n
\n\n \n \n

Find the menu icon (top right for desktop users, bottom navigation for mobile users).\n Click there and scroll down to “Add App to Home Screen.”\n This will give you the directions you need to add Pocket Pathology to your specific computer or device.\n

\n
\n\n \n \n

ABMP Pocket Pathology is supported by mainstream web browsers including Chrome,\n Safari, Firefox, and Microsoft Edge. If you are having trouble viewing\n ABMP Pocket Pathology in one of these browsers, make sure you have a recent version of your browser installed.\n

\n
\n\n \n \n

Yes! You can use ABMP Pocket Pathology on all of your mobile devices\n and on more than one device.\n Simply log in to ABMP Pocket Pathology with the device you are using.\n

\n
\n\n \n \n

The content used in this program comes exclusively from A Massage Therapist’s Guide to Pathology, 7th ed.,\n by Ruth Werner. ABMP is proud to have partnered with the profession’s premier pathology expert to bring members\n this exclusive resource. Werner’s book is found in massage schools across\n the country and around the world, and practitioners use her text as one of the mainstays\n in their own reference libraries.\n

\n
\n\n \n \n

We appreciate your willingness to take the time to let us know what you think!\n Email PocketContent@abmp.com.\n

\n
\n\n \n \n

No. The information provided within Pocket Pathology is not intended as medical advice.\n Care has been taken to confirm the accuracy of the information presented herein and to describe\n generally accepted practices. However, ABMP, the author, editors, and publishers involved in this project,\n are not responsible for omissions or errors or for any consequences from application of the information\n in this program, and make no warranty, expressed or implied, regarding the completeness or accuracy\n of the contents of this publication. Application of the information in a\n particular situation remains the practitioner’s professional responsibility,\n as is their adherence to scope of practice.\n

\n
\n
\n\n \n\n
\n\n
\n
\n\n
\n","import { Component, Inject, OnInit } from '@angular/core';\n\n@Component({\n templateUrl: './help.component.html',\n styleUrls: ['./help.component.scss']\n})\nexport class HelpComponent implements OnInit {\n public vidSourceIntro = 'https://videos.abmp.com/public/pocketpatho-Long-Intro/Default/HLS/pocketpatho-Long-Intro.m3u8';\n\n constructor() {\n }\n\n public ngOnInit(): void {\n }\n\n}\n","
\n\n
\n\n
\n
\n\n
\n
\n\n

Help

\n

Watch a quick demo of the program.

\n\n
\n \n
\n\n

Have an ABMP Pocket Pathology question?\n Send your comments to PocketContent@abmp.com \n

\n\n\n \n\n\n
\n
\n\n
\n
\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { FormGroup, FormControl, Validators } from '@angular/forms';\nimport { Subject } from 'rxjs';\nimport { UserService } from 'src/app/services/user.service';\nimport { Router } from '@angular/router';\nimport { SubSink } from 'subsink';\nimport { tokenGetter } from '../../../services/tokenGetter';\n\n@Component({\n selector: 'app-login-form',\n templateUrl: './login-form.component.html',\n styleUrls: ['./login-form.component.scss']\n})\nexport class LoginFormComponent implements OnInit, OnDestroy {\n\n public form: FormGroup;\n public username: FormControl;\n public password: FormControl;\n\n public Busy$: Subject = new Subject();\n public Error$: Subject = new Subject();\n\n private sink: SubSink = new SubSink();\n\n constructor(\n private userService: UserService,\n private router: Router) {\n }\n\n public ngOnInit(): void {\n this.Busy$.next(false);\n\n this.username = new FormControl(null, [ Validators.required, Validators.email ]);\n this.password = new FormControl(null, [ Validators.required ]);\n\n this.form = new FormGroup({\n username: this.username,\n password: this.password,\n });\n }\n\n public ngOnDestroy(): void {\n this.sink.unsubscribe();\n }\n\n public Submit(): void {\n if (this.form.valid) {\n this.Busy$.next(true);\n\n this.sink.sink = this.userService.Login(this.username.value, this.password.value).subscribe({\n next: user => {\n this.sink.unsubscribe();\n // Redirect handled by parent component\n },\n error: error => {\n this.sink.unsubscribe();\n this.Error$.next(error);\n this.Busy$.next(false);\n }\n });\n }\n }\n\n}\n","
\n

ABMP Account Login

\n\n
\n\n \n

\n
\n\n
\n \n \n

Email address or ABMP username

\n \n

\n Email is required and must be a valid email address.\n

\n
\n
\n\n
\n \n \n

Your ABMP account password

\n \n

\n Password is required\n

\n
\n
\n\n
\n \n
\n\n
\n
\n","import { Component, OnInit, OnDestroy } from '@angular/core';\nimport { Router } from '@angular/router';\n\nimport { UserService } from '../../services/user.service';\nimport { SubSink } from 'subsink';\nimport { User } from '../../models/user.model';\n\n@Component({\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.scss']\n})\nexport class LoginComponent implements OnInit, OnDestroy {\n\n private subsink: SubSink = new SubSink();\n\n constructor(\n private userService: UserService,\n private router: Router) {\n }\n\n public ngOnInit(): void {\n this.subsink.sink = this.userService.UserState$.subscribe(user => {\n if (user instanceof User) {\n if (user.fromCache === false) {\n this.router.navigate(['/']);\n }\n }\n });\n }\n\n public ngOnDestroy(): void {\n if (this.subsink) {\n this.subsink.unsubscribe();\n }\n }\n\n}\n","
\n
\n
\n\n \n\n
\n

Not an ABMP Member?

\n

Join Now

\n
\n\n
\n
\n
\n","import { Component, OnDestroy, OnInit, ViewChild } from '@angular/core';\nimport { Title } from '@angular/platform-browser';\nimport { ActivatedRoute } from '@angular/router';\nimport { faChevronDown, faChevronUp } from '@fortawesome/free-solid-svg-icons';\nimport { AccordionComponent } from 'ngx-bootstrap/accordion';\nimport { merge, Observable, Subject } from 'rxjs';\nimport { debounceTime, filter, tap } from 'rxjs/operators';\nimport { SubSink } from 'subsink';\n\nimport { Pathology } from '../../../models/pathology.model';\nimport { FavoritePathologyService } from '../../../services/favorite-pathology.service';\nimport { PathologyService } from '../../../services/pathology.service';\nimport { RecentPathologyService } from '../../../services/recent-pathology.service';\n\n@Component({\n templateUrl: './pathology-details.component.html',\n styleUrls: ['./pathology-details.component.scss']\n})\nexport class PathologyDetailsComponent implements OnInit, OnDestroy {\n\n public isFavPatho$: Observable;\n public Pathology$: Observable;\n public Favorite$: Subject;\n\n public faChevronDown = faChevronDown;\n public faChevronUp = faChevronUp;\n\n @ViewChild(AccordionComponent)\n public accordion: AccordionComponent;\n\n private subs = new SubSink();\n\n constructor(\n public pathologyService: PathologyService,\n private route: ActivatedRoute,\n public recentService: RecentPathologyService,\n private favoriteService: FavoritePathologyService,\n private title: Title\n ) {\n }\n\n public ngOnInit(): void {\n // also Need to redo the HTM template too - Definitely\n\n // Local subscriptions that get unsubscribed every time the route changes\n const subs = new SubSink();\n\n this.subs.sink = this.route.paramMap.subscribe(param => {\n subs.unsubscribe();\n\n if (this.accordion) {\n this.accordion.closeOtherPanels(null);\n }\n\n // get current nodeAlias from current url\n const alias = param.get('alias');\n\n // use New Service Not OLD- then search & Filter\n this.Pathology$ = this.pathologyService.GetSingle(alias).pipe(\n // Some Logging\n tap(patho => {\n console.log(patho);\n }),\n\n // Handler for empty patho node\n tap(patho => {\n if (patho === null || patho === undefined) {\n // TODO: Do something if the patho node is empty\n }\n }),\n\n // Filter out empty patho nodes from rest of logic\n filter(patho => patho !== null && patho !== undefined),\n\n // Set Page Title\n tap(patho => {\n this.title.setTitle(patho.title);\n }),\n\n // Create favorites observable\n tap(patho => {\n this.Favorite$ = new Subject();\n\n const favorite$ = this.favoriteService.Has$({\n nid: patho.nid,\n status: true\n });\n\n // Have the UI reflect change immediately\n this.isFavPatho$ = merge(favorite$, this.Favorite$);\n\n // Use debounce before subscribing to rate control the server updates\n subs.sink = this.Favorite$.pipe(debounceTime(500)).subscribe(status => {\n if (status) {\n this.favoriteService.Add({\n nid: patho.nid,\n status: true,\n alias: patho.alias,\n title: patho.title\n });\n } else {\n this.favoriteService.Remove({\n nid: patho.nid,\n status: false,\n alias: patho.alias,\n title: patho.title\n });\n }\n });\n }),\n\n // Log recent patho\n tap(patho => {\n this.recentService.Add({\n nid: patho.nid,\n status: true,\n alias: patho.alias,\n title: patho.title\n });\n }),\n\n ); // END .pipe()\n }); // END paramMap.subscribe()\n } // END ngOnInit()\n\n public ngOnDestroy(): void {\n this.subs.unsubscribe();\n }\n\n public ToggleFaveStar(status: boolean): void {\n if (this.Favorite$) {\n this.Favorite$.next(status);\n }\n }\n}\n","
\n
\n
\n

\n {{ Pathology.title }}\n

\n
\n\n
\n
\n
\n \n
\n
\n
\n
\n\n \n \n \n \n \n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { map, tap } from 'rxjs/operators';\nimport { Pathology } from 'src/app/models/pathology.model';\nimport { PathologyService } from 'src/app/services/pathology.service';\n\n@Component({\n templateUrl: './pathology-list.component.html',\n styleUrls: ['./pathology-list.component.scss']\n})\nexport class PathologyListComponent implements OnInit {\n\n public Pathologies$: Observable;\n\n private filter$: Subject = new BehaviorSubject(null);\n\n constructor(private pathologyService: PathologyService) { }\n\n public ngOnInit(): void {\n this.Pathologies$ = combineLatest([this.filter$, this.pathologyService.PathoNodes$]).pipe(\n map(([filter, nodes]) => {\n\n if (!filter || filter.length === 0) {\n return nodes;\n }\n\n return nodes.filter(node => filter.some(letter => node.title[0] === letter));\n }),\n tap(nodes => console.log(nodes.length))\n );\n }\n\n public filter(...param: string[]): void {\n this.filter$.next(param);\n }\n\n}\n","
\n
\n\n

Pathology List

\n\n
\n
\n \n
\n
\n\n \n
\n
\n","import { Component, OnInit, Output, EventEmitter } from '@angular/core';\nimport { BehaviorSubject, combineLatest, Observable, Subject } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { Pathology } from 'src/app/models/pathology.model';\nimport { PathologyService, PathologyTitleMatch } from 'src/app/services/pathology.service';\nimport { RecentPathology, RecentPathologyService } from 'src/app/services/recent-pathology.service';\n\n@Component({\n templateUrl: './pathology-search.component.html',\n styleUrls: ['./pathology-search.component.scss']\n})\nexport class PathologySearchComponent implements OnInit {\n\n public Pathologies$: Observable;\n public search$ = new BehaviorSubject<[string, boolean]>(null);\n\n constructor(\n private pathologyService: PathologyService\n ) {\n }\n\n public ngOnInit(): void {\n this.Pathologies$ = combineLatest([this.search$, this.pathologyService.PathoNodes$]).pipe(\n map(([search, nodes]) => {\n\n if (!search) {\n return [];\n }\n\n const [term, deep] = search;\n let keywords: string[];\n\n if (term === null || term.length < 2) {\n return [];\n }\n\n if (deep) {\n keywords = term.split(/[\\,\\s]+/).map(word => word.replace(/[^\\w\\d]/, ''));\n }\n\n return nodes.filter(node => {\n let match = PathologyTitleMatch(term, node);\n\n if (deep) {\n let keywordMatch = false;\n for (const word of keywords) {\n keywordMatch = node.keywords.some(item => item.toString().indexOf(word) !== -1);\n if (keywordMatch) {\n break;\n }\n }\n\n match = match || keywordMatch;\n }\n\n return match;\n });\n })\n );\n }\n\n}\n","
\n
\n

Search Pathologies

\n \n
\n
\n\n\n\n
\n
\n \n \n
0\" class=\"jumbotron\">\n

No pathologies found...

\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { RecentPathology, RecentPathologyService } from 'src/app/services/recent-pathology.service';\nimport { PathologyService } from 'src/app/services/pathology.service';\n\n@Component({\n templateUrl: './pathology.component.html',\n styleUrls: ['./pathology.component.scss']\n})\nexport class PathologyComponent implements OnInit {\n\n public recent: Observable;\n\n public Loading$: Observable;\n\n public ModalHasBeenShown: boolean = false;\n\n constructor(\n private pathologyService: PathologyService,\n private recentService: RecentPathologyService) {\n if (localStorage instanceof Storage) {\n const mhbs = localStorage.getItem('ModalHasBeenShown');\n if (mhbs) {\n try {\n this.ModalHasBeenShown = JSON.parse(mhbs);\n } catch {\n }\n }\n }\n }\n\n public ngOnInit(): void {\n this.recent = this.recentService.State$();\n this.Loading$ = this.pathologyService.PathoNodes$;\n }\n}\n","\n\n \n\n
\n
\n \n
\n
\n
\n\n\n
\n
\n
\n
\n
\n
\n
\n  \n Loading Pathologies...\n
\n
\n
\n
\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons';\nimport { Constantvars } from '../../../constantvars';\n\n@Component({\n selector: 'app-endangerment-sites',\n templateUrl: './endangerment-sites.component.html',\n styleUrls: ['./endangerment-sites.component.scss']\n})\nexport class EndangermentSitesComponent implements OnInit {\n\n public AppConstants: any;\n public faChevronLeft = faChevronLeft;\n public pgTitle: string;\n\n constructor() {\n this.AppConstants = Constantvars;\n this.pgTitle = 'Endangerment Sites You Need to Know';\n\n }\n\n ngOnInit() {\n }\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n\n

By Ruth Werner, author of A Massage Therapist’s Guide to Pathology

\n\n\n \n\n\n

Cautionary sites, or endangerments, are places where careless massage could damage some of the body’s most delicate tissues.

\n\n

This resource covers a basic list of cautionary sites, with two important caveats:

\n\n
    \n
  • Inappropriate and insensitive pressure can damage any kind of tissue—not just especially delicate ones;
  • \n
  • Good education and skill can allow us to work safely in areas that would otherwise be “off limits” to inexperienced practitioners. For instance, important work can be done in the axillary area, if we know how to avoid the brachial plexus and other vulnerable structures.
  • \n
\n\n\n

Generally speaking, we avoid causing injury at endangerment sites by using broad, flat, and light pressure in these areas—as opposed to more intrusive work that may injure or irritate delicate tissues. Identifying an area as an endangerment or cautionary site doesn’t mean it can’t be touched; it just has to be touched and incorporated into the massage with special care.

\n\n

We can classify cautionary sites by tissue type, or by location.

\n\n\n\n

Cautionary Sites by Tissue Type

\n
\n\n\n
Blood vessels
\n\n

These include the common carotid artery, the great saphenous vein, and others. Arteries generally run deeper than veins, and are less vulnerable to injury. However, an artery can be compressed anywhere that a pulse can be felt, and this must be avoided for more than a few moments at a time.

\n\n\n\n
Bony prominences
\n\n

These include the floating ribs, the xyphoid process, and others.

\n\n\n
Lymph nodes
\n\n

These include the cervical and axillary nodes and others. Lymph nodes are rarely an issue in massage therapy unless they are enlarged or painful, which may indicate an infection or other problem.

\n\n\n
Nerves
\n\n

These include the brachial plexus, the sciatic nerve, and others. Nerves are identified as possible endangerment sites in areas where they are easily compressed on other tissues.

\n\n\n
Organs
\n\n

These include the eyes, liver, kidneys, ovaries, and others.

\n\n\n

Cautionary Sites By Location

\n
\n\n
Head and face
\n\n
    \n
  • Eyes (watch for contact lenses too)
  • \n\n
  • Nerve pathways
  • \n\n
  • Mental, infraorbital, supraorbital foramina (trigeminal nerve)
  • \n\n
  • Anterior to mastoid process (facial nerve, trigeminal nerve, styloid of temporal bone)
  • \n\n
  • Occipital ridge (occipital nerve)
  • \n\n
\n\n\n\n
Anterior trunk and neck
\n\n
    \n\n
  • Anterior triangle of neck\n (defined by medial edges of the sternocleidomastoid muscles and the inferior aspect of the mandible)\n\n
      \n\n
    • Common carotid artery
    • \n\n
    • Jugular vein
    • \n\n
    • Hyoid bone
    • \n\n
    • Thyroid cartilage, larynx
    • \n\n
    • Trachea
    • \n\n
    • Thyroid gland
    • \n\n
    \n
  • \n\n\n
  • Posterior triangle of the neck (defined by lateral sternocleidomastoid, medial trapezius, and middle 1/3 of the clavicle)\n\n
      \n\n
    • Spinal accessory nerve
    • \n\n
    • Brachial plexus trunks
    • \n\n
    • External jugular
    • \n\n
    • Cervical lymph nodes
    • \n
    \n
  • \n\n\n
  • Notch between the lateral pectoralis major and medial deltoid, inferior to the clavicle\n\n
      \n
    • Brachial plexus
    • \n
    • Subclavian artery and vein
    • \n
    \n
  • \n\n
  • Abdomen\n\n
      \n\n
    • Xyphoid process (a fracture can damage the liver)
    • \n\n
    • Floating ribs
    • \n\n
    • Liver
    • \n\n
    • Spleen
    • \n\n
    • Colon
    • \n\n
    • Ovaries
    • \n
    \n
  • \n
\n\n
Posterior trunk
\n
    \n\n
  • Kidneys
  • \n\n
  • Spinous processes
  • \n\n
\n\n\n
Upper extremity
\n
    \n\n
  • Axilla\n\n
      \n\n
    • Brachial plexus, axillary nerve
    • \n\n
    • Axillary artery and vein
    • \n\n
    • Axillary lymph nodes
    • \n
    \n
  • \n\n\n
  • Posterior side of the upper arm\n
      \n\n
    • Radial nerve
    • \n
    \n
  • \n\n
  • Medial side of the upper arm\n
      \n\n
    • Cephalic and basilic veins
    • \n\n
    • Brachial plexus nerves (musculocutaneous, radial, median, ulnar nerves)
    • \n
    \n
  • \n\n
  • Cubital tunnel\n
      \n\n
    • Ulnar nerve
    • \n
    \n
  • \n\n
  • Carpal tunnel\n
      \n\n
    • Median nerve
    • \n
    \n\n
  • \n
\n\n\n
Lower extremity
\n
    \n\n
  • Femoral triangle\n
      \n\n
    • Femoral nerve
    • \n\n
    • Femoral artery and vein
    • \n\n
    • Inguinal lymph nodes
    • \n
    \n\n
  • \n\n
  • Sciatic notch\n
      \n\n
    • Sciatic nerve
    • \n
    \n
  • \n\n
  • Popliteal fossa\n
      \n\n
    • Common fibular nerve
    • \n\n
    • Popliteal artery and vein
    • \n\n
    • Tibial nerve
    • \n
    \n\n
  • \n\n
  • Medial lower leg\n
      \n\n
    • Great saphenous vein
    • \n\n
    • Tarsal tunnel (tibial nerve, and tibial artery and vein)
    • \n
    \n
  • \n\n
  • Posterior lower leg\n
      \n\n
    • Small saphenous vein
    • \n
    \n
  • \n\n
  • Lateral lower leg\n
      \n\n
    • Common peroneal nerve
    • \n
    \n
  • \n\n
\n\n\n
\n
\n\n
\n\n
\n","import { Component, OnInit } from '@angular/core';\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons';\nimport { Constantvars } from '../../../constantvars';\n\n@Component({\n selector: 'app-hygiene-protocols',\n templateUrl: './hygiene-protocols.component.html',\n styleUrls: ['./hygiene-protocols.component.scss']\n})\nexport class HygieneProtocolsComponent implements OnInit {\n\n public AppConstants: any;\n public faChevronLeft = faChevronLeft;\n public pgTitle: string;\n\n constructor() {\n this.AppConstants = Constantvars;\n this.pgTitle = 'Hygienic Guidelines for Your Practice';\n }\n\n ngOnInit() {\n }\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n

By Ruth Werner, author of A Massage Therapist’s Guide to Pathology

\n\n \n\n \n\n

No matter whether you work at\n home, in a spa, or in a hospital, strict hygienic procedures are a central component of a safe\n and professional practice. The hygienic practice guidelines provided here are drawn from the Centers for Disease Control\n and Prevention (CDC), the World Health Organization, and other resources for health-care\n professionals in hospital, dental, and home-care settings. Individual states may also have\n specific guidelines for massage therapists. Some practitioners may balk at the stringency of\n these guidelines, but as massage therapy becomes more integrated with other forms of health care,\n the risks of insufficient hygienic practices become more serious.

\n\n
A Standard Precautions Reminder
\n\n

Standard precautions are a set of protocols that create some uniformity in how medical professionals limit\n contact with infectious agents in the working environment. They evolved from the “universal precautions”\n protocols developed by the CDC in 1987 to limit the risk of infection related specifically to blood.\n Standard precautions include guidelines on how to avoid exposure to all potentially infectious body fluids,\n as well as airborne pathogens when possible. The following fluids are specifically listed as potentially\n infectious: semen, vaginal secretions, breast milk, cerebrospinal fluid, synovial fluid, pleural fluid,\n pericardial fluid, amniotic fluid, blood, and blood-tinged saliva. Sweat is not usually described as a\n potentially infectious fluid, but in some circumstances, it can carry some potentially dangerous bacteria.\n Visit www.cdc.gov for a list of current standard precautions protocols.

\n\n\n
Don’t Dismiss Your Hand Washing
\n\n

After extensive research comparing the benefits and risks of frequent hand washing with plain soap and water, antimicrobial soap, and alcohol-based gels, well-accepted recommendations for normal use and for health-care workers have been developed. Running warm water (not hot water, which raises the risk of skin irritation) plus plain soap for 30 seconds with all rings, bracelets, and watches removed is adequate for most everyday use. Special focus must be given to the fingernails and cuticles, where pathogens may not be removed without specific attention. Long sleeves are not recommended for health-care providers, because they can carry pathogens that cannot be removed with hand washing.

\n\n\n
The Best Way to Clean Hands
\n\n

Washing with warm, running water and plain soap is always recommended to remove any visible or palpable dirt or fluids. It is preferable to dispense soap in liquid form, because bacteria can colonize bar soap. Rinsing so that water runs from the hands down the fingers and into the sink is preferable, so contaminated water does not run up toward the elbow.

\n\n

Using alcohol-based gel or foam according to manufacturers’ directions (which means using the amount prescribed and rubbing until the skin is dry) is often faster and more convenient than washing with soap and water. This is an effective antibacterial and antiviral mechanism, but it does not remove dirt, oil, or lotion from previous clients, and it is not effective against spore-forming bacteria. Hand cleaning with alcohol gel or foam is often recommended in medical settings where a trip to the sink for a full soap-and-water treatment is not feasible. Alcohol-soaked towelettes are specifically not recommended because their alcohol concentration isn’t high enough to be effective.

\n\n

Washing hands with water and antimicrobial soap is effective, but carries a higher risk for negative reactions in the form of allergies or contact dermatitis than washing with plain soap. No evidence supports the theory that antibacterial soap provides significant benefits compared to plain soap, but scientists have found that some common bacteria have developed resistance to triclosan, the substance used to limit bacterial activity in antimicrobial soaps.

\n\n\n
Other Hand Care
\n\n

In addition to keeping hands and nails clean, massage therapists must be vigilant about the risk of open lesions. Hangnails that peel and fray can become portals of entry for serious infections. Hangnails must be kept short and controlled; a good pair of cuticle scissors and appropriate lotion can help with this.

\n\n

Any other open lesions on the hands must be covered during a massage. This can be done with a simple bandage—if it is in a place that doesn’t come in direct contact with a client and is changed with each session. All other lesions on the hands must be covered with a nitrile glove that is replaced with each client, and each time it contacts a potential fomite such as a doorknob, light switch, or volume button.

\n\n

Fingernails must be kept short, of course. In addition to the risk of damaging our clients’ skin, scrapings from the fingernails of health-care workers have been cultured to reveal large colonies of pathogens. Imagine getting a massage from someone with long nails, knowing what might be growing under there. How relaxing—or safe—would that be?

\n\n\n
Care of Surfaces and Equipment
\n\n

The goal in a massage therapy workspace is to create an environment where nothing that one client touches directly or indirectly is touched by another client before it is cleaned. This means isolating table linens and other fabrics, and cleaning massage furniture, massage tools, lubricant dispensers, and any other items that might come into use during a session.

\n\n

Fabrics

\n\n

The fabrics that clients directly contact include linens on the massage table, face cradle covers, bolster and pillow covers, and the therapist’s clothing. Any fabric item that a client contacts should be laundered before another client touches it. Similarly, any item that a massage therapist touches during a session with one client should be cleaned or re-covered before it is used again.

\n\n

Therapists have some choices about their own clothing. Some wear aprons that can be changed with every appointment; this is appropriate as long as the client does not directly contact other articles of clothing. It is also possible to own several uniform shirts that can be changed between sessions. Aprons, uniform shirts, and other clothing items can be laundered with linens.

\n\n

Here are some important factors regarding laundry protocols:

\n\n
    \n\n
  • Professional laundering services use water that is 160°F (71.1°C) or above, with a minimum of 25 minutes of agitation to reduce microbial populations.
  • \n\n
  • Good antimicrobial effect is found with temperatures from 71°F to 77°F (21.6°C–25°C), if the detergent is span and used according to manufacturers’ directions.
  • \n\n
  • If bleach is added to the wash, it becomes most active at temperatures above 135°F (62.7°C). Most home water heaters heat water to 120°F–140°F (48.4°C–60°C), so bleach in the washing machine may not reach its full potential. The recommended amount of bleach is a ratio of 50–150 ppm (parts per million).
  • \n\n
  • Bleached laundry must be thoroughly rinsed to minimize irritation to users.
  • \n\n
  • Laundry must not be left damp for more than two hours.
  • \n\n
  • All laundry should be dried on high heat (160°F, 71.1°C). Ironing adds extra antimicrobial action, but this is probably not a practical suggestion for most massage therapists.
  • \n\n
  • Clean laundry must be packaged to keep it clean until its next use. It could be wrapped in plastic or stored in a closed, freshly disinfected container.
  • \n\n
\n\n

Other fabric items include mattress pads, bolsters, pillows, blankets, and heating pad covers. Any of these should be laundered if a client touched it directly, but if the contact was through some other covering (for example, a mattress pad that is covered by a nonpermeable barrier), then laundering for every session is unnecessary. The exception to this rule is when there are signs of contamination (bleeding or other fluid seepage) that may penetrate through protective layers of fabric. If not soiled, the protocol for these items that are not directly touched by clients is to wash them once a week.

\n\n\n
Other Equipment
\n\n

Massage tables and chairs must be cleaned with disinfectant between clients. This is especially important for face cradles, of course. The cleaning product should be at least an intermediate-level disinfectant. The CDC recommends a 10 percent bleach solution for high-touch surfaces; this is inexpensive and easily available. It is important to mix fresh solution frequently, however, as bleach solutions lose potency if they are not used promptly and if they are stored in translucent bottles. Bleach-infused wipes can be useful in this application, but it is important to read the labels for best results: Some of them require several minutes of exposure to be effective. Alcohol is specifically not recommended for cleaning surfaces because it evaporates too quickly; it works best with prolonged contact against targeted pathogens.

\n\n

Massage lubricants must be kept free from the risk of cross-contamination. Lubricants that are solid at room temperature (for example, beeswax, coconut oil) must be dispensed into individual containers and leftovers discarded so that double dipping never occurs. Liquid lubricants must be dispensed in bottles that are washed between every session. Bottles should be kept away from possibly contaminated surfaces, such as desktops or the floor.

\n\n

Hot or cold rocks and crystals may be the only massage tools that lend themselves to full sterilization, but disinfection is sufficient. Items that are not disposable, such as massage tools and hot and cold packs, must have their contacting surfaces disinfected every time they are used.

\n\n\n
The Massage Environment
\n\n

Research indicates that fabrics such as curtains, carpeting, and upholstery are not significant sites of transmission for infectious agents, but they may harbor pet hair or dander that could cause an allergic reaction. For this reason, upholstery and carpets should be vacuumed frequently. Vinyl or leather upholstery can be cleaned with disinfectant. Any carpeting that gets wet can harbor bacteria and fungi; it should be replaced if it isn’t completely dry within a few hours. Hard floors should be washed regularly with detergent, but no particular benefit has been found in washing frequently with high-level disinfectants.

\n\n

Other surfaces that clients and therapists contact should also be cleaned frequently. These include doorknobs, bathroom fixtures, light switch plates, telephones, and coat racks or hooks. If a therapist uses a computer in the office, the keyboard may provide a rich growth medium for pathogens. This can be mitigated with antiseptic-soaked towelettes or keyboard covers that can be washed in the sink. Also, cash is not called “filthy lucre” for nothing; it is typically handled by numerous dirty hands and is an excellent vector for communicable diseases. Credit cards may be considered in this light as well.

\n\n

The guidelines suggested here may seem alarmist, but they are well within recommendations for health-care settings. As more people seek massage, and as new and spaner forms of pathogens develop, it is becoming increasingly important for massage therapists in any setting to create the most professional and safest environment possible.

\n\n

Adapted from A Massage\n Therapist’s Guide to Pathology, 2019, Books of Discovery, and  \"Hygiene Fact and Fiction,\" Massage & Bodywork,\n by Ruth Werner\n

\n\n\n
\n
\n\n
\n\n
\n","import { Component, OnInit } from '@angular/core';\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons';\nimport { Constantvars } from '../../../constantvars';\n\n@Component({\n selector: 'app-massage-and-cancer',\n templateUrl: './massage-and-cancer.component.html',\n styleUrls: ['./massage-and-cancer.component.scss']\n})\nexport class MassageAndCancerComponent implements OnInit {\n\n public AppConstants: any;\n public faChevronLeft = faChevronLeft;\n public pgTitle: string;\n\n constructor() {\n this.AppConstants = Constantvars;\n this.pgTitle = 'Massage Therapy for People with Cancer';\n }\n\n ngOnInit() {\n }\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n

By Ruth Werner, author of A Massage Therapist’s Guide to Pathology

\n\n \n\n\n \n\n\n

A long-held tradition in massage therapy education is that some types of rigorous bodywork carry the risk of aiding metastasis by boosting blood and lymphatic flow. However, current research does not support this theory. Therefore, it is far-fetched to propose that a 60-minute massage could contribute to that process any more significantly than a brisk walk around the block or a long hot shower. Nonetheless, it is obviously inappropriate to manipulate a diagnosed tumor or any undiagnosed swelling or thickening of tissue.

\n\n

Massage therapy for persons undergoing cancer treatment has a vital and useful role. Symptoms of cancer and cancer treatment that are common in most patients include pain, anxiety, nausea, fatigue, and depression. All of these can be mitigated with appropriate massage therapy. Constipation, altered body image, and poor sleep are other common problems that can be improved with massage therapy or bodywork. Manual therapies in various forms are being researched in all of these contexts. This body of knowledge is in constant flux, and new findings will continue to influence the role of massage therapy in cancer care.

\n\n

The benefits of massage therapy are well accepted by medical professionals, and highly valued by patients. Perhaps most important of all possible benefits, massage therapy answers a basic human need: compassionate, caring, informed touch offered at a time when many cancer patients feel isolated, anxious, and dehumanized.

\n\n

It is important to bear in mind that the complications associated with cancer and various cancer treatments can have serious implications for the choice of bodywork modalities, especially when multiple treatments are employed. One way to clarify choices about massage for cancer patients is to determine whether certain risks are brought about by the cancer itself or by cancer treatment.

\n\n\n\n
Massage Therapy Risks Related to Cancer
\n\n\n
    \n
  • Tumor sites. Do not let massage disrupt any site where tumors or undiagnosed lesions are located close to the surface of the body. Similarly, a person with any kind of pelvic or abdominal cancer is not a good candidate for direct or deep abdominal techniques.
  • \n
  • Bone involvement. When cancer metastasizes to bones, they can become brittle and unstable. This can make a person vulnerable to fractures. Bones are a common site of metastasis, especially the vertebrae, ribs, and pelvis. The risk of bony involvement is difficult to overstate, especially for some cancer types; this must be rigorously screened.
  • \n
  • Vital organ involvement. A client who has cancer or metastasis in a vital organ (this includes the lungs, liver, brain, kidneys, and heart) may have compromised function of any of those organs. This risk must be evaluated to predict if, or how well, the patient may be able to adapt to bodywork. Accommodations might include changing positions to allow easier breathing, taking care with pressure if blood clotting is an issue, and adding help to get on and off the table if any risk of falling is present.
  • \n
  • Deep vein thrombosis. A potential complication of both cancer and cancer treatment, the risk of deep vein thrombosis is a red flag for massage. This risk may persist for up to six months after treatment is concluded.
  • \n
\n\n\n
Massage Therapy Risks Related to Cancer Treatment
\n\n

Cancer treatment is often aggressive and involves side effects that can seem more extreme or even hazardous than the cancer itself. It is crucial for massage therapists working with this population to be well informed about making appropriate adaptations. Among the most common side effects that can develop with a variety of cancer treatments are low white blood cell count (which reduces resistance to infection), low platelet count (leading to easy bruising and bleeding), and factors that contribute to the risk of venous thromboembolism.

\n\n\n\n
    \n\n
  • Surgical complications. Several complications of cancer surgery can have implications for massage. Postsurgical infection obviously contraindicates massage until the client is out of danger. Constipation is a frequent postsurgical complaint, but intrusive abdominal massage may be inappropriate, depending on the cancer site. Any constipation related to an intestinal obstruction or abdominal tumor contraindicates massage. Experts suggest waiting at least six weeks after radiation to the abdomen to do any work here. In the absence of these cautions, gentle work to the abdomen can give significant relief to patients who are constipated. Medical devices may be present after surgery, including ports, peripherally inserted central catheters (PICC lines), drains, or ostomies. Inguinal catheters in particular increase clotting risk. Devices should be locally avoided, and the client must be positioned in ways that minimize the risk of their disruption.
  • \n\n
  • Edema. Edema is the accumulation of fluid in the interstitial spaces, often because of trauma or venous insufficiency. Edema in the context of cancer can accumulate where normal blood and lymphatic circulation is obstructed because of scarring. Persistent edema can become thick and pitted, but it can be successfully treated if obstructions are addressed.
  • \n\n
  • Lymphedema. Lymphedema is the accumulation of protein-rich fluid in interstitial spaces as a result of lymphatic system dysfunction. (This distinguishes it from simple edema, described above.) In lymphedema, the chemistry of interstitial fluid is such that when it doesn’t flow freely into nearby lymphatic vessels, it attracts water. In this way, a minor level of fluid retention can become a significant problem in a short period. The swelling with lymphedema can be relatively mild or very extreme. Lymphedema can develop because cancer cells block or damage lymph nodes, or because cancer treatments (specifically surgery or radiation) interfere with lymphatic system function. Massage therapists with special training can help to treat lymphedema, but uneducated touch here can make a bad situation much worse. For a client with a history of lymphedema, only the lightest touch or holding, for anywhere within the affected quadrant of the body, is appropriate—unless the practitioner has specialized skills. Various kinds of manual therapies have been developed to address lymphedema, and they employ extensive knowledge of the anatomy and physiology of the lymphatic system to maximize benefits while minimizing risks.
  • \n\n
  • Radiation side effects. Radiation can create several problems. When it is applied by an external machine, the skin at the entry and exit sites may become thin, red, blistered, and irritated. If radioactive pellets have been implanted, the patient is typically told to avoid contact with others until the pellets have been removed or the radiation has lost its potency. Radiation can irritate the gastrointestinal tract, leading to nausea, vomiting, and diarrhea; this calls for our best soothing massage—with the caveat that we don’t treat the abdomen directly until radiation is complete and the tissue is healing. Bone marrow suppression can lead to anemia, fatigue, poor clotting capacity, and susceptibility to infection. Irradiated lymph nodes can be damaged, leading to a risk of lymphedema. Finally, externally or internally applied radiation can cause fatigue that is extreme enough to interfere with fulfilling a treatment series.
  • \n\n
  • Chemotherapy side effects. Chemotherapeutic drugs may be administered topically, orally, or through intravenous drips. They often suppress bone marrow activity and may lead to anemia, an elevated risk of infection, and clotting problems. Anemia causes fatigue and feeling cold; massage therapy needs to accommodate for these side effects. Low platelet counts call for accommodations to avoid inadvertent capillary injury and bruising. Gastrointestinal tract irritation, mouth sores, hand-foot syndrome (redness, irritation, pain, and blistering of the palms and soles), and hair loss are other side effects of drugs that kill fast-growing cells. Other complications of chemotherapy include neuropathy, constipation, skin rashes, and mood changes. Some of these are so serious that they may impact patients’ ability to finish treatment (and therefore their chances of survival). Massage therapy may help to address fatigue and neuropathy to improve treatment tolerance and make chemotherapy less taxing. Some varieties of chemotherapy are eliminated through the skin. It may not be appropriate for a patient to be extensively touched skin-to-skin during this process, but gloves can be used. In many hospital settings, the risk of infection among immune-compromised patients is considered to be so high that using gloves is a standard protocol regardless of chemotherapy type.
  • \n\n
  • Other complications of treatment. Other cancer treatments may also hold cautions for massage. Hormone treatments may increase the risk of blood clots, targeted therapies may cause fatigue and flulike symptoms, cryotherapy can leave irritated areas on the skin, and so on. No matter what kind of cancer or cancer treatments a person is going through, it is vital for massage therapists to communicate with the rest of the health-care team to provide the best benefits that bodywork has to offer with minimal risks.
  • \n\n
\n\n\n
Massage Therapy Benefits for Cancer Patients
\n\n

For generations, massage therapists were taught that cancer and massage therapy were incompatible because the risks of spreading the disease outweighed any possible benefit. In the 1990s some brave researchers challenged that conventional wisdom, by investigating whether massage therapy might have any benefits to safely offer this population—and more research on this topic accumulates every year. While the results of the studies have some variations, findings suggest that expertly performed massage for cancer patients can do the following:

\n\n\n
    \n\n
  • Improve sleep
  • \n\n
  • Increase appetite
  • \n\n
  • Relieve constipation
  • \n\n
  • Improve mood
  • \n\n
  • Reduce anxiety
  • \n\n
  • Decrease depression
  • \n\n
  • Alleviate pain
  • \n
\n\n\n

Most of these benefits have been explored in the context of immediate treatment-related challenges such as fatigue, nausea, and anxiety. However, massage therapy can also be helpful for cancer patients who have completed treatment, but who live with long-term consequences. Skilled bodywork practitioners may be able to help with many rehabilitation challenges. Manual therapies can address tissue damage related to radiation burns, and it can improve range of motion restrictions and pain related to post-surgical scarring. Axillary cording or axillary web syndrome, a common complication of breast cancer treatment, can be successfully addressed with skilled massage therapy. Skilled practitioners can also address lymphedema to reduce swelling and pain.

\n\n

However, all of this must happen in the context of carefully thought out and applied appropriate accommodations, including decisions about the timing and duration of sessions; positioning and bolstering; depth, location, and pacing of strokes; even the temperature of the room. All of these decisions must be informed by the client’s challenges and goals; their type of cancer and treatment process; and input from their oncologist and other health care providers.

\n\n

In short, oncology massage therapy is a complex undertaking that requires advanced education.

\n\n

Such training will provide specific guidance on gathering relevant information, anticipating appropriate bodywork modifications, and doing the critical thinking necessary to make the best choices for clients who are also cancer patients.

\n\n

This article was adapted from A Massage Therapist’s Guide to Pathology by Ruth Werner.

\n\n\n
\n
\n\n
\n\n
\n","import { Component, OnInit } from '@angular/core';\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons';\nimport { Constantvars } from '../../../constantvars';\n\n@Component({\n selector: 'app-what-to-do-emergency',\n templateUrl: './what-to-do-emergency.component.html',\n styleUrls: ['./what-to-do-emergency.component.scss']\n})\nexport class WhatToDoEmergencyComponent implements OnInit {\n public AppConstants: any;\n public faChevronLeft = faChevronLeft;\n public pgTitle: string;\n\n constructor() {\n this.AppConstants = Constantvars;\n this.pgTitle = 'What To Do In An Emergency';\n }\n\n ngOnInit() {\n }\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n\n \n\n

Medical emergencies in massage settings are relatively rare, but they do happen, and we need to be prepared beforehand. Here is a short list of medical emergencies that may arise in a massage practice, with recommendations for how to respond.

\n\n\n

Emergency Basics

\n\n

It is very helpful to have an emergency contact for each of your clients. Make sure you have a spot for this on your client health intake forms.

\n\n

If your clients have chronic conditions like asthma, diabetes, or epilepsy, ask them how they would like you to handle related emergencies beforehand, and document this in their charts.

\n\n

Check your first aid kit regularly to be sure it is fully stocked.

\n\n

If you do need to call 911, spend the time while you’re waiting to gather as much information as you can about your client’s situation: were there any changes in their medication, have they eaten recently, what else might have made today different from other days?

\n\n

Also, post your local non-emergency dispatch number (this is easily found online) by your office phone, or enter it into your cellphone for quick access.

\n\n

Specific Cautions

\n\n\n
Hypotension and Faintness
\n\n

If the client feels faint or dizzy during or after their session, invite them to sit up and rest and have a drink of water, tea, or juice until they feel better. If they are not recovered within a few minutes, ask them how they would like you to proceed: to call their emergency contact, or get them a ride to the hospital—via rideshare or ambulance. If they are confused, disoriented, or nonresponsive, do both: call 911 and their emergency contact.

\n\n\n
Hypoglycemia
\n\n

People whose blood sugar is unstable may find that massage triggers a sudden drop, leaving them dizzy, faint, sweaty, and headachy. In severe situations they may become unresponsive and “checked out.”  This is why it’s a good idea to establish the client’s preferred method to deal with hypoglycemic episodes beforehand. They may have sugar tablets with them. Otherwise, juice, sugared soda, or milk can be given—with care to make sure they don’t choke. When they are stabilized, they can decide what to do next—whether they need to go to the doctor, or go on with their day.

\n\n\n
Seizure
\n\n

Seizures can take many forms. Some are so subtle they’re barely noticeable, while others involve whole-body contractions and a risk of injury. If a client has a seizure that involves some involuntary contractions but not violent thrashing, then the best recourse is to stay nearby and help them reorient when the seizure has passed. If this recovery period is relatively quick, ask them if they’d like to continue with the massage, or if they’d like to come back another day.

\n\n

On the other hand, a large-scale tonic-clonic seizure can involve rigidity alternating with uncontrolled contractions of muscles in the trunk, arms, and legs. The person will lose consciousness, and may lose control of their bladder. The highest priority for this situation is to keep the client safe. If you can do it safely, help them onto the floor as quickly as possible, then clear away any objects that they might contact. Stay with them, but don’t try to hold them down, or put anything in their mouth. Try to roll them onto their side, and put something soft under their head. Time the seizure, and when they regain consciousness, ask if they would like you to call their emergency contact or a rideshare to get them home safely.

\n\n

Regardless of the type of seizure, if the post-seizure recovery period lasts longer than 15 minutes, call 911.

\n\n

The CDC also recommends calling 911 if any of these things are true:

\n\n
    \n
  • The person has never had a seizure before.
  • \n
  • The person has difficulty breathing or waking after the seizure.
  • \n
  • The seizure lasts longer than 5 minutes.
  • \n
  • The person has another seizure soon after the first one.
  • \n
  • The person is hurt during the seizure.
  • \n
  • The seizure happens in water.
  • \n
  • The person has a health condition like diabetes, heart disease, or is pregnant.
  • \n
\n\n\n
Slip and Falls  
\n\n

The best response to these cases depends on the nature of the accident. If the client is unconscious, call 911 immediately. But if the injury is less severe but still needs medical care, offer to call their emergency contact or rideshare to take them to the hospital. For smaller accidents, use your first aid kit appropriately, and carefully document everything that happens.

\n\n
    \n
  • If a client who uses blood thinners has a fall, it is especially important to watch for the possibility that they hit their head. Even mild bumps of this kind can be dangerous, and always warrant calling 911.
  • \n
  • Make sure to call your insurance provider after this type of incident in case any issues arise.
  • \n
\n\n\n
Headache with SNOOP signs
\n\n

Most headaches are not cause for alarm, but some of them signal a dangerous situation. The SNOOP signs of a medical emergency connected to headaches are these:

\n\n
    \n
  • S: Systemic symptoms, including fever, muscle pain, weight loss
  • \n
  • N: Neurological signs or symptoms, including changes in cognition, loss of sensation, or weakness
  • \n
  • O: Onset—a fast onset (a “thunderclap headache”) can be a sign of stroke; a slow onset that gets progressively worse without respite is also a dangerous sign
  • \n
  • O: Older age—dangerous headaches are most common in people over 50 years old
  • \n
  • P: Prior headache history—if a current headache is severe and unlike any previous experiences it should be reported to a physician
  • \n
\n\n\n
Trouble Breathing
\n\n

Shortness of breath may develop for many reasons, but always requires attention. An asthmatic episode may be controlled with an inhaler, but other factors--- like a sudden onset of an allergic reactions that blocks the throat—may require an EpiPen or medical attention.  

\n\n\n
Stroke with FAST signs
\n\n

The FAST mnemonic was developed to help medical personnel identify signs of stroke quickly and accurately. The prognosis for stroke recovery depends on how quickly treatment is given, so this is an important safety precaution. FAST stands for…

\n\n
    \n
  • F: Facial drooping on one side
  • \n
  • A: Arm weakness
  • \n
  • S: Speech difficulties with understanding or speaking
  • \n
  • T: Time to call emergency services
  • \n
\n\n

Other signs of stroke include asymmetric pupils, thunderclap headache, and disorientation.

\n\n\n
Signs of Heart Attack
\n\n

It is unlikely that a person will have a heart attack in a massage setting, but we should be prepared, because early intervention leads to better recovery for patients. Signs and symptoms of heart attack typically include crushing chest pain that may spread to include arms, neck, and back; a sense of impending doom; nausea and heartburn; cold sweat; fatigue; and lightheadedness.

\n\n
    \n
  • Women often have a different symptomatic profile; they are less likely to have chest pain, and more likely to have abdominal pain, nausea, and shortness of breath.
  • \n
  • A client with these symptoms should get to a hospital without delay.
  • \n
\n\n\n
Your Role as a Health-Care Provider
\n\n

Other possible emergency situations may arise, including:

\n\n
    \n
  • You believe your client is in imminent danger of harming themselves or others
  • \n\n
  • You believe your client is the target of domestic violence
  • \n\n
  • You believe your client is self-harming
  • \n\n
  • Your client is a juvenile and you believe they are not safe at home
  • \n
\n\n

If you have reason to believe that a person is violent, has a weapon,\n and is a threat to themselves or others, then calling 911 is appropriate. However, if you believe the threat is less immediate but still important (e.g., your client shares suicidal thoughts and you believe she intends to harm herself soon), then it is appropriate to call your local non-emergency dispatch number. They will be able to provide you with referrals for appropriate professionals who can help.

\n\n
\n
\n
\n
\n","import { animate, style, transition, trigger } from '@angular/animations';\nimport { Component, OnDestroy, OnInit } from '@angular/core';\nimport { ActivatedRoute } from '@angular/router';\nimport { faTimes } from '@fortawesome/free-solid-svg-icons';\nimport { Observable } from 'rxjs';\nimport { map } from 'rxjs/operators';\nimport { SubSink } from 'subsink';\n\nimport { FavoritePathologyService } from '../../services/favorite-pathology.service';\nimport { RecentPathologyService } from '../../services/recent-pathology.service';\nimport { ISavedPathology } from '../../services/saved-patho.service';\n\n@Component({\n templateUrl: './saved-pathology.component.html',\n styleUrls: ['./saved-pathology.component.scss'],\n animations: [\n trigger('pathology', [\n transition(':leave', [\n animate('.3s', style({ opacity: 0}))\n ])\n ])\n ]\n})\nexport class SavedPathologyComponent implements OnInit, OnDestroy {\n\n public Pathology$: Observable;\n public Type: 'favorite' | 'recent';\n\n public faTimes = faTimes;\n\n private sink: SubSink = new SubSink();\n\n constructor(\n private recent: RecentPathologyService,\n private favorite: FavoritePathologyService,\n private route: ActivatedRoute) {\n }\n\n public ngOnInit(): void {\n this.sink.sink = this.route.data.subscribe(data => {\n this.Type = data.type;\n this.Pathology$ = this[this.Type].Sorted$().pipe(\n map(pathologies => {\n const results = pathologies.filter(pathology => pathology.status );\n console.log('results', results);\n return (this.Type === 'recent') ? results.slice(0, 20) : results;\n })\n );\n });\n }\n\n public ngOnDestroy(): void {\n this.sink.unsubscribe();\n }\n\n public Remove(item: ISavedPathology): void {\n this[this.Type].Remove(item);\n }\n\n public Clear(): void {\n this[this.Type].Clear().subscribe();\n }\n\n public trackBy(index: number, item: ISavedPathology) {\n return item.nid;\n }\n\n}\n","
\n\n
\n\n
\n
\n

{{ Type === 'favorite' ? 'Saved Pathologies' : 'Recent Pathologies' }}

\n\n
0\" class=\"rowTest clearfix\">\n \n
\n\n
\n\n \n
\n\n\n
\n
\n\n
\n\n
\n","import { Component, OnInit } from '@angular/core';\nimport { AccordionComponent } from 'ngx-bootstrap/accordion';\nimport { DeviceDetectorService } from 'ngx-device-detector';\nimport { Constantvars } from '../../constantvars';\nimport { PreviousRouteService } from '../../services/previous-route.service';\n\nimport {\n faChevronDown,\n faChevronUp,\n faPlay,\n faPlayCircle,\n} from '@fortawesome/free-solid-svg-icons';\n@Component({\n selector: 'app-videos-and-resources',\n templateUrl: './videos-and-resources.component.html',\n styleUrls: ['./videos-and-resources.component.scss']\n})\nexport class VideosAndResourcesComponent implements OnInit {\n\n public faChevronDown = faChevronDown;\n public faChevronUp = faChevronUp;\n public faPlayCircle = faPlayCircle;\n public faPlay = faPlay;\n\n public AppConstants: any;\n public pgTitle: string;\n public popaImgs: string;\n public prevURL: string;\n isAccordOpen: boolean = true;\n\n constructor(\n private dd: DeviceDetectorService,\n private previousRouteService: PreviousRouteService\n ) {\n this.AppConstants = Constantvars;\n this.popaImgs = Constantvars.popaImgs;\n this.pgTitle = 'Videos, Forms, and Resources';\n }\n\n\n ngOnInit() {\n this.prevURL = this.previousRouteService.getPreviousUrl()\n\n const device = this.dd.getDeviceInfo();\n if (this.dd.isMobile()) {\n this.isAccordOpen = false;\n }\n if (this.dd.isDesktop()) {\n this.isAccordOpen = true;\n }\n if (this.dd.isTablet()) {\n this.isAccordOpen = true;\n }\n }\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n
\n\n \n\n \n \n\n
\n\n
\n
Welcome to Pocket Pathology
\n\n \n \n \n \n\n
\n\n
\n
Diagnose No, Refer Out Yes
\n\n \n \n \n \n\n
\n\n
\n
How to Do a Proper Health Intake
\n\n \n \n \n \n\n
\n\n
\n
\n\n \n \n \n \n\n \n \n \n \n\n
\n
\n\n
\n
\n\n
\n","import { Component, OnInit } from '@angular/core';\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons';\nimport { Constantvars } from '../../../constantvars';\n\n@Component({\n selector: 'app-diagnose',\n templateUrl: './diagnose.component.html',\n styleUrls: ['./diagnose.component.scss']\n})\nexport class DiagnoseComponent implements OnInit {\n\n public vidURL: string;\n public vidJpg: string;\n public vidType: string;\n public autoplay: boolean;\n public AppConstants: any;\n public faChevronLeft = faChevronLeft;\n public pgTitle: string;\n\n constructor() {\n this.AppConstants = Constantvars;\n this.vidType = Constantvars.vidType;\n this.autoplay = Constantvars.autoplay;\n\n this.vidURL = Constantvars.vidBucket + 'pocketpatho-Diagnose-FINAL/Default/HLS/pocketpatho-Diagnose-FINAL.m3u8';\n this.vidJpg = Constantvars.popaImgs + 'Ruth_vid_scope.jpg';\n this.pgTitle = 'Diagnose No, Refer Out Yes';\n}\n ngOnInit(): void {\n }\n\n\n}\n","
\n
\n
\n\n
\n

{{pgTitle}}

\n
\n\n \n \n\n \n
\n\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { Constantvars } from '../../../constantvars';\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons';\n\n@Component({\n selector: 'app-intake',\n templateUrl: './intake.component.html',\n styleUrls: ['./intake.component.scss']\n})\nexport class IntakeComponent implements OnInit {\n public vidURL: string;\n public vidJpg: string;\n public vidType: string;\n public autoplay: boolean;\n public AppConstants: any;\n public faChevronLeft = faChevronLeft;\n public pgTitle: string;\n\n constructor() {\n this.AppConstants = Constantvars;\n this.vidType = Constantvars.vidType;\n this.autoplay = Constantvars.autoplay;\n\n this.vidURL = Constantvars.vidBucket + 'pocketpatho-Intake-FINAL/Default/HLS/pocketpatho-Intake-FINAL.m3u8';\n this.vidJpg = Constantvars.popaImgs + 'Ruth_vid_intake.jpg';\n this.pgTitle = 'How to Do a Proper Health Intake';\n\n }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n
\n\n
\n\n

{{pgTitle}}

\n
\n \n Videos, Forms, and Resources\n \n\n \n\n
\n\n
\n
\n
\n","import { Component, OnInit } from '@angular/core';\nimport { faChevronLeft } from '@fortawesome/free-solid-svg-icons';\nimport { Constantvars } from '../../../constantvars';\nimport { Location } from '@angular/common';\nimport { PreviousRouteService } from '../../../services/previous-route.service';\n\n@Component({\n selector: 'app-welcome',\n templateUrl: './welcome.component.html',\n styleUrls: ['./welcome.component.scss']\n})\nexport class WelcomeComponent implements OnInit {\n public vidURL: string;\n public vidJpg: string;\n public vidType: string;\n public autoplay: boolean;\n public AppConstants: any;\n public faChevronLeft = faChevronLeft;\n public pgTitle: string;\n public prevTitle: string;\n public prevURL: string;\n\n constructor(\n private location: Location,\n private previousRouteService: PreviousRouteService\n ) {\n this.AppConstants = Constantvars;\n this.vidType = Constantvars.vidType;\n this.autoplay = Constantvars.autoplay;\n this.vidURL = Constantvars.vidBucket + 'pocketpatho-Long-Intro/Default/HLS/pocketpatho-Long-Intro.m3u8';\n this.vidJpg = Constantvars.popaImgs + 'RuthWelcome_v2.jpg';\n this.pgTitle = 'Welcome to Pocket Pathology';\n this.prevTitle = 'Videos, Forms, and Resources';\n}\n ngOnInit(): void {\n this.prevURL = this.previousRouteService.getPreviousUrl()\n if (this.prevURL === '/faqs') {\n this.prevTitle = 'Frequently Asked Questions';\n } else {\n this.prevTitle = 'Videos, Forms, and Resources';\n }\n }\n public back(): void {\n this.location.back();\n }\n}\n","
\n
\n
\n\n
\n

{{ pgTitle }}

\n
\n\n \n {{ prevTitle }}\n \n \n\n\n\n \n
\n\n
\n
\n
\n","import { animate, group, query, style, transition, trigger } from '@angular/animations';\n\n// work on repeating code less??\nconst queryEnterLeave = query(':enter, :leave',\n style({\n position: 'fixed',\n width: '100%',\n height: 'calc(999px)'\n }),\n { optional: true });\n\nconst enterFromRight = query(':enter', [\n style({ transform: 'translateX(100%)' }),\n animate('0.3s cubic-bezier(0.25, 0.1, 0.25, 1)',\n style({ transform: 'translateX(0%)' }))\n], { optional: true });\n\nconst leaveToRight = query(':leave', [\n style({ transform: 'translateX(0%)' }),\n animate('0.3s cubic-bezier(0.25, 0.1, 0.25, 1)',\n style({ transform: 'translateX(100%)' }))\n], { optional: true });\n\nconst leaveToLeft = query(':leave', [\n style({ transform: 'translateX(0%)' }),\n animate('0.3s cubic-bezier(0.25, 0.1, 0.25, 1)',\n style({ transform: 'translateX(-100%)' }))\n], { optional: true });\n\n// just for Main Search Pg\nconst enterFromLeft = query(':enter', [\n style({ transform: 'translateX(-100%)' }),\n animate('0.3s cubic-bezier(0.25, 0.1, 0.25, 1)',\n style({ transform: 'translateX(0%)' }))\n], { optional: true });\n\nconst enterFromLeftLeaveToRight = [\n queryEnterLeave,\n group([\n enterFromLeft,\n leaveToRight,\n ])\n];\nexport const slideInAnimation =\n trigger('routeAnimations', [\n transition('pathology => *', [\n queryEnterLeave,\n group([\n enterFromRight,\n leaveToLeft,\n ])\n ]),\n transition('SlideFromLeft => *', enterFromLeftLeaveToRight),\n transition('* => *', enterFromLeftLeaveToRight),\n ]);\n","import { Injectable } from '@angular/core';\nimport { CanActivate, Router } from '@angular/router';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, map, tap, withLatestFrom } from 'rxjs/operators';\n\nimport { ConnectionService } from './connection.service';\nimport { UserService } from './user.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class AuthGuardService implements CanActivate {\n\n public get Loader$(): Observable {\n return this.loader$;\n }\n\n private loader$: BehaviorSubject = new BehaviorSubject(false);\n\n constructor(\n private userService: UserService,\n private connectionService: ConnectionService,\n private router: Router) {\n }\n\n public canActivate(): Observable {\n this.loader$.next(true);\n\n return this.userService.UserState$.pipe(\n tap(user => {console.log('authgaurd', user)}),\n withLatestFrom(this.connectionService.monitor()),\n filter(([user, connection]) => {\n // Don't use cached response when online\n if (connection && user && user.fromCache) {\n return false;\n }\n\n return true;\n }),\n map(([user]) => user),\n map(user => {\n this.loader$.next(false);\n console.log('authgaurd', user);\n\n if (user === null || user.IsLoggedIn() === false) {\n this.router.navigate(['login']);\n return false;\n }\n\n return true;\n }));\n }\n\n}\n","import { Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class ConnectionService implements OnDestroy {\n\n private connectionMonitor: BehaviorSubject;\n\n private onOffline = (event => this.connectionMonitor.next(false));\n private onOnline = (event => this.connectionMonitor.next(true));\n\n public get State(): boolean {\n return this.connectionMonitor.value;\n }\n\n constructor() {\n let initial = true;\n\n if (navigator && 'onLine' in navigator) {\n initial = navigator.onLine;\n }\n\n this.connectionMonitor = new BehaviorSubject(initial);\n\n window.addEventListener('offline', this.onOffline);\n window.addEventListener('online', this.onOnline);\n }\n\n public ngOnDestroy(): void {\n this.connectionMonitor.complete();\n window.removeEventListener('offline', this.onOffline);\n window.removeEventListener('online', this.onOnline);\n }\n\n public monitor(): Observable {\n return this.connectionMonitor;\n }\n\n public Offline(): Observable {\n return this.connectionMonitor.pipe(filter(status => !status), map(status => {}));\n }\n\n public Online(): Observable {\n return this.connectionMonitor.pipe(filter(status => status), map(status => {}));\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { ApplicationRef, Injectable, OnDestroy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, map, switchMap, take } from 'rxjs/operators';\n\nimport { ConnectionService } from './connection.service';\nimport { ISavedPathology, SavedPathoService } from './saved-patho.service';\nimport { UserService } from './user.service';\n\n// tslint:disable-next-line: no-empty-interface\nexport interface FavoritePathology extends ISavedPathology {\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class FavoritePathologyService extends SavedPathoService implements OnDestroy {\n\n protected bufferTime: number = 1000;\n\n private endpoint = 'https://umbraco-api.azurewebsites.net/api/pocketpatho/user/favorite';\n\n protected getHttp(): Observable {\n return this.userService.UserState$.pipe(\n filter(user => user !== null && user.IsLoggedIn() && (!this.connection.State || user.fromCache === false)),\n switchMap(() => this.http.get(this.endpoint, {\n headers: { \"Authorization\" : \"Bearer \" + this.token }\n }))\n );\n }\n\n protected updateHttp(state: any[]): Observable {\n return this.userService.UserState$.pipe(\n take(1),\n switchMap(User => this.http.patch(this.endpoint, state, {\n headers: { \"Authorizatoin\" : \"Bearer \" + this.token }\n })),\n );\n }\n\n protected clearHttp(): Observable {\n return this.userService.UserState$.pipe(\n take(1),\n switchMap(User => this.http.delete(this.endpoint, {\n headers: { \"Authorization\" : \"Bearer \" + this.token }\n })),\n );\n }\n\n constructor(\n private http: HttpClient,\n appRef: ApplicationRef,\n userService: UserService,\n connection: ConnectionService\n ) {\n super('FavoritePathology', appRef, userService, connection);\n\n // Get the data from SSO to push to the initial state\n this.subs.sink = this.userService.UserState$.subscribe(user => {\n if (user && 'pocket_patho' in user.FullSSOData) {\n if ('favorite' in user.FullSSOData.pocket_patho) {\n if (!user.fromCache || !this.initial) {\n this.server$.next(user.FullSSOData.pocket_patho.favorite);\n }\n }\n } else if (user === null) {\n this.server$.next([]);\n }\n });\n\n // Refresh the data from the server on first time\n this.getHttp().subscribe(state => this.server$.next(state));\n\n // Get things wired up\n this.appRef.isStable.pipe(filter(stable => stable || !this.connection.State), take(1)).subscribe(() => {\n this.subs.sink = this.wireEventStream().subscribe(state => {\n this.server$.next(state);\n });\n });\n }\n\n public ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n public Sorted$(): Observable {\n return this.state$.pipe(\n map(state => state.sort((a, b) => a.title.localeCompare(b.title)))\n );\n }\n\n}\n","import { HttpClient } from '@angular/common/http';\nimport { Inject, Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, Observable } from 'rxjs';\nimport { filter, map, switchMap } from 'rxjs/operators';\nimport { SubSink } from 'subsink';\n\nimport { Pathology } from '../models/pathology.model';\nimport { ConnectionService } from './connection.service';\nimport { UserService } from './user.service';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PathologyService implements OnDestroy {\n\n private apiEndpoint: string = 'https://umbraco-api.azurewebsites.net/api/pocketpatho/nodes';\n private pathoNodes$: BehaviorSubject = new BehaviorSubject(null);\n\n private sink: SubSink = new SubSink();\n private token: string = null;\n public get PathoNodes$(): Observable {\n return this.pathoNodes$;\n }\n\n constructor(\n private httpClient: HttpClient,\n private user: UserService,\n private connection: ConnectionService\n ) {\n user.UserState$.subscribe(u => this.token = u.token);\n this.fetchNodes();\n }\n\n public ngOnDestroy(): void {\n this.sink.unsubscribe();\n }\n\n private fetchNodes(): void {\n this.sink.sink = this.user.UserState$.pipe(\n filter(user => user !== null && user.IsLoggedIn() && (!this.connection.State || user.fromCache === false)),\n switchMap(() => this.httpClient\n .get(this.apiEndpoint, { headers: { \"Authorization\": \"Bearer \" + this.token } })\n .pipe(\n\n // Convert to an array of Pathology\n map(nodes => {\n if (nodes instanceof Array) {\n return nodes.map(node => new Pathology(node));\n } else {\n return [];\n }\n }),\n\n // Resolve related Pathologies\n map(nodes => {\n for (const node of nodes) {\n // Make sure the property on the node is already an array so we can push to it\n if (!(node.related_pathologies instanceof Array)) {\n node.related_pathologies = [];\n }\n\n if (node.related_pathology_titles instanceof Array) {\n // This array is already trimmed and lower-cased in the PathoNode constructor\n for (const title of node.related_pathology_titles) {\n const related = nodes.find(n => n.title.trim().toLowerCase() === title || n.alias.trim().toLowerCase() === title);\n\n if (related) {\n node.related_pathologies.push({\n nid: related.nid,\n title: related.title,\n alias: related.alias\n });\n }\n }\n }\n }\n\n return [...nodes];\n }),\n\n // Sort\n map(nodes => {\n nodes.sort((a, b) => {\n const t1 = a.title.trim().toLowerCase();\n const t2 = b.title.trim().toLowerCase();\n return t1.localeCompare(t2);\n });\n\n return [...nodes];\n })\n )\n )).subscribe(nodes => {\n this.pathoNodes$.next(nodes);\n });\n }\n\n public GetSingle(alias: string): Observable {\n return this.pathoNodes$.pipe(\n map(nodes => nodes === null ? null : nodes.find(node => node.alias.toLowerCase() === alias.trim().toLowerCase()))\n );\n }\n\n}\n\nexport function PathologyTitleMatch(term: string, pathology: Pathology): boolean {\n let match: boolean;\n // Title\n match = match || pathology.title.toLowerCase().indexOf(term) !== -1;\n\n if (pathology.common_names_search_terms) {\n // Related common names/search terms\n match = match || (pathology.common_names_search_terms.some(item => item.indexOf(term) !== -1));\n }\n\n return match;\n}\n","import { Injectable } from '@angular/core';\nimport { NavigationEnd, Router } from '@angular/router';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class PreviousRouteService {\n\n private previousUrl: string;\n private currentUrl: string;\n\n constructor(private router: Router) {\n this.currentUrl = this.router.url;\n router.events.subscribe(event => {\n if (event instanceof NavigationEnd) {\n this.previousUrl = this.currentUrl;\n this.currentUrl = event.url;\n }\n });\n }\n\n public getPreviousUrl() {\n return this.previousUrl;\n }\n}\n","import { HttpClient } from '@angular/common/http';\nimport { ApplicationRef, Inject, Injectable, OnDestroy } from '@angular/core';\nimport { Observable } from 'rxjs';\nimport { filter, map, switchMap, take } from 'rxjs/operators';\n\nimport { ConnectionService } from './connection.service';\nimport { ISavedPathology, SavedPathoService } from './saved-patho.service';\nimport { UserService } from './user.service';\n\n// tslint:disable-next-line: no-empty-interface\nexport interface RecentPathology extends ISavedPathology {\n}\n\n@Injectable({\n providedIn: 'root'\n})\nexport class RecentPathologyService extends SavedPathoService implements OnDestroy {\n\n protected bufferTime: number = 1000;\n\n private endpoint = 'https://umbraco-api.azurewebsites.net/api/pocketpatho/user/recent';\n\n protected getHttp(): Observable {\n return this.userService.UserState$.pipe(\n filter(user => user !== null && user.IsLoggedIn() && (!this.connection.State || user.fromCache === false)),\n switchMap(() => this.http.get(this.endpoint, {\n headers:\n { \"Authorization\" : \"Bearer \" + this.token }\n })\n ));\n }\n\n protected updateHttp(state: any[]): Observable {\n return this.userService.UserState$.pipe(\n take(1),\n switchMap(User => this.http.patch(this.endpoint, state, {\n headers: { \"Authorization\" : \"Bearer \" + this.token }\n })),\n );\n }\n\n protected clearHttp(): Observable {\n return this.userService.UserState$.pipe(\n take(1),\n switchMap(User => this.http.delete(this.endpoint, {\n headers: { \"Authorization\" : \"Bearer \" + this.token }\n })),\n );\n }\n\n constructor(\n private http: HttpClient,\n appRef: ApplicationRef,\n userService: UserService,\n connection: ConnectionService\n ) {\n super('RecentPathology', appRef, userService, connection);\n\n // Get the data from SSO to push to the initial state\n this.subs.sink = this.userService.UserState$.subscribe(user => {\n if (user && user.FullSSOData && 'pocket_patho' in user.FullSSOData) {\n if ('recent' in user.FullSSOData.pocket_patho) {\n if (!user.fromCache || !this.initial) {\n this.server$.next(user.FullSSOData.pocket_patho.recent);\n }\n }\n } else if (user === null) {\n this.server$.next([]);\n }\n });\n\n // Refresh the data from the server on first time\n this.getHttp().subscribe(state => this.server$.next(state));\n\n // Get things wired up\n this.appRef.isStable.pipe(filter(stable => stable || !this.connection.State), take(2)).subscribe(() => {\n this.subs.sink = this.wireEventStream().subscribe(state => {\n this.server$.next(state);\n });\n });\n }\n\n public ngOnDestroy(): void {\n super.ngOnDestroy();\n }\n\n public Sorted$(): Observable {\n return this.state$.pipe(\n map(state => state.sort((a, b) => b.timestamp - a.timestamp))\n );\n }\n\n}\n","import { ApplicationRef, Inject, Injectable, OnDestroy } from '@angular/core';\nimport { BehaviorSubject, merge, Observable, of, Subject } from 'rxjs';\nimport { catchError, concatMap, map, tap, withLatestFrom } from 'rxjs/operators';\nimport { SubSink } from 'subsink';\n\nimport { ConnectionService } from './connection.service';\nimport { UserService } from './user.service';\n\nexport interface ISavedPathology {\n nid: number;\n status: boolean;\n timestamp?: number;\n title?: string;\n alias?: string;\n}\n\n@Injectable()\nexport abstract class SavedPathoService implements OnDestroy {\n\n protected abstract readonly bufferTime: number;\n\n /**\n * Stream of user-triggered state changes\n */\n protected user$: Subject;\n\n /**\n * Stream for server-triggered state changes\n */\n protected server$: BehaviorSubject;\n\n /**\n * Combined stream of user and server trigger changes,\n * used by the ui to show immediate reactions to user interaction\n * while the changes are buffered before sent to the server\n */\n protected state$: Observable;\n\n /**\n * Stream of individual ui changes for queuing\n */\n protected changes$: Subject;\n\n /**\n * Sink for unsubscribing to subscripions\n */\n protected subs = new SubSink();\n\n protected initial: boolean = false;\n\n protected token: string = null;\n\n constructor(\n @Inject(null)\n protected readonly storage: string,\n protected appRef: ApplicationRef,\n protected userService: UserService,\n protected connection: ConnectionService) {\n this.storage = storage;\n\n // Initialize standard streams\n this.user$ = new Subject();\n this.changes$ = new Subject();\n\n // Get cached copy of data\n const initial = this.getStorage();\n\n // Server stream has a default state based from localStorage cache\n this.server$ = new BehaviorSubject(initial);\n\n // Merge the user and server triggered state change stream\n this.state$ = merge(this.user$, this.server$);\n\n userService.UserState$.subscribe(u => this.token = u.token);\n }\n\n public ngOnDestroy(): void {\n this.subs.unsubscribe();\n }\n\n private getStorage(): T[] {\n if (localStorage && localStorage instanceof Storage) {\n const savedString = localStorage.getItem(this.storage);\n if (savedString) {\n try {\n const savedObject = JSON.parse(savedString);\n this.initial = true;\n return savedObject;\n } catch {\n localStorage.removeItem(this.storage);\n }\n }\n }\n\n return [];\n }\n\n protected saveStorage(values: T[]): void {\n if (localStorage && localStorage instanceof Storage) {\n localStorage.setItem(this.storage, JSON.stringify(values));\n }\n }\n\n protected abstract getHttp(): Observable;\n\n protected abstract updateHttp(state: T[]): Observable;\n\n protected abstract clearHttp(): Observable;\n\n protected wireEventStream(): Observable {\n return this.changes$.pipe(\n /**\n * First we need to merge the current single update with the most\n * recent state so the ui can be updated immediately\n */\n withLatestFrom(this.state$),\n map(([update, oldState]) => {\n update.timestamp = (new Date()).getTime();\n\n let newState: T[];\n const index = oldState.findIndex(f => f.nid === update.nid);\n if (index !== -1) {\n newState = [...oldState];\n newState[index] = Object.assign(newState[index], update);\n } else {\n newState = [update, ...oldState];\n }\n\n // Push the state change to the user stream\n this.user$.next(newState);\n\n return update;\n }),\n\n /**\n * Get the latest state (in case it changed since we started) and\n * merge the array of changes into it\n */\n withLatestFrom(this.state$),\n map(([updates, oldState]) => {\n // This creates duplicates, but the changes should be at the end of list\n const combined = [...oldState, updates];\n\n // Reduce the array of duplicates down to an array w/o\n return combined.reduce((dedup: T[], item, i) => {\n\n // See if the item is already in the list\n const index = dedup.findIndex(f => f.nid === item.nid);\n\n // If it is already in the list\n if (index !== -1) {\n /**\n * Find the most recent instance from the timestamp,\n * and merge it into the other instance of the same record.\n */\n if (item.timestamp > dedup[index].timestamp) {\n dedup[index] = Object.assign(dedup[index], item);\n } else {\n dedup[index] = Object.assign(item, dedup[index]);\n }\n\n // Return the reduced array\n return dedup;\n } else {\n /**\n * Current item isn't already in the reduce array,\n * so just return it w/ the new item at the end\n */\n return [...dedup, item];\n }\n }, []);\n }),\n\n /**\n * Now that we have a merged array of the old state with the new state,\n * send it to the server to update the database\n */\n concatMap(state => this.connection.State ?\n this.updateHttp(state).pipe(catchError((error, caught) => of(state)))\n : of(state)),\n tap(state => this.saveStorage(state))\n ) as Observable;\n }\n\n public Has$(item: T): Observable {\n return this.state$.pipe(map(stubs => stubs.find(stub => stub.nid === item.nid && stub.status === item.status) !== undefined));\n }\n\n protected update(item: T): void {\n this.changes$.next(item);\n }\n\n public Add(item: T): void {\n item.status = true;\n this.update(item);\n }\n\n public Remove(item: T): void {\n item.status = false;\n this.update(item);\n }\n\n public Clear(): Observable {\n return this.clearHttp().pipe(\n withLatestFrom(this.state$),\n map(([, latest]) => latest.map(item => ({...item, status: false }))),\n tap(results => this.server$.next(results))\n );\n }\n\n public State$(): Observable {\n return this.state$;\n }\n\n public abstract Sorted$(): Observable;\n\n}\n","export function tokenGetter(): string | null {\n\tif (localStorage instanceof Storage) {\n\t\treturn localStorage.getItem('JWT_TOKEN');\n\t}\n\n\treturn null;\n}\n","import { HttpClient, HttpErrorResponse, HttpResponse } from '@angular/common/http';\nimport { Injectable } from '@angular/core';\nimport { JwtHelperService } from '@auth0/angular-jwt';\nimport { Observable, of, ReplaySubject, Subject } from 'rxjs';\nimport { catchError, map, retryWhen, switchMap, tap } from 'rxjs/operators';\n\nimport { genericRetryStrategy } from '../generic-retry-strategy';\nimport { JwtToken } from '../models/jwt.model';\nimport { IDrupalSSO, User } from '../models/user.model';\nimport { ConnectionService } from './connection.service';\nimport { tokenGetter } from './tokenGetter';\nimport { tokenSetter } from './tokenSetter';\n//import { runInContext } from 'vm';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserService {\n\n private userState$: Subject = new ReplaySubject(1);\n\n public readonly UserState$ = this.userState$.asObservable();\n\n constructor(\n private httpClient: HttpClient,\n private connectionService: ConnectionService,\n private token: JwtToken,\n private jwtHelper: JwtHelperService,\n ) {\n this.UserState$.subscribe(user => console.log('UserState', user));\n if (localStorage instanceof Storage) {\n const userDetailJson = localStorage.getItem('UserDetail');\n\n if (userDetailJson) {\n console.log('UserDetail from local storage');\n try {\n const userDetailObject = JSON.parse(userDetailJson);\n if (userDetailObject && 'ID' in userDetailObject) {\n const userDetail = new User(userDetailObject);\n userDetail.fromCache = true;\n \n const expires = new Date();\n expires.setDate(expires.getDate() - 7);\n\n if (userDetail.cacheAge && userDetail.cacheAge > expires) {\n this.userState$.next(userDetail);\n }\n }\n } catch (e) {\n console.error(e);\n localStorage.removeItem('UserDetail');\n }\n }\n }\n \n if(!token.Value) {\n let localToken = localStorage.getItem('JWT_TOKEN');\n if(localToken) {\n token.Update(localToken);\n }\n }\n\n //Developer DEBUG; erase below\n /********************************************************************\n if (!token.Value) {\n token = new JwtToken(\"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJlNjM5ODRjYS0wYzMwLTQyN2UtOThmMy00YzBiYTliYTJiYmEiLCJuYW1lIjoiand0OjE1MzkyMjIiLCJnaXZlbl9uYW1lIjoiQW50aG9ueSIsImZhbWlseV9uYW1lIjoiU2FsYWl6Iiwibmlja25hbWUiOiJBbnRob255IiwiZW1haWwiOiJ6emFudGhvbnlAYWJtcC5jb216eiIsInBhYyI6eyJjc3RfcmVjbm8iOjE1MzkyMjIsIjVtbSI6eyJleHBpcmVzIjoiMjAyNC0wNi0zMFQwMDowMDowMCJ9LCJleGFtY29hY2giOnsiYWN0aXZlIjp0cnVlLCJleHBpcmVzIjoiMjAyNS0wNy0wMVQwMDowMDowMCIsImNvaG9ydHMiOnt9fX0sImp0aSI6ImZkNjYwYjAwLTQ0OWYtNDIwNy04NDhkLWRlY2MzMjY1MzFlYSIsInJvbGVzIjpbXSwibmJmIjoxNzA3NDA2MTA4LCJleHAiOjE3MDg2MTU3MDgsImlhdCI6MTcwNzQwNjEwOH0.mghHWE1h693VDFikV9908Jm49mO0RlylHXc1qH18g9k\");\n }\n //************************************************************** */\n\n if (token.Value) {\n const jwt = this.jwtHelper.decodeToken(token.Value);\n console.log('UserDetail from JWT');\n const userDetail = new User(jwt);\n userDetail.fromCache = false;\n userDetail.token = token.Value;\n this.userState$.next(userDetail);\n }\n\n /* TODO: Not sure why this is called, but it's wiping the user\n this.GetUserInfo().subscribe({\n next: state => this.userState$.next(state),\n error: error => this.userState$.next(null)\n });\n */\n }\n\n private GetUserInfo(): Observable {\n const tokenRequest = 'https://test.abmp.com/api/individual';\n const offlineRetry = genericRetryStrategy({\n maxRetryAttempts: 5,\n scalingDuration: 5000\n });\n\n return this.httpClient\n .get(tokenRequest)\n .pipe(\n retryWhen(errors => {\n if (this.connectionService.State === false) {\n return offlineRetry(errors);\n }\n\n return errors.pipe(map(error => {\n if (error.error && 'message' in error.error) {\n switch (error.error.message) {\n case 'Failed to aquire read lock':\n // Do nothing to trigger a retry\n break;\n default:\n throw error;\n }\n } else {\n throw error;\n }\n }));\n }),\n catchError((err, caught) => this.HandleSSOError(err, caught)),\n map((individualResponse: any | Error) => {\n if (individualResponse instanceof Error) {\n if (localStorage && localStorage instanceof Storage) {\n localStorage.removeItem('UserDetail');\n }\n\n if (individualResponse === null) {\n return null;\n }\n\n throw individualResponse;\n }\n\n if (this.connectionService.State === false && individualResponse instanceof User) {\n return individualResponse;\n }\n\n if ('JWT' in individualResponse) {\n const userDetail = new User(individualResponse.JWT);\n userDetail.cacheAge = new Date();\n\n if (localStorage && localStorage instanceof Storage) {\n localStorage.setItem('UserDetail', JSON.stringify(userDetail));\n }\n\n return userDetail;\n }\n\n if (localStorage && localStorage instanceof Storage) {\n localStorage.removeItem('UserDetail');\n }\n\n return null;\n })\n );\n }\n\n public Logout(): Observable {\n console.log('LOGOUT');\n return this.UserState$.pipe(\n switchMap(user => {\n if (user === null || user instanceof Error) {\n return of(null);\n }\n }),\n tap(() => {\n if (localStorage && localStorage instanceof Storage) {\n localStorage.removeItem('UserDetail');\n }\n\n this.token.Update(null);\n\n this.userState$.next(null);\n }),\n map(() => null)\n );\n }\n\n public Login(username: string, password: string): Observable {\n console.log('LOGIN');\n const data = { \"UserName\": username, \"Password\": password };\n\n return this.httpClient\n //.post('https://pocket-patho.abmp.com/sso', data)\n .post('https://members.abmp.com/nfPACTest/eWeb/JWT?Site=ABMP', data, {observe: 'response' })\n .pipe(\n catchError((err, caught) => this.HandleSSOError(err, caught)),\n map(loginResult => {\n console.log(loginResult);\n if (loginResult instanceof Error) {\n if (localStorage && localStorage instanceof Storage) {\n localStorage.removeItem('UserDetail');\n }\n\n throw loginResult;\n }\n if (loginResult instanceof HttpResponse) {\n var t = loginResult.headers.get('X-JWT') as string;\n this.token.Update(t);\n if ('current_user' in loginResult.body || 'ObjectName' in loginResult.body) {\n const userDetail = new User(loginResult.body);\n userDetail.token = t;\n if (localStorage && localStorage instanceof Storage) {\n localStorage.setItem('UserDetail', JSON.stringify(userDetail));\n }\n console.log(userDetail);\n //if (userDetail.FullSSOData.pac_sso) {\n // this.token.Update(userDetail.FullSSOData.pac_sso.Columns.JWT);\n //}\n\n return userDetail;\n }\n }\n if (localStorage && localStorage instanceof Storage) {\n localStorage.removeItem('UserDetail');\n }\n\n return null;\n }),\n tap(state => this.userState$.next(state))\n );\n }\n\n private HandleSSOError(error: HttpErrorResponse, caught: Observable): Observable {\n if (this.connectionService.State === false && error.status >= 500) {\n return this.UserState$;\n }\n\n if (error.status === 401) {\n if (error.error && 'message' in error.error) {\n if (error.error.message === 'Login Required') {\n return of(new Error('Login Required'));\n }\n\n if (error.error.message === 'LoginByEmail Failed') {\n return of(new Error('Sorry, unrecognized email address or password.'));\n }\n\n if (error.error.message === 'LoginByCookie failed') {\n window.location.href = '/members?refresh=1&destination=members/pocket-pathology';\n }\n\n return of(new Error(error.error.message));\n }\n }\n\n if (error.error && 'message' in error.error) {\n if (error.error.message === 'Failed to aquire read lock') {\n return of (new Error(error.error.message));\n }\n\n return of(new Error('Unknown error: ' + error.error.message));\n }\n\n return of(new Error(`Unknown error: ${error.status} ${error.statusText} ${error.error}`));\n }\n\n}\n","import 'hammerjs';\n\nimport { APP_BASE_HREF } from '@angular/common';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\nimport { AppSettings, AvailableDrupalVersions, BootstrapVersion, DrupalVersion, INDIVIDUAL } from 'pac-api';\n\nimport { AppModule } from './app/app.module';\nimport { JwtToken } from './app/models/jwt.model';\n\ntry {\n let jwt = null;\n const headers = new Headers();\n\n const appSettings = fetch('assets/appSettings.json', {\n credentials: 'omit',\n });\n\n //**********************\n const user = fetch('/api/individual', {\n credentials: 'include',\n headers,\n });\n //*********************** */\n\n Promise.all([appSettings, user])\n .then(([appSettings, user]) => {\n return Promise.all([appSettings.json(), user.json()]);\n })\n .then(([appSettings, user]) => {\n const drupal: AvailableDrupalVersions = appSettings.drupal;\n\n //if (!jwt && user && user.JWT) {\n // jwt = user.JWT;\n // localStorage.setItem('JWT_TOKEN', user.JWT);\n //}\n\n return platformBrowserDynamic([\n {\n provide: JwtToken,\n useValue: new JwtToken(jwt),\n },\n {\n provide: AppSettings,\n useValue: appSettings,\n },\n {\n provide: INDIVIDUAL,\n useValue: user,\n },\n {\n provide: APP_BASE_HREF,\n useValue: '/',\n },\n {\n provide: DrupalVersion,\n useValue: drupal,\n },\n {\n provide: BootstrapVersion,\n useValue: 'bs4',\n }\n ])\n .bootstrapModule(AppModule);\n })\n .catch(err => console.error(err));\n} catch (err) {\n console.error(err);\n}\n\n","var map = {\n\t\"./locale\": 6333,\n\t\"./locale.js\": 6333\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 1748;","/* (ignored) */"],"names":[],"sourceRoot":"webpack:///"}